From 441dc4d794d5067200f5daebb1751bebb82f52db Mon Sep 17 00:00:00 2001 From: Suzanne Soy Date: Mon, 8 May 2023 00:17:42 +0100 Subject: [PATCH] Script to make an offline version of (a local copy of) wiki.gruntnetwork.com --- .gitmodules | 3 + ...work-20230507204643-export-all-fix-pre.xml | 623 ++++++++++++++++++ download-website-script/cmd.sh | 22 + .../localhost/-/audio-ltr.svg | 6 + .../localhost/-/bullet.svg | 4 + .../localhost/-/chat-ltr.svg | 4 + .../localhost/-/document-ltr.svg | 5 + .../localhost/-/external-ltr.svg | 6 + download-website-script/localhost/-/favicon | Bin 0 -> 24954 bytes .../localhost/-/ftp-ltr.svg | 7 + .../localhost/-/headbg.jpg | Bin 0 -> 7881 bytes .../localhost/-/icon-chat.svg | 22 + .../localhost/-/icon-globe.svg | 19 + .../localhost/-/icon-page.svg | 17 + .../localhost/-/icon-search.svg | 29 + .../localhost/-/icon-tools.svg | 22 + .../localhost/-/icon-triangle-down.svg | 14 + .../localhost/-/icon-triangle-ltr.svg | 14 + .../localhost/-/icon-triangle-up.svg | 15 + .../localhost/-/icon-user.svg | 35 + .../localhost/-/magnify-clip-ltr.svg | 7 + .../localhost/-/magnify-clip-rtl.svg | 7 + download-website-script/localhost/-/mail.svg | 5 + download-website-script/localhost/-/video.svg | 6 + download-website-script/localhost/-/wiki.png | Bin 0 -> 24954 bytes download-website-script/localhost/-/zim.css | 84 +++ .../localhost/Accueil.html | 22 + .../localhost/Affichage_Graphique.html | 22 + .../localhost/Conventions.html | 28 + .../localhost/Drivers/mode_reel.h:int86.html | 22 + .../Environnement_de_programmation.html | 24 + download-website-script/localhost/GRUB.html | 22 + download-website-script/localhost/I/cc-0.png | Bin 0 -> 969 bytes .../localhost/I/poweredby_mediawiki_88x31.png | Bin 0 -> 3839 bytes .../localhost/Langage.html | 22 + download-website-script/localhost/Liens.html | 22 + download-website-script/localhost/M/Creator | 0 download-website-script/localhost/M/Date | 1 + .../localhost/M/Description | 0 download-website-script/localhost/M/Language | 1 + download-website-script/localhost/M/Name | 1 + download-website-script/localhost/M/Publisher | 0 download-website-script/localhost/M/Source | 1 + download-website-script/localhost/M/Title | 1 + download-website-script/localhost/M/mainpage | 1 + download-website-script/localhost/Notes.html | 22 + .../localhost/Nouveau_Développeur.html | 22 + .../localhost/Prérequis.html | 22 + .../localhost/Test_fonctionC.html | 22 + .../localhost/Toutes_les_pages.html | 22 + download-website-script/localhost/index.html | 22 + download-website-script/localhost/metadata.db | Bin 0 -> 24576 bytes download-website-script/stub.css | 77 +++ download-website-script/template.html | 44 ++ zimmer | 1 + 55 files changed, 1420 insertions(+) create mode 100644 .gitmodules create mode 100644 download-website-script/Gruntnetwork-20230507204643-export-all-fix-pre.xml create mode 100755 download-website-script/cmd.sh create mode 100644 download-website-script/localhost/-/audio-ltr.svg create mode 100644 download-website-script/localhost/-/bullet.svg create mode 100644 download-website-script/localhost/-/chat-ltr.svg create mode 100644 download-website-script/localhost/-/document-ltr.svg create mode 100644 download-website-script/localhost/-/external-ltr.svg create mode 100644 download-website-script/localhost/-/favicon create mode 100644 download-website-script/localhost/-/ftp-ltr.svg create mode 100644 download-website-script/localhost/-/headbg.jpg create mode 100644 download-website-script/localhost/-/icon-chat.svg create mode 100644 download-website-script/localhost/-/icon-globe.svg create mode 100644 download-website-script/localhost/-/icon-page.svg create mode 100644 download-website-script/localhost/-/icon-search.svg create mode 100644 download-website-script/localhost/-/icon-tools.svg create mode 100644 download-website-script/localhost/-/icon-triangle-down.svg create mode 100644 download-website-script/localhost/-/icon-triangle-ltr.svg create mode 100644 download-website-script/localhost/-/icon-triangle-up.svg create mode 100644 download-website-script/localhost/-/icon-user.svg create mode 100644 download-website-script/localhost/-/magnify-clip-ltr.svg create mode 100644 download-website-script/localhost/-/magnify-clip-rtl.svg create mode 100644 download-website-script/localhost/-/mail.svg create mode 100644 download-website-script/localhost/-/video.svg create mode 100644 download-website-script/localhost/-/wiki.png create mode 100644 download-website-script/localhost/-/zim.css create mode 100644 download-website-script/localhost/Accueil.html create mode 100644 download-website-script/localhost/Affichage_Graphique.html create mode 100644 download-website-script/localhost/Conventions.html create mode 100644 download-website-script/localhost/Drivers/mode_reel.h:int86.html create mode 100644 download-website-script/localhost/Environnement_de_programmation.html create mode 100644 download-website-script/localhost/GRUB.html create mode 100644 download-website-script/localhost/I/cc-0.png create mode 100644 download-website-script/localhost/I/poweredby_mediawiki_88x31.png create mode 100644 download-website-script/localhost/Langage.html create mode 100644 download-website-script/localhost/Liens.html create mode 100644 download-website-script/localhost/M/Creator create mode 100644 download-website-script/localhost/M/Date create mode 100644 download-website-script/localhost/M/Description create mode 100644 download-website-script/localhost/M/Language create mode 100644 download-website-script/localhost/M/Name create mode 100644 download-website-script/localhost/M/Publisher create mode 100644 download-website-script/localhost/M/Source create mode 100644 download-website-script/localhost/M/Title create mode 100644 download-website-script/localhost/M/mainpage create mode 100644 download-website-script/localhost/Notes.html create mode 100644 download-website-script/localhost/Nouveau_Développeur.html create mode 100644 download-website-script/localhost/Prérequis.html create mode 100644 download-website-script/localhost/Test_fonctionC.html create mode 100644 download-website-script/localhost/Toutes_les_pages.html create mode 100644 download-website-script/localhost/index.html create mode 100644 download-website-script/localhost/metadata.db create mode 100644 download-website-script/stub.css create mode 100644 download-website-script/template.html create mode 160000 zimmer diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..7c3bf28 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "zimmer"] + path = zimmer + url = https://github.com/SuzanneSoy/wiki.gruntnetwork.com--zimmer diff --git a/download-website-script/Gruntnetwork-20230507204643-export-all-fix-pre.xml b/download-website-script/Gruntnetwork-20230507204643-export-all-fix-pre.xml new file mode 100644 index 0000000..1bc4ee4 --- /dev/null +++ b/download-website-script/Gruntnetwork-20230507204643-export-all-fix-pre.xml @@ -0,0 +1,623 @@ + + + Gruntnetwork + https://wiki.gruntnetwork.com/Accueil + MediaWiki 1.15.1 + first-letter + + Média + Spécial + + Discussion + Utilisateur + Discussion utilisateur + Gruntnetwork + Discussion Gruntnetwork + Fichier + Discussion fichier + MediaWiki + Discussion MediaWiki + Modèle + Discussion modèle + Aide + Discussion aide + Catégorie + Discussion catégorie + + + + Accueil + 1 + + 11737 + 2011-06-21T11:25:11Z + + 193.239.192.194 + + == gruntnetwork == + +gruntnetwork est un système d'exploitation sous licence Affero GPL. Actuellement il est en phase de développement, dans le cadre d'un projet pédagogique à l'Université Montpellier 2. + +== Nouveau Développeur ? == +{{:Nouveau Développeur}} + +[[notes]] + + + + Affichage Graphique + 12 + + 67 + 2009-03-04T15:14:06Z + + Jsmaniac + 1 + + correspond pas à ce qu'on a fait + + + + + Conventions + 3 + + 31 + 2009-02-08T17:02:59Z + + 78.115.6.242 + + /* En C */ + Les conventions suivantes seront utilisées pour un code homogène. + +== En C == + +* L'indentation se fait à 4 espaces par tabulation. +* Pas de transformation des espaces en tabulation. +* <code>nomsDeVariables</code> +* <code>NOMS_DE_CONSTANTE</code> +* Fonctions : +<pre> + type_retour nom_fonction(type_param_1 param_1, ..., type_param_n param_n) { + code; + } +</pre> +* Boucles for, avec déclaration locale à la boucle de l'itérateur s'il n'a pas lieu d'être à l'extérieur (int i=a) : +<pre> + for (int i=a; i<b; i++) { + code; + } +</pre> + +== En assembleur == + +On utilisera la syntaxe Gas, car elle est compatible avec le compilateur GCC + + + + Drivers/mode reel.h:int86 + 20 + + 54 + 2009-02-11T13:40:21Z + + 162.38.218.206 + + Nouvelle page : {{fonctionC |void|int86|{{dec_param_d|int|interruption}}, {{dec_param_d|regs86|registres_in}}, {{dec_param_r|regs86|registres_out}} |{{param_d|registres_in}} est la valeur des regist... + {{fonctionC +|void|int86|{{dec_param_d|int|interruption}}, {{dec_param_d|regs86|registres_in}}, {{dec_param_r|regs86|registres_out}} +|{{param_d|registres_in}} est la valeur des registres +avant l'interruption {{param_d|interruption}}, +{{param_r|registres_out}} est la valeur des registres après interruption. + +Cette fonction n'est pas encore écrite. +}} + + + + Environnement de programmation + 8 + + 27 + 2009-01-06T11:51:51Z + + 162.38.218.206 + + /* Tests */ + == Éditeur == + +Votre préféré :) Personne ne vous oblige à quoi que ce soit. Prévoyez-en un avec indentation et coloration syntaxique quand même, nano et cat sont un peu rudimentaires de ce point de vue… + +== Gestion des versions == + +SVN sera utilisé pour la gestion des versions. + +<pre> + svn co svn+ssh://VOTREUSER@svn.tuxfamily.org/svnroot/gruntnetwork/systeme + svn co svn+ssh://VOTREUSER@svn.tuxfamily.org/svnroot/gruntnetwork/applications +</pre> + +Voir [http://faq.tuxfamily.org/SVN/Fr la faq de TuxFamily] pour plus d'infos sur l'utilisation. + +== Compilateur == + +Pour le C : '''gcc'''. Car c'est le plus courant sous linux, car il gère directement l'assembleur (syntaxe gas), car beaucoup de monde l'utilise donc on trouvera facilement de la documentation, car il est sous licence libre. + +On utilisera la version 4.3, de préférence 4.3.2 (c'est celle par défaut sous ubuntu, et sous debian testing/unstable). Si vous avez une autre version, pas de problème, mais en cas de bug bizarre, il vaudra mieux vérifier que c'est bien le code qui plante et non pas une version bugguée de gcc (c'est arrivé par le passé…) + +== Tests == + +'''NE TESTEZ JAMAIS gruntnetwork SUR UN PC RÉEL''', à moins que vous n'ayez pas peur d'un effacement de disque. +Je possède moi-même un PC avec un vieux disque dur vide de quelques Go, ça pourra servir pour faire des tests grandeur nature lorsque le projet sera viable. + +Pour les tests nous utiliserons [http://bellard.org/qemu/ qemu], un émulateur de PC libre, fonctionnant sous linux et windows, probablement sous mac aussi. Seule l'architecture x86 sera supportée pour l'instant. + +Lorsque nous en viendrons à écrire les drivers, il sera possible d'utiliser bochs pour voir si les bons drivers sont chargés lorsque la configuration matérielle (l'ensemble du matériel disponible sur un PC) change. + +Le démarrage (boot) sera assuré par [[GRUB]], installé sur une image de disquette vierge (un fichier de 1.44 Mo simulant une disquette sur laquelle seront présents GRUB, gruntnetwork et rien d'autre). Cette configuration simple évitera que d'autres facteurs de causent des bugs. + + + + GRUB + 11 + + 28 + 2009-01-06T11:53:42Z + + 162.38.218.206 + + Nouvelle page : Grub est le chargeur de démarrage utilisé par gruntnetwork. Lors du démarrage de l'ordinateur, il est chargé en mémoire par le BIOS (Basic Input Output System), puis il est ex... + Grub est le chargeur de démarrage utilisé par gruntnetwork. + +Lors du démarrage de l'ordinateur, il est chargé en mémoire par le BIOS (Basic Input Output System), puis il est exécuté. Sa tâche consiste alors à afficher un menu à l'écran permettant à l'utilisateur de choisir le système d'exploitation qu'il souhaite démarrer. + + + + Langage + 9 + + 25 + 2009-01-04T05:54:38Z + + Jsmaniac + 1 + + + a renommé [[Langage/]] en [[Langage]] + gruntnetwork utilise de manière interne un langage de programmation graphique, qui se présente de la manière suivante : + +* Les fonctions sont représentées par des blocs +* Les blocs possèdent des ports d'entrée (paramètres de la fonction) et de sortie (valeur'''s''' de sortie) +* Un bloc n'est pas caractérisé par son nom, mais par un identifiant interne, donc pas de conflits de nommage + +* Les ports ont des conditions sur leurs valeurs (type, intervalle de valeurs, …) +* Les ports peuvent (devraient) avoir une valeur par défaut +* Les ports ont un nom et une description associée + +* Les blocs sont reliés entre eux en connectant leurs ports +* Un port de sortie peut être connecté à plusieurs ports d'entrée, la valeur de sortie étant conservée en mémoire tant qu'elle est nécessaire (ceci est l'équivalent d'un <code>let</code> en scheme, ou d'une variable locale) +* Un bloc est composé d'autres blocs dont certains ports sont connectés aux ports du bloc englobant. + +Il y a une certaine analogie entre les blocs et des circuits éléctroniques : l'information circule au travers des connexions et est modifiée par les blocs. Un bloc effectue une tâche définie, et peut être vu comme un composant électronique : on n'a pas besoin de voir à l'intérieur pour l'utiliser. + +Le langage s'écrit au travers d'une interface de recherche, qui permet de sélectionner le bon bloc parmi plusieurs homonymes s'il y en a. + + + + + Liens + 4 + + 73 + 2009-12-31T01:15:10Z + + 195.83.178.10 + + Annulation des modifications 70 de [[Special:Contributions/94.253.24.87|94.253.24.87]] ([[User talk:94.253.24.87|discussion]]) + == Notions == + +* [http://fr.wikipedia.org/wiki/Basic_Input_Output_System BIOS] pour ceux qui ne savent pas ce que c'est + +=== Assembleur === + +* [http://mark.masmcode.com/ Optimisation] +* [http://www.asmcommunity.net/ asmcommunity.net] +* [http://gok.customer.netspace.net.au/resources/ Hacks SVGA] +* [http://www.x86-guide.com/ Guide pour l'assembleur X86] +* [http://asm.sourceforge.net/ asm.sourceforge.net] +* [http://www.ctyme.com/intr/int.htm Interruptions du BIOS] +* [http://heim.ifi.uio.no/~stanisls/helppc/idx_interrupt.html Encore les interruptions] +* [http://www.penguin.cz/~literakl/intel/intel.html 80x86 instruction set] + +=== Démarrage (boot) === + +* [http://susam.in/articles/boot-sector-code/ Secteur de boot] +* [http://www.osdcom.info/content/view/33/39/ Après GRUB (multiboot)] +* Premier boot de la première version de linux : [http://www.oldlinux.org/Linux.old/kernel/0.00/linux-0.01/boot/boot.s] et [http://www.oldlinux.org/Linux.old/kernel/0.1x/linux-0.10/boot/bootsect.s] +* [http://en.wikibooks.org/wiki/X86_Assembly/Bootloaders Chargeurs de démarrage] sur le wiki X86_Assembly +* [http://www.vnutz.com/content/program_a_bootstrap_loader Programmer un chargeur de démarrage] +* [http://www.pixelbeat.org/docs/disk/ Organisation du disque dur] (secteur de boot et fichiers de grub) +* [http://www.gnu.org/software/grub/manual/multiboot/multiboot.html Multiboot Specification] +* [http://www.sfr-fresh.com/linux/misc/grub-0.97.tar.gz/ Grub-0.97.tar.gz] (Téléchargement des sources) + +=== Modes du processeur (réel, protégé, ...) === +* [http://www.x86.org/articles/pmbasics/tspec_a1_doc.htm Protected Mode Basics] : Les bases, y entrer, en sortir '''sur le processeur 80286''' (donc pas pour nous) +* [http://en.wikibooks.org/wiki/X86_Assembly/Protected_Mode X86 Assembly/Protected Mode] +* [http://osdev.berlios.de/v86.html Virtual 8086 Mode] : du réel dans du protégé +* [http://benoit.papillault.free.fr/c/l32/pm.asm pm.asm] : passage en mode protégé puis retour en mode réel + du V86 quelque part. +* [http://www.sudleyplace.com/pmtorm.html Transition from Protected Mode to Real Mode] + +=== Affichage Graphique === +Voir l'article [[Affichage Graphique]]. + +* [http://heim.ifi.uio.no/~stanisls/helppc/ascii.gif Table des caractères ascii] +* [http://www.faqs.org/faqs/pc-hardware-faq/supervga-programming/ SuperVGA/VESA programmer's notes] +* [http://en.wikipedia.org/wiki/VESA_BIOS_Extensions VESA BIOS Extensions] sur wikipedia +* [http://atschool.eduweb.co.uk/camdean/pupils/amac/vga.htm#11 Tutorial on VGA Graphics] : VGA, souris, bitmap +* [http://osdev.berlios.de/v86.html Virtual 8086 Mode] : Utiliser le mode 8086 virtuel pour accéder aux fonctions VESA du BIOS +* [http://www.inversereality.org/tutorials/graphics%20programming/videomodesvesa.html VESA Video Modes] Comment obtenir la liste des modes disponibles et des informations les concernant. +* [http://www.student.cs.uwaterloo.ca/~cs452/grub/ patch vbe] pour que grub nous passe en mode graphique +* [http://svn.navi.cx/misc/trunk/metalkit/lib/vbe.c Utilisation de l'interface en mode protégé de VBE] + +==== Références VESA ==== + +* [http://docs.ruudkoot.nl/vesasp12.txt VESA BIOS Extension 1.2] +* [http://docs.ruudkoot.nl/vbe20.txt VESA BIOS Extension 2.0] +* [http://www.vesa.org/public/VBE/vbe3.pdf VESA BIOS Extension 3.0] + +=== Drivers === + +==== Souris ==== +* [http://wiki.osdev.org/Mouse_Input Mouse Input] : Comment configurer et écouter une souris PS/2 sur osdev.org + +==== Clavier ==== +* [http://wiki.osdev.org/PS2_Keyboard#Protected_Mode_Keyboard_Driver PS2 Keyboard] : driver sur osdev.org +* [http://www.win.tue.nl/~aeb/linux/kbd/scancodes.html Keyboard scancodes] Quel code envoyé par le clavier correspond à quel caractère. + +== Portails == + +* [http://www.osdev.org/ osdev.org] : Wiki + Forum sur le développement d'OS +* [http://www.nondot.org/sabre/os/articles OSRC] : Operating System Ressource Center +* [http://www.osdever.net/ Bona Fide OS Development] + +== Tutoriels == + +* [http://a.michelizza.free.fr/pmwiki.php?n=TutoOS.TutoOS Pépin] : tuto du boot au shell, très complet. +* [http://aaprog.blogspot.com/2008/04/systme-dexploitation-1-les-outils.html AAProg] : Pas beaucoup de code mais de très bonnes explications +* Tutoriels sur [http://www.osdever.net/tutorials.php?cat=0&sort=1 Bona Fide] + +== Petits systèmes d'exploitation == +Toujours pratique pour s'inspirer… + +* [http://wiki.osdev.org/Projects Liste de projets d'OS] sur osdev.org +* [http://www.dynatos.org/ dynatos] +* [http://gok.customer.netspace.net.au/resources/ UNIOS] +* [http://www.sarg.ryerson.ca/~cmwilson/code/funos/funos.html funos] +* [http://www.ninj4.net/kinetic/ kinetic], écrit en haskell. Ça vaut le coup d'oeuil. + +== Divers == +* [http://www.siteduzero.com/forum-83-276054-p1-creer-son-propre-systeme-d-exploitation.html Sujet] sur le site du zéro, pas mal de liens + + + + Notes + 24 + + 11738 + 2011-06-21T11:27:13Z + + 193.239.192.194 + + Page créée avec « Permettre à une construction de déclarer des mot-clés (keywords) qui seront valides ou non à certains endroits du code dans la construction, mais ne pourront pas être re… » + Permettre à une construction de déclarer des mot-clés (keywords) qui seront valides ou non à certains endroits du code dans la construction, mais ne pourront pas être redéclarés tant que la construction a un effet. C'est une alternative à la possibilité de rajouter des variables "par nom" pour qu'elles soient utilisées par ex. par le code d'une fonction. + + + + Nouveau Développeur + 7 + + 29 + 2009-02-02T00:31:55Z + + 90.9.192.151 + + Ajout de la sous partie S'inscrire + == S'inscrire == +* Créez-vous un compte sur [http://tuxfamily.org/fr/subscribe TuxFmaily] et adhérez au projet gruntnetwork +* Créez-vous un compte sur le [http://wiki.gruntnetwork.com/index.php5?title=Special:Connexion&type=signup&returnto=Nouveau_D%C3%A9veloppeur wiki] +* Créez-vous un compte sur le [http://tracker.gruntnetwork.com/index.php?do=register tracker] + +== À lire == +* [[Prérequis]] : Un peu de lecture pour les vacances. Si vous ne savez rien sur les sujets listés dans cette page, vous risquez d'être à la traîne. +* [[Conventions]] : À respecter, pour un code homogène. Si vous avez quoi que ce soit à redire dessus, faites-le vite, avant qu'on ait des centaines de lignes à reformater :) +* [[Environnement de programmation]] : Avec quoi on travaille (Emacs ou Vim + gcc + qemu ou bochs). +* [http://tracker.gruntnetwork.com/roadmap Feuille de route] : Qui fait quoi, Quand, dans Quel ordre. +* [[Liens]] : Quand vous ne saurez plus comment faire un truc en assembleur :) + + + + Prérequis + 2 + + 33 + 2009-02-08T17:15:49Z + + 78.115.6.242 + + /* Connaissance du C et de l'assembleur */ + '''Une chose à retenir''' : Si vous êtes largués, si vous ne comprenez pas, si vous piétinez sur un bout de code qui compile pas : n'attendez pas le déluge pour vous signaler ! +Il y aura toujours quelqu'un pour vous aider à comprendre ce qui vous pose problème. + +Certaines pages lisées ici sont en anglais : si vous avez du mal, envoyez-moi un message et je ferai une traduction. + +== Un peu de lecture == + +=== Conception D'OS (GNU/Linux Magazine) === + +Dans GNU/Linux Magazine France est paru il y a quelques années une série d'articles sur la conception de systèmes d'exploitation. Les articles expliquent, pas à pas, comment créer un système simple. Je recommande vivement à tout le monde d'avoir lu ces articles d'ici la mi-janvier, comme ça on saura tous de quoi on parle. + +[http://sos.enix.org/fr/SOSDownload Les articles] sont disponibles gratuitement sur internet. + +N°s des magazines : + +* 62 : Boot + Console +* 63 : Segmentation et Interruptions +* 65 : Pagination +* 68 : Multitâche et changement de contexte +* 69 : Threads +* 70 : Espaces d'adressage, appels système et applications utilisateur +* 72 : Gestion de l'espace virtuel utilisateur +* 74 : VFS (système de fichiers virtuel) + +Vu que ce dernier numéro contient la deuxième partie d'un article très intéressant sur la compression de données, vous voudrez peut-être la première partie : n° 73. +Le site [http://www.ed-diamond.com/ ed-diamond] vous permet de commander ces anciens numéros. Il propose un « PowerPack x10 » à 25€, donc ça fait un bon cadeau de noël pour pas trop cher :) + +=== a Simple Operating System === + +Un système d'exploitation simple : [http://minso.free.fr/cavinfo/systeme/sos.html sos] + +== Connaissance du C et de l'assembleur == + +==== Cours de C : ==== +* http://c.developpez.com/cours/ +* http://www.siteduzero.com/tutoriel-3-14189-apprenez-a-programmer-en-c.html +* http://c.developpez.com/faq/ + +==== Cours d'ASM pour plateforme x86 : ==== +* http://benoit-m.developpez.com/assembleur/tutoriel/ +* http://www.scribd.com/search?c=all&query=x86&commit=Search + +== Compréhension de la procédure de démarrage (Boot) == + +* [http://fr.wikipedia.org/wiki/Master_boot_record MBR] +* [http://www.pixelbeat.org/docs/disk/ GRUB] +* (Une des) [http://fr.wikipedia.org/wiki/Init procédure(s) d'initialisation] de GNU/Linux (Nous n'utiliserons probablement pas cette méthode, mais c'est bon à connaître). + + +Nous utiliserons Grub et le standard Multiboot plutôt que de programmer notre propre chargeur de démarrage, cependant les méchanismes du MBR et de GRUB sont à comprendre pour maîtriser la chose (et pour la soutenance orale...). + +== Interruptions du BIOS (pages de référence) == + +* [http://www.ctyme.com/intr/int.htm Liste des interruptions] et de comment on s'en sert +* Les interruptions int 10h et int 13h seront utilisées. +* [http://courses.ece.uiuc.edu/ece390/books/labmanual/graphics-int10h.html int 10h] +* [http://courses.ece.uiuc.edu/ece390/books/labmanual/graphics-mode13h.html int 13h (VGA)] +* [http://pdos.csail.mit.edu/6.828/2008/readings/hardware/vgadoc/VESA.TXT Modes VESA] + + + + Test fonctionC + 6 + + 12 + 2009-01-01T01:05:50Z + + 90.14.26.225 + + Nouvelle page : {{fonctionC |int|floor|float x |Renvoie l'arrondi à l'inférieur de x }} + {{fonctionC +|int|floor|float x +|Renvoie l'arrondi à l'inférieur de x +}} + + + + Nouveau Développeur + 7 + + 29 + 2009-02-02T00:31:55Z + + 90.9.192.151 + + Ajout de la sous partie S'inscrire + == S'inscrire == +* Créez-vous un compte sur [http://tuxfamily.org/fr/subscribe TuxFmaily] et adhérez au projet gruntnetwork +* Créez-vous un compte sur le [http://wiki.gruntnetwork.com/index.php5?title=Special:Connexion&type=signup&returnto=Nouveau_D%C3%A9veloppeur wiki] +* Créez-vous un compte sur le [http://tracker.gruntnetwork.com/index.php?do=register tracker] + +== À lire == +* [[Prérequis]] : Un peu de lecture pour les vacances. Si vous ne savez rien sur les sujets listés dans cette page, vous risquez d'être à la traîne. +* [[Conventions]] : À respecter, pour un code homogène. Si vous avez quoi que ce soit à redire dessus, faites-le vite, avant qu'on ait des centaines de lignes à reformater :) +* [[Environnement de programmation]] : Avec quoi on travaille (Emacs ou Vim + gcc + qemu ou bochs). +* [http://tracker.gruntnetwork.com/roadmap Feuille de route] : Qui fait quoi, Quand, dans Quel ordre. +* [[Liens]] : Quand vous ne saurez plus comment faire un truc en assembleur :) + + + + Affichage Graphique + 12 + + 67 + 2009-03-04T15:14:06Z + + Jsmaniac + 1 + + correspond pas à ce qu'on a fait + + + + + Drivers/mode reel.h:int86 + 20 + + 54 + 2009-02-11T13:40:21Z + + 162.38.218.206 + + Nouvelle page : {{fonctionC |void|int86|{{dec_param_d|int|interruption}}, {{dec_param_d|regs86|registres_in}}, {{dec_param_r|regs86|registres_out}} |{{param_d|registres_in}} est la valeur des regist... + {{fonctionC +|void|int86|{{dec_param_d|int|interruption}}, {{dec_param_d|regs86|registres_in}}, {{dec_param_r|regs86|registres_out}} +|{{param_d|registres_in}} est la valeur des registres +avant l'interruption {{param_d|interruption}}, +{{param_r|registres_out}} est la valeur des registres après interruption. + +Cette fonction n'est pas encore écrite. +}} + + + + Modèle:Dec param d + 17 + + 52 + 2009-02-11T13:34:50Z + + 162.38.218.206 + + d:{{{1}}} {{{2}}} + + + + Modèle:Dec param r + 18 + + 53 + 2009-02-11T13:35:32Z + + 162.38.218.206 + + r:{{{1}}} {{{2}}} + + + + Modèle:FonctionC + 5 + + 15 + 2009-01-01T01:08:08Z + + 90.14.26.225 + + == {{{2}}} == + +<code> +{{{1}}} {{{2}}}({{{3}}}); +</code> + +=== Description === +{{{4}}} + + + + Modèle:Param d + 14 + + 47 + 2009-02-11T13:32:45Z + + 162.38.218.206 + + d:<code>{{{1}}}</code> + + + + Modèle:Param r + 15 + + 45 + 2009-02-11T13:29:35Z + + 162.38.218.206 + + Nouvelle page : r:<code>{{{1}}}</code> + r:<code>{{{1}}}</code> + + + + Environnement de programmation + 8 + + 27 + 2009-01-06T11:51:51Z + + 162.38.218.206 + + /* Tests */ + == Éditeur == + +Votre préféré :) Personne ne vous oblige à quoi que ce soit. Prévoyez-en un avec indentation et coloration syntaxique quand même, nano et cat sont un peu rudimentaires de ce point de vue… + +== Gestion des versions == + +SVN sera utilisé pour la gestion des versions. + +<pre> + svn co svn+ssh://VOTREUSER@svn.tuxfamily.org/svnroot/gruntnetwork/systeme + svn co svn+ssh://VOTREUSER@svn.tuxfamily.org/svnroot/gruntnetwork/applications +</pre> + +Voir [http://faq.tuxfamily.org/SVN/Fr la faq de TuxFamily] pour plus d'infos sur l'utilisation. + +== Compilateur == + +Pour le C : '''gcc'''. Car c'est le plus courant sous linux, car il gère directement l'assembleur (syntaxe gas), car beaucoup de monde l'utilise donc on trouvera facilement de la documentation, car il est sous licence libre. + +On utilisera la version 4.3, de préférence 4.3.2 (c'est celle par défaut sous ubuntu, et sous debian testing/unstable). Si vous avez une autre version, pas de problème, mais en cas de bug bizarre, il vaudra mieux vérifier que c'est bien le code qui plante et non pas une version bugguée de gcc (c'est arrivé par le passé…) + +== Tests == + +'''NE TESTEZ JAMAIS gruntnetwork SUR UN PC RÉEL''', à moins que vous n'ayez pas peur d'un effacement de disque. +Je possède moi-même un PC avec un vieux disque dur vide de quelques Go, ça pourra servir pour faire des tests grandeur nature lorsque le projet sera viable. + +Pour les tests nous utiliserons [http://bellard.org/qemu/ qemu], un émulateur de PC libre, fonctionnant sous linux et windows, probablement sous mac aussi. Seule l'architecture x86 sera supportée pour l'instant. + +Lorsque nous en viendrons à écrire les drivers, il sera possible d'utiliser bochs pour voir si les bons drivers sont chargés lorsque la configuration matérielle (l'ensemble du matériel disponible sur un PC) change. + +Le démarrage (boot) sera assuré par [[GRUB]], installé sur une image de disquette vierge (un fichier de 1.44 Mo simulant une disquette sur laquelle seront présents GRUB, gruntnetwork et rien d'autre). Cette configuration simple évitera que d'autres facteurs de causent des bugs. + + + + Test fonctionC + 6 + + 12 + 2009-01-01T01:05:50Z + + 90.14.26.225 + + Nouvelle page : {{fonctionC |int|floor|float x |Renvoie l'arrondi à l'inférieur de x }} + {{fonctionC +|int|floor|float x +|Renvoie l'arrondi à l'inférieur de x +}} + + + diff --git a/download-website-script/cmd.sh b/download-website-script/cmd.sh new file mode 100755 index 0000000..ef90694 --- /dev/null +++ b/download-website-script/cmd.sh @@ -0,0 +1,22 @@ +mv localhost "localhost_$(date)" + +(cd ../zimmer; npm install) + +../zimmer/wikizimmer.js http://localhost/mediawiki/index.php/Accueil \ + --pages 'Accueil|Affichage_Graphique|Conventions|Drivers/mode_reel.h:int86|Environnement_de_programmation|GRUB|Langage|Liens|Notes|Nouveau_Développeur|Prérequis|Test_fonctionC|Toutes_les_pages' \ + --content body \ + --remove 'script:not(#random-script),a[href*="action=edit"],.editsection,.mw-editsection,#privacy,#about,#disclaimer,#p-personal,#p-cactions-mobile,#p-cactions,#column-one h2,#p-personal-toggle,#globalWrapper-toggle,#p-search,#t-whatlinkshere,#t-recentchangeslinked,#t-permalink,#t-info,#n-recentchanges' $(: ',#t-specialpages') \ + --template template.html \ + --style stub.css \ + --no-default-style \ + --verbose \ + +sed -i -e 's|./../data:image/svg+xml|data:image/svg+xml|g' localhost/-/zim.css + +cp localhost/Accueil.html localhost/index.html + +cid="$(ipfs cid base32 "$(ipfs add --recursive --progress --hidden --quieter --pin=false localhost)" | sed -e 's|^|https://|;s|$|.ipfs.dweb.link|')" + +(printf %s "$cid" | wl-copy) || true + +printf \\n%s\\n "$cid" diff --git a/download-website-script/localhost/-/audio-ltr.svg b/download-website-script/localhost/-/audio-ltr.svg new file mode 100644 index 0000000..cbcd07a --- /dev/null +++ b/download-website-script/localhost/-/audio-ltr.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/download-website-script/localhost/-/bullet.svg b/download-website-script/localhost/-/bullet.svg new file mode 100644 index 0000000..35c7781 --- /dev/null +++ b/download-website-script/localhost/-/bullet.svg @@ -0,0 +1,4 @@ + + + + diff --git a/download-website-script/localhost/-/chat-ltr.svg b/download-website-script/localhost/-/chat-ltr.svg new file mode 100644 index 0000000..1424c5a --- /dev/null +++ b/download-website-script/localhost/-/chat-ltr.svg @@ -0,0 +1,4 @@ + + + + diff --git a/download-website-script/localhost/-/document-ltr.svg b/download-website-script/localhost/-/document-ltr.svg new file mode 100644 index 0000000..ee318c6 --- /dev/null +++ b/download-website-script/localhost/-/document-ltr.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/download-website-script/localhost/-/external-ltr.svg b/download-website-script/localhost/-/external-ltr.svg new file mode 100644 index 0000000..ae47a02 --- /dev/null +++ b/download-website-script/localhost/-/external-ltr.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/download-website-script/localhost/-/favicon b/download-website-script/localhost/-/favicon new file mode 100644 index 0000000000000000000000000000000000000000..49913f6a45efc9a6e9bc101981d072992dd91d45 GIT binary patch literal 24954 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 + + + + + + diff --git a/download-website-script/localhost/-/headbg.jpg b/download-website-script/localhost/-/headbg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5491c6e4acbc576eb5397d1091fdd7ea7e03de00 GIT binary patch literal 7881 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 literal 0 HcmV?d00001 diff --git a/download-website-script/localhost/-/icon-chat.svg b/download-website-script/localhost/-/icon-chat.svg new file mode 100644 index 0000000..019a5be --- /dev/null +++ b/download-website-script/localhost/-/icon-chat.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/download-website-script/localhost/-/icon-globe.svg b/download-website-script/localhost/-/icon-globe.svg new file mode 100644 index 0000000..d64411c --- /dev/null +++ b/download-website-script/localhost/-/icon-globe.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/download-website-script/localhost/-/icon-page.svg b/download-website-script/localhost/-/icon-page.svg new file mode 100644 index 0000000..fc096d9 --- /dev/null +++ b/download-website-script/localhost/-/icon-page.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/download-website-script/localhost/-/icon-search.svg b/download-website-script/localhost/-/icon-search.svg new file mode 100644 index 0000000..234f725 --- /dev/null +++ b/download-website-script/localhost/-/icon-search.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/download-website-script/localhost/-/icon-tools.svg b/download-website-script/localhost/-/icon-tools.svg new file mode 100644 index 0000000..22fdbbe --- /dev/null +++ b/download-website-script/localhost/-/icon-tools.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/download-website-script/localhost/-/icon-triangle-down.svg b/download-website-script/localhost/-/icon-triangle-down.svg new file mode 100644 index 0000000..3e69dc4 --- /dev/null +++ b/download-website-script/localhost/-/icon-triangle-down.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/download-website-script/localhost/-/icon-triangle-ltr.svg b/download-website-script/localhost/-/icon-triangle-ltr.svg new file mode 100644 index 0000000..2c19c47 --- /dev/null +++ b/download-website-script/localhost/-/icon-triangle-ltr.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/download-website-script/localhost/-/icon-triangle-up.svg b/download-website-script/localhost/-/icon-triangle-up.svg new file mode 100644 index 0000000..7dda9e9 --- /dev/null +++ b/download-website-script/localhost/-/icon-triangle-up.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/download-website-script/localhost/-/icon-user.svg b/download-website-script/localhost/-/icon-user.svg new file mode 100644 index 0000000..0fcf213 --- /dev/null +++ b/download-website-script/localhost/-/icon-user.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/download-website-script/localhost/-/magnify-clip-ltr.svg b/download-website-script/localhost/-/magnify-clip-ltr.svg new file mode 100644 index 0000000..574635a --- /dev/null +++ b/download-website-script/localhost/-/magnify-clip-ltr.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/download-website-script/localhost/-/magnify-clip-rtl.svg b/download-website-script/localhost/-/magnify-clip-rtl.svg new file mode 100644 index 0000000..31176d2 --- /dev/null +++ b/download-website-script/localhost/-/magnify-clip-rtl.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/download-website-script/localhost/-/mail.svg b/download-website-script/localhost/-/mail.svg new file mode 100644 index 0000000..9a33dce --- /dev/null +++ b/download-website-script/localhost/-/mail.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/download-website-script/localhost/-/video.svg b/download-website-script/localhost/-/video.svg new file mode 100644 index 0000000..d683adc --- /dev/null +++ b/download-website-script/localhost/-/video.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/download-website-script/localhost/-/wiki.png b/download-website-script/localhost/-/wiki.png new file mode 100644 index 0000000000000000000000000000000000000000..49913f6a45efc9a6e9bc101981d072992dd91d45 GIT binary patch literal 24954 zcma%hLvSt((`;Yx%7^RiBsK*Q>pqeiOZ53I3`|or^bt*0 zO>`tM>1}cK?Nqg~5jwh=xLBeQkgygQ8KP+RA9Ew;>upND#w!1ST-Hrf_fbv%&pAK+ z`IU;#f2wDE>U&*xclcE}fC+*PQXkWV>m>dr$^Wn7Q4{Im_i?zs-%k6_@P|I^GTW}> z_Lk&0VBp|^6wrc2%Dl}|UPpumvf=brWtu+iE2TWZ&2#^HMzKx+aJjOxHcZQmqV#1 z{6WnSaDq$7?!z|zt7!T;7f~Tna<_;cu)GB^p3*WfzNe%zSD>XuC+WiY<^7755!Kt` zDB|?*@=X zy!>k4y2WAbZXICk6j;+zNN@PG5`^Ph6kk$^n)z_I3Qou>uVW0KA53K z)O!{JR^fAU>OqD8U@$ike;fkbv^!P%{vweKGa=fvI#Ke+Ab^P+?@lMcodR{YMr7A` z5%fIV2QLmoN@bx1D`m@BZrL|~UV_*Ie*glH9$0|3S0E;Q0!;!Lfgphee+U8Z7=_Px zTN;7Yb)CfBj^hff^wWB43sL}ZBX~!!!r$B4YHQBDO8b_Vp~5rWV5Ub4xPKMNv^3(< z=kIEM^)P6Gg|*7$MD|^_{Y>{`1}wYVeAQYEMQN?NZCV@lXYE@M14VX1x4`3MUWg6& zp6vHqZL1xn@X5`;5q>`f0Bc`{M+c#cuYg|@I#*7Tg+fH%m?{AUth!HA%#F|ST3<)a_2&^J zRPvBr0Moa}wzx<7)$>mTNqy}G1?qZ5YFfXJ7S{H|gz(YB`ajAZcF^^T?<_^kkWJi7 zR;#-Fcv1mf!vJPoa#qPS5XIzaHb(*LfGfbj~VdUu)km zFon|Ua1Y230s}}k=oKX3HS~<3ZT5|DQ|GPn!&}&sHlvO3xNKn9F7ys)_chf04&rh^ zXa6q%y>+YaHsEm(eAbW9NAm4blMwT3X}MH%*!=WUVCie5sbn?Z&d%4-!B8t#rL1EO z?>pj?pbhd3rZknWVe{q_(c!+X>+HujAgEA9nolvtB+zCL(DieBv78M4`;*s5TJc;x zd*(~`79tI1FnC{;fzIKR-|IoZ@*-%OG9JpS?`0vlWl zCIC+dB7m5S*yFkM83APFLoU~+0aWsvg7`I8@d3*yP|9|{$Qpx)-@~WXY1HR^e<|BN zcYAAkKJ<(CdHlJz%ldsE;&#WY_^@WbeTl)TT4vuj{9+~k(bpcm;&eEK>k#!}rUZL5 zf(N$!JjaQK5iw}#wPWHw_r=Y38IjD#Yzg+lqxH#U6xp87SB<;xVll(Z;rvRdiMz+4 z%A*)}{k(SVwhxM^|NI1BC2wR1_qA4<8Oa4u8WBneAZ<9VIGg8o-V79Y$P}%9xbFOB z?0a16rs)2sm@2xd^BJXg*KWt~8Vn!Y*~a^+Xoq5g#%+%M=W`s~v=nOb-C6-|I@Tx7Unn2l;pUH=`AaS<9F42iszB{1Sb!5mF9 zeqf_jiRz1%#4*cCVfbt$1aP!;W{v!)hCYE4?LM6nJfx#m%y&QC+FoFv)fofu9K0G! zd(2szXHN%02!EalEpr&QI7m$tu}oew^zP>+B_jmo1=9enZcBT&Kn6c>56Qpo_g6#H zSD$J;deo`@HZ@>We>#7KA$$u?V*qi-(}?u)ugrA1B%0fhH;@h9|YDL5C}h zPa3?ixVFu5gqCrv$id>oI7-GGz={FyXFBjjh%N1>HYDa{J z*}FLU&i(O4YRaCe?s66AN&sSYgDLlg`bVE6LG!0L^XO4L+E#6IuCs5GzweM+tuK=< zV0TUP_U=6Mz6p#enpN@1p>{?8Z0m=a$Nz~!y~ii)hUas8(+cGJM^}B%@XOuGpy zUX(D;F4&Dm2|U{_&dF@6#@0vV^L^lT%iYNa7i`b2`MPE2w8uTwwL!iof6gSy@LTS8 zFW_z|2~nVlV~?<*lQ?sUk+bLLZ3(`jpVP0fz9Pc4Bm5pLr+vKV8va5u9yA)(*$XIx_TC&7%2WC7DdSjBt%Fugxf@zdO9cl9PQ;`_G8YF?)cQw}mj@kXrP z`z&QfJ=a~#V4ls|i#`9xo8;{sEyh_q*(CQ7dvgFW(u?0~GUiU-l55NOV{TiP)6Mfp z*uc*K)B>U}*4x2<+(>C%m~nTsBwg@K2dHk|-iAvTdXk)*eijwnc2BdfDe~{$Nn60d zbH9f&aWrO`9#P<8@P=McCqi2-_7!s*w2b$fUB~wObb4H62&_42=8j;|GAX3Qdp|2A z+<*%v=FES5O#s?Blcb~q9#24h5CvxDsMV}{$KqljHBQprCArR%J%cFo7|6@>n4 z6MoP$ll&aA6Ht$rFLi!0GEFCViP=H?%B5-6+c@A;>av>uGJ3dmySo0C&Mp=Wd8G4N z8lVMFG-XHc3i(ge zkq>6f5egcc&OG=3@{dBMluGB@Cqc(Tp-JCAyTc*;P%uJ-3Gzc+d)=5hK> zN@=Rzl1=lKhMi1*XSe-Ba?6EsvKraiYhK%ybQ=NYUB7x%QMZ>q|UxzqZ%3H=}me46@jKGc--Xk^gk^Ss;s}2XvYA zn+6hBSWr& z%ZeQIREP}Q;CRb<7*f|ahsVn?2eeLz)MHl(>8mH2~=jQKl5 z=yetW(XKu{<@a=5mM2N5en}6gV>DelbdExXE<$kP5Ql1*GOh(CSK=URr?v>Fb6S|M zmx;&6ZU(&(_fXs#?uL}w#F^w1_POsz!9)DDKgFxwb_#3A{Mb#ET;1L3e9ZLFM^|)S z+g=Vj>f3WAWM@*PC)hw=TqHyq=hn_;w$tHkeLypWEuC_b7ghF*UAa0g5;-G?geXGk z7+F%TLrGfrOKV#sT~fp(v7e?QhPM#OKmTOByhUlZu1$h1EhQgL_4WSBcB{MAqKHn5RgKFk4my|I1y#wHm{`FbbjGBOujq5!M^R7d3YMPz zu$WI819Slt*C3zEPBgdyqGPs?M}QL~X_zsYiwYJ7q&wf>6ila+N|U@wx5ChIMZVhLIQ#F zhdTB9&%`x$?~Y$Rzpd~ecaPnU+uOx!Xhdp7FZqQXK_ZLNS-4t1U-Uy;gscHXzg(v` z958MxQqp_;EOx3&=@g2-Gb9NlnglvdtxBfVL%nz>?tB$3n+2KTR8lB5FMbM41avec z%Umm@bi5Ol48G(04x?udY%}JucPPq4ouFnaSdCJxJz|!al;|2!Qr4L0Y_%x@(vqzA zf0*GOJFO%Ra)-|EWU9%65u?=kM|c8G45O+f(zm~pq)gI`2oGA8ONgsuO4QJx!>J#J22e)2X__ z+1o`z{YL*C%zzKe7ToQOJVSlQg+I5M9a%7n-fux9tQaiPWz)ka+&q})L?vykW6RpJy$`sj_D(66@ zgPsC&W>6&qGPxk75R^%speKLQMwo*ph#A#^V%8?8LzAg!90C0qH|+shiits^uX#$~ zF^0_NO?LX^N2w0dlmx~*h#Yb(j2J@KPesLvKeU5OI6kjC>^=dp4RL9 z1pvdKB?XH8gI9Sf3olU+C)SbAbP9L>x*EJTQ-kuYEa-Fl_qGf7*xPNABPzaj}COn1+b;z>`8;kcTiFc_7h=V#TpSUceMgZ;+GM z8zP&NiQ@VqzEbQni2MM3!5!?E_ z@a9VEn>5=-M5wxBo@949*3pC|9!eWc+a%$7c~TxniDHMg)RM&N!QD07uB}Pv*ZZq8 z^{&^N_9Cm+p(%CAWlL<_LTG~)S$s|H z0@)n5ZGK6tkWN%vt$Sah<+1W2#8xGV_N4BqUhGx$Fp-e1p4E#?VEV6->2e6r5EQU%=_-pNak6p3T{^(+H=l7Q9 z5ji-v4&Y-|aoC#VGqhRKiDt%@kS1duGPT6xSoYimLb0Ih3#3z)qQ5UCcIWmw6_PQv zU!0RXhWMi@2UC1Jag=MRUl@&F{V})hptlOJUZcsX1{fN z>i=vq>L6<)gq7{4-tm#`dvQ^K_0tl9*m|YcBxv=g9Z>_;Hpm#;{8=(~4ZPdhEZ0Sm zEIS2Sd^f+s7sWFa${SBb@Wq_Y;@|D##Ey{O@ziWCHIIFsQwu#LH5y{0)mRfIIX_$3Z_eJEx+lh@p6#)<;Z zLE1@cuPkRpOuDQ5WOn{P8mlCmqlHzi!d=(Y=vqV% ziNa7(nJ8BrMV%J*ku1{Xo1|$yA3hf_fjREbmj#Levm>qg_5Ao;Ju< zrMg%E+ZLzyduu;I-&m5r679p~s0*#(bnTS6LiN;5w>2P$eRw7}-DNvTm&@C0Mi$fV zU>Q^4tfKu|oV#bi^^q0Nq?R9W*sq^P{2VME?SxIC z?NqEAh?*v{L!!kj{&OnATto1?7E&U7toVn}*Jdi#S*a<^SiHv5QuZNKHRAp3)gI;t zkVym$i~9B4Rrz(^-b}0!51j;BUJ{)7mwz%)m!O}ynmx&1698v_pW=S^?cq#opFI5> z`zfZs6NJI!^w}3%?~BTnP}|Rg>Zpo=ckck3aK78LR&yJl*L}FLw#)TguWere95Tn; zt1s=&OyuvQYqFdQ(+m66v#_`<&6>X-95d=K*u&;u(&~Blt@SN8;P*i1^g}%!o>Sb2 zVc+j0-E~g8r>IB`@o((1&fy2H`D3&G6Y~XKkx*5JJFa2u@jv^+p0^M`P!!Z?C_qa^LsXU3>Als=<$Zhv%-Tc(6>H&R%a~aZNbn9 zC*48na88fuVjxVslU^nH}{8*E}m`tIBQ6JSEB#K=dQ7) z|J#lC$)U;Bnf_zzV<#lt zW`2=>Jzq$3aw~4rkZ#}c?(auQCjgf)x!q1jbAKsqG1;ZhX3yyv`1WZUV?t-2+S!H) zBGmnSrYMa}wRZHvIV4iplJLw+C?1y2v0D@zq||n99Y8X(nYNf>m{vwy|eNMB|aH!oXI@cncK^zWAdUPYEjDgvj#^3|1? zv=((rS9x+7g-)^djMEUugfQAQQ$(>5&oGh7SF3>hrDi-tlnN$fu2xTC5I6cAKgA6% z`Z%N|C!~qnEdNZ(U9mc&6RomP7G<4kU3DaFu#Kqm}+)>D@#KyKMj>ZWFghET%!1p8%W5ag}Ls=l?8WW&f ziX1qKL-D6%6Vv`$z>RCm2f~3jw z!H}`UfYqA6-(`qW$zI9lpiFa#LPtI62}r`+yavZRDTbtgUZ)G5zvcc(I(43|cDt=z zDJIN)y!G2}c>=H>4a(3(WOLysl2<#-#txOqtvRp=+kxbkrne`Oxt)-9)#R7%6gIr}G0z$hf#A4Kj zz{;F6P*2>P0VMrCV{~x}g@rM(E7?$6#i1f6V4K5c+y+JHvZ^SmF5(_Xaq$`W2UKZb zOW2_ygUAI}^>?KXg+Z-ujh0=%3!{V=z2)36+FGS0>!mI-aq67765;$jyvFYF)CArQ zBgMTrt_)1;aALw*hAFoAPUJ~8YQw~0vC9aWXi&745~S~k`bMA~bn)|?0Hm*m&nbhyU0+ony@H)xKF|4|pXc`}YJ*X?3aHQ1CE#Nl?GUtU*qS7U0^6n=wbGMFnS+4wt$@oL3Z zbnre`4weFYOi@yE(}{&shoY$D}Br$2mnur`aNBEVM;xe)hOh-w*6+XUr~V)kxM3FFh(w%fx`#{Jgw zJDlDf_>A9Ve{{q!f7{iJXq4BOrK>>)_Z?NX=xWb#Ee05wJUW#~zru0yZa%LV0jXPf_6cQ=Fg^3@E5*<{}XW0*tk%lsnl zD{t4s`#=TuXsV*Gw&&$Jo7{o3_K!N;7~ zx1qu-1J6t762%!#ZBkQur!gdI9_Tqe_|o>Fp4eJy;(@*!4L^Dp+Txj^>c>Y$UEHqg zo5fW`2COq*w4K#t;Ky*~=Obi)4K+G_KFmb!Czwu*n zwK%R@b-H`I$V@OJA6_i9DX31^Q;H8V8c+p`UHip0evvWA{&PcFJlvM2o11+usDA6t z>I7I&FR|F=6s^_T86~lhED}-?Q!I~cW98{YP>BXfWb+NsmKB+-d*c3ZRy&POt)o|q zaL<~Nm+~z)6||NOCPz#$hAb(IgMZxZx5735vh?|ZoY|F@$TBxojXjF*j>uY6MrF@d z!jGoXH2kb82iGY?gC5Cc;V0(^$PqOP&y6q)_c{qyd&E1hJ11ntTutVV+~RGWq8>td z(^pbD=106t9b=iIkQzs{a%1n8MqqkNrTi%)Rl^WWwB0d~V|*{K47j-B9VdFGx^SlT zyCXFP>Vh)BF6HE&%Kasmn|?CW*giV^s>&pefhg1U;>`EpcTx+K|FtWa*qga?`Z ziX^%JI=zbGXdcxtfaB1QAyD*%MqWPP>`Jd90-*$3fg@BWh=>bxURH`jFC#n5Fn3rEd3rNyY z`HyF$uPxGD=Io@@x@XW0O>Sm5DAH?e|F#Sp|2{4Fl~0Q7FDj!Im)Nw{s<}%MMlpeh zGFfI2w~)P}QiXb^DKNQV)f3x+=#W4WM+yIw+410dxHH$vHaY4HEKb8con1r0jz%qbb?X$FQBLRw&$5v$Q=$HOfaE&B&;3CldbFot$X(1}pEJE(f7+|bLA*~~>sby|w?*n|GiY`PE4SG%Zj&LJm&bx&)65wYWWif)VNqvJ0XBUN*g+1ar8;jy^?>swC) zog30IRb?Z?;1nJ;Newbm8B|_Tq)@u@2-F%)y-TT71vANbG+fb_Mr-sPlILHvCNR_F zVwI3+dWQS~8CgH7@)U?@x0IxgUPjmFE z(RjR>iE+NVKLXiyKzj?t$~?g_5o9LfPYgoeCOf-MT8IVOZIn=>Pa;jJip~SOrOx zjJ|wD3qztHCPa~mYKk=B#MR>k;wV6*6hoAm6@$?xFuremeF=9Z38`vn#`k%w0KAO-|`&D*sRU_!hCR z)#s{4+xg>~+xjy0UD%;=`bqA#^)k^eQo+I~IF711DbiRk8bBGRU#JbPddPQqw2DD zP+vYsnl--S%A_9>70bm$?4Xu31)Y|#gd7En>8*(v!rb^VNGNE9vL_TASD3U*>9Q1V zgUy7~uSuSs|BsYqC3N0}nx z2c|N$+LGbHbPS7&H$^q%2`gCp2af(h(E5Y7c*XTN$Z?(vcaFt_cL8cge^Y#? z{7^?=n$-4l$)|NE*-PLx+5m9cX(g!vuh_z{wBFJxvk>}HnK1zk%tcUXIW zk~}zRC2yNkcI#4wXq~Z5OrrrRp&7)v38?Jbw@nfjNnl#YPY(%eh&)f<__Uvpk7{q+ zn=)fLQM*n21r?Omo{eORo#{a zdmYS&Lo#;z-!OGxdCR!Qt1sf1c3bbz5FxFTS!%{`{;EW^3vxo8<`?@e5QT0u7Fh{? zIIwz+2E~&iL~%V6NgG-S8Sz_dr&$+J&`~WABqLGcX^c|oLL@yN#oX~+#8JA};s1?f z!-+S-dX&7{$N3wD5=@aVP33`M)dg`B6)cxDj-8Jp_5!qWb)cs}Kh2~<3X9TmQ0`Nb zf}lmV%Al_zf5b-Wo-KisWPw6kgry-Z0k4lJcL<@0x~ZNo~)uog1O1x)|aUF-d+0ha%YRZ z#e*ezGYNR8#W0{ix>dYV>}ZSgutuRW@Z6nR7L!8Fy&8<4of!A~)zrK?)?7=UE&ldC zUTh|1=HCuvBISzcH`96scr34b#0xUGRU0gm%amgqq;uaL7~VX>;#LiQb^g(*Ivk4E z0N2vOw=m|@6zt@?D_BytXUMY|Z?CZ?v6E}vGfIIIbQI&Z#r-Fj38gMQpp&I@f*qro zkk{`&EVi(tr~?J6SujDZ<|7q5zscUsQ}U1Tnv;BMg?GX1t3g_T%#o#phrA303#I5h zPq}zKC2|60Wyj3fgk46P48+1^jI>hLEEZGi43eKq(|JfU79s2uQ!_zL!_M-<4|JoA zwk}#igO97r2Qk6&?C+ysd2Oh5f%|D`VxKSs(Z5^U8v9?h8aXjsCAeOp6^hk5l(pG%4N$%^t6<96~R)jf(23@No*cyBh2b z6HY^x&(B_c19w111mN>BEX1J&;cj>jpBHs(`@MiZFJQ{%g+kkkK2}MJ|E7?FdY;Q^%5K9mMTNAarGRAq zpbr;J-^Ik8I=KHk<6!>xt@)$6UQoea79Go`KAmMd_t&57U4qFMVCgSTC! z$gS`O(lQUY0HnUijcE^-q@87>1`qC^;QeZrB>wLdH)H2-(cmcI_Y&#v^AT-CxZrc$ zA*es~IHTxqAa?JgAg>@RlhN{Ep4l&X{igp%_x!H+47nk02jDtjMl=8WXKE_Gto6y? zMR@N&-&%1zv>{U>z7jW9Jm9nGc*Vlka>@%*eQ2?fJ#IlSpNx-v;r@f?jOpf%w4IE;g{kiuo{rIE3 zyaG!2_4()}KJP+H;LbYtJ9_^q^JCCtbKS;7Go+u5&MHJdN{K7>hAX?*wpOJ`^{_J`ZY7Mp1SI^ z_PaS(W3aWG4ZJWwOV!gP?oAYuuCf@mYE$Wv;Di0fRSOzS=p_(!@uULnzS%9?EsO$k z=jFOh_%qgeu&=*mVV}<#u>Ub#HyO_|>Dm?3OkJt1_b^M||8JIiu?pQK+2`&W@9K_0 zFW~BC;~L$={glGJqo-EcE`(^Mb~^a(ge&6fnfD*M1->RBzvBgzc$*}AUvh_@tBI{)y70a$lYCr2+OwdrXbCz zMe;S7mevGT^{`dJG?Xd%O*p_iz`pY=Er5@)GtJ>!(u9-Q4+yLC^t2BIznLXADHf4m z!ftIE@Uunp(?alNYth_y(S~-NG|(r*qARt?T)VgDJ|N3^wavCg#y6CT=EQBCM`%T! zMMxsH)AOnJyGXL299MaVRj!hF5l){KeW?FDkICjSxNaE?75z6^u}jtXJGEm$c%v=; zZNe_H!q|OBZ_hV{Qm?@=UV#ThR_zH2 z!WSoLv@){f71qPuaA*DgfRPMR|Eb_H9rt#{@93rG^V`80@nkIdl85HWYaf}}qQ0|6 zId-}Xa&5Z5*LbxDHekK;0rj`ESTz7_)P5HE8Dl{lw#h9OH1J*rw@SBS?m9o> z%23KISdnsrkhlV##Ieu?kr+;0n5Ql610Z=C#2+9Lu<)(ukn^$Sw}rI7zWYV-QEOk;X~;s-NOqC?!F<1{QmhD_jlc z#zQH+b^t{vvZ!5Y1S=x7d=?OTb#+CAjVI14Y*99_zN!bJ=8YN=jlFHP(WlNLko+f` zfQPohHEUk5XRP~uPBKMwZ5QK_Fr#!j{1t4nFmP{@-inhATemkrAf#M?HJ|A7zgAt*Xe2^30dE^ z>l~&S=5bP?2G9|ujkS}Yyv^cy;BAbVITbmCj(i`5Mpqbr<*o|X)kk2_{XIr1_EPvw zi94?QA3NK(O$?vsP``OoqZWsh9%ZE}wOR)3wVwX!TAGpMuJNeWWa+rA4U0;;yPwk& z`hL6aaL@u5CidCbK>c;lSsDs|lPy#EF$N#&HnWPMZ+AcIPD+!FghVVcxw}Hb$Mf(E z3jw_3bXL#H+YYl-PaZk8*SH7&4r43B}Jkue<;*cP{gtpV!U(t(snIAG>BiK3s^Q zFg`cnc3s%Oqx?r`e_YWqTvVCnKgP->M@s9jS@<*{6i zLzA-SGFTzBb&T}OCy5aJIIlHS3O<%5j$hPwM6b7=8w0c4`<-B?_}3woD1Ygd7=Uy+ zN{!4=PJ3l13j7~Gmm;V`40w23RcR5oS(s>o<+1wS!_w1;2BHY->8jJQS9*eVZzmPI zZ*~uxSQQ`qe@A0B6S~gU?i`hEaC(u-G0t-OP9RCHc|8@Wk7^IzeM)d+eSmUfiqZtf z?w`Pj1e#(3!e)x`DG6lmZ<-Ay1c(s*-;Umnw?n)cJ@8dp@lpIPwr5^6zY6awhXw!n ztR8t#2EfZWo(ucFdtr{B`Mu*7f8{;(TnTvFx<#m0X(O0%aV0RB$iN}XXyt=zfK`#= zMd3lV1nre7oimWYK&#Z!pA%GS$C{=jfUB0A{JI6W=G!GbN=Gzbr8Bs@bLC?g^6hqB zRv^;%V3uw!%nt<(o);Ni&YkP98k`wpZSst*!7o%P2)qZ5D7gVBR29f z@XhO1oAviQDl8wO#$UW`>IYoEGqmmfK#O)DnrAF_9cN(adBN<8c$MJ90`L3%b+RV} zrsYNL^otjB{(}Q{$|`y0G$(zvz~_Z&dL5_(H~-CT8*MxrFEE6^AYt5~$m_3DGb5}gv3BCjqDfB0`eWXdd0eLS2Xef=X?aQdc7_$V)4LVHl%(-K=n5UHaG!i*s-RkK(9yB*HL zCrSi+K`=GQAe$QAu&k5ZWufPF0!F+JgczGMW}a5>*H6LY^lMgqbhNXhaY*ohyed{X zahU{l?ET?1+sew-M+CtX1id1aCGgg1Llh)w@=9L4+=lO=c(+P#nz&0+7Q=w_&M*?v z*q@Jr+rjf^n&Hi-0!g0H-jWpTpuwU;>4d4B|93xL?7KH&b z0V5DPZYn$qFeR0NHk3@3jcB;mB2q-Ug!a1GFB9|jKOK~&@{BoChZBS5-o(pX>wsV>WLFRPq;)SCGwCZ zhOmFGxG~vo(v;GZ(eT$4!M@aDsZ8fvP&4b}5sFk0kldRV%5ocmf&N7-7sa%bu`4^? z55*f=E)&4^%#k8k;>b-{xmpXzLDNtj;)}VKL&84lvQK9kGD%GXNf51EhkwDOW%f0$ z6?L(0o4+_Dw_i;0b{a_(*BqXdVdzGJ2c>|Ld#rAP9Kv-s5cWMd4Lb=np_!?pJ&sT1 z=#2r_@`-ez;(AzMk#2BAAQ=c)7DgJiz*$XXQ^RP*YT+2bcw|J8;j`?K_#sR%#$`ww z43RRTIV@0=k)9~I;g+{>`)b&5vZ4?ecsjuv$eS2k`#I=%j3YwzBQ4m_VCr#Tvp_UJ z7I@xamTa$eue8NQ?^cx1of8UO*Y!;&ci6}eumoNeaYvb*}d(f4EY{o0Ou*o$`V zxdh4Ye(@t);b4n-2qI4gaBS!Sg%_bwH)Mw3Ko7C`Dh@kw32{X>6&}*SVGFm;j|(|O zs%=J`c`{*zpIB2-4En(`zY5EM>A?keaHPs3V;Xl9gOE{$-ibm3BgA35u*2{(!(_n~ zPYfw(68P%``3wliqKoN)Ie?BhqEpl|BW+}+$`GLudxi(WzzB0Yr=YL$%O}dIFM1(` zWTY3S4%&czd_pwtp@jK80v}5ucw-2k4Pia`*lqu+MwJoTg`Yqj!=gJD48N-W1w)@0 z5b8z=MZ&TlR_HvpG{@S`TE^68<5NMPd!O@Y;d#Q)(vWN}-iFmKOi9-W9+@gsJ87W9 zMQ~Y2cT*#;3nz6F(CKe9#mV+N-_rNoqDS0bxJdiAI@zVepUfKu77aXa$wvbe@$8UJ2_^bbX-ML-+h{QR_)5 zbaY%t%EIqB#!M@FxDii^x~MeJv{j_al-QMSfx|B_|8t)HCmEFku>Fqo2qdS=D!z4$ z!RUVGHV{nDF8V746Y5L_Un0xfUDeIe3*s6FQCt#|_z%}i_@{q+s@Vfy=C5uR{b5qb zAF*I4T#UxSOlIL!2~9@wtG3o6C3Ps!IErym65>(^h+;jRdjKF$VajdcUv8kW`UsoQ zkX`twsF1o%Gbs$5duh=!3{8%Z7j5Ey9%l=k7(19I`wx$?lUS^X6+CUz!e*s1eZ+(t z%ehQ!vLg|ka7zqvQriGsyqHGd7R(sPkP6fs^bpFpP`wzQk}0KXDK8KxWY{fI-f~rD zQ)EdeUD6~}OPh|?s~8ZeixL@RCNiEg$au4d4Bc^PuTes4AdB zz&R328UO$w07*naRCPhz0dzD=^`(Eb>3)kVj-N=uOBz5{VYx0ir%-Aqv~UqC$3Spm z>kvFe5oNQebQ5^W1D(Yn3q!Cq2eGnHyokUqgG2&UXP zBLR;mFv%SR6CoDtYcR4UfA>lj@=gIdp{de0JeT`u^5^%$!bNDZ7-V7Qr$3CChMauDFGsJ_+l6P@1-!iZP=OA zRD$n2wZbB&P<99?DN=6?(SWD1{DM7uslUWuOBAG93v7 zyJAoUOr7aLnGiBmNE!=i*FwvbJO;LNz)v9FRfL^thO~#^Cjyjq3YZxZ5h5_ckZ3C5 z@Q-D&;3b{G2{(}b3Gief<{3}e_f17#jW z6d_PmfP~oZ06%ltXJ<8i;?lJvFt!Ee84#=9p>B4AR-l|TxD$m}@0Q;4FceG~_|pjH%mIk+!1X)~B<7)G-VW%ecA{z|ig}Jnts0RD;k8-3 zYZ$Xwst8fkAh8C-0PK{HV5A71Nwq`Rf~acHWFGsT-i8^6w&RJL zx8eSubR#`EjRTM4NTeAm)heK3a7ICujcPfDbhgryPn$VyptPX$FV{q6Wqd>I`f$n7 znhIe6bw=GuT;JR@mJ{r)bt{~Kw5CCNM#gJShx+wx;qb3->#5kTv#WL1fr~ntvz?3Q z4r1E$EF6a;j0qeQiW!sg)$W}p92n60>D2}C#IxJQnID*(`1+OEmRSo1Z4d+7&!SZA z#fIfJW-ZE~FxU+yBv`T;+7zLA3|I^%N`MFkOd=qn463bKu?hxMQ%K8zXuHPzPaMQ7 z1Q5Zlau7RZ z)be361}rQh8uH*xv7xImz?0CW3IaU>cV>Whe_|T8JUfV;TLL_CLj_ajIB;9iD%&BD z%NZtR1Z6bhz(RrU!0D&Xo^4p7|LeaYRB8*vqI*j9l#iug5O@=I-2YX|p%hS#UNd~I zk=|MYpm9W_UHx3{8gQ_3eFwP9K#77<1}cantFouBO%K#mywyuVN4OFvSLY|)|w3( zZETXy8`|6yspkdQ{evPSUdHI<4tGGc$=v_)2CYd5m942lLaK`R zFS{Q(G2Q7mGkX42^RT<&htwL5>mx}TH&egiGvEGN9#T`PzNW#rF_o$}`|uc+tqHdP zr66Sl7ztCb=6zWvHyRX^f;C>Kj{uC0acy5k!6SMw*M>SjY&1mgbXM*hPG zyEExo4qOfdJ4awUK2%iudRl8Z8Nf~{^lT5Y%gCm)F77$AP(qXMl5(Mf?5WGr_x$HK zvMajRmXX`r!yONKQ@(Ub|5;jta*o(`dd0MpePkE?P3Hh24zZFVS7y=l&M>#+n32F74QDb={I>E+T4hd=r zaJSY%PhF5YD-B^b2)8HGn`TkbCIA16xCVF_2?Xcl$0vF-aU zBt-*2#XzZQvj1^oyzGV_B!0BlG@u)j%XxCpz{!^LHnl1 zqF0n$8tuo^xa)}4B$Mr~Xt(M1aC||h*B1w_#p!n&1(Lt0Fea|)SU7Wbab~5VMcp#{aTn5DGi%!O13x-J+1_bijNKN(~H@ z8GNRK;%0?L-fcT2!4evj)*51s1We5(8YzjDXt93s-Bd@aIdIl(h-S>2#Wzv`6Pq%m zY*yF)c4%Zq8(;b2&iJ1Ogmyl0s`vcKXAd2nAI`JqU-p|ALwvy*Q#Sngx|iHPKCCCb z^PS0|ja%~z|Kr<<+l3%dRUft!z_Jj2@?+L!!zc`8AVR=Tm{@5rMJNp6C=S&k{&dG= zZHg7@&um59*AKJ<+O9u4zKcR%gvkq=uzjF!#;nO~qm?5j9MN#R9HPMrPWb@caP4)) z)4NKRv$;DzWBwdx^QNb&n7%j#Z6ZWn-BJAds2AfN0oZ!UM3Y=?z8GsQOt3KMz0Jd#^ z@$Wm(1xC;o;A_gr@NEyT^WNBYL0xTH<(S6p{vYCddX^zvF{?b`uaP?;#YPC+b6ZqU5n=E645|hE`s_LoIw}{z*x{AwSE{< zyF>~OVk{U^H2_Fc7OYZ^AUp%d(vTs6a#OV|(Ev&VVHCsih!KG?Rwj#}Qb4)d50-Hd zY^pUPTW-b>41xKY*$IaAPv9(&pj z&A4vGFdi9dg$67(AkqNRz(_;6F;?0(%<~Mh6NcHT-3O&9$dX@gh~>LKz|Lq;KQ`PC z4YOlIZE2V-p}5+29?TgZ7_cir5f1k;e~z{7rB^WTvp<|CFSwG$H{G2tz2}IWyLMZ& ze{&P*$u`Gvpo%zXAN%Q?Zfoaz>Nr$0TTqura&bG<;i-R97P}riun)+ z97wlq?N#$D1&esuB&3dD7{P7#h6|dTNYA7W9WR{kY+1cVENI`CK^kG6el(6_$=If? zdY&-`Mr)WD*n0unwsDi3&xjz5dl(!lBjN3&DQnXK+_t-+nzS*lG|U!;TGCLe42Uv- z1fgR53`H?R-K61e%5W!XxRWxheo)6Z#8UM&76y>UKpA6dF!q@9?Osr``a6#R$N|XI z3p#d#HjU=eatzQiip=p>VfsA}$LM)@Wqk)$Q+-#K-Pr`^>!;_Yb+q#okkdWAs4Sk| zcJnQjZA(@@{NUjLu4&71H<1eVyWys2*{9ERZjwSkMg;$KO6rAwx^U=x-zCKlo#6LG z)e6o$IkWW}KkUn`UN86k+ULC=3Sm&KaFcKtAid*13{|z z+J)ZAd;cKbebQOMvTJ@E+~p@S`sy3=)9$=aAOFeI)Boktr#JrK+TKFF;>z*ru^FS2 zu0$g$YF_?X1;8!!%|D|LE@?PM$937*L)~ENmcP<)KEoRnV00cB>L1)VkXYljvph^g z(MOE)nnaCnw^%5JwoKT^;ytx`Mx>(;32&OeR>^(g%^0Cxabmam-P4AmNkJi}q%wF^9i@klOeSU{i$_H8b$fIF+ z+`Da$G6x{#+I9xb>)wPyky^HG(JV@(P;cv{Lh4usRjmm#44Qx%8(jL3vRJzrf+E{w zVW3Z6>m*vF%oda>Pzhu*MBMQ6%vGPguyoq~N6O1xC#nVkk|!?XcYNsr zwxMe~nfmxsPI=Y(sDjrr8VKwe8>+@x7g>KzJ+CeZTDZ2PdiRXJ4pn{L&=@UA=>~A&I;9X#h>1|9EEc=gxy* z917Y+tc%Fl3HZF(-1&em>yXpqKGc;60s-!NV3vTcCQ#^0>hmwl545&c*`;4dHF?d1 zDpH0|eSr9|0t(GSC{{!{lE}C|`gch2u`fj3E7rt?4NuINHFa7sDU=T`7=nC1tfULu z;>h@wckjw;kBtD$D&;1#j~uaD}#k3FJ>i~aBB zd}sjj!gI6i;?FnjPXKoNJ;moP`1;U}a&V<`D!KuJKrJX3ShmC~8{+tzSI5H!5Qpt+x%2i?327{FBN0^ulu}T-6JP;KWdXx26ox{i z+mmQ&ieSnlZnFK#VEhemX6~!^NEe*po>FiYLeI_&c*weZ{mb=Hd zM&l^U*oXMlw3U0_|CiQt_xb4SSc1kwj&rDSs)6S9cHe*SJ=p}MX87KRqsK4%!Eo<5 z+8P0(PPINylaFgg3+$p)eNU*)E=VDiNN4 zNnhV{YoZcBb#sn^F$Qf6l%lX$Q$5=#Bcc&B5kM@Ug+fm^m)g{*p&$HHWh5#vNkfAu zR*=jO9sEat4HiJa|*u%K;gc}iX;F0`Mw>0dLlVOkTwn{Ff2eQ6XMDr_YFVw zoKqO=OGp~$Pz`O&-3!w`^!A)@;5ZeF(pmp(&e! zj3qQ7SbB)*{^A!}pZN3{*@wUMIXv+B&m>oj4D0UY&xsNM(cK?L4?b2YQcxJn6`8;AeR>3`wnGw86Jm=%dTcRAd-8W*^tP4gz zuaT}uHJCN|uji*1CbO)Go3vW~q`%|zb2o159`XHHKvr<()YWoal7{fp}` zeADfv;nAm}v(3_HoRrA5PL<9J&(q4JR>qPUP*GBd4TYk0j!+UpmTYs@h2=h3H>u?i zfvHF~Yfd)nB_$0i6wEegnnJK;jRn_FAzv!NOLIhlMmCcIAu-%k42P!7eYeE1p93a$ zq$mtWHLQTs1d>Ur8B@mbLqarD_dh7|VQfMGaS*Ba(Wgq~KRpqYJDak6-XiTTnCqj62tl7P@E?<-QljxIIu z)o*Ry-td00_X3X2DZ*7ogIEG9S0;)-_-Ves!LLTSEECBTVM0p%?4QkWCd(;g2&ps# ztChO7(O{b6#pjbzV0K6I5`b8ISXvyolo&S$^bZI`5d(80%s8-&wNH+KnidpG0gR#; zEDS;!16ASZTo7VQNmYJ!UA0)Pl);&Rm&l-8s6r}$z=4*{*lU58*msd*HN!b z!r@cS>E8US|I$6p%{KYy$u0gk@!acW8sz_iax~&1VocC0hAI$#+AW!CQ{|E6;kJ!i z5@F+wPJ1NseQ9=Vaq=qCk;OGJf6>IXiQ2S0tlMgsnL{Rcqm!E;@?YMV_Z`RAehnS zS^Zs^{#$R0`=?JM9wZQlfTRji1%U8Cjf1Z3cD!p~H!d?8v5Uw46b|UntIAjdOhG9E z5d$K!ASwon_jAbBL4>#6o-gH^9E=PHFcw1~5_-7mO8{!5pn_|zEA_2jXP46n3znl1 z#YIR(P^}v5zn`6*IV0sYD9G;bSO>ML-@SIn&b3>s`G&tYrmzy@kBk4icPnO`G;C~e zrN>$L=$tS2y)TLkeRPG`Hd2)F7}Fd9h`A`H?s_14X?sr;w6<_dONvNy2o?Y|M2rG7 zB6N2XF;dWSYGCr}D_z7Y%Id>bAl}O2g&`aacjMO5k}V>+7HInA`wPy~;w?kFg5Th;7I> zqwDK$As{v59C#hvBWSo$&cjc{XZ`*Un*Z+pa{rk3g`+pG5=KK;{B+9z0At(4k7El) z@fyv%Oaa127!dPH7mos=MWfXi{dw)}@+AWvi@=~78Hk9(XbX`bNaSKNYq|>q#Mk~d z?j7!hMR;9^A0SC}wLT1l#Sgq{4``Ux&)k7Y~>4TQg0t|rcOzguD>}d4Cj@IA`?yqj!g+b2Y}B3c)VUeasc?Vrm*xC7tfgT?!!g1 zA{F}FDsS7eGrLwdxRLn3DMc7e$e6yznqrJ@7M%&88MWCPht^H-1^_ea@7V`Hg)!_p z^(1=px+l};t+;#A`EzFS7Y;dqKm5&$C!Gf1XaGk7_yuYNcOCWPSpb)!Mzos&uor-# zedh6>JoiZYvrj$Xo_Em~yh{P}qDDu(7l8S;g(a?oq0>)hH$Q#<)KdV=1MsnWtHS*H zwRYB(d2a$7boJ$vPki>y_D@`OMceyPV=!(9kRH=xL0-2#?=2GkH|$o%vv8wv2Ce_( z04}Io4Fh03fM*jKmtFFec*VL`(z?YS#=8#J&)s?tS^AS3qe4TR@#Fde%KB6La{wnb z#6711cp;HAzwR3l`y_0WShzsG0^rHUR67r4x;M>=??Ku0r0eW~U`qtu?s@JRz>fCRYLY6@V*I zqvd`tfV0O0!w4f(*00lpbJ|VQ)@`WPV~9rZ%xH}V79Z02>to)RJMh6*_6{ES{!Pmp z(s46Ru&F?(1!xLm#%p`{n}{#|9+g8k{0@w>tGs(#vG?w)mTv~&uUadL4GJ_0n4JvZ zwt65tiaH)L=6uTm91r08cRpacmh26^Y9j#PU;uYFD91_w$N&D$o!?pC)$~jy-oP4S zr8WRv4VjhLtsF*)hFD6zm9Y5V8_x09RCG1|GSz??Q#TpyvndNje*OZ0_tag`S^&SR$2X5R zxHDCcFOCK9P5^6A8;-CaxK`Sr0Ivb?-b&>2?-l2Gqf%gsJ-uqC-~a#s^+`lQ zR1LPHeX0bnZW)jOrqr#)=&X`t!=j}dAbQ?#z6Vg7q;vyb-Pp_OmL`W93vk#7%j4A> zo-t0EYA}Ikyd?_48o(zHd-ia6bu8iay0RN(5r7x!F2||6j?3!kXM6o`7WQ :only-child{margin:0}.mw-message-box h2{color:inherit;display:block;border:0;font-size:1em;font-weight:bold}.mw-message-box .mw-logevent-loglines li{font-size:90%}.mw-message-box-error{background-color:#fee7e6;border-color:#d33}.mw-message-box-warning{background-color:#fef6e7;border-color:#fc3}.mw-message-box-success{background-color:#d5fdf4;border-color:#14866d}.toctogglecheckbox:checked ~ ul{display:none}@media screen{#column-content{width:100%;margin:0;padding:0}.mw-body{padding:1em;position:relative;z-index:2;background:#ffffff;color:#000000;border:1px solid #aaaaaa;line-height:1.5em}#column-one h2{position:absolute;top:-9999px;left:0}body{font-family:sans-serif;font-size:x-small;background:#f9f9f9 url(./../-/headbg.jpg) 0 0 no-repeat;background:linear-gradient(transparent,transparent),url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 xmlns:xlink=%22http://www.w3.org/1999/xlink%22 width=%221941%22 height=%22220%22 viewBox=%220 0 273.897 31.044%22%3E %3Cdefs%3E %3ClinearGradient id=%22C%22%3E %3Cstop offset=%220%22 stop-color=%22%23f9f9f9%22/%3E %3Cstop offset=%221%22 stop-color=%22%23f3f3f3%22/%3E %3C/linearGradient%3E %3ClinearGradient xlink:href=%22%23b%22 id=%22ai%22 x1=%22862.392%22 x2=%22864.333%22 y1=%221.153%22 y2=%22114.025%22 gradientUnits=%22userSpaceOnUse%22/%3E %3ClinearGradient id=%22B%22%3E %3Cstop offset=%220%22 stop-color=%22%23e9e9e9%22/%3E %3Cstop offset=%221%22 stop-color=%22%23f9f9f9%22/%3E %3C/linearGradient%3E %3ClinearGradient id=%22A%22%3E %3Cstop offset=%220%22 stop-color=%22%23f2f2f2%22/%3E %3Cstop offset=%221%22 stop-color=%22%23f9f9f9%22/%3E %3C/linearGradient%3E %3ClinearGradient id=%22z%22%3E %3Cstop offset=%220%22 stop-color=%22%23f4f4f4%22/%3E %3Cstop offset=%221%22 stop-color=%22%23f9f9f9%22/%3E %3C/linearGradient%3E %3ClinearGradient id=%22y%22%3E %3Cstop offset=%220%22 stop-color=%22%23efefef%22/%3E %3Cstop offset=%221%22 stop-color=%22%23efefef%22 stop-opacity=%220%22/%3E %3C/linearGradient%3E %3ClinearGradient id=%22x%22%3E %3Cstop offset=%220%22 stop-color=%22%23d6d6d6%22/%3E %3Cstop offset=%221%22 stop-color=%22%23d6d6d6%22 stop-opacity=%220%22/%3E %3C/linearGradient%3E %3ClinearGradient id=%22w%22%3E %3Cstop offset=%220%22 stop-color=%22%23f1f1f1%22/%3E %3Cstop offset=%221%22 stop-color=%22%23f1f1f1%22 stop-opacity=%220%22/%3E %3C/linearGradient%3E %3ClinearGradient id=%22v%22%3E %3Cstop offset=%220%22 stop-color=%22%23f3f3f3%22/%3E %3Cstop offset=%221%22 stop-color=%22%23f3f3f3%22 stop-opacity=%220%22/%3E %3C/linearGradient%3E %3ClinearGradient id=%22u%22%3E %3Cstop offset=%220%22 stop-color=%22%23ededed%22/%3E %3Cstop offset=%221%22 stop-color=%22%23ededed%22 stop-opacity=%220%22/%3E %3C/linearGradient%3E %3ClinearGradient id=%22t%22%3E %3Cstop offset=%220%22 stop-color=%22%23f0f0f0%22/%3E %3Cstop offset=%221%22 stop-color=%22%23f0f0f0%22 stop-opacity=%220%22/%3E %3C/linearGradient%3E %3ClinearGradient id=%22s%22%3E %3Cstop offset=%220%22 stop-color=%22%23f6f6f6%22/%3E %3Cstop offset=%221%22 stop-color=%22%23f5f5f5%22/%3E %3C/linearGradient%3E %3ClinearGradient id=%22r%22%3E %3Cstop offset=%220%22 stop-color=%22%23e9e9e9%22/%3E %3Cstop offset=%221%22 stop-color=%22%23f3f3f3%22/%3E %3C/linearGradient%3E %3ClinearGradient id=%22q%22%3E %3Cstop offset=%220%22 stop-color=%22%23e0e0e0%22/%3E %3Cstop offset=%221%22 stop-color=%22%23e0e0e0%22 stop-opacity=%220%22/%3E %3C/linearGradient%3E %3ClinearGradient id=%22p%22%3E %3Cstop offset=%220%22 stop-color=%22%23ededed%22/%3E %3Cstop offset=%221%22 stop-color=%22%23e1e1e1%22/%3E %3C/linearGradient%3E %3ClinearGradient id=%22o%22%3E %3Cstop offset=%220%22 stop-color=%22%23ebebeb%22/%3E %3Cstop offset=%221%22 stop-color=%22%23e5e5e5%22/%3E %3C/linearGradient%3E %3ClinearGradient id=%22n%22%3E %3Cstop offset=%220%22 stop-color=%22%23f4f4f4%22/%3E %3Cstop offset=%221%22 stop-color=%22%23f4f4f4%22 stop-opacity=%22.997%22/%3E %3C/linearGradient%3E %3ClinearGradient id=%22m%22%3E %3Cstop offset=%220%22 stop-color=%22%23d0d0d0%22/%3E %3Cstop offset=%221%22 stop-color=%22%23f9f9f9%22/%3E %3C/linearGradient%3E %3ClinearGradient id=%22l%22%3E %3Cstop offset=%220%22 stop-color=%22%23dadada%22/%3E %3Cstop offset=%221%22 stop-color=%22%23e9e9e9%22/%3E %3C/linearGradient%3E %3ClinearGradient id=%22k%22%3E %3Cstop offset=%220%22 stop-color=%22%23ececec%22/%3E %3Cstop offset=%22.514%22 stop-color=%22%23f6f6f6%22/%3E %3Cstop offset=%221%22 stop-color=%22%23f9f9f9%22/%3E %3C/linearGradient%3E %3ClinearGradient id=%22j%22%3E %3Cstop offset=%220%22 stop-color=%22%23e8e8e8%22/%3E %3Cstop offset=%221%22 stop-color=%22%23f3f3f3%22/%3E %3C/linearGradient%3E %3ClinearGradient id=%22i%22%3E %3Cstop offset=%220%22 stop-color=%22%23f3f3f3%22/%3E %3Cstop offset=%221%22 stop-color=%22%23f9f9f9%22/%3E %3C/linearGradient%3E %3ClinearGradient id=%22h%22%3E %3Cstop offset=%220%22 stop-color=%22%23efefef%22/%3E %3Cstop offset=%22.396%22 stop-color=%22%23ededed%22/%3E %3Cstop offset=%22.63%22 stop-color=%22%23e8e8e8%22/%3E %3Cstop offset=%221%22 stop-color=%22%23dedede%22/%3E %3C/linearGradient%3E %3ClinearGradient id=%22g%22%3E %3Cstop offset=%220%22 stop-color=%22%23cbcbcb%22/%3E %3Cstop offset=%22.517%22 stop-color=%22%23dcdcdc%22/%3E %3Cstop offset=%22.865%22 stop-color=%22%23eee%22/%3E %3Cstop offset=%221%22 stop-color=%22%23f0f0f0%22/%3E %3C/linearGradient%3E %3ClinearGradient id=%22f%22%3E %3Cstop offset=%220%22 stop-color=%22%23e6e6e6%22 stop-opacity=%22.997%22/%3E %3Cstop offset=%221%22 stop-color=%22%23dbdbdb%22/%3E %3C/linearGradient%3E %3ClinearGradient id=%22e%22%3E %3Cstop offset=%220%22 stop-color=%22%23e1e1e1%22/%3E %3Cstop offset=%22.198%22 stop-color=%22%23e4e4e4%22/%3E %3Cstop offset=%22.338%22 stop-color=%22%23f5f5f5%22/%3E %3Cstop offset=%22.551%22 stop-color=%22%23f4f4f4%22/%3E %3Cstop offset=%22.597%22 stop-color=%22%23f2f2f2%22/%3E %3Cstop offset=%22.773%22 stop-color=%22%23f6f6f6%22/%3E %3Cstop offset=%221%22 stop-color=%22%23f9f9f9%22/%3E %3C/linearGradient%3E %3ClinearGradient id=%22d%22%3E %3Cstop offset=%220%22 stop-color=%22%23cfcfcf%22/%3E %3Cstop offset=%221%22 stop-color=%22%23d0d0d0%22/%3E %3C/linearGradient%3E %3ClinearGradient id=%22c%22%3E %3Cstop offset=%220%22 stop-color=%22%23f2f2f2%22/%3E %3Cstop offset=%221%22 stop-color=%22%23f9f9f9%22/%3E %3C/linearGradient%3E %3ClinearGradient id=%22b%22%3E %3Cstop offset=%220%22 stop-color=%22%23e4e4e4%22/%3E %3Cstop offset=%22.504%22 stop-color=%22%23e5e5e5%22/%3E %3Cstop offset=%221%22 stop-color=%22%23f9f9f9%22/%3E %3C/linearGradient%3E %3ClinearGradient id=%22a%22%3E %3Cstop offset=%220%22 stop-color=%22%23e6e6e6%22/%3E %3Cstop offset=%22.442%22 stop-color=%22%23e7e7e7%22/%3E %3Cstop offset=%22.772%22 stop-color=%22%23f1f1f1%22/%3E %3Cstop offset=%221%22 stop-color=%22%23f9f9f9%22/%3E %3C/linearGradient%3E %3ClinearGradient xlink:href=%22%23a%22 id=%22ah%22 x1=%22241.181%22 x2=%22241.052%22 y1=%22.83%22 y2=%2229.29%22 gradientUnits=%22userSpaceOnUse%22/%3E %3ClinearGradient id=%22D%22%3E %3Cstop offset=%220%22 stop-color=%22%23e5e5e5%22/%3E %3Cstop offset=%221%22 stop-color=%22%23e5e5e5%22 stop-opacity=%220%22/%3E %3C/linearGradient%3E %3ClinearGradient xlink:href=%22%23c%22 id=%22ag%22 x1=%22231.389%22 x2=%22224.379%22 y1=%2213.086%22 y2=%2220.51%22 gradientUnits=%22userSpaceOnUse%22/%3E %3ClinearGradient xlink:href=%22%23d%22 id=%22aj%22 x1=%2252.702%22 x2=%2252.47%22 y1=%2216.05%22 y2=%2218.382%22 gradientUnits=%22userSpaceOnUse%22/%3E %3ClinearGradient xlink:href=%22%23e%22 id=%22O%22 x1=%2215.127%22 x2=%22103.297%22 y1=%2215.607%22 y2=%2231.128%22 gradientUnits=%22userSpaceOnUse%22/%3E %3ClinearGradient xlink:href=%22%23f%22 id=%22P%22 x1=%2235.71%22 x2=%2236.996%22 y1=%2218.012%22 y2=%2218.177%22 gradientUnits=%22userSpaceOnUse%22/%3E %3ClinearGradient xlink:href=%22%23g%22 id=%22L%22 x1=%2245.303%22 x2=%2245.624%22 y1=%2218.049%22 y2=%2226.029%22 gradientUnits=%22userSpaceOnUse%22/%3E %3ClinearGradient xlink:href=%22%23h%22 id=%22M%22 x1=%2271.064%22 x2=%2272.457%22 y1=%2224.169%22 y2=%2221.973%22 gradientUnits=%22userSpaceOnUse%22/%3E %3ClinearGradient xlink:href=%22%23i%22 id=%22ae%22 x1=%2266.829%22 x2=%22120.759%22 y1=%2222.094%22 y2=%2230.56%22 gradientUnits=%22userSpaceOnUse%22/%3E %3ClinearGradient xlink:href=%22%23j%22 id=%22J%22 x1=%2265.523%22 x2=%2263.831%22 y1=%2223.532%22 y2=%2226.451%22 gradientUnits=%22userSpaceOnUse%22/%3E %3ClinearGradient xlink:href=%22%23k%22 id=%22N%22 x1=%2295.817%22 x2=%2295.561%22 y1=%2225.922%22 y2=%2228.296%22 gradientUnits=%22userSpaceOnUse%22/%3E %3ClinearGradient xlink:href=%22%23l%22 id=%22K%22 x1=%2233.045%22 x2=%2232.51%22 y1=%2215.633%22 y2=%2218.439%22 gradientUnits=%22userSpaceOnUse%22/%3E %3ClinearGradient xlink:href=%22%23m%22 id=%22F%22 x1=%2233.342%22 x2=%2233.513%22 y1=%2217.978%22 y2=%2230.778%22 gradientUnits=%22userSpaceOnUse%22/%3E %3ClinearGradient xlink:href=%22%23m%22 id=%22G%22 x1=%2234.162%22 x2=%2233.08%22 y1=%2218.797%22 y2=%2227.777%22 gradientUnits=%22userSpaceOnUse%22/%3E %3ClinearGradient xlink:href=%22%23C%22 id=%22E%22 x1=%22262.803%22 x2=%22263.049%22 y1=%2229.234%22 y2=%22.97%22 gradientUnits=%22userSpaceOnUse%22/%3E %3ClinearGradient xlink:href=%22%23n%22 id=%22ad%22 x1=%2244.713%22 x2=%2232.808%22 y1=%2213.097%22 y2=%223.44%22 gradientUnits=%22userSpaceOnUse%22/%3E %3ClinearGradient xlink:href=%22%23o%22 id=%22ac%22 x1=%227.266%22 x2=%227.419%22 y1=%2212.121%22 y2=%229.176%22 gradientUnits=%22userSpaceOnUse%22/%3E %3ClinearGradient xlink:href=%22%23p%22 id=%22ab%22 x1=%229.677%22 x2=%2210.488%22 y1=%224.024%22 y2=%22.745%22 gradientUnits=%22userSpaceOnUse%22/%3E %3ClinearGradient xlink:href=%22%23q%22 id=%22af%22 x1=%2264.1%22 x2=%2262.561%22 y1=%223.955%22 y2=%22.306%22 gradientUnits=%22userSpaceOnUse%22/%3E %3ClinearGradient xlink:href=%22%23r%22 id=%22W%22 x1=%2279.435%22 x2=%2280.522%22 y1=%222.238%22 y2=%224.488%22 gradientUnits=%22userSpaceOnUse%22/%3E %3ClinearGradient xlink:href=%22%23s%22 id=%22V%22 x1=%22216.854%22 x2=%22157.45%22 y1=%2210.693%22 y2=%221.152%22 gradientUnits=%22userSpaceOnUse%22/%3E %3ClinearGradient xlink:href=%22%23t%22 id=%22Y%22 x1=%22151.682%22 x2=%22248.454%22 y1=%221.765%22 y2=%2213.926%22 gradientUnits=%22userSpaceOnUse%22/%3E %3ClinearGradient xlink:href=%22%23u%22 id=%22X%22 x1=%22155.198%22 x2=%22222.595%22 y1=%225.793%22 y2=%2218.882%22 gradientUnits=%22userSpaceOnUse%22/%3E %3ClinearGradient xlink:href=%22%23v%22 id=%22Z%22 x1=%22167.257%22 x2=%22232.504%22 y1=%224.057%22 y2=%2216.124%22 gradientUnits=%22userSpaceOnUse%22/%3E %3ClinearGradient xlink:href=%22%23w%22 id=%22aa%22 x1=%22111.926%22 x2=%22220.942%22 y1=%2210.932%22 y2=%2222.839%22 gradientUnits=%22userSpaceOnUse%22/%3E %3ClinearGradient xlink:href=%22%23x%22 id=%22S%22 x1=%2281.617%22 x2=%2281.449%22 y1=%22-7.073%22 y2=%2211.636%22 gradientUnits=%22userSpaceOnUse%22/%3E %3ClinearGradient xlink:href=%22%23y%22 id=%22T%22 x1=%2293.149%22 x2=%2292.968%22 y1=%2213.259%22 y2=%2215.017%22 gradientUnits=%22userSpaceOnUse%22/%3E %3ClinearGradient xlink:href=%22%23z%22 id=%22R%22 x1=%22176.25%22 x2=%22176.742%22 y1=%2218.815%22 y2=%2231.118%22 gradientUnits=%22userSpaceOnUse%22/%3E %3ClinearGradient xlink:href=%22%23A%22 id=%22U%22 x1=%2293.015%22 x2=%2293.101%22 y1=%2219.511%22 y2=%2228.389%22 gradientUnits=%22userSpaceOnUse%22/%3E %3ClinearGradient xlink:href=%22%23B%22 id=%22Q%22 x1=%2275.997%22 x2=%2275.848%22 y1=%2220.433%22 y2=%2225.46%22 gradientUnits=%22userSpaceOnUse%22/%3E %3ClinearGradient xlink:href=%22%23D%22 id=%22I%22 x1=%22243.28%22 x2=%22244.389%22 y1=%2210.403%22 y2=%2210.59%22 gradientUnits=%22userSpaceOnUse%22/%3E %3Cfilter id=%22H%22 width=%221.115%22 height=%221.269%22 x=%22-.057%22 y=%22-.135%22 color-interpolation-filters=%22sRGB%22%3E %3CfeGaussianBlur stdDeviation=%221.33%22/%3E %3C/filter%3E %3C/defs%3E %3Cpath fill=%22url%28%23E%29%22 d=%22M0 0h273.897v31.044H0z%22/%3E %3Cg fill-rule=%22evenodd%22%3E %3Cpath fill=%22url%28%23F%29%22 d=%22m-1.964 14.277 48.596 4.794 25.07 4.958 41.814 8.232-117.445 1.122z%22/%3E %3Cpath fill=%22url%28%23G%29%22 d=%22M-2.245 12.195c.748.234 40.937 5.578 40.937 5.578l9.016 5.04-3.228 13.096s-52.618-.982-52.478-1.216c.14-.234 5.753-22.498 5.753-22.498z%22 filter=%22url%28%23H%29%22/%3E %3Cpath fill=%22url%28%23I%29%22 d=%22m245.302-1.003 1.753-.1-5.027 32.974-1.952-.264z%22/%3E %3C/g%3E %3Cg fill-rule=%22evenodd%22%3E %3Cpath fill=%22url%28%23J%29%22 d=%22M63.49 26.81c1.564-.958 2.958-2.241 4.243-3.604l-2.976.083z%22/%3E %3Cpath fill=%22url%28%23K%29%22 d=%22M-.538 10.465S19.2 13.41 24.976 14.16c5.777.748 10.384 1.31 12.231 2.315 1.848 1.006-.187 1.193-.187 1.193s-3.59-.027-4.485.314c-.894.34-2.718.808-2.718.808l-31.781-4.513z%22/%3E %3Cpath fill=%22url%28%23L%29%22 d=%22M39.055 17.48c-1.497-.046-2.807.632-2.807.632s-2.806 3.905-2.455 4.49c.35.585 5.449 3.227 14.265 4.14 8.817.911 14.476.374 15.318-.14.842-.515 1.006-2.854 1.006-2.854l-.398-1.427-4.724-3.46-16.604-2.41z%22/%3E %3Cpath fill=%22url%28%23M%29%22 d=%22M64.757 23.289c-.773-.968-.1-1.703-.1-1.703 1.541.158 7.268.03 11.526 1.339l-4.828 2.15s-4.829-2.547-6.598-1.786z%22/%3E %3Cpath fill=%22url%28%23N%29%22 d=%22m73.819 23.173.397-.661s24.308 3.307 29.104 4.233c4.795.926 22.853 4.994 22.853 4.994l-17.495-.43c-11.327-1.566-22.968-2.748-34.86-8.136z%22/%3E %3Cpath fill=%22url%28%23O%29%22 d=%22M-.561 14.627c.28.047 29.326 4.537 30.589 4.49 1.263-.046 1.75-.742 3.324-.866 1.002-.079 1.396.627 1.15.942-1.213 1.547-2.15 3.321-.078 4.555 2.727 1.623 10.236 2.678 14.92 3.274 8.28 1.052 12.392.52 13.798-.047 1.613-.65.906-1.614 1.69-2.62.385-.495 2.446-.827 3.43-.154.72.493 1.008 1.184 2.41 1.511.653.153 39.804 6.174 39.804 6.174l12.088 1.09c-.05.133-42.57-4.899-48.44-10.24-.861-.783-1.336 2.183-3.31 1.573-1.976-.61-2.157-3.1-5.925-1.83-1.501.505-.994 2.936-1.887 3.56-1.446 1.013-7.904 1.123-12.722.562-4.817-.561-14.41-2.143-15.715-3.788-.496-.624-.07-1.9.467-2.666 1.147-1.636.101-2.781-1.31-2.666-1.951.158-2.808 1.22-3.975 1.075-.925-.114-32.413-4.677-32.413-4.677z%22/%3E %3Cpath fill=%22url%28%23P%29%22 d=%22M34.264 21.586c1.322-2.828 4.29-3.308 4.192-4.118-.1-.81-2.026-.585-2.655-.453-.716.132-2.478.429-3.406.85 0 0 1.736-.414 2.183.397.446.81-.314 3.324-.314 3.324z%22/%3E %3C/g%3E %3Cg fill-rule=%22evenodd%22%3E %3Cpath fill=%22url%28%23Q%29%22 d=%22M58.374 13.483c-1.059.827 1.786 5.027 1.786 5.027l3.406 3.307s5.887.132 8.533.496 45.045 6.383 54.438 9.36c9.393 2.976 15.697 4.75 15.697 4.75l3.695-11.459s-82.362-14.03-87.555-11.481z%22/%3E %3Cpath fill=%22url%28%23R%29%22 d=%22m222.382 20.13 2.448 16.67-40.626.41C146.56 31.804 88.95 12.102 64.624 19.8c-.916.629-1.258.465-1.24-.199-1.927.24-.602-.857-.33-1.29-1.123.427-.936-.215-1.373-.347-.562-.162-1-.415-.96-1.025-2.386.44-.823-.684-.859-1.257-.945.183-.505-.511-.612-.86 0 0 4.407-8.941 26.062-14.133 21.656-5.191 86.397-.734 137.07 19.441z%22/%3E %3Cpath fill=%22url%28%23S%29%22 d=%22M60.476 15.048S69.73 5.621 93.638 2.513C120.55-.985 189.4 18.557 189.399 18.558c0 0-69.553-17.635-94.311-14.782C71.47 6.498 60.476 15.048 60.476 15.048z%22/%3E %3Cpath fill=%22%23efefef%22 d=%22M85.219 6.63c17.384-4.36 55.57 1.9 65.154 3.928-9.226-1.908-46.83-9.643-65.154-3.929z%22/%3E %3Cpath fill=%22%23f1f1f1%22 d=%22M130.836 8.753c14.135 1.85 68.486 15.66 79.838 18.786-13.334-3.852-66.283-17.468-79.838-18.786z%22/%3E %3Cpath fill=%22%23f5f5f5%22 d=%22M82.249 8.936c10.572-1.518 25.094-1.26 28.84-1.19-3.184-.357-17.088-.764-28.84 1.19z%22/%3E %3Cpath fill=%22%23f7f7f7%22 d=%22M187.193 24.76c-10.46-3.523-42.856-12.108-50.205-13.427 8.32 1.188 41.811 9.916 50.205 13.428z%22/%3E %3Cpath fill=%22%23efefef%22 d=%22M96.771 9.547c23.108.926 55.544 7.174 82.352 16.007-20.863-7.287-56.35-16.843-82.352-16.007z%22/%3E %3Cpath fill=%22%23f0f0f0%22 d=%22M74.017 12.92c6.664-1.521 23.058-2.31 29.7-1.984-8.503-.463-20.974-.491-29.7 1.984zm-10.252 4.102c4.888-2.032 8.536-2.42 10.318-2.646-2.839.732-6.491 1.667-10.318 2.646z%22/%3E %3Cpath fill=%22url%28%23T%29%22 d=%22M78.515 13.913c28.778-.404 67.141 7.028 94.324 15.478-14.251-5.307-58.585-20.163-94.324-15.478z%22/%3E %3Cpath fill=%22%23f9f9f9%22 d=%22M80.542 16.124c8.207.12 22.163 1.425 33.068 2.666-4.842-.841-26.127-3.07-33.068-2.666z%22/%3E %3Cpath fill=%22%23f0f0f0%22 d=%22M65.481 18.37c2.714-.7 5.829-1.085 8.746-1.404-2.486.13-6.631.667-8.746 1.403z%22/%3E %3Cpath fill=%22%23ededed%22 d=%22M75.256 16.03c4.552-.583 18.219.044 25.117.749-4.907-.542-18.234-1.691-25.117-.748z%22/%3E %3Cpath fill=%22url%28%23U%29%22 d=%22M154.629 31.7s-38.107-10.88-71.187-12.582c-14.577-.75-18.904 1-18.904 1-.652.55.383.628 1.356.738-.308.42-.369.743.482.705.132-.297 15.931-.058 32.781 3.17 19.07 3.652 33.045 8.395 33.045 8.395z%22/%3E %3Cpath fill=%22%23f2f2f2%22 d=%22M73.538 19.932c9.594.067 19.773 1.398 28.806 2.745-4.654-.908-17.209-3.246-28.806-2.745z%22/%3E %3C/g%3E %3Cg fill-rule=%22evenodd%22%3E %3Cpath fill=%22url%28%23V%29%22 d=%22m122.029-.948 98.97 22.077-3.04-23.527z%22/%3E %3Cpath fill=%22url%28%23W%29%22 d=%22m59.635 13.13-.375 1.31s9.308-8.746 24.322-12.207c15.014-3.461 31.103-3.555 52.431.935 21.329 4.49 85.443 18.682 85.443 18.682l-2.58-5.358L132.16-1.102l-45.64-.794S62.913 5.999 59.635 13.13z%22/%3E %3Cpath fill=%22%23f8f8f8%22 d=%22M131.685-.696c30.86 4.82 58.639 11.489 87.838 17.306l-.234-.795c-28.318-5.697-54.562-11.6-85.126-17.072z%22/%3E %3Cpath fill=%22url%28%23X%29%22 d=%22M132.973.081c30.86 4.82 58.546 12.12 87.745 17.937l-.14-1.426c-28.318-5.696-54.562-11.6-85.126-17.072z%22/%3E %3Cpath fill=%22url%28%23Y%29%22 d=%22M141.533-.854c27.55 3.965 51.703 9.73 77.595 14.359l.14-2.585c-24.47-4.307-47.714-8.466-73.526-12.102z%22/%3E %3Cpath fill=%22%23f6f6f6%22 d=%22M160.475-.948c16.969 3.27 38.852 7.36 58.278 11.039l-.233-.754C199.04 6.007 169.885.52 160.475-.948z%22/%3E %3Cpath fill=%22url%28%23Z%29%22 d=%22M170.438-.527c16.041 2.699 31.824 5.656 47.707 8.513l-.046.655-50.842-8.887z%22/%3E %3Cpath fill=%22%23f1f1f1%22 d=%22M177.5-2.585c.936.28 38.4 6.361 38.4 6.361l-.046-.655c-10.032-1.671-19.02-3.22-28.017-4.77l-10.617-.889z%22/%3E %3Cpath fill=%22%23f4f4f4%22 d=%22M187.229-1.135c9.147.894 17.799 1.143 27.502 2.76l.094-.608c-5.15-.664-10.008-1.294-14.92-1.824z%22/%3E %3Cpath fill=%22url%28%23aa%29%22 d=%22M113.47-.433c35.796 3.976 72.668 14.5 108.464 21.515l-.14 1.216c-36.046-7.417-68.99-16.951-109.868-22.497z%22/%3E %3C/g%3E %3Cg fill-rule=%22evenodd%22%3E %3Cpath fill=%22url%28%23ab%29%22 d=%22m-.992-.606.132 4.365s19.38 2.613 23.614 4.002c4.234 1.39 17.86 7.871 17.86 7.871l5.622-.231 7.014-2.925 4.7 3.145c.611-.051 1.486-.834 1.421-1.295l-4.437-2.996-1.38-.935-1.146-.562-4.513 2.315-7.273 1.123-24.58-14.616z%22/%3E %3Cpath fill=%22url%28%23ac%29%22 d=%22m-.398 10.558 31.431 4.42s6.244 1.053 7.227 1.848c.982.795 1.146.795 1.146.795l1.052-1.871-4.935-2.923S4.326 3.847.795 5.086c-3.531 1.24-1.193 5.472-1.193 5.472z%22/%3E %3Cpath fill=%22url%28%23ad%29%22 d=%22M3.142-.11C1.566-1.65 27.84 2.228 40.018 14.177c.716.703 2.1 1.023 1.82.488.597.261 1.636.914 1.521-.3.939.024 3.184 1.37 2.63-.815.471-.01.355-.175.71-.497.635.123 1.195.097 1.654-.133.964.276 1.669.108 1.885-.892.517-.198 1.212-.056 1.323-1.026 0 0 .992.066 1.157-.397.166-.463.364-11.178.364-11.178z%22/%3E %3Cpath fill=%22%23f5f5f5%22 d=%22M51.726-.342c1.482 2.673.554 11.435 1.588 11.51.543.42.954-.041 1.1-.133.11.531-.1 1.503.975 1.235-.103.514 1.06 1.82 1.79 1.08.042.178.855 1.513 1.7.99-.033.263-.372.739.19.796C69.452 4.604 80.76 1.876 91.313-1.334z%22/%3E %3Cpath fill=%22%23f4f4f4%22 d=%22M38.692 17.773s-1.344-1.836-8.08-2.748c-6.735-.912-33.98-4.677-33.98-4.677l.538-.304s31.735 4.42 33.91 4.7c2.175.281 7.425 1.687 7.881 2.206.456.519-.269.823-.269.823z%22/%3E %3Cpath fill=%22url%28%23ae%29%22 d=%22M64.89 22.479c1.526-.672 2.813-.263 5.619-.146 1.964.082 21.544 2.86 32.226 4.853 9.899 1.846 29.557 6.24 29.557 6.24l1.984-.596s-22.986-4.927-31.75-6.383c-8.764-1.455-27.01-4.42-32.504-4.717-3.096-.167-5.265-.045-5.265-.045s-.893.76.132.794%22/%3E %3Cpath fill=%22url%28%23af%29%22 d=%22M64.46-.276c-.806.994-4.303 6.386-8.732 11.774 4.366-4.703 8.757-9.262 13.427-12.187z%22/%3E %3Cpath fill=%22%23efefef%22 d=%22M62.987-.325c-3.268 3.06-5.699 7.167-8.88 10.88C56.25 6.824 56.574-1.324 56.82-.787c-.066.066 6.168.463 6.168.463z%22/%3E %3Cpath fill=%22%23ebebeb%22 d=%22M54.885 11.101c.78-.31 2.04-2.435 2.1-2.678-.184.343-1.65 2.36-2.1 2.678z%22/%3E %3Cpath fill=%22%23dedede%22 d=%22M59.763 12.193C62.913 9.112 73.055 2.7 73.075 2.8c-2.652 1.207-10.037 5.438-13.312 9.393z%22/%3E %3Cpath fill=%22%23f3f3f3%22 d=%22M86.949-.176c.346-.548-8.597 1.645-15.032 5.275 3.6-2.163 8.698-4.343 13.097-5.375z%22/%3E %3Cpath fill=%22%23f1f1f1%22 d=%22M82.058-.456C78.713.56 74.483 2.715 71.421 4.818c2.544-2.04 5.996-4.044 8.818-5.538z%22/%3E %3Cpath fill=%22%23efefef%22 d=%22M71.14 1.064c-4.405 2.76-8.8 6.233-12.965 10.12 3.93-4.195 9.302-8.433 12.965-10.12z%22/%3E %3Cpath fill=%22%23f3f3f3%22 d=%22M-.96 2.337c4.275.278 35.22 5.029 40.68 12.336.618.379.67 2.567-.743 1.631C29.515 10.03-.006 6.457-2.679 7.067z%22/%3E %3Cpath fill=%22%23ededed%22 d=%22M-.728 4.884C18.171 6.24 29.203 9.922 34.098 11.96 25.325 9.39 10.562 6.627-.76 6.273z%22/%3E %3Cpath fill=%22%23efefef%22 d=%22M48.716-.739c1.535 2.745 2.403 5.358 3.076 8.236-1.34-4.526-2.424-6.151-3.902-8.269z%22/%3E %3Cpath fill=%22%23ededed%22 d=%22M46.534-.904a48.533 48.533 0 0 1 4.134 9.426c-2.302-3.299-4.775-6.496-8.037-9.228z%22/%3E %3Cpath fill=%22%23f0f0f0%22 d=%22M40.547-.937c3.497 3.233 6.208 6.69 9.129 10.087-3.038-3.258-5.888-6.574-9.592-9.624z%22/%3E %3Cpath fill=%22%23efefef%22 d=%22M39.72 1.113c3.116 3.175 6.121 6.35 8.864 9.525.323.334-4.398-6.07-8.863-9.525z%22/%3E %3Cpath fill=%22%23eee%22 d=%22M23.647-.87c6.227 3.572 12.515 7.207 18.819 12.434C34.866 5.98 28.443 2.747 21.86-.805z%22/%3E %3C/g%3E %3Cpath fill=%22url%28%23ag%29%22 fill-rule=%22evenodd%22 d=%22m214.31-.082.07 1.426 1.216.912-.28 1.146.374.444-.14 1.287s.233 1.146.327 1.169c.093.023.889.374.889.374l1.286 2.386-.374.818.35.304v.819l-.14.678.655.608-.608 1.24 1.029 1.566.444 1.45-.701.819.655.654-.211 1.31 1.216 1.24-.28 1.239.35.842 1.006.608-.257 2.011-.281.748.257 2.9 1.193 3.134 17.119.398 4.162-33.934-27.712 1.03z%22/%3E %3Cg fill-rule=%22evenodd%22%3E %3Cpath fill=%22url%28%23ah%29%22 d=%22m235.779 31.419 6.477-32.67 3.602.257-5.45 34.915z%22/%3E %3Cpath fill=%22%23f3f3f3%22 d=%22m219.604 23.04 7.392-23.795.976-.017z%22/%3E %3Cpath fill=%22url%28%23ai%29%22 d=%22M857.938-2.854s-.5 7.188.187 9.563c.688 2.375 2.562 1.375 4.625 1.812 2.062.438 2.437 2.625 2.188 3.438-.25.812 2.687 7.062 2.687 7.062s4.75-18.125 4.938-20.375zm8.375 27.125L857 64.21s2.25 1.375 2.563 3c.312 1.625.5 6.937.5 6.937l1.375.25s1.625-2.25 1.812-.562c.187 1.687 0 10.875 0 10.875l10.188-41s-.5-2.375-.25-4.125-.063-6.438-.438-6.563-1.687 2.813-2.188 2c-.5-.812-1.5-7.875-2.125-8.437-.624-.563-2.125-2.313-2.125-2.313zm-2.836 64.05a1.407 1.407 0 0 0-.276.02l-4.861 20.948s1.501 5.128 3.357 5.658c1.856.53 7.955 5.037 7.955 5.037l5.569-21.566s-1.68 1.856-2.387-.266c-.707-2.121 1.77-4.772-.617-5.39-2.387-.619-4.775-.177-5.658-1.326-.829-1.078-1.734-3.087-3.082-3.116z%22 transform=%22scale%28.26458%29%22/%3E %3Cpath fill=%22%23f2f2f2%22 d=%22m240.076-.474-6.118 28.343 5.49-28.442z%22/%3E %3Cpath fill=%22%23f6f6f6%22 d=%22m232.536 25.488 5.787-26.26.298.133-6.284 29.203z%22/%3E %3Cpath fill=%22%23f0f0f0%22 d=%22m230.684 22.743 5.754-23.912.232.199z%22/%3E %3Cpath fill=%22%23f7f7f7%22 d=%22m226.781 5.446-6.826 24.403.244 2.32z%22/%3E %3Cpath fill=%22%23f4f4f4%22 d=%22m228.534 4.917-6.25 22.754s5.29-14.519 6.25-22.754z%22/%3E %3Cpath fill=%22%23f7f7f7%22 d=%22M232.734-1.565c-.132.165-2.249 8.334-2.249 8.334l1.654-7.871z%22/%3E %3Cpath fill=%22%23f5f5f5%22 d=%22M216.368-.176c0 .094-.725 3.742-.725 3.742l1.52-4.023z%22/%3E %3Cpath fill=%22%23f7f7f7%22 d=%22m214.38 1.344 1.193-2.268.28.374-1.216 2.642zm4.49-1.59-2.619 5.753.444 2.409 3.04-8.373-.958.281.14.023-.093-.21z%22/%3E %3Cpath fill=%22%23f4f4f4%22 d=%22m217 8.898.444 1.847 4.91-12.044-1.215-.163z%22/%3E %3Cpath fill=%22%23f3f3f3%22 d=%22m218.566 13.435.351 3.344 7.086-18.311-.842.117z%22/%3E %3C/g%3E %3Cg fill-rule=%22evenodd%22%3E %3Cpath fill=%22url%28%23aj%29%22 d=%22M43.326 17.146c.04 0 4.762.57 6.184.893 1.422.322 6.664 1.463 7.4 1.562.736.1 3.812.53 3.812.53l-6.086-6.301-3.067-.604z%22/%3E %3Cpath fill=%22%23d6d6d6%22 d=%22M41.308 17.832c6.312-.615 11.274 1.936 19.058 2.795l-.24-.745c-7.995-.942-11.39-2.702-17.032-2.927z%22/%3E %3Cpath fill=%22%23e7e7e7%22 d=%22M51.461 14.095c.034.099.116 1.835-.248 2.083-.363.248-2.05.678-2.893.81-1.042.215-2.762.463-2.762.463-1.265.112-2.55-.761-3.77-.016l-.943.628s2.1-.215 2.877-.231c.778-.017 1.489.099 1.919.082.43-.016 1.752-.48 2.48-.529.728-.05 3.175-.562 3.555-.975.38-.414.166-2.762.166-2.762z%22/%3E %3Cpath fill=%22%23f4f4f4%22 d=%22M39.324 16.658c-.443.372-1.193 1.737-.281 1.918.297.05 1.438-.165 1.504-.265.067-.099.298-.248.298-.248.838-.006 1.35-.185 1.935-.777 0 0 .694.199.926.083 1.287-.032 2.55-.142 3.687-.893.116-.132.298-.53.298-.53 1.246-.359 1.984-.616 2.58-1.256.832-.103 1.476-.096 1.868-.794.378.708.793.862 1.472.76 1.181.346 3.137 2.118 3.556 2.779.325.573.855 1.244 1.703 1.687.64.987 2.579 3.19 3.191 3.274.381.506.51 1.514 1.555 1.025.548-.198 1.091-.4 1.273-.942 2.036-.746.956-1.522-.694-1.952.08-.039-1.407-.847-1.571-.942.013-.533-1.356-1.643-1.72-1.62-.246-.82-1.166-1.12-1.224-1.49-.246-.642-.556-1.328-.959-1.487-1.192-.642-1.581-1.155-2.447-1.44-.31-.3-.928-.577-.844-.876-.386-.352-.683-.81-1.157-1.008-.408-.206-.816-.19-1.224-.182-.674-.17-1.159.272-1.637.645-.541.483-1.13.626-1.736.694-.792-.032-1.406.37-2.051.695-.917.293-2.028.079-2.762.76-.381.764-1.158.885-2.034.844-.532-.294-1.277-.025-2.133-.248-.771.065-1.091.893-1.372 1.786z%22/%3E %3C/g%3E %3C/svg%3E") 0 0 no-repeat,#f9f9f9 url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 xmlns:xlink=%22http://www.w3.org/1999/xlink%22 width=%225%22 height=%22220%22 viewBox=%220 0 1.323 58.208%22%3E %3Cdefs%3E %3ClinearGradient xlink:href=%22%23a%22 id=%22b%22 x1=%22262.803%22 x2=%22263.049%22 y1=%2229.234%22 y2=%22.97%22 gradientTransform=%22translate%28-492.003 238.792%29 scale%281.875%29%22 gradientUnits=%22userSpaceOnUse%22/%3E %3ClinearGradient id=%22a%22%3E %3Cstop offset=%220%22 stop-color=%22%23f9f9f9%22/%3E %3Cstop offset=%221%22 stop-color=%22%23f3f3f3%22/%3E %3C/linearGradient%3E %3C/defs%3E %3Cpath fill=%22url%28%23b%29%22 d=%22M0 238.792h1.323V297H0z%22 transform=%22translate%280 -238.792%29%22/%3E %3C/svg%3E") 0 0 repeat-x;color:#000000;direction:ltr;unicode-bidi:embed}#globalWrapper{font-size:127%;width:100%;margin:0;padding:0;position:relative;z-index:0}ul{list-style-type:square;list-style-image:url(./../-/bullet.svg)}pre,.mw-code{line-height:1.1em}.firstHeading{margin-top:0.4em;margin-bottom:0.1em;padding-top:0;overflow:visible}.mw-indicators{line-height:1.5em;font-size:95%}.mw-indicator{display:-moz-inline-block;display:inline-block}.mw-jump-link:not(:focus){display:block;position:absolute !important;clip:rect(1px,1px,1px,1px);width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden}#siteNotice{font-size:95%;padding:0 0.9em}#siteNotice p{margin:0;padding:0}#localNotice{margin:0}table.rimage{float:right;position:relative;margin-left:1em;margin-bottom:1em;text-align:center}.portlet{overflow:hidden}.portlet h3{background:transparent;display:inline;height:1em;font-size:91%;white-space:nowrap}.portlet ul{line-height:1.5em;font-size:95%}.portlet li{padding:0;margin:0}.pBody{font-size:95%;color:#000000;border-collapse:collapse}.pBody:after{content:'';clear:both;display:block}body:not(.monobook-capitalize-all-nouns) .portlet h3,body:not(.monobook-capitalize-all-nouns) #p-personal ul,body:not(.monobook-capitalize-all-nouns) #p-cactions ul li a{text-transform:lowercase}li#pt-userpage,.no-text-transform{text-transform:none}#p-logo{position:absolute;z-index:3;overflow:visible}#p-logo a,#p-logo a:hover{display:block;background-repeat:no-repeat;text-decoration:none}li#pt-anonuserpage{color:#707070}.mw-footer{background-color:#ffffff;border-top:1px solid #fabd23;border-bottom:1px solid #fabd23;margin:0.6em 0 1em 0;overflow:hidden;padding:0.4em 0 0.3em 0;text-align:center;font-size:90%}.mw-footer li{display:inline;margin:0 1.3em}#userloginprompt,#languagelinks{font-size:85%}#login-sectiontip{font-size:85%;line-height:1.2;padding-top:2em}#pagehistory li.selected{position:relative}div.patrollink{clear:both}.sharedUploadNotice{font-style:italic}.toggle{margin-left:2em;text-indent:-2em}input#wpSave,input#wpDiff{margin-right:0.33em}#wpSave{font-weight:bold}div.noarticletext{border:1px solid #aaaaaa;background:#ffffff;padding:0.2em 1em;color:#000000}#powersearch p{margin-top:0}div.multipageimagenavbox{border:solid 1px #aaaaaa;padding:4px;margin:1em;background:#f9f9f9}div.multipageimagenavbox div.thumb{border:0;margin-left:2em;margin-right:2em}div.multipageimagenavbox hr{margin:6px}table.multipageimage td{text-align:center}.templatesUsed{margin-top:1.5em}.mw-summary-preview{margin:0.1em 0}div.mw-lag-warn-normal,div.mw-lag-warn-high{padding:3px;text-align:center;margin:3px auto}div.mw-lag-warn-normal{border:1px solid #fc6;background-color:#ffc}div.mw-lag-warn-high{font-weight:bold;border:2px solid #f03;background-color:#fcc}.MediaTransformError{background-color:#aaaaaa;padding:0.1em}.MediaTransformError td{text-align:center;vertical-align:middle;font-size:90%}.tipsy{font-size:127%}.mw-content-ltr{direction:ltr}.mw-content-rtl{direction:rtl}.visualClear{clear:both}body:not(.skin--responsive){}body:not(.skin--responsive) #column-content{float:right;margin:0 0 0.6em -12.2em}body:not(.skin--responsive) .mw-body{margin:2.8em 0 0 12.2em;border-right:0}body:not(.skin--responsive) #mw-data-after-content{margin-left:12.2em}body:not(.skin--responsive) #column-one{padding-top:160px}body:not(.skin--responsive) .special li{line-height:1.4em;margin:0;padding:0}body:not(.skin--responsive) .portlet{border:0;margin:0 0 0.5em;padding:0;float:none;width:11.6em}body:not(.skin--responsive) .portlet h3{padding:0 1em 0 0.5em;font-weight:normal}body:not(.skin--responsive) .pBody{background-color:#fff;border:1px solid #aaa;padding:0 0.8em 0.3em 0.5em}body:not(.skin--responsive) #p-logo{top:0;left:0;height:155px;width:12em}body:not(.skin--responsive) #p-logo a,body:not(.skin--responsive) #p-logo a:hover{height:155px;width:12.2em;background-position:35% 50% !important}body:not(.skin--responsive) #p-search{position:relative;z-index:3}body:not(.skin--responsive) input.searchButton{margin-top:1px;font-size:95%}body:not(.skin--responsive) #searchButton{padding-left:0.5em;padding-right:0.5em;font-weight:bold}body:not(.skin--responsive) #searchInput{width:10.9em;margin:0;font-size:95%}body:not(.skin--responsive) #p-search .pBody{padding:0.5em 0.4em 0.4em 0.4em;text-align:center}body:not(.skin--responsive) #p-search #searchform div div{margin-top:0.4em;font-size:95%}body:not(.skin--responsive) #p-personal{position:absolute;left:0;top:0;z-index:3;width:100%;white-space:nowrap;padding:0;margin:0;border:0;background:none;overflow:visible;line-height:1.2em}body:not(.skin--responsive) #p-personal h3{position:absolute;top:-9999px}body:not(.skin--responsive) #p-personal .portlet,body:not(.skin--responsive) #p-personal .pBody{z-index:0;padding:0;margin:0;border:0;overflow:visible;background:none}body:not(.skin--responsive) #p-personal ul{border:0;line-height:1.4em;color:#2f6fab;padding:0;padding-right:2em;padding-left:14em;margin:0;float:right;list-style-type:none;list-style-image:none;z-index:0;background:none;cursor:default;box-sizing:border-box;max-width:100%}body:not(.skin--responsive) #p-personal li{z-index:0;border:0;padding:0;color:#2f6fab;display:inline;margin-left:1em;line-height:1.2em;background:none}body:not(.skin--responsive) #p-personal li a{color:#005896;text-decoration:none;padding-bottom:0.2em}body:not(.skin--responsive) #p-personal li a.new{color:#cc2200}body:not(.skin--responsive) #p-personal li a:hover{background-color:#fff;text-decoration:none}body:not(.skin--responsive) #p-personal li.active a:hover{background-color:transparent}body:not(.skin--responsive) li#pt-userpage,body:not(.skin--responsive) li#pt-anonuserpage{background-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 xmlns:xlink=%22http://www.w3.org/1999/xlink%22 width=%2216%22 height=%2216%22 viewBox=%220 0 4.233 4.233%22%3E %3Cdefs%3E %3ClinearGradient id=%22c%22%3E %3Cstop offset=%220%22 stop-color=%22%23fbeacf%22/%3E %3Cstop offset=%221%22 stop-color=%22%23f0bf7b%22/%3E %3C/linearGradient%3E %3ClinearGradient id=%22b%22%3E %3Cstop offset=%220%22 stop-color=%22%23f9e0ba%22/%3E %3Cstop offset=%221%22 stop-color=%22%23de8a3d%22/%3E %3C/linearGradient%3E %3ClinearGradient id=%22a%22%3E %3Cstop offset=%220%22 stop-color=%22%23dfedc7%22/%3E %3Cstop offset=%221%22 stop-color=%22%2389b92f%22/%3E %3C/linearGradient%3E %3ClinearGradient xlink:href=%22%23a%22 id=%22d%22 x1=%22.794%22 x2=%223.175%22 y1=%222.778%22 y2=%222.778%22 gradientUnits=%22userSpaceOnUse%22/%3E %3ClinearGradient xlink:href=%22%23b%22 id=%22f%22 x1=%221.587%22 x2=%222.381%22 y1=%221.058%22 y2=%221.587%22 gradientUnits=%22userSpaceOnUse%22/%3E %3CradialGradient xlink:href=%22%23c%22 id=%22e%22 cx=%221.984%22 cy=%222.381%22 r=%22.397%22 fx=%221.984%22 fy=%221.984%22 gradientTransform=%22matrix%28.33333 0 0 1.30283 1.323 -.469%29%22 gradientUnits=%22userSpaceOnUse%22/%3E %3C/defs%3E %3Cpath fill=%22url%28%23d%29%22 fill-rule=%22evenodd%22 d=%22m.661 3.307.133-.661.264-.265c.53-.264 1.323-.264 1.852 0l.265.265.132.661z%22/%3E %3Cpath fill=%22url%28%23e%29%22 fill-rule=%22evenodd%22 d=%22M1.587 2.117v.264l.265.265h.265l.264-.265v-.264c-.264-.265-.529-.265-.793 0z%22/%3E %3Cpath fill=%22url%28%23f%29%22 fill-rule=%22evenodd%22 d=%22M1.323 1.058v.53l.264.264c.265.265.53.265.794 0l.265-.265v-.529L2.116.53h-.264z%22/%3E %3Cpath fill=%22%234e4e4e%22 d=%22M2.646 1.058v.53h.264v-.53zM2.38 2.117v.264h.53v-.264zm.53.264v.265h.264V2.38zm.264.265v.529H.529v.265h2.91v-.795z%22/%3E %3Cpath fill=%22%23a3a3a3%22 d=%22M1.058 1.058v.53h.265v-.53zm.265.53v.264h.264v-.265zm-.265.529v.264h.53v-.264zm0 .264H.794v.265h.264zm-.264.265H.529v.529h.265z%22/%3E %3Cpath fill=%22%23768854%22 d=%22M1.587 2.381v.265h.265V2.38zm.265.265v.264h.265v-.264zm.265 0h.264V2.38h-.264z%22/%3E %3Cpath fill=%22%23a6774d%22 d=%22M2.381 1.587v.265h.265v-.265zm0 .265h-.793v.265h.793z%22/%3E %3Cpath fill=%22%239a7b54%22 fill-rule=%22evenodd%22 d=%22M1.984.397v.132c0 .265-.396.794-.793.794l.132-.53.264-.264z%22/%3E %3Cpath fill=%22%2393642b%22 fill-rule=%22evenodd%22 d=%22M1.984.397v.132c0 .265.397.794.794.794l-.132-.53L2.38.53z%22/%3E %3Cpath fill=%22%2386735c%22 d=%22M1.587.265v.264h.794V.265zm0 .264h-.264v.265h.264zm-.264.265h-.265v.529h.265z%22/%3E %3Cpath fill=%22%235a4934%22 d=%22M2.381.53v.264h.265V.529zm.265.264v.529h.264v-.53z%22/%3E %3Cpath fill=%22%2383b625%22 d=%22M1.323 2.91h.265v.265h-.265z%22/%3E %3Cpath fill=%22%236d971f%22 d=%22M2.646 2.91h.265v.265h-.265z%22/%3E %3Cpath fill=%22%23cde3a8%22 d=%22M1.058 2.91h.265v.265h-.265z%22/%3E %3Cpath fill=%22%23a9cd69%22 d=%22M2.381 2.91h.265v.265h-.265z%22/%3E %3C/svg%3E");background-position:top left;background-repeat:no-repeat;padding-left:20px}body:not(.skin--responsive) #p-lang{position:relative;z-index:3}body:not(.skin--responsive) #p-cactions{position:absolute;top:1.3em;left:11.5em;margin:0;white-space:nowrap;width:76%;line-height:1.1em;overflow:visible;background:none;border-collapse:collapse;padding-left:1em;font-size:95%}body:not(.skin--responsive) #p-cactions h3{position:absolute;top:-9999px}body:not(.skin--responsive) #p-cactions ul{list-style-type:none;list-style-image:none}body:not(.skin--responsive) #p-cactions li{display:inline;border:1px solid #aaa;border-bottom:0;margin:0 0.5em 0 0;padding:0 0 1em 0;overflow:visible;background:#fff}body:not(.skin--responsive) #p-cactions li.selected{border-color:#fabd23;font-weight:bold}body:not(.skin--responsive) #p-cactions li.selected a{z-index:3;background-color:#fff}body:not(.skin--responsive) #p-cactions li a{background-color:#fbfbfb;color:#002bb8;border:0;padding:0 0.8em 0.3em;position:relative;z-index:0;margin:0;text-decoration:none}body:not(.skin--responsive) #p-cactions li a:hover{z-index:3;text-decoration:none;background-color:#fff}body:not(.skin--responsive) #p-cactions li.istalk{margin-right:0}body:not(.skin--responsive) #p-cactions li.istalk a{padding-right:0.5em}body:not(.skin--responsive) #p-cactions .new a{color:#c20}body:not(.skin--responsive) #p-cactions #ca-addsection a{padding-left:0.4em;padding-right:0.4em}body:not(.skin--responsive) #p-cactions .pBody{font-size:1em;background-color:transparent;color:inherit;border-collapse:inherit;border:0;padding:0}body:not(.skin--responsive) li#ca-talk{margin-right:1.6em}body:not(.skin--responsive) li#ca-watch,body:not(.skin--responsive) li#ca-unwatch,body:not(.skin--responsive) li#ca-varlang-0,body:not(.skin--responsive) li#ca-print{margin-left:1.6em}body:not(.skin--responsive) #p-cactions li#ca-view,body:not(.skin--responsive) #p-personal #pt-notifications,body:not(.skin--responsive) #echo-hack-badges,body:not(.skin--responsive) #p-cactions-mobile,body:not(.skin--responsive) #sidebar-mobilejs,body:not(.skin--responsive) .mobile-close-button,body:not(.skin--responsive) .menu-toggle,body:not(.skin--responsive) .menus-cover{display:none}body:not(.skin--responsive) #f-poweredbyico,body:not(.skin--responsive) #f-copyrightico{margin:0 8px;position:relative;top:-2px}body:not(.skin--responsive) #f-poweredbyico{float:right;height:1%}body:not(.skin--responsive) #f-copyrightico{float:left;height:1%}}@media print{.mw-jump-link{display:none}#f-list > li{display:none}#f-list > #copyright,#f-list > #credits,#f-list > #lastmod{display:block}#footer{background:#fff;color:#000;margin-top:1em;border-top:1pt solid #aaa;padding-top:5px;direction:ltr}.noprint,.mw-cite-backlink,.mw-redirectedfrom,.patrollink,#column-one,#footer-places,#mw-navigation,#f-poweredbyico,#f-copyrightico,li#about,li#disclaimer,li#mobileview,li#privacy{display:none}}@media screen and (min-width:551px){body.skin--responsive{}body.skin--responsive #column-content{float:right;margin:0 0 0.6em -12.2em}body.skin--responsive .mw-body{margin:2.8em 0 0 12.2em;border-right:0}body.skin--responsive #mw-data-after-content{margin-left:12.2em}body.skin--responsive #column-one{padding-top:160px}body.skin--responsive .special li{line-height:1.4em;margin:0;padding:0}body.skin--responsive .portlet{border:0;margin:0 0 0.5em;padding:0;float:none;width:11.6em}body.skin--responsive .portlet h3{padding:0 1em 0 0.5em;font-weight:normal}body.skin--responsive .pBody{background-color:#fff;border:1px solid #aaa;padding:0 0.8em 0.3em 0.5em}body.skin--responsive #p-logo{top:0;left:0;height:155px;width:12em}body.skin--responsive #p-logo a,body.skin--responsive #p-logo a:hover{height:155px;width:12.2em;background-position:35% 50% !important}body.skin--responsive #p-search{position:relative;z-index:3}body.skin--responsive input.searchButton{margin-top:1px;font-size:95%}body.skin--responsive #searchButton{padding-left:0.5em;padding-right:0.5em;font-weight:bold}body.skin--responsive #searchInput{width:10.9em;margin:0;font-size:95%}body.skin--responsive #p-search .pBody{padding:0.5em 0.4em 0.4em 0.4em;text-align:center}body.skin--responsive #p-search #searchform div div{margin-top:0.4em;font-size:95%}body.skin--responsive #p-personal{position:absolute;left:0;top:0;z-index:3;width:100%;white-space:nowrap;padding:0;margin:0;border:0;background:none;overflow:visible;line-height:1.2em}body.skin--responsive #p-personal h3{position:absolute;top:-9999px}body.skin--responsive #p-personal .portlet,body.skin--responsive #p-personal .pBody{z-index:0;padding:0;margin:0;border:0;overflow:visible;background:none}body.skin--responsive #p-personal ul{border:0;line-height:1.4em;color:#2f6fab;padding:0;padding-right:2em;padding-left:14em;margin:0;float:right;list-style-type:none;list-style-image:none;z-index:0;background:none;cursor:default;box-sizing:border-box;max-width:100%}body.skin--responsive #p-personal li{z-index:0;border:0;padding:0;color:#2f6fab;display:inline;margin-left:1em;line-height:1.2em;background:none}body.skin--responsive #p-personal li a{color:#005896;text-decoration:none;padding-bottom:0.2em}body.skin--responsive #p-personal li a.new{color:#cc2200}body.skin--responsive #p-personal li a:hover{background-color:#fff;text-decoration:none}body.skin--responsive #p-personal li.active a:hover{background-color:transparent}body.skin--responsive li#pt-userpage,body.skin--responsive li#pt-anonuserpage{background-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 xmlns:xlink=%22http://www.w3.org/1999/xlink%22 width=%2216%22 height=%2216%22 viewBox=%220 0 4.233 4.233%22%3E %3Cdefs%3E %3ClinearGradient id=%22c%22%3E %3Cstop offset=%220%22 stop-color=%22%23fbeacf%22/%3E %3Cstop offset=%221%22 stop-color=%22%23f0bf7b%22/%3E %3C/linearGradient%3E %3ClinearGradient id=%22b%22%3E %3Cstop offset=%220%22 stop-color=%22%23f9e0ba%22/%3E %3Cstop offset=%221%22 stop-color=%22%23de8a3d%22/%3E %3C/linearGradient%3E %3ClinearGradient id=%22a%22%3E %3Cstop offset=%220%22 stop-color=%22%23dfedc7%22/%3E %3Cstop offset=%221%22 stop-color=%22%2389b92f%22/%3E %3C/linearGradient%3E %3ClinearGradient xlink:href=%22%23a%22 id=%22d%22 x1=%22.794%22 x2=%223.175%22 y1=%222.778%22 y2=%222.778%22 gradientUnits=%22userSpaceOnUse%22/%3E %3ClinearGradient xlink:href=%22%23b%22 id=%22f%22 x1=%221.587%22 x2=%222.381%22 y1=%221.058%22 y2=%221.587%22 gradientUnits=%22userSpaceOnUse%22/%3E %3CradialGradient xlink:href=%22%23c%22 id=%22e%22 cx=%221.984%22 cy=%222.381%22 r=%22.397%22 fx=%221.984%22 fy=%221.984%22 gradientTransform=%22matrix%28.33333 0 0 1.30283 1.323 -.469%29%22 gradientUnits=%22userSpaceOnUse%22/%3E %3C/defs%3E %3Cpath fill=%22url%28%23d%29%22 fill-rule=%22evenodd%22 d=%22m.661 3.307.133-.661.264-.265c.53-.264 1.323-.264 1.852 0l.265.265.132.661z%22/%3E %3Cpath fill=%22url%28%23e%29%22 fill-rule=%22evenodd%22 d=%22M1.587 2.117v.264l.265.265h.265l.264-.265v-.264c-.264-.265-.529-.265-.793 0z%22/%3E %3Cpath fill=%22url%28%23f%29%22 fill-rule=%22evenodd%22 d=%22M1.323 1.058v.53l.264.264c.265.265.53.265.794 0l.265-.265v-.529L2.116.53h-.264z%22/%3E %3Cpath fill=%22%234e4e4e%22 d=%22M2.646 1.058v.53h.264v-.53zM2.38 2.117v.264h.53v-.264zm.53.264v.265h.264V2.38zm.264.265v.529H.529v.265h2.91v-.795z%22/%3E %3Cpath fill=%22%23a3a3a3%22 d=%22M1.058 1.058v.53h.265v-.53zm.265.53v.264h.264v-.265zm-.265.529v.264h.53v-.264zm0 .264H.794v.265h.264zm-.264.265H.529v.529h.265z%22/%3E %3Cpath fill=%22%23768854%22 d=%22M1.587 2.381v.265h.265V2.38zm.265.265v.264h.265v-.264zm.265 0h.264V2.38h-.264z%22/%3E %3Cpath fill=%22%23a6774d%22 d=%22M2.381 1.587v.265h.265v-.265zm0 .265h-.793v.265h.793z%22/%3E %3Cpath fill=%22%239a7b54%22 fill-rule=%22evenodd%22 d=%22M1.984.397v.132c0 .265-.396.794-.793.794l.132-.53.264-.264z%22/%3E %3Cpath fill=%22%2393642b%22 fill-rule=%22evenodd%22 d=%22M1.984.397v.132c0 .265.397.794.794.794l-.132-.53L2.38.53z%22/%3E %3Cpath fill=%22%2386735c%22 d=%22M1.587.265v.264h.794V.265zm0 .264h-.264v.265h.264zm-.264.265h-.265v.529h.265z%22/%3E %3Cpath fill=%22%235a4934%22 d=%22M2.381.53v.264h.265V.529zm.265.264v.529h.264v-.53z%22/%3E %3Cpath fill=%22%2383b625%22 d=%22M1.323 2.91h.265v.265h-.265z%22/%3E %3Cpath fill=%22%236d971f%22 d=%22M2.646 2.91h.265v.265h-.265z%22/%3E %3Cpath fill=%22%23cde3a8%22 d=%22M1.058 2.91h.265v.265h-.265z%22/%3E %3Cpath fill=%22%23a9cd69%22 d=%22M2.381 2.91h.265v.265h-.265z%22/%3E %3C/svg%3E");background-position:top left;background-repeat:no-repeat;padding-left:20px}body.skin--responsive #p-lang{position:relative;z-index:3}body.skin--responsive #p-cactions{position:absolute;top:1.3em;left:11.5em;margin:0;white-space:nowrap;width:76%;line-height:1.1em;overflow:visible;background:none;border-collapse:collapse;padding-left:1em;font-size:95%}body.skin--responsive #p-cactions h3{position:absolute;top:-9999px}body.skin--responsive #p-cactions ul{list-style-type:none;list-style-image:none}body.skin--responsive #p-cactions li{display:inline;border:1px solid #aaa;border-bottom:0;margin:0 0.5em 0 0;padding:0 0 1em 0;overflow:visible;background:#fff}body.skin--responsive #p-cactions li.selected{border-color:#fabd23;font-weight:bold}body.skin--responsive #p-cactions li.selected a{z-index:3;background-color:#fff}body.skin--responsive #p-cactions li a{background-color:#fbfbfb;color:#002bb8;border:0;padding:0 0.8em 0.3em;position:relative;z-index:0;margin:0;text-decoration:none}body.skin--responsive #p-cactions li a:hover{z-index:3;text-decoration:none;background-color:#fff}body.skin--responsive #p-cactions li.istalk{margin-right:0}body.skin--responsive #p-cactions li.istalk a{padding-right:0.5em}body.skin--responsive #p-cactions .new a{color:#c20}body.skin--responsive #p-cactions #ca-addsection a{padding-left:0.4em;padding-right:0.4em}body.skin--responsive #p-cactions .pBody{font-size:1em;background-color:transparent;color:inherit;border-collapse:inherit;border:0;padding:0}body.skin--responsive li#ca-talk{margin-right:1.6em}body.skin--responsive li#ca-watch,body.skin--responsive li#ca-unwatch,body.skin--responsive li#ca-varlang-0,body.skin--responsive li#ca-print{margin-left:1.6em}body.skin--responsive #p-cactions li#ca-view,body.skin--responsive #p-personal #pt-notifications,body.skin--responsive #echo-hack-badges,body.skin--responsive #p-cactions-mobile,body.skin--responsive #sidebar-mobilejs,body.skin--responsive .mobile-close-button,body.skin--responsive .menu-toggle,body.skin--responsive .menus-cover{display:none}body.skin--responsive #f-poweredbyico,body.skin--responsive #f-copyrightico{margin:0 8px;position:relative;top:-2px}body.skin--responsive #f-poweredbyico{float:right;height:1%}body.skin--responsive #f-copyrightico{float:left;height:1%}}@media screen and (max-width:550px){body.skin--responsive{}body.skin--responsive #column-content{padding-top:6em}body.skin--responsive .mw-body{border-right:0;border-left:0}body.skin--responsive .menu-toggle{display:block;width:35px;height:35px;background:#ffffff;border:solid 1px #fabd23;box-sizing:border-box;background-position:50% 50%;background-repeat:no-repeat;z-index:4}body.skin--responsive #sidebar-toggle{background-image:url(./../-/icon-triangle-down.svg);position:absolute;top:5px;left:1em}body.skin--responsive #p-personal-toggle{background-image:url(./../-/icon-user.svg);position:absolute;top:5px;right:1em}body.skin--responsive #globalWrapper-toggle{background-image:url(./../-/icon-triangle-up.svg);margin:1em auto}body.skin--responsive #p-search{position:absolute;z-index:3;top:5px;left:0;width:100%;padding:0 55px;box-sizing:border-box}body.skin--responsive #p-search h3{position:absolute;top:-9999px;left:0}body.skin--responsive #searchBody{border:solid 1px #fabd23;background-color:#ffffff;height:35px;box-sizing:border-box}body.skin--responsive #searchform{position:relative;width:100%;padding:3px 42px 3px 9px;box-sizing:border-box}body.skin--responsive #searchInput{width:100%;height:27px;border:solid 1px #aaaaaa;padding:0 0.25em;box-sizing:border-box}body.skin--responsive #searchButton{position:absolute;box-sizing:border-box;top:1px;right:6px;height:31px;width:35px;text-indent:-99999px;border:0;background:none;background-image:url(./../-/icon-search.svg);background-position:50% 50%;background-repeat:no-repeat;cursor:pointer}body.skin--responsive #mw-searchButton{display:none}body.skin--responsive .client-nojs #p-cactions,body.skin--responsive .client-nojs #p-personal,body.skin--responsive .client-nojs #sidebar .generated-sidebar,body.skin--responsive .client-nojs #p-tb,body.skin--responsive .client-nojs #p-lang{margin:1em;overflow:visible}body.skin--responsive .client-nojs #p-cactions .pBody,body.skin--responsive .client-nojs #p-personal .pBody,body.skin--responsive .client-nojs #sidebar .generated-sidebar .pBody,body.skin--responsive .client-nojs #p-tb .pBody,body.skin--responsive .client-nojs #p-lang .pBody{border:solid 1px #aaaaaa;background:#ffffff;padding:0.5em}body.skin--responsive .client-nojs #p-cactions ul,body.skin--responsive .client-nojs #p-personal ul,body.skin--responsive .client-nojs #sidebar .generated-sidebar ul,body.skin--responsive .client-nojs #p-tb ul,body.skin--responsive .client-nojs #p-lang ul{margin:0}body.skin--responsive .client-nojs #p-cactions li,body.skin--responsive .client-nojs #p-personal li,body.skin--responsive .client-nojs #sidebar .generated-sidebar li,body.skin--responsive .client-nojs #p-tb li,body.skin--responsive .client-nojs #p-lang li{display:inline-block;border-left:solid 1px #aaaaaa;padding:0 0.5em;white-space:nowrap}body.skin--responsive .client-nojs #p-cactions li:first-child,body.skin--responsive .client-nojs #p-personal li:first-child,body.skin--responsive .client-nojs #sidebar .generated-sidebar li:first-child,body.skin--responsive .client-nojs #p-tb li:first-child,body.skin--responsive .client-nojs #p-lang li:first-child{border-left:0;padding-left:0}body.skin--responsive .client-nojs #p-cactions li#pt-notifications-alert,body.skin--responsive .client-nojs #p-personal li#pt-notifications-alert,body.skin--responsive .client-nojs #sidebar .generated-sidebar li#pt-notifications-alert,body.skin--responsive .client-nojs #p-tb li#pt-notifications-alert,body.skin--responsive .client-nojs #p-lang li#pt-notifications-alert,body.skin--responsive .client-nojs #p-cactions li#pt-notifications-notice,body.skin--responsive .client-nojs #p-personal li#pt-notifications-notice,body.skin--responsive .client-nojs #sidebar .generated-sidebar li#pt-notifications-notice,body.skin--responsive .client-nojs #p-tb li#pt-notifications-notice,body.skin--responsive .client-nojs #p-lang li#pt-notifications-notice{border-left:0}body.skin--responsive .client-nojs #p-cactions li.selected,body.skin--responsive .client-nojs #p-personal li.selected,body.skin--responsive .client-nojs #sidebar .generated-sidebar li.selected,body.skin--responsive .client-nojs #p-tb li.selected,body.skin--responsive .client-nojs #p-lang li.selected{font-weight:bold}body.skin--responsive .client-nojs #p-cactions li.selected a,body.skin--responsive .client-nojs #p-personal li.selected a,body.skin--responsive .client-nojs #sidebar .generated-sidebar li.selected a,body.skin--responsive .client-nojs #p-tb li.selected a,body.skin--responsive .client-nojs #p-lang li.selected a{color:#000000}body.skin--responsive .client-nojs #p-cactions h3,body.skin--responsive .client-nojs #p-personal h3,body.skin--responsive .client-nojs #sidebar .generated-sidebar h3,body.skin--responsive .client-nojs #p-tb h3,body.skin--responsive .client-nojs #p-lang h3{font-weight:normal}body.skin--responsive #p-cactions-mobile{position:absolute;top:3.75em;left:0;padding:0 1em;width:100%;box-sizing:border-box}body.skin--responsive #p-cactions-mobile h3{display:none}body.skin--responsive #p-cactions-mobile ul{margin:0;list-style:none}body.skin--responsive #p-cactions-mobile li{display:inline-block;border:1px solid #aaaaaa;border-bottom:0;margin-right:0.5em;height:2.5em}body.skin--responsive #p-cactions-mobile li a{text-indent:-99999px;width:1em;display:block;position:relative;padding:0.5em 1em 0.75em;background-color:#fbfbfb;background-image:url(./../-/icon-page.svg);background-position:50% 50%;background-repeat:no-repeat;text-transform:lowercase}body.skin--responsive #p-cactions-mobile li#ca-talk-mobile a{background-image:url(./../-/icon-chat.svg)}body.skin--responsive #p-cactions-mobile li#ca-more{border:0}body.skin--responsive #p-cactions-mobile li#ca-more a{background-color:transparent;background-image:url(./../-/icon-triangle-ltr.svg);background-position:100% 40%;text-indent:0;padding-left:0.5em;padding-right:1.35em;width:auto}body.skin--responsive #p-cactions-mobile li#ca-languages a{background-image:url(./../-/icon-globe.svg)}body.skin--responsive #p-cactions-mobile li#ca-tools a{background-image:url(./../-/icon-tools.svg)}body.skin--responsive #p-cactions-mobile li.selected{border-color:#fabd23;font-weight:bold}body.skin--responsive #p-cactions-mobile li.selected a,body.skin--responsive #p-cactions-mobile li:hover a{z-index:3;background-color:#ffffff;text-decoration:none}body.skin--responsive #p-cactions-mobile li#ca-languages,body.skin--responsive #p-cactions-mobile li#ca-tools{float:right;margin-right:0;margin-left:0.5em}body.skin--responsive .mw-footer li{margin-left:0}body.skin--responsive #f-poweredbyico,body.skin--responsive #f-copyrightico{display:inline-block;margin:0 0.5em 1em}body.skin--responsive div.thumb{float:none;margin:1em auto}body.skin--responsive div.tright{margin-left:0;padding-left:0}body.skin--responsive div.tleft{margin-right:0;padding-right:0}body.skin--responsive .thumbinner{width:100% !important;box-sizing:border-box}body.skin--responsive .monobook-body{overflow:auto}body.skin--responsive .monobook-body img{height:auto !important;max-width:100% !important}body.skin--responsive #toc,body.skin--responsive .toc,body.skin--responsive .mw-warning{width:100%;box-sizing:border-box}body.skin--responsive .nomobile{display:none}}.mw-wiki-logo{background-image:url(./../-/wiki.png)}@media print{table.floatright,div.floatright{border:0}table.floatleft,div.floatleft{border:0}div.thumb{page-break-inside:avoid}div.thumb a{border-bottom:0}div.thumbinner{border:1px;background-color:#ffffff;font-size:10pt;color:#666666;border-radius:2px;min-width:100px}.thumbborder{border:1pt solid #dddddd}.magnify{display:none}.mw-parser-output a.external{}.mw-parser-output a.external.text:after,.mw-parser-output a.external.autonumber:after{content:' (' attr(href) ')';word-break:break-all;word-wrap:break-word}.mw-parser-output a.external.text[href^='//']:after,.mw-parser-output a.external.autonumber[href^='//']:after{content:' (https:' attr(href) ')'}.wikitable{background:#fff;margin:1em 0;border:1pt solid #aaa;border-collapse:collapse;font-size:10pt;page-break-inside:avoid}.wikitable > caption{padding:5px;font-size:10pt}.wikitable > tr > th,.wikitable > tr > td,.wikitable > * > tr > th,.wikitable > * > tr > td{background:#fff !important;color:#000 !important;border:1pt solid #aaa;padding:0.4em 0.6em}.wikitable > tr > th,.wikitable > * > tr > th{text-align:center}table.listing,table.listing td{border:1pt solid #000;border-collapse:collapse}.catlinks ul{display:inline;padding:0;list-style:none}.catlinks li{display:inline-block;line-height:1.15;margin:0.1em 0;border-left:1pt solid #aaa;padding:0 0.4em}.catlinks li:first-child{border-left:0;padding-left:0.2em}.mw-hidden-catlinks,.catlinks{display:none}.mw-editsection,.mw-editsection-like,.mw-indicators,#siteNotice,.usermessage{display:none}.printfooter{padding:1em 0}.center{text-align:center}a{background:none !important;padding:0 !important}a,a.external,a.new,a.stub{color:inherit !important;text-decoration:inherit !important}dt{font-weight:bold}h1,h2,h3,h4,h5,h6{font-weight:bold;page-break-after:avoid;page-break-before:avoid}p{margin:1em 0;line-height:1.2;orphans:3;widows:3}img,figure{page-break-inside:avoid}img{border:0;vertical-align:middle}pre,.mw-code{background:#fff;color:#000;border:1pt dashed #000;padding:1em;font-size:8pt;white-space:pre-wrap;overflow-x:hidden;word-wrap:break-word}ul{list-style-type:square}.toctogglecheckbox:checked + .toctitle{display:none}.toc{background-color:#f9f9f9;border:1pt solid #aaa;padding:5px;display:table}.tocnumber,.toctext{display:table-cell}.tocnumber{padding-left:0;padding-right:0.5em}.mw-content-ltr .tocnumber{padding-left:0;padding-right:0.5em}.mw-content-rtl .tocnumber{padding-left:0.5em;padding-right:0}}@media screen{div.thumbinner{border:1px solid #c8ccd1;background-color:#f8f9fa;font-size:94%}.thumbimage{background-color:#ffffff;border:1px solid #c8ccd1}.thumbcaption{border:0;font-size:94%}.thumbborder{border:1px solid #eaecf0}.magnify{float:right;margin-left:3px}.magnify a{display:block;text-indent:15px;white-space:nowrap;overflow:hidden;width:15px;height:11px;background-image:url(./../-/magnify-clip-ltr.svg);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mw-content-ltr .thumbcaption{text-align:left}.mw-content-rtl .thumbcaption{text-align:right}.mw-content-ltr .magnify{margin-left:3px;margin-right:0;float:right}.mw-content-ltr .magnify a{background-image:url(./../-/magnify-clip-ltr.svg)}.mw-content-rtl .magnify{margin-left:0;margin-right:3px;float:left}.mw-content-rtl .magnify a{background-image:url(./../-/magnify-clip-rtl.svg)}a.new{color:#cc2200}a.mw-selflink{color:inherit;font-weight:bold;text-decoration:inherit}a.mw-selflink:hover{cursor:inherit;text-decoration:inherit}a.mw-selflink:active,a.mw-selflink:visited{color:inherit}a.new:visited{color:#a55858}.mw-parser-output a.extiw,.mw-parser-output a.external{color:#3366bb}.mw-parser-output a.extiw:visited,.mw-parser-output a.external:visited{color:#663366}.mw-parser-output a.extiw:active,.mw-parser-output a.external:active{color:#bb6633}.mw-underline-always a{text-decoration:underline}.mw-underline-never a{text-decoration:none}.plainlinks a.external{background:none !important;padding:0 !important}.mw-parser-output a.external{color:#36b}.mw-parser-output a.external,.link-mailto,.link-ftp,.link-irc,.link-audio,.link-video,.link-document{background-image:url(./../-/external-ltr.svg);background-position:center right;background-repeat:no-repeat;padding-right:13px}.mw-parser-output a.external[href^='mailto:'],.link-mailto{background-image:url(./../-/mail.svg)}.mw-parser-output a.external[href^='ftp://'],.link-ftp{background-image:url(./../-/ftp-ltr.svg)}.mw-parser-output a.external[href^='irc://'],.mw-parser-output a.external[href^='ircs://'],.link-irc{background-image:url(./../-/chat-ltr.svg)}.mw-parser-output a.external[href$='.ogg'],.mw-parser-output a.external[href$='.OGG'],.mw-parser-output a.external[href$='.mid'],.mw-parser-output a.external[href$='.MID'],.mw-parser-output a.external[href$='.midi'],.mw-parser-output a.external[href$='.MIDI'],.mw-parser-output a.external[href$='.mp3'],.mw-parser-output a.external[href$='.MP3'],.mw-parser-output a.external[href$='.wav'],.mw-parser-output a.external[href$='.WAV'],.mw-parser-output a.external[href$='.wma'],.mw-parser-output a.external[href$='.WMA'],.link-audio{background-image:url(./../-/audio-ltr.svg)}.mw-parser-output a.external[href$='.ogm'],.mw-parser-output a.external[href$='.OGM'],.mw-parser-output a.external[href$='.avi'],.mw-parser-output a.external[href$='.AVI'],.mw-parser-output a.external[href$='.mpeg'],.mw-parser-output a.external[href$='.MPEG'],.mw-parser-output a.external[href$='.mpg'],.mw-parser-output a.external[href$='.MPG'],.link-video{background-image:url(./../-/video.svg)}.mw-parser-output a.external[href$='.pdf'],.mw-parser-output a.external[href$='.PDF'],.mw-parser-output a.external[href*='.pdf#'],.mw-parser-output a.external[href*='.PDF#'],.mw-parser-output a.external[href*='.pdf?'],.mw-parser-output a.external[href*='.PDF?'],.link-document{background-image:url(./../-/document-ltr.svg)}.mw-parser-output a.extiw,.mw-parser-output a.extiw:active{color:#36b}.mw-body-content:after{clear:both;content:'';display:block}.mw-body-content a.external.free{word-wrap:break-word}.mw-body-content .error{font-size:larger;color:#d33}.rtl .mw-parser-output a.external.free,.rtl .mw-parser-output a.external.autonumber{direction:ltr;unicode-bidi:embed}.mw-hide-empty-elt .mw-parser-output:not(.mw-show-empty-elt) .mw-empty-elt{display:none}.wikitable{background-color:#f8f9fa;color:#202122;margin:1em 0;border:1px solid #a2a9b1;border-collapse:collapse}.wikitable > tr > th,.wikitable > tr > td,.wikitable > * > tr > th,.wikitable > * > tr > td{border:1px solid #a2a9b1;padding:0.2em 0.4em}.wikitable > tr > th,.wikitable > * > tr > th{background-color:#eaecf0;text-align:center}.wikitable > caption{font-weight:bold}#catlinks{text-align:left}.catlinks{border:1px solid #a2a9b1;background-color:#f8f9fa;padding:5px;margin-top:1em;clear:both}.catlinks ul{display:inline;margin:0;padding:0;list-style:none}.catlinks li{display:inline-block;line-height:1.25em;border-left:1px solid #a2a9b1;margin:0.125em 0;padding:0 0.5em}.catlinks li:first-child{padding-left:0.25em;border-left:0}.catlinks li a.mw-redirect{font-style:italic}.mw-hidden-cats-hidden,.catlinks-allhidden{display:none}.emptyPortlet{display:none}.printfooter,.client-nojs #t-print{display:none}.mw-editsection{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.mw-editsection,.mw-editsection-like{font-size:small;font-weight:normal;margin-left:1em;vertical-align:baseline;line-height:1em}.mw-content-ltr .mw-editsection,.mw-content-rtl .mw-content-ltr .mw-editsection,.mw-content-ltr .mw-editsection-like,.mw-content-rtl .mw-content-ltr .mw-editsection-like{margin-left:1em;margin-right:0}.mw-content-rtl .mw-editsection,.mw-content-ltr .mw-content-rtl .mw-editsection,.mw-content-rtl .mw-editsection-like,.mw-content-ltr .mw-content-rtl .mw-editsection-like{margin-right:1em;margin-left:0}.mw-indicators{float:right}#siteNotice{position:relative;text-align:center;margin:0}#localNotice{margin-bottom:0.9em}#siteSub{display:none}#contentSub,#contentSub2{font-size:84%;line-height:1.2em;margin:0 0 1.4em 1em;color:#54595d;width:auto}span.subpages{display:block}.usermessage{background-color:#fef6e7;border:1px solid #fc3;color:#000;font-weight:bold;margin:2em 0 1em;padding:0.5em 1em;vertical-align:middle}a{text-decoration:none;color:#002bb8;background:none}a:not([href]){cursor:pointer}a:visited{color:#5a3696}a:active{color:#faa700}a:hover,a:focus{text-decoration:underline}a:lang(ar),a:lang(kk-arab),a:lang(mzn),a:lang(ps),a:lang(ur){text-decoration:none}img{border:0;vertical-align:middle}hr{height:1px;background-color:#a2a9b1;border:0;margin:0.2em 0}h1,h2,h3,h4,h5,h6{color:#000;margin:0;padding-top:0.5em;padding-bottom:0.17em;overflow:hidden}h1,h2{margin-bottom:0.6em;border-bottom:1px solid #a2a9b1}h3,h4,h5{margin-bottom:0.3em}h1{font-size:188%;font-weight:normal}h2{font-size:150%;font-weight:normal}h3{font-size:128%}h4{font-size:116%}h5{font-size:108%}h6{font-size:100%}p{margin:0.4em 0 0.5em 0}p img{margin:0}ul{margin:0.3em 0 0 1.6em;padding:0}ol{margin:0.3em 0 0 3.2em;padding:0;list-style-image:none}li{margin-bottom:0.1em}dt{font-weight:bold;margin-bottom:0.1em}dl{margin-top:0.2em;margin-bottom:0.5em}dd{margin-left:1.6em;margin-bottom:0.1em}pre,code,tt,kbd,samp,.mw-code{font-family:monospace,monospace}pre,code,.mw-code{background-color:#f8f9fa;color:#000;border:1px solid #eaecf0}code{border-radius:2px;padding:1px 4px}pre,.mw-code{padding:1em;white-space:pre-wrap;overflow-x:hidden;word-wrap:break-word}table{font-size:100%}fieldset{border:1px solid #2a4b8d;margin:1em 0 1em 0;padding:0 1em 1em}legend{padding:0.5em}form{border:0;margin:0}textarea{display:block;box-sizing:border-box;width:100%;border:1px solid #c8ccd1;padding:0.1em}.center{width:100%;text-align:center}*.center *{margin-left:auto;margin-right:auto}.small{font-size:94%}table.small{font-size:100%}@counter-style meetei{system:numeric;symbols:'\ABF0' '\ABF1' '\ABF2' '\ABF3' '\ABF4' '\ABF5' '\ABF6' '\ABF7' '\ABF8' '\ABF9';suffix:') '}@counter-style santali{system:numeric;symbols:'\1C50' '\1C51' '\1C52' '\1C53' '\1C54' '\1C55' '\1C56' '\1C57' '\1C58' '\1C59'}@counter-style myanmar_with_period{system:numeric;symbols:'\1040' '\1041' '\1042' '\1043' '\1044' '\1045' '\1046' '\1047' '\1048' '\1049';suffix:'\104B\0020'}ol:lang(azb) li,ol:lang(bcc) li,ol:lang(bgn) li,ol:lang(bqi) li,ol:lang(fa) li,ol:lang(glk) li,ol:lang(kk-arab) li,ol:lang(lrc) li,ol:lang(luz) li,ol:lang(mzn) li{list-style-type:persian}ol:lang(ckb) li,ol:lang(sdh) li{list-style-type:arabic-indic}ol:lang(hi) li,ol:lang(mai) li,ol:lang(mr) li,ol:lang(ne) li{list-style-type:devanagari}ol:lang(as) li,ol:lang(bn) li{list-style-type:bengali}ol:lang(mni) li{list-style-type:meetei}ol:lang(or) li{list-style-type:oriya}ol:lang(sat) li{list-style-type:santali}ol:lang(blk) li,ol:lang(kjp) li,ol:lang(ksw) li,ol:lang(mnw) li,ol:lang(my) li,ol:lang(shn) li{list-style-type:myanmar_with_period}.mw-content-ltr ul,.mw-content-rtl .mw-content-ltr ul{margin:0.3em 0 0 1.6em;padding:0}.mw-content-rtl ul,.mw-content-ltr .mw-content-rtl ul{margin:0.3em 1.6em 0 0;padding:0}.mw-content-ltr ol,.mw-content-rtl .mw-content-ltr ol{margin:0.3em 0 0 3.2em;padding:0}.mw-content-rtl ol,.mw-content-ltr .mw-content-rtl ol{margin:0.3em 3.2em 0 0;padding:0}.mw-content-ltr dd,.mw-content-rtl .mw-content-ltr dd{margin-left:1.6em;margin-right:0}.mw-content-rtl dd,.mw-content-ltr .mw-content-rtl dd{margin-right:1.6em;margin-left:0}h1:lang(anp),h1:lang(as),h1:lang(bh),h1:lang(bho),h1:lang(blk),h1:lang(bn),h1:lang(gu),h1:lang(hi),h1:lang(kjp),h1:lang(kn),h1:lang(ks),h1:lang(ksw),h1:lang(ml),h1:lang(mr),h1:lang(my),h1:lang(mai),h1:lang(mnw),h1:lang(ne),h1:lang(new),h1:lang(or),h1:lang(pa),h1:lang(pi),h1:lang(sa),h1:lang(shn),h1:lang(syl),h1:lang(ta),h1:lang(te){line-height:1.6em !important}h2:lang(anp),h2:lang(as),h2:lang(bh),h2:lang(bho),h2:lang(blk),h2:lang(bn),h2:lang(gu),h2:lang(hi),h2:lang(kjp),h2:lang(kn),h2:lang(ks),h2:lang(ksw),h2:lang(ml),h2:lang(mr),h2:lang(my),h2:lang(mai),h2:lang(mnw),h2:lang(ne),h2:lang(new),h2:lang(or),h2:lang(pa),h2:lang(pi),h2:lang(sa),h2:lang(shn),h2:lang(syl),h2:lang(ta),h2:lang(te),h3:lang(anp),h3:lang(as),h3:lang(bh),h3:lang(bho),h3:lang(blk),h3:lang(bn),h3:lang(gu),h3:lang(hi),h3:lang(kjp),h3:lang(kn),h3:lang(ks),h3:lang(ksw),h3:lang(ml),h3:lang(mr),h3:lang(my),h3:lang(mai),h3:lang(mnw),h3:lang(ne),h3:lang(new),h3:lang(or),h3:lang(pa),h3:lang(pi),h3:lang(sa),h3:lang(shn),h3:lang(syl),h3:lang(ta),h3:lang(te),h4:lang(anp),h4:lang(as),h4:lang(bh),h4:lang(bho),h4:lang(blk),h4:lang(bn),h4:lang(gu),h4:lang(hi),h4:lang(kjp),h4:lang(kn),h4:lang(ks),h4:lang(ksw),h4:lang(ml),h4:lang(mr),h4:lang(my),h4:lang(mai),h4:lang(mnw),h4:lang(ne),h4:lang(new),h4:lang(or),h4:lang(pa),h4:lang(pi),h4:lang(sa),h4:lang(shn),h4:lang(syl),h4:lang(ta),h4:lang(te),h5:lang(anp),h5:lang(as),h5:lang(bh),h5:lang(bho),h5:lang(blk),h5:lang(bn),h5:lang(gu),h5:lang(hi),h5:lang(kjp),h5:lang(kn),h5:lang(ks),h5:lang(ksw),h5:lang(ml),h5:lang(mr),h5:lang(my),h5:lang(mai),h5:lang(mnw),h5:lang(ne),h5:lang(new),h5:lang(or),h5:lang(pa),h5:lang(pi),h5:lang(sa),h5:lang(shn),h5:lang(syl),h5:lang(ta),h5:lang(te),h6:lang(anp),h6:lang(as),h6:lang(bh),h6:lang(bho),h6:lang(blk),h6:lang(bn),h6:lang(gu),h6:lang(hi),h6:lang(kjp),h6:lang(kn),h6:lang(ks),h6:lang(ksw),h6:lang(ml),h6:lang(mr),h6:lang(my),h6:lang(mai),h6:lang(mnw),h6:lang(ne),h6:lang(new),h6:lang(or),h6:lang(pa),h6:lang(pi),h6:lang(sa),h6:lang(shn),h6:lang(syl),h6:lang(ta),h6:lang(te){line-height:1.4em}h2:lang(th){line-height:1.6}.toc,.toccolours{border:1px solid #a2a9b1;background-color:#f8f9fa;padding:5px;font-size:95%}.toc{display:table;padding:7px}.toc h2{display:inline;border:0;padding:0;font-size:100%;font-weight:bold}.toc .toctitle{text-align:center}.toc ul{list-style:none;margin:0.3em 0;padding:0;text-align:left}.toc ul ul{margin:0 0 0 2em}table.toc{border-collapse:collapse}table.toc td{padding:0}.tocnumber,.toctext{display:table-cell;text-decoration:inherit}.tocnumber{color:#202122;padding-left:0;padding-right:0.5em}.mw-content-ltr .tocnumber{padding-left:0;padding-right:0.5em}.mw-content-rtl .tocnumber{padding-left:0.5em;padding-right:0}.toctogglecheckbox{display:inline !important;position:absolute;opacity:0;z-index:-1}.toctogglespan{font-size:94%}.toctogglespan:before{content:' ['}.toctogglespan:after{content:']'}.toctogglelabel{cursor:pointer;color:#0645ad}.toctogglelabel:hover{text-decoration:underline}.toctogglecheckbox:focus + .toctitle .toctogglelabel{text-decoration:underline;outline:dotted 1px;outline:auto -webkit-focus-ring-color}.toctogglecheckbox:checked + .toctitle .toctogglelabel:after{content:'afficher'}.toctogglecheckbox:not(:checked) + .toctitle .toctogglelabel:after{content:'masquer'}.toc .toctitle{direction:ltr}.mw-content-ltr .toc ul,.mw-content-rtl .mw-content-ltr .toc ul{text-align:left}.mw-content-rtl .toc ul,.mw-content-ltr .mw-content-rtl .toc ul{text-align:right}.mw-content-ltr .toc ul ul,.mw-content-rtl .mw-content-ltr .toc ul ul{margin:0 0 0 2em}.mw-content-rtl .toc ul ul,.mw-content-ltr .mw-content-rtl .toc ul ul{margin:0 2em 0 0}} diff --git a/download-website-script/localhost/Accueil.html b/download-website-script/localhost/Accueil.html new file mode 100644 index 0000000..e6dfa25 --- /dev/null +++ b/download-website-script/localhost/Accueil.html @@ -0,0 +1,22 @@ + Accueil

