slitaz-forge rev 600

mirror: add support for small screens and touch screens, add icons for mirrors and file types, update mirrors list, minify resources.
author Aleksej Bobylev <al.bobylev@gmail.com>
date Fri Oct 02 01:31:59 2015 +0300 (2015-10-02)
parents 8176f5915c1e
children dd8c986dfebf
files mirror/README mirror/mirror mirror/root/dir-generator.php mirror/root/mirrors mirror/root/mirrors.html mirror/root/static/BR.png mirror/root/static/CH.png mirror/root/static/DE.png mirror/root/static/FR.png mirror/root/static/IT.png mirror/root/static/PL.png mirror/root/static/README mirror/root/static/US.png mirror/root/static/application-octet-stream.png mirror/root/static/application-x-bittorrent.png mirror/root/static/application-x-bzip.png mirror/root/static/application-x-cd-image.png mirror/root/static/application-x-executable.png mirror/root/static/application-x-gzip.png mirror/root/static/application-x-ms-dos-executable.png mirror/root/static/application-zip.png mirror/root/static/folder.png mirror/root/static/go-up.png mirror/root/static/help.png mirror/root/static/home.png mirror/root/static/logo.png mirror/root/static/mime/Directory mirror/root/static/mime/application_octet-stream mirror/root/static/mime/file_fd mirror/root/static/mime/file_iso mirror/root/static/mime/file_md5 mirror/root/static/mime/file_tar.gz mirror/root/static/mime/file_tazpkg mirror/root/static/mime/text_plain mirror/root/static/network.png mirror/root/static/package-x-generic.png mirror/root/static/qrcode.min.js mirror/root/static/slitaz.css mirror/root/static/slitaz.min.css mirror/root/static/text-plain.png mirror/root/static/text-x-changelog.png mirror/root/static/text-x-readme.png mirror/root/static/xhtml10.png
line diff
     1.1 --- a/mirror/README	Sat Sep 19 16:15:43 2015 +0200
     1.2 +++ b/mirror/README	Fri Oct 02 01:31:59 2015 +0300
     1.3 @@ -2,15 +2,15 @@
     1.4  ===============================================================================
     1.5  
     1.6  
     1.7 -Files and tools used on mirror.slitaz.org including web interface info. Images
     1.8 +Files and tools used on mirror1.slitaz.org including web interface info. Images
     1.9  and CSS style are hosted on MF and aliases are widely used for replication.
    1.10  
    1.11  	* files : Custom system configuration files
    1.12 -	* info  : Mirror web interface at http://mirror.slitaz.org/info/
    1.13 -	* root  : File for the root directory of http://mirror.slitaz.org/
    1.14 +	* info  : Mirror web interface at http://mirror1.slitaz.org/info/
    1.15 +	* root  : File for the root directory of http://mirror1.slitaz.org/
    1.16  
    1.17 -Host : mirror.slitaz.org
    1.18 -IP   : 91.121.171.224
    1.19 +Host : mirror1.slitaz.org
    1.20 +IP   : 188.165.229.172
    1.21  
    1.22  
    1.23  Administration
     2.1 --- a/mirror/mirror	Sat Sep 19 16:15:43 2015 +0200
     2.2 +++ b/mirror/mirror	Fri Oct 02 01:31:59 2015 +0300
     2.3 @@ -2,7 +2,7 @@
     2.4  #
     2.5  # Main SliTaz Mirror admin utility
     2.6  #
     2.7 -# Copyright (C) 2012-2014 SliTaz GNU/Linux - BSD License
     2.8 +# Copyright (C) 2012-2015 SliTaz GNU/Linux - BSD License
     2.9  #
    2.10  # Authors : Christophe Lincoln <pankso@slitaz.org>
    2.11  #
     3.1 --- a/mirror/root/dir-generator.php	Sat Sep 19 16:15:43 2015 +0200
     3.2 +++ b/mirror/root/dir-generator.php	Fri Oct 02 01:31:59 2015 +0300
     3.3 @@ -1,22 +1,37 @@
     3.4  <?php
     3.5 -function redirect()
     3.6 -{
     3.7 +if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip'))
     3.8 +	ob_start('ob_gzhandler');
     3.9 +else
    3.10 +	ob_start();
    3.11 +
    3.12 +function redirect() {
    3.13  ?>
    3.14 -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    3.15 -	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    3.16 -<html xml:lang="en" xmlns="http://www.w3.org/1999/xhtml" lang="en">
    3.17 +<!DOCTYPE html>
    3.18 +<html lang="en">
    3.19  <head>
    3.20  	<title>SliTaz mirror redirection</title>
    3.21 -	<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
    3.22 -	<meta name="description" content="slitaz mirror redirection" />
    3.23 -	<meta name="robots" content="index, nofollow" />
    3.24 -	<meta name="author" content="SliTaz Contributors" />
    3.25 +	<meta charset="UTF-8">
    3.26 +	<meta name="description" content="slitaz mirror redirection">
    3.27 +	<meta name="robots" content="index, nofollow">
    3.28 +	<meta name="author" content="SliTaz Contributors">
    3.29  	<meta http-equiv="Refresh" content="0;url=http://mirror1.slitaz.org/">
    3.30  </head>
    3.31 +<body>
    3.32 +	<script>window.location.replace('http://mirror1.slitaz.org/')</script>
    3.33 +	<noscript>
    3.34 +	<frameset rows="100%">
    3.35 +		<frame src="http://mirror1.slitaz.org/">
    3.36 +		<noframes>
    3.37 +		<body>Please follow <a href="http://mirror1.slitaz.org/">this link</a>.</body>
    3.38 +		</noframes>
    3.39 +	</frameset>
    3.40 +	</noscript>
    3.41 +</body>
    3.42 +</html>
    3.43  <?php
    3.44  }
    3.45  
    3.46 -$VERSION = "0.3-slitaz";
    3.47 +$VERSION = "0.4-slitaz";
    3.48  
    3.49  /*  Lighttpd Enhanced Directory Listing Script
    3.50   *  ------------------------------------------
    3.51 @@ -43,7 +58,8 @@
    3.52   *
    3.53   *  http://www.gnu.org/licenses/gpl.txt
    3.54   */
    3.55 - 
    3.56 +
    3.57 +
    3.58  // Get the path (cut out the query string from the request_uri)
    3.59  list($path) = explode('?', $_SERVER['REQUEST_URI']);
    3.60  
    3.61 @@ -52,21 +68,20 @@
    3.62  $path = ltrim(rawurldecode($path), '/');
    3.63  
    3.64  
    3.65 -if(strlen($path) == 0) {
    3.66 +if(strlen($path) == 0)
    3.67  	$path = "./";
    3.68 -}
    3.69  
    3.70  
    3.71  // Can't call the script directly since REQUEST_URI won't be a directory
    3.72 -if($_SERVER['PHP_SELF'] == '/'.$path) {
    3.73 +if($_SERVER['PHP_SELF'] == '/' . $path) {
    3.74  	redirect();
    3.75  //	die("Unable to call " . $path . " directly.");
    3.76  }
    3.77  
    3.78  
    3.79 -$vpath = ($path != "./")?$path:"";
    3.80 +$vpath = ($path != "./") ? $path : "";
    3.81  // Make sure it is valid.
    3.82 -if(!is_dir($path)) {
    3.83 +if (!is_dir($path)) {
    3.84  //	die("<b>" . $path . "</b> is not a valid path.");
    3.85  	$path = dirname($_SERVER["SCRIPT_FILENAME"]);
    3.86  	list($vpath) = explode('?', $_SERVER['REQUEST_URI']);
    3.87 @@ -78,114 +93,112 @@
    3.88  // This function returns the file size of a specified $file.
    3.89  //
    3.90  function format_bytes($size, $precision=1) {
    3.91 -    $sizes = array('Y', 'Z', 'E', 'P', 'T', 'G', 'M', 'K', '');
    3.92 -    $total = count($sizes);
    3.93 +	$sizes = array('Y', 'Z', 'E', 'P', 'T', 'G', 'M', 'K', '');
    3.94 +	$total = count($sizes);
    3.95  
    3.96 -    while($total-- && $size > 1024) $size /= 1024;
    3.97 -    if ($sizes[$total] == '') {
    3.98 -    	$size /= 1024;
    3.99 -    	$total--;
   3.100 -    }
   3.101 -    return sprintf('%.'.$precision.'f', $size).$sizes[$total];
   3.102 +	while ($total-- && $size > 1024)
   3.103 +		$size /= 1024;
   3.104 +	if ($sizes[$total] == '') {
   3.105 +		$size /= 1024;
   3.106 +		$total--;
   3.107 +	}
   3.108 +	return sprintf('%.' . $precision . 'f', $size) . $sizes[$total];
   3.109  }
   3.110  
   3.111 +
   3.112  //
   3.113  // Get some variables from /etc/lighttpd/lighttpd.conf
   3.114  //
   3.115  $conf_lightty = file_get_contents("/etc/lighttpd/lighttpd.conf");
   3.116  
   3.117 -function get_conf($var,$start,$stop,$default='') {
   3.118 -    global $conf_lightty;
   3.119 +function get_conf($var, $start, $stop, $default='') {
   3.120 +	global $conf_lightty;
   3.121  
   3.122 -    if (!preg_match('/'.$var.'/',$conf_lightty)) return $default;
   3.123 -    $filter = '/(.*\n)*'.$var.'\s*=\s*'.$start.'(([^'.$stop.']*\n*)*)'.$stop.'(.*\n)*/';
   3.124 -    return preg_replace($filter,'$2',$conf_lightty);
   3.125 +	if (!preg_match('/' . $var . '/', $conf_lightty))
   3.126 +		return $default;
   3.127 +	$filter = '/(.*\n)*' . $var . '\s*=\s*' . $start . '(([^' . $stop . ']*\n*)*)' . $stop . '(.*\n)*/';
   3.128 +	return preg_replace($filter, '$2', $conf_lightty);
   3.129  }
   3.130  
   3.131 -$encoding = get_conf('dir-listing.encoding','"','"','ascii');
   3.132 -$external_css = get_conf('dir-listing.external-css','"','"');
   3.133 +$encoding = get_conf('dir-listing.encoding', '"', '"', 'ascii');
   3.134 +$external_css = get_conf('dir-listing.external-css', '"', '"');
   3.135  
   3.136  $show_hidden_files = false;
   3.137 -if (get_conf('dir-listing.hide-dotfile','"','"','disable') == "disable") {
   3.138 +if (get_conf('dir-listing.hide-dotfile', '"', '"', 'disable') == "disable")
   3.139  	$show_hidden_files = true;
   3.140 -}
   3.141 +
   3.142  // get_conf('dir-listing.exclude','\(','\)');
   3.143  // get_conf('dir-listing.set-footer','"','"');
   3.144  
   3.145  $mime_types = array();
   3.146 -foreach (explode(',',get_conf('mimetype.assign','\(','\)')) as $item) {
   3.147 +foreach (explode(',', get_conf('mimetype.assign','\(','\)')) as $item) {
   3.148  	$filter = '/\s*"(.*)"\s*=>\s*"(.*)".*/';
   3.149 -	$val = explode(',',preg_replace($filter,'$1,$2',$item));
   3.150 -	if (isset($val[1])) $mime_types[$val[0]] = $val[1];
   3.151 +	$val = explode(',', preg_replace($filter, '$1,$2', $item));
   3.152 +	if (isset($val[1]))
   3.153 +		$mime_types[$val[0]] = $val[1];
   3.154  }
   3.155  
   3.156 +
   3.157  //
   3.158  // This function returns the mime type of $file.
   3.159  //
   3.160  function get_file_type($file) {
   3.161  	global $mime_types;
   3.162 -	
   3.163 +
   3.164  	$file = basename($file);
   3.165  	$default_type = "application/octet-stream";
   3.166 -	if (isset($mime_types[$file])) {
   3.167 +	if (isset($mime_types[$file]))
   3.168  		return $mime_types[$file];
   3.169 -	}
   3.170  	$pos = strrpos($file, ".");
   3.171 -	if ($pos === false) {
   3.172 +	if ($pos === false)
   3.173  		return $default_type;
   3.174 -	}
   3.175  //FIXME .tar.gz
   3.176 -	$ext = '.'.rtrim(substr($file, $pos+1), "~");
   3.177 -	if (isset($mime_types[$ext])) {
   3.178 +	$ext = '.' . rtrim(substr($file, $pos+1), "~");
   3.179 +	if (isset($mime_types[$ext]))
   3.180  		return $mime_types[$ext];
   3.181 -	}
   3.182  	return $default_type;
   3.183  }
   3.184  
   3.185 +
   3.186 +
   3.187 +
   3.188  //$slitaz_style = (dirname($_SERVER["PHP_SELF"]) == '/');
   3.189  //$slitaz_style = ($_SERVER["SERVER_NAME"] == "mirror1.slitaz.org");
   3.190 -$slitaz_style = preg_match("/mirror1\.slitaz\./",$_SERVER["SERVER_NAME"]);
   3.191 +$slitaz_style = preg_match("/mirror1\.slitaz\./", $_SERVER["SERVER_NAME"]);
   3.192 +
   3.193  if ($slitaz_style) {
   3.194 +	// SliTaz Style
   3.195  	$modified = gmdate("D, d M Y H:i:s e", strtotime("-1 hour"));
   3.196 -	$expires = gmdate("D, d M Y H:i:s e", strtotime("+1 hour"));
   3.197 +	$expires  = gmdate("D, d M Y H:i:s e", strtotime("+1 hour"));
   3.198  	$fvalue = "";
   3.199 -	if (isset($_GET['f'])) $fvalue = 'value="'.$_GET['f'].'"';
   3.200 -	header("Expires: ".$expires);
   3.201 +	if (isset($_GET['f']))
   3.202 +		$fvalue = 'value="' . $_GET['f'] . '"';
   3.203 +	header("Expires: " . $expires);
   3.204  	header("Last-Modified: " . $modified);
   3.205  	header("Pragma: cache");
   3.206 -//	header("Cache-Control: public");
   3.207 -//	<meta http-equiv="cache-control" content="public" />
   3.208 -//	<meta http-equiv="last-modified" content="$modified" />
   3.209 -//	<meta http-equiv="expires" content="$expires" />
   3.210 -	print <<<EOT
   3.211 -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   3.212 -	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   3.213 -<html xml:lang="en" xmlns="http://www.w3.org/1999/xhtml" lang="en">
   3.214 +	//	header("Cache-Control: public");
   3.215 +	//	<meta http-equiv="cache-control" content="public" />
   3.216 +	//	<meta http-equiv="last-modified" content="$modified" />
   3.217 +	//	<meta http-equiv="expires" content="$expires" />
   3.218 +	?>
   3.219 +<!DOCTYPE html>
   3.220 +<html lang="en">
   3.221  <head>
   3.222  	<title>Index of /$vpath</title>
   3.223 -	<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
   3.224 -	<meta name="description" content="Index of /$vpath" />
   3.225 -	<meta name="robots" content="index, nofollow" />
   3.226 -	<meta name="author" content="SliTaz Contributors" />
   3.227 -	<link rel="shortcut icon" href="/static/favicon.ico" />
   3.228 -	<link rel="stylesheet" type="text/css" href="/static/slitaz.css" />
   3.229 -	<style type="text/css">
   3.230 -	#block { min-height: 160px; }
   3.231 -	div.list { background-color: white; padding-bottom: 14px; }
   3.232 -	th, td { font: 90% monospace; text-align: left; }
   3.233 -	th { font-weight: bold; padding-right: 14px; padding-bottom: 3px; }
   3.234 -	td { padding-right: 14px; }
   3.235 -	td.s, th.s { text-align: right; }
   3.236 -	</style>
   3.237 +	<meta charset="UTF-8">
   3.238 +	<meta name="description" content="Index of /$vpath">
   3.239 +	<meta name="robots" content="index, nofollow">
   3.240 +	<meta name="author" content="SliTaz Contributors">
   3.241 +	<meta name="viewport" content="width=device-width, initial-scale=1.0">
   3.242 +	<link rel="shortcut icon" href="/static/favicon.ico">
   3.243 +	<link rel="stylesheet" type="text/css" href="/static/slitaz.min.css">
   3.244  </head>
   3.245  <body>
   3.246  
   3.247 -<!-- Header -->
   3.248 -<div id="header">
   3.249 -	<div id="logo"></div>
   3.250 +<header>
   3.251 +	<h1><a href="http://mirror1.slitaz.org/">SliTaz Mirror</a></h1>
   3.252  	<div id="network">
   3.253 -		<a href="http://www.slitaz.org/">
   3.254 -			<img src="/static/home.png" alt="[ Home ]" /></a>
   3.255 +		<a class="home" href="http://www.slitaz.org/"></a>
   3.256  		<a href="http://scn.slitaz.org/">Community</a>
   3.257  		<a href="http://doc.slitaz.org/">Doc</a>
   3.258  		<a href="http://forum.slitaz.org/">Forum</a>
   3.259 @@ -195,41 +208,42 @@
   3.260  		<a href="http://hg.slitaz.org/?sort=lastchange">Hg</a>
   3.261  		<a href="http://cook.slitaz.org/">Cook</a>
   3.262  	</div>
   3.263 -	<h1><a href="http://mirror1.slitaz.org/">SliTaz Mirror</a></h1>
   3.264 -</div>
   3.265 +</header>
   3.266  
   3.267 -<!-- Block -->
   3.268 -<div id="block">
   3.269 +<div id="block"><div>
   3.270 +	<!-- Information/image -->
   3.271 +	<div id="block_info">
   3.272 +		<header>Welcome to Open Source!</header>
   3.273 +<?php
   3.274 +
   3.275 +	if (preg_match("/mirror1\.slitaz\./", $_SERVER["SERVER_NAME"]))
   3.276 +		{ ?>
   3.277 +		<p>This is the SliTaz GNU/Linux main mirror. The server runs naturally 
   3.278 +		SliTaz (stable) in an uml virtual machine provided by 
   3.279 +		<a href="http://www.ads-lu.com/">ADS</a> and is located in France.</p>
   3.280 +		<p><a href="/info/">Mirror info...</a></p>
   3.281 +<?php
   3.282 +	}
   3.283 +
   3.284 +	?>
   3.285 +		<form action="/" method="get">
   3.286 +			<input type="search" name="f"/>
   3.287 +		</form>
   3.288 +	</div>
   3.289  	<!-- Navigation -->
   3.290 -	<div id="block_nav">
   3.291 -		<h4>Online Tools</h4>
   3.292 +	<nav>
   3.293 +		<header>Online Tools</header>
   3.294  		<ul>
   3.295  			<li><a href="http://pizza.slitaz.me/">Live ISO Builder</a></li>
   3.296  			<li><a href="http://pizza.slitaz.org/">Live flavor Builder</a></li>
   3.297  			<li><a href="http://tiny.slitaz.org/">Tiny SliTaz Builder</a></li>
   3.298  			<li><a href="http://boot.slitaz.org/">Web Boot</a></li>
   3.299 +			<li><a href="http://web.archive.org/web/*/http://mirror.slitaz.org">WebArchive</a></li>
   3.300  		</ul>
   3.301 -	</div>
   3.302 -	<!-- Information/image -->
   3.303 -	<div id="block_info">
   3.304 -		<h4>Welcome to Open Source!</h4>
   3.305 -EOT;
   3.306 -	if (preg_match("/mirror1\.slitaz\./",$_SERVER["SERVER_NAME"])) print <<<EOT
   3.307 -		<p>This is the SliTaz GNU/Linux main mirror. The server runs naturally 
   3.308 -		SliTaz (stable) in an uml virtual machine provided by 
   3.309 -		<a href="http://www.ads-lu.com/">ADS</a> and is located in France.
   3.310 -		<a href="/info/">Mirror info...</a></p>
   3.311 -EOT;
   3.312 -	print <<<EOT
   3.313 -		<form action="${_SERVER["REQUEST_URI"]}" method="get" style="width: 300px;">
   3.314 -			<p><input type="text" name="f" $fvalue
   3.315 -				style="width: 260px;" /></p>
   3.316 -		</form>
   3.317 -	</div>
   3.318 -</div>
   3.319 +	</nav>
   3.320 +</div></div>
   3.321  
   3.322 -<!-- script type="text/javascript" src="/static/qrcode.js"></script -->
   3.323 -<script type="text/javascript">
   3.324 +<script>
   3.325  	function QRCodePNG(str, obj) {
   3.326  		try {
   3.327  			obj.height = obj.width += 200;
   3.328 @@ -237,7 +251,7 @@
   3.329  		}
   3.330  		catch (any) {
   3.331  			var element = document.createElement("script");
   3.332 -			element.src = "/static/qrcode.js";
   3.333 +			element.src = "/static/qrcode.min.js";
   3.334  			element.type ="text/javascript"; 
   3.335  			element.onload = function() {
   3.336  				obj.src = QRCode.generatePNG(str, {ecclevel: 'H'});
   3.337 @@ -245,189 +259,210 @@
   3.338  			document.body.appendChild(element);
   3.339  		}
   3.340  	}
   3.341 +
   3.342 +	document.documentElement.className += (("ontouchstart" in document.documentElement) ? ' touch' : ' no-touch');
   3.343  </script>
   3.344 -<div id="lang">
   3.345 -Path: /${vpath}
   3.346 -</div>
   3.347  
   3.348  <!-- Content -->
   3.349  <div id="content">
   3.350 +	<div id="mirrors">
   3.351 +<?php
   3.352  
   3.353 -<div id="mirrors">
   3.354 -<a href="http://web.archive.org/web/*/http://mirror.slitaz.org"><img
   3.355 - src="/static/network.png" alt="[ Mirrors ]" style="margin-right: 5px;" /></a>
   3.356 -EOT;
   3.357 +	// Mirror list
   3.358 +	$mirrors = array();
   3.359 +	$fp = @fopen(dirname($_SERVER["SCRIPT_FILENAME"]) . "/mirrors.html", "r");
   3.360 +	if ($fp) {
   3.361 +		// Parse mirrors.html
   3.362 +		while (($line = fgets($fp)) !== false) {
   3.363 +			// string /" is the end of mirrors url
   3.364 +			$fullline = str_replace('/"', "/" . $vpath . '"', $line);
   3.365 +			print $fullline;
   3.366 +		}
   3.367 +		fclose($fp);
   3.368 +	} else {
   3.369 +		$fp = @fopen(dirname($_SERVER["SCRIPT_FILENAME"]) . "/mirrors", "r");
   3.370 +		if ($fp) {
   3.371 +			while (($line = fgets($fp)) !== false) {
   3.372 +				$line = chop($line);
   3.373 +				$url = parse_url($line);
   3.374 +				if ($_SERVER["SERVER_NAME"] == $url['host'])
   3.375 +					continue;
   3.376 +				$host = explode('.', $url['host']);
   3.377 +				$mirrors[$host[count($host)-2] . "." .
   3.378 +				         $host[count($host)-1]] = $line;
   3.379 +			}
   3.380 +		}
   3.381 +		fclose($fp);
   3.382 +		foreach($mirrors as $name => $url) {
   3.383 +			print "<a href=\"$url$vpath\" title=\"$name mirror\">$name</a>\n";
   3.384 +		}
   3.385 +	}
   3.386  
   3.387 -// Mirror list
   3.388 -$mirrors = array();
   3.389 -$fp = @fopen(dirname($_SERVER["SCRIPT_FILENAME"])."/mirrors","r");
   3.390 -if ($fp) {
   3.391 -	while (($line = fgets($fp)) !== false) {
   3.392 -		$line = chop($line);
   3.393 -		$url = parse_url($line);
   3.394 -		if ($_SERVER["SERVER_NAME"] == $url['host']) continue;
   3.395 -		$host = explode('.',$url['host']);
   3.396 -		$mirrors[$host[count($host)-2].".".
   3.397 -		         $host[count($host)-1]] = $line;
   3.398 -	}
   3.399 -}
   3.400 -fclose($fp);
   3.401 -foreach($mirrors as $name => $url) {
   3.402 -	echo "<a href=\"$url$vpath\" title=\"$name mirror\">$name</a>\n";
   3.403 -}
   3.404 -echo "</div>";
   3.405 -}
   3.406 -else {
   3.407 +	print "</div>";
   3.408 +	// end SliTaz Style
   3.409 +} else {
   3.410 +	// not SliTaz Style
   3.411  
   3.412 -// Print the heading stuff
   3.413 -print "<?xml version='1.0' encoding='$encoding'?>
   3.414 +	// Print the heading stuff
   3.415 +	print "<?xml version='1.0' encoding='$encoding'?>
   3.416  <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.1//EN' 'http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd'>
   3.417  <html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en'>
   3.418  	<head>
   3.419 -		<title>Index of /" .$vpath. "</title>
   3.420 +		<title>Index of /$vpath</title>
   3.421  ";
   3.422 -if ($external_css != '') {
   3.423 -print "	<link rel='stylesheet' type='text/css' href='".$external_css."' />
   3.424 +	if ($external_css != '') {
   3.425 +		print "	<link rel='stylesheet' type='text/css' href='$external_css' />";
   3.426 +	} else {
   3.427 +		print "<style type='text/css'>
   3.428 +	a, a:active {text-decoration: none; color: blue;}
   3.429 +	a:visited {color: #48468F;}
   3.430 +	a:hover, a:focus {text-decoration: underline; color: red;}
   3.431 +	body {background-color: #F5F5F5;}
   3.432 +	h2 {margin-bottom: 12px;}
   3.433 +	table {margin-left: 12px;}
   3.434 +	th, td {font: 90% monospace; text-align: left;}
   3.435 +	th {font-weight: bold; padding-right: 14px; padding-bottom: 3px;}
   3.436 +	td {padding-right: 14px;}
   3.437 +	td.s, th.s {text-align: right;}
   3.438 +	div.list {background-color: white; border-top: 1px solid #646464; border-bottom: 1px solid #646464; padding-top: 10px; padding-bottom: 14px;}
   3.439 +	div.foot { font: 90% monospace; color: #787878; padding-top: 4px;}
   3.440 +</style>
   3.441  ";
   3.442 -}
   3.443 -else {
   3.444 -print " <style type='text/css'>
   3.445 -		a, a:active {text-decoration: none; color: blue;}
   3.446 -		a:visited {color: #48468F;}
   3.447 -		a:hover, a:focus {text-decoration: underline; color: red;}
   3.448 -		body {background-color: #F5F5F5;}
   3.449 -		h2 {margin-bottom: 12px;}
   3.450 -		table {margin-left: 12px;}
   3.451 -		th, td { font: 90% monospace; text-align: left;}
   3.452 -		th { font-weight: bold; padding-right: 14px; padding-bottom: 3px;}
   3.453 -		td {padding-right: 14px;}
   3.454 -		td.s, th.s {text-align: right;}
   3.455 -		div.list { background-color: white; border-top: 1px solid #646464; border-bottom: 1px solid #646464; padding-top: 10px; padding-bottom: 14px;}
   3.456 -		div.foot { font: 90% monospace; color: #787878; padding-top: 4px;}
   3.457 -		</style>
   3.458 +	}
   3.459 +
   3.460 +	print "	</head>
   3.461 +	<body>
   3.462 +		<h2>Index of /$vpath</h2>
   3.463  ";
   3.464 -}
   3.465 -print "	</head>
   3.466 -	<body>
   3.467 -	<h2>Index of /" . $vpath ."</h2>
   3.468 -";
   3.469 +	// end not SliTaz Style
   3.470  }
   3.471  
   3.472 +
   3.473 +
   3.474 +
   3.475  print "	<div class='list'>
   3.476 -	<table summary='Directory Listing' cellpadding='0' cellspacing='0'>
   3.477 -";
   3.478 +		<div id='lang'>Path: /$vpath</div>
   3.479 +		<table>";
   3.480  
   3.481 -function my_is_file($path)	// 2G+ file support
   3.482 -{
   3.483 -	exec("[ -f '".$path."' ]", $tmp, $ret);
   3.484 +
   3.485 +function my_is_file($path) {
   3.486 +	// 2G+ file support
   3.487 +	exec("[ -f '" . $path . "' ]", $tmp, $ret);
   3.488  	return $ret == 0;
   3.489 -//return is_file($path);
   3.490 +	//return is_file($path);
   3.491  }
   3.492  
   3.493 -function my_filesize($path)	// 2G+ file support
   3.494 -{
   3.495 -	return rtrim(shell_exec("stat -Lc %s '".$path."'"));
   3.496 -//return filesize($path);
   3.497 +
   3.498 +function my_filesize($path) {
   3.499 +	// 2G+ file support
   3.500 +	return rtrim(shell_exec("stat -Lc %s '" . $path . "'"));
   3.501 +	//return filesize($path);
   3.502  }
   3.503  
   3.504 -function my_filemtime($path)	// 2G+ file support
   3.505 -{
   3.506 -	return rtrim(shell_exec("stat -Lc %Y '".$path."'"));
   3.507 -//return filemtime($path);
   3.508 +
   3.509 +function my_filemtime($path) {
   3.510 +	// 2G+ file support
   3.511 +	return rtrim(shell_exec("stat -Lc %Y '" . $path . "'"));
   3.512 +	//return filemtime($path);
   3.513  }
   3.514  
   3.515 -function my_filemtimeasc($path)	// 2G+ file support
   3.516 -{
   3.517 -	return rtrim(shell_exec("LC_ALL=C date -r '".$path."' '+%Y-%b-%d %H:%M:%S'"));
   3.518 -//return date('Y-M-d H:m:s', filemtime($path));
   3.519 +
   3.520 +function my_filemtimeasc($path) {
   3.521 +	// 2G+ file support
   3.522 +	return rtrim(shell_exec("LC_ALL=C date -r '" . $path . "' '+%Y-%b-%d %H:%M:%S'"));
   3.523 +	//return date('Y-M-d H:m:s', filemtime($path));
   3.524  }
   3.525  
   3.526 -if (filesize($path."/.folderlist") > 0 && filesize($path."/.filelist") > 0 &&
   3.527 -    filemtime($path."/.filelist") > filemtime($path)) {
   3.528 -	$folderlist = unserialize(file_get_contents($path."/.folderlist"));
   3.529 -	$filelist = unserialize(file_get_contents($path."/.filelist"));
   3.530 -}
   3.531 -else {
   3.532  
   3.533 -proc_nice(10);
   3.534 -// Get all of the folders and files. 
   3.535 -$folderlist = array();
   3.536 -$filelist = array();
   3.537 -if($handle = @opendir($path)) {
   3.538 -	while(($item = readdir($handle)) !== false) {
   3.539 -		if ($item == "index.php") continue;
   3.540 -		if ($item == ".folderlist") continue;
   3.541 -		if ($item == ".filelist") continue;
   3.542 -		if ($item == "dir-generator.php") continue;
   3.543 -		if ($item == "robots.txt") continue;
   3.544 -		if ($item == "humans.txt") continue;
   3.545 -		if(is_dir($path.'/'.$item) and $item != '.' and $item != '..') {
   3.546 -			$folderlist[] = array(
   3.547 -				'name' => $item, 
   3.548 -				'size' => 0, 
   3.549 -				'modtime'=> filemtime($path.'/'.$item),
   3.550 -				'modtimeasc'=> my_filemtimeasc($path.'/'.$item),
   3.551 -				'file_type' => "Directory"
   3.552 -			);
   3.553 +if (filesize($path . "/.folderlist") > 0 &&
   3.554 +	filesize($path . "/.filelist") > 0 &&
   3.555 +	filemtime($path . "/.filelist") > filemtime($path)) {
   3.556 +	$folderlist = unserialize(file_get_contents($path . "/.folderlist"));
   3.557 +	$filelist   = unserialize(file_get_contents($path . "/.filelist"));
   3.558 +} else {
   3.559 +
   3.560 +	proc_nice(10);
   3.561 +	// Get all of the folders and files.
   3.562 +	$folderlist = array();
   3.563 +	$filelist = array();
   3.564 +	if($handle = @opendir($path)) {
   3.565 +		while(($item = readdir($handle)) !== false) {
   3.566 +			if ($item == "index.php")			continue;
   3.567 +			if ($item == ".folderlist")			continue;
   3.568 +			if ($item == ".filelist")			continue;
   3.569 +			if ($item == "dir-generator.php")	continue;
   3.570 +			if ($item == "robots.txt")			continue;
   3.571 +			if ($item == "humans.txt")			continue;
   3.572 +			if ($item == "mirrors.html")		continue;
   3.573 +			if (is_dir($path.'/'.$item) and $item != '.' and $item != '..') {
   3.574 +				$folderlist[] = array(
   3.575 +					'name' => $item,
   3.576 +					'size' => 0,
   3.577 +					'modtime'=> filemtime($path . '/' . $item),
   3.578 +					'modtimeasc'=> my_filemtimeasc($path . '/' . $item),
   3.579 +					'file_type' => "Directory"
   3.580 +				);
   3.581 +			} elseif (my_is_file($path . '/' . $item)) {
   3.582 +				if (!$show_hidden_files) {
   3.583 +					if (substr($item, 0, 1) == "." or substr($item, -1) == "~")
   3.584 +						continue;
   3.585 +				}
   3.586 +				$filelist[] = array(
   3.587 +					'name'=> $item,
   3.588 +					'size'=> my_filesize($path . '/' . $item),
   3.589 +					'modtime'=> my_filemtime($path . '/' . $item),
   3.590 +					'modtimeasc'=> my_filemtimeasc($path . '/' . $item),
   3.591 +					'file_type' => get_file_type($path . '/' . $item)
   3.592 +				);
   3.593 +			}
   3.594  		}
   3.595 -		elseif(my_is_file($path.'/'.$item)) {
   3.596 -			if(!$show_hidden_files) {
   3.597 -				if(substr($item, 0, 1) == "." or substr($item, -1) == "~") {
   3.598 -					continue;
   3.599 -				}
   3.600 -			}
   3.601 -			$filelist[] = array(
   3.602 -				'name'=> $item, 
   3.603 -				'size'=> my_filesize($path.'/'.$item), 
   3.604 -				'modtime'=> my_filemtime($path.'/'.$item),
   3.605 -				'modtimeasc'=> my_filemtimeasc($path.'/'.$item),
   3.606 -				'file_type' => get_file_type($path.'/'.$item)
   3.607 -			);
   3.608 -		}
   3.609 +		closedir($handle);
   3.610 +		file_put_contents($path . "/.folderlist", serialize($folderlist), LOCK_EX);
   3.611 +		file_put_contents($path . "/.filelist", serialize($filelist), LOCK_EX);
   3.612  	}
   3.613 -	closedir($handle);
   3.614 -	file_put_contents($path."/.folderlist",serialize($folderlist),LOCK_EX);
   3.615 -	file_put_contents($path."/.filelist",serialize($filelist),LOCK_EX);
   3.616 -}
   3.617  }
   3.618  
   3.619  if (isset($_GET['f'])) {
   3.620  	$filter = $_GET['f'];
   3.621 -	if (substr($filter,0,1) != '/')
   3.622 -		$filter = '/'.$filter.'/i';
   3.623 +	if (substr($filter, 0, 1) != '/')
   3.624 +		$filter = '/' . $filter . '/i';
   3.625  	foreach ($filelist as $key => $value)
   3.626 -		if (!preg_match($filter,$value['name']))
   3.627 +		if (!preg_match($filter, $value['name']))
   3.628  			unset($filelist[$key]);
   3.629  	foreach ($folderlist as $key => $value)
   3.630 -		if (!preg_match($filter,$value['name']))
   3.631 +		if (!preg_match($filter, $value['name']))
   3.632  			unset($folderlist[$key]);
   3.633  }
   3.634  
   3.635 -if(!isset($_GET['s'])) {
   3.636 +if (!isset($_GET['s']))
   3.637  	$_GET['s'] = 'name';
   3.638 -}
   3.639 +
   3.640  
   3.641  // Figure out what to sort files by
   3.642  $file_order_by = array();
   3.643 -foreach ($filelist as $key=>$row) {
   3.644 -    $file_order_by[$key]  = $row[$_GET['s']];
   3.645 -}
   3.646 +foreach ($filelist as $key => $row)
   3.647 +	$file_order_by[$key] = $row[$_GET['s']];
   3.648 +
   3.649  
   3.650  // Figure out what to sort folders by
   3.651  $folder_order_by = array();
   3.652 -foreach ($folderlist as $key=>$row) {
   3.653 -    $folder_order_by[$key]  = $row[$_GET['s']];
   3.654 -}
   3.655 +foreach ($folderlist as $key => $row)
   3.656 +	$folder_order_by[$key] = $row[$_GET['s']];
   3.657 +
   3.658  
   3.659  // Order the files and folders
   3.660  $sort_type = SORT_ASC;
   3.661  $order = "&amp;o=d";
   3.662 -if(isset($_GET['o'])) {
   3.663 +if (isset($_GET['o'])) {
   3.664  	$sort_type = SORT_DESC;
   3.665  	$order = "";
   3.666  }
   3.667  array_multisort($folder_order_by, $sort_type, $folderlist);
   3.668 -array_multisort($file_order_by, $sort_type, $filelist);
   3.669 +array_multisort($file_order_by,   $sort_type, $filelist);
   3.670 +
   3.671 +
   3.672 +// Table caption: number of folders and files
   3.673 +print "<caption>" . count($folderlist) . " folders and " . count($filelist) . " files.</caption>";
   3.674  
   3.675  
   3.676  // Show sort methods
   3.677 @@ -437,102 +472,127 @@
   3.678  $sort_methods['name'] = "Name";
   3.679  $sort_methods['modtime'] = "Last Modified";
   3.680  $sort_methods['size'] = "Size";
   3.681 -$sort_methods['file_type'] = "Type";
   3.682  
   3.683 -foreach($sort_methods as $key=>$item) {
   3.684 -	if ($_GET['s'] == $key) $key = "$key$order";
   3.685 -	print "<th class='n'><a href='?s=$key'>$item</a></th>";
   3.686 +foreach($sort_methods as $key => $item) {
   3.687 +	if ($_GET['s'] == $key)
   3.688 +		$key = "$key$order";
   3.689 +	print "<th><a href='?s=$key'>$item</a></th>";
   3.690  }
   3.691  print "</tr></thead>\n<tbody>\n";
   3.692  
   3.693  
   3.694  
   3.695 +
   3.696  // Parent directory link
   3.697 -if($path != "./") {
   3.698 -	print "<tr><td class='n'><a href='..'>Parent Directory</a>/</td>";
   3.699 -	print "<td class='m'>&nbsp;</td>";
   3.700 -	print "<td class='s'>- &nbsp;</td>";
   3.701 -	print "<td class='t'>Directory</td></tr>\n";
   3.702 -}
   3.703 +if ($path != "./")
   3.704 +	print "<tr><td class='up'><a href='..'>Parent Directory</a>/</td>" .
   3.705 +		"<td>&nbsp;</td>" .
   3.706 +		"<td>- &nbsp;</td></tr>\n";
   3.707 +
   3.708  
   3.709  
   3.710  
   3.711  // Print folder information
   3.712 -foreach($folderlist as $folder) {
   3.713 -	print "<tr><td class='n'><a href='" . addslashes($folder['name']). "'>" .htmlentities($folder['name']). "</a>/</td>";
   3.714 -	print "<td class='m'>" . $folder['modtimeasc'] . "</td>";
   3.715 -	print "<td class='s'>- &nbsp;</td>";
   3.716 -	print "<td class='t'>" . $folder['file_type']                    . "</td></tr>\n";
   3.717 -}
   3.718 +foreach($folderlist as $folder)
   3.719 +	print "<tr><td class='dir'><a href='" . addslashes($folder['name']). "'>" .
   3.720 +		htmlentities($folder['name']) . "</a>/</td>" .
   3.721 +		"<td" . $folder['modtimeasc'] . "</td>" .
   3.722 +		"<td>- &nbsp;</td></tr>\n";
   3.723 +
   3.724  
   3.725  
   3.726  // Print file information
   3.727  foreach($filelist as $file) {
   3.728  	$url = addslashes($file['name']);
   3.729 -	print "<tr><td class='n'><a href='$url'>" .htmlentities($file['name']). "</a></td>";
   3.730 -	print "<td class='m'>" . $file['modtimeasc'] .
   3.731 -		" <img src=\"/static/qr.png\" alt=\"@\" onmouseover=" .
   3.732 -		"\"this.title = location.href+'$url'\" onclick=" .
   3.733 -		"\"this.src = QRCodePNG(location.href+'$url', this) \"/></td>";
   3.734 -	print "<td class='s'>" . format_bytes($file['size']) . "</td>";
   3.735 -	print "<td class='t'>" . $file['file_type'] . "</td></tr>\n";
   3.736 +
   3.737 +	if (preg_match('/\.tazpkg$/', $file))
   3.738 +		$class = "pkg";
   3.739 +	elseif (preg_match('/\.iso$/', $file))
   3.740 +		$class = "iso";
   3.741 +	elseif (preg_match('/\.(exe|com)$/', $file))
   3.742 +		$class = "exe";
   3.743 +	elseif (preg_match('/^README$/', $file))
   3.744 +		$class = "rme";
   3.745 +	elseif (preg_match('/^bzImage$/', $file))
   3.746 +		$class = "krn";
   3.747 +	elseif (preg_match('/\.zip$/', $file))
   3.748 +		$class = "zip";
   3.749 +	elseif (preg_match('/\.log$/', $file))
   3.750 +		$class = "log";
   3.751 +	else {
   3.752 +		$classes = explode('/', $file['file_type']);
   3.753 +		$class = $classes[1];
   3.754 +	}
   3.755 +
   3.756 +
   3.757 +	print "<tr><td class='$class'><a href='$url'>" . htmlentities($file['name']) . "</a></td>" .
   3.758 +		"<td>" . $file['modtimeasc'] .
   3.759 +		" <img src='/static/qr.png' alt='#' " .
   3.760 +		"onmouseover=\"this.title = location.href+'$url'\" " .
   3.761 +		"onclick=\"this.src = QRCodePNG(location.href+'$url', this)\"/></td>" .
   3.762 +		"<td>" . format_bytes($file['size']) . "</td></tr>\n";
   3.763  }
   3.764  
   3.765  // Print ending stuff
   3.766 -$soft = explode('/',$_SERVER["SERVER_SOFTWARE"]);
   3.767 -$tag = get_conf('server.tag','"','"',$soft[0].' &lt;'.$soft[1].'&gt;');
   3.768 -print "</tbody>
   3.769 +print "		</tbody>
   3.770  	</table>
   3.771 -	".count($folderlist)." folders and ".count($filelist)." files.</div>";
   3.772 -if (filesize($path."/README")) {
   3.773 -	echo "<pre>\n";
   3.774 -	echo preg_replace('!(((f|ht)tp(s)?://)[-a-zA-Z()0-9@:%_+.~#?&;//=]+)!i',
   3.775 -		 '<a href="$1">$1</a>', file_get_contents($path."/README"));
   3.776 -	echo "</pre>\n";
   3.777 -}
   3.778 +</div>";
   3.779  
   3.780 -if ($slitaz_style) { ?>
   3.781 +$soft = explode('/', $_SERVER["SERVER_SOFTWARE"]);
   3.782 +$tag = get_conf('server.tag', '"', '"', $soft[0] . ' &lt;' . $soft[1] . '&gt;');
   3.783 +
   3.784 +
   3.785 +if (filesize($path . "/README"))
   3.786 +	print "<pre>" .
   3.787 +		preg_replace('!(((f|ht)tp(s)?://)[-a-zA-Z()0-9@:%_+.~#?&;//=]+)!i',
   3.788 +			'<a href="$1">$1</a>', file_get_contents($path . "/README")) .
   3.789 +		"</pre>\n";
   3.790 +
   3.791 +
   3.792 +
   3.793 +if ($slitaz_style) {
   3.794 +	// SliTaz Style
   3.795 +?>
   3.796  
   3.797  <!-- End of content -->
   3.798  </div>
   3.799  
   3.800 -<!-- Footer -->
   3.801 -<div id="footer">
   3.802 -	Copyright &copy; <span class="year"></span>
   3.803 -	<a href="http://www.slitaz.org/">SliTaz</a> - Network:
   3.804 -	<a href="http://scn.slitaz.org/">Community</a>
   3.805 -	<a href="http://doc.slitaz.org/">Doc</a>
   3.806 -	<a href="http://forum.slitaz.org/">Forum</a>
   3.807 -	<a href="http://pkgs.slitaz.org/">Packages</a>
   3.808 -	<a href="http://bugs.slitaz.org">Bugs</a>
   3.809 -	<a href="http://hg.slitaz.org/?sort=lastchange">Hg</a>
   3.810 -	<p>
   3.811 -		<img src="/static/qr.png" alt="#" onmouseover="this.title = location.href"
   3.812 -		 onclick="this.src = QRCodePNG(location.href, this)" />
   3.813 -		SliTaz @	 
   3.814 +<footer>
   3.815 +	<p>Copyright &copy; <span class="year"></span> <a href="http://www.slitaz.org/">SliTaz</a></p>
   3.816 +	<p>Network:
   3.817 +		<a href="http://scn.slitaz.org/">Community</a>
   3.818 +		<a href="http://doc.slitaz.org/">Doc</a>
   3.819 +		<a href="http://forum.slitaz.org/">Forum</a>
   3.820 +		<a href="http://pkgs.slitaz.org/">Packages</a>
   3.821 +		<a href="http://bugs.slitaz.org">Bugs</a>
   3.822 +		<a href="http://hg.slitaz.org/?sort=lastchange">Hg</a>
   3.823 +	</p>
   3.824 +	<p>SliTaz @
   3.825  		<a href="http://twitter.com/slitaz">Twitter</a>
   3.826  		<a href="http://www.facebook.com/slitaz">Facebook</a>
   3.827  		<a href="http://distrowatch.com/slitaz">Distrowatch</a>
   3.828  		<a href="http://en.wikipedia.org/wiki/SliTaz">Wikipedia</a>
   3.829  		<a href="http://flattr.com/profile/slitaz">Flattr</a>
   3.830  	</p>
   3.831 -	<p>
   3.832 -		<a href="http://validator.w3.org/check?uri=referer">
   3.833 -			<img src="/static/xhtml10.png" 
   3.834 -			     alt="Valid XHTML 1.0" title="Valid XHTML 1.0 Transitional"
   3.835 -			     style="width: 80px; height: 15px;" /></a>
   3.836 -	</p>
   3.837 -</div>
   3.838 +	<img src="static/qr.png" alt="#" onmouseover="this.title = location.href"
   3.839 +			onclick="this.src = QRCodePNG(location.href, this)" />
   3.840 +</footer>
   3.841  
   3.842 -<?php }
   3.843 -else print "
   3.844 -	<form action='".$_SERVER["REQUEST_URI"]."' method='get'>
   3.845 -	<div class='foot'>".$tag."
   3.846 -		<input type='text' name='f'/>
   3.847 -		<!-- <input type='submit' value='Filter' /> -->
   3.848 -	</div>
   3.849 +<?php
   3.850 +	// end SliTaz Style
   3.851 +} else {
   3.852 +	// not SliTaz Style
   3.853 +	print "
   3.854 +	<form action='" . $_SERVER["REQUEST_URI"] . "' method='get'>
   3.855 +		<div class='foot'>" . $tag . "
   3.856 +			<input type='text' name='f'/>
   3.857 +			<!-- <input type='submit' value='Filter' /> -->
   3.858 +		</div>
   3.859  	</form>
   3.860  ";
   3.861 +	// end not SliTaz Style
   3.862 +}
   3.863 +
   3.864  print "</body>
   3.865  	</html>";
   3.866  ?>
     4.1 --- a/mirror/root/mirrors	Sat Sep 19 16:15:43 2015 +0200
     4.2 +++ b/mirror/root/mirrors	Fri Oct 02 01:31:59 2015 +0300
     4.3 @@ -5,14 +5,20 @@
     4.4  ftp://ftp.gtlib.gatech.edu/pub/slitaz/
     4.5  http://download.tuxfamily.org/slitaz/
     4.6  ftp://download.tuxfamily.org/slitaz/
     4.7 -http://mirror.lupaworld.com/slitaz/
     4.8  http://slitaz.c3sl.ufpr.br/
     4.9  ftp://slitaz.c3sl.ufpr.br/slitaz/
    4.10  http://slitaz.mirror.garr.it/mirrors/slitaz/
    4.11  ftp://slitaz.mirror.garr.it/mirrors/slitaz/
    4.12 -ftp://ftp.pina.si/slitaz/
    4.13 -http://distro.ibiblio.org/pub/linux/distributions/slitaz/
    4.14 -http://ftp.ch.xemacs.org/ftp/pool/4/mirror/slitaz/
    4.15 -ftp://ftp.ch.xemacs.org//pool/4/mirror/slitaz/
    4.16 +http://distro.ibiblio.org/slitaz/
    4.17 +ftp://distro.ibiblio.org/slitaz/
    4.18  http://mirror.clarkson.edu/slitaz/
    4.19 -http://slitaz.balinor.net/
    4.20 +http://malibu.tuxfamily.net/slitaz/
    4.21 +ftp://malibu.tuxfamily.net/slitaz/
    4.22 +http://ftp.uni-stuttgart.de/slitaz/
    4.23 +ftp://ftp.uni-stuttgart.de/slitaz/
    4.24 +ftp://fb04272.mathematik.tu-darmstadt.de/pub/linux/distributions/slitaz/
    4.25 +ftp://linux.mathematik.tu-darmstadt.de/pub/linux/distributions/misc/slitaz/
    4.26 +ftp://ftp.rz.uni-kiel.de/pub2/linux/slitaz/
    4.27 +ftp://ftp.icm.edu.pl/vol/rzm5/linux-ibiblio/distributions/slitaz/
    4.28 +ftp://ftp.br.debian.org/slitaz/
    4.29 +ftp://opensuse.c3sl.ufpr.br/slitaz/
     5.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     5.2 +++ b/mirror/root/mirrors.html	Fri Oct 02 01:31:59 2015 +0300
     5.3 @@ -0,0 +1,13 @@
     5.4 +<a class="fr" href="http://mirror.slitaz.org/" title="slitaz.org mirror">slitaz.org</a>
     5.5 +<a class="fr" href="http://malibu.tuxfamily.net/slitaz/" title="TuxFamily mirror">tuxfamily.net</a>
     5.6 +<a class="us" href="http://www.gtlib.gatech.edu/pub/slitaz/" title="Georgia Tech Software Library (GTlib) mirror">gatech.edu</a>
     5.7 +<a class="us" href="http://mirror.clarkson.edu/slitaz/" title="Clarkson University mirror">clarkson.edu</a>
     5.8 +<a class="de ftp" href="http://ftp.uni-stuttgart.de/slitaz/" title="University of Stuttgart mirror">uni-stuttgart.de</a>
     5.9 +<a class="ch" href="http://mirror.switch.ch/ftp/mirror/slitaz/" title="Swiss academia mirror">switch.ch</a>
    5.10 +<a class="de" href="ftp://linux.mathematik.tu-darmstadt.de/pub/linux/distributions/misc/slitaz/" title="Technische Universität Darmstadt mirror">tu-darmstadt.de</a>
    5.11 +<a class="de" href="ftp://ftp.rz.uni-kiel.de/pub2/linux/slitaz/" title="Kiel University mirror">uni-kiel.de</a>
    5.12 +<a class="us" href="http://distro.ibiblio.org/slitaz/" title="University of North Carolina mirror">ibiblio.org</a>
    5.13 +<a class="it" href="ftp://slitaz.mirror.garr.it/mirrors/slitaz/" title="Italian Research &amp; Education Network (NREN) mirror">garr.it</a>
    5.14 +<a class="pl" href="ftp://ftp.icm.edu.pl/vol/rzm5/linux-ibiblio/distributions/slitaz/" title="University of Warsaw mirror">icm.edu.pl</a>
    5.15 +<a class="br" href="http://slitaz.c3sl.ufpr.br/" title="Federal University of Paraná (UFPR) mirror">ufpr.br</a>
    5.16 +<a class="fr" href="http://download.tuxfamily.org/slitaz/" title="TuxFamily mirror">tuxfamily.org</a>
     6.1 Binary file mirror/root/static/BR.png has changed
     7.1 Binary file mirror/root/static/CH.png has changed
     8.1 Binary file mirror/root/static/DE.png has changed
     9.1 Binary file mirror/root/static/FR.png has changed
    10.1 Binary file mirror/root/static/IT.png has changed
    11.1 Binary file mirror/root/static/PL.png has changed
    12.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    12.2 +++ b/mirror/root/static/README	Fri Oct 02 01:31:59 2015 +0300
    12.3 @@ -0,0 +1,80 @@
    12.4 +--------------------------------------------------------------------------------
    12.5 +
    12.6 +Countries flags by Go Squared:
    12.7 +
    12.8 +  * BR.png
    12.9 +  * CH.png
   12.10 +  * DE.png
   12.11 +  * FR.png
   12.12 +  * IT.png
   12.13 +  * PL.png
   12.14 +  * US.png
   12.15 +
   12.16 +Copyright (c) 2013 Go Squared Ltd. http://www.gosquared.com/
   12.17 +
   12.18 +Permission is hereby granted, free of charge, to any person obtaining a copy of
   12.19 +this software and associated documentation files (the "Software"), to deal in
   12.20 +the Software without restriction, including without limitation the rights to
   12.21 +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
   12.22 +the Software, and to permit persons to whom the Software is furnished to do so,
   12.23 +subject to the following conditions:
   12.24 +
   12.25 +The above copyright notice and this permission notice shall be included in all
   12.26 +copies or substantial portions of the Software.
   12.27 +
   12.28 +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
   12.29 +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
   12.30 +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
   12.31 +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
   12.32 +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
   12.33 +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
   12.34 +
   12.35 +--------------------------------------------------------------------------------
   12.36 +
   12.37 +MIME Types icons from Faenza icon theme:
   12.38 +
   12.39 +  * application-octet-stream.png
   12.40 +  * application-x-bittorrent.png
   12.41 +  * application-x-bzip.png
   12.42 +  * application-x-cd-image.png
   12.43 +  * application-x-executable.png
   12.44 +  * application-x-gzip.png
   12.45 +  * application-x-ms-dos-executable.png
   12.46 +  * application-zip.png
   12.47 +  * folder.png
   12.48 +  * go-up.png
   12.49 +  * home.png
   12.50 +  * package-x-generic.png
   12.51 +  * text-plain.png
   12.52 +  * text-x-changelog.png
   12.53 +  * text-x-readme.png
   12.54 +
   12.55 +Copyright (c) 2010 Matthieu James <matthieu.james@gmail.com> GPL-3+
   12.56 +
   12.57 +--------------------------------------------------------------------------------
   12.58 +
   12.59 +qrcode.js -- QR code generator in Javascript (revision 2011-01-19)
   12.60 +Written by Kang Seonghoon <public+qrjs@mearie.org>.
   12.61 +
   12.62 +This source code is in the public domain; if your jurisdiction does not
   12.63 +recognize the public domain the terms of Creative Commons CC0 license apply. In
   12.64 +the other words, you can always do what you want.
   12.65 +
   12.66 +--------------------------------------------------------------------------------
   12.67 +
   12.68 +SliTaz Contributors commits:
   12.69 +
   12.70 +  * favicon.ico
   12.71 +  * logo.png
   12.72 +  * qr.png
   12.73 +  * slitaz.css
   12.74 +
   12.75 +--------------------------------------------------------------------------------
   12.76 +
   12.77 +Minified script and styles using tools from
   12.78 +"Free Online Tools For Developers"(http://www.freeformatter.com/)
   12.79 +
   12.80 +  * qrcode.min.js
   12.81 +  * slitaz.min.css
   12.82 +
   12.83 +--------------------------------------------------------------------------------
    13.1 Binary file mirror/root/static/US.png has changed
    14.1 Binary file mirror/root/static/application-octet-stream.png has changed
    15.1 Binary file mirror/root/static/application-x-bittorrent.png has changed
    16.1 Binary file mirror/root/static/application-x-bzip.png has changed
    17.1 Binary file mirror/root/static/application-x-cd-image.png has changed
    18.1 Binary file mirror/root/static/application-x-executable.png has changed
    19.1 Binary file mirror/root/static/application-x-gzip.png has changed
    20.1 Binary file mirror/root/static/application-x-ms-dos-executable.png has changed
    21.1 Binary file mirror/root/static/application-zip.png has changed
    22.1 Binary file mirror/root/static/folder.png has changed
    23.1 Binary file mirror/root/static/go-up.png has changed
    24.1 Binary file mirror/root/static/help.png has changed
    25.1 Binary file mirror/root/static/home.png has changed
    26.1 Binary file mirror/root/static/logo.png has changed
    27.1 Binary file mirror/root/static/mime/Directory has changed
    28.1 Binary file mirror/root/static/mime/application_octet-stream has changed
    29.1 Binary file mirror/root/static/mime/file_fd has changed
    30.1 Binary file mirror/root/static/mime/file_iso has changed
    31.1 Binary file mirror/root/static/mime/file_md5 has changed
    32.1 Binary file mirror/root/static/mime/file_tar.gz has changed
    33.1 Binary file mirror/root/static/mime/file_tazpkg has changed
    34.1 Binary file mirror/root/static/mime/text_plain has changed
    35.1 Binary file mirror/root/static/network.png has changed
    36.1 Binary file mirror/root/static/package-x-generic.png has changed
    37.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    37.2 +++ b/mirror/root/static/qrcode.min.js	Fri Oct 02 01:31:59 2015 +0300
    37.3 @@ -0,0 +1,1 @@
    37.4 +var QRCode=(function(){var V=[null,[[10,7,17,13],[1,1,1,1],[]],[[16,10,28,22],[1,1,1,1],[4,16]],[[26,15,22,18],[1,1,2,2],[4,20]],[[18,20,16,26],[2,1,4,2],[4,24]],[[24,26,22,18],[2,1,4,4],[4,28]],[[16,18,28,24],[4,2,4,4],[4,32]],[[18,20,26,18],[4,2,5,6],[4,20,36]],[[22,24,26,22],[4,2,6,6],[4,22,40]],[[22,30,24,20],[5,2,8,8],[4,24,44]],[[26,18,28,24],[5,4,8,8],[4,26,48]],[[30,20,24,28],[5,4,11,8],[4,28,52]],[[22,24,28,26],[8,4,11,10],[4,30,56]],[[22,26,22,24],[9,4,16,12],[4,32,60]],[[24,30,24,20],[9,4,16,16],[4,24,44,64]],[[24,22,24,30],[10,6,18,12],[4,24,46,68]],[[28,24,30,24],[10,6,16,17],[4,24,48,72]],[[28,28,28,28],[11,6,19,16],[4,28,52,76]],[[26,30,28,28],[13,6,21,18],[4,28,54,80]],[[26,28,26,26],[14,7,25,21],[4,28,56,84]],[[26,28,28,30],[16,8,25,20],[4,32,60,88]],[[26,28,30,28],[17,8,25,23],[4,26,48,70,92]],[[28,28,24,30],[17,9,34,23],[4,24,48,72,96]],[[28,30,30,30],[18,9,30,25],[4,28,52,76,100]],[[28,30,30,30],[20,10,32,27],[4,26,52,78,104]],[[28,26,30,30],[21,12,35,29],[4,30,56,82,108]],[[28,28,30,28],[23,12,37,34],[4,28,56,84,112]],[[28,30,30,30],[25,12,40,34],[4,32,60,88,116]],[[28,30,30,30],[26,13,42,35],[4,24,48,72,96,120]],[[28,30,30,30],[28,14,45,38],[4,28,52,76,100,124]],[[28,30,30,30],[29,15,48,40],[4,24,50,76,102,128]],[[28,30,30,30],[31,16,51,43],[4,28,54,80,106,132]],[[28,30,30,30],[33,17,54,45],[4,32,58,84,110,136]],[[28,30,30,30],[35,18,57,48],[4,28,56,84,112,140]],[[28,30,30,30],[37,19,60,51],[4,32,60,88,116,144]],[[28,30,30,30],[38,19,63,53],[4,28,52,76,100,124,148]],[[28,30,30,30],[40,20,66,56],[4,22,48,74,100,126,152]],[[28,30,30,30],[43,21,70,59],[4,26,52,78,104,130,156]],[[28,30,30,30],[45,22,74,62],[4,30,56,82,108,134,160]],[[28,30,30,30],[47,24,77,65],[4,24,52,80,108,136,164]],[[28,30,30,30],[49,25,81,68],[4,28,56,84,112,140,168]]];var l=0;var o=1,U=2,R=4,y=8;var G=/^\d*$/;var E=/^[A-Za-z0-9 $%*+\-./:]*$/;var t=/^[A-Z0-9 $%*+\-./:]*$/;var h=1,g=0,c=3,n=2;var B=[],Q=[-1];for(var P=0,H=1;P<255;++P){B.push(H);Q[H]=P;H=(H*2)^(H>=128?285:0)}var m=[[]];for(var P=0;P<30;++P){var D=m[P],F=[];for(var O=0;O<=P;++O){var T=(O<P?B[D[O]]:0);var S=B[(P+(D[O-1]||0))%255];F.push(Q[T^S])}m.push(F)}var q={};for(var P=0;P<45;++P){q["0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:".charAt(P)]=P}var J=[function(b,a){return(b+a)%2==0},function(b,a){return b%2==0},function(b,a){return a%3==0},function(b,a){return(b+a)%3==0},function(b,a){return(((b/2)|0)+((a/3)|0))%2==0},function(b,a){return(b*a)%2+(b*a)%3==0},function(b,a){return((b*a)%2+(b*a)%3)%2==0},function(b,a){return((b+a)%2+(b*a)%3)%2==0}];var f=function(a){return a>6};var x=function(a){return 4*a+17};var u=function(a){var b=V[a];var i=16*a*a+128*a+64;if(f(a)){i-=36}if(b[2].length){i-=25*b[2].length*b[2].length-10*b[2].length-55}return i};var p=function(a,b){var j=u(a)&~7;var i=V[a];j-=8*i[0][b]*i[1][b];return j};var A=function(a,b){switch(b){case o:return(a<10?10:a<27?12:14);case U:return(a<10?9:a<27?11:13);case R:return(a<10?8:16);case y:return(a<10?8:a<27?10:12)}};var z=function(a,j,b){var i=p(a,b)-4-A(a,j);switch(j){case o:return((i/10)|0)*3+(i%10<4?0:i%10<7?1:2);case U:return((i/11)|0)*2+(i%11<6?0:1);case R:return(i/8)|0;case y:return(i/13)|0}};var s=function(W,j){switch(W){case o:if(!j.match(G)){return null}return j;case U:if(!j.match(E)){return null}return j.toUpperCase();case R:if(typeof j==="string"){var v=[];for(var a=0;a<j.length;++a){var b=j.charCodeAt(a);if(b<128){v.push(b)}else{if(b<2048){v.push(192|(b>>6),128|(b&63))}else{if(b<65536){v.push(224|(b>>12),128|((b>>6)&63),128|(b&63))}else{v.push(240|(b>>18),128|((b>>12)&63),128|((b>>6)&63),128|(b&63))}}}}return v}else{return j}}};var k=function(aa,Y,X,Z){var b=[];var ac=0,v=8;var a=X.length;var ab=function(i,ad){if(ad>=v){b.push(ac|(i>>(ad-=v)));while(ad>=8){b.push((i>>(ad-=8))&255)}ac=0;v=8}if(ad>0){ac|=(i&((1<<ad)-1))<<(v-=ad)}};var j=A(aa,Y);ab(Y,4);ab(a,j);switch(Y){case o:for(var W=2;W<a;W+=3){ab(parseInt(X.substring(W-2,W+1),10),10)}ab(parseInt(X.substring(W-2),10),[0,4,7][a%3]);break;case U:for(var W=1;W<a;W+=2){ab(q[X.charAt(W-1)]*45+q[X.charAt(W)],11)}if(a%2==1){ab(q[X.charAt(W-1)],6)}break;case R:for(var W=0;W<a;++W){ab(X[W],8)}break}ab(l,4);if(v<8){b.push(ac)}while(b.length+1<Z){b.push(236,17)}if(b.length<Z){b.push(236)}return b};var C=function(Z,a){var b=Z.slice(0);var aa=Z.length,X=a.length;for(var W=0;W<X;++W){b.push(0)}for(var W=0;W<aa;){var Y=Q[b[W++]];if(Y>=0){for(var v=0;v<X;++v){b[W+v]^=B[(Y+a[v])%255]}}}return b.slice(aa)};var N=function(a,Y,b){var ae=[];var ab=(a.length/Y)|0,ac=0;var aa=Y-a.length%Y;for(var W=0;W<aa;++W){ae.push(ac);ac+=ab}for(var W=aa;W<Y;++W){ae.push(ac);ac+=ab+1}ae.push(ac);var Z=[];for(var W=0;W<Y;++W){Z.push(C(a.slice(ae[W],ae[W+1]),b))}var ad=[];var X=(a.length/Y)|0;for(var W=0;W<X;++W){for(var v=0;v<Y;++v){ad.push(a[ae[v]+W])}}for(var v=aa;v<Y;++v){ad.push(a[ae[v+1]-1])}for(var W=0;W<b.length;++W){for(var v=0;v<Y;++v){ad.push(Z[v][W])}}return ad};var M=function(W,X,a,v){var b=W<<v;for(var j=X-1;j>=0;--j){if((b>>(v+j))&1){b^=a<<j}}return(W<<v)|b};var I=function(af){var ah=V[af],X=x(af);var ag=[],W=[];for(var ad=0;ad<X;++ad){ag.push([]);W.push([])}var ab=function(an,v,al,ai,am){for(var ak=0;ak<al;++ak){for(var aj=0;aj<ai;++aj){ag[an+ak][v+aj]=(am[ak]>>aj)&1;W[an+ak][v+aj]=1}}};ab(0,0,9,9,[127,65,93,93,93,65,383,0,64]);ab(X-8,0,8,9,[256,127,65,93,93,93,65,127]);ab(0,X-8,9,8,[254,130,186,186,186,130,254,0,0]);for(var ad=9;ad<X-8;++ad){ag[6][ad]=ag[ad][6]=~ad&1;W[6][ad]=W[ad][6]=1}var b=ah[2],Y=b.length;for(var ad=0;ad<Y;++ad){var ae=(ad==0||ad==Y-1?1:0),Z=(ad==0?Y-1:Y);for(var ac=ae;ac<Z;++ac){ab(b[ad],b[ac],5,5,[31,17,21,17,31])}}if(f(af)){var a=M(af,6,7973,12);var aa=0;for(var ad=0;ad<6;++ad){for(var ac=0;ac<3;++ac){ag[ad][(X-11)+ac]=ag[(X-11)+ac][ad]=(a>>aa++)&1;W[ad][(X-11)+ac]=W[(X-11)+ac][ad]=1}}}return{matrix:ag,reserved:W}};var L=function(ab,b,a){var v=ab.length;var X=0,W=-1;for(var Z=v-1;Z>=0;Z-=2){if(Z==6){--Z}var aa=(W<0?v-1:0);for(var Y=0;Y<v;++Y){for(var ac=Z;ac>Z-2;--ac){if(!b[aa][ac]){ab[aa][ac]=(a[X>>3]>>(~X&7))&1;++X}}aa+=W}W=-W}return ab};var K=function(v,a,b){var X=J[b];var Z=v.length;for(var Y=0;Y<Z;++Y){for(var W=0;W<Z;++W){if(!a[Y][W]){v[Y][W]^=X(Y,W)}}}return v};var e=function(Z,v,b,aa){var W=Z.length;var j=M((b<<3)|aa,5,1335,10)^21522;for(var X=0;X<15;++X){var a=[0,1,2,3,4,5,7,8,W-7,W-6,W-5,W-4,W-3,W-2,W-1][X];var Y=[W-1,W-2,W-3,W-4,W-5,W-6,W-7,W-8,7,5,4,3,2,1,0][X];Z[a][8]=Z[8][Y]=(j>>X)&1}return Z};var w=function(ad){var Z=3;var ai=3;var af=40;var ag=10;var a=function(j){var al=0;for(var aj=0;aj<j.length;++aj){if(j[aj]>=5){al+=Z+(j[aj]-5)}}for(var aj=5;aj<j.length;aj+=2){var ak=j[aj];if(j[aj-1]==ak&&j[aj-2]==3*ak&&j[aj-3]==ak&&j[aj-4]==ak&&(j[aj-5]>=4*ak||j[aj+1]>=4*ak)){al+=af}}return al};var W=ad.length;var Y=0,X=0;for(var ac=0;ac<W;++ac){var ah=ad[ac];var v;v=[0];for(var ab=0;ab<W;){var aa;for(aa=0;ab<W&&ah[ab];++aa){++ab}v.push(aa);for(aa=0;ab<W&&!ah[ab];++aa){++ab}v.push(aa)}Y+=a(v);v=[0];for(var ab=0;ab<W;){var aa;for(aa=0;ab<W&&ad[ab][ac];++aa){++ab}v.push(aa);for(aa=0;ab<W&&!ad[ab][ac];++aa){++ab}v.push(aa)}Y+=a(v);var ae=ad[ac+1]||[];X+=ah[0];for(var ab=1;ab<W;++ab){var b=ah[ab];X+=b;if(ah[ab-1]==b&&ae[ab]===b&&ae[ab-1]===b){Y+=ai}}}Y+=ag*((Math.abs(X/W/W-0.5)/0.05)|0);return Y};var d=function(X,aa,Z,a,ad){var ac=V[aa];var i=k(aa,Z,X,p(aa,a)>>3);i=N(i,ac[1][a],m[ac[0][a]]);var ae=I(aa);var ab=ae.matrix,b=ae.reserved;L(ab,b,i);if(ad<0){K(ab,b,0);e(ab,b,a,0);var W=0,Y=w(ab);K(ab,b,0);for(ad=1;ad<8;++ad){K(ab,b,ad);e(ab,b,a,ad);var j=w(ab);if(Y>j){Y=j;W=ad}K(ab,b,ad)}ad=W}K(ab,b,ad);e(ab,b,a,ad);return ab};var r={generate:function(X,v){var W={numeric:o,alphanumeric:U,octet:R};var j={L:h,M:g,Q:c,H:n};v=v||{};var a=v.version||-1;var i=j[(v.ecclevel||"L").toUpperCase()];var Y=v.mode?W[v.mode.toLowerCase()]:-1;var b="mask" in v?v.mask:-1;if(Y<0){if(typeof X==="string"){if(X.match(G)){Y=o}else{if(X.match(t)){Y=U}else{Y=R}}}else{Y=R}}else{if(!(Y==o||Y==U||Y==R)){throw"invalid or unsupported mode"}}X=s(Y,X);if(X===null){throw"invalid data format"}if(i<0||i>3){throw"invalid ECC level"}if(a<0){for(a=1;a<=40;++a){if(X.length<=z(a,Y,i)){break}}if(a>40){throw"too large data"}}else{if(a<1||a>40){throw"invalid version"}}if(b!=-1&&(b<0||b>8)){throw"invalid mask"}return d(X,a,Y,i,b)},generatePNG:function(Z,ad){ad=ad||{};var ab=r.generate(Z,ad);var aa=Math.max(ad.modulesize||5,0.5);var W=Math.max(ad.margin||4,0);var v=ab.length;var ac=aa*(v+2*W);var b=document.createElement("canvas"),a;b.width=b.height=ac;a=b.getContext("2d");if(!a){throw"canvas support is needed for PNG output"}a.fillStyle="#fff";a.fillRect(0,0,ac,ac);a.fillStyle="#000";for(var Y=0;Y<v;++Y){for(var X=0;X<v;++X){if(ab[Y][X]){a.fillRect(aa*(W+X),aa*(W+Y),aa,aa)}}}return b.toDataURL()}};return r})();
    38.1 --- a/mirror/root/static/slitaz.css	Sat Sep 19 16:15:43 2015 +0200
    38.2 +++ b/mirror/root/static/slitaz.css	Fri Oct 02 01:31:59 2015 +0300
    38.3 @@ -3,355 +3,423 @@
    38.4  */
    38.5  
    38.6  html {
    38.7 -	min-height:  102%;
    38.8 -}
    38.9 +	min-height: 102%;
   38.10 +	}
   38.11 +body {
   38.12 +	height: 100%;
   38.13 +	margin: 0;
   38.14 +	box-sizing: border-box;
   38.15 +	color: #222;
   38.16 +	background: #fff;
   38.17 +	font: 13px Ubuntu, "Droid Sans", "DejaVu Sans", FreeSans, "Liberation Sans", sans-serif;
   38.18 +	-moz-hyphens: auto; -epub-hyphens: auto; -webkit-hyphens: auto; hyphens: auto;
   38.19 +	}
   38.20 +code, pre, samp, kbd {
   38.21 +	color: #000;
   38.22 +	background-color: rgba(0, 0, 0, .05);
   38.23 +	}
   38.24 +a {
   38.25 +	text-decoration: none;
   38.26 +	color: #215090;
   38.27 +	}
   38.28 +a:hover {
   38.29 +	text-decoration: underline;
   38.30 +	}
   38.31 +img {
   38.32 +	border: 0 none;
   38.33 +	vertical-align: middle;
   38.34 +	}
   38.35 +h2 {
   38.36 +	color: #444;
   38.37 +	font-size: 26px;
   38.38 +	font-weight: 300;
   38.39 +	margin: 26px 0 13px;
   38.40 +	border-bottom: 2px solid #999;
   38.41 +	letter-spacing: 1px;
   38.42 +	}
   38.43 +h3 {
   38.44 +	color: #666;
   38.45 +	font-size: 19px;
   38.46 +	font-weight: 300;
   38.47 +	margin: 26px 0 0;
   38.48 +	line-height: 1;
   38.49 +	letter-spacing: .5px;
   38.50 +	}
   38.51 +pre {
   38.52 +	background-color: #F8F8F8;
   38.53 +	border: 1px solid #DDD;
   38.54 +	padding: 10px;
   38.55 +	white-space: pre-wrap;
   38.56 +	overflow-x: auto;
   38.57 +	line-height: 1;
   38.58 +	}
   38.59 +table {
   38.60 +	background-color: #F8F8F8;
   38.61 +	border: 1px solid #DDD;
   38.62 +	width: 100%;
   38.63 +	margin-bottom: 20px;
   38.64 +	padding: 6px;
   38.65 +	}
   38.66  
   38.67 -body {
   38.68 -	background: #ffffff;
   38.69 -	color: black;
   38.70 -	font: 13px sans-serif, vernada, arial;
   38.71 -	margin: 0;
   38.72 -	min-width: 780px;
   38.73 -	height: 100%;
   38.74 -}
   38.75  
   38.76 -a { text-decoration: underline; color: #215090; }
   38.77 -a:hover { text-decoration: none; color: blue; }
   38.78 -img { border: 0pt none; vertical-align: middle; }
   38.79 -h2 { color: #444; }
   38.80 -h3 { color: #666; font-size: 140%; }
   38.81 -h4 { color: #888; font-size: 120%; }
   38.82 -pre { 
   38.83 -	background-color: #f8f8f8; 
   38.84 -	border: 1px solid #ddd; 
   38.85 -	padding: 10px;
   38.86 -}
   38.87 -table { 
   38.88 -	background-color: #f8f8f8;
   38.89 -	border: 1px solid #ddd; 
   38.90 -	width: 100%; 
   38.91 -	margin: 0px 0px 20px 0px;
   38.92 -	padding: 10px;
   38.93 -}
   38.94 +/* Page header */
   38.95  
   38.96 -/* Header */
   38.97 +body > header {
   38.98 +	display: table;
   38.99 +	width: 100%;
  38.100 +	vertical-align: middle;
  38.101 +	min-height: 40px;
  38.102 +	background: #222;
  38.103 +	}
  38.104  
  38.105 -#header { 
  38.106 -	height: 40px; 
  38.107 -	background: #222;
  38.108 -	color: #ffffff;
  38.109 -}
  38.110 -
  38.111 -#header h1 {
  38.112 -	margin: 0;
  38.113 -	padding: 8px 0 0 42px;
  38.114 -	width: 250px;
  38.115 -}
  38.116 -
  38.117 -#header h1 a { 
  38.118 -	color: white; 
  38.119 -	text-decoration: none;
  38.120 +h1 {
  38.121 +	display: table-cell;
  38.122 +	height: 40px;
  38.123 +	vertical-align: middle;
  38.124 +	line-height: 20px;
  38.125 +	white-space: nowrap;
  38.126 +	}
  38.127 +h1::before {
  38.128 +	display: inline-block;
  38.129 +	content: url(logo.png);
  38.130 +	vertical-align: middle;
  38.131 +	}
  38.132 +h1 a {
  38.133 +	color: #FFF;
  38.134  	font-size: 20px;
  38.135  	font-style: italic;
  38.136 -}
  38.137 +	}
  38.138  
  38.139 -#header h1 a:hover, #network a:hover { 
  38.140 -	color: #ccc;
  38.141 -}
  38.142  
  38.143 -/* Logo */
  38.144  
  38.145 -#logo {
  38.146 -	background: url(logo.png) no-repeat left;
  38.147 -	position: absolute;
  38.148 -	float: left;
  38.149 -	left: 0px;
  38.150 -	top: 0px;
  38.151 -	width: 40px;
  38.152 -	height: 40px;
  38.153 -}
  38.154  
  38.155  /* SliTaz Network */
  38.156  
  38.157 -#network { 
  38.158 -	float: right; 
  38.159 -	padding: 10px 5px 0; 
  38.160 +#network {
  38.161 +	display: table-cell;
  38.162 +	text-align: right;
  38.163 +	vertical-align: middle;
  38.164  	font-size: 12px;
  38.165  }
  38.166  
  38.167 -#network a { padding: 0 6px; }
  38.168 +#network a {
  38.169 +	display: inline-block;
  38.170 +	padding: 0 6px;
  38.171 +	vertical-align: middle;
  38.172 +	}
  38.173 +.home::before {
  38.174 +	content: url(home.png);
  38.175 +	}
  38.176 +
  38.177 +
  38.178 +/* Country flags */
  38.179 +
  38.180 +.br::before { content: url(BR.png); }
  38.181 +.ch::before { content: url(CH.png); }
  38.182 +.de::before { content: url(DE.png); }
  38.183 +.fr::before { content: url(FR.png); }
  38.184 +.it::before { content: url(IT.png); }
  38.185 +.pl::before { content: url(PL.png); }
  38.186 +.us::before { content: url(US.png); }
  38.187 +
  38.188 +
  38.189  
  38.190  /* Block */
  38.191  
  38.192 -#block { 
  38.193 -	min-height: 200px; 
  38.194 -	background: #ccc; 
  38.195 -	padding: 26px 10% 0px;
  38.196 -	text-align: center;
  38.197 -	color: #333;
  38.198 -	border-bottom: 1px solid #f5f5f5;
  38.199 -}
  38.200 +#block {
  38.201 +	padding: 30px 6px;
  38.202 +	background: #CCC;
  38.203 +	}
  38.204 +#block div {
  38.205 +	max-width: 600px;
  38.206 +	margin: 0 auto;
  38.207 +	}
  38.208 +#block_info {
  38.209 +	padding: 6px 12px 0 0;
  38.210 +	}
  38.211 +#block_info input {
  38.212 +	width: 100%;
  38.213 +	}
  38.214 +#block a,
  38.215 +#network a {
  38.216 +	color: #FFF;
  38.217 +	}
  38.218 +#block header {
  38.219 +	font-weight: 400;
  38.220 +	font-size: 18px;
  38.221 +	line-height: 18px;
  38.222 +	}
  38.223  
  38.224 -#block_info {
  38.225 -	text-align: justify; 
  38.226 -	width: 48%;
  38.227 -	padding: 10px 10px 0 0;
  38.228 -}
  38.229 +#block_info p {
  38.230 +	margin: 7px 0;
  38.231 +	padding: 0;
  38.232 +	text-align: justify;
  38.233 +	}
  38.234 +#block_info a {
  38.235 +	font-weight: 400;
  38.236 +	color: #B51;
  38.237 +	}
  38.238  
  38.239 -#block a, #network a { 
  38.240 -	color: #fff; 
  38.241 -	font-weight: bold;
  38.242 -	text-decoration: none;
  38.243 -}
  38.244  
  38.245 -#block h4 {
  38.246 -	color: #222;
  38.247 -	margin: 0px;
  38.248 -	font-weight: bold;
  38.249 -	font-size: 110%;
  38.250 -}
  38.251  
  38.252 -#block_info p { margin: 6px 0; padding: 0 12px 0 0; }
  38.253 -#block_info a { font-weight: normal; color: #B51; }
  38.254 -#block_info a:hover { color: #000; }
  38.255 -
  38.256 -#block ul { list-style-type: square; }
  38.257 -#block a:hover { color: #afafaf; }
  38.258  
  38.259  /* Navigation */
  38.260  
  38.261 -#block_nav {
  38.262 -	background: #666;
  38.263 -	padding: 10px 10px 40px;
  38.264 -	text-align: justify;
  38.265 -	width: 48%;
  38.266 -	float: right;
  38.267 -}
  38.268 +nav {
  38.269 +	background: #666; color: #fff;
  38.270 +	padding: 6px;
  38.271 +	width: 40%;
  38.272 +	}
  38.273 +nav a {
  38.274 +	white-space: nowrap;
  38.275 +	}
  38.276  
  38.277 -#block_nav ul { 
  38.278 -	list-style-type: none; 
  38.279 -	margin: 6px 0; 
  38.280 +nav header img {
  38.281 +	margin: 0 4px 0 0;
  38.282  	padding: 0;
  38.283 -}
  38.284 +	}
  38.285 +nav,
  38.286 +#block_info {
  38.287 +	display: table-cell;
  38.288 +	}
  38.289  
  38.290 -#block_nav h4 img { 
  38.291 -	margin: 0 4px 0 0; 
  38.292 -	padding: 0;
  38.293 -}
  38.294 +
  38.295  
  38.296  /* Languages */
  38.297  
  38.298  #lang {
  38.299 -	position: absolute;
  38.300 -	right: 0;
  38.301 +	margin: 0;
  38.302 +	text-align: right;
  38.303  	padding: 6px;
  38.304  	font-size: 11px;
  38.305 -}
  38.306 +	}
  38.307 +#lang a {
  38.308 +	padding: 0 2px;
  38.309 +	}
  38.310  
  38.311 -#lang a {
  38.312 -	text-decoration: none;
  38.313 -	padding: 0 2px;
  38.314 -}
  38.315 -
  38.316 -#lang a:hover {
  38.317 -	text-decoration: underline;
  38.318 -}
  38.319  
  38.320  /* Content */
  38.321  
  38.322  #content {
  38.323 -	padding: 30px 80px;
  38.324 +	max-width: 600px;
  38.325 +	margin: 6px auto;
  38.326 +	padding: 0 6px;
  38.327  	text-align: justify;
  38.328 -}
  38.329 +	line-height: 1.5rem;
  38.330 +	}
  38.331  
  38.332  .news li {
  38.333  	list-style-type: square;
  38.334  	border-bottom: 1px dotted #BEBEBE;
  38.335  	margin-left: -25px;
  38.336 -	padding: 4px 0px 4px 0px;
  38.337 -}
  38.338 +	padding: 4px 0;
  38.339 +	}
  38.340  
  38.341 -.news a, .feed-grid a { text-decoration: none; }
  38.342 -.news p a { text-decoration: underline; }
  38.343 -.news p a:hover { text-decoration: none; }
  38.344 -#twitter { margin: 20px 0; }
  38.345 -#gallery { text-align: center; }
  38.346 -
  38.347 +#twitter {
  38.348 +	margin: 20px 0;
  38.349 +	}
  38.350 +#gallery {
  38.351 +	text-align: center;
  38.352 +	}
  38.353  #sponsor {
  38.354  	font-size: 90%;
  38.355 -	background-color: #fbfbfb;
  38.356 -	border: 2px solid #ddd;
  38.357 +	background-color: #FBFBFB;
  38.358 +	border: 2px solid #DDD;
  38.359  	width: 200px;
  38.360  	height: 160px;
  38.361  	float: right;
  38.362  	text-align: center;
  38.363 -	margin: 10px 0px 20px 20px;
  38.364 -}
  38.365 +	margin: 10px 0 20px 20px;
  38.366 +	}
  38.367 +
  38.368 +
  38.369 +/* Mirrors list */
  38.370  
  38.371  #mirrors {
  38.372  	padding: 10px;
  38.373 -	margin: 10px 0px 20px;
  38.374 +	margin: 10px 0 20px;
  38.375  	text-align: center;
  38.376 -	background: #f1f1f1;
  38.377 -	border: 2px solid #ddd;
  38.378 -}
  38.379 +	background: #F1F1F1;
  38.380 +	border: 1px solid #DDD;
  38.381 +	}
  38.382 +#mirrors a,
  38.383 +#mirrors a::before {
  38.384 +	display: inline-block;
  38.385 +	padding: 0 3px;
  38.386 +	}
  38.387 +#mirrors a::before {
  38.388 +	vertical-align: -4px;
  38.389 +	}
  38.390 +
  38.391 +
  38.392  
  38.393  /* Classes */
  38.394  
  38.395 -.right_box { width: 48%; float: right; }
  38.396 -.left_box { width: 48%; float: left; }
  38.397 -
  38.398 +.right_box {
  38.399 +	width: 48%;
  38.400 +	float: right;
  38.401 +	}
  38.402 +.left_box {
  38.403 +	width: 48%;
  38.404 +	float: left;
  38.405 +	}
  38.406  .box {
  38.407  	margin: 20px 60px;
  38.408  	padding: 12px;
  38.409 -	background: #efefef;
  38.410 -	border: 1px solid #ddd;
  38.411 +	background: #EFEFEF;
  38.412 +	border: 1px solid #DDD;
  38.413 +}
  38.414 +.searchbox { 
  38.415 +	margin: 20px 80px;
  38.416 +	padding: 12px; 
  38.417 +	background: #F8F8F8;
  38.418 +	text-align: center;
  38.419 +	border: 1px solid #DDD;
  38.420  }
  38.421  
  38.422 -.searchbox { 
  38.423 -	margin: 20px 80px; 
  38.424 -	padding: 12px; 
  38.425 -	background: #f8f8f8;
  38.426 -	text-align: center;
  38.427 -	border: 1px solid #ddd;
  38.428 -}
  38.429  
  38.430  /* Activity Box */
  38.431  
  38.432 -.activity { 
  38.433 -	margin: 0 0 20px; 
  38.434 -	background: #efefef; 
  38.435 -	padding: 5px 2px 0; 
  38.436 -	border: 1px solid #ddd; 
  38.437 -}
  38.438 -.activity div { padding: 5px 10px; background: #fff; margin-top: 5px; }
  38.439 -.activity p { margin: 0; padding: 5px 10px; font-weight: bold; }
  38.440 -.activity a { text-decoration: none; }
  38.441 -.activity ul { list-style-type: none; 
  38.442 -	margin: 4px 0; padding: 0 4px; line-height: 150%; }
  38.443 -.activity_more { text-align: right;  }
  38.444 -.activity_more a { font-weight: normal; color: #000; padding: 0 4px; }
  38.445 -.activity_more a:hover { text-decoration: underline; }
  38.446 +.activity {
  38.447 +	margin: 0 0 20px;
  38.448 +	background: #EFEFEF;
  38.449 +	padding: 5px 2px 0;
  38.450 +	border: 1px solid #DDD;
  38.451 +	}
  38.452 +.activity div {
  38.453 +	padding: 5px 10px;
  38.454 +	background: #FFF;
  38.455 +	margin-top: 5px;
  38.456 +	}
  38.457 +.activity p {
  38.458 +	margin: 0;
  38.459 +	padding: 5px 10px;
  38.460 +	font-weight: 700;
  38.461 +	}
  38.462 +.activity ul {
  38.463 +	list-style-type: none;
  38.464 +	margin: 4px 0;
  38.465 +	padding: 0 4px;
  38.466 +	line-height: 150%;
  38.467 +	}
  38.468 +.activity_more {
  38.469 +	text-align: right;
  38.470 +	}
  38.471 +.activity_more a {
  38.472 +	font-weight: 400;
  38.473 +	color: #000;
  38.474 +	padding: 0 4px;
  38.475 +	}
  38.476 +.activity span,
  38.477 +.news span {
  38.478 +	color: #666;
  38.479 +	font-size: 11px;
  38.480 +	font-weight: 400;
  38.481 +	}
  38.482  
  38.483 -.activity span, .news span { 
  38.484 -	color: #666; 
  38.485 -	font-size: 11px; 
  38.486 -	font-weight: normal;
  38.487 -}
  38.488 -
  38.489 -/* Button */
  38.490 -
  38.491 -.button a { 
  38.492 -	background-color: #666;
  38.493 -	color: #ffffff;
  38.494 -	margin-right: 6px;
  38.495 -	padding: 6px 10px;
  38.496 -	font-size: 12px;
  38.497 -	text-decoration: none;
  38.498 -	font-weight: bold;
  38.499 -}
  38.500 -.button a:hover, input[type=submit]:hover { 
  38.501 -	background-color: #444;
  38.502 -	color: #ffffff;
  38.503 -}
  38.504  
  38.505  /* Round corner */
  38.506  
  38.507 -#block_nav, pre, .box, .searchbox, .button a, #twitter, .activity,
  38.508 -.activity div, #sponsor, #mirrors, table, input, textarea, select {
  38.509 +nav, pre, table, textarea, select,
  38.510 +.box, .searchbox, .activity, .activity div,
  38.511 +#twitter, #sponsor, #mirrors {
  38.512  	-moz-border-radius: 4px;
  38.513  	-webkit-border-radius: 4px;
  38.514  	border-radius: 4px;
  38.515 -}
  38.516 +	}
  38.517  
  38.518 -/* Form */
  38.519  
  38.520 -form { display: inline; }
  38.521 -input[type="submit"], input[type="text"], input[type="search"], textarea, select {
  38.522 -	color: #444444;
  38.523 -	border: 1px solid #cccccc;
  38.524 -	padding: 4px;
  38.525 -	margin: 4px 0px;
  38.526 -	font-size: 14px;
  38.527 -	line-height: 1.2em;
  38.528 -	background-image: -webkit-linear-gradient(#FAFAFA, #F4F4F4 40%, #E5E5E5);
  38.529 -	background-image: -moz-linear-gradient(#FAFAFA, #F4F4F4 40%, #E5E5E5);
  38.530 -	-webkit-appearance: none;
  38.531 -	-webkit-padding-end: 6px;
  38.532 -	-webkit-padding-start: 6px;
  38.533 -}
  38.534 +/* Page footer */
  38.535  
  38.536 -input[type="text"], input[type="search"], textarea { background: #fefefe; border: 2px solid #ccc; 
  38.537 -	width: 460px; }
  38.538 -/*input[type="file"] { border: 2px solid #ddd; }*/
  38.539 -/*input[type="checkbox"] { background: #fefefe; }*/
  38.540 -
  38.541 -/* Be compatible with old FF and Webkit version. */
  38.542 -input[type="submit"] {
  38.543 -	-webkit-box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.1);
  38.544 -	-moz-box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.1);
  38.545 -	box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.1);
  38.546 -}
  38.547 -
  38.548 -input[type="submit"]:hover { 
  38.549 -	cursor: pointer;
  38.550 -	color: black;
  38.551 -}
  38.552 -
  38.553 -select { 
  38.554 -	background-image: url(images/down.png), 
  38.555 -		-webkit-linear-gradient(#FAFAFA, #F4F4F4 40%, #E5E5E5);
  38.556 -	background-position: center right;
  38.557 -	background-repeat: no-repeat;
  38.558 -}
  38.559 -
  38.560 -.searchbox input[type=submit] {
  38.561 -	border: 1px solid #666;
  38.562 -	background-color: #666;
  38.563 -	color: white;
  38.564 -	font-weight: bold;
  38.565 -	cursor: pointer;
  38.566 -	padding: 4px 10px;
  38.567 -	font-size: 14px;
  38.568 -	margin-left: -5px;
  38.569 -	-webkit-border-top-right-radius: 4px;
  38.570 -	-webkit-border-bottom-right-radius: 4px;
  38.571 -	-moz-border-radius-topright: 4px;
  38.572 -	-moz-border-radius-bottomright: 4px;
  38.573 -	border-top-right-radius: 4px;
  38.574 -	border-bottom-right-radius: 4px;
  38.575 -}
  38.576 -
  38.577 -.searchbox input[type=submit]:hover { background-color: #444; }
  38.578 -
  38.579 -.searchbox input[type=text], input[type=search] {
  38.580 -	border: 1px solid #333333;
  38.581 -	padding: 4px;
  38.582 -	height: 17px;
  38.583 -	width: 100%;
  38.584 -	-webkit-border-top-left-radius: 4px;
  38.585 -	-webkit-border-bottom-left-radius: 4px;
  38.586 -	-moz-border-radius-topleft: 4px;
  38.587 -	-moz-border-radius-bottomleft: 4px;
  38.588 -	border-top-left-radius: 4px;
  38.589 -	border-bottom-left-radius: 4px;
  38.590 -}
  38.591 -
  38.592 -/* Footer */
  38.593 -
  38.594 -#footer {
  38.595 -	background: #f1f1f1;
  38.596 +body > footer {
  38.597 +	background: #F1F1F1;
  38.598  	text-align: center;
  38.599 -	border-top: 1px solid #ddd;
  38.600 -	padding: 40px;
  38.601 +	border-top: 1px solid #DDD;
  38.602 +	padding: 30px;
  38.603  	color: #666;
  38.604  	clear: both;
  38.605  	margin-bottom: -2%;
  38.606 -}
  38.607 -
  38.608 -#footer a { color: #666; padding: 0 2px; }
  38.609 -
  38.610 +	}
  38.611 +footer a + a {
  38.612 +	margin: 0 6px;
  38.613 +	}
  38.614  .year:after {
  38.615  	/* content: "2007-2015"; */
  38.616  	content: "2015";
  38.617 -}
  38.618 +	}
  38.619 +
  38.620 +
  38.621 +/* Mirror file table */
  38.622 +
  38.623 +table {
  38.624 +	border-collapse: collapse;
  38.625 +	line-height: 1;
  38.626 +	}
  38.627 +caption {
  38.628 +	caption-side: bottom;
  38.629 +	text-align: left;
  38.630 +	padding: 6px 0;
  38.631 +	}
  38.632 +thead tr {
  38.633 +	background-color: #DDD;
  38.634 +	}
  38.635 +th {
  38.636 +	padding: 4px 1px;
  38.637 +	}
  38.638 +th:nth-child(3),
  38.639 +td:nth-child(3) {
  38.640 +	text-align: right;
  38.641 +	}
  38.642 +td:nth-child(1) {
  38.643 +	vertical-align: middle;
  38.644 +	}
  38.645 +
  38.646 +tbody tr:nth-child(odd) {
  38.647 +	background-color: #FFF;
  38.648 +	}
  38.649 +tbody tr:nth-child(even) {
  38.650 +	background-color: #EEE;
  38.651 +	}
  38.652 +
  38.653 +
  38.654 +/* More space for touch links */
  38.655 +
  38.656 +.touch td, .touch th {
  38.657 +	padding: 6px;
  38.658 +	}
  38.659 +.touch #network a,
  38.660 +.touch nav a,
  38.661 +.touch #mirrors a,
  38.662 +.touch footer a {
  38.663 +	display: inline-block;
  38.664 +	padding: 6px;
  38.665 +	}
  38.666 +
  38.667 +
  38.668 +/* Mimetype icons */
  38.669 +
  38.670 +td:nth-child(1)::before {
  38.671 +	display: inline-block;
  38.672 +	vertical-align: middle;
  38.673 +	padding-right: 3px;
  38.674 +	}
  38.675 +.x-bzip::before { content: url(application-x-bzip.png); }
  38.676 +.x-gzip::before { content: url(application-x-gzip.png); }
  38.677 +.plain::before { content: url(text-plain.png); }
  38.678 +.x-bittorrent::before { content: url(application-x-bittorrent.png); }
  38.679 +.octet-stream::before { content: url(application-octet-stream.png); }
  38.680 +.dir::before { content: url(folder.png); }
  38.681 +.up::before { content: url(go-up.png); }
  38.682 +.zip::before { content: url(application-zip.png); }
  38.683 +.iso::before { content: url(application-x-cd-image.png); }
  38.684 +.krn::before { content: url(application-x-executable.png); }
  38.685 +.exe::before { content: url(application-x-ms-dos-executable.png); }
  38.686 +.rme::before { content: url(text-x-readme.png); }
  38.687 +.log::before { content: url(text-x-changelog.png); }
  38.688 +.pkg::before { content: url(package-x-generic.png); }
  38.689 +
  38.690 +
  38.691 +/* Lists */
  38.692 +
  38.693 +ul ul, ol ol, ul ol, ol ul { margin: 0; }
  38.694 +ul, ol, dd { padding: 0 0 0 21px; }
    39.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    39.2 +++ b/mirror/root/static/slitaz.min.css	Fri Oct 02 01:31:59 2015 +0300
    39.3 @@ -0,0 +1,1 @@
    39.4 +html{min-height:102%}body{height:100%;margin:0;box-sizing:border-box;color:#222;background:#fff;font:13px Ubuntu,"Droid Sans","DejaVu Sans",FreeSans,"Liberation Sans",sans-serif;-moz-hyphens:auto;-epub-hyphens:auto;-webkit-hyphens:auto;hyphens:auto}code,pre,samp,kbd{color:#000;background-color:rgba(0,0,0,.05)}a{text-decoration:none;color:#215090}a:hover{text-decoration:underline}img{border:0 none;vertical-align:middle}h2{color:#444;font-size:26px;font-weight:300;margin:26px 0 13px;border-bottom:2px solid #999;letter-spacing:1px}h3{color:#666;font-size:19px;font-weight:300;margin:26px 0 0;line-height:1;letter-spacing:.5px}pre{background-color:#f8f8f8;border:1px solid #DDD;padding:10px;white-space:pre-wrap;overflow-x:auto;line-height:1}table{background-color:#f8f8f8;border:1px solid #DDD;width:100%;margin-bottom:20px;padding:6px}body>header{display:table;width:100%;vertical-align:middle;min-height:40px;background:#222}h1{display:table-cell;height:40px;vertical-align:middle;line-height:20px;white-space:nowrap}h1::before{display:inline-block;content:url(logo.png);vertical-align:middle}h1 a{color:#FFF;font-size:20px;font-style:italic}#network{display:table-cell;text-align:right;vertical-align:middle;font-size:12px}#network a{display:inline-block;padding:0 6px;vertical-align:middle}.home::before{content:url(home.png)}.br::before{content:url(BR.png)}.ch::before{content:url(CH.png)}.de::before{content:url(DE.png)}.fr::before{content:url(FR.png)}.it::before{content:url(IT.png)}.pl::before{content:url(PL.png)}.us::before{content:url(US.png)}#block{padding:30px 6px;background:#CCC}#block div{max-width:600px;margin:0 auto}#block_info{padding:6px 12px 0 0}#block_info input{width:100%}#block a,#network a{color:#FFF}#block header{font-weight:400;font-size:18px;line-height:18px}#block_info p{margin:7px 0;padding:0;text-align:justify}#block_info a{font-weight:400;color:#B51}nav{background:#666;color:#fff;padding:6px;width:40%}nav a{white-space:nowrap}nav header img{margin:0 4px 0 0;padding:0}nav,#block_info{display:table-cell}#lang{margin:0;text-align:right;padding:6px;font-size:11px}#lang a{padding:0 2px}#content{max-width:600px;margin:6px auto;padding:0 6px;text-align:justify;line-height:1.5rem}.news li{list-style-type:square;border-bottom:1px dotted #bebebe;margin-left:-25px;padding:4px 0}#twitter{margin:20px 0}#gallery{text-align:center}#sponsor{font-size:90%;background-color:#fbfbfb;border:2px solid #DDD;width:200px;height:160px;float:right;text-align:center;margin:10px 0 20px 20px}#mirrors{padding:10px;margin:10px 0 20px;text-align:center;background:#f1f1f1;border:1px solid #DDD}#mirrors a,#mirrors a::before{display:inline-block;padding:0 3px}#mirrors a::before{vertical-align:-4px}.right_box{width:48%;float:right}.left_box{width:48%;float:left}.box{margin:20px 60px;padding:12px;background:#efefef;border:1px solid #DDD}.searchbox{margin:20px 80px;padding:12px;background:#f8f8f8;text-align:center;border:1px solid #DDD}.activity{margin:0 0 20px;background:#efefef;padding:5px 2px 0;border:1px solid #DDD}.activity div{padding:5px 10px;background:#FFF;margin-top:5px}.activity p{margin:0;padding:5px 10px;font-weight:700}.activity ul{list-style-type:none;margin:4px 0;padding:0 4px;line-height:150%}.activity_more{text-align:right}.activity_more a{font-weight:400;color:#000;padding:0 4px}.activity span,.news span{color:#666;font-size:11px;font-weight:400}nav,pre,table,textarea,select,.box,.searchbox,.activity,.activity div,#twitter,#sponsor,#mirrors{-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px}body>footer{background:#f1f1f1;text-align:center;border-top:1px solid #DDD;padding:30px;color:#666;clear:both;margin-bottom:-2%}footer a+a{margin:0 6px}.year:after{content:"2015"}table{border-collapse:collapse;line-height:1}caption{caption-side:bottom;text-align:left;padding:6px 0}thead tr{background-color:#DDD}th{padding:4px 1px}th:nth-child(3),td:nth-child(3){text-align:right}td:nth-child(1){vertical-align:middle}tbody tr:nth-child(odd){background-color:#FFF}tbody tr:nth-child(even){background-color:#EEE}.touch td,.touch th{padding:6px}.touch #network a,.touch nav a,.touch #mirrors a,.touch footer a{display:inline-block;padding:6px}td:nth-child(1)::before{display:inline-block;vertical-align:middle;padding-right:3px}.x-bzip::before{content:url(application-x-bzip.png)}.x-gzip::before{content:url(application-x-gzip.png)}.plain::before{content:url(text-plain.png)}.x-bittorrent::before{content:url(application-x-bittorrent.png)}.octet-stream::before{content:url(application-octet-stream.png)}.dir::before{content:url(folder.png)}.up::before{content:url(go-up.png)}.zip::before{content:url(application-zip.png)}.iso::before{content:url(application-x-cd-image.png)}.krn::before{content:url(application-x-executable.png)}.exe::before{content:url(application-x-ms-dos-executable.png)}.rme::before{content:url(text-x-readme.png)}.log::before{content:url(text-x-changelog.png)}.pkg::before{content:url(package-x-generic.png)}ul ul,ol ol,ul ol,ol ul{margin:0}ul,ol,dd{padding:0 0 0 21px}
    40.1 Binary file mirror/root/static/text-plain.png has changed
    41.1 Binary file mirror/root/static/text-x-changelog.png has changed
    42.1 Binary file mirror/root/static/text-x-readme.png has changed
    43.1 Binary file mirror/root/static/xhtml10.png has changed