ACC SHELL

Path : /srv/www/vhosts/bubbagump/jquery/file_browser/
File Upload :
Current File : /srv/www/vhosts/bubbagump/jquery/file_browser/tinyexplorer.php

<?php
/**
 * $Id: TinyExplorer.php,v 1.11 2009/08/10 21:44:19 phpvision Exp $
 * @copyright Copyright 2008-2009, {@link http://www.php-vision.de PHP-Vision Webentwicklung}
 * @license http://opensource.org/licenses/gpl-license.php GNU Public License
 * @author Michael Schwarz <M.Schwarz@php-vision.de>
 * @version $Revision: 1.11 $
 * @package TinyExplorer
 *
 *
 *
 * function TinyExplorerCallBack(topfield, url, type, topwindow) {
 *  var connector = "../../../../module/filebrowser.php?type="+type;
 *  window.open(connector, "file_manager", "modal,width=550,height=350,scrollbars=1");
 * }
 */

 /**
  * path to your content folder you would like to manage
  * example:	$root_dir='/my/absolute/path/';
  */
 $root_dir='../../soubory';

 $display_subdir_size = true;	# its faster without
 $display_hidden_dirs = true;	# like .hiddendir/
 $display_hidden_files = true;  # or like .htacces

 # if enabled it deletes only requestet files types
 # so if you only see images it only deletes images
 # it deletes only hidden dirs or files wich are allowed to display
 $allow_recursiv_delete = false;

 /**
  * translations to customize the explorer for your needs
  */
 $uperror = array(
 	'nospace' 	=> 'Na disku není dostatek místa.',
 	'unknown' 	=> 'Neznámá chyba při náhravání souboru.',
 	'badtype' 	=> 'Nepovolený typ souboru.',
 	'isempty' 	=> 'Uploadujete prázdný soubor.',
 	'nowrite' 	=> 'Místní složka je chráněná.'
 );
 $question = array(
 	'deldir' 	=> 'Opravdu chcete smazat složku %DIR% ?',
 	'delfile' 	=> 'Opravdu chcete smazat soubor %FILE% ?'
 );
 $type = array(
 	'???'		=>'Neznámý',
 	'directory'	=>'Složka',
 	'jpg'		=>'JPEG-Image',
 	'gif'		=>'GIF-Image',
 	'png'		=>'PNG-File',
 	'php'		=>'PHP-File',
 	'html'		=>'HTML-File',
 	'htm'		=>'HTML-File'
 );
 $headname = array(
 	'file' => 'Název',
 	'size' => 'Velikost',
 	'type' => 'Typ',
 	'time' => 'Poslední změna'
 );

  /**
  * allowed fileextensions for the varios tiny modes
  */
 $regex = array(
 	'media'	=> '#^.*\.(flv|mov|avi|mpg|mp3|ogg|wav)$#',
 	'image'	=> '#^.*\.(png|jpg|jpeg|gif|bmp|tif)$#',
 	'file' 	=> '#^.*\.(zip|rar|tar|gz|bz2|pdf|xls|xlsx|doc|docx|html|htm)$#',
 	'all' 	=> '#^.*$#'
 );
 
 $chybanahravani = 0;
 
##################################################################################
# PHP CODE PART - DONT CHANGE ANYTHING BELOW UNLESS YOU KNOW WHAT YOU ARE DOING  #
##################################################################################
 error_reporting(defined('E_STRICT')?(E_ALL|E_STRICT):(E_ALL)); # while dev time we wanna know what happens #
 define('ABSPATH', dirname(__FILE__).'/');  # get the absolute path of this file #
 session_start();

 $_SESSION['rqtype'] = isset($_SESSION['rqtype'])?$_SESSION['rqtype']:'image';
 $_REQUEST['type'] = isset($_REQUEST['type'])?$_REQUEST['type']:$_SESSION['rqtype'];
/*
 switch( $_REQUEST['type'] ){
 	case 'all'  : $rqtype = 'all'; break;
 	case 'file' : $rqtype = 'file'; break;
 	case 'media': $rqtype = 'media'; break;
 	case 'flash': $rqtype = 'media'; break;
 	default : 	  $rqtype = 'image';
 }
 */
  $rqtype = 'all';
 $_SESSION['rqtype'] = $rqtype;
 #echo $_SESSION['rqtype'];

 if(isset($_GET['image']) and $_GET['image'] == 'arrow') display_gif();
 if(isset($_GET['image']) and $_GET['image'] == 'icons') display_png();
 if(isset($_GET['F']) and !strstr($_GET['F'],'../'))download($_GET['F']);
 if(isset($_GET['V']) and !strstr($_GET['V'],'../'))viewfile($_GET['V']);
 register_shutdown_function('Performance',microtime());

 if(function_exists("date_default_timezone_set")
  and function_exists("date_default_timezone_get"))
   @date_default_timezone_set(@date_default_timezone_get());

 /**
  * lang mods have same filename, but an .xx.php extension
  * the first file (if there is one) will be used as language
  */
 $pattern = substr( basename(__FILE__), 0, -4) . '.??.php';
 if($files=glob(ABSPATH.$pattern)) include_once($files[0]);



 $root_dir = $root_dir?rtrim($root_dir):'.';
 if( substr($root_dir,0,1) != '/') $root_dir = ABSPATH.$root_dir;

 $getdir = isset($_REQUEST['dir']) ? $_REQUEST['dir']:'';
 //$getdir = preg_replace ('~../|./~','',trim($getdir,'/'));
 $absdir = $root_dir.'/'.($getdir?$getdir.'/':'');

 $usedir = '/'.trim(str_replace(ABSPATH,'',$absdir),'/').'/';
/*
 if(!strpos($getdir,'/'))	$subdir = '';
 else
 */
 $subdir = substr($getdir,0,strrpos($getdir,'/'));
 if(!file_exists($absdir)){ $getdir=''; jumpback(); }

 if(isset($_GET['F'])) download($root_dir.'/'.ltrim($_GET['F'],'/'));
 #echo $absdir;

 $Order=getCurrentSorting($_REQUEST,'filebrowser',0,'name',1);


 if (isset($_POST['upload'])){

   $nazev = $_FILES['myfile']['name'];
    
   if(file_exists($absdir.$nazev))
   {
    $chybanahravani = 1;
   }
	else {
	$chybanahravani = 0;
	$error = strFile($absdir,$rqtype);
 	if($error<1) switch($error) {
 		case  0 : $_ERR = $uperror['unknown']; break;
 		case -2 : $_ERR = $uperror['isempty']; break;
 		case -3 : $_ERR = $uperror['badtype']; break;
 		case -4 : $_ERR = $uperror['nospace']; break;
 		default : $_ERR = $uperror['unknown'];
 	}

 	}
 }

 if (isset($_POST['makedir'])) crtDir($absdir,$_POST['dirname']);
 if (isset($_GET['delfile'])) delFile($absdir,$_GET['delfile']);
 if (isset($_GET['deldir'])) delDir($absdir,$_GET['deldir']);