Accueil

De Gruntnetwork
Aller à la navigationAller à la recherche

gruntnetwork

gruntnetwork est un système d'exploitation sous licence Affero GPL. Actuellement il est en phase de développement, dans le cadre d'un projet pédagogique à l'Université Montpellier 2.

Nouveau Développeur ?

S'inscrire

  • Créez-vous un compte sur TuxFmaily et adhérez au projet gruntnetwork
  • Créez-vous un compte sur le wiki
  • Créez-vous un compte sur le tracker

À lire

  • Prérequis : Un peu de lecture pour les vacances. Si vous ne savez rien sur les sujets listés dans cette page, vous risquez d'être à la traîne.
  • Conventions : À respecter, pour un code homogène. Si vous avez quoi que ce soit à redire dessus, faites-le vite, avant qu'on ait des centaines de lignes à reformater :)
  • Environnement de programmation : Avec quoi on travaille (Emacs ou Vim + gcc + qemu ou bochs).
  • Feuille de route : Qui fait quoi, Quand, dans Quel ordre.
  • Liens : Quand vous ne saurez plus comment faire un truc en assembleur :)

notes

\ No newline at end of file diff --git a/download-website-script/localhost/Affichage_Graphique.html b/download-website-script/localhost/Affichage_Graphique.html new file mode 100644 index 0000000..767b1f0 --- /dev/null +++ b/download-website-script/localhost/Affichage_Graphique.html @@ -0,0 +1,22 @@ + Affichage Graphique
\ No newline at end of file diff --git a/download-website-script/localhost/Conventions.html b/download-website-script/localhost/Conventions.html new file mode 100644 index 0000000..8f8f00e --- /dev/null +++ b/download-website-script/localhost/Conventions.html @@ -0,0 +1,28 @@ + Conventions

Conventions

De Gruntnetwork
Aller à la navigationAller à la recherche

Les conventions suivantes seront utilisées pour un code homogène.

En C

  • L'indentation se fait à 4 espaces par tabulation.
  • Pas de transformation des espaces en tabulation.
  • nomsDeVariables
  • NOMS_DE_CONSTANTE
  • Fonctions :
 type_retour nom_fonction(type_param_1 param_1, ..., type_param_n param_n) {
+ code;
+ }
+
  • Boucles for, avec déclaration locale à la boucle de l'itérateur s'il n'a pas lieu d'être à l'extérieur (int i=a) :
 for (int i=a; i<b; i++) {
+ code;
+ }
+

En assembleur

On utilisera la syntaxe Gas, car elle est compatible avec le compilateur GCC

\ No newline at end of file diff --git a/download-website-script/localhost/Drivers/mode_reel.h:int86.html b/download-website-script/localhost/Drivers/mode_reel.h:int86.html new file mode 100644 index 0000000..26d3775 --- /dev/null +++ b/download-website-script/localhost/Drivers/mode_reel.h:int86.html @@ -0,0 +1,22 @@ + Drivers/mode reel.h:int86

Drivers/mode reel.h:int86

De Gruntnetwork
Aller à la navigationAller à la recherche

