diff --git a/.gitignore b/.gitignore
index 79eb93b09b6e26d831a4c8fad8592c6af42c8146..d88fa7776dab98ac8f8e2e2fda97f7eaf19b1193 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
-.htaccess
\ No newline at end of file
+.htaccess
+.idea
diff --git a/LISEZ-MOI.md b/LISEZ-MOI.md
index 49a26361945e9de5d173d3cf6ddf9772394f7408..27c417298a2a990882eb96f018ac0b1008ca05d4 100644
--- a/LISEZ-MOI.md
+++ b/LISEZ-MOI.md
@@ -1,40 +1,17 @@
 Cesium website
 ===
 
-## Le pourquoi du comment
-
-Cet ensemble de scripts a pour but de rendre la modification du site cesium.app accessible à tout un chacun.
-
-Ce qui était autrefois fait avec un CMS est maintenant fait avec ce script maison, ce qui présente les avantages suivants : 
-
-* Le site est installable par n'importe qui n'importe où, ce qui : 
-	* nous rend plus résilient en cas de problème
-	* diminue le bus factor
-* Mise à jour facilitée : 
-	* au changement de version de l'appli Cesium, chaque contributeur du GitLab peut dorénavant faire un commit pour modifier le fichier cesiumVersions.php
-	* chacun peut participer à l'amélioration du tutoriel (ou même du site en général)
-* Traductions facilitée : 
-	* alors que la traduction avec le CMS générait des pertes d'informations lors d'une mise à jour, le script maison résoud ce problème en utilisant des fichiers .po
-	* pour le tutoriel, les traductions sont indépendantes ; on n'est donc pas obligé de faire de la traduction phrase par phrase ; on peut avoir des tutoriels organisés totalement différemment d'une langue à l'autre
-	* Les captures d'écran sont aussi adaptées en fonction de la langue du visiteur
-* Chargement plus rapide
-* Personnalisation du style facilitée par un code complètement sémantique (pas de classes à la Twitter-boostrap).
-* Edition facilitée : adieu le WYSIWYG laborieux de l'ancien CMS
-* Chargement plus rapide, grâce à un code plus léger et optimisé à nos besoins.
-
-Il est possible que courant 2020 ces scripts PHP soient remplacés par un générateur de site statiques (SSG) type Pelican.
-
 ## Comment contribuer
 
 ### Comment mettre à jour les liens de téléchargement
 
-Lors d'une mise à jour de Cesium, il suffit de mettre à jour le fichier cesiumVersions.php pour que les liens de téléchargement soient automatiquement mis à jour.
+Lors d'une mise à jour de Cesium, il suffit de mettre à jour [le fichier cesiumVersions.php](cesiumVersions.php) pour que les liens de téléchargement soient automatiquement mis à jour.
 
-Si ceux-ci étaient amenés à changer d'emplacement, veuillez mettre à jour le fichier cesiumDownloads.php
+Si ceux-ci étaient amenés à changer d'emplacement, veuillez mettre à jour [le fichier cesiumDownloads.php](cesiumDownloads.php)
 
 ### Comment traduire le tutoriel
 
-Pour le tutoriel, vous trouverez les fichiers .html dans les dossiers type `i18n/es_ES/contents/tuto/`
+Pour le tutoriel, vous trouverez les fichiers .html dans les dossiers type `i18n/es_ES/contents/tuto/` (où `es_ES` est la langue qui vous intéresse).
 
 #### Comment formatter les URLs dans le menu
 
@@ -76,29 +53,9 @@ Aussi : utiliser 4 espaces consécutifs en guise d'indentation est une déviance
 J'ai remarqué que pour les instructions dans un tuto, souvent une liste ordonnée <ol></ol> rend mieux 
 qu'une liste non-ordonnée <ul></ul>
 
-#### Soyons sémantiques !
-
-Écrivons à la mode XHTML : 
-
-* un slash à la fin de nos balises <img />
-* un slash à la fin de nos balises <br />
-
-Des éditeurs comme Notepadqq (Linux) nous permettent de répérer facilement la 
-présence de balises non fermées (votre code est coloré diféremment).
-
-Niveau HTML :
-
-* [C'est pas interdit](https://developer.mozilla.org/fr/docs/Web/HTML/Element/li#R%C3%A9sum%C3%A9_technique) 
-  de mettre des <p> (contenu de flux) dans des <li>, mais c'est rare que ce soit vraiment nécessaire.
-  Généralement le résultat que vous cherchez s'obtient mieux en CSS.
-
-Si un truc rend moche, bidouillez les fichiers .css ou demandez-moi de le faire plutôt 
-que de rajouter des balises surnuméraires (genre plutôt que de mettre des >p> ou des >br/> pour créer des marges, 
-utilisons la propriété CSS dédiée, *margin*).
-
 ### Comment modifier les images
 
-C'est dans `i18n/es_ES/contents/tuto/`
+C'est dans `i18n/es_ES/contents/tuto/` (où `es_ES` est la langue qui vous intéresse).
 
 Pour des questions de SEO, les noms des fichiers sont traduits, via les fichiers .po
 
@@ -116,22 +73,6 @@ les modifications sont à faire dans les fichiers .po que vous trouverez dans le
 Ces fichiers sont éditables avec des logiciels type PoEdit.
 
 
-
-## Licences
-
-Ce logiciel est pour sa majeure partie sous licence GNU GPL 3.0.
-
-Aux exceptions suivantes : 
-	
-- Le script Funding.class.php est basé sur la [barre de financement intégrable](https://git.duniter.org/paidge/barre-de-financement-int-grable), elle-même sous licence GNUL GPL 3.
-- [Composer](https://getcomposer.org/) est sous licence MIT.
-- [GeoIP2](https://maxmind.github.io/GeoIP2-php/) est la création de by MaxMind est distribué sous licence Apache
-- Les [bases de données GeoLite2](https://dev.maxmind.com/geoip/geoip2/geolite2/) sont la création de MaxMind et sont sous licence Creative Commons Attribution-ShareAlike 4.0 International.
-- Le script [LazyImg](https://github.com/colas31/lazyImg), dont la licence est inconnue.
-- [Font-Awesome](https://fontawesome.com/license/free) est sous licence libre ([voir détail](https://fontawesome.com/license/free))
-- Les photos, qui sont la propriété de leurs auteurs
-- Le logo Cesium est la création de DiG
-
 ## Instructions d'installation
 
 ### .htaccess
@@ -141,7 +82,11 @@ Votre fichier .htaccess doit contenir les infos suivantes :
 ```
 <IfModule mod_rewrite.c>
 RewriteEngine On
-RewriteBase /www/cesium-website/
+
+# Adaptez la ligne suivante à votre configuration (avec un slash à la fin)
+RewriteBase /cesium-website-project/cesium_website/
+
+RewriteOptions InheritDown
 
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
@@ -150,20 +95,49 @@ RewriteRule .*\.php - [L]
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule ^([^/]+)/(.*)$ index.php?lang=$1&page=/$2 [L]
-
-
-# Redirections pour gérer l'ancienne structure de liens sans perdre en SEO
-# (ex : /telechargement au lieu de /fr/telechargement)
-RewriteCond %{REQUEST_FILENAME} !-f
-RewriteCond %{REQUEST_FILENAME} !-d
-RewriteRule ^([^/]+)$ fr/$1 [R=301]
 </IfModule>
+
 ```
 
 Modifiez l'instruction RewriteBase du .htaccess pour qu'elle s'accorde à votre propre configuration 
 (tapez l'endroit où CesiumWebsite est installé, typiquement /)
 
+Si lorsque vous essayez d'accéder au site, vous avez une erreur "404 Not Found", c'est que votre fichier `.htaccess` n'est pas pris en considération par Apache.
+
+Il vous faudra alors éditer votre fichier `/etc/apache2/apache2.conf` (anciennement `/etc/apache2/httpd.conf`) pour y remplacer :
+
+```
+<Directory /var/www/>
+        Options Indexes FollowSymLinks
+        AllowOverride None
+        Require all granted
+</Directory>
+```
+par :
+```
+<Directory /var/www/>
+        Options Indexes FollowSymLinks
+        AllowOverride All
+        Require all granted
+</Directory>
+```
+
 ### config.php
 
 Modifiez la variable $rootURL de la même façon.
 
+
+## Licences
+
+Ce logiciel est pour sa majeure partie sous licence GNU GPL 3.0.
+
+Aux exceptions suivantes : 
+	
+- Le script Funding.class.php est basé sur la [barre de financement intégrable](https://git.duniter.org/paidge/barre-de-financement-int-grable), elle-même sous licence GNUL GPL 3.
+- [Composer](https://getcomposer.org/) est sous licence MIT.
+- [GeoIP2](https://maxmind.github.io/GeoIP2-php/) est la création de by MaxMind est distribué sous licence Apache
+- Les [bases de données GeoLite2](https://dev.maxmind.com/geoip/geoip2/geolite2/) sont la création de MaxMind et sont sous licence Creative Commons Attribution-ShareAlike 4.0 International.
+- Le script [LazyImg](https://github.com/colas31/lazyImg), dont la licence est inconnue.
+- [Font-Awesome](https://fontawesome.com/license/free) est sous licence libre ([voir détail](https://fontawesome.com/license/free))
+- Les photos, qui sont la propriété de leurs auteurs
+- Le logo Cesium est la création de DiG
\ No newline at end of file
diff --git a/README.en.md b/README.en.md
index 5eaeb0cd0c112feb30a0617f27da3fba8e129b67..05652c4ae0f5cd1c487dc138f33ad60e851e866c 100644
--- a/README.en.md
+++ b/README.en.md
@@ -3,5 +3,54 @@ Cesium website
 
 ## Install notes
 
-Modify RewriteBase directive in .htaccess according to your own configuration (set RewriteBase to be the URI where CesiumWebsite is installed, typically /).
+### .htaccess
+
+Create a .htaccess in cesium_website directory, with the following text : 
+
+```
+<IfModule mod_rewrite.c>
+RewriteEngine On
+
+# Adaptez la ligne suivante à votre configuration (avec un slash à la fin)
+RewriteBase /cesium-website-project/cesium_website/
+
+RewriteOptions InheritDown
+
+RewriteCond %{REQUEST_FILENAME} !-f
+RewriteCond %{REQUEST_FILENAME} !-d
+RewriteRule .*\.php - [L]
+
+RewriteCond %{REQUEST_FILENAME} !-f
+RewriteCond %{REQUEST_FILENAME} !-d
+RewriteRule ^([^/]+)/(.*)$ index.php?lang=$1&page=/$2 [L]
+</IfModule>
+
+```
+
+Edit RewriteBase directive to match your own setup.
+
+If, when trying to access the site, you get a "404 Not Found" error, this means your `.htaccess` file is not taken into account by Apache.
+
+You will then need to edit `/etc/apache2/apache2.conf` file and replace :
+
+```
+<Directory /var/www/>
+        Options Indexes FollowSymLinks
+        AllowOverride None
+        Require all granted
+</Directory>
+```
+with :
+```
+<Directory /var/www/>
+        Options Indexes FollowSymLinks
+        AllowOverride All
+        Require all granted
+</Directory>
+```
+
+### config.php
+
+In ̀`config.php`, edit $rootURL var according to your setup.
+
 
diff --git a/README.md b/README.md
index 946c90cedd2481b8610921fc60518d5a0e284680..42b35bfc6fb2822a4f906db3f3f05d575f266894 100644
--- a/README.md
+++ b/README.md
@@ -2,4 +2,4 @@
 
 - français : [LISEZ-MOI.md](LISEZ-MOI.md)
 - english : [READ-ME.md](READ-ME.md)
-- 
\ No newline at end of file
+
diff --git a/cesiumDownloads.php b/cesiumDownloads.php
index 2ad2b565582b6b9d6be4c6a7ce813c24b0e29101..5713e5da68e3aa3a2c5d848f27b79d4257f30c65 100644
--- a/cesiumDownloads.php
+++ b/cesiumDownloads.php
@@ -1,63 +1,90 @@
 <?php
 
 
-$cesiumDownloads = 
+$cesiumDownloads =
 [
 	'android' => [
-		'title' => 'Android', 
-		'url' => 'https://play.google.com/store/apps/details?id=fr.duniter.cesium', 
-		'img' => 'android.png', 
-		'desc' => _('Disponible directement sur le Play Store'), 
+		'title' => 'Android',
+		'url' => 'https://play.google.com/store/apps/details?id=fr.duniter.cesium',
+		'img' => 'android.svg',
+		'desc' => _('Disponible directement sur le Play Store'),
 		'extra' => sprintf(_('(ou <a href="%s">télécharger le fichier .apk</a>)'), 'https://github.com/duniter/cesium/releases/download/v'. $cesiumVersions['android'] .'/cesium-v'. $cesiumVersions['android'] .'-android.apk')
-	], 
+	],
 	'iphone' => [
-		'title' => 'iPhone', 
-		'url' => 'https://apps.apple.com/app/cesium-%C4%9F1/id1471028018', 
-		'img' => 'apple.png', 
-		'desc' => _('Disponible sur l\'App Store'), 
+		'title' => 'iPhone',
+		'url' => 'https://apps.apple.com/app/cesium-%C4%9F1/id1471028018',
+		'img' => 'apple.svg',
+		'desc' => _('Disponible sur l\'App Store'),
 		'extra' => ''
-	], 
-	'linux' => [
-		'title' => 'Linux', 
-		'url' => sprintf('https://github.com/duniter/cesium/releases/download/v%s/cesium-desktop-v%s-linux-x64.deb', $cesiumVersions['linux'], $cesiumVersions['linux']), 
-		'img' => 'tux.png', 
-		'desc' => _('Paquet .deb pour Debian ou Ubuntu'), 
+	],
+	'firefox' => [
+		'title' => _('Firefox'),
+		'url' => sprintf('https://github.com/duniter/cesium/releases/download/v%s/cesium-v%s-extension-firefox.xpi', $cesiumVersions['firefox'], $cesiumVersions['firefox']),
+		'img' => 'firefox2019.png',
+		'desc' => _('Module complémentaire pour Firefox'),
+		'extra' => ''
+	],
+	'chromium' => [
+		'title' => _('Chromium&nbsp;/&nbsp;Chrome'),
+		'url' => 'https://chrome.google.com/webstore/detail/cesium/ocbhjemiokgibfojkkjapfealnbmgoek',
+		'img' => 'chrome.svg',
+		'desc' => _('Extension pour Chromium&nbsp;/&nbsp;Chrome'),
+		'extra' => ''
+	],
+	'brave' => [
+		'title' => _('Brave'),
+		'url' => 'https://chrome.google.com/webstore/detail/cesium/ocbhjemiokgibfojkkjapfealnbmgoek',
+		'img' => 'brave_lion.svg',
+		'desc' => _('Extension pour Brave'),
+		'extra' => ''
+	],
+	'debian' => [
+		'title' => 'Ubuntu&nbsp;/ Debian',
+		'url' => sprintf('https://github.com/duniter/cesium/releases/download/v%s/cesium-desktop-v%s-linux-x64.deb', $cesiumVersions['debian'], $cesiumVersions['debian']),
+		'img' => 'cof_orange_hex.svg',
+		'desc' => _('Paquet .deb pour Debian et ses dérivés (Ubuntu, Linux Mint, etc.)'),
 		'extra' => _('En cas de problème&nbsp;:') . '<br /><code>sudo apt-get install -y libgconf-2-4</code>'
-	], 
+	],
+	'arch' => [
+		'title' => 'Arch Linux (et dérivés)',
+		'url' => sprintf('https://aur.archlinux.org/packages/cesium-desktop-deb'),
+		'img' => 'arch.svg',
+		'desc' => _('A installer via AUR'),
+		'extra' => _('<code>yaourt -S cesium-desktop-deb</code>')
+	],
 	'windows' => [
-		'title' => 'Windows', 
-		'url' => sprintf('https://github.com/duniter/cesium/releases/download/v%s/cesium-desktop-v%s-windows-x64.exe', $cesiumVersions['windows'], $cesiumVersions['windows']), 
-		'img' => 'windows.png', 
-		'desc' => _('Installateur .exe pour Windows'), 
+		'title' => 'Windows',
+		'url' => sprintf('https://github.com/duniter/cesium/releases/download/v%s/cesium-desktop-v%s-windows-x64.exe', $cesiumVersions['windows'], $cesiumVersions['windows']),
+		'img' => 'windows.svg',
+		'desc' => _('Installateur .exe pour Windows'),
 		'extra' => _('Lancez le .exe et suivez les instructions à l\'écran')
-	], 
+	],
 	'mac' => [
-		'title' => 'Mac', 
-		'url' => sprintf('https://github.com/duniter/cesium/releases/download/v%s/cesium-v%s-web.zip', $cesiumVersions['mac'], $cesiumVersions['mac']), 
-		'img' => 'apple.png', 
-		'desc' => _('Version web fonctionnant sous Mac'), 
+		'title' => 'Mac',
+		'url' => sprintf('https://github.com/duniter/cesium/releases/download/v%s/cesium-v%s-web.zip', $cesiumVersions['mac'], $cesiumVersions['mac']),
+		'img' => 'apple.svg',
+		'desc' => _('Version web fonctionnant sous Mac'),
 		'extra' => _('Décompressez le fichier .zip et ouvrez le fichier index.html')
-	], 
-	'yunohost' => [
-		'title' => 'Yunohost', 
-		'url' => 'https://github.com/duniter/cesium_ynh', 
-		'img' => 'yunohost.png', 
-		'desc' => _('Paquet pour Yunohost'), 
-		'extra' => ''
-	], 
+	],
 	'web' => [
-		'title' => 'Web', 
-		'url' => sprintf('https://github.com/duniter/cesium/releases/download/v%s/cesium-v%s-web.zip', $cesiumVersions['web'], $cesiumVersions['web']), 
-		'img' => '1024px-Applications-internet.png', 
-		'desc' => _('Pour une installation sur un serveur web'), 
+		'title' => 'Web',
+		'url' => sprintf('https://github.com/duniter/cesium/releases/download/v%s/cesium-v%s-web.zip', $cesiumVersions['web'], $cesiumVersions['web']),
+		'img' => '1024px-Applications-internet.png',
+		'desc' => _('Pour une installation sur un serveur web'),
+		'extra' => ''
+	],
+	'yunohost' => [
+		'title' => 'Yunohost',
+		'url' => 'https://github.com/duniter/cesium_ynh',
+		'img' => 'yunohost.svg',
+		'desc' => _('Paquet pour Yunohost'),
 		'extra' => ''
-	], 
+	],
 	'livrables' => [
-		'title' => _('Livrables'), 
-		'url' => 'https://github.com/duniter/cesium/releases', 
-		'img' => '1200px-Octicons-mark-github.png', 
-		'desc' => _('Toutes versions disponibles sur GitHub'), 
+		'title' => _('Livrables'),
+		'url' => 'https://github.com/duniter/cesium/releases',
+		'img' => 'github.svg',
+		'desc' => _('Toutes versions disponibles sur GitHub'),
 		'extra' => ''
-	]
+	],
 ];
-
diff --git a/cesiumVersions.php b/cesiumVersions.php
index 3233c5c5ba9c346ed2598f509fecfc119fa6dee0..290e912c10636774cab5ec8bbf90394a9f073d39 100644
--- a/cesiumVersions.php
+++ b/cesiumVersions.php
@@ -1,11 +1,13 @@
 <?php
 
 $cesiumVersions = [
-	   'home' => '1.4.3', 
-	'android' => '1.4.3', 
-	  'linux' => '1.4.3', 
-	'windows' => '1.3.11', 
-	    'mac' => '1.4.3', 
-	    'web' => '1.4.3'
+	   'home' => '1.6.5',
+	'android' => '1.6.5',
+	 'debian' => '1.6.1',
+ 	   'arch' => '1.6.1', 
+	'windows' => '1.3.11',
+	'firefox' => '1.6.5',
+	    'mac' => '1.3.11',
+	    'web' => '1.6.5',
+
 ];
-	   
diff --git a/compile.sh b/compile.sh
new file mode 100755
index 0000000000000000000000000000000000000000..210fc905cbe4a7632e41c461f5b788456e1b2b32
--- /dev/null
+++ b/compile.sh
@@ -0,0 +1,4 @@
+#!/bin/bash
+
+lessc lib/style.less lib/style.css
+
diff --git a/config.php b/config.php
index 6b8c4b5ae6d2b7546c425a3e6b871e3220684dc7..0403ebe60d851d5709bc15dfa2a2f4c25082e3cf 100644
--- a/config.php
+++ b/config.php
@@ -2,8 +2,10 @@
 
 include('cesiumVersions.php');
 
-define('FUNDING_PUBKEY', 'CitdnuQgZ45tNFCagay7Wh12gwwHM8VLej1sWmfHWnQX');
-define('FUNDING_TARGET', '100');
+define('FUNDING_PUBKEY',  '78ZwwgpgdH5uLZLbThUQH7LKwPgjMunYfLiCfUCySkM8');
+// Duniter : 78ZwwgpgdH5uLZLbThUQH7LKwPgjMunYfLiCfUCySkM8
+// Cesium : CitdnuQgZ45tNFCagay7Wh12gwwHM8VLej1sWmfHWnQX
+define('FUNDING_TARGET', 20*40+230);
 
 $legalNotice =
 	[
@@ -13,11 +15,18 @@ $legalNotice =
 	];
 
 
+if ($_SERVER['SERVER_NAME'] == 'localhost') {
+	
+	ini_set('display_errors', 1);
+	ini_set('display_startup_errors', 1);
+	error_reporting(E_ALL);
+}
 
 // Trouver une façon de définir $rootURL sans faire ça :
 
 if ($_SERVER['SERVER_NAME'] == 'localhost') {
-	$rootURL = '/www/cesium-website';
+	// Adaptez la ligne suivante à votre configuration (sans slash à la fin)
+	$rootURL = '/cesium-website-project/cesium_website';
 } else {
 	$rootURL = '';
 }
@@ -53,10 +62,6 @@ $availableLanguages =
 		 'name' => 'español',
 		 'folder' => 'es_ES'
 		 ],
-	 'va' => [
-		 'name' => 'valyrio',
-		 'folder' => 'en_US'
-		 ],
 	/*
 	 'it' => [
 		 'name' => 'italiano',
@@ -93,4 +98,4 @@ include('inc/display.php');
 
 
 define('MOD_REWRITE', 'on');
-define('FUNDING_ALT', false);
+define('FUNDING_ALT', (date('d/m') == '01/04'));
diff --git a/foot.php b/foot.php
index 0a1335fef694cf0be2e677c3c4ab37af08c24ceb..987453d053d90b6dc00515adc332bb5245e3b40b 100644
--- a/foot.php
+++ b/foot.php
@@ -1,37 +1,31 @@
-<?php
-
-textdomain('menu');
-
-?>
-
 			</main>
 
 			<footer>
 				<div>
 					<nav id="sitemap">
 						<h5>
-							<?php echo _('Plan du site'); ?>
+							<?php echo dgettext('menu', 'Plan du site'); ?>
 						</h5>
 
 						<ul>
 							<li>
 								<a href="<?php echo parseURI('/'); ?>">
-									<?php echo _('Accueil'); ?>
+									<?php echo dgettext('menu', 'Accueil'); ?>
 								</a>
 							</li>
 							<li>
-								<a href="<?php echo parseURI(_('/fonctionnalites')); ?>">
-									<?php echo _('Fonctionnalités'); ?>
+								<a href="<?php echo parseURI(dgettext('menu', '/fonctionnalites')); ?>">
+									<?php echo dgettext('menu', 'Fonctionnalités'); ?>
 								</a>
 							</li>
 							<li>
-								<a href="<?php echo parseURI(_('/telechargement')); ?>">
-									<?php echo _('Téléchargement'); ?>
+								<a href="<?php echo parseURI(dgettext('menu', '/telechargement')); ?>">
+									<?php echo dgettext('menu', 'Téléchargement'); ?>
 								</a>
 							</li>
 							<li>
 								<a href="https://forum.duniter.org/c/support/cesium">
-									<?php echo _('Support'); ?>
+									<?php echo dgettext('menu', 'Support'); ?>
 								</a>
 							</li>
 						</ul>
@@ -39,28 +33,28 @@ textdomain('menu');
 
 					<nav id="developper-links">
 						<h5>
-							<?php echo _('Développeur ? Rejoignez-nous !');?>
+							<?php echo dgettext('menu', 'Développeur ? Rejoignez-nous !');?>
 						</h5>
 
 						<ul>
 							<li>
 								<a href="https://forum.duniter.org/c/support/cesium">
-									<?php echo _('Forum Cesium'); ?>
+									<?php echo dgettext('menu', 'Forum Cesium'); ?>
 								</a>
 							</li>
 							<li>
 								<a href="https://forum.duniter.org/c/presentations">
-									<?php echo _('Venez faire connaissance'); ?>
+									<?php echo dgettext('menu', 'Venez faire connaissance'); ?>
 								</a>
 							</li>
 							<li>
 								<a href="https://git.duniter.org/clients/cesium-grp/cesium">
-									<?php echo _('Forge GitLab de Cesium'); ?>
+									<?php echo dgettext('menu', 'Forge GitLab de Cesium'); ?>
 								</a>
 							</li>
 							<li>
 								<a href="https://git.duniter.org/clients/cesium-grp/cesium/blob/master/doc/development_guide.md">
-									<?php echo _('Guide du développement Cesium'); ?>
+									<?php echo dgettext('menu', 'Guide du développement Cesium'); ?>
 								</a>
 							</li>
 							<li>
@@ -79,12 +73,12 @@ textdomain('menu');
 						</p>
 
 						<p>
-							<a href="<?php echo $rootURL . _('/mentions-legales'); ?>">Mentions légales</a>
+							<a href="<?php echo $rootURL . dgettext('menu', '/mentions-legales'); ?>">Mentions légales</a>
 						</p>
 					</section>
 
 					<nav id="langSelector">
-						<h5><?php echo _('Choix de langue'); ?></h5>
+						<h5><?php echo dgettext('menu', 'Choix de langue'); ?></h5>
 
 						<ul>
 							<?php 
@@ -115,7 +109,7 @@ textdomain('menu');
 									} else {
 										
 										echo '
-										<a href="'. $rootURL .'/'. $thisLangIsoCode . _($pagePermalink) .'">
+										<a href="'. $rootURL .'/'. $thisLangIsoCode . dgettext('menu', $pagePermalink) .'">
 												<span>
 													' . $thisLangIsoCode . '
 												</span>
diff --git a/head.php b/head.php
index 4b5b2a334fd15f4795bf413b287cf13bf696767c..11624ce5fc322b817aace7a4189a9ec26bbf6f3d 100644
--- a/head.php
+++ b/head.php
@@ -1,6 +1,6 @@
 <?php
 if (!$pageIsHome) {
-	
+
 	$pageTitle .= " - "  . "Cesium Ğ1";
 
 }
@@ -19,7 +19,7 @@ $bodyIds = !isset($bodyIds) ? '' : $bodyIds;
 		<title><?php echo $pageTitle; ?></title>
 		<link type="image/x-icon" rel="shortcut icon" href="<?php echo $rootURL; ?>/img/favicon.png" />
 		<meta name="generator" content="BorisPaing" />
-		
+
 
 		<meta name="description" content="<?php echo $pageDescription; ?>" />
 
@@ -27,60 +27,83 @@ $bodyIds = !isset($bodyIds) ? '' : $bodyIds;
 		<meta property="og:description" content="<?php echo $pageDescription; ?>" />
 		<meta property="og:url" content="http://cesium.app/" />
 		<meta property="og:site_name" content="Cesium Ğ1" />
-		
-		<meta property="og:image" content="<?php echo $rootURL . '/i18n/' . LANG_FOLDER . '/contents' . _('/accueil') . _('/Cesium-G1-maquette.png'); ?>" />
+
+		<meta property="og:image" content="<?php echo $rootURL . '/i18n/' . LANG_FOLDER . '/contents' . dgettext('menu', '/accueil') . dgettext('home', '/Cesium-G1-maquette.png'); ?>" />
 		<meta property="og:type" content="website" />
 
 		<meta name="twitter:description" content="<?php echo $pageDescription; ?>" />
 		<meta name="twitter:title" content="<?php echo $pageTitle; ?>" />
-		
-		<meta name="twitter:image" content="<?php echo $rootURL . '/i18n/' . LANG_FOLDER . '/contents' . _('/accueil') . _('/Cesium-G1-maquette.png'); ?>" />
+
+		<meta name="twitter:image" content="<?php echo $rootURL . '/i18n/' . LANG_FOLDER . '/contents' . dgettext('menu', '/accueil') . dgettext('home', '/Cesium-G1-maquette.png'); ?>" />
 		<meta name="twitter:card" content="summary_large_image" />
-		
+
 		<script type="text/javascript" src="<?php echo $rootURL; ?>/lib/lazyImg.min.js"></script>
-		
+
 		<?php
 		foreach ($availableLanguages as $isoCode => $v)
 		{
-			echo '<link rel="alternate" hreflang="'. $isoCode .'" href="'. $rootURL .'/'. $isoCode .'/" />'; 
+			echo '<link rel="alternate" hreflang="'. $isoCode .'" href="'. $rootURL .'/'. $isoCode .'/" />';
 		}
 		?>
 
-		<link type="text/css" rel="stylesheet" media="screen" href="<?php echo $rootURL; ?>/lib/style.css" />
-		
+		<?php
+
+		if ($_SERVER['SERVER_NAME'] == 'localhost') {
+
+			echo '
+			<link rel="stylesheet/less" type="text/css" href="' . $rootURL . '/lib/style.less" />
+			<script src="' . $rootURL . '/lib/less-3.9.0.min.js" ></script>
+			';
+
+		} else {
+
+			echo '<link rel="stylesheet" type="text/css" media="screen" href="' . $rootURL . '/lib/style.css" />';
+
+		}
+
+		?>
+
 		<?php if (FUNDING_ALT) echo '<link type="text/css" rel="stylesheet" media="screen" href="'. $rootURL .'/lib/style-funding-alt-1.css" />'; ?>
-		
+
 	</head>
 	<body id="<?php echo $bodyIds; ?>">
 			<?php
-				textdomain("menu");
-
 				$menu =
 					array(
 						[
-							'uri' => _('/'), 
-							'label' => _('Accueil')
-						], 
+							'uri' => dgettext('menu', '/'),
+							'label' => dgettext('menu', 'Accueil')
+						],
 						[
-							'uri' => _('/fonctionnalites'), 
-							'label' => _('Fonctionnalités')
-						], 
+							'uri' => dgettext('menu', '/fonctionnalites'),
+							'label' => dgettext('menu', 'Fonctionnalités')
+						],
+						[
+							'uri' => dgettext('menu', '/telechargement'),
+							'label' => dgettext('menu', 'Télécharger')
+						],
+                        [
+                                'url' => 'https://demo.cesium.app',
+                                'label' => dgettext('menu', 'Demo')
+                        ],
 						[
-							'uri' => _('/telechargement'), 
-							'label' => _('Télécharger')
+							'uri' => dgettext('menu', '/tutoriel-cesium') . '/',
+							'label' => dgettext('menu', 'Tutoriel')
 						],
 						[
-							'uri' => _('/tutoriel-cesium') . '/', 
-							'label' => _('Tutoriel')
+							'uri' => dgettext('menu', '/merci'),
+							'label' => '❤ ' . dgettext('menu', 'Encouragez-nous !'),
+							'class' => 'support-us'
+							// ❤
 						]
 					);
 			?>
-			
+
 			<header>
 				<?php
-				
+
 				$element = $pageIsHome ? 'h1' : 'h2';
-				
+
 				echo '
 				<'. $element .'>
 					<a href="'. parseURI("/") .'">
@@ -88,10 +111,10 @@ $bodyIds = !isset($bodyIds) ? '' : $bodyIds;
 					</a>
 				</'. $element .'>';
 				?>
-				
+
 				<p>
 					<a href="<?php echo parseURI("/"); ?>">
-						<img src="<?php echo $rootURL; ?>/lib/logo.png" alt="logo Cesium Ğ1" />
+						<img src="<?php echo $rootURL; ?>/lib/logo-cesium.svg" alt="logo Cesium Ğ1" />
 					</a>
 				</p>
 
@@ -106,11 +129,26 @@ $bodyIds = !isset($bodyIds) ? '' : $bodyIds;
 
 						for ($i = 0; $i < $itemsNb; ++$i)
 						{
-							$active = ($_SERVER['REQUEST_URI'] == parseURI($menu[$i]['uri'])) ? ' class="active"' : '';
+							$classes = '';
+
+
+							$classes .= isset($menu[$i]['class']) ? ' '. $menu[$i]['class'] . '"' : '';
+
+							if (isset($menu[$i]['uri'])) {
+
+								$classes .= ($_SERVER['REQUEST_URI'] == parseURI($menu[$i]['uri'])) ? ' active' : '';
+								$href = parseURI($menu[$i]['uri']);
+
+							} else {
+
+								$href = $menu[$i]['url'];
+							}
+
+							$classes = !empty($classes) ? ' class="'. $classes .'"' : '';
 
 							echo '
-							<li'. $active .'>
-								<a role="menuitem" href="'. parseURI($menu[$i]['uri']) . '">
+							<li'. $classes . '>
+								<a role="menuitem" href="'. $href . '">
 									<span>'. $menu[$i]['label'] .'</span>
 								</a>
 							</li>';
@@ -120,5 +158,5 @@ $bodyIds = !isset($bodyIds) ? '' : $bodyIds;
 					</ul>
 				</nav>
 			</header>
-			
+
 			<main>
diff --git a/i18n/en_GB/LC_MESSAGES/home.mo b/i18n/en_GB/LC_MESSAGES/home.mo
index e1e80d4a38e733c1e424d97a818bb98f8a2df8b4..c56bb8f6b04fcf97435c115f8ac0e471ad29b37a 100644
Binary files a/i18n/en_GB/LC_MESSAGES/home.mo and b/i18n/en_GB/LC_MESSAGES/home.mo differ
diff --git a/i18n/en_GB/LC_MESSAGES/home.po b/i18n/en_GB/LC_MESSAGES/home.po
index 615fec312db13d43545a917fa4b12dfede06a0c3..34a23f16762c4ff70124b1699565e62c6b3a88c8 100644
--- a/i18n/en_GB/LC_MESSAGES/home.po
+++ b/i18n/en_GB/LC_MESSAGES/home.po
@@ -2,14 +2,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "POT-Creation-Date: 2019-11-07 17:18+0100\n"
-"PO-Revision-Date: 2019-11-07 17:28+0100\n"
+"PO-Revision-Date: 2020-02-28 20:39+0100\n"
 "Last-Translator: \n"
 "Language-Team: \n"
 "Language: en\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 2.2.4\n"
+"X-Generator: Poedit 2.0.6\n"
 "X-Poedit-Basepath: ../../../tpl\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "X-Poedit-SearchPath-0: home.php\n"
@@ -111,8 +111,8 @@ msgid ""
 "votre propre monnaie libre."
 msgstr ""
 "This means you can have a look at its source code (on <a href=\"%s"
-"\">GitLab</a>) and adapt it to your need in order to, for instance, create "
-"your own free money."
+"\">GitLab</a>) and adapt it to your need in order, for instance, to provide "
+"a client for your own libre currency."
 
 #: home.php:89
 msgid "Plus que quelques pas<br />avant de recevoir vos premières Ğ1"
diff --git a/i18n/en_US/LC_MESSAGES/home.mo b/i18n/en_US/LC_MESSAGES/home.mo
deleted file mode 100644
index 0b9a88341e51fe2cf0aa74f76d91a39e7e8ba660..0000000000000000000000000000000000000000
Binary files a/i18n/en_US/LC_MESSAGES/home.mo and /dev/null differ
diff --git a/i18n/en_US/LC_MESSAGES/home.po b/i18n/en_US/LC_MESSAGES/home.po
deleted file mode 100644
index 6a7b7f2c2fa092640c4d6b97fe0af8aacaa706ec..0000000000000000000000000000000000000000
--- a/i18n/en_US/LC_MESSAGES/home.po
+++ /dev/null
@@ -1,164 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: \n"
-"POT-Creation-Date: 2019-11-08 12:34+0100\n"
-"PO-Revision-Date: 2019-11-08 12:38+0100\n"
-"Last-Translator: \n"
-"Language-Team: \n"
-"Language: en\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 2.2.4\n"
-"X-Poedit-Basepath: ../../../tpl\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Poedit-SearchPath-0: home.php\n"
-
-#: home.php:4
-msgid "Cesium Ğ1 - Site officiel"
-msgstr ""
-
-#: home.php:5
-msgid ""
-"Cesium est l'application la plus intuitive pour gérer votre portefeuille en "
-"monnaie-libre Ğ1."
-msgstr ""
-
-#: home.php:16 home.php:145
-msgid "/accueil"
-msgstr "/home"
-
-#: home.php:16
-msgid "/Cesium-G1-maquette.png"
-msgstr "/Cesium-G1-mockup.png"
-
-#: home.php:21
-msgid "Recevez et envoyez <br />de la monnaie libre Ğ1"
-msgstr "Jiōragon se jikagon<br />Ğ1 dāerī gēlior"
-
-#: home.php:25 home.php:93 home.php:104
-msgid "/telechargement"
-msgstr "/derebagon"
-
-#: home.php:26
-#, php-format
-msgid "Télécharger Cesium %s"
-msgstr "Derēbagon Cesium %s"
-
-#: home.php:32
-#, php-format
-msgid "Logiciel libre sous licence %s"
-msgstr "Dāez sētenon (%s)"
-
-#: home.php:36
-#, php-format
-msgid "Développeur ?"
-msgstr "Sētios ?"
-
-#: home.php:37
-msgid "/developpeurs"
-msgstr "/developers"
-
-#: home.php:38
-msgid "Rejoignez-nous !"
-msgstr "Īlōn imazumbatis !"
-
-#: home.php:48
-msgid "Cesium : la solution simple<br />pour échanger en monnaie libre"
-msgstr ""
-
-#: home.php:52
-msgid "Sécurisé"
-msgstr "Ȳgha"
-
-#: home.php:56
-msgid ""
-"Cesium signe numériquement vos transactions avant de les transmettre à la "
-"blockchain de Duniter."
-msgstr ""
-
-#: home.php:60
-msgid "Offert"
-msgstr ""
-
-#: home.php:64
-msgid ""
-"Parce qu'il est codé avec amour par une communauté de gens qui croient aux "
-"monnaies libres en général (et à la Ğ1 en particulier), Cesium vous est "
-"offert sans exiger de contre-partie. "
-msgstr ""
-
-#: home.php:70
-msgid "Libre"
-msgstr "Dāez"
-
-#: home.php:75
-msgid "Cesium est un logiciel libre."
-msgstr "Cesium dāez sētenon issa."
-
-#: home.php:77
-#, php-format
-msgid ""
-"Vous êtes donc libre d'en consulter le code source (sur <a href=\"%s"
-"\">GitLab</a>), et d'adapter Cesium à vos besoins pour, par exemple, lancer "
-"votre propre monnaie libre."
-msgstr ""
-
-#: home.php:89
-msgid "Plus que quelques pas<br />avant de recevoir vos premières Ğ1"
-msgstr ""
-
-#: home.php:98
-msgid "Téléchargez Cesium"
-msgstr "Derēbagon Cesium"
-
-#: home.php:102
-#, php-format
-msgid ""
-"Rendez-vous sur <a href=\"%s\">la page Téléchargement</a> pour récupérer le "
-"fichier qui convient à votre système d'exploitation."
-msgstr ""
-
-#: home.php:115
-msgid "Créez un compte"
-msgstr ""
-
-#: home.php:118
-msgid ""
-"Sur l'accueil, cliquez sur \"Créer un compte\", puis \"Commencer\" et "
-"\"Simple portefeuille\"."
-msgstr ""
-
-#: home.php:122
-msgid "Choisissez un identifiant secret et un mot de passe tout aussi secret."
-msgstr ""
-
-#: home.php:123
-msgid ""
-"Mémorisez-les bien car il ne sera pas possible de les retrouver ensuite."
-msgstr ""
-
-#: home.php:132
-msgid "Recevez des paiements"
-msgstr ""
-
-#: home.php:135
-msgid ""
-"Cliquez sur votre clef publique, copiez-la et transmettez-la à la personne "
-"qui souhaite vous faire un virement en Ğ1."
-msgstr ""
-
-#: home.php:145
-msgid "/avis"
-msgstr ""
-
-#: home.php:152
-msgid "Ce qu'elles et ils en pensent"
-msgstr "Skoros vestri?"
-
-#: home.php:180
-msgid "Cesium partout"
-msgstr "Cesium tolviot"
-
-#~ msgid "telechargement"
-#~ msgstr "download"
diff --git a/i18n/en_US/LC_MESSAGES/menu.mo b/i18n/en_US/LC_MESSAGES/menu.mo
deleted file mode 100644
index 06fdd2dae0395b1d64945a505c35933c26ff62bb..0000000000000000000000000000000000000000
Binary files a/i18n/en_US/LC_MESSAGES/menu.mo and /dev/null differ
diff --git a/i18n/en_US/LC_MESSAGES/menu.po b/i18n/en_US/LC_MESSAGES/menu.po
deleted file mode 100644
index 2faca24ed5f0a116e94afd8f7052114bd73e606e..0000000000000000000000000000000000000000
--- a/i18n/en_US/LC_MESSAGES/menu.po
+++ /dev/null
@@ -1,59 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: \n"
-"POT-Creation-Date: 2019-11-06 23:51+0100\n"
-"PO-Revision-Date: 2019-11-06 23:54+0100\n"
-"Last-Translator: \n"
-"Language-Team: \n"
-"Language: en\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 2.2.4\n"
-"X-Poedit-Basepath: ../../..\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Poedit-SearchPath-0: head.php\n"
-
-#: head.php:61
-msgid "/"
-msgstr "/"
-
-#: head.php:62
-msgid "Accueil"
-msgstr "Lenton"
-
-#: head.php:65
-msgid "/fonctionnalites"
-msgstr "/rhaenagon"
-
-#: head.php:66
-msgid "Fonctionnalités"
-msgstr "Rhaenagon"
-
-#: head.php:69
-msgid "/telechargement"
-msgstr "/derebagon"
-
-#: head.php:70
-msgid "Télécharger"
-msgstr "Derēbagon"
-
-#: head.php:73
-msgid "/tutoriel-cesium"
-msgstr "/teptys"
-
-#: head.php:74
-msgid "Tutoriel"
-msgstr "Teptys"
-
-#~ msgid "Cesium Ğ1"
-#~ msgstr "Cesium Ğ1"
-
-#~ msgid "/creer-compte-cesium-g1"
-#~ msgstr "/sign-up"
-
-#~ msgid "Créer un compte"
-#~ msgstr "Sign up"
-
-#~ msgid "Utiliser"
-#~ msgstr "Usage"
diff --git a/i18n/en_US/contents/home/Cesium-G1-mockup.png b/i18n/en_US/contents/home/Cesium-G1-mockup.png
deleted file mode 100644
index 5d999b7b8b2f4001d9d08a8c7611025540e1f6ac..0000000000000000000000000000000000000000
Binary files a/i18n/en_US/contents/home/Cesium-G1-mockup.png and /dev/null differ
diff --git a/i18n/en_US/contents/home/avis/01-valar-dohaeris.html b/i18n/en_US/contents/home/avis/01-valar-dohaeris.html
deleted file mode 100644
index 9462641531a3fbf5117b9f12c5dc22fbcb49f474..0000000000000000000000000000000000000000
--- a/i18n/en_US/contents/home/avis/01-valar-dohaeris.html
+++ /dev/null
@@ -1 +0,0 @@
-Valar dohaeris.
\ No newline at end of file
diff --git a/i18n/en_US/contents/home/avis/02-not-a-slave.html b/i18n/en_US/contents/home/avis/02-not-a-slave.html
deleted file mode 100644
index e8de9eb73f569f120df0fc31339abd5c96e6be5c..0000000000000000000000000000000000000000
--- a/i18n/en_US/contents/home/avis/02-not-a-slave.html
+++ /dev/null
@@ -1 +0,0 @@
-Issaros buzdari iksos daor.
\ No newline at end of file
diff --git a/i18n/fr_FR/contents/tuto/creer-un-compte/compte-membre/creer-fichier-de-revocation.html b/i18n/fr_FR/contents/tuto/creer-un-compte/compte-membre/creer-fichier-de-revocation.html
index 848ccb184511b0e92ef352e0833db61474b7f96f..8643c618eab6956e9ae8e539da21ca64739774f9 100644
--- a/i18n/fr_FR/contents/tuto/creer-un-compte/compte-membre/creer-fichier-de-revocation.html
+++ b/i18n/fr_FR/contents/tuto/creer-un-compte/compte-membre/creer-fichier-de-revocation.html
@@ -11,9 +11,10 @@
 		Vous enfreignez la licence Ğ1, par exemple en essayant de créer plusieurs comptes membre pour une même personne (vous ou quelqu'un d'autre)
 	</dt>
 	<dd>
-			La nouvelle se répandra à travers la communauté et vous ne serez plus jamais certifiés. Vous perdrez la création monétaire à vie, 
-			au sein de la Ğ1 et peut-être même au sein d'autres monnaies libres.
+			La nouvelle se répandra à travers la communauté et vous ne serez plus jamais certifié. Vous perdrez la création monétaire à vie, 
+			au sein de la Ğ1, et probablement même au sein d'autres monnaies libres.
 	</dd>
+	
 	<dt>
 		Un pirate devine vos identifiants
 	</dt>
@@ -23,6 +24,7 @@
 		vous vous rendez complice d'infraction à la licence Ğ1, et pouvez vous retrouver exclu de la Toile de Confiance. C'est d'autant plus 
 		risqué de perdre vos identifiants ici.
 	</dd>
+	
 	<dt>
 		Vous oubliez vos identifiants :
 	</dt>
diff --git a/i18n/fr_FR/contents/tuto/installer-cesium/deb.html b/i18n/fr_FR/contents/tuto/installer-cesium/deb.html
index 4c695d61e4501ab00e5ca53a2eb6e209893191e5..a0bce15e1a4b51c77bd01924ff5612387a016f17 100644
--- a/i18n/fr_FR/contents/tuto/installer-cesium/deb.html
+++ b/i18n/fr_FR/contents/tuto/installer-cesium/deb.html
@@ -4,32 +4,15 @@
 
 <p>Pour l’installer sur votre système .deb, deux méthodes s'offrent à vous&nbsp;:</p>
 
+<h2 id="interface-graphique">Méthode n°1 : Via l'interface graphique (logithèque Ubuntu)</h2>
 
-<h2 id="ligne-de-commande">Méthode n°1 : En ligne de commande</h2>
-
-<p>Vous devez être connecté avec un compte ayant des droits “sudo”.</p>
-
-<ol>
-	<li>Télécharger Cesium :<br />
-		<pre class="console">wget lien/vers/cesium</pre>
-	</li>
-	<li>Installez-le (remplacez XXX par la bonne version)<br />
-		<pre class="console">sudo dpkg -i cesium-desktop-vXXX.deb</pre>
-	</li>
-</ol>
-
-<p>S&#39;il y a un souci à la première exécution, installez les éventuelle bibliothèque manquante&nbsp;:</p>
-
-<pre class="console">sudo apt-get install libgconf-2-4</pre>
-
-
-<h2 id="interface-graphique">Méthode n°2 : Via l'interface graphique (logithèque Ubuntu)</h2>
+<iframe width="560" height="315" sandbox="allow-same-origin allow-scripts" src="https://peertube.mastodon.host/videos/embed/ae193f3d-24be-41e1-b753-42776d136879" frameborder="0" allowfullscreen></iframe>
 
 <ol>
     <li>
 		Si votre ordinateur tourne avec Ubuntu, la logithèque est normalement disponible.
 	</li>
-    
+
 	<li>
 		Téléchargez Cesium depuis <a href="../../telechargement">la page téléchargement</a>
         <br/>
@@ -37,25 +20,41 @@
 			<img src="screenshots/Deb-tel-site.png" alt="page de téléchargement Cesium.app." />
 		</a>
 	</li>
-	
+
     <li>
 		Ouvrez le dossier de téléchargement. <br/>
         <img src="screenshots/Deb-telecharger-3.png" alt="page de téléchargement Cesium.app." />
 	</li>
-	
+
     <li>
 		Faites un double-clic sur le paquet cesium-desktop-vXXX.deb</li>
-	
+
     <li>La logithèque va s'ouvrir. Cliquez sur "Installer" <br/>
         <img src="screenshots/Deb-logitheque.png" alt="logitheque Ubuntu" />
 	</li>
 </ol>
 
 <p>
-	Cesium derait finir de s'installer tout seul.
+	Cesium devrait finir de s'installer tout seul.
 </p>
+
 <p>
-	En cas de souci, installez le paquet <code>libgconf-2-4</code> en utilisant votre gestionnaire de paquets favori 
+	En cas de souci, installez le paquet <code>libgconf-2-4</code> en utilisant votre gestionnaire de paquets favori.
 </p>
-	
 
+<h2 id="ligne-de-commande">Méthode n°2 : En ligne de commande</h2>
+
+<p>Vous devez être connecté avec un compte ayant des droits “sudo”.</p>
+
+<ol>
+	<li>Télécharger Cesium :<br />
+		<pre class="console">wget lien/vers/cesium</pre>
+	</li>
+	<li>Installez-le (remplacez XXX par la bonne version)<br />
+		<pre class="console">sudo dpkg -i cesium-desktop-vXXX.deb</pre>
+	</li>
+</ol>
+
+<p>S&#39;il y a un souci à la première exécution, installez les éventuelle bibliothèque manquante&nbsp;:</p>
+
+<pre class="console">sudo apt-get install libgconf-2-4</pre>
diff --git a/i18n/fr_FR/contents/tuto/installer-cesium/ext-chromium.html b/i18n/fr_FR/contents/tuto/installer-cesium/ext-chromium.html
new file mode 100644
index 0000000000000000000000000000000000000000..a07930ee15226c8187f38aaae908d6108791f67b
--- /dev/null
+++ b/i18n/fr_FR/contents/tuto/installer-cesium/ext-chromium.html
@@ -0,0 +1,27 @@
+<h1>Installer Cesium dans Firefox</h1>
+
+
+<p>Ce tutoriel vous explique comment installer Cesium comme extension de navigateur pour Chromium/Chrome.
+Vous utiliserez Cesium <b>dans</b> le navigateur, mais <b>pas sur un site web</b>. Tout se passera dans votre ordinateur !<br/>
+</p>
+
+<ol>
+	<li>Ouvrez Chromium/Chrome et rendez-vous sur la page de <a href="https://cesium.app/fr/telechargement">téléchargement</a>
+	</li>
+
+	<li>Cliquez sur : Chromium/Chrome Add-on > Télécharger<br/>
+	<img src="screenshots/Chr-telecharger.png" alt="bouton telecharger"/>
+	</li>
+
+	<li>Cliquez sur "Add to Chrome", "Ajouter à Chrome".<br/>
+	<img src="screenshots/Chr-inst-1.png" /><br/>
+	</li>
+
+	<li>Acceptez l'installation avec "Add extension", "Ajouter l'extension".<br/>
+	<img src="screenshots/Chr-inst-2.png" /><br/>
+	</li>
+
+	<li>Et voilà ! Pour lancer Cesium, cliquez sur le logo Cesium en haut à droite.<br/>
+	<img src="screenshots/Chr-logo-ext.png" /><br/>
+	</li>
+</ol>
diff --git a/i18n/fr_FR/contents/tuto/installer-cesium/ext-firefox.html b/i18n/fr_FR/contents/tuto/installer-cesium/ext-firefox.html
new file mode 100644
index 0000000000000000000000000000000000000000..379f313bed999661721b3ac10eb343ba7bd1d56b
--- /dev/null
+++ b/i18n/fr_FR/contents/tuto/installer-cesium/ext-firefox.html
@@ -0,0 +1,29 @@
+<h1>Installer Cesium dans Firefox</h1>
+
+
+<p>Ce tutoriel vous explique comment installer Cesium comme extension de navigateur pour Firefox.
+Vous utiliserez Cesium <b>dans</b> Firefox, mais <b>pas sur un site web</b>. Tout se passera dans votre ordinateur !<br/>
+Si vous avez Firefox sur smartphone, ce tutoriel fonctionnera aussi.
+</p>
+
+<ol>
+	<li>Si vous ne l'avez pas déjà, installez <a href="https://www.mozilla.org/fr/firefox/new/">Firefox</a>
+	</li>
+
+	<li>Ouvrez Firefox et rendez-vous sur la page de <a href="https://cesium.app/fr/telechargement">téléchargement</a>
+	</li>
+
+	<li>Cliquez sur : Firefox Add-on > Télécharger<br/>
+	<img src="screenshots/Fir-telecharger.png" alt="bouton telecharger"/>
+	</li>
+
+	<li>Acceptez l'installation (deux boutons)<br/>
+	<img src="screenshots/Fir-inst-1.png" /><br/>
+	<img src="screenshots/Fir-inst-2.png" /><br/>
+	</li>
+
+	<li>Et voilà ! Pour lancer Cesium, cliquez sur le logo en haut à droite.<br/>
+	<img src="screenshots/Fir-inst-fin.png" /><br/>
+	<img src="screenshots/Fir-logo-ext.png" /><br/>
+	</li>
+</ol>
diff --git a/i18n/fr_FR/contents/tuto/installer-cesium/index.html b/i18n/fr_FR/contents/tuto/installer-cesium/index.html
index 8b8882c057727f9ce63ea4727c0703438a7800f9..8d637155f2daa9885c3b258e0685b1779775e6b5 100644
--- a/i18n/fr_FR/contents/tuto/installer-cesium/index.html
+++ b/i18n/fr_FR/contents/tuto/installer-cesium/index.html
@@ -13,6 +13,8 @@
 	<li><a href="deb">Gnu/Linux (.deb : Debian, Ubuntu, etc.)</a></li>
 	<li><a href="windows">Windows</a></li>
 	<li><a href="android">Android</a></li>
+	<li><a href="ext-firefox">Firefox (tout OS)</a></li>
+	<li><a href="ext-chromium">Chromium/chrome (tout OS)</a></li>
 	<li><a href="ios">iOS</a></li>
 	<li><a href="mac">Mac OS</a></li>
 	<li><a href="version-transportable">sur clef USB (tout OS)</a></li>
diff --git a/i18n/fr_FR/contents/tuto/installer-cesium/screenshots/Chr-inst-1.png b/i18n/fr_FR/contents/tuto/installer-cesium/screenshots/Chr-inst-1.png
new file mode 100644
index 0000000000000000000000000000000000000000..75488b159bb5d1c0f146bc67c047dc1f9b34f731
Binary files /dev/null and b/i18n/fr_FR/contents/tuto/installer-cesium/screenshots/Chr-inst-1.png differ
diff --git a/i18n/fr_FR/contents/tuto/installer-cesium/screenshots/Chr-inst-2.png b/i18n/fr_FR/contents/tuto/installer-cesium/screenshots/Chr-inst-2.png
new file mode 100644
index 0000000000000000000000000000000000000000..6edebf55eff88e0f5e32cbdf8cc92cd77683a251
Binary files /dev/null and b/i18n/fr_FR/contents/tuto/installer-cesium/screenshots/Chr-inst-2.png differ
diff --git a/i18n/fr_FR/contents/tuto/installer-cesium/screenshots/Chr-logo-ext.png b/i18n/fr_FR/contents/tuto/installer-cesium/screenshots/Chr-logo-ext.png
new file mode 100644
index 0000000000000000000000000000000000000000..296f807448c2b0f0579825c190554698906b01be
Binary files /dev/null and b/i18n/fr_FR/contents/tuto/installer-cesium/screenshots/Chr-logo-ext.png differ
diff --git a/i18n/fr_FR/contents/tuto/installer-cesium/screenshots/Chr-telecharger.png b/i18n/fr_FR/contents/tuto/installer-cesium/screenshots/Chr-telecharger.png
new file mode 100644
index 0000000000000000000000000000000000000000..e714253dab96f7f5f62f44367eac7efee74a6b76
Binary files /dev/null and b/i18n/fr_FR/contents/tuto/installer-cesium/screenshots/Chr-telecharger.png differ
diff --git a/i18n/fr_FR/contents/tuto/installer-cesium/screenshots/Fir-inst-1.png b/i18n/fr_FR/contents/tuto/installer-cesium/screenshots/Fir-inst-1.png
new file mode 100644
index 0000000000000000000000000000000000000000..ec97bd3c5d1f62317a379a436a206ab2ad24a17a
Binary files /dev/null and b/i18n/fr_FR/contents/tuto/installer-cesium/screenshots/Fir-inst-1.png differ
diff --git a/i18n/fr_FR/contents/tuto/installer-cesium/screenshots/Fir-inst-2.png b/i18n/fr_FR/contents/tuto/installer-cesium/screenshots/Fir-inst-2.png
new file mode 100644
index 0000000000000000000000000000000000000000..d8a597c108cdbcba8d8f240b7320799690e7fe93
Binary files /dev/null and b/i18n/fr_FR/contents/tuto/installer-cesium/screenshots/Fir-inst-2.png differ
diff --git a/i18n/fr_FR/contents/tuto/installer-cesium/screenshots/Fir-inst-fin.png b/i18n/fr_FR/contents/tuto/installer-cesium/screenshots/Fir-inst-fin.png
new file mode 100644
index 0000000000000000000000000000000000000000..fca3c3be0943458d39ef1820192de0f026c77c06
Binary files /dev/null and b/i18n/fr_FR/contents/tuto/installer-cesium/screenshots/Fir-inst-fin.png differ
diff --git a/i18n/fr_FR/contents/tuto/installer-cesium/screenshots/Fir-logo-ext.png b/i18n/fr_FR/contents/tuto/installer-cesium/screenshots/Fir-logo-ext.png
new file mode 100644
index 0000000000000000000000000000000000000000..6de12098fd1c17a2f3e9393be13ea92e50997da9
Binary files /dev/null and b/i18n/fr_FR/contents/tuto/installer-cesium/screenshots/Fir-logo-ext.png differ
diff --git a/i18n/fr_FR/contents/tuto/installer-cesium/screenshots/Fir-telecharger.png b/i18n/fr_FR/contents/tuto/installer-cesium/screenshots/Fir-telecharger.png
new file mode 100644
index 0000000000000000000000000000000000000000..511dac5f2121e4d8371d25823a0a1fa12069a6e6
Binary files /dev/null and b/i18n/fr_FR/contents/tuto/installer-cesium/screenshots/Fir-telecharger.png differ
diff --git a/i18n/fr_FR/contents/tuto/menu.html b/i18n/fr_FR/contents/tuto/menu.html
index 830bf1657d36b0b6cbdbbed7bab2167b7f9ebcb2..992510b97ec67edd5a635e2e5a92b659d421e0d9 100644
--- a/i18n/fr_FR/contents/tuto/menu.html
+++ b/i18n/fr_FR/contents/tuto/menu.html
@@ -1,14 +1,16 @@
 <ul>
 
 	<li>
-
 		<a href="installer-cesium/">
 			Installer Cesium Ğ1
 		</a>
+		
 		<ul>
 		    <li><a href="installer-cesium/deb">Sur Gnu/Linux (.deb : Debian, Ubuntu, etc.)</a></li>
 		    <li><a href="installer-cesium/windows">Windows</a></li>
 		    <li><a href="installer-cesium/android">Android</a></li>
+		    <li><a href="installer-cesium/ext-firefox">Firefox (tout OS)</a></li>
+		    <li><a href="installer-cesium/ext-chromium">Chromium/Chrome (tout OS)</a></li>
 		    <li><a href="installer-cesium/ios">iOS</a></li>
 		    <li><a href="installer-cesium/mac">Mac OS</a></li>
 			<li><a href="installer-cesium/version-transportable">Version transportable (tout OS)</a></li>
@@ -17,88 +19,88 @@
 	</li>
 
 	<li>
-
 		<a href="creer-un-compte/">
-			Créer un compte
-		</a>
-	</li>
-
-	<li>
-
-		<a href="creer-un-compte/simple-portefeuille-vs-compte-membre">
-			Compte membre ou simple portefeuille ?
-		</a>
-	</li>
-
-	<li>
-
-		<a href="creer-un-compte/simple-portefeuille/">
-			Simple portefeuille
+			Créer un compte sécurisé
 		</a>
+		
 		<ul>
-
 			<li>
-
-				<a href="creer-un-compte/simple-portefeuille/transformer-portefeuille-en-compte-membre">
-					Transformer un compte simple portefeuille en compte membre
+				<a href="creer-un-compte/simple-portefeuille-vs-compte-membre">
+					Compte membre ou simple portefeuille ?
 				</a>
 			</li>
-		</ul>
-	</li>
-
-	<li>
-
-		<a href="creer-un-compte/compte-membre/">
-			Compte membre
-		</a>
-		<ul>
-
+			
+			
 			<li>
-
-				<a href="creer-un-compte/compte-membre/pourquoi-securite-importante">
-					Pourquoi votre compte doit être ultra sécurisé
+				<a href="creer-un-compte/simple-portefeuille/">
+					Simple portefeuille
 				</a>
+				<ul>
+
+					<li>
+
+						<a href="creer-un-compte/simple-portefeuille/transformer-portefeuille-en-compte-membre">
+							Transformer un compte simple portefeuille en compte membre
+						</a>
+					</li>
+				</ul>
 			</li>
 
+			
 			<li>
-
-				<a href="creer-un-compte/compte-membre/comment-creer-compte-securise/">
-					Comment créer un compte sécurisé
+				<a href="creer-un-compte/compte-membre/">
+					Compte membre
 				</a>
 				<ul>
 
 					<li>
 
-						<a href="creer-un-compte/compte-membre/comment-creer-compte-securise/transformation-de-phrases">
-							La méthode par transformation de phrases
+						<a href="creer-un-compte/compte-membre/pourquoi-securite-importante">
+							Pourquoi votre compte doit être ultra sécurisé
 						</a>
 					</li>
 
 					<li>
 
-						<a href="creer-un-compte/compte-membre/comment-creer-compte-securise/methode-diceware">
-							La méthode Diceware
+						<a href="creer-un-compte/compte-membre/comment-creer-compte-securise/">
+							Comment créer un compte sécurisé
 						</a>
+						<ul>
+
+							<li>
+
+								<a href="creer-un-compte/compte-membre/comment-creer-compte-securise/transformation-de-phrases">
+									La méthode par transformation de phrases
+								</a>
+							</li>
+
+							<li>
+
+								<a href="creer-un-compte/compte-membre/comment-creer-compte-securise/methode-diceware">
+									La méthode Diceware
+								</a>
+							</li>
+						</ul>
 					</li>
-				</ul>
-			</li>
 
-			<li>
+					<li>
 
-				<a href="creer-un-compte/compte-membre/faire-certifier-son-compte">
-					Comment devenir co-créateur de la Ğ1 ?
-				</a>
-			</li>
+						<a href="creer-un-compte/compte-membre/faire-certifier-son-compte">
+							Comment devenir co-créateur de la Ğ1 ?
+						</a>
+					</li>
 
-			<li>
+					<li>
 
-				<a href="creer-un-compte/compte-membre/creer-fichier-de-revocation">
-					Comment ne pas être exclu en cas de vol ?
-				</a>
+						<a href="creer-un-compte/compte-membre/creer-fichier-de-revocation">
+							Comment ne pas être exclu en cas de vol ?
+						</a>
+					</li>
+				</ul>
 			</li>
 		</ul>
 	</li>
-
+	
 	<li>
 
 		<a href="recevoir-un-paiement-en-G1">
@@ -149,7 +151,6 @@
 	</li>
 
 	<li>
-
 		<a href="deconnexion-trop-rapide-cesium">
 			Rester connecté plus longtemps
 		</a>
@@ -161,4 +162,4 @@
 			Connaître le montant du DU
 		</a>
 	</li>
-</ul>
\ No newline at end of file
+</ul>
diff --git a/img/download/1200px-Octicons-mark-github.png b/img/download/1200px-Octicons-mark-github.png
deleted file mode 100644
index 97bb2437a5ffae816b594f034ba2d2ebd3cb3f10..0000000000000000000000000000000000000000
Binary files a/img/download/1200px-Octicons-mark-github.png and /dev/null differ
diff --git a/img/download/android.png b/img/download/android.png
deleted file mode 100644
index ab4692364a2d92561d7de08012b892bb2d433a0c..0000000000000000000000000000000000000000
Binary files a/img/download/android.png and /dev/null differ
diff --git a/img/download/android.svg b/img/download/android.svg
new file mode 100644
index 0000000000000000000000000000000000000000..4f8773f671bf5f5b38b1591515f2d78dd1587a4f
--- /dev/null
+++ b/img/download/android.svg
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="151mm"
+   height="151mm"
+   viewBox="0 0 151 151"
+   version="1.1"
+   id="svg8"
+   inkscape:version="0.92.3 (2405546, 2018-03-11)"
+   sodipodi:docname="android.svg">
+  <defs
+     id="defs2" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.7"
+     inkscape:cx="293.71324"
+     inkscape:cy="325.92194"
+     inkscape:document-units="mm"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1366"
+     inkscape:window-height="703"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata5">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-146)">
+    <path
+       style="fill:#78c156;fill-opacity:1;stroke-width:0.53490728"
+       d="m 51.342643,284.30248 c -1.643922,-0.67996 -3.446284,-2.86689 -4.02459,-4.88329 -0.287163,-1.00131 -0.522124,-5.49297 -0.522124,-9.98144 v -8.16086 h -3.130355 c -2.361887,0 -3.569406,-0.2959 -4.91897,-1.20535 -2.974804,-2.00474 -3.598114,-3.6858 -4.213902,-11.36497 -0.692532,-8.63616 -2.001419,-24.62228 -2.912477,-35.57133 -0.379432,-4.56009 -0.610835,-8.44792 -0.514218,-8.63961 0.171035,-0.33947 3.294234,-0.75571 9.271036,-1.23566 14.733983,-1.18318 30.733689,-2.51588 35.571327,-2.96296 3.23619,-0.29909 9.013187,-0.78883 12.837773,-1.08832 3.824584,-0.29949 7.708162,-0.66413 8.630182,-0.8103 1.234184,-0.19571 1.765961,-0.0323 2.015971,0.61921 0.186797,0.48672 0.696754,5.60743 1.133284,11.37936 0.43652,5.77194 1.16177,14.94753 1.61166,20.39022 1.59776,19.32926 1.60473,20.34025 0.15526,22.4661 -1.77671,2.60567 -4.209168,3.62861 -9.801953,4.12201 l -4.814165,0.42472 -0.267451,11.23303 c -0.297128,12.47978 -0.511084,13.28035 -3.990242,14.93134 -3.732578,1.7712 -8.188256,0.46746 -10.009744,-2.9289 -0.844077,-1.57391 -0.977408,-3.15091 -0.977408,-11.56134 0,-6.42141 -0.197521,-9.86096 -0.580106,-10.09735 -0.319064,-0.19712 -2.605785,-0.18985 -5.081616,0.0162 l -4.501509,0.37499 -0.01213,9.17912 c -0.01415,10.46465 -0.626039,12.82601 -3.835239,14.7826 -1.824358,1.11228 -5.164283,1.38093 -7.118617,0.57256 z M 18.178385,251.95562 c -3.197678,-1.43648 -3.680967,-2.61191 -4.085004,-9.93539 -0.685177,-12.41934 -0.536349,-30.34544 0.26792,-32.27032 1.229115,-2.94169 3.73519,-4.63827 6.851309,-4.63827 3.459206,0 5.494164,1.22227 6.85507,4.11745 1.010605,2.15001 1.075765,3.35943 1.067497,19.81381 -0.0081,17.1708 -0.03316,17.56717 -1.211604,19.66367 -1.985872,3.53264 -6.077348,4.89673 -9.745188,3.24905 z m 89.272295,-43.59433 c -0.61989,-0.26624 -1.88362,-1.40189 -2.80828,-2.52366 -1.31317,-1.59308 -1.68121,-2.54753 -1.68121,-4.35994 0,-1.2762 0.27567,-2.84614 0.61261,-3.48876 1.32084,-2.51919 17.65107,-23.8845 19.15589,-25.0622 1.33011,-1.04097 1.83756,-2.16475 3.02715,-6.7038 0.8841,-3.37357 1.73989,-5.57246 2.24398,-5.7659 1.58915,-0.6098 1.86783,0.59112 1.17326,5.05604 -0.37097,2.3847 -0.51732,4.49298 -0.32522,4.68507 0.19207,0.19207 1.61461,-0.90034 3.16113,-2.42763 1.68751,-1.66655 3.28637,-2.77693 3.99857,-2.77693 1.96103,0 1.40164,1.62093 -1.61275,4.67323 -2.42437,2.45487 -2.70961,2.95881 -2.12887,3.76116 2.24999,3.10856 2.74064,6.00867 1.4945,8.83356 -1.05043,2.38128 -17.37063,23.85242 -19.10489,25.13471 -1.58691,1.17336 -5.50048,1.69749 -7.20587,0.96505 z m -76.761182,-9.26737 c -0.270747,-7.94961 2.8458,-15.56377 8.827717,-21.56732 2.091001,-2.09856 4.353481,-4.18192 5.027737,-4.62971 l 1.225937,-0.81413 -2.964374,-4.42884 c -2.763294,-4.12836 -3.529821,-5.88134 -2.563208,-5.86158 0.827845,0.0162 1.603266,0.90022 4.153657,4.73164 1.44155,2.1656 2.910373,4.04851 3.264069,4.18422 0.353676,0.13566 1.326718,-0.10655 2.162326,-0.5382 5.430176,-2.80562 14.371433,-4.13728 20.508474,-3.05442 1.912303,0.33743 4.319396,0.74049 5.349085,0.89574 l 1.872172,0.28225 2.407073,-4.99317 c 1.323908,-2.74623 2.647796,-4.87281 2.941994,-4.72571 0.803523,0.40178 0.502574,1.5422 -1.580988,5.99137 -1.04275,2.22666 -1.892166,4.25677 -1.887576,4.51136 0.0041,0.25457 1.207194,1.05139 2.6725,1.77066 5.831948,2.86276 12.02592,9.19349 14.431618,14.75021 1.495111,3.45345 2.705295,9.37983 1.965328,9.62435 -0.342907,0.11322 -3.993393,0.46837 -8.112175,0.78901 -19.107661,1.48745 -27.888698,2.19856 -42.737756,3.46105 -8.795815,0.74781 -16.197611,1.35967 -16.448401,1.35967 -0.250791,0 -0.48264,-0.78229 -0.515209,-1.73845 z M 49.886335,186.627 c 2.312174,-1.6195 0.943364,-5.58619 -1.927647,-5.58619 -3.040288,0 -4.516915,3.9028 -2.113562,5.58619 0.653856,0.45797 1.563135,0.8327 2.020604,0.8327 0.45749,0 1.366768,-0.37473 2.020605,-0.8327 z m 31.279588,-2.51049 c 1.476668,-1.12798 1.660763,-3.20285 0.403875,-4.55195 -2.093932,-2.24757 -5.353979,-0.92698 -5.353979,2.1688 0,2.57168 2.885022,3.96063 4.950104,2.38315 z"
+       id="path74"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#000000;stroke-width:0.26458335"
+       d=""
+       id="path72"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/img/download/apple.png b/img/download/apple.png
deleted file mode 100644
index 44cff60de33e4cbf1c7225261bd3999a6eb2623a..0000000000000000000000000000000000000000
Binary files a/img/download/apple.png and /dev/null differ
diff --git a/img/download/apple.svg b/img/download/apple.svg
new file mode 100644
index 0000000000000000000000000000000000000000..d453449b333ec66cd58ecd9909b9e0589b5fb5bb
--- /dev/null
+++ b/img/download/apple.svg
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="151mm"
+   height="151mm"
+   viewBox="0 0 151 151"
+   version="1.1"
+   id="svg8"
+   inkscape:version="0.92.3 (2405546, 2018-03-11)"
+   sodipodi:docname="apple.svg">
+  <defs
+     id="defs2" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.7"
+     inkscape:cx="265.7468"
+     inkscape:cy="338.35577"
+     inkscape:document-units="mm"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1366"
+     inkscape:window-height="703"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata5">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-146)">
+    <path
+       style="fill:#000000;stroke-width:0.22294049"
+       d="m 52.004076,284.57753 c -5.5909,-1.2932 -10.53734,-5.66482 -17.553676,-15.51378 -6.525312,-9.1597 -11.268937,-20.72228 -13.215458,-32.21268 -1.911316,-11.28251 -0.858821,-21.60013 3.036285,-29.76478 5.206445,-10.91341 14.819223,-17.84911 26.334328,-19.00042 4.398499,-0.43978 7.747991,0.18812 15.116654,2.83379 5.386787,1.93408 7.635443,2.56726 9.117417,2.56726 0.967485,0 2.632895,-0.47296 7.812552,-2.21868 9.861783,-3.32376 11.758089,-3.71743 16.903105,-3.50915 9.285387,0.3759 17.495427,4.0525 22.730007,10.17894 0.78937,0.92386 1.52483,1.84593 1.63433,2.04904 0.16197,0.30039 -0.2057,0.65397 -1.97054,1.895 -5.84154,4.10775 -9.48732,9.24337 -11.21208,15.79389 -0.61074,2.3195 -0.84038,8.14357 -0.43799,11.1078 1.21562,8.95486 6.81607,16.62286 15.41595,21.1071 l 1.924,1.00322 -1.09342,2.89824 c -2.80475,7.43431 -6.69349,14.02413 -12.57683,21.3126 -6.27429,7.77279 -12.09001,10.59188 -19.084716,9.25106 -1.601412,-0.30698 -3.370582,-0.86355 -9.215908,-2.89926 -4.00467,-1.39468 -6.371341,-1.77314 -10.14379,-1.62212 -3.648289,0.14605 -6.145371,0.72156 -10.823566,2.4945 -5.912002,2.24054 -9.774003,2.92445 -12.696654,2.24843 z m 22.043126,-97.69947 c -0.08139,-0.32419 -0.08701,-1.65348 -0.01255,-2.95396 0.383573,-6.69755 3.900296,-13.82371 9.279837,-18.80435 4.308649,-3.98914 10.445292,-6.85656 16.343104,-7.63648 l 1.058957,-0.14004 v 2.54827 c 0,5.6148 -1.697434,10.77545 -5.11834,15.56112 -5.353115,7.48872 -12.672291,12.00789 -19.456605,12.01334 -1.919119,0.002 -1.948568,-0.007 -2.094433,-0.5879 z"
+       id="path21"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/img/download/arch.svg b/img/download/arch.svg
new file mode 100644
index 0000000000000000000000000000000000000000..1222ecfa01467358f5018e2f166fba07578d480e
--- /dev/null
+++ b/img/download/arch.svg
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="256px" height="256px" viewBox="0 0 256 256" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid">
+    <g>
+        <path d="M127.975926,0 C116.579432,27.9359185 109.705619,46.2092913 97.0171149,73.31478 C104.796757,81.5596475 114.3459,91.1612076 129.853677,102.005265 C113.181296,95.1459732 101.808692,88.2594065 93.3097611,81.1132005 C77.0708968,114.991716 51.6292657,163.250154 0,256 C40.5788694,232.577519 72.0348875,218.137309 101.350386,212.627303 C100.091566,207.21416 99.3758778,201.35879 99.4244875,195.249342 L99.4726349,193.949605 C100.116527,167.956688 113.640566,147.968131 129.661087,149.32531 C145.681616,150.68249 158.134196,172.866789 157.490314,198.859722 C157.369214,203.750768 156.817421,208.4559 155.853301,212.819857 C184.850516,218.491161 215.970178,232.894401 256,256 C248.106899,241.470984 241.061625,228.374136 234.333647,215.900715 C223.735984,207.688365 212.6821,196.999962 190.134286,185.429109 C205.632358,189.455404 216.728781,194.100675 225.378221,199.292967 C156.972972,71.9582954 151.433611,55.0381461 127.975926,0 Z" fill="#1793D1"></path>
+    </g>
+</svg>
diff --git a/img/download/brave_lion.svg b/img/download/brave_lion.svg
new file mode 100644
index 0000000000000000000000000000000000000000..f80dbc3ebbdfe4176992e814dd9d3d5d305bfe49
--- /dev/null
+++ b/img/download/brave_lion.svg
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="218px" height="256px" viewBox="0 0 218 256" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <!-- Generator: Sketch 51.2 (57519) - http://www.bohemiancoding.com/sketch -->
+    <title>build-icons/Stable Copy 3</title>
+    <desc>Created with Sketch.</desc>
+    <defs>
+        <linearGradient x1="0%" y1="50.7055163%" x2="100%" y2="50.7055163%" id="linearGradient-1">
+            <stop stop-color="#FF5500" offset="0%"></stop>
+            <stop stop-color="#FF5500" offset="40.9877232%"></stop>
+            <stop stop-color="#FF2000" offset="58.1981215%"></stop>
+            <stop stop-color="#FF2000" offset="100%"></stop>
+        </linearGradient>
+        <linearGradient x1="2.1484375%" y1="50.7055163%" x2="100%" y2="50.7055163%" id="linearGradient-2">
+            <stop stop-color="#FF452A" offset="0%"></stop>
+            <stop stop-color="#FF2000" offset="100%"></stop>
+        </linearGradient>
+        <path d="M170.272109,25.3359387 L147.968109,0.00010893617 L108.800109,0.00010893617 L69.6321088,0.00010893617 L47.3281088,25.3359387 C47.3281088,25.3359387 27.7441088,19.8891302 18.4961088,29.1487047 C18.4961088,29.1487047 44.6081088,26.7886026 53.5841088,41.4040238 C53.5841088,41.4040238 77.7921088,46.0338111 81.0561088,46.0338111 C84.3201088,46.0338111 91.3921088,43.3104068 97.9201088,41.1316834 C104.448109,38.95296 108.800109,38.9371643 108.800109,38.9371643 C108.800109,38.9371643 113.152109,38.95296 119.680109,41.1316834 C126.208109,43.3104068 133.280109,46.0338111 136.544109,46.0338111 C139.808109,46.0338111 164.016109,41.4040238 164.016109,41.4040238 C172.992109,26.7886026 199.104109,29.1487047 199.104109,29.1487047 C189.856109,19.8891302 170.272109,25.3359387 170.272109,25.3359387" id="path-3"></path>
+    </defs>
+    <g id="starting-collection" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="Build-Icons" transform="translate(-70.000000, -350.000000)">
+            <g id="build-icons/Stable" transform="translate(50.000000, 350.000000)">
+                <g id="Logo" transform="translate(20.114286, 0.000000)">
+                    <path d="M209.984109,61.2848749 L215.968109,46.5784919 C215.968109,46.5784919 208.352109,38.4082791 199.104109,29.1487047 C189.856109,19.8891302 170.272109,25.3359387 170.272109,25.3359387 L147.968109,0.00010893617 L108.800109,0.00010893617 L69.6321088,0.00010893617 L47.3281088,25.3359387 C47.3281088,25.3359387 27.7441088,19.8891302 18.4961088,29.1487047 C9.2481088,38.4082791 1.6321088,46.5784919 1.6321088,46.5784919 L7.6161088,61.2848749 L0.0001088,83.0721089 C0.0001088,83.0721089 22.3993088,168.017811 25.0241088,178.391258 C30.1921088,198.81679 33.7281088,206.714662 48.4161088,217.063598 C63.1041088,227.412534 89.7601088,245.387003 94.1121088,248.110407 C98.4641088,250.833811 103.904109,255.472858 108.800109,255.472858 C113.696109,255.472858 119.136109,250.833811 123.488109,248.110407 C127.840109,245.387003 154.496109,227.412534 169.184109,217.063598 C183.872109,206.714662 187.408109,198.81679 192.576109,178.391258 C195.200365,168.017811 217.600109,83.0721089 217.600109,83.0721089 L209.984109,61.2848749 Z" id="Head" fill="url(#linearGradient-1)"></path>
+                    <path d="M164.016109,41.4040238 C164.016109,41.4040238 192.704493,76.1274281 192.704493,83.5487047 C192.704493,90.9699813 189.095597,92.9286536 185.467117,96.7866281 C181.838637,100.644603 165.991373,117.49376 163.956269,119.657232 C161.921165,121.821249 157.684493,125.101862 160.176557,131.006747 C162.668621,136.911632 166.344973,144.425505 162.256813,152.046679 C158.168109,159.667854 151.164109,164.754628 146.676109,163.913641 C142.188109,163.072109 131.648109,157.557215 127.772109,155.038066 C123.896109,152.518917 111.611501,142.374781 111.611501,138.493386 C111.611501,134.612534 124.310093,127.643888 126.655821,126.0605 C129.002637,124.477658 139.703117,118.349454 139.922349,115.944143 C140.141037,113.538288 140.057805,112.832926 136.899885,106.889369 C133.741965,100.945266 128.054989,93.0136238 129.001549,87.7362111 C129.948109,82.459343 139.119949,79.7152409 145.665357,77.2402111 C152.209677,74.765726 164.811437,70.0918196 166.385229,69.3652153 C167.960109,68.6380664 167.553197,67.945777 162.783949,67.4931472 C158.015789,67.0405174 144.483245,65.2419813 138.382285,66.9446536 C132.281325,68.647326 121.858285,71.2378281 121.013997,72.6115132 C120.169709,73.9851983 119.424973,74.0314962 120.292109,78.7702196 C121.158701,83.508943 125.622765,106.24719 126.055789,110.285998 C126.489357,114.324807 127.336909,116.994832 122.987629,117.990509 C118.637805,118.986186 111.316109,120.715003 108.800109,120.715003 C106.284109,120.715003 98.9618688,118.986186 94.6125888,117.990509 C90.2627648,116.994832 91.1103168,114.324807 91.5438848,110.285998 C91.9774528,106.24719 96.4409728,83.508943 97.3081088,78.7702196 C98.1747008,74.0314962 97.4299648,73.9851983 96.5862208,72.6115132 C95.7419328,71.2378281 85.3183488,68.647326 79.2173888,66.9446536 C73.1164288,65.2419813 59.5844288,67.0405174 54.8157248,67.4931472 C50.0470208,67.945777 49.6401088,68.6380664 51.2144448,69.3652153 C52.7887808,70.0918196 65.3905408,74.765726 71.9348608,77.2402111 C78.4797248,79.7152409 87.6521088,82.459343 88.5986688,87.7362111 C89.5452288,93.0136238 83.8577088,100.945266 80.7003328,106.889369 C77.5424128,112.832926 77.4586368,113.538288 77.6778688,115.944143 C77.8965568,118.349454 88.5975808,124.477658 90.9438528,126.0605 C93.2901248,127.643888 105.988173,134.612534 105.988173,138.493386 C105.988173,142.374781 93.7041088,152.518917 89.8281088,155.038066 C85.9521088,157.557215 75.4121088,163.072109 70.9241088,163.913641 C66.4361088,164.754628 59.4321088,159.667854 55.3434048,152.046679 C51.2552448,144.425505 54.9315968,136.911632 57.4231168,131.006747 C59.9151808,125.101862 55.6790528,121.821249 53.6434048,119.657232 C51.6088448,117.49376 35.7610368,100.644603 32.1325568,96.7866281 C28.5040768,92.9286536 24.8957248,90.9699813 24.8957248,83.5487047 C24.8957248,76.1274281 53.5841088,41.4040238 53.5841088,41.4040238 C53.5841088,41.4040238 77.7921088,46.0338111 81.0561088,46.0338111 C84.3201088,46.0338111 91.3921088,43.3104068 97.9201088,41.1316834 C104.448109,38.95296 108.800109,38.9371643 108.800109,38.9371643 C108.800109,38.9371643 113.152109,38.95296 119.680109,41.1316834 C126.208109,43.3104068 133.280109,46.0338111 136.544109,46.0338111 C139.808109,46.0338111 164.016109,41.4040238 164.016109,41.4040238 Z M142.509504,174.227935 C144.28512,175.341263 143.202016,177.439918 141.584704,178.584837 C139.966848,179.729757 118.228064,196.584361 116.118432,198.447169 C114.008256,200.310523 110.908,203.387425 108.8,203.387425 C106.692,203.387425 103.5912,200.310523 101.481568,198.447169 C99.371392,196.584361 77.633152,179.729757 76.015296,178.584837 C74.39744,177.439918 73.31488,175.341263 75.090496,174.227935 C76.866656,173.115152 82.422528,170.306233 90.08912,166.333876 C97.754624,162.362063 107.308896,158.985042 108.8,158.985042 C110.291104,158.985042 119.844832,162.362063 127.511424,166.333876 C135.177472,170.306233 140.733344,173.115152 142.509504,174.227935 Z" id="Face" fill="#FFFFFF"></path>
+                    <mask id="mask-4" fill="white">
+                        <use xlink:href="#path-3"></use>
+                    </mask>
+                    <use id="Top-Head" fill="url(#linearGradient-2)" xlink:href="#path-3"></use>
+                </g>
+            </g>
+        </g>
+    </g>
+</svg>
\ No newline at end of file
diff --git a/img/download/chrome.svg b/img/download/chrome.svg
new file mode 100644
index 0000000000000000000000000000000000000000..7ed1fb87db3c0b40a86dcfab31ff13781c6433f2
--- /dev/null
+++ b/img/download/chrome.svg
@@ -0,0 +1,277 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   width="256"
+   height="256"
+   id="svg3039"
+   inkscape:version="0.47 r22583"
+   sodipodi:docname="Chromium_11_Logo.svg">
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1280"
+     inkscape:window-height="750"
+     id="namedview6"
+     showgrid="false"
+     inkscape:zoom="1.4142136"
+     inkscape:cx="372.87473"
+     inkscape:cy="103.791"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg3039" />
+  <metadata
+     id="metadata3045">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs3043">
+    <linearGradient
+       id="linearGradient3803">
+      <stop
+         style="stop-color:#d7def0;stop-opacity:1;"
+         offset="0"
+         id="stop3805" />
+      <stop
+         id="stop3811"
+         offset="0.5"
+         style="stop-color:#ffffff;stop-opacity:1" />
+      <stop
+         style="stop-color:#d5def0;stop-opacity:1"
+         offset="1"
+         id="stop3807" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3776"
+       inkscape:collect="always">
+      <stop
+         id="stop3778"
+         offset="0"
+         style="stop-color:#b2cde9;stop-opacity:1" />
+      <stop
+         id="stop3780"
+         offset="1"
+         style="stop-color:#c4dbee;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3750">
+      <stop
+         id="stop3752"
+         offset="0"
+         style="stop-color:#d0e2f1;stop-opacity:1" />
+      <stop
+         style="stop-color:#cadef0;stop-opacity:1"
+         offset="0.85580856"
+         id="stop3756" />
+      <stop
+         id="stop3754"
+         offset="1"
+         style="stop-color:#95bee3;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3708">
+      <stop
+         style="stop-color:#658db6;stop-opacity:1"
+         offset="0"
+         id="stop3710" />
+      <stop
+         id="stop3716"
+         offset="0.76777935"
+         style="stop-color:#527fab;stop-opacity:1;" />
+      <stop
+         style="stop-color:#4071a0;stop-opacity:1"
+         offset="1"
+         id="stop3712" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3698">
+      <stop
+         style="stop-color:#96d0e1;stop-opacity:1"
+         offset="0"
+         id="stop3700" />
+      <stop
+         id="stop3706"
+         offset="0.67819428"
+         style="stop-color:#89b7e1;stop-opacity:1" />
+      <stop
+         style="stop-color:#699dd3;stop-opacity:1"
+         offset="1"
+         id="stop3702" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3647">
+      <stop
+         style="stop-color:#3b79bc;stop-opacity:1;"
+         offset="0"
+         id="stop3649" />
+      <stop
+         style="stop-color:#94b8e0;stop-opacity:1"
+         offset="1"
+         id="stop3651" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3588">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="0"
+         id="stop3590" />
+      <stop
+         style="stop-color:#000000;stop-opacity:0;"
+         offset="1"
+         id="stop3592" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3588"
+       id="radialGradient3594"
+       cx="-118.77966"
+       cy="121.49152"
+       fx="-118.77966"
+       fy="121.49152"
+       r="25.491526"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.02177942,-0.95743591,0.97872327,0.02221687,-235.0993,5.0684454)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3647"
+       id="linearGradient3653"
+       x1="-397.81323"
+       y1="149.18764"
+       x2="-397.55933"
+       y2="51.355946"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3698"
+       id="radialGradient3704"
+       cx="-383.2746"
+       cy="217.91029"
+       fx="-383.2746"
+       fy="217.91029"
+       r="59.401995"
+       gradientTransform="matrix(-1.2861568,-0.08596317,0.11453678,-1.7136762,-425.01982,469.50099)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3708"
+       id="radialGradient3714"
+       cx="-123.5"
+       cy="-11.570732"
+       fx="-123.5"
+       fy="-11.570732"
+       r="95.627118"
+       gradientTransform="matrix(-0.00756512,0.55751399,-1.0314585,-0.01398286,113.23967,103.212)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3750"
+       id="radialGradient3748"
+       cx="-94.87291"
+       cy="165.27281"
+       fx="-94.87291"
+       fy="165.27281"
+       r="60.481357"
+       gradientTransform="matrix(0.81293878,1.6998003,-2.1519091,1.0291615,564.39485,118.47915)"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3776"
+       id="linearGradient3774"
+       x1="162.07127"
+       y1="85.239708"
+       x2="220.76114"
+       y2="78.875748"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(3.3917128,7.418629)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3803"
+       id="linearGradient3809"
+       x1="-382.04123"
+       y1="37.280548"
+       x2="-381.39438"
+       y2="165.56691"
+       gradientUnits="userSpaceOnUse" />
+  </defs>
+  <path
+     sodipodi:type="arc"
+     style="fill:url(#radialGradient3594);fill-opacity:1;fill-rule:nonzero;stroke:none"
+     id="path2814"
+     sodipodi:cx="-118.23729"
+     sodipodi:cy="122.57627"
+     sodipodi:rx="25.491526"
+     sodipodi:ry="25.491526"
+     d="m -92.745764,122.57627 a 25.491526,25.491526 0 1 1 -50.983056,0 25.491526,25.491526 0 1 1 50.983056,0 z"
+     transform="matrix(4.680851,0,0,4.7978723,685.10478,-449.69946)" />
+  <path
+     style="fill:url(#linearGradient3774);fill-opacity:1;fill-rule:nonzero;stroke:none"
+     d="m 232.17258,88.120422 c 0,15.673918 -19.79135,34.931518 -45.84395,34.931518 -26.0526,0 -59.92241,-16.08123 -59.92241,-31.755152 0,-15.673924 21.11981,-28.38015 47.17241,-28.38015 19.90254,0 46.36122,18.293224 56.45971,20.3521 0.79179,1.710571 1.36862,2.925087 2.13424,4.851684 z"
+     id="path3655"
+     sodipodi:nodetypes="cssscc" />
+  <path
+     style="fill:#2e5c91;fill-opacity:1;fill-rule:nonzero;stroke:none"
+     d="m 38.822019,65.971523 c 12.38148,-9.610993 35.314514,-1.245318 51.289554,19.334679 15.975027,20.579998 17.694937,51.065068 5.31349,60.676058 -12.38147,9.61099 -34.17571,-5.29155 -50.15074,-25.87156 -12.20392,-15.72181 -4.05062,-41.19089 -8.61646,-50.430553 0.61589,-1.122052 1.381696,-2.456607 2.164156,-3.708624 z"
+     id="path3655-4-8"
+     sodipodi:nodetypes="cssscc" />
+  <path
+     style="fill:url(#radialGradient3714);fill-opacity:1;fill-rule:nonzero;stroke:none"
+     d="m 230.04347,83.261765 c -7.0081,-0.03265 -61.07025,0.289575 -107.66568,0.0654 -17.371,5.108098 -31.704627,13.258827 -39.181777,29.154945 -5.33639,-4.54237 -40.74576,-42.215609 -44.40678,-46.440684 31.38983,-41.648805 74.528017,-45.559321 82.915257,-45.559321 8.38724,0 70.64407,-8.631855 108.33898,62.77966 z"
+     id="path3596"
+     sodipodi:nodetypes="ccccsc" />
+  <path
+     style="fill:#699dd3;fill-opacity:1;fill-rule:nonzero;stroke:none"
+     d="m 117.12454,243.96815 c -12.49835,-9.45851 -14.5752,-36.93927 1.14635,-57.71356 15.72155,-20.77428 41.03582,-34.94753 53.53417,-25.48904 12.49834,9.4585 7.44792,38.96701 -8.27364,59.74129 -12.01027,15.87024 -35.4911,16.88498 -43.22681,23.69505 -1.23894,-0.0455 -1.95523,-0.0605 -3.18007,-0.23374 z"
+     id="path3655-4"
+     sodipodi:nodetypes="cssscc" />
+  <path
+     style="fill:url(#radialGradient3748);fill-opacity:1;fill-rule:nonzero;stroke:none"
+     d="m 120.3032,244.20103 c 3.58354,-6.02268 28.85859,-52.8991 52.69131,-92.9389 4.41104,-17.56095 5.34663,-33.64185 -4.5584,-48.14993 6.62173,-2.29412 58.23852,-13.976353 63.73684,-14.987686 19.9656,48.180076 1.44992,87.338276 -2.80522,94.565966 -4.25515,7.22768 -28.40179,65.25666 -109.06453,61.51055 z"
+     id="path3596-1"
+     sodipodi:nodetypes="ccccsc" />
+  <path
+     style="fill:url(#radialGradient3704);fill-opacity:1;fill-rule:nonzero;stroke:none"
+     d="m 36.696853,69.642524 c 3.46858,6.089612 30.72312,52.780196 53.77852,93.272576 13.094367,12.50527 27.684997,19.48512 45.191737,18.03328 -1.2738,6.89113 -16.62898,57.75037 -18.4638,63.03126 -51.756237,-6.42158 -76.669777,-41.85476 -80.854757,-49.1233 -4.18497,-7.26855 -42.7297502,-56.91452 0.3483,-125.213816 z"
+     id="path3596-1-7"
+     sodipodi:nodetypes="ccccsc" />
+  <path
+     transform="matrix(0.77294737,0,0,0.77619098,435.90647,53.275706)"
+     style="fill:url(#linearGradient3653);fill-opacity:1;stroke:url(#linearGradient3809);stroke-width:10.07013607;stroke-miterlimit:4;stroke-opacity:1"
+     d="m -338.44068,101.42373 c 0,32.65032 -26.46832,59.11864 -59.11865,59.11864 -32.65032,0 -59.11864,-26.46832 -59.11864,-59.11864 0,-32.650327 26.46832,-59.118646 59.11864,-59.118646 32.65033,0 59.11865,26.468319 59.11865,59.118646 z"
+     id="path3645" />
+  <path
+     style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+     d="m 163.54619,108.89582 c 18.52979,17.09836 16.03302,29.55794 10.0625,44 -3.10892,-22.25001 -2.34478,-32.42697 -10.0625,-44 z"
+     id="rect3782"
+     sodipodi:nodetypes="ccc" />
+  <path
+     style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+     d="m 101.42092,173.63924 c -22.645593,-14.47335 -29.809884,-45.71983 -8.813354,-62.99032 -10.847561,19.77514 -6.225429,32.39863 8.813354,62.99032 z"
+     id="rect3782-4"
+     sodipodi:nodetypes="ccc" />
+</svg>
diff --git a/img/download/cof_orange_hex.svg b/img/download/cof_orange_hex.svg
new file mode 100644
index 0000000000000000000000000000000000000000..8d90fd212ac8f5149a7ae10530edad93cf5b6a62
--- /dev/null
+++ b/img/download/cof_orange_hex.svg
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="circle_of_friends__x5F__orange"
+	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="425.197px"
+	 height="425.197px" viewBox="0 0 425.197 425.197" enable-background="new 0 0 425.197 425.197" xml:space="preserve">
+<g>
+	<path fill="#E95420" d="M354.331,212.595c0,78.279-63.45,141.735-141.729,141.735c-78.279,0-141.735-63.456-141.735-141.735
+		c0-78.274,63.457-141.728,141.735-141.728C290.881,70.867,354.331,134.32,354.331,212.595z"/>
+	<path fill="#FFFFFF" d="M139.043,212.595c0,10.064-8.159,18.225-18.23,18.225c-10.059,0-18.218-8.16-18.218-18.225
+		c0-10.06,8.159-18.219,18.218-18.219C130.884,194.376,139.043,202.535,139.043,212.595z M242.717,301.201
+		c5.033,8.709,16.173,11.696,24.889,6.67c8.715-5.033,11.701-16.179,6.669-24.895c-5.032-8.715-16.173-11.695-24.888-6.663
+		C240.671,281.346,237.685,292.486,242.717,301.201z M274.274,142.219c5.032-8.717,2.052-19.86-6.669-24.887
+		c-8.71-5.032-19.855-2.046-24.889,6.667c-5.032,8.715-2.046,19.857,6.67,24.889C258.102,153.92,269.248,150.934,274.274,142.219z
+		 M212.602,160.632c27.153,0,49.434,20.814,51.761,47.364l26.372-0.416c-1.252-19.727-9.809-37.469-22.995-50.551
+		c-6.98,2.693-15.079,2.327-22.066-1.71c-6.992-4.037-11.359-10.871-12.514-18.275c-6.554-1.78-13.448-2.733-20.558-2.733
+		c-12.471,0-24.259,2.916-34.727,8.103l12.832,23.043C197.357,162.367,204.784,160.632,212.602,160.632z M160.633,212.595
+		c0-17.577,8.734-33.121,22.097-42.52l-13.54-22.634c-15.684,10.474-27.367,26.451-32.296,45.183
+		c5.833,4.697,9.57,11.897,9.57,19.972c0,8.08-3.738,15.28-9.57,19.978c4.929,18.731,16.612,34.708,32.296,45.188l13.54-22.634
+		C169.367,245.722,160.633,230.184,160.633,212.595z M212.602,264.568c-7.817,0-15.244-1.734-21.895-4.83l-12.832,23.043
+		c10.468,5.191,22.255,8.104,34.727,8.104c7.109,0,14.004-0.946,20.558-2.729c1.154-7.409,5.521-14.243,12.514-18.273
+		c6.987-4.037,15.086-4.404,22.066-1.711c13.187-13.088,21.743-30.83,22.995-50.557l-26.372-0.409
+		C262.035,243.749,239.755,264.568,212.602,264.568z"/>
+</g>
+</svg>
diff --git a/img/download/debian.svg b/img/download/debian.svg
new file mode 100644
index 0000000000000000000000000000000000000000..89e0136e1cfdf3697be5f0657d7d353c9958ce0c
--- /dev/null
+++ b/img/download/debian.svg
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg height="144.13" viewBox="0 0 108.758 144.133" width="108.76" xmlns="http://www.w3.org/2000/svg">
+ <path fill="#D70751" d="M60.969,47.645c-1.494,0.02,0.281,0.768,2.232,1.069,0.541-0.422,1.027-0.846,1.463-1.26-1.213,0.297-2.449,0.304-3.695,0.191"/>
+ <path fill="#D70751" d="M68.986,45.646c0.893-1.229,1.541-2.573,1.77-3.963-0.201,0.99-0.736,1.845-1.244,2.749-2.793,1.759-0.264-1.044-0.002-2.111-3.002,3.783-0.414,2.268-0.524,3.325"/>
+ <path fill="#D70751" d="M71.949,37.942c0.182-2.691-0.529-1.839-0.768-0.814,0.278,0.146,0.499,1.898,0.768,0.814"/>
+ <path fill="#D70751" d="M55.301,1.163c0.798,0.142,1.724,0.252,1.591,0.443,0.876-0.193,1.073-0.367-1.591-0.443"/>
+ <path fill="#D70751" d="M56.893,1.606l-0.561,0.117,0.523-0.048,0.038-0.069"/>
+ <path fill="#D70751" d="M81.762,38.962c0.09,2.416-0.705,3.59-1.424,5.666l-1.293,0.643c-1.057,2.054,0.105,1.304-0.652,2.937-1.652,1.467-5.006,4.589-6.08,4.875-0.785-0.017,0.531-0.926,0.703-1.281-2.209,1.516-1.773,2.276-5.152,3.199l-0.098-0.221c-8.33,3.92-19.902-3.847-19.75-14.443-0.088,0.672-0.253,0.504-0.437,0.774-0.43-5.451,2.518-10.926,7.49-13.165,4.863-2.406,10.564-1.42,14.045,1.829-1.912-2.506-5.721-5.163-10.232-4.917-4.421,0.072-8.558,2.881-9.938,5.932-2.264,1.425-2.528,5.496-3.514,6.242-1.329,9.76,2.497,13.975,8.97,18.936,1.016,0.686,0.286,0.791,0.422,1.313-2.15-1.006-4.118-2.526-5.738-4.387,0.86,1.257,1.787,2.479,2.986,3.439-2.029-0.685-4.738-4.913-5.527-5.085,3.495,6.258,14.178,10.975,19.775,8.634-2.59,0.096-5.879,0.053-8.787-1.022-1.225-0.629-2.884-1.93-2.587-2.173,7.636,2.851,15.522,2.158,22.128-3.137,1.682-1.31,3.518-3.537,4.049-3.567-0.799,1.202,0.137,0.578-0.477,1.639,1.672-2.701-0.729-1.1,1.73-4.664l0.908,1.25c-0.34-2.244,2.785-4.966,2.467-8.512,0.717-1.084,0.799,1.168,0.039,3.662,1.055-2.767,0.279-3.212,0.549-5.496,0.291,0.768,0.678,1.583,0.875,2.394-0.688-2.675,0.703-4.503,1.049-6.058-0.342-0.15-1.061,1.182-1.227-1.976,0.025-1.372,0.383-0.719,0.52-1.057-0.268-0.155-0.975-1.207-1.404-3.224,0.309-0.475,0.832,1.229,1.256,1.298-0.273-1.603-0.742-2.826-0.762-4.057-1.24-2.59-0.439,0.346-1.443-1.112-1.32-4.114,1.094-0.955,1.258-2.823,1.998,2.895,3.137,7.385,3.662,9.244-0.4-2.267-1.045-4.464-1.834-6.589,0.609,0.257-0.979-4.663,0.791-1.405-1.889-6.945-8.078-13.435-13.773-16.479,0.695,0.637,1.574,1.437,1.26,1.563-2.834-1.685-2.336-1.818-2.742-2.53-2.305-0.939-2.459,0.077-3.984,0.002-4.35-2.308-5.188-2.063-9.191-3.507l0.182,0.852c-2.881-0.96-3.357,0.362-6.47,0.002-0.189-0.147,0.998-0.536,1.976-0.677-2.786,0.368-2.656-0.55-5.382,0.101,0.671-0.471,1.383-0.784,2.099-1.184-2.271,0.138-5.424,1.322-4.451,0.244-3.705,1.654-10.286,3.975-13.979,7.438l-0.116-0.776c-1.692,2.031-7.379,6.066-7.832,8.699l-0.453,0.105c-0.879,1.491-1.45,3.18-2.148,4.713-1.151,1.963-1.688,0.756-1.524,1.064-2.265,4.592-3.392,8.45-4.363,11.616,0.692,1.035,0.017,6.232,0.278,10.391-1.136,20.544,14.418,40.489,31.42,45.093,2.492,0.893,6.197,0.861,9.349,0.949-3.718-1.064-4.198-0.563-7.822-1.826-2.613-1.232-3.185-2.637-5.037-4.244l0.733,1.295c-3.63-1.285-2.111-1.59-5.065-2.525l0.783-1.021c-1.177-0.09-3.117-1.982-3.647-3.033l-1.288,0.051c-1.546-1.906-2.371-3.283-2.31-4.35l-0.416,0.742c-0.471-0.809-5.691-7.158-2.983-5.68-0.503-0.458-1.172-0.747-1.897-2.066l0.551-0.629c-1.301-1.677-2.398-3.826-2.314-4.542,0.695,0.938,1.177,1.114,1.655,1.275-3.291-8.164-3.476-0.449-5.967-8.31l0.526-0.042c-0.403-0.611-0.65-1.27-0.974-1.919l0.23-2.285c-2.368-2.736-0.662-11.645-0.319-16.53,0.235-1.986,1.977-4.101,3.3-7.418l-0.806-0.138c1.542-2.688,8.802-10.799,12.166-10.383,1.629-2.046-0.324-0.008-0.643-0.522,3.579-3.703,4.704-2.616,7.119-3.283,2.603-1.545-2.235,0.604-1.001-0.589,4.503-1.149,3.19-2.614,9.063-3.197,0.62,0.352-1.437,0.544-1.953,1.001,3.75-1.836,11.869-1.417,17.145,1.018,6.117,2.861,12.994,11.314,13.266,19.267l0.309,0.083c-0.156,3.162,0.484,6.819-0.627,10.177l0.751-1.591"/>
+ <path fill="#D70751" d="M44.658,49.695l-0.211,1.047c0.983,1.335,1.763,2.781,3.016,3.821-0.902-1.759-1.571-2.486-2.805-4.868"/>
+ <path fill="#D70751" d="M46.979,49.605c-0.52-0.576-0.826-1.268-1.172-1.956,0.33,1.211,1.006,2.252,1.633,3.312l-0.461-1.356"/>
+ <path fill="#D70751" d="M88.063,40.675l-0.219,0.552c-0.402,2.858-1.273,5.686-2.605,8.309,1.472-2.767,2.421-5.794,2.824-8.861"/>
+ <path fill="#D70751" d="M55.598,0.446c1.009-0.369,2.482-0.203,3.556-0.446-1.398,0.117-2.789,0.187-4.162,0.362l0.606,0.084"/>
+ <path fill="#D70751" d="M20.127,19.308c0.233,2.154-1.62,2.991,0.41,1.569,1.09-2.454-0.424-0.677-0.41-1.569"/>
+ <path fill="#D70751" d="M17.739,29.282c0.469-1.437,0.553-2.299,0.732-3.132-1.293,1.654-0.596,2.007-0.732,3.132"/>
+ <path d="M13.437,125.51c-0.045,0.047-0.045,7.506-0.138,9.453-0.092,1.574-0.232,4.957-3.568,4.957-3.429,0-4.263-3.939-4.541-5.652-0.324-1.9-0.324-3.477-0.324-4.17,0-2.225,0.139-8.436,5.375-8.436,1.576,0,2.456,0.465,3.151,0.834l0.045,3.02zm-13.437,5.47c0,13.066,6.951,13.066,7.97,13.066,2.873,0,4.727-1.576,5.514-4.309l0.093,4.123c0.881-0.047,1.761-0.139,3.197-0.139,0.51,0,0.926,0,1.298,0.047,0.371,0,0.741,0.045,1.158,0.092-0.741-1.482-1.297-4.818-1.297-12.049,0-7.043,0-18.951,0.602-22.566-1.667,0.789-3.105,1.299-6.256,1.576,1.251,1.344,1.251,2.039,1.251,8.154-0.879-0.277-1.992-0.602-3.892-0.602-8.294,0-9.638,7.23-9.638,12.61"/>
+ <path d="M25.13,128.61c0.047-3.846,0.835-7.275,4.124-7.275,3.615,0,3.891,3.984,3.799,7.275h-7.923zm12.51,0.46c0-5.422-1.065-10.752-7.923-10.752-9.452,0-9.452,10.475-9.452,12.697,0,9.406,4.216,13.113,11.306,13.113,3.149,0,4.68-0.461,5.514-0.695-0.046-1.668,0.185-2.734,0.465-4.17-0.975,0.604-2.226,1.391-5.006,1.391-7.229,0-7.322-6.582-7.322-8.852h12.328l0.09-2.74"/>
+ <path d="M52.715,131.07c0,4.309-0.787,10.102-6.162,10.102-0.742,0-1.668-0.141-2.27-0.279-0.093-1.668-0.093-4.541-0.093-7.877,0-3.986,0.416-6.068,0.742-7.09,0.972-3.289,3.15-3.334,3.566-3.334,3.522,0,4.217,4.86,4.217,8.48zm-13.298,5.05c0,3.43,0,5.375-0.556,6.857,1.9,0.742,4.262,1.158,7.09,1.158,1.807,0,7.043,0,9.869-5.791,1.344-2.688,1.807-6.303,1.807-9.037,0-1.668-0.186-5.328-1.529-7.646-1.296-2.176-3.382-3.289-5.605-3.289-4.449,0-5.746,3.707-6.44,5.607,0-2.363,0.045-10.611,0.415-14.828-3.011,1.391-4.866,1.621-6.857,1.807,1.807,0.74,1.807,3.801,1.807,13.764v11.397"/>
+ <path d="M66.535,143.86c-0.928-0.139-1.578-0.232-2.922-0.232-1.48,0-2.502,0.094-3.566,0.232,0.463-0.881,0.648-1.299,0.787-4.309,0.186-4.125,0.232-15.154-0.092-17.471-0.232-1.762-0.648-2.039-1.297-2.502,3.799-0.371,4.865-0.648,6.625-1.482-0.369,2.037-0.418,3.059-0.418,6.162-0.091,15.98-0.138,17.7,0.883,19.6"/>
+ <path d="M81.373,130.74c-0.092,2.92-0.139,4.959-0.928,6.58-0.973,2.086-2.594,2.688-3.799,2.688-2.783,0-3.383-2.316-3.383-4.586,0-4.355,3.893-4.682,5.652-4.682h2.458zm-12.744,5.7c0,2.92,0.881,5.838,3.477,7.09,1.158,0.51,2.316,0.51,2.688,0.51,4.264,0,5.699-3.152,6.58-5.098-0.047,2.039,0,3.289,0.139,4.912,0.834-0.047,1.668-0.139,3.059-0.139,0.787,0,1.529,0.092,2.316,0.139-0.51-0.787-0.787-1.252-0.928-3.059-0.092-1.76-0.092-3.521-0.092-5.977l0.047-9.453c0-3.523-0.928-6.998-7.879-6.998-4.586,0-7.273,1.391-8.617,2.086,0.557,1.02,1.02,1.898,1.436,3.893,1.809-1.576,4.172-2.41,6.58-2.41,3.848,0,3.848,2.549,3.848,6.162-0.881-0.045-1.623-0.137-2.875-0.137-5.887,0.01-9.779,2.28-9.779,8.49"/>
+ <path d="M108.06,139.27c0.047,1.576,0.047,3.244,0.695,4.588-1.021-0.092-1.623-0.232-3.521-0.232-1.113,0-1.715,0.094-2.596,0.232,0.184-0.602,0.279-0.834,0.371-1.623,0.139-1.064,0.232-4.633,0.232-5.885v-5.004c0-2.178,0-5.33-0.141-6.441-0.092-0.787-0.322-2.918-3.012-2.918-2.641,0-3.521,1.945-3.846,3.521-0.369,1.621-0.369,3.383-0.369,10.24,0.045,5.932,0.045,6.486,0.508,8.109-0.787-0.092-1.76-0.184-3.15-0.184-1.113,0-1.854,0.045-2.779,0.184,0.324-0.742,0.51-1.113,0.602-3.707,0.094-2.549,0.279-15.061-0.141-18.025-0.23-1.809-0.695-2.225-1.203-2.688,3.754-0.186,4.957-0.789,6.117-1.389v4.91c0.555-1.438,1.713-4.635,6.348-4.635,5.793,0,5.838,4.217,5.885,6.996v13.928"/>
+ <path fill="#D70751" d="M66.926,111.53l-3.838,3.836-3.836-3.836,3.836-3.836,3.838,3.84"/>
+</svg>
+
diff --git a/img/download/firefox2019.png b/img/download/firefox2019.png
new file mode 100644
index 0000000000000000000000000000000000000000..0e90e13f3f3094eea93f166e9a2e4bba96d4ece9
Binary files /dev/null and b/img/download/firefox2019.png differ
diff --git a/img/download/github.svg b/img/download/github.svg
new file mode 100644
index 0000000000000000000000000000000000000000..b9177165ea7a6b05379d284c5f7bfe054b0afc68
--- /dev/null
+++ b/img/download/github.svg
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="151mm"
+   height="151mm"
+   viewBox="0 0 151 151"
+   version="1.1"
+   id="svg8"
+   inkscape:version="0.92.3 (2405546, 2018-03-11)"
+   sodipodi:docname="github.svg">
+  <defs
+     id="defs2" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.49497475"
+     inkscape:cx="-41.005027"
+     inkscape:cy="169.2545"
+     inkscape:document-units="mm"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1366"
+     inkscape:window-height="703"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata5">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-146)">
+    <path
+       style="fill:#000000;stroke-width:0.26458335"
+       d=""
+       id="path72"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#1b1e22;fill-opacity:1;stroke-width:0.10056645"
+       d="m 93.051884,281.19194 c -0.630731,-0.10768 -1.428182,-0.55389 -1.754512,-0.98172 -0.145834,-0.1912 -0.349911,-0.5707 -0.453502,-0.84333 -0.179362,-0.47205 -0.18818,-0.94996 -0.184877,-10.01963 0.0023,-5.88265 -0.03562,-9.83155 -0.0988,-10.32848 -0.423432,-3.33088 -1.535141,-6.00224 -3.284002,-7.89122 -0.312042,-0.33703 -0.549874,-0.62594 -0.52852,-0.64201 0.02137,-0.016 0.649766,-0.1091 1.396471,-0.20674 16.431798,-2.14881 24.505218,-10.08005 25.857758,-25.40234 0.18657,-2.11348 0.16232,-6.0379 -0.0466,-7.53895 -0.63481,-4.56164 -2.42391,-8.65594 -5.24178,-11.99565 -0.36148,-0.42842 -0.65723,-0.84134 -0.65723,-0.91759 0,-0.0762 0.0705,-0.33666 0.15678,-0.57869 0.60253,-1.69117 0.95028,-4.02313 0.94749,-6.35349 -0.004,-2.64555 -0.35945,-4.77765 -1.23816,-7.41002 l -0.5198,-1.55717 -0.40227,-0.0859 c -0.5765,-0.12312 -2.35426,-0.008 -3.46954,0.22532 -3.3242,0.69447 -7.268746,2.48986 -11.49994,5.23431 l -1.221721,0.79243 -1.810192,-0.44387 c -6.247421,-1.53192 -13.278455,-1.95383 -19.861877,-1.19184 -2.114709,0.24476 -4.707023,0.70629 -6.687387,1.19058 l -1.809916,0.44263 -1.307644,-0.83275 c -4.40682,-2.80641 -8.44578,-4.60714 -11.731701,-5.23047 -1.060428,-0.20116 -2.643081,-0.29459 -3.152418,-0.1861 l -0.402264,0.0857 -0.519801,1.55717 c -0.878709,2.63237 -1.234963,4.76447 -1.238152,7.41003 -0.0026,2.33035 0.344955,4.66231 0.947487,6.35348 0.08623,0.24203 0.156781,0.50244 0.156781,0.57869 0,0.0762 -0.295812,0.48917 -0.657361,0.9176 -0.966262,1.14499 -2.261208,3.12466 -2.943487,4.49991 -2.196174,4.42676 -2.876238,8.88683 -2.323122,15.23582 0.716572,8.22521 3.607389,14.5233 8.546004,18.61879 1.479237,1.2267 2.84379,2.10568 4.72445,3.04329 2.607596,1.30003 5.301133,2.20529 8.559339,2.87666 1.537323,0.31678 4.653159,0.80345 5.146145,0.8038 0.282041,2.1e-4 0.279026,0.006 -0.29019,0.62874 -1.534134,1.67643 -2.628173,4.00146 -3.110025,6.60932 -0.08657,0.46856 -0.190397,0.88432 -0.230721,0.92395 -0.132319,0.13004 -1.563618,0.66921 -2.485558,0.93631 -4.965229,1.43851 -9.425105,0.44006 -12.640765,-2.82993 -1.096547,-1.11507 -1.163581,-1.19947 -2.270265,-2.85831 -1.046162,-1.56812 -1.698742,-2.38636 -2.633259,-3.30167 -2.371595,-2.32287 -5.106073,-3.39186 -7.74271,-3.02685 -0.891593,0.12343 -1.548498,0.38552 -1.653761,0.65984 -0.03447,0.0899 -0.06269,0.31154 -0.06269,0.49266 0,0.63386 1.064361,1.71764 2.552903,2.59946 0.814274,0.48238 1.9579,1.52529 2.725423,2.48538 1.227672,1.5357 2.959147,4.40712 3.576887,5.9318 0.825837,2.03829 1.69783,3.42182 2.824313,4.48113 1.887651,1.7751 4.473126,2.88717 7.716088,3.31891 2.158571,0.28737 6.145427,0.14565 8.846566,-0.31445 0.516111,-0.0879 0.952432,-0.14467 0.969601,-0.12611 0.01719,0.0187 0.04744,2.72643 0.06727,6.01748 l 0.03607,5.9837 -0.281699,0.57364 c -0.523082,1.0652 -1.284394,1.50688 -2.704268,1.56889 -0.941693,0.0411 -1.014771,0.0283 -2.162178,-0.38233 -2.301725,-0.82354 -4.228778,-1.64195 -6.517565,-2.768 -6.378377,-3.1381 -11.563357,-6.89661 -16.595276,-12.02971 -9.197306,-9.38222 -15.023762,-21.42275 -16.685106,-34.4802 -0.351941,-2.7661 -0.408681,-3.83916 -0.406784,-7.69334 0.0019,-4.18024 0.09705,-5.59172 0.602377,-8.95041 1.302781,-8.65901 4.434249,-16.83105 9.257793,-24.15963 2.370071,-3.60092 4.531003,-6.2351 7.781187,-9.48529 5.047291,-5.0473 9.967661,-8.56039 16.33572,-11.66355 6.490506,-3.16284 13.054733,-5.00775 20.627893,-5.79758 2.149675,-0.22421 8.818244,-0.25575 10.861179,-0.0513 7.671295,0.7674 14.26178,2.54582 20.514627,5.53581 6.69364,3.20077 11.74118,6.76667 16.95278,11.97653 5.04555,5.04387 8.5563,9.96144 11.6626,16.33589 3.08867,6.33832 4.94839,12.87124 5.75095,20.20233 0.30135,2.7526 0.32556,9.12181 0.0448,11.78957 -0.38747,3.68216 -0.86406,6.35096 -1.72399,9.65438 -4.7673,18.31325 -18.2283,33.61451 -35.803787,40.69852 -2.891465,1.16544 -4.067808,1.46219 -5.098621,1.28623 z"
+       id="path943"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/img/download/tux.png b/img/download/tux.png
deleted file mode 100644
index a425585d7fd54fce6cb5714bfedc9e0297191366..0000000000000000000000000000000000000000
Binary files a/img/download/tux.png and /dev/null differ
diff --git a/img/download/tux.svg b/img/download/tux.svg
new file mode 100644
index 0000000000000000000000000000000000000000..c8e7f02e095ba722b4bf4411454b79182ec606f3
--- /dev/null
+++ b/img/download/tux.svg
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="151mm"
+   height="151mm"
+   viewBox="0 0 151 151"
+   version="1.1"
+   id="svg8"
+   inkscape:version="0.92.3 (2405546, 2018-03-11)"
+   sodipodi:docname="tux.svg">
+  <defs
+     id="defs2" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.49497475"
+     inkscape:cx="-175.63779"
+     inkscape:cy="379.98482"
+     inkscape:document-units="mm"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1366"
+     inkscape:window-height="703"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata5">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-146)">
+    <path
+       style="fill:#000000;stroke-width:0.26458335"
+       d=""
+       id="path72"
+       inkscape:connector-curvature="0" />
+    <g
+       id="g1071"
+       transform="matrix(1.3737564,0,0,1.3737564,-3.7627692,-70.268314)">
+      <path
+         style="fill:#fefefe;stroke-width:0.26458335"
+         d="M 5.2554202,212.82353 V 159.90686 H 58.17209 111.08876 v 52.91667 52.91667 H 58.17209 5.2554202 Z"
+         id="path1083"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#9f9f9f;stroke-width:0.26458335"
+         d="m 38.989797,257.34966 c -0.291041,-0.0699 -2.672292,-0.81977 -5.291667,-1.66639 -2.619375,-0.84662 -6.429375,-1.85552 -8.466667,-2.24198 -6.547204,-1.24199 -9.736199,-1.97943 -10.377825,-2.39984 -1.218034,-0.79809 -1.300611,-1.48789 -0.484011,-4.04311 0.802974,-2.51259 0.807833,-3.24226 0.04031,-6.05312 -0.361543,-1.32406 -0.392296,-1.85411 -0.158046,-2.72405 0.442191,-1.64217 1.40723,-2.11068 4.364989,-2.11913 3.37729,-0.01 4.363117,-0.4937 5.410976,-2.65688 0.435357,-0.89874 1.097588,-2.0353 1.471626,-2.52569 0.54222,-0.71089 0.624204,-0.996 0.404463,-1.40659 -0.151583,-0.28324 -0.275606,-1.22468 -0.275606,-2.09209 0,-1.64558 0.540381,-2.94399 2.936882,-7.05663 0.508783,-0.87313 1.686072,-3.25438 2.616199,-5.29167 1.910188,-4.18396 2.625963,-5.35774 4.759619,-7.80521 2.200688,-2.52436 6.758432,-8.24061 7.121213,-8.93132 0.237927,-0.45299 0.247311,-1.76092 0.03892,-5.42395 -0.409003,-7.18936 -0.35724,-14.05707 0.119756,-15.88838 1.127937,-4.33044 3.862041,-7.04878 8.336579,-8.28849 2.392397,-0.66284 8.921082,-0.66159 11.377084,0.002 5.57424,1.5065 9.62898,5.03498 10.560014,9.18945 0.147505,0.6582 0.514863,3.57025 0.816348,6.47122 0.84242,8.10598 0.950005,8.52258 3.138665,12.15367 1.937705,3.21475 4.012245,6.07782 6.5434,9.03056 3.892688,4.54103 4.765136,5.77729 6.329975,8.96953 0.991954,2.02356 1.681638,3.93067 2.248574,6.21771 1.394413,5.62512 1.346444,7.93247 -0.207475,9.9796 -0.552755,0.72819 -0.584012,0.85989 -0.204092,0.85989 0.963906,0 1.90599,1.38586 2.237957,3.29215 0.174289,1.00085 0.480968,2.13701 0.681509,2.52482 0.530958,1.02675 2.197994,2.44622 4.164253,3.54581 2.955941,1.65306 3.882901,2.93184 3.043781,4.19905 -0.58273,0.88003 -4.170149,2.94113 -7.644002,4.39176 -3.621836,1.51242 -5.392579,2.55335 -8.425572,4.95296 -3.340333,2.64277 -3.915876,2.84288 -7.780184,2.70503 -3.664768,-0.13073 -4.893985,-0.57587 -6.1648,-2.23251 -1.63816,-2.13549 -0.558589,-1.94781 -11.204348,-1.94781 -10.694272,0 -12.089867,0.1623 -14.579628,1.69555 -0.777563,0.47884 -2.121122,1.30526 -2.985685,1.83649 -1.558698,0.95774 -2.842075,1.17879 -4.513483,0.77742 z m 10.715626,-7.91656 c 0,-0.99813 -0.156633,-1.33715 -1.081207,-2.34019 -1.051388,-1.14063 -1.163979,-1.72563 -0.332121,-1.72563 0.22414,0 1.13138,0.44649 2.016091,0.99219 l 1.608564,0.99219 4.252151,-0.009 c 6.552583,-0.0137 9.002982,-0.76508 12.032036,-3.68939 0.983112,-0.94912 1.962494,-1.72566 2.176399,-1.72566 1.223076,0 1.304163,1.40979 0.306324,5.32584 -0.608465,2.38796 -0.668242,2.92456 -0.393076,3.52848 1.046668,2.29719 1.870568,-2.31456 2.117501,-11.85262 l 0.183798,-7.09932 0.843108,-0.7533 c 0.537654,-0.48038 1.280536,-0.81889 2.050478,-0.93435 0.933583,-0.14 1.28238,-0.33385 1.538143,-0.85483 0.975243,-1.98655 4.454324,-2.74514 7.603987,-1.65799 0.798809,0.27572 1.490274,0.46341 1.536587,0.4171 0.137279,-0.13728 -1.333225,-1.08066 -2.261365,-1.45075 -0.472943,-0.18859 -0.859896,-0.45878 -0.859896,-0.60044 0,-0.14165 0.253452,-1.09199 0.563227,-2.11186 0.788315,-2.59536 0.607925,-6.25352 -0.42145,-8.54659 -1.32035,-2.94126 -4.100687,-6.84699 -5.733391,-8.0541 -1.199783,-0.88704 -1.211051,-0.46864 -0.02588,0.96111 5.052688,6.09546 7.047464,12.57096 5.107171,16.57907 -0.727922,1.50369 -1.493322,2.00021 -3.175141,2.05974 -2.20613,0.0781 -2.300608,-0.11365 -2.466168,-5.00464 -0.170897,-5.04861 -0.522256,-6.18281 -3.299682,-10.65152 -1.053508,-1.69504 -2.081221,-3.71692 -2.329292,-4.58258 -0.6732,-2.34917 -1.601848,-4.28059 -2.841754,-5.91034 -1.990178,-2.61592 -2.285691,-3.10745 -2.462763,-4.09637 -0.161248,-0.90054 -0.219171,-0.95202 -0.782498,-0.69535 -0.334597,0.15246 -0.662834,0.48551 -0.729416,0.74011 -0.06658,0.25461 -0.642218,0.68445 -1.279195,0.95522 -2.030651,0.86317 -4.799314,2.36543 -6.946776,3.76927 -1.88523,1.23243 -2.226635,1.36257 -3.571875,1.36168 -1.920341,-0.001 -2.768894,-0.52374 -4.710385,-2.90026 -0.836309,-1.02368 -1.590202,-1.86124 -1.675329,-1.86124 -0.08512,0 -0.310324,0.44649 -0.500446,0.99219 -0.190122,0.5457 -1.010248,2.18281 -1.822503,3.63802 -1.414119,2.53349 -1.483149,2.74695 -1.625746,5.02708 -0.158099,2.52805 -0.15799,2.52776 -1.568505,4.36563 -1.210459,1.5772 -3.344972,6.06265 -3.880935,8.15536 -0.23567,0.9202 -0.508665,3.12285 -0.606653,4.8948 -0.168984,3.05576 -0.208195,3.22599 -0.761172,3.30465 -0.916157,0.13033 -2.84798,-1.80974 -3.257111,-3.27101 -0.315195,-1.12577 -0.249782,-3.42375 0.146495,-5.1463 0.138133,-0.60045 0.110138,-0.58824 -0.303512,0.13229 -0.26689,0.4649 -0.506912,1.58955 -0.579336,2.71456 -0.210313,3.2669 0.720698,4.92815 4.444182,7.92999 2.030735,1.63715 3.467497,2.68234 9.347796,6.80012 3.533764,2.47457 3.720822,4.29828 0.635846,6.19921 -0.982551,0.60543 -0.989991,0.62251 -0.529166,1.21441 0.257069,0.33019 0.97078,1.24933 1.586023,2.04253 1.252152,1.61432 1.952607,3.3061 1.752471,4.23265 l -0.13317,0.61653 0.549267,-0.62462 c 0.378571,-0.43051 0.549267,-0.98736 0.549267,-1.79185 z M 35.878771,212.36051 c 0.892125,-0.77485 1.208868,-1.65603 0.663771,-1.84664 -0.181825,-0.0636 -0.407792,0.10267 -0.502151,0.36943 -0.09436,0.26676 -0.457665,0.87197 -0.807352,1.34492 -0.777071,1.05096 -0.481671,1.11148 0.645732,0.13229 z M 73.7732,197.75967 c 0.456943,-0.85381 0.325347,-1.07248 -0.98288,-1.63321 -0.691224,-0.29627 -1.46586,-0.72787 -1.721413,-0.95911 -0.679191,-0.61457 -0.805366,-0.27847 -0.333452,0.88826 0.397214,0.98204 1.755103,2.21584 2.438704,2.21584 0.178832,0 0.4484,-0.2303 0.599041,-0.51178 z m -26.071207,-8.463 c 0.438959,-0.48505 0.433797,-0.52204 -0.113684,-0.81505 -0.674354,-0.3609 -1.32247,-1.77354 -1.32247,-2.88247 0,-1.63622 2.498305,-2.52147 3.624983,-1.28448 0.799396,0.87767 1.137518,1.64771 1.137518,2.59061 0,0.65676 0.09108,0.8045 0.418515,0.67885 0.230182,-0.0883 0.505082,-0.1606 0.610886,-0.1606 0.105807,0 0.104412,-0.82321 -0.0031,-1.82936 -0.314005,-2.93875 -1.288256,-4.25988 -3.135701,-4.25216 -1.320131,0.006 -2.150388,0.50526 -2.859085,1.72091 -0.508037,0.87146 -0.594897,1.3302 -0.5031,2.65701 0.1104,1.5956 0.992148,4.08485 1.446945,4.08485 0.131152,0 0.445379,-0.22865 0.698289,-0.50811 z m 18.968067,-0.74866 c 0.704906,-1.81369 -0.645252,-6.14784 -2.201534,-7.06716 -0.480653,-0.28393 -1.558761,-0.53655 -2.61124,-0.61185 -1.520232,-0.10877 -1.934432,-0.0406 -2.726166,0.44872 -1.350769,0.83483 -2.312397,2.98042 -2.251117,5.02273 0.04364,1.45445 0.09414,1.57118 0.735618,1.7007 0.37882,0.0765 0.926886,0.22923 1.217928,0.33943 0.471162,0.17839 0.489167,0.15119 0.164269,-0.24819 -0.247933,-0.30477 -0.319879,-0.84796 -0.224452,-1.6946 0.306877,-2.72261 3.459407,-3.68483 5.473576,-1.67066 0.602348,0.60235 0.738138,2.32046 0.254776,3.22363 -0.443683,0.82903 -0.108548,1.28485 0.94466,1.28485 0.781484,0 0.988804,-0.12327 1.223682,-0.7276 z m -16.842066,-1.98438 c -0.245832,-0.8237 -0.927672,-1.86278 -1.105593,-1.68486 -0.08085,0.0808 0.04773,0.44418 0.285723,0.8074 0.237993,0.36322 0.432716,0.84319 0.432716,1.06659 0,0.2234 0.127084,0.40619 0.282413,0.40619 0.169127,0 0.211143,-0.2388 0.104741,-0.59532 z m 13.900347,-0.21046 c 0,-0.66931 -1.131465,-1.84109 -1.773913,-1.83712 -0.358232,0.002 -0.263599,0.16958 0.38485,0.68063 0.472943,0.37274 0.859896,0.9072 0.859896,1.18769 0,0.2805 0.119062,0.50999 0.264583,0.50999 0.145521,0 0.264584,-0.24353 0.264584,-0.54119 z m 2.260467,-11.36506 c 0.899716,0 0.741482,-0.48218 -0.415456,-1.266 -1.12254,-0.76051 -1.640203,-0.66649 -1.880558,0.34156 -0.103884,0.43568 -0.274201,1.07101 -0.378481,1.41183 l -0.189603,0.61969 1.085024,-0.55354 c 0.596765,-0.30445 1.397347,-0.55354 1.779074,-0.55354 z"
+         id="path1081"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#fbc40f;stroke-width:0.26458335"
+         d="m 34.888755,255.93652 c -4.654395,-1.4882 -8.055206,-2.37967 -11.509375,-3.01701 -6.63224,-1.22374 -7.961412,-1.57717 -8.797397,-2.33927 -0.776616,-0.70798 -0.754066,-1.5195 0.115564,-4.15903 l 0.710877,-2.15768 -0.629428,-2.47372 c -0.494496,-1.94343 -0.575989,-2.68466 -0.380147,-3.45767 0.397914,-1.57062 1.126925,-1.9088 4.684752,-2.17323 3.644461,-0.27087 3.9004,-0.42571 5.390346,-3.26108 0.507942,-0.96662 1.211137,-2.02768 1.562655,-2.35792 0.587028,-0.55148 0.60278,-0.627 0.193249,-0.92645 -0.343447,-0.25114 -0.445876,-0.74495 -0.445876,-2.1496 0,-1.97983 -0.265656,-1.35896 3.547234,-8.29033 0.760474,-1.38245 1.617389,-3.10885 1.904256,-3.83646 1.200526,-3.04498 2.799012,-5.634 5.250702,-8.50438 1.39882,-1.6377 3.546412,-4.25969 4.772427,-5.82664 l 2.22912,-2.849 -0.04187,-1.72874 c -0.02303,-0.95081 -0.171091,-4.05046 -0.329018,-6.88811 -0.420423,-7.55416 -0.375944,-9.90028 0.23282,-12.28052 1.249868,-4.88695 3.875588,-7.38278 8.960116,-8.51688 2.997919,-0.66869 8.983745,-0.40974 11.815459,0.51113 5.240623,1.70425 8.391597,4.85259 9.348745,9.34095 0.159256,0.74679 0.423643,3.00898 0.587529,5.02708 0.461859,5.68737 1.12472,9.15997 2.108724,11.04725 1.506217,2.88885 5.203965,8.1673 7.700815,10.99273 5.519158,6.24546 7.431127,9.86401 8.954551,16.94713 0.984311,4.57653 0.739589,6.64373 -1.015463,8.57778 -0.383569,0.42269 -0.553813,0.68679 -0.378317,0.58689 0.175495,-0.0999 0.734028,-0.008 1.241184,0.20365 0.958128,0.40033 1.373381,1.29738 1.666624,3.60031 0.21659,1.70097 1.385257,3.19217 3.662241,4.67296 3.917836,2.54789 4.215866,2.80809 4.308126,3.76132 0.0537,0.55473 -0.0818,1.05963 -0.3696,1.3777 -0.76149,0.84142 -4.453877,2.87517 -7.621791,4.19805 -3.489487,1.45715 -5.352648,2.554 -8.100659,4.76887 -3.094818,2.4944 -3.849558,2.78716 -7.14375,2.77108 -3.975135,-0.0194 -4.813351,-0.3209 -6.822663,-2.45401 l -1.66329,-1.76576 h -9.846086 c -11.548383,0 -11.799544,0.0433 -16.044935,2.76581 -2.364316,1.51621 -2.578621,1.59914 -4.101041,1.58694 -1.171636,-0.009 -2.716218,-0.36774 -5.707405,-1.32414 z m 14.404791,-4.54269 c 0.246399,-0.35179 0.411877,-1.14873 0.411877,-1.98362 0,-1.23465 -0.111538,-1.51903 -0.967333,-2.46629 -1.163224,-1.28755 -0.926171,-1.83659 0.448218,-1.03813 2.888747,1.67823 3.021814,1.7086 7.26599,1.65829 6.120866,-0.0726 9.066417,-1.02188 11.745411,-3.78539 1.4898,-1.53681 2.339687,-2.02708 2.768934,-1.59733 0.467849,0.4684 0.308739,2.58895 -0.355405,4.73662 -0.942094,3.0465 -0.805553,4.5137 0.421635,4.53067 0.665454,0.009 1.208561,-4.34244 1.495208,-11.98038 l 0.285933,-7.6188 0.890328,-0.78172 c 0.664943,-0.58383 1.155015,-0.78172 1.935906,-0.78172 0.946661,0 1.082514,-0.0884 1.436042,-0.93452 0.544304,-1.3027 2.066108,-1.96244 4.544306,-1.97009 1.036731,-0.003 2.391154,0.17279 3.009829,0.39107 0.618675,0.21828 1.318255,0.39628 1.554621,0.39556 0.61451,-0.002 -0.930567,-1.22511 -2.017642,-1.59735 -0.925425,-0.3169 -1.056211,-0.76095 -0.587335,-1.99419 0.568497,-1.49526 0.813678,-4.49733 0.519835,-6.36504 -0.467024,-2.96848 -2.539074,-6.78711 -5.26908,-9.71052 -1.067273,-1.14289 -2.667066,-2.27945 -2.667066,-1.8948 0,0.0804 0.692391,1.06574 1.538647,2.18961 3.794276,5.03898 5.004388,7.70085 5.265336,11.58209 0.171043,2.54403 -0.354703,4.71161 -1.37537,5.67048 -0.505868,0.47523 -1.053539,0.66008 -2.201776,0.74314 -2.195766,0.15883 -2.225688,0.0953 -2.444006,-5.18757 -0.212069,-5.1317 -0.460336,-5.99674 -2.7826,-9.69545 -1.872461,-2.98229 -2.455471,-4.13179 -2.945402,-5.80732 -0.58641,-2.00547 -1.809502,-4.29 -3.438457,-6.42242 -1.035171,-1.35512 -1.493385,-2.21284 -1.597726,-2.99077 -0.11689,-0.87147 -0.231992,-1.05526 -0.572577,-0.91423 -0.234452,0.0971 -0.60956,0.22987 -0.83357,0.29508 -0.224012,0.0652 -0.521668,0.37008 -0.661458,0.6775 -0.15462,0.34002 -0.927748,0.83057 -1.973959,1.25248 -1.571307,0.63367 -2.591871,1.20903 -6.867461,3.87165 -1.090938,0.67938 -1.737167,0.8987 -2.645834,0.89795 -1.56903,-0.001 -2.437307,-0.55687 -4.503383,-2.88158 -0.925875,-1.04178 -1.8024,-1.85447 -1.947834,-1.80599 -0.145433,0.0485 -0.41747,0.5302 -0.604525,1.07049 -0.187053,0.54029 -1.009393,2.16443 -1.827419,3.60918 -1.425895,2.51834 -1.494854,2.72848 -1.669674,5.08817 -0.175036,2.36256 -0.226907,2.52016 -1.292374,3.92665 -1.63354,2.15639 -3.720481,6.70545 -4.181419,9.11455 -0.214085,1.11893 -0.389245,3.07274 -0.389245,4.34181 0,1.57374 -0.119253,2.47049 -0.375049,2.82032 -0.365371,0.49967 -0.403927,0.49244 -1.493981,-0.28016 -1.609921,-1.14107 -2.09972,-2.22044 -2.09972,-4.62715 0,-1.09463 0.110752,-2.37641 0.246113,-2.8484 0.320579,-1.11779 -0.09234,-1.11676 -0.698643,0.002 -0.335077,0.61814 -0.465722,1.45497 -0.464701,2.97656 0.0012,1.77325 0.114796,2.33302 0.70023,3.4502 1.029095,1.96383 3.937707,4.44966 10.668043,9.11742 3.659333,2.53789 4.73772,3.48004 5.165575,4.51297 0.443383,1.07042 -0.109001,2.04059 -1.792084,3.14749 l -1.38901,0.9135 0.747551,0.80629 c 2.334427,2.51786 3.362468,4.46766 3.098234,5.87615 -0.19218,1.02441 0.163084,1.16075 0.769316,0.29523 z M 36.302258,212.07871 c 0.754279,-0.79271 0.861806,-1.628 0.236378,-1.83625 -0.188238,-0.0627 -0.499692,0.28401 -0.712316,0.79289 -0.207804,0.49735 -0.563298,1.05819 -0.789985,1.24633 -0.22669,0.18813 -0.412163,0.51026 -0.412163,0.71585 0,0.4993 0.686253,0.12355 1.678086,-0.91882 z m 37.632409,-14.45368 c 0.214273,-0.85374 0.03679,-1.09062 -1.287597,-1.71854 -0.612437,-0.29037 -1.381411,-0.725 -1.708833,-0.96585 -0.56904,-0.41858 -0.595313,-0.41255 -0.595313,0.13667 0,2.05851 3.15317,4.29513 3.591743,2.54772 z m -25.988403,-8.40026 c 0.225864,-0.35867 0.140687,-0.55882 -0.428284,-1.00637 -0.907171,-0.71359 -1.380151,-2.34111 -0.952878,-3.27887 0.43924,-0.96402 1.887723,-1.40832 2.74982,-0.84345 0.935844,0.61319 1.496965,1.59019 1.527267,2.65922 0.02724,0.96089 0.430218,1.18897 1.218703,0.68976 0.515443,-0.32634 0.204298,-3.13228 -0.500533,-4.51386 -0.605412,-1.18671 -1.279446,-1.63665 -2.503742,-1.67136 -1.238557,-0.0351 -2.313162,0.50024 -2.989215,1.48916 -0.467884,0.68441 -0.595313,1.24115 -0.595313,2.6009 0,3.29204 1.430454,5.53231 2.474175,3.87487 z m 18.554399,-0.20733 c 0.393886,-0.43524 0.451795,-0.85456 0.345898,-2.50467 -0.141557,-2.20577 -0.934773,-4.10992 -2.062948,-4.95223 -0.888154,-0.6631 -3.536723,-1.08084 -4.761609,-0.75101 -1.93621,0.52137 -3.172831,2.61215 -3.172831,5.36437 v 1.67779 l 1.318443,0.42162 1.31844,0.42162 -0.300776,-0.562 c -0.5941,-1.11009 -0.179593,-3.04547 0.815965,-3.80984 0.660572,-0.50717 2.688643,-0.40571 3.653848,0.1828 1.087721,0.66321 1.296377,1.52164 0.755619,3.10868 -0.401897,1.1795 -0.400357,1.28401 0.02349,1.59395 0.663646,0.48527 1.526574,0.40547 2.066448,-0.19108 z m -16.635781,-2.71485 c -0.193664,-0.96831 -0.770072,-1.66931 -1.169591,-1.42239 -0.296513,0.18325 0.72176,2.27291 1.109351,2.27656 0.12733,0.001 0.15444,-0.38317 0.06024,-0.85417 z m 13.913684,-0.22657 c -0.104584,-0.81161 -0.97859,-1.56291 -1.818169,-1.56291 -0.633418,0 -0.625488,0.024 0.293897,0.89114 0.519684,0.49012 0.94488,1.03583 0.94488,1.21267 0,0.17685 0.148828,0.27078 0.330729,0.20875 0.181901,-0.062 0.293799,-0.39938 0.248663,-0.74965 z m 0.435076,-10.40377 c 0.397986,-0.2058 1.165979,-0.45718 1.706655,-0.55861 0.540674,-0.10143 0.983044,-0.2761 0.983044,-0.38816 0,-0.41921 -1.884336,-1.62159 -2.415003,-1.54098 -0.387919,0.0589 -0.700633,0.47684 -1.052595,1.40674 -0.275397,0.7276 -0.500819,1.35268 -0.500938,1.38906 -5.29e-4,0.17893 0.631608,0.0266 1.278837,-0.30805 z"
+         id="path1079"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#f4bb0d;stroke-width:0.26458335"
+         d="m 34.888755,255.93652 c -4.654395,-1.4882 -8.055206,-2.37967 -11.509375,-3.01701 -6.63224,-1.22374 -7.961412,-1.57717 -8.797397,-2.33927 -0.776616,-0.70798 -0.754066,-1.5195 0.115564,-4.15903 l 0.710877,-2.15768 -0.629428,-2.47372 c -0.494496,-1.94343 -0.575989,-2.68466 -0.380147,-3.45767 0.397914,-1.57062 1.126925,-1.9088 4.684752,-2.17323 3.607759,-0.26815 3.954432,-0.46805 5.252149,-3.02861 0.424072,-0.83674 0.947919,-1.52135 1.164105,-1.52135 0.629058,0 0.481002,1.72226 -0.297111,3.45612 -0.986191,2.19753 -1.690899,2.49359 -5.780709,2.4286 -4.124753,-0.0655 -4.249011,0.10088 -2.626913,3.51827 0.831956,1.75274 0.941884,2.21011 0.84502,3.51582 -0.09068,1.22241 -0.301283,1.76428 -1.134764,2.91967 -1.307911,1.81307 -1.140133,2.09879 1.597972,2.72131 7.301667,1.66008 20.864392,4.275 22.21728,4.28353 2.148213,0.0136 3.530434,-0.66846 4.202372,-2.07353 0.278366,-0.58208 0.605788,-1.26508 0.727605,-1.51776 0.623683,-1.29373 -0.163309,-3.98006 -1.880746,-6.41974 -0.953447,-1.35441 -5.294003,-7.0377 -5.557002,-7.27604 -0.08029,-0.0728 -0.610761,-0.72761 -1.178832,-1.45521 -0.568069,-0.7276 -2.007241,-2.29461 -3.198157,-3.48223 -2.514083,-2.50712 -3.654174,-3.03309 -5.42471,-2.50263 -1.453416,0.43546 -2.009406,0.0922 -2.229641,-1.3764 -0.236334,-1.57599 0.127945,-2.9959 1.315713,-5.12848 2.753327,-4.94345 3.660685,-6.67193 4.138233,-7.88318 1.200526,-3.04498 2.799012,-5.634 5.250702,-8.50438 1.39882,-1.6377 3.546412,-4.25969 4.772427,-5.82664 l 2.22912,-2.849 -0.04187,-1.72874 c -0.02303,-0.95081 -0.171091,-4.05046 -0.329018,-6.88811 -0.420423,-7.55416 -0.375944,-9.90028 0.23282,-12.28052 1.249868,-4.88695 3.875588,-7.38278 8.960116,-8.51688 2.997919,-0.66869 8.983745,-0.40974 11.815459,0.51113 5.240623,1.70425 8.391597,4.85259 9.348745,9.34095 0.159256,0.74679 0.423643,3.00898 0.587529,5.02708 0.461859,5.68737 1.12472,9.15997 2.108724,11.04725 1.506217,2.88885 5.203965,8.1673 7.700815,10.99273 5.519158,6.24546 7.431127,9.86401 8.954551,16.94713 0.981625,4.56405 0.733425,6.6854 -0.998818,8.53686 -0.374415,0.40018 -0.588537,0.7276 -0.475827,0.7276 0.280442,0 -2.632827,2.36938 -3.964324,3.22421 -2.260391,1.45118 -4.810477,1.9031 -6.576066,1.1654 -1.049753,-0.43862 -3.005934,-2.43716 -3.584183,-3.66181 -0.319934,-0.67757 -0.567973,-0.86009 -1.168826,-0.86009 -1.928895,0 -2.416226,2.74647 -1.474976,8.31263 0.536329,3.17163 0.566976,3.79264 0.295987,5.99773 -0.166259,1.35287 -0.302289,3.19953 -0.302289,4.10369 0,1.57072 0.04662,1.68827 1.046819,2.63974 0.767884,0.73047 1.445331,1.085 2.54241,1.33051 2.194613,0.49114 3.8333,0.0667 6.668699,-1.72733 4.525669,-2.86347 5.704687,-3.42574 9.805819,-4.67642 4.124796,-1.2579 5.022191,-1.70086 5.94221,-2.93313 0.94024,-1.25935 0.12763,-1.89352 -3.814404,-2.97681 -1.740988,-0.47843 -3.200464,-1.87868 -3.651637,-3.50345 -0.358566,-1.29127 -0.363651,-3.40978 -0.0098,-4.07101 0.157589,-0.29446 0.169609,-0.51178 0.02831,-0.51178 -0.740191,0 -0.786927,3.85535 -0.06598,5.44268 0.628211,1.38314 2.135005,2.61911 3.694502,3.03047 3.646799,0.96194 4.159979,1.34142 3.471999,2.56741 -0.438379,0.78121 -2.645279,1.82965 -5.418348,2.57413 -2.90629,0.78024 -4.221986,1.26674 -5.494079,2.03152 -0.693412,0.41688 -1.314341,0.75796 -1.379847,0.75796 -0.06551,0 -1.105908,0.6366 -2.312003,1.41466 -1.206098,0.77807 -2.551266,1.59998 -2.989266,1.82648 -2.793714,1.44468 -6.930477,0.28135 -7.669398,-2.15679 -0.105921,-0.34949 -0.04302,-2.31402 0.13978,-4.36562 0.295904,-3.32101 0.281733,-4.03883 -0.129191,-6.54388 -0.617141,-3.76216 -0.499438,-7.51579 0.252915,-8.0657 0.738653,-0.53989 1.571342,-0.36039 1.673786,0.36082 0.137681,0.96925 2.56803,3.41533 3.898035,3.92326 1.390973,0.53122 3.845775,0.38365 5.218507,-0.31372 1.013688,-0.51497 4.018876,-2.58573 4.954302,-3.41383 0.619726,-0.54862 1.987778,-1.09096 1.739789,-0.6897 -0.06216,0.10058 0.235329,0.58186 0.661093,1.06951 0.425765,0.48765 0.778616,0.9598 0.784112,1.04922 0.169701,2.76104 1.126352,4.26373 3.836429,6.02617 3.917834,2.54789 4.215864,2.80809 4.308124,3.76132 0.0537,0.55473 -0.0818,1.05963 -0.3696,1.3777 -0.76148,0.84142 -4.453874,2.87517 -7.621789,4.19805 -3.489486,1.45715 -5.352648,2.554 -8.100658,4.76887 -3.094818,2.4944 -3.849558,2.78716 -7.143751,2.77108 -3.975134,-0.0194 -4.81335,-0.3209 -6.822662,-2.45401 l -1.66329,-1.76576 h -9.846086 c -11.548383,0 -11.799544,0.0433 -16.044935,2.76581 -2.364317,1.51621 -2.578621,1.59914 -4.101042,1.58694 -1.171636,-0.009 -2.716218,-0.36774 -5.707404,-1.32414 z m 14.404791,-4.54269 c 0.246399,-0.35179 0.411877,-1.14873 0.411877,-1.98362 0,-1.23465 -0.111538,-1.51903 -0.967333,-2.46629 -1.163224,-1.28755 -0.926171,-1.83659 0.448218,-1.03813 2.888747,1.67823 3.021814,1.7086 7.26599,1.65829 6.120866,-0.0726 9.066417,-1.02188 11.745411,-3.78539 1.4898,-1.53681 2.339687,-2.02708 2.768934,-1.59733 0.467849,0.4684 0.308739,2.58895 -0.355405,4.73662 -0.942094,3.0465 -0.805553,4.5137 0.421635,4.53067 0.665454,0.009 1.208561,-4.34244 1.495208,-11.98038 l 0.285933,-7.6188 0.890328,-0.78172 c 0.664943,-0.58383 1.155015,-0.78172 1.935906,-0.78172 0.946661,0 1.082514,-0.0884 1.436042,-0.93452 0.544304,-1.3027 2.066108,-1.96244 4.544306,-1.97009 1.036731,-0.003 2.391154,0.17279 3.009829,0.39107 0.618675,0.21828 1.318255,0.39628 1.554621,0.39556 0.61451,-0.002 -0.930567,-1.22511 -2.017642,-1.59735 -0.925425,-0.3169 -1.056211,-0.76095 -0.587335,-1.99419 0.568497,-1.49526 0.813678,-4.49733 0.519835,-6.36504 -0.467024,-2.96848 -2.539074,-6.78711 -5.26908,-9.71052 -1.067273,-1.14289 -2.667066,-2.27945 -2.667066,-1.8948 0,0.0804 0.692391,1.06574 1.538647,2.18961 3.794276,5.03898 5.004388,7.70085 5.265336,11.58209 0.171043,2.54403 -0.354703,4.71161 -1.37537,5.67048 -0.505868,0.47523 -1.053539,0.66008 -2.201776,0.74314 -2.195766,0.15883 -2.225688,0.0953 -2.444006,-5.18757 -0.212069,-5.1317 -0.460336,-5.99674 -2.7826,-9.69545 -1.872461,-2.98229 -2.455471,-4.13179 -2.945402,-5.80732 -0.583938,-1.99702 -1.807695,-4.28762 -3.414459,-6.39109 -1.751084,-2.2924 -2.108877,-3.68357 -1.49887,-5.82789 0.553106,-1.9443 0.1787,-2.5061 -2.093378,-3.14111 -3.352726,-0.93704 -4.433171,-1.45473 -4.893355,-2.34463 -0.716431,-1.38543 -0.406025,-3.23741 0.68272,-4.07332 0.660572,-0.50717 2.688643,-0.40571 3.653848,0.1828 1.087721,0.66321 1.296377,1.52164 0.755619,3.10868 -0.401897,1.1795 -0.400357,1.28401 0.02349,1.59395 0.663646,0.48527 1.526574,0.40547 2.066448,-0.19108 0.393886,-0.43524 0.451795,-0.85456 0.345898,-2.50467 -0.141557,-2.20577 -0.934773,-4.10992 -2.062948,-4.95223 -0.888154,-0.6631 -3.536723,-1.08084 -4.761609,-0.75101 -1.950858,0.52531 -3.172823,2.61044 -3.172823,5.41404 v 1.72745 l -2.315104,-0.0653 -2.315104,-0.0653 -0.02363,-1.85208 c -0.02619,-2.05312 -0.736151,-3.85184 -1.730331,-4.38391 -1.414041,-0.75677 -3.453297,-0.21673 -4.397605,1.16459 -1.376932,2.01415 -0.266388,7.59535 1.38521,6.96158 0.743289,-0.28523 0.760855,-0.94511 0.04025,-1.51194 -0.88518,-0.69628 -1.350569,-2.33114 -0.927759,-3.25911 0.43924,-0.96402 1.887723,-1.40832 2.74982,-0.84345 1.162881,0.76195 1.610048,1.8159 1.489982,3.5118 -0.02867,0.40506 -0.616296,0.96644 -1.938673,1.85209 -3.580641,2.3981 -3.897157,3.11147 -2.005079,4.51908 0.618464,0.4601 1.461098,1.1081 1.87252,1.43999 0.663575,0.53531 1.022085,0.60059 3.175,0.57811 3.366395,-0.0351 9.694321,-1.69239 11.574709,-3.03134 0.935321,-0.66601 1.567876,-0.51811 1.567876,0.36659 0,0.73328 0.06998,0.70287 -6.83015,2.96765 -4.428797,1.45363 -4.655524,1.49942 -6.815567,1.37662 -2.504067,-0.14236 -2.59184,0.0556 -0.490013,1.10533 0.992886,0.49588 1.503431,0.58752 2.627048,0.47155 1.633363,-0.16858 5.681861,-1.49562 7.91292,-2.59374 1.842284,-0.90677 2.802012,-1.00023 2.802012,-0.27284 0,0.64918 -0.371303,0.93375 -2.049193,1.57054 -1.270717,0.48226 -3.06316,1.493 -6.934935,3.91053 -1.092579,0.68221 -1.735802,0.90108 -2.645834,0.90033 -1.56903,-0.001 -2.437307,-0.55687 -4.503383,-2.88158 -0.925875,-1.04178 -1.8024,-1.85447 -1.947834,-1.80599 -0.145433,0.0485 -0.41747,0.5302 -0.604525,1.07049 -0.187053,0.54029 -1.009393,2.16443 -1.827419,3.60918 -1.425895,2.51834 -1.494854,2.72848 -1.669674,5.08817 -0.175036,2.36256 -0.226907,2.52016 -1.292374,3.92665 -1.63354,2.15639 -3.720481,6.70545 -4.181419,9.11455 -0.214085,1.11893 -0.389245,3.07274 -0.389245,4.34181 0,1.57374 -0.119253,2.47049 -0.375049,2.82032 -0.365371,0.49967 -0.403927,0.49244 -1.493981,-0.28016 -1.609921,-1.14107 -2.09972,-2.22044 -2.09972,-4.62715 0,-1.09463 0.110752,-2.37641 0.246113,-2.8484 0.320579,-1.11779 -0.09234,-1.11676 -0.698643,0.002 -0.335077,0.61814 -0.465722,1.45497 -0.464701,2.97656 0.0012,1.77325 0.114796,2.33302 0.70023,3.4502 1.029095,1.96383 3.937707,4.44966 10.668043,9.11742 3.659333,2.53789 4.73772,3.48004 5.165575,4.51297 0.443383,1.07042 -0.109001,2.04059 -1.792084,3.14749 l -1.38901,0.9135 0.747551,0.80629 c 2.334427,2.51786 3.362468,4.46766 3.098234,5.87615 -0.19218,1.02441 0.163084,1.16075 0.769316,0.29523 z m 1.586926,-52.98168 c -0.466016,-0.35247 -0.323316,-0.38924 1.540521,-0.39687 1.12976,-0.005 2.260854,-0.11889 2.513542,-0.25392 0.447137,-0.23893 2.888768,-1.063 7.470889,-2.52148 1.236927,-0.39371 2.517516,-0.96561 2.845755,-1.2709 l 0.596794,-0.55506 -0.57677,-0.61395 c -0.694801,-0.73958 -1.011262,-0.76269 -1.83791,-0.13422 -0.896178,0.68133 -3.43693,1.54242 -7.548351,2.55821 -1.924593,0.4755 -5.972144,0.53096 -6.792225,0.0931 -0.317855,-0.16972 -0.875575,-0.61771 -1.239377,-0.99554 -0.363803,-0.37783 -0.956268,-0.87667 -1.316588,-1.10855 -0.569913,-0.36674 -0.617178,-0.50488 -0.363371,-1.06193 0.160467,-0.35218 1.012891,-1.13522 1.894274,-1.74007 1.354685,-0.92965 1.651169,-1.0411 1.91712,-0.72065 0.408131,0.49177 1.165752,0.48368 1.667225,-0.0178 0.218281,-0.21828 0.495802,-0.39688 0.616712,-0.39688 0.120912,0 0.368551,-0.23812 0.550309,-0.52917 0.39261,-0.62867 1.913486,-0.75121 1.913486,-0.15417 0,0.20624 0.534463,0.57911 1.187696,0.82858 1.247381,0.47639 1.987304,0.26248 1.987304,-0.5745 0,-0.20046 0.115326,-0.36448 0.256281,-0.36448 0.140951,0 0.187745,0.1786 0.103983,0.39688 -0.09782,0.2549 0.0054,0.39687 0.288502,0.39687 0.284396,0 0.368851,-0.11735 0.238022,-0.33073 -0.111525,-0.1819 0.08981,-0.12324 0.447408,0.13035 0.90411,0.64115 2.267685,1.23017 3.825179,1.65233 2.789923,0.75622 3.043063,0.90743 3.038692,1.81508 -0.0055,1.13883 -0.667628,3.29795 -0.860835,2.80701 -0.11679,-0.29677 -0.156514,-0.27893 -0.172593,0.0775 -0.0227,0.50333 -0.678706,0.63244 -0.953582,0.18768 -0.206441,-0.33403 -0.824651,-0.16125 -2.903765,0.81155 -4.543619,2.12592 -9.013463,2.9848 -10.334327,1.98575 z m -0.551495,-9.00761 c -0.227483,-0.59282 0.396029,-1.18726 1.245312,-1.18726 0.890162,0 1.271939,0.45833 0.595299,0.71467 -0.263885,0.1 -0.637122,0.33725 -0.829418,0.5273 -0.461875,0.45646 -0.822524,0.43695 -1.011193,-0.0547 z m 5.807896,-0.20811 c -0.464524,-0.13924 -0.909757,-0.42299 -0.989402,-0.63054 -0.115252,-0.30035 0.110673,-0.36094 1.106795,-0.29685 0.902816,0.0581 1.274323,0.20028 1.333121,0.51026 0.108765,0.57339 -0.42101,0.72574 -1.450514,0.41713 z m -19.834615,22.88228 c 0.754279,-0.79271 0.861806,-1.628 0.236378,-1.83625 -0.188238,-0.0627 -0.499692,0.28401 -0.712316,0.79289 -0.207804,0.49735 -0.563298,1.05819 -0.789985,1.24633 -0.22669,0.18813 -0.412163,0.51026 -0.412163,0.71585 0,0.4993 0.686253,0.12355 1.678086,-0.91882 z m 37.632409,-14.45368 c 0.214273,-0.85374 0.03679,-1.09062 -1.287597,-1.71854 -0.612437,-0.29037 -1.381411,-0.725 -1.708833,-0.96585 -0.56904,-0.41858 -0.595313,-0.41255 -0.595313,0.13667 0,2.05851 3.15317,4.29513 3.591743,2.54772 z M 49.864882,186.30259 c -0.193664,-0.96831 -0.770072,-1.66931 -1.169591,-1.42239 -0.296513,0.18325 0.72176,2.27291 1.109351,2.27656 0.12733,0.001 0.15444,-0.38317 0.06024,-0.85417 z m 13.913684,-0.22657 c -0.104584,-0.81161 -0.97859,-1.56291 -1.818169,-1.56291 -0.633418,0 -0.625488,0.024 0.293897,0.89114 0.519684,0.49012 0.94488,1.03583 0.94488,1.21267 0,0.17685 0.148828,0.27078 0.330729,0.20875 0.181901,-0.062 0.293799,-0.39938 0.248663,-0.74965 z m 0.435076,-10.40377 c 0.397986,-0.2058 1.165979,-0.45718 1.706655,-0.55861 0.540674,-0.10143 0.983044,-0.2761 0.983044,-0.38816 0,-0.41921 -1.884336,-1.62159 -2.415003,-1.54098 -0.387919,0.0589 -0.700633,0.47684 -1.052595,1.40674 -0.275397,0.7276 -0.500819,1.35268 -0.500938,1.38906 -5.29e-4,0.17893 0.631608,0.0266 1.278837,-0.30805 z m -28.00197,77.89647 c -4.620039,-0.96106 -18.415036,-3.77541 -19.107636,-3.89819 -1.293542,-0.22931 -1.37162,-0.68382 -0.347863,-2.02502 1.7061,-2.23511 1.745323,-4.9559 0.105314,-7.30531 -0.253953,-0.3638 -0.498661,-1.07818 -0.543795,-1.5875 l -0.08206,-0.92604 3.307292,-0.002 c 3.792894,-0.003 4.62115,-0.28488 5.645563,-1.92342 0.642708,-1.02801 1.296163,-3.18292 1.07413,-3.54217 -0.195509,-0.31634 -0.361198,-1.88781 -0.17993,-1.70654 0.08713,0.0871 0.288442,0.0576 0.447352,-0.0657 0.15891,-0.12326 0.860031,-0.36347 1.558046,-0.53379 1.103683,-0.26932 1.414092,-0.24462 2.38125,0.18947 1.27239,0.57109 3.494001,2.68839 5.687603,5.42055 0.830469,1.03436 1.688539,2.07607 1.906821,2.31492 0.569052,0.62266 1.34204,1.62705 3.447253,4.47921 1.020403,1.38244 2.013051,2.72347 2.205885,2.98005 0.192836,0.25657 0.569812,1.19049 0.837729,2.07535 0.418303,1.38156 0.44364,1.81614 0.179345,3.07617 -0.169275,0.80703 -0.498427,1.7583 -0.731449,2.11393 -0.945655,1.44326 -3.599082,1.73832 -7.790847,0.86635 z"
+         id="path1077"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#5e5e5d;stroke-width:0.26458335"
+         d="m 34.888755,255.93652 c -4.654395,-1.4882 -8.055206,-2.37967 -11.509375,-3.01701 -6.63224,-1.22374 -7.961412,-1.57717 -8.797397,-2.33927 -0.776616,-0.70798 -0.754066,-1.5195 0.115564,-4.15903 l 0.710877,-2.15768 -0.629428,-2.47372 c -0.494496,-1.94343 -0.575989,-2.68466 -0.380147,-3.45767 0.397914,-1.57062 1.126925,-1.9088 4.684752,-2.17323 3.609963,-0.26831 3.953994,-0.46716 5.257252,-3.03871 0.887472,-1.75114 1.415647,-1.77315 1.221525,-0.0509 -0.166815,1.47998 -0.942223,3.00286 -1.874753,3.68196 -0.661076,0.48142 -1.134902,0.54624 -3.992887,0.54624 -4.468551,0 -4.709433,0.22966 -3.341249,3.18563 1.667662,3.60299 1.640688,4.56687 -0.198633,7.09794 -1.559824,2.14645 -2.446161,1.79731 12.913066,5.08662 9.913366,2.12304 12.067501,2.377 13.806943,1.62775 1.515137,-0.65263 2.429198,-2.25187 2.554497,-4.46932 0.08872,-1.57019 0.0035,-2.02017 -0.626893,-3.30857 -1.278009,-2.61216 -7.786101,-10.9571 -11.23645,-14.40784 -2.72795,-2.72826 -3.591326,-3.12058 -5.735462,-2.60621 -1.844596,0.44251 -2.046582,0.23812 -2.046582,-2.07105 0,-1.94257 -0.258817,-1.33997 3.547234,-8.25891 0.760474,-1.38245 1.617389,-3.10885 1.904256,-3.83646 1.200526,-3.04498 2.799012,-5.634 5.250702,-8.50438 1.39882,-1.6377 3.546412,-4.25969 4.772427,-5.82664 l 2.22912,-2.849 -0.04187,-1.72874 c -0.02303,-0.95081 -0.171091,-4.05046 -0.329018,-6.88811 -0.420423,-7.55416 -0.375944,-9.90028 0.23282,-12.28052 1.249868,-4.88695 3.875588,-7.38278 8.960116,-8.51688 2.997919,-0.66869 8.983745,-0.40974 11.815459,0.51113 5.240623,1.70425 8.391597,4.85259 9.348745,9.34095 0.159256,0.74679 0.423643,3.00898 0.587529,5.02708 0.461859,5.68737 1.12472,9.15997 2.108724,11.04725 1.506217,2.88885 5.203965,8.1673 7.700815,10.99273 5.519158,6.24546 7.431127,9.86401 8.954551,16.94713 0.726236,3.37661 0.747082,5.69724 0.06321,7.03656 -1.055195,2.06653 -5.00217,5.26979 -7.788498,6.32094 -2.710542,1.02256 -5.574445,0.0132 -7.108984,-2.50554 -1.08426,-1.77966 -1.413721,-2.07182 -2.172726,-1.92672 -2.021084,0.38635 -2.557712,3.3674 -1.504916,8.36003 0.61286,2.90633 0.611772,2.79742 0.09315,9.33657 -0.113591,1.43225 -0.0483,2.07407 0.274505,2.6983 0.620014,1.19898 2.012416,2.14194 3.679037,2.49151 2.229128,0.46757 3.730189,0.01 7.054832,-2.15034 3.731972,-2.42507 4.815462,-2.93659 9.004819,-4.25119 1.964532,-0.61647 3.929063,-1.30033 4.365625,-1.51971 1.307041,-0.65679 2.248951,-1.69304 2.248951,-2.47419 0,-1.02312 -0.8453,-1.50205 -4.155149,-2.35425 -2.341124,-0.60277 -3.84819,-2.71646 -3.890026,-5.45583 -0.01569,-1.02807 0.110214,-1.77445 0.347824,-2.06173 0.49685,-0.60072 0.787312,-0.24974 0.970981,1.17331 0.252201,1.95403 1.324017,3.38284 3.693634,4.92387 3.917826,2.54789 4.215856,2.80809 4.308116,3.76132 0.0537,0.55473 -0.0818,1.05963 -0.3696,1.3777 -0.76148,0.84142 -4.453867,2.87517 -7.621781,4.19805 -3.489487,1.45715 -5.352648,2.554 -8.100659,4.76887 -3.094818,2.4944 -3.849558,2.78716 -7.14375,2.77108 -3.975135,-0.0194 -4.813351,-0.3209 -6.822663,-2.45401 l -1.66329,-1.76576 h -9.846086 c -11.548383,0 -11.799544,0.0433 -16.044935,2.76581 -2.364316,1.51621 -2.578621,1.59914 -4.101041,1.58694 -1.171636,-0.009 -2.716218,-0.36774 -5.707405,-1.32414 z m 14.404791,-4.54269 c 0.246399,-0.35179 0.411877,-1.14873 0.411877,-1.98362 0,-1.23465 -0.111538,-1.51903 -0.967333,-2.46629 -1.163224,-1.28755 -0.926171,-1.83659 0.448218,-1.03813 2.888747,1.67823 3.021814,1.7086 7.26599,1.65829 6.120866,-0.0726 9.066417,-1.02188 11.745411,-3.78539 1.4898,-1.53681 2.339687,-2.02708 2.768934,-1.59733 0.467849,0.4684 0.308739,2.58895 -0.355405,4.73662 -0.942094,3.0465 -0.805553,4.5137 0.421635,4.53067 0.665454,0.009 1.208561,-4.34244 1.495208,-11.98038 l 0.285933,-7.6188 0.890328,-0.78172 c 0.664943,-0.58383 1.155015,-0.78172 1.935906,-0.78172 0.946661,0 1.082514,-0.0884 1.436042,-0.93452 0.544304,-1.3027 2.066108,-1.96244 4.544306,-1.97009 1.036731,-0.003 2.391154,0.17279 3.009829,0.39107 0.618675,0.21828 1.318255,0.39628 1.554621,0.39556 0.61451,-0.002 -0.930567,-1.22511 -2.017642,-1.59735 -0.925425,-0.3169 -1.056211,-0.76095 -0.587335,-1.99419 0.568497,-1.49526 0.813678,-4.49733 0.519835,-6.36504 -0.467024,-2.96848 -2.539074,-6.78711 -5.26908,-9.71052 -1.067273,-1.14289 -2.667066,-2.27945 -2.667066,-1.8948 0,0.0804 0.692391,1.06574 1.538647,2.18961 3.794276,5.03898 5.004388,7.70085 5.265336,11.58209 0.171043,2.54403 -0.354703,4.71161 -1.37537,5.67048 -0.505868,0.47523 -1.053539,0.66008 -2.201776,0.74314 -2.195766,0.15883 -2.225688,0.0953 -2.444006,-5.18757 -0.212069,-5.1317 -0.460336,-5.99674 -2.7826,-9.69545 -1.872461,-2.98229 -2.455471,-4.13179 -2.945402,-5.80732 -0.583653,-1.99605 -1.807486,-4.28734 -3.411713,-6.3875 -1.746787,-2.28679 -1.918316,-3.02692 -1.288076,-5.55782 0.459473,-1.84515 0.461055,-1.97586 0.02969,-2.45251 -0.250608,-0.27692 -1.374614,-0.7756 -2.497794,-1.10817 -2.982899,-0.88324 -4.199782,-1.46335 -4.713124,-2.24681 -0.762378,-1.16353 -0.428847,-3.18642 0.663676,-4.02523 0.660572,-0.50717 2.688643,-0.40571 3.653848,0.1828 1.087721,0.66321 1.296377,1.52164 0.755619,3.10868 -0.401897,1.1795 -0.400357,1.28401 0.02349,1.59395 0.663646,0.48527 1.526574,0.40547 2.066448,-0.19108 0.393886,-0.43524 0.451795,-0.85456 0.345898,-2.50467 -0.141557,-2.20577 -0.934773,-4.10992 -2.062948,-4.95223 -0.888154,-0.6631 -3.536723,-1.08084 -4.761609,-0.75101 -1.959581,0.52766 -3.172823,2.60905 -3.172823,5.44318 0,1.49408 -0.06263,1.73257 -0.419078,1.59578 -0.230492,-0.0884 -1.226768,-0.23588 -2.213941,-0.32763 l -1.794865,-0.16681 -0.156326,-1.67407 c -0.174919,-1.87316 -0.952257,-3.6419 -1.799956,-4.09557 -1.414041,-0.75677 -3.453297,-0.21673 -4.397605,1.16459 -1.376932,2.01415 -0.266388,7.59535 1.38521,6.96158 0.743289,-0.28523 0.760855,-0.94511 0.04025,-1.51194 -0.882547,-0.69421 -1.350574,-2.33113 -0.930273,-3.25359 0.258853,-0.56812 1.387462,-1.22569 2.103684,-1.22569 0.518533,0 1.842418,1.44746 2.066647,2.25956 0.386014,1.39802 0.112443,1.87322 -1.918644,3.33276 -3.549233,2.55046 -4.088083,3.45253 -2.614581,4.37696 0.400182,0.25106 1.220991,0.89946 1.824019,1.44089 1.264576,1.13539 2.651712,1.45607 5.056764,1.16901 3.045183,-0.36346 9.155997,-2.18864 10.395239,-3.10486 0.718609,-0.53129 1.575541,-0.51156 1.575541,0.0363 0,0.50748 -1.211167,1.03829 -6.085417,2.66702 -4.879898,1.63061 -4.902642,1.63528 -7.474479,1.53265 -1.418829,-0.0566 -2.579688,-0.007 -2.579688,0.11069 0,0.11749 0.559091,0.56818 1.242425,1.00154 2.192137,1.39021 4.794309,1.02886 10.788085,-1.49809 2.248585,-0.94799 3.315324,-1.11676 3.315324,-0.52451 0,0.51352 -0.456123,0.83366 -2.049193,1.43825 -1.270717,0.48226 -3.06316,1.493 -6.934935,3.91053 -1.092579,0.68221 -1.735802,0.90108 -2.645834,0.90033 -1.56903,-0.001 -2.437307,-0.55687 -4.503383,-2.88158 -0.925875,-1.04178 -1.8024,-1.85447 -1.947834,-1.80599 -0.145433,0.0485 -0.41747,0.5302 -0.604525,1.07049 -0.187053,0.54029 -1.009393,2.16443 -1.827419,3.60918 -1.425895,2.51834 -1.494854,2.72848 -1.669674,5.08817 -0.175036,2.36256 -0.226907,2.52016 -1.292374,3.92665 -1.63354,2.15639 -3.720481,6.70545 -4.181419,9.11455 -0.214085,1.11893 -0.389245,3.07274 -0.389245,4.34181 0,1.57374 -0.119253,2.47049 -0.375049,2.82032 -0.365371,0.49967 -0.403927,0.49244 -1.493981,-0.28016 -1.609921,-1.14107 -2.09972,-2.22044 -2.09972,-4.62715 0,-1.09463 0.110752,-2.37641 0.246113,-2.8484 0.320579,-1.11779 -0.09234,-1.11676 -0.698643,0.002 -0.335077,0.61814 -0.465722,1.45497 -0.464701,2.97656 0.0012,1.77325 0.114796,2.33302 0.70023,3.4502 1.029095,1.96383 3.937707,4.44966 10.668043,9.11742 3.659333,2.53789 4.73772,3.48004 5.165575,4.51297 0.443383,1.07042 -0.109001,2.04059 -1.792084,3.14749 l -1.38901,0.9135 0.747551,0.80629 c 2.334427,2.51786 3.362468,4.46766 3.098234,5.87615 -0.19218,1.02441 0.163084,1.16075 0.769316,0.29523 z m 1.119727,-62.02773 c -0.343603,-0.3436 0.431446,-0.88389 1.242775,-0.86633 0.787469,0.017 0.7987,0.0318 0.232188,0.30501 -0.327422,0.15791 -0.595313,0.38798 -0.595313,0.51126 0,0.26467 -0.629237,0.30047 -0.87965,0.0501 z m 5.663444,-0.38085 c -0.464264,-0.18489 -0.560462,-0.33464 -0.350099,-0.545 0.364014,-0.36401 1.72647,-0.0503 1.587836,0.36556 -0.141743,0.42523 -0.492752,0.47612 -1.237737,0.17944 z m -19.774459,23.09346 c 0.754279,-0.79271 0.861806,-1.628 0.236378,-1.83625 -0.188238,-0.0627 -0.499692,0.28401 -0.712316,0.79289 -0.207804,0.49735 -0.563298,1.05819 -0.789985,1.24633 -0.22669,0.18813 -0.412163,0.51026 -0.412163,0.71585 0,0.4993 0.686253,0.12355 1.678086,-0.91882 z m 37.632409,-14.45368 c 0.214273,-0.85374 0.03679,-1.09062 -1.287597,-1.71854 -0.612437,-0.29037 -1.381411,-0.725 -1.708833,-0.96585 -0.56904,-0.41858 -0.595313,-0.41255 -0.595313,0.13667 0,2.05851 3.15317,4.29513 3.591743,2.54772 z M 49.864882,186.30259 c -0.193664,-0.96831 -0.770072,-1.66931 -1.169591,-1.42239 -0.296513,0.18325 0.72176,2.27291 1.109351,2.27656 0.12733,0.001 0.15444,-0.38317 0.06024,-0.85417 z m 13.913684,-0.22657 c -0.104584,-0.81161 -0.97859,-1.56291 -1.818169,-1.56291 -0.633418,0 -0.625488,0.024 0.293897,0.89114 0.519684,0.49012 0.94488,1.03583 0.94488,1.21267 0,0.17685 0.148828,0.27078 0.330729,0.20875 0.181901,-0.062 0.293799,-0.39938 0.248663,-0.74965 z m 0.435076,-10.40377 c 0.397986,-0.2058 1.165979,-0.45718 1.706655,-0.55861 0.540674,-0.10143 0.983044,-0.2761 0.983044,-0.38816 0,-0.41921 -1.884336,-1.62159 -2.415003,-1.54098 -0.387919,0.0589 -0.700633,0.47684 -1.052595,1.40674 -0.275397,0.7276 -0.500819,1.35268 -0.500938,1.38906 -5.29e-4,0.17893 0.631608,0.0266 1.278837,-0.30805 z"
+         id="path1075"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#020101;stroke-width:0.26458335"
+         d="m 38.733868,256.97456 c -0.577323,-0.1352 -2.839511,-0.82386 -5.027083,-1.53036 -4.748751,-1.53367 -7.401101,-2.20284 -11.650322,-2.93928 -5.132991,-0.88961 -6.64696,-1.29582 -7.387459,-1.98209 -0.843288,-0.78153 -0.845743,-1.11489 -0.0253,-3.43576 0.756172,-2.13905 0.825334,-3.49133 0.271874,-5.31576 -0.601885,-1.98406 -0.521803,-3.64094 0.21752,-4.50046 0.584024,-0.67897 0.779897,-0.72681 3.638021,-0.88853 3.905752,-0.221 4.321671,-0.45055 5.662309,-3.12508 1.254353,-2.50238 1.594343,-0.60036 0.356956,1.99695 -0.794585,1.66785 -1.470704,1.91101 -5.313697,1.91101 -2.188622,0 -3.372349,0.10483 -3.585014,0.3175 -0.522622,0.52262 -0.363928,1.63263 0.46939,3.28323 0.867893,1.71909 1.20835,3.34724 0.947897,4.53308 -0.09353,0.42585 -0.639897,1.39957 -1.21414,2.16382 -1.464988,1.94971 -1.280041,2.17805 2.450737,3.02567 5.308489,1.20607 17.742129,3.81664 19.824707,4.16241 4.044752,0.67154 6.42968,-0.62195 7.099978,-3.85076 0.593892,-2.86076 -0.198281,-4.57367 -4.925579,-10.65056 -3.754718,-4.82665 -5.416672,-6.7763 -7.328004,-8.59653 -2.462801,-2.34542 -3.346672,-2.61344 -6.303222,-1.91138 -0.670261,0.15915 -0.706945,0.1103 -0.884019,-1.17718 -0.281876,-2.04948 0.03005,-3.17573 1.667528,-6.02086 1.642721,-2.85423 2.468491,-4.48035 4.619051,-9.09591 1.192686,-2.55976 1.864381,-3.57635 4.195649,-6.35 1.526595,-1.81628 3.767301,-4.54993 4.979347,-6.07479 l 2.203717,-2.77246 -0.172661,-3.18066 c -0.09497,-1.74937 -0.244716,-6.03817 -0.33278,-9.53067 -0.134004,-5.31434 -0.09077,-6.6422 0.265102,-8.14158 1.042104,-4.39068 3.662593,-7.07302 8.103137,-8.29439 2.531134,-0.6962 8.901135,-0.63453 11.679643,0.11307 3.851302,1.03624 6.90778,3.08941 8.65694,5.81524 1.090875,1.69998 1.787351,4.84095 2.153957,9.71391 0.508524,6.75938 0.987452,8.5296 3.336296,12.33169 2.521326,4.08129 4.007437,6.11976 6.347849,8.70723 5.699427,6.30106 7.875726,10.63873 9.146567,18.23039 0.557919,3.33286 0.562682,3.51443 0.128318,4.89239 -0.779714,2.47354 -4.638419,5.88314 -7.992002,7.06183 -0.786368,0.27638 -1.700628,0.50185 -2.031685,0.50104 -2.046304,-0.005 -4.315405,-1.56104 -5.285278,-3.62436 -0.827458,-1.76034 -2.412788,-1.87824 -3.403703,-0.25314 -0.410348,0.67297 -0.508884,1.3271 -0.5046,3.34981 0.0029,1.38245 0.119919,2.98979 0.259979,3.57188 0.756833,3.14535 0.82101,4.41901 0.377238,7.48668 -0.530003,3.66374 -0.409967,4.61399 0.735002,5.8185 1.236649,1.30095 2.680391,1.89786 4.573606,1.89094 2.140337,-0.008 2.893754,-0.32727 6.746876,-2.86059 2.729841,-1.7948 3.769251,-2.31448 5.953125,-2.97642 5.141368,-1.55835 5.975083,-1.87343 7.214561,-2.72649 2.706903,-1.86302 1.946653,-3.36233 -2.209684,-4.35779 -1.889524,-0.45254 -2.908535,-1.1504 -3.568348,-2.44374 -0.681437,-1.33573 -0.970116,-3.86706 -0.533951,-4.68204 0.445506,-0.83244 0.816992,-0.70226 0.81869,0.28688 0.0041,2.37716 1.539052,4.33257 5.025607,6.40215 3.354239,1.99103 3.855119,2.9339 2.289039,4.30894 -1.14872,1.00859 -4.763647,2.96242 -7.448414,4.02579 -2.941741,1.16515 -4.648668,2.16216 -7.386487,4.31441 -3.844401,3.02216 -3.723153,2.97528 -7.694764,2.97528 -4.196816,0 -5.39682,-0.41901 -6.72387,-2.34782 -0.460195,-0.66887 -1.086657,-1.34989 -1.392139,-1.51338 -0.38413,-0.20558 -3.502153,-0.28965 -10.110331,-0.27263 -11.55785,0.0298 -12.25749,0.15421 -16.115674,2.86607 -2.355064,1.65533 -3.4954,1.92081 -5.866001,1.36566 z m 10.551161,-5.54216 c 0.453181,-0.53858 0.684977,-1.12941 0.684977,-1.74595 0,-1.13397 -0.684731,-2.6547 -1.357405,-3.01471 -0.572344,-0.30631 -0.666509,-1.03987 -0.133485,-1.03987 0.198657,0 0.666584,0.24022 1.039839,0.53382 1.646418,1.29507 2.77521,1.57141 6.404177,1.5678 6.339896,-0.006 9.180055,-0.88825 12.301601,-3.81998 1.120506,-1.05238 2.052776,-1.72221 2.32508,-1.67057 0.695071,0.13181 0.726821,2.0618 0.06593,4.00772 -0.304509,0.89659 -0.622956,2.28501 -0.70766,3.08537 -0.133842,1.26469 -0.07974,1.52217 0.413237,1.96669 0.490858,0.44261 0.615839,0.46042 0.928135,0.13229 0.740235,-0.77776 1.274064,-5.44737 1.410382,-12.33713 0.115404,-5.83277 0.192114,-6.7653 0.613519,-7.45824 0.468442,-0.77029 1.758363,-1.34761 3.022693,-1.35285 0.339108,-0.001 0.719225,-0.35721 1.058333,-0.99066 0.664911,-1.24203 1.613382,-1.70004 3.852299,-1.86024 1.622568,-0.11609 2.606263,0.0694 4.945097,0.93261 0.181902,0.0671 0.330518,-0.0395 0.330256,-0.23697 -5.29e-4,-0.34744 -1.739456,-1.56098 -2.738956,-1.91136 -0.317259,-0.11121 -0.432536,-0.32292 -0.326417,-0.59946 1.150205,-2.99739 1.190403,-7.36367 0.09281,-10.08105 -1.38256,-3.42287 -4.865164,-8.10285 -6.548639,-8.80017 -0.44772,-0.18545 -0.88386,-0.26737 -0.969196,-0.18203 -0.08534,0.0853 0.38027,0.78597 1.034683,1.55697 3.77826,4.45136 5.800143,8.9188 5.843363,12.91118 0.04268,3.94266 -1.024345,5.55625 -3.674203,5.55625 -1.089491,0 -1.482434,-0.10916 -1.666664,-0.46302 -0.132582,-0.25466 -0.306572,-2.24896 -0.386641,-4.43177 -0.18969,-5.17132 -0.474276,-6.06529 -3.423827,-10.75521 -0.79161,-1.2587 -1.834515,-3.40183 -2.317563,-4.7625 -1.01039,-2.84613 -2.201325,-5.02742 -3.743198,-6.856 -1.218533,-1.4451 -1.546767,-2.54101 -1.22338,-4.08462 0.472932,-2.25742 0.536183,-3.30458 0.22244,-3.68262 -0.173267,-0.20877 -1.666497,-0.80523 -3.318288,-1.32546 -2.442882,-0.76938 -3.136164,-1.10383 -3.715583,-1.79243 -0.584425,-0.69455 -0.68788,-1.02884 -0.576165,-1.86175 0.195694,-1.459 0.815266,-2.26353 1.899867,-2.467 1.154234,-0.21653 1.964823,-0.0213 2.871169,0.69167 0.782005,0.61513 0.92076,1.66831 0.412054,3.12759 -0.375642,1.07757 0.03306,1.62146 1.218435,1.62146 1.077601,0 1.410701,-0.39517 1.619949,-1.92181 0.217988,-1.59039 -0.680276,-4.60357 -1.696765,-5.69173 -1.278348,-1.36847 -4.946867,-1.78757 -6.535545,-0.74663 -0.351491,0.23031 -0.965592,0.9759 -1.364668,1.65687 -0.590502,1.00762 -0.728255,1.57055 -0.739905,3.02365 l -0.01431,1.78552 -1.852083,-0.13329 c -2.554796,-0.18387 -2.513333,-0.15745 -2.515018,-1.6023 -0.0021,-1.81443 -0.411187,-3.03883 -1.299655,-3.89004 -1.524344,-1.46041 -3.994695,-1.07561 -5.232932,0.81512 -0.56723,0.86614 -0.634328,3.89221 -0.120086,5.41587 0.589203,1.74576 1.888429,2.28477 2.309484,0.95814 0.11943,-0.37629 0.0087,-0.67748 -0.355835,-0.96775 -1.250035,-0.99538 -1.54627,-3.13578 -0.532294,-3.846 1.690317,-1.18394 3.92168,0.54963 3.601077,2.79772 -0.05725,0.40142 -0.690023,1.05842 -1.807866,1.87709 -3.530963,2.58594 -4.206124,3.47582 -3.25468,4.28977 0.262104,0.22422 1.019543,0.87952 1.683195,1.45622 1.538229,1.3367 2.26495,1.60274 4.377989,1.60274 3.116861,0 10.641106,-2.01312 11.882242,-3.1791 0.625923,-0.58803 1.186255,-0.52656 1.186255,0.13013 0,0.3836 -0.187532,0.46197 -6.085417,2.54316 -3.770313,1.33043 -3.890061,1.35391 -6.945313,1.3614 -1.70987,0.004 -3.108855,0.0856 -3.108855,0.18091 0,0.0953 0.671431,0.61547 1.492068,1.1559 2.353281,1.54976 3.47849,1.42801 9.699729,-1.04949 3.68224,-1.46639 4.972714,-1.66455 4.025768,-0.61819 -0.255686,0.28253 -0.89697,0.65349 -1.425078,0.82436 -1.525014,0.49341 -3.201493,1.40243 -5.834349,3.16352 -2.180246,1.45834 -2.60105,1.64159 -3.838519,1.67151 -1.862236,0.045 -2.535907,-0.37003 -4.547892,-2.80195 -0.937009,-1.13259 -1.86935,-2.05924 -2.071875,-2.05924 -0.202526,0 -0.45121,0.38695 -0.552638,0.85989 -0.101426,0.47295 -0.90601,2.15924 -1.787962,3.74731 -1.516118,2.72998 -1.619015,3.02934 -1.887133,5.49034 -0.231788,2.12754 -0.406715,2.75992 -0.957799,3.46259 -1.661933,2.11904 -3.629896,6.08941 -4.360432,8.79716 -0.235564,0.87313 -0.508823,3.01493 -0.60724,4.75957 -0.152133,2.69683 -0.24675,3.18503 -0.631534,3.25854 -0.719958,0.13755 -2.789597,-2.11035 -3.006244,-3.26517 -0.186481,-0.99403 -0.0052,-3.99041 0.307539,-5.08367 0.317571,-1.11009 -0.43602,-0.62767 -0.995597,0.63735 -0.807471,1.82542 -0.608049,5.02255 0.422933,6.78045 1.056201,1.8009 4.69819,4.76692 12.18908,9.92672 3.98998,2.74833 4.482732,4.18803 2.064644,6.03237 -0.609087,0.46457 -1.262923,0.89918 -1.45297,0.96581 -0.239943,0.0841 -0.08213,0.43602 0.516408,1.15147 0.474073,0.56667 1.346103,1.74469 1.937846,2.61781 0.984938,1.45329 1.066805,1.70494 0.968364,2.97657 -0.05914,0.76398 -0.01902,1.38906 0.08915,1.38906 0.108178,0 0.504926,-0.36632 0.881666,-0.81405 z m 1.338805,-62.16913 c -0.225605,-0.36504 0.320339,-0.77158 1.043916,-0.77736 0.278914,-0.002 0.457507,0.027 0.396875,0.0649 -0.06063,0.0379 -0.366315,0.28381 -0.679288,0.5464 -0.412742,0.34629 -0.621909,0.3919 -0.761503,0.16604 z m 5.167006,-0.51682 c -0.301165,-0.19463 -0.1895,-0.25746 0.463021,-0.26054 0.472943,-0.002 0.859896,0.11501 0.859896,0.26054 0,0.33607 -0.802881,0.33607 -1.322917,0 z m -19.916057,23.91697 c 1.350386,-1.02999 1.709587,-2.48572 0.61335,-2.48572 -0.280379,0 -0.644708,0.4081 -0.930892,1.04275 -0.258617,0.57351 -0.633889,1.10555 -0.833932,1.18232 -0.440288,0.16895 -0.487942,0.94993 -0.05797,0.94993 0.168164,0 0.712414,-0.31018 1.209439,-0.68928 z m 38.172406,-14.92138 c 0.347258,-0.83835 0.04427,-1.58726 -0.642152,-1.58726 -0.171974,0 -0.875905,-0.35719 -1.564293,-0.79375 -1.492594,-0.94658 -1.762403,-0.97946 -1.762403,-0.21481 0,1.15554 2.068386,3.32984 3.209047,3.37337 0.238347,0.009 0.577895,-0.33839 0.759801,-0.77755 z M 50.116504,187.13596 c 0.226557,-0.36658 -0.627018,-2.28298 -1.097222,-2.46342 -0.663893,-0.25476 -0.692608,0.40311 -0.06891,1.57878 0.642358,1.21086 0.86169,1.37724 1.166136,0.88464 z m 13.780966,-0.37448 c 0.407974,-1.06316 -0.82686,-2.51295 -2.140365,-2.51295 -0.608783,0 -0.49665,0.73059 0.143306,0.93371 0.304326,0.0966 0.722643,0.58086 0.929592,1.07616 0.400336,0.95814 0.817417,1.1547 1.067467,0.50308 z m 0.624621,-11.11191 c 0.363802,-0.20797 0.981853,-0.38234 1.373446,-0.3875 1.322563,-0.0174 1.259557,-0.84189 -0.137191,-1.79531 -1.153346,-0.78728 -1.716561,-0.75107 -2.058009,0.13229 -0.154681,0.40018 -0.439031,1.04593 -0.631886,1.43501 -0.531886,1.07304 0.148963,1.36133 1.45364,0.61551 z"
+         id="path1073"
+         inkscape:connector-curvature="0" />
+    </g>
+  </g>
+</svg>
diff --git a/img/download/windows.png b/img/download/windows.png
deleted file mode 100644
index 424b809ed9539ad7d4d93ca339a7ccd01db8f84f..0000000000000000000000000000000000000000
Binary files a/img/download/windows.png and /dev/null differ
diff --git a/img/download/windows.svg b/img/download/windows.svg
new file mode 100644
index 0000000000000000000000000000000000000000..d6445dab6352329c67553b0ec55d247d768ba930
--- /dev/null
+++ b/img/download/windows.svg
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="151mm"
+   height="151mm"
+   viewBox="0 0 151 151"
+   version="1.1"
+   id="svg8"
+   inkscape:version="0.92.3 (2405546, 2018-03-11)"
+   sodipodi:docname="windows.svg">
+  <defs
+     id="defs2" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.7"
+     inkscape:cx="45.141809"
+     inkscape:cy="325.92194"
+     inkscape:document-units="mm"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1366"
+     inkscape:window-height="703"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata5">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-146)">
+    <path
+       style="fill:#000000;stroke-width:0.26458335"
+       d=""
+       id="path72"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#0177d6;fill-opacity:1;stroke-width:0.46454021"
+       d="m 115.37955,269.41234 c -3.9602,-0.58881 -12.74002,-1.82575 -19.51069,-2.74878 -16.032542,-2.18567 -24.224176,-3.40442 -24.458708,-3.63895 -0.10394,-0.10394 -0.193025,-8.94528 -0.197955,-19.64742 l -0.009,-19.45844 26.501293,-0.11992 26.50128,-0.11992 v 23.4631 c 0,22.05936 -0.0486,23.45942 -0.81295,23.40201 -0.44712,-0.0335 -4.05311,-0.54283 -8.01331,-1.13163 z m -55.977098,-7.86159 c -4.087953,-0.58852 -13.129068,-1.85617 -20.091365,-2.817 l -12.658721,-1.74698 v -16.65014 -16.65017 h 20.207501 20.207498 v 19.51069 c 0,10.73089 -0.05225,19.49111 -0.116142,19.46716 -0.06387,-0.0239 -3.460823,-0.52505 -7.548778,-1.11356 z m -32.639818,-58.18683 0.122007,-16.60622 5.342211,-0.76467 c 2.938218,-0.42058 8.791424,-1.23078 13.007127,-1.80045 4.215703,-0.56968 10.85282,-1.5013 14.749151,-2.07025 l 7.084239,-1.03446 v 19.44114 19.44114 H 46.853999 26.640631 Z m 44.485552,16.49009 c -1.9e-5,-0.0639 -0.0158,-8.86265 -0.03525,-19.55286 -0.01937,-10.69019 0.04335,-19.51525 0.139318,-19.61124 0.159966,-0.15995 21.552794,-3.23164 41.936876,-6.02146 4.59895,-0.62943 8.9366,-1.24549 9.63921,-1.36902 l 1.27749,-0.22461 v 23.44766 23.44767 H 97.72702 c -14.563336,0 -26.478811,-0.0523 -26.478834,-0.11605 z"
+       id="path911"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/img/download/yunohost.png b/img/download/yunohost.png
deleted file mode 100644
index 04ac69cdbfb0600ecaf64a849373c75053a416cd..0000000000000000000000000000000000000000
Binary files a/img/download/yunohost.png and /dev/null differ
diff --git a/img/download/yunohost.svg b/img/download/yunohost.svg
new file mode 100644
index 0000000000000000000000000000000000000000..ddd3beec6d5fb26313c575ec43270f1820e7a6e5
--- /dev/null
+++ b/img/download/yunohost.svg
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="151mm"
+   height="151mm"
+   viewBox="0 0 151 151"
+   version="1.1"
+   id="svg8"
+   inkscape:version="0.92.3 (2405546, 2018-03-11)"
+   sodipodi:docname="yunohost.svg">
+  <defs
+     id="defs2" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.49497475"
+     inkscape:cx="-43.025332"
+     inkscape:cy="169.2545"
+     inkscape:document-units="mm"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1366"
+     inkscape:window-height="703"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata5">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-146)">
+    <path
+       style="fill:#000000;stroke-width:0.26458335"
+       d=""
+       id="path72"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#000000;fill-opacity:1;stroke-width:0.29804462"
+       d="m 29.811985,281.19475 c -2.126207,-1.05953 -3.928342,-3.11891 -5.608085,-6.4086 -1.236479,-2.42158 -1.87193,-3.24226 -4.508226,-5.82235 -3.367239,-3.29545 -4.260956,-4.77258 -4.271488,-7.05995 -0.01014,-2.22405 1.121827,-3.23257 5.060207,-4.5079 l 3.129474,-1.01338 0.189516,-8.60013 c 0.198642,-9.01375 0.499229,-11.27267 1.719464,-12.92176 1.183163,-1.59899 5.261257,-0.54828 7.351948,1.89423 2.34428,2.73876 2.957777,5.43223 2.664174,11.69677 -0.243925,5.20477 -0.09586,6.37799 0.804692,6.37799 0.987946,0 3.049946,-2.33366 3.818568,-4.32165 0.66108,-1.70982 0.688599,-2.09678 0.627319,-8.82095 -0.05925,-6.50491 -0.01712,-7.15821 0.561825,-8.70557 1.044575,-2.79189 1.377558,-3.04835 3.869632,-2.98027 4.377532,0.11957 6.446898,1.52667 7.155435,4.86547 0.417684,1.96823 0.376781,2.28205 -1.106642,8.48826 -1.488885,6.2291 -1.48135,9.24366 0.03898,15.59436 1.319217,5.51054 1.7524,8.80942 1.615973,12.3064 -0.128553,3.29549 -0.493122,3.82358 -2.159021,3.12753 -1.673886,-0.69939 -4.2089,-2.83644 -7.278592,-6.13594 -1.527953,-1.64235 -3.014788,-2.98608 -3.304088,-2.98608 -0.289289,0 -1.156849,0.4915 -1.927905,1.09223 -0.771055,0.60072 -2.033679,1.25313 -2.805828,1.4498 l -1.403894,0.35757 v 6.0849 c 0,5.32181 -0.06624,6.18654 -0.528448,6.89544 -0.67783,1.03968 -1.696585,1.05442 -3.704998,0.0537 z m 59.480923,-11.4986 c -3.408244,-3.62391 -5.523249,-10.02669 -4.727399,-14.3113 0.369439,-1.98897 1.237761,-2.87598 2.202109,-2.24953 0.345284,0.2243 1.05953,1.05824 1.587215,1.85321 1.426019,2.14831 1.994015,2.63233 2.839882,2.42005 1.02041,-0.25612 1.838164,-2.16969 1.648039,-3.85649 -0.199908,-1.77357 -1.507016,-3.70067 -6.006783,-8.85594 -4.762808,-5.45664 -5.08217,-6.07711 -4.884512,-9.49017 0.175607,-3.03237 0.858041,-4.72217 2.762497,-6.84039 1.812114,-2.0155 3.631831,-2.8537 6.498919,-2.99353 2.127807,-0.10374 2.490339,-0.0332 4.230333,0.82338 2.903758,1.42952 4.897252,4.37022 4.910592,7.24385 0.007,1.57529 0.0911,1.52263 -2.9739,1.86826 -2.91674,0.32891 -3.505859,1.20837 -2.497538,3.72841 0.929419,2.32285 1.947945,2.20958 3.23945,-0.36024 0.95429,-1.89884 2.733978,-3.13337 4.840538,-3.35779 2.78315,-0.29648 3.44101,-0.54885 4.02143,-1.54267 0.29588,-0.50661 1.01428,-3.25263 1.59645,-6.10227 1.14489,-5.60401 1.90515,-7.4994 3.07488,-7.66588 2.88536,-0.41063 6.42413,2.94988 7.02779,6.67381 0.45651,2.81605 -0.0688,2.55041 4.60267,2.32741 3.49542,-0.16685 4.38065,-0.11704 5.72306,0.32204 2.07839,0.6798 3.66274,1.96647 4.74507,3.85356 1.06914,1.86404 1.10191,2.75947 0.15229,4.15882 -1.66753,2.45725 -4.3987,4.14516 -9.70202,5.99607 -1.72121,0.60072 -3.90924,1.37261 -4.8623,1.71531 l -1.73282,0.6231 0.16468,1.81931 c 0.0905,1.00062 0.38365,4.22619 0.65127,7.16793 0.58185,6.396 0.46654,8.18396 -0.67678,10.49365 -1.48498,2.99994 -3.32555,3.25187 -6.02518,0.82467 -2.80151,-2.5188 -3.8976,-6.04571 -3.90616,-12.56884 -0.006,-4.44002 0.20056,-4.12928 -2.49695,-3.75955 l -1.3828,0.18954 v 5.71283 c 0,5.59655 -0.0163,5.74588 -0.8001,7.33609 -0.45756,0.92833 -1.71999,2.54919 -2.94883,3.78608 -2.666486,2.684 -4.67232,3.68606 -7.77728,3.88532 -2.152395,0.13814 -2.178203,0.13096 -3.117812,-0.86811 z m -23.830811,-0.33537 c -2.571129,-0.89722 -5.780468,-3.09656 -8.612566,-5.90214 -3.2862,-3.25543 -3.686343,-4.22472 -3.829303,-9.27601 -0.245346,-8.66873 2.040224,-15.8942 6.072989,-19.19875 1.346918,-1.1037 3.453345,-1.91146 4.984553,-1.91146 3.653427,0 12.293021,4.45155 14.658437,7.55277 1.867375,2.44827 1.799542,13.68897 -0.120112,19.90408 -1.171914,3.79421 -3.802709,6.9234 -7.154966,8.51041 -2.265553,1.07255 -3.6355,1.14587 -5.999032,0.3211 z m 1.445427,-13.68469 c 2.030848,-1.25514 2.997998,-5.04943 1.912549,-7.50327 -0.493628,-1.11592 -0.760894,-1.39037 -1.354023,-1.39037 -0.944871,0 -2.442194,1.25755 -3.150539,2.64602 -0.635542,1.24577 -1.069739,4.60378 -0.77109,5.96351 0.181451,0.82614 0.319928,0.92791 1.262613,0.92791 0.582338,0 1.527558,-0.2897 2.10049,-0.6438 z M 33.300317,221.71073 c -2.53748,-1.00885 -5.343928,-5.78638 -6.426858,-10.94069 -0.605623,-2.88252 -0.616888,-7.27076 -0.02625,-10.23833 0.726413,-3.6499 0.508509,-4.08886 -4.416058,-8.8956 -2.830915,-2.76317 -3.182113,-3.45178 -3.872143,-7.59203 -0.737802,-4.42685 -1.651132,-11.98706 -1.651132,-13.66736 0,-3.47727 1.570286,-6.1526 3.611276,-6.1526 1.211427,0 2.88502,0.91786 4.165644,2.28458 2.351232,2.50932 2.736968,3.49082 4.256054,10.82937 1.295731,6.25958 1.411577,6.55698 2.553894,6.55698 1.156263,0 2.573123,-1.40426 4.162253,-4.12522 1.297939,-2.22239 2.986784,-3.92198 3.897162,-3.92198 0.867695,0 4.094722,2.84149 4.802402,4.22865 0.512295,1.00418 0.607369,1.64051 0.521735,3.4919 -0.134692,2.91215 -0.883736,4.46046 -4.586628,9.48072 l -2.810863,3.81087 -0.0046,4.66236 c -0.0046,5.33306 -0.558817,11.19857 -1.671892,17.69098 -0.257713,1.50323 -0.919163,2.83716 -1.394645,2.81253 -0.200692,-0.0101 -0.700201,-0.15219 -1.110011,-0.31513 z m 21.332156,-5.6741 c -3.79801,-2.0025 -6.44237,-6.97974 -7.977577,-15.01548 -1.285355,-6.72791 -0.741147,-23.60268 0.811396,-25.15964 1.010204,-1.01308 5.219589,2.16613 6.605898,4.98918 l 0.836358,1.70316 0.172462,8.04721 c 0.09484,4.42596 0.276863,8.2819 0.404447,8.56877 0.482816,1.08558 1.401618,0.44432 2.502673,-1.74667 1.021797,-2.03328 2.373682,-7.02884 3.489865,-12.89587 1.964041,-10.32361 1.923229,-10.16966 2.696055,-10.16966 1.045846,0 4.095149,2.98335 4.855231,4.75019 1.70047,3.95284 1.319179,14.98308 -0.855404,24.74571 -1.46879,6.59398 -3.691964,10.32626 -7.214113,12.11106 -1.850742,0.93784 -4.625255,0.96943 -6.327291,0.0721 z m 20.858812,-2.36357 c -2.848603,-1.90526 -3.45617,-2.78846 -3.115393,-4.52876 0.727188,-3.71362 1.192108,-9.93868 1.462425,-19.58119 0.33328,-11.88856 0.577897,-14.53601 1.399099,-15.14233 1.098912,-0.81136 3.947228,0.28053 5.794888,2.22143 1.677303,1.76197 3.502989,4.54775 3.860542,5.89076 0.553796,2.08011 3.636504,7.91084 3.924153,7.42224 0.0804,-0.13656 0.236779,-1.58949 0.347511,-3.22873 0.484102,-7.16662 1.103621,-13.91268 1.509522,-16.43749 0.411163,-2.55755 1.699048,-6.78672 2.243859,-7.36842 0.134125,-0.14321 1.109521,0.59445 2.167541,1.63924 1.413224,1.39557 2.111267,2.37414 2.630648,3.6879 l 0.706979,1.78826 0.02047,14.30615 c 0.01193,8.37511 0.176877,16.46787 0.39778,19.52043 0.460456,6.36298 0.295343,8.1261 -0.870139,9.29158 -0.712126,0.71212 -1.087541,0.84343 -2.411503,0.84343 -2.331855,0 -3.652155,-0.8104 -7.283655,-4.47074 -1.788933,-1.80313 -3.486645,-3.27842 -3.772694,-3.27842 -0.655775,0 -1.147501,0.96397 -2.161925,4.23822 -1.111564,3.58778 -1.786629,4.52958 -3.3283,4.64344 -1.036951,0.0765 -1.540155,-0.1316 -3.521779,-1.457 z m 36.194815,-5.22387 c -2.81928,-0.5858 -5.33044,-1.97828 -7.48797,-4.15219 -2.22745,-2.24433 -3.50023,-4.54083 -3.82523,-6.90185 -0.875195,-6.35825 3.23149,-22.30676 6.78647,-26.35566 1.00976,-1.15006 4.17054,-2.80984 6.97842,-3.6645 2.07368,-0.63118 3.01346,-0.399 5.03495,1.24399 1.99697,1.62307 3.46468,3.75557 4.15974,6.04392 0.57628,1.89732 0.58402,2.1012 0.14414,3.79878 -0.63302,2.44293 -0.59913,2.99934 0.43178,7.09075 0.49314,1.95712 0.98109,4.32409 1.08435,5.25994 0.43257,3.92092 -2.20405,11.66174 -5.14072,15.09258 -1.1044,1.29025 -3.49447,2.5848 -5.18549,2.80867 -0.57374,0.0759 -1.91494,-0.0431 -2.98044,-0.26443 z m 1.70145,-15.68731 c 1.9676,-2.15187 3.68304,-9.00002 2.44993,-9.78039 -1.48177,-0.93773 -3.95076,1.11926 -4.99566,4.16202 -0.58768,1.71134 -0.4464,4.59314 0.2698,5.50366 0.75669,0.96196 1.46842,0.99783 2.27593,0.11471 z"
+       id="path983"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/inc/Crowdfunding.class.php b/inc/Crowdfunding.class.php
new file mode 100755
index 0000000000000000000000000000000000000000..5a243d2c71577441aee74ceccc25e9fac3bd6ce9
--- /dev/null
+++ b/inc/Crowdfunding.class.php
@@ -0,0 +1,1461 @@
+<?php
+
+/*
+
+-----
+
+Ce script est basé sur la "barre de financement intégrable" développée par Pierre-Jean Chancellier.
+
+Son travail original se trouve ici : 
+
+https://git.duniter.org/paidge/barre-de-financement-int-grable
+
+-----
+
+This script is based on Pierre-Jean Chancellier's "barre de financement intégrable".
+
+See original work at : 
+
+https://git.duniter.org/paidge/barre-de-financement-int-grable
+
+*/
+
+// include('lib/phpqrcode/qrlib.php');
+
+date_default_timezone_set('Europe/Paris');
+
+class Crowdfunding {
+	
+	/**********************
+	 * Constants
+	 **********************/
+	
+	const PUBKEY_FORMAT = '#^[a-zA-Z1-9]{43,44}$#';
+	
+	const DATE_FORMAT = 'Y-m-d';
+	
+	private $units = ['quantitative','relative'];
+	
+	private $truePossibleValues = ['true','1', 'yes'];
+	
+	private $qrCodesFolder = 'img/qrcodes';
+	
+	private $qrCodePath = NULL;
+	
+	private $logosFolder = 'img/logos';
+	
+	private $logo = NULL;
+	
+	private $logoPath = NULL;
+	
+	private $validDisplayTypes = ['img', 'svg', 'html'];
+	
+	
+	/**********************
+	 * General parameters
+	 **********************/
+	
+	private $pubkey;
+	
+	private $target = NULL;
+	
+	private $startDate = NULL;
+	
+	private $endDate = NULL;
+	
+	private $nodes = [
+		
+		'g1.duniter.org', 
+		'remuniter.cgeek.fr',
+		'g1.monnaielibreoccitanie.org', 
+		'duniter-g1.p2p.legal', 
+		'duniter.g1.1000i100.fr', 
+		'g1.duniter.inso.ovh', 
+		'duniter.vincentux.fr', 
+		'g1.le-sou.org', 
+		'g1.donnadieu.fr', 
+		'g1.mithril.re'
+	];
+	
+	private $node = NULL;
+	
+	private $apiNode = 'g1.duniter.fr'; // Where the web payment gateway is located
+	
+	private $cesiumPlusNodes = [
+		
+		'g1.data.duniter.fr', 
+		'g1.data.le-sou.org'
+	];
+	
+	private $cesiumPlusNode = 'g1.data.duniter.fr';
+	
+	private $unit = 'quantitative';
+	
+	private $title = 'Financement participatif en monnaie libre';
+	
+	
+	
+	/**********************
+	 * Display parameters
+	 **********************/
+	
+	private $mustDisplayButton = false;
+	
+	private $mustDisplayPubkey = false;
+	
+	private $mustDisplayGraph = false;
+	
+	private $mustHideTitle = false;
+	
+	private $mustDisplayQRCode = false;
+	
+	private $displayType = 'html';
+	
+	private $filterMinDonation = 0;
+	
+	private $filterMinCommentLength = 0;
+	
+	private $validButtonTypes = ['api', 'copy', '2-steps-copy'];
+	
+	private $buttonType = '2-steps-copy';
+	
+	/**********************
+	 * Computed
+	 **********************/
+	
+	private $daysLeft = NULL;
+	
+	private $amountCollected = NULL;
+	
+	private $monthlyAmountCollectedMean = NULL;
+	
+	private $donorsNb = NULL;
+	
+	private $periodDonorsNb = NULL;
+	
+	private $percentage = NULL;
+	
+	private $donorsList = array();
+	
+	private $monthsToConsider = NULL;
+	
+	private $defaultMonthsToConsider = 3;
+	
+	private $periodDonorsList = array();
+	
+	private $donationsList = array();
+	
+	private $meanDonation = NULL;
+	
+	private $maxDonation = NULL;
+	
+	private $minDonation = NULL;
+	
+	private $graphPoints = array();
+	
+	/*
+	 * UD amount in quantitive, for divisions
+	 */ 
+	private $latestUdAmount = NULL;
+	
+	private $startDateUdAmount = NULL;
+	
+	
+	
+	
+	/**********************
+	 * Methods
+	 **********************/
+	
+	/**
+	 * 
+	 * @param $unit = 'quantitative' | 'relative' 
+	 * @param $displayType = NULL | 'img' | 'svg' | 'iframe'
+	 */
+	
+	public function __construct ($pubkey, $unit = NULL, $startDate = NULL, $endDate = NULL, $displayType = NULL) {
+		
+		$this->setDisplayType($displayType);
+		
+		$this->setPubkey($pubkey);
+		
+		$this->setUnit($unit);
+		
+		
+		$this->today = new DateTime();
+		
+		$this->handleDates($startDate, $endDate);
+		
+		$this->computeDaysLeft();
+	}
+	
+	public function setFilterMinDonation ($min) {
+		
+		$this->filterMinDonation = (float) $min;
+	}
+	
+	
+	public function getFilterMinDonation () {
+	
+		return $this->filterMinDonation;
+	}
+	
+	public function setFilterMinCommentLength ($length) {
+		
+		$this->filterMinCommentLength = (int) $length;
+	}
+	
+	
+	public function getFilterMinCommentLength () {
+	
+		return $this->filterMinCommentLength;
+	}
+	
+	public function getEndDate() {
+		
+		if (isset($this->endDate)) {
+			
+			return $this->endDate;
+		
+		} else {
+			
+			$this->decease(_('La date de fin n\'est pas définie.'));
+		}
+	}
+	
+	private function setUnit ($unit) {
+		
+		if (!empty($unit)) {
+			
+			if (!in_array($unit, $this->units)) {
+				
+				$out = [];
+				$out[] = _('L\'unité renseignée n\'existe pas.');
+				$out[] = _('Vérifiez votre synthaxe.');
+				
+				$this->decease($out);
+			
+			} else {
+			
+				$this->unit = $unit;
+			}
+		}
+	}
+	
+	private function setDisplayType ($displayType) {
+		
+		if (!empty($displayType)) {
+			
+			if (in_array($displayType, $this->validDisplayTypes)) {
+
+				$this->displayType = $displayType;
+
+			} else {
+
+				$this->decease(_('Ce type d\'affichage n\'existe pas.'));
+			}
+			
+		}
+	}
+	
+	public function decease ($errorMsgs) {
+		
+		if (!is_array($errorMsgs)) {
+			
+			$errorMsgs = explode("\n", $errorMsgs);
+		}
+		
+		
+		if ($this->displayType == 'img') {
+			
+			$source = imagecreatetruecolor(500, 200);
+			
+			$bgColor = imagecolorallocate($source, 
+										  255, 255, 255);
+			
+			imagefill($source, 
+					  0, 0, 
+					  $bgColor);
+			
+			$txtColor = imagecolorallocate($source, 
+										   0, 0, 0);
+			
+			$errorMsgFontSize = 3;
+			$x = 5;
+			$y = 5;
+			
+			foreach ($errorMsgs as $msg) {
+			
+				imagestring($source, $errorMsgFontSize, $x, $y, utf8_decode($msg), $txtColor);
+				
+				$y += $errorMsgFontSize + 20;
+			}
+			
+				
+			imagepng($source);
+			imagedestroy($source);
+			
+		} else if ($this->displayType == 'svg') {
+			
+			echo '<?xml version="1.0" encoding="utf-8"?>
+			<svg width="580" 
+				 height="224" 
+				 style="fill:black;" 
+				 version="1.1" 
+				 xmlns="http://www.w3.org/2000/svg" 
+				 xmlns:xlink="http://www.w3.org/1999/xlink">
+				 
+				<g style="font-family:sans-serif;">';
+				
+				$x = 25;
+				$y = 25;
+				
+				foreach ($errorMsgs as $msg) {
+						
+					echo '
+					<text
+						style="font-size:.8rem;"
+						x="'. $x .'"
+						y="'. $y . '"
+						dominant-baseline="hanging">
+							'. $msg . '
+					</text>';
+					
+					$y += 25;
+				}
+				
+				echo '
+				</g>
+			</svg>';
+			
+		} else {
+			
+			ob_get_clean(); // to prevent error message to display inside an HTML container (case of error generated by get method calls)
+			
+			echo '<!DOCTYPE html>
+			<html>
+				<head>
+					<meta charset="utf-8" />
+					<title>'. $this->getTitle() . '</title>
+					
+					<style>
+						
+						div {
+							
+							overflow: auto;
+							word-wrap: break-word;
+							background-color: hsl(0, 100%, 69%);
+							color: hsl(0, 100%, 19%);
+							margin: 1em;
+							padding: 1em;
+							border-radius: 1em;
+							position: fixed;
+							top: 0;
+							left: 0;
+							width: calc(100% - 4em);
+						}
+					</style>
+				</head>
+				
+				<body>
+					<div>';
+					
+			
+						foreach ($errorMsgs as $msg) {
+							
+							echo '<p>' . $msg . '</p>';
+						}
+						
+					echo '
+					</div>
+				</body>
+			</html>';
+		}
+		
+		exit;
+	}
+	
+	public function setTarget ($target) {
+		
+		if (empty($target)) {
+
+			$out = [];
+			$out[] = _('Il manque le montant à atteindre. Vérifiez votre syntaxe.');
+			$out[] = _('Vérifiez votre syntaxe.');
+			$this->decease($out);
+
+		} else {
+
+			$target = (int)$target;
+
+			if (!is_int($target)){
+
+				$out = [];
+				$out[] = _('Le montant n\'est pas un nombre entier.');
+				$out[] = _('Vérifiez votre syntaxe.');
+				$this->decease($out);
+
+			} else if ($target == 0) {
+
+				$out = [];
+				$out[] = _('Le montant cible est nul.');
+				$out[] = _('Vérifiez votre syntaxe.');
+				$this->decease($out);
+
+			} else if ($target < 0) {
+
+				$out = [];
+				$out[] = _('La montant cible inférieur à 0.');
+				$out[] = _('Vérifiez votre syntaxe.');
+				$this->decease($out);
+
+			} else { 
+
+				$this->target = $target;
+
+			}
+		}
+	}
+	
+	public function hasTarget() {
+		
+		return isset($this->target);
+	}
+	
+	public function getTarget () {
+		
+		if (!isset($this->target)) {
+			
+			$out = [];
+			$out[] = _('Il manque le montant à atteindre.');
+			$out[] = _('Vérifiez votre syntaxe.');
+			$this->decease($out);
+		
+		} else {
+			
+			return $this->target;
+		}
+		
+	}
+	
+	public function setMustDisplayGraph ($displayGraphOrNot) {
+		
+		if (in_array($displayGraphOrNot, $this->truePossibleValues)) {
+			
+			$this->mustDisplayGraph = true;
+			$this->fetchGraph();
+			
+		} else {
+			
+			$this->mustDisplayGraph = false;
+		}
+	}
+	
+	public function getMustDisplayGraph () {
+		
+		return $this->mustDisplayGraph;
+	}
+	
+	public function setMustDisplayQRCode ($mustDisplayQRCode) {
+		
+		$this->mustDisplayQRCode = $mustDisplayQRCode;
+		
+		if ($mustDisplayQRCode) {
+			
+			$qrCodePath = $this->qrCodesFolder . '/' . $this->pubkey . '.png';
+			
+			if (file_exists($qrCodePath)) {
+				
+				$this->qrCodePath = $qrCodePath;
+			
+			} else {
+				
+				QRcode::png($this->pubkey, $qrCodePath);
+				
+				$this->qrCodePath = $qrCodePath;
+			}
+		}
+	}
+	
+	public function getQRCodePath () {
+	
+		if (!file_exists($this->qrCodePath)) {
+			
+			return false;
+			
+		} else { 
+			
+			return $this->qrCodePath;
+		}
+	}
+	
+	public function setMustHideTitle ($mustHideTitle) {
+		
+		if (in_array($mustHideTitle, $this->truePossibleValues)) {
+			
+			$this->mustHideTitle = true;
+		
+		} else {
+			
+			$this->mustHideTitle = false;
+			
+		}
+	}
+	
+	public function getMustHideTitle () {
+		
+		return $this->mustHideTitle;
+	}
+	
+	public function setTitle ($title) {
+		
+		if (!empty($title)) {
+		
+			$this->title = htmlspecialchars($title);
+		}
+	}
+	
+	public function hasLogo() {
+		
+		return !empty($this->logoPath);
+	}
+	
+	public function setLogo ($logoName) {
+		
+		if ($this->displayType == 'img') {
+			
+			$logoPath = $this->logosFolder . '/png/' . $logoName . '.png';
+		
+		} else {
+			
+			$logoPath = $this->logosFolder . '/svg/' . $logoName . '.svg';
+		}
+		
+		
+		if (!file_exists($logoPath)) {
+			
+			$this->decease(_('Ce logo n\'existe pas.'));
+		
+		} else {
+			
+			$this->logoPath = $logoPath;
+		}
+	}
+	
+	public function getLogoPath() {
+		
+		return $this->logoPath;
+		
+	}
+	
+	public function getTitle () {
+		
+		return $this->title;
+	}
+		
+	public function getMustDisplayQRCode () {
+		
+		return $this->mustDisplayQRCode;
+	}
+	
+	public function getMustDisplayButton () {
+		
+		return $this->mustDisplayButton;
+	}
+	
+	public function setMustDisplayPubkey ($mustDisplayPubkey) {
+			
+		if (in_array($mustDisplayPubkey, $this->truePossibleValues)) {
+			
+			$this->mustDisplayPubkey = true;
+		
+		} else {
+			
+			$this->mustDisplayPubkey = false;
+		}
+	}
+	
+	public function getMustDisplayPubkey () {
+		
+		return $this->mustDisplayPubkey;
+	}
+	
+	public function setMustDisplayButton ($mustDisplayButton) {
+		
+		$this->mustDisplayButton = (bool) $mustDisplayButton;
+	}
+	
+	
+	public function getContributionURL () {
+		
+		if (!isset($this->contributionURL)) {
+			
+			$this->contributionURL ='https://' . $this->apiNode . '/api/#/v1/payment/' . $this->pubkey
+				. '?' . 
+					'amount=10|20|50|100|1000'
+				. '&amp;' . 
+					'comment=don' 
+				. '&amp;' . 
+					'redirect_url=https://%3A%252F%252F' . $this->apiNode
+				. '&amp;' . 
+					'cancel_url=https%3A%252F%252F' . $this->apiNode;
+		}
+				
+		return $this->contributionURL;
+		
+	}
+	
+	public function setPubkey ($pubkey) {
+		
+		if (empty($pubkey)) {
+			
+			$out = [];
+			$out[] = _('Il manque la clé publique du compte à vérifier.');
+			$out[] = _('Vérifiez votre syntaxe.');
+			
+			$this->decease($out);
+		
+		} else if (!preg_match(self::PUBKEY_FORMAT, $pubkey)) {
+			
+			$out = [];
+			$out[] = _('La pubkey n\'a pas le format attendu.');
+			$out[] = _('Vérifiez votre syntaxe.');
+			$this->decease($out);
+			
+		} else {
+			
+			$this->pubkey = $pubkey;
+			
+		}
+	}
+	
+	public function printUnit () {
+		
+		if ($this->unit == 'relative') {
+			
+			if ($this->displayType == 'img') {
+				
+				return _('DUĞ1');
+			
+			} else {
+				
+				return _('DU<sub>Ğ1</sub>');
+			}
+			
+		} else {
+			
+			return _('Ğ1');
+		}
+	}
+	
+	protected function isDate ($date, $format){
+		
+		$a = date_parse_from_format($format, $date);
+		
+		return checkdate($a["month"], $a["day"], $a["year"]);
+	}
+	
+	protected function handleDates ($startDate, $endDate) {
+		
+		/* Starting date handling */
+		
+		if (empty($startDate)) {
+			
+			$this->startDate = new DateTime('first day of this month');
+			
+		} else if (!$this->isDate($startDate, self::DATE_FORMAT)) {
+				
+			$out = [];
+			$out[] = _('La date de début n\'est pas correcte.');
+			$out[] = _('Vérifiez votre syntaxe.');
+			$this->decease($out);
+
+		} else {
+			
+			$d = DateTime::createFromFormat(self::DATE_FORMAT, $startDate);
+			
+			if ($d === false) {
+
+				$out = [];
+				$out[] = _('La date de début n\'est pas correcte.');
+				$out[] = _('Vérifiez votre syntaxe.');
+				$this->decease($out);
+			
+			} else {
+			
+				$this->startDate = $d;
+			}
+		}
+
+		/* Ending date handling */
+		
+		if (empty($endDate)) {
+			
+			$this->endDate = new DateTime('last day of this month');
+		
+		} else if ($endDate != 0) {
+			
+			if (!$this->isDate($endDate, self::DATE_FORMAT) ) {
+
+				$out = [];
+				$out[] = _('La date de fin est incorrecte.');
+				$out[] = _(' Vérifiez votre syntaxe.');
+				$this->decease($out);
+
+			} else {
+
+				$d = DateTime::createFromFormat(self::DATE_FORMAT, $endDate);
+				
+				if ($d === false) {
+					
+					$out = [];
+					$out[] = _('La date de fin est incorrecte.');
+					$out[] = _('Renseignez la au format '. self::DATE_FORMAT . '.');
+					$this->decease($out);
+
+				} elseif ($d < $this->startDate) {
+					
+					$out = [];
+					$out[] = _('La date de fin est antérieure à la date de début.');
+					$out[] = _('Un crowdfunding ne peut pas se terminer avant d\'avoir commencé.');
+					$out[] = _('Vérifiez vos dates :');
+					$out[] = _('Date de début : ') . $this->startDate->format(self::DATE_FORMAT);
+					$out[] = _('Date de fin : ') . $d->format(self::DATE_FORMAT);
+					
+					$this->decease($out);
+
+				} else {
+					
+					$this->endDate = $d;
+				}
+			}
+		}
+		
+		$this->startDate->setTime(0,0,0);
+	}
+	
+	protected function computeDaysLeft () {
+		
+		if ($this->endDate < $this->today) {
+			
+			$dteDiff = $this->today->diff($this->endDate);
+			$this->daysLeft = -1 * $dteDiff->format('%a');
+
+		} else {
+			
+			$dteDiff  = $this->endDate->diff($this->today);
+			$this->daysLeft = $dteDiff->format('%a');
+		}
+		
+	}
+	
+	public function getDaysLeft () {
+	
+		return $this->daysLeft;
+	}
+	
+	public function getMeanDonation () {
+		
+		if (empty($this->meanDonation)) {
+			
+			$this->meanDonation = $this->amountCollected / $this->donorsNb;
+		}
+		
+		return $this->meanDonation;
+	}
+	
+	public function getMaxDonation () {
+		
+		if (empty($this->maxDonation)) {
+
+			$max = 0;
+
+			foreach ($this->donationsList as $d) {
+				
+				$max = max($max, $d['amount']);
+		   }
+			
+			$this->maxDonation = $max;
+		}
+		
+		return $this->maxDonation;
+	}
+	
+	public function getPubkey () {
+		
+		return $this->pubkey;
+	}
+	
+	public function getMinDonation () {
+		
+		if (empty($this->minDonation)) {
+
+			$min = 666666;
+
+			foreach ($this->donationsList as $d) {
+				
+				$min = min($min, $d['amount']);
+		   }
+			
+			$this->minDonation = $min;
+		}
+		
+		return $this->minDonation;
+	}
+			
+	protected function computePercentage () {
+		
+		$this->percentage = $this->getAmountCollected() / $this->getTarget() * 100;
+		
+	}
+	
+	public function getPercentage () {
+		
+		if (!isset($this->percentage)) {
+			
+			$this->computePercentage();
+		
+		}
+		
+		return round($this->percentage);
+	}
+	
+	public function getAmountCollected () {
+		
+		if (isset($this->amountCollected)) {
+			
+			return $this->amountCollected;
+		
+		} else {
+			
+			return $this->fetchAmountCollected();
+		}
+	}
+	
+	public function getDonors () {
+		
+		return $this->donorsList;
+	}
+	
+	public function getDonorsNb () {
+		
+		if (isset($this->donorsNb)) {
+			
+			return $this->donorsNb;
+		
+		} else {
+			
+			return $this->fetchDonorsNb();
+		}
+	}
+	
+	public function fetchMonthlyMean ($monthsToConsider) {
+		
+		$nMonths = new DateInterval('P'. $monthsToConsider . 'M');
+		$dateMonthsAgo = clone $this->today;
+		$dateMonthsAgo->sub($nMonths);
+		$dateMonthsAgo = DateTime::createFromFormat('Y-m-d', 
+													$dateMonthsAgo->format('Y') . '-' . 
+													$dateMonthsAgo->format('m') . '-' . 
+													'01');
+		
+		$oneMonth = new DateInterval('P1M');
+		$dateFirstDayTodaysMonth = DateTime::createFromFormat('Y-m-d',
+															  $this->today->format('Y') . '-' . 
+															  $this->today->format('m') . '-' . 
+															  '01');
+		$dateLastDayOfPreviousMonth = clone $dateFirstDayTodaysMonth;
+		$aDay = new DateInterval('P1D');
+		$dateLastDayOfPreviousMonth->sub($aDay);
+		
+		$periodTotalCollected = 0;
+		
+		$tx = $this->getTransactions($this->pubkey, 
+									 $dateMonthsAgo->getTimestamp(), 
+									 $dateLastDayOfPreviousMonth->getTimestamp());
+		
+		$previousMonth = $dateMonthsAgo->format('Y-m');
+		$monthlyDonors[$previousMonth] = [];
+		$monthlyDonorsNb[$previousMonth] = 0;
+		
+		foreach ($tx as $t) {
+			
+			if ($t->issuers[0] != $this->pubkey) {
+				
+				foreach ($t->outputs as $o) {
+					
+					if (strstr($o, $this->pubkey)) {
+							
+						$transactionDate = new DateTime();
+						$transactionDate->setTimestamp($t->time);
+						
+						$currentMonth = $transactionDate->format('Y-m');
+						
+						if ($currentMonth != $previousMonth) {
+							
+							$monthlyDonors[$currentMonth] = [];
+							$monthlyDonorsNb[$currentMonth] = 0;
+						}
+						
+						$donor = $t->issuers[0];
+						
+						if (!in_array($donor, $monthlyDonors[$currentMonth])) {
+							
+							$monthlyDonors[$currentMonth][] = $donor;
+							++$monthlyDonorsNb[$currentMonth];
+						}
+						
+						$this->addPeriodDonor($donor);
+						
+						$o = explode(':', $o);
+						$transactionAmount = $o[0] / 100;
+						
+						$periodTotalCollected += $transactionAmount;
+						
+						$previousMonth = $currentMonth;
+					}
+				}
+			}
+		}
+		
+		$this->periodDonorsMean = ceil(array_sum($monthlyDonorsNb) / $monthsToConsider);
+			
+		$this->monthlyAmountCollectedMean = $this->convertIntoChosenUnit($periodTotalCollected / $monthsToConsider);
+		
+		return $this->monthlyAmountCollectedMean;	
+	}
+	
+	public function setButtonType ($type) {
+		
+		if (in_array($type, $this->validButtonTypes)) {
+			
+			$this->buttonType = $type;
+		}
+	}
+	
+	public function getButtonType () {
+		
+		return $this->buttonType;
+	}
+	
+	public function getPeriodDonorsMean ($monthsToConsider) {
+		
+		return $this->periodDonorsMean;
+	}
+	
+	private function addPeriodDonor ($donor) {
+		
+		if (!in_array($donor, $this->periodDonorsList)) {
+			
+			$this->periodDonorsList[] = $donor;
+			++$this->periodDonorsNb;
+		}
+	}
+	
+	public function getPeriodDonorsNb ($monthsToConsider) {
+		
+		if (!isset($this->periodDonorsNb)) {
+			
+			$this->fetchMonthlyMean($monthsToConsider);
+		}
+		
+		return $this->periodDonorsNb;
+	}
+	
+	public function getMonthlyAmountCollectedMean ($monthsToConsider) {
+		
+		if (!isset($this->monthlyAmountCollectedMean)) {
+			
+			$this->fetchMonthlyMean($monthsToConsider);
+		}
+		
+		return $this->monthlyAmountCollectedMean;
+	}
+	
+	private function getTransactions ($pubkey, $startTimestamp, $endTimestamp) {
+		
+		$json = $this->getJson('/tx/history/' . $pubkey . "/times/" . $startTimestamp . "/" . $endTimestamp);
+		
+		$transactions = json_decode($json);
+		
+		return $transactions->history->received;
+	}
+	
+	
+	public function keepOnlyHighestDonations () {
+		
+		
+	}
+	
+	public function getDonationsList () {
+		
+		if (empty($this->donationsList)) {
+			
+			$this->fetchDonationsList();
+		
+		}
+		
+		return $this->donationsList;
+			
+	}
+	
+	public function getFilteredDonationsList () {
+		
+		if (($this->getFilterMinDonation() <= 0) AND ($this->getFilterMinCommentLength() <= 0)) {
+			
+			return $this->getDonationsList();
+		
+		} else {
+
+			return array_filter($this->getDonationsList(), function ($v) {
+
+				return (
+					($v['amount'] >= $this->getFilterMinDonation())
+					 AND 
+					(strlen($v['comment']) >= $this->getFilterMinCommentLength())
+				);
+			});
+		}
+	}
+	
+	public function setMonthsToConsider ($m) {
+	
+		$this->monthsToConsider = (int) $m;
+	}
+	
+	public function getMonthsToConsider () {
+		
+		if (isset($this->monthsToConsider)) {
+			
+			return $this->monthsToConsider;
+		
+		} else {
+			
+			return $this->defaultMonthsToConsider;
+		}
+	}
+	
+	
+	private function addDonor ($donor) {
+		
+		if (!in_array($donor, $this->donorsList)) {
+			
+			$this->donorsList[] = $donor;
+			++$this->donorsNb;
+		}
+	}
+	
+	
+	private function fetchDonationsList () {
+		
+		$this->donorsNb = 0;
+		
+		$tx = $this->getTransactions($this->pubkey, 
+									 $this->startDate->getTimestamp(), 
+									 $this->endDate->getTimestamp());
+		
+		foreach ($tx as $t) {
+			
+			// Filter only incoming transactions
+			if ($t->issuers[0] != $this->pubkey) {
+			
+				$donor = $t->issuers[0];
+				
+				foreach ($t->outputs as $o) {
+					
+					if (strstr($o, $this->pubkey)) {
+						
+						$o = explode(':', $o);
+						
+						$transactionAmount = $this->convertIntoChosenUnit($o[0] / 100);
+						
+						$this->amountCollected += $transactionAmount;
+				
+						$this->addDonor($donor);
+						
+						$plusProfile = $this->getCesiumPlusProfile($donor);
+						
+						if (isset($plusProfile->_source->title)) {
+							
+							$name = $plusProfile->_source->title;
+						
+						} else {
+						
+							$name = substr($name, 0, 8);
+						}
+						
+						$this->donationsList[] = [
+							
+							'donor' => $donor, 
+							'name' => $name, 
+							'amount' => $transactionAmount, 
+							'comment' => $t->comment
+						];
+					}
+				}
+			}
+		}
+		
+		return $this->donationsList;
+	}
+	
+	private function fetchDonorsNb () {
+		
+		$this->fetchDonors();
+		
+		return $this->donorsNb;
+	}
+		
+	
+	private function fetchDonors () {
+		
+		$this->donorsNb = 0;
+		
+		$donationsList = $this->donationsList;
+		
+		if (!empty($donationsList)) {
+			
+			foreach ($donationsList as $donation) {
+				
+				$this->addDonor($donation['donor']);
+			}
+			
+		} else {
+
+			$tx = $this->getTransactions($this->pubkey, 
+										 $this->startDate->getTimestamp(), 
+										 $this->endDate->getTimestamp());
+
+			foreach ($tx as $t) {
+
+				if ($t->issuers[0] != $this->pubkey) {
+
+					$this->addDonor($t->issuers[0]);
+				}
+			}
+		}
+		
+		return $this->donors;
+	}
+	
+	public function convertIntoChosenUnit ($amountInQuantitative) {
+		
+		if ($this->unit == 'quantitative') {
+			
+			return $amountInQuantitative;
+		
+		} else { 
+			
+			return $amountInQuantitative / $this->getStartDateUdAmount();
+		}
+	}
+	
+	public function getCesiumPlusProfile ($pubkey) {
+		
+		$json = $this->getJson('/user/profile/' . $pubkey, true);
+		
+		return json_decode($json);
+	}
+	
+	private function fetchAmountCollected () {
+		
+		$this->amountCollected = 0;
+		$this->donorsNb = 0;
+		
+		$donationsList = $this->donationsList;
+		
+		if (!empty($donationsList)) {
+			
+			foreach ($donationsList as $donation) {
+				
+				$this->amountCollected += $donation['amount'];
+			}
+		
+		} else {
+
+			$tx = $this->getTransactions($this->pubkey, 
+										 $this->startDate->getTimestamp(), 
+										 $this->endDate->getTimestamp());
+
+			foreach ($tx as $t) {
+
+				// Filter incoming transactions
+				if ($t->issuers[0] != $this->pubkey) {
+
+					foreach ($t->outputs as $o) {
+
+						if (strstr($o, $this->pubkey)) {
+
+							$donor = $t->issuers[0];
+
+							$this->addDonor($donor);
+
+							$o = explode(':', $o);
+							$transactionAmount = $o[0] / 100;
+
+							$this->amountCollected += $transactionAmount;
+						}
+					}
+				}
+			}
+			$this->amountCollected = $this->convertIntoChosenUnit($this->amountCollected);
+		}
+		
+		
+		
+		return $this->amountCollected;
+		
+	}
+	
+	
+	
+	private function fetchGraph () {
+		
+		$this->donorsNb = 0;
+		
+		$dailyAmount = 0;
+		$dailyAmountCumulative = 0;
+		
+		$startTimestamp = $this->startDate->getTimestamp();
+		$todayTimestamp = $this->today->getTimestamp();
+		
+		$dayBefore = $startTimestamp;
+		
+		$tx = $this->getTransactions($this->pubkey, $startTimestamp, $todayTimestamp);
+		
+		$hours12 = 43200;
+		$hours24 = 86400;
+			
+		foreach ($tx as $t) {
+			
+			// Filter incoming transactions
+			if ($t->issuers[0] != $this->pubkey) {
+				
+				foreach ($t->outputs as $o) {
+					
+					if (strstr($o, $this->pubkey)) {
+
+						$donor = $t->issuers[0];
+
+						$this->addDonor($donor);
+						
+						$o = explode(':', $o);
+						$transactionAmount = $o[0] / 100;
+						
+						$dailyAmount += $transactionAmount;
+						$dailyAmountCumulative += $transactionAmount;
+						
+						$currentDay = $t->time - $t->time%$hours12 + $hours24;
+						
+						if ($currentDay != $dayBefore) {
+
+							$this->graphPoints['amountCollectedByDay'][] = [
+
+								't' => $dayBefore * 1000, 
+								'y' => (string) round($this->convertIntoChosenUnit($dailyAmount), 2)
+							];
+
+							$this->graphPoints['amountCollectedByDayCumulative'][] = [
+
+								't' => $dayBefore * 1000, 
+								'y' => (string) round($this->convertIntoChosenUnit($dailyAmountCumulative), 2)
+						   ];
+
+							$dailyAmount = 0;
+						}
+
+						$dayBefore = $currentDay;
+					}
+				}
+			}
+			
+			$lastTimestamp = $t->time;
+		}
+		
+		
+		$this->amountCollected = $this->convertIntoChosenUnit($dailyAmountCumulative);
+			
+		// On complète le tableau avec la derniere transaction et pour la date de visualisation du graph
+		$this->graphPoints['amountCollectedByDayCumulative'][] = [
+					   't' => $lastTimestamp * 1000, 
+					   'y' => (string) round($this->amountCollected, 2)
+		];
+
+		$this->graphPoints['amountCollectedByDayCumulative'][] = [
+					   't' => $todayTimestamp * 1000, 
+					   'y'=> (string) round($this->amountCollected, 2)
+		];
+		
+		if (isset($this->target)) {
+			
+			// On trace la droite de l'objectif
+			$this->graphPoints['targetLine'] = [
+
+				[
+					't' => $startTimestamp * 1000, 
+					'y' => (string) round($this->getTarget(), 2)
+				],
+				[
+					't' => $todayTimestamp * 1000, 
+					'y' => (string) round($this->getTarget(), 2)
+				]
+			];
+		}
+	}
+	
+	
+	public function getGraphAmountCollectedByDayPoints () {
+		
+		if (empty($this->graphPoints)) {
+			
+			$this->fetchGraph();
+		
+		} else {
+			
+			return json_encode($this->graphPoints['amountCollectedByDay']);
+		}
+		
+	}
+	
+	public function getGraphAmountCollectedByDayCumulativePoints () {
+		
+		if (empty($this->graphPoints)) {
+			
+			$this->fetchGraph();
+		
+		} else {
+			
+			return json_encode($this->graphPoints['amountCollectedByDayCumulative']);
+		}
+	}
+	
+	public function getGraphTargetLinePoints () {
+		
+		if (empty($this->graphPoints)) {
+			
+			$this->fetchGraph();
+		
+		} else {
+			
+			return json_encode($this->graphPoints['targetLine']);
+		}
+	}
+	
+	
+	
+	public function setNode ($node) {
+	
+		$this->node = htmlspecialchars($node);	
+	}
+	
+	public function getStartDateUDAmount () {
+		
+		if (!isset($this->startDateUdAmount)) {
+			
+			if ($this->startDate > $this->today) {
+
+				return $this->getLatestUdAmount();
+
+			} else {
+				
+				// On récupère les numéros de chaque blocks de DU journalier
+				$json = $this->getJson('/blockchain/with/ud');
+				$blocks = json_decode($json)->result->blocks;
+
+				// On calcule le nombre de jours écoulés entre aujourd'hui et la date de début
+				$diff = $this->today->diff($this->startDate)->format("%a");
+				
+				// On récupère le bloc de la date qui nous intéresse
+				$blockNum = $blocks[count($blocks) - $diff - 1];
+
+				// Puis on récupère le montant du DU
+				$json = $this->getJson('/blockchain/block/' . $blockNum);
+				$block = json_decode($json);
+
+				$this->startDateUdAmount = $block->dividend / 100;
+			}
+		}
+		
+		return $this->startDateUdAmount;
+	}
+	
+	
+	public function getJson ($uri, $cesiumPlus = false) {
+		
+		
+		if ($cesiumPlus) {
+			
+			$node = $this->cesiumPlusNode;
+			$nodes = $this->cesiumPlusNodes;
+		
+		} else {
+			
+			
+			$node = $this->node;
+			$nodes = $this->nodes;
+		}
+		
+		if (isset($node)) {
+			
+			$json = @file_get_contents("https://" . $node . $uri);
+		}
+
+		if (!isset($json)) {
+
+			// If node was not found, we fallback to a responding node
+
+			$nodesNb = count($nodes);
+
+			for ($i = 0; (!isset($json) AND ($i < $nodesNb)); ++$i) {
+
+				$json = @file_get_contents("https://" . $nodes[$i] . $uri);
+
+
+				if (isset($json)) {
+					
+					if ($cesiumPlus) {
+					
+						$this->cesiumPlusNode = $nodes[$i];	
+					
+					} else {
+					
+						$this->node = $nodes[$i];
+					}
+				}
+
+			}
+
+			if (!isset($json)) {
+
+				$this->decease(_('Aucun noeud Duniter n\'a été trouvé.'));
+				
+			} 
+		}
+		
+		return $json;
+	}
+	
+	
+	public function getLatestUdAmount () {
+		
+		if (!isset($this->latestUdAmount)) {
+			
+			// On récupère les numéros de chaque blocks de DU journalier
+			$json = $this->getJson('/blockchain/with/ud');
+			$blocks = json_decode($json)->result->blocks;
+			
+			// On récupère le dernier block qui contient le DU
+			$blockNum = end($blocks);
+
+			// Puis on récupère le montant du DU
+			$json = $this->getJson('/blockchain/with/ud');
+			$block = json_decode($json);
+
+			$this->latestUdAmount = $block->dividend / 100;
+		}
+		
+		return $this->latestUdAmount;
+	}
+	
+	
+}
diff --git a/inc/Funding.class.php b/inc/Funding.class.php
deleted file mode 100644
index 7bca0da3169cadb33cc2c928db1ddb943cadc538..0000000000000000000000000000000000000000
--- a/inc/Funding.class.php
+++ /dev/null
@@ -1,194 +0,0 @@
-<?php
-
-/*
-
------
-
-Ce script est basé sur la "barre de financement intégrable" développée par Pierre-Jean Chancellier.
-
-Son travail original se trouve ici : 
-
-https://git.duniter.org/paidge/barre-de-financement-int-grable
-
------
-
-This script is based on Pierre-Jean Chancellier's "barre de financement intégrable".
-
-See original work at : 
-
-https://git.duniter.org/paidge/barre-de-financement-int-grable
-
-*/
-
-class Funding
-{
-	private $units = ['quantitative','relative'];
-	
-	private $unit = 'relative';
-	
-	private $pubkeyFormat = '#^[123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]{43,44}$#';
-	
-	private $node = 'g1.duniter.org';
-	
-	private $pubkey;
-	
-	private $target;
-	
-	private $startDate;
-	
-	private $total = 0;
-	
-	private $donorsNb = 0;
-	
-	private $percentage;
-	
-	
-	
-	public function __construct ($pubkey, $target, $startDate, $unit = 'relative')
-	{
-		if (!preg_match($this->pubkeyFormat, $pubkey)) {
-			
-			echo "<p>La pubkey n'a pas le format attendu. Vérifiez votre syntaxe.</p>";
-			exit;
-			
-		}
-		
-		$this->pubkey = $pubkey;
-		
-		$this->target = $target;
-		
-		$this->startDate = $startDate;
-		
-		$this->unit = $unit;
-		
-		$this->computeAmountDonatedAndDonorsNb();
-			
-		$this->percentage = round($this->total / $this->target * 100);
-		
-	}
-	
-	public function getPercentage ()
-	{
-		return $this->percentage;	
-	}
-	
-	public function getAmountDonated ()
-	{
-		return $this->total;	
-	}
-	
-	public function getDonorsNb ()
-	{
-		return $this->donorsNb;
-	}
-	
-	private function computeAmountDonatedAndDonorsNb ()
-	{
-		
-		$today = new DateTime();
-		$format = "d/m/Y";
-		function isDate(&$date, $format){
-			$champsDate = date_parse_from_format($format, $date);
-			$date = DateTime::createFromFormat($format, $date);
-			return checkdate($champsDate["month"], $champsDate["day"], $champsDate["year"]);
-		}
-
-		// Vérification des dates et calcul du nombre de jours entre la date du jour et la date de fin
-		if (!empty($this->startDate)){
-			
-			$start_date = $this->startDate;
-			
-			if (!isDate($start_date, $format)){
-				echo "<p>La date de début n'est pas correcte. Vérifiez votre syntaxe.</p>";
-				exit;
-			}
-			
-			$start_date->sub(new DateInterval('P1D'));
-			
-		} else {
-			
-			echo "<p>Il manque la date de début. Vérifiez votre syntaxe.</p>";
-			exit;
-			
-		}
-		
-		// Récupération des transactions entrantes entre la date de début et la date du jour
-		$url_json = "https://" . $this->node . "/tx/history/" . $this->pubkey . "/times/" . $start_date->getTimestamp() . "/" . $today->getTimestamp();
-		$json = file_get_contents($url_json);
-		$json = json_decode($json);
-		$transactions = $json->history->received;
-		$donors = [];
-		$current_date = $start_date->format($format);
-		$array_dates = [$current_date];
-		$array_montants = [];
-
-		foreach ($transactions as $transaction){
-
-			$donor = $transaction->issuers[0];
-
-			if ($donor != $this->pubkey){
-
-				if(!in_array($donor, $donors)){
-
-					array_push($donors, $donor);
-
-				}
-				
-				$outputs = $transaction->outputs;
-				
-				foreach ($outputs as $output){
-
-					if (strstr($output,$this->pubkey)){
-
-						$timestamp = $transaction->blockstampTime;
-						$date_transaction = date('d/m/Y', $timestamp);
-
-						if ($date_transaction != $current_date){
-
-							array_push($array_dates, $date_transaction);
-							array_push($array_montants, $this->total);
-							$current_date = $date_transaction;
-						}
-
-						$output = explode(":", $output);
-						$montant = $output[0]/100;
-
-						$this->total += $montant;
-					}
-				}
-			}
-		}
-
-		array_push($array_montants, $this->total);
-		$this->donorsNb = count($donors);	
-		
-		if ($this->unit == 'relative')
-		{
-			$this->total = round($this->total / $this->getLastUDAmount());
-		}
-	}
-	
-	public function setNode ($node)
-	{
-		$this->node = $node;	
-	}
-	
-	public function getLastUDAmount ()
-	{
-		// On récupère le dernier block qui contient le DU
-		$url_json = "https://" . $this->node . "/blockchain/with/ud";
-		$json = file_get_contents($url_json);
-		$json = json_decode($json);
-		$last_block_with_ud = end($json->result->blocks);
-
-		// Puis on récupère le montant du DU
-		$url_json = "https://" . $this->node . "/blockchain/block/" . $last_block_with_ud;
-		$json = file_get_contents($url_json);
-		$json = json_decode($json);
-		$ud = $json->dividend/100;
-		
-		return $ud;
-	}
-	
-	
-}
diff --git a/inc/functions.php b/inc/functions.php
index 4df84cc687f1b306a530ef7ac1bb383c6055edab..2b7fe8e2ead8ae648b8afdc533d78af1b810f803 100644
--- a/inc/functions.php
+++ b/inc/functions.php
@@ -39,4 +39,19 @@ function getUserIpAddress ()
 
 	}
 
-}
\ No newline at end of file
+}
+
+
+
+function removeTrailingSlash ($str) {
+
+	if (substr($str, -1) == '/') {
+
+		return substr($str, 0, -1);
+
+	} else {
+
+		return $str;
+	}
+}
+
diff --git a/index.php b/index.php
index ff3a9247c881b4d75fc45c0eb8ae177beb877654..ee2d674b4e298277c47da817b7c0ee157782849f 100644
--- a/index.php
+++ b/index.php
@@ -6,8 +6,6 @@ defineLang();
 putenv('LC_ALL='. LANG_FOLDER);
 setlocale(LC_ALL, LOCALE_CODE);
 
-textdomain("menu");
-
 if (!isset($_GET['page'])) {
 	
 	$page = NULL;
@@ -25,37 +23,37 @@ $router =
 	array(
 		[
 			'permalink' => '/', 
-			'i18nedPermalink' => _('/'), 
+			'i18nedPermalink' => dgettext('menu', '/'), 
 			'tpl' => 'home.php'
 		], 
 		[
 			'permalink' => '/fonctionnalites', 
-			'i18nedPermalink' => _('/fonctionnalites'), 
+			'i18nedPermalink' => dgettext('menu', '/fonctionnalites'), 
 			'tpl' => 'features.php'
 		], 
 		[
 			'permalink' => '/telechargement', 
-			'i18nedPermalink' => _('/telechargement'), 
+			'i18nedPermalink' => dgettext('menu', '/telechargement'), 
 			'tpl' => 'download.php'
 		], 
 		[
 			'permalink' => '/merci', 
-			'i18nedPermalink' => _('/merci'), 
+			'i18nedPermalink' => dgettext('menu', '/merci'), 
 			'tpl' => 'funding.php'
 		], 
 		[
 			'permalink' => '/tutoriel-cesium', 
-			'i18nedPermalink' => _('/tutoriel-cesium'), 
+			'i18nedPermalink' => dgettext('menu', '/tutoriel-cesium'), 
 			'tpl' => 'tuto.php'
 		], 
 		[
 			'permalink' => '/developpeurs', 
-			'i18nedPermalink' => _('/developpeurs'), 
+			'i18nedPermalink' => dgettext('menu', '/developpeurs'), 
 			'tpl' => 'jobs.php'
 		],
 		[
 			'permalink' => '/mentions-legales', 
-			'i18nedPermalink' => _('/mentions-legales'), 
+			'i18nedPermalink' => dgettext('menu', '/mentions-legales'), 
 			'tpl' => 'legal-notice.php'
 		]
 	);
@@ -69,7 +67,7 @@ foreach ($router as $route)
 	{
 		$found = true;
 		$pagePermalink = $route['permalink'];
-		$pageIsHome = ($route['i18nedPermalink'] == _('/')) ? true : false;
+		$pageIsHome = ($route['i18nedPermalink'] == dgettext('menu', '/')) ? true : false;
 		
 		include('tpl/' . $route['tpl']);
 		
diff --git a/lib/jquery-3.4.1.min.js b/lib/jquery-3.4.1.min.js
new file mode 100755
index 0000000000000000000000000000000000000000..a1c07fd803b5fc9c54f44e31123ae4fa11e134b0
--- /dev/null
+++ b/lib/jquery-3.4.1.min.js
@@ -0,0 +1,2 @@
+/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}k.fn=k.prototype={jquery:f,constructor:k,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=k.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return k.each(this,e)},map:function(n){return this.pushStack(k.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},k.extend=k.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(k.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||k.isPlainObject(n)?n:{},i=!1,a[t]=k.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},k.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t){b(e,{nonce:t&&t.nonce})},each:function(e,t){var n,r=0;if(d(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(p,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(d(Object(e))?k.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(d(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g.apply([],a)},guid:1,support:y}),"function"==typeof Symbol&&(k.fn[Symbol.iterator]=t[Symbol.iterator]),k.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var h=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,k="sizzle"+1*new Date,m=n.document,S=0,r=0,p=ue(),x=ue(),N=ue(),A=ue(),D=function(e,t){return e===t&&(l=!0),0},j={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",$=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",F=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="<a id='"+k+"'></a><select id='"+k+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!==C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!==C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&j.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(D),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(F," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[S,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[S,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[k]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace(B,"$1"));return s[k]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[S,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[k]||(e[k]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===S&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[k]&&(v=Ce(v)),y&&!y[k]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[k]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(B,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(B," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=N[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[k]?i.push(a):o.push(a);(a=N(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=S+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t===C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument===C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(S=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(S=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=k.split("").sort(D).join("")===k,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);k.find=h,k.expr=h.selectors,k.expr[":"]=k.expr.pseudos,k.uniqueSort=k.unique=h.uniqueSort,k.text=h.getText,k.isXMLDoc=h.isXML,k.contains=h.contains,k.escapeSelector=h.escape;var T=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&k(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},N=k.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var D=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1<i.call(n,e)!==r}):k.filter(n,e,r)}k.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?k.find.matchesSelector(r,e)?[r]:[]:k.find.matches(e,k.grep(t,function(e){return 1===e.nodeType}))},k.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(k(e).filter(function(){for(t=0;t<r;t++)if(k.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)k.find(e,i[t],n);return 1<r?k.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&N.test(e)?k(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(k.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&k(e);if(!N.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&k.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?k.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(k(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(k.uniqueSort(k.merge(this.get(),k(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),k.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return T(e,"parentNode")},parentsUntil:function(e,t,n){return T(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return T(e,"nextSibling")},prevAll:function(e){return T(e,"previousSibling")},nextUntil:function(e,t,n){return T(e,"nextSibling",n)},prevUntil:function(e,t,n){return T(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return"undefined"!=typeof e.contentDocument?e.contentDocument:(A(e,"template")&&(e=e.content||e),k.merge([],e.childNodes))}},function(r,i){k.fn[r]=function(e,t){var n=k.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=k.filter(t,n)),1<this.length&&(O[r]||k.uniqueSort(n),H.test(r)&&n.reverse()),this.pushStack(n)}});var R=/[^\x20\t\r\n\f]+/g;function M(e){return e}function I(e){throw e}function W(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}k.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},k.each(e.match(R)||[],function(e,t){n[t]=!0}),n):k.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){k.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return k.each(arguments,function(e,t){var n;while(-1<(n=k.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<k.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},k.extend({Deferred:function(e){var o=[["notify","progress",k.Callbacks("memory"),k.Callbacks("memory"),2],["resolve","done",k.Callbacks("once memory"),k.Callbacks("once memory"),0,"resolved"],["reject","fail",k.Callbacks("once memory"),k.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return k.Deferred(function(r){k.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,M,s),l(u,o,I,s)):(u++,t.call(e,l(u,o,M,s),l(u,o,I,s),l(u,o,M,o.notifyWith))):(a!==M&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){k.Deferred.exceptionHook&&k.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==I&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(k.Deferred.getStackHook&&(t.stackTrace=k.Deferred.getStackHook()),C.setTimeout(t))}}return k.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:M,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:M)),o[2][3].add(l(0,e,m(n)?n:I))}).promise()},promise:function(e){return null!=e?k.extend(e,a):a}},s={};return k.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=k.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(W(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)W(i[t],a(t),o.reject);return o.promise()}});var $=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;k.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&$.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},k.readyException=function(e){C.setTimeout(function(){throw e})};var F=k.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),k.ready()}k.fn.ready=function(e){return F.then(e)["catch"](function(e){k.readyException(e)}),this},k.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--k.readyWait:k.isReady)||(k.isReady=!0)!==e&&0<--k.readyWait||F.resolveWith(E,[k])}}),k.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(k.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var _=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)_(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(k(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},z=/^-ms-/,U=/-([a-z])/g;function X(e,t){return t.toUpperCase()}function V(e){return e.replace(z,"ms-").replace(U,X)}var G=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Y(){this.expando=k.expando+Y.uid++}Y.uid=1,Y.prototype={cache:function(e){var t=e[this.expando];return t||(t={},G(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[V(t)]=n;else for(r in t)i[V(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][V(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(V):(t=V(t))in r?[t]:t.match(R)||[]).length;while(n--)delete r[t[n]]}(void 0===t||k.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!k.isEmptyObject(t)}};var Q=new Y,J=new Y,K=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Z=/[A-Z]/g;function ee(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(Z,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:K.test(i)?JSON.parse(i):i)}catch(e){}J.set(e,t,n)}else n=void 0;return n}k.extend({hasData:function(e){return J.hasData(e)||Q.hasData(e)},data:function(e,t,n){return J.access(e,t,n)},removeData:function(e,t){J.remove(e,t)},_data:function(e,t,n){return Q.access(e,t,n)},_removeData:function(e,t){Q.remove(e,t)}}),k.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=J.get(o),1===o.nodeType&&!Q.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=V(r.slice(5)),ee(o,r,i[r]));Q.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){J.set(this,n)}):_(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=J.get(o,n))?t:void 0!==(t=ee(o,n))?t:void 0;this.each(function(){J.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){J.remove(this,e)})}}),k.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Q.get(e,t),n&&(!r||Array.isArray(n)?r=Q.access(e,t,k.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=k.queue(e,t),r=n.length,i=n.shift(),o=k._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){k.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Q.get(e,n)||Q.access(e,n,{empty:k.Callbacks("once memory").add(function(){Q.remove(e,[t+"queue",n])})})}}),k.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?k.queue(this[0],t):void 0===n?this:this.each(function(){var e=k.queue(this,t,n);k._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&k.dequeue(this,t)})},dequeue:function(e){return this.each(function(){k.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=k.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Q.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var te=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ne=new RegExp("^(?:([+-])=|)("+te+")([a-z%]*)$","i"),re=["Top","Right","Bottom","Left"],ie=E.documentElement,oe=function(e){return k.contains(e.ownerDocument,e)},ae={composed:!0};ie.getRootNode&&(oe=function(e){return k.contains(e.ownerDocument,e)||e.getRootNode(ae)===e.ownerDocument});var se=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&oe(e)&&"none"===k.css(e,"display")},ue=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];for(o in i=n.apply(e,r||[]),t)e.style[o]=a[o];return i};function le(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return k.css(e,t,"")},u=s(),l=n&&n[3]||(k.cssNumber[t]?"":"px"),c=e.nodeType&&(k.cssNumber[t]||"px"!==l&&+u)&&ne.exec(k.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)k.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,k.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ce={};function fe(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Q.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&se(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ce[s])||(o=a.body.appendChild(a.createElement(s)),u=k.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ce[s]=u)))):"none"!==n&&(l[c]="none",Q.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}k.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){se(this)?k(this).show():k(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Q.set(e[n],"globalEval",!t||Q.get(t[n],"globalEval"))}ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;var me,xe,be=/<|&#?\w+;/;function we(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))k.merge(p,o.nodeType?[o]:o);else if(be.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+k.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;k.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<k.inArray(o,r))i&&i.push(o);else if(l=oe(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}me=E.createDocumentFragment().appendChild(E.createElement("div")),(xe=E.createElement("input")).setAttribute("type","radio"),xe.setAttribute("checked","checked"),xe.setAttribute("name","t"),me.appendChild(xe),y.checkClone=me.cloneNode(!0).cloneNode(!0).lastChild.checked,me.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t<arguments.length;t++)u[t]=arguments[t];if(s.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,s)){a=k.event.handlers.call(this,s,l),t=0;while((i=a[t++])&&!s.isPropagationStopped()){s.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!s.isImmediatePropagationStopped())s.rnamespace&&!1!==o.namespace&&!s.rnamespace.test(o.namespace)||(s.handleObj=o,s.data=o.data,void 0!==(r=((k.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,u))&&!1===(s.result=r)&&(s.preventDefault(),s.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,s),s.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<k(i,this).index(l):k.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(k.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[k.expando]?e:new k.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click",ke),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Q.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},k.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},k.Event=function(e,t){if(!(this instanceof k.Event))return new k.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?ke:Se,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&k.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[k.expando]=!0},k.Event.prototype={constructor:k.Event,isDefaultPrevented:Se,isPropagationStopped:Se,isImmediatePropagationStopped:Se,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=ke,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=ke,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=ke,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},k.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&Te.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Ce.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},k.event.addProp),k.each({focus:"focusin",blur:"focusout"},function(e,t){k.event.special[e]={setup:function(){return De(this,e,Ne),!1},trigger:function(){return De(this,e),!0},delegateType:t}}),k.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){k.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||k.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),k.fn.extend({on:function(e,t,n,r){return Ae(this,e,t,n,r)},one:function(e,t,n,r){return Ae(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,k(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Se),this.each(function(){k.event.remove(this,e,n,t)})}});var je=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/<script|<style|<link/i,Le=/checked\s*(?:[^=]|=\s*.checked.)/i,He=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n<r;n++)k.event.add(t,i,l[i][n]);J.hasData(e)&&(s=J.access(e),u=k.extend({},s),J.set(t,u))}}function Ie(n,r,i,o){r=g.apply([],r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Le.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),Ie(t,r,i,o)});if(f&&(t=(e=we(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=k.map(ve(e,"script"),Pe)).length;c<f;c++)u=e,c!==p&&(u=k.clone(u,!0,!0),s&&k.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,k.map(a,Re),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Q.access(u,"globalEval")&&k.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?k._evalUrl&&!u.noModule&&k._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")}):b(u.textContent.replace(He,""),u,l))}return n}function We(e,t,n){for(var r,i=t?k.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||k.cleanData(ve(r)),r.parentNode&&(n&&oe(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}k.extend({htmlPrefilter:function(e){return e.replace(je,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Me(o[r],a[r]);else Me(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=k.event.special,o=0;void 0!==(n=e[o]);o++)if(G(n)){if(t=n[Q.expando]){if(t.events)for(r in t.events)i[r]?k.event.remove(n,r):k.removeEvent(n,r,t.handle);n[Q.expando]=void 0}n[J.expando]&&(n[J.expando]=void 0)}}}),k.fn.extend({detach:function(e){return We(this,e,!0)},remove:function(e){return We(this,e)},text:function(e){return _(this,function(e){return void 0===e?k.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Ie(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Oe(this,e).appendChild(e)})},prepend:function(){return Ie(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Oe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(k.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return k.clone(this,e,t)})},html:function(e){return _(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!qe.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=k.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(k.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return Ie(this,arguments,function(e){var t=this.parentNode;k.inArray(this,n)<0&&(k.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),k.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){k.fn[e]=function(e){for(var t,n=[],r=k(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),k(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var $e=new RegExp("^("+te+")(?!px)[a-z%]+$","i"),Fe=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Be=new RegExp(re.join("|"),"i");function _e(e,t,n){var r,i,o,a,s=e.style;return(n=n||Fe(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||oe(e)||(a=k.style(e,t)),!y.pixelBoxStyles()&&$e.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function ze(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(u){s.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",u.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",ie.appendChild(s).appendChild(u);var e=C.getComputedStyle(u);n="1%"!==e.top,a=12===t(e.marginLeft),u.style.right="60%",o=36===t(e.right),r=36===t(e.width),u.style.position="absolute",i=12===t(u.offsetWidth/3),ie.removeChild(s),u=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s=E.createElement("div"),u=E.createElement("div");u.style&&(u.style.backgroundClip="content-box",u.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===u.style.backgroundClip,k.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),a},scrollboxSize:function(){return e(),i}}))}();var Ue=["Webkit","Moz","ms"],Xe=E.createElement("div").style,Ve={};function Ge(e){var t=k.cssProps[e]||Ve[e];return t||(e in Xe?e:Ve[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Ue.length;while(n--)if((e=Ue[n]+t)in Xe)return e}(e)||e)}var Ye=/^(none|table(?!-c[ea]).+)/,Qe=/^--/,Je={position:"absolute",visibility:"hidden",display:"block"},Ke={letterSpacing:"0",fontWeight:"400"};function Ze(e,t,n){var r=ne.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function et(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=k.css(e,n+re[a],!0,i)),r?("content"===n&&(u-=k.css(e,"padding"+re[a],!0,i)),"margin"!==n&&(u-=k.css(e,"border"+re[a]+"Width",!0,i))):(u+=k.css(e,"padding"+re[a],!0,i),"padding"!==n?u+=k.css(e,"border"+re[a]+"Width",!0,i):s+=k.css(e,"border"+re[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function tt(e,t,n){var r=Fe(e),i=(!y.boxSizingReliable()||n)&&"border-box"===k.css(e,"boxSizing",!1,r),o=i,a=_e(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if($e.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||"auto"===a||!parseFloat(a)&&"inline"===k.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===k.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+et(e,t,n||(i?"border":"content"),o,r,a)+"px"}function nt(e,t,n,r,i){return new nt.prototype.init(e,t,n,r,i)}k.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=_e(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=V(t),u=Qe.test(t),l=e.style;if(u||(t=Ge(s)),a=k.cssHooks[t]||k.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=ne.exec(n))&&i[1]&&(n=le(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(k.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=V(t);return Qe.test(t)||(t=Ge(s)),(a=k.cssHooks[t]||k.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=_e(e,t,r)),"normal"===i&&t in Ke&&(i=Ke[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),k.each(["height","width"],function(e,u){k.cssHooks[u]={get:function(e,t,n){if(t)return!Ye.test(k.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?tt(e,u,n):ue(e,Je,function(){return tt(e,u,n)})},set:function(e,t,n){var r,i=Fe(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===k.css(e,"boxSizing",!1,i),s=n?et(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-et(e,u,"border",!1,i)-.5)),s&&(r=ne.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=k.css(e,u)),Ze(0,t,s)}}}),k.cssHooks.marginLeft=ze(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(_e(e,"marginLeft"))||e.getBoundingClientRect().left-ue(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),k.each({margin:"",padding:"",border:"Width"},function(i,o){k.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+re[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(k.cssHooks[i+o].set=Ze)}),k.fn.extend({css:function(e,t){return _(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Fe(e),i=t.length;a<i;a++)o[t[a]]=k.css(e,t[a],!1,r);return o}return void 0!==n?k.style(e,t,n):k.css(e,t)},e,t,1<arguments.length)}}),((k.Tween=nt).prototype={constructor:nt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||k.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(k.cssNumber[n]?"":"px")},cur:function(){var e=nt.propHooks[this.prop];return e&&e.get?e.get(this):nt.propHooks._default.get(this)},run:function(e){var t,n=nt.propHooks[this.prop];return this.options.duration?this.pos=t=k.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):nt.propHooks._default.set(this),this}}).init.prototype=nt.prototype,(nt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=k.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){k.fx.step[e.prop]?k.fx.step[e.prop](e):1!==e.elem.nodeType||!k.cssHooks[e.prop]&&null==e.elem.style[Ge(e.prop)]?e.elem[e.prop]=e.now:k.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=nt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},k.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},k.fx=nt.prototype.init,k.fx.step={};var rt,it,ot,at,st=/^(?:toggle|show|hide)$/,ut=/queueHooks$/;function lt(){it&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(lt):C.setTimeout(lt,k.fx.interval),k.fx.tick())}function ct(){return C.setTimeout(function(){rt=void 0}),rt=Date.now()}function ft(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=re[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function pt(e,t,n){for(var r,i=(dt.tweeners[t]||[]).concat(dt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function dt(o,e,t){var n,a,r=0,i=dt.prefilters.length,s=k.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=rt||ct(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:k.extend({},e),opts:k.extend(!0,{specialEasing:{},easing:k.easing._default},t),originalProperties:e,originalOptions:t,startTime:rt||ct(),duration:t.duration,tweens:[],createTween:function(e,t){var n=k.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=V(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=k.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=dt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(k._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return k.map(c,pt,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),k.fx.timer(k.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}k.Animation=k.extend(dt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return le(n.elem,e,ne.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(R);for(var n,r=0,i=e.length;r<i;r++)n=e[r],dt.tweeners[n]=dt.tweeners[n]||[],dt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&se(e),v=Q.get(e,"fxshow");for(r in n.queue||(null==(a=k._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,k.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],st.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||k.style(e,r)}if((u=!k.isEmptyObject(t))||!k.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Q.get(e,"display")),"none"===(c=k.css(e,"display"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=k.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===k.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Q.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&fe([e],!0),p.done(function(){for(r in g||fe([e]),Q.remove(e,"fxshow"),d)k.style(e,r,d[r])})),u=pt(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?dt.prefilters.unshift(e):dt.prefilters.push(e)}}),k.speed=function(e,t,n){var r=e&&"object"==typeof e?k.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return k.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in k.fx.speeds?r.duration=k.fx.speeds[r.duration]:r.duration=k.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&k.dequeue(this,r.queue)},r},k.fn.extend({fadeTo:function(e,t,n,r){return this.filter(se).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=k.isEmptyObject(t),o=k.speed(e,n,r),a=function(){var e=dt(this,k.extend({},t),o);(i||Q.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&!1!==i&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=k.timers,r=Q.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&ut.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||k.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Q.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=k.timers,o=n?n.length:0;for(t.finish=!0,k.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),k.each(["toggle","show","hide"],function(e,r){var i=k.fn[r];k.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(ft(r,!0),e,t,n)}}),k.each({slideDown:ft("show"),slideUp:ft("hide"),slideToggle:ft("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){k.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),k.timers=[],k.fx.tick=function(){var e,t=0,n=k.timers;for(rt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||k.fx.stop(),rt=void 0},k.fx.timer=function(e){k.timers.push(e),k.fx.start()},k.fx.interval=13,k.fx.start=function(){it||(it=!0,lt())},k.fx.stop=function(){it=null},k.fx.speeds={slow:600,fast:200,_default:400},k.fn.delay=function(r,e){return r=k.fx&&k.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},ot=E.createElement("input"),at=E.createElement("select").appendChild(E.createElement("option")),ot.type="checkbox",y.checkOn=""!==ot.value,y.optSelected=at.selected,(ot=E.createElement("input")).value="t",ot.type="radio",y.radioValue="t"===ot.value;var ht,gt=k.expr.attrHandle;k.fn.extend({attr:function(e,t){return _(this,k.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){k.removeAttr(this,e)})}}),k.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?k.prop(e,t,n):(1===o&&k.isXMLDoc(e)||(i=k.attrHooks[t.toLowerCase()]||(k.expr.match.bool.test(t)?ht:void 0)),void 0!==n?null===n?void k.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=k.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(R);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ht={set:function(e,t,n){return!1===t?k.removeAttr(e,n):e.setAttribute(n,n),n}},k.each(k.expr.match.bool.source.match(/\w+/g),function(e,t){var a=gt[t]||k.find.attr;gt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=gt[o],gt[o]=r,r=null!=a(e,t,n)?o:null,gt[o]=i),r}});var vt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;function mt(e){return(e.match(R)||[]).join(" ")}function xt(e){return e.getAttribute&&e.getAttribute("class")||""}function bt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(R)||[]}k.fn.extend({prop:function(e,t){return _(this,k.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[k.propFix[e]||e]})}}),k.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&k.isXMLDoc(e)||(t=k.propFix[t]||t,i=k.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=k.find.attr(e,"tabindex");return t?parseInt(t,10):vt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(k.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),k.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){k.propFix[this.toLowerCase()]=this}),k.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).addClass(t.call(this,e,xt(this)))});if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).removeClass(t.call(this,e,xt(this)))});if(!arguments.length)return this.attr("class","");if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){k(this).toggleClass(i.call(this,e,xt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=k(this),r=bt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=xt(this))&&Q.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Q.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+mt(xt(n))+" ").indexOf(t))return!0;return!1}});var wt=/\r/g;k.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,k(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=k.map(t,function(e){return null==e?"":e+""})),(r=k.valHooks[this.type]||k.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=k.valHooks[t.type]||k.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(wt,""):null==e?"":e:void 0}}),k.extend({valHooks:{option:{get:function(e){var t=k.find.attr(e,"value");return null!=t?t:mt(k.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=k(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=k.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<k.inArray(k.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),k.each(["radio","checkbox"],function(){k.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<k.inArray(k(e).val(),t)}},y.checkOn||(k.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var Tt=/^(?:focusinfocus|focusoutblur)$/,Ct=function(e){e.stopPropagation()};k.extend(k.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!Tt.test(d+k.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[k.expando]?e:new k.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:k.makeArray(t,[e]),c=k.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,Tt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Q.get(o,"events")||{})[e.type]&&Q.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&G(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!G(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),k.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,Ct),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,Ct),k.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=k.extend(new k.Event,n,{type:e,isSimulated:!0});k.event.trigger(r,null,t)}}),k.fn.extend({trigger:function(e,t){return this.each(function(){k.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return k.event.trigger(e,t,n,!0)}}),y.focusin||k.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){k.event.simulate(r,e.target,k.event.fix(e))};k.event.special[r]={setup:function(){var e=this.ownerDocument||this,t=Q.access(e,r);t||e.addEventListener(n,i,!0),Q.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this,t=Q.access(e,r)-1;t?Q.access(e,r,t):(e.removeEventListener(n,i,!0),Q.remove(e,r))}}});var Et=C.location,kt=Date.now(),St=/\?/;k.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||k.error("Invalid XML: "+e),t};var Nt=/\[\]$/,At=/\r?\n/g,Dt=/^(?:submit|button|image|reset|file)$/i,jt=/^(?:input|select|textarea|keygen)/i;function qt(n,e,r,i){var t;if(Array.isArray(e))k.each(e,function(e,t){r||Nt.test(n)?i(n,t):qt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)qt(n+"["+t+"]",e[t],r,i)}k.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!k.isPlainObject(e))k.each(e,function(){i(this.name,this.value)});else for(n in e)qt(n,e[n],t,i);return r.join("&")},k.fn.extend({serialize:function(){return k.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=k.prop(this,"elements");return e?k.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!k(this).is(":disabled")&&jt.test(this.nodeName)&&!Dt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=k(this).val();return null==n?null:Array.isArray(n)?k.map(n,function(e){return{name:t.name,value:e.replace(At,"\r\n")}}):{name:t.name,value:n.replace(At,"\r\n")}}).get()}});var Lt=/%20/g,Ht=/#.*$/,Ot=/([?&])_=[^&]*/,Pt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Rt=/^(?:GET|HEAD)$/,Mt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Ft=E.createElement("a");function Bt(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(R)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function _t(t,i,o,a){var s={},u=t===Wt;function l(e){var r;return s[e]=!0,k.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function zt(e,t){var n,r,i=k.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&k.extend(!0,e,r),e}Ft.href=Et.href,k.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Et.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Et.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":k.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,k.ajaxSettings),t):zt(k.ajaxSettings,e)},ajaxPrefilter:Bt(It),ajaxTransport:Bt(Wt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=k.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?k(y):k.event,x=k.Deferred(),b=k.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Pt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||Et.href)+"").replace(Mt,Et.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(R)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Ft.protocol+"//"+Ft.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=k.param(v.data,v.traditional)),_t(It,v,t,T),h)return T;for(i in(g=k.event&&v.global)&&0==k.active++&&k.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Rt.test(v.type),f=v.url.replace(Ht,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Lt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(St.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Ot,"$1"),o=(St.test(f)?"&":"?")+"_="+kt+++o),v.url=f+o),v.ifModified&&(k.lastModified[f]&&T.setRequestHeader("If-Modified-Since",k.lastModified[f]),k.etag[f]&&T.setRequestHeader("If-None-Match",k.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+$t+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=_t(Wt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(k.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(k.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--k.active||k.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return k.get(e,t,n,"json")},getScript:function(e,t){return k.get(e,void 0,t,"script")}}),k.each(["get","post"],function(e,i){k[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),k.ajax(k.extend({url:e,type:i,dataType:r,data:t,success:n},k.isPlainObject(e)&&e))}}),k._evalUrl=function(e,t){return k.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){k.globalEval(e,t)}})},k.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=k(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){k(this).wrapInner(n.call(this,e))}):this.each(function(){var e=k(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){k(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){k(this).replaceWith(this.childNodes)}),this}}),k.expr.pseudos.hidden=function(e){return!k.expr.pseudos.visible(e)},k.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},k.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Ut={0:200,1223:204},Xt=k.ajaxSettings.xhr();y.cors=!!Xt&&"withCredentials"in Xt,y.ajax=Xt=!!Xt,k.ajaxTransport(function(i){var o,a;if(y.cors||Xt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Ut[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),k.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),k.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return k.globalEval(e),e}}}),k.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),k.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=k("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=mt(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&k.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?k("<div>").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}}),k.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),k.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),k.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||k.guid++,i},k.holdReady=function(e){e?k.readyWait++:k.ready(!0)},k.isArray=Array.isArray,k.parseJSON=JSON.parse,k.nodeName=A,k.isFunction=m,k.isWindow=x,k.camelCase=V,k.type=w,k.now=Date.now,k.isNumeric=function(e){var t=k.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return k});var Qt=C.jQuery,Jt=C.$;return k.noConflict=function(e){return C.$===k&&(C.$=Jt),e&&C.jQuery===k&&(C.jQuery=Qt),k},e||(C.jQuery=C.$=k),k});
diff --git a/lib/less-3.9.0.min.js b/lib/less-3.9.0.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..59944494cb4f93380c75b2e524e7f24806c9082c
--- /dev/null
+++ b/lib/less-3.9.0.min.js
@@ -0,0 +1,18 @@
+/*!
+ * Less - Leaner CSS v3.9.0
+ * http://lesscss.org
+ *
+ * Copyright (c) 2009-2018, Alexis Sellier <self@cloudhead.net>
+ * Licensed under the Apache-2.0 License.
+ *
+ */
+
+ /** * @license Apache-2.0
+ */
+
+!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.less=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b,c){var d=a("./utils").addDataAttr,e=a("./browser");b.exports=function(a,b){d(b,e.currentScript(a)),void 0===b.isFileProtocol&&(b.isFileProtocol=/^(file|(chrome|safari)(-extension)?|resource|qrc|app):/.test(a.location.protocol)),b.async=b.async||!1,b.fileAsync=b.fileAsync||!1,b.poll=b.poll||(b.isFileProtocol?1e3:1500),b.env=b.env||("127.0.0.1"==a.location.hostname||"0.0.0.0"==a.location.hostname||"localhost"==a.location.hostname||a.location.port&&a.location.port.length>0||b.isFileProtocol?"development":"production");var c=/!dumpLineNumbers:(comments|mediaquery|all)/.exec(a.location.hash);c&&(b.dumpLineNumbers=c[1]),void 0===b.useFileCache&&(b.useFileCache=!0),void 0===b.onReady&&(b.onReady=!0),b.relativeUrls&&(b.rewriteUrls="all")}},{"./browser":3,"./utils":11}],2:[function(a,b,c){function d(a){a.filename&&console.warn(a),e.async||h.removeChild(i)}a("promise/polyfill");var e=a("../less/default-options")();if(window.less)for(key in window.less)window.less.hasOwnProperty(key)&&(e[key]=window.less[key]);a("./add-default-options")(window,e),e.plugins=e.plugins||[],window.LESS_PLUGINS&&(e.plugins=e.plugins.concat(window.LESS_PLUGINS));var f=b.exports=a("./index")(window,e);window.less=f;var g,h,i;e.onReady&&(/!watch/.test(window.location.hash)&&f.watch(),e.async||(g="body { display: none !important }",h=document.head||document.getElementsByTagName("head")[0],i=document.createElement("style"),i.type="text/css",i.styleSheet?i.styleSheet.cssText=g:i.appendChild(document.createTextNode(g)),h.appendChild(i)),f.registerStylesheetsImmediately(),f.pageLoadFinished=f.refresh("development"===f.env).then(d,d))},{"../less/default-options":17,"./add-default-options":1,"./index":8,"promise/polyfill":104}],3:[function(a,b,c){var d=a("./utils");b.exports={createCSS:function(a,b,c){var e=c.href||"",f="less:"+(c.title||d.extractId(e)),g=a.getElementById(f),h=!1,i=a.createElement("style");i.setAttribute("type","text/css"),c.media&&i.setAttribute("media",c.media),i.id=f,i.styleSheet||(i.appendChild(a.createTextNode(b)),h=null!==g&&g.childNodes.length>0&&i.childNodes.length>0&&g.firstChild.nodeValue===i.firstChild.nodeValue);var j=a.getElementsByTagName("head")[0];if(null===g||h===!1){var k=c&&c.nextSibling||null;k?k.parentNode.insertBefore(i,k):j.appendChild(i)}if(g&&h===!1&&g.parentNode.removeChild(g),i.styleSheet)try{i.styleSheet.cssText=b}catch(l){throw new Error("Couldn't reassign styleSheet.cssText.")}},currentScript:function(a){var b=a.document;return b.currentScript||function(){var a=b.getElementsByTagName("script");return a[a.length-1]}()}}},{"./utils":11}],4:[function(a,b,c){b.exports=function(a,b,c){var d=null;if("development"!==b.env)try{d="undefined"==typeof a.localStorage?null:a.localStorage}catch(e){}return{setCSS:function(a,b,e,f){if(d){c.info("saving "+a+" to cache.");try{d.setItem(a,f),d.setItem(a+":timestamp",b),e&&d.setItem(a+":vars",JSON.stringify(e))}catch(g){c.error('failed to save "'+a+'" to local storage for caching.')}}},getCSS:function(a,b,c){var e=d&&d.getItem(a),f=d&&d.getItem(a+":timestamp"),g=d&&d.getItem(a+":vars");if(c=c||{},g=g||"{}",f&&b.lastModified&&new Date(b.lastModified).valueOf()===new Date(f).valueOf()&&JSON.stringify(c)===g)return e}}}},{}],5:[function(a,b,c){var d=a("./utils"),e=a("./browser");b.exports=function(a,b,c){function f(b,f){var g,h,i="less-error-message:"+d.extractId(f||""),j='<li><label>{line}</label><pre class="{class}">{content}</pre></li>',k=a.document.createElement("div"),l=[],m=b.filename||f,n=m.match(/([^\/]+(\?.*)?)$/)[1];k.id=i,k.className="less-error-message",h="<h3>"+(b.type||"Syntax")+"Error: "+(b.message||"There is an error in your .less file")+'</h3><p>in <a href="'+m+'">'+n+"</a> ";var o=function(a,b,c){void 0!==a.extract[b]&&l.push(j.replace(/\{line\}/,(parseInt(a.line,10)||0)+(b-1)).replace(/\{class\}/,c).replace(/\{content\}/,a.extract[b]))};b.line&&(o(b,0,""),o(b,1,"line"),o(b,2,""),h+="on line "+b.line+", column "+(b.column+1)+":</p><ul>"+l.join("")+"</ul>"),b.stack&&(b.extract||c.logLevel>=4)&&(h+="<br/>Stack Trace</br />"+b.stack.split("\n").slice(1).join("<br/>")),k.innerHTML=h,e.createCSS(a.document,[".less-error-message ul, .less-error-message li {","list-style-type: none;","margin-right: 15px;","padding: 4px 0;","margin: 0;","}",".less-error-message label {","font-size: 12px;","margin-right: 15px;","padding: 4px 0;","color: #cc7777;","}",".less-error-message pre {","color: #dd6666;","padding: 4px 0;","margin: 0;","display: inline-block;","}",".less-error-message pre.line {","color: #ff0000;","}",".less-error-message h3 {","font-size: 20px;","font-weight: bold;","padding: 15px 0 5px 0;","margin: 0;","}",".less-error-message a {","color: #10a","}",".less-error-message .error {","color: red;","font-weight: bold;","padding-bottom: 2px;","border-bottom: 1px dashed red;","}"].join("\n"),{title:"error-message"}),k.style.cssText=["font-family: Arial, sans-serif","border: 1px solid #e00","background-color: #eee","border-radius: 5px","-webkit-border-radius: 5px","-moz-border-radius: 5px","color: #e00","padding: 15px","margin-bottom: 15px"].join(";"),"development"===c.env&&(g=setInterval(function(){var b=a.document,c=b.body;c&&(b.getElementById(i)?c.replaceChild(k,b.getElementById(i)):c.insertBefore(k,c.firstChild),clearInterval(g))},10))}function g(b){var c=a.document.getElementById("less-error-message:"+d.extractId(b));c&&c.parentNode.removeChild(c)}function h(a){}function i(a){c.errorReporting&&"html"!==c.errorReporting?"console"===c.errorReporting?h(a):"function"==typeof c.errorReporting&&c.errorReporting("remove",a):g(a)}function j(a,d){var e="{line} {content}",f=a.filename||d,g=[],h=(a.type||"Syntax")+"Error: "+(a.message||"There is an error in your .less file")+" in "+f,i=function(a,b,c){void 0!==a.extract[b]&&g.push(e.replace(/\{line\}/,(parseInt(a.line,10)||0)+(b-1)).replace(/\{class\}/,c).replace(/\{content\}/,a.extract[b]))};a.line&&(i(a,0,""),i(a,1,"line"),i(a,2,""),h+=" on line "+a.line+", column "+(a.column+1)+":\n"+g.join("\n")),a.stack&&(a.extract||c.logLevel>=4)&&(h+="\nStack Trace\n"+a.stack),b.logger.error(h)}function k(a,b){c.errorReporting&&"html"!==c.errorReporting?"console"===c.errorReporting?j(a,b):"function"==typeof c.errorReporting&&c.errorReporting("add",a,b):f(a,b)}return{add:k,remove:i}}},{"./browser":3,"./utils":11}],6:[function(a,b,c){b.exports=function(b,c){var d=a("../less/environment/abstract-file-manager.js"),e={},f=function(){};return f.prototype=new d,f.prototype.alwaysMakePathsAbsolute=function(){return!0},f.prototype.join=function(a,b){return a?this.extractUrlParts(b,a).path:b},f.prototype.doXHR=function(a,d,e,f){function g(b,c,d){b.status>=200&&b.status<300?c(b.responseText,b.getResponseHeader("Last-Modified")):"function"==typeof d&&d(b.status,a)}var h=new XMLHttpRequest,i=!b.isFileProtocol||b.fileAsync;"function"==typeof h.overrideMimeType&&h.overrideMimeType("text/css"),c.debug("XHR: Getting '"+a+"'"),h.open("GET",a,i),h.setRequestHeader("Accept",d||"text/x-less, text/css; q=0.9, */*; q=0.5"),h.send(null),b.isFileProtocol&&!b.fileAsync?0===h.status||h.status>=200&&h.status<300?e(h.responseText):f(h.status,a):i?h.onreadystatechange=function(){4==h.readyState&&g(h,e,f)}:g(h,e,f)},f.prototype.supports=function(a,b,c,d){return!0},f.prototype.clearFileCache=function(){e={}},f.prototype.loadFile=function(a,b,c,d){b&&!this.isPathAbsolute(a)&&(a=b+a),a=c.ext?this.tryAppendExtension(a,c.ext):a,c=c||{};var f=this.extractUrlParts(a,window.location.href),g=f.url,h=this;return new Promise(function(a,b){if(c.useFileCache&&e[g])try{var d=e[g];return a({contents:d,filename:g,webInfo:{lastModified:new Date}})}catch(f){return b({filename:g,message:"Error loading file "+g+" error was "+f.message})}h.doXHR(g,c.mime,function(b,c){e[g]=b,a({contents:b,filename:g,webInfo:{lastModified:c}})},function(a,c){b({type:"File",message:"'"+c+"' wasn't found ("+a+")",href:g})})})},f}},{"../less/environment/abstract-file-manager.js":18}],7:[function(a,b,c){b.exports=function(){function b(){throw{type:"Runtime",message:"Image size functions are not supported in browser version of less"}}var c=a("./../less/functions/function-registry"),d={"image-size":function(a){return b(this,a),-1},"image-width":function(a){return b(this,a),-1},"image-height":function(a){return b(this,a),-1}};c.addMultiple(d)}},{"./../less/functions/function-registry":27}],8:[function(a,b,c){var d=a("./utils").addDataAttr,e=a("./browser");b.exports=function(b,c){function f(a){var b={};for(var c in a)a.hasOwnProperty(c)&&(b[c]=a[c]);return b}function g(a,b){var c=Array.prototype.slice.call(arguments,2);return function(){var d=c.concat(Array.prototype.slice.call(arguments,0));return a.apply(b,d)}}function h(a){for(var b,d=l.getElementsByTagName("style"),e=0;e<d.length;e++)if(b=d[e],b.type.match(s)){var h=f(c);h.modifyVars=a;var i=b.innerHTML||"";h.filename=l.location.href.replace(/#.*$/,""),m.render(i,h,g(function(a,b,c){b?q.add(b,"inline"):(a.type="text/css",a.styleSheet?a.styleSheet.cssText=c.css:a.innerHTML=c.css)},null,b))}}function i(a,b,e,g,h){function i(c){var d=c.contents,f=c.filename,h=c.webInfo,i={currentDirectory:p.getPath(f),filename:f,rootFilename:f,rewriteUrls:j.rewriteUrls};if(i.entryPath=i.currentDirectory,i.rootpath=j.rootpath||i.currentDirectory,h){h.remaining=g;var k=r.getCSS(f,h,j.modifyVars);if(!e&&k)return h.local=!0,void b(null,k,d,a,h,f)}q.remove(f),j.rootFileInfo=i,m.render(d,j,function(c,e){c?(c.href=f,b(c)):(r.setCSS(a.href,h.lastModified,j.modifyVars,e.css),b(null,e.css,d,a,h,f))})}var j=f(c);d(j,a),j.mime=a.type,h&&(j.modifyVars=h),p.loadFile(a.href,null,j,n).then(function(a){i(a)})["catch"](function(a){console.log(a),b(a)})}function j(a,b,c){for(var d=0;d<m.sheets.length;d++)i(m.sheets[d],a,b,m.sheets.length-(d+1),c)}function k(){"development"===m.env&&(m.watchTimer=setInterval(function(){m.watchMode&&(p.clearFileCache(),j(function(a,c,d,f,g){a?q.add(a,a.href||f.href):c&&e.createCSS(b.document,c,f)}))},c.poll))}var l=b.document,m=a("../less")();m.options=c;var n=m.environment,o=a("./file-manager")(c,m.logger),p=new o;n.addFileManager(p),m.FileManager=o,m.PluginLoader=a("./plugin-loader"),a("./log-listener")(m,c);var q=a("./error-reporting")(b,m,c),r=m.cache=c.cache||a("./cache")(b,c,m.logger);a("./image-size")(m.environment),c.functions&&m.functions.functionRegistry.addMultiple(c.functions);var s=/^text\/(x-)?less$/;return m.watch=function(){return m.watchMode||(m.env="development",k()),this.watchMode=!0,!0},m.unwatch=function(){return clearInterval(m.watchTimer),this.watchMode=!1,!1},m.registerStylesheetsImmediately=function(){var a=l.getElementsByTagName("link");m.sheets=[];for(var b=0;b<a.length;b++)("stylesheet/less"===a[b].rel||a[b].rel.match(/stylesheet/)&&a[b].type.match(s))&&m.sheets.push(a[b])},m.registerStylesheets=function(){return new Promise(function(a,b){m.registerStylesheetsImmediately(),a()})},m.modifyVars=function(a){return m.refresh(!0,a,!1)},m.refresh=function(a,c,d){return(a||d)&&d!==!1&&p.clearFileCache(),new Promise(function(d,f){var g,i,k,l;g=i=new Date,l=m.sheets.length,0===l?(i=new Date,k=i-g,m.logger.info("Less has finished and no sheets were loaded."),d({startTime:g,endTime:i,totalMilliseconds:k,sheets:m.sheets.length})):j(function(a,c,h,j,n){return a?(q.add(a,a.href||j.href),void f(a)):(m.logger.info(n.local?"Loading "+j.href+" from cache.":"Rendered "+j.href+" successfully."),e.createCSS(b.document,c,j),m.logger.info("CSS for "+j.href+" generated in "+(new Date-i)+"ms"),l--,0===l&&(k=new Date-g,m.logger.info("Less has finished. CSS generated in "+k+"ms"),d({startTime:g,endTime:i,totalMilliseconds:k,sheets:m.sheets.length})),void(i=new Date))},a,c),h(c)})},m.refreshStyles=h,m}},{"../less":37,"./browser":3,"./cache":4,"./error-reporting":5,"./file-manager":6,"./image-size":7,"./log-listener":9,"./plugin-loader":10,"./utils":11}],9:[function(a,b,c){b.exports=function(a,b){var c=4,d=3,e=2,f=1;b.logLevel="undefined"!=typeof b.logLevel?b.logLevel:"development"===b.env?d:f,b.loggers||(b.loggers=[{debug:function(a){b.logLevel>=c&&console.log(a)},info:function(a){b.logLevel>=d&&console.log(a)},warn:function(a){b.logLevel>=e&&console.warn(a)},error:function(a){b.logLevel>=f&&console.error(a)}}]);for(var g=0;g<b.loggers.length;g++)a.logger.addListener(b.loggers[g])}},{}],10:[function(a,b,c){var d=a("../less/environment/abstract-plugin-loader.js"),e=function(a){this.less=a};e.prototype=new d,e.prototype.loadPlugin=function(a,b,c,d,e){return new Promise(function(f,g){e.loadFile(a,b,c,d).then(f)["catch"](g)})},b.exports=e},{"../less/environment/abstract-plugin-loader.js":19}],11:[function(a,b,c){b.exports={extractId:function(a){return a.replace(/^[a-z-]+:\/+?[^\/]+/,"").replace(/[\?\&]livereload=\w+/,"").replace(/^\//,"").replace(/\.[a-zA-Z]+$/,"").replace(/[^\.\w-]+/g,"-").replace(/\./g,":")},addDataAttr:function(a,b){for(var c in b.dataset)if(b.dataset.hasOwnProperty(c))if("env"===c||"dumpLineNumbers"===c||"rootpath"===c||"errorReporting"===c)a[c]=b.dataset[c];else try{a[c]=JSON.parse(b.dataset[c])}catch(d){}}}},{}],12:[function(a,b,c){b.exports={Math:{ALWAYS:0,PARENS_DIVISION:1,PARENS:2,STRICT_LEGACY:3},RewriteUrls:{OFF:0,LOCAL:1,ALL:2}}},{}],13:[function(a,b,c){function d(a){return!/^(?:[a-z-]+:|\/|#)/i.test(a)}function e(a){return"."===a.charAt(0)}var f={};b.exports=f;var g=a("./constants"),h=function(a,b,c){if(a)for(var d=0;d<c.length;d++)a.hasOwnProperty(c[d])&&(b[c[d]]=a[c[d]])},i=["paths","rewriteUrls","rootpath","strictImports","insecure","dumpLineNumbers","compress","syncImport","chunkInput","mime","useFileCache","processImports","pluginManager"];f.Parse=function(a){h(a,this,i),"string"==typeof this.paths&&(this.paths=[this.paths])};var j=["paths","compress","ieCompat","math","strictUnits","sourceMap","importMultiple","urlArgs","javascriptEnabled","pluginManager","importantScope","rewriteUrls"];f.Eval=function(a,b){h(a,this,j),"string"==typeof this.paths&&(this.paths=[this.paths]),this.frames=b||[],this.importantScope=this.importantScope||[]},f.Eval.prototype.enterCalc=function(){this.calcStack||(this.calcStack=[]),this.calcStack.push(!0),this.inCalc=!0},f.Eval.prototype.exitCalc=function(){this.calcStack.pop(),this.calcStack||(this.inCalc=!1)},f.Eval.prototype.inParenthesis=function(){this.parensStack||(this.parensStack=[]),this.parensStack.push(!0)},f.Eval.prototype.outOfParenthesis=function(){this.parensStack.pop()},f.Eval.prototype.inCalc=!1,f.Eval.prototype.mathOn=!0,f.Eval.prototype.isMathOn=function(a){return!!this.mathOn&&(!!("/"!==a||this.math===g.Math.ALWAYS||this.parensStack&&this.parensStack.length)&&(!(this.math>g.Math.PARENS_DIVISION)||this.parensStack&&this.parensStack.length))},f.Eval.prototype.pathRequiresRewrite=function(a){var b=this.rewriteUrls===g.RewriteUrls.LOCAL?e:d;return b(a)},f.Eval.prototype.rewritePath=function(a,b){var c;return b=b||"",c=this.normalizePath(b+a),e(a)&&d(b)&&e(c)===!1&&(c="./"+c),c},f.Eval.prototype.normalizePath=function(a){var b,c=a.split("/").reverse();for(a=[];0!==c.length;)switch(b=c.pop()){case".":break;case"..":0===a.length||".."===a[a.length-1]?a.push(b):a.pop();break;default:a.push(b)}return a.join("/")}},{"./constants":12}],14:[function(a,b,c){b.exports={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgrey:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",grey:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgrey:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"}},{}],15:[function(a,b,c){b.exports={colors:a("./colors"),unitConversions:a("./unit-conversions")}},{"./colors":14,"./unit-conversions":16}],16:[function(a,b,c){b.exports={length:{m:1,cm:.01,mm:.001,"in":.0254,px:.0254/96,pt:.0254/72,pc:.0254/72*12},duration:{s:1,ms:.001},angle:{rad:1/(2*Math.PI),deg:1/360,grad:.0025,turn:1}}},{}],17:[function(a,b,c){b.exports=function(){return{javascriptEnabled:!1,depends:!1,compress:!1,lint:!1,paths:[],color:!0,strictImports:!1,insecure:!1,rootpath:"",rewriteUrls:!1,ieCompat:!1,math:0,strictUnits:!1,globalVars:null,modifyVars:null,urlArgs:""}}},{}],18:[function(a,b,c){var d=function(){};d.prototype.getPath=function(a){var b=a.lastIndexOf("?");return b>0&&(a=a.slice(0,b)),b=a.lastIndexOf("/"),b<0&&(b=a.lastIndexOf("\\")),b<0?"":a.slice(0,b+1)},d.prototype.tryAppendExtension=function(a,b){return/(\.[a-z]*$)|([\?;].*)$/.test(a)?a:a+b},d.prototype.tryAppendLessExtension=function(a){return this.tryAppendExtension(a,".less")},d.prototype.supportsSync=function(){return!1},d.prototype.alwaysMakePathsAbsolute=function(){return!1},d.prototype.isPathAbsolute=function(a){return/^(?:[a-z-]+:|\/|\\|#)/i.test(a)},d.prototype.join=function(a,b){return a?a+b:b},d.prototype.pathDiff=function(a,b){var c,d,e,f,g=this.extractUrlParts(a),h=this.extractUrlParts(b),i="";if(g.hostPart!==h.hostPart)return"";for(d=Math.max(h.directories.length,g.directories.length),c=0;c<d&&h.directories[c]===g.directories[c];c++);for(f=h.directories.slice(c),e=g.directories.slice(c),c=0;c<f.length-1;c++)i+="../";for(c=0;c<e.length-1;c++)i+=e[c]+"/";return i},d.prototype.extractUrlParts=function(a,b){var c,d,e=/^((?:[a-z-]+:)?\/{2}(?:[^\/\?#]*\/)|([\/\\]))?((?:[^\/\\\?#]*[\/\\])*)([^\/\\\?#]*)([#\?].*)?$/i,f=a.match(e),g={},h=[],i=[];if(!f)throw new Error("Could not parse sheet href - '"+a+"'");if(b&&(!f[1]||f[2])){if(d=b.match(e),!d)throw new Error("Could not parse page url - '"+b+"'");f[1]=f[1]||d[1]||"",f[2]||(f[3]=d[3]+f[3])}if(f[3])for(h=f[3].replace(/\\/g,"/").split("/"),c=0;c<h.length;c++)".."===h[c]?i.pop():"."!==h[c]&&i.push(h[c]);return g.hostPart=f[1],g.directories=i,g.rawPath=(f[1]||"")+h.join("/"),g.path=(f[1]||"")+i.join("/"),g.filename=f[4],g.fileUrl=g.path+(f[4]||""),g.url=g.fileUrl+(f[5]||""),g},b.exports=d},{}],19:[function(a,b,c){var d=a("../functions/function-registry"),e=a("../less-error"),f=function(){this.require=function(){return null}};f.prototype.evalPlugin=function(a,b,c,f,g){var h,i,j,k,l,m,n;l=b.pluginManager,g&&(m="string"==typeof g?g:g.filename);var o=(new this.less.FileManager).extractUrlParts(m).filename;if(m&&(j=l.get(m))){if(n=this.trySetOptions(j,m,o,f))return n;try{j.use&&j.use.call(this.context,j)}catch(p){return p.message=p.message||"Error during @plugin call",new e(p,c,m)}return j}k={exports:{},pluginManager:l,fileInfo:g},i=d.create();var q=function(a){j=a};try{h=new Function("module","require","registerPlugin","functions","tree","less","fileInfo",a),h(k,this.require(m),q,i,this.less.tree,this.less,g)}catch(p){return new e(p,c,m)}if(j||(j=k.exports),j=this.validatePlugin(j,m,o),j instanceof e)return j;if(!j)return new e({message:"Not a valid plugin"},c,m);if(j.imports=c,j.filename=m,(!j.minVersion||this.compareVersion("3.0.0",j.minVersion)<0)&&(n=this.trySetOptions(j,m,o,f)))return n;if(l.addPlugin(j,g.filename,i),j.functions=i.getLocalFunctions(),n=this.trySetOptions(j,m,o,f))return n;try{j.use&&j.use.call(this.context,j)}catch(p){return p.message=p.message||"Error during @plugin call",new e(p,c,m)}return j},f.prototype.trySetOptions=function(a,b,c,d){if(d&&!a.setOptions)return new e({message:"Options have been provided but the plugin "+c+" does not support any options."});try{a.setOptions&&a.setOptions(d)}catch(f){return new e(f)}},f.prototype.validatePlugin=function(a,b,c){return a?("function"==typeof a&&(a=new a),a.minVersion&&this.compareVersion(a.minVersion,this.less.version)<0?new e({message:"Plugin "+c+" requires version "+this.versionToString(a.minVersion)}):a):null},f.prototype.compareVersion=function(a,b){"string"==typeof a&&(a=a.match(/^(\d+)\.?(\d+)?\.?(\d+)?/),a.shift());for(var c=0;c<a.length;c++)if(a[c]!==b[c])return parseInt(a[c])>parseInt(b[c])?-1:1;return 0},f.prototype.versionToString=function(a){for(var b="",c=0;c<a.length;c++)b+=(b?".":"")+a[c];return b},f.prototype.printUsage=function(a){for(var b=0;b<a.length;b++){var c=a[b];c.printUsage&&c.printUsage()}},b.exports=f},{"../functions/function-registry":27,"../less-error":38}],20:[function(a,b,c){var d=a("../logger"),e=function(a,b){this.fileManagers=b||[],a=a||{};for(var c=["encodeBase64","mimeLookup","charsetLookup","getSourceMapGenerator"],d=[],e=d.concat(c),f=0;f<e.length;f++){var g=e[f],h=a[g];h?this[g]=h.bind(a):f<d.length&&this.warn("missing required function in environment - "+g)}};e.prototype.getFileManager=function(a,b,c,e,f){a||d.warn("getFileManager called with no filename.. Please report this issue. continuing."),null==b&&d.warn("getFileManager called with null directory.. Please report this issue. continuing.");var g=this.fileManagers;c.pluginManager&&(g=[].concat(g).concat(c.pluginManager.getFileManagers()));for(var h=g.length-1;h>=0;h--){var i=g[h];if(i[f?"supportsSync":"supports"](a,b,c,e))return i}return null},e.prototype.addFileManager=function(a){this.fileManagers.push(a)},e.prototype.clearFileManagers=function(){this.fileManagers=[]},b.exports=e},{"../logger":39}],21:[function(a,b,c){var d=a("./function-registry"),e=a("../tree/anonymous"),f=a("../tree/keyword");d.addMultiple({"boolean":function(a){return a?f.True:f.False},"if":function(a,b,c){return a?b:c||new e}})},{"../tree/anonymous":50,"../tree/keyword":70,"./function-registry":27}],22:[function(a,b,c){function d(a,b,c){var d,f,g,h,i=b.alpha,j=c.alpha,k=[];g=j+i*(1-j);for(var l=0;l<3;l++)d=b.rgb[l]/255,f=c.rgb[l]/255,h=a(d,f),g&&(h=(j*f+i*(d-j*(d+f-h)))/g),k[l]=255*h;return new e(k,g)}var e=a("../tree/color"),f=a("./function-registry"),g={multiply:function(a,b){return a*b},screen:function(a,b){return a+b-a*b},overlay:function(a,b){return a*=2,a<=1?g.multiply(a,b):g.screen(a-1,b)},softlight:function(a,b){var c=1,d=a;return b>.5&&(d=1,c=a>.25?Math.sqrt(a):((16*a-12)*a+4)*a),a-(1-2*b)*d*(c-a)},hardlight:function(a,b){return g.overlay(b,a)},difference:function(a,b){return Math.abs(a-b)},exclusion:function(a,b){return a+b-2*a*b},average:function(a,b){return(a+b)/2},negation:function(a,b){return 1-Math.abs(a+b-1)}};for(var h in g)g.hasOwnProperty(h)&&(d[h]=d.bind(null,g[h]));f.addMultiple(d)},{"../tree/color":55,"./function-registry":27}],23:[function(a,b,c){function d(a){return Math.min(1,Math.max(0,a))}function e(a,b){var c=h.hsla(b.h,b.s,b.l,b.a);if(c)return c.value=a.value&&/^(rgb|hsl)/.test(a.value)?a.value:"rgb",c}function f(a){if(a instanceof i)return parseFloat(a.unit.is("%")?a.value/100:a.value);if("number"==typeof a)return a;throw{type:"Argument",message:"color functions take numbers as parameters"}}function g(a,b){return a instanceof i&&a.unit.is("%")?parseFloat(a.value*b/100):f(a)}var h,i=a("../tree/dimension"),j=a("../tree/color"),k=a("../tree/quoted"),l=a("../tree/anonymous"),m=a("./function-registry");h={rgb:function(a,b,c){var d=h.rgba(a,b,c,1);if(d)return d.value="rgb",d},rgba:function(a,b,c,d){try{if(a instanceof j)return d=b?f(b):a.alpha,new j(a.rgb,d,"rgba");var e=[a,b,c].map(function(a){return g(a,255)});return d=f(d),new j(e,d,"rgba")}catch(h){}},hsl:function(a,b,c){var d=h.hsla(a,b,c,1);if(d)return d.value="hsl",d},hsla:function(a,b,c,e){function g(a){return a=a<0?a+1:a>1?a-1:a,6*a<1?h+(i-h)*a*6:2*a<1?i:3*a<2?h+(i-h)*(2/3-a)*6:h}try{if(a instanceof j)return e=b?f(b):a.alpha,new j(a.rgb,e,"hsla");var h,i;a=f(a)%360/360,b=d(f(b)),c=d(f(c)),e=d(f(e)),i=c<=.5?c*(b+1):c+b-c*b,h=2*c-i;var k=[255*g(a+1/3),255*g(a),255*g(a-1/3)];return e=f(e),new j(k,e,"hsla")}catch(l){}},hsv:function(a,b,c){return h.hsva(a,b,c,1)},hsva:function(a,b,c,d){a=f(a)%360/360*360,b=f(b),c=f(c),d=f(d);var e,g;e=Math.floor(a/60%6),g=a/60-e;var i=[c,c*(1-b),c*(1-g*b),c*(1-(1-g)*b)],j=[[0,3,1],[2,0,1],[1,0,3],[1,2,0],[3,1,0],[0,1,2]];return h.rgba(255*i[j[e][0]],255*i[j[e][1]],255*i[j[e][2]],d)},hue:function(a){return new i(a.toHSL().h)},saturation:function(a){return new i(100*a.toHSL().s,"%")},lightness:function(a){return new i(100*a.toHSL().l,"%")},hsvhue:function(a){return new i(a.toHSV().h)},hsvsaturation:function(a){return new i(100*a.toHSV().s,"%")},hsvvalue:function(a){return new i(100*a.toHSV().v,"%")},red:function(a){return new i(a.rgb[0])},green:function(a){return new i(a.rgb[1])},blue:function(a){return new i(a.rgb[2])},alpha:function(a){return new i(a.toHSL().a)},luma:function(a){return new i(a.luma()*a.alpha*100,"%")},luminance:function(a){var b=.2126*a.rgb[0]/255+.7152*a.rgb[1]/255+.0722*a.rgb[2]/255;return new i(b*a.alpha*100,"%")},saturate:function(a,b,c){if(!a.rgb)return null;var f=a.toHSL();return f.s+="undefined"!=typeof c&&"relative"===c.value?f.s*b.value/100:b.value/100,f.s=d(f.s),e(a,f)},desaturate:function(a,b,c){var f=a.toHSL();return f.s-="undefined"!=typeof c&&"relative"===c.value?f.s*b.value/100:b.value/100,f.s=d(f.s),e(a,f)},lighten:function(a,b,c){var f=a.toHSL();return f.l+="undefined"!=typeof c&&"relative"===c.value?f.l*b.value/100:b.value/100,f.l=d(f.l),e(a,f)},darken:function(a,b,c){var f=a.toHSL();return f.l-="undefined"!=typeof c&&"relative"===c.value?f.l*b.value/100:b.value/100,f.l=d(f.l),e(a,f)},fadein:function(a,b,c){var f=a.toHSL();return f.a+="undefined"!=typeof c&&"relative"===c.value?f.a*b.value/100:b.value/100,f.a=d(f.a),e(a,f)},fadeout:function(a,b,c){var f=a.toHSL();return f.a-="undefined"!=typeof c&&"relative"===c.value?f.a*b.value/100:b.value/100,f.a=d(f.a),e(a,f)},fade:function(a,b){var c=a.toHSL();return c.a=b.value/100,c.a=d(c.a),e(a,c)},spin:function(a,b){var c=a.toHSL(),d=(c.h+b.value)%360;return c.h=d<0?360+d:d,e(a,c)},mix:function(a,b,c){a.toHSL&&b.toHSL||(console.log(b.type),console.dir(b)),c||(c=new i(50));var d=c.value/100,e=2*d-1,f=a.toHSL().a-b.toHSL().a,g=((e*f==-1?e:(e+f)/(1+e*f))+1)/2,h=1-g,k=[a.rgb[0]*g+b.rgb[0]*h,a.rgb[1]*g+b.rgb[1]*h,a.rgb[2]*g+b.rgb[2]*h],l=a.alpha*d+b.alpha*(1-d);return new j(k,l)},greyscale:function(a){return h.desaturate(a,new i(100))},contrast:function(a,b,c,d){if(!a.rgb)return null;if("undefined"==typeof c&&(c=h.rgba(255,255,255,1)),"undefined"==typeof b&&(b=h.rgba(0,0,0,1)),b.luma()>c.luma()){var e=c;c=b,b=e}return d="undefined"==typeof d?.43:f(d),a.luma()<d?c:b},argb:function(a){return new l(a.toARGB())},color:function(a){if(a instanceof k&&/^#([A-Fa-f0-9]{8}|[A-Fa-f0-9]{6}|[A-Fa-f0-9]{3,4})$/i.test(a.value)){var b=a.value.slice(1);return new j(b,(void 0),"#"+b)}if(a instanceof j||(a=j.fromKeyword(a.value)))return a.value=void 0,a;throw{type:"Argument",message:"argument must be a color keyword or 3|4|6|8 digit hex e.g. #FFF"}},tint:function(a,b){return h.mix(h.rgb(255,255,255),a,b)},shade:function(a,b){return h.mix(h.rgb(0,0,0),a,b)}},m.addMultiple(h)},{"../tree/anonymous":50,"../tree/color":55,"../tree/dimension":62,"../tree/quoted":80,"./function-registry":27}],24:[function(a,b,c){b.exports=function(b){var c=a("../tree/quoted"),d=a("../tree/url"),e=a("../utils"),f=a("./function-registry"),g=function(a,b){return new d(b,a.index,a.currentFileInfo).eval(a.context)},h=a("../logger");f.add("data-uri",function(a,f){f||(f=a,a=null);var i=a&&a.value,j=f.value,k=this.currentFileInfo,l=k.rewriteUrls?k.currentDirectory:k.entryPath,m=j.indexOf("#"),n="";m!==-1&&(n=j.slice(m),j=j.slice(0,m));var o=e.clone(this.context);o.rawBuffer=!0;var p=b.getFileManager(j,l,o,b,!0);if(!p)return g(this,f);var q=!1;if(a)q=/;base64$/.test(i);else{if(i=b.mimeLookup(j),"image/svg+xml"===i)q=!1;else{var r=b.charsetLookup(i);q=["US-ASCII","UTF-8"].indexOf(r)<0}q&&(i+=";base64")}var s=p.loadFileSync(j,l,o,b);if(!s.contents)return h.warn("Skipped data-uri embedding of "+j+" because file not found"),g(this,f||a);var t=s.contents;if(q&&!b.encodeBase64)return g(this,f);t=q?b.encodeBase64(t):encodeURIComponent(t);var u="data:"+i+","+t+n,v=32768;return u.length>=v&&this.context.ieCompat!==!1?(h.warn("Skipped data-uri embedding of "+j+" because its size ("+u.length+" characters) exceeds IE8-safe "+v+" characters!"),g(this,f||a)):new d(new c('"'+u+'"',u,(!1),this.index,this.currentFileInfo),this.index,this.currentFileInfo)})}},{"../logger":39,"../tree/quoted":80,"../tree/url":85,"../utils":89,"./function-registry":27}],25:[function(a,b,c){var d=a("../tree/keyword"),e=a("./function-registry"),f={eval:function(){var a=this.value_,b=this.error_;if(b)throw b;if(null!=a)return a?d.True:d.False},value:function(a){this.value_=a},error:function(a){this.error_=a},reset:function(){this.value_=this.error_=null}};e.add("default",f.eval.bind(f)),b.exports=f},{"../tree/keyword":70,"./function-registry":27}],26:[function(a,b,c){var d=a("../tree/expression"),e=function(a,b,c,d){this.name=a.toLowerCase(),this.index=c,this.context=b,this.currentFileInfo=d,this.func=b.frames[0].functionRegistry.get(this.name)};e.prototype.isValid=function(){return Boolean(this.func)},e.prototype.call=function(a){return Array.isArray(a)&&(a=a.filter(function(a){return"Comment"!==a.type}).map(function(a){if("Expression"===a.type){
+var b=a.value.filter(function(a){return"Comment"!==a.type});return 1===b.length?b[0]:new d(b)}return a})),this.func.apply(this,a)},b.exports=e},{"../tree/expression":64}],27:[function(a,b,c){function d(a){return{_data:{},add:function(a,b){a=a.toLowerCase(),this._data.hasOwnProperty(a),this._data[a]=b},addMultiple:function(a){Object.keys(a).forEach(function(b){this.add(b,a[b])}.bind(this))},get:function(b){return this._data[b]||a&&a.get(b)},getLocalFunctions:function(){return this._data},inherit:function(){return d(this)},create:function(a){return d(a)}}}b.exports=d(null)},{}],28:[function(a,b,c){b.exports=function(b){var c={functionRegistry:a("./function-registry"),functionCaller:a("./function-caller")};return a("./boolean"),a("./default"),a("./color"),a("./color-blending"),a("./data-uri")(b),a("./list"),a("./math"),a("./number"),a("./string"),a("./svg")(b),a("./types"),c}},{"./boolean":21,"./color":23,"./color-blending":22,"./data-uri":24,"./default":25,"./function-caller":26,"./function-registry":27,"./list":29,"./math":31,"./number":32,"./string":33,"./svg":34,"./types":35}],29:[function(a,b,c){var d=a("../tree/comment"),e=a("../tree/dimension"),f=a("../tree/declaration"),g=a("../tree/expression"),h=a("../tree/ruleset"),i=a("../tree/selector"),j=a("../tree/element"),k=a("./function-registry"),l=function(a){var b=Array.isArray(a.value)?a.value:Array(a);return b};k.addMultiple({_SELF:function(a){return a},extract:function(a,b){return b=b.value-1,l(a)[b]},length:function(a){return new e(l(a).length)},range:function(a,b,c){var d,f,h=1,i=[];b?(f=b,d=a.value,c&&(h=c.value)):(d=1,f=a);for(var j=d;j<=f.value;j+=h)i.push(new e(j,f.unit));return new g(i)},each:function(a,b){var c,g,k=[];g=a.value?Array.isArray(a.value)?a.value:[a.value]:a.ruleset?a.ruleset.rules:a.rules?a.rules:Array.isArray(a)?a:[a];var l="@value",m="@key",n="@index";b.params?(l=b.params[0]&&b.params[0].name,m=b.params[1]&&b.params[1].name,n=b.params[2]&&b.params[2].name,b=b.rules):b=b.ruleset;for(var o=0;o<g.length;o++){var p,q,r=g[o];r instanceof f?(p="string"==typeof r.name?r.name:r.name[0].value,q=r.value):(p=new e(o+1),q=r),r instanceof d||(c=b.rules.slice(0),l&&c.push(new f(l,q,(!1),(!1),this.index,this.currentFileInfo)),n&&c.push(new f(n,new e(o+1),(!1),(!1),this.index,this.currentFileInfo)),m&&c.push(new f(m,p,(!1),(!1),this.index,this.currentFileInfo)),k.push(new h([new i([new j("","&")])],c,b.strictImports,b.visibilityInfo())))}return new h([new i([new j("","&")])],k,b.strictImports,b.visibilityInfo()).eval(this.context)}})},{"../tree/comment":57,"../tree/declaration":60,"../tree/dimension":62,"../tree/element":63,"../tree/expression":64,"../tree/ruleset":81,"../tree/selector":82,"./function-registry":27}],30:[function(a,b,c){var d=a("../tree/dimension"),e=function(){};e._math=function(a,b,c){if(!(c instanceof d))throw{type:"Argument",message:"argument must be a number"};return null==b?b=c.unit:c=c.unify(),new d(a(parseFloat(c.value)),b)},b.exports=e},{"../tree/dimension":62}],31:[function(a,b,c){var d=a("./function-registry"),e=a("./math-helper.js"),f={ceil:null,floor:null,sqrt:null,abs:null,tan:"",sin:"",cos:"",atan:"rad",asin:"rad",acos:"rad"};for(var g in f)f.hasOwnProperty(g)&&(f[g]=e._math.bind(null,Math[g],f[g]));f.round=function(a,b){var c="undefined"==typeof b?0:b.value;return e._math(function(a){return a.toFixed(c)},null,a)},d.addMultiple(f)},{"./function-registry":27,"./math-helper.js":30}],32:[function(a,b,c){var d=a("../tree/dimension"),e=a("../tree/anonymous"),f=a("./function-registry"),g=a("./math-helper.js"),h=function(a,b){switch(b=Array.prototype.slice.call(b),b.length){case 0:throw{type:"Argument",message:"one or more arguments required"}}var c,f,g,h,i,j,k,l,m=[],n={};for(c=0;c<b.length;c++)if(g=b[c],g instanceof d)if(h=""===g.unit.toString()&&void 0!==l?new d(g.value,l).unify():g.unify(),j=""===h.unit.toString()&&void 0!==k?k:h.unit.toString(),k=""!==j&&void 0===k||""!==j&&""===m[0].unify().unit.toString()?j:k,l=""!==j&&void 0===l?g.unit.toString():l,f=void 0!==n[""]&&""!==j&&j===k?n[""]:n[j],void 0!==f)i=""===m[f].unit.toString()&&void 0!==l?new d(m[f].value,l).unify():m[f].unify(),(a&&h.value<i.value||!a&&h.value>i.value)&&(m[f]=g);else{if(void 0!==k&&j!==k)throw{type:"Argument",message:"incompatible types"};n[j]=m.length,m.push(g)}else Array.isArray(b[c].value)&&Array.prototype.push.apply(b,Array.prototype.slice.call(b[c].value));return 1==m.length?m[0]:(b=m.map(function(a){return a.toCSS(this.context)}).join(this.context.compress?",":", "),new e((a?"min":"max")+"("+b+")"))};f.addMultiple({min:function(){return h(!0,arguments)},max:function(){return h(!1,arguments)},convert:function(a,b){return a.convertTo(b.value)},pi:function(){return new d(Math.PI)},mod:function(a,b){return new d(a.value%b.value,a.unit)},pow:function(a,b){if("number"==typeof a&&"number"==typeof b)a=new d(a),b=new d(b);else if(!(a instanceof d&&b instanceof d))throw{type:"Argument",message:"arguments must be numbers"};return new d(Math.pow(a.value,b.value),a.unit)},percentage:function(a){var b=g._math(function(a){return 100*a},"%",a);return b}})},{"../tree/anonymous":50,"../tree/dimension":62,"./function-registry":27,"./math-helper.js":30}],33:[function(a,b,c){var d=a("../tree/quoted"),e=a("../tree/anonymous"),f=a("../tree/javascript"),g=a("./function-registry");g.addMultiple({e:function(a){return new e(a instanceof f?a.evaluated:a.value)},escape:function(a){return new e(encodeURI(a.value).replace(/=/g,"%3D").replace(/:/g,"%3A").replace(/#/g,"%23").replace(/;/g,"%3B").replace(/\(/g,"%28").replace(/\)/g,"%29"))},replace:function(a,b,c,e){var f=a.value;return c="Quoted"===c.type?c.value:c.toCSS(),f=f.replace(new RegExp(b.value,e?e.value:""),c),new d(a.quote||"",f,a.escaped)},"%":function(a){for(var b=Array.prototype.slice.call(arguments,1),c=a.value,e=0;e<b.length;e++)c=c.replace(/%[sda]/i,function(a){var c="Quoted"===b[e].type&&a.match(/s/i)?b[e].value:b[e].toCSS();return a.match(/[A-Z]$/)?encodeURIComponent(c):c});return c=c.replace(/%%/g,"%"),new d(a.quote||"",c,a.escaped)}})},{"../tree/anonymous":50,"../tree/javascript":68,"../tree/quoted":80,"./function-registry":27}],34:[function(a,b,c){b.exports=function(b){var c=a("../tree/dimension"),d=a("../tree/color"),e=a("../tree/expression"),f=a("../tree/quoted"),g=a("../tree/url"),h=a("./function-registry");h.add("svg-gradient",function(a){function b(){throw{type:"Argument",message:"svg-gradient expects direction, start_color [start_position], [color position,]..., end_color [end_position] or direction, color list"}}var h,i,j,k,l,m,n,o,p="linear",q='x="0" y="0" width="1" height="1"',r={compress:!1},s=a.toCSS(r);switch(2==arguments.length?(arguments[1].value.length<2&&b(),h=arguments[1].value):arguments.length<3?b():h=Array.prototype.slice.call(arguments,1),s){case"to bottom":i='x1="0%" y1="0%" x2="0%" y2="100%"';break;case"to right":i='x1="0%" y1="0%" x2="100%" y2="0%"';break;case"to bottom right":i='x1="0%" y1="0%" x2="100%" y2="100%"';break;case"to top right":i='x1="0%" y1="100%" x2="100%" y2="0%"';break;case"ellipse":case"ellipse at center":p="radial",i='cx="50%" cy="50%" r="75%"',q='x="-50" y="-50" width="101" height="101"';break;default:throw{type:"Argument",message:"svg-gradient direction must be 'to bottom', 'to right', 'to bottom right', 'to top right' or 'ellipse at center'"}}for(j='<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1 1"><'+p+'Gradient id="g" '+i+">",k=0;k<h.length;k+=1)h[k]instanceof e?(l=h[k].value[0],m=h[k].value[1]):(l=h[k],m=void 0),l instanceof d&&((0===k||k+1===h.length)&&void 0===m||m instanceof c)||b(),n=m?m.toCSS(r):0===k?"0%":"100%",o=l.alpha,j+='<stop offset="'+n+'" stop-color="'+l.toRGB()+'"'+(o<1?' stop-opacity="'+o+'"':"")+"/>";return j+="</"+p+"Gradient><rect "+q+' fill="url(#g)" /></svg>',j=encodeURIComponent(j),j="data:image/svg+xml,"+j,new g(new f("'"+j+"'",j,(!1),this.index,this.currentFileInfo),this.index,this.currentFileInfo)})}},{"../tree/color":55,"../tree/dimension":62,"../tree/expression":64,"../tree/quoted":80,"../tree/url":85,"./function-registry":27}],35:[function(a,b,c){var d=a("../tree/keyword"),e=a("../tree/detached-ruleset"),f=a("../tree/dimension"),g=a("../tree/color"),h=a("../tree/quoted"),i=a("../tree/anonymous"),j=a("../tree/url"),k=a("../tree/operation"),l=a("./function-registry"),m=function(a,b){return a instanceof b?d.True:d.False},n=function(a,b){if(void 0===b)throw{type:"Argument",message:"missing the required second argument to isunit."};if(b="string"==typeof b.value?b.value:b,"string"!=typeof b)throw{type:"Argument",message:"Second argument to isunit should be a unit or a string."};return a instanceof f&&a.unit.is(b)?d.True:d.False};l.addMultiple({isruleset:function(a){return m(a,e)},iscolor:function(a){return m(a,g)},isnumber:function(a){return m(a,f)},isstring:function(a){return m(a,h)},iskeyword:function(a){return m(a,d)},isurl:function(a){return m(a,j)},ispixel:function(a){return n(a,"px")},ispercentage:function(a){return n(a,"%")},isem:function(a){return n(a,"em")},isunit:n,unit:function(a,b){if(!(a instanceof f))throw{type:"Argument",message:"the first argument to unit must be a number"+(a instanceof k?". Have you forgotten parenthesis?":"")};return b=b?b instanceof d?b.value:b.toCSS():"",new f(a.value,b)},"get-unit":function(a){return new i(a.unit)}})},{"../tree/anonymous":50,"../tree/color":55,"../tree/detached-ruleset":61,"../tree/dimension":62,"../tree/keyword":70,"../tree/operation":77,"../tree/quoted":80,"../tree/url":85,"./function-registry":27}],36:[function(a,b,c){var d=a("./contexts"),e=a("./parser/parser"),f=a("./less-error"),g=a("./utils"),h=("undefined"==typeof Promise?a("promise"):Promise,a("./logger"));b.exports=function(a){var b=function(a,b,c){this.less=a,this.rootFilename=c.filename,this.paths=b.paths||[],this.contents={},this.contentsIgnoredChars={},this.mime=b.mime,this.error=null,this.context=b,this.queue=[],this.files={}};return b.prototype.push=function(b,c,i,j,k){var l=this,m=this.context.pluginManager.Loader;this.queue.push(b);var n=function(a,c,d){l.queue.splice(l.queue.indexOf(b),1);var e=d===l.rootFilename;j.optional&&a?(k(null,{rules:[]},!1,null),h.info("The file "+d+" was skipped because it was not found and the import was marked optional.")):(l.files[d]||j.inline||(l.files[d]={root:c,options:j}),a&&!l.error&&(l.error=a),k(a,c,e,d))},o={rewriteUrls:this.context.rewriteUrls,entryPath:i.entryPath,rootpath:i.rootpath,rootFilename:i.rootFilename},p=a.getFileManager(b,i.currentDirectory,this.context,a);if(!p)return void n({message:"Could not find a file-manager for "+b});var q,r=function(a){var b,c=a.filename,g=a.contents.replace(/^\uFEFF/,"");o.currentDirectory=p.getPath(c),o.rewriteUrls&&(o.rootpath=p.join(l.context.rootpath||"",p.pathDiff(o.currentDirectory,o.entryPath)),!p.isPathAbsolute(o.rootpath)&&p.alwaysMakePathsAbsolute()&&(o.rootpath=p.join(o.entryPath,o.rootpath))),o.filename=c;var h=new d.Parse(l.context);h.processImports=!1,l.contents[c]=g,(i.reference||j.reference)&&(o.reference=!0),j.isPlugin?(b=m.evalPlugin(g,h,l,j.pluginArgs,o),b instanceof f?n(b,null,c):n(null,b,c)):j.inline?n(null,g,c):!l.files[c]||l.files[c].options.multiple||j.multiple?new e(h,l,o).parse(g,function(a,b){n(a,b,c)}):n(null,l.files[c].root,c)},s=g.clone(this.context);c&&(s.ext=j.isPlugin?".js":".less"),q=j.isPlugin?m.loadPlugin(b,i.currentDirectory,s,a,p):p.loadFile(b,i.currentDirectory,s,a,function(a,b){a?n(a):r(b)}),q&&q.then(r,n)},b}},{"./contexts":13,"./less-error":38,"./logger":39,"./parser/parser":44,"./utils":89,promise:void 0}],37:[function(a,b,c){b.exports=function(b,c){var d,e,f,g,h,i,j={version:[3,9,0],data:a("./data"),tree:a("./tree"),Environment:h=a("./environment/environment"),AbstractFileManager:a("./environment/abstract-file-manager"),AbstractPluginLoader:a("./environment/abstract-plugin-loader"),environment:b=new h(b,c),visitors:a("./visitors"),Parser:a("./parser/parser"),functions:a("./functions")(b),contexts:a("./contexts"),SourceMapOutput:d=a("./source-map-output")(b),SourceMapBuilder:e=a("./source-map-builder")(d,b),ParseTree:f=a("./parse-tree")(e),ImportManager:g=a("./import-manager")(b),render:a("./render")(b,f,g),parse:a("./parse")(b,f,g),LessError:a("./less-error"),transformTree:a("./transform-tree"),utils:a("./utils"),PluginManager:a("./plugin-manager"),logger:a("./logger")},k=function(a){return function(){var b=Object.create(a.prototype);return a.apply(b,Array.prototype.slice.call(arguments,0)),b}},l=Object.create(j);for(var m in j.tree)if(i=j.tree[m],"function"==typeof i)l[m.toLowerCase()]=k(i);else{l[m]=Object.create(null);for(var n in i)l[m][n.toLowerCase()]=k(i[n])}return l}},{"./contexts":13,"./data":15,"./environment/abstract-file-manager":18,"./environment/abstract-plugin-loader":19,"./environment/environment":20,"./functions":28,"./import-manager":36,"./less-error":38,"./logger":39,"./parse":41,"./parse-tree":40,"./parser/parser":44,"./plugin-manager":45,"./render":46,"./source-map-builder":47,"./source-map-output":48,"./transform-tree":49,"./tree":67,"./utils":89,"./visitors":93}],38:[function(a,b,c){var d=a("./utils"),e=b.exports=function(a,b,c){Error.call(this);var e=a.filename||c;if(this.message=a.message,this.stack=a.stack,b&&e){var f=b.contents[e],g=d.getLocation(a.index,f),h=g.line,i=g.column,j=a.call&&d.getLocation(a.call,f).line,k=f?f.split("\n"):"";if(this.type=a.type||"Syntax",this.filename=e,this.index=a.index,this.line="number"==typeof h?h+1:null,this.column=i,!this.line&&this.stack){var l=this.stack.match(/(<anonymous>|Function):(\d+):(\d+)/);l&&(l[2]&&(this.line=parseInt(l[2])-2),l[3]&&(this.column=parseInt(l[3])))}this.callLine=j+1,this.callExtract=k[j],this.extract=[k[this.line-2],k[this.line-1],k[this.line]]}};if("undefined"==typeof Object.create){var f=function(){};f.prototype=Error.prototype,e.prototype=new f}else e.prototype=Object.create(Error.prototype);e.prototype.constructor=e,e.prototype.toString=function(a){a=a||{};var b="",c=this.extract||[],d=[],e=function(a){return a};if(a.stylize){var f=typeof a.stylize;if("function"!==f)throw Error("options.stylize should be a function, got a "+f+"!");e=a.stylize}if(null!==this.line){if("string"==typeof c[0]&&d.push(e(this.line-1+" "+c[0],"grey")),"string"==typeof c[1]){var g=this.line+" ";c[1]&&(g+=c[1].slice(0,this.column)+e(e(e(c[1].substr(this.column,1),"bold")+c[1].slice(this.column+1),"red"),"inverse")),d.push(g)}"string"==typeof c[2]&&d.push(e(this.line+1+" "+c[2],"grey")),d=d.join("\n")+e("","reset")+"\n"}return b+=e(this.type+"Error: "+this.message,"red"),this.filename&&(b+=e(" in ","red")+this.filename),this.line&&(b+=e(" on line "+this.line+", column "+(this.column+1)+":","grey")),b+="\n"+d,this.callLine&&(b+=e("from ","red")+(this.filename||"")+"/n",b+=e(this.callLine,"grey")+" "+this.callExtract+"/n"),b}},{"./utils":89}],39:[function(a,b,c){b.exports={error:function(a){this._fireEvent("error",a)},warn:function(a){this._fireEvent("warn",a)},info:function(a){this._fireEvent("info",a)},debug:function(a){this._fireEvent("debug",a)},addListener:function(a){this._listeners.push(a)},removeListener:function(a){for(var b=0;b<this._listeners.length;b++)if(this._listeners[b]===a)return void this._listeners.splice(b,1)},_fireEvent:function(a,b){for(var c=0;c<this._listeners.length;c++){var d=this._listeners[c][a];d&&d(b)}},_listeners:[]}},{}],40:[function(a,b,c){var d=a("./less-error"),e=a("./transform-tree"),f=a("./logger");b.exports=function(a){var b=function(a,b){this.root=a,this.imports=b};return b.prototype.toCSS=function(b){var c,g,h={};try{c=e(this.root,b)}catch(i){throw new d(i,this.imports)}try{var j=Boolean(b.compress);j&&f.warn("The compress option has been deprecated. We recommend you use a dedicated css minifier, for instance see less-plugin-clean-css.");var k={compress:j,dumpLineNumbers:b.dumpLineNumbers,strictUnits:Boolean(b.strictUnits),numPrecision:8};b.sourceMap?(g=new a(b.sourceMap),h.css=g.toCSS(c,k,this.imports)):h.css=c.toCSS(k)}catch(i){throw new d(i,this.imports)}if(b.pluginManager)for(var l=b.pluginManager.getPostProcessors(),m=0;m<l.length;m++)h.css=l[m].process(h.css,{sourceMap:g,options:b,imports:this.imports});b.sourceMap&&(h.map=g.getExternalSourceMap()),h.imports=[];for(var n in this.imports.files)this.imports.files.hasOwnProperty(n)&&n!==this.imports.rootFilename&&h.imports.push(n);return h},b}},{"./less-error":38,"./logger":39,"./transform-tree":49}],41:[function(a,b,c){var d,e=a("./contexts"),f=a("./parser/parser"),g=a("./plugin-manager"),h=a("./less-error"),i=a("./utils");b.exports=function(b,c,j){var k=function(b,c,l){if("function"==typeof c?(l=c,c=i.copyOptions(this.options,{})):c=i.copyOptions(this.options,c||{}),!l){d||(d="undefined"==typeof Promise?a("promise"):Promise);var m=this;return new d(function(a,d){k.call(m,b,c,function(b,c){b?d(b):a(c)})})}var n,o,p=new g(this,(!c.reUsePluginManager));if(c.pluginManager=p,n=new e.Parse(c),c.rootFileInfo)o=c.rootFileInfo;else{var q=c.filename||"input",r=q.replace(/[^\/\\]*$/,"");o={filename:q,rewriteUrls:n.rewriteUrls,rootpath:n.rootpath||"",currentDirectory:r,entryPath:r,rootFilename:q},o.rootpath&&"/"!==o.rootpath.slice(-1)&&(o.rootpath+="/")}var s=new j(this,n,o);this.importManager=s,c.plugins&&c.plugins.forEach(function(a){var b,c;if(a.fileContent){if(c=a.fileContent.replace(/^\uFEFF/,""),b=p.Loader.evalPlugin(c,n,s,a.options,a.filename),b instanceof h)return l(b)}else p.addPlugin(a)}),new f(n,s,o).parse(b,function(a,b){return a?l(a):void l(null,b,s,c)},c)};return k}},{"./contexts":13,"./less-error":38,"./parser/parser":44,"./plugin-manager":45,"./utils":89,promise:void 0}],42:[function(a,b,c){b.exports=function(a,b){function c(b){var c=h-q;c<512&&!b||!c||(p.push(a.slice(q,h+1)),q=h+1)}var d,e,f,g,h,i,j,k,l,m=a.length,n=0,o=0,p=[],q=0;for(h=0;h<m;h++)if(j=a.charCodeAt(h),!(j>=97&&j<=122||j<34))switch(j){case 40:o++,e=h;continue;case 41:if(--o<0)return b("missing opening `(`",h);continue;case 59:o||c();continue;case 123:n++,d=h;continue;case 125:if(--n<0)return b("missing opening `{`",h);n||o||c();continue;case 92:if(h<m-1){h++;continue}return b("unescaped `\\`",h);case 34:case 39:case 96:for(l=0,i=h,h+=1;h<m;h++)if(k=a.charCodeAt(h),!(k>96)){if(k==j){l=1;break}if(92==k){if(h==m-1)return b("unescaped `\\`",h);h++}}if(l)continue;return b("unmatched `"+String.fromCharCode(j)+"`",i);case 47:if(o||h==m-1)continue;if(k=a.charCodeAt(h+1),47==k)for(h+=2;h<m&&(k=a.charCodeAt(h),!(k<=13)||10!=k&&13!=k);h++);else if(42==k){for(f=i=h,h+=2;h<m-1&&(k=a.charCodeAt(h),125==k&&(g=h),42!=k||47!=a.charCodeAt(h+1));h++);if(h==m-1)return b("missing closing `*/`",i);h++}continue;case 42:if(h<m-1&&47==a.charCodeAt(h+1))return b("unmatched `/*`",h);continue}return 0!==n?f>d&&g>f?b("missing closing `}` or `*/`",d):b("missing closing `}`",d):0!==o?b("missing closing `)`",e):(c(!0),p)}},{}],43:[function(a,b,c){var d=a("./chunker");b.exports=function(){function a(d){for(var e,f,j,p=k.i,q=c,s=k.i-i,t=k.i+h.length-s,u=k.i+=d,v=b;k.i<t;k.i++){if(e=v.charCodeAt(k.i),k.autoCommentAbsorb&&e===r){if(f=v.charAt(k.i+1),"/"===f){j={index:k.i,isLineComment:!0};var w=v.indexOf("\n",k.i+2);w<0&&(w=t),k.i=w,j.text=v.substr(j.index,k.i-j.index),k.commentStore.push(j);continue}if("*"===f){var x=v.indexOf("*/",k.i+2);if(x>=0){j={index:k.i,text:v.substr(k.i,x+2-k.i),isLineComment:!1},k.i+=j.text.length-1,k.commentStore.push(j);continue}}break}if(e!==l&&e!==n&&e!==m&&e!==o)break}if(h=h.slice(d+k.i-u+s),i=k.i,!h.length){if(c<g.length-1)return h=g[++c],a(0),!0;k.finished=!0}return p!==k.i||q!==c}var b,c,e,f,g,h,i,j=[],k={},l=32,m=9,n=10,o=13,p=43,q=44,r=47,s=57;return k.save=function(){i=k.i,j.push({current:h,i:k.i,j:c})},k.restore=function(a){(k.i>e||k.i===e&&a&&!f)&&(e=k.i,f=a);var b=j.pop();h=b.current,i=k.i=b.i,c=b.j},k.forget=function(){j.pop()},k.isWhitespace=function(a){var c=k.i+(a||0),d=b.charCodeAt(c);return d===l||d===o||d===m||d===n},k.$re=function(b){k.i>i&&(h=h.slice(k.i-i),i=k.i);var c=b.exec(h);return c?(a(c[0].length),"string"==typeof c?c:1===c.length?c[0]:c):null},k.$char=function(c){return b.charAt(k.i)!==c?null:(a(1),c)},k.$str=function(c){for(var d=c.length,e=0;e<d;e++)if(b.charAt(k.i+e)!==c.charAt(e))return null;return a(d),c},k.$quoted=function(c){var d=c||k.i,e=b.charAt(d);if("'"===e||'"'===e){for(var f=b.length,g=d,h=1;h+g<f;h++){var i=b.charAt(h+g);switch(i){case"\\":h++;continue;case"\r":case"\n":break;case e:var j=b.substr(g,h+1);return c||0===c?[e,j]:(a(h+1),j)}}return null}},k.$parseUntil=function(c){var d,e="",f=null,g=!1,h=0,i=[],j=[],l=b.length,m=k.i,n=k.i,o=k.i,p=!0;d="string"==typeof c?function(a){return a===c}:function(a){return c.test(a)};do{var q,r=b.charAt(o);if(0===h&&d(r))f=b.substr(n,o-n),j.push(f?f:" "),f=j,a(o-m),p=!1;else{if(g){"*"===r&&"/"===b.charAt(o+1)&&(o++,h--,g=!1),o++;continue}switch(r){case"\\":o++,r=b.charAt(o),j.push(b.substr(n,o-n+1)),n=o+1;break;case"/":"*"===b.charAt(o+1)&&(o++,g=!0,h++);break;case"'":case'"':e=k.$quoted(o),e?(j.push(b.substr(n,o-n),e),o+=e[1].length-1,n=o+1):(a(o-m),f=r,p=!1);break;case"{":i.push("}"),h++;break;case"(":i.push(")"),h++;break;case"[":i.push("]"),h++;break;case"}":case")":case"]":var s=i.pop();r===s?h--:(a(o-m),f=s,p=!1)}o++,o>l&&(p=!1)}q=r}while(p);return f?f:null},k.autoCommentAbsorb=!0,k.commentStore=[],k.finished=!1,k.peek=function(a){if("string"==typeof a){for(var c=0;c<a.length;c++)if(b.charAt(k.i+c)!==a.charAt(c))return!1;return!0}return a.test(h)},k.peekChar=function(a){return b.charAt(k.i)===a},k.currentChar=function(){return b.charAt(k.i)},k.prevChar=function(){return b.charAt(k.i-1)},k.getInput=function(){return b},k.peekNotNumeric=function(){var a=b.charCodeAt(k.i);return a>s||a<p||a===r||a===q},k.start=function(f,j,l){b=f,k.i=c=i=e=0,g=j?d(f,l):[f],h=g[0],a(0)},k.end=function(){var a,c=k.i>=b.length;return k.i<e&&(a=f,k.i=e),{isFinished:c,furthest:k.i,furthestPossibleErrorMessage:a,furthestReachedEnd:k.i>=b.length-1,furthestChar:b[k.i]}},k}},{"./chunker":42}],44:[function(a,b,c){var d=a("../less-error"),e=a("../tree"),f=a("../visitors"),g=a("./parser-input"),h=a("../utils"),i=a("../functions/function-registry"),j=function k(a,b,c){function j(a,e){throw new d({index:q.i,filename:c.filename,type:e||"Syntax",message:a},b)}function l(a,b){var c=a instanceof Function?a.call(p):q.$re(a);return c?c:void j(b||("string"==typeof a?"expected '"+a+"' got '"+q.currentChar()+"'":"unexpected token"))}function m(a,b){return q.$char(a)?a:void j(b||"expected '"+a+"' got '"+q.currentChar()+"'")}function n(a){var b=c.filename;return{lineNumber:h.getLocation(a,q.getInput()).line+1,fileName:b}}function o(a,c,e,f,g){var h,i=[],j=q;try{j.start(a,!1,function(a,b){g({message:a,index:b+e})});for(var k,l,m=0;k=c[m];m++)l=j.i,h=p[k](),h?(h._index=l+e,h._fileInfo=f,i.push(h)):i.push(null);var n=j.end();n.isFinished?g(null,i):g(!0,null)}catch(o){throw new d({index:o.index+e,message:o.message},b,f.filename)}}var p,q=g();return{parserInput:q,imports:b,fileInfo:c,parseNode:o,parse:function(g,h,j){var l,m,n,o,p=null,r="";if(m=j&&j.globalVars?k.serializeVars(j.globalVars)+"\n":"",n=j&&j.modifyVars?"\n"+k.serializeVars(j.modifyVars):"",a.pluginManager)for(var s=a.pluginManager.getPreProcessors(),t=0;t<s.length;t++)g=s[t].process(g,{context:a,imports:b,fileInfo:c});(m||j&&j.banner)&&(r=(j&&j.banner?j.banner:"")+m,o=b.contentsIgnoredChars,o[c.filename]=o[c.filename]||0,o[c.filename]+=r.length),g=g.replace(/\r\n?/g,"\n"),g=r+g.replace(/^\uFEFF/,"")+n,b.contents[c.filename]=g;try{q.start(g,a.chunkInput,function(a,e){throw new d({index:e,type:"Parse",message:a,filename:c.filename},b)}),e.Node.prototype.parse=this,l=new e.Ruleset(null,this.parsers.primary()),e.Node.prototype.rootNode=l,l.root=!0,l.firstRoot=!0,l.functionRegistry=i.inherit()}catch(u){return h(new d(u,b,c.filename))}var v=q.end();if(!v.isFinished){var w=v.furthestPossibleErrorMessage;w||(w="Unrecognised input","}"===v.furthestChar?w+=". Possibly missing opening '{'":")"===v.furthestChar?w+=". Possibly missing opening '('":v.furthestReachedEnd&&(w+=". Possibly missing something")),p=new d({type:"Parse",message:w,index:v.furthest,filename:c.filename},b)}var x=function(a){return a=p||a||b.error,a?(a instanceof d||(a=new d(a,b,c.filename)),h(a)):h(null,l)};return a.processImports===!1?x():void new f.ImportVisitor(b,x).run(l)},parsers:p={primary:function(){for(var a,b=this.mixin,c=[];;){for(;;){if(a=this.comment(),!a)break;c.push(a)}if(q.finished)break;if(q.peek("}"))break;if(a=this.extendRule())c=c.concat(a);else if(a=b.definition()||this.declaration()||this.ruleset()||b.call(!1,!1)||this.variableCall()||this.entities.call()||this.atrule())c.push(a);else{for(var d=!1;q.$char(";");)d=!0;if(!d)break}}return c},comment:function(){if(q.commentStore.length){var a=q.commentStore.shift();return new e.Comment(a.text,a.isLineComment,a.index,c)}},entities:{mixinLookup:function(){return p.mixin.call(!0,!0)},quoted:function(a){var b,d=q.i,f=!1;if(q.save(),q.$char("~"))f=!0;else if(a)return void q.restore();return(b=q.$quoted())?(q.forget(),new e.Quoted(b.charAt(0),b.substr(1,b.length-2),f,d,c)):void q.restore()},keyword:function(){var a=q.$char("%")||q.$re(/^\[?(?:[\w-]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+\]?/);if(a)return e.Color.fromKeyword(a)||new e.Keyword(a)},call:function(){var a,b,d,f=q.i;if(!q.peek(/^url\(/i))return q.save(),(a=q.$re(/^([\w-]+|%|progid:[\w\.]+)\(/))?(a=a[1],d=this.customFuncCall(a),d&&(b=d.parse(),b&&d.stop)?(q.forget(),b):(b=this.arguments(b),q.$char(")")?(q.forget(),new e.Call(a,b,f,c)):void q.restore("Could not parse call arguments or missing ')'"))):void q.forget()},customFuncCall:function(a){function b(a,b){return{parse:a,stop:b}}function c(){return[l(p.condition,"expected condition")]}return{alpha:b(p.ieAlpha,!0),"boolean":b(c),"if":b(c)}[a.toLowerCase()]},arguments:function(a){var b,c,d=a||[],f=[];for(q.save();;){if(a)a=!1;else{if(c=p.detachedRuleset()||this.assignment()||p.expression(),!c)break;c.value&&1==c.value.length&&(c=c.value[0]),d.push(c)}q.$char(",")||(q.$char(";")||b)&&(b=!0,c=d.length<1?d[0]:new e.Value(d),f.push(c),d=[])}return q.forget(),b?f:d},literal:function(){return this.dimension()||this.color()||this.quoted()||this.unicodeDescriptor()},assignment:function(){var a,b;return q.save(),(a=q.$re(/^\w+(?=\s?=)/i))&&q.$char("=")&&(b=p.entity())?(q.forget(),new e.Assignment(a,b)):void q.restore()},url:function(){var a,b=q.i;return q.autoCommentAbsorb=!1,q.$str("url(")?(a=this.quoted()||this.variable()||this.property()||q.$re(/^(?:(?:\\[\(\)'"])|[^\(\)'"])+/)||"",q.autoCommentAbsorb=!0,m(")"),new e.URL(null!=a.value||a instanceof e.Variable||a instanceof e.Property?a:new e.Anonymous(a,b),b,c)):void(q.autoCommentAbsorb=!0)},variable:function(){var a,b,d=q.i;if(q.save(),"@"===q.currentChar()&&(b=q.$re(/^@@?[\w-]+/))){if(a=q.currentChar(),"("===a||"["===a&&!q.prevChar().match(/^\s/)){var f=p.variableCall(b);if(f)return q.forget(),f}return q.forget(),new e.Variable(b,d,c)}q.restore()},variableCurly:function(){var a,b=q.i;if("@"===q.currentChar()&&(a=q.$re(/^@\{([\w-]+)\}/)))return new e.Variable("@"+a[1],b,c)},property:function(){var a,b=q.i;if("$"===q.currentChar()&&(a=q.$re(/^\$[\w-]+/)))return new e.Property(a,b,c)},propertyCurly:function(){var a,b=q.i;if("$"===q.currentChar()&&(a=q.$re(/^\$\{([\w-]+)\}/)))return new e.Property("$"+a[1],b,c)},color:function(){var a;if("#"===q.currentChar()&&(a=q.$re(/^#([A-Fa-f0-9]{8}|[A-Fa-f0-9]{6}|[A-Fa-f0-9]{3,4})/)))return new e.Color(a[1],(void 0),a[0])},colorKeyword:function(){q.save();var a=q.autoCommentAbsorb;q.autoCommentAbsorb=!1;var b=q.$re(/^[_A-Za-z-][_A-Za-z0-9-]+/);if(q.autoCommentAbsorb=a,!b)return void q.forget();q.restore();var c=e.Color.fromKeyword(b);return c?(q.$str(b),c):void 0},dimension:function(){if(!q.peekNotNumeric()){var a=q.$re(/^([+-]?\d*\.?\d+)(%|[a-z_]+)?/i);return a?new e.Dimension(a[1],a[2]):void 0}},unicodeDescriptor:function(){var a;if(a=q.$re(/^U\+[0-9a-fA-F?]+(\-[0-9a-fA-F?]+)?/))return new e.UnicodeDescriptor(a[0])},javascript:function(){var a,b=q.i;q.save();var d=q.$char("~"),f=q.$char("`");return f?(a=q.$re(/^[^`]*`/))?(q.forget(),new e.JavaScript(a.substr(0,a.length-1),Boolean(d),b,c)):void q.restore("invalid javascript definition"):void q.restore()}},variable:function(){var a;if("@"===q.currentChar()&&(a=q.$re(/^(@[\w-]+)\s*:/)))return a[1]},variableCall:function(a){var b,d,f=q.i,g=!!a,h=a;if(q.save(),h||"@"===q.currentChar()&&(h=q.$re(/^(@[\w-]+)(\(\s*\))?/))){if(b=this.mixin.ruleLookups(),!b&&(g&&"()"!==q.$str("()")||"()"!==h[2]))return void q.restore("Missing '[...]' lookup in variable call");g||(h=h[1]),b&&p.important()&&(d=!0);var i=new e.VariableCall(h,f,c);return!g&&p.end()?(q.forget(),i):(q.forget(),new e.NamespaceValue(i,b,d,f,c))}q.restore()},extend:function(a){var b,d,f,g,h,i=q.i;if(q.$str(a?"&:extend(":":extend(")){do{for(f=null,b=null;!(f=q.$re(/^(all)(?=\s*(\)|,))/))&&(d=this.element());)b?b.push(d):b=[d];f=f&&f[1],b||j("Missing target selector for :extend()."),h=new e.Extend(new e.Selector(b),f,i,c),g?g.push(h):g=[h]}while(q.$char(","));return l(/^\)/),a&&l(/^;/),g}},extendRule:function(){return this.extend(!0)},mixin:{call:function(a,b){var d,f,g,h,i=q.currentChar(),j=!1,k=q.i;if("."===i||"#"===i){if(q.save(),f=this.elements()){if(q.$char("(")&&(g=this.args(!0).args,m(")"),h=!0),b!==!1&&(d=this.ruleLookups()),b===!0&&!d)return void q.restore();if(a&&!d&&!h)return void q.restore();if(!a&&p.important()&&(j=!0),a||p.end()){q.forget();var l=new e.mixin.Call(f,g,k,c,!d&&j);return d?new e.NamespaceValue(l,d,j):l}}q.restore()}},elements:function(){for(var a,b,d,f,g,h=/^[#.](?:[\w-]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+/;;){if(g=q.i,b=q.$re(h),!b)break;f=new e.Element(d,b,(!1),g,c),a?a.push(f):a=[f],d=q.$char(">")}return a},args:function(a){var b,c,d,f,g,h,i,k=p.entities,l={args:null,variadic:!1},m=[],n=[],o=[],r=!0;for(q.save();;){if(a)h=p.detachedRuleset()||p.expression();else{if(q.commentStore.length=0,q.$str("...")){l.variadic=!0,q.$char(";")&&!b&&(b=!0),(b?n:o).push({variadic:!0});break}h=k.variable()||k.property()||k.literal()||k.keyword()||this.call(!0)}if(!h||!r)break;f=null,h.throwAwayComments&&h.throwAwayComments(),g=h;var s=null;if(a?h.value&&1==h.value.length&&(s=h.value[0]):s=h,s&&(s instanceof e.Variable||s instanceof e.Property))if(q.$char(":")){if(m.length>0&&(b&&j("Cannot mix ; and , as delimiter types"),c=!0),g=p.detachedRuleset()||p.expression(),!g){if(!a)return q.restore(),l.args=[],l;j("could not understand value for named argument")}f=d=s.name}else if(q.$str("...")){if(!a){l.variadic=!0,q.$char(";")&&!b&&(b=!0),(b?n:o).push({name:h.name,variadic:!0});break}i=!0}else a||(d=f=s.name,g=null);g&&m.push(g),o.push({name:f,value:g,expand:i}),q.$char(",")?r=!0:(r=";"===q.$char(";"),(r||b)&&(c&&j("Cannot mix ; and , as delimiter types"),b=!0,m.length>1&&(g=new e.Value(m)),n.push({name:d,value:g,expand:i}),d=null,m=[],c=!1))}return q.forget(),l.args=b?n:o,l},definition:function(){var a,b,c,d,f=[],g=!1;if(!("."!==q.currentChar()&&"#"!==q.currentChar()||q.peek(/^[^{]*\}/)))if(q.save(),b=q.$re(/^([#.](?:[\w-]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+)\s*\(/)){a=b[1];var h=this.args(!1);if(f=h.args,g=h.variadic,!q.$char(")"))return void q.restore("Missing closing ')'");if(q.commentStore.length=0,q.$str("when")&&(d=l(p.conditions,"expected condition")),c=p.block())return q.forget(),new e.mixin.Definition(a,f,c,d,g);q.restore()}else q.forget()},ruleLookups:function(){var a,b,c=[];if("["===q.currentChar()){for(;;){if(q.save(),b=null,a=this.lookupValue(),!a&&""!==a){q.restore();break}c.push(a),q.forget()}return c.length>0?c:void 0}},lookupValue:function(){if(q.save(),!q.$char("["))return void q.restore();var a=q.$re(/^(?:[@$]{0,2})[_a-zA-Z0-9-]*/);return q.$char("]")&&(a||""===a)?(q.forget(),a):void q.restore()}},entity:function(){var a=this.entities;return this.comment()||a.literal()||a.variable()||a.url()||a.property()||a.call()||a.keyword()||this.mixin.call(!0)||a.javascript()},end:function(){return q.$char(";")||q.peek("}")},ieAlpha:function(){var a;if(q.$re(/^opacity=/i))return a=q.$re(/^\d+/),a||(a=l(p.entities.variable,"Could not parse alpha"),
+a="@{"+a.name.slice(1)+"}"),m(")"),new e.Quoted("","alpha(opacity="+a+")")},element:function(){var a,b,d,f=q.i;if(b=this.combinator(),a=q.$re(/^(?:\d+\.\d+|\d+)%/)||q.$re(/^(?:[.#]?|:*)(?:[\w-]|[^\x00-\x9f]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+/)||q.$char("*")||q.$char("&")||this.attribute()||q.$re(/^\([^&()@]+\)/)||q.$re(/^[\.#:](?=@)/)||this.entities.variableCurly(),a||(q.save(),q.$char("(")?(d=this.selector(!1))&&q.$char(")")?(a=new e.Paren(d),q.forget()):q.restore("Missing closing ')'"):q.forget()),a)return new e.Element(b,a,a instanceof e.Variable,f,c)},combinator:function(){var a=q.currentChar();if("/"===a){q.save();var b=q.$re(/^\/[a-z]+\//i);if(b)return q.forget(),new e.Combinator(b);q.restore()}if(">"===a||"+"===a||"~"===a||"|"===a||"^"===a){for(q.i++,"^"===a&&"^"===q.currentChar()&&(a="^^",q.i++);q.isWhitespace();)q.i++;return new e.Combinator(a)}return new e.Combinator(q.isWhitespace(-1)?" ":null)},selector:function(a){var b,d,f,g,h,i,k,m=q.i;for(a=a!==!1;(a&&(d=this.extend())||a&&(i=q.$str("when"))||(g=this.element()))&&(i?k=l(this.conditions,"expected condition"):k?j("CSS guard can only be used at the end of selector"):d?h=h?h.concat(d):d:(h&&j("Extend can only be used at the end of selector"),f=q.currentChar(),b?b.push(g):b=[g],g=null),"{"!==f&&"}"!==f&&";"!==f&&","!==f&&")"!==f););return b?new e.Selector(b,h,k,m,c):void(h&&j("Extend must be used to extend a selector, it cannot be used on its own"))},selectors:function(){for(var a,b;;){if(a=this.selector(),!a)break;if(b?b.push(a):b=[a],q.commentStore.length=0,a.condition&&b.length>1&&j("Guards are only currently allowed on a single selector."),!q.$char(","))break;a.condition&&j("Guards are only currently allowed on a single selector."),q.commentStore.length=0}return b},attribute:function(){if(q.$char("[")){var a,b,c,d=this.entities;return(a=d.variableCurly())||(a=l(/^(?:[_A-Za-z0-9-\*]*\|)?(?:[_A-Za-z0-9-]|\\.)+/)),c=q.$re(/^[|~*$^]?=/),c&&(b=d.quoted()||q.$re(/^[0-9]+%/)||q.$re(/^[\w-]+/)||d.variableCurly()),m("]"),new e.Attribute(a,c,b)}},block:function(){var a;if(q.$char("{")&&(a=this.primary())&&q.$char("}"))return a},blockRuleset:function(){var a=this.block();return a&&(a=new e.Ruleset(null,a)),a},detachedRuleset:function(){var a,b,c;if(q.save(),q.$re(/^[.#]\(/)&&(a=this.mixin.args(!1),b=a.args,c=a.variadic,!q.$char(")")))return void q.restore();var d=this.blockRuleset();return d?(q.forget(),b?new e.mixin.Definition(null,b,d,null,c):new e.DetachedRuleset(d)):void q.restore()},ruleset:function(){var b,c,d;if(q.save(),a.dumpLineNumbers&&(d=n(q.i)),b=this.selectors(),b&&(c=this.block())){q.forget();var f=new e.Ruleset(b,c,a.strictImports);return a.dumpLineNumbers&&(f.debugInfo=d),f}q.restore()},declaration:function(){var a,b,d,f,g,h,i=q.i,j=q.currentChar();if("."!==j&&"#"!==j&&"&"!==j&&":"!==j)if(q.save(),a=this.variable()||this.ruleProperty()){if(h="string"==typeof a,h&&(b=this.detachedRuleset(),b&&(d=!0)),q.commentStore.length=0,!b){if(g=!h&&a.length>1&&a.pop().value,b=a[0].value&&"--"===a[0].value.slice(0,2)?this.permissiveValue():this.anonymousValue())return q.forget(),new e.Declaration(a,b,(!1),g,i,c);b||(b=this.value()),b?f=this.important():h&&(b=this.permissiveValue())}if(b&&(this.end()||d))return q.forget(),new e.Declaration(a,b,f,g,i,c);q.restore()}else q.restore()},anonymousValue:function(){var a=q.i,b=q.$re(/^([^.#@\$+\/'"*`(;{}-]*);/);if(b)return new e.Anonymous(b[1],a)},permissiveValue:function(a){function b(){var a=q.currentChar();return"string"==typeof i?a===i:i.test(a)}var d,f,g,h,i=a||";",k=q.i,l=[];if(!b()){h=[];do f=this.comment(),f?h.push(f):(f=this.entity(),f&&h.push(f));while(f);if(g=b(),h.length>0){if(h=new e.Expression(h),g)return h;l.push(h)," "===q.prevChar()&&l.push(new e.Anonymous(" ",k))}if(q.save(),h=q.$parseUntil(i)){if("string"==typeof h&&j("Expected '"+h+"'","Parse"),1===h.length&&" "===h[0])return q.forget(),new e.Anonymous("",k);var m;for(d=0;d<h.length;d++)if(m=h[d],Array.isArray(m))l.push(new e.Quoted(m[0],m[1],(!0),k,c));else{d===h.length-1&&(m=m.trim());var n=new e.Quoted("'",m,(!0),k,c);n.variableRegex=/@([\w-]+)/g,n.propRegex=/\$([\w-]+)/g,l.push(n)}return q.forget(),new e.Expression(l,(!0))}q.restore()}},"import":function(){var a,b,d=q.i,f=q.$re(/^@import?\s+/);if(f){var g=(f?this.importOptions():null)||{};if(a=this.entities.quoted()||this.entities.url())return b=this.mediaFeatures(),q.$char(";")||(q.i=d,j("missing semi-colon or unrecognised media features on import")),b=b&&new e.Value(b),new e.Import(a,b,g,d,c);q.i=d,j("malformed import statement")}},importOptions:function(){var a,b,c,d={};if(!q.$char("("))return null;do if(a=this.importOption()){switch(b=a,c=!0,b){case"css":b="less",c=!1;break;case"once":b="multiple",c=!1}if(d[b]=c,!q.$char(","))break}while(a);return m(")"),d},importOption:function(){var a=q.$re(/^(less|css|multiple|once|inline|reference|optional)/);if(a)return a[1]},mediaFeature:function(){var a,b,d=this.entities,f=[];q.save();do a=d.keyword()||d.variable()||d.mixinLookup(),a?f.push(a):q.$char("(")&&(b=this.property(),a=this.value(),q.$char(")")?b&&a?f.push(new e.Paren(new e.Declaration(b,a,null,null,q.i,c,(!0)))):a?f.push(new e.Paren(a)):j("badly formed media feature definition"):j("Missing closing ')'","Parse"));while(a);if(q.forget(),f.length>0)return new e.Expression(f)},mediaFeatures:function(){var a,b=this.entities,c=[];do if(a=this.mediaFeature()){if(c.push(a),!q.$char(","))break}else if(a=b.variable()||b.mixinLookup(),a&&(c.push(a),!q.$char(",")))break;while(a);return c.length>0?c:null},media:function(){var b,d,f,g,h=q.i;return a.dumpLineNumbers&&(g=n(h)),q.save(),q.$str("@media")?(b=this.mediaFeatures(),d=this.block(),d||j("media definitions require block statements after any features"),q.forget(),f=new e.Media(d,b,h,c),a.dumpLineNumbers&&(f.debugInfo=g),f):void q.restore()},plugin:function(){var a,b,d,f=q.i,g=q.$re(/^@plugin?\s+/);if(g){if(b=this.pluginArgs(),d=b?{pluginArgs:b,isPlugin:!0}:{isPlugin:!0},a=this.entities.quoted()||this.entities.url())return q.$char(";")||(q.i=f,j("missing semi-colon on @plugin")),new e.Import(a,null,d,f,c);q.i=f,j("malformed @plugin statement")}},pluginArgs:function(){if(q.save(),!q.$char("("))return q.restore(),null;var a=q.$re(/^\s*([^\);]+)\)\s*/);return a[1]?(q.forget(),a[1].trim()):(q.restore(),null)},atrule:function(){var b,d,f,g,h,i,k,l=q.i,m=!0,o=!0;if("@"===q.currentChar()){if(d=this["import"]()||this.plugin()||this.media())return d;if(q.save(),b=q.$re(/^@[a-z-]+/)){switch(g=b,"-"==b.charAt(1)&&b.indexOf("-",2)>0&&(g="@"+b.slice(b.indexOf("-",2)+1)),g){case"@charset":h=!0,m=!1;break;case"@namespace":i=!0,m=!1;break;case"@keyframes":case"@counter-style":h=!0;break;case"@document":case"@supports":k=!0,o=!1;break;default:k=!0}return q.commentStore.length=0,h?(d=this.entity(),d||j("expected "+b+" identifier")):i?(d=this.expression(),d||j("expected "+b+" expression")):k&&(d=this.permissiveValue(/^[{;]/),m="{"===q.currentChar(),d?d.value||(d=null):m||";"===q.currentChar()||j(b+" rule is missing block or ending semi-colon")),m&&(f=this.blockRuleset()),f||!m&&d&&q.$char(";")?(q.forget(),new e.AtRule(b,d,f,l,c,a.dumpLineNumbers?n(l):null,o)):void q.restore("at-rule options not recognised")}}},value:function(){var a,b=[],c=q.i;do if(a=this.expression(),a&&(b.push(a),!q.$char(",")))break;while(a);if(b.length>0)return new e.Value(b,c)},important:function(){if("!"===q.currentChar())return q.$re(/^! *important/)},sub:function(){var a,b;return q.save(),q.$char("(")?(a=this.addition(),a&&q.$char(")")?(q.forget(),b=new e.Expression([a]),b.parens=!0,b):void q.restore("Expected ')'")):void q.restore()},multiplication:function(){var a,b,c,d,f;if(a=this.operand()){for(f=q.isWhitespace(-1);;){if(q.peek(/^\/[*\/]/))break;if(q.save(),c=q.$char("/")||q.$char("*")||q.$str("./"),!c){q.forget();break}if(b=this.operand(),!b){q.restore();break}q.forget(),a.parensInOp=!0,b.parensInOp=!0,d=new e.Operation(c,[d||a,b],f),f=q.isWhitespace(-1)}return d||a}},addition:function(){var a,b,c,d,f;if(a=this.multiplication()){for(f=q.isWhitespace(-1);;){if(c=q.$re(/^[-+]\s+/)||!f&&(q.$char("+")||q.$char("-")),!c)break;if(b=this.multiplication(),!b)break;a.parensInOp=!0,b.parensInOp=!0,d=new e.Operation(c,[d||a,b],f),f=q.isWhitespace(-1)}return d||a}},conditions:function(){var a,b,c,d=q.i;if(a=this.condition(!0)){for(;;){if(!q.peek(/^,\s*(not\s*)?\(/)||!q.$char(","))break;if(b=this.condition(!0),!b)break;c=new e.Condition("or",c||a,b,d)}return c||a}},condition:function(a){function b(){return q.$str("or")}var c,d,f;if(c=this.conditionAnd(a)){if(d=b()){if(f=this.condition(a),!f)return;c=new e.Condition(d,c,f)}return c}},conditionAnd:function(a){function b(){var b=h.negatedCondition(a)||h.parenthesisCondition(a);return b||a?b:h.atomicCondition(a)}function c(){return q.$str("and")}var d,f,g,h=this;if(d=b()){if(f=c()){if(g=this.conditionAnd(a),!g)return;d=new e.Condition(f,d,g)}return d}},negatedCondition:function(a){if(q.$str("not")){var b=this.parenthesisCondition(a);return b&&(b.negate=!b.negate),b}},parenthesisCondition:function(a){function b(b){var c;return q.save(),(c=b.condition(a))&&q.$char(")")?(q.forget(),c):void q.restore()}var c;return q.save(),q.$str("(")?(c=b(this))?(q.forget(),c):(c=this.atomicCondition(a))?q.$char(")")?(q.forget(),c):void q.restore("expected ')' got '"+q.currentChar()+"'"):void q.restore():void q.restore()},atomicCondition:function(a){function b(){return this.addition()||h.keyword()||h.quoted()||h.mixinLookup()}var c,d,f,g,h=this.entities,i=q.i;if(b=b.bind(this),c=b())return q.$char(">")?g=q.$char("=")?">=":">":q.$char("<")?g=q.$char("=")?"<=":"<":q.$char("=")&&(g=q.$char(">")?"=>":q.$char("<")?"=<":"="),g?(d=b(),d?f=new e.Condition(g,c,d,i,(!1)):j("expected expression")):f=new e.Condition("=",c,new e.Keyword("true"),i,(!1)),f},operand:function(){var a,b=this.entities;q.peek(/^-[@\$\(]/)&&(a=q.$char("-"));var c=this.sub()||b.dimension()||b.color()||b.variable()||b.property()||b.call()||b.quoted(!0)||b.colorKeyword()||b.mixinLookup();return a&&(c.parensInOp=!0,c=new e.Negative(c)),c},expression:function(){var a,b,c=[],d=q.i;do a=this.comment(),a?c.push(a):(a=this.addition()||this.entity(),a&&(c.push(a),q.peek(/^\/[\/*]/)||(b=q.$char("/"),b&&c.push(new e.Anonymous(b,d)))));while(a);if(c.length>0)return new e.Expression(c)},property:function(){var a=q.$re(/^(\*?-?[_a-zA-Z0-9-]+)\s*:/);if(a)return a[1]},ruleProperty:function(){function a(a){var b=q.i,c=q.$re(a);if(c)return g.push(b),f.push(c[1])}var b,d,f=[],g=[];q.save();var h=q.$re(/^([_a-zA-Z0-9-]+)\s*:/);if(h)return f=[new e.Keyword(h[1])],q.forget(),f;for(a(/^(\*?)/);;)if(!a(/^((?:[\w-]+)|(?:[@\$]\{[\w-]+\}))/))break;if(f.length>1&&a(/^((?:\+_|\+)?)\s*:/)){for(q.forget(),""===f[0]&&(f.shift(),g.shift()),d=0;d<f.length;d++)b=f[d],f[d]="@"!==b.charAt(0)&&"$"!==b.charAt(0)?new e.Keyword(b):"@"===b.charAt(0)?new e.Variable("@"+b.slice(2,-1),g[d],c):new e.Property("$"+b.slice(2,-1),g[d],c);return f}q.restore()}}}};j.serializeVars=function(a){var b="";for(var c in a)if(Object.hasOwnProperty.call(a,c)){var d=a[c];b+=("@"===c[0]?"":"@")+c+": "+d+(";"===String(d).slice(-1)?"":";")}return b},b.exports=j},{"../functions/function-registry":27,"../less-error":38,"../tree":67,"../utils":89,"../visitors":93,"./parser-input":43}],45:[function(a,b,c){var d,e=function(a){this.less=a,this.visitors=[],this.preProcessors=[],this.postProcessors=[],this.installedPlugins=[],this.fileManagers=[],this.iterator=-1,this.pluginCache={},this.Loader=new a.PluginLoader(a)},f=function(a,b){return!b&&d||(d=new e(a)),d};e.prototype.addPlugins=function(a){if(a)for(var b=0;b<a.length;b++)this.addPlugin(a[b])},e.prototype.addPlugin=function(a,b,c){this.installedPlugins.push(a),b&&(this.pluginCache[b]=a),a.install&&a.install(this.less,this,c||this.less.functions.functionRegistry)},e.prototype.get=function(a){return this.pluginCache[a]},e.prototype.addVisitor=function(a){this.visitors.push(a)},e.prototype.addPreProcessor=function(a,b){var c;for(c=0;c<this.preProcessors.length&&!(this.preProcessors[c].priority>=b);c++);this.preProcessors.splice(c,0,{preProcessor:a,priority:b})},e.prototype.addPostProcessor=function(a,b){var c;for(c=0;c<this.postProcessors.length&&!(this.postProcessors[c].priority>=b);c++);this.postProcessors.splice(c,0,{postProcessor:a,priority:b})},e.prototype.addFileManager=function(a){this.fileManagers.push(a)},e.prototype.getPreProcessors=function(){for(var a=[],b=0;b<this.preProcessors.length;b++)a.push(this.preProcessors[b].preProcessor);return a},e.prototype.getPostProcessors=function(){for(var a=[],b=0;b<this.postProcessors.length;b++)a.push(this.postProcessors[b].postProcessor);return a},e.prototype.getVisitors=function(){return this.visitors},e.prototype.visitor=function(){var a=this;return{first:function(){return a.iterator=-1,a.visitors[a.iterator]},get:function(){return a.iterator+=1,a.visitors[a.iterator]}}},e.prototype.getFileManagers=function(){return this.fileManagers},b.exports=f},{}],46:[function(a,b,c){var d,e=a("./utils");b.exports=function(b,c,f){var g=function(b,f,h){if("function"==typeof f?(h=f,f=e.copyOptions(this.options,{})):f=e.copyOptions(this.options,f||{}),!h){d||(d="undefined"==typeof Promise?a("promise"):Promise);var i=this;return new d(function(a,c){g.call(i,b,f,function(b,d){b?c(b):a(d)})})}this.parse(b,f,function(a,b,d,e){if(a)return h(a);var f;try{var g=new c(b,d);f=g.toCSS(e)}catch(a){return h(a)}h(null,f)})};return g}},{"./utils":89,promise:void 0}],47:[function(a,b,c){b.exports=function(a,b){var c=function(a){this.options=a};return c.prototype.toCSS=function(b,c,d){var e=new a({contentsIgnoredCharsMap:d.contentsIgnoredChars,rootNode:b,contentsMap:d.contents,sourceMapFilename:this.options.sourceMapFilename,sourceMapURL:this.options.sourceMapURL,outputFilename:this.options.sourceMapOutputFilename,sourceMapBasepath:this.options.sourceMapBasepath,sourceMapRootpath:this.options.sourceMapRootpath,outputSourceFiles:this.options.outputSourceFiles,sourceMapGenerator:this.options.sourceMapGenerator,sourceMapFileInline:this.options.sourceMapFileInline}),f=e.toCSS(c);return this.sourceMap=e.sourceMap,this.sourceMapURL=e.sourceMapURL,this.options.sourceMapInputFilename&&(this.sourceMapInputFilename=e.normalizeFilename(this.options.sourceMapInputFilename)),void 0!==this.options.sourceMapBasepath&&void 0!==this.sourceMapURL&&(this.sourceMapURL=e.removeBasepath(this.sourceMapURL)),f+this.getCSSAppendage()},c.prototype.getCSSAppendage=function(){var a=this.sourceMapURL;if(this.options.sourceMapFileInline){if(void 0===this.sourceMap)return"";a="data:application/json;base64,"+b.encodeBase64(this.sourceMap)}return a?"/*# sourceMappingURL="+a+" */":""},c.prototype.getExternalSourceMap=function(){return this.sourceMap},c.prototype.setExternalSourceMap=function(a){this.sourceMap=a},c.prototype.isInline=function(){return this.options.sourceMapFileInline},c.prototype.getSourceMapURL=function(){return this.sourceMapURL},c.prototype.getOutputFilename=function(){return this.options.sourceMapOutputFilename},c.prototype.getInputFilename=function(){return this.sourceMapInputFilename},c}},{}],48:[function(a,b,c){b.exports=function(a){var b=function(b){this._css=[],this._rootNode=b.rootNode,this._contentsMap=b.contentsMap,this._contentsIgnoredCharsMap=b.contentsIgnoredCharsMap,b.sourceMapFilename&&(this._sourceMapFilename=b.sourceMapFilename.replace(/\\/g,"/")),this._outputFilename=b.outputFilename,this.sourceMapURL=b.sourceMapURL,b.sourceMapBasepath&&(this._sourceMapBasepath=b.sourceMapBasepath.replace(/\\/g,"/")),b.sourceMapRootpath?(this._sourceMapRootpath=b.sourceMapRootpath.replace(/\\/g,"/"),"/"!==this._sourceMapRootpath.charAt(this._sourceMapRootpath.length-1)&&(this._sourceMapRootpath+="/")):this._sourceMapRootpath="",this._outputSourceFiles=b.outputSourceFiles,this._sourceMapGeneratorConstructor=a.getSourceMapGenerator(),this._lineNumber=0,this._column=0};return b.prototype.removeBasepath=function(a){return this._sourceMapBasepath&&0===a.indexOf(this._sourceMapBasepath)&&(a=a.substring(this._sourceMapBasepath.length),"\\"!==a.charAt(0)&&"/"!==a.charAt(0)||(a=a.substring(1))),a},b.prototype.normalizeFilename=function(a){return a=a.replace(/\\/g,"/"),a=this.removeBasepath(a),(this._sourceMapRootpath||"")+a},b.prototype.add=function(a,b,c,d){if(a){var e,f,g,h,i;if(b&&b.filename){var j=this._contentsMap[b.filename];this._contentsIgnoredCharsMap[b.filename]&&(c-=this._contentsIgnoredCharsMap[b.filename],c<0&&(c=0),j=j.slice(this._contentsIgnoredCharsMap[b.filename])),j=j.substring(0,c),f=j.split("\n"),h=f[f.length-1]}if(e=a.split("\n"),g=e[e.length-1],b&&b.filename)if(d)for(i=0;i<e.length;i++)this._sourceMapGenerator.addMapping({generated:{line:this._lineNumber+i+1,column:0===i?this._column:0},original:{line:f.length+i,column:0===i?h.length:0},source:this.normalizeFilename(b.filename)});else this._sourceMapGenerator.addMapping({generated:{line:this._lineNumber+1,column:this._column},original:{line:f.length,column:h.length},source:this.normalizeFilename(b.filename)});1===e.length?this._column+=g.length:(this._lineNumber+=e.length-1,this._column=g.length),this._css.push(a)}},b.prototype.isEmpty=function(){return 0===this._css.length},b.prototype.toCSS=function(a){if(this._sourceMapGenerator=new this._sourceMapGeneratorConstructor({file:this._outputFilename,sourceRoot:null}),this._outputSourceFiles)for(var b in this._contentsMap)if(this._contentsMap.hasOwnProperty(b)){var c=this._contentsMap[b];this._contentsIgnoredCharsMap[b]&&(c=c.slice(this._contentsIgnoredCharsMap[b])),this._sourceMapGenerator.setSourceContent(this.normalizeFilename(b),c)}if(this._rootNode.genCSS(a,this),this._css.length>0){var d,e=JSON.stringify(this._sourceMapGenerator.toJSON());this.sourceMapURL?d=this.sourceMapURL:this._sourceMapFilename&&(d=this._sourceMapFilename),this.sourceMapURL=d,this.sourceMap=e}return this._css.join("")},b}},{}],49:[function(a,b,c){var d=a("./contexts"),e=a("./visitors"),f=a("./tree");b.exports=function(a,b){b=b||{};var c,g=b.variables,h=new d.Eval(b);"object"!=typeof g||Array.isArray(g)||(g=Object.keys(g).map(function(a){var b=g[a];return b instanceof f.Value||(b instanceof f.Expression||(b=new f.Expression([b])),b=new f.Value([b])),new f.Declaration("@"+a,b,(!1),null,0)}),h.frames=[new f.Ruleset(null,g)]);var i,j,k=[new e.JoinSelectorVisitor,new e.MarkVisibleSelectorsVisitor((!0)),new e.ExtendVisitor,new e.ToCSSVisitor({compress:Boolean(b.compress)})],l=[];if(b.pluginManager){j=b.pluginManager.visitor();for(var m=0;m<2;m++)for(j.first();i=j.get();)i.isPreEvalVisitor?0!==m&&l.indexOf(i)!==-1||(l.push(i),i.run(a)):0!==m&&k.indexOf(i)!==-1||(i.isPreVisitor?k.unshift(i):k.push(i))}c=a.eval(h);for(var m=0;m<k.length;m++)k[m].run(c);if(b.pluginManager)for(j.first();i=j.get();)k.indexOf(i)===-1&&l.indexOf(i)===-1&&i.run(c);return c}},{"./contexts":13,"./tree":67,"./visitors":93}],50:[function(a,b,c){var d=a("./node"),e=function(a,b,c,d,e,f){this.value=a,this._index=b,this._fileInfo=c,this.mapLines=d,this.rulesetLike="undefined"!=typeof e&&e,this.allowRoot=!0,this.copyVisibilityInfo(f)};e.prototype=new d,e.prototype.type="Anonymous",e.prototype.eval=function(){return new e(this.value,this._index,this._fileInfo,this.mapLines,this.rulesetLike,this.visibilityInfo())},e.prototype.compare=function(a){return a.toCSS&&this.toCSS()===a.toCSS()?0:void 0},e.prototype.isRulesetLike=function(){return this.rulesetLike},e.prototype.genCSS=function(a,b){this.nodeVisible=Boolean(this.value),this.nodeVisible&&b.add(this.value,this._fileInfo,this._index,this.mapLines)},b.exports=e},{"./node":76}],51:[function(a,b,c){var d=a("./node"),e=function(a,b){this.key=a,this.value=b};e.prototype=new d,e.prototype.type="Assignment",e.prototype.accept=function(a){this.value=a.visit(this.value)},e.prototype.eval=function(a){return this.value.eval?new e(this.key,this.value.eval(a)):this},e.prototype.genCSS=function(a,b){b.add(this.key+"="),this.value.genCSS?this.value.genCSS(a,b):b.add(this.value)},b.exports=e},{"./node":76}],52:[function(a,b,c){var d=a("./node"),e=a("./selector"),f=a("./ruleset"),g=a("./anonymous"),h=function(a,b,c,f,h,i,j,k){var l;if(this.name=a,this.value=b instanceof d?b:b?new g(b):b,c){for(Array.isArray(c)?this.rules=c:(this.rules=[c],this.rules[0].selectors=new e([],null,null,f,h).createEmptySelectors()),l=0;l<this.rules.length;l++)this.rules[l].allowImports=!0;this.setParent(this.rules,this)}this._index=f,this._fileInfo=h,this.debugInfo=i,this.isRooted=j||!1,this.copyVisibilityInfo(k),this.allowRoot=!0};h.prototype=new d,h.prototype.type="AtRule",h.prototype.accept=function(a){var b=this.value,c=this.rules;c&&(this.rules=a.visitArray(c)),b&&(this.value=a.visit(b))},h.prototype.isRulesetLike=function(){return this.rules||!this.isCharset()},h.prototype.isCharset=function(){return"@charset"===this.name},h.prototype.genCSS=function(a,b){var c=this.value,d=this.rules;b.add(this.name,this.fileInfo(),this.getIndex()),c&&(b.add(" "),c.genCSS(a,b)),d?this.outputRuleset(a,b,d):b.add(";")},h.prototype.eval=function(a){var b,c,d=this.value,e=this.rules;return b=a.mediaPath,c=a.mediaBlocks,a.mediaPath=[],a.mediaBlocks=[],d&&(d=d.eval(a)),e&&(e=[e[0].eval(a)],e[0].root=!0),a.mediaPath=b,a.mediaBlocks=c,new h(this.name,d,e,this.getIndex(),this.fileInfo(),this.debugInfo,this.isRooted,this.visibilityInfo())},h.prototype.variable=function(a){if(this.rules)return f.prototype.variable.call(this.rules[0],a)},h.prototype.find=function(){if(this.rules)return f.prototype.find.apply(this.rules[0],arguments)},h.prototype.rulesets=function(){if(this.rules)return f.prototype.rulesets.apply(this.rules[0])},h.prototype.outputRuleset=function(a,b,c){var d,e=c.length;if(a.tabLevel=(0|a.tabLevel)+1,a.compress){for(b.add("{"),d=0;d<e;d++)c[d].genCSS(a,b);return b.add("}"),void a.tabLevel--}var f="\n"+Array(a.tabLevel).join("  "),g=f+"  ";if(e){for(b.add(" {"+g),c[0].genCSS(a,b),d=1;d<e;d++)b.add(g),c[d].genCSS(a,b);b.add(f+"}")}else b.add(" {"+f+"}");a.tabLevel--},b.exports=h},{"./anonymous":50,"./node":76,"./ruleset":81,"./selector":82}],53:[function(a,b,c){var d=a("./node"),e=function(a,b,c){this.key=a,this.op=b,this.value=c};e.prototype=new d,e.prototype.type="Attribute",e.prototype.eval=function(a){return new e(this.key.eval?this.key.eval(a):this.key,this.op,this.value&&this.value.eval?this.value.eval(a):this.value)},e.prototype.genCSS=function(a,b){b.add(this.toCSS(a))},e.prototype.toCSS=function(a){var b=this.key.toCSS?this.key.toCSS(a):this.key;return this.op&&(b+=this.op,b+=this.value.toCSS?this.value.toCSS(a):this.value),"["+b+"]"},b.exports=e},{"./node":76}],54:[function(a,b,c){var d=a("./node"),e=a("./anonymous"),f=a("../functions/function-caller"),g=function(a,b,c,d){this.name=a,this.args=b,this.calc="calc"===a,this._index=c,this._fileInfo=d};g.prototype=new d,g.prototype.type="Call",g.prototype.accept=function(a){this.args&&(this.args=a.visitArray(this.args))},g.prototype.eval=function(a){var b=a.mathOn;a.mathOn=!this.calc,(this.calc||a.inCalc)&&a.enterCalc();var c=this.args.map(function(b){return b.eval(a)});(this.calc||a.inCalc)&&a.exitCalc(),a.mathOn=b;var h,i=new f(this.name,a,this.getIndex(),this.fileInfo());if(i.isValid()){try{h=i.call(c)}catch(j){throw{type:j.type||"Runtime",message:"error evaluating function `"+this.name+"`"+(j.message?": "+j.message:""),index:this.getIndex(),filename:this.fileInfo().filename,line:j.lineNumber,column:j.columnNumber}}if(null!==h&&void 0!==h)return h instanceof d||(h=new e(h&&h!==!0?h.toString():null)),h._index=this._index,h._fileInfo=this._fileInfo,h}return new g(this.name,c,this.getIndex(),this.fileInfo())},g.prototype.genCSS=function(a,b){b.add(this.name+"(",this.fileInfo(),this.getIndex());for(var c=0;c<this.args.length;c++)this.args[c].genCSS(a,b),c+1<this.args.length&&b.add(", ");b.add(")")},b.exports=g},{"../functions/function-caller":26,"./anonymous":50,"./node":76}],55:[function(a,b,c){function d(a,b){return Math.min(Math.max(a,0),b)}function e(a){return"#"+a.map(function(a){return a=d(Math.round(a),255),(a<16?"0":"")+a.toString(16)}).join("")}var f=a("./node"),g=a("../data/colors"),h=function(a,b,c){var d=this;Array.isArray(a)?this.rgb=a:a.length>=6?(this.rgb=[],a.match(/.{2}/g).map(function(a,b){b<3?d.rgb.push(parseInt(a,16)):d.alpha=parseInt(a,16)/255})):(this.rgb=[],a.split("").map(function(a,b){b<3?d.rgb.push(parseInt(a+a,16)):d.alpha=parseInt(a+a,16)/255})),this.alpha=this.alpha||("number"==typeof b?b:1),"undefined"!=typeof c&&(this.value=c)};h.prototype=new f,h.prototype.type="Color",h.prototype.luma=function(){var a=this.rgb[0]/255,b=this.rgb[1]/255,c=this.rgb[2]/255;return a=a<=.03928?a/12.92:Math.pow((a+.055)/1.055,2.4),b=b<=.03928?b/12.92:Math.pow((b+.055)/1.055,2.4),c=c<=.03928?c/12.92:Math.pow((c+.055)/1.055,2.4),.2126*a+.7152*b+.0722*c},h.prototype.genCSS=function(a,b){b.add(this.toCSS(a))},h.prototype.toCSS=function(a,b){var c,e,f,g=a&&a.compress&&!b,h=[];if(e=this.fround(a,this.alpha),this.value)if(0===this.value.indexOf("rgb"))e<1&&(f="rgba");else{if(0!==this.value.indexOf("hsl"))return this.value;f=e<1?"hsla":"hsl"}else e<1&&(f="rgba");switch(f){case"rgba":h=this.rgb.map(function(a){return d(Math.round(a),255)}).concat(d(e,1));break;case"hsla":h.push(d(e,1));case"hsl":c=this.toHSL(),h=[this.fround(a,c.h),this.fround(a,100*c.s)+"%",this.fround(a,100*c.l)+"%"].concat(h)}if(f)return f+"("+h.join(","+(g?"":" "))+")";if(c=this.toRGB(),g){var i=c.split("");i[1]===i[2]&&i[3]===i[4]&&i[5]===i[6]&&(c="#"+i[1]+i[3]+i[5])}return c},h.prototype.operate=function(a,b,c){for(var d=new Array(3),e=this.alpha*(1-c.alpha)+c.alpha,f=0;f<3;f++)d[f]=this._operate(a,b,this.rgb[f],c.rgb[f]);return new h(d,e)},h.prototype.toRGB=function(){return e(this.rgb)},h.prototype.toHSL=function(){var a,b,c=this.rgb[0]/255,d=this.rgb[1]/255,e=this.rgb[2]/255,f=this.alpha,g=Math.max(c,d,e),h=Math.min(c,d,e),i=(g+h)/2,j=g-h;if(g===h)a=b=0;else{switch(b=i>.5?j/(2-g-h):j/(g+h),g){case c:a=(d-e)/j+(d<e?6:0);break;case d:a=(e-c)/j+2;break;case e:a=(c-d)/j+4}a/=6}return{h:360*a,s:b,l:i,a:f}},h.prototype.toHSV=function(){var a,b,c=this.rgb[0]/255,d=this.rgb[1]/255,e=this.rgb[2]/255,f=this.alpha,g=Math.max(c,d,e),h=Math.min(c,d,e),i=g,j=g-h;if(b=0===g?0:j/g,g===h)a=0;else{switch(g){case c:a=(d-e)/j+(d<e?6:0);break;case d:a=(e-c)/j+2;break;case e:a=(c-d)/j+4}a/=6}return{h:360*a,s:b,v:i,a:f}},h.prototype.toARGB=function(){return e([255*this.alpha].concat(this.rgb))},h.prototype.compare=function(a){return a.rgb&&a.rgb[0]===this.rgb[0]&&a.rgb[1]===this.rgb[1]&&a.rgb[2]===this.rgb[2]&&a.alpha===this.alpha?0:void 0},h.fromKeyword=function(a){var b,c=a.toLowerCase();if(g.hasOwnProperty(c)?b=new h(g[c].slice(1)):"transparent"===c&&(b=new h([0,0,0],0)),b)return b.value=a,b},b.exports=h},{"../data/colors":14,"./node":76}],56:[function(a,b,c){var d=a("./node"),e=function(a){" "===a?(this.value=" ",this.emptyOrWhitespace=!0):(this.value=a?a.trim():"",this.emptyOrWhitespace=""===this.value)};e.prototype=new d,e.prototype.type="Combinator";var f={"":!0," ":!0,"|":!0};e.prototype.genCSS=function(a,b){var c=a.compress||f[this.value]?"":" ";b.add(c+this.value+c)},b.exports=e},{"./node":76}],57:[function(a,b,c){var d=a("./node"),e=a("./debug-info"),f=function(a,b,c,d){this.value=a,this.isLineComment=b,this._index=c,this._fileInfo=d,this.allowRoot=!0};f.prototype=new d,f.prototype.type="Comment",f.prototype.genCSS=function(a,b){this.debugInfo&&b.add(e(a,this),this.fileInfo(),this.getIndex()),b.add(this.value)},f.prototype.isSilent=function(a){var b=a.compress&&"!"!==this.value[2];return this.isLineComment||b},b.exports=f},{"./debug-info":59,"./node":76}],58:[function(a,b,c){var d=a("./node"),e=function(a,b,c,d,e){this.op=a.trim(),this.lvalue=b,this.rvalue=c,this._index=d,this.negate=e};e.prototype=new d,e.prototype.type="Condition",e.prototype.accept=function(a){this.lvalue=a.visit(this.lvalue),this.rvalue=a.visit(this.rvalue)},e.prototype.eval=function(a){var b=function(a,b,c){switch(a){case"and":return b&&c;case"or":return b||c;default:switch(d.compare(b,c)){case-1:return"<"===a||"=<"===a||"<="===a;case 0:return"="===a||">="===a||"=<"===a||"<="===a;case 1:return">"===a||">="===a;default:return!1}}}(this.op,this.lvalue.eval(a),this.rvalue.eval(a));return this.negate?!b:b},b.exports=e},{"./node":76}],59:[function(a,b,c){var d=function(a,b,c){var e="";if(a.dumpLineNumbers&&!a.compress)switch(a.dumpLineNumbers){case"comments":e=d.asComment(b);break;case"mediaquery":e=d.asMediaQuery(b);break;case"all":e=d.asComment(b)+(c||"")+d.asMediaQuery(b)}return e};d.asComment=function(a){return"/* line "+a.debugInfo.lineNumber+", "+a.debugInfo.fileName+" */\n"},d.asMediaQuery=function(a){var b=a.debugInfo.fileName;return/^[a-z]+:\/\//i.test(b)||(b="file://"+b),"@media -sass-debug-info{filename{font-family:"+b.replace(/([.:\/\\])/g,function(a){return"\\"==a&&(a="/"),"\\"+a})+"}line{font-family:\\00003"+a.debugInfo.lineNumber+"}}\n"},b.exports=d},{}],60:[function(a,b,c){function d(a,b){var c,d="",e=b.length,f={add:function(a){d+=a}};for(c=0;c<e;c++)b[c].eval(a).genCSS(a,f);return d}var e=a("./node"),f=a("./value"),g=a("./keyword"),h=a("./anonymous"),i=a("../constants").Math,j=function(a,b,c,d,g,i,j,k){this.name=a,this.value=b instanceof e?b:new f([b?new h(b):null]),this.important=c?" "+c.trim():"",this.merge=d,this._index=g,this._fileInfo=i,this.inline=j||!1,this.variable=void 0!==k?k:a.charAt&&"@"===a.charAt(0),this.allowRoot=!0,this.setParent(this.value,this)};j.prototype=new e,j.prototype.type="Declaration",j.prototype.genCSS=function(a,b){b.add(this.name+(a.compress?":":": "),this.fileInfo(),this.getIndex());try{this.value.genCSS(a,b)}catch(c){throw c.index=this._index,c.filename=this._fileInfo.filename,c}b.add(this.important+(this.inline||a.lastRule&&a.compress?"":";"),this._fileInfo,this._index)},j.prototype.eval=function(a){var b,c,e=!1,f=this.name,h=this.variable;"string"!=typeof f&&(f=1===f.length&&f[0]instanceof g?f[0].value:d(a,f),h=!1),"font"===f&&a.math===i.ALWAYS&&(e=!0,b=a.math,a.math=i.PARENS_DIVISION);try{if(a.importantScope.push({}),c=this.value.eval(a),!this.variable&&"DetachedRuleset"===c.type)throw{message:"Rulesets cannot be evaluated on a property.",index:this.getIndex(),filename:this.fileInfo().filename};var k=this.important,l=a.importantScope.pop();return!k&&l.important&&(k=l.important),new j(f,c,k,this.merge,this.getIndex(),this.fileInfo(),this.inline,h)}catch(m){throw"number"!=typeof m.index&&(m.index=this.getIndex(),m.filename=this.fileInfo().filename),m}finally{e&&(a.math=b)}},j.prototype.makeImportant=function(){return new j(this.name,this.value,"!important",this.merge,this.getIndex(),this.fileInfo(),this.inline)},b.exports=j},{"../constants":12,"./anonymous":50,"./keyword":70,"./node":76,"./value":86}],61:[function(a,b,c){var d=a("./node"),e=a("../contexts"),f=a("../utils"),g=function(a,b){this.ruleset=a,this.frames=b,this.setParent(this.ruleset,this)};g.prototype=new d,g.prototype.type="DetachedRuleset",g.prototype.evalFirst=!0,g.prototype.accept=function(a){this.ruleset=a.visit(this.ruleset)},g.prototype.eval=function(a){var b=this.frames||f.copyArray(a.frames);return new g(this.ruleset,b)},g.prototype.callEval=function(a){return this.ruleset.eval(this.frames?new e.Eval(a,this.frames.concat(a.frames)):a)},b.exports=g},{"../contexts":13,"../utils":89,"./node":76}],62:[function(a,b,c){var d=a("./node"),e=a("../data/unit-conversions"),f=a("./unit"),g=a("./color"),h=function(a,b){if(this.value=parseFloat(a),isNaN(this.value))throw new Error("Dimension is not a number.");this.unit=b&&b instanceof f?b:new f(b?[b]:void 0),this.setParent(this.unit,this)};h.prototype=new d,h.prototype.type="Dimension",h.prototype.accept=function(a){this.unit=a.visit(this.unit)},h.prototype.eval=function(a){return this},h.prototype.toColor=function(){return new g([this.value,this.value,this.value])},h.prototype.genCSS=function(a,b){if(a&&a.strictUnits&&!this.unit.isSingular())throw new Error("Multiple units in dimension. Correct the units or use the unit function. Bad unit: "+this.unit.toString());var c=this.fround(a,this.value),d=String(c);
+if(0!==c&&c<1e-6&&c>-1e-6&&(d=c.toFixed(20).replace(/0+$/,"")),a&&a.compress){if(0===c&&this.unit.isLength())return void b.add(d);c>0&&c<1&&(d=d.substr(1))}b.add(d),this.unit.genCSS(a,b)},h.prototype.operate=function(a,b,c){var d=this._operate(a,b,this.value,c.value),e=this.unit.clone();if("+"===b||"-"===b)if(0===e.numerator.length&&0===e.denominator.length)e=c.unit.clone(),this.unit.backupUnit&&(e.backupUnit=this.unit.backupUnit);else if(0===c.unit.numerator.length&&0===e.denominator.length);else{if(c=c.convertTo(this.unit.usedUnits()),a.strictUnits&&c.unit.toString()!==e.toString())throw new Error("Incompatible units. Change the units or use the unit function. Bad units: '"+e.toString()+"' and '"+c.unit.toString()+"'.");d=this._operate(a,b,this.value,c.value)}else"*"===b?(e.numerator=e.numerator.concat(c.unit.numerator).sort(),e.denominator=e.denominator.concat(c.unit.denominator).sort(),e.cancel()):"/"===b&&(e.numerator=e.numerator.concat(c.unit.denominator).sort(),e.denominator=e.denominator.concat(c.unit.numerator).sort(),e.cancel());return new h(d,e)},h.prototype.compare=function(a){var b,c;if(a instanceof h){if(this.unit.isEmpty()||a.unit.isEmpty())b=this,c=a;else if(b=this.unify(),c=a.unify(),0!==b.unit.compare(c.unit))return;return d.numericCompare(b.value,c.value)}},h.prototype.unify=function(){return this.convertTo({length:"px",duration:"s",angle:"rad"})},h.prototype.convertTo=function(a){var b,c,d,f,g,i=this.value,j=this.unit.clone(),k={};if("string"==typeof a){for(b in e)e[b].hasOwnProperty(a)&&(k={},k[b]=a);a=k}g=function(a,b){return d.hasOwnProperty(a)?(b?i/=d[a]/d[f]:i*=d[a]/d[f],f):a};for(c in a)a.hasOwnProperty(c)&&(f=a[c],d=e[c],j.map(g));return j.cancel(),new h(i,j)},b.exports=h},{"../data/unit-conversions":16,"./color":55,"./node":76,"./unit":84}],63:[function(a,b,c){var d=a("./node"),e=a("./paren"),f=a("./combinator"),g=function(a,b,c,d,e,g){this.combinator=a instanceof f?a:new f(a),this.value="string"==typeof b?b.trim():b?b:"",this.isVariable=c,this._index=d,this._fileInfo=e,this.copyVisibilityInfo(g),this.setParent(this.combinator,this)};g.prototype=new d,g.prototype.type="Element",g.prototype.accept=function(a){var b=this.value;this.combinator=a.visit(this.combinator),"object"==typeof b&&(this.value=a.visit(b))},g.prototype.eval=function(a){return new g(this.combinator,this.value.eval?this.value.eval(a):this.value,this.isVariable,this.getIndex(),this.fileInfo(),this.visibilityInfo())},g.prototype.clone=function(){return new g(this.combinator,this.value,this.isVariable,this.getIndex(),this.fileInfo(),this.visibilityInfo())},g.prototype.genCSS=function(a,b){b.add(this.toCSS(a),this.fileInfo(),this.getIndex())},g.prototype.toCSS=function(a){a=a||{};var b=this.value,c=a.firstSelector;return b instanceof e&&(a.firstSelector=!0),b=b.toCSS?b.toCSS(a):b,a.firstSelector=c,""===b&&"&"===this.combinator.value.charAt(0)?"":this.combinator.toCSS(a)+b},b.exports=g},{"./combinator":56,"./node":76,"./paren":78}],64:[function(a,b,c){var d=a("./node"),e=a("./paren"),f=a("./comment"),g=a("./dimension"),h=a("../constants").Math,i=function(a,b){if(this.value=a,this.noSpacing=b,!a)throw new Error("Expression requires an array parameter")};i.prototype=new d,i.prototype.type="Expression",i.prototype.accept=function(a){this.value=a.visitArray(this.value)},i.prototype.eval=function(a){var b,c=a.isMathOn(),d=this.parens&&(a.math!==h.STRICT_LEGACY||!this.parensInOp),f=!1;return d&&a.inParenthesis(),this.value.length>1?b=new i(this.value.map(function(b){return b.eval?b.eval(a):b}),this.noSpacing):1===this.value.length?(!this.value[0].parens||this.value[0].parensInOp||a.inCalc||(f=!0),b=this.value[0].eval(a)):b=this,d&&a.outOfParenthesis(),!this.parens||!this.parensInOp||c||f||b instanceof g||(b=new e(b)),b},i.prototype.genCSS=function(a,b){for(var c=0;c<this.value.length;c++)this.value[c].genCSS(a,b),!this.noSpacing&&c+1<this.value.length&&b.add(" ")},i.prototype.throwAwayComments=function(){this.value=this.value.filter(function(a){return!(a instanceof f)})},b.exports=i},{"../constants":12,"./comment":57,"./dimension":62,"./node":76,"./paren":78}],65:[function(a,b,c){var d=a("./node"),e=a("./selector"),f=function g(a,b,c,d,e){switch(this.selector=a,this.option=b,this.object_id=g.next_id++,this.parent_ids=[this.object_id],this._index=c,this._fileInfo=d,this.copyVisibilityInfo(e),this.allowRoot=!0,b){case"all":this.allowBefore=!0,this.allowAfter=!0;break;default:this.allowBefore=!1,this.allowAfter=!1}this.setParent(this.selector,this)};f.next_id=0,f.prototype=new d,f.prototype.type="Extend",f.prototype.accept=function(a){this.selector=a.visit(this.selector)},f.prototype.eval=function(a){return new f(this.selector.eval(a),this.option,this.getIndex(),this.fileInfo(),this.visibilityInfo())},f.prototype.clone=function(a){return new f(this.selector,this.option,this.getIndex(),this.fileInfo(),this.visibilityInfo())},f.prototype.findSelfSelectors=function(a){var b,c,d=[];for(b=0;b<a.length;b++)c=a[b].elements,b>0&&c.length&&""===c[0].combinator.value&&(c[0].combinator.value=" "),d=d.concat(a[b].elements);this.selfSelectors=[new e(d)],this.selfSelectors[0].copyVisibilityInfo(this.visibilityInfo())},b.exports=f},{"./node":76,"./selector":82}],66:[function(a,b,c){var d=a("./node"),e=a("./media"),f=a("./url"),g=a("./quoted"),h=a("./ruleset"),i=a("./anonymous"),j=a("../utils"),k=a("../less-error"),l=function(a,b,c,d,e,f){if(this.options=c,this._index=d,this._fileInfo=e,this.path=a,this.features=b,this.allowRoot=!0,void 0!==this.options.less||this.options.inline)this.css=!this.options.less||this.options.inline;else{var g=this.getPath();g&&/[#\.\&\?]css([\?;].*)?$/.test(g)&&(this.css=!0)}this.copyVisibilityInfo(f),this.setParent(this.features,this),this.setParent(this.path,this)};l.prototype=new d,l.prototype.type="Import",l.prototype.accept=function(a){this.features&&(this.features=a.visit(this.features)),this.path=a.visit(this.path),this.options.isPlugin||this.options.inline||!this.root||(this.root=a.visit(this.root))},l.prototype.genCSS=function(a,b){this.css&&void 0===this.path._fileInfo.reference&&(b.add("@import ",this._fileInfo,this._index),this.path.genCSS(a,b),this.features&&(b.add(" "),this.features.genCSS(a,b)),b.add(";"))},l.prototype.getPath=function(){return this.path instanceof f?this.path.value.value:this.path.value},l.prototype.isVariableImport=function(){var a=this.path;return a instanceof f&&(a=a.value),!(a instanceof g)||a.containsVariables()},l.prototype.evalForImport=function(a){var b=this.path;return b instanceof f&&(b=b.value),new l(b.eval(a),this.features,this.options,this._index,this._fileInfo,this.visibilityInfo())},l.prototype.evalPath=function(a){var b=this.path.eval(a),c=this._fileInfo;if(!(b instanceof f)){var d=b.value;b.value=c&&d&&a.pathRequiresRewrite(d)?a.rewritePath(d,c.rootpath):a.normalizePath(b.value)}return b},l.prototype.eval=function(a){var b=this.doEval(a);return(this.options.reference||this.blocksVisibility())&&(b.length||0===b.length?b.forEach(function(a){a.addVisibilityBlock()}):b.addVisibilityBlock()),b},l.prototype.doEval=function(a){var b,c,d=this.features&&this.features.eval(a);if(this.options.isPlugin){if(this.root&&this.root.eval)try{this.root.eval(a)}catch(f){throw f.message="Plugin error during evaluation",new k(f,this.root.imports,this.root.filename)}return c=a.frames[0]&&a.frames[0].functionRegistry,c&&this.root&&this.root.functions&&c.addMultiple(this.root.functions),[]}if(this.skip&&("function"==typeof this.skip&&(this.skip=this.skip()),this.skip))return[];if(this.options.inline){var g=new i(this.root,0,{filename:this.importedFilename,reference:this.path._fileInfo&&this.path._fileInfo.reference},(!0),(!0));return this.features?new e([g],this.features.value):[g]}if(this.css){var m=new l(this.evalPath(a),d,this.options,this._index);if(!m.css&&this.error)throw this.error;return m}return b=new h(null,j.copyArray(this.root.rules)),b.evalImports(a),this.features?new e(b.rules,this.features.value):b.rules},b.exports=l},{"../less-error":38,"../utils":89,"./anonymous":50,"./media":71,"./node":76,"./quoted":80,"./ruleset":81,"./url":85}],67:[function(a,b,c){var d=Object.create(null);d.Node=a("./node"),d.Color=a("./color"),d.AtRule=a("./atrule"),d.DetachedRuleset=a("./detached-ruleset"),d.Operation=a("./operation"),d.Dimension=a("./dimension"),d.Unit=a("./unit"),d.Keyword=a("./keyword"),d.Variable=a("./variable"),d.Property=a("./property"),d.Ruleset=a("./ruleset"),d.Element=a("./element"),d.Attribute=a("./attribute"),d.Combinator=a("./combinator"),d.Selector=a("./selector"),d.Quoted=a("./quoted"),d.Expression=a("./expression"),d.Declaration=a("./declaration"),d.Call=a("./call"),d.URL=a("./url"),d.Import=a("./import"),d.mixin={Call:a("./mixin-call"),Definition:a("./mixin-definition")},d.Comment=a("./comment"),d.Anonymous=a("./anonymous"),d.Value=a("./value"),d.JavaScript=a("./javascript"),d.Assignment=a("./assignment"),d.Condition=a("./condition"),d.Paren=a("./paren"),d.Media=a("./media"),d.UnicodeDescriptor=a("./unicode-descriptor"),d.Negative=a("./negative"),d.Extend=a("./extend"),d.VariableCall=a("./variable-call"),d.NamespaceValue=a("./namespace-value"),b.exports=d},{"./anonymous":50,"./assignment":51,"./atrule":52,"./attribute":53,"./call":54,"./color":55,"./combinator":56,"./comment":57,"./condition":58,"./declaration":60,"./detached-ruleset":61,"./dimension":62,"./element":63,"./expression":64,"./extend":65,"./import":66,"./javascript":68,"./keyword":70,"./media":71,"./mixin-call":72,"./mixin-definition":73,"./namespace-value":74,"./negative":75,"./node":76,"./operation":77,"./paren":78,"./property":79,"./quoted":80,"./ruleset":81,"./selector":82,"./unicode-descriptor":83,"./unit":84,"./url":85,"./value":86,"./variable":88,"./variable-call":87}],68:[function(a,b,c){var d=a("./js-eval-node"),e=a("./dimension"),f=a("./quoted"),g=a("./anonymous"),h=function(a,b,c,d){this.escaped=b,this.expression=a,this._index=c,this._fileInfo=d};h.prototype=new d,h.prototype.type="JavaScript",h.prototype.eval=function(a){var b=this.evaluateJavaScript(this.expression,a),c=typeof b;return"number"!==c||isNaN(b)?"string"===c?new f('"'+b+'"',b,this.escaped,this._index):new g(Array.isArray(b)?b.join(", "):b):new e(b)},b.exports=h},{"./anonymous":50,"./dimension":62,"./js-eval-node":69,"./quoted":80}],69:[function(a,b,c){var d=a("./node"),e=a("./variable"),f=function(){};f.prototype=new d,f.prototype.evaluateJavaScript=function(a,b){var c,d=this,f={};if(!b.javascriptEnabled)throw{message:"Inline JavaScript is not enabled. Is it set in your options?",filename:this.fileInfo().filename,index:this.getIndex()};a=a.replace(/@\{([\w-]+)\}/g,function(a,c){return d.jsify(new e("@"+c,d.getIndex(),d.fileInfo()).eval(b))});try{a=new Function("return ("+a+")")}catch(g){throw{message:"JavaScript evaluation error: "+g.message+" from `"+a+"`",filename:this.fileInfo().filename,index:this.getIndex()}}var h=b.frames[0].variables();for(var i in h)h.hasOwnProperty(i)&&(f[i.slice(1)]={value:h[i].value,toJS:function(){return this.value.eval(b).toCSS()}});try{c=a.call(f)}catch(g){throw{message:"JavaScript evaluation error: '"+g.name+": "+g.message.replace(/["]/g,"'")+"'",filename:this.fileInfo().filename,index:this.getIndex()}}return c},f.prototype.jsify=function(a){return Array.isArray(a.value)&&a.value.length>1?"["+a.value.map(function(a){return a.toCSS()}).join(", ")+"]":a.toCSS()},b.exports=f},{"./node":76,"./variable":88}],70:[function(a,b,c){var d=a("./node"),e=function(a){this.value=a};e.prototype=new d,e.prototype.type="Keyword",e.prototype.genCSS=function(a,b){if("%"===this.value)throw{type:"Syntax",message:"Invalid % without number"};b.add(this.value)},e.True=new e("true"),e.False=new e("false"),b.exports=e},{"./node":76}],71:[function(a,b,c){var d=a("./ruleset"),e=a("./value"),f=a("./selector"),g=a("./anonymous"),h=a("./expression"),i=a("./atrule"),j=a("../utils"),k=function(a,b,c,g,h){this._index=c,this._fileInfo=g;var i=new f([],null,null,this._index,this._fileInfo).createEmptySelectors();this.features=new e(b),this.rules=[new d(i,a)],this.rules[0].allowImports=!0,this.copyVisibilityInfo(h),this.allowRoot=!0,this.setParent(i,this),this.setParent(this.features,this),this.setParent(this.rules,this)};k.prototype=new i,k.prototype.type="Media",k.prototype.isRulesetLike=function(){return!0},k.prototype.accept=function(a){this.features&&(this.features=a.visit(this.features)),this.rules&&(this.rules=a.visitArray(this.rules))},k.prototype.genCSS=function(a,b){b.add("@media ",this._fileInfo,this._index),this.features.genCSS(a,b),this.outputRuleset(a,b,this.rules)},k.prototype.eval=function(a){a.mediaBlocks||(a.mediaBlocks=[],a.mediaPath=[]);var b=new k(null,[],this._index,this._fileInfo,this.visibilityInfo());return this.debugInfo&&(this.rules[0].debugInfo=this.debugInfo,b.debugInfo=this.debugInfo),b.features=this.features.eval(a),a.mediaPath.push(b),a.mediaBlocks.push(b),this.rules[0].functionRegistry=a.frames[0].functionRegistry.inherit(),a.frames.unshift(this.rules[0]),b.rules=[this.rules[0].eval(a)],a.frames.shift(),a.mediaPath.pop(),0===a.mediaPath.length?b.evalTop(a):b.evalNested(a)},k.prototype.evalTop=function(a){var b=this;if(a.mediaBlocks.length>1){var c=new f([],null,null,this.getIndex(),this.fileInfo()).createEmptySelectors();b=new d(c,a.mediaBlocks),b.multiMedia=!0,b.copyVisibilityInfo(this.visibilityInfo()),this.setParent(b,this)}return delete a.mediaBlocks,delete a.mediaPath,b},k.prototype.evalNested=function(a){var b,c,f=a.mediaPath.concat([this]);for(b=0;b<f.length;b++)c=f[b].features instanceof e?f[b].features.value:f[b].features,f[b]=Array.isArray(c)?c:[c];return this.features=new e(this.permute(f).map(function(a){for(a=a.map(function(a){return a.toCSS?a:new g(a)}),b=a.length-1;b>0;b--)a.splice(b,0,new g("and"));return new h(a)})),this.setParent(this.features,this),new d([],[])},k.prototype.permute=function(a){if(0===a.length)return[];if(1===a.length)return a[0];for(var b=[],c=this.permute(a.slice(1)),d=0;d<c.length;d++)for(var e=0;e<a[0].length;e++)b.push([a[0][e]].concat(c[d]));return b},k.prototype.bubbleSelectors=function(a){a&&(this.rules=[new d(j.copyArray(a),[this.rules[0]])],this.setParent(this.rules,this))},b.exports=k},{"../utils":89,"./anonymous":50,"./atrule":52,"./expression":64,"./ruleset":81,"./selector":82,"./value":86}],72:[function(a,b,c){var d=a("./node"),e=a("./selector"),f=a("./mixin-definition"),g=a("../functions/default"),h=function(a,b,c,d,f){this.selector=new e(a),this.arguments=b||[],this._index=c,this._fileInfo=d,this.important=f,this.allowRoot=!0,this.setParent(this.selector,this)};h.prototype=new d,h.prototype.type="MixinCall",h.prototype.accept=function(a){this.selector&&(this.selector=a.visit(this.selector)),this.arguments.length&&(this.arguments=a.visitArray(this.arguments))},h.prototype.eval=function(a){function b(b,c){var d,e,f;for(d=0;d<2;d++){for(x[d]=!0,g.value(d),e=0;e<c.length&&x[d];e++)f=c[e],f.matchCondition&&(x[d]=x[d]&&f.matchCondition(null,a));b.matchCondition&&(x[d]=x[d]&&b.matchCondition(t,a))}return x[0]||x[1]?x[0]!=x[1]?x[1]?A:B:z:y}var c,d,e,h,i,j,k,l,m,n,o,p,q,r,s,t=[],u=[],v=!1,w=[],x=[],y=-1,z=0,A=1,B=2;for(this.selector=this.selector.eval(a),j=0;j<this.arguments.length;j++)if(h=this.arguments[j],i=h.value.eval(a),h.expand&&Array.isArray(i.value))for(i=i.value,k=0;k<i.length;k++)t.push({value:i[k]});else t.push({name:h.name,value:i});for(s=function(b){return b.matchArgs(null,a)},j=0;j<a.frames.length;j++)if((c=a.frames[j].find(this.selector,null,s)).length>0){for(n=!0,k=0;k<c.length;k++){for(d=c[k].rule,e=c[k].path,m=!1,l=0;l<a.frames.length;l++)if(!(d instanceof f)&&d===(a.frames[l].originalRuleset||a.frames[l])){m=!0;break}m||d.matchArgs(t,a)&&(o={mixin:d,group:b(d,e)},o.group!==y&&w.push(o),v=!0)}for(g.reset(),q=[0,0,0],k=0;k<w.length;k++)q[w[k].group]++;if(q[z]>0)p=B;else if(p=A,q[A]+q[B]>1)throw{type:"Runtime",message:"Ambiguous use of `default()` found when matching for `"+this.format(t)+"`",index:this.getIndex(),filename:this.fileInfo().filename};for(k=0;k<w.length;k++)if(o=w[k].group,o===z||o===p)try{d=w[k].mixin,d instanceof f||(r=d.originalRuleset||d,d=new f("",[],d.rules,null,(!1),null,r.visibilityInfo()),d.originalRuleset=r);var C=d.evalCall(a,t,this.important).rules;this._setVisibilityToReplacement(C),Array.prototype.push.apply(u,C)}catch(D){throw{message:D.message,index:this.getIndex(),filename:this.fileInfo().filename,stack:D.stack}}if(v)return u}throw n?{type:"Runtime",message:"No matching definition was found for `"+this.format(t)+"`",index:this.getIndex(),filename:this.fileInfo().filename}:{type:"Name",message:this.selector.toCSS().trim()+" is undefined",index:this.getIndex(),filename:this.fileInfo().filename}},h.prototype._setVisibilityToReplacement=function(a){var b,c;if(this.blocksVisibility())for(b=0;b<a.length;b++)c=a[b],c.addVisibilityBlock()},h.prototype.format=function(a){return this.selector.toCSS().trim()+"("+(a?a.map(function(a){var b="";return a.name&&(b+=a.name+":"),b+=a.value.toCSS?a.value.toCSS():"???"}).join(", "):"")+")"},b.exports=h},{"../functions/default":25,"./mixin-definition":73,"./node":76,"./selector":82}],73:[function(a,b,c){var d=a("./selector"),e=a("./element"),f=a("./ruleset"),g=a("./declaration"),h=a("./detached-ruleset"),i=a("./expression"),j=a("../contexts"),k=a("../utils"),l=function(a,b,c,f,g,h,i){this.name=a||"anonymous mixin",this.selectors=[new d([new e(null,a,(!1),this._index,this._fileInfo)])],this.params=b,this.condition=f,this.variadic=g,this.arity=b.length,this.rules=c,this._lookups={};var j=[];this.required=b.reduce(function(a,b){return!b.name||b.name&&!b.value?a+1:(j.push(b.name),a)},0),this.optionalParameters=j,this.frames=h,this.copyVisibilityInfo(i),this.allowRoot=!0};l.prototype=new f,l.prototype.type="MixinDefinition",l.prototype.evalFirst=!0,l.prototype.accept=function(a){this.params&&this.params.length&&(this.params=a.visitArray(this.params)),this.rules=a.visitArray(this.rules),this.condition&&(this.condition=a.visit(this.condition))},l.prototype.evalParams=function(a,b,c,d){var e,l,m,n,o,p,q,r,s=new f(null,null),t=k.copyArray(this.params),u=0;if(b.frames&&b.frames[0]&&b.frames[0].functionRegistry&&(s.functionRegistry=b.frames[0].functionRegistry.inherit()),b=new j.Eval(b,[s].concat(b.frames)),c)for(c=k.copyArray(c),u=c.length,m=0;m<u;m++)if(l=c[m],p=l&&l.name){for(q=!1,n=0;n<t.length;n++)if(!d[n]&&p===t[n].name){d[n]=l.value.eval(a),s.prependRule(new g(p,l.value.eval(a))),q=!0;break}if(q){c.splice(m,1),m--;continue}throw{type:"Runtime",message:"Named argument for "+this.name+" "+c[m].name+" not found"}}for(r=0,m=0;m<t.length;m++)if(!d[m]){if(l=c&&c[r],p=t[m].name)if(t[m].variadic){for(e=[],n=r;n<u;n++)e.push(c[n].value.eval(a));s.prependRule(new g(p,new i(e).eval(a)))}else{if(o=l&&l.value)o=Array.isArray(o)?new h(new f("",o)):o.eval(a);else{if(!t[m].value)throw{type:"Runtime",message:"wrong number of arguments for "+this.name+" ("+u+" for "+this.arity+")"};o=t[m].value.eval(b),s.resetCache()}s.prependRule(new g(p,o)),d[m]=o}if(t[m].variadic&&c)for(n=r;n<u;n++)d[n]=c[n].value.eval(a);r++}return s},l.prototype.makeImportant=function(){var a=this.rules?this.rules.map(function(a){return a.makeImportant?a.makeImportant(!0):a}):this.rules,b=new l(this.name,this.params,a,this.condition,this.variadic,this.frames);return b},l.prototype.eval=function(a){return new l(this.name,this.params,this.rules,this.condition,this.variadic,this.frames||k.copyArray(a.frames))},l.prototype.evalCall=function(a,b,c){var d,e,h=[],l=this.frames?this.frames.concat(a.frames):a.frames,m=this.evalParams(a,new j.Eval(a,l),b,h);return m.prependRule(new g("@arguments",new i(h).eval(a))),d=k.copyArray(this.rules),e=new f(null,d),e.originalRuleset=this,e=e.eval(new j.Eval(a,[this,m].concat(l))),c&&(e=e.makeImportant()),e},l.prototype.matchCondition=function(a,b){return!(this.condition&&!this.condition.eval(new j.Eval(b,[this.evalParams(b,new j.Eval(b,this.frames?this.frames.concat(b.frames):b.frames),a,[])].concat(this.frames||[]).concat(b.frames))))},l.prototype.matchArgs=function(a,b){var c,d=a&&a.length||0,e=this.optionalParameters,f=a?a.reduce(function(a,b){return e.indexOf(b.name)<0?a+1:a},0):0;if(this.variadic){if(f<this.required-1)return!1}else{if(f<this.required)return!1;if(d>this.params.length)return!1}c=Math.min(f,this.arity);for(var g=0;g<c;g++)if(!this.params[g].name&&!this.params[g].variadic&&a[g].value.eval(b).toCSS()!=this.params[g].value.eval(b).toCSS())return!1;return!0},b.exports=l},{"../contexts":13,"../utils":89,"./declaration":60,"./detached-ruleset":61,"./element":63,"./expression":64,"./ruleset":81,"./selector":82}],74:[function(a,b,c){var d=a("./node"),e=a("./variable"),f=a("./ruleset"),g=a("./selector"),h=function(a,b,c,d,e){this.value=a,this.lookups=b,this.important=c,this._index=d,this._fileInfo=e};h.prototype=new d,h.prototype.type="NamespaceValue",h.prototype.eval=function(a){var b,c,d=this.value.eval(a);for(b=0;b<this.lookups.length;b++){if(c=this.lookups[b],Array.isArray(d)&&(d=new f([new g],d)),""===c)d=d.lastDeclaration();else if("@"===c.charAt(0)){if("@"===c.charAt(1)&&(c="@"+new e(c.substr(1)).eval(a).value),d.variables&&(d=d.variable(c)),!d)throw{type:"Name",message:"variable "+c+" not found",filename:this.fileInfo().filename,index:this.getIndex()}}else{if(c="$@"===c.substring(0,2)?"$"+new e(c.substr(1)).eval(a).value:"$"===c.charAt(0)?c:"$"+c,d.properties&&(d=d.property(c)),!d)throw{type:"Name",message:'property "'+c.substr(1)+'" not found',filename:this.fileInfo().filename,index:this.getIndex()};d=d[d.length-1]}d.value&&(d=d.eval(a).value),d.ruleset&&(d=d.ruleset.eval(a))}return d},b.exports=h},{"./node":76,"./ruleset":81,"./selector":82,"./variable":88}],75:[function(a,b,c){var d=a("./node"),e=a("./operation"),f=a("./dimension"),g=function(a){this.value=a};g.prototype=new d,g.prototype.type="Negative",g.prototype.genCSS=function(a,b){b.add("-"),this.value.genCSS(a,b)},g.prototype.eval=function(a){return a.isMathOn()?new e("*",[new f((-1)),this.value]).eval(a):new g(this.value.eval(a))},b.exports=g},{"./dimension":62,"./node":76,"./operation":77}],76:[function(a,b,c){var d=function(){this.parent=null,this.visibilityBlocks=void 0,this.nodeVisible=void 0,this.rootNode=null,this.parsed=null;var a=this;Object.defineProperty(this,"currentFileInfo",{get:function(){return a.fileInfo()}}),Object.defineProperty(this,"index",{get:function(){return a.getIndex()}})};d.prototype.setParent=function(a,b){function c(a){a&&a instanceof d&&(a.parent=b)}Array.isArray(a)?a.forEach(c):c(a)},d.prototype.getIndex=function(){return this._index||this.parent&&this.parent.getIndex()||0},d.prototype.fileInfo=function(){return this._fileInfo||this.parent&&this.parent.fileInfo()||{}},d.prototype.isRulesetLike=function(){return!1},d.prototype.toCSS=function(a){var b=[];return this.genCSS(a,{add:function(a,c,d){b.push(a)},isEmpty:function(){return 0===b.length}}),b.join("")},d.prototype.genCSS=function(a,b){b.add(this.value)},d.prototype.accept=function(a){this.value=a.visit(this.value)},d.prototype.eval=function(){return this},d.prototype._operate=function(a,b,c,d){switch(b){case"+":return c+d;case"-":return c-d;case"*":return c*d;case"/":return c/d}},d.prototype.fround=function(a,b){var c=a&&a.numPrecision;return c?Number((b+2e-16).toFixed(c)):b},d.compare=function(a,b){if(a.compare&&"Quoted"!==b.type&&"Anonymous"!==b.type)return a.compare(b);if(b.compare)return-b.compare(a);if(a.type===b.type){if(a=a.value,b=b.value,!Array.isArray(a))return a===b?0:void 0;if(a.length===b.length){for(var c=0;c<a.length;c++)if(0!==d.compare(a[c],b[c]))return;return 0}}},d.numericCompare=function(a,b){return a<b?-1:a===b?0:a>b?1:void 0},d.prototype.blocksVisibility=function(){return null==this.visibilityBlocks&&(this.visibilityBlocks=0),0!==this.visibilityBlocks},d.prototype.addVisibilityBlock=function(){null==this.visibilityBlocks&&(this.visibilityBlocks=0),this.visibilityBlocks=this.visibilityBlocks+1},d.prototype.removeVisibilityBlock=function(){null==this.visibilityBlocks&&(this.visibilityBlocks=0),this.visibilityBlocks=this.visibilityBlocks-1},d.prototype.ensureVisibility=function(){this.nodeVisible=!0},d.prototype.ensureInvisibility=function(){this.nodeVisible=!1},d.prototype.isVisible=function(){return this.nodeVisible},d.prototype.visibilityInfo=function(){return{visibilityBlocks:this.visibilityBlocks,nodeVisible:this.nodeVisible}},d.prototype.copyVisibilityInfo=function(a){a&&(this.visibilityBlocks=a.visibilityBlocks,this.nodeVisible=a.nodeVisible)},b.exports=d},{}],77:[function(a,b,c){var d=a("./node"),e=a("./color"),f=a("./dimension"),g=a("../constants").Math,h=function(a,b,c){this.op=a.trim(),this.operands=b,this.isSpaced=c};h.prototype=new d,h.prototype.type="Operation",h.prototype.accept=function(a){this.operands=a.visit(this.operands)},h.prototype.eval=function(a){var b,c=this.operands[0].eval(a),d=this.operands[1].eval(a);if(a.isMathOn(this.op)){if(b="./"===this.op?"/":this.op,c instanceof f&&d instanceof e&&(c=c.toColor()),d instanceof f&&c instanceof e&&(d=d.toColor()),!c.operate){if(c instanceof h&&"/"===c.op&&a.math===g.PARENS_DIVISION)return new h(this.op,[c,d],this.isSpaced);throw{type:"Operation",message:"Operation on an invalid type"}}return c.operate(a,b,d)}return new h(this.op,[c,d],this.isSpaced)},h.prototype.genCSS=function(a,b){this.operands[0].genCSS(a,b),this.isSpaced&&b.add(" "),b.add(this.op),this.isSpaced&&b.add(" "),this.operands[1].genCSS(a,b)},b.exports=h},{"../constants":12,"./color":55,"./dimension":62,"./node":76}],78:[function(a,b,c){var d=a("./node"),e=function(a){this.value=a};e.prototype=new d,e.prototype.type="Paren",e.prototype.genCSS=function(a,b){b.add("("),this.value.genCSS(a,b),b.add(")")},e.prototype.eval=function(a){return new e(this.value.eval(a))},b.exports=e},{"./node":76}],79:[function(a,b,c){var d=a("./node"),e=a("./declaration"),f=function(a,b,c){this.name=a,this._index=b,this._fileInfo=c};f.prototype=new d,f.prototype.type="Property",f.prototype.eval=function(a){var b,c=this.name,d=a.pluginManager.less.visitors.ToCSSVisitor.prototype._mergeRules;if(this.evaluating)throw{type:"Name",message:"Recursive property reference for "+c,filename:this.fileInfo().filename,index:this.getIndex()};if(this.evaluating=!0,b=this.find(a.frames,function(b){var f,g=b.property(c);if(g){for(var h=0;h<g.length;h++)f=g[h],g[h]=new e(f.name,f.value,f.important,f.merge,f.index,f.currentFileInfo,f.inline,f.variable);if(d(g),f=g[g.length-1],f.important){var i=a.importantScope[a.importantScope.length-1];i.important=f.important}return f=f.value.eval(a)}}))return this.evaluating=!1,b;throw{type:"Name",message:"Property '"+c+"' is undefined",filename:this.currentFileInfo.filename,index:this.index}},f.prototype.find=function(a,b){for(var c,d=0;d<a.length;d++)if(c=b.call(a,a[d]))return c;return null},b.exports=f},{"./declaration":60,"./node":76}],80:[function(a,b,c){var d=a("./node"),e=a("./variable"),f=a("./property"),g=function(a,b,c,d,e){this.escaped=null==c||c,this.value=b||"",this.quote=a.charAt(0),this._index=d,this._fileInfo=e,this.variableRegex=/@\{([\w-]+)\}/g,this.propRegex=/\$\{([\w-]+)\}/g};g.prototype=new d,g.prototype.type="Quoted",g.prototype.genCSS=function(a,b){this.escaped||b.add(this.quote,this.fileInfo(),this.getIndex()),b.add(this.value),this.escaped||b.add(this.quote)},g.prototype.containsVariables=function(){return this.value.match(this.variableRegex)},g.prototype.eval=function(a){function b(a,b,c){var d=a;do a=d,d=a.replace(b,c);while(a!==d);return d}var c=this,d=this.value,h=function(b,d){var f=new e("@"+d,c.getIndex(),c.fileInfo()).eval(a,!0);return f instanceof g?f.value:f.toCSS()},i=function(b,d){var e=new f("$"+d,c.getIndex(),c.fileInfo()).eval(a,!0);return e instanceof g?e.value:e.toCSS()};return d=b(d,this.variableRegex,h),d=b(d,this.propRegex,i),new g(this.quote+d+this.quote,d,this.escaped,this.getIndex(),this.fileInfo())},g.prototype.compare=function(a){return"Quoted"!==a.type||this.escaped||a.escaped?a.toCSS&&this.toCSS()===a.toCSS()?0:void 0:d.numericCompare(this.value,a.value)},b.exports=g},{"./node":76,"./property":79,"./variable":88}],81:[function(a,b,c){var d=a("./node"),e=a("./declaration"),f=a("./keyword"),g=a("./comment"),h=a("./paren"),i=a("./selector"),j=a("./element"),k=a("./anonymous"),l=a("../contexts"),m=a("../functions/function-registry"),n=a("../functions/default"),o=a("./debug-info"),p=a("../utils"),q=function(a,b,c,d){this.selectors=a,this.rules=b,this._lookups={},this._variables=null,this._properties=null,this.strictImports=c,this.copyVisibilityInfo(d),this.allowRoot=!0,this.setParent(this.selectors,this),this.setParent(this.rules,this)};q.prototype=new d,q.prototype.type="Ruleset",q.prototype.isRuleset=!0,q.prototype.isRulesetLike=function(){return!0},q.prototype.accept=function(a){this.paths?this.paths=a.visitArray(this.paths,!0):this.selectors&&(this.selectors=a.visitArray(this.selectors)),this.rules&&this.rules.length&&(this.rules=a.visitArray(this.rules))},q.prototype.eval=function(a){var b,c,f,g,h,i=!1;if(this.selectors&&(c=this.selectors.length)){for(b=new Array(c),n.error({type:"Syntax",message:"it is currently only allowed in parametric mixin guards,"}),g=0;g<c;g++){f=this.selectors[g].eval(a);for(var j=0;j<f.elements.length;j++)if(f.elements[j].isVariable){h=!0;break}b[g]=f,f.evaldCondition&&(i=!0)}if(h){var k=new Array(c);for(g=0;g<c;g++)f=b[g],k[g]=f.toCSS(a);this.parse.parseNode(k.join(","),["selectors"],b[0].getIndex(),b[0].fileInfo(),function(a,c){c&&(b=p.flattenArray(c))})}n.reset()}else i=!0;var l,o,r=this.rules?p.copyArray(this.rules):null,s=new q(b,r,this.strictImports,this.visibilityInfo());s.originalRuleset=this,s.root=this.root,s.firstRoot=this.firstRoot,s.allowImports=this.allowImports,this.debugInfo&&(s.debugInfo=this.debugInfo),i||(r.length=0),s.functionRegistry=function(a){for(var b,c=0,d=a.length;c!==d;++c)if(b=a[c].functionRegistry)return b;return m}(a.frames).inherit();var t=a.frames;t.unshift(s);var u=a.selectors;u||(a.selectors=u=[]),u.unshift(this.selectors),(s.root||s.allowImports||!s.strictImports)&&s.evalImports(a);var v=s.rules;for(g=0;l=v[g];g++)l.evalFirst&&(v[g]=l.eval(a));var w=a.mediaBlocks&&a.mediaBlocks.length||0;for(g=0;l=v[g];g++)"MixinCall"===l.type?(r=l.eval(a).filter(function(a){return!(a instanceof e&&a.variable)||!s.variable(a.name)}),v.splice.apply(v,[g,1].concat(r)),g+=r.length-1,s.resetCache()):"VariableCall"===l.type&&(r=l.eval(a).rules.filter(function(a){return!(a instanceof e&&a.variable)}),v.splice.apply(v,[g,1].concat(r)),g+=r.length-1,s.resetCache());for(g=0;l=v[g];g++)l.evalFirst||(v[g]=l=l.eval?l.eval(a):l);for(g=0;l=v[g];g++)if(l instanceof q&&l.selectors&&1===l.selectors.length&&l.selectors[0]&&l.selectors[0].isJustParentSelector()){v.splice(g--,1);for(var j=0;o=l.rules[j];j++)o instanceof d&&(o.copyVisibilityInfo(l.visibilityInfo()),o instanceof e&&o.variable||v.splice(++g,0,o))}if(t.shift(),u.shift(),a.mediaBlocks)for(g=w;g<a.mediaBlocks.length;g++)a.mediaBlocks[g].bubbleSelectors(b);return s},q.prototype.evalImports=function(a){var b,c,d=this.rules;if(d)for(b=0;b<d.length;b++)"Import"===d[b].type&&(c=d[b].eval(a),c&&(c.length||0===c.length)?(d.splice.apply(d,[b,1].concat(c)),b+=c.length-1):d.splice(b,1,c),this.resetCache())},q.prototype.makeImportant=function(){var a=new q(this.selectors,this.rules.map(function(a){return a.makeImportant?a.makeImportant():a}),this.strictImports,this.visibilityInfo());return a},q.prototype.matchArgs=function(a){return!a||0===a.length},q.prototype.matchCondition=function(a,b){var c=this.selectors[this.selectors.length-1];return!!c.evaldCondition&&!(c.condition&&!c.condition.eval(new l.Eval(b,b.frames)))},q.prototype.resetCache=function(){this._rulesets=null,this._variables=null,this._properties=null,this._lookups={}},q.prototype.variables=function(){return this._variables||(this._variables=this.rules?this.rules.reduce(function(a,b){if(b instanceof e&&b.variable===!0&&(a[b.name]=b),"Import"===b.type&&b.root&&b.root.variables){var c=b.root.variables();
+for(var d in c)c.hasOwnProperty(d)&&(a[d]=b.root.variable(d))}return a},{}):{}),this._variables},q.prototype.properties=function(){return this._properties||(this._properties=this.rules?this.rules.reduce(function(a,b){if(b instanceof e&&b.variable!==!0){var c=1===b.name.length&&b.name[0]instanceof f?b.name[0].value:b.name;a["$"+c]?a["$"+c].push(b):a["$"+c]=[b]}return a},{}):{}),this._properties},q.prototype.variable=function(a){var b=this.variables()[a];if(b)return this.parseValue(b)},q.prototype.property=function(a){var b=this.properties()[a];if(b)return this.parseValue(b)},q.prototype.lastDeclaration=function(){for(var a=this.rules.length;a>0;a--){var b=this.rules[a-1];if(b instanceof e)return this.parseValue(b)}},q.prototype.parseValue=function(a){function b(a){return a.value instanceof k&&!a.parsed?("string"==typeof a.value.value?this.parse.parseNode(a.value.value,["value","important"],a.value.getIndex(),a.fileInfo(),function(b,c){b&&(a.parsed=!0),c&&(a.value=c[0],a.important=c[1]||"",a.parsed=!0)}):a.parsed=!0,a):a}var c=this;if(Array.isArray(a)){var d=[];return a.forEach(function(a){d.push(b.call(c,a))}),d}return b.call(c,a)},q.prototype.rulesets=function(){if(!this.rules)return[];var a,b,c=[],d=this.rules;for(a=0;b=d[a];a++)b.isRuleset&&c.push(b);return c},q.prototype.prependRule=function(a){var b=this.rules;b?b.unshift(a):this.rules=[a],this.setParent(a,this)},q.prototype.find=function(a,b,c){b=b||this;var d,e,f=[],g=a.toCSS();return g in this._lookups?this._lookups[g]:(this.rulesets().forEach(function(g){if(g!==b)for(var h=0;h<g.selectors.length;h++)if(d=a.match(g.selectors[h])){if(a.elements.length>d){if(!c||c(g)){e=g.find(new i(a.elements.slice(d)),b,c);for(var j=0;j<e.length;++j)e[j].path.push(g);Array.prototype.push.apply(f,e)}}else f.push({rule:g,path:[]});break}}),this._lookups[g]=f,f)},q.prototype.genCSS=function(a,b){var c,d,e,f,h,i=[],j=[];a.tabLevel=a.tabLevel||0,this.root||a.tabLevel++;var k,l=a.compress?"":Array(a.tabLevel+1).join("  "),m=a.compress?"":Array(a.tabLevel).join("  "),n=0,p=0;for(c=0;f=this.rules[c];c++)f instanceof g?(p===c&&p++,j.push(f)):f.isCharset&&f.isCharset()?(j.splice(n,0,f),n++,p++):"Import"===f.type?(j.splice(p,0,f),p++):j.push(f);if(j=i.concat(j),!this.root){e=o(a,this,m),e&&(b.add(e),b.add(m));var q,r=this.paths,s=r.length;for(k=a.compress?",":",\n"+m,c=0;c<s;c++)if(h=r[c],q=h.length)for(c>0&&b.add(k),a.firstSelector=!0,h[0].genCSS(a,b),a.firstSelector=!1,d=1;d<q;d++)h[d].genCSS(a,b);b.add((a.compress?"{":" {\n")+l)}for(c=0;f=j[c];c++){c+1===j.length&&(a.lastRule=!0);var t=a.lastRule;f.isRulesetLike(f)&&(a.lastRule=!1),f.genCSS?f.genCSS(a,b):f.value&&b.add(f.value.toString()),a.lastRule=t,!a.lastRule&&f.isVisible()?b.add(a.compress?"":"\n"+l):a.lastRule=!1}this.root||(b.add(a.compress?"}":"\n"+m+"}"),a.tabLevel--),b.isEmpty()||a.compress||!this.firstRoot||b.add("\n")},q.prototype.joinSelectors=function(a,b,c){for(var d=0;d<c.length;d++)this.joinSelector(a,b,c[d])},q.prototype.joinSelector=function(a,b,c){function d(a,b){var c,d;if(0===a.length)c=new h(a[0]);else{var e=new Array(a.length);for(d=0;d<a.length;d++)e[d]=new j(null,a[d],b.isVariable,b._index,b._fileInfo);c=new h(new i(e))}return c}function e(a,b){var c,d;return c=new j(null,a,b.isVariable,b._index,b._fileInfo),d=new i([c])}function f(a,b,c,d){var e,f,g;if(e=[],a.length>0?(e=p.copyArray(a),f=e.pop(),g=d.createDerived(p.copyArray(f.elements))):g=d.createDerived([]),b.length>0){var h=c.combinator,i=b[0].elements[0];h.emptyOrWhitespace&&!i.combinator.emptyOrWhitespace&&(h=i.combinator),g.elements.push(new j(h,i.value,c.isVariable,c._index,c._fileInfo)),g.elements=g.elements.concat(b[0].elements.slice(1))}if(0!==g.elements.length&&e.push(g),b.length>1){var k=b.slice(1);k=k.map(function(a){return a.createDerived(a.elements,[])}),e=e.concat(k)}return e}function g(a,b,c,d,e){var g;for(g=0;g<a.length;g++){var h=f(a[g],b,c,d);e.push(h)}return e}function k(a,b){var c,d;if(0!==a.length){if(0===b.length)return void b.push([new i(a)]);for(c=0;d=b[c];c++)d.length>0?d[d.length-1]=d[d.length-1].createDerived(d[d.length-1].elements.concat(a)):d.push(new i(a))}}function l(a,b,c){function m(a){var b;return a.value instanceof h?(b=a.value.value,b instanceof i?b:null):null}var n,o,p,q,r,s,t,u,v,w,x=!1;for(q=[],r=[[]],n=0;u=c.elements[n];n++)if("&"!==u.value){var y=m(u);if(null!=y){k(q,r);var z,A=[],B=[];for(z=l(A,b,y),x=x||z,p=0;p<A.length;p++){var C=e(d(A[p],u),u);g(r,[C],u,c,B)}r=B,q=[]}else q.push(u)}else{for(x=!0,s=[],k(q,r),o=0;o<r.length;o++)if(t=r[o],0===b.length)t.length>0&&t[0].elements.push(new j(u.combinator,"",u.isVariable,u._index,u._fileInfo)),s.push(t);else for(p=0;p<b.length;p++){var D=f(t,b[p],u,c);s.push(D)}r=s,q=[]}for(k(q,r),n=0;n<r.length;n++)v=r[n].length,v>0&&(a.push(r[n]),w=r[n][v-1],r[n][v-1]=w.createDerived(w.elements,c.extendList));return x}function m(a,b){var c=b.createDerived(b.elements,b.extendList,b.evaldCondition);return c.copyVisibilityInfo(a),c}var n,o,q;if(o=[],q=l(o,b,c),!q)if(b.length>0)for(o=[],n=0;n<b.length;n++){var r=b[n].map(m.bind(this,c.visibilityInfo()));r.push(c),o.push(r)}else o=[[c]];for(n=0;n<o.length;n++)a.push(o[n])},b.exports=q},{"../contexts":13,"../functions/default":25,"../functions/function-registry":27,"../utils":89,"./anonymous":50,"./comment":57,"./debug-info":59,"./declaration":60,"./element":63,"./keyword":70,"./node":76,"./paren":78,"./selector":82}],82:[function(a,b,c){var d=a("./node"),e=a("./element"),f=a("../less-error"),g=function(a,b,c,d,e,f){this.extendList=b,this.condition=c,this.evaldCondition=!c,this._index=d,this._fileInfo=e,this.elements=this.getElements(a),this.mixinElements_=void 0,this.copyVisibilityInfo(f),this.setParent(this.elements,this)};g.prototype=new d,g.prototype.type="Selector",g.prototype.accept=function(a){this.elements&&(this.elements=a.visitArray(this.elements)),this.extendList&&(this.extendList=a.visitArray(this.extendList)),this.condition&&(this.condition=a.visit(this.condition))},g.prototype.createDerived=function(a,b,c){a=this.getElements(a);var d=new g(a,b||this.extendList,null,this.getIndex(),this.fileInfo(),this.visibilityInfo());return d.evaldCondition=null!=c?c:this.evaldCondition,d.mediaEmpty=this.mediaEmpty,d},g.prototype.getElements=function(a){return a?("string"==typeof a&&this.parse.parseNode(a,["selector"],this._index,this._fileInfo,function(b,c){if(b)throw new f({index:b.index,message:b.message},this.parse.imports,this._fileInfo.filename);a=c[0].elements}),a):[new e("","&",(!1),this._index,this._fileInfo)]},g.prototype.createEmptySelectors=function(){var a=new e("","&",(!1),this._index,this._fileInfo),b=[new g([a],null,null,this._index,this._fileInfo)];return b[0].mediaEmpty=!0,b},g.prototype.match=function(a){var b,c,d=this.elements,e=d.length;if(a=a.mixinElements(),b=a.length,0===b||e<b)return 0;for(c=0;c<b;c++)if(d[c].value!==a[c])return 0;return b},g.prototype.mixinElements=function(){if(this.mixinElements_)return this.mixinElements_;var a=this.elements.map(function(a){return a.combinator.value+(a.value.value||a.value)}).join("").match(/[,&#\*\.\w-]([\w-]|(\\.))*/g);return a?"&"===a[0]&&a.shift():a=[],this.mixinElements_=a},g.prototype.isJustParentSelector=function(){return!this.mediaEmpty&&1===this.elements.length&&"&"===this.elements[0].value&&(" "===this.elements[0].combinator.value||""===this.elements[0].combinator.value)},g.prototype.eval=function(a){var b=this.condition&&this.condition.eval(a),c=this.elements,d=this.extendList;return c=c&&c.map(function(b){return b.eval(a)}),d=d&&d.map(function(b){return b.eval(a)}),this.createDerived(c,d,b)},g.prototype.genCSS=function(a,b){var c,d;for(a&&a.firstSelector||""!==this.elements[0].combinator.value||b.add(" ",this.fileInfo(),this.getIndex()),c=0;c<this.elements.length;c++)d=this.elements[c],d.genCSS(a,b)},g.prototype.getIsOutput=function(){return this.evaldCondition},b.exports=g},{"../less-error":38,"./element":63,"./node":76}],83:[function(a,b,c){var d=a("./node"),e=function(a){this.value=a};e.prototype=new d,e.prototype.type="UnicodeDescriptor",b.exports=e},{"./node":76}],84:[function(a,b,c){var d=a("./node"),e=a("../data/unit-conversions"),f=a("../utils"),g=function(a,b,c){this.numerator=a?f.copyArray(a).sort():[],this.denominator=b?f.copyArray(b).sort():[],c?this.backupUnit=c:a&&a.length&&(this.backupUnit=a[0])};g.prototype=new d,g.prototype.type="Unit",g.prototype.clone=function(){return new g(f.copyArray(this.numerator),f.copyArray(this.denominator),this.backupUnit)},g.prototype.genCSS=function(a,b){var c=a&&a.strictUnits;1===this.numerator.length?b.add(this.numerator[0]):!c&&this.backupUnit?b.add(this.backupUnit):!c&&this.denominator.length&&b.add(this.denominator[0])},g.prototype.toString=function(){var a,b=this.numerator.join("*");for(a=0;a<this.denominator.length;a++)b+="/"+this.denominator[a];return b},g.prototype.compare=function(a){return this.is(a.toString())?0:void 0},g.prototype.is=function(a){return this.toString().toUpperCase()===a.toUpperCase()},g.prototype.isLength=function(){return RegExp("^(px|em|ex|ch|rem|in|cm|mm|pc|pt|ex|vw|vh|vmin|vmax)$","gi").test(this.toCSS())},g.prototype.isEmpty=function(){return 0===this.numerator.length&&0===this.denominator.length},g.prototype.isSingular=function(){return this.numerator.length<=1&&0===this.denominator.length},g.prototype.map=function(a){var b;for(b=0;b<this.numerator.length;b++)this.numerator[b]=a(this.numerator[b],!1);for(b=0;b<this.denominator.length;b++)this.denominator[b]=a(this.denominator[b],!0)},g.prototype.usedUnits=function(){var a,b,c,d={};b=function(b){return a.hasOwnProperty(b)&&!d[c]&&(d[c]=b),b};for(c in e)e.hasOwnProperty(c)&&(a=e[c],this.map(b));return d},g.prototype.cancel=function(){var a,b,c={};for(b=0;b<this.numerator.length;b++)a=this.numerator[b],c[a]=(c[a]||0)+1;for(b=0;b<this.denominator.length;b++)a=this.denominator[b],c[a]=(c[a]||0)-1;this.numerator=[],this.denominator=[];for(a in c)if(c.hasOwnProperty(a)){var d=c[a];if(d>0)for(b=0;b<d;b++)this.numerator.push(a);else if(d<0)for(b=0;b<-d;b++)this.denominator.push(a)}this.numerator.sort(),this.denominator.sort()},b.exports=g},{"../data/unit-conversions":16,"../utils":89,"./node":76}],85:[function(a,b,c){function d(a){return a.replace(/[\(\)'"\s]/g,function(a){return"\\"+a})}var e=a("./node"),f=function(a,b,c,d){this.value=a,this._index=b,this._fileInfo=c,this.isEvald=d};f.prototype=new e,f.prototype.type="Url",f.prototype.accept=function(a){this.value=a.visit(this.value)},f.prototype.genCSS=function(a,b){b.add("url("),this.value.genCSS(a,b),b.add(")")},f.prototype.eval=function(a){var b,c=this.value.eval(a);if(!this.isEvald&&(b=this.fileInfo()&&this.fileInfo().rootpath,"string"==typeof b&&"string"==typeof c.value&&a.pathRequiresRewrite(c.value)?(c.quote||(b=d(b)),c.value=a.rewritePath(c.value,b)):c.value=a.normalizePath(c.value),a.urlArgs&&!c.value.match(/^\s*data:/))){var e=c.value.indexOf("?")===-1?"?":"&",g=e+a.urlArgs;c.value.indexOf("#")!==-1?c.value=c.value.replace("#",g+"#"):c.value+=g}return new f(c,this.getIndex(),this.fileInfo(),(!0))},b.exports=f},{"./node":76}],86:[function(a,b,c){var d=a("./node"),e=function(a){if(!a)throw new Error("Value requires an array argument");this.value=Array.isArray(a)?a:[a]};e.prototype=new d,e.prototype.type="Value",e.prototype.accept=function(a){this.value&&(this.value=a.visitArray(this.value))},e.prototype.eval=function(a){return 1===this.value.length?this.value[0].eval(a):new e(this.value.map(function(b){return b.eval(a)}))},e.prototype.genCSS=function(a,b){var c;for(c=0;c<this.value.length;c++)this.value[c].genCSS(a,b),c+1<this.value.length&&b.add(a&&a.compress?",":", ")},b.exports=e},{"./node":76}],87:[function(a,b,c){var d=a("./node"),e=a("./variable"),f=a("./ruleset"),g=a("./detached-ruleset"),h=a("../less-error"),i=function(a,b,c){this.variable=a,this._index=b,this._fileInfo=c,this.allowRoot=!0};i.prototype=new d,i.prototype.type="VariableCall",i.prototype.eval=function(a){var b,c=new e(this.variable,this.getIndex(),this.fileInfo()).eval(a),d=new h({message:"Could not evaluate variable call "+this.variable});if(!c.ruleset){if(c.rules)b=c;else if(Array.isArray(c))b=new f("",c);else{if(!Array.isArray(c.value))throw d;b=new f("",c.value)}c=new g(b)}if(c.ruleset)return c.callEval(a);throw d},b.exports=i},{"../less-error":38,"./detached-ruleset":61,"./node":76,"./ruleset":81,"./variable":88}],88:[function(a,b,c){var d=a("./node"),e=a("./call"),f=function(a,b,c){this.name=a,this._index=b,this._fileInfo=c};f.prototype=new d,f.prototype.type="Variable",f.prototype.eval=function(a){var b,c=this.name;if(0===c.indexOf("@@")&&(c="@"+new f(c.slice(1),this.getIndex(),this.fileInfo()).eval(a).value),this.evaluating)throw{type:"Name",message:"Recursive variable definition for "+c,filename:this.fileInfo().filename,index:this.getIndex()};if(this.evaluating=!0,b=this.find(a.frames,function(b){var d=b.variable(c);if(d){if(d.important){var f=a.importantScope[a.importantScope.length-1];f.important=d.important}return a.inCalc?new e("_SELF",[d.value]).eval(a):d.value.eval(a)}}))return this.evaluating=!1,b;throw{type:"Name",message:"variable "+c+" is undefined",filename:this.fileInfo().filename,index:this.getIndex()}},f.prototype.find=function(a,b){for(var c,d=0;d<a.length;d++)if(c=b.call(a,a[d]))return c;return null},b.exports=f},{"./call":54,"./node":76}],89:[function(a,b,c){var d=a("./constants"),e=a("clone"),f={getLocation:function(a,b){for(var c=a+1,d=null,e=-1;--c>=0&&"\n"!==b.charAt(c);)e++;return"number"==typeof a&&(d=(b.slice(0,a).match(/\n/g)||"").length),{line:d,column:e}},copyArray:function(a){var b,c=a.length,d=new Array(c);for(b=0;b<c;b++)d[b]=a[b];return d},clone:function(a){var b={};for(var c in a)a.hasOwnProperty(c)&&(b[c]=a[c]);return b},copyOptions:function(a,b){if(b&&b._defaults)return b;var c=f.defaults(a,b);if(c.strictMath&&(c.math=d.Math.STRICT_LEGACY),c.relativeUrls&&(c.rewriteUrls=d.RewriteUrls.ALL),"string"==typeof c.math)switch(c.math.toLowerCase()){case"always":c.math=d.Math.ALWAYS;break;case"parens-division":c.math=d.Math.PARENS_DIVISION;break;case"strict":case"parens":c.math=d.Math.PARENS;break;case"strict-legacy":c.math=d.Math.STRICT_LEGACY}if("string"==typeof c.rewriteUrls)switch(c.rewriteUrls.toLowerCase()){case"off":c.rewriteUrls=d.RewriteUrls.OFF;break;case"local":c.rewriteUrls=d.RewriteUrls.LOCAL;break;case"all":c.rewriteUrls=d.RewriteUrls.ALL}return c},defaults:function(a,b){var c=b||{};if(!b._defaults){c={};var d=e(a);c._defaults=d;var f=b?e(b):{};Object.assign(c,d,f)}return c},merge:function(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c]);return a},flattenArray:function(a,b){b=b||[];for(var c=0,d=a.length;c<d;c++){var e=a[c];Array.isArray(e)?f.flattenArray(e,b):void 0!==e&&b.push(e)}return b}};b.exports=f},{"./constants":12,clone:100}],90:[function(a,b,c){var d=a("../tree"),e=a("./visitor"),f=a("../logger"),g=a("../utils"),h=function(){this._visitor=new e(this),this.contexts=[],this.allExtendsStack=[[]]};h.prototype={run:function(a){return a=this._visitor.visit(a),a.allExtends=this.allExtendsStack[0],a},visitDeclaration:function(a,b){b.visitDeeper=!1},visitMixinDefinition:function(a,b){b.visitDeeper=!1},visitRuleset:function(a,b){if(!a.root){var c,e,f,h,i=[],j=a.rules,k=j?j.length:0;for(c=0;c<k;c++)a.rules[c]instanceof d.Extend&&(i.push(j[c]),a.extendOnEveryPath=!0);var l=a.paths;for(c=0;c<l.length;c++){var m=l[c],n=m[m.length-1],o=n.extendList;for(h=o?g.copyArray(o).concat(i):i,h&&(h=h.map(function(a){return a.clone()})),e=0;e<h.length;e++)this.foundExtends=!0,f=h[e],f.findSelfSelectors(m),f.ruleset=a,0===e&&(f.firstExtendOnThisSelectorPath=!0),this.allExtendsStack[this.allExtendsStack.length-1].push(f)}this.contexts.push(a.selectors)}},visitRulesetOut:function(a){a.root||(this.contexts.length=this.contexts.length-1)},visitMedia:function(a,b){a.allExtends=[],this.allExtendsStack.push(a.allExtends)},visitMediaOut:function(a){this.allExtendsStack.length=this.allExtendsStack.length-1},visitAtRule:function(a,b){a.allExtends=[],this.allExtendsStack.push(a.allExtends)},visitAtRuleOut:function(a){this.allExtendsStack.length=this.allExtendsStack.length-1}};var i=function(){this._visitor=new e(this)};i.prototype={run:function(a){var b=new h;if(this.extendIndices={},b.run(a),!b.foundExtends)return a;a.allExtends=a.allExtends.concat(this.doExtendChaining(a.allExtends,a.allExtends)),this.allExtendsStack=[a.allExtends];var c=this._visitor.visit(a);return this.checkExtendsForNonMatched(a.allExtends),c},checkExtendsForNonMatched:function(a){var b=this.extendIndices;a.filter(function(a){return!a.hasFoundMatches&&1==a.parent_ids.length}).forEach(function(a){var c="_unknown_";try{c=a.selector.toCSS({})}catch(d){}b[a.index+" "+c]||(b[a.index+" "+c]=!0,f.warn("extend '"+c+"' has no matches"))})},doExtendChaining:function(a,b,c){var e,f,g,h,i,j,k,l,m=[],n=this;for(c=c||0,e=0;e<a.length;e++)for(f=0;f<b.length;f++)j=a[e],k=b[f],j.parent_ids.indexOf(k.object_id)>=0||(i=[k.selfSelectors[0]],g=n.findMatch(j,i),g.length&&(j.hasFoundMatches=!0,j.selfSelectors.forEach(function(a){var b=k.visibilityInfo();h=n.extendSelector(g,i,a,j.isVisible()),l=new d.Extend(k.selector,k.option,0,k.fileInfo(),b),l.selfSelectors=h,h[h.length-1].extendList=[l],m.push(l),l.ruleset=k.ruleset,l.parent_ids=l.parent_ids.concat(k.parent_ids,j.parent_ids),k.firstExtendOnThisSelectorPath&&(l.firstExtendOnThisSelectorPath=!0,k.ruleset.paths.push(h))})));if(m.length){if(this.extendChainCount++,c>100){var o="{unable to calculate}",p="{unable to calculate}";try{o=m[0].selfSelectors[0].toCSS(),p=m[0].selector.toCSS()}catch(q){}throw{message:"extend circular reference detected. One of the circular extends is currently:"+o+":extend("+p+")"}}return m.concat(n.doExtendChaining(m,b,c+1))}return m},visitDeclaration:function(a,b){b.visitDeeper=!1},visitMixinDefinition:function(a,b){b.visitDeeper=!1},visitSelector:function(a,b){b.visitDeeper=!1},visitRuleset:function(a,b){if(!a.root){var c,d,e,f,g=this.allExtendsStack[this.allExtendsStack.length-1],h=[],i=this;for(e=0;e<g.length;e++)for(d=0;d<a.paths.length;d++)if(f=a.paths[d],!a.extendOnEveryPath){var j=f[f.length-1].extendList;j&&j.length||(c=this.findMatch(g[e],f),c.length&&(g[e].hasFoundMatches=!0,g[e].selfSelectors.forEach(function(a){var b;b=i.extendSelector(c,f,a,g[e].isVisible()),h.push(b)})))}a.paths=a.paths.concat(h)}},findMatch:function(a,b){var c,d,e,f,g,h,i,j=this,k=a.selector.elements,l=[],m=[];for(c=0;c<b.length;c++)for(d=b[c],e=0;e<d.elements.length;e++)for(f=d.elements[e],(a.allowBefore||0===c&&0===e)&&l.push({pathIndex:c,index:e,matched:0,initialCombinator:f.combinator}),h=0;h<l.length;h++)i=l[h],g=f.combinator.value,""===g&&0===e&&(g=" "),!j.isElementValuesEqual(k[i.matched].value,f.value)||i.matched>0&&k[i.matched].combinator.value!==g?i=null:i.matched++,i&&(i.finished=i.matched===k.length,i.finished&&!a.allowAfter&&(e+1<d.elements.length||c+1<b.length)&&(i=null)),i?i.finished&&(i.length=k.length,i.endPathIndex=c,i.endPathElementIndex=e+1,l.length=0,m.push(i)):(l.splice(h,1),h--);return m},isElementValuesEqual:function(a,b){if("string"==typeof a||"string"==typeof b)return a===b;if(a instanceof d.Attribute)return a.op===b.op&&a.key===b.key&&(a.value&&b.value?(a=a.value.value||a.value,b=b.value.value||b.value,a===b):!a.value&&!b.value);if(a=a.value,b=b.value,a instanceof d.Selector){if(!(b instanceof d.Selector)||a.elements.length!==b.elements.length)return!1;for(var c=0;c<a.elements.length;c++){if(a.elements[c].combinator.value!==b.elements[c].combinator.value&&(0!==c||(a.elements[c].combinator.value||" ")!==(b.elements[c].combinator.value||" ")))return!1;if(!this.isElementValuesEqual(a.elements[c].value,b.elements[c].value))return!1}return!0}return!1},extendSelector:function(a,b,c,e){var f,g,h,i,j,k=0,l=0,m=[];for(f=0;f<a.length;f++)i=a[f],g=b[i.pathIndex],h=new d.Element(i.initialCombinator,c.elements[0].value,c.elements[0].isVariable,c.elements[0].getIndex(),c.elements[0].fileInfo()),i.pathIndex>k&&l>0&&(m[m.length-1].elements=m[m.length-1].elements.concat(b[k].elements.slice(l)),l=0,k++),j=g.elements.slice(l,i.index).concat([h]).concat(c.elements.slice(1)),k===i.pathIndex&&f>0?m[m.length-1].elements=m[m.length-1].elements.concat(j):(m=m.concat(b.slice(k,i.pathIndex)),m.push(new d.Selector(j))),k=i.endPathIndex,l=i.endPathElementIndex,l>=b[k].elements.length&&(l=0,k++);return k<b.length&&l>0&&(m[m.length-1].elements=m[m.length-1].elements.concat(b[k].elements.slice(l)),k++),m=m.concat(b.slice(k,b.length)),m=m.map(function(a){var b=a.createDerived(a.elements);return e?b.ensureVisibility():b.ensureInvisibility(),b})},visitMedia:function(a,b){var c=a.allExtends.concat(this.allExtendsStack[this.allExtendsStack.length-1]);c=c.concat(this.doExtendChaining(c,a.allExtends)),this.allExtendsStack.push(c)},visitMediaOut:function(a){var b=this.allExtendsStack.length-1;this.allExtendsStack.length=b},visitAtRule:function(a,b){var c=a.allExtends.concat(this.allExtendsStack[this.allExtendsStack.length-1]);c=c.concat(this.doExtendChaining(c,a.allExtends)),this.allExtendsStack.push(c)},visitAtRuleOut:function(a){var b=this.allExtendsStack.length-1;this.allExtendsStack.length=b}},b.exports=i},{"../logger":39,"../tree":67,"../utils":89,"./visitor":97}],91:[function(a,b,c){function d(a){this.imports=[],this.variableImports=[],this._onSequencerEmpty=a,this._currentDepth=0}d.prototype.addImport=function(a){var b=this,c={callback:a,args:null,isReady:!1};return this.imports.push(c),function(){c.args=Array.prototype.slice.call(arguments,0),c.isReady=!0,b.tryRun()}},d.prototype.addVariableImport=function(a){this.variableImports.push(a)},d.prototype.tryRun=function(){this._currentDepth++;try{for(;;){for(;this.imports.length>0;){var a=this.imports[0];if(!a.isReady)return;this.imports=this.imports.slice(1),a.callback.apply(null,a.args)}if(0===this.variableImports.length)break;var b=this.variableImports[0];this.variableImports=this.variableImports.slice(1),b()}}finally{this._currentDepth--}0===this._currentDepth&&this._onSequencerEmpty&&this._onSequencerEmpty()},b.exports=d},{}],92:[function(a,b,c){var d=a("../contexts"),e=a("./visitor"),f=a("./import-sequencer"),g=a("../utils"),h=function(a,b){this._visitor=new e(this),this._importer=a,this._finish=b,this.context=new d.Eval,this.importCount=0,this.onceFileDetectionMap={},this.recursionDetector={},this._sequencer=new f(this._onSequencerEmpty.bind(this))};h.prototype={isReplacing:!1,run:function(a){try{this._visitor.visit(a)}catch(b){this.error=b}this.isFinished=!0,this._sequencer.tryRun()},_onSequencerEmpty:function(){this.isFinished&&this._finish(this.error)},visitImport:function(a,b){var c=a.options.inline;if(!a.css||c){var e=new d.Eval(this.context,g.copyArray(this.context.frames)),f=e.frames[0];this.importCount++,a.isVariableImport()?this._sequencer.addVariableImport(this.processImportNode.bind(this,a,e,f)):this.processImportNode(a,e,f)}b.visitDeeper=!1},processImportNode:function(a,b,c){var d,e=a.options.inline;try{d=a.evalForImport(b)}catch(f){f.filename||(f.index=a.getIndex(),f.filename=a.fileInfo().filename),a.css=!0,a.error=f}if(!d||d.css&&!e)this.importCount--,this.isFinished&&this._sequencer.tryRun();else{d.options.multiple&&(b.importMultiple=!0);for(var g=void 0===d.css,h=0;h<c.rules.length;h++)if(c.rules[h]===a){c.rules[h]=d;break}var i=this.onImported.bind(this,d,b),j=this._sequencer.addImport(i);this._importer.push(d.getPath(),g,d.fileInfo(),d.options,j)}},onImported:function(a,b,c,d,e,f){c&&(c.filename||(c.index=a.getIndex(),c.filename=a.fileInfo().filename),this.error=c);var g=this,h=a.options.inline,i=a.options.isPlugin,j=a.options.optional,k=e||f in g.recursionDetector;if(b.importMultiple||(a.skip=!!k||function(){return f in g.onceFileDetectionMap||(g.onceFileDetectionMap[f]=!0,!1)}),!f&&j&&(a.skip=!0),d&&(a.root=d,a.importedFilename=f,!h&&!i&&(b.importMultiple||!k))){g.recursionDetector[f]=!0;var l=this.context;this.context=b;try{this._visitor.visit(d)}catch(c){this.error=c}this.context=l}g.importCount--,g.isFinished&&g._sequencer.tryRun()},visitDeclaration:function(a,b){"DetachedRuleset"===a.value.type?this.context.frames.unshift(a):b.visitDeeper=!1},visitDeclarationOut:function(a){"DetachedRuleset"===a.value.type&&this.context.frames.shift()},visitAtRule:function(a,b){this.context.frames.unshift(a)},visitAtRuleOut:function(a){this.context.frames.shift()},visitMixinDefinition:function(a,b){this.context.frames.unshift(a)},visitMixinDefinitionOut:function(a){this.context.frames.shift()},visitRuleset:function(a,b){this.context.frames.unshift(a)},visitRulesetOut:function(a){this.context.frames.shift()},visitMedia:function(a,b){this.context.frames.unshift(a.rules[0])},visitMediaOut:function(a){this.context.frames.shift()}},b.exports=h},{"../contexts":13,"../utils":89,"./import-sequencer":91,"./visitor":97}],93:[function(a,b,c){var d={Visitor:a("./visitor"),ImportVisitor:a("./import-visitor"),MarkVisibleSelectorsVisitor:a("./set-tree-visibility-visitor"),ExtendVisitor:a("./extend-visitor"),JoinSelectorVisitor:a("./join-selector-visitor"),ToCSSVisitor:a("./to-css-visitor")};b.exports=d},{"./extend-visitor":90,"./import-visitor":92,"./join-selector-visitor":94,"./set-tree-visibility-visitor":95,"./to-css-visitor":96,"./visitor":97}],94:[function(a,b,c){var d=a("./visitor"),e=function(){this.contexts=[[]],this._visitor=new d(this)};e.prototype={run:function(a){return this._visitor.visit(a)},visitDeclaration:function(a,b){b.visitDeeper=!1},visitMixinDefinition:function(a,b){b.visitDeeper=!1},visitRuleset:function(a,b){var c,d=this.contexts[this.contexts.length-1],e=[];this.contexts.push(e),a.root||(c=a.selectors,c&&(c=c.filter(function(a){return a.getIsOutput()}),a.selectors=c.length?c:c=null,c&&a.joinSelectors(e,d,c)),c||(a.rules=null),a.paths=e)},visitRulesetOut:function(a){this.contexts.length=this.contexts.length-1},visitMedia:function(a,b){var c=this.contexts[this.contexts.length-1];a.rules[0].root=0===c.length||c[0].multiMedia},visitAtRule:function(a,b){var c=this.contexts[this.contexts.length-1];a.rules&&a.rules.length&&(a.rules[0].root=a.isRooted||0===c.length||null)}},b.exports=e},{"./visitor":97}],95:[function(a,b,c){var d=function(a){this.visible=a};d.prototype.run=function(a){this.visit(a)},d.prototype.visitArray=function(a){if(!a)return a;var b,c=a.length;for(b=0;b<c;b++)this.visit(a[b]);return a},d.prototype.visit=function(a){return a?a.constructor===Array?this.visitArray(a):!a.blocksVisibility||a.blocksVisibility()?a:(this.visible?a.ensureVisibility():a.ensureInvisibility(),a.accept(this),a):a},b.exports=d},{}],96:[function(a,b,c){var d=a("../tree"),e=a("./visitor"),f=function(a){this._visitor=new e(this),this._context=a};f.prototype={containsSilentNonBlockedChild:function(a){var b;if(!a)return!1;for(var c=0;c<a.length;c++)if(b=a[c],b.isSilent&&b.isSilent(this._context)&&!b.blocksVisibility())return!0;return!1},keepOnlyVisibleChilds:function(a){a&&a.rules&&(a.rules=a.rules.filter(function(a){return a.isVisible()}))},isEmpty:function(a){return!a||!a.rules||0===a.rules.length},hasVisibleSelector:function(a){return!(!a||!a.paths)&&a.paths.length>0},resolveVisibility:function(a,b){if(!a.blocksVisibility()){if(this.isEmpty(a)&&!this.containsSilentNonBlockedChild(b))return;return a}var c=a.rules[0];if(this.keepOnlyVisibleChilds(c),!this.isEmpty(c))return a.ensureVisibility(),a.removeVisibilityBlock(),a},isVisibleRuleset:function(a){return!!a.firstRoot||!this.isEmpty(a)&&!(!a.root&&!this.hasVisibleSelector(a))}};var g=function(a){this._visitor=new e(this),this._context=a,this.utils=new f(a)};g.prototype={isReplacing:!0,run:function(a){return this._visitor.visit(a)},visitDeclaration:function(a,b){if(!a.blocksVisibility()&&!a.variable)return a},visitMixinDefinition:function(a,b){a.frames=[]},visitExtend:function(a,b){},visitComment:function(a,b){if(!a.blocksVisibility()&&!a.isSilent(this._context))return a},visitMedia:function(a,b){var c=a.rules[0].rules;return a.accept(this._visitor),b.visitDeeper=!1,this.utils.resolveVisibility(a,c)},visitImport:function(a,b){if(!a.blocksVisibility())return a},visitAtRule:function(a,b){return a.rules&&a.rules.length?this.visitAtRuleWithBody(a,b):this.visitAtRuleWithoutBody(a,b)},visitAnonymous:function(a,b){if(!a.blocksVisibility())return a.accept(this._visitor),a},visitAtRuleWithBody:function(a,b){function c(a){var b=a.rules;return 1===b.length&&(!b[0].paths||0===b[0].paths.length)}function d(a){var b=a.rules;return c(a)?b[0].rules:b}var e=d(a);return a.accept(this._visitor),b.visitDeeper=!1,this.utils.isEmpty(a)||this._mergeRules(a.rules[0].rules),this.utils.resolveVisibility(a,e)},visitAtRuleWithoutBody:function(a,b){if(!a.blocksVisibility()){if("@charset"===a.name){if(this.charset){if(a.debugInfo){var c=new d.Comment("/* "+a.toCSS(this._context).replace(/\n/g,"")+" */\n");return c.debugInfo=a.debugInfo,this._visitor.visit(c)}return}this.charset=!0}return a}},checkValidNodes:function(a,b){if(a)for(var c=0;c<a.length;c++){var e=a[c];if(b&&e instanceof d.Declaration&&!e.variable)throw{message:"Properties must be inside selector blocks. They cannot be in the root",index:e.getIndex(),filename:e.fileInfo()&&e.fileInfo().filename};if(e instanceof d.Call)throw{message:"Function '"+e.name+"' is undefined",index:e.getIndex(),filename:e.fileInfo()&&e.fileInfo().filename};if(e.type&&!e.allowRoot)throw{message:e.type+" node returned by a function is not valid here",index:e.getIndex(),filename:e.fileInfo()&&e.fileInfo().filename}}},visitRuleset:function(a,b){var c,d=[];if(this.checkValidNodes(a.rules,a.firstRoot),a.root)a.accept(this._visitor),b.visitDeeper=!1;else{this._compileRulesetPaths(a);for(var e=a.rules,f=e?e.length:0,g=0;g<f;)c=e[g],c&&c.rules?(d.push(this._visitor.visit(c)),e.splice(g,1),f--):g++;f>0?a.accept(this._visitor):a.rules=null,b.visitDeeper=!1}return a.rules&&(this._mergeRules(a.rules),this._removeDuplicateRules(a.rules)),this.utils.isVisibleRuleset(a)&&(a.ensureVisibility(),d.splice(0,0,a)),1===d.length?d[0]:d},_compileRulesetPaths:function(a){a.paths&&(a.paths=a.paths.filter(function(a){var b;for(" "===a[0].elements[0].combinator.value&&(a[0].elements[0].combinator=new d.Combinator("")),b=0;b<a.length;b++)if(a[b].isVisible()&&a[b].getIsOutput())return!0;return!1}))},_removeDuplicateRules:function(a){if(a){var b,c,e,f={};for(e=a.length-1;e>=0;e--)if(c=a[e],c instanceof d.Declaration)if(f[c.name]){b=f[c.name],b instanceof d.Declaration&&(b=f[c.name]=[f[c.name].toCSS(this._context)]);var g=c.toCSS(this._context);b.indexOf(g)!==-1?a.splice(e,1):b.push(g)}else f[c.name]=c}},_mergeRules:function(a){if(a){for(var b={},c=[],e=0;e<a.length;e++){var f=a[e];if(f.merge){var g=f.name;b[g]?a.splice(e--,1):c.push(b[g]=[]),b[g].push(f)}}c.forEach(function(a){if(a.length>0){var b=a[0],c=[],e=[new d.Expression(c)];a.forEach(function(a){"+"===a.merge&&c.length>0&&e.push(new d.Expression(c=[])),c.push(a.value),b.important=b.important||a.important}),b.value=new d.Value(e)}})}}},b.exports=g},{"../tree":67,"./visitor":97}],97:[function(a,b,c){function d(a){return a}function e(a,b){var c,d;for(c in a)switch(d=a[c],typeof d){case"function":d.prototype&&d.prototype.type&&(d.prototype.typeIndex=b++);break;case"object":b=e(d,b)}return b}var f=a("../tree"),g={visitDeeper:!0},h=!1,i=function(a){this._implementation=a,this._visitInCache={},this._visitOutCache={},h||(e(f,1),h=!0)};i.prototype={visit:function(a){if(!a)return a;var b=a.typeIndex;if(!b)return a.value&&a.value.typeIndex&&this.visit(a.value),a;var c,e=this._implementation,f=this._visitInCache[b],h=this._visitOutCache[b],i=g;if(i.visitDeeper=!0,f||(c="visit"+a.type,f=e[c]||d,h=e[c+"Out"]||d,this._visitInCache[b]=f,this._visitOutCache[b]=h),f!==d){var j=f.call(e,a,i);a&&e.isReplacing&&(a=j)}return i.visitDeeper&&a&&a.accept&&a.accept(this),h!=d&&h.call(e,a),a},visitArray:function(a,b){if(!a)return a;var c,d=a.length;if(b||!this._implementation.isReplacing){for(c=0;c<d;c++)this.visit(a[c]);return a}var e=[];for(c=0;c<d;c++){var f=this.visit(a[c]);void 0!==f&&(f.splice?f.length&&this.flatten(f,e):e.push(f))}return e;
+},flatten:function(a,b){b||(b=[]);var c,d,e,f,g,h;for(d=0,c=a.length;d<c;d++)if(e=a[d],void 0!==e)if(e.splice)for(g=0,f=e.length;g<f;g++)h=e[g],void 0!==h&&(h.splice?h.length&&this.flatten(h,b):b.push(h));else b.push(e);return b}},b.exports=i},{"../tree":67}],98:[function(a,b,c){"use strict";function d(){if(i.length)throw i.shift()}function e(a){var b;b=h.length?h.pop():new f,b.task=a,g(b)}function f(){this.task=null}var g=a("./raw"),h=[],i=[],j=g.makeRequestCallFromTimer(d);b.exports=e,f.prototype.call=function(){try{this.task.call()}catch(a){e.onerror?e.onerror(a):(i.push(a),j())}finally{this.task=null,h[h.length]=this}}},{"./raw":99}],99:[function(a,b,c){(function(a){"use strict";function c(a){h.length||(g(),i=!0),h[h.length]=a}function d(){for(;j<h.length;){var a=j;if(j+=1,h[a].call(),j>k){for(var b=0,c=h.length-j;b<c;b++)h[b]=h[b+j];h.length-=j,j=0}}h.length=0,j=0,i=!1}function e(a){var b=1,c=new m(a),d=document.createTextNode("");return c.observe(d,{characterData:!0}),function(){b=-b,d.data=b}}function f(a){return function(){function b(){clearTimeout(c),clearInterval(d),a()}var c=setTimeout(b,0),d=setInterval(b,50)}}b.exports=c;var g,h=[],i=!1,j=0,k=1024,l="undefined"!=typeof a?a:self,m=l.MutationObserver||l.WebKitMutationObserver;g="function"==typeof m?e(d):f(d),c.requestFlush=g,c.makeRequestCallFromTimer=f}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],100:[function(a,b,c){var d=function(){"use strict";function a(a,b){return null!=b&&a instanceof b}function b(c,d,e,f,i){function l(c,e){if(null===c)return null;if(0===e)return c;var p,q;if("object"!=typeof c)return c;if(a(c,h))p=new h;else if(a(c,j))p=new j;else if(a(c,k))p=new k(function(a,b){c.then(function(b){a(l(b,e-1))},function(a){b(l(a,e-1))})});else if(b.__isArray(c))p=[];else if(b.__isRegExp(c))p=new RegExp(c.source,g(c)),c.lastIndex&&(p.lastIndex=c.lastIndex);else if(b.__isDate(c))p=new Date(c.getTime());else{if(o&&Buffer.isBuffer(c))return p=Buffer.allocUnsafe?Buffer.allocUnsafe(c.length):new Buffer(c.length),c.copy(p),p;a(c,Error)?p=Object.create(c):"undefined"==typeof f?(q=Object.getPrototypeOf(c),p=Object.create(q)):(p=Object.create(f),q=f)}if(d){var r=m.indexOf(c);if(r!=-1)return n[r];m.push(c),n.push(p)}a(c,h)&&c.forEach(function(a,b){var c=l(b,e-1),d=l(a,e-1);p.set(c,d)}),a(c,j)&&c.forEach(function(a){var b=l(a,e-1);p.add(b)});for(var s in c){var t;q&&(t=Object.getOwnPropertyDescriptor(q,s)),t&&null==t.set||(p[s]=l(c[s],e-1))}if(Object.getOwnPropertySymbols)for(var u=Object.getOwnPropertySymbols(c),s=0;s<u.length;s++){var v=u[s],w=Object.getOwnPropertyDescriptor(c,v);(!w||w.enumerable||i)&&(p[v]=l(c[v],e-1),w.enumerable||Object.defineProperty(p,v,{enumerable:!1}))}if(i)for(var x=Object.getOwnPropertyNames(c),s=0;s<x.length;s++){var y=x[s],w=Object.getOwnPropertyDescriptor(c,y);w&&w.enumerable||(p[y]=l(c[y],e-1),Object.defineProperty(p,y,{enumerable:!1}))}return p}"object"==typeof d&&(e=d.depth,f=d.prototype,i=d.includeNonEnumerable,d=d.circular);var m=[],n=[],o="undefined"!=typeof Buffer;return"undefined"==typeof d&&(d=!0),"undefined"==typeof e&&(e=1/0),l(c,e)}function c(a){return Object.prototype.toString.call(a)}function d(a){return"object"==typeof a&&"[object Date]"===c(a)}function e(a){return"object"==typeof a&&"[object Array]"===c(a)}function f(a){return"object"==typeof a&&"[object RegExp]"===c(a)}function g(a){var b="";return a.global&&(b+="g"),a.ignoreCase&&(b+="i"),a.multiline&&(b+="m"),b}var h;try{h=Map}catch(i){h=function(){}}var j;try{j=Set}catch(i){j=function(){}}var k;try{k=Promise}catch(i){k=function(){}}return b.clonePrototype=function(a){if(null===a)return null;var b=function(){};return b.prototype=a,new b},b.__objToStr=c,b.__isDate=d,b.__isArray=e,b.__isRegExp=f,b.__getRegExpFlags=g,b}();"object"==typeof b&&b.exports&&(b.exports=d)},{}],101:[function(a,b,c){"use strict";function d(){}function e(a){try{return a.then}catch(b){return r=b,s}}function f(a,b){try{return a(b)}catch(c){return r=c,s}}function g(a,b,c){try{a(b,c)}catch(d){return r=d,s}}function h(a){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof a)throw new TypeError("Promise constructor's argument is not a function");this._40=0,this._65=0,this._55=null,this._72=null,a!==d&&p(a,this)}function i(a,b,c){return new a.constructor(function(e,f){var g=new h(d);g.then(e,f),j(a,new o(b,c,g))})}function j(a,b){for(;3===a._65;)a=a._55;return h._37&&h._37(a),0===a._65?0===a._40?(a._40=1,void(a._72=b)):1===a._40?(a._40=2,void(a._72=[a._72,b])):void a._72.push(b):void k(a,b)}function k(a,b){q(function(){var c=1===a._65?b.onFulfilled:b.onRejected;if(null===c)return void(1===a._65?l(b.promise,a._55):m(b.promise,a._55));var d=f(c,a._55);d===s?m(b.promise,r):l(b.promise,d)})}function l(a,b){if(b===a)return m(a,new TypeError("A promise cannot be resolved with itself."));if(b&&("object"==typeof b||"function"==typeof b)){var c=e(b);if(c===s)return m(a,r);if(c===a.then&&b instanceof h)return a._65=3,a._55=b,void n(a);if("function"==typeof c)return void p(c.bind(b),a)}a._65=1,a._55=b,n(a)}function m(a,b){a._65=2,a._55=b,h._87&&h._87(a,b),n(a)}function n(a){if(1===a._40&&(j(a,a._72),a._72=null),2===a._40){for(var b=0;b<a._72.length;b++)j(a,a._72[b]);a._72=null}}function o(a,b,c){this.onFulfilled="function"==typeof a?a:null,this.onRejected="function"==typeof b?b:null,this.promise=c}function p(a,b){var c=!1,d=g(a,function(a){c||(c=!0,l(b,a))},function(a){c||(c=!0,m(b,a))});c||d!==s||(c=!0,m(b,r))}var q=a("asap/raw"),r=null,s={};b.exports=h,h._37=null,h._87=null,h._61=d,h.prototype.then=function(a,b){if(this.constructor!==h)return i(this,a,b);var c=new h(d);return j(this,new o(a,b,c)),c}},{"asap/raw":99}],102:[function(a,b,c){"use strict";function d(a){var b=new e(e._61);return b._65=1,b._55=a,b}var e=a("./core.js");b.exports=e;var f=d(!0),g=d(!1),h=d(null),i=d(void 0),j=d(0),k=d("");e.resolve=function(a){if(a instanceof e)return a;if(null===a)return h;if(void 0===a)return i;if(a===!0)return f;if(a===!1)return g;if(0===a)return j;if(""===a)return k;if("object"==typeof a||"function"==typeof a)try{var b=a.then;if("function"==typeof b)return new e(b.bind(a))}catch(c){return new e(function(a,b){b(c)})}return d(a)},e.all=function(a){var b=Array.prototype.slice.call(a);return new e(function(a,c){function d(g,h){if(h&&("object"==typeof h||"function"==typeof h)){if(h instanceof e&&h.then===e.prototype.then){for(;3===h._65;)h=h._55;return 1===h._65?d(g,h._55):(2===h._65&&c(h._55),void h.then(function(a){d(g,a)},c))}var i=h.then;if("function"==typeof i){var j=new e(i.bind(h));return void j.then(function(a){d(g,a)},c)}}b[g]=h,0===--f&&a(b)}if(0===b.length)return a([]);for(var f=b.length,g=0;g<b.length;g++)d(g,b[g])})},e.reject=function(a){return new e(function(b,c){c(a)})},e.race=function(a){return new e(function(b,c){a.forEach(function(a){e.resolve(a).then(b,c)})})},e.prototype["catch"]=function(a){return this.then(null,a)}},{"./core.js":101}],103:[function(a,b,c){"function"!=typeof Promise.prototype.done&&(Promise.prototype.done=function(a,b){var c=arguments.length?this.then.apply(this,arguments):this;c.then(null,function(a){setTimeout(function(){throw a},0)})})},{}],104:[function(a,b,c){a("asap");"undefined"==typeof Promise&&(Promise=a("./lib/core.js"),a("./lib/es6-extensions.js")),a("./polyfill-done.js")},{"./lib/core.js":101,"./lib/es6-extensions.js":102,"./polyfill-done.js":103,asap:98}]},{},[2])(2)});
\ No newline at end of file
diff --git a/lib/logo-cesium.svg b/lib/logo-cesium.svg
new file mode 100644
index 0000000000000000000000000000000000000000..8d8f542b8582af4a36a0405f02adbb81cb47626e
--- /dev/null
+++ b/lib/logo-cesium.svg
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg width="512px" height="512px" viewBox="0 0 500 500" xmlns="http://www.w3.org/2000/svg" xmlns:bx="https://boxy-svg.com">
+  <path d="M 390.992 122.276 C 418.209 157.183 434.924 200.278 441.202 248.24 C 441.187 276.711 435.71 305.292 425.308 333.282 C 371.101 416.727 274.951 449.213 167.669 434.279 C 136.406 416.036 109.009 390.076 86.272 358.016 C 67.778 323.794 57.942 284.4 56.489 242.062 C 62.206 199.766 79.617 161.912 106.301 129.617 C 162.524 85.439 239.03 70.181 321.968 82.52 C 345.508 92.535 368.657 105.883 390.992 122.276 Z" style="fill: rgb(255, 255, 255);" bx:origin="0 0"/>
+  <g transform="matrix(0.517848, 0, 0, 0.517848, -53.306625, -599.931213)" style="opacity: 1;">
+    <g id="g-14" style="display: inline; opacity: 0.5;" transform="matrix(1, 0, 0, 1, 144.570724, 1007.099426)">
+      <path style="display:inline;fill:#ffd086;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="M 585.16992,524.91211 C 447.41745,738.84015 285.93093,797.68142 93.347656,801.03711 158.66452,921.84083 287.20038,1003.1698 434.03906,1001.2559 607.56851,998.99446 752.51317,881.18488 796.65234,721.9668 c -2.6864,-6.57764 -6.20106,-13.62037 -10.8164,-21.13477 C 768.68987,677.03878 709.10478,568.47721 585.16992,524.91211 Z" id="path-102"/>
+      <path style="display:inline;fill:#270b0b;fill-opacity:0.99393939;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="M 586.254 524.115 C 564.682 650.453 477.974 754.472 498.584 835.602 C 524.648 938.199 419.458 961.515 333.973 989.342 C 365.923 997.545 399.475 1001.706 434.039 1001.256 C 634.052 998.649 796.093 842.536 809.561 646.439 C 793.197 641.777 777.425 634.689 766.723 622.746 C 734.035 586.272 650.117 546.564 586.254 524.115 Z" id="path-103" bx:origin="0.5 0.5"/>
+      <path style="display: inline; fill: rgb(203, 137, 3); fill-opacity: 0.993939; fill-rule: evenodd; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1;" d="M 586.254 524.115 C 564.682 650.453 477.974 754.472 498.584 835.602 C 524.648 938.199 419.458 961.515 333.973 989.342 C 365.923 997.545 399.475 1001.706 434.039 1001.256 C 634.052 998.649 796.093 842.536 809.561 646.439 C 793.197 641.777 777.425 634.689 766.723 622.746 C 734.035 586.272 650.117 546.564 586.254 524.115 Z" id="path-104" bx:origin="0.5 0.5"/>
+    </g>
+    <g id="g-15" style="display: inline; opacity: 0.5;" transform="matrix(1, 0, 0, 1, 144.570724, 1007.099426)">
+      <rect x="504.265" y="500.287" width="23.492" height="25.527" style="display:inline;opacity:1;fill:#fabb37;fill-opacity:1;stroke:none;stroke-width:34.90000153;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" id="path-105"/>
+      <rect x="369.174" y="415.429" width="22.384" height="24.419" style="display:inline;opacity:1;fill:#ffd086;fill-opacity:1;stroke:none;stroke-width:34.90000153;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" id="path-106"/>
+      <rect x="418.995" y="433.019" width="30.524" height="30.524" style="display:inline;opacity:1;fill:#fabb37;fill-opacity:1;stroke:none;stroke-width:34.90000153;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" id="path-107"/>
+      <rect x="417.34" y="652.556" width="46.803" height="46.803" style="display:inline;opacity:1;fill:#fbc14c;fill-opacity:1;stroke:none;stroke-width:34.90000153;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" id="path-108"/>
+      <rect x="422.586" y="475.891" width="30.524" height="30.524" style="display:inline;opacity:1;fill:#fabb37;fill-opacity:1;stroke:none;stroke-width:34.90000153;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" id="path-109"/>
+      <rect x="472.618" y="605.457" width="24.419" height="26.454" style="display:inline;opacity:1;fill:#cc8902;fill-opacity:1;stroke:none;stroke-width:34.90000153;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" id="path-110"/>
+      <rect x="520.772" y="557.902" width="18.314" height="18.314" style="display:inline;opacity:1;fill:#fabb37;fill-opacity:1;stroke:none;stroke-width:34.90000153;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" id="path-111"/>
+      <rect x="454.784" y="563.028" width="30.524" height="30.524" style="display:inline;opacity:1;fill:#fabb37;fill-opacity:1;stroke:none;stroke-width:34.90000153;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" id="path-112"/>
+      <rect x="335.342" y="720.987" width="38.663" height="40.698" style="display:inline;opacity:1;fill:#fbc14c;fill-opacity:1;stroke:none;stroke-width:34.90000153;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" id="path-113"/>
+      <rect x="371.97" y="661.975" width="26.454" height="30.524" style="display:inline;opacity:1;fill:#fbc14c;fill-opacity:1;stroke:none;stroke-width:34.90000153;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" id="path-114"/>
+      <rect x="-427.93" y="610.085" width="24.507" height="24.419" style="display:inline;opacity:1;fill:#cc8902;fill-opacity:1;stroke:none;stroke-width:34.90000153;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" id="path-115" transform="scale(-1,1)"/>
+      <rect x="480.411" y="523.469" width="20.349" height="22.384" style="display:inline;opacity:1;fill:#ffd086;fill-opacity:1;stroke:none;stroke-width:34.90000153;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" id="path-116"/>
+      <rect x="-499.5" y="466.314" width="24.507" height="24.419" style="display:inline;opacity:1;fill:#cc8902;fill-opacity:1;stroke:none;stroke-width:34.90000153;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" id="path-117" transform="scale(-1,1)"/>
+    </g>
+    <g id="g-16" style="display: inline; opacity: 1;" transform="matrix(1.0000000700020495, 0, 0, 1.0000000700020495, 144.57072391079612, 1007.0994398715994)">
+      <path style="display: inline; fill: none; fill-opacity: 1; fill-rule: evenodd; stroke: rgb(255, 122, 0); stroke-width: 2.34888; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1;" d="M 585.16992,524.91211 C 447.41745,738.84015 285.93093,797.68142 93.347656,801.03711 158.66452,921.84083 287.20038,1003.1698 434.03906,1001.2559 607.56851,998.99446 752.51317,881.18488 796.65234,721.9668 c -2.6864,-6.57764 -6.20106,-13.62037 -10.8164,-21.13477 C 768.68987,677.03878 709.10478,568.47721 585.16992,524.91211 Z" id="path-118"/>
+      <path style="display: inline; fill: none; fill-opacity: 0.993939; fill-rule: evenodd; stroke: rgb(255, 122, 0); stroke-width: 2.34888; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1;" d="M 586.254 524.115 C 564.682 650.453 477.974 754.472 498.584 835.602 C 524.648 938.199 419.458 961.515 333.973 989.342 C 365.923 997.545 399.475 1001.706 434.039 1001.256 C 634.052 998.649 796.093 842.536 809.561 646.439 C 793.197 641.777 777.425 634.689 766.723 622.746 C 734.035 586.272 650.117 546.564 586.254 524.115 Z" id="path-119" bx:origin="0.5 0.5"/>
+      <path style="display: inline; fill: none; fill-opacity: 0.993939; fill-rule: evenodd; stroke: rgb(255, 122, 0); stroke-width: 2.34888; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1;" d="M 586.254 524.115 C 564.682 650.453 477.974 754.472 498.584 835.602 C 524.648 938.199 419.458 961.515 333.973 989.342 C 365.923 997.545 399.475 1001.706 434.039 1001.256 C 634.052 998.649 796.093 842.536 809.561 646.439 C 793.197 641.777 777.425 634.689 766.723 622.746 C 734.035 586.272 650.117 546.564 586.254 524.115 Z" id="path-120" bx:origin="0.5 0.5"/>
+    </g>
+  </g>
+  <g transform="matrix(0.608261, 0, 0, 0.608261, -20.084976, 3.255736)">
+    <g>
+      <path style="display: inline; fill: rgb(64, 178, 255); fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1; opacity: 0.78;" id="path-10" d="M 419.133 85.738 C 417.295 85.739 415.455 85.754 413.611 85.778 C 354.852 86.561 299.023 99.174 248.358 121.32 C 584.121 13.206 796.175 211.26 831.7 508.773 L 846.383 507.124 C 815.586 235.801 652.477 85.588 419.133 85.738 Z" transform="matrix(0.96373, 0.266878, -0.266878, 0.96373, 89.505231, -136.615061)" bx:origin="0.5 0.5"/>
+      <path style="display: inline; fill: rgb(64, 178, 255); fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1; opacity: 1;" id="path-3" d="M 146.037 194.065 C 144.201 194.066 142.361 194.081 140.517 194.104 C 81.76 194.888 25.931 207.503 -24.736 229.648 C 311.029 121.531 523.083 319.583 558.604 617.093 L 573.284 615.443 C 542.49 344.122 379.385 193.913 146.037 194.065 Z" transform="matrix(-0.180988, -0.983485, 0.983485, -0.180988, -39.298581, 705.897544)" bx:origin="0.5 0.5"/>
+      <path style="display: inline; fill: rgb(64, 178, 255); fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1; opacity: 0.4;" id="path-11" d="M 487.744 193.084 C 485.906 193.085 484.067 193.1 482.223 193.123 C 423.464 193.907 367.635 206.52 316.975 228.668 C 652.726 120.552 864.775 318.605 900.299 616.109 L 914.979 614.46 C 884.184 343.144 721.081 192.935 487.744 193.084 Z" transform="matrix(0.619997, 0.784605, -0.784605, 0.619997, 523.067231, -343.331539)" bx:origin="0.5 0.5"/>
+      <path style="display: inline; fill: rgb(64, 178, 255); fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1; opacity: 0.84;" id="path-12" d="M 295.969 432.757 C 294.131 432.758 292.293 432.773 290.449 432.797 C 231.688 433.58 175.86 446.194 125.198 468.341 C 460.957 360.226 673.005 558.28 708.526 855.786 L 723.207 854.139 C 692.412 582.819 529.31 432.609 295.969 432.757 Z" transform="matrix(-0.978849, 0.204584, -0.204584, -0.978849, 963.820796, 1116.367293)" bx:origin="0.5 0.5"/>
+      <path style="display: inline; fill: rgb(64, 178, 255); fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1; opacity: 0.4;" id="path-13" d="M 158.036 148.83 C 156.2 148.833 154.36 148.846 152.516 148.872 C 93.759 149.653 37.93 162.267 -12.734 184.411 C 323.022 76.301 535.076 274.352 570.604 571.857 L 585.286 570.208 C 554.483 298.891 391.38 148.683 158.036 148.83 Z" transform="matrix(0.338614, -0.940926, 0.940926, 0.338614, -115.595158, 483.705984)" bx:origin="0.5 0.5"/>
+      <path style="display: inline; fill: rgb(64, 178, 255); fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1; opacity: 1;" id="path-14" d="M 501.019 288.292 C 499.181 288.293 497.34 288.308 495.496 288.331 C 436.736 289.115 380.908 301.726 330.243 323.874 C 666.004 215.757 878.062 413.812 913.586 711.322 L 928.268 709.673 C 897.468 438.352 734.361 288.141 501.019 288.292 Z" transform="matrix(0.164656, 0.986351, -0.986351, 0.164656, 982.857266, -233.452063)" bx:origin="0.5 0.5"/>
+      <path style="display: inline; fill: rgb(64, 178, 255); fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1; opacity: 0.4;" id="path-15" d="M 192.954 376.521 C 191.115 376.522 189.277 376.537 187.433 376.561 C 128.674 377.344 72.845 389.958 22.181 412.103 C 357.94 303.989 569.987 502.045 605.505 799.553 L 620.188 797.905 C 589.392 526.584 426.295 376.369 192.954 376.521 Z" transform="matrix(-0.931404, -0.363988, 0.363988, -0.931404, 419.499006, 1182.599809)" bx:origin="0.5 0.5"/>
+      <path style="display: inline; fill: rgb(64, 178, 255); fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1; opacity: 1;" id="path-16" d="M 221.614 63.973 C 219.777 63.976 217.938 63.99 216.094 64.015 C 157.334 64.795 101.506 77.409 50.841 99.554 C 386.598 -8.559 598.651 189.497 634.173 487.001 L 648.854 485.354 C 618.058 214.037 454.954 63.824 221.614 63.973 Z" transform="matrix(0.750452, -0.660925, 0.660925, 0.750452, -70.803322, 290.920273)" bx:origin="0.5 0.5"/>
+      <path style="display: inline; fill: rgb(64, 178, 255); fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1; opacity: 0.4;" id="path-17" d="M 441.888 342.098 C 440.047 342.098 438.207 342.114 436.362 342.138 C 377.601 342.922 321.765 355.535 271.103 377.681 C 606.886 269.567 818.944 467.615 854.462 765.133 L 869.142 763.483 C 838.354 492.154 675.242 341.948 441.888 342.098 Z" transform="matrix(-0.356582, 0.934264, -0.934264, -0.356582, 1256.759493, 169.182552)" bx:origin="0.5 0.5"/>
+      <g transform="matrix(0.762493, 0, 0, 0.762493, 19.294647, -716.322815)">
+        <path d="M 566.466 1089.137 L 566.466 1148.222 C 565.867 1148.219 565.267 1148.217 564.667 1148.217 C 561.481 1148.217 558.31 1148.259 555.154 1148.341 L 555.154 1089.137 Z M 908.29 1477.146 L 956.987 1477.146 L 956.987 1488.458 L 908.569 1488.458 C 908.539 1484.693 908.447 1480.922 908.29 1477.146 Z M 566.466 1835.013 L 566.466 1876.467 L 555.154 1876.467 L 555.154 1834.886 C 558.318 1834.973 561.49 1835.017 564.667 1835.017 C 565.267 1835.017 565.867 1835.016 566.466 1835.013 Z M 220.775 1488.458 L 169.657 1488.458 L 169.657 1477.146 L 221.089 1477.146 C 220.921 1480.909 220.816 1484.68 220.775 1488.458 Z" style="fill: rgb(64, 40, 0); stroke: none;" bx:origin="0 0"/>
+        <path d="M 760.121 1143.311 L 717.336 1217.417 C 715.72 1216.518 714.096 1215.632 712.465 1214.761 L 755.318 1140.537 Z M 830.122 1324.203 L 900.424 1283.614 L 903.198 1288.417 L 833.04 1328.923 C 832.08 1327.339 831.107 1325.766 830.122 1324.203 Z M 840.599 1641.137 L 903.197 1677.278 L 900.424 1682.082 L 837.911 1645.99 C 838.821 1644.38 839.717 1642.762 840.599 1641.137 Z M 725.168 1761.843 L 760.122 1822.385 L 755.318 1825.158 L 720.379 1764.641 C 721.985 1763.722 723.582 1762.789 725.168 1761.843 Z M 403.538 1760.932 L 366.456 1825.159 L 361.653 1822.386 L 398.802 1758.042 C 400.372 1759.019 401.951 1759.982 403.538 1760.932 Z M 289.58 1642.689 L 221.35 1682.082 L 218.577 1677.279 L 286.944 1637.807 C 287.807 1639.437 288.685 1641.065 289.58 1642.689 Z M 294.354 1332.168 L 218.576 1288.417 L 221.35 1283.614 L 297.213 1327.414 C 296.246 1328.99 295.293 1330.575 294.354 1332.168 Z M 406.079 1220.259 L 361.653 1143.311 L 366.457 1140.537 L 410.889 1217.495 C 409.276 1218.403 407.673 1219.324 406.079 1220.259 Z" style="fill: rgb(64, 40, 0); stroke: none;" bx:origin="0 0"/>
+      </g>
+    </g>
+    <rect x="429.367" y="425.979" width="20.003" height="21.735" style="display: inline; opacity: 1; fill: rgb(80, 150, 200); fill-opacity: 1; stroke: none; stroke-width: 34.9; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0; stroke-opacity: 0.996078;" id="path-91" transform="matrix(1, 0, 0, 0.999999, -301.377075, -219.498434)"/>
+    <rect x="446.853" y="25.462" width="25.99" height="25.99" style="display: inline; opacity: 1; fill: rgb(80, 150, 200); fill-opacity: 1; stroke: none; stroke-width: 34.9; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0; stroke-opacity: 0.996078;" id="path-93"/>
+    <rect x="-135.956" y="605.141" width="39.851" height="39.851" style="display: inline; opacity: 1; fill: rgb(80, 150, 200); fill-opacity: 1; stroke: none; stroke-width: 34.9; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0; stroke-opacity: 0.996078;" id="path-94" transform="matrix(0.999999, 0, 0, 1, 846.176756, -394.956024)"/>
+    <rect x="225.779" y="689.836" width="25.99" height="25.99" style="display: inline; opacity: 1; fill: rgb(80, 150, 200); fill-opacity: 1; stroke: none; stroke-width: 34.9; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0; stroke-opacity: 0.996078;" id="path-95"/>
+    <rect x="594.013" y="737.142" width="20.792" height="22.525" style="display: inline; opacity: 1; fill: rgb(80, 150, 200); fill-opacity: 1; stroke: none; stroke-width: 34.9; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0; stroke-opacity: 0.996078;" id="path-96"/>
+    <rect x="387.235" y="479.397" width="25.99" height="25.99" style="display: inline; opacity: 1; fill: rgb(80, 150, 200); fill-opacity: 1; stroke: none; stroke-width: 34.9; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0; stroke-opacity: 0.996078;" id="path-98" transform="matrix(1.000001, 0, 0, 0.999999, 365.274966, 79.295241)"/>
+    <rect x="421.962" y="775.937" width="32.92" height="34.653" style="display: inline; opacity: 1; fill: rgb(80, 150, 200); fill-opacity: 1; stroke: none; stroke-width: 34.9; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0; stroke-opacity: 0.996078;" id="path-99"/>
+    <rect x="-66.939" y="-568.978" width="20.867" height="20.792" style="display: inline; opacity: 1; fill: rgb(80, 150, 200); fill-opacity: 1; stroke: none; stroke-width: 34.9; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0; stroke-opacity: 0.996078;" id="path-101" transform="matrix(-1, 0, 0, 0.999997, 31.356928, 984.736306)"/>
+  </g>
+  <path d="M 154.526 230.66 C 148.801 230.66 144.279 232.568 140.962 236.383 C 137.648 240.195 135.992 245.417 135.992 252.046 C 135.992 258.863 137.591 264.13 140.785 267.849 C 143.981 271.567 148.536 273.426 154.453 273.426 C 158.086 273.426 162.232 272.773 166.892 271.468 L 166.892 276.778 C 163.279 278.133 158.825 278.808 153.528 278.808 C 145.853 278.808 139.929 276.482 135.761 271.827 C 131.59 267.167 129.502 260.55 129.502 251.972 C 129.502 246.604 130.507 241.899 132.519 237.862 C 134.526 233.823 137.424 230.71 141.21 228.524 C 145.002 226.339 149.463 225.247 154.593 225.247 C 160.06 225.247 164.835 226.243 168.924 228.238 L 166.356 233.439 C 162.411 231.586 158.469 230.66 154.526 230.66 Z M 193.468 278.808 C 187.692 278.808 183.136 277.051 179.799 273.535 C 176.462 270.021 174.794 265.137 174.794 258.889 C 174.794 252.592 176.342 247.588 179.44 243.883 C 182.542 240.176 186.707 238.323 191.933 238.323 C 196.829 238.323 200.701 239.934 203.552 243.154 C 206.403 246.374 207.828 250.621 207.828 255.895 L 207.828 259.636 L 180.925 259.636 C 181.043 264.224 182.2 267.704 184.398 270.081 C 186.596 272.458 189.69 273.646 193.679 273.646 C 197.885 273.646 202.044 272.763 206.155 271.006 L 206.155 276.279 C 204.063 277.183 202.084 277.832 200.219 278.225 C 198.357 278.615 196.108 278.808 193.468 278.808 M 191.861 243.275 C 188.726 243.275 186.227 244.296 184.362 246.341 C 182.497 248.383 181.397 251.212 181.065 254.826 L 201.489 254.826 C 201.489 251.096 200.657 248.238 198.991 246.256 C 197.327 244.268 194.952 243.275 191.861 243.275 Z M 242.758 267.44 C 242.758 271.078 241.402 273.882 238.695 275.852 C 235.986 277.824 232.184 278.808 227.289 278.808 C 222.11 278.808 218.072 277.99 215.173 276.352 L 215.173 270.866 C 217.05 271.815 219.063 272.563 221.213 273.11 C 223.362 273.653 225.434 273.924 227.43 273.924 C 230.519 273.924 232.895 273.431 234.558 272.447 C 236.221 271.462 237.052 269.959 237.052 267.939 C 237.052 266.419 236.392 265.118 235.076 264.035 C 233.757 262.956 231.185 261.68 227.362 260.209 C 223.725 258.853 221.141 257.673 219.607 256.662 C 218.074 255.652 216.935 254.506 216.189 253.219 C 215.437 251.938 215.064 250.407 215.064 248.621 C 215.064 245.437 216.36 242.927 218.951 241.085 C 221.537 239.245 225.089 238.323 229.607 238.323 C 233.812 238.323 237.923 239.179 241.937 240.892 L 239.832 245.701 C 235.915 244.084 232.362 243.275 229.175 243.275 C 226.373 243.275 224.258 243.715 222.831 244.594 C 221.407 245.475 220.697 246.688 220.697 248.232 C 220.697 249.277 220.963 250.168 221.499 250.902 C 222.035 251.639 222.895 252.342 224.085 253.006 C 225.267 253.672 227.548 254.636 230.926 255.895 C 235.558 257.583 238.685 259.278 240.313 260.986 C 241.942 262.699 242.758 264.849 242.758 267.44 Z M 257.991 278.097 L 252.074 278.097 L 252.074 239.036 L 257.991 239.036 L 257.991 278.097 M 251.574 228.451 C 251.574 227.097 251.907 226.106 252.572 225.477 C 253.237 224.844 254.067 224.528 255.065 224.528 C 256.019 224.528 256.841 224.851 257.529 225.495 C 258.218 226.135 258.563 227.121 258.563 228.451 C 258.563 229.781 258.218 230.773 257.529 231.426 C 256.841 232.079 256.019 232.405 255.065 232.405 C 254.067 232.405 253.237 232.079 252.572 231.426 C 251.907 230.773 251.574 229.781 251.574 228.451 Z M 275.933 239.036 L 275.933 264.375 C 275.933 267.558 276.658 269.935 278.109 271.504 C 279.558 273.073 281.828 273.858 284.918 273.858 C 289.004 273.858 291.991 272.741 293.881 270.507 C 295.769 268.273 296.712 264.625 296.712 259.564 L 296.712 239.036 L 302.63 239.036 L 302.63 278.097 L 297.745 278.097 L 296.893 272.861 L 296.57 272.861 C 295.359 274.782 293.679 276.254 291.529 277.277 C 289.38 278.298 286.926 278.808 284.169 278.808 C 279.417 278.808 275.858 277.682 273.493 275.428 C 271.13 273.169 269.947 269.556 269.947 264.588 L 269.947 239.036 L 275.933 239.036 Z M 364.573 278.097 L 364.573 252.685 C 364.573 249.573 363.909 247.241 362.578 245.682 C 361.248 244.126 359.18 243.347 356.374 243.347 C 352.692 243.347 349.971 244.406 348.211 246.522 C 346.455 248.636 345.577 251.891 345.577 256.286 L 345.577 278.097 L 339.66 278.097 L 339.66 252.685 C 339.66 249.573 338.993 247.241 337.664 245.682 C 336.335 244.126 334.255 243.347 331.429 243.347 C 327.722 243.347 325.008 244.458 323.284 246.681 C 321.56 248.903 320.7 252.546 320.7 257.606 L 320.7 278.097 L 314.781 278.097 L 314.781 239.036 L 319.593 239.036 L 320.554 244.382 L 320.84 244.382 C 321.958 242.479 323.535 240.997 325.566 239.93 C 327.598 238.86 329.872 238.323 332.391 238.323 C 338.497 238.323 342.49 240.533 344.367 244.954 L 344.647 244.954 C 345.815 242.909 347.501 241.294 349.707 240.106 C 351.918 238.918 354.438 238.323 357.269 238.323 C 361.684 238.323 364.991 239.46 367.189 241.731 C 369.387 243.997 370.485 247.625 370.485 252.618 L 370.485 278.097 L 364.573 278.097 Z" style="text-transform: none; fill: rgb(64, 40, 0); isolation: auto; opacity: 1;" bx:origin="0.5 0.5"/>
+</svg>
\ No newline at end of file
diff --git a/lib/logo.png b/lib/logo.png
deleted file mode 100644
index 57d8b5882ecf26cf5e00d204d05bad24eba97431..0000000000000000000000000000000000000000
Binary files a/lib/logo.png and /dev/null differ
diff --git a/lib/scripts.js b/lib/scripts.js
index 76dc09a284c869599c8f03bfbffb2a29fc21dc32..234eac3dda3213fe2ee77c943eb71ebc056b3c69 100644
--- a/lib/scripts.js
+++ b/lib/scripts.js
@@ -1,20 +1,45 @@
+
+/**
+ * Open the menu, when click on the menu header button
+ */
 function openMenu() {
-	
+
 	var menu = document.querySelector("header nav ul");
-	
 	var maxHeight = (menu.childElementCount * 2 + 1) + "rem";
-	
+
 	if (menu.style.height != maxHeight) {
-		
 		menu.style.height = maxHeight;
-		
+
 	} else {
-		
 		menu.style.height = "0rem";
-		
 	}
-	
 }
-
 document.querySelector("header nav button").addEventListener("click", openMenu);
 
+/**
+ * Detect if URL has a Cesium pattern (like '#/app/xxx'), then redirect to https://demo.cesium.app.
+ * (Useful for OLD links http://g1.duniter.fr/#/app/xxx )
+ */
+function detectCesiumHash() {
+	// Workaround to add String.startsWith() if not present
+	if (typeof String.prototype.startsWith !== 'function') {
+		console.debug("Adding String.prototype.startsWith() -> was missing on this platform");
+		String.prototype.startsWith = function (prefix, position) {
+			return this.indexOf(prefix, position) === 0;
+		};
+	}
+
+	console.debug("[app] Trying to detect Cesium hash in '#/app/' in URL...");
+	try {
+		var hash = window.location.hash;
+		if (hash && hash.startsWith('#/app/')) {
+			var demoUrl = "https://demo.cesium.app/" + hash;
+			console.debug("[app] Cesium hash detected! Redirect to: " + demoUrl);
+			window.location = demoUrl;
+		}
+	} catch (err) {
+		console.error(err);
+	}
+}
+
+detectCesiumHash();
diff --git a/lib/style-funding-alt-1.css b/lib/style-funding-alt-1.css
index 72da13465e822fc2842e31ecd5e587ee7aae5927..123fea4db4d1585662275d952ca5ad5dfeb31306 100644
--- a/lib/style-funding-alt-1.css
+++ b/lib/style-funding-alt-1.css
@@ -63,6 +63,17 @@ body#f-alt-1 #pubkey:after
 	content: "...";
 }
 
+
+body#f-alt-1 #successMsg
+{
+	opacity: 0;
+	/*height: 0;*/
+	line-height: 1.5em;
+	transition-property: opacity, height;
+	transition-duration: 1.5s, 0.5s;
+}
+
+
 body#f-alt-1 #copyButton, 
 body#f-alt-1 #supportButton
 {
@@ -95,5 +106,5 @@ body#f-alt-1 #pubkey-and-copy-button
 
 body#f-alt-1 article footer
 {
-	margin-top: calc(666vh / 6);	
+	margin-top: calc(666vh / 6 / 2);	
 }
\ No newline at end of file
diff --git a/lib/style.css b/lib/style.css
index 7ebb8a5fbe8ce12a337b6d7d333cd671a24ce9a4..8fca36fe3e21994c62fe2812d33deebaee921b7c 100644
--- a/lib/style.css
+++ b/lib/style.css
@@ -1,1730 +1,1352 @@
-
-@media (min-width: 576px) {
-	
+:root {
+  --bp1: 576px;
+  --bp2: 768px;
+  --bp3: 992px;
+  --bp4: 1200px;
+  --screenshot-ratio: 1.620915033;
+  --screenshot-laptop-keyboard-ratio: 0.901515152;
+}
+@font-face {
+  font-family: 'FontAwesome';
+  font-style: normal;
+  font-weight: 900;
+  font-display: auto;
+  src: url("webfonts/fa-solid-900.eot");
+  src: url("webfonts/fa-solid-900.eot?#iefix") format("embedded-opentype"), url("webfonts/fa-solid-900.woff2") format("woff2"), url("webfonts/fa-solid-900.woff") format("woff"), url("webfonts/fa-solid-900.ttf") format("truetype"), url("webfonts/fa-solid-900.svg#fontawesome") format("svg");
 }
-
-@media (min-width: 768px) {
-	
-	
-	
+/* ======= COMMON ======= */
+body {
+  background: #111111;
+  padding: 0;
+  margin: 0;
+  font-family: "Open Sans", sans-serif;
+  color: #212529;
+  overflow-x: hidden;
+}
+body main {
+  background: #301873;
+}
+body a,
+body a:focus,
+body a:active,
+body a:visited {
+  color: #169c9a;
+  text-decoration: none;
+}
+body a:focus {
+  outline: 0;
+}
+body a:hover {
+  color: #00b3b0;
+  transition: color 0.25s ease-in-out;
+}
+body p.CTA-button {
+  text-align: center;
+  margin-left: auto;
+  margin-right: auto;
+}
+body p.CTA-button a,
+body p.CTA-button button {
+  background-color: #ffc107;
+  color: black;
+  text-shadow: 0px 0px 15px white;
+  transition: box-shadow 0.666s, color 0.666s;
+  padding: 1rem 2rem;
+  font-size: 0.8203125rem;
+  line-height: 1.5;
+  border: 0;
+  border-radius: 0;
+  cursor: pointer;
+  letter-spacing: 0.05em;
+  text-transform: uppercase;
+  display: inline-block;
+  vertical-align: middle;
+  text-decoration: none;
+}
+body p.CTA-button a:hover,
+body p.CTA-button button:hover {
+  /*color: #fcfcfc;*/
+  box-shadow: 0 0 15px #fcfcfc;
+  background-color: #ffc107;
+  text-decoration: none;
+}
+body h1,
+body h2,
+body h3,
+body h4,
+body h5,
+body h6 {
+  font-weight: 500;
+}
+body iframe {
+  border: 0;
+}
+body code,
+body pre {
+  background-color: #424242;
+  color: #efefef;
+  padding: 0.375em 0.75em;
+}
+body pre {
+  margin: 0.375em 0;
+}
+body pre.console:before {
+  content: "$ ";
+}
+body h1 {
+  text-align: center;
+  margin: 0;
+  padding: 1.5em 0 1.5em;
+  font-size: 3rem;
+  font-weight: 500;
+  color: #fcfcfc;
+}
+body table {
+  border-collapse: collapse;
+}
+body table td,
+body table th {
+  border: 1px solid #ccc;
+  padding: 0.5rem;
+}
+body table th {
+  background: #f7f7f7;
+}
+body [colspan] {
+  text-align: center;
+}
+body img {
+  display: block;
+  margin: auto;
+}
+body mark {
+  background: yellow;
+}
+body mark:nth-of-type(2n) {
+  background: pink;
+}
+/* ======= CONTENTS (like thank you page) ======= */
+.text-box,
+section.text-box {
+  background-color: #FDF5E6;
+  color: #424242;
+  font-size: 1.25rem;
+  line-height: 1.75rem;
+  max-width: 800px;
+  margin: auto;
+  padding: 0 0 0.001rem 0;
+}
+section.text-box {
+  padding: 2em;
+}
+.text-box section {
+  margin-top: 0rem;
+  margin-bottom: 3rem;
+}
+.text-box section h2 {
+  background: #201b18;
+  color: white;
+  font-weight: bold;
+  padding: 2rem;
+  margin-bottom: 1em;
+}
+.text-box section h3 {
+  font-weight: bold;
+  margin-top: 1em;
+  padding: 0.5rem 1rem;
 }
-
-@media (min-width: 992px) {
-	
-	
+.text-box section p,
+.text-box section h3,
+.text-box section h4,
+.text-box section h5,
+.text-box section h6,
+.text-box section ul,
+.text-box section ol,
+.text-box section dl,
+.text-box section table {
+  margin-left: 2rem;
+  margin-right: 2rem;
+  text-align: justify;
+  width: auto;
 }
-
-@media (min-width: 1200px) {
-	
+.text-box section td {
+  background: white;
+  color: black;
+}
+.text-box section th {
+  background: #212121;
+  color: white;
+  text-align: center;
+}
+.text-box section [colspan] {
+  text-align: center;
+}
+.text-box section .warning {
+  color: orange;
+}
+.text-box section h3.warning {
+  background-color: orange;
+  color: white;
+}
+.text-box section .bad {
+  color: red;
 }
-
-
-/* ======= COMMON ======= */
-
-body
-{
-	background: rgb(17, 17, 17);
-	padding:0;
-	margin:0;
-	font-family: "Open Sans", sans-serif;
-	color: #212529;
-	overflow-x: hidden;
-}
-
-body main
-{
-	background: #311873;
-}
-
-a, 
-a:focus,
-a:active, 
-a:visited
-{
-	color: hsl(179, 75%, 35%);
-	text-decoration: none;
-}
-
-a:hover
-{
-	color: hsl(179, 100%, 35%);
-	transition: color 0.25s ease-in-out;
-}
-
-h1, 
-h2, 
-h3, 
-h4, 
-h5, 
-h6
-{
-	font-weight: 500;	
-}
-
-iframe
-{
-	border: 0;
-}
-
-
-code, 
-pre {
-	
-	background-color: rgb(66, 66, 66);	
-	color: rgb(239, 239, 239);
-	padding: 0.375em 0.75em;
-}
-
-
-pre {
-	
-	margin: 0.375em 0;
-}
-
-pre.console:before {
-	
-	content: "$ ";
-}
-
-h1
-{
-	text-align: center;
-	margin: 0;
-	padding: 1.5em 0 1.5em;
-	font-size: 3rem;
-	font-weight: 500;
-	color: #fcfcfc;
-}
-
-
-
 /* ======= FOOTER ======= */
-
-
-body > footer
-{
-	z-index: 999;
-	position: relative;
-	background: rgb(17, 17, 17);
-	overflow: hidden;
-	color: #ccc;
-	font-size: 0.9rem;
-	padding-bottom: 2rem;
-	padding-top: 3rem;
-}
-
-
-body > footer ul, 
-body > footer p
-{
-	padding: 0;
-	margin: 0.5rem 0;
-	list-style-type: none;
-} 
-
-body > footer ul li
-{
-	padding: 0;
-	margin: 0;
-	line-height: 1.50em;
-}
-
-body > footer div
-{
-	display: flex;
-	flex-wrap: wrap;
-	margin: auto;
-}
-
-@media (max-width:575px)
-{
-	body > footer div
-	{
-		padding-left: 1rem;
-		padding-right: 1rem;
-		box-sizing: border-box;
-	}
-	
-	body > footer div > *
-	{
-		flex-basis: 50%;
-	}
+body > footer {
+  z-index: 999;
+  position: relative;
+  background: #111111;
+  overflow: hidden;
+  color: #ccc;
+  font-size: 0.9rem;
+  padding-bottom: 2rem;
+  padding-top: 3rem;
+}
+body > footer ul,
+body > footer p {
+  padding: 0;
+  margin: 0.5rem 0;
+  list-style-type: none;
+}
+body > footer ul li {
+  padding: 0;
+  margin: 0;
+  line-height: 1.50em;
+}
+body > footer div {
+  display: flex;
+  flex-wrap: wrap;
+  margin: auto;
 }
-
-@media (min-width:576px)
-{
-	body > footer div
-	{
-		padding-left: 1rem;
-		padding-right: 1rem;
-		box-sizing: border-box;
-	}
-	
-	body > footer div > *
-	{
-		flex-basis: 33.333%;
-		flex-shrink: 1;
-	}
+@media (max-width: 575px) {
+  body > footer div {
+    padding-left: 1rem;
+    padding-right: 1rem;
+    box-sizing: border-box;
+  }
+  body > footer div > * {
+    flex-basis: 50%;
+  }
 }
-
-@media (min-width: 1200px)
-{
-	body > footer div
-	{
-		max-width: calc(1140px - 5rem);
-	}
+@media (min-width: 576px) {
+  body > footer div {
+    padding-left: 1rem;
+    padding-right: 1rem;
+    box-sizing: border-box;
+  }
+  body > footer div > * {
+    flex-basis: 33.333%;
+    flex-shrink: 1;
+  }
+}
+@media (min-width: 1200px) {
+  body > footer div {
+    max-width: calc(1140px - 5rem);
+  }
+}
+body > footer h5 {
+  color: #e4c380;
+  font-size: 1.05rem;
+  margin-bottom: 0.5rem;
+}
+body > footer a,
+body > footer a:hover,
+body > footer a:focus,
+body > footer a:active,
+body > footer a:visited {
+  color: #00A09D;
+  text-decoration: none;
 }
-
-body > footer h5
-{
-	color: #e4c380;
-	font-size: 1.05rem;
-	margin-bottom: 0.5rem;
-}
-
-
-body > footer a, 
-body > footer a:hover, 
-body > footer a:focus, 
-body > footer a:active, 
-body > footer a:visited
-{
-	color: #00A09D;
-	text-decoration: none;	
-}
-
 /* ======= BARRE DE LANGUES ======= */
-
-
-
-
-@media (max-width: 575px)
-{
-	nav#langSelector ul li > * span:first-child
-	{
-		display: none;
-	}
+@media (max-width: 575px) {
+  nav#langSelector ul li > * span:first-child {
+    display: none;
+  }
 }
-
-@media (min-width: 576px)
-{
-	nav#langSelector
-	{
-		position: fixed;
-		right: 0;
-		bottom: 0;
-		z-index: 1010;
-		text-align: right;
-		background: rgba(0, 0, 0, 0.8);
-		border-top-left-radius: 1em;
-		height: auto;
-	}
-	
-	nav#langSelector h5
-	{
-		display: none;
-	}
-
-	nav#langSelector ul
-	{
-		margin: 0;
-		padding: 0.5em 0 0.25em 0;
-	}
-
-	nav#langSelector li
-	{
-		display: block;
-		margin: 0 0 0 0;
-		padding: 0;
-		text-align: center;
-	}
-	
-	nav#langSelector ul li > *
-	{
-		display: block;
-		padding: 0.125em 0.75em;
-	}
-
-	nav#langSelector ul li > * span:last-child
-	{
-		display: none;
-	}
-
-	nav#langSelector li a
-	{
-		font-weight: bold;
-		color: white;
-	}
-
-	nav#langSelector li strong
-	{
-		color: rgba(255, 255, 255, 0.7);
-	}
-
-	#langSelector li:hover, 
-	#langSelector li:hover a, 
-	#langSelector li:hover a span
-	{
-		color: #ffc107;
-	}
-
-	nav#langSelector li:after
-	{
-		color: white;
-	}
-
-	nav#langSelector li:last-of-type:after
-	{
-		color: white;
-	}
+nav#langSelector ul li:hover,
+nav#langSelector ul li:hover * {
+  cursor: pointer;
 }
-
-#langSelector li:hover, 
-#langSelector li:hover *
-{
-    cursor: pointer;
+nav#langSelector ul li:last-of-type:after {
+  content: "";
+  margin-left: 0;
+}
+nav#langSelector ul li a,
+nav#langSelector ul li a:hover,
+nav#langSelector ul li a:focus,
+nav#langSelector ul li a:active,
+nav#langSelector ul li a:visited {
+  text-decoration: none;
+}
+@media (min-width: 576px) {
+  nav#langSelector {
+    position: fixed;
+    right: 0;
+    bottom: 0;
+    z-index: 1010;
+    text-align: right;
+    background: rgba(0, 0, 0, 0.8);
+    border-top-left-radius: 1em;
+    height: auto;
+  }
+  nav#langSelector h5 {
+    display: none;
+  }
+  nav#langSelector ul {
+    margin: 0;
+    padding: 0.5em 0 0.25em 0;
+  }
+  nav#langSelector ul li {
+    display: block;
+    margin: 0 0 0 0;
+    padding: 0;
+    text-align: center;
+  }
+  nav#langSelector ul li > * {
+    display: block;
+    padding: 0.125em 0.75em;
+  }
+  nav#langSelector ul li > * span:last-child {
+    display: none;
+  }
+  nav#langSelector ul li a {
+    font-weight: bold;
+    color: white;
+  }
+  nav#langSelector ul li strong {
+    color: rgba(255, 255, 255, 0.7);
+  }
+  nav#langSelector ul li:hover,
+  nav#langSelector ul li:hover a,
+  nav#langSelector ul li:hover a span {
+    color: #ffc107;
+  }
+  nav#langSelector ul li:after {
+    color: white;
+  }
+  nav#langSelector ul li:last-of-type:after {
+    color: white;
+  }
 }
-
-nav#langSelector li:last-of-type:after
-{
-	content: "";
-	margin-left: 0;
-}
-
-nav#langSelector a, 
-nav#langSelector a:hover, 
-nav#langSelector a:focus, 
-nav#langSelector a:active, 
-nav#langSelector a:visited
-{
-	text-decoration: none;	
-}
-
-
 /* ======= HEADER ======= */
-
-
-body header
-{
-	background: #311873;
-}
-
-body header:first-child 
-{
-	overflow: hidden;
-	height: 120px;
-	padding: 0.5rem 1rem;
-	box-sizing: content-box;
-	display: flex;
-	align-items: center;
-}
-
-/* ==== HEADER : titre et logo ==== */ 
-
-body header:first-child > h1, 
-body header:first-child > h2
-{
-	order: 2;
-	flex-grow: 1;
-	text-align: left;
-	font-size: 2.25rem;
-}
-
-body header:first-child > :first-child a, 
-body header:first-child > :first-child a:hover
-{
-	color: white;
-	text-decoration: none;
-	padding-left: 0.25em;
-}
-
-
-body header:first-child p, 
-body header:first-child p img
-{
-	height: 100%;
-}
-
-body header:first-child p img
-{
-	margin-left: 1em;
-}
-
+body > header:first-child {
+  background: #311873;
+  overflow: hidden;
+  height: 120px;
+  padding: 0.5rem 1rem;
+  box-sizing: content-box;
+  display: flex;
+  align-items: center;
+  /* ==== HEADER : titre et logo ==== */
+  /* ==== HEADER : menu ==== */
+}
+body > header:first-child a,
+body > header:first-child a:hover {
+  color: white;
+  text-decoration: none;
+}
+body > header:first-child p,
+body > header:first-child p img {
+  height: 100%;
+}
+body > header:first-child p img {
+  margin-left: 0.5em;
+  margin-right: 0.5em;
+}
 @media (max-width: 575px) {
-	
-	
-	body header:first-child p img
-	{
-		margin-left: 0;
-	}
+  body > header:first-child p img {
+    margin-left: 0;
+  }
 }
-
-body header:first-child > :nt-child(2)
-{
-	order: 1;
-}
-
-
-/* ==== HEADER : menu ==== */ 
-
-
-body header:first-child > nav
-{
-	order: 3;
-	flex-grow: 0;
-}
-
-
-body header:first-child > nav ul
-{
-	list-style: none;
-}
-
-@media (max-width: 991px)
-{
-	body header:first-child > nav ul
-	{
-		overflow: hidden;
-		position: absolute;
-		top: 120px;
-		right: 0;
-		width: 100vw;
-		background-color: hsl(256, 65.5%, 27.3%);
-		box-shadow: 0px 6px 5px hsl(256, 65.5%, 13%);
-		z-index: 10000;
-		padding: 0 1rem 0rem;
-		box-sizing: border-box;
-		transition: height 0.5s ease-out;
-		height: 0;
-		margin: 0;
-	}
-	
-	body header:first-child > nav ul li
-	{
-		margin: 0;
-		padding: 0;
-	}
-	
-	body header:first-child > nav ul li a span
-	{
-		height: 1rem;
-		padding: 0.5rem 0;
-		display: block;
-	}
-	
-	body header:first-child > nav button
-	{
-		order: 3;
-
-		display: block;
-		background-color: transparent;
-		color: rgba(255, 255, 255, 0.5);
-		width: 2rem;
-		height: 2rem;
-		cursor: pointer;
-		padding: 0;
-		margin: 0;
-		border: 0;
-	}
-
-	body header:first-child > nav button:after
-	{
-		content: "";
-		background-color: transparent;
-		background-image: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E");
-		background-repeat: repeat;
-		background-position: center center;
-		background-size: cover;
-
-		display: inline-block;
-		width: 2rem;
-		height: 2rem;
-		vertical-align: middle;
-		padding: 0;
-		margin: 0;
-		border: 1px solid rgba(255, 255, 255, 0.1);
-		border-radius: 0.1rem;
-	}
-
-	body header:first-child > nav button span
-	{
-		display: none;
-	}
-	
-	
-	body header:first-child > nav button:focus + ul
-	{
-		
-	}
+body > header:first-child > :nt-child(2) {
+  order: 1;
+}
+body > header:first-child > h1,
+body > header:first-child > h2 {
+  order: 2;
+  flex-grow: 1;
+  text-align: left;
+  font-size: 2.25rem;
+}
+@media (max-width: 575px) {
+  body > header:first-child > h1,
+  body > header:first-child > h2 {
+    font-size: 2rem;
+  }
+}
+body > header:first-child nav {
+  order: 3;
+  flex-grow: 0;
+}
+body > header:first-child nav ul {
+  list-style: none;
+  text-align: right;
+}
+body > header:first-child nav ul li a,
+body > header:first-child nav ul li a:hover {
+  color: #e4c380;
+  text-decoration: none;
+}
+@media (max-width: 1139px) {
+  body > header:first-child nav ul li.support-us a {
+    color: #f21c44;
+  }
+}
+@media (min-width: 1140px) {
+  body > header:first-child nav ul li.support-us {
+    border: 0;
+  }
+  body > header:first-child nav ul li.support-us a {
+    margin: 0;
+    padding: 1em;
+    display: block;
+    border-radius: 1em;
+    color: #f2f2f2;
+    background: #f21c44;
+  }
+  body > header:first-child nav ul li.support-us.active a {
+    color: #f21c44;
+    background: white;
+  }
+}
+@media (max-width: 1139px) {
+  body > header:first-child nav ul {
+    overflow: hidden;
+    position: absolute;
+    top: 120px;
+    right: 0;
+    width: 100vw;
+    background-color: #301873;
+    box-shadow: 0px 6px 5px #170b37;
+    z-index: 10000;
+    padding: 0 1rem 0rem;
+    box-sizing: border-box;
+    transition: height 0.5s ease-out;
+    height: 0;
+    margin: 0;
+  }
+  body > header:first-child nav ul li {
+    margin: 0;
+    padding: 0;
+  }
+  body > header:first-child nav ul li a span {
+    height: 1rem;
+    padding: 0.5rem 0;
+    display: block;
+  }
+  body > header:first-child nav button {
+    order: 3;
+    display: block;
+    background-color: transparent;
+    color: rgba(255, 255, 255, 0.5);
+    width: 2rem;
+    height: 2rem;
+    cursor: pointer;
+    padding: 0;
+    margin: 0;
+    border: 0;
+  }
+  body > header:first-child nav button:after {
+    content: "";
+    background-color: transparent;
+    background-image: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.8)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E");
+    background-repeat: repeat;
+    background-position: center center;
+    background-size: cover;
+    display: inline-block;
+    width: 2rem;
+    height: 2rem;
+    vertical-align: middle;
+    padding: 0;
+    margin: 0;
+    border-radius: 0.1rem;
+  }
+  body > header:first-child nav button span {
+    display: none;
+  }
+}
+@media (min-width: 1140px) {
+  body > header:first-child nav button {
+    display: none;
+  }
+  body > header:first-child nav ul li {
+    display: inline-block;
+    margin: 0 0.666rem;
+  }
+  body > header:first-child nav ul li a:hover {
+    border-bottom: 1px solid rgba(228, 195, 128, 0.33);
+  }
+  body > header:first-child nav ul li a:focus {
+    border-bottom: 1px solid rgba(228, 195, 128, 0.66);
+  }
+  body > header:first-child nav ul li.active a {
+    border-bottom: 1px solid #e4c380;
+  }
+  body > header:first-child nav ul li a {
+    padding: 0.5rem 0rem;
+  }
 }
-
-@media (min-width: 992px)
-{
-	
-	body header:first-child > nav button
-	{
-		display: none;
-	}
-
-	body header:first-child nav ul li
-	{
-		display: inline-block;
-		margin: 0 0.666rem;
-	}
-
-	body header:first-child nav ul li a:hover
-	{
-		border-bottom: 1px solid rgba(228, 195, 128, 0.33);
-	}
-
-	body header:first-child nav ul li a:focus
-	{
-		border-bottom: 1px solid rgba(228, 195, 128, 0.66);
-	}
-
-	body header:first-child nav ul li.active a
-	{
-		border-bottom: 1px solid rgb(228, 195, 128);
-	}
-
-	body header:first-child nav ul li a
-	{
-		padding: 0.5rem 0rem;
-	}
-
-	
-}
-
-body header:first-child nav ul
-{
-	text-align: right;
-}
-
-body header:first-child nav ul li a, 
-body header:first-child nav ul li a:hover
-{
-	color: rgb(228, 195, 128);
-	text-decoration: none;
-}
-
-
-/* ======= CONTENTS ======= */
-
-a:focus
-{
-	outline: 0;
-}
-
-.text-box, 
-section.text-box
-{
-	background-color: #FDF5E6;
-	color: rgb(66, 66, 66);	
-	font-size: 1.25rem;
-	max-width: 800px;
-	margin: auto;
-	padding: 0 0 0.001rem 0;
-}
-
-section.text-box
-{
-	padding: 2em;
-}
-
-.text-box section
-{
-	margin-top: 0rem;
-	margin-bottom: 3rem;
-}
-
-.text-box section h2
-{
-	background: rgb(32, 27, 24);
-	color: white;
-	font-weight: bold;
-	padding: 2rem;
-	margin-bottom: 1em;
-}
-
-.text-box section h3
-{
-	font-weight: bold;
-	margin-top: 1em;
-	padding: 0.5rem 1rem;
-}
-
-.text-box section p,
-.text-box section h3,
-.text-box section h4,
-.text-box section h5,
-.text-box section h6,
-.text-box section ul,
-.text-box section ol,
-.text-box section dl, 
-.text-box section table
-{
-	margin-left: 2rem;
-	margin-right: 2rem;
-	text-align: justify;
-	width: auto;
-}
-
-.text-box section td
-{
-	background: white;
-	color: black;
-}
-
-.text-box section th
-{
-	background: rgb(33, 33, 33);
-	color: white;
-	text-align: center;
-}
-
-.text-box section [colspan]
-{
-	text-align: center;	
-}
-
-.text-box section .warning
-{
-	color: orange;	
-}
-
-
-.text-box section h3.warning
-{
-	background-color: orange;
-	color: white;
-}
-
-.text-box section .bad
-{
-	color: red;	
-}
-
-
-p.CTA-button 
-{
-	text-align: center;
-	margin-left: auto;
-	margin-right: auto;
-}
-
-p.CTA-button a, 
-p.CTA-button button
-{
-	background-color: #ffc107;
-    color: black;
-    text-shadow: 0px 0px 15px white;
-    transition: box-shadow 0.666s, color 0.666s;
-	padding: 1rem 2rem;
-    font-size: 0.8203125rem;
-    line-height: 1.5;
-	border: 0;
-    border-radius: 0;
-	cursor: pointer;
-	letter-spacing: 0.05em;
-	text-transform: uppercase;
-	display: inline-block;
-	vertical-align: middle;
-	text-decoration: none;
-}
-
-p.CTA-button a:hover, 
-p.CTA-button button:hover
-{
-    /*color: #fcfcfc;*/
-    box-shadow: 0 0 15px #fcfcfc;
-    background-color: #ffc107;
-	text-decoration: none;
-}
-
-
 /* ======= HOME ======= */
-
 :root {
-	--home-text-color : #212529;
-	--home-bg-color: #e9ecef;
+  --home-text-color: #212529;
+  --home-bg-color: #e9ecef;
+}
+body#home {
+  font-size: 1rem;
+  /* ======= Homepage : showcase ======= */
+  /* ======= Homepage : below showcase ======= */
+}
+body#home #showcase {
+  color: white;
+}
+body#home #showcase *:not(.CTA-button) > a,
+body#home #showcase *:not(.CTA-button) > a:focus,
+body#home #showcase *:not(.CTA-button) > a:active,
+body#home #showcase *:not(.CTA-button) > a:visited {
+  color: #20dfdc;
+}
+body#home #showcase *:not(.CTA-button) > a:hover {
+  color: #00fffb;
+  transition: color 0.25s ease-in-out;
+}
+@media screen and (max-width: 879px), screen and (orientation: portrait) {
+  body#home #showcase div {
+    display: flex;
+    flex-wrap: wrap;
+    justify-content: center;
+    text-align: center;
+    flex-direction: row;
+    padding-bottom: 2rem;
+  }
+  body#home #showcase div * {
+    flex-basis: 100%;
+    flex-shrink: 0;
+  }
+  body#home #showcase div figure {
+    padding: 0 5%;
+    box-sizing: border-box;
+    margin: auto;
+  }
+  body#home #showcase div figure img {
+    max-width: 100%;
+  }
+}
+@media screen and (min-width: 880px) and (orientation: landscape) {
+  body#home #showcase {
+    overflow: visible;
+  }
+  body#home #showcase div {
+    text-align: center;
+    box-sizing: border-box;
+    display: flex;
+    flex-direction: column;
+    flex-wrap: wrap;
+    position: relative;
+    justify-content: center;
+    width: 100%;
+    overflow: visible;
+  }
+  body#home #showcase div h2#USP {
+    margin-top: 0;
+    margin-bottom: 0;
+  }
+  body#home #showcase div > * {
+    margin-left: 50%;
+    margin-right: 0;
+    width: 50%;
+    background: transparent;
+  }
+  body#home #showcase div figure {
+    position: absolute;
+    overflow: visible;
+    height: 100%;
+    margin-left: 0;
+    margin-top: 0;
+    margin-bottom: 0;
+    padding: 0;
+  }
+  body#home #showcase div figure img {
+    position: absolute;
+    align-self: center;
+    /*max-height: calc(~"90vh - 120px");*/
+    height: 100%;
+  }
+  body#home #showcase div aside * {
+    display: inline;
+  }
+  body#home #showcase div aside + div {
+    clear: both;
+    height: 0;
+  }
+}
+@media screen and (min-width: 880px) and (orientation: landscape) {
+  body#home #showcase div figure {
+    order: 1;
+  }
+  body#home #showcase div h2 {
+    order: 2;
+  }
+  body#home #showcase div *:nth-child(n+3) {
+    order: 3;
+  }
+}
+@media screen and (min-width: 880px) and (orientation: landscape) {
+  body#home #showcase {
+    --screenshot-height: calc(50vw / var(--screenshot-ratio));
+    --screenshot-top-offset: calc((1 - var(--screenshot-laptop-keyboard-ratio)) * var(--screenshot-height));
+    height: calc(50vw / var(--screenshot-ratio) + var(--screenshot-top-offset));
+    background-color: #f6f7ef;
+  }
+  body#home #showcase div {
+    background-color: #301873;
+    height: calc(50vw / var(--screenshot-ratio));
+  }
+  body#home #showcase div figure {
+    width: var(--screenshot-width);
+    top: var(--screenshot-top-offset);
+  }
 }
-
-@media screen and (min-width: 1200px)
-{
-	body#home section:nth-child(n+2) > div
-	{
-		max-width: 1140px;
-		margin: auto;
-	}
+@media (max-width: 575px) {
+  body#home #showcase h2#USP {
+    font-size: 2rem;
+  }
 }
-
-body#home main > section:nth-child(n+2)
-{
-	color: var(--home-text-color);
-	background-color: var(--home-bg-color);
-	background: linear-gradient(0deg, rgba(238,239,231,1) 0%, rgba(246,247,239,1) 100%);
-	padding-bottom: 1rem;
-	/*overflow: hidden;*/
-}
-
-body#home
-{
-	font-size: 1rem;
-}
-
-body#home section:nth-child(n+2) h2
-{
-	text-align: center;
-	padding: 3rem 0 2rem;
-	margin: 0;
-	font-size: 2rem;
-}
-
-/* ======= HOME : showcase ======= */
-
-body#home #showcase div
-{
-	display: flex;
-	flex-wrap: wrap;
-	justify-content: center;
-}
-
-body#home #showcase, 
-body#home #showcase h2#USP
-{
-	color: white;
-	text-align: center;
-}
-
-body#home #showcase :not(figure) {
-	
-	z-index: 666;
-}
-
-body#home #showcase h2#USP + p
-{
-	margin-top: 0rem;
-	margin-bottom: 2rem;
-}
-
-@media screen and (max-width: 767px)
-{
-	body#home #showcase div
-	{
-		flex-direction: row;
-		padding-bottom: 2rem;
-	}
-	
-	body#home #showcase div *
-	{
-		flex-basis: 100%;
-		flex-shrink: 0;
-	}
-	
-    body#home #showcase h2#USP
-	{
-		order: 1;
-        margin-top: 2.5rem;
-        margin-bottom: 2rem;
-    }
-	
-	body#home #showcase figure
-	{
-		order: 2;
-		padding: 0 5%;
-		box-sizing: border-box;
-		margin: auto;
-	}
-	
-	body#home #showcase figure img
-	{
-		max-width: 100%;
-	}
-	
-	body#home #showcase div *:nth-child(n+3)
-	{
-		order: 3;
-	}
+@media (min-width: 576px) {
+  body#home #showcase h2#USP {
+    font-size: 2.5rem;
+  }
+}
+@media screen and (max-width: 767px) {
+  body#home #showcase h2#USP {
+    padding-top: 1.5rem;
+    padding-bottom: 0rem;
+  }
+}
+@media screen and (min-width: 768px) {
+  body#home #showcase h2#USP {
+    padding-top: 1rem;
+    padding-bottom: 0rem;
+  }
+}
+@media screen and (min-width: 880px) and (orientation: landscape) {
+  body#home #showcase h2#USP {
+    font-size: 2rem;
+  }
+}
+@media screen and (min-width: 992px) and (orientation: landscape) {
+  body#home #showcase h2#USP {
+    font-size: 2.5rem;
+  }
+}
+body#home #showcase h2#USP + p {
+  margin-top: 0rem;
+  margin-bottom: 1rem;
 }
-
 @media (max-width: 575px) {
-	
-	body#home header:first-child > h1
-	{
-        font-size: 2rem;
-	}
-	
-    body#home section:nth-child(n+2) h2
-	{
-        font-size: 1.50rem;
-		padding: 2rem 0 1rem;
-	}
-	
-    body#home #showcase h2#USP
-	{
-        font-size: 1.75rem;
-	}
-	
-	body#home #showcase h2#USP + p
-	{
-		margin-top: 1rem;
-		margin-bottom: 0.5rem;
-	}
+  body#home #showcase h2#USP + p {
+    margin-top: 1rem;
+    margin-bottom: 0.5rem;
+  }
+}
+body#home #showcase #licence {
+  color: rgba(255, 255, 255, 0.75);
+  font-size: 0.90rem;
+}
+body#home main > section:nth-child(n+2) {
+  color: var(--home-text-color);
+  background-color: var(--home-bg-color);
+  background: linear-gradient(0deg, #eeefe7 0%, #f6f7ef 100%);
+  padding-bottom: 1rem;
+  /*overflow: hidden;*/
+  /* ====== Homepage : reviews ====== */
+  /* ====== Homepage : gallery ====== */
+  /* ======= Homepage : steps ======= */
+  /* ======= Homepage : features... ======= */
+}
+@media screen and (min-width: 1200px) {
+  body#home main > section:nth-child(n+2) > div {
+    max-width: 1140px;
+    margin: auto;
+  }
+}
+body#home main > section:nth-child(n+2) h2 {
+  text-align: center;
+  padding: 3rem 0 2rem;
+  margin: 0;
+  font-size: 2rem;
+}
+@media (max-width: 575px) {
+  body#home main > section:nth-child(n+2) h2 {
+    font-size: 1.50rem;
+    padding: 2rem 0 1rem;
+  }
+}
+body#home main > section:nth-child(n+2)#reviews blockquote div:before,
+body#home main > section:nth-child(n+2)#reviews blockquote:before {
+  position: absolute;
+  left: 50%;
+  font-size: 6rem;
+  width: 6rem;
+  font-family: cursive;
+  color: #222;
+}
+body#home main > section:nth-child(n+2)#reviews blockquote div:before {
+  content: '«';
+  float: left;
+  margin-left: calc(-50vh - 6rem);
+  margin-top: 1.20rem;
+  /* FTGCM */
+  transform: rotate(15deg);
+}
+body#home main > section:nth-child(n+2)#reviews blockquote:before {
+  content: '»';
+  margin-left: 50vh;
+  transform: rotate(-15deg);
+  text-align: right;
+}
+body#home main > section:nth-child(n+2)#reviews blockquote div {
+  line-height: 1.75em;
+  background: repeating-linear-gradient(#fffff2, #fffff2 1.65em, rgba(92, 91, 129, 0.05) 1.65em, rgba(92, 91, 129, 0.05) 1.75em);
+  box-shadow: 1px 1px 2px #404040;
+  padding: 0.40em 0.5rem;
+  font-family: cursive;
+  max-width: 100vh;
+  margin: auto;
+  box-sizing: border-box;
+  border: 1.75em solid #fffff2;
+  text-indent: 1.75em;
+}
+body#home main > section:nth-child(n+2)#reviews blockquote cite {
+  display: block;
+  text-align: right;
+  font-style: normal;
+}
+body#home main > section:nth-child(n+2)#reviews blockquote cite:before {
+  content: "— ";
+}
+body#home main > section:nth-child(n+2)#gallery {
+  padding-bottom: 0;
+}
+body#home main > section:nth-child(n+2)#gallery div {
+  display: flex;
+  flex-wrap: wrap;
+  max-width: 100%;
+  border: 0;
+  z-index: 161803;
+  box-shadow: -2px 2px 5px #000000;
+}
+body#home main > section:nth-child(n+2)#gallery h2 {
+  padding-bottom: 2rem;
+}
+body#home main > section:nth-child(n+2)#gallery figure {
+  margin: 0;
+  flex-shrink: 1;
+  overflow: hidden;
+  display: flex;
+  padding: 0 0;
+  background: black;
+}
+body#home main > section:nth-child(n+2)#gallery figure span {
+  display: flex;
+  height: auto;
+  border-radius: 0.5rem;
+  overflow: hidden;
+}
+body#home main > section:nth-child(n+2)#gallery figure img {
+  align-self: center;
+}
+body#home main > section:nth-child(n+2)#gallery figure#bar {
+  order: 3;
+}
+body#home main > section:nth-child(n+2)#gallery figure#djoliba {
+  order: 4;
+}
+body#home main > section:nth-child(n+2)#gallery figure#boat {
+  order: 1;
+}
+body#home main > section:nth-child(n+2)#gallery figure#vietnam {
+  order: 2;
+}
+@media (max-width: 575px) {
+  body#home main > section:nth-child(n+2)#gallery {
+    /* ====== Fine-tuning (c'est magique) ====== */
+  }
+  body#home main > section:nth-child(n+2)#gallery div {
+    padding: 0 39px;
+    background: url("film-y.png") repeat-y left -11px, url("film-y.png") repeat-y right -11px;
+    position: relative;
+    top: 3rem;
+  }
+  body#home main > section:nth-child(n+2)#gallery h2 {
+    padding-bottom: 0;
+  }
+  body#home main > section:nth-child(n+2)#gallery figure {
+    border-top: 0.75rem solid black;
+    border-bottom: 0.75rem solid black;
+    flex-basis: calc(100%);
+    height: calc(100vw - 2*39px);
+  }
+  body#home main > section:nth-child(n+2)#gallery figure img {
+    height: 100%;
+  }
+  body#home main > section:nth-child(n+2)#gallery figure#bar img {
+    transform: translateX(calc(0% - 2/10 * 100%));
+  }
+  body#home main > section:nth-child(n+2)#gallery figure#djoliba img {
+    transform: translateX(calc(0% - 3/7 * 100%));
+  }
+  body#home main > section:nth-child(n+2)#gallery figure#vietnam img {
+    transform: translateX(calc(0% - 2/5 * 100%));
+  }
 }
-
-
 @media (min-width: 576px) {
-	
-    body#home #showcase h2#USP
-	{
-        font-size: 2.5rem;
-	}
+  body#home main > section:nth-child(n+2)#gallery {
+    /* ====== Fine-tuning (c'est magique) ====== */
+  }
+  body#home main > section:nth-child(n+2)#gallery div {
+    padding: 39px 0;
+    background: url("film.png") repeat-x -11px top, url("film.png") repeat-x -11px bottom;
+  }
+  body#home main > section:nth-child(n+2)#gallery figure {
+    border-right: 1.5rem solid black;
+    flex-basis: calc(25% - 1.5rem);
+    height: calc(25vw - 1.5rem);
+  }
+  body#home main > section:nth-child(n+2)#gallery figure img {
+    height: 100%;
+  }
+  body#home main > section:nth-child(n+2)#gallery div {
+    transform: rotate(0.5deg) scaleX(1.05) scaleY(1.05);
+    position: relative;
+    top: 0.5rem;
+  }
+  body#home main > section:nth-child(n+2)#gallery figure#bar img {
+    transform: translateX(calc(0% - 1/10 * 100%));
+  }
+  body#home main > section:nth-child(n+2)#gallery figure#djoliba img {
+    transform: translateX(calc(0% - 3/7 * 100%));
+  }
+  body#home main > section:nth-child(n+2)#gallery figure#vietnam img {
+    transform: translateX(calc(0% - 1/5 * 100%));
+  }
+}
+body#home main > section:nth-child(n+2)#steps div {
+  display: flex;
+  flex-wrap: wrap;
+}
+body#home main > section:nth-child(n+2)#steps div h2 {
+  flex-basis: 100%;
+  flex-shrink: 0;
+}
+body#home main > section:nth-child(n+2)#steps div figure {
+  box-sizing: border-box;
+  overflow: hidden;
+  display: block;
+  background-color: white;
+  border: 1px solid rgba(0, 0, 0, 0.125);
+  border-radius: 0.25rem;
+}
+@media (max-width: 767px) {
+  body#home main > section:nth-child(n+2)#steps div figure {
+    margin: 1em 10%;
+    flex-basis: 80%;
+    flex-shrink: 1;
+  }
 }
-
-@media screen and (min-width: 768px)
-{
-    body#home #showcase h2#USP
-	{
-        font-size: 2rem;
-        margin-top: 1rem;
-		margin-bottom: 2rem;
-    }
-	
-	body#home #showcase div
-	{
-		flex-direction: column;
-		height: calc(90vh - 120px - 1rem);
-		box-sizing: border-box;
-	}
-
-	body#home #showcase div > *
-	{
-		width: 50%;	
-		margin-left:0;
-		margin-right: 0;
-	}
-
-	body#home #showcase figure
-	{
-		height: 100%;
-		display: block;
-		margin-top: 2rem;
-		padding: 0;
-	}
-
-	body#home #showcase figure img
-	{
-		align-self: center;
-		height: calc(90vh - 120px);
-		width: auto;
-		transform: translateY(1rem) translateX(-2vw);
-	}
+@media (min-width: 768px) {
+  body#home main > section:nth-child(n+2)#steps div figure {
+    margin: 1em;
+    flex-basis: calc(33.333% - 2em);
+    flex-shrink: 1;
+  }
+}
+body#home main > section:nth-child(n+2)#steps div figure h3,
+body#home main > section:nth-child(n+2)#steps div figure p {
+  padding-left: 1rem;
+  padding-right: 1rem;
+}
+body#home main > section:nth-child(n+2)#steps div figure h3 {
+  margin-top: 1rem;
+  color: black;
+}
+body#home main > section:nth-child(n+2)#steps div figure img {
+  max-width: 100%;
+}
+body#home main > section:nth-child(n+2).features-list div {
+  display: flex;
+  flex-wrap: wrap;
+}
+body#home main > section:nth-child(n+2).features-list div h2 {
+  flex-basis: 100%;
+  flex-shrink: 0;
+}
+body#home main > section:nth-child(n+2).features-list div dl {
+  display: flex;
+  flex-direction: row;
+  flex-wrap: wrap;
+  text-align: center;
+}
+body#home main > section:nth-child(n+2).features-list div dl dt {
+  font-weight: 500;
+  font-size: 1.25rem;
+}
+body#home main > section:nth-child(n+2).features-list div dl dt:before {
+  color: white;
+  width: 6rem;
+  height: 6rem;
+  line-height: 6rem;
+  font-size: 3rem;
+  display: block;
+  margin: 1rem auto;
+  font-family: 'FontAwesome';
+}
+body#home main > section:nth-child(n+2).features-list div dl dt.feature-secured:before {
+  background-color: #57a871;
+  text-shadow: 0px 0px 3px #346544;
+  box-shadow: -2px 2px 0px #ffffff;
+  /* ~effet bouton enfoncé */
+  border-radius: 50%;
+  content: "\f023";
+  /* lock */
+}
+body#home main > section:nth-child(n+2).features-list div dl dt.feature-gratis:before {
+  background-color: #f21c44;
+  text-shadow: 0px 0px 3px #9f0925;
+  box-shadow: 0px 1px 2px #ffffff;
+  /* ~effet bouton enfoncé */
+  border-radius: 0.25rem;
+  content: "\f06b";
+  /* gift */
+}
+body#home main > section:nth-child(n+2).features-list div dl dt.feature-libre:before {
+  background-color: #76d9ef;
+  text-shadow: 0px 0px 3px #1bbfe4;
+  box-shadow: 1px 1px 2px #ffffff;
+  /* ~effet bouton enfoncé */
+  border-top-left-radius: 3rem;
+  border-bottom-right-radius: 3rem;
+  content: "\f126";
+  /* code-fork */
+}
+body#home main > section:nth-child(n+2).features-list div dl dd {
+  padding: 0;
 }
-
-@media screen and (min-width: 992px)
-{
-    body#home #showcase h2#USP
-	{
-        font-size: 2.5rem;
-    }
-
-	body#home #showcase figure img
-	{
-		align-self: center;
-		height: calc(90vh - 120px);
-		width: auto;
-		transform: translateY(1rem) translateX(-2vw);
-	}
+@media (max-width: 575px) {
+  body#home main > section:nth-child(n+2).features-list div dl > * {
+    margin: 0rem 1rem 1rem;
+    flex-basis: calc(100% - 2rem);
+  }
 }
-
-body#home #showcase #licence
-{
-	font-style: italic;
-	font-size: 0.95rem;
-}
-
-
-body#home #showcase *:not(.CTA-button) > a, 
-body#home #showcase *:not(.CTA-button) > a:focus, 
-body#home #showcase *:not(.CTA-button) > a:active, 
-body#home #showcase *:not(.CTA-button) > a:visited
-{
-	color: hsl(179, 75%, 50%);
-}
-
-body#home #showcase *:not(.CTA-button) > a:hover
-{
-	color: hsl(179, 100%, 50%);
-	transition: color 0.25s ease-in-out;
-}
-
-/* ======= HOME : steps, features... ======= */
-
-
-.features-list div, 
-#steps div
-{
-	display: flex;
-	flex-wrap: wrap;
-}
-
-.features-list h2, 
-#steps h2
-{
-	flex-basis:	100%;
-	flex-shrink: 0;
-}
-
-#steps figure
-{
-	box-sizing: border-box;
-	overflow: hidden;
-}
-
-
-
-@media (max-width: 767px)
-{
-	#steps figure
-	{
-		margin: 1em 10%;
-		flex-basis:	80%;
-		flex-shrink: 1;
-	}
+@media (min-width: 576px) {
+  body#home main > section:nth-child(n+2).features-list div dl > * {
+    margin: 0rem 1rem 1rem;
+    flex-basis: calc(33.333% - 2rem);
+  }
+  body#home main > section:nth-child(n+2).features-list div dl dt {
+    order: 1;
+  }
+  body#home main > section:nth-child(n+2).features-list div dl dd {
+    order: 2;
+  }
+}
+/* ======= Features page ======= */
+article#features {
+  font-size: 1.20rem;
+}
+article#features figure {
+  display: flex;
+  flex-wrap: wrap;
+  flex-direction: row;
+  align-items: center;
+  width: 100%;
+  margin: 0;
+}
+@media (max-width: 991px) {
+  article#features figure {
+    padding: 1rem 5% 2rem;
+  }
 }
-
-
-@media (min-width: 768px)
-{
-	#steps figure
-	{
-		margin: 1em;
-		flex-basis:	calc(33.333% - 2em);
-		flex-shrink: 1;
-	}
+@media (min-width: 992px) {
+  article#features figure {
+    min-height: 100vh;
+  }
 }
-
-#steps figure
-{
-	display: block;
-	background-color: white;
-	border: 1px solid rgba(0, 0, 0, 0.125);
-	border-radius: 0.25rem;
-}
-
-#steps figure h3
-{
-	margin-top: 1rem;
-	color: black;
-}
-
-#steps figure h3, 
-#steps figure p
-{
-	padding-left: 1rem;
-	padding-right: 1rem;
-}
-
-#steps figure img
-{
-	max-width: 100%;	
-}
-
-@media screen and (max-width: 767px)
-{
-	#steps section
-	{
-		flex-basis:	100%;
-	}
+article#features figure:nth-of-type(odd) {
+  background: #ddd;
 }
-
-.features-list dl
-{
-	display: flex;
-	flex-direction: row;
-	flex-wrap: wrap;
-	text-align: center;
-}
-
-@media (max-width: 575px)
-{
-	.features-list dl > *
-	{
-		margin: 0rem 1rem 1rem;
-		flex-basis: calc(100% - 2rem);
-	}
+article#features figure:nth-of-type(even) {
+  background: #eee;
 }
-
-@media (min-width: 576px)
-{
-	.features-list dl > *
-	{
-		margin: 0rem 1rem 1rem;
-		flex-basis: calc(33.333% - 2rem);
-	}
-	
-	.features-list dl dt
-	{
-		order: 1;
-	}
-	
-	.features-list dl dd
-	{
-		order: 2;
-	}
+article#features figure:nth-of-type(odd),
+article#features figure:nth-of-type(even) {
+  background: linear-gradient(0deg, #dddddd 0%, #eeeeee 100%);
 }
-
-.features-list dl dt
-{
-	font-weight: 500;
-	font-size: 1.25rem;
-}
-
-.features-list dl dd
-{
-	padding: 0;
-}
-
-
-@font-face
-{
-	font-family: 'FontAwesome';
-	font-style: normal;
-	font-weight: 900;
-	font-display: auto;
-	src: url("webfonts/fa-solid-900.eot");
-	src: url("webfonts/fa-solid-900.eot?#iefix") format("embedded-opentype"), 
-	     url("webfonts/fa-solid-900.woff2") format("woff2"), 
-	     url("webfonts/fa-solid-900.woff") format("woff"),
-	     url("webfonts/fa-solid-900.ttf") format("truetype"), 
-	     url("webfonts/fa-solid-900.svg#fontawesome") format("svg");
-}
-
-.features-list dl dt:before
-{
-	color: white;
-	width: 6rem;
-	height: 6rem;
-	line-height: 6rem;
-	font-size: 3rem;
-	display: block;
-	margin: 1rem auto;
-	font-family: 'FontAwesome';
-}
-
-#features-list-1 dt:nth-of-type(1):before
-{
-    background-color: hsl(139, 32%, 50%);
-	text-shadow: 0px 0px 3px hsl(139, 32%, 30%);
-	box-shadow: -2px 2px 0px hsl(139, 32%, 100%); /* ~effet bouton enfoncé */
-	border-radius: 50%;
-    content: "\f023"; /* lock */
-}
-
-#features-list-1 dt:nth-of-type(2):before
-{
-	background-color: hsl(349, 89%, 53%);
-	text-shadow: 0px 0px 3px hsl(349, 89%, 33%);
-	box-shadow: 0px 1px 2px hsl(349, 89%, 100%); /* ~effet bouton enfoncé */
-	border-radius: 0.25rem;
-	content: "\f06b"; /* gift */
-}
-
-#features-list-1 dt:nth-of-type(3):before
-{
-	background-color: hsl(191, 79%, 70%);
-	text-shadow: 0px 0px 3px hsl(191, 79%, 50%);
-	box-shadow: 1px 1px 2px hsl(191, 79%, 100%); /* ~effet bouton enfoncé */
-	border-top-left-radius: 3rem;
-	border-bottom-right-radius: 3rem;
-    content: "\f126"; /* code-fork */
-}
-
-
-
-
-/* ====== HOME : reviews ====== */
-
-
-body#home #reviews blockquote div:before, 
-body#home #reviews blockquote:before
-{
-	position: absolute;
-	left: 50%;
-	font-size: 6rem;
-	width: 6rem;
-	font-family: cursive;
-	color: #222;
-}
-
-body#home #reviews blockquote div:before
-{
-	content: '«';
-	float: left;
-	margin-left: calc(-50vh - 6rem);
-	margin-top: 1.20rem; /* FTGCM */
-	transform: rotate(15deg);
-}
-
-body#home #reviews blockquote:before
-{
-	content: '»';
-	margin-left: 50vh;
-	transform: rotate(-15deg);
-	text-align: right;
-}
-
-
-body#home #reviews blockquote div
-{
-	line-height: 1.75em;
-	background: repeating-linear-gradient( #fffff2, #fffff2 1.65em, rgba(92, 91, 129, 0.05) 1.65em, rgba(92, 91, 129, 0.05) 1.75em);
-	box-shadow: 1px 1px 2px hsl(0, 0%, 25%);
-	padding: 0.40em 0.5rem;
-	font-family: cursive;
-	max-width: 100vh;
-	margin: auto;
-	box-sizing: border-box;
-	border: 1.75em solid #fffff2;
-	text-indent: 1.75em;
-}
-
-body#home #reviews blockquote cite
-{
-	display: block;
-	text-align: right;
-	font-style: normal;
-}
-
-body#home #reviews blockquote cite:before
-{
-	content: "— ";
-}
-
-
-
-/* ====== HOME : gallery ====== */
-
-
-body#home #gallery
-{
-	padding-bottom: 0;
-}
-	
-body#home #gallery div
-{
-	display: flex;
-	flex-wrap: wrap;
-	max-width: 100%;
-	border: 0;
-	
-	z-index: 161803;
-	
-	box-shadow: -2px 2px 5px black;
-}
-
-body#home #gallery h2
-{
-	padding-bottom: 2rem;
-}
-
-body#home #gallery figure
-{
-	margin: 0;
-	flex-shrink: 1;
-	overflow: hidden;
-	display: flex;
-	padding: 0 0;
-	background: black;
-}
-
-body#home #gallery figure span
-{
-	display: flex;
-	height: auto;
-	border-radius: 0.5rem;
-	overflow: hidden;
-}
-
-body#home #gallery figure img
-{
-	align-self: center;
-}
-
-
-@media (max-width: 575px)
-{
-	body#home #gallery div
-	{
-		padding: 0 39px;
-		background: 
-			url("film-y.png") repeat-y left -11px, 
-			url("film-y.png") repeat-y right -11px;
-		position : relative;
-		top: 3rem;
-	}
-	
-	body#home #gallery h2
-	{
-		padding-bottom: 0;
-	}
-	
-	body#home #gallery figure
-	{
-		border-top: 0.75rem solid black;
-		border-bottom: 0.75rem solid black;
-		flex-basis: calc(100%);
-		height: calc(100vw - 2*39px);
-	}
-
-	body#home #gallery figure img
-	{
-		height: 100%;
-	}
-	
-	/* ====== Fine-tuning (c'est magique) ====== */
-	
-	body#home #gallery figure#bar img
-	{
-		transform: translateX(calc(0% - 2/10 * 100%));
-	}
-
-	body#home #gallery figure#djoliba img
-	{
-		transform: translateX(calc(0% - 3/7 * 100%));
-	}
-
-	body#home #gallery figure#vietnam img
-	{
-		transform: translateX(calc(0% - 2/5 * 100%));
-	}
+@media (min-width: 992px) {
+  article#features figure:nth-of-type(odd) img {
+    order: 2;
+  }
+  article#features figure:nth-of-type(odd) figcaption {
+    order: 1;
+  }
+}
+article#features figure * {
+  flex-shrink: 1;
+  box-sizing: border-box;
+}
+@media (max-width: 991px) {
+  article#features figure * {
+    flex-basis: 100%;
+  }
+}
+@media (max-width: 991px) {
+  article#features figure img {
+    order: 2;
+    max-width: 100%;
+  }
 }
-
-@media (min-width: 576px)
-{
-	body#home #gallery div
-	{
-		padding: 39px 0;
-		background: 
-			url("film.png") repeat-x -11px top, 
-			url("film.png") repeat-x -11px bottom;
-	}
-	
-	body#home #gallery figure
-	{
-		border-right: 1.5rem solid black;
-		flex-basis: calc(25% - 1.5rem);
-		height: calc(25vw - 1.5rem);
-	}
-
-	body#home #gallery figure img
-	{
-		height: 100%;
-	}
-	
-	body#home #gallery div
-	{
-		transform: rotate(0.5deg) scaleX(1.05) scaleY(1.05);
-		position : relative;
-		top: 0.5rem;
-	}
-	
-	/* ====== Fine-tuning (c'est magique) ====== */
-	
-	body#home #gallery figure#bar img
-	{
-		transform: translateX(calc(0% - 1/10 * 100%));
-	}
-
-	body#home #gallery figure#djoliba img
-	{
-		transform: translateX(calc(0% - 3/7 * 100%));
-	}
-
-	body#home #gallery figure#vietnam img
-	{
-		transform: translateX(calc(0% - 1/5 * 100%));
-	}
+@media (min-width: 992px) {
+  article#features figure img {
+    width: 60%;
+    padding: 3rem 2.5%;
+    box-sizing: border-box;
+    margin: 0;
+    max-height: 100%;
+    text-align: center;
+  }
+}
+@media (max-width: 991px) {
+  article#features figure figcaption {
+    order: 1;
+  }
 }
-
-body#home #gallery figure#bar
-{
-	order: 3;
-}
-
-body#home #gallery figure#djoliba
-{
-	order: 4;
-}
-
-body#home #gallery figure#boat
-{
-	order: 1;
-}
-
-body#home #gallery figure#vietnam 
-{
-	order: 2;
-}
-
-/* ======= Features ======= */
-
-article#features
-{
-	display: flex;
-	flex-wrap: wrap;
-	font-size: 1.20rem;
-}
-
-article#features > *
-{
-	flex-basis: 100%;
-}
-
-article#features > figure
-{
-	display: flex;	
-	flex-wrap: wrap;
-	flex-direction: row;
-	align-items: center;
-	width: 100%;
-	margin: 0;
-}
-
-
-article#features figure > *
-{
-	flex-shrink: 1;
-	box-sizing: border-box;
-}
-article#features figure > figcaption h2
-{
-	margin-bottom: 1em;	
-	font-size: 1.80rem;
-	font-weight: 600;
-}
-
-
-@media (max-width: 991px)
-{
-	article#features figure
-	{
-		padding: 1rem 5% 2rem;
-	}
-	
-	article#features figure *
-	{
-		flex-basis: 100%;
-	}
-	
-	article#features figure img
-	{
-		order: 2;
-		
-		max-width: 100%;
-	}
-
-	article#features figure figcaption
-	{
-		order: 1;
-	}
+@media (min-width: 992px) {
+  article#features figure figcaption {
+    width: 40%;
+    padding: 3rem 5%;
+    box-sizing: border-box;
+  }
+}
+article#features figure figcaption h2 {
+  margin-bottom: 1em;
+  font-size: 1.80rem;
+  font-weight: 600;
+}
+/* ======= Download page ======= */
+#download {
+  display: flex;
+  margin: 0 auto;
+  box-sizing: border-box;
+  height: auto;
+  flex-wrap: wrap;
+  justify-content: center;
+}
+@media (max-width: 991px) {
+  #download {
+    width: 100%;
+  }
 }
-
-@media (min-width: 992px)
-{
-	article#features > figure {
-		
-		height: 100vh;
-	}
-	
-	article#features figure > figcaption {
-		
-		width: 40%;
-		padding: 3rem 5%;
-		box-sizing: border-box;
-	}
-
-	article#features figure img {
-		
-		width: 60%;
-		padding: 3rem 2.5%;
-		box-sizing: border-box;
-		
-		margin: 0;
-		max-height: 100%;
-		text-align: center;
-	}
-
-	article#features figure:nth-of-type(odd) img {
-		
-		order: 2;
-	}
-
-	article#features figure:nth-of-type(odd) figcaption {
-		
-		order: 1;
-	}
+@media (min-width: 992px) {
+  #download {
+    width: 80%;
+  }
+}
+#download section {
+  box-sizing: content-box;
+  border: 1px solid rgba(0, 0, 0, 0.125);
+  min-width: 200px;
+  text-align: center;
+  background-color: white;
+  border-radius: 0.25rem;
+}
+#download section h3,
+#download section p {
+  padding-left: 1rem;
+  padding-right: 1rem;
+}
+#download section h3 {
+  margin-top: 1rem;
+  color: black;
+}
+#download section img {
+  max-width: 100%;
+}
+@media (max-width: 991px) {
+  #download section {
+    margin: 1em;
+    flex-basis: calc(33.333% - 2em - 2px);
+    flex-grow: 1;
+    max-width: 300px;
+  }
 }
-
-article#features figure:nth-of-type(odd)
-{
-	background: #ddd;
-}
-
-article#features figure:nth-of-type(even)
-{
-	background: #eee;
-}
-
-article#features figure:nth-of-type(odd), 
-article#features figure:nth-of-type(even)
-{
-	background: linear-gradient(0deg, rgba(221,221,221,1) 0%, rgba(238,238,238,1) 100%);
-}
-
-
-
-	
-/* ======= Download ======= */
-
-#download
-{
-	display: flex;
-	margin: 0 auto;
-	box-sizing: border-box;
-	height: auto;
-	flex-wrap: wrap;
-	justify-content: center;
-}
-
-#download section
-{
-	box-sizing: content-box;
-	border: 1px solid rgba(0, 0, 0, 0.125);
-	min-width: 200px;
-	text-align: center;
-	background-color: white;
-	border-radius: 0.25rem;
-}
-
-
-@media (max-width: 991px)
-{
-	#download
-	{
+@media (min-width: 992px) {
+  #download section {
+    margin: 1em;
+    flex-basis: calc(33.333% - 2em - 2px);
+    flex-shrink: 1;
+    flex-grow: 0;
+  }
+}
+/* ======= Funding page ======= */
+article#funding {
+  text-align: justify;
+  /*
+	#copyButton, 
+	#supportButton
+	{
+		background: #111;
+		color: white;
+		border: 0;
+		font-weight: light;
+		height: 3rem;
+		line-height: 3rem;
+		font-size: 1rem;
 		width: 100%;
+		margin-bottom: 0.5rem;
 	}
-	
-	#download section
-	{
-		margin: 1em;
-		flex-basis: calc(33.333% - 2em - 2px);
-		flex-grow: 1;
-		max-width: 300px;
-		
-	}
-}
-
-@media (min-width: 992px)
-{
-	#download
-	{
-		width: 80%;
-	}
-	
-	#download section
-	{
-		margin: 1em;
-		flex-basis: calc(33.333% - 2em - 2px);
-		flex-shrink: 1;
-		flex-grow: 0;
-	}
-}
-
-#download section h3
-{
-	margin-top: 1rem;
-	color: black;
-}
-
-#download section h3, 
-#download section p
-{
-	padding-left: 1rem;
-	padding-right: 1rem;
-}
-
-#download section img
-{
-	max-width: 100%;	
-}
-
-/* ======= Funding ======= */
-
-#supportButtonContainer, 
-#projectStatus
-{
-	height: 100%;
-	overflow: hidden;
-	transition-property: opacity, height;
-	transition-delay: 0s, 0.50s;
-	transition-duration: 0.49s, 0s;
-}
-
-#pubkey-and-copy-button
-{
-	/*opacity: 0;
-	height: 0;*/
-	transition-property: opacity, height;
-	transition-delay: 0.51s, 0.51s;
-	transition-duration: 0.50s, 0s;
-}
-
-#pubkey
-{
-	font-family: monospace;
-	padding: 8px 0;
-	border-radius: 5px;
-	border: transparent;
-	background: transparent;
-	font-size: 1rem;
-}
-
-	
-#copyButton
-{
-}
-
-#successMsg
-{
-	opacity: 0;
-	/*height: 0;*/
-	line-height: 1.5em;
-	transition-property: opacity, height;
-	transition-duration: 1.5s, 0.5s;
-}
-
-	
-input#pubkey
-{
-	color: black;
-}
-
-input#pubkey::selection
-{
-	color: black;
-}
-
-input##pubkey::selection
-{
-	background: transparent;
-}
-
-input##pubkey:after
-{
-	content: "...";
-}
-
-/*
-#copyButton, 
-#supportButton
-{
-	background: #111;
-	color: white;
-	border: 0;
-	font-weight: light;
-	height: 3rem;
-	line-height: 3rem;
-	font-size: 1rem;
-	width: 100%;
-	margin-bottom: 0.5rem;
-}
-*/
-
-
-.crowdfunding-widget
-{
-	margin: auto;
-	border: white;
-    background: white;
-    background: linear-gradient(0deg, hsl(39, 85.2%, 90%) 0%, hsl(39, 85.2%, 105%) 95%);
-    padding: 1em;
-    box-shadow: -2px 2px 5px black;
+	*/
+}
+article#funding #supportButtonContainer,
+article#funding #projectStatus {
+  height: 100%;
+  overflow: hidden;
+  transition-property: opacity, height;
+  transition-delay: 0s, 0.50s;
+  transition-duration: 0.49s, 0s;
+}
+article#funding #pubkey-and-copy-button {
+  /*opacity: 0;
+		height: 0;*/
+  transition-property: opacity, height;
+  transition-delay: 0.51s, 0.51s;
+  transition-duration: 0.50s, 0s;
+}
+article#funding #pubkey {
+  font-family: monospace;
+  padding: 8px 0;
+  border-radius: 5px;
+  border: transparent;
+  background: transparent;
+  font-size: 1rem;
+  display: block;
+  width: 100%;
+  text-align: center;
+  margin: 0.5em auto;
+}
+article#funding #successMsg {
+  opacity: 0;
+  /*height: 0;*/
+  line-height: 1.5em;
+  transition-property: opacity, height;
+  transition-duration: 1.5s, 0.5s;
+}
+article#funding input#pubkey {
+  color: black;
+}
+article#funding input#pubkey::selection {
+  color: black;
+  background: transparent;
+}
+article#funding input#pubkey:after {
+  content: "...";
+}
+article#funding .crowdfunding-widget {
+  margin: auto;
+  border: white;
+  background: white;
+  background: linear-gradient(0deg, #fbecd0 0%, #ffffff 95%);
+  padding: 1em;
+  box-shadow: -2px 2px 5px #000000;
 }
-
 @media (min-width: 1200px) {
-
-	.crowdfunding-widget
-	{
-		max-width: 450px;
-	}
-	
-}
-
-.crowdfunding-widget .progress-bar
-{
-	width: 100%;
-	height: 0.5em;
-	background-color: red;
-}
-
-.crowdfunding-widget strong
-{
-	display: block;	
-	font-size: 2rem;
-}
-
-.crowdfunding-widget > p:nth-of-type(3) span:first-child
-{
-	display: none;
-}
-
-/* ======= Tutorial ======= */
-
-#tuto 
-{
-	display: flex;
-	flex-wrap: wrap;
-	font-size: 1rem;
-}
-
-#tuto img
-{
-	max-width: 100%;	
-}
-
-#tuto nav
-{
-	background: white;
-	padding: 1em 2%;
-	align-self: flex-start;
-}
-
-#tuto nav li
-{
-	margin-top: 0.5em;
-	margin-bottom: 0.5em;
-}
-
-#tuto article
-{
-	flex-grow: 1;
-	background-color: white;
-	color: black;
-	padding: 0 1em;
-	align-self: flex-start;
-}
-
-#tuto article h1
-{
-	color: black;
-	font-size: 2rem;
-	font-weight: bold;
-	padding-bottom: 0.75em;
-}
-
-#tuto li {
-
-	margin-top: 1em;
-	margin-bottom: 1em;
-}
-
-#tuto li img {
-
-	margin-top: 1em;
-	margin-bottom: 1em;
-}
-
-@media (max-width: 991px)
-{
-	#tuto > *
-	{
-		flex-basis: 100%;
-	}
-	
-	#tuto nav
-	{
-		order: 2;
-	}
-	
-	#tuto article
-	{
-		order: 1;
-	}
+  article#funding .crowdfunding-widget {
+    max-width: 450px;
+  }
+}
+article#funding .crowdfunding-widget .progress-meter {
+  width: 100%;
+  height: 0.5em;
+  background-color: red;
+}
+article#funding .crowdfunding-widget strong {
+  display: block;
+  font-size: 2rem;
+}
+article#funding .crowdfunding-widget > p:nth-of-type(3) span:first-child {
+  display: none;
+}
+article#funding .crowdfunding-widget .progress-container {
+  background-color: #e9ecef;
+  border: 1px solid #4b535c;
+  height: 2rem;
+  border-radius: 0;
+  display: -ms-flexbox;
+  display: flex;
+  overflow: hidden;
+  font-size: .75rem;
+}
+@keyframes progress-bar-stripes {
+  from {
+    background-position: 1rem 0;
+  }
+  to {
+    background-position: 0 0;
+  }
+}
+article#funding .crowdfunding-widget .progress-bar {
+  display: -ms-flexbox;
+  display: flex;
+  -ms-flex-direction: column;
+  flex-direction: column;
+  -ms-flex-pack: center;
+  justify-content: center;
+  color: #fff;
+  text-align: center;
+  white-space: nowrap;
+  background-color: #ffc107;
+  transition: width .6s ease;
+  -webkit-animation: progress-bar-stripes 1s linear infinite;
+  animation: progress-bar-stripes 1s linear infinite;
+}
+article#funding .donorsList {
+  list-style-type: none;
+  margin: 0 auto;
+  padding: 0;
+  max-width: 500px;
+  text-align: center;
+  display: flex;
+  flex-wrap: wrap;
+  justify-content: center;
+  align-items: center;
+}
+article#funding .donorsList > li {
+  padding: 0.10rem 0.5rem;
+  flex-shrink: 1;
+  box-sizing: border-box;
+}
+article#funding .donorsList > li span {
+  border-radius: 1em;
+  padding: 0 0.25em;
+  color: white;
+}
+article#funding .donorsList > li:nth-child(5n) span {
+  background: #66dbff;
+  color: black;
+}
+article#funding .donorsList > li:nth-child(5n+1) span {
+  background: #3dc5d1;
+}
+article#funding .donorsList > li:nth-child(5n+2) span {
+  background: #004080;
+}
+article#funding .donorsList > li:nth-child(5n+3) span {
+  background: #99e7ff;
+  color: #03072b;
+}
+article#funding .donorsList > li:nth-child(5n+4) span {
+  background: #33cfff;
+  color: #03072b;
+}
+article#funding .donorsList > :nth-child(1) {
+  width: 100%;
+}
+article#funding .donorsList > :nth-child(2),
+article#funding .donorsList > :nth-child(3) {
+  width: 50%;
+}
+/* ======= Tutorial page ======= */
+#tuto {
+  display: flex;
+  flex-wrap: wrap;
+  font-size: 1rem;
+}
+#tuto img {
+  max-width: 100%;
+}
+#tuto nav {
+  background: white;
+  padding: 1em 2%;
+  align-self: flex-start;
+}
+#tuto nav li {
+  margin-top: 0.5em;
+  margin-bottom: 0.5em;
+}
+#tuto nav li ul {
+  display: none;
+}
+#tuto nav li.active > a {
+  font-weight: bold;
+}
+#tuto nav li.current > ul {
+  display: block;
+}
+#tuto nav > ul {
+  list-style: none;
+  padding-left: 0;
+}
+#tuto nav > ul > li {
+  margin-top: 1em;
+  margin-bottom: 1em;
+}
+#tuto article {
+  flex-grow: 1;
+  background-color: white;
+  color: black;
+  padding: 0 1em 1.5em;
+  align-self: flex-start;
+}
+#tuto article h1 {
+  color: black;
+  font-size: 2rem;
+  font-weight: bold;
+  padding-bottom: 1em;
+}
+#tuto article li {
+  margin-top: 1em;
+  margin-bottom: 1em;
+}
+#tuto article li img {
+  margin-top: 1em;
+  margin-bottom: 1em;
+}
+#tuto article dl dt {
+  font-weight: bold;
+  margin-bottom: 0.5em;
+}
+#tuto article dl dd {
+  margin-bottom: 1.5em;
+}
+@media (max-width: 991px) {
+  #tuto > * {
+    flex-basis: 100%;
+  }
+  #tuto nav {
+    order: 2;
+  }
+  #tuto article {
+    order: 1;
+  }
 }
-
-@media (min-width: 992px)
-{
-	#tuto > *
-	{
-		margin: 2rem 1%;	
-	}
-	
-	#tuto nav
-	{
-		position: sticky;
-		top: 1em;
-		flex-shrink: 0;
-		flex-grow: 1;
-		flex-basis: 25%;
-	}
-	
-	#tuto article
-	{
-		position: sticky;
-		top: 1em;
-		flex-shrink: 0;
-		flex-basis: 60%;
-	}
+@media (min-width: 992px) {
+  #tuto > * {
+    margin: 2rem 1%;
+  }
+  #tuto nav {
+    position: sticky;
+    top: 1em;
+    flex-shrink: 0;
+    flex-grow: 1;
+    flex-basis: 25%;
+  }
+  #tuto article {
+    position: sticky;
+    top: 1em;
+    flex-shrink: 0;
+    flex-basis: 60%;
+  }
+}
+/* ======= Legal Notice page ======= */
+#legal-notice dt {
+  font-weight: bold;
+  font-size: 1.25rem;
 }
-
-table
-{
-	border-collapse: collapse;
-}
-
-table td, 
-table th
-{
-	border: 1px solid #ccc;
-	padding: 0.5rem;
-}
-
-table th
-{
-	background: #f7f7f7;	
-}
-
-[colspan]
-{
-	text-align: center;
-}
-
-img
-{
-	display: block;
-	margin: auto;
-}
-
-mark
-{
-	background: yellow;	
-}
-
-mark:nth-of-type(2n)
-{
-	background: pink;	
-}
-
-a.current
-{
-	font-weight: bold;	
-}
-
-/* Legal Notice */ 
-
-#legal-notice dt
-{
-	font-weight: bold;
-	font-size: 1.25rem;
-}
\ No newline at end of file
diff --git a/lib/style.less b/lib/style.less
new file mode 100644
index 0000000000000000000000000000000000000000..c4bb15b16aa80ff929f6265cc2e5ef2aeb0512d8
--- /dev/null
+++ b/lib/style.less
@@ -0,0 +1,1987 @@
+:root {
+	
+	--bp1:  576px;
+	--bp2:  768px;
+	--bp3:  992px;
+	--bp4: 1200px;
+	--screenshot-ratio: 1.620915033;
+	--screenshot-laptop-keyboard-ratio: 0.901515152;
+	
+
+	@font-face
+	{
+		font-family: 'FontAwesome';
+		font-style: normal;
+		font-weight: 900;
+		font-display: auto;
+		src: url("webfonts/fa-solid-900.eot");
+		src: url("webfonts/fa-solid-900.eot?#iefix") format("embedded-opentype"), 
+			 url("webfonts/fa-solid-900.woff2") format("woff2"), 
+			 url("webfonts/fa-solid-900.woff") format("woff"),
+			 url("webfonts/fa-solid-900.ttf") format("truetype"), 
+			 url("webfonts/fa-solid-900.svg#fontawesome") format("svg");
+	}
+}
+
+
+/* ======= COMMON ======= */
+
+body {
+	
+	background: hsl(0, 0%, 6.7%);
+	padding:0;
+	margin:0;
+	font-family: "Open Sans", sans-serif;
+	color: hsl(210, 10.8%, 14.5%);
+	overflow-x: hidden;
+	
+	main
+	{
+		background: hsl(256, 65.5%, 27.3%);
+	}
+	
+	a, 
+	a:focus,
+	a:active, 
+	a:visited
+	{
+		color: hsl(179, 75%, 35%);
+		text-decoration: none;
+	}
+	
+	a:focus
+	{
+		outline: 0;
+	}
+	
+	a:hover
+	{
+		color: hsl(179, 100%, 35%);
+		transition: color 0.25s ease-in-out;
+	}
+
+	p.CTA-button 
+	{
+		text-align: center;
+		margin-left: auto;
+		margin-right: auto;
+	}
+
+	p.CTA-button a, 
+	p.CTA-button button
+	{
+		background-color: hsl(45, 100%, 51.4%);
+		color: black;
+		text-shadow: 0px 0px 15px white;
+		transition: box-shadow 0.666s, color 0.666s;
+		padding: 1rem 2rem;
+		font-size: 0.8203125rem;
+		line-height: 1.5;
+		border: 0;
+		border-radius: 0;
+		cursor: pointer;
+		letter-spacing: 0.05em;
+		text-transform: uppercase;
+		display: inline-block;
+		vertical-align: middle;
+		text-decoration: none;
+	}
+
+	p.CTA-button a:hover, 
+	p.CTA-button button:hover
+	{
+		/*color: #fcfcfc;*/
+		box-shadow: 0 0 15px #fcfcfc;
+		background-color: #ffc107;
+		text-decoration: none;
+	}
+	
+	h1, 
+	h2, 
+	h3, 
+	h4, 
+	h5, 
+	h6
+	{
+		font-weight: 500;	
+	}
+	
+	iframe
+	{
+		border: 0;
+	}
+	
+	code, 
+	pre {
+
+		background-color: rgb(66, 66, 66);	
+		color: rgb(239, 239, 239);
+		padding: 0.375em 0.75em;
+	}
+	
+	pre {
+	
+		margin: 0.375em 0;
+		
+		&.console:before {
+
+			content: "$ ";
+		}
+	}
+
+	h1
+	{
+		text-align: center;
+		margin: 0;
+		padding: 1.5em 0 1.5em;
+		font-size: 3rem;
+		font-weight: 500;
+		color: #fcfcfc;
+	}
+
+	table
+	{
+		border-collapse: collapse;
+	}
+
+	table td, 
+	table th
+	{
+		border: 1px solid #ccc;
+		padding: 0.5rem;
+	}
+
+	table th
+	{
+		background: #f7f7f7;	
+	}
+
+	[colspan]
+	{
+		text-align: center;
+	}
+
+	img
+	{
+		display: block;
+		margin: auto;
+	}
+
+	mark
+	{
+		background: yellow;	
+	}
+
+	mark:nth-of-type(2n)
+	{
+		background: pink;	
+	}
+}
+
+
+/* ======= CONTENTS (like thank you page) ======= */
+
+
+.text-box, 
+section.text-box
+{
+	background-color: #FDF5E6;
+	color: rgb(66, 66, 66);	
+	font-size: 1.25rem;
+	line-height: 1.75rem;
+	max-width: 800px;
+	margin: auto;
+	padding: 0 0 0.001rem 0;
+	
+	
+}
+
+section.text-box
+{
+	padding: 2em;
+}
+
+.text-box section {
+	
+	margin-top: 0rem;
+	margin-bottom: 3rem;
+	
+	
+	h2
+	{
+		background: rgb(32, 27, 24);
+		color: white;
+		font-weight: bold;
+		padding: 2rem;
+		margin-bottom: 1em;
+	}
+	
+	h3
+	{
+		font-weight: bold;
+		margin-top: 1em;
+		padding: 0.5rem 1rem;
+	}
+	
+	p,
+	h3,
+	h4,
+	h5,
+	h6,
+	ul,
+	ol,
+	dl, 
+	table
+	{
+		margin-left: 2rem;
+		margin-right: 2rem;
+		text-align: justify;
+		width: auto;
+	}
+	
+	td
+	{
+		background: white;
+		color: black;
+	}
+
+	th
+	{
+		background: rgb(33, 33, 33);
+		color: white;
+		text-align: center;
+	}
+
+	[colspan]
+	{
+		text-align: center;	
+	}
+	
+	.warning
+	{
+		color: orange;	
+	}
+	
+	h3.warning
+	{
+		background-color: orange;
+		color: white;
+	}
+	
+	.bad
+	{
+		color: red;	
+	}
+
+}
+
+
+
+
+/* ======= FOOTER ======= */
+
+
+body > footer {
+	
+	z-index: 999;
+	position: relative;
+	background: rgb(17, 17, 17);
+	overflow: hidden;
+	color: #ccc;
+	font-size: 0.9rem;
+	padding-bottom: 2rem;
+	padding-top: 3rem;
+	
+
+	ul, 
+	p
+	{
+		padding: 0;
+		margin: 0.5rem 0;
+		list-style-type: none;
+	}
+
+	ul li
+	{
+		padding: 0;
+		margin: 0;
+		line-height: 1.50em;
+	}
+	
+	div
+	{
+		display: flex;
+		flex-wrap: wrap;
+		margin: auto;
+		
+		
+		@media (max-width:575px)
+		{
+			padding-left: 1rem;
+			padding-right: 1rem;
+			box-sizing: border-box;
+
+			> *
+			{
+				flex-basis: 50%;
+			}
+		}
+
+		@media (min-width:576px)
+		{
+			padding-left: 1rem;
+			padding-right: 1rem;
+			box-sizing: border-box;
+
+			 > *
+			{
+				flex-basis: 33.333%;
+				flex-shrink: 1;
+			}
+		}
+
+		@media (min-width: 1200px)
+		{
+			max-width: calc(~"1140px - 5rem");
+		}
+		
+	}
+	
+	h5
+	{
+		color: #e4c380;
+		font-size: 1.05rem;
+		margin-bottom: 0.5rem;
+	}
+	
+	a, 
+	a:hover, 
+	a:focus, 
+	a:active, 
+	a:visited
+	{
+		color: #00A09D;
+		text-decoration: none;	
+	}
+}
+
+
+
+
+/* ======= BARRE DE LANGUES ======= */
+
+
+
+nav#langSelector {
+	
+	ul 
+	{
+		li 
+		{
+			> * span:first-child
+			{
+				@media (max-width: 575px)
+				{
+					display: none;
+				}
+			}
+
+			&:hover, 
+			&:hover *
+			{
+				cursor: pointer;
+			}
+
+			&:last-of-type:after
+			{
+				content: "";
+				margin-left: 0;
+			}
+
+			a, 
+			a:hover, 
+			a:focus, 
+			a:active, 
+			a:visited
+			{
+				text-decoration: none;	
+			}
+		}
+	}
+	
+	@media (min-width: 576px)
+	{
+		position: fixed;
+		right: 0;
+		bottom: 0;
+		z-index: 1010;
+		text-align: right;
+		background: rgba(0, 0, 0, 0.8);
+		border-top-left-radius: 1em;
+		height: auto;
+
+		h5
+		{
+			display: none;
+		}
+
+		ul
+		{
+			margin: 0;
+			padding: 0.5em 0 0.25em 0;
+
+			li
+			{
+				display: block;
+				margin: 0 0 0 0;
+				padding: 0;
+				text-align: center;
+
+				> *
+				{
+					display: block;
+					padding: 0.125em 0.75em;
+
+					span:last-child
+					{
+						display: none;
+					}
+				}
+
+				a
+				{
+					font-weight: bold;
+					color: white;
+				}
+
+				strong
+				{
+					color: rgba(255, 255, 255, 0.7);
+				}
+
+				&:hover, 
+				&:hover a, 
+				&:hover a span
+				{
+					color: #ffc107;
+				}
+
+				&:after
+				{
+					color: white;
+				}
+
+				&:last-of-type:after
+				{
+					color: white;
+				}
+
+			}
+		}
+	}
+}
+
+
+
+/* ======= HEADER ======= */
+
+
+body > header:first-child  {
+	
+	background: #311873;
+	overflow: hidden;
+	height: 120px;
+	padding: 0.5rem 1rem;
+	box-sizing: content-box;
+	display: flex;
+	align-items: center;
+
+	a, 
+	a:hover
+	{
+		color: white;
+		text-decoration: none;
+	}
+
+	p, 
+	p img
+	{
+		height: 100%;
+	}
+
+	p img
+	{
+		margin-left: 0.5em;
+		margin-right: 0.5em;
+
+		@media (max-width: 575px)
+		{
+			margin-left: 0;
+		}
+	}
+
+	> :nt-child(2)
+	{
+		order: 1;
+	}
+
+	/* ==== HEADER : titre et logo ==== */ 
+
+	> h1, 
+	> h2
+	{
+		order: 2;
+		flex-grow: 1;
+		text-align: left;
+		font-size: 2.25rem;
+
+
+		@media (max-width: 575px) {
+
+			font-size: 2rem;
+		}
+	}
+	
+	/* ==== HEADER : menu ==== */ 
+	nav {
+		
+		order: 3;
+		flex-grow: 0;
+
+		ul
+		{
+			list-style: none;
+			text-align: right;
+
+			li
+			{
+				a, 
+				a:hover
+				{
+					color: rgb(228, 195, 128);
+					text-decoration: none;
+				}
+				
+				&.support-us {
+						
+					@media (max-width: 1139px) {
+						
+						a {
+							
+							color: hsl(349, 89%, 53%);
+						}
+					}
+					
+					@media (min-width: 1140px) {
+						
+						border: 0;
+
+
+						a {
+
+							margin: 0;
+							padding: 1em;
+							display: block;
+							border-radius: 1em;
+
+							color: #f2f2f2;
+							background: hsl(349, 89%, 53%);
+						}
+
+						&.active a {
+
+							color: hsl(349, 89%, 53%);
+							background: white;
+
+						}
+					}
+					
+				}
+			}
+		}
+		
+		
+		@media (max-width: 1139px)
+		{
+			ul
+			{
+				overflow: hidden;
+				position: absolute;
+				top: 120px;
+				right: 0;
+				width: 100vw;
+				background-color: hsl(256, 65.5%, 27.3%);
+				box-shadow: 0px 6px 5px hsl(256, 65.5%, 13%);
+				z-index: 10000;
+				padding: 0 1rem 0rem;
+				box-sizing: border-box;
+				transition: height 0.5s ease-out;
+				height: 0;
+				margin: 0;
+			}
+
+			ul li
+			{
+				margin: 0;
+				padding: 0;
+			}
+
+			ul li a span
+			{
+				height: 1rem;
+				padding: 0.5rem 0;
+				display: block;
+			}
+
+			button
+			{
+				order: 3;
+
+				display: block;
+				background-color: transparent;
+				color: rgba(255, 255, 255, 0.5);
+				width: 2rem;
+				height: 2rem;
+				cursor: pointer;
+				padding: 0;
+				margin: 0;
+				border: 0;
+			}
+
+			button:after
+			{
+				content: "";
+				background-color: transparent;
+				background-image: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.8)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E");
+				background-repeat: repeat;
+				background-position: center center;
+				background-size: cover;
+
+				display: inline-block;
+				width: 2rem;
+				height: 2rem;
+				vertical-align: middle;
+				padding: 0;
+				margin: 0;
+				border-radius: 0.1rem;
+			}
+
+			button span
+			{
+				display: none;
+			}
+
+
+			button:focus + ul
+			{
+
+			}
+		}
+
+		@media (min-width: 1140px)
+		{
+
+			button
+			{
+				display: none;
+			}
+
+			ul li
+			{
+				display: inline-block;
+				margin: 0 0.666rem;
+			}
+
+			ul li a:hover
+			{
+				border-bottom: 1px solid rgba(228, 195, 128, 0.33);
+			}
+
+			ul li a:focus
+			{
+				border-bottom: 1px solid rgba(228, 195, 128, 0.66);
+			}
+
+			ul li.active a
+			{
+				border-bottom: 1px solid rgb(228, 195, 128);
+			}
+
+			ul li a
+			{
+				padding: 0.5rem 0rem;
+			}
+
+
+		}
+		
+		
+	}
+	
+}
+
+
+
+/* ======= HOME ======= */
+
+:root {
+	--home-text-color : #212529;
+	--home-bg-color: #e9ecef;
+}
+
+body#home
+{
+	font-size: 1rem;
+	
+
+	/* ======= Homepage : showcase ======= */
+	
+	#showcase {
+
+		color: white;
+
+		*:not(.CTA-button) > a, 
+		*:not(.CTA-button) > a:focus, 
+		*:not(.CTA-button) > a:active, 
+		*:not(.CTA-button) > a:visited
+		{
+			color: hsl(179, 75%, 50%);
+		}
+
+		*:not(.CTA-button) > a:hover
+		{
+			color: hsl(179, 100%, 50%);
+			transition: color 0.25s ease-in-out;
+		}
+
+		@media screen and (max-width: 879px), screen and (orientation: portrait) {
+
+			div {
+
+				display: flex;
+				flex-wrap: wrap;
+				justify-content: center;
+				text-align: center;
+
+				flex-direction: row;
+				padding-bottom: 2rem;
+
+				*
+				{
+					flex-basis: 100%;
+					flex-shrink: 0;
+				}
+
+				figure
+				{
+					padding: 0 5%;
+					box-sizing: border-box;
+					margin: auto;
+
+					img
+					{
+						max-width: 100%;
+					}
+				}
+			}
+		}
+		
+
+		@media screen and (min-width: 880px) and (orientation: landscape) {
+			
+			overflow: visible;
+			
+			div {
+				
+				text-align: center;
+				box-sizing: border-box;
+				
+				
+				display: flex;
+				flex-direction: column;
+				flex-wrap: wrap;
+				position: relative;
+				justify-content: center;
+				
+				width: 100%;
+				overflow: visible;
+				
+				
+				h2#USP {
+
+					margin-top: 0;
+					margin-bottom: 0;
+				}
+
+				> *
+				{
+					margin-left: 50%;
+					margin-right: 0;
+					width: 50%;
+					background: transparent;
+				}
+				
+				
+				
+				figure
+				{
+					position: absolute;
+					
+					overflow: visible;
+					height: 100%;
+					margin-left: 0;
+
+					margin-top: 0;
+					margin-bottom: 0;
+					padding: 0;
+					
+
+					img
+					{
+						position: absolute;
+						align-self: center;
+						/*max-height: calc(~"90vh - 120px");*/
+						height: 100%;
+					}
+
+				}
+
+				aside {
+
+					* {
+						display: inline	
+					}
+				}
+
+				aside + div {
+
+					clear: both;
+					height: 0;
+				}
+
+			}
+		}
+
+		@media screen and (min-width: 880px) and (orientation: landscape) {
+
+			div {
+
+				figure
+				{
+					order: 1;
+				}
+
+				h2
+				{
+					order: 2;
+				}
+
+				*:nth-child(n+3)
+				{
+					order: 3;
+				}
+			}
+		}
+		
+		
+		
+		@media screen and (min-width: 880px) and (orientation: landscape) {
+			
+			--screenshot-height: calc(~"50vw / var(--screenshot-ratio)");
+			--screenshot-top-offset: calc(~"(1 - var(--screenshot-laptop-keyboard-ratio)) * var(--screenshot-height)");
+			
+			height: calc(~"50vw / var(--screenshot-ratio) + var(--screenshot-top-offset)");
+			background-color: hsl(67, 33.3%, 95.3%);
+			
+			div {
+				
+				background-color: hsl(256, 65.5%, 27.3%);
+				
+				
+				height: calc(~"50vw / var(--screenshot-ratio)");
+				
+				figure {
+
+					width: var(--screenshot-width);
+					top: var(--screenshot-top-offset);
+				}
+				
+			}
+			
+		}
+		
+
+		h2#USP {
+
+			@media (max-width: 575px) {
+
+				font-size: 2rem;
+			}
+
+			@media (min-width: 576px) {
+
+				font-size: 2.5rem;
+			}
+
+			@media screen and (max-width: 767px)
+			{
+				padding-top: 1.5rem;
+				padding-bottom: 0rem;
+			}
+
+			@media screen and (min-width: 768px)
+			{
+				padding-top: 1rem;
+				padding-bottom: 0rem;
+			}
+
+			@media screen and (min-width: 880px) and (orientation: landscape)
+			{
+				font-size: 2rem;
+			}
+
+			@media screen and (min-width: 992px) and (orientation: landscape)
+			{
+				font-size: 2.5rem;
+			}
+		}
+
+		h2#USP + p {
+
+			margin-top: 0rem;
+			margin-bottom: 1rem;
+
+			@media (max-width: 575px) {
+
+				margin-top: 1rem;
+				margin-bottom: 0.5rem;
+			}
+		}
+
+		#licence
+		{
+			color: hsla(0, 0%, 100%, 0.75);
+			font-size: 0.90rem;
+		}
+	}
+	
+	
+	
+
+	/* ======= Homepage : below showcase ======= */
+	
+	main > section:nth-child(n+2) {
+	
+		> div
+		{
+			@media screen and (min-width: 1200px)
+			{
+				max-width: 1140px;
+				margin: auto;
+			}
+		}
+		
+		color: var(--home-text-color);
+		background-color: var(--home-bg-color);
+		background: linear-gradient(0deg, hsla(67, 20.0%, 92.2%, 1) 0%, hsla(67, 33.3%, 95.3%, 1) 100%);
+		padding-bottom: 1rem;
+		/*overflow: hidden;*/
+		
+		h2
+		{
+			text-align: center;
+			padding: 3rem 0 2rem;
+			margin: 0;
+			font-size: 2rem;
+			
+			@media (max-width: 575px) {
+
+				font-size: 1.50rem;
+				padding: 2rem 0 1rem;
+			}
+		}
+
+		/* ====== Homepage : reviews ====== */
+
+
+		&#reviews {
+
+			blockquote div:before, 
+			blockquote:before
+			{
+				position: absolute;
+				left: 50%;
+				font-size: 6rem;
+				width: 6rem;
+				font-family: cursive;
+				color: #222;
+			}
+
+			blockquote {
+
+				div:before
+				{
+					content: '«';
+					float: left;
+					margin-left: calc(~"-50vh - 6rem");
+					margin-top: 1.20rem; /* FTGCM */
+
+					transform: rotate(15deg);
+				}
+
+				&:before
+				{
+					content: '»';
+					margin-left: 50vh;
+					transform: rotate(-15deg);
+					text-align: right;
+				}
+
+				div
+				{
+					line-height: 1.75em;
+					background: repeating-linear-gradient( #fffff2, #fffff2 1.65em, rgba(92, 91, 129, 0.05) 1.65em, rgba(92, 91, 129, 0.05) 1.75em);
+					box-shadow: 1px 1px 2px hsl(0, 0%, 25%);
+					padding: 0.40em 0.5rem;
+					font-family: cursive;
+					max-width: 100vh;
+					margin: auto;
+					box-sizing: border-box;
+					border: 1.75em solid #fffff2;
+					text-indent: 1.75em;
+				}
+
+				cite
+				{
+					display: block;
+					text-align: right;
+					font-style: normal;
+
+					&:before
+					{
+						content: "— ";
+					}
+				}
+			}
+		}
+
+
+
+		/* ====== Homepage : gallery ====== */
+		
+		&#gallery {
+
+			padding-bottom: 0;
+
+			div
+			{
+				display: flex;
+				flex-wrap: wrap;
+				max-width: 100%;
+				border: 0;
+
+				z-index: 161803;
+
+				box-shadow: -2px 2px 5px black;
+			}
+
+			h2
+			{
+				padding-bottom: 2rem;
+			}
+
+			figure
+			{
+				margin: 0;
+				flex-shrink: 1;
+				overflow: hidden;
+				display: flex;
+				padding: 0 0;
+				background: black;
+
+				span
+				{
+					display: flex;
+					height: auto;
+					border-radius: 0.5rem;
+					overflow: hidden;
+				}
+
+				img
+				{
+					align-self: center;
+				}
+
+				&#bar
+				{
+					order: 3;
+				}
+
+				&#djoliba
+				{
+					order: 4;
+				}
+
+				&#boat
+				{
+					order: 1;
+				}
+
+				&#vietnam 
+				{
+					order: 2;
+				}
+			}
+
+			@media (max-width: 575px)
+			{
+				div
+				{
+					padding: 0 39px;
+					background: 
+						url("film-y.png") repeat-y left -11px, 
+						url("film-y.png") repeat-y right -11px;
+					position : relative;
+					top: 3rem;
+				}
+
+				h2
+				{
+					padding-bottom: 0;
+				}
+
+				figure
+				{
+					border-top: 0.75rem solid black;
+					border-bottom: 0.75rem solid black;
+					flex-basis: calc(~"100%");
+					height: calc(~"100vw - 2*39px");
+				}
+
+				figure img
+				{
+					height: 100%;
+				}
+
+				/* ====== Fine-tuning (c'est magique) ====== */
+
+				figure#bar img
+				{
+					transform: translateX(calc(~"0% - 2/10 * 100%"));
+				}
+
+				figure#djoliba img
+				{
+					transform: translateX(calc(~"0% - 3/7 * 100%"));
+				}
+
+				figure#vietnam img
+				{
+					transform: translateX(calc(~"0% - 2/5 * 100%"));
+				}
+			}
+
+			@media (min-width: 576px)
+			{
+				div
+				{
+					padding: 39px 0;
+					background: 
+						url("film.png") repeat-x -11px top, 
+						url("film.png") repeat-x -11px bottom;
+				}
+
+				figure
+				{
+					border-right: 1.5rem solid black;
+					flex-basis: calc(~"25% - 1.5rem");
+					height: calc(~"25vw - 1.5rem");
+				}
+
+				figure img
+				{
+					height: 100%;
+				}
+
+				div
+				{
+					transform: rotate(0.5deg) scaleX(1.05) scaleY(1.05);
+					position : relative;
+					top: 0.5rem;
+				}
+
+				/* ====== Fine-tuning (c'est magique) ====== */
+
+				figure#bar img
+				{
+					transform: translateX(calc(~"0% - 1/10 * 100%"));
+				}
+
+				figure#djoliba img
+				{
+					transform: translateX(calc(~"0% - 3/7 * 100%"));
+				}
+
+				figure#vietnam img
+				{
+					transform: translateX(calc(~"0% - 1/5 * 100%"));
+				}
+			}
+		}
+		
+
+		/* ======= Homepage : steps ======= */
+		
+		&#steps div {
+
+			display: flex;
+			flex-wrap: wrap;
+
+			h2
+			{
+				flex-basis:	100%;
+				flex-shrink: 0;
+			}
+
+			figure
+			{
+				box-sizing: border-box;
+				overflow: hidden;
+
+				display: block;
+				background-color: white;
+				border: 1px solid rgba(0, 0, 0, 0.125);
+				border-radius: 0.25rem;
+
+				@media (max-width: 767px)
+				{
+					margin: 1em 10%;
+					flex-basis:	80%;
+					flex-shrink: 1;
+				}
+
+				@media (min-width: 768px)
+				{
+					margin: 1em;
+					flex-basis:	calc(~"33.333% - 2em");
+					flex-shrink: 1;
+				}
+
+				h3, 
+				p
+				{
+					padding-left: 1rem;
+					padding-right: 1rem;
+				}
+
+				h3
+				{
+					margin-top: 1rem;
+					color: black;
+				}
+
+				img
+				{
+					max-width: 100%;	
+				}
+			}
+
+		}
+		
+		
+		
+		
+		/* ======= Homepage : features... ======= */
+
+		&.features-list div {
+
+			display: flex;
+			flex-wrap: wrap;
+
+			h2
+			{
+				flex-basis:	100%;
+				flex-shrink: 0;
+			}
+
+			dl {
+
+				display: flex;
+				flex-direction: row;
+				flex-wrap: wrap;
+				text-align: center;
+
+				dt
+				{
+					font-weight: 500;
+					font-size: 1.25rem;
+
+					&:before
+					{
+						color: white;
+						width: 6rem;
+						height: 6rem;
+						line-height: 6rem;
+						font-size: 3rem;
+						display: block;
+						margin: 1rem auto;
+						font-family: 'FontAwesome';
+					}
+
+					&.feature-secured:before
+					{
+						background-color: hsl(139, 32%, 50%);
+						text-shadow: 0px 0px 3px hsl(139, 32%, 30%);
+						box-shadow: -2px 2px 0px hsl(139, 32%, 100%); /* ~effet bouton enfoncé */
+						border-radius: 50%;
+						content: "\f023"; /* lock */
+					}
+
+					&.feature-gratis:before
+					{
+						background-color: hsl(349, 89%, 53%);
+						text-shadow: 0px 0px 3px hsl(349, 89%, 33%);
+						box-shadow: 0px 1px 2px hsl(349, 89%, 100%); /* ~effet bouton enfoncé */
+						border-radius: 0.25rem;
+						content: "\f06b"; /* gift */
+					}
+
+					&.feature-libre:before
+					{
+						background-color: hsl(191, 79%, 70%);
+						text-shadow: 0px 0px 3px hsl(191, 79%, 50%);
+						box-shadow: 1px 1px 2px hsl(191, 79%, 100%); /* ~effet bouton enfoncé */
+						border-top-left-radius: 3rem;
+						border-bottom-right-radius: 3rem;
+						content: "\f126"; /* code-fork */
+					}
+				}
+
+				dd
+				{
+					padding: 0;
+				}
+
+				@media (max-width: 575px)
+				{
+					> *
+					{
+						margin: 0rem 1rem 1rem;
+						flex-basis: calc(~"100% - 2rem");
+					}
+				}
+
+				@media (min-width: 576px)
+				{
+					> *
+					{
+						margin: 0rem 1rem 1rem;
+						flex-basis: calc(~"33.333% - 2rem");
+					}
+
+					dt
+					{
+						order: 1;
+					}
+
+					dd
+					{
+						order: 2;
+					}
+				}
+			}
+		}
+
+
+	}
+
+}
+
+
+
+
+
+
+/* ======= Features page ======= */
+
+article#features {
+	
+	font-size: 1.20rem;
+	
+	figure
+	{
+		display: flex;	
+		flex-wrap: wrap;
+		flex-direction: row;
+		align-items: center;
+		width: 100%;
+		margin: 0;
+		
+		@media (max-width: 991px)
+		{
+			padding: 1rem 5% 2rem;
+		}
+		
+		@media (min-width: 992px)
+		{
+			min-height: 100vh;
+		}
+		
+		&:nth-of-type(odd)
+		{
+			background: #ddd;
+		}
+
+		&:nth-of-type(even)
+		{
+			background: #eee;
+		}
+
+		&:nth-of-type(odd), 
+		&:nth-of-type(even)
+		{
+			background: linear-gradient(0deg, rgba(221,221,221,1) 0%, rgba(238,238,238,1) 100%);
+		}
+
+		@media (min-width: 992px)
+		{
+			&:nth-of-type(odd)
+			{
+				img
+				{ 
+					order: 2;
+				}
+
+				figcaption
+				{
+					order: 1;
+				}
+			}
+		}
+		
+		*
+		{
+			flex-shrink: 1;
+			box-sizing: border-box;
+			
+			@media (max-width: 991px)
+			{
+				flex-basis: 100%;
+			}
+		}
+		
+		img
+		{
+			@media (max-width: 991px)
+			{
+				order: 2;
+
+				max-width: 100%;
+			}
+			
+			@media (min-width: 992px)
+			{
+				width: 60%;
+				padding: 3rem 2.5%;
+				box-sizing: border-box;
+
+				margin: 0;
+				max-height: 100%;
+				text-align: center;
+			}
+		}
+		
+		figcaption {
+			
+			@media (max-width: 991px)
+			{
+				order: 1;
+			}
+			
+			@media (min-width: 992px)
+			{
+				width: 40%;
+				padding: 3rem 5%;
+				box-sizing: border-box;
+			}
+			
+			h2
+			{
+				margin-bottom: 1em;	
+				font-size: 1.80rem;
+				font-weight: 600;
+			}
+			
+		}
+
+	}
+
+}
+
+
+
+	
+/* ======= Download page ======= */
+
+#download {
+	
+	display: flex;
+	margin: 0 auto;
+	box-sizing: border-box;
+	height: auto;
+	flex-wrap: wrap;
+	justify-content: center;
+	
+	@media (max-width: 991px)
+	{
+		width: 100%;
+	}
+	
+	@media (min-width: 992px)
+	{
+		width: 80%;
+	}
+	
+	section
+	{
+		box-sizing: content-box;
+		border: 1px solid rgba(0, 0, 0, 0.125);
+		min-width: 200px;
+		text-align: center;
+		background-color: white;
+		border-radius: 0.25rem;
+		
+		
+		h3, 
+		p
+		{
+			padding-left: 1rem;
+			padding-right: 1rem;
+		}
+		
+		h3
+		{
+			margin-top: 1rem;
+			color: black;
+		}
+
+		img
+		{
+			max-width: 100%;	
+		}
+
+		@media (max-width: 991px)
+		{
+			margin: 1em;
+			flex-basis: calc(~"33.333% - 2em - 2px");
+			flex-grow: 1;
+			max-width: 300px;
+		}
+
+		@media (min-width: 992px)
+		{
+			margin: 1em;
+			flex-basis: calc(~"33.333% - 2em - 2px");
+			flex-shrink: 1;
+			flex-grow: 0;
+		}
+	}
+
+
+}
+
+
+
+
+/* ======= Funding page ======= */
+
+article#funding {
+
+	text-align: justify;
+	
+	#supportButtonContainer, 
+	#projectStatus
+	{
+		height: 100%;
+		overflow: hidden;
+		transition-property: opacity, height;
+		transition-delay: 0s, 0.50s;
+		transition-duration: 0.49s, 0s;
+	}
+
+	#pubkey-and-copy-button
+	{
+		/*opacity: 0;
+		height: 0;*/
+		transition-property: opacity, height;
+		transition-delay: 0.51s, 0.51s;
+		transition-duration: 0.50s, 0s;
+	}
+
+	#pubkey
+	{
+		font-family: monospace;
+		padding: 8px 0;
+		border-radius: 5px;
+		border: transparent;
+		background: transparent;
+		font-size: 1rem;
+		display: block;
+		width: 100%;
+		text-align: center;
+		margin: 0.5em auto;
+	}
+
+
+	#copyButton
+	{
+	}
+
+	#successMsg
+	{
+		opacity: 0;
+		/*height: 0;*/
+		line-height: 1.5em;
+		transition-property: opacity, height;
+		transition-duration: 1.5s, 0.5s;
+	}
+
+
+	input#pubkey
+	{
+		color: black;
+
+		&::selection
+		{
+			color: black;
+			background: transparent;
+		}
+
+		&:after
+		{
+			content: "...";
+		}
+	}
+
+	/*
+	#copyButton, 
+	#supportButton
+	{
+		background: #111;
+		color: white;
+		border: 0;
+		font-weight: light;
+		height: 3rem;
+		line-height: 3rem;
+		font-size: 1rem;
+		width: 100%;
+		margin-bottom: 0.5rem;
+	}
+	*/
+
+
+	.crowdfunding-widget {
+
+		margin: auto;
+		border: white;
+		background: white;
+		background: linear-gradient(0deg, hsl(39, 85.2%, 90%) 0%, hsl(39, 85.2%, 105%) 95%);
+		padding: 1em;
+		box-shadow: -2px 2px 5px black;
+
+		@media (min-width: 1200px) {
+
+			max-width: 450px;
+		}
+
+		.progress-meter
+		{
+			width: 100%;
+			height: 0.5em;
+			background-color: red;
+		}
+
+		strong
+		{
+			display: block;	
+			font-size: 2rem;
+		}
+
+		> p:nth-of-type(3) span:first-child
+		{
+			display: none;
+		}
+
+		.progress-container {
+
+			background-color: hsl(210, 15.8%, 92.5%);
+			border: 1px solid hsl(210, 10.3%, 32.7%);
+			height: 2rem;
+			border-radius: 0;
+
+			display: -ms-flexbox;
+			display: flex;
+			overflow: hidden;
+			font-size: .75rem;
+		}
+
+		@keyframes progress-bar-stripes {
+
+			from { background-position: 1rem 0; }
+			to { background-position: 0 0; }
+		}
+
+		.progress-bar {
+
+			display: -ms-flexbox;
+			display: flex;
+			-ms-flex-direction: column;
+			flex-direction: column;
+			-ms-flex-pack: center;
+			justify-content: center;
+			color: #fff;
+			text-align: center;
+			white-space: nowrap;
+			background-color: hsl(45, 100.0%, 51.4%);
+			transition: width .6s ease;
+
+			-webkit-animation: progress-bar-stripes 1s linear infinite;
+			animation: progress-bar-stripes 1s linear infinite;
+		}
+	}
+
+	
+	.donorsList {
+
+		list-style-type: none;
+		margin: 0 auto;
+		padding: 0;
+		max-width: 500px;
+		text-align: center;
+		display: flex;
+		flex-wrap: wrap;
+		justify-content: center;
+		align-items: center;
+	}
+
+	.donorsList > li {
+
+		padding: 0.10rem 0.5rem;
+		flex-shrink: 1;
+		box-sizing: border-box;
+	}
+
+	.donorsList > li span {
+
+		border-radius: 1em;
+		padding: 0 0.25em;
+		color: white;
+	}
+
+	.donorsList > li:nth-child(5n) span{
+
+		background: hsl(194, 100%, 70%);
+		color: black;
+	}
+
+	.donorsList > li:nth-child(5n+1) span{
+
+		background: hsl(185, 62%, 53%);
+	}
+
+	.donorsList > li:nth-child(5n+2) span{
+
+		background: hsl(210, 100%, 25%);
+	}
+
+	.donorsList > li:nth-child(5n+3) span{
+
+		background: hsl(194, 100%, 80%);
+		color: hsl(233, 88%, 9%);
+	}
+
+	.donorsList > li:nth-child(5n+4) span{
+
+		background: hsl(194, 100%, 60%);
+		color: hsl(233, 88%, 9%);
+	}
+
+	.donorsList > :nth-child(1) {
+
+		width: 100%;
+	}
+
+	.donorsList > :nth-child(2),
+	.donorsList > :nth-child(3)  {
+
+		width: 50%;
+	}
+}
+
+
+
+
+/* ======= Tutorial page ======= */
+
+#tuto {
+	
+	display: flex;
+	flex-wrap: wrap;
+	font-size: 1rem;
+	
+	img
+	{
+		max-width: 100%;	
+	}
+	
+	nav
+	{
+		background: white;
+		padding: 1em 2%;
+		align-self: flex-start;
+		
+		
+		li
+		{
+			margin-top: 0.5em;
+			margin-bottom: 0.5em;
+			
+			ul {
+				
+				display: none;
+			}
+		}
+		
+		li.active {
+			
+			> a {
+				
+				font-weight: bold;
+			}
+		}
+			
+		li.current
+		{
+			> ul {
+				
+				display: block;
+			}
+		}
+		
+		
+		> ul {
+			
+			list-style: none;
+			padding-left: 0;
+			
+			> li {
+					
+				margin-top: 1em;
+				margin-bottom: 1em;
+			}
+		}
+	}
+	
+	article
+	{
+		flex-grow: 1;
+		background-color: white;
+		color: black;
+		padding: 0 1em 1.5em;
+		align-self: flex-start;
+
+		h1
+		{
+			color: black;
+			font-size: 2rem;
+			font-weight: bold;
+			padding-bottom: 1em;
+		}
+		
+		li {
+
+			margin-top: 1em;
+			margin-bottom: 1em;
+			
+			img {
+
+				margin-top: 1em;
+				margin-bottom: 1em;
+			}
+		}
+		
+		dl {
+			
+			dt {
+				
+				font-weight: bold;
+				margin-bottom: 0.5em;
+				
+			}
+			
+			dd {
+				
+				margin-bottom: 1.5em;
+				
+			}
+			
+		}
+	}
+	
+	@media (max-width: 991px) {
+		
+		> *
+		{
+			flex-basis: 100%;
+		}
+
+		nav
+		{
+			order: 2;
+		}
+
+		article
+		{
+			order: 1;
+		}
+
+
+	}
+
+	@media (min-width: 992px) {
+		
+		> *
+		{
+			margin: 2rem 1%;	
+		}
+
+		nav
+		{
+			position: sticky;
+			top: 1em;
+			flex-shrink: 0;
+			flex-grow: 1;
+			flex-basis: 25%;
+		}
+
+		article
+		{
+			position: sticky;
+			top: 1em;
+			flex-shrink: 0;
+			flex-basis: 60%;
+		}
+	}
+}
+
+
+/* ======= Legal Notice page ======= */
+
+#legal-notice {
+	
+	dt {
+		
+		font-weight: bold;
+		font-size: 1.25rem;
+	}
+}
\ No newline at end of file
diff --git a/tpl/download.php b/tpl/download.php
index b938331cac2625375d6cf9d4c091f0dcbbda4701..f2f1ad467cdbe2741b0d75047bbcb282907834ab 100644
--- a/tpl/download.php
+++ b/tpl/download.php
@@ -1,5 +1,7 @@
 <?php
 
+textdomain('download');
+
 $pageTitle = _('Télécharger et installer');
 $pageDescription = _("Site officiel de Cesium. Télécharger la dernière version pour Linux, Windows, Mac, Android et iPhone.");
 
@@ -7,8 +9,6 @@ include('cesiumDownloads.php');
 
 include('head.php');
 
-textdomain('download');
-
 ?>
 
 
diff --git a/tpl/features.php b/tpl/features.php
index 33f65747b975321b82592398124e6dd4856146a7..b392305a5c728c66b03e3dd9a0a3af39950250bc 100644
--- a/tpl/features.php
+++ b/tpl/features.php
@@ -1,12 +1,12 @@
 <?php
 
+textdomain('features');
+
 $pageTitle = _('Fonctionnalités');
 $pageDescription = _("Fonctionnalités de Cesium : gérer son comptes monnaie libre Ğ1, rechercher des membres dans l'annuaire, trouver des entreprises qui acceptent la Ğ1.");
 
 include('head.php');
 
-textdomain('features');
-
 ?>
 <article id="features">
 	
diff --git a/tpl/funding-alt-1.php b/tpl/funding-alt-1.php
index eb031a21ac0092361d01bbe08a2bc0ab043d0fe6..26dc967e4eeb0107edff5ceb54ef66bd98666d1a 100644
--- a/tpl/funding-alt-1.php
+++ b/tpl/funding-alt-1.php
@@ -1,6 +1,6 @@
 <?php
 
-$pageTitle = _("Coucou");
+$pageTitle = _("Rançon");
 $pageDescription = _("");
 $bodyIds = 'f-alt-1';
 
@@ -48,22 +48,33 @@ function formatCountryName ($country, $lang)
 ?>
 
 <article>
-	<h1><?php echo _("P4g3 h4ckÉe paR /\Xi0m_734|\/|"); ?></h1>
+	<h1><?php echo _("P4g3 h4ckÉe paR |\/|0Xi/\-|\/|437"); ?></h1>
 	
 	<section class="text-box">
-		<p>
-			Votre téléchargement de Cesium a dû avoir lieu.
-		</p>
-		<p>
-			Si ce n'est pas le cas, <a href="<?php echo $cesiumDownloads[substr($subpage, 1)]['url'];?>">cliquez ici</a>.
-		</p>
+		<?php
 		
-		<p>
-			Bon, maintenant que c'est fait, <strong>parlons sérieusement</strong> : 
-		</p>
+		
+		$target = FUNDING_TARGET * 5;
+		
+		
+		
+		if (!empty($subpage)) {
+			echo '
+			<p>
+				Votre téléchargement de Cesium a dû avoir lieu.
+			</p>
+			<p>
+				Si ce n\'est pas le cas, <a href="'. $cesiumDownloads[substr($subpage, 1)]['url'] .'">cliquez ici</a>.
+			</p>
+
+			<p>
+				Bon, maintenant que c\'est fait, <strong>parlons sérieusement</strong> : 
+			</p>';
+		}
+		?>
 		
 		<p>
-			On s'appelle Axiom-Team et on vient de hacker cette page.
+			On s'appelle Moixa-Maet et on vient de hacker cette page.
 		</p>
 		
 		<p>
@@ -89,7 +100,7 @@ function formatCountryName ($country, $lang)
 		</p>
 		
 		<p>
-			En effet, la branche armée d'Axiom-Team s'est rendue en Mayenne pour kidnapper le principal développeur de Cesium. 
+			En effet, la branche armée de Moixa-Maet a défié le confinement et s'est rendue en Mayenne pour kidnapper le principal développeur de Cesium. 
 		</p>
 		
 		<p>
@@ -97,25 +108,57 @@ function formatCountryName ($country, $lang)
 		</p>
 		
 		<p>
-			Nous ne libérerons Benoît qu'à condition que soit réunie la somme de 100,000 DU<sub>Ğ1</sub>.
+			Nous ne libérerons Benoît qu'à condition que soit réunie la somme de <?php echo $target; ?> DU<sub>Ğ1</sub>.
 		</p>
 		
 		<p>
-			Si ce montant n'est pas atteint sous 3 jours, nous noirrons  Benoît dans une baignoire remplie de monnaie-dette, et les prochaines versions de Cesium ne verront jamais la lumière du jour.
+			Si ce montant n'est pas atteint sous 3 jours, nous noierons  Benoît dans une baignoire remplie de monnaie-dette, 
+			et les prochaines versions de Cesium ne verront jamais le jour.
 		</p>
 		
 		<?php
-		$target = '100';
-		$startDate = date('d/m/Y', (time() - (30*24*3600)));
+		
+		include('inc/Crowdfunding.class.php');
+		$startDate = date('Y-m-d', (time() - (30*24*3600)));
+		
+		$cfDuniter = new Crowdfunding(FUNDING_PUBKEY, 'relative', $startDate);
+		
 		$buttonLabel = _("Payer la rançon");
-		$fontColor = '00ff00';
-		$progressColor = '00ff00';
 		
+		$totalCollected = round($cfDuniter->getAmountCollected());
+		$portionReached = round($totalCollected / $target * 100);
+		$totalDonorsNb = $cfDuniter->getDonorsNb();
 		
 		echo '
-		<iframe class="autoHeight" width="100%"
-		        src="' . $rootURL .'/lib/barre-de-financement-integrable/iframe.php?pubkey='. FUNDING_PUBKEY . '&target='. $target .'&start_date='. $startDate . '&buttonLabel='. urlencode($buttonLabel) .'&unit=relative&font_color='. $fontColor .'&progress_color='. $progressColor .'">
-		</iframe>';
+		<aside class="crowdfunding-widget">
+			<!--
+			<meter min="0" max="100" value="'. $portionReached .'" high="75" low="25" class="progress-meter">
+				'. $portionReached .'%
+			</meter>
+			-->
+			<!--
+			<div class="progress-container">
+				<div class="progress-bar" 
+					 aria-valuenow="'. max($portionReached, 100) .'"
+					 aria-valuemin="0" 
+					 aria-valuemax="100" 
+					 style="width:0%;">
+
+					<span class="sr-only">
+						'. $portionReached . '%
+					</span>
+
+				</div>
+			</div>
+			-->
+			
+			<p>
+				Pour l\'instant, seulement 
+				<strong>'. $portionReached .'%</strong>
+				<span>de la rançon demandée est payée.</span>
+			</p>
+		</aside>
+		';
 		
 		?>
 		
@@ -127,7 +170,7 @@ function formatCountryName ($country, $lang)
 
 		<div id="pubkey-and-copy-button">
 			<p class="pubkey">
-				Pour payer la rançon, copiez la clef suivante :
+				Payez la rançon. Copiez la clef suivante&nbsp;:
 
 				<input id="pubkey" type="text" value="<?php echo FUNDING_PUBKEY; ?>" size="8" />...
 			</p>
@@ -139,20 +182,50 @@ function formatCountryName ($country, $lang)
 			</p>
 
 			<div id="successMsg">
-				<p>Clef copiée dans le presse-papier ! Collez-la maintenant dans Cesium afin de payer la rançon.</p>
+				<p>Clef copiée dans le presse-papier ! Collez-la maintenant dans l'annuaire Cesium afin de payer la rançon.</p>
 				<p style="text-align: center;">Ne contactez pas la police</p>
-				<p style="text-align: right;">Axiom-Team</p>
 			</div>
 		</div>
 	
 		<footer>
 			<p>
-				PS : oui, c'est de l'humour ;-)
-			</p>
-
-			<p>
-				P-PS : le portefeuille mentionné ci-dessous sert à rémunérer les développeurs de Cesium.
+				PS : poisson 🐟 d'avril 😉
 			</p>
 		</footer>
 	</section>
-</article>
\ No newline at end of file
+</article>
+
+
+
+<script>
+function copy() {
+	
+	var copyText = document.querySelector("#pubkey");
+	copyText.select();
+	document.execCommand("copy");
+
+	var successMsg = document.querySelector("#successMsg");
+	successMsg.style.opacity = "1";
+	/*successMsg.style.height = "3em";*/
+
+	var copyButton = document.querySelector("#copyButton");
+	copyButton.style.animation = "none";
+	
+}
+
+function support() {
+	
+	var pubkeyAndCopyButton = document.querySelector("#pubkey-and-copy-button");
+	var supportButtonContainer = document.querySelector("#supportButtonContainer");
+	supportButtonContainer.style.opacity = "0";
+	supportButtonContainer.style.height = "0";
+	pubkeyAndCopyButton.style.height = "100%";
+	pubkeyAndCopyButton.style.opacity = "1";
+	
+	var supportButton = document.querySelector("#supportButton");
+	$(this).style.animation = "none";
+}
+
+document.querySelector("#copyButton").addEventListener("click", copy);
+document.querySelector("#supportButton").addEventListener("click", support);
+</script>
diff --git a/tpl/funding-orig.php b/tpl/funding-orig.php
index 113675b7a7b610448c9ef5d1725d587d521ae422..01995d3af5c7cd76f9a733e630002f1c71f1db80 100644
--- a/tpl/funding-orig.php
+++ b/tpl/funding-orig.php
@@ -1,6 +1,6 @@
 <?php
 
-$pageTitle = _("Coucou");
+$pageTitle = _("Encouragez-nous !");
 $pageDescription = _("");
 
 include('cesiumDownloads.php');
@@ -11,7 +11,7 @@ include('head.php');
 
 
 <article id="funding">
-	<h1><?php echo _("Coucou"); ?></h1>
+	<h1><?php echo _("Encouragez-nous !"); ?></h1>
 	
 	<section class="text-box">
 		<?php
@@ -33,53 +33,122 @@ include('head.php');
 		}
 		?>
 		
+		
+		<p>
+			Vous rêvez d'un système monétaire plus juste&nbsp;?
+		</p>
+		
+		<p>
+			Nous aussi.
+		</p>
+		
+		<p>
+			L'ennui ? 
+		</p>
+		
+		<p>
+			L'adoption de la Ğ1 est lente.
+		</p>
+		
+		<p>
+			Cela tient à plusieurs choses, et l'une d'entre elles, c'est que le temps que les développeurs 
+			peuvent allouer au développement est limité.
+		</p>
+		
 		<p>
-			Nous sommes Axiom-Team et nous œuvrons à la promotion de la monnaie libre Ğ1. 
+			Il n'y a malheureusement que 24 heures dans une journée :-(
 		</p>
 		
 		<p>
-			On prend la parole ici parce qu'on voulait vous informer de la chose suivante&nbsp;:
+			Mais vous avez le pouvoir de contribuer à faire du rêve que nous partageons une réalité.
 		</p>
 		
 		<p>
-			Il existe une caisse de côtisations qui permet à la communauté de valoriser (en monnaie libre) 
-			la contribution que les développeurs de Cesium apportent au développement de la Ğ1.
+			Comment&nbsp;?
 		</p>
 		
 		<p>
-			L'objectif est de réunir sur cette caisse la somme de <?php echo FUNDING_TARGET; ?> DU<sub>Ğ1</sub> sur 30 jours glissant.
+			Tout simplement en finançant les développeurs.
 		</p>
 		
 		<p>
-			Voilà où nous en sommes aujourd'hui ce mois-ci par rapport à cet objectif&nbsp;:
+			Il existe des caisses de côtisations qui permettent à la communauté Ğ1 de valoriser, en Ğ1, 
+			les contributions que les développeurs apportent à l'écosystème logiciel de la Ğ1.
+		</p>
+		
+		<p>
+			Chaque mois, une vingtaine de contributeurs se voient gratifiés de 15 DU<sub>Ğ1</sub> pour leurs travaux sur Cesium, Silkaj, Sakia, Duniter, etc...
+		</p>
+		
+		<p>
+			Ces rémunérations sont faites en toute transparence ; et vous pouvez les retrouver sur le site et le forum de Duniter, ainsi que dans la blockchain.
+		</p>
+		
+		<p>
+			Nous aimerions augmenter progressivement la rémunération des développeurs 
+			jusqu'à atteindre des montants qui permettent à quelques développeurs 
+			d'allouer à la Ğ1 davantage de leur temps.
+		</p>
+		
+		<p>
+			Ce mois-ci, nous aimerions donc atteindre la somme de <?php echo FUNDING_TARGET; ?> DU<sub>Ğ1</sub>. 
+			Voilà où nous en sommes par rapport à cet objectif&nbsp;:
 		</p>
 
 		
 		<?php
-		include('inc/Funding.class.php');
-		$startDate = date('d/m/Y', (time() - (30*24*3600)));
-		$target = 100;
-		$funding = new Funding(FUNDING_PUBKEY, $target, $startDate, 'relative');
+		include('inc/Crowdfunding.class.php');
+		$startDate = date('Y-m-d', (time() - (30*24*3600)));
+		
+		$cfDuniter = new Crowdfunding(FUNDING_PUBKEY, 'relative', $startDate);
+		
+		/*
+		$donationsList = $cfDuniter->getDonationsList();
+		$min = $cfDuniter->getMinDonation();
+		$max = $cfDuniter->getMaxDonation();
+		*/
+			
+		$totalCollected = round($cfDuniter->getAmountCollected());
+		$portionReached = round($totalCollected / FUNDING_TARGET * 100);
+		$totalDonorsNb = $cfDuniter->getDonorsNb();
+		
 		
 		echo '
 		<aside class="crowdfunding-widget">
-			<meter min="0" max="100" value="'. $funding->getPercentage() .'" high="75" low="25" class="progress-bar">
-				'. $funding->getPercentage() .'%
+			<!--
+			<meter min="0" max="100" value="'. $portionReached .'" high="75" low="25" class="progress-meter">
+				'. $portionReached .'%
 			</meter>
+			-->
+			<!--
+			<div class="progress-container">
+				<div class="progress-bar" 
+					 aria-valuenow="'. max($portionReached, 100) .'"
+					 aria-valuemin="0" 
+					 aria-valuemax="100" 
+					 style="width:0%;">
+
+					<span class="sr-only">
+						'. $portionReached . '%
+					</span>
+
+				</div>
+			</div>
+			-->
 			
 			<p>
-				<strong>'. $funding->getPercentage() .'%</strong>
+				<strong>'. $portionReached .'%</strong>
 				<span>du montant souhaité est atteint</span>
 			</p>
 
 			<p>
-				<strong>'. $funding->getAmountDonated() . ' DU<sub>Ğ1</sub></strong>
-				<span>ont déjà donnés, sur un total de '. $target .' DU<sub>Ğ1</sub></span>
+				<strong>'. $totalCollected . ' DU<sub>Ğ1</sub></strong>
+				<span>ont déjà été donnés, sur un total de '. FUNDING_TARGET .' DU<sub>Ğ1</sub></span>
 			</p>
 
 			<p>
 				<span>grâce à </span>
-				<strong>'. $funding->getDonorsNb() . '</strong>
+				<strong>'. $totalDonorsNb . '</strong>
 				<span>donateurs</span>
 			</p>
 		</aside>
@@ -89,16 +158,16 @@ include('head.php');
 		
 		
 		<p>
-			Si vous souhaitez soutenir le projet Cesium, c'est simple : 
+			Si vous souhaitez soutenir la Ğ1, c'est simple : 
 		</p>
 
 		<div id="pubkey-and-copy-button">
 			<p class="pubkey">
-				Copiez la clef suivante : 
+				Copiez la clef suivante dans votre presse-papier&nbsp;: 
 
-				<input id="pubkey" type="text" value="<?php echo FUNDING_PUBKEY; ?>" size="8" />... 
+				<input id="pubkey" type="text" value="<?php echo FUNDING_PUBKEY; ?>" />
 				
-				dans votre presse-papier en cliquant sur le bouton ci-dessous :
+				en cliquant sur le bouton ci-dessous&nbsp;:
 			</p>
 
 			<p class="CTA-button">
@@ -108,11 +177,76 @@ include('head.php');
 			</p>
 
 			<div id="successMsg">
-				<p>Et maintenant collez-la dans Cesium afin de faire votre don 😉</p>
+				<p>Et maintenant collez-la dans l'annuaire Cesium afin de faire votre don 😉</p>
 				<p style="text-align: center;">Merci pour votre générosité ❤️</p>
-				<p style="text-align: right;">Axiom-Team</p>
 			</div>
 		</div>
+		
+		<?php
+		/*
+		echo '
+		<p>
+			Nous remercions chaleureusement tous les junistes qui ont fait un don ce mois-ci&nbsp;:
+		</p>';
+		
+		
+		if (empty($donationsList)) {
+
+			echo _('Pas encore de donateurs');
+
+		} else {
+			
+			echo '<ul class="donorsList">';
+
+			foreach ($donationsList as $t) {
+
+				echo '
+
+				<li style="font-size: '.  (1 + ($t['amount'] / $max) * 2) . 'em;">
+				
+					<span>'. $t['name'] .'</span>
+					
+				</li>';
+			}
+
+			echo '</ul>';
+		}
+		*/
+		?>
 	
 	</section>
-</article>
\ No newline at end of file
+</article>
+
+
+<script>
+function copy() {
+	
+	var copyText = document.querySelector("#pubkey");
+	copyText.select();
+	document.execCommand("copy");
+
+	var successMsg = document.querySelector("#successMsg");
+	successMsg.style.opacity = "1";
+	/*successMsg.style.height = "3em";*/
+
+	var copyButton = document.querySelector("#copyButton");
+	copyButton.style.animation = "none";
+	
+}
+
+function support() {
+	
+	var pubkeyAndCopyButton = document.querySelector("#pubkey-and-copy-button");
+	var supportButtonContainer = document.querySelector("#supportButtonContainer");
+	supportButtonContainer.style.opacity = "0";
+	supportButtonContainer.style.height = "0";
+	pubkeyAndCopyButton.style.height = "100%";
+	pubkeyAndCopyButton.style.opacity = "1";
+	
+	var supportButton = document.querySelector("#supportButton");
+	$(this).style.animation = "none";
+}
+
+document.querySelector("#copyButton").addEventListener("click", copy);
+document.querySelector("#supportButton").addEventListener("click", support);
+</script>
\ No newline at end of file
diff --git a/tpl/funding.php b/tpl/funding.php
index 4408003fd335056bea486de506b2cf4d796c110b..815d7240c9ff58a22bc39802e71e6b3467dd33d4 100644
--- a/tpl/funding.php
+++ b/tpl/funding.php
@@ -14,37 +14,17 @@ if (FUNDING_ALT) {
 ?>
 
 
-<script>
-function copy() {
-	
-	var copyText = document.querySelector("#pubkey");
-	copyText.select();
-	document.execCommand("copy");
 
-	var successMsg = document.querySelector("#successMsg");
-	successMsg.style.opacity = "1";
-	/*successMsg.style.height = "3em";*/
+<script src="<?php echo $rootURL; ?>/lib/jquery-3.4.1.min.js"></script>
+<script>
+$(document).ready(function(){	
 
-	var copyButton = document.querySelector("#copyButton");
-	copyButton.style.animation = "none";
-	
-}
+	$('.progress-bar').animate({
 
-function support() {
-	
-	var pubkeyAndCopyButton = document.querySelector("#pubkey-and-copy-button");
-	var supportButtonContainer = document.querySelector("#supportButtonContainer");
-	supportButtonContainer.style.opacity = "0";
-	supportButtonContainer.style.height = "0";
-	pubkeyAndCopyButton.style.height = "100%";
-	pubkeyAndCopyButton.style.opacity = "1";
-	
-	var supportButton = document.querySelector("#supportButton");
-	$(this).style.animation = "none";
-}
+		width: '<?php echo $portionReached; ?>%'
 
-document.querySelector("#copyButton").addEventListener("click", copy);
-document.querySelector("#supportButton").addEventListener("click", support);
+	}, 1300, '');
+});
 </script>
 
 <?php
diff --git a/tpl/home.php b/tpl/home.php
index 21a0863b73955cc0d5e688c617eaad7f15191849..b38eddc2bc054092683c774b56842bffdcb70f60 100644
--- a/tpl/home.php
+++ b/tpl/home.php
@@ -1,26 +1,27 @@
 <?php
 $bodyIds = 'home';
 
+
+textdomain('home');
+
 $pageTitle = _('Cesium Ğ1 - Site officiel');
 $pageDescription = _("Cesium est l'application la plus intuitive pour gérer votre portefeuille en monnaie-libre Ğ1.");
 
 include('head.php');
 
-textdomain('home');
-
 ?>
 
-<section id="showcase">
+<header id="showcase">
 	<div>
+		<h2 id="USP">
+			<?php echo _("Recevez et envoyez <br />de la monnaie libre Ğ1"); ?>
+		</h2>
+		
 		<figure id="home-app-screenshot">
 			<img src="<?php echo $rootURL . '/i18n/' . LANG_FOLDER . '/contents' . _('/accueil') . _('/Cesium-G1-maquette.png'); ?>" 
 				 alt="capture d'écran de Cesium" />
 		</figure>
 
-		<h2 id="USP">
-			<?php echo _("Recevez et envoyez <br />de la monnaie libre Ğ1"); ?>
-		</h2>
-
 		<p class="CTA-button">
 			<a href="<?php echo parseURI(_("/telechargement")); ?>">
 				<?php printf(_("Télécharger Cesium %s"), $cesiumVersions['home']); ?>
@@ -32,24 +33,26 @@ textdomain('home');
 			<?php printf(_('Logiciel libre sous licence %s'), 'GNU AGPL-3.0'); ?>
 		</p>
 
-		<aside>
+		<aside id="CTA-join-us">
 			<?php printf(_('Développeur ?')); ?>
 			<a href="<?php echo parseURI(_("/developpeurs")); ?>">
 				<?php echo _('Rejoignez-nous !'); ?>
 			</a>
 		</aside>
+		
+		<div></div>
 	</div>
-</section>
+</header>
 
 
-<section class="features-list" id="features-list-1">
+<section class="features-list">
 	<div>
 		<h2>
 			<?php echo _('Cesium : la solution simple<br />pour échanger en monnaie libre'); ?>
 		</h2>
 		
 		<dl>
-			<dt>
+			<dt class="feature-secured">
 				<?php echo _('Sécurisé'); ?>
 			</dt>
 
@@ -57,7 +60,7 @@ textdomain('home');
 				<?php echo _('Cesium signe numériquement vos transactions avant de les transmettre à la blockchain de Duniter.'); ?>
 			</dd>
 
-			<dt>
+			<dt class="feature-gratis">
 				<?php echo _('Offert'); ?>
 			</dt>
 
@@ -67,7 +70,7 @@ textdomain('home');
 							 "Cesium vous est offert sans exiger de contre-partie. "); ?>
 			</dd>
 
-			<dt>
+			<dt class="feature-libre">
 				<?php echo _('Libre'); ?>
 			</dt>
 
@@ -91,7 +94,7 @@ textdomain('home');
 		</h2>
 
 		<figure>
-			<a href="<?php echo _("/telechargement"); ?>">
+			<a href="<?php echo parseURI(_("/telechargement")); ?>">
 				<img src="<?php echo $rootURL; ?>/img/home/telecharger-cesium-full.png" alt="Télécharger Cesium" />
 			</a>
 
@@ -102,7 +105,7 @@ textdomain('home');
 					<?php 
 						printf(_('Rendez-vous sur <a href="%s">la page Téléchargement</a> pour récupérer le ' . 
 								 'fichier qui convient à votre système d\'exploitation.'
-								), _("/telechargement")
+								), parseURI(_("/telechargement"))
 							  );
 					?>
 				</p>
diff --git a/tpl/tuto.php b/tpl/tuto.php
index 8e7e582f0663ab80962c1ff898ad6d9abc062448..74b9788ad7a7256f969ac93170661db1e52c7fda 100644
--- a/tpl/tuto.php
+++ b/tpl/tuto.php
@@ -1,4 +1,7 @@
 <?php
+
+textdomain('tuto');
+
 $pageTitle = '';
 
 $tutoURL = $rootURL . '/' . LANG . dgettext('menu', $pagePermalink) . '/';
@@ -76,14 +79,35 @@ if (file_exists($tutoContentsPath . $subpage) and !is_dir($tutoContentsPath . $s
 		/* === Menu === */
 		
 		$menu = './i18n/' . LANG_FOLDER . '/contents/tuto/menu.html';
-		if (file_exists($menu))
-		{
+		
+		if (file_exists($menu)) {
+			
 			$toc = file_get_contents($menu, FILE_USE_INCLUDE_PATH);
-
-			$toc = str_replace('href="'.substr($subpage, 1) .'"', 'href="'. substr($subpage, 1) .'" class="current"', $toc);
-
-			$toc = str_replace('href="', ('href="' . $tutoURL), $toc);
-
+			
+			$pagePath = substr($subpage, 1);
+			
+			$branches = explode('/', removeTrailingSlash($pagePath), -1);
+			
+			$fullPath = '';
+			
+			foreach ($branches as $branch) {
+				
+				$fullPath .= $branch . '/';
+
+				$toc = preg_replace('#<li>(\s*<a href="'. $fullPath .'")#isU', 
+								   '<li class="current">$1', 
+								   $toc);
+			}
+			
+			$toc = preg_replace('#<li>(\s*<a href="'. $pagePath .'")#isU', 
+							   '<li class="current active">$1', 
+							   $toc);
+			
+			$toc = str_replace('href="', 
+							   ('href="' . $tutoURL), 
+							   $toc);
+			
+			
 		}
 		
 		/* === Contents === */
@@ -98,13 +122,11 @@ if (file_exists($tutoContentsPath . $subpage) and !is_dir($tutoContentsPath . $s
 
 		include('head.php');
 
-		textdomain('tuto');
-
 		?>
 
 		<section id="tuto">
 			<nav>
-				<h2>Sommaire</h2>
+				<h2><?php echo _('Sommaire'); ?></h2>
 
 				<?php echo $toc; ?>
 			</nav>