#####################################################################################################
# DISPLAY HTML CODE - DISPLAY HTML CODE - DISPLAY HTML CODE - DISPLAY HTML CODE - DISPLAY HTML CODE #
#####################################################################################################
#header('Content-Type: application/xhtml+xml; charset=UTF-8'); # Bug in IE 8 ?!?
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs">
<head>
 <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
 <title>Správce souborů - <?php echo utf8_encode($getdir); ?> - Tiny Explorer</title>
 <style type="text/css">
 /* Fixed footer/header code */
    body{margin:0}/* for ie mac*/
/* commented backslash hack v2 \*/
html, body{height:100%;padding:0}

html #contain-all{
	position:absolute;
	overflow-y:scroll;
	width:98%;
	height:100%;
	z-index:1;
}

* html, * html body{
	overflow:hidden;
	padding:20px 0 30px 0;
	margin:-20px 0 -30px 0;
	padd\ing:0;
	ma\rgin:0;

}
* html #outer {
	overflow:auto;
	height:99.9%;
	voice-family: "\"}\""; voice-family:inherit;
}
* html #contain-all{
	position:absolute;
	overflow-y:scroll;
	width:100%;
	height:100%;
	z-index:1;
}
/* end hack */

#top-bar{
	position:absolute;/* ie6 will treat this as fixed because of a bug where overflow:auto is set on a parent */
	top:0px;
	left:0px;
	height:20px;
	width:100%;
	margin:0;
	padding:0;
	z-index:999;
	overflow:hidden;
}
#topbar-inner {height:20px; background:red;}
#footer-inner {height:30px; background:red;}
/* mac hide - reduce page to allow the scrollbar to remain visible \*/
* html #topbar-inner,* html #footer-inner {margin-right:17px;}
/* end hide*/

#footer{
	position:absolute;
	bottom:0;
	width:100%;
	height:30px;
	z-index:888;
}
.spacer {height:30px}/* same height as footer/header to preserve space*/
p{margin-top:0}
html>body #top-bar,html>body #footer{position:fixed}/* for moz/opera and others*/




	/* { margin:0px; padding:0px; font-size:11px; font-family:Arial; }*/
	/*html,body,form { height:100%; max-height:100%; }
 	body { background:#fff; text-align:left; overflow-y:scroll; overflow-x:hidden;}
	tr{ height:0px; } /* fix for IE */
	body { background:#fff;  font-size:11px; font-family:Arial; }

	a{ text-decoration:none; }
 	a.selected{ color:#F00;  }
 	a:hover{ text-decoration:underline; }

 	input.file { font-size:11px;}
 	input.text { font-size:11px; }
 	input.sbmt1 { font-size:11px;  }
 	input.sbmt2 { font-size:11px;  }


	#files tr:hover td{ background-color:#f0f0ff; color:#222; }


 	#tfoot { border-top:1px solid #999; background-color:#f0f0f0; color:#000; }

 	#files tbody tr td { white-space:nowrap; overflow:hidden; }

 	td.forcewidth{ padding:0px; font-size:0px;}
    /*td.forcewidth div{ width:800px;}*/

 	#files .spacehead { height:21px;}
 	#files .spacefoot { height:31px;}


 	#files tr td { line-height:18px; padding:0px 2px 1px 2px; }

 	input.name, input.size, input.time, input.type, input.leer
 	{ width:100%; height:20px; text-align:left; padding:0px 2px 2px 2px;
 	  background:#f0f0f0 url('<?php echo $_SERVER['PHP_SELF'];?>?image=arrow') center center no-repeat;
 	} input.size { text-align:right; }

 	#thead input {font-size:11px;}
 	#thead th.file { width:auto; }
 	#thead th.size { width:70px; }
 	#thead th.type { width:100px;}
 	#thead th.time { width:106px;}
 	#thead th.leer { width:22px; }

 	#files td { font-size:11px; font-family:Arial; color:#333; }
 	#files td.pad1 { background-color:; width:  8px; padding:0px 0px;					}
 	#files td.icon { background-color:; width: 16px; padding:0px 0px;					}
 	#files td.file { background-color:; width: auto; padding:0px 2px;				}
 	#files td.size { background-color:; width: 65px; padding:0px 2px; text-align:right;			}
 	#files td.type { background-color:; width: 97px; padding:0px 2px; text-align:left;				}
 	#files td.time { background-color:; width:104px; padding:0px 2px; text-align:left;				}
 	#files td.delo { background-color:; width: 16px; padding:0px 0px; text-align:right;				}
	#files td.pad2 { background-color:; width:  4px; padding:0px 0px;				}


	#tfoot td{white-space:nowrap; padding:4px;}
	#tfoot td.left { width:178px;}
	#tfoot td.space{ padding:0px;}
	#tfoot td.right{ width:271px;}
	#tfoot span.icon{ margin:2px 2px 0px 0px;}

 	th.up   input.name { background-position:72px 4px; }
 	th.down input.name { background-position:72px -27px; }
  	th.up   input.size { background-position:5px 4px; }
 	th.down input.size { background-position:5px -27px; }
 	th.up   input.type { background-position:85px 4px; }
 	th.down input.type { background-position:85px -27px; }
 	th.up   input.time { background-position:85px 4px; }
 	th.down input.time { background-position:85px -27px; }
 	#files  td.selected{ background-color:#f3f3f3; }

 	span.icon     {  display:block; width:16px; height:16px; float:left; line-height:0px; font-size:0px; }
 	span.icon     { background:url('<?php echo $_SERVER['PHP_SELF'];?>?image=icons') -96px center no-repeat; }
  	span.dir      { background-position:+00px center; }
  	span.diradd   { background-position:-16px center; }
  	span.dirdel   { background-position:-32px center; }
  	span.dirtop   { background-position:-48px center; }
  	span.fileadd  { background-position:-64px center; }
  	span.filedel  { background-position:-80px center; }
  	span.file     { background-position:-96px center; }
  	span.pdf      { background-position:-112px center;}
  	span.zip, span.rar, span.tar, span.gz, span.tgz, span.bz2      { background-position:-128px center; }
  	span.xlsx, span.xls      { background-position:-144px center; }
  	span.pps, span.ppt      { background-position:-160px center; }
  	span.docx, span.doc      { background-position:-176px center; }
  	span.office   { background-position:-192px center; }
  	span.html, span.htm 	   { background-position:-208px center; }
  	span.js, span.css, span.log, span.txt	   { background-position:-224px center; }
  	span.mp3, span.ogg, span.wav	   { background-position:-240px center; }
  	span.bmp, span.png, span.gif, span.jpg      { background-position:-256px center; }
  	span.avi, span.mpg, span.mov	   { background-position:-272px center; }
  	span.php	   { background-position:-288px center; }

 </style>
 <!--[if IE 8]> <style type="text/css">

		#thead th.leer input{ height:20px; margin-bottom:-3px; }
		#tfoot td.right{ width:297px;}
		input.file { padding:2px 2px; font-size:12px;}
		#files .spacehead { height:20px;}
 		#files .spacefoot { height:30px;}
 </style>
 <![endif]-->

 	<!--[if IE 7]> <style type="text/css">
 		#tfoot span.icon{ margin-top:3px}
 		#tfoot td.right span.icon{ position:relative; left:3px; }

 		input.text { height:14px; }
 		#tfoot td.right{ width:299px; text-align:right;}
 		input.text { padding:1px 2px;}

 </style><![endif]-->
 <!--[if lte IE 7]> <style type="text/css">

 		input.sbmt1, input.sbmt2
 		{  height:22px; padding:1px 4px; margin-bottom:-1px;}
 	    #tfoot td.left{ width:190px;}
 	    input.file { font-size:12px; }

 </style><![endif]-->
 <!--[if IE 6]> <style type="text/css">

		#files td.pad1 { width:23px; }
		#files { margin-left:-17px; }

 </style><![endif]-->
 <!--[if lte IE 6]> <style type="text/css">
 		#footer-inner { margin-bottom:-20px; background:green;}
 </style><![endif]-->
  <script type="text/javascript" src="../jquery-1.7.1.min.js"></script>
 <script type="text/javascript" src="tiny_mce_popup.js"></script>

 
 <script type="text/javascript">
 /* <![CDATA[ */


<?
if($chybanahravani==1){
	echo 'alert("CHYBA - SOUBOR NEBYL NAHRÁN NA SERVER!\n\nSoubor s tímto názvem je již na severu. Pokud si opravdu přejete soubor nahrát, změňte název.");';
}
?>


	function fileSelect(filename) { //let our opener know what we want

	  var editor = "<? echo $_GET['editor']; ?>";
	  var returnID = "<? echo $_GET['returnID']; ?>";
	  
	   if(editor == "tinymce")
			{
				try
				{
					var win = tinyMCEPopup.getWindowArg("window");
				}
				catch(err)
				{
					alert("Chyba při vkládání!");
					return;
				}

				// insert information now
				win.document.getElementById(tinyMCEPopup.getWindowArg("input")).value = filename;

				// are we an image browser
				if (typeof(win.ImageDialog) != "undefined")
				{
					// we are, so update image dimensions...
					if (win.ImageDialog.getImageData)
						win.ImageDialog.getImageData();

					// ... and preview if necessary
					if (win.ImageDialog.showPreviewImage)
						win.ImageDialog.showPreviewImage(filename);
				}

				// close popup window
				window.close();
	            tinyMCEPopup.close();

            }
			else if(editor == "standalone")
			{
			    var inp = "<? echo $_GET['inp']; ?>";
			    
			    if($.browser.msie)
			        {
                        window.dialogArguments.document.getElementById(returnID).value = filename;
						if(inp=="soubor") window.dialogArguments.zmenaInputuS(returnID);// added by LukT
						else window.dialogArguments.zmenaInputu(returnID);// added by LukT
					}
					else {
				window.opener.document.getElementById(returnID).value = filename;
				if(inp=="soubor") window.opener.zmenaInputuS(returnID);// added by LukT
				else window.opener.zmenaInputu(returnID);// added by LukT
				}
				window.close();
			}

	   
	   
	   

		window.close(); 
	}
	function ConfirmDelDir(dirname) {
		var msg = '<?php echo $question['deldir']; ?>';
		return confirm( msg.split('%DIR%').join(dirname));
	}
	function ConfirmDelFile(filename) {
		var msg = '<?php echo $question['delfile']; ?>';
		return confirm(msg.split('%FILE%').join(filename));
	}
	function LeftClickEvent(e) { e=e || window.event; return LeftClick(e,this);  }
	//function RightClickEvent(e){ e=e || window.event; return RightClick(e,this); }

	function EventInit() {

		tbodypart = document.getElementById('files');
		tbodyrows = tbodypart.getElementsByTagName('tr');
		for( var x=1; x < tbodyrows.length-1; x++ )
		{
			ahrefs = tbodyrows[x].getElementsByTagName('a');
		/*	if(ahrefs[0].href.split('?')[1].substr(0,2) == 'F=')
			ahrefs[0].oncontextmenu=RightClickEvent; */
		}
	}
	function RightClick( send , elem)
	{ 	var parts = elem.href.split('?');
		document.location = parts[0]+'?V='+parts[1].substr(2);
		return false;
	}

 /* ]]> */
 </script>
</head>
<body onload="EventInit()">


<?php $slnk = '?type='.$rqtype.'&amp;dir='.urlencode($getdir).'&amp;'; ?>
  <div id="top-bar"><div id="topbar-inner">
   <table id="thead" width="100%" cellpadding="0" cellspacing="0" border="0">
 	<tr>
 	 <th colspan="3" class="file <?php if($Order['SORT']=='name') echo ($Order['DIR']?'up':'down');?>">
 	  <a href="<?php echo $slnk.'SORT=name&amp;DIR='.!$Order['DIR'];?>" <?php if($Order['SORT']=='name') echo 'class="selected"';?>><input type="button" value="<?php echo $headname['file']; ?>" class="name" onclick="window.location.href=this.parentNode.href; return false;" /></a>
 	 </th>
 	 <th class="size <?php if($Order['SORT']=='size') echo ($Order['DIR']?'up':'down');?>">
 	  <a href="<?php echo $slnk.'SORT=size&amp;DIR='.!$Order['DIR'];?>" <?php if($Order['SORT']=='size') echo 'class="selected"';?>><input type="button" value="<?php echo $headname['size']; ?>" class="size" onclick="window.location.href=this.parentNode.href; return false;" /></a>
 	 </th>
 	 <th class="type <?php if($Order['SORT']=='type') echo ($Order['DIR']?'up':'down');?>">
 	  <a href="<?php echo $slnk.'SORT=type&amp;DIR='.!$Order['DIR'];?>" <?php if($Order['SORT']=='type') echo 'class="selected"';?>><input type="button" value="<?php echo $headname['type']; ?>" class="type" onclick="window.location.href=this.parentNode.href; return false;" /></a>
 	 </th>
 	 <th class="time <?php if($Order['SORT']=='time') echo ($Order['DIR']?'up':'down');?>">
 	  <a href="<?php echo $slnk.'SORT=time&amp;DIR='.!$Order['DIR'];?>" <?php if($Order['SORT']=='time') echo 'class="selected"';?>><input type="button" value="<?php echo $headname['time']; ?>" class="time"  onclick="window.location.href=this.parentNode.href; return false;" /></a>
 	 </th>
 	 <th class="leer" colspan="1" ><input type="button" value="" class="leer" disabled="disabled"/></th>
 	</tr>
 	</table>
   </div></div>
   <div id="footer"><div id="footer-inner">
   <form action="" method="post" enctype="multipart/form-data" style="" id="mainform" name="mainform">
   <table id="tfoot" width="100%" cellpadding="0" cellspacing="0" border="0">

 	<tr><td class="left">
 		<span class="icon diradd">&nbsp;</span>
	  	<input type="text" class="text" name="dirname" value="Nova slozka" onclick="javascript:if(this.value == 'Nova slozka') this.value='';" title="Názvy složek nesmí obsahovat diakritiku!!" />
		  <input type="submit" class="sbmt1" name="makedir" value="Vytvoř" />
	 </td>
	 <td class="space">&nbsp;</td>
	 <td class="right">
	 	<span class="icon fileadd" >&nbsp;</span>
	 	<input type="file" class="file" name="myfile" id="myfile" onchange="" title="Názvy souborů nesmí obsahovat diakritiku!!" />
		 <input type="submit" class="sbmt2" id="upsbmt" name="upload" value="Nahraj"  />
 	 </td>
 	</tr>
   </table></form>
   </div></div>
<div id="outer">
 <div id="contain-all">

  <table id="files" width="100%" cellpadding="0" cellspacing="0" border="0">
   <tbody>
   	<tr><td class="spacehead" colspan="8"></td></tr>
	<?php

	$dirs = srtFiles($absdir,getDirList($absdir),$Order['SORT'],$Order['DIR']);

 	if(!empty($getdir)){
 			echo '<tr><td class="pad1"></td>';
 			echo '<td class="icon '.(($Order['SORT']=='name')?'selected':'').'"><span class="icon dirtop">&nbsp;</span></td>';
 			echo '<td class="file '.(($Order['SORT']=='name')?'selected':'').'">&nbsp;<a href="?type='.$rqtype.'&amp;inp='.$_GET['inp'].'&amp;editor='.$_GET['editor'].'&amp;returnID='.$_GET['returnID'].'&amp;dir='.urlencode($subdir).'">';
 			echo ' .. &lt;parent&gt;</a></td>';
 			echo '<td class="size '.(($Order['SORT']=='size')?'selected':'').'"></td>';
 			echo '<td class="type '.(($Order['SORT']=='type')?'selected':'').'">'.$type['directory'].'</td>';
 			echo '<td class="time '.(($Order['SORT']=='time')?'selected':'').'">'.strftime("%d.%m.%y %H:%M:%S",filemtime(substr($absdir,0,strrpos($absdir,'/')))).'</td>';
 			echo '<td class="delo"></td>';
 			echo '<td class="pad2"></td></tr>';
 	}
 	foreach($dirs as $d)if($d!='.'&&$d!='..'){

 			$link = '?type='.$rqtype.'&amp;inp='.$_GET['inp'].'&amp;editor='.$_GET['editor'].'&amp;returnID='.$_GET['returnID'].'&amp;dir='.urlencode($getdir).'/'.urlencode($d);
 			$dlnk = '?type='.$rqtype.'&amp;inp='.$_GET['inp'].'&amp;editor='.$_GET['editor'].'&amp;returnID='.$_GET['returnID'].'&amp;dir='.urlencode($getdir).'&amp;deldir='.urlencode($d);
 			echo '<tr><td class="pad1"></td>';
 			echo '<td class="icon '.(($Order['SORT']=='name')?'selected':'').'"><span class="icon dir">&nbsp;</span></td>';
 			echo '<td class="file '.(($Order['SORT']=='name')?'selected':'').'">&nbsp;<a href="'.$link.'">'.utf8_encode($d).'</a></td>';
 			echo '<td class="size '.(($Order['SORT']=='size')?'selected':'').'">'.format_filesize(getDirSize($absdir.$d.'/')).'</td>';
 			echo '<td class="type '.(($Order['SORT']=='type')?'selected':'').'">'.$type['directory'].'</td>';
 			echo '<td class="time '.(($Order['SORT']=='time')?'selected':'').'">'.strftime("%d.%m.%y %H:%M:%S",filemtime($absdir.$d)).'</td>';
 			echo '<td class="delo"><a href="'.$dlnk.'"  onclick="return ConfirmDelDir(\''.utf8_encode($d).'\')"><span class="icon dirdel">&nbsp;</span></a></td>';
 			echo '<td class="pad2"></td></tr>'."\n";
 	}


 	$files = srtFiles($absdir,getFileList($absdir,$rqtype),$Order['SORT'],$Order['DIR']);
 	#print_r($files);
 	foreach($files as $f)
 	{

 		$endung = substr($f,strrpos($f,'.')+1);
 		#if(isset($icon[$endung])) $image= $icon[$endung];
 		#else $image = $icon['default'];
 		echo '<tr><td class="pad1"></td>';
 		echo '<td class="icon '.(($Order['SORT']=='name')?'selected':'').'"><span class="icon '.$endung.(($Order['SORT']=='name')?' selected':'').'">&nbsp;</span></td>';
 		echo '<td class="file '.(($Order['SORT']=='name')?'selected':'').'">&nbsp;<a href="javascript: fileSelect(\'soubory'.$getdir.'/'.utf8_encode($f).'\');">'.utf8_encode($f).'</a></td>';
 		echo '<td class="size '.(($Order['SORT']=='size')?'selected':'').'">'.format_filesize(filesize($absdir.$f)).'</td>';
 		echo '<td class="type '.(($Order['SORT']=='type')?'selected':'').'">'.((isset($type[$endung]))?$type[$endung]:$type['???']).'</td>';
 		echo '<td class="time '.(($Order['SORT']=='time')?'selected':'').'">'.strftime("%d.%m.%y %H:%M:%S",filemtime($absdir.$f)).'</td>';
 		echo '<td class="delo"><a href="?type='.$rqtype.'&amp;inp='.$_GET['inp'].'&amp;editor='.$_GET['editor'].'&amp;returnID='.$_GET['returnID'].'&amp;dir='.$getdir.'&amp;delfile='.urlencode($f).'" onclick="return ConfirmDelFile(\''.utf8_encode($f).'\')">';
 		echo '<span class="icon filedel">&nbsp;</span></a></td>';
 		echo '<td class="pad2"></td></tr>'."\n";
 	}
 	?>
    <tr>
 	 <td colspan="8" class="spacefoot"></td>
 	</tr>
   </tbody>
  </table>
  </div>
  </div>
</body>
</html>

















<?php
##################################################################################
# USED FUNCTIONS - DONT CHANGE ANYTHING BELOW UNLESS YOU KNOW WHAT YOU ARE DOING #
##################################################################################
 function jumpback(){
 	global $rqtype,$getdir;
 	die(header('Location: ?type='.$rqtype.'&inp='.$_GET['inp'].'&editor='.$_GET['editor'].'&returnID='.$_GET['returnID'].'&dir='.$getdir));
 }
 function _rmdir_recursiv($fullpath,$recursiv_allowed = false){
 	global $rqtype;
 	if(@rmdir($fullpath)) return true;
 	if(!$recursiv_allowed)return false;
 	//its not empty and recursiv deletion is allowed
 	if($items=getFileList($fullpath,$rqtype))
 	 foreach( $items as $i) unlink($fullpath.$i);
 	if($items=getDirList($fullpath))
 	 foreach( $items as $i)
 	  _rmdir_recursiv($fullpath.$i.'/',$recursiv_allowed);
 	if(!@rmdir($fullpath)) return false;
 	else return true;
 }
 function delDir( $path, $dir ){
 	global $allow_recursiv_delete;
 	$fullpath = rtrim($path,'/').'/'.trim($dir,'/').'/';
 	_rmdir_recursiv($fullpath,$allow_recursiv_delete);
 	jumpback();
 }
 function delFile( $path,$file){
 	#echo $path.':'.$file;
 	if(unlink(rtrim($path,'./').'/'.$file))
 	jumpback();
 }
 function crtDir( $path,$dir ){
 	if(@mkdir(rtrim($path,'./').'/'.trim($dir,'./'),0755))
 	jumpback();
 }
 function strFile($path,$type)
 {
 	global $regex,$usesize,$spacelimit;
 	if ( $_FILES['myfile']['error'] != UPLOAD_ERR_OK) return -1;
 	if ( $_FILES['myfile']['size'] <= 0 )			  return -2;
 	if ( preg_match($regex[$type],$_FILES['myfile']['name'])){

 		$fileTemp = $_FILES['myfile']['tmp_name'];
  		$fileName = strtolower ($_FILES['myfile']['name']);
 		if( move_uploaded_file($fileTemp, $path . $fileName)){
 			$usesize += $_FILES['myfile']['size'];
 			return true;
 		}else return -4;

 	} else $return = -3;

 	unlink($_FILES['myfile']['tmp_name']);
 	return $return;
 }
 function lstDir($dir,$hidden = false)
 {	$items=array();
 	if (!is_dir($dir) || !$dh = @opendir($dir)) return false;
    while (($item = readdir($dh)) !== false)
    if(strpos($item,'.') !== 0 || $hidden)
     if($item != '.' && $item != '..')
      $items[] = $item;
    #print_r($items);
    closedir($dh); return $items;
 }
 function getFileList($dir, $type='file' )
 {
    global $regex,$display_hidden_files;
    $return=array();
 	if( $files = lstDir($dir,$display_hidden_files))
	foreach($files as $file)
	if( filetype($dir.$file)=='file' && preg_match($regex[$type],$file))
          $return[]= $file;
    return $return;
 }
 function getDirList( $dir )
 {	global $display_hidden_dirs;
 	$return=array();
 	if( $files = lstDir($dir,$display_hidden_dirs))
	 foreach($files as $file)
	  if( filetype($dir.$file)=='dir')#&& $file != '.')
          $return[]= $file;
    return $return;
 }
 function srtFiles($path,$files,$fld='name',$dir = 0)
 {
 	$newarr = array();
 	foreach($files as $d)
 	if($fld=='type')
 		$newarr[$d] = substr($d,strrpos($d,'.'));
 	elseif($fld=='time')
 		$newarr[$d] = filemtime($path.$d);
 	elseif($fld=='size')
 		$newarr[$d] = filesize($path.$d);
 	else $newarr[$d] = strtolower($d);

 	if($dir)  asort($newarr);
 	else  	  arsort($newarr);

 	return array_keys($newarr);
 }
 
 
 
 
 function getDirSize( $dir, $recursiv=false )
 {
 	global $display_subdir_size; $size=0;
 	if( ! $display_subdir_size ) return;
 	 //var_dump(glob(rtrim($dir,'/').'/*'));
 	 if(glob(rtrim($dir,'/').'/*'))
 	foreach( glob(rtrim($dir,'/').'/*') as $i)
 	 if( filetype($i)!='dir')$size += filesize($i);
 	 else if( $recursiv )	 $size += getDirSize($i);
 	return $size;
 }
 function format_filesize($size , $base = 1024)
 {
 	$size = sprintf("%u", $size);		$suffix='B';
 	if($size >= $base){ $size /= $base; $suffix='KB'; }
 	if($size >= $base){ $size /= $base; $suffix='MB'; }
 	if($size >= $base){ $size /= $base; $suffix='GB'; }
 	return number_format($size,0,',','.').$suffix;
 }
 function getCurrentSorting ( $_METHOD , $_AREA = '' , $DEFAULT_PERPAGE = 10 , $DEFAULT_SORT = 0 , $DEFAULT_DIR = 0)
 {
	if( !isset($_SESSION[$_AREA.'_PERPAGE'])) 	$_SESSION[$_AREA.'_PERPAGE'] = $DEFAULT_PERPAGE;
	if( !isset($_SESSION[$_AREA.'_SORT'])) 		$_SESSION[$_AREA.'_SORT'] = $DEFAULT_SORT;
	if( !isset($_SESSION[$_AREA.'_DIR'])) 		$_SESSION[$_AREA.'_DIR'] = $DEFAULT_DIR;
	if( !isset($_SESSION[$_AREA.'_PAGE'])) 		$_SESSION[$_AREA.'_PAGE'] = 1;

	if( isset($_METHOD['PERPAGE'])) switch($_METHOD['PERPAGE'])
	{
		case '100': $_SESSION[$_AREA.'_PERPAGE'] =100; break;
		case '50' : $_SESSION[$_AREA.'_PERPAGE'] = 50; break;
		case '25' : $_SESSION[$_AREA.'_PERPAGE'] = 25; break;
		case '10' : $_SESSION[$_AREA.'_PERPAGE'] = 10; break;
		default : 	$_SESSION[$_AREA.'_PERPAGE'] = 10; break;
	}
	if( isset($_METHOD['SORT']))	$_SESSION[$_AREA.'_SORT'] = $_METHOD['SORT'];
	if( isset($_METHOD['DIR']))		$_SESSION[$_AREA.'_DIR'] = intval($_METHOD['DIR']) ? 1 : 0;
	if( isset($_METHOD['PAGE']))	$_SESSION[$_AREA.'_PAGE'] = intval($_METHOD['PAGE']) ? intval($_METHOD['PAGE']) : 1;
	$_SESSION[$_AREA.'_START'] = ($_SESSION[$_AREA.'_PAGE']-1) * $_SESSION[$_AREA.'_PERPAGE'];

	return array(
		'PERPAGE' => $_SESSION[$_AREA.'_PERPAGE'] ,
		'SORT' => $_SESSION[$_AREA.'_SORT'] ,
		'DIR' => $_SESSION[$_AREA.'_DIR'] ,
		'PAGE' => $_SESSION[$_AREA.'_PAGE'] ,
		'START' => $_SESSION[$_AREA.'_START']
	);
 }
 function Performance($microtime){
	$time = array_sum(explode(' ',microtime()));
	$time-= array_sum(explode(' ',$microtime));
	$time = 'Time:'.round($time * 1000).'ms ';
	if(function_exists('memory_get_peak_usage'))
	$time.= 'Mem:'.round(memory_get_usage()/1024).'kb';
	echo "<!-- Performance: $time -->";
 }
 function doConditionalGet($file = false){
 	 if(!$file) $file = __FILE__;
 	 $timestamp = filemtime($file);
     $last_modified = gmdate('D, d M Y H:i:s', $timestamp).' GMT';
     $etag = md5_file($file);

     header('Cache-Control: public, must-revalidate');
     #header('Expires: '.gmdate("D, d M Y H:i:s",time()+($expire)).' GMT');
     header('Last-Modified: '.$last_modified);
     header('ETag: "'.$etag.'"');

     $if_modified_since = isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) ?
         stripslashes($_SERVER['HTTP_IF_MODIFIED_SINCE']) :
         false;
     $if_none_match = isset($_SERVER['HTTP_IF_NONE_MATCH']) ?
         trim(stripslashes($_SERVER['HTTP_IF_NONE_MATCH']),'"') :
         false;
     if (!$if_modified_since && !$if_none_match) return;
     if ($if_none_match && $if_none_match != $etag) return;
	 if ($if_modified_since && !stristr($if_modified_since,$last_modified)) return;
     die( header('HTTP/1.0 304 Not Modified') );

 }
 function viewfile($filename)
 {
 	$filename = ABSPATH.trim($filename,'/');
	$filename = preg_replace('~..\\|../~','',$filename);
	#echo substr($filename,strrpos($filename,'.')+1);
	switch( substr($filename,strrpos($filename,'.')+1) ){
		case('jpg'): header('Content-Type: image/jpeg'); break;
		case('png'): header('Content-Type: image/png');  break;
		case('gif'): header('Content-Type: image/gif');  break;
		case('html'):
		case('htm'): header('Content-Type: text/html');  break;
		case('txt'): header('Content-Type: text/plain');  break;
		case('php'): header('Content-Type: text/plain');  break;
		default: jumpback();
	}
	header('Content-Length: '.filesize($filename),true);
	doConditionalGet($filename);
	die(file_get_contents($filename));

 }
 function download($filename)
 {
	//$filename = ABSPATH.trim($filename,'/');
    $filename = preg_replace('~..\\|../~','',$filename);
    $filename = "soubory/".$filename;
	header('Content-Type: '.mime_content_type($filename), true);
	header('Content-Length: '.filesize($filename),true);
	header('Content-Disposition: attachment; filename="'.basename($filename).'";',true);
	header('Content-Transfer-Encoding: binary\n',true);
	doConditionalGet($filename);
	readfile($filename); exit();
 }
 function display_gif(){header('Content-Type: image/gif'); doConditionalGet(); die(base64_decode('R0lGODlhBwAoAIABAICAgP///yH5BAEAAAEALAAAAAAHACgAAAIajI9pkODnYohU2Yuz3rz7D4biOFGPCT0I8xUAOw=='));}
 function display_png(){header('Content-Type: image/png'); doConditionalGet(); die(base64_decode('iVBORw0KGgoAAAANSUhEUgAAAUAAAAAQCAMAAABQt1bbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAMAUExURcuyQ/Ly8vbOrFdsyWWNSvS3i2elmdLV5vj4+PPPyVjDoLW1tJOxhVzSX2+r0FKMMuzt7d/f3/N5CcLCwrxGBa2uz2zE+ou6ZvjmlvDtSIaGhaF4Meft9q7IpPT1YffkpjlrIaamped1bfbfd5fDglRUU/Tdl/fjh+rq6vv02Z2dnPjrtdjn1Pb29uHAV6fGmfjo5PPz84Cbxp/Y2tulO+xvL/WQSJfGSfiqVedPN4OsdejQgfPLLHx8fPXbZ3qma9uYPPv36czMzOLi4s1uLlFTmm2a1PHUgn7akTg4OcvFtZe+WomLusnJyW6mOIbIc37DzbPUlf777////+2hnEuRv0+31euvdfG0r+bm5mdnZ9XV1XyZw+3v99s8Lv788meK0pDOs+tlS5WVkO1yVvTYWUN5LFiWQ+lbQv2CI2OkRv789tyxPcvlttqaSfzy8erpNf3683JzrfOLZcFaHpWp2Zm62risdC2DCfKYfXChSXmtVezKaMeRc9LfzV+aL/PUR7vm0oSuZPbe2oSm1Xek6KDBj9mMNHyY17HE3ePEYuVqYfT0+Yy2sfbqyoWfx2WYx9rf7eq7L4i0fqPXlEOOF//+/dNlad1UTOXHcOWBe/zyy//9+V+kNuCrjvCKeXaP1fP17l5eXG6bXLG1WO2BcJG6eKy42oew1cXYvm2xR+/09/jy7/r148uJhmWY5vv9+vf4+/v69/f28vB+W/bz55WjwsbToW5wb0VFRPz8/Pv7+/r6+v39/cvLy/v8/vT198bK39DQG+7OiPDWke/QdnC4T1tdoPf69rO/r/SdY99mAqjMfFKlZJyceKqcWfn7+MXFxcPIza7mis2zpoC0Xo2NjYySmI+OheHNkf3+/l9+0Ofp7O/v7+fr5Yznoebm6Pz8/ujs5tjY1+jo8evr68rLye/myOvw32p3gJSONerARqDWjvDParTPhdvGfKzMk6vxu9/i6Fam13V1dKjPWuPn4fv7/vGcbdjUSff5/Pz47s+zdfz69oOt6v///wWZKXIAAAEAdFJOU////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wBT9wclAAAIG0lEQVR42mL4TylwdvKFAsG92PgEFQw1PioACCAGigPQiWP3LjDgEAZbgM4nqGCo8VEBQAAx/NfrAgG934UgMO0/yXzf3Ya6urqMdzV2RYItQOcjCTy4CFHAOD8CjwbS+NPjMkxNTe8SpR5mPy4+IfWRWEIQIIAY/udMC542LdhxJhBYW2v/J5nvu4sDCAyB5usaXhTE5MMEGJ/u0tWFKFizlBOu4DlDuRYQKGoJQ/jHgGDVqlVZWVkQfjEIbNmyJSUFwndzm+Dm5paQkHAbwo9beoWTM7MZycKTslaLrfTr0B2EZD8yv3NbjFGMERAsh6i/JqV4UVg4ageGeoSHUABAAAEDMFtdTU0+KD4+Pihojt5/kvkQ83WB9gGBLyYfJmAogFCgFAJXwPDz3A0guHbtRiSYfywYCtIh8sUwfhKE7/ZrPxjI3Ibw45iA5lkYrOCb0LIRbP5K+7aVjYmTrVYiOUiYm5tbURHGB3G0km0h7tn29AAYyPRD1Nt+mTCBrXxRFNy9e4VFi4pcXYtEP+2GeggFAAQQMAAL1dTca2rc3Y8ePeqY859kvu8uoMG7gQEioBEJcS8qH5uCpRFwPoOcnJykJEOkVvJdMD99cVO1fRo/f1o6RL44OL+ycktlfnAShO/2sMOtdEFHy+3bEL4lp++uTRYGbhMnTvgE4utMztVpNA4I0Leqw+EgX27ha1JSirYQvtEBdm9z8+rO2H4I/5oUl5jY9i87YOr3iLq6urK7goDog0jMAAQIIGAAOh45PLMPnKCCgkEBRCLfF1zAghx4VwDiXlT+f9+9UAFDuIJuJbgCBslDhw4BA1AxmRHMX9Ume/mDlX26Dj9EfktwpUF+StL84AwI322/24LO26Udt5khfNNmoHk/Nq84wOEmAOLLqnwEhh+XxxsrfZiD9u7yvQhKg9yKED73tceCglJfIO6JWc1u/tV8VZmMEcQ8KSleXq6wqEUw94q6HmQXfcIuCiRdRQUwAxAggBj+mwTPyc6O15RQV7ZL1TT5Tzzfrx7MhwQYOIAYEQGI4CMLGEIUNCd1N8MUMADTX4Ekg7NWsiGYnxVs1ea/LK0uOA0iDwxAYOpLSgq2hPDd9nckLLi94HYpM4Rvampm9oN1DR8fn9tdEN9qyv1GvgBeXt42K0wHQexXlNLdtUsqCsI3Wn3Q3Nx8botMP8Q8KdumpuqqRYtg6o+7Tjx+8MnxiUCy6DgjZgACBBAwALNna2uDg6ehYTYogGD8JYtZWF4h8R1KREpckPh+V+tnIwJw1x4OXV0k98L5WBQohTQDQxDCB6fAAlAA6oL5WTpp/LL+9vYn0iDyW4JTkpIyMjKCLSH8hP0Lbt++zXx7IjOEP22t19q/jrsWbt78YjOIv/iNR8DnAC6usx8WIxzktA+YBoWFuXWhAXh31y7bKIh+o9Wd9n5z01fI9EP4oDIwplxVFeZeUP49ONGVHUgWuepiBiBAADH8dyjUloeGn81sh/9w/pKmwFxxfh4438GFlSncZR6E7+fnV1/9oXqqAyJ8dssCA9wKiT8PGOC1SAG4G1iVgD1gMMOguTtuRrdSBAcoBRYUAFOgoFYyB1g+XQFY/rWpWNmnQdSnBM8Hhp9lSrAlhJ/wPeH28gW3l8cyQ/iaNnp6NV2bvYGgCsS3epPI9/lzaCjbMiuYfej2a9kacjjZLoLwY2LLyvKky1bIGEH4O3aAykDVnTD1Pq497KLA3AskXX04MAMQIICAARgEDT8bG0gAQvksgYHB4uIKcH4Jq5lQplkJhO/3AQiWtWVVQN23e/duWWiAw/jzoAEOE9i1Zw/UA7NmRYRwcs7qnhUC5L9nAIHz3Io3IPL8bfr6K3kWL16sAOEnBecvzchIMQiOg/ATbt1esHHBbZlYZghf08Zr1663m7zf7V4JDkDZZf5swABkm7xYdg88AB9HOzmB+hMgvgCwAn6gZSu1CKI/Jraqqr6en1/GCML/sgNUBqqqwtwb6wOpQYCkzxMsAQgQQAz/8zTl1dSOgCrVt2/7gAEI46cFAtsOgQpwvggTkC8kAuHXfxAXF796VWVuBSx89sACHMaHBThcYA8QAR2Qv27GGgjfIB/In/b7ouD1a8lSyTc+yYDk+WHNFmAAgvhJMH4chA8MOjAAZmEwX3MSMAAbtnqfWbidBcTXsVJJ5ONjE7e30gHLo9sfqaioaJt8TSvqGoTfL7AaDIBZGKx+kWqT+NXqnTvh7o3d5gMOQZ/lAhDzUAFAADH8Zwp3aIcD1v9wvoK4ODhAYHyRU5lCQqdLIPz6Dx/a2sRVsqaegNW6u2EBDuPDAhwusAsEfTlnxXFC0ygQgD14p7XlWfKil63/QPw0IFAAA4g8MPsCQRwQQPi3mWEAwu+b9OfmEZutbVVVLCxg81baW/X28iy2Wgk3f9cuQcHHj6OBAMhX1NKK4uZepApsBoLd01lq1B/TDwTLIepVVbUuXrzo6QlzL8L9MPNQAUAA4e4L8/CLB4KyJAzMczEVOi0yD8Kpnzp16lyVLP4LiCIGFuAwfgk0wKHNGAjY66s0Y90uJAByoMz6VsHHTpfWt8IavmjyePlrXk+aNKlm855H977dhciDeyKyOgj1KPYL2i7i3rUrOhrGx2I+inpMeVQAEEB4BhN40hTSeJD4oEphHhJ/ahb/BiC1jwNiNCzAYXx4gO/bA3UMqD/uhNCwi158dPsJuYeAPCoACCAKRmMqKjaAR3v2QQd7FgOznRUSvxZaC8MFgMDJeejzUQFAgAEAgqSWH0rzmJEAAAAASUVORK5CYII='));}
 function display_jpg(){header('Content-Type: image/jpg'); doConditionalGet(); die(base64_decode('iVBORw0KGgoAAAANSUhEUgAAAUAAAAAQCAMAAABQt1bbAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAMAUExURcuyQ/Ly8vbOrFdsyWWNSvS3i2elmdLV5vj4+PPPyVjDoLW1tJOxhVzSX2+r0FKMMuzt7d/f3/N5CcLCwrxGBa2uz2zE+ou6ZvjmlvDtSIaGhaF4Meft9q7IpPT1YffkpjlrIaamped1bfbfd5fDglRUU/Tdl/fjh+rq6vv02Z2dnPjrtdjn1Pb29uHAV6fGmfjo5PPz84Cbxp/Y2tulO+xvL/WQSJfGSfiqVedPN4OsdejQgfPLLHx8fPXbZ3qma9uYPPv36czMzOLi4s1uLlFTmm2a1PHUgn7akTg4OcvFtZe+WomLusnJyW6mOIbIc37DzbPUlf777////+2hnEuRv0+31euvdfG0r+bm5mdnZ9XV1XyZw+3v99s8Lv788meK0pDOs+tlS5WVkO1yVvTYWUN5LFiWQ+lbQv2CI2OkRv789tyxPcvlttqaSfzy8erpNf3683JzrfOLZcFaHpWp2Zm62risdC2DCfKYfXChSXmtVezKaMeRc9LfzV+aL/PUR7vm0oSuZPbe2oSm1Xek6KDBj9mMNHyY17HE3ePEYuVqYfT0+Yy2sfbqyoWfx2WYx9rf7eq7L4i0fqPXlEOOF//+/dNlad1UTOXHcOWBe/zyy//9+V+kNuCrjvCKeXaP1fP17l5eXG6bXLG1WO2BcJG6eKy42oew1cXYvm2xR+/09/jy7/r148uJhmWY5vv9+vf4+/v69/f28vB+W/bz55WjwsbToW5wb0VFRPz8/Pv7+/r6+v39/cvLy/v8/vT198bK39DQG+7OiPDWke/QdnC4T1tdoPf69rO/r/SdY99mAqjMfFKlZJyceKqcWfn7+MXFxcPIza7mis2zpoC0Xo2NjYySmI+OheHNkf3+/l9+0Ofp7O/v7+fr5Yznoebm6Pz8/ujs5tjY1+jo8evr68rLye/myOvw32p3gJSONerARqDWjvDParTPhdvGfKzMk6vxu9/i6Fam13V1dKjPWuPn4fv7/vGcbdjUSff5/Pz47s+zdfz69oOt6v///wWZKXIAAAEAdFJOU////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wBT9wclAAAIG0lEQVR42mL4TylwdvKFAsG92PgEFQw1PioACCAGigPQiWP3LjDgEAZbgM4nqGCo8VEBQAAx/NfrAgG934UgMO0/yXzf3Ya6urqMdzV2RYItQOcjCTy4CFHAOD8CjwbS+NPjMkxNTe8SpR5mPy4+IfWRWEIQIIAY/udMC542LdhxJhBYW2v/J5nvu4sDCAyB5usaXhTE5MMEGJ/u0tWFKFizlBOu4DlDuRYQKGoJQ/jHgGDVqlVZWVkQfjEIbNmyJSUFwndzm+Dm5paQkHAbwo9beoWTM7MZycKTslaLrfTr0B2EZD8yv3NbjFGMERAsh6i/JqV4UVg4ageGeoSHUABAAAEDMFtdTU0+KD4+Pihojt5/kvkQ83WB9gGBLyYfJmAogFCgFAJXwPDz3A0guHbtRiSYfywYCtIh8sUwfhKE7/ZrPxjI3Ibw45iA5lkYrOCb0LIRbP5K+7aVjYmTrVYiOUiYm5tbURHGB3G0km0h7tn29AAYyPRD1Nt+mTCBrXxRFNy9e4VFi4pcXYtEP+2GeggFAAQQMAAL1dTca2rc3Y8ePeqY859kvu8uoMG7gQEioBEJcS8qH5uCpRFwPoOcnJykJEOkVvJdMD99cVO1fRo/f1o6RL44OL+ycktlfnAShO/2sMOtdEFHy+3bEL4lp++uTRYGbhMnTvgE4utMztVpNA4I0Leqw+EgX27ha1JSirYQvtEBdm9z8+rO2H4I/5oUl5jY9i87YOr3iLq6urK7goDog0jMAAQIIGAAOh45PLMPnKCCgkEBRCLfF1zAghx4VwDiXlT+f9+9UAFDuIJuJbgCBslDhw4BA1AxmRHMX9Ume/mDlX26Dj9EfktwpUF+StL84AwI322/24LO26Udt5khfNNmoHk/Nq84wOEmAOLLqnwEhh+XxxsrfZiD9u7yvQhKg9yKED73tceCglJfIO6JWc1u/tV8VZmMEcQ8KSleXq6wqEUw94q6HmQXfcIuCiRdRQUwAxAggBj+mwTPyc6O15RQV7ZL1TT5Tzzfrx7MhwQYOIAYEQGI4CMLGEIUNCd1N8MUMADTX4Ekg7NWsiGYnxVs1ea/LK0uOA0iDwxAYOpLSgq2hPDd9nckLLi94HYpM4Rvampm9oN1DR8fn9tdEN9qyv1GvgBeXt42K0wHQexXlNLdtUsqCsI3Wn3Q3Nx8botMP8Q8KdumpuqqRYtg6o+7Tjx+8MnxiUCy6DgjZgACBBAwALNna2uDg6ehYTYogGD8JYtZWF4h8R1KREpckPh+V+tnIwJw1x4OXV0k98L5WBQohTQDQxDCB6fAAlAA6oL5WTpp/LL+9vYn0iDyW4JTkpIyMjKCLSH8hP0Lbt++zXx7IjOEP22t19q/jrsWbt78YjOIv/iNR8DnAC6usx8WIxzktA+YBoWFuXWhAXh31y7bKIh+o9Wd9n5z01fI9EP4oDIwplxVFeZeUP49ONGVHUgWuepiBiBAADH8dyjUloeGn81sh/9w/pKmwFxxfh4438GFlSncZR6E7+fnV1/9oXqqAyJ8dssCA9wKiT8PGOC1SAG4G1iVgD1gMMOguTtuRrdSBAcoBRYUAFOgoFYyB1g+XQFY/rWpWNmnQdSnBM8Hhp9lSrAlhJ/wPeH28gW3l8cyQ/iaNnp6NV2bvYGgCsS3epPI9/lzaCjbMiuYfej2a9kacjjZLoLwY2LLyvKky1bIGEH4O3aAykDVnTD1Pq497KLA3AskXX04MAMQIICAARgEDT8bG0gAQvksgYHB4uIKcH4Jq5lQplkJhO/3AQiWtWVVQN23e/duWWiAw/jzoAEOE9i1Zw/UA7NmRYRwcs7qnhUC5L9nAIHz3Io3IPL8bfr6K3kWL16sAOEnBecvzchIMQiOg/ATbt1esHHBbZlYZghf08Zr1663m7zf7V4JDkDZZf5swABkm7xYdg88AB9HOzmB+hMgvgCwAn6gZSu1CKI/Jraqqr6en1/GCML/sgNUBqqqwtwb6wOpQYCkzxMsAQgQQAz/8zTl1dSOgCrVt2/7gAEI46cFAtsOgQpwvggTkC8kAuHXfxAXF796VWVuBSx89sACHMaHBThcYA8QAR2Qv27GGgjfIB/In/b7ouD1a8lSyTc+yYDk+WHNFmAAgvhJMH4chA8MOjAAZmEwX3MSMAAbtnqfWbidBcTXsVJJ5ONjE7e30gHLo9sfqaioaJt8TSvqGoTfL7AaDIBZGKx+kWqT+NXqnTvh7o3d5gMOQZ/lAhDzUAFAADH8Zwp3aIcD1v9wvoK4ODhAYHyRU5lCQqdLIPz6Dx/a2sRVsqaegNW6u2EBDuPDAhwusAsEfTlnxXFC0ygQgD14p7XlWfKil63/QPw0IFAAA4g8MPsCQRwQQPi3mWEAwu+b9OfmEZutbVVVLCxg81baW/X28iy2Wgk3f9cuQcHHj6OBAMhX1NKK4uZepApsBoLd01lq1B/TDwTLIepVVbUuXrzo6QlzL8L9MPNQAUAA4e4L8/CLB4KyJAzMczEVOi0yD8Kpnzp16lyVLP4LiCIGFuAwfgk0wKHNGAjY66s0Y90uJAByoMz6VsHHTpfWt8IavmjyePlrXk+aNKlm855H977dhciDeyKyOgj1KPYL2i7i3rUrOhrGx2I+inpMeVQAEEB4BhN40hTSeJD4oEphHhJ/ahb/BiC1jwNiNCzAYXx4gO/bA3UMqD/uhNCwi158dPsJuYeAPCoACCAKRmMqKjaAR3v2QQd7FgOznRUSvxZaC8MFgMDJeejzUQFAgAEAgqSWH0rzmJEAAAAASUVORK5CYII='));}
?>

ACC SHELL 2018