int86

void int86(d:int interruption, d:regs86 registres_in, r:regs86 registres_out );

Description

d:registres_in est la valeur des registres avant l'interruption d:interruption, r:registres_out est la valeur des registres après interruption.

Cette fonction n'est pas encore écrite.

\ No newline at end of file diff --git a/download-website-script/localhost/Environnement_de_programmation.html b/download-website-script/localhost/Environnement_de_programmation.html new file mode 100644 index 0000000..1b6b374 --- /dev/null +++ b/download-website-script/localhost/Environnement_de_programmation.html @@ -0,0 +1,24 @@ + Environnement de programmation

Environnement de programmation

De Gruntnetwork
Aller à la navigationAller à la recherche

Éditeur

Votre préféré :) Personne ne vous oblige à quoi que ce soit. Prévoyez-en un avec indentation et coloration syntaxique quand même, nano et cat sont un peu rudimentaires de ce point de vue…

Gestion des versions

SVN sera utilisé pour la gestion des versions.

 svn co svn+ssh://VOTREUSER@svn.tuxfamily.org/svnroot/gruntnetwork/systeme 
+ svn co svn+ssh://VOTREUSER@svn.tuxfamily.org/svnroot/gruntnetwork/applications
+

Voir la faq de TuxFamily pour plus d'infos sur l'utilisation.

Compilateur

Pour le C : gcc. Car c'est le plus courant sous linux, car il gère directement l'assembleur (syntaxe gas), car beaucoup de monde l'utilise donc on trouvera facilement de la documentation, car il est sous licence libre.

On utilisera la version 4.3, de préférence 4.3.2 (c'est celle par défaut sous ubuntu, et sous debian testing/unstable). Si vous avez une autre version, pas de problème, mais en cas de bug bizarre, il vaudra mieux vérifier que c'est bien le code qui plante et non pas une version bugguée de gcc (c'est arrivé par le passé…)

Tests

NE TESTEZ JAMAIS gruntnetwork SUR UN PC RÉEL, à moins que vous n'ayez pas peur d'un effacement de disque. Je possède moi-même un PC avec un vieux disque dur vide de quelques Go, ça pourra servir pour faire des tests grandeur nature lorsque le projet sera viable.

Pour les tests nous utiliserons qemu, un émulateur de PC libre, fonctionnant sous linux et windows, probablement sous mac aussi. Seule l'architecture x86 sera supportée pour l'instant.

Lorsque nous en viendrons à écrire les drivers, il sera possible d'utiliser bochs pour voir si les bons drivers sont chargés lorsque la configuration matérielle (l'ensemble du matériel disponible sur un PC) change.

Le démarrage (boot) sera assuré par GRUB, installé sur une image de disquette vierge (un fichier de 1.44 Mo simulant une disquette sur laquelle seront présents GRUB, gruntnetwork et rien d'autre). Cette configuration simple évitera que d'autres facteurs de causent des bugs.

\ No newline at end of file diff --git a/download-website-script/localhost/GRUB.html b/download-website-script/localhost/GRUB.html new file mode 100644 index 0000000..4889184 --- /dev/null +++ b/download-website-script/localhost/GRUB.html @@ -0,0 +1,22 @@ + GRUB

GRUB

De Gruntnetwork
Aller à la navigationAller à la recherche

Grub est le chargeur de démarrage utilisé par gruntnetwork.

Lors du démarrage de l'ordinateur, il est chargé en mémoire par le BIOS (Basic Input Output System), puis il est exécuté. Sa tâche consiste alors à afficher un menu à l'écran permettant à l'utilisateur de choisir le système d'exploitation qu'il souhaite démarrer.

\ No newline at end of file diff --git a/download-website-script/localhost/I/cc-0.png b/download-website-script/localhost/I/cc-0.png new file mode 100644 index 0000000000000000000000000000000000000000..9d3fe5f8c9a9a91543164d6c7435a0e6863da7e3 GIT binary patch literal 969 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

KZvTkqO7M$cG zbY0UUzH4&z<4<3`J;DZGzC8PPXK`mfN&1$hrLMg_|67+K`q_^;S69C`CYcl})_G3K z^{2tVjMv!Nymh$%%nAZY12u-JJBXDi7N%ShGu_<&B>mQJ>DKroXVyp_a&ZFaSKJv`IJn1lmXyr@SV||MsWu}w z$uh`7E;rJkuZkUMNyf;YYRKr?y*Xad$$l+WW_rx^ji&|28{mz?yt=Hj3KL#b=!^2s zR?m3+)S7<08L#C3y}`|s@+KP4v#gw)M`ZW4W`qC?0w`~$#$h5tn^05ZOnGy!N2gMo zszPXQFWTMp12i{A0E*yL3AiRHDcOFw{8Cs%b>3!NzuGnl&Mr-}tCzh5BowZHCnF_v1Ty(~}Zzj~pe zB}}=CSQfHxth}>7s_J@W`lWwRQH{96-FO!zEuNTfVkO;@3|q%8>eFNT&|RKsuX}bi zR&Rm6uLh{dyL^W5HzKs-9p&trn`6DE-eGKP1_5wl!OS)A>YA3U;eLc;C8p%epNFY@Xv>#rsOQ`;Hn~(|%50Bp_+IEe(YDDw)S!EyT}@;# z3$4??yDj2pegM-FFl3#Zn}Z+>%*+-kbxwcwLKJ>BoTrmUOreDC8gI4uqr zD;JwymbOo>5KrcmjcJ;RDD3Og8FN<%=}@$N7eu^HTA98_ciIaAO%A`XV8Z9Yq? zXMr@#vACb1uXf-qm^_W2prS1|G)MgJw$VZ>H3g!G&uqs=ol8A4W%W2QZr{zV!f(La zaU-X%q!|{?@L%@7&MGCabOwPVjL+C3#W5H@FtZ2>+^}sHkaRRbVbeuZ1KK*2LM#q{ z@S81c;^uF~mwh8bP5AY8PK!h&)};JmsTmGMi7Q>qLO&IEA1uXe>n|?t{8cT8kB{dT zIMEYLZF6<3+VC+aJtTYf73BVyo*{@WILP6bBk8X^(K0tTuSAK6=rTc}hEQhaye?_^ z96b}t=E+^>E~O!j;8t)crQctVk4J}%bCr_TZe<{`I z3R(Zr(iVei3fWtBC>;9jnKj5p#z=SMD{LO6lc+3Gc`xhB%jae|r0&qTx=-n|1IDeW zb-p6NKck4BuC*Wbo}V+y$=4Y$AUPR18A(}LNjZ578CjHqB1!>yRYnFSBV%7YF7 Langage

Langage

De Gruntnetwork
Aller à la navigationAller à la recherche

gruntnetwork utilise de manière interne un langage de programmation graphique, qui se présente de la manière suivante :

  • Les fonctions sont représentées par des blocs
  • Les blocs possèdent des ports d'entrée (paramètres de la fonction) et de sortie (valeurs de sortie)
  • Un bloc n'est pas caractérisé par son nom, mais par un identifiant interne, donc pas de conflits de nommage
  • Les ports ont des conditions sur leurs valeurs (type, intervalle de valeurs, …)
  • Les ports peuvent (devraient) avoir une valeur par défaut
  • Les ports ont un nom et une description associée
  • Les blocs sont reliés entre eux en connectant leurs ports
  • Un port de sortie peut être connecté à plusieurs ports d'entrée, la valeur de sortie étant conservée en mémoire tant qu'elle est nécessaire (ceci est l'équivalent d'un let en scheme, ou d'une variable locale)
  • Un bloc est composé d'autres blocs dont certains ports sont connectés aux ports du bloc englobant.

Il y a une certaine analogie entre les blocs et des circuits éléctroniques : l'information circule au travers des connexions et est modifiée par les blocs. Un bloc effectue une tâche définie, et peut être vu comme un composant électronique : on n'a pas besoin de voir à l'intérieur pour l'utiliser.

Le langage s'écrit au travers d'une interface de recherche, qui permet de sélectionner le bon bloc parmi plusieurs homonymes s'il y en a.

\ No newline at end of file diff --git a/download-website-script/localhost/Liens.html b/download-website-script/localhost/Liens.html new file mode 100644 index 0000000..b0bf59a --- /dev/null +++ b/download-website-script/localhost/Liens.html @@ -0,0 +1,22 @@ + Liens

Liens

De Gruntnetwork
Aller à la navigationAller à la recherche

Notions

  • BIOS pour ceux qui ne savent pas ce que c'est

Assembleur

Démarrage (boot)

Modes du processeur (réel, protégé, ...)

Affichage Graphique

Voir l'article Affichage Graphique.

Références VESA

Drivers

Souris

  • Mouse Input : Comment configurer et écouter une souris PS/2 sur osdev.org

Clavier

Portails

Tutoriels

  • Pépin : tuto du boot au shell, très complet.
  • AAProg : Pas beaucoup de code mais de très bonnes explications
  • Tutoriels sur Bona Fide

Petits systèmes d'exploitation

Toujours pratique pour s'inspirer…

Divers

  • Sujet sur le site du zéro, pas mal de liens
\ No newline at end of file diff --git a/download-website-script/localhost/M/Creator b/download-website-script/localhost/M/Creator new file mode 100644 index 0000000..e69de29 diff --git a/download-website-script/localhost/M/Date b/download-website-script/localhost/M/Date new file mode 100644 index 0000000..2a14a29 --- /dev/null +++ b/download-website-script/localhost/M/Date @@ -0,0 +1 @@ +2023-05-07 \ No newline at end of file diff --git a/download-website-script/localhost/M/Description b/download-website-script/localhost/M/Description new file mode 100644 index 0000000..e69de29 diff --git a/download-website-script/localhost/M/Language b/download-website-script/localhost/M/Language new file mode 100644 index 0000000..4443fe5 --- /dev/null +++ b/download-website-script/localhost/M/Language @@ -0,0 +1 @@ +fra \ No newline at end of file diff --git a/download-website-script/localhost/M/Name b/download-website-script/localhost/M/Name new file mode 100644 index 0000000..5b8727a --- /dev/null +++ b/download-website-script/localhost/M/Name @@ -0,0 +1 @@ +wikizimmer.my_wiki \ No newline at end of file diff --git a/download-website-script/localhost/M/Publisher b/download-website-script/localhost/M/Publisher new file mode 100644 index 0000000..e69de29 diff --git a/download-website-script/localhost/M/Source b/download-website-script/localhost/M/Source new file mode 100644 index 0000000..5b14ab0 --- /dev/null +++ b/download-website-script/localhost/M/Source @@ -0,0 +1 @@ +http://localhost/ \ No newline at end of file diff --git a/download-website-script/localhost/M/Title b/download-website-script/localhost/M/Title new file mode 100644 index 0000000..05bb247 --- /dev/null +++ b/download-website-script/localhost/M/Title @@ -0,0 +1 @@ +Gruntnetwork \ No newline at end of file diff --git a/download-website-script/localhost/M/mainpage b/download-website-script/localhost/M/mainpage new file mode 100644 index 0000000..45a2924 --- /dev/null +++ b/download-website-script/localhost/M/mainpage @@ -0,0 +1 @@ +Accueil \ No newline at end of file diff --git a/download-website-script/localhost/Notes.html b/download-website-script/localhost/Notes.html new file mode 100644 index 0000000..f02c9ab --- /dev/null +++ b/download-website-script/localhost/Notes.html @@ -0,0 +1,22 @@ + Notes

Notes

De Gruntnetwork
Aller à la navigationAller à la recherche

Permettre à une construction de déclarer des mot-clés (keywords) qui seront valides ou non à certains endroits du code dans la construction, mais ne pourront pas être redéclarés tant que la construction a un effet. C'est une alternative à la possibilité de rajouter des variables "par nom" pour qu'elles soient utilisées par ex. par le code d'une fonction.

\ No newline at end of file diff --git a/download-website-script/localhost/Nouveau_Développeur.html b/download-website-script/localhost/Nouveau_Développeur.html new file mode 100644 index 0000000..4c1bb83 --- /dev/null +++ b/download-website-script/localhost/Nouveau_Développeur.html @@ -0,0 +1,22 @@ + Nouveau Développeur

Nouveau Développeur

De Gruntnetwork
Aller à la navigationAller à la recherche

S'inscrire

  • Créez-vous un compte sur TuxFmaily et adhérez au projet gruntnetwork
  • Créez-vous un compte sur le wiki
  • Créez-vous un compte sur le tracker

À lire

  • Prérequis : Un peu de lecture pour les vacances. Si vous ne savez rien sur les sujets listés dans cette page, vous risquez d'être à la traîne.
  • Conventions : À respecter, pour un code homogène. Si vous avez quoi que ce soit à redire dessus, faites-le vite, avant qu'on ait des centaines de lignes à reformater :)
  • Environnement de programmation : Avec quoi on travaille (Emacs ou Vim + gcc + qemu ou bochs).
  • Feuille de route : Qui fait quoi, Quand, dans Quel ordre.
  • Liens : Quand vous ne saurez plus comment faire un truc en assembleur :)
\ No newline at end of file diff --git a/download-website-script/localhost/Prérequis.html b/download-website-script/localhost/Prérequis.html new file mode 100644 index 0000000..a9db5cc --- /dev/null +++ b/download-website-script/localhost/Prérequis.html @@ -0,0 +1,22 @@ + Prérequis

Prérequis

De Gruntnetwork
Aller à la navigationAller à la recherche

Une chose à retenir : Si vous êtes largués, si vous ne comprenez pas, si vous piétinez sur un bout de code qui compile pas : n'attendez pas le déluge pour vous signaler ! Il y aura toujours quelqu'un pour vous aider à comprendre ce qui vous pose problème.

Certaines pages lisées ici sont en anglais : si vous avez du mal, envoyez-moi un message et je ferai une traduction.

Un peu de lecture

Conception D'OS (GNU/Linux Magazine)

Dans GNU/Linux Magazine France est paru il y a quelques années une série d'articles sur la conception de systèmes d'exploitation. Les articles expliquent, pas à pas, comment créer un système simple. Je recommande vivement à tout le monde d'avoir lu ces articles d'ici la mi-janvier, comme ça on saura tous de quoi on parle.

Les articles sont disponibles gratuitement sur internet.

N°s des magazines :

  • 62 : Boot + Console
  • 63 : Segmentation et Interruptions
  • 65 : Pagination
  • 68 : Multitâche et changement de contexte
  • 69 : Threads
  • 70 : Espaces d'adressage, appels système et applications utilisateur
  • 72 : Gestion de l'espace virtuel utilisateur
  • 74 : VFS (système de fichiers virtuel)

Vu que ce dernier numéro contient la deuxième partie d'un article très intéressant sur la compression de données, vous voudrez peut-être la première partie : n° 73. Le site ed-diamond vous permet de commander ces anciens numéros. Il propose un « PowerPack x10 » à 25€, donc ça fait un bon cadeau de noël pour pas trop cher :)

a Simple Operating System

Un système d'exploitation simple : sos

Connaissance du C et de l'assembleur

Cours de C :

Cours d'ASM pour plateforme x86 :

Compréhension de la procédure de démarrage (Boot)


Nous utiliserons Grub et le standard Multiboot plutôt que de programmer notre propre chargeur de démarrage, cependant les méchanismes du MBR et de GRUB sont à comprendre pour maîtriser la chose (et pour la soutenance orale...).

Interruptions du BIOS (pages de référence)

\ No newline at end of file diff --git a/download-website-script/localhost/Test_fonctionC.html b/download-website-script/localhost/Test_fonctionC.html new file mode 100644 index 0000000..3c8497a --- /dev/null +++ b/download-website-script/localhost/Test_fonctionC.html @@ -0,0 +1,22 @@ + Test fonctionC

Test fonctionC

De Gruntnetwork
Aller à la navigationAller à la recherche

floor

int floor(float x );

Description

Renvoie l'arrondi à l'inférieur de x

\ No newline at end of file diff --git a/download-website-script/localhost/Toutes_les_pages.html b/download-website-script/localhost/Toutes_les_pages.html new file mode 100644 index 0000000..b638e9a --- /dev/null +++ b/download-website-script/localhost/Toutes_les_pages.html @@ -0,0 +1,22 @@ + Toutes les pages \ No newline at end of file diff --git a/download-website-script/localhost/index.html b/download-website-script/localhost/index.html new file mode 100644 index 0000000..e6dfa25 --- /dev/null +++ b/download-website-script/localhost/index.html @@ -0,0 +1,22 @@ + Accueil

Accueil

De Gruntnetwork
Aller à la navigationAller à la recherche

gruntnetwork

gruntnetwork est un système d'exploitation sous licence Affero GPL. Actuellement il est en phase de développement, dans le cadre d'un projet pédagogique à l'Université Montpellier 2.

Nouveau Développeur ?

S'inscrire

  • Créez-vous un compte sur TuxFmaily et adhérez au projet gruntnetwork
  • Créez-vous un compte sur le wiki
  • Créez-vous un compte sur le tracker

À lire

  • Prérequis : Un peu de lecture pour les vacances. Si vous ne savez rien sur les sujets listés dans cette page, vous risquez d'être à la traîne.
  • Conventions : À respecter, pour un code homogène. Si vous avez quoi que ce soit à redire dessus, faites-le vite, avant qu'on ait des centaines de lignes à reformater :)
  • Environnement de programmation : Avec quoi on travaille (Emacs ou Vim + gcc + qemu ou bochs).
  • Feuille de route : Qui fait quoi, Quand, dans Quel ordre.
  • Liens : Quand vous ne saurez plus comment faire un truc en assembleur :)

notes

\ No newline at end of file diff --git a/download-website-script/localhost/metadata.db b/download-website-script/localhost/metadata.db new file mode 100644 index 0000000000000000000000000000000000000000..c4e8e1c78dd5d6dbb318ed122c7cce2d4466730e GIT binary patch literal 24576 zcmeI3Pi))P9mh$Lk}ZjU?EF(?MHXdQ{u7zhiY9f^95ThxGR;<+Ix?_y7zA2+lG#zB zLXnESLxHx~Fkl#lo>mOlp%~D$w_+`Z9=6NUBHbZaw_UnRi=FldyKJXoMTfmd@sA`s z*^o=H;zwBGd%xfB{oe0=NXp_@(#>bLGz&>B!|bS*^dvPyg+kPqC5fV_5Pn4P!`oQg zAP;Y&y~acKAxgRYM_&At3iD-3_?vi7_$vQCZo&oxfB+Bx0zd!=00AHX1b_e#`2QsE zLU<~XPSY)QT4vaww*)yh(>bY-h7d0uHHCXH-bQ>t9Am9Lezr5oFo zYH9nHv{}BjHWstcGL6oHR4aeIHfCRakz%J3nT%IJN9&;4K@au)MtH0Q-~0$Q3{>4l zN0pFaoDyE*9R?<9Y9?w}eZRqumEfBnp#)1c+sN8P2TmE|h+3xF?x3!9RE5vc&QW@K z%BfH_Ev=!WzPAsJ)#q6sp*%vj;vdcN@=P?)`kK-8j`g_LHg#`R($4kDvpeN+zol6^ z@*>91fMO_;*htfq)@`Ew{%sxK)7MqoGMs+hTTT55uf^aCZJJzcJbozCf2YKc#b1gq ziO-3P!l%NA!W%+Q_=<3b|D3+c~mXeCyOGo21sH%z2jhUx8(uMkHv8LrmIyS(A^?6Q~ry4pci z@|0S_CN`Z875@6#g4|LE8or_M_QgDQ(ie+tN~syPh5B{;2DjeBE9xtIR!4WO61GZ? zHN8j%ET`EyrPOHHNYjULZl{nV?(+rqv{FNTtKKrY4MJeU&4z9GlOxxbTOh%5j^&jb z=G`|WmPXzAIg+B7XIW*#=niltcy4#0BZl)y5_b7KJEN3ZEv>PK7hJz) zs=Yn!w(Tz6cSyb?eHssAGnr8SX8wMq(U8BS^tx@oaVf<$MtPV_))BEt#uTT91@e|5F+?r(o6t9DZ}{8VGT#bYFHdD)4>tb!Rw zI}5WUDxY^|Ygs)%*GT)!42j8PoJ<`RUqz&DudyZ)ue&<5Zy~d*>VBF@!#ROOudh4v zb<}oOYaPf9UF*rF<>ftWJjXw1lt*zam1|6M?tyn+Ovs@m2T}GKD{+#vP$<0nn^$G$ zb;dFbz3(h;yt@*cjBM-1E(#+3?o&|`dGX>%PE*5|rjC3f!_*VjrD-yb98|9sa*%=v zyx!8(WE^>+3*x-q*$9b~g--HV8Xb>PF7;~(eR9R zR_OIEFeL8Mr6aO8jXT{V@_S|}L`LRvD}Q;tD(~95j)p*jrbI`mX&kZmgKr#@_mJA$ zZ7a|B+9S;v{$H$cIwiay{z-U6xF!6W`@Qf}@gL$hMMdn1FN<^H`{EVxRq^M-KZTEk zcLYP^ge~r0SQ+>;f0zF;|9$>|*Z5of(|n%ixKD(Xu*$u~{fPT6x6ggRy@u6-Up=OO z_b@FG00KY&2mk>f00e*l5C8&?kwBbD(XQsE@JxpGWj1++$%8E>mxIL*#a{7Tjm2svY6{Y6MN&_7#y~6C!|BL!`CdX{j|3z6! zon(siA?au?&0NL^9-tH@$szJZpwkOXg?_mBlW@qp(#|O|<00whBw3^ED>WyMF{|{r zM01>Qkw*oXW8~zJN7R;CQkbu<%s3NGswiTTStl`vl@j5w$5lgkC$A@daL1VfJ)wHU z1Dh{s#Kf00e*l5C8%|00;m9AOHk_z~dmmM;Iz=;cqz< zd%CK1xiCXzoG$rUSDa<2w9~`Cso@yx((pGQP!a!@VZPm7;X_zyN900e*l5C8%|00;m9AOHk_01yBIK;VlV` literal 0 HcmV?d00001 diff --git a/download-website-script/stub.css b/download-website-script/stub.css new file mode 100644 index 0000000..5cc9aa6 --- /dev/null +++ b/download-website-script/stub.css @@ -0,0 +1,77 @@ +/* + * + * stub.css + * + */ +body#zim { + font-size: 100%; + width: inherit; + padding: inherit; + position: inherit; + margin: inherit; +/* background-image: none;*/ +} +#zim #content { +/* margin: 0px; + padding: 2px;*/ +} +#zim .mw-body-content { + line-height: 1.6; + font-size: 0.875em; +} +#zim .mw-body-content p { + line-height: inherit; + margin: 0.5em 0; +} +/* +#zim #toc, +#zim .article-status, +#zim .thumbcaption .magnify, +#zim .editsection, +#zim .mw-editsection +{ + display: none; +} +*/ +#zim table.wikitable, table.nicetable { + margin-right: 0; + margin-left: 0; +} + +/* for en.wikivoyage.org */ +/* supress Kartographer chartlet */ +/* +.thumbinner a[data-lon] { + display: none; +} +*/ +#zim #geoCoord { + top: -20px; +} +#geoCoord img { + display: none; +} +#zim #mw-customtoggle-mapToggle { + display: none; +} + +/* Wikia */ +body#zim .WikiaMainContent { + width: inherit; +} +body#zim .WikiaPageBackground { + width: inherit; + height: inherit; + position: inherit; + left: inherit; + top: inherit; + +} + +html body pre { + padding: 1em; + border: 1px dashed #2f6fab; + color: black; + background-color: #f9f9f9; + line-height: 1.1em; +} diff --git a/download-website-script/template.html b/download-website-script/template.html new file mode 100644 index 0000000..9b485c4 --- /dev/null +++ b/download-website-script/template.html @@ -0,0 +1,44 @@ + + + + + + + + + + +
+ +
+ + + + diff --git a/zimmer b/zimmer new file mode 160000 index 0000000..bc54d8f --- /dev/null +++ b/zimmer @@ -0,0 +1 @@ +Subproject commit bc54d8f2999ab27d908c64be1ee41e955afa430c