From 24b0a8a4d40c0cf2eb3d4169c8e43552113f62a2 Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Thu, 22 Oct 2015 13:52:15 +0200 Subject: [PATCH] Suppression de tout --- API.js | 77 -- API.php | 99 --- LICENSE | 675 ------------------ README.md | 1 - css/container.css | 0 css/global.css | 293 -------- css/header.css | 10 - css/layout.css | 189 ----- css/menu.css | 170 ----- index.php | 78 -- js/actionScript.js | 264 ------- js/pageManager.js | 237 ------ js/shortcut.js | 145 ---- manager/database.php | 18 - manager/security.php | 76 -- manager/user.php | 135 ---- page/_JS/auth.js | 80 --- page/_JS/groups.js | 43 -- page/auth.php | 42 -- page/career.php | 1 - page/groups.php | 145 ---- page/home.php | 44 -- page/marks.php | 1 - page/modules.php | 4 - page/semestre.php | 1 - page/settings.php | 1 - page/ue.php | 1 - src/input_icon/default.svg | 1 - src/input_icon/default_grayscale.svg | 59 -- src/input_icon/password.svg | 49 -- src/input_icon/password_grayscale.svg | 51 -- src/input_icon/user.svg | 59 -- src/input_icon/user_grayscale.svg | 61 -- src/menu_icon/auth.svg | 53 -- src/menu_icon/auth_grayscale.svg | 53 -- src/menu_icon/groups.svg | 51 -- src/menu_icon/groups_grayscale.svg | 51 -- src/menu_icon/home.svg | 151 ---- src/menu_icon/home_grayscale.svg | 151 ---- src/menu_icon/marks.svg | 57 -- src/menu_icon/marks_grayscale.svg | 58 -- src/menu_icon/modules.svg | 71 -- src/menu_icon/modules_grayscale.svg | 71 -- src/menu_icon/settings.svg | 49 -- src/menu_icon/settings_grayscale.svg | 49 -- src/menu_icon/ue.svg | 53 -- src/menu_icon/ue_grayscale.svg | 53 -- src/userlist.json | 32 - ...-UI-Components-Responsive-web-template.jpg | Bin 54097 -> 0 bytes xdoc/cdcf_droits | 35 - xdoc/droits.svg | 123 ---- xdoc/final2.png | Bin 32101 -> 0 bytes xdoc/login-page.png | Bin 17523 -> 0 bytes xdoc/rdv1_tutrice | 1 - xdoc/sid.rules | 258 ------- xdoc/svg/API.png | Bin 64217 -> 0 bytes xdoc/svg/API.svg | 437 ------------ xdoc/svg/architecture.png | Bin 59674 -> 0 bytes xdoc/svg/architecture.svg | 341 --------- xdoc/test.php | 6 - xdoc/verifType.php | 34 - 61 files changed, 5348 deletions(-) delete mode 100755 API.js delete mode 100755 API.php delete mode 100755 LICENSE delete mode 100755 README.md delete mode 100755 css/container.css delete mode 100755 css/global.css delete mode 100755 css/header.css delete mode 100755 css/layout.css delete mode 100755 css/menu.css delete mode 100755 index.php delete mode 100755 js/actionScript.js delete mode 100755 js/pageManager.js delete mode 100755 js/shortcut.js delete mode 100755 manager/database.php delete mode 100755 manager/security.php delete mode 100755 manager/user.php delete mode 100755 page/_JS/auth.js delete mode 100755 page/_JS/groups.js delete mode 100755 page/auth.php delete mode 100755 page/career.php delete mode 100755 page/groups.php delete mode 100755 page/home.php delete mode 100755 page/marks.php delete mode 100755 page/modules.php delete mode 100755 page/semestre.php delete mode 100755 page/settings.php delete mode 100755 page/ue.php delete mode 100755 src/input_icon/default.svg delete mode 100755 src/input_icon/default_grayscale.svg delete mode 100755 src/input_icon/password.svg delete mode 100755 src/input_icon/password_grayscale.svg delete mode 100755 src/input_icon/user.svg delete mode 100755 src/input_icon/user_grayscale.svg delete mode 100755 src/menu_icon/auth.svg delete mode 100755 src/menu_icon/auth_grayscale.svg delete mode 100755 src/menu_icon/groups.svg delete mode 100755 src/menu_icon/groups_grayscale.svg delete mode 100755 src/menu_icon/home.svg delete mode 100755 src/menu_icon/home_grayscale.svg delete mode 100755 src/menu_icon/marks.svg delete mode 100755 src/menu_icon/marks_grayscale.svg delete mode 100755 src/menu_icon/modules.svg delete mode 100755 src/menu_icon/modules_grayscale.svg delete mode 100755 src/menu_icon/settings.svg delete mode 100755 src/menu_icon/settings_grayscale.svg delete mode 100755 src/menu_icon/ue.svg delete mode 100755 src/menu_icon/ue_grayscale.svg delete mode 100755 src/userlist.json delete mode 100644 xdoc/Flat-Design-UI-Components-Responsive-web-template.jpg delete mode 100755 xdoc/cdcf_droits delete mode 100755 xdoc/droits.svg delete mode 100644 xdoc/final2.png delete mode 100755 xdoc/login-page.png delete mode 100755 xdoc/rdv1_tutrice delete mode 100755 xdoc/sid.rules delete mode 100755 xdoc/svg/API.png delete mode 100755 xdoc/svg/API.svg delete mode 100755 xdoc/svg/architecture.png delete mode 100755 xdoc/svg/architecture.svg delete mode 100755 xdoc/test.php delete mode 100755 xdoc/verifType.php diff --git a/API.js b/API.js deleted file mode 100755 index d5b8def..0000000 --- a/API.js +++ /dev/null @@ -1,77 +0,0 @@ -/* classe API */ -function APIClass(){}; - -APIClass.prototype = { - xhr: [], // tableau d'objets pour les requêtes ajax - - - - /* transaction avec le serveur (API.php) - * - * @param pRequest l'objet passé en JSON à API.php - * @param pHandler fonction qui s'éxécutera lors de la réponse (1 argument -> réponse) - * - * @return answer l'objet retourné par API.php via pHandler (1er argument) - * - *************************************************************************************************** - * - * @usecase - * 1. var answerObject = sendRequest( - * 2. { var1: "exemple", var2: 198294 }, - * 3. function(rep){ alert(rep); } - * 4. ); - * @explain - * 1. on appelle la fonction <=> on créé la requête - * 2. on passe l'objet qui sera envoyé - * 3. on passe une fonction qui utilise un argument (sera la réponse de API.php) (sous forme d'objet) - * - */ - send: function(pRequest, pHandler){ - - // on efface les requêtes qui sont terminées (toutes celles de this.xhr) - for( var i = 0 ; i < this.xhr.length ; i++ ){ - if( this.xhr[i].readyState == 4 ) // si terminée - this.xhr = this.xhr.slice(0,i-1).concat(this.xhr.slice(i,this.xhr.length-1)); // suppression entrée - } - - // on créé une nouvelle entrée - this.xhr.push(null); - i = this.xhr.length-1; - - // création de l'objet AJAX - if(window.XMLHttpRequest) // IE7+, Firefox, Chrome, Opera, Safari - this.xhr[i] = new XMLHttpRequest(); - else // IE5, IE6 - this.xhr[i] = new ActiveXObject('Microsoft.XMLHttpRequest'); - - console.log(pRequest); - - var ptrAPI = this; - this.xhr[i].onreadystatechange = function(){ - if( ptrAPI.xhr[i].readyState == 4 ){ // si la requête est terminée - - /* DEBUG : affiche la réponse BRUTE de API.php */ - // console.log('API.php => '+ptrAPI.xhr[i].responseText); - console.log(JSON.parse(ptrAPI.xhr[i].responseText) ); - - /* si success de requête */ - if( [0,200].indexOf(ptrAPI.xhr[i].status) > -1 ){ // si fichier existe et reçu - try{ pHandler( JSON.parse(ptrAPI.xhr[i].responseText) ); } // si on peut parser, on envoie - catch(e){ pHandler({request:'corrupted'}); } // sinon on envoie obj.request = 'corrupted' - } - /* sinon retourne obj.request = 'unreachable' */ - else - pHandler({request: 'unreachable'}); - - } - } - - // on créé un formulaire POST (virtuel) - var form = new FormData(); - form.append('json', JSON.stringify(pRequest) ); // on créé la variable $_POST['json']=>request - - this.xhr[i].open('POST', 'API.php', true); - this.xhr[i].send( form ); - - } -}; diff --git a/API.php b/API.php deleted file mode 100755 index 08d527c..0000000 --- a/API.php +++ /dev/null @@ -1,99 +0,0 @@ -level_0 ){ - - /***************/ - /* UTILISATEUR */ - /***************/ - case 'user': - if( isset($request->level_1) ){ include 'manager/user.php'; user_switch_level_1($request, $answer); } - else { $answer->request = 'missing_level_1'; } - break; - - - /***********/ - /* GROUPES */ - /***********/ - case 'groups': - $answer->type = "group"; - break; - - - /******/ - /* UE */ - /******/ - case 'ues': - break; - - - /**********/ - /* MODULE */ - /**********/ - case 'modules': - break; - - - /************/ - /* CONTRÔLE */ - /************/ - case 'tests': - break; - - - /**************/ - /* PARAMETRES */ - /**************/ - case 'settings': - break; - - - /***********/ - /* DEFAULT */ - /***********/ - default: - $answer->request = 'unknown_level_0'; - break; - } - - - if( $answer == null ) - $answer->request = 'no_level_0'; - - - - }else // si json corrompu (undécodable) - $answer->request = 'jsoncorrupted'; - - }else // $_POST vide [OU] $_POST['json'] pas défini - $answer->request = 'nopost'; - - - // on envoie (affiche) l'objet en JSON - echo json_encode($answer); - - } - -?> \ No newline at end of file diff --git a/LICENSE b/LICENSE deleted file mode 100755 index 733c072..0000000 --- a/LICENSE +++ /dev/null @@ -1,675 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - {one line to give the program's name and a brief idea of what it does.} - Copyright (C) {year} {name of author} - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - {project} Copyright (C) {year} {fullname} - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. - diff --git a/README.md b/README.md deleted file mode 100755 index ae4adf0..0000000 --- a/README.md +++ /dev/null @@ -1 +0,0 @@ -# SID diff --git a/css/container.css b/css/container.css deleted file mode 100755 index e69de29..0000000 diff --git a/css/global.css b/css/global.css deleted file mode 100755 index af02993..0000000 --- a/css/global.css +++ /dev/null @@ -1,293 +0,0 @@ -/* -* -* Gestion des règles globales -* ------------------------------------- -* 1-1. sections -* 1-2. titres des sections -* 2-1. tableaux génériques -* 2-2. tableaux manuels -* 3. formulaires -* 4. paragraphes -* 5. liens -* 6. ... -* -*/ - - - - - -/*********************/ -/*** 1-1. Sections ***/ -/*********************/ -Hgroup + section{ - /* position */ - display: none; /* on cache par défaut si le titre n'est pas actif */ - position: absolute; - top: calc( 5px + 3em + 1px ); /* 1px pour que le border soit au même endroit que celui de Hgroup */ - left: 0; - width: calc( 100% - 2*2em ); - height: auto; - padding: 2em; /* top right/left bottom */ - - /* border */ - border-top: 1px solid #aaa; - - /* z axis */ - z-index: 7; -} - -/* on active le premier par défaut si aucun n'est .active*/ -/*Hgroup:nth-child(1) + section{ - display: block; - z-index: 8; -}*/ - -Hgroup.active + section{ - display: block; - z-index: 9; -} - - -/********************************/ -/*** 1-2. Titres des sections ***/ -/********************************/ -Hgroup{ - /* position */ - display: block; - position: relative; - float: left; - margin-top: 5px; - margin-left: 1em; - height: 3em; - padding: 0 2em; - - /* border */ - border-radius: 3px 3px 0 0; - border: 1px solid transparent; - border-bottom-color: #aaa; - - /* background */ - background-color: inherit; - - /* foreground */ - color: #666; - text-align: center; - line-height: 3em; - - /* Xtra */ - cursor: pointer; - - /* animation */ - transition: .1s ease-in-out; - -moz-transition: .1s ease-in-out; - -webkit-transition: .1s ease-in-out; - -ms-transition: .1s ease-in-out; - -o-transition: .1s ease-in-out; - - /* z axis */ - z-index: 10; -} - - -/*Hgroup:nth-child(1) ~ .active,*/ -Hgroup.active{ - /* border */ - border-color: #aaa; - border-bottom-color: inherit; - - /* foreground */ - color: #000; -} - - - - - - - - - - - - - -/********************************/ -/*** 2-1. Tableaux génériques ***/ -/********************************/ -table { - font-family:Arial, Helvetica, sans-serif; - color:#666; - font-size:12px; - text-shadow: 1px 1px 0px #fff; - background:#eaebec; - margin:20px; - border:#ccc 1px solid; - - border-spacing: 0; - - -moz-border-radius:3px; - -webkit-border-radius:3px; - border-radius:3px; - - -moz-box-shadow: 0 1px 2px #d1d1d1; - -webkit-box-shadow: 0 1px 2px #d1d1d1; - box-shadow: 0 1px 2px #d1d1d1; - - text-align: center; -} - -table th { - padding:21px 25px 22px 25px; - border-top:1px solid #fafafa; - border-bottom:1px solid #e0e0e0; - - background: #ededed; - background: -webkit-gradient(linear, left top, left bottom, from(#ededed), to(#ebebeb)); - background: -moz-linear-gradient(top, #ededed, #ebebeb); -} - -table tr:first-child th:first-child { - -moz-border-radius-topleft:3px; - -webkit-border-top-left-radius:3px; - border-top-left-radius:3px; -} - -table tr:first-child th:last-child { - -moz-border-radius-topright:3px; - -webkit-border-top-right-radius:3px; - border-top-right-radius:3px; -} - -table tr { - padding-left:20px; -} - -table td:first-child { - border-left: 0; -} - -table td { - padding:18px; - border-top: 1px solid #ffffff; - border-bottom:1px solid #e0e0e0; - border-left: 1px solid #e0e0e0; - - background: #fafafa; - background: -webkit-gradient(linear, left top, left bottom, from(#fbfbfb), to(#fafafa)); - background: -moz-linear-gradient(top, #fbfbfb, #fafafa); -} - -table tr.even td { - background: #f6f6f6; - background: -webkit-gradient(linear, left top, left bottom, from(#f8f8f8), to(#f6f6f6)); - background: -moz-linear-gradient(top, #f8f8f8, #f6f6f6); -} - -table tr:last-child td { - border-bottom:0; -} - -table tr:last-child td:first-child { - -moz-border-radius-bottomleft:3px; - -webkit-border-bottom-left-radius:3px; - border-bottom-left-radius:3px; -} - -table tr:last-child td:last-child { - -moz-border-radius-bottomright:3px; - -webkit-border-bottom-right-radius:3px; - border-bottom-right-radius:3px; -} - -table tr:hover td { - background: #f2f2f2; - background: -webkit-gradient(linear, left top, left bottom, from(#f2f2f2), to(#f0f0f0)); - background: -moz-linear-gradient(top, #f2f2f2, #f0f0f0); -} - -/* http://johnsardine.com/example/simple-little-table/ */ - - -/**********************/ -/*** 3. Formulaires ***/ -/**********************/ -/* champs de texte */ -section form input[type=text], -section form input[type=password]{ - /* position */ - display: block; - position: relative; - margin: 2em 0; - padding: .8em; - padding-left: 2.5em; - - /* border */ - border-radius: 3px; - border: 1px solid #aaa; - - /* foreground */ - font-family: inherit; - font-size: 1em; - color: #b1b1b1; - - /* background */ - background: #fff url(../src/input_icon/default_grayscale.svg) center left .35em no-repeat; - background-size: 1.8em 1.8em; - - transition: .2s ease-in-out; - -moz-transition: .2s ease-in-out; - -webkit-transition: .2s ease-in-out; - -ms-transition: .2s ease-in-out; - -o-transition: .2s ease-in-out; -} - -/* boutons */ -section form input[type=button]{ - /* position */ - display: block; - position: relative; - margin: 1em 0; - padding: .8em; - - /* border */ - border-radius: 3px; - border: 0; - box-shadow: 1px 1px 0 #207fa8, 2px 2px 0 #207fa8; - - /* foreground */ - font-family: inherit; - font-size: 1em; - color: #fff; - font-weight: bold; - - /* background */ - background: #29a2d6; - - /* Xtra */ - cursor: pointer; -} - -/* clic sur les boutons */ -section form input[type=button]:focus{ - box-shadow: 0 0 0 transparent; - margin-top: calc( 1em + 2px ); - margin-left: 2px; -} - - -/* quand on selectionne */ -section form input[type=text]:focus, -section form input[type=password]:focus{ - background-image: url(../src/input_icon/default.svg); - color: #000; - border-color: #29a2d6; -} - - -/* GESTION DES ICÔNES SPECIFIQUES */ -section form input[type=password] { background-image: url(../src/input_icon/password_grayscale.svg); } -section form input[type=password]:focus{ background-image: url(../src/input_icon/password.svg); } - -section form input.user { background-image: url(../src/input_icon/user_grayscale.svg); } -section form input.user:focus { background-image: url(../src/input_icon/user.svg); } diff --git a/css/header.css b/css/header.css deleted file mode 100755 index abcdea3..0000000 --- a/css/header.css +++ /dev/null @@ -1,10 +0,0 @@ -/* -* -* Gestion complète du HEADER -* ------------------------------------- -* 1. icon -* 2. connection/inscription -* 3. mot de passe perdu -* 4. ... -* -*/ \ No newline at end of file diff --git a/css/layout.css b/css/layout.css deleted file mode 100755 index 9a20ccf..0000000 --- a/css/layout.css +++ /dev/null @@ -1,189 +0,0 @@ -/* -* -* Positionnement global et mise en page -* ------------------------------------- -* 1. Propriétés globales -* 2. MENU -* 3. CONTAINER -* 4. msgBox -* -*/ - - - - - - - - -/******************************/ -/*** 1. Propriétés globales ***/ -/******************************/ -*{ /* on supprime le margin/padding par défaut */ - margin : 0; - padding: 0; -} - - -/* on initialise le body avec les valeurs par défaut [compatibilité] */ -body{ - /* position */ - display: block; - position: absolute; - top : 0; - left : 0; - width : 100%; - height: 100%; - - /* background */ - background: #fff; - - /* overflow */ - overflow-x: hidden; /* empêche la barre horizontale de scroll [précaution] */ - - /* foreground */ - font: 18px 'Lato', 'Helvetica', 'Arial', 'sans-serif'; - font-size: 16px; -} - - - - - - - -/***************/ -/*** 2. MENU ***/ -/***************/ -#MENU{ - /* position */ - display: flex; - position: fixed; - top : 0; - left : 0; - width : 5.5em; - height: 100%; - - /* flex */ - flex-direction : column; - justify-content: flex-start; - flex-wrap: nowrap; /* default, une seule colonne */ - - - /* background */ - /*background: #424c54 url(https://www.iut-tlse3.fr/static/ui/v1/icons/iut/iut.png) bottom .9em center no-repeat;*/ - background: #424c54; - - /* foreground */ - /*font-size: 1.7vh;*/ - - /* z axis */ - z-index: 2; - - /* list */ - list-style-type: none; -} - - - - - -/********************/ -/*** 3. CONTAINER ***/ -/********************/ -#CONTAINER{ - /* position */ - display: block; - position: absolute; - top : 0; - left : 5.5em; - width : calc( 100% - 5.5em ); - min-height: 100%; - - /* background */ - background: #fff; - - /* foreground */ - /*font-size: 1.7vh;*/ - - /* border < inherit < hgroup */ - border-color: #fff; - - /* z axis */ - z-index: 0; -} - - -/*****************/ -/*** 4. MSGBOX ***/ -/*****************/ -#MSGBOX{ - /* position */ - display: block; - position: fixed; - top: calc( 100% - 2*1em - 1em - 1em ); /* 100% - padding - taille - marge */ - left: 30%; - width: 40%; - height: 1em; - padding: 1em; - - /* border */ - border-radius: 3px; - border: 1px solid transparent; - - /* background */ - background-color: #f64b2f; - - /* foreground */ - color: #fff; - text-shadow: 1px 1px 1px #d33e27; - line-height: 1em; - - transition: all 0s ease 0s, top .3s ease-in-out; - -moz-transition: all 0s ease 0s, top .3s ease-in-out; - -webkit-transition: all 0s ease 0s, top .3s ease-in-out; - -ms-transition: all 0s ease 0s, top .3s ease-in-out; - -o-transition: all 0s ease 0s, top .3s ease-in-out; -} - -/* LES DIFFERENTES CLASSES */ - -/* validation ou réussite */ -#MSGBOX.success{ - border-color: #689525; - background-color: #7eb62e; - text-shadow: 1px 1px 1px #689525; -} - -/* information */ -#MSGBOX.info{ - border-color: #278fd0; - background-color: #2fa9f6; - text-shadow: 1px 1px 1px #278fd0; -} - -/* avertissement */ -#MSGBOX.warning{ - border-color: #d87620; - background-color: #f68725; - text-shadow: 1px 1px 1px #d87620; -} - -/* notice */ -#MSGBOX.error{ - border-color: #d33e27; - background-color: #f64b2f; - text-shadow: 1px 1px 1px #d33e27; -} - -/* LORSQUE PAS ACTIVE */ -#MSGBOX:not( [class] ), /* si n'a pas de classe */ -#MSGBOX[class='']{ /* ou qu'elle est vide */ - top: 100%; - - transition: all 0s ease .3s, top .3s ease-in-out; - -moz-transition: all 0s ease .3s, top .3s ease-in-out; - -webkit-transition: all 0s ease .3s, top .3s ease-in-out; - -ms-transition: all 0s ease .3s, top .3s ease-in-out; - -o-transition: all 0s ease .3s, top .3s ease-in-out; -} \ No newline at end of file diff --git a/css/menu.css b/css/menu.css deleted file mode 100755 index 1307ee8..0000000 --- a/css/menu.css +++ /dev/null @@ -1,170 +0,0 @@ - -* -* Gestion complète du MENU -* ------------------------------------- -* 1. propriétés complémentaires #MENU -* 2. position textes -* 3. icônes -* 4. Labels -* -*/ - - - - -/*******************************************/ -/*** 1. Propriétés complémentaires #MENU ***/ -/*******************************************/ -#MENU{} - - - -/**************************/ -/*** 2. Position textes ***/ -/**************************/ -#MENU li{ - /* position */ - display: block; - position: relative; - margin: .75em; - width: 4em; /* 5.5 - 1.5 */ - height: 4em; - - /* border */ - border-radius: .3em; - - /* background */ - background: center center no-repeat; - background-size: auto 2.2em; - - /* Xtra */ - cursor: pointer; - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - - /* animation */ - transition: all 0s, background-color .2s ease-in-out; - -moz-transition: all 0s, background-color .2s ease-in-out; - -webkit-transition: all 0s, background-color .2s ease-in-out; - -ms-transition: all 0s, background-color .2s ease-in-out; - -o-transition: all 0s, background-color .2s ease-in-out; -} - - - -/*****************/ -/*** 3. Icônes ***/ -/*****************/ -/* dernier en bas */ -#MENU li:last-child{ align-self: flex-start; } - -/* icônes de base */ -#MENU li[data-link='home'] { background-image: url(../src/menu_icon/home_grayscale.svg); } -#MENU li[data-link='groups'] { background-image: url(../src/menu_icon/groups_grayscale.svg); } -#MENU li[data-link='ue'] { background-image: url(../src/menu_icon/ue_grayscale.svg); } -#MENU li[data-link='modules'] { background-image: url(../src/menu_icon/modules_grayscale.svg); } -#MENU li[data-link='marks'] { background-image: url(../src/menu_icon/marks_grayscale.svg); } -#MENU li[data-link='settings'] { background-image: url(../src/menu_icon/settings_grayscale.svg); } -#MENU li[data-link='auth'] { background-image: url(../src/menu_icon/auth_grayscale.svg); } - -/* HOVER ou active (page courante) */ -#MENU li:hover, #MENU li.active{ - color: #fff; - background-color: rgba(0,0,0,.3); -} - -/* icône quand HOVER ou .active */ -#MENU li[data-link='home']:hover , #MENU li[data-link='home'].active { background-image: url(../src/menu_icon/home.svg); } -#MENU li[data-link='groups']:hover , #MENU li[data-link='groups'].active { background-image: url(../src/menu_icon/groups.svg); } -#MENU li[data-link='ue']:hover , #MENU li[data-link='ue'].active { background-image: url(../src/menu_icon/ue.svg); } -#MENU li[data-link='modules']:hover , #MENU li[data-link='modules'].active { background-image: url(../src/menu_icon/modules.svg); } -#MENU li[data-link='marks']:hover , #MENU li[data-link='marks'].active { background-image: url(../src/menu_icon/marks.svg); } -#MENU li[data-link='settings']:hover , #MENU li[data-link='settings'].active { background-image: url(../src/menu_icon/settings.svg); } -#MENU li[data-link='auth']:hover , #MENU li[data-link='auth'].active { background-image: url(../src/menu_icon/auth.svg); } - - -/* le séparateur qui remplit l'espace entre le haut et le bas */ -#MENU li.fill{ - flex-grow: 1; - opacity: 0; - cursor: default; -} - - - -/*****************/ -/*** 4. Labels ***/ -/*****************/ -#MENU li[data-text]::before{ /* affichage du texte */ - content: attr(data-text); - - /* position */ - display: block; - position: absolute; - top: .4em; - left: 6em; - width: auto; - width: 0; - height: 3em; - padding: 0 0; - - /* border */ - border-radius: 5px; - - /* background */ - background: #232323; - - /* foreground */ - line-height: 3em; - - /* animation */ - transition: .1s ease-out; - -moz-transition: .1s ease-out; - -webkit-transition: .1s ease-out; - -ms-transition: .1s ease-out; - -o-transition: .1s ease-out; - - /* overflow */ - overflow: hidden; - - /* z axis */ - z-index: -1; -} - - - -#MENU li[data-text]::after{ /* petite flèche */ - content: ''; - - /* position */ - display: none; - position: absolute; - top: 1.16em; - left: 5.7em; - - /* border */ - border-style: solid; - border-width: .8em .8em .8em 0; - border-color: transparent #232323 transparent transparent; - - /* animation */ - transition: .2s ease-in; - -moz-transition: .2s ease-in; - -webkit-transition: .2s ease-in; - -ms-transition: .2s ease-in; - -o-transition: .2s ease-in; - - /* z axis */ - z-index: -1; -} - - - -/* lors du survol */ - -#MENU li[data-text]:hover::before{ width: auto; left: 6em; padding: 0 1em; } /* affichage du texte */ - -#MENU li[data-text]:hover::after{ display: block; } /* affichage de la petite flèche \ No newline at end of file diff --git a/index.php b/index.php deleted file mode 100755 index e5d0afd..0000000 --- a/index.php +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - Système d'Information du Département - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - -
Hey! Your password is not the right one.
- - - - - - - - - - - - - diff --git a/js/actionScript.js b/js/actionScript.js deleted file mode 100755 index 723d7b0..0000000 --- a/js/actionScript.js +++ /dev/null @@ -1,264 +0,0 @@ - - /*********************************************************** - * * - * SCRIPT POST-HTML - SCRIPT PRINCIPAL * - * * - ************************************************************ - * * - * [0] Variables * - * [1] Gestionnaires de navigation * - * [a] pageManager.js * - * [b] API.js * - * [2] Gestion des liens * - * [a] catégories * - * [b] sous-parties * - * [3] Gestion des formulaires * - * [4] Gestion de la messageBox * - * * - * * - * * - * * - * * - * * - * * - * * - * * - ***********************************************************/ - - -/* [0] VARIABLES -==============================================================*/ -var msgBoxTimeout = null; - -/* pageManager */ -var pageM; -/* API */ -var API; - -/* Structure de la page */ -var DOM = { - menu : document.getElementById('MENU'), - container : document.getElementById('CONTAINER'), - msgBox : document.getElementById('MSGBOX') -}; - - - - - - - -/* [1] GESTIONNAIRES DE NAVIGATION -==============================================================*/ - - - /* [a] pageManager.js - ==============================================================*/ - pageM = new pageManager(); // instance principale - - /* initialisation du gestionnaire */ - pageM.setPage(null, 'page', DOM.container, ['home', 'groups', 'ue', 'modules', 'marks', 'auth', 'settings'] ); - - - /* [b] API.js - ==============================================================*/ - API = new APIClass(); - - - - - - - -/* [2] GESTION DES LIENS -==============================================================*/ - - - /* [a] CATÉGORIES - ==============================================================*/ - /* GESTION DES CATEGORIES (SECTIONS) - * - * @param section l'élément à activer - * - * [1] selectionne l'élément, l'affichage de la page associée est géré par pageManager.js - * [2] déselectionne l'élément précédemment selectioné - * - */ - function selectSection(section){ - - // si @subSection est un de type
  • qui a la propriété "data-link" [ET] section pas déjà active - if( section instanceof Element && section.tagName == 'LI' && section.dataset.hasOwnProperty('link') && section.className != 'active' ){ - - // on charge la page - pageM.setPage( section.dataset.link ); - - // on récupère la section déja selectionnée si elle existe - var last = document.querySelector('#MENU li.active'); - - if( last != null ) // si une section est déjà activée - last.className = ''; // on désactive la courante - - section.className = 'active'; // on active @section - - }else // sinon on affiche l'erreur - console.log("[selectSection_Error] - ("+section+")"); - - } - - /* activation au chargement en fonction de la page courante de pageManager.js */ - lastSection = document.querySelector('[data-link='+pageM.page+']'); - lastSection.className = 'active'; // on l'active - - /* Gestion des liens du menu */ - DOM.menu.addEventListener('click', function(e){ selectSection( e.target ); }, false); - - - /* [b] SOUS-PARTIES - ==============================================================*/ - /* GESTION DES SOUS-PARTIES (SOUS-CATÉGORIES) - * - * @param subSection l'élément à activer - * - * [1] selectionne l'élément, l'affichage de la page associée est géré en CSS3 - * [2] déselectionne l'élément précédemment selectioné - * - */ - function selectSubSection(subSection){ - - // si @subSection est un de type HGROUP [ET] - if( subSection instanceof Element && subSection.tagName == 'HGROUP' ){ - - if( subSection.className != 'active' ){ // si @subSection pas déjà active - - // on récupère la sous-partie selectionnée en cours - var last = document.querySelector('hgroup.active'); - - if( last != null ) // si un sous-partie est déjà selectionnée - last.className = ''; // on la désactive - - subSection.className = 'active'; // on active @subSection - - }else // sinon on affiche l'erreur - console.log("[selectSubSection_Error] - ("+subSection+")"); - - } - - } - - /* gestion du clic sur les sous-parties */ - DOM.container.addEventListener('click', function(e){ selectSubSection(e.target); }, false); - - - - - - - - -/* [3] GESTION DES FORMULAIRES -==============================================================*/ -/* INITIALISE UN FORMULAIRE POUR QU'IL INTERPRETE UN OBJET LORS DE SA SOUMISSIONS -* -* @param pForm le formulaire cible -* @param pHandler fonction exécutée lors de la soumission du formulaire -* -* [1] parcourt les élements du formulaire @pForm et active un évènement lors du "submit" -* [2] retourne l'objet à @pHandler lors du "submit" -* -* -* @example -* -*
    -* -* -* -* -* -* -*
    -* -* @explaination -* -* Lors du clic sur le bouton [VALIDER], la fonction @pHandler s'exécutera avec pour paramètre un objet -* OBJ{ id: nomFormulaire, nomDuChamp1: valeurDuChamp1, nomDuChamp2: valeurDuChamp2 } -* -*/ -function initForm(pForm, pHandler){ - - // vérification des arguments - var isForm = pForm instanceof Element && pForm.tagName == 'FORM'; - var isFunc = pHandler instanceof Function; - - // si les arguments sont corrects - if( pForm instanceof Element && pForm.tagName == 'FORM' ){ - - var submitButton = null; // contiendra le bouton d'envoi du formulaire - - for( var i = 0 ; i < pForm.children.length ; i++ ) - if( pForm.children[i].type == 'button' && pForm.children[i].name == 'submit' ){ - submitButton = pForm.children[i]; // on définit le bouton - break; // on sort du for - } - - - // on définit l'évènement de validation du formulaie - function submitEvent(){ - - var obj = {} // on créé l'objet qui va être envoyé - - for( var i = 0 ; i < pForm.children.length ; i++ ) // on parcourt les enfants - if( pForm.children[i].tagName == 'INPUT' && pForm.children[i].name != 'submit' ) // si c'est un champ et que c'est pas le bouton - obj[pForm.children[i].name] = pForm.children[i].value; // alors on enregistre le champ dans l'objet - - // on exécute la fonction @pHandler en lui envoyant les arguments - pHandler(obj); - - } - - // on définit l'évènement du clic sur le bouton - submitButton.addEventListener('click', function(e){ - submitEvent(e.target.parentNode); // on envoie le formulaire - }, false); - - // on définit l'évènement de l'appui sur la touche [ENTRER] - pForm.addEventListener('keydown', function(e){ - if(e.keyCode==13) submitEvent(e.target); // si c'est la bonne touche, on submit le formulaire - }, false); - - - - }else - console.log('[initForm_Error] - ('+pForm+', '+pHandler+')'); - - -} - - - - - - - -/* [4] GESTION DE LA MESSAGEBOX -==============================================================*/ -function messageBox(message, type){ - - /* on affecte le message */ - DOM.msgBox.innerHTML = message; - - /* on définit le style s'il est correct */ - if( ['success', 'info', 'warning', 'error'].indexOf(type) > -1 ) - DOM.msgBox.className = type; - else - DOM.msgBox.className = 'info'; - - - - if( msgBoxTimeout != null ) // si une autre message box est en cours, on arrête son timeout - clearTimeout(msgBoxTimeout); - - msgBoxTimeout = setTimeout( function(){ - DOM.msgBox.className = ''; - }, 2000); - -} \ No newline at end of file diff --git a/js/pageManager.js b/js/pageManager.js deleted file mode 100755 index 44ce627..0000000 --- a/js/pageManager.js +++ /dev/null @@ -1,237 +0,0 @@ -function pageManager(){}; - -var ptrPageManager; // pointeur global pour l'utilisation de fonctions de fonctions - -pageManager.prototype = { - depJS: null, // la dépendance javascript - depCSS: null, // la dépendance css - xhr: [], // tableau d'objets pour les requêtes ajax - page: null, // l'indice de la page courante dans pagelist - vars: [], // les variables suivant le nom de la page dans l'URL - path: '', // le chemin du dossier contenant les pages (.php) - pagelist: null, // la liste des pages pouvant être chargées - container: null, // élément DOM qui contiendra le contenu des pages à charger - /* ======================================================================= - Cette fonction effectue une requête Ajax (compatible à partir de IE5) - PARAMETRES: - - pLink le lien à charger - - pHandler une fonction qui s'éxécutera avec la réponse de la requête passée en paramètre (voir exemples dessous pour pHandler) - - pMethod type de méthode, vaut 'POST' ou 'GET' et vaut 'POST' par défaut ou s'il n'est pas renseigné - - pForm formulaire de type FormData() contenant les données à envoyer (uniquement en POST), si pForm vaut GET les données doivent être passées dans l'URL - ========================================================================== */ - ajax: function(pLink, pHandler, pMethod, pForm){ - // on efface les requêtes qui sont terminées et on push une nouvelle - for( var i = 0 ; i < this.xhr.length ; i++ ){ - if( this.xhr[i].readyState == 4 ) // si terminée - this.xhr = this.xhr.slice(0,i-1).concat(this.xhr.slice(i,this.xhr.length-1)); // suppression entrée - } - - this.xhr.push(true); - i = this.xhr.length-1; - - if(window.XMLHttpRequest) // IE7+, Firefox, Chrome, Opera, Safari - this.xhr[i] = new XMLHttpRequest(); - else // IE5, IE6 - this.xhr[i] = new ActiveXObject('Microsoft.XMLHttpRequest'); - - var ptrPageManager = this; - this.xhr[i].onreadystatechange = function(){ - if( ptrPageManager.xhr[i].readyState == 4 ) // si la requête est terminée - if( [0,200].indexOf(ptrPageManager.xhr[i].status) > -1 ) // si fichier existe et reçu - pHandler(ptrPageManager.xhr[i].responseText); - else // si code d'erreur retourne null - pHandler(); - } - - // gestion de la méthode - var method = ( typeof pMethod == 'string' && /^POST|GET$/i.test(pMethod) ) ? pMethod.toUpperCase() : 'POST'; - - // gestion du formulaire si la méthode est POST - var form = ( method == 'POST' && typeof pForm == 'object' && pForm instanceof FormData ) ? pForm : null; - - this.xhr[i].open( method, pLink, true); - this.xhr[i].send( form ); - }, - /***************************************************** [APPLICATION] Ajax() ******************************************************/ - // EXEMPLES DE FONCTIONS POUR pHandler // - // 1. var a = function(param){ alert(param); } // les deux notations 1 et 2 sont équivalents - // 2. function a(param){ alert(param); } // les deux notations 1 et 2 sont équivalents - - // ajax( 'index.php', a ); // utilisation d'une fonction définie - - // ajax( 'index.php', alert ); // utilisation d'une fonction prédéfinie - // ajax( 'index.php', alert, 'GET' ); // utilisation de méthode - - // var fd = new FormData(); // création d'un formulaire - // fd.append('var', 100); // ajout de la variable VAR qui vaut 100 - - // ajax( 'index.php', alert, null, fd ); // saut de paramètre avec null + envoi formulaire - // ajax( 'index.php?var=10', alert, 'GET' ); // envoi formulaire en GET (dans l'url) - // ajax( 'index.php?var=10', alert, 'POST', fd ); // envoi formulaire en GET (dans l'url) + en POST via le formulaire FD - - - /* ======================================================================= - Cette fonction effectue une décomposition de l'URL sur le shéma spécifié dessous - Renvoie pour http://www.exemple.com/dirA/dirB/#/NOMPAGE/VARPAGE - - null si la page n'est pas référencée dans le tableau PAGELIST - - null si le lien ne contient pas /#/NOMPAGE à la fin - - null si NOMPAGE ne contient pas uniquement : lettres, chiffres, underscore - - null si VARPAGE ne contient pas uniquement : lettres, chiffres, underscore - - un objet contenant {page: valeur, var: valeur} - ========================================================================== */ - explodeURL: function(url_data){ - url_data = (arguments.length >= 1) ? url_data : document.URL; - // si pageList est correct et que l'URL correspond à un schéma de page => continue [sinon] return null - if( this.pagelist != null && /^(?:.+)\/#\/([a-z0-9_]+)\/?(?:\/((?:[a-z0-9_]+\/)+)\/?)?$/i.test(url_data) ){ - // si la page récupérée dans l'url est dans la liste => renvoi de l'objet [sinon] null - var vars = RegExp.$2.split('/'); - while( vars[vars.length-1] == '' ) // on supprime les dernières entrées vides - vars.pop(); - - return ( this.pagelist.indexOf(RegExp.$1) > -1 ) ? {page: RegExp.$1, var: vars} : null; - }else - return null; - }, - /* ======================================================================= - Cette fonction ajoute des dépendances (un js et un css) situés dans le répertoire des pages. - pageDir/ - _JS/ - page1.js - page2.js - _CSS/ - page1.css - page2.css - ========================================================================== */ - loadDependencies: function(){ - // si depCSS est un élément du DOM c'est à dire qu'il contient le fichier de la page précédente et qu'il est enfant de , on le détruit - if( typeof this.depCSS == 'object' && this.depCSS instanceof Element && this.depCSS.parentNode == document.head ) - document.head.removeChild( this.depCSS ); - - // si depJS est un élément du DOM c'est à dire qu'il contient le fichier de la page précédente, on le détruit - if( typeof this.depJS == 'object' && this.depJS instanceof Element && this.depJS.parentNode == document.head ) - document.head.removeChild( this.depJS ); - - ptrPageManager = this; - // si le fichier css existe - this.ajax(this.path+'/'+'_CSS'+'/'+this.page+'.css', function(e){ - if( e != null ){ // on charge la dépendance CSS si le fichier existe - ptrPageManager.depCSS = document.createElement('link'); - ptrPageManager.depCSS.rel = 'stylesheet'; - ptrPageManager.depCSS.type = 'text/css'; - ptrPageManager.depCSS.href = ptrPageManager.path+'/'+'_CSS'+'/'+ptrPageManager.page+'.css'; - document.head.appendChild(ptrPageManager.depCSS); - }else - console.log('[loadDependencies_Error] - ('+ptrPageManager.path+'/'+'_CSS'+'/'+ptrPageManager.page+'.css'+')'); - }); - - // si le fichier js existe - this.ajax(this.path+'/'+'_JS'+'/'+this.page+'.js', function(e){ - if( e != null ){ // on charge la dépendance JS si le fichier existe - ptrPageManager.depJS = document.createElement('script'); - ptrPageManager.depJS.type = 'text/javascript'; - ptrPageManager.depJS.src = ptrPageManager.path+'/'+'_JS'+'/'+ptrPageManager.page+'.js'; - document.head.appendChild(ptrPageManager.depJS); - }else - console.log('[loadDependencies_Error] - ('+ptrPageManager.path+'/'+'_JS'+'/'+ptrPageManager.page+'.js'+')'); - }); - }, - - /* ======================================================================= - Cette fonction est celle qui gère les 2 autres et celle que l'utilisateur utilisera - PARAMETRES: - - pName le nom de la page à charger (lettres, chiffres, underscore) (*) - - pPath chemin (relatif ou absolu) du dossier contenant les pages de même nom de fichier que le nom (extension .php) - - pContainer l'élément du DOM qui contiendra la page chargée (**) - - pPageList> tableau contenant la liste des pages sous forme de chaînes de caractères (**) (***) - * Le chemin du dossier sans le '/' final si c'est le dossier actuel le chemin est une chaîne vide - Si le dossier est 'page' et que l'on cherche la page 'accUe1l', la requête sera vers 'page/accUe1l.php' - le nom de la page est sensible à la casse - ** 1. pPageList et pContainer doivent être mis en paramètres uniquement à la première utilisation - et la première utilisation doit se faire au chargement de la page car elle permetra - de mettre l'URL à jour et/ou charger la page de l'URL - *** la première page du tableau est la page par défaut (qui est chargée si l'URL ne contient - pas la page ou si la page de l'URL ne correspond à aucune page de la liste) - ========================================================================== */ - setPage: function(pName, pPath, pContainer, pPageList){ - - // liste de pages si c'est un tableau - var pageList = ( typeof pPageList == 'object' && pPageList instanceof Array ) ? pPageList : null; // si this.pagelist n'est pas overwrite il vaut null - - if( pageList != null ){ // si c'est un tableau - for( var i = 0 ; i < pageList.length ; i++ ){ // on parcourt tout les éléments pour vérifier que chaque élément ne contient que : lettres, chiffres, underscore [non]> pageList = null - pageList = ( typeof pageList[i] == 'string' && /^[a-z0-9_]+$/i.test(pageList[i]) ) ? pageList : null; - if( pageList == null ) break; // si le tableau est null stoppe la boucle - } - } - /* on attribue la variable temporaire pageList à l'attribut de l'objet si la variable pageList temporaire n'est pas nulle */ - this.pagelist = ( pageList != null ) ? pageList : this.pagelist; - // affecte à l'attribut page la page par défaut (premier élément de pagelist) - this.page = this.pagelist[0]; - // affecte pPath à l'attribut path s'il est renseigné - this.path = ( typeof pPath == 'string' ) ? pPath : this.path; - /* on attribue le paramètre pContainer à l'attribut si il est spécifié */ - this.container = ( typeof pContainer == 'object' && pContainer instanceof Element ) ? pContainer : this.container; - - // si this.pagelist && this.container ne sont pas null && - if( this.pagelist != null && this.container != null ){ - // si le pName est renseigné et qu'il est dans pagelist - if( typeof pName == 'string' && this.pagelist.indexOf(pName) > -1 ){ - // affecte pName à l'attribut page - this.page = pName; - - // charge le contenu de la page dans le container - var ptrPageManager = this; - - // formulaire POST - var fd = new FormData(); - for( var i = 0 ; i < this.vars.length ; i++ ) - fd.append(this.vars[i], null); - - this.ajax(this.path+'/'+this.page+'.php', function(e){ - ptrPageManager.container.innerHTML = e; - ptrPageManager.loadDependencies(); - }, 'POST', fd); - - // change l'URL en conséquences(stateObj, titre, url) - if( this.vars.length > 0 ) // si il y a des variables - window.history.pushState(null, this.page, '#/'+this.page+'/'+this.vars.join('/')+'/'); - else // s'il n'y en a pas - window.history.pushState(null, this.page, '#/'+this.page+'/'); - - }else{ // si la page n'est pas spécifiée ou qu'elle n'est pas dans la liste des pages - var urlGet = this.explodeURL(); - - // si on a récupéré le numéro de la page dans l'URL et qu'elle fait partie de la liste des pages - if( urlGet != null ){ - this.page = urlGet.page; - // charge le contenu de la page dans le container - var ptrThis = this; - - // formulaire POST - var fd = new FormData(); - this.vars.length = 0; - - for( var i = 0 ; i < urlGet.var.length ; i++ ){ // replacing object variables with explodeURL variables - this.vars[i] = urlGet.var[i]; - fd.append(this.vars[i], null); - } - - this.ajax(this.path+'/'+this.page+'.php', function(e){ - ptrThis.container.innerHTML = e; - ptrThis.loadDependencies(); - }, 'POST', fd); - - // change l'URL en conséquences(stateObj, titre, url) - if( this.vars.length > 0 ) // si il y a des variables - window.history.pushState(null, this.page, '#/'+this.page+'/'+this.vars.join('/')+'/'); - else // s'il n'y en a pas - window.history.pushState(null, this.page, '#/'+this.page+'/'); - - }else // si l'url ne contient rien, on charge la page par défaut - this.setPage(this.pagelist[0]); - } - }else - console.log('pagelist et container manquant'); - } - -} \ No newline at end of file diff --git a/js/shortcut.js b/js/shortcut.js deleted file mode 100755 index b032b03..0000000 --- a/js/shortcut.js +++ /dev/null @@ -1,145 +0,0 @@ -/* Retourne le keyCode correspondant à la chaîne -* -* @param keyStore enchaînement de touches sous forme de string -* @param handler function qui s'éxécute lors du raccourci -* -* return keyCode le code de la touche correspondante -*/ -function strToKeyCode(str){ - // on enregistre le keyCode du premier caractère - var keyCode = str.toUpperCase().charCodeAt(0); - - // s'il s'agit d'un caractère uniquement (entre "a" et "z") - if( str.length == 1 && keyCode >= 65 && keyCode <= 90 ) - return keyCode; // on retourne le keyCode associé - else - switch( str ){ - case 'ctrl': return 17; break; - case 'maj': return 16; break; - case 'alt': return 18; break; - case 'tab': return 9; break; - } - - return null; -} - - - - -var shortcutList = []; // contient les combinaisons de touches -var shortcutStep = []; // contient l'avancée d'un raccourcis - -/* Gestion des raccourcis claviers -* -* @param keyStore enchaînement de touches sous forme de string -* @param handler function qui s'éxécute lors du raccourci -* -*/ -function Shortcut(keyStore, handler){ - - var splittedString = keyStore.toLowerCase().split('+'), // découpe la chaîne (en minuscule) par "+" - splittedKeyCode = new Array(); // contiendra les keyCode de chaque touche - - - // pour chaque touche, on récupère le keyCode - for( var i = 0 ; i < splittedString.length ; i++ ) - splittedKeyCode[i] = strToKeyCode( splittedString[i] ); // on enregistre le keyCode correspondant - - - // on ajout à la liste globale - eventIndex = shortcutList.length; - shortcutList.push( splittedKeyCode ); - - // on initialise l'avancement - shortcutStep[eventIndex] = 0; - - - - // creation de la fonction d'évènement - shortcutList[eventIndex].push( function(k, f, h){ /* k ; f ; h */ - // on cherche l'avancée - var step = shortcutStep[f]; - - // on regarde si la touche est bonne - if( shortcutList[f][step] == k ){ // si c'est la touche suivante - - if( step >= shortcutList[f].length-2 ){ // si c'était la dernière touche - - // on initialise le tableau - for( var i = 0 ; i < shortcutStep[f].length ; i++ ) - shortcutStep[f][i] = 0; - - h(); // EXECUTION DE : handler(); - - }else // sinon on incrémente l'avancée - shortcutStep[f]++; - - }else // si c'est pas la bonne touche, on réinitialise le tableau - shortcutStep[f] = 0; - - }); - - console.log( shortcutList ); - - - // création de l'évènement - window.addEventListener( - 'keydown', - function(e){ e.preventDefault(); shortcutList[eventIndex][shortcutList[eventIndex].length-1](e.keyCode, eventIndex, handler); }, - false - ); - -} - -/* quand on lâche une touche, tout les raccourcis s'effacent */ -window.addEventListener('keyup', function(){ - for( var i = 0 ; i < shortcutStep.length ; i++ ) - shortcutStep[i] = 0; -}, false); - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/*** UTILISATION ***/ - -// Shortcut( -// 'ctrl+s', -// function(){ alert('sauvegardé'); } -// ); \ No newline at end of file diff --git a/manager/database.php b/manager/database.php deleted file mode 100755 index 5b4c2cb..0000000 --- a/manager/database.php +++ /dev/null @@ -1,18 +0,0 @@ -connection = new PDO("mysql:host=$host;dbname=$dbname", $username, $password); - } -} - -?> \ No newline at end of file diff --git a/manager/security.php b/manager/security.php deleted file mode 100755 index 6781c74..0000000 --- a/manager/security.php +++ /dev/null @@ -1,76 +0,0 @@ - 0; - $permissionsDefinedProperly = isset($_SESSION['permissions']) && !empty($_SESSION['permissions']) && gettype($_SESSION['permissions']) == 'string' && strlen($_SESSION['permissions']) > 0; - - // si les variables sessions ne sont pas toutes les 2 correctes - if( !($usernameDefinedProperly && $permissionsDefinedProperly) ){ - $_SESSION['username'] = null; // on les initialise à NULL - $_SESSION['permissions'] = null; - } - } - - - - - - - -?> \ No newline at end of file diff --git a/manager/user.php b/manager/user.php deleted file mode 100755 index 0d37fe9..0000000 --- a/manager/user.php +++ /dev/null @@ -1,135 +0,0 @@ -level_1 ){ - - /****************************/ - /* authentification (login) */ - /****************************/ - case 'authentification': - $areSetParam = isset($request->username) && isset($request->password); // les arguments existent - $typeOkParam = $areSetParam && is_string($request->username) && is_string($request->password); // ils sont tous 2 des string - $nEmptyParam = $typeOkParam && strlen($request->username) > 0 && strlen($request->password) > 0; // d'au moins 1 caractère - - if( $areSetParam && $typeOkParam && $nEmptyParam ) - $answer->request = user_authentification($request->username, $request->password); - else{ - if ( !$areSetParam ) $answer->request= 'missing_param'; - elseif( !$typeOkParam ) $answer->request = 'wrong_type'; - else $answer->request = 'empty_param'; - } - break; - - - - /***********/ - /* DEFAULT */ - /***********/ - default: - $answer->request = 'unknown_level_1'; - break; - } - - } - - - - - - - - - - - - - - - - - - - /* [2] AUTHENTIFICATION - ============================================================*/ - - /* [a] userlist */ - function user_getUserList(){ - $userlistFile = file_get_contents("src/userlist.json"); - return json_decode( $userlistFile ); - } - - - /* [b] CONNECTION - ========================================================*/ - /* GESTION DE L'AUTHENTIFICATION D'UN UTILISATEUR - * - * @param username Identifiant de l'utilisateur - * @param password Mot de passe de l'utilisateur - * - * si @username est référencé et que le mot de passe associé vaut @password - * alors @return TRUE sinon FALSE - * + mise ajout à @answer - * - * Les variables sessions suivantes sont définies : - * - $_SESSION['permissions'] - * - $_SESSION['userid'] - * - $_SESSION['username'] - * - * @return Boolean true si l'utilisateur est ok - */ - function user_authentification($username, $password){ - - // [1] On récupère la liste d'utilisateurs (/src/userlist.json) - $userList = user_getUserList(); - - // [2] On check l'existence de l'utilisateur - if( isset($userList->{$username}) ){ - - // [3] On check le mot de passe - if( $userList->{$username}->password == $password ){ - // on définit les variables session - $_SESSION['username'] = $username; - $_SESSION['permissions'] = $userList->{$username}->permissions; - return 'success'; - }else - return 'wrong_password'; - - }else - return 'unknown_user'; - } - - -?> \ No newline at end of file diff --git a/page/_JS/auth.js b/page/_JS/auth.js deleted file mode 100755 index 7e95c72..0000000 --- a/page/_JS/auth.js +++ /dev/null @@ -1,80 +0,0 @@ - - /*********************************************************** - * * - * SCRIPT LOCAL DE LA PAGE D'AUTHENTIFICATION * - * * - ************************************************************ - * * - * [0] Variables * - * [1] Gestion des formulaires * - * [a] Gestion des réponses * - * [b] Initialisation des formulaires * - * * - * * - * * - * * - * * - * * - * * - * * - * * - ***********************************************************/ - - /* [0] Variables - ==============================================================*/ - var subSections = document.querySelectorAll('hgroup'); - - - /* [1] Gestion des formulaires - ==============================================================*/ - - - /* [a] Gestion des réponses - ==============================================================*/ - /* GESTION DU COMPORTEMENT EN FONCTION DE LA REPONSE POUR LE [LOGIN] - * - * @param response - * - * Gestion de toutes les réponse possibles avec une "messageBox" ou de redirection - * - */ - function manageAuthentificationResponse(response){ - switch( response.request ){ - - case 'success': - messageBox('Vous êtes maintenant connecté', 'success'); // on affiche le message - selectSection( document.querySelector('#MENU li:first-child') ); // on redirige vers la page d'accueil - break; - - // case 'missing_param': messageBox('Un des champs requis n\'est pas présent', 'warning'); break; - // case 'empty_param': messageBox('Un des champs requis est vide', 'warning'); break; - // case 'unknown_user': messageBox('Nom d\'utilisateur inconnu', 'error'); break; - // case 'wrong_password': messageBox('Mot de passe incorrect', 'error'); break; - - - case 'empty_param': case 'missing_param': case 'unknown_user': case 'wrong_password': - messageBox('Identifiants incorrects', 'error'); - break; - - default: - messageBox('Erreur interne', 'error'); - break; - - } - } - - - - - /* [b] Initialisation des formulaires - ==============================================================*/ - initForm( // initialisation du formulaire de connection - document.querySelector('#user'), // formulaire (élément DOM) - function(request){ // handler - // ajout d'informations à la requête - request.level_0 = 'user'; - request.level_1 = 'authentification'; - - API.send(request, function(response){ manageAuthentificationResponse(response); }); - } - ); diff --git a/page/_JS/groups.js b/page/_JS/groups.js deleted file mode 100755 index 65848f2..0000000 --- a/page/_JS/groups.js +++ /dev/null @@ -1,43 +0,0 @@ -var subSections = document.querySelectorAll('hgroup'); - - - - -// si aucune sous-partie n'est active, on active la première -if( document.querySelector('#CONTAINER hgroup.active') == null ) - selectSubSection( document.querySelector('#CONTAINER hgroup') ); - - - - - - - - - - - - - - - - - -/*************************************************/ -/****************** EXEMPLE API ******************/ -/*************************************************/ - -/* objet envoyé à API.php */ -var request = { - level_0: 'groups', - level_1: 'visualiser', - group : 'ego' -}; - -// console.log( request ); - -// envoi de la requête -// @ on envoie l'objet -// @ quand réception: affichage de l'objet reçu -// -API.send(request, function(){} ); diff --git a/page/auth.php b/page/auth.php deleted file mode 100755 index d0847f8..0000000 --- a/page/auth.php +++ /dev/null @@ -1,42 +0,0 @@ - - -
    Connection
    -
    - -
    - - - -
    - -
    - - - - - - -
    Mon Profil
    -
    - - username =
    - droits = - -
    - - - \ No newline at end of file diff --git a/page/career.php b/page/career.php deleted file mode 100755 index 12bea97..0000000 --- a/page/career.php +++ /dev/null @@ -1 +0,0 @@ -career.php \ No newline at end of file diff --git a/page/groups.php b/page/groups.php deleted file mode 100755 index 6420150..0000000 --- a/page/groups.php +++ /dev/null @@ -1,145 +0,0 @@ - -
    Mon Groupe
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NomPrénomBlablabla
    001002003
    001002003
    001002003
    001002003
    001002003
    001002003
    001002003
    001002003
    001002003
    001002003
    - -
    - - - - -
    Mes Groupe
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Nom du groupeNombre d'élèvesNombre de modules
    A302
    B283
    D321
    F212
    - -
    - - - - -
    Tout les groupes
    -
    - Tout les groupes
    - bla
    - bla
    -
    - - - - -
    Mon Groupe 2
    -
    - Mon Groupe 2
    - bla
    - bla
    -
    \ No newline at end of file diff --git a/page/home.php b/page/home.php deleted file mode 100755 index 25d6e2a..0000000 --- a/page/home.php +++ /dev/null @@ -1,44 +0,0 @@ - -
    Présentation
    -
    - -Version 0.1

    - -Bienvenue sur la plateforme de gestion des élèves.

    -Seuls les membres du département y possède un accès, c'est à dire:
    -
      -
    • - Elèves
    • -
    • - Enseignants
    • -
    • - Personnel administratif
    • -
    - -Si vous faite partie de cette liste et que vous n'avez pas de compte, veuillez envoyer une requête au chef du département: Monsieur. Max Chevalier. - - -
    - - - - -
    Qui peut avoir accès à la plateforme
    -
    -blabla -
    \ No newline at end of file diff --git a/page/marks.php b/page/marks.php deleted file mode 100755 index 58569ea..0000000 --- a/page/marks.php +++ /dev/null @@ -1 +0,0 @@ -Notes ici !!! \ No newline at end of file diff --git a/page/modules.php b/page/modules.php deleted file mode 100755 index de1673c..0000000 --- a/page/modules.php +++ /dev/null @@ -1,4 +0,0 @@ - - - -modules.php \ No newline at end of file diff --git a/page/semestre.php b/page/semestre.php deleted file mode 100755 index 83d0be7..0000000 --- a/page/semestre.php +++ /dev/null @@ -1 +0,0 @@ -semestre.php \ No newline at end of file diff --git a/page/settings.php b/page/settings.php deleted file mode 100755 index 3dd1e75..0000000 --- a/page/settings.php +++ /dev/null @@ -1 +0,0 @@ -settings.php \ No newline at end of file diff --git a/page/ue.php b/page/ue.php deleted file mode 100755 index 49446a4..0000000 --- a/page/ue.php +++ /dev/null @@ -1 +0,0 @@ -ue.php \ No newline at end of file diff --git a/src/input_icon/default.svg b/src/input_icon/default.svg deleted file mode 100755 index 405ca99..0000000 --- a/src/input_icon/default.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/input_icon/default_grayscale.svg b/src/input_icon/default_grayscale.svg deleted file mode 100755 index ed397a3..0000000 --- a/src/input_icon/default_grayscale.svg +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - diff --git a/src/input_icon/password.svg b/src/input_icon/password.svg deleted file mode 100755 index 6f078a4..0000000 --- a/src/input_icon/password.svg +++ /dev/null @@ -1,49 +0,0 @@ - -image/svg+xml \ No newline at end of file diff --git a/src/input_icon/password_grayscale.svg b/src/input_icon/password_grayscale.svg deleted file mode 100755 index 8f2447c..0000000 --- a/src/input_icon/password_grayscale.svg +++ /dev/null @@ -1,51 +0,0 @@ - -image/svg+xml \ No newline at end of file diff --git a/src/input_icon/user.svg b/src/input_icon/user.svg deleted file mode 100755 index 4a35e05..0000000 --- a/src/input_icon/user.svg +++ /dev/null @@ -1,59 +0,0 @@ - -image/svg+xml \ No newline at end of file diff --git a/src/input_icon/user_grayscale.svg b/src/input_icon/user_grayscale.svg deleted file mode 100755 index 6a1d45f..0000000 --- a/src/input_icon/user_grayscale.svg +++ /dev/null @@ -1,61 +0,0 @@ - -image/svg+xml \ No newline at end of file diff --git a/src/menu_icon/auth.svg b/src/menu_icon/auth.svg deleted file mode 100755 index b87b166..0000000 --- a/src/menu_icon/auth.svg +++ /dev/null @@ -1,53 +0,0 @@ - -image/svg+xml \ No newline at end of file diff --git a/src/menu_icon/auth_grayscale.svg b/src/menu_icon/auth_grayscale.svg deleted file mode 100755 index 9f3378c..0000000 --- a/src/menu_icon/auth_grayscale.svg +++ /dev/null @@ -1,53 +0,0 @@ - -image/svg+xml \ No newline at end of file diff --git a/src/menu_icon/groups.svg b/src/menu_icon/groups.svg deleted file mode 100755 index bf6f121..0000000 --- a/src/menu_icon/groups.svg +++ /dev/null @@ -1,51 +0,0 @@ - -image/svg+xml \ No newline at end of file diff --git a/src/menu_icon/groups_grayscale.svg b/src/menu_icon/groups_grayscale.svg deleted file mode 100755 index 2eb2cd1..0000000 --- a/src/menu_icon/groups_grayscale.svg +++ /dev/null @@ -1,51 +0,0 @@ - -image/svg+xml \ No newline at end of file diff --git a/src/menu_icon/home.svg b/src/menu_icon/home.svg deleted file mode 100755 index 5d68207..0000000 --- a/src/menu_icon/home.svg +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/menu_icon/home_grayscale.svg b/src/menu_icon/home_grayscale.svg deleted file mode 100755 index 6a9bc63..0000000 --- a/src/menu_icon/home_grayscale.svg +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/menu_icon/marks.svg b/src/menu_icon/marks.svg deleted file mode 100755 index 894e9ee..0000000 --- a/src/menu_icon/marks.svg +++ /dev/null @@ -1,57 +0,0 @@ - - - -image/svg+xml \ No newline at end of file diff --git a/src/menu_icon/marks_grayscale.svg b/src/menu_icon/marks_grayscale.svg deleted file mode 100755 index 0aafb63..0000000 --- a/src/menu_icon/marks_grayscale.svg +++ /dev/null @@ -1,58 +0,0 @@ - - - -image/svg+xml \ No newline at end of file diff --git a/src/menu_icon/modules.svg b/src/menu_icon/modules.svg deleted file mode 100755 index 0882a93..0000000 --- a/src/menu_icon/modules.svg +++ /dev/null @@ -1,71 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - diff --git a/src/menu_icon/modules_grayscale.svg b/src/menu_icon/modules_grayscale.svg deleted file mode 100755 index 6b2b773..0000000 --- a/src/menu_icon/modules_grayscale.svg +++ /dev/null @@ -1,71 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - diff --git a/src/menu_icon/settings.svg b/src/menu_icon/settings.svg deleted file mode 100755 index 64f8cf1..0000000 --- a/src/menu_icon/settings.svg +++ /dev/null @@ -1,49 +0,0 @@ - - - -image/svg+xml \ No newline at end of file diff --git a/src/menu_icon/settings_grayscale.svg b/src/menu_icon/settings_grayscale.svg deleted file mode 100755 index 6c7c89d..0000000 --- a/src/menu_icon/settings_grayscale.svg +++ /dev/null @@ -1,49 +0,0 @@ - - - -image/svg+xml \ No newline at end of file diff --git a/src/menu_icon/ue.svg b/src/menu_icon/ue.svg deleted file mode 100755 index 578cd4d..0000000 --- a/src/menu_icon/ue.svg +++ /dev/null @@ -1,53 +0,0 @@ - -image/svg+xml \ No newline at end of file diff --git a/src/menu_icon/ue_grayscale.svg b/src/menu_icon/ue_grayscale.svg deleted file mode 100755 index 4c14e1e..0000000 --- a/src/menu_icon/ue_grayscale.svg +++ /dev/null @@ -1,53 +0,0 @@ - -image/svg+xml \ No newline at end of file diff --git a/src/userlist.json b/src/userlist.json deleted file mode 100755 index 5b1059e..0000000 --- a/src/userlist.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "eleve1": { - "permissions": "student", - "password" : "eleve1password" - }, - - "eleve2": { - "permissions": "student", - "password" : "eleve2password" - }, - - "prof1": { - "permissions": "teacher", - "password" : "prof1password" - }, - - "prof2": { - "permissions": "master", - "password" : "prof2password" - }, - - "admin1": { - "permissions": "admin", - "password" : "admin1password" - }, - - "admin2": { - "permissions": "admin", - "password" : "admin2password" - } - -} \ No newline at end of file diff --git a/xdoc/Flat-Design-UI-Components-Responsive-web-template.jpg b/xdoc/Flat-Design-UI-Components-Responsive-web-template.jpg deleted file mode 100644 index aa507945974dc08b4b57f355e83ac32ec1e064e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54097 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 z zK8~wCY1(I>!nTdUTVtW&14Sh?IhQn8c7&6M(+@`>uCv{5ZJ2neXp~y5J4zPpCYCxS z-thdaP7Cn%r%Tk9hc<2+RyUvsn|WVG$&6NoHPtVF+E3cC1aBy;RLV)$Bb&q-90*QD z=#-R&ka9W02tYVr8+jefyJdqb&zGAf0jwNy)VNvFi3xUad%d<=F&iBhxuE=iVc+xk z*^MCe_1u&o9al+qPt}~34E(*pL`T^qAtj>Ey;rLF_pLNng3nTSFmpj)aPt*;ew(PD zsWL}W?J&E5w|B_zev96$uqbq2jIH>lADC@h()qFRVN00y5u(yWVSixmhmfj~q?z5< zrQQ|w;(t@XFTyES^Zngx_ot@ck;J*ljw88W00SmAx^&C?{$2_%u=gQ;sGYUI+y`aR zv5{lq&s3Cn?+~tml$$=D@f~wRKAIIHe{i$f!nR%;~NK!7N~#e$T&x+Cs$OUI)A;R|V-G@yCat$Py|Z+gw$xXynBwM&7lht8=E zdKgjuzY`!sH>W?m2+)7W{|S)tQf(J_sV-!iOz+ld5k=DT_Zl>OkJrOlRnBz-g#4L; z|C?ffe~p^IYt-+vH>D}iT9cqpasLMMJN0$vOl#+sTz4@o*7RZ;eE>iRK&Ez4?+t1S zX56xJ_cW5<^*wbOPyO#(+JCgE({{Q6n<@rcAU0#u)6`{YRqup?mK#kmPCtB5+b!N~%v2lh+umbhpQ!}rqOHU@YOrg7F#gHZcQt7K^Cn&%-i!O-cDMJ9dN8Do`{GgR<}6t{ zb5wG3CA9!{OuOM09VeaJ!rR9nuJeX5h6!EEkCy!~L^x=P>iXTsMSI~FD*%j_88mh6 zzRXC^SkEo46qu1QIoeW~fza~=jQ zIm5VKYBKEC>mg-dZaKcYvkE?DTji(zRPn|Vb%Xg&KYrk&;60w>vRr)ZJBNBGz?G!~@Ob<5h`r<%?No2zA7M;POvQ7U7M!7Cv!9q6Wyl0BD# zgT7aPK3tHLNnA#37NFbGI-NFM_}wPHLN?bn{9U|opWVP>ymGN9z5DHPEl-8jAws=k z=|>FOg9&vXjzHq0cB%=LD!F4*h(PqbFvvf1(m)NGf z265dew>Y`Z87nL+tdo^06$wnbca%`R8nz`1KE>|ENa$vn|pufb%QmZ<2Ucv><8mcGl zO+33|BW~M@e4EGreYQ@C2wAn0LT*c%W(K5+mN@tv4Ao*^yM@qMP^?#%_e-4s7w+Gz zYt7Tat{$I_(z*P&>y7_LDfBr==i=Jk2dmfJ9d@MNerUjHnKiR4uh>AvyoDirk4qHj znWX**{d|{#zYns>MW@RfSZY9QQ0B;;l7a>FLkNYiINTzG?Nam*56u#}Wl%K+E0^vI zm6X1|oX3O%HV{|+Oe8ePM`6OF;Fs?;Sm>TXp83|&yJm4)cy?od`tfs(DU|R81t#-v1{ypV_2}LLx8ZT_8HZVWCQaL*=hGV=~_}13_0IX@uBuq$c4+68r9)Vm> z=1O`tqvfH;ifg{k=x=!wzE=HL-b54k5MC1=4U?DlU(M*R|EvNdp5Tgdm=^lunOvlk zAgJbn${B>nZsj;E53|^jJlQ0Ns_s%V@uVaw-(h|o);G3)6YtQlhr(dQs8Vj%1bU^X zTpjolhm%w<`#E=2yoFe6c+;UF;EU%zZF*hYJiKAs&}N@~)TS1xRF|7k9kqmNmhcpo z8`Nofgp**+|8%Qo6&bP{*n)3F?rW4hl@rEDAwf!W;W-XNF zj3ZhyB2HU7s<6vz}&{U5WfH|7{aw0-C=(<(3kydlHKE7;@@LWt?Vj2Z!2!T~RNN$Kcb@{X9#4yo? zmtO}$1xb$iu~1so(4OfZfDyT8`f>F~wYo@m$aYEEI41XdMs`AQb#+^T9Js>TeG%CwXj}~tFNL|F21Hn z{X{Ki>gulbMURaQME;l7Dx;6z^&hZuj;);N7!ST{+e|N)n3sfP&W6_tw9E*B4PZDC z8(C$iNs~Y=nb{^jtjFGz=v2-xz~z(3EQl?dDAkhcEgm++K`p?>v-LLh-HAf^n4gzg@M4fWZEa{t{T!Q`| zfjhaa{w2lx=J)sPxuzv$s$PYdeJ83)r@LQQp`lfzC56Gvlw;_~*`75+lveuEKzheA zpXRB)7Z}1&}sR22O)cT#{883z5)x9Ae6nJ_OEfO8kZ!0n%(eNRlKPcJ=@OZaN_!5(s>SQv zifgb;d;C6~qQ&~Itb~r2`SMFsym*X5L{GtCpfp$_K~q+SHop`U&5j%R1?U~iRdTEC zs(x@IXYAk(`ni8wE|JF{3s?QE}t2{9!b?1OMIIR*N3Lflr0!aMm8qUJ4{U>?LsHiJM8IepI!if zCki`}T1WEJ{QO@z)yBH0=vlG}m#()}0m8{|9LA6t^F(;E=d_&Z_|06osvqI$`&{_6 zz^}zdS2j|hdR|yo)HEM>*wF7?jM;u6jG2qXU{w3x^`uv8;J{`mbcz7Ci6dYTor*6a zH-T*xLmA3imNV%hKokiAUuG%BZHwr*Ru*Fdh8+P;cil{1E?m^0)tshQ8wn5oH{2Mw zSDqi#J7*wn-7G|t25|nC`9{7Tj8d2J3wTWjl9NaJY)h~^9vjRuZ8KA*)But^t_7Nh z?mwj-O0SmCi!-UN{}}T{i*|ZcXkWSm`R9W72mdd?ein9FMbZMhpL+@edAH-1RamTD ztjh1c4kNs1XnqtPN_eU?%y})beDibO4e2fQzDb1@<5!Zl)r-rzZq@JSI&wRp<+J;e z3akcnTF)t5-wpG?|MqIiihm_7%_{4IdDBW)Vhc_vGY`xI$1$;s-lBO&eFS64 zU~M`Dx6OAlC4bbBcwDXGJ~*_uiY`fnHE^`7-Nx+1(i#;&T{KzaSA`?yjs3)&BzPi4?CP2>;TUjU-VX^tInPIh}G)u71+ zvg9+{U1-W-2i5JhHtOugzU<2|XRvjhDYf|pc=-!pM(|~tKAFqfdwlWr>yim-cL8!Z zGji??<9Lh#G-(X6B%;Ql&4b_CtlM$YOZcL$Jk<944+E?bV#)h+HOBe3tFcG=fHW*h zx(#`!WYFK6#`|(P6sYAP#LcH7b*|>gx)S?QY&hSAE-&yF8$kJ5;A_N?2*CILQEx?p z5n%Vn)d=7-t zK`}8Su6&JvTiwT!AsK=6T$iM=y0P9j{!DA<%2Tg{6?1&PO=9B4?yLr-&vPIx#@)Nv zd4}jb6Tqt!Th>nvGT`gK)RGxv_cOftY)ZQRYl|L-M!;s3;cL17d$zYBbuSCrCDX8!JPJ4MrV%uC1K4m1)~b zM72<^*0={z3c8-CcO;N^R&f1JrcB3pfaQVtWwVY9c6RWa_s%yWM*7%ciPE*=+_x{R z>-DxdY zG3uc}LfR%Rt+=PgbEcb|$8`62Fu=Gdt3GlVPN~f6Gpw!D*f;NipH|%5#_G%Cm(N^8 zxcf{mXmOLsh-mfrKabYtMyDyRACh0+T@U?)%Rxy5m-pseyR&5&v%YF`9|eBTtydxUN7M$8A9y4iux)vmv5`o&1(`f;zA#nV z{|7>G{;T{c(<4RNq@yR5&4+9st}`oV9S`>87T?VvD34#qeES4WpDQZWIs%~#&Yi&0 zUgqm)VsNeRIRhjN?(v_SRJKb2eEC9#`MRm^5%Zp(sQzQzgMM}uWh~L{cOY53YT%7- z6-0YQ=$=?afYgoBr5rY&# z0uBPmSAv0E3)NL=5_o;3P~WhVAWPni>I&EXmI~KBJfS0bnL)<~nv0@DQ9@IV-Uv$z z7^IuT^N3a{$wO3(wg~qFOcCirskkz^t^J_rOw;t1F$k@JjcaPWA+5ghr$k5TuQ9V_ z?0G*nT6#6wABP#dAux9I3Is_Ik0+o&cfx{GO`2?{l%KVr!uM zA!jq~!|u-Kzo|ho{2wTJlsA{p`h`STE2<&s?~x!~8Q6N~_;*_=feOAx z^kbp9l-WYG(o@E?ZMSCaX3OAsM^<>u z&37D%tp}cSMK7$07+A_zWZSNDhPTrcYST6T8aKa%V*ZUE&SIw%!H)|A|0{1D-YsT& zaDl=D#Mi9m%w6Fcy>iUFW~J8<;zdPwDuTZ0 zgCUj^_VMD@M@6g{?zEzJ1CNNc&5TO?KD*6I@=ACNC}6CD<+@zD&JjU<(xggS1y-ii zm-*oySzab9*(i^22@i13>JiQpQf#U7zS1TMHwD)e51brywP=1Sey5Ql6$x@Kvx`St zuhjNdXfWcgj8riQh()5l*G)4SbSs6ImAom7q=(Sp1lV_3Wh_#Pv^6BI+K=N04&b&H zRffJ|9<_x!&4Gy2s13#IH zQqR3)>4GD%i9)@6Y)j;dvv0~yB5kzrHf$LZW(afjqGcjq5S_Qm_?=<6REvRa-RB91 zP2H1q8P`2TVOloyjaMQiT;^OScQX7A4RRu)JcKN`h}Ka>iqggZ7R3~aZnqT9rXodl zhr~;J*Gp574U}yJi2U9J%rUvsIp1`l9OFIoBDGG4$;T(r$Y_U(x2!x(rQNQ->zTbz@9+f4aEywx?`e z9ZmKeXZ|eUS=gEPFM!N1z@lmH>_L<+RjxxH5(gck>E zP6?G?bq_x%8Wl)Qstze)pIRYq+^HpxD0)Y)BE8d!k$UjP|60)On8P>+ly+|W$);1) z_g{c}Q;W)RQHkIZwu58^A>8c>`9z0wld7xB~$12o3mQupmYT^nLXc(bxxSumV zIj%&PdevOtoW;NRGi!6Eh6dOs5)huRXBFqoj@VTAaDJO#Q9FHfaV6J-I!H`=N-5tp zr9Tlcc6%@7fNOE6Kat^kj}Sg&avx!N`kvM)*rl0w-UiB}HM@S9BK9j3FrkwZY}a9) zYdm!#A^fvE_-ETmz^%479i4u%3ui|aWu5kX7-M%QUn8)ajgi#HmsZ)eg+gHW0@NKq~<}a=cc9D&eM$-B5!OXz5MI!lH)qF#NhJ?V?!uLBr|8ba@^Xe zyk_b%)4raQaOCN>gf#W_NCfLnUGD%0d-q|8e=7t2o4 zCqVBLxqn(1XquiV09<80m-WXOcue6UPdy_k4iKQN7&Gw=yv0$Wsj&5%pAg$kKGL88Z9K2AMrfwzOgY=`nPeWwTP(+W zwfV$F%okq)Q$|#GDCZ(UaxDuP?D!%jns-G3I%$za)J7>*7g-CQF0JmA1&NeA2E)yq zn9dpUP7A578L|P5(i0?9Uy{KGmMofc;2&&|I7vfG+ETNed-HKWJZehH#*qtyNJs(F z1CD8#l)9Z-wh1N6hd%7z;wFmRMm1|zpc2i+yi-sye-*u&fn#HnMh-MGpnG+>GVYt> zCf>#ENOl#^yG0#SpQ9h;Q5ZKwy0YuOhOkQGF!vdOoz zWXiB338A`R8r(kSo07Pwh0C3Z1=Hq_u%)M!DCa$;V;kzKGBntFpngYYX03;QIWX0` zqitRy>mtTd0!Hn|a`0m6Hu?Rt3x(W#n0OhC z8zLB5^`%Mqjb0zzugnXheEylkO_Jcyw?=T{vLLJ;al(Ar!X1^HhvU;lQw5e1eNB_t|IvTzN9IJhvzcMy0L`Qyt-RWRAl1g=z9X z?Jb^v!12=o>VdDYR|=3ie+#>N|G}H@!{&Fwa!dL>MHxABE&2ppHqLM!^Tv8JcDCFzPlq8_&e4UxOU%@n)f2+@%8 z+xPK$w?DsdQKNTEExDT5LL4^}`e#Pz?{LI90!)8y6fq2+o5&oh>;3ft@1g$@*a2}=vhOk62U_Xsp4ggz!F?!8q@A)XVs z{k-NSDX{N;0pn-)V>!|N^s#W{gngIFaGtnu>JjYqp%fct)~))sK~1~ps`yg%;p(T2 z4L#Fu6~RF-ZU;we_}JH4w07Q`i;m>eCKmjz6r%iWG{VS+_tG8S!gN(J;svCq$<=pH zOuws*;*X5$$$~{V-VA(JbtM_1j$5xZN%*XXeN4gyLR7#cn=# zyTcG{A#FL{o3fAexRLk&v7CMWNR}tUH48+-9TD529ja32rpeyA_gx!o#6Gx@*hX5^ z-n6y}T2XaW*f3Q?xxc-86tfbkae`?rXdJra0U}?>T=##$mDq-4`hO|rPr4{iL7O>n zU*(R<$Bf2O#3<@p1r`|F=b!mfIT>G!V zZXn?9-JqzCnftlzR*=;)tn&?0${0rrZP7HKxUWCtm5?EXPbd}TMDC6nUmIvax7#GP z$~MgRvRpE4>9bRtzeKH){qf~l^cBS$t^97vupW++p(ld|7t}3JoHHSZ0gxd{!wO6- z)(#=3mBmsnZe|AMjB%Z-=N0$gy%{{EZDECPIb6PD>P(Mub5-E>f1~;IO9q9U{*rd^ zuxs|AuCb7jAx2U*ILmDP@9;fTu5R~m;|BR;s7I#Ekz!IBX@8~byxC+gDh(s==He*7z zOs*Ni>M)+$pE62A$qWj)O@?44vAYW&M3yTzuD69%+?kgdlh9*aG&kp;%gETozcu{c zWr1ouv?^_HwH<8UuA4=(;zhNgukr&Q@go`s*i+~N_hL6 zPKa)zL~UFP-rGjUSiaf^+%Yg_Bx7}-&=IjwZj`7dBiaStW(Jt)Q&gWbJ9aMBOi;HE z{_zX2M+`A6?e-ayP_oq8e8QIZ3$V@ifJs&<UywDObTq(@_I*AyX}0V{yQUGv$l_d}jV}>bvauEY!DtiSOC>tHMU= zneWDsrgbK!(D=e_dvYr32{cQIt;JunNR9T*GY>*T=d8i!@m_|kHvF(lf-<)$UNZ$; z?hI{`nm3+`Ty`l0v~138<|C4`^J7z{Z!v^^8UttmG}(Br|1HIratBL%1yiuHo_i}S z6hq!$rT&~ItXTn8RCN99!?}n5Bs}|<*!Ry&xd331m3s13#?21PC^@=>O2u`;1LY_5 z&b(%feOifqf5eOmUoEAtW*qkIu8@@u*ciH2()VqbadUGg#x$^X5WQL#h)EyD10^ke zE37T1v>U%WTQ=w|Un}OlAUzUzrO5K>mj^NTWh$309bA}>p73G%*Va^Q$v%dGl*Xvg4abngK}S1 z8hE>j*W+P_*JXrz?dF>+DeT+1K#|676*|F_ZTnX$C&Wxgu4~UQNq9f8Jc&jtYd_R(jd?@UNJrCBc6Fw`fc*t=^T(LI>wH8a=y< zaBkI3%xZ0t)TnNvsPc?udmbyS)I4BdPM$p(UretW1&w3hlXI95oZw1`d*n+VZQBH+ zZJI+#W=#7y*&0yX^FHgVd~5qf_qW;k??VwP{J7v}e9m{!q3xyzI`Z8uXz`kpbh)uA ztYcD61E#u#4TFY&wGa*1epXAzSG3*K;;tU{L^cJ)ti4@jO-XrGBk~m(gbFe#$9>F7 zoy&;#Fa{STuZ+UItA(v2EYIIQ`~|>?P6k^(aGmT+%D-IOwj%z;amv0KTjX(i$4-K5 z|7FKoqT#z)GlC5owa1U@J7d5W9OLRTgoTAz?-UKu$#S%PS{nC6aNcCR{d3MBJ-84z z$2p=fQGYAyAqj`T@JJuoV>KuK9apicX2o-Oi<#{Ngo2p=7%LnYPIcXgd=HP`n6ls$*&tk&b1@kPD5Ue7NfQzEGcRtPHt-FUY2$u)D++yRBr zFl3C6r%%`}E^y2*yk-7KxfxW7MUET2BR*L)-Znyl!{Dg zbj-5eRwSU*UjEKaiM~|N8+lQW#43A7;`7A-FOdjm{sI(910>!ci6Y2M_K%xLGelfJ z-XfeCm$oW(JLPXubB0W^f=97yq-+K6N7ah~S^&?952QojGub{-UjeG`FQ^Nq!~bJMhtg#S|4HtR z%8qaOtp}#2xCrl45TA#tXp>v6i(b;k1&P@~S79;vG?K}(l;vt`#KBieV;tLNbcYOttc~i24LSDA&UG6a+wL0?=B2&E z%5sGL(lO3iF(xO~SVf8Q9~pR&XKI zcZEcGs|8))N2&CxO2qjY%w4Q|XP~9_u9~G^!2;jpDbcNw!6u1N7pF)#&k#A+YCfJi z!w`{hv2@G%$`vDy^XBo7>as)*w)a|5dp{c+5B&JTYWBk_Yg*R|@0TCx?hl!xtAdya zTQ|6dzPHR`HZG!p)&pAok1(J|pPKes@r7HQYHtmPZv?e$$vTToDec3a&OUKp2UEqxKpl?+2-Uau)YUVQ8n5g&Kpj$8-u#c?vR>hwu{2 zw-#JnUEx^C0w{R=1`_uYbAqePBMON4XqQZJi&lBE+L)FhJrDp zhx2uVTH?I!S6qUrxobeIHFF;xvC82o3g^@AOBE|}keR0Rw2^38 z0NOIWfI*&l(p2ZPe7r14KRd5-BgzVAK~|#b^7ASK3K~-wxj9qXs>UKjd%0%YSyaN# z#`hrlylXUYc$1QQoN~7gO$eE+r@wa-7?As!V~}z zSRx|kT-@C<2yNc>0mcVqTuIi75grt~z?JNhLlYaMN3Z0|8lr2AI9n8HlPkl9y2V42 z)6aWcYAnCWxdiyqM{)jREXg3|DwKhMBs}|^ZIQtafWccJVePB=879z4qpe*B2HEGv zK>GNsP0ec%(qQxCsfyyJ^C~^3Xa!Xvhd^J2$I$`n2ikpFA9mf(F~09!j*f`jm|kY& zdlk~mL_^pAr!YS&XSBAfQb5=tK~?AqW7M?Q;n^BCP~V=9p=e|6wA1uMa+fl%W`E~< z|Kbh7|NCl>HdYI+XJ(eE?+BHpzo20w3%-4kWMh&(iY?Kn?=Pt+IW!6R_6>p@xHm7% z2al7xh83kFB_ts_lETh71<+<2MY>l(BbC2jhxJ-fMbm88yt6hF7}oPDfj7<7ps!_m z1^S9H!@;P_OmbA};RAu4cTcjaPHkZBbytHq15mARZEW1D@5+iG1kpcTlLwFnlu;XQDXHsWhiHYu&ok* zFHnD26ks9!CV_2`Er7MDwyEKhyw~(~vnKeToR>eQZnCRwKQ_!i)`VXA4Zr6H{|7{Z z@()Hla2KZ|NRgVJ3QzSVtG>;+TEwKJI{?gZZ=PQx&gp2qw82w^8%0Eo66D8?fDIO~ z4w0PP$K7PRW^mfx^*W5<(G+gO=o5^B|NNL`1lRzf%}N8EW=}1un+~8!NzPUl@%=1d zu+43~OGLJ4yY*UR7z~6XmrTJ1$|JoY(*k|%HV_GObV=p&o-(q!NXmz5GD7|#rb2@x zraqVM?}U9WL_OfQNcKM`qx?Y)X0X0R>!?4gAI=pnBMKY#2Y`gQ*+~2!TR`?qg*_G+ zE0a%p(>yy_x^#-~OSrU%Pj)z0TA7jS;@4YLf{n}J;6&C!L5ZB7H5lPu-x}mv{k4~A1Mt+vl;E(L@d&tTAYO#GvKEXMMj#2rs%b6kny|wkvi;-q^I#+3q49Olf#10Y;rp z?;BO?-jKT-*f942x(9~Gr5vG+MoeQryv2OL5Dzf)UfcfW!H6HrTIxPmvkCh?2j7|^BGq`z7t6& z1g|dg>=4WaUYD!%nIf&?1weZ_XfTM(TZ z1Gv6A`^mdH?rA_?0$3sjp2j@$hBUto2lH@;sL zRhO4nRAC+5>n+&vmg%XiyPBzSCN8>w(bnyiljZ#R<%9S04Os}2#LTfH)piGW0Tg^< zI4&nUTBw?`+?^AhuDr!=Qcb_{DxcvBdB~d&TV|}V%cP~ga|xq9J4a=4sUoB92Mk3S z0f!N;GN3U7-Ub+@(>IUw;hO~NwwRiaCndUt)s>;XiB9?p7Y$VZ9a=}#_V0X*D;%>h zNBYJH)UPi6p^Skk0LWZGpKjx8Z6h3cnR1>VRAYl-AtM8ahS=aoKi)0ZHn#8f?|6l{q51z5=P!B|qVSs@sjvC` z%gfPaZ@Us;Z#tr}SJo%-XDWpW>UYkyv=r}MeSe9qU9$K;QGR?mpxK0>qijP4nSD=_ z?}>=QrPB;2jL-SY3r=(rF(2y7iskRR5N@}9s?fD0D86zb95Dt<7c64uPgI}gF@6dj z#(MTl;(q&jk{^-3BJHEY`jZk5aQ7XK!6sj*x*GBxfhy4GmSL zULQ<-)X;zyFIyeka@e`O^-wrwwp!r5vRg^bW7!X9*M0$pB%kh`T+`!GuTJ?`cXqU| z{NPf~@%CDn_FuO$S&V#r8TRGmNy@}mpTnNwFJVuA0k$|zK7D&y8eMri^quu} z{~?tPcOvl|?)K6oW&@>3JO_na6hjk$Y!U^6SBmT(G~FVGtNsIyr)+gVaGq=u(i8*6 zS!?m);NIXOlf-cDSZrWf3f`#^0Pi^RX~WG~e6_Z>wzbiqXkm|dt;=_MndUecYiDMp*lb1WeZVL`GuY9Tz9FSm$#L(P~jSeN}rvxjNIks=$@aiCe^`!2P zJ`z<+d%L?&FT0L-a z$`_U{trs7PE@fTzyBE|nSJu{q>&vJP&FO-gifS%NKYh$Y7*w{*Kor+D?cC$=Yuhn2 zr!1`hU+legRGZtj2O3)1QrZH=9a=QOic5=o@ZetD-JQ0$OK_I}!QG|BTHK-d#@$`} z((b*_*+=fZ@4Y+j9dEq%{>aG4%KB#JT3^1orv7F?)IiNlf|)j|+tlYmoy*$3vijwa z2f^~lJCsAxCis*)JwjTA4kJl_iB|uzoP8-$5ay}wPxBN;C#A4G3VXdLRGkE5e-4c< z##najRN#Hy%VKAiFBX|I;ohvzzmhTOQ=&3wa_mYHv@5PURhMyrpLXSx?&aXRF?3Wo z8`$%kGerfu&VufozRTJq@BiSi8mwvlgST?o)8rbsijg_<3QysAyI&BN)a%AqY)+$7pf{0b{Yj0fPwmt) zFgkEPQbEIVB&j5U&^^UzrZjFjP@%Q*CP)R#FPbgN(2zooJ-)raOPCO3S7Juxrm7R0 z6Vtb3xV{k|(h;jzVTpfKA|Bq{8&syNwjS6S80u zJ)fR^T`Ql_z%1*G!5| z^8W##Y4ED~0RWTwH~G|c?297=k;6cSTV!WMdE4p*Q*GOp@Nk{Y`K8x4gghE_t2$u5 zjGV-5R!k}tAwjmEI@LKmQQaDR!nYn)%J|_LG%4<*jq~Ney zp$21@@=?+&5oe@Bu_cA+vDuRLw6enzx2L0;l01QiK_L$fClw03s+%V=fzOa6RE~X7 zcp{<;36a8zC{W<5=5?7$`X~#WesL>24}^q_C4-*?mast&7}K-;Ytt;&G&F(Wk^LA5 z%G7kwF#3al?@o#=K6lktBEx9Hmh1gTrZfJ4RgRvAJ&DnyXy@VDoANlKt#jKk0dRE< zs38=Viz)jVVCIjs)u&7Z{=A1}DjyA01WHC@Jr;2mOl5mGR8(?1kq#u1&m=9aJ5h1X zwG#4mZ(JNuUyiOpMcUr+VK)g88>fBppG|xC;6_+vqGF0L-|Cs94eGF8Zg2^O8qwod zpW^>8BjW!SmqU4&M=&A)FhjoKC%D6J>so!&$Ybu7xWb=A)XqW_gBhZfmZ$`fDfJb2Mya#H)|}a? zL8XCVWA9-V&mizr+Z2CtxOdv^+Z8mMK@NFCOh>;*PjfAXmEP%xrC73Oj))oJnzfZ( zP5c0iqTpqsMWiq&5aRGdc8VNdQWJHozGU0J3;c~@5Ywf(MFL1k`_D06SUdm4p8Bry8*T~Jee183uN#qmH zkaU-}y3wjl;lgAdu)W-7@WXNr#wbm`N^DUTz;KG$-2TJ%49EnCkpP(or8y90Otn6U zVS7K4Yd&uL9xa99%*CL8+P?70sRdOdV0#({t0~ve+^6c~UZKZS@y&mL8T&y<4O;R5 zm`)KE10IeLy0givUbN;YT^#sITQu))lbSwPZVu-l5VVC7Z8+> zmiSla5kCW>+CB67I+^gyiX2D>0;^C`Ly>aSrVepiQPV_Y(p>9#&Jw?tpqk$fm^RMu zR(!V~IHNBGG&$7|NVOI4I> z#i}5a0K1&I7S1sZ$U(zo+j*?OgbD|J4}#AH=U)w2i5a+j)b_U5{rlqc3>dM797h-M_^AH=6M+8R3xJA|$f z6$Y@zty>sSAdHLOD>$Z%$r?%b>ux$b-`M|=8G!k>+F2xkE;f5Fl4QQ^r(BGgTpu%`m9*Vy|pdnEdo*$Pp#n0%ZI}S0Y1uDp|E{@Z+U=# zDb?1`nK-+hUO=FaHg<^@?OatgBXCNcLLybCPE1@83F15d3uL(;{mB=kQ;=G@>;TM^ zVRG@2N<*0Mqbk&+qFD(-PB5X`*JAKG?Yi#SD-=tXSbuzs2LeFp55sTYJVpZSVC{d# z0lW~Be*mbGx$_w;yN?oR0T{B{)hn_Ty1OT6m??J75JMm)Wdgj34~cz6f<`I;iVxWJ zNH(KX$Z@r=C;06a0YQ&8qu4$%XNHp_AmWUijJ^!tS-{qOF|pyM59RcQbz&h^Ja2J^ceG9~gyO{^%)u{^-pC|zCpBF^>u zClaL#9-gXOz9g@k-1d%i^8k(^dmD9K-ib*6(^IOHUF%gU&9-qr&IEy;iecI&g|qTT z1K#ug+k&hA2uJkaLu)EwaXsKdcrX=zc`#Y3YjBgCEZ@!UB{9ILOlf4HNs-8cG-j7I zUb`b>Sko*HqoK_zdXC-kLPB&C_&_w2L z1BSI+@qeAZ9B4=5JRf5zCqJ1Pz{h$9yU{L)d>NWw_9t_}{|Q5zw;HVuJT?csw64Y4 zWPkF3juV=BR^>(RH>yZ^jzjZ2VkizVl#dC+DJanZ2UDI8Cg%3{{exPDX^0y6Uap16 zUu>ee&d#p7Av|{lNevvw%*@yR9$g#1{;>FBYV$K%n3k)G$Ij{dCt{56=y=br5tVs( zq&VrOVUfyAV&91NhCarB^07w0m_NqnQ8~_iq-IDr2*@!R6f0K|}NyX&w zSRs6ZBbPFlmb}oL`RQ)1vouo4zxToZ3PB+J!U!*|BY`4_GcmD2bz<_EkWQBZ2Q4dB zeoNa60wjED3B*DICr2;qw+?*tfEs6@l>UJUl7%k{W_82k*(Zt)rOHXN z3doFcMKM|naT56tLu`5CETqD-&5mM&dGzb`;k+7jyOYu@&dmYKJL3#qm1o;!TGc1A z<8%1gCD?;hIM3y0uw10Jz;SPgCBOJ>fj^{o>Jgh4aVay^!W>-Oc`Wv`tgGNJWwh<` z%rA+}7xvmCz1aLwwUuj^#09o(ZMr3>YieNc)4-AvuUR6fTx%R_Tibnl7jhTAEwCir zlUWqaG_{zuuq$j!`H#+PeKC79zda#lu3ac#v;ooV`cU&+EjkP+B+!Qwp2ee4bj=Hk z3g4Gb}%)EHf`! z%a3tcB>ps*?@XmI!%MU|oD#R!9GPa_p+!X&G!rUwanjv3)^IE6C?1|zUXrpRiYsvZ zVcS@~r=;Wvw^=kZW*2N9SmKqm`pLYhtB?vt@(P0Pgjo`ml~-HawTJx%~c| zSeq_Hc#whpg}>`w$U4;bTtxmGs;lGs$jS5gU2@|!qwWQWP!wpr02f#mW}f3x1MfH zE$9nm0ZEI~AuH;qOWOqAQ^GWxdq=CSr~IzogeE@5bm1mrfdxi4+Rwd6THhrs1RkJw zNFVHW*%e>go;`1~$coIV`xPIK(}W2>&Wa%kJqO6;Vs+XeZMN z$wvJDfJZWMn@FmQtecL*v9~wOS{8h%yuwT~n+E?cU_HCBc5q8lp{Bt1DLK~&4+lW& z=h7|`+j?%6K$qy2KCbIQ{ypK7@#^?3ygjGcV0+KQ@Af4!T4_L+ z&|X8HmZIjF5LWma)p6}MNKhH{ASM-n@tCQv0t3wmg-%105H(05!?Kt1Q?`y|fmIhr z<7BM==bla!mDky6z$6NZ-Sg+?2D;rEp^Ugmy^PIB?ERcadhNt2q`ff^wxlS%sZhCV!eBso#K>g}d)W6u3e?<*NNJjGKecI~> z25|Oxji~}%h%Io&1$!pM?vVsEItNp5-`6Q9AXZ6_2d~?-AHM2pT_bts9tx#=SFUcG zkEB8ANQV;7U?0?2gIbQ5P+d)0nAfDtF5Y5q2M(N*5{!;qZWoM_>!uSp3EJ(f&wF;T z;kl*^*)x(ku9;f2EI;Whur09y4qpjUZZiU^D$9tpghI50L;OhwlUla@mAO5NnP|s> zvLS&FpoO)e=rMv=jJ3A(_mz$W?W<;B)W)f>{(`*L zH&ZelI|e!=KTN)yQUEtK*6NHm+lqC7ODP4}6&lAJkH!z5Xm)%cf4RoKOai@Z%yKeE zY92@;aBQ8Jgrfmv=<5^aP(gZeifqPc)hyXF&KS1a!FF;1P0kTS^z_O)j1$#LlQX?v zb#imAOF)xSGOk&qAg71^;x!c7)U9bkw@w(+=hTq=1W(bWz&_;r z=Z=tUSibNxD?-oArKkIyl(Uj{Nqy{}@Ox#!QOdF7aE&(O*hLWsF;xHSl0zU+w_aHW zlK}#0Ei_3}qkjKt97@{XDKiB=R*FpdQm7gqpWR?MvD#83nYf{RR=Fl)SkZ$%3hnk`d6f#^xI{235jq<;jsT z_#}~2h*4vb9=fvrfVA-0Vt(InNhjfVLk zMILhTmEg1gBPiTsg-#aX(9IG;pv_b%m>ln^T<6zCPem)_tLA{Y_w0g)f95vh$U)zh zQ)zg9Q9Mg%wevywI%1&DkGJB(qIIxfsNQ;>b2aX&|7|9O#Lu@JjQzM0g=BLM#Bx;TdGrv85rD;`{ZY1% z?saxz1$HFWCZTba#_n+#rcyRMMm9zgQAsh7kyf+lFZ!g^@^-KE7WAaFgm|y@_xGcg z@n4_+JMYhl=11ohtn5PE{kWEU-(*pn2z}vC6nU8ZUka(8&%&dp4<&=iGd0j)53lsZ zL>0ElqaTPM#(zpa0Q={c178nN%hDW{epNMHnA|LXy6qrqmR1ZsluEjZ2spSedUm#Q zBXMoyt+1bXwastPJJyf#^J+{LtsUx+`S&>mMQ|rPsb_j2bo%Px@AcTUpy;k`5tvj15m#HH3c5cgh#XQ?4j;FabwY7il&$IEof# zV6~6y7}g&NrB)tjMH_S@OSvC)uENtaDEMDawl13Wc@(0*5bW7(E9?g^X!DT0440YI z-VSN)(H85FdBz|dmla%`4ZA25)%2fdZC7EVVu=bopO3EzA8b>AXao1ejE zMFm;tQCkwD%K;1hA0SJHR-(U`Ec~^VgjYQV&1^6Z*4}3&xjG~TzPU#tH@1k6ok*+? zME>Zl0XV$)*08Vq+nc}D8~?SZ!|#s+-X<+wX-)BL33OjsS&8;lh%-c`rr;d#5~{zt z8K}%n_g3y8Xlj(mmh%Z!Uu8V($2(A0$C)T{w@aVy2<<; z%lrMEmF4X}0MV2Oa!aFysgTQt?MUq_56AZh^vw=*nDtgQ7gocYJDMC=tvcIyh4j?{ zU1;jC0;h*N>^7Qy_L}v+~)%97t z|5jRV`qLeIO|$BayaiFRT|^)lcry*+26;4YF5>?l^2%DJF~ zLh`a`acdG}(sAJrR zMt=a}>iC4QoZb(*zJcZz&Sj@qmxZS+gc-FNL5^PRiN9Sxy0M=bQrz@ty7A;&b&oWm z{VssYp#o4UPX{LvYrvMzJzny&N6yAi8f-RIee2l&T993trz;6mPEVt>c$@?XXE|}! zJ8`{hurj=+-aCGCQ?ZTOo8*P;KfM(rR&EwWwJ6PJLsrL7%+S-M`vcH{h~VW6iLoqJ z!d(N-vw#08LwJ61cIkp*+?Ll$y@X?%&Pud3ywC)9CrI502|orC1({l4D^k3n;)n(a zlx#sATm1pJdg#1nf62xAr6Y_88rv9C2y+|`&lxAf`*mpjYuV%P*~&Tc;mg0UxKJMQ z^cXf8zpY`2=>GyQDOR%z2nbFyjQuV_D7lMLg@&05HLzem!M}9Hx50Wj3L4wxD{6#S zI$2l}4a+DmXOXMU^*Y8l)sCOSDi(SAJ>KO(xR|FHIXtC24#Kp~snalYpLHApy15kt>*>uDx^>x(eC}EvHX6Riy z-48%0!R8NuEDfH=(nh0`09NMHudB%!r6^TpoJ6bVh6b|aYa(Moay{buyccUC2l^-C zd%Vcb z>H3&zX|mR`6xH2hO!XlQPJ6m-5q*RoZ8!9D=l}T$6%*6`0kG5X8HC(lG0QT2VKjE+ z^f^=0EhC!|pQSsVm}fre^!^qHdoBG_-*}>I@U8pCD7&6jE#922&;p)fHT`%v1l4#u zRXv^thpl)M>?kE$U%4N0a!PF3eRNo1^n|dWpau8tiVFre)3PjKlmPELRjZ=LO38?d z%jn#7BEthT3-!=BwCNZM%^9hHLP!bTJDZ;wFu{}oPnq_Bpz`2jSx z)Vo-wbi32`{I6Q9&L0MMS9A^b-{1ui_X2A{5Rne4!Do2OEdB(cIuX>L_={!0{ z{O5iEdQz6DQKlp8cF;DCSiho!{JUDS+Y8Cqk*K;@CZxCyVdZ{IFT_J208{~`U}{F! z_~UesQAfyeUNT5s^@)`EgkD~=tba;|nzX7>oqY>0jO}z(oXWE`pVaWULg^qPi~R|z z$QM2!7D@Dzpkx@A3M}z$MF)ui_ry`50)LZ}>2kh|R8nAZ4I(x38ECHu44SuF2dV6H zCNilKPGP-)E`ytuzHN6f7Y7CFD??K06p2f>)wn7;Ar+JpY&?R34(zZSvw~&)oK|r! zhr4Nus|z1ziZN@Zb-5&up-7+AjIDBh9oY0-Ovnh<9c=ex!%#}-~G3CGv-LN$tSqSzn$`qQ6}OM50zT{$?f z5yg`}H=lJ%STJt}*HU!}pUU!`4;qMyxrUEW<%qgzb4_{oed1QD8?9}>fNfpDs6C-wmQk^CAAt2AS~ z9*)~OgTCpIG4H$M7CJar{UcA(xXv86vjZOba1QambVzE@Ysb_^&! zh>!nGhn_N)!e7AIAT)7aO|3q{s(SjAVft$EZA_mq6TXl_fZx1@lxs3;8~(`?7T5vz zRu^gTreLaM#lNiIedCMZgrda|D@M3^2P(QxlMLM#J{F@&$K`m=JqKGa*=wvw3)~Y zcXUF(3(q(%{{g@|Afz8lvrejLbhbz~i{A=~_p8K#fiaUnG!;Zw(gCE}b-1(cLkw*` zti~?Idca=uRR$lIbrDmoYzA5c|rtw4>=L zLAQIrhMr!P7N!{kT_$Wd_W^CMdICkwY5T0bnD{Ynv}qn>gJ5=)hPN-BbswmGujmM` zG$VVq?%CroFty$P)m2?v#=Q4idcX+$MZO+T_5XhXRm9I zZ)CI}RtUjusJXLU;#53GtJ=~gn^`-~A^!e6A_r$#?<*!FOGS#C^a7(QA=h`=*wDfy z`1hgA-3w&^eQmb8*!eFky!3KcxuOxRd9AA=VFf_1y*U)Iba*yn9OKdygTxVEMePdYp z-R8Dl7l+%9>Y}MmE}f}%#k56b_AT~c2}*_$YqAgX%LXd3k)1kgi*@@%*ZG3{y_Kyu z1`l%)XZb$|NDPe@FL3g2*O(4se>p8pgk63Bl>M)d?sB~<+ZeRR$li(X25UelI}u&^y;Tribk%!i4!=zlKS9gCvh7ZXu65*Z%ge7Z~}#Cx~dkZ zV;=dH6Q>;}=ICNKw6Bi#w?$S~PF**JTl0BV4@zEe#1jZ_cqVkMsFObz7dh*~ipiD= z+BYm`PPf5g4Sp2p&WvaXnK56~JTvlD^jp||VI`?X^Q=wMP4Sa?6FQ@)VR$}_rJ%IX zv!~E_Fj!8EVwSKvI-VFy7E(cYv*Nn4B!|urFS(*W89t3tWOzS_vVB~qqYe39#f#(4 zQ&cyipvV(5VPR94UE_E4c8f6+W-h@R&D+6M%QY;w#5FzCH~W?7fx=Z!uZ%ia^w`uL z>n&q>8GomV%5+Q{H>=LQ<+p8}`?$ssm(BSs$4BuCM!EhR02N|Aa%U&eD%WzS8e)d& z4-Kr}Uw*bzQx9d+fhcO3%PmiVTSQzYU6k6JN*XQDRZbDjK8!Q;W6s3rcJ#!_Bn)E zJp#yaOF3{f;V;13DYg-El$iufP&QJ0Y|mmK1#ZMQUv^uBj*d|C|AR88zlGQzHf-~y z;qY1-b<#_}I%`Clwu&qEwj;WFq}Ay*#NW2&;<9|=F~c_;Y3)fL<`Z;%VcJ+!VwS_G zt|%$p;O6hKM3#VTe~}9Jz0%+{S@UFPSi-%G^}@c9i>Bz#F#WZs58iLboi)W18;R+K zBw$7iLm*{O!*8El$obv7v@0y2O5F}?zsRWx|FqEwoOF=1;F`ex0Z^Nz;~n+o-y*)X z3A%f7#b>QqinDC5O+$xGI{a_k#^3td_UYuVdUY46fnAqW{eypV8{ZgtYc%EYxkgT7 zR_970Ql%e%W%zD!BCA)sR;2d0bW47MijRpBIDx#ZYHGm@)t}8~cTi6>Iy4F84*>Su zJT2qh=);q*Vb@l766lc8G1HVHh~yrB#i+`49fh6uz3a_)tg-J;1hDXPtR2*RoH>rF zKJV|%hqu12a$8>@a_VT;cpcwhapR8CRurODlEiw4dHt;!RZ3`HTYIJvCZ$n``p$kP z0jB7r@su|h5pqO}&~@A7bv{cscu2z(=WilaAr%^eu;V59^Ac!G(pz@9M@lP8oU~$U zlZtS)^Ygr@u=|Ua;j@%}{v?LIif=K)7n|rs4k*^APPk=8f_;x;l|vmmtvqF?`S^!L ze*ijbbt*M^zO`tVTm__WY1)-KPH7NWnYsJIswH?}m^ggn7RIlkv+$iZkg=T|3zuy? zR+s^fvrM6!RC(y``H^$8yhdo&2W|N-W-pBtbguX#($x*ZE#={}@0aPM*!kdjnK5k~ zNtd$cQzkvd^X`7V4PGhA*^7$cJLRsm`ofu+_!My68K#h7rcuG>1cR^zA(;K620G4_ z4^3#Y?Sk6(Qim8bQOK_TV#n?)nX58h-Xp@mmK@5qrSrQKGxy<&nd6SZab~*$>-0VA zN3vtQLRB;u>-}T?v`I;X6b26C&@f^d0P5IA~FWN@A<@B0E6LNees()zQ>A8{&7%vIPGNw z)3UXOu1X8C0pUi;&p-8lE?S2EDq0A_6X)RaiPQc9|MU{{YVxFWyUBB^U>bm zU7H?7;gdp6dq`6xUa#%N0#Uj!4c8Q=Fvdr#uX#_Ng}ukG6Xc^>e5_CnEUbZ)e4 zL#ggL4*rJC^S76n`M7C;xwlP;YU-DqhD9W`ju}K>L->CC<;g%EnQ%hgJWi3Vr!=3p zJLEU)dCCu^=D`O=^Yh=^^%rZe(Uu*HiqBeHq*>~?enj6Pg|TyYH|O@Vwp3lof8ZY? z-c`Lwx~4hKd)6`U>a%pb zpbi0o6}hFDoONDftqzBQy6f8kcMYww1|Ho)P16^d#lF;-Y%dUL#j!=qy+*dj-&QiJaFRK>g7QnZxPgO!sss~{4JNvb(WtNvWrsgUW{9?X?h zm@7H&5T*{ua4yBK;?0;-(^ClhdX~#o!hp|FSj~MDUkuGUDXhF>OS&yBeDUrv&c;fyhgG6fKamdyycFd3nmolE(yPDrKb?|`WC(SivFD_cf&H*mJVeZ z<=I&A5`$Ylv$_>0-HXEC_ShQ_{c0St1&PMCBojMh(4s3Tjk19dGX=Z!P$HTSp~253 zySN1>nZgO{JLmq(2fm{BDY!~G3k3M2G)x}+X+`W@h9(kqN1UH+>l2@`7g7(9>+!|Y znaC_x`Q4JB!v*@YmYf)f?TdY^8gx{WxC(S!_l1!^CI$MV^?nZw<+U+gg{D6A@I&AX z1R7Ziccs@=+k<71TG|m{0m7BFua<{2XB;_NORZHkJ@DSlKYE5^r0+Wif)`9Ew-h}H z1-j-!{ax$(qj~Z3xh7K&^|zc$G$kfeulXe%Rp^vkWL<=%bd8it8*Yqx{U8&gCDP-H zJfo1>Il*X2WQ&)cdj3>Ov2xKk+{-j#^KN~_5wX5DwrK@@KbaA6t(rWK5SRSSSuZ>O zj@DVF^PT#Rhd5>KZ$xu6=A_tf>GVkvON4PVkhUx#7|!cRY}~)L9I}i}jUD$CL+r~-v%(bFg3FGQ z{Zg{+9k#dN&tJ`osdfy;lBCS}DO>z$R4vUSU#9lCazU4!$?WEuW(ekRRDS>{RTp$` z6DTfH*-S};5Qdx!^teUGv>`99TtRvowYXsS716`<$oHaApJLyg-z?&LG%>E94&1(+ zyiOo(chL)gCt4?`y?Vh0&8mJO2*iBYLPF_n)!7+OIk&n!TjW_>r>oUf>36Vd;Hwi zHYbqib&Sryqr{I#00a~qK%A4T8Pw`D6^rX6sM0aCF-<9I9g&abeawQvCsE7>j_OjZjTmm<+a~2flg)42_f-RYeuQpz)>rWAup{OL&ZB% zv)RI6aq5CRQSp#ur8oY^fo!H4Qhs`4tKZxdr21ACV0*-;E7pTnkM8+!76WA$sLr?8 z#;2!%%#!L7>#Al;@_Y7Mz2p8iFO-2`GnCF)zdE)sA@QzISVE`O+jFYDeDyH9!#MBt zkh)#Rk>T?s=lk+Xr`8E;z2XeH9gtXxsCFOzJ6QK9l7gV51S$|YVlZjY4zo`mY_;fU zJ)p&QiX)DTirthKuKImSakjWkeG-<|cUE{O{N5_C1YEF?@G%XfX|(Ekn|^5zbflNFzg@=k!Z}H5hlX-|3{s^FCGc`A zSV-1@^qE>!DD4SF`RS>*FKaCfQqg(DQ-5Rr*t?v!_15i-Y6N_I6#uT1P_lcl_I|Ot zt9j!##kO~1+IcpPsIEz=nqN-CKMS01hwK}bO8N$ci#a2VLXtHsE51uD#M&tzx0SG% z;%i{Qiu1xJ--zh!pBfK?ikEE8dg|rlHyQ0$VM|Ah4(pCr6!jEq->&KCFcA)+uZ{wk zrsEW@xrl~9h;uBJKM<{Ix?-~E)uPUe5!HrPjYahs1hkJoo8)-HTe6z@i1Xb6ZExaY zXNUXP&)%l%ej-TL;No0#YOjd2Or z_{2lQG8-h4569d-FlC=ct0ku~J#p+mr>bD=tPxL5ad3)HPThUJz<~zp>WB@SB3v?g zMY!OesdJfc$^Hpx6u51|Jo8L~^){Og_MzZ9Uif4*JHiBA&YZ0AzT0$2xuJuUWGUv| z-W|(q$SnbB=nlgacpnYk?Wi9fQE~%9-iT1l;;|MSq^Oby!T#j8(Vf zSTuLXbJDEAWT>4MG|3S~AVrn8v%lhvou*8qOp7Iwq%4SxGd@Y2E>;Z=rvdU|Yb3mi zBOo+1nk+RJ&NT|b>3=2Y@+e#_09tp&p3y_-I<_o6^#ee)Z$kD1FdbB))Um#j@VzD1 zhA?mvaa$1ZRsU3kyB-XdvEqr5cs2QrLJ*nO>?I0xX0(KgUAuIQf2EM?f|qvs(DsH- zpTkR-bA70Vu`<23$zeN!7g5ZBMus^5$638CZ$@`W|NqhdY#-{HUc76}iF6nZ{1k}L z70#Y7rtqCMel6M0l~x^>GV%HQ7gImK=uIhEBF9k~2b2J*HjukZ2=#tjI#=oB{rwh{ zGftUB9!(H?AgWG?`4CE3f${D11#D6jEk@fm%?O-yTTyI*w^wtZv5!3kvc=w`3wC;{ z8Uud5s^3p99>`8*?nKx5F;z=D3;_^H$e7+|5N6N&q*UJ-chdHblq7$c|Bpe^hT!j- zYNxKwiMOVW9t;u8-`v+}^sEdINd93-{C$ z#UROY1-ZaKXG|j_(XOFYyU9NDw)9LmrD{s?E5d&uz$2T~C&qYd-9ge8GH>#Y|IIxl zZ6gw@EGM1yb%<2%beED1P6t-`h|tkslB~$2-(GV>LfOW0hDUyN-=zd7N&AjUjw3&y zxZRl4<|QPqHTwE+g4)cvhDX!F1nJJm`3z;Evpdhv>#eP~LOPw=bd57^fnDEO4WpFq zD;zjjBV-Z`%?3lIduY@tyOYixW0W*rN__gID*UrU|F392s;nW}_46PqsUl_vfv~zhzgwH)ICSQ^-)8<_V}VyrQDO`l6^59G(6-G`k?%FXgSlKC9S zGKlfHO{tC5$U7WLuIyQJIvw9I`=ee_oD4Z}zNuj&Q4<=poTNJHyc13PfeFWE_~blV zUO;pWU`??XB=LDh*}vL1+oV*GbqtqEREVeuUfxtCw6B9xP{(g!hncSoG;)pkCd-MU zxWkpQ81n8tX6`bDwB!@)w=bjq-d~Z{kD&`z`vn3O0E@*)`m(kNy02T@&f2B*n7>9~ znVj`cUDYl#O34?JX0|x6-&@sd#b+t;{yxdJfkEicIZO5${_?n{v;IBiIKtz2rN(Uob3jE60_e=tbPEPh&g7m2`0@_k7oGK({y7L3=t__ zwsjFJJtmIJ9S6?w!B#8h<9oC`EBHdz@ry*2jV^4~s&z!q$TZ$PHaW&k{%ysBx^-gQ zvJJ0togmp9zWd&$BZB2<+1@)~NOdJ(+Iy?CbSJ!-ila{tw9A<`~->wO%1B^g2$4Ak%#n6GEyX5g|dZi0+4 zjqGOShD3_|au)q-V zxPajeRo#4fWNI>OuF&atE^UK@-Rb;Z0P%WEQT0HKq6!1i%0}Wp=wtIoiyI^=DTsV9 z9LxoQZc(OT0xaH;pXU`~9OY?RNPSUzMg@9?`dAI@G*t5vB1b1xLSMTH!A(OI`hZF@ z?D!eEpx-R`$>0RPy2pIk($8L}f2QI7wb$wIfsTLJh=0w+c>q6-<&9qQ2-ZSA}Y(RT?7=Uwh^4y(KkJ=$_T&sXlpu9U#}?FGwRf#K^qq~0ooqGz#5y^>g zhR(c;gdIBg@S@_EMwu{)Jg5F)KenCLOY zZJOS2v@x@phmU7g(Jinb@>09+&dNuem?>t_XI>AHAbTsGe-%Ez+SmH#4AFDsS%XhW z+2+!*=D|%d|8-lCXZQZG(IUQk&<}wBT-)T-sqGcR#oZ*?oo*+efr}f^ zj>R>XXZ+3m4*GrBG8uDIbCOFxU{NtbS^0f$+?E-ggb``20#Nq+qu|?x4E$KqGH1Bn zZ}S8ESeRu8;`<;wx<<=)dB+|7`UX0^1A0p%Uek2@&DLiM2eD_|KL9voKL9GKBVXk@ z`<%&K*KTW1PL_TEbhn5z;6s-sKG&745v0_b{DOkrY9R|{M#wCZP^#q@ySPBk_@<1;(76-)$sMo)p^aZ`uI?) z8Xy>g7Ry2@Rzi+a_3+Wsl#C_2OZs7i`HpTGCkaZCcL-@0;;tbjDRE1U@9as1y4*B$_}Qp0M_ zUkkpP+#t>#!|APJt55<0;S4ss!m=}c1&R^eO2^6a?bk{W!Y`CCmad>&Ii1}`SMOL} z5@LSA0rmayQZ4hHgPLdT%Eso!T)|xHT1jHiI8y}Pqx7lhc=oXVth>5%ZCgAiq^PAm zy$1D}@>|nI=nh@`&q%Bp5`_SHl7!{wPwBE11P?ddBa2)1rw+qR@d$AL+Gjq%7rPp! z5e&F^8a^7#5o?-05@Vk%56v5q%>*EcHpJ#=-7t?Ht`yvkG4;Rgsa<$?p5BNP=M^c} zCEO8_Lsq~UnZcWrrLOw@^i~N0`b;KoL&oPJE>u}ov2|JCYB$c8xxnXn9^r4KYcO^s zk09hF*z9?=M}peh`Za$!Yw4@}^(WV>lNp}B5zRV#d~~u=?MMf@At!hDh~60hn3stOSqO&mby&L2zhg8&x0e$*4ei88TzOpEu=K-W7y92@N- zNbZ2ySF>pJa<8NwF?eb~AV^Ybsw^mzEj-UrXpj0*(-ve&n6Pif=po=+T{`K=9dGN- z-y{ot=_`&W`1bgleiB$9+^uh<Ky^jZE10u|QQJWX}Ip zk{gIJ%GgOR*f_#aRcdsw=IkMz=M9r4)y0{Td97pNoP+EZl1xjeq8m^*8vWQNMjv-_1 zOd$@4W{|lm=`TGMQ{)RsURNK6E~g^eL2lvX`{`n@BkH{VXNVyJMg5-oznBzciqdrq z7d5A7H4v%q`G;CuL<$9qqC-R0E81c&ARz#q3-HiD+DOIxUAlH-GuPCa!MN&VosRnt z0PzM4wUSSYX|3ZY-j-$=uTO--sK443eOm$=0;j9Qy7}y$dkBnUuv&Sq^|oT0w5IW7 z>T-jZRyi`J@5&ZYB;Y=|Go-tcdYYy3{{%9JYwf>nBF*H-KaRrQ9_Qx{Dx&Y`TheQ6 zXAWJJ^oS(R%MZ}m-0LKI2pvD{nY~w$vftNepN;GdM|>Y5I_W}BKYFH|C#&0b7$_FHEZ5`v)+1ZB_~FB zBQCjOf&@z4QR3IBt&xFuALiX2d7}Ti`D?QzcH<{a1Q)Ub}N>I@IE}1Eb zs+tWeXMmk2la!WS)ppI#g<>*V?hb&?97EMkRo+43(E8Dvgb{{oE;9oCx|HR)`SwCW zX2Q08*;e|h1IyBr_ezPs$jtQjc}(cD$yo}%t$t6ZKM@t(TrFpj+-@#!L0HQw&8Z)sA6>62skOU%8~h z0wO`!oFyUY5qrwngC4d<6A_I@0ApR~x`Yech4qZnHHOAy7N^*DY-GN;%T9BC;EmGG z@Y2ju+85jJTIO}Us<}s0Xjm}y(jHYduYpPuPQwO9CX(TJ1B8d{DmV)v0LZ3H0p2`{ z9ix9>!JL5NxskY4ph2|@k)g~K;Y@l*CjR#}esDZFF0ZMQrNR>?h9Yw=;1$&Dp)Vvc zBfDu(NxMWb+-RBKCU0jc6ctEe{urWvS1mu+;@!6}Kaeq z$l-U^7Cz?fUTv!hi3pS)I=(4!L4H(Guc?Z;MB_V4(m}YHhsfYVc4NV!@UE#|+0=xA zY)0?k4$B*~`sj`;A{Sa_VnS$Gg;X6(831A84BzrQNTZF$9Ekrmhusdqw5?Z(d@Zd~ zG$zOK)wA2DbqA5ks)O$L7=+&kjZ?qP7~80z)L8T~({r|zW~XTK8$LYdKR8O8(}(tt z&$&Bbmkpe+={`YfU9)z*nwRm4Qk$9SSYr)Kb`Lo_ET(DN(m8`jUOu~~IMhxeX0P$D z&`ZQym7>?Q#D~ka^)(ogdu;v!gtrbz8tV1jmo+7&kF6T3Bo?F?&jKZd=BJE7=sZO2 zGI&dchtHM*kiw`^^v;ft)m#gNuK#X6t*ALPrfbuJx1}DHa*r(()eaiG285Zr=?WS| z%+exUEt%My)lIg~uVI{9jxPj;4sJxD^LJDBBw8kN<7e=)om~xqTKUP3 z$K%>#OEQ54D7Q^>uWOSKo_@@BoI|}dV-r&%l0%rys76pR0)3;>sLlUFgg884@QwrB z6Lb$d6O(tz7eWRUkM4bLGF)upls%cZ18Lok)mZtbg~Kx8H}TAw!HrJ_rnbrbNfwFs zc8BbBcKfU}M%(_iZTWBFSr5;?8PDS$dF4imyVvl*GN`5_@9fj3dXkxf+Ec52ZeH_l zZG`F3SkHEp=?^wjvMXPbR*%^bQZ$xj@wutStnV#PtFA=pMhgmc{g{}x_9jC3X zC_EC}*Epi0vz!HIXu%wnx3~W|k&Or9CB~r*M0Y*$$G3p5TD3VQzp`ycX{e#;)1C-9 zTRgN;bx$iFgLw%&YEts#x~gi%%3EznJC~CH>5!E^ReOy# zItN*?zA93Ky%JtS&YPynqLIGVuSEIS>eGeP?S0OLc4$dL;g2sPg*K*4*)NHp$ReW= z^T(L^v~8D%P<;%2*{w-*lmG$;PZdOaQnK_agQwL)5EEs#%BnBpJ>X)8UfybBNZ~LSOOkA%t@M?IQlOzf`7707+{H4*{5H{W0FCba4lgU$F-y_@m45= zy`6697QoIoTprO)>HbaID~BL)`RdnnfOy+$&T$)(dww@t^#B8V#J<2VmZgtLTX%^5 z%S9^9U!LKAjeuPqj||rCW#b!w(7h3UILGT9qTqCsto8q9V3Dn z6@`hiow?wSSaruOu3=Jm0pH-R&JTeAIH~B^kwYL*cBHah8xraZzUSlMm@{O%_C6bd z-g@sWC*?Nx)JwVyila_6_pw-_!iQH^xew=;U;%&ZdO@mH(ohxr2)SD!<8hI8mB7HOMUi?x)%oz zNWzU!Hbu>6tc8Oa*U;8|Wg@(9ZS;;KeJ;&ujL)V+^G~YMUFnN=la2SjsaJ8?6=NoY zd6n?{lBX7CMt+LpxWYM2&p9s2%eHt9W&>jWf9ikpd61HAL)F#^Ji#t^hA*N6^2|(D zY}Y3hN;5Ix4J9tziELh4EV)5a%;R!_FTcYN`rg~B`DH#wq?_2;d97)W*y$8_e(1P{ z`U9|%=}eghs~*@go}{jM8a`WsdXQPM&{7g3NFk+n8^t6L>_$)cxj-#*Da3YH>)Moa z?|nfS%wxjPzvk73>s0CKv1Oez)y%|$4JuM2M3b?CX%;n|pz{Q)CQ9hV1UxG}`!R)? zxjIWmX#+RL34&J%0%10JbO|k6(kNi?ym@Ju(W#0WbM#bHpTL^u6{k_M9I(b~&R8Pq zKM#KlJa_4-X5ac3@(H0{SPGLbgQ|phm*nV-*7DRcwqzbcqo^2^gfM>PciN*kg&xR0 ztkU0q*Ey7rs&w0c>}9OCj>qf8ry&SIfp@biGjM2KsF$ckZZpVlNQJhsgSD z=q{)0=OAx+^?UNc=dbRaTzah^tl!a?hb(Z}BY(&QB-vp{pNHfxEnDlg4t^(^UTGSf za}G(mUY4`##dEm)_27s7v~te%ri&(}VckQIBaT7W5}NW8-|Pv|hM(O>&ASc9X4Yjf zm7nod1mA0G@67d1{!Cia<(Awye!-!rEk3`gzSXg`aX4HZdPmXi{84aL_U0;1HfctU zOaJShSh=O6i1&Nhq$AJDHVa%c4vn-6UfRX1LBk5tQb?Y$$)snjZwTLC?(UAJX6p?{ z*xANyZ`V=nL9k5uL^Cs1?8_A{fPf#{y@8XvDm2!XevbnRD+&I{0#FS0UhTm7ydbTs zZNJxHFbOz1nu$I^&4(!{`?f$a<(589@F+k=T=E-kO45H|wU=$seNA6|me5e_QSrvm z!|&#JajGTKMkP!x9@HK!(KB0v^jcP@Mm8Hif6)#tjbgw9GbUyQduX;2R+`o^ds2sdU^Jdbl~#CmoNd{2w;!=xd*Af z6K+pt330HQsS50nH$o3JExPfP=ZgyJJR;mK67nJ$Ew!^U{bu3qXhP)uSzL0-Gm*U- z;{<97GMvqQvN4qv*bM8?N$?e2)@vTR!PR$_oHP))0=eTYNTA+G5c!nF4UUoMUy`i^ zR%N5+CdS++b4Q?%>9J0<*+8QF=4g|p+Jadi3L2X*VF;21KQGDdE^eNQwdp9HBm>54W+tD3x0^p_+#mBwbulxeMfn9DGTZwg_B{gkcwvqnU6*`@C zq5G0Nxq&mRY4{#{s)kpV{R`XKc--hHp+IDE7d#F}iZmFE@X0_Zt1(M5L6Qh2-V{uH zg^G11U(sZ}hhYq#VqgFGdp6g-JGHsBNB*5%IbW$uypLpF={`dc%O?3Xa8t@TR%qBW zmR3f%&HFu-Smp#zuBtwKnts=j9QlK6m^ zF275t%d3tOzvvGC^P)SR;H0hjXvm>93=XR~j$eRj_ce6gD9WMD=rZQJ!bfgA7RCF9 z31mc?uLOE!CA_^m(mK!a0;w6oJ2I&-oP1|o*Pcj+=NoE=h|XNr%p4eBJ8&#isBdj_ z|8rtn#E_-XLWzeYbGFxQ+Z8C*DUZ-J9l=^4r%*$uHkeQ$SRB21>WP3SoCa;P;)Z-g zZ;QLzo^U$D9?QoGKtOKS)l|U^*{NX&+82(BBsABB+6$Ckv&c$fClHNt(c1*>AJv>j z!;r{9u4?BOqw4P);+A;%_#V~iy$knb<<~PzW)LHJi1)NklZs1Wl)Aod1)d`RvoXr) z2xr#I4jpkbcHFMVm=PJE9y4WSY|naN!aiR?0t7x88y$dE_G9B4EHc>RtIES_v<5!U zz3TfGi`#RpEo{olu=1P$e?l4xWTK|Xsw;ETpm;Bvm#i%JOiY|R5$}Cdh6KdW z`ahNn36s_s*HV-lLIS^Q+YurgDZ$?|tJK$55u3frak?$V2ij1~iT%Fz?8WmV%WOf{ z%A!tt(nS=a!r;u>Er@q|wBkLSjMR)n2#~#vRLp@mkHfduLMu`V^f3ISabXMbr=^zy zmxrN~U5lw7Y^{s;LiMbk{&DWE!!u7imA9z}osK_Jq!0qezl0v+g-w1&S$~Bwt^K6Q z*>+Fft`GekS(2z#a^3I3zzR_;{J`v_FNlY}hC4M`AooD=(0xlt@bc!d;-TcT|HB{Q zWf_J?_D^f;V|lT1w8f+b73@A;?9a0 z+o5#%uID?s!ztTe{;ei_jJ)eEta`B~(*QgLsbUwysNu;3s@V^nZW^;u+6k0b z?%eL_FXEW|xH*-`e$;F;(#5t=Ju3z}(}LZq$#nUif}+!VIR`u~n-!R1yx4qFn>n-h zMNZ%5vlrTS?NQ{bHk$O08;Q|bd$#SfmXyn=qB1b1sRB&M!7gBWg@O~4c4PLvM8o9R z!0_6~)(4ukp$)Sa(bR`)hc8g7N)oXQY1$9pIML;*!4$in0i2(9os0egT&mTb2*vM* zkiPS7);^k5{w)eLP-c{@5KCR3agW^=A_o2|uXcU;UFflKR}4 z82?k0?0=7~t)O((w#N$)rFW@L@~>e=*X)#54O5Cfe$z%O-)IBjJKa0O zWM^1EgY#vBDJ=g$-q7h+%gENIfbgoKd+X!h%6>xts+me^@FYwzaU=$`PDpX!A zTS2V*HZ<0rC8j^WSAzcxlYZsWH}ZMi*aEk;I~fbJoJaAFpy9FoF~`$7YNYlqbXL4y zYna=p-jx&f7cYCon;?!fgKPVT#$0{@ynXLj7Qbp;{uZ_Bo|j23Be*rMqkg*#6A6$H zILgUU!<9rka(;Rsi`CZ!o6#TNwC)o{#6~}jZw344oJmkO z)#jtBP8*U#Y1qmglJTjW?@WnhhR&~`kUKR(NNT1#wcEOV5oZv*){_L5-A}eXh))NI ztV*ztQFq=3pEx^|R5)!}!+=0)$zdGqL=_5#`i!oWPo7tUc)Wq-ao6ma9*6z%A$n5RB9EqRTkLg>}Sr7CwO zna<1tsB^{mAoc|Kt-F8rLknb`zeRy= z%kWL@cs;iYXK-ts!o|_Q>KgXrJ_`T%%SV(R$0y`52BM^OWFO&9lGzs!&7a*GifpuUH1K#7hZe%l`s2?)?I+3;hB-sjR#9 zF=)`-E7UULx4=q}i`3QcgSaP0{L`~%f3ehf(!|wYDzootxMwnU?@{b&sIYLZ25*M_ z@7oH|?p&HI$EIk#$J5@&z752A`b6hv!5eg75g}&A@sN!7Ep0?JeSObwSCtq@^SzOE z(T0thDfxWf5XS}6&@}y^k=oL9=exVuAW)O&Y3pZ)(V z|9V~&+ETZS#;4<(#rb&SkPT#Y?gn`4?TUYoAZQPydSsYMH0@`~fV$Q1Er^;*M1dFB^6 z%HAn#m&hb$Y4FbYgmnF?U}br*ly;z}{wKF+@bRsg7zS5i1Iev1Ms?1&P6?~Mz=;v} z78{`81H>yxN69!^=m^pzimsfN4aUp~7M8qy*AnAGTaMnt0zpEHZukJa=uv1EZAl3j zoK^ColC1o8%lfurfi+^%zd%8t|`TzO2=N3h95f1vHBLV5N3zq`E-kM!#lIA|hy9j4fQl}NV`A7_PM z#5rIJeFZg1_@-o6)2dwi`Y-D1Qf!g_pN?b$(zhQ4ttrvQ!BgJynZ0w*qz`UJ%QG#9 z&)hc*f!(M=ZKAE*Yp9;zYG?}|V(%`K;vKzgVvRcHE6Xqxo zn}c6}w|@z6dhsWlj+}uTxZ@m0oHPR&c55AqAMRC|-^_1atTDZp9|4`U^zW;|Rz}Zs zNRm4$ib^xm!b;;FAe)Ldjt}n&*UUbVY+CSMxbsTYS(s5w&b(C0fTuZ}15Pseffu+b#1Mu_`Gin|YI$k#Mzaw+| z7Rd>d*^?d9Tt*A-TB09H31>5fc5q${lafo@qTw~#dt`2>j?@zef8hfVYc zl2jgQlpu%4+}7Ut#tt;!jNy%ie#t_;!Oh3+YZht6W09Pj_Y$;ZY0EyGHM^~}ffi0` zk85$qGbsya-u7N|4)M6!&Tx4!G>TD#j~vLOW0Xql#GRPR$)Jb8|09uTwid<@C-QMZ z)-v;A@|)7^nUao#HVQer@ zKIejs=O%jBc|cwOQ)3=8;1yxZl;EM*hMYfXJ|-#n5kMa-HTJ{MKO3d7 zQT|;~Q_IGFT4KU$>dJcq1lzQ5ddGN8Bonw;ww%jr%DlWPL zU$pw0uuaWY9f!;;ZQW$SvHhNq5ZPw$m{5)cAnNCPWc42m(KefOVCKPT*p{^qX^}j9 zAjQZCrnLtGnr~;HuU_NV@V-Y~>sCI$VP)RY_N3B1bs_)ul)2>#_f>U0B;SvOz$(u` zoOyRCqDG{S9P06oj;-OH+_-Uhp1GM4p9t(YyPe6fb-T0)T$S>1<&0FZr=3Ll%ePJk zW16_9sYa8(gJ1lav_qD0_X$#TrbG%2!iy%WQrw2qNAZXNU|_E!Zd(?CmQk z${F2slz0^+P!SUs+$jReykNw9zG<@_i;ugY&KJCY;5{9^);{7V-I_%hY_)>xh--GB ziLKGSiucFztV<9q$16@h$|5nRr{8z3BRCeumuT&2E2MR9X0ix%3?m1Vk zBr(VPPPFsM0S)4Wuch%Lv^se|7cV6mbeaff_eFV%Lpl8qy(h;kQI*c3FvjVjqWd~g zRBKh#^q7nY33*}zEztxw=h62*lD4c^(f|d$zUT4!|AqB+qm(eNOJ(jbwhGbroxhFC zKP{~gwE-L^t@ga1^-Wv2Skv$c_{kgL_DlHb!PTIHPf?wW{D9AZ?P1jB5Q%JMIRR2(Dgv6J>?C12>hzTqW)*YTw!wgZSzDM0{rtMK_Z zXACY**3$lAJzBo$$io}H5HYiD0Q1hX)718=1Y114(i^lga-$FgzrP%w8A%Dr`*3fg zL9&JoHX|bCd0{RFNh&`{q@pp1fwokAaFZ3#tW!AB{R*8FX0H=5kn1qbYJ`@Z0h98e zP)T#t8t*dzHvu4yg~)T__DUDJaz!{{$b3&^3MPjX9LgFW9_Fol*AmGm%s-?9*rYRz zhyhueD|TM+74c#_$%}S524lWEIHR1)UBsB&rF-BDROphP44&y>VUU&}pnTFuJ5Ohd zzTT!K_1Z@D@!c%`2)xHR!0_5@IWrxW#F zLeA&snz9LEtA>~FvyCo0I+At*gvX{sOarUrt=B)aiI#TU7`~i9;+>P?x;P&OzfA-}RP^-|pI#vr_D6 zu}*5(y1#NOc+Q(T)gB+~G`_#P+w;>q8T9__?$_Z;uLQAkgY4wT?$=?Mzm!6GKCf3hx;wbjpH`KRGy~JOcn=P17@pgVazLgL8wcBIFF@|D)5n#uc!3`6;nYJooc9lnu~Fja*k!>=yj$0Q_}+h@shvPz zyw(i`iW8QqKlpdwNEL=D0@}z7`dq}=$1k(8M zs7J6V?UQ)Hy>^szZfj z&*!t2mbAyz$Hd!=w{Tph>*owV747gPmnWOP;*{dA$0g1u8yfu>R(EZNLisysZRseTe1cX_?xXXTeY7js{4E=?MZ zfnDv2%3!q7 z!uUjDxUOi|6Nu;n3sPzhDw>mwdfR+PsAmRFTqa>6Rn# zCRgFd#$Jt_sL#q1=}X}zCh*L2L1%m_w;fEAWRjfElHVfX!PM~G`al87^T6PAUD-zK z!L|Dn^r||44d(slN-$Ivv!7^58jchn@X{MiDpj!~`9g*PN`HAd&R*_oPaX*mPgON6 z#E}{vv(PK`0$g5lO{N}+i5&&iXhX01&^KA0M=zaNzmYl!F-%id`rxkQpL^-mDSZD& z-P2zH^@yKc;nMdV$q(|m4riz5edHr9q}jDS;-6NW?*uQbV}F+l>YBfx+x4|R#4T91 z-&U3n@%jZg;`{bf{8YAUO=jY#kby_JEZq=l)CVtq3ir_ezu-_a8F-kanm$* z<6i{$kWFSl(pN5P)Q{q!-x$cD@k#rQvhI)Ar= - - - - - - - - - image/svg+xml - - - - - - - - - étudiant - - - - enseignant - - - - administrateur - - - diff --git a/xdoc/final2.png b/xdoc/final2.png deleted file mode 100644 index 530d18a1f26ada4a866e328da43ac2bb696b2dee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32101 zcmYhjWk4NG6E%2ocMHMYJ-B;tcXxLS!6mr6ySux)yK90w!2<-c!}ET-`|*S6J3VuI zrn|c8oH_;Jit>_3@Sov9AP|z&S21M}2;3h80*iwM2hP;TOE?1uTvu^TR}}|yR}Uj+ zGmx;UgRvR0l%0`NRW3^nxMU55$7Y-7Z z4UR3a2_76=URN>Gpv~Hbw}}Cn%TcFW;BhhbokK%Or~anpI~1gCsk>M|n39+naTJL^ zs)&Cuq=<64C)aUR=b887#$dT>Nd;S1ttR&|?`~Z$f0ajd^QwO4cP}rbIc7t1QjvNv z&^`_m>;70i@H*@pryeb9tX=afpb-b8?yn{>>z^qNVb?n}9`VHF*$ov&enOq8wOV3= z@5msj+ZE&+iL31+jzMGcI|_pP2OxC3h(m~BMGfe6s&!Y`*X4krGK1p5RLe`SwyjI; zHAVF>X=xPI61+V|kYT^^thu5@AUbkm($swhsm?O5XV*i3*RUw5*#$P_V}jRVf|ep8 zbTJBOH0+w8zi?5>iCPHxiFSjzF~wMm=*_6U%~W|mg^ z1%gDL%Y)R7%#n&xHZ-Th&&CG{^&w4AqxylCC_z9QXaGO3pFVzrfJX#={QXPer|Ldd zuMZKG*<8~?T`K?_5(E;n2|{OPZk&L}BtBuWq|fW$tlStP25!w8U7~U@x+LAGoB#ud zE)gYk!Yv~j6JEj+gQO)9CsYH;2Jr=E0bf{4N2f6?4M2$y?@uby7+r3vCF^ zEpvX3^e-iqo%a9(m02y@;SeIV!+_gY83hrdfIv%7sLcL^1}JL;+0ZYjb&?%0Jm@b% zKIo2i54KT*8w*x>C}3ViUU_8sC`(jetLn2OT#$JP;Ff4h%Gn=NF$XnIT1N4|NdcZ0 zw8q~@r@5&1Ww;?fdA?kz52WbkuTl5C!V)L=7IQL0eWVQn3<88{3KGG!boKWac8D7W zDTYGePSC-ATD!YwgBis-L9#S`sIf=IAN#buyz3_1w=7ecJc2TUrHBy-M}W2F!yn{l`gNuiwSg5ETFQh#~A8_3n88ffpDshzDXZ5NM74&ORergul<|ZS@nFD353uU=3h9#9eWfuOkq^9YSZshI#Kw zZ)ddl3?GI9R#u6mEkX?j0$sR)hvb3zmpi!qxPel&=&gRpQO`cyJ%^04(gUq|6@vB= zI>zqrH?^;=mbKpTp`rZ+KthxKpTN!%{qu{0ESV~>t9z7Ei6VvW;+|tsb{vB#Qq*d`?K5OWw1NO6|(+p@F+s-v0*8gO-Tx{-^hUThS1bR*vvbyKr;=D7#88bBjolsq{Gb*BL#uj{PXZ?^S!-* zfkB{8d1YXzj@cZvJUk!}yODnZv{2u}O4-Q?(8pXN+y@*$%y%QM5NOPQKR%#lE(huE zy9Q?bhA8ZW04bh_5GZOu>W*gj8R@!u0Hd=6`GcKce_UxvYEbK(sI*{|pWt zn}IrD@*Vd9gPRK5s`PDarbImFd(pk**wG)J=G^^zm;0})wbf%hfda?C`{rhphzUkg zLZas``+CdgXmzMej*iaj%gcfHGySo{ zTHUW93xX`qAT=%>l*nfNpm1omW1cN^VS==r=4>cb7i{O3s4NM1w^oD8kY_X$6 ze!6M548SWNrW!E*eJW=1k@}+$5`?LTY-Jyd!~~6av~|%@%`aU z$Dvy-ru4Y?RL-H}enIBC{h08X*I}ni!S^;Xl<@nB-`lF6xH!CkHZva|elilsf4hn2 z=W`I0u3(4eWzWD$wN7Scrbd+}2}c>KzL!^LTvl3XEZ=PybAflXJVxUEa;o( zcU;viitt4m%DrZ%f70Mke`XZ_vZ{!tC{U zF(#6XLiDE(CRj4}+g^CH&FaKa3{ zV>dxEsURzEWzcEi3aMR^wXvy8>rFNAeXdZeyz0CbsAsS3eSewtK4KH`8VKCp-ku-7 z{nd3hGkLhD6$LDUHUZtWdv$(({>Ka_zkZBdn)CgPTrO^hZTKJ-8U)%ygVe=aVeZff z7LUZZl6{{`na+kmqa~u_}LiLiGMSlyln^LmLAG((LEHY7 zbz7#oZPqucFL`HH9rno;vV5OCnx&vJ*f zw|jhEtF#&m49hSfARrjbE&@eb>^56~ka7~@e3z4xlie}MDEJw4hEl0st=-{T&c+9( z+4m6C!MQh_r`u$y^t*IrWd#ZW`_Jew{f@X>?AKB2OZwNVnL@xlRUoB7?66qmp#u*C zLjCl({p7cEcejMxbai%acabjgCZLp}+-DSov7qEXIl z9&XyiFo_gUAam2Q@%4HKeLvBvJ(9T6y@tF0Qky=Jp6fmLKiA4%dx03Z$^u1@7T)lkduwY3+$jSY$JF_8e=Oq?@kb1=SN#nY$cs}>RI$TVm3}#1 zk31r&oRK^!v2?a=4a#Rb{vKXqyz(O_BhAyTgFA>05?6JYDQ3uj+wEgob%B?W4*fx2hupVf~^XMeaxb zlbV=LIX>g2;47(0U(JF-p=xk_IXOeJq6+@_#1LCJx?w{q{7w`W%o&c< z>5v9y82zKXS$&C%J3Vh?Zdl-k|3sZcj-F&mg7EkS9nA!v3!aP(iaG_G&HkDOsj&cg zgLI(}B{B-DPA_eC$ez4-$|=4&X945j$Z|b?#?lMCj^1(w4=dJ#Km@!bmK#Td=f;hi zrQF1PrzY-EM_z@8mVWwe`j3S8dN^cgFbLjI?VHxgu`2>XgtWAnFa)Ex)&rV4wRv;^$Efa6f+|y2clP0HfuQt20*lm2=BW6id249P-b}fCp&?g!ZL+*p=W2xO`biTCyOYK z&MLGOLsGNOnlg64WB729kufEoU7%fAw{@0&iwY;UvZJcO`|CiD%SpI&#QASL8!~0? zA1N2;MrV7NH~5QFUd*Nwng_N~SF^4O5B_3P7eceyhLUJ09jhr^ogwe3idyRJarGar zUZs?*UePw2fm(K*HHOHtA}(bp@#h6&S^K6{>&DxA6@wNM^b}`8Kct}DmlrMy`k1uT z*my7TIltE9=Ykn6bM=`cMhC_lOCi)5hZF70b-FojakPy^U`46M4CUq87v0Texzn$yM1xW4e8QH_6|B$l^>k z!^gHo$8ml~9l5Y4G?t|zQt9l<`4hee^OgruXCmIGwLSZ}@G*Nksj$gfGP0O)v1#?q zXpI^h5>b|F1imVe`T1A$W^CH#Qg<15Y7h=2$Q)FxT<&LUOitLnd!gEnOD79+8t5b3 z*LN=hbBY>%x!KspmOIPI&Th2Lp-AP!r!T32C(eK!$=^P(5`cDyPP~(;Acg`42Ehig z^1gYCW3;=nqW%F|pY-op)Po=zSF+2{z$9zYeK@0L-~hu|;i9hfRtg}MGwXvw0gL- z@HdBKwrD2_SkM5}OO2RtNu({r`=7+a*JJBqPxtm875P?`B5=g}CEU=UJn5u8n!{=U zI}1ghdC+zO{(G5>z%_;earS#lpio~l-y8#JNDC53%^38mqXKfXf(r1*%k)!w^kZfQ zscyplc-}MwfpI1j5d1|1o+d_Sqz@7dB3fctu>~ye^M(F^=Euh`2mQSuMgBo2g-|m? zAHV7)EZ8=q5YHAep6m5_WKiD~v%mOAlO#0n{rN^&<(B@HHtL-k`;y1Z+uv#jpK~U^ zXPJ9XAl4K8`!h=9b3cD_ZW7D?ILzcb-zz5n8vE~0?6`y1!?H%LR--vB)LN6(B9?}3 zeWL@78R4f-YuOkeLv6XAzi0Y|-b}91nKA1t78}Rsk`{Z2zWodUAakrhtzM`5PM7B` z=gZ5IiUNZ{kGDgrClH1`&vkY?8a1|^MhO6@(&+*Yl5I6de6;)e<-{BjsgppmCHW8L z$cr!xf$J>)QxT;1ik8K;@9QNESnl_;^4nkQ7P)WZ3cd|)=PQHAycf|9-X^N80OVNQ z_SoHCUw^L9=sr6sj7-u*NBwubLM~KQNC*t$z0Gu>$vDQsb;Z zXKU+|1^}#icWz?JK)0ToEq1qyBhh$=-Xu!-3s+ZHomU-|-Q923|K6_wjQ9u)C~E&F z``Y_B%VkEZ&anRj@xUzCARC_i%NE4WDRscKN5>-mBO=cd*s&@_}eSj7Lg_ zw3pEPcfTZoThi7ez&6~z>)L+<;OyjXqJjW-fpvRDdASrJ2}}@Ev4W+&ea*cXC{2D_ zGg>9ikwIoX+g9KLW{XRrm%pj>2m&<_6Wrdx0p~rkC&G#vyU07P*4SXjW7o%6vg9~Y zkJn-b-{|V(JP-=u!1*-E_)p2PSnit*U;~uoKGW>0V;1!-?DO`UEer*A!T<%7u4y!% zju3z?jY#ilbZamkjyTTok{7)B6-x9DFj9JhAIZJX(+(3bEJ;81=l%S9Mn^05Vb@PvHIbuqv~DfL!36cL(xH4NzfA zL)x12TIQ>68JBF!!?Vu1zF)(xblo3`X6pH~H}C^NZrzXf%a z2Y_<_yYlF@nfN7-!uQ+X`x7oM8iWS@S8luM4EA|f+k-h|eY(F-kp_Q7B*uWf?J-6Y z3Oipi9G6Jsd4N_QbajgaflQ=(z&c*9&9FakQJ(h_ zpg9qW*_z`xx{d+(Nr?bQzxtrXV-IO2G2DND4;JtCo~hM#oK;kIbaozw$fPnN>2EGB zx&TY=eG_Sbd7DW1Z>6<|{qQG1)UtgZ*FTmhGb1C0YY&#C|1eA144dsuXZIx~?c#&b zWO+Xyrq1T@zm^ro+$x}AY-}midtIU?*WKOyn_-E1Xb96r z+0vYrN|2MeMDh<2q1Ug!WXDY{E%3#czK1eW_!^f#e;VrOWcIYDRXb;3;2j#!VYlF8 zs;`v7r8=xP9Qs2bhuJ#=p4-5AoI-_u2k<3z@8q?(-lU)lJIu)8`T6-=fv(GYvLg#$ zOAeV1osw^%YL)8YJaiC9tX&dHRM^ZbHuCv?r6o+K*Iq@pZ{fcv1Q( zi-3Q-&i1|?H=c~}WC(d!ifkQ}+LFFm05LNR*cdCCuRB?yAU|stG>s(vaunu_VH`P> zmzNqcW9ZJCdw$*h_r6@I5gQ$?=Y2B_u)dRGp|_~Xq%cnfbml2^ROX9Q+V7ROfuTdo zYBp^0A|0h!&hR``ihhXrnY}lxK4QY0sAshBpS=WSYb;Ya#R_iy%8)^2lz87Pl$XGW z4K-`nxu=%3$(OJ|sz25ypsArLU_X^<*a$=p4t)0mm1X4TusC9&OhMl>$q&+*Ah$VH zd9vP!F)!JI$_nyx#ywfpY@j&v{G2}P<6=9Cmd9a;69);QfXYbQ<0ib!kRXsqx`q3Y zibX~aBFCLUWrXdhq2@_AB*L6EaHrj+e?CEOXn(?WiotBYV8wpa^Ad4$n zsx&imN|R+qm}ZvmS06VD-{#ZahQRRbjS!pZ@zMB}vDL;O=cX_tref^T<03zr^u35i ze{$iRak;9}Pd?5W$^P5QT2OUJ-sWy4D&&QegX(QGX8+7f&%xJfO|q@Keq<)Se7d+T zlI)`DP&?-TVncfTrSq~O>Rmpa0gK*>t5k1n19!(x{dIY(G_>bsc&1`if%{i;gHB=v zc=n8FesN($rw&Y@%z_U?bg`v#V)QH-+cZJq?vl2@yVU2{VWx7@#V zA>bTQ9Sf7H`!T!g+xtUKo}ut#30WnEgGNo!`RCLl1-d@f5@ zMdrO-l}%w8BL#P-;PSK`z-kx6=nyp|StsY_J?p8Sdvq6T?R<;<6^+unCN zE`pwm9rF9B)FX}aKCyBc5-)|W*Q;%STaVu%a4S0-A0=AK z_x3?(Tg9ZoVlhWjR~~rKFYbkTh3)0x6Uu$N(Q&liGc$$Mv92wV3&CfpIYg0O=9^I~ zxisxkQ2W!qJe9fBBo{+n2s65+3Cf``*av(cq*SQ1m^0 z`+el1ORK7T0`}6(1lJ0UX@^li76I`sFlskY&Ai4WhhefHLku+YT$;WQ#EM z!Gb)4gGqgb)3AX^eSK(*w_INte>S>30+$?jG5@}1PKc%;m*u6nNTQzSXC==D^WeRW z3gXUn!isWK1@~d*$BMePqh%ML301sRrSBM_hRXG|WY8!Py$tuwZBLLoZx|E9Xh^uf~K&TojlhLOmQ$9WuxtdxHZuk|mT zQa;eqVoqA>^09EQQh2-&FRf40Qy`}aA+uA{8OqC%iEo>VLa`~C-E$D9$F{S!){y^d zY<7?9Mq^dsWb4D4Q9utt?aN*<1}|~BTw|HTt(vIhX2Yu-AF#}rUQt{kpw%p(W7bmj z)lM$ql9;#@DY?K<&0f3J^oe#tRd8Xcx&?i{9dFVJ#9_i~S3+p0Glj2Cxe#>FNu;ds ztuJUmy;WL^eViW$Q+fS?G|bGlg`=OeLXB{peWZNzQDRCTl|im4ud=wbxSU%O6Lr_B zVL~-bWo&sIEZ`6onr=}Jj&ibgGW|!9r9T5QGwsZeb&d(!&y2{a9_bV z?YU`_6K&G@gJw&-S2o*AYOhtpN(P(kxjk_nC7hV?rDwqsjRiPkXr`;hYJQ9o-YIeQ zjoH|Z8p#CoW$qJ+n`8U8*FSo)ISb=sy64|0O3w9Pmvge<4yN{ z?^tz4W-ir-*XcBEeN4&?foSn|*T79^)Xp$fZTZ3;JXXQ5XnDrhU=tNYTqSWY?$Pqa z&A0*%lHU1}LS_&Di!~Unhq=BhE^VxTw!Tj%{ z7qI`GW%NSJu|Q>JCLlusM6XCBW352{fV0n5z&G~kH~7Uxd}Qs)7|pFwUoBQ`N&ZXI z)wQOTv%*=@dx)`B%W;PqIgNLp-W-8Ig7!^IxA{ zUPcSFHaBMjx!>Av!*ntHk89S9cONNx0Lm#$gdagzMsJ5@0P5=kvHVu$ z_fNlnPkuO&!>wJ147cY59$PnwxqlCK-!FH?+*75C75rWnufL7*9%zw~k=??gNeq;a z;=4?3?!LQo8%?G#Xy`f(QwiLJJ9zKo0Z{s-)bE8VUU&Cpr4>*nNaEFxbNzg^Z<)M* zA-Eh(d9HTu{D@((12XnrAGu*qiFv7F#wrE48-l~G9m_LUL%_x{wo+vRz;Hyn8` z+sNtoCD6Ze*RZ-p;DeF^SzbFpMi5CfhL6hkd&7ES45c(sKZc zx8dnRaqF({YiiFuMgE9Ij^~IVwd~*SYab@kpRd=w1~Z-)^`iiTX)De3{r>jy0G#W^ z|M&M;kjeZB(2xYmgUM;OsV-juHRCG|x{lVyJ)kcoA(QcBd4F(~L;O?i znP0I zTV=M+8y_r@Kr?1?x|r9^-F-r?NYs9XO_Ojrrh8 z*zXuhSbWq8Cl!@736)|a;oo>3mQ={VegFIl6^EaEc2*>OI%M+WR{qD-dBK|h8$gz` znVbr;7HIv(Qj<3TofWfnYES-Z^h`_T_dAFvN}4g{%gfpq(Xrbcud8qYghBvVOE=~? zjo=RWIqQDb$dJ;0Tr-Kq8o_!`Y{5`bxG&wb@2sw@l!@Uwo;>~_CAGc}m5Y+}nsq{$ z!X#{-DRJqJX@1FnX?^H<4E{8Kkk5Dl&hBJaa*|25Sw5G?i*=D-9)O$!u#Sl^;^7#a ziLU3P%+Qb!G2SGMVChzeT}FOpW3A&cfT;xE9tQnQ4*DTt{ibb(=`LHFq zZxIw<}5jQqIi&^w*UnJP`ut}8H^uF@_os6mt@KskCC zROX82G=WxcaCo$UH9V61&g7%e@dC)RR9PK^&e2 zhN>1!N$4=>chg@WnGkvw`0(@;>HK_~+KZ3TSLfev$Ih%*pDInQ>T%V6%mX7n@%Oy< z-R3|PW1ro}RZ?;kkXL&E8W}IQ`#j@O)BFCN#Fk|KXa9bzpuTBV8Zv2`*h?4-IY;!I z;};vcBqBN5(zse@=9eti8eP&`ncO39s1gigo06KPuU;6FOm9+}Y-i;2XwPS^8$X|G z_$H3UN72vF_aA`C-1((;x@ss^U&8rJPlXUGEs1r>e7NL!cl1FR2eKE$iM)RcKVJ~V z&(N5mMz%CIs!#)J8V`<|a@6*?jSzB4?^z(6ACq1OW;U+>`;Sw29FHB(Qp*z{3H8qx zhy^*$6Ex*FAC7sH&`Z`f5a47!8hUQYVT3H6K`@7=XbK{Ir1{8#e}A{MaKwAG?tDN0 z`+P^{j735RE-xE*G9%KB$6@=mdQ;V2LcVutm-;yJKm0E z#o|qv4D-fIp7H47HC7P-TvCCTc#ZZy+FuOya%9U|U!4+^=w)%;2)V0^5l`ifV3cXK;E6*bHtkxo{e2Q+j%5{~(FF^$azv&eTf%Zt_C_h#3iu=Kxo zWDxg9nGPw)DIrVa@j$FyvN$)OASz-TLo+fyg-A?N^zD9o+#IgJUS^0m#YnyaJaA>1 zlQZ3E8IZDR<2wNYL>RS!rg{X4f@_QzB)y4nN7EPS$W*1E7Gt2s(kM_E`cTgEp@+M2Q-y zH9>?sl&b3-o+e?3o66+4!u-DCr~+(Lq3FkvE7KR)#MokwD@yei>&i{9t5XB^c z=4_k%=QvS^-6lu9Kw*71Aa|qXl^Z710svuQP~e**Eh;XACb78i3014xHPmi$|8`0SQ`i zZ8Zs^qLO?O3Z#lpR`yXW2h==%U_&nix327Q`<{)cC0S%2pd(LMadgqU^VynBnT`7% z?&CsBMQ}j&|9|W4Kwbo}iwpY8^<4_rcr=C~TRTk?8tc+XTl)SrBT3ucY9MDL~ zg&0^QP%2)dcO)#4wHp^h?G!uL&doXtP!Ua7!EtR(yH|98BgJnBwd?jsz1sxp210E) zmSO%=t93FeMn{Q_iN=CYUQ1mz!1$|sB*@S^9!!DIIk3oYkc*0Hjy0CW*N#hFMs+oj z^pklWljzgG!wIGn@93Q7eI2@XL8(uWFln>BoN8SoHD}IH&{|B6Nup3+#AiWRjgC5v6ae52a%O1CZ{R`YiJCph}1=hamxCteba=U^%Xv5P}(PTo>-3M~({ zR(jo+(F!WseG9)le7qx~%Nhw?UlZ-#o1B-WkomB&p`@sMhuyBnH5eQz@RaQ5X}-jX zS+XKEHh~g*@_JiDm7_X-`_+_#Xz zqC<(PbZALHwG~P`$Gn~*Hy5&!a~!ul;3T-`IHp1U7&fWX6Pi1dJWYN(aWUlQ^rN+s zywDTo5YdXEgPeBCF2SJmohLCVm$nN{ZLWs4dmGt+A);XKj|0@Kv~q?anR*2a##uzq zb7lyJ^I_#z9Aek-ZQgD30>y`tr|T1nnE?Gx8w30=0{Q z{$PeBuw1wa>2y6kP?VNHCh<3!;B#v^Vp|^2!<_$auI}*0hOxE^7VNMe_z+*4)FpIVKb33+k*_KMEjwV)) z_#4T{Ab;G|D6|44BJ&&hdS2MJvkiyaOi3bl;UE)_O%k9;CL$az!>K!CnE2<0eeeCz zj7rJO%lr?`5J=E+aU0CEkzt7)Au4knl@^hT97yra77@P2ITH&K@gk)HiS)yTfy#GpPyXH5 z%EogQQQ9<+A|3oK<8cvUj4`rGO$O*Wt#St#D9s9sPiRE(2~X@95QhtD?3ghSLCc)<`PiHpw_xBQP>3KQwX)&4 zC_E%!tts@PTtH<5@o>|hAQ8U=*B}9%aSq*4vXGw39AKRCuhV^*${ibEL6D#dCBd49 z_;$`Ct@BJwXSZG7=tUKerC62ElqRG4;2=e$5@u+#!uSDMbmqTUi<_|+>^gTWz@*Rl zLq_3avKa#LPEifQ<$orEfWTD*5{3cy$88c?KpR_5jcCZ>OHzAf^h69Q^ZXngp`CFz zSXlV%y<^A->O;+edjzz7R_IRNO@^IfT3Vy+FS^T*NI;1z=PaQZV=7R>c)BW@diif@ z*(<+ljtz2(3mq`Q(>mt7Y2cLp^R} z1;K4aVy>JnV{VF7&ho9m7dR)1*UL25gsOmo#VEDgi|y*rkcfPui^^2_EYs1`0glb>^_jkWOA6WX%S0pTlq`Y3{L|k$zcp#|OIV2UFbROlOk_|ICcr$*0{} zj1Jy7>hMn!LuJ_a?{c&``}kFVw}_jA5n2*;7@#9ecS(}Ny-JwWYKqIT9jqjnL2+jDQ8! zeHQ1PGN{n#B-oi^QglWJes)iq*66jmQMTd>2W8)y$Ig& zN%VWTL;78kW{St3h6`18jj~8-y+Oz>F^v5{2(n4XHI4jTiW|nbD3v*M*tU=W+-Ye` zJ1Y*7)P}+!JO#$IIC%$m(~?gaNmP76%#K;ryELx8bFAhHV>~zuMIsw$FPO#%Ia@Qv zk+6eRD(e>V6YPeRERN$ZeJUzq?q#Z1#Aa5u`|-mWSQ{Jm9Je}DipvL&FunUq;^L#< zdMgzUP%R%xJ5+CAS|q@JsKWQ^SxG)rF_>@97w#-VD=?bbH9F9-XvLn3uXGc zQ(1qV`ZGd%Z06w^p8fO;`!PKRY8;D?)RZ2BtNF7DdU3?zV{&a1(*6CJsaXtc@&lc! z^6A<+Uksz!E}N?LjuM5JsOf+Vi3wZkUGKqDYM(N4}RFL6db6hFr`u&*-G{dd9tZUX(U+A%Q?+oA!`(^e0FzK2lltZ`^CPTfQRLibgGfvtKM z4t!khuLc306Cm*e@Npmz9>M=^WjC1#_!!e4x>?1-{WFV(g4zeH7OGI#md{?d8rmQ> zlx+r(_Ywy2GLr7xN0*Pz;PRs`Ds#t2Nw28RAe;SKo8-36?rT5KuSRs7|9D_ z3NaHX<5V4T8YMC?W*bK}+J8SIQX=%fo#p+FE}O+RE=Sq%@1^wTFoI;V0zcm^5_r1_}ggkP8Q>fXuxGkO&T zw})q@8U<#lisVrEo@3)oU;*fu3NNLy`l+6)--__NGN1O=RqoXi$F?q-;v8KkQdU|; zX;&KmzKTiS@4^T2`Un+s77&E{mP%(M|Lp3yp=IM?)9jWvb1t)LdN1t!p>)lTb;wjh zdQ5P!dSfuegjFda)mgi^7|0}&ufef{$5oAcHhX2zSXkSEFV;>h9LV}n_LVGTY)nPEqwLF3T`}(rR7jG zYb$YY7h<|U0;72^u1Vom`4Pb;o5t(uL^z3GL_?tRsy||DOj9kDKXWnVPjt9FRLz5#(9Ct(3mSLTb^XK4er#;~=PB5IO?sDQCsBy;CnzFa{w zQq4qCtAsuOsab*sQX-C^uD2rj@hpPiCtd|y3mxP|!v(}mw z@qnCyd-U4zCI|n95cTPy7U|KEdATN@;g)@Vg3l6(HT?IQ9#|$1rtXNk4=>usu2}uD zcl%9GE3J|3`MM{>KQpe0E;1sq_pNDA5murSq_jk2bDYd{APzJcCR9dS$QD@{RqXi9 zZs5^_gWSV!N&^VWtufH8UdM}ktXN&GE{X%A0)Kw;=C}@k#9jwJ@OBrcyWe_fu zXmE3*vyOQ(AcxHqIg6Ia&CD&#g;y1=|-i&p(U;a~+7V3i=^7Z1)A!$HJ z{EkEGh7E$;3R|&A#vE~`DyisjI`(;hwb%`l4b~jMwjE;;V?{Sh6&tVrtt_FTzcI!1 zdBKVgCELO=4t)mmabGJ(LZ;YJmS_c=kay^_wOXVPgS;B1s6Kad(_!%MGLbpPc&F}# z4&`w&M2?!;K3Wp)9KD9=(IH6!M>q3fN@=h791G$@6Ou@?^;V4awyu2Z*mOJou#4xJ zC0BFgvmaA4nBmpz36CR{tz@Ye?E`b9l0+1{?o_u+B^NZ(@q4c5k~9h|x(F{y$csm!<3p5ysRl@QCPv+Cz7qG;cdF$Ci zW|3}9o->Zh4$>D| z+#}lBW?5q{humXZ{id^inX;Y@Ke*a|EuK#CzxLSJJaSg@wCt^h|CRDkKx?$zeZ)${ zXee3_TP(M4HK-qt@^U|Fr)i1WMlS;Du49m@Z9Y$)Cze+fb-*+}72t;z!@g{)Xkcts z_m4#29oznS;WQm}GveDtQ9LIH$8qIv`qG$Sym2=QCiP49DPgk5bb2-6a9&M0m|>T_ zy`G~;)vM-b-xo$v?SFB{?TupS?Gg!W{I*cT)ZxilvLh&ANOEr-SCTsJDr1@~BX@1u z`esZMBi5lynJMaNyb4s^Lb9)N%!gpSTNj=r$)U_zpH8=;MC^5p4>cb} z^Ypy7vt=7EU0++QXJWI6^_5BWVTexWEPDx?OqZ0|s883(%vz$q4r?Ab=G<}dWA&x% zZ&=!_ed`zap1{hs>grf^`HNg((Rqi3op*h~Y0WfoWhx>!%Go%PAHl|U7dq5*bnN^XI+= z%fAnc=_TdS&W^wBH^i5T|G8L(Z)lJu^q+sHOoR%WI6s^^;0|1)wzAi~N%H)odBX$s zjUutcS4x_U#H4q`IF@0Pj!WT4HawwT7T2Wqm}N#GB~zD4{E)fVI(pQN+uUAX zVcdx7iU+G~14Aa?%~%*CSNB)ui2kXWJpPy6!1KHX4wA^6@wExD?=eaY#+sey-27Aw z$`ve-R2L6F(vQTzqNl_6j<{lCs^p6iB@6dawV<8_X*x-AAk(6kDb7Qrjzo7^n$g;moKZomaH2dh(+`Cu>G?Zc7 zcG+dHN|_NDI`G%St)WgJ8fVf3K@4)_uep@H$jA`rBn}Gvk|ixY?bre>tpRnGo)%B7 zsf7&U5yd=u#_4^cdc*^7N0y~Wb)3!|D7SQ^h^f~tuD2xbPFPNiyQpq6 z)1amK4hysH9Ol!#Opr(}L@QJpJG?}T9p55|HU}$@V2U-K2M1pPw0>TaCDCM(xeaT}$|$8N zCccs3YP>V9t$Nh%E~>?_+~=0i%%X8Sr_DJ(g9YCf=|+jGEWzg`v%S{Ip%Z!i{Aua= zqH11&$}Vgx9jyhYpJlZjrNb!&97w_l=`~S0tVfbMZRb zn;;r<8~L2+O7J|H?^X$fMvgjV;qt$mBZWGTfl+HU9LI9eqmeOCr^;~=l?$GAQo{!g zoI#c9%?XS&c8O;YM>wDJb+3&=P0IqLLmXY{2i_U0*@u z%1Vqxx8uc6LOCXd{gfuf*~B19The9dphF_Vvq-L@JCf)#6;P+vFj?@|s))hL?|m&H zDu-&NjayWARrj-WVnc=Fbm8lf{pOr^5St@SsVQ=&aFf()s@c}Y8_cvX7W#fgzV^<7*hMXxz%q=_q+T6IpK~W=QBKofj z(@0r;ezu-*caykGwykt7k3VaqZZexU&YvqY8>(T3=pv~*Q5snS?)Pca*0qZW7gKXR zhE*2=#ujQ=&B^`J+a5^WDVcP}4fO&{r{Us;S4I?khEq6&L;d5=*88I~@k6;QV=iZ_ zLBu~_h6v|>mIMqFFl5qIeTF|m`vP|KQ`Ou|Mua9#a$ubGqv_xVe)PUCF;EcJL6~5}3WOMc9{SOEuvlbG27TnDmnO!M)Fc{IX7D^k! zBsQF41+f|nwNc3W%Bw%Z*2&nq+%n|I|*qq$sM;T{kE4@J?1W0Z??j!^;NK)5k`Xso_w2pl%fCY z5b%!$Dh5&ZnNSXGFJbDb)bT$%wkXe~)MFeKR?~^b3(vfYqA;iCZtNm|PWzWQyo+V!)lmKDRqGNA1znxU*E|$n7^> z>68toPOtV^cJeX8f^J^0T}R361yzeh5_5qTABn8(^~bOg{t7tT0-_aSONObk%<8O9 zwq39x6^5BZcI^IrjVbjeBgVouZxhG(w{&_vf`BcHy8UzHju?C_F{Y&qF}+oIw`494 zmPrI~dt3Kbz5WS^(V`1Og2<%!%9!~k6Wwl#mWzv6)Bh(BI`74FihR;CG`#OUrFk=) zGzWS)69vkp*Ql`0%LiV%^E49Jdppoo(Ut{bZ?q9<0j#btxklQ4|-8DFEQ_{7{ZjWHsy}^_6 zblq4NAmGMD4QX~x9wIBuHjosN(shc)SgT^R=hN9N-AO|k+%k#C*3do2wXqlHXgi72 zX6#w4vUfS9rPuZ$8E4m2&lK}zJ*8a8UL9JJoik%vy9bO?JB(|>aya3a4s){?46)tg z*rPgYNleI>OP=0f--O(fR9JD#)-Fjz-coOqP6{{yV8)&vCab-)>Fh9{myOh2V-|W% za#T;X)Gf^IWX1ZC(`nh>yvx|Lw^}vycdcS?^JYhd)VmpG)#`Dy@-R{G1yave^_aiF zZX%B=s58yZb8y*=rG#a=6g0~HL@G6{mB`-CUr1~vj?Q=}^LNMl(sFDqvJPA_$sRk} z3(J=A#FQ?K^3qIND>6AH3?kz!(2Ny~Q0OnK)jgEGg|j0v>nJ2LL9?D+!_gz4(CTNl zW+ko4q`*cu1`kZzz?O z&4iq^I>;_MpT|Vo|modGrR5tr!v#MGFf#$dke34*iN%S0%I2h z3S=da_>IMU}l(#eALzN-P6)Eu2ywB)jQOz>os|4q&CskN^v&4QgO zQil#xNOt=ntuCREan>JMX1>n2q&G75r&jeWEN2zw1oRpc%yOk9yu(KRt_I}MVX{{| zM`GRD?18Pgbk7^lPPQ*6MTy?A*f=l3-u>-+Mvbdyqt%x3r03enQR&!Ni8Zp0M`MM; z{hJ1ET-Vo>YdU;>*Aa`lI+|&}o;Kw-u!FOckbqR%)8}NanoOCqXqL5GnJC?(Gu|gk zhfK!_z~by$>8m}veRN>FxPIHvSMPtZP%OOez@8HpcjfbWN8KPNirtC z(1CsThH3%=t{a2h+lEC`mvZ`Q=^2|%o+al+HoJ1en1BP5m3z{7yOyfm+KFw)wL6_= z8;j{4IBeh6-ibE5Rl0+0aQ{@cGDf>uovnSJ()A}yzMGl7*e-1w`8glhv!9H!HPDU~ zE%NO0G&bBa+0_hbW&xX^jZXejF1GVUxcusv*Cw&uiS61Ze>U2!b2tBnqUwq2Eq^W+ ziyOBO{r97N9qlb|I%-K*Yku2Ead^BmROAPqA2tDHi-Vg4nu_{oAYrp&X)iL5On3pA zt;x0JO>Ne!$$pvEm<|+Is6VoBq$kXYV_^BbUpO=j!lpX>13K@j~mshgD*) z@6Llj!1Y4D?DB`VZylu?w`I*_783hegeoPSV9RNl5eqYs>i{<)2e{=RO+s~uI201V4s$H^K17kOJ`Qdg+HzD zy=BAj*$2;`*U_?hu<-2Qh`pgNrHjePj+4{wW5XqD6U5AOq-%zgkVPgdMHX9$GZKG@ zy^U8I!yONzp>a7{>Kmg?gQg`%uRL(xi$i1o@9Gy`cfj~b`*!D>^8W6^6{6wD50oUr zBBVO8*FnJbz`j=MVQYL^oT^O|Cs0$TWb$_oCUR#DjWRI}hhlvxT^Y$_SwzHP9~x=% zP}}H!92rr-cgpTE4{}X08&zOk=)0-R;^d=N$mD=2XPtaDi6NV68FCRT1r>w#%CrU zn4HZN5;t@@`67RYilwLe#ygvv-hA}F|Fe423&Z2*9yF)9x!IV2x*TxK*wvUUbY_MP zT>C&2bbUBnvaw3(c0JYxGZlrnzMMTyOiVS)8=Wkfuv0sw*W2z+y>cdtyAD!mBKloY zaT1IerEQR(u*s3J*{|vRrE#|N4K0Dy>}%{)N0cO^(p&DZr=SGVdFq(nQ05XV!;zh0 zEKyC^1QKMj>)KV@BC*fD?$%PS|CH=37G!lTyCYFxLm^XnBLqLMNUEoi%5^LU3WdUL zPxU^yt#JNPi=G}B?;9@(35pq8EIV0BVqLP4&qZU>BkFVfwGh9h;mHd#OG4U zH}$E?am4SH?%iL)kI&P{jg7iX!lXFd`;d(==UJ%~;=Nh&dx9kU&pq9eVNqn}VB zwLZhyJV@J=UUo(|v^+a6upy7N@>y?bM{%kz=3wOnQ+cTLrJhC0maD+1wb7*3a2qFw zqS~dJv!u%GZEBQ}Yq}(Tcx2@JYX@F&;Jgh3<0USM5m}UfCjN>YJndrs8vhraT>cx~q->RPbcg7M>1m~?OQ@%C`D@wWE}t3QExJQ7xv*G@9-5UT zx|_P3(;KcI7=OiqbHBf~e`I9DgcosTJ`D%G0ZsCTA3D$4vziKj}Ilr^a>b>qslk7A_lq4K8b&ITOUB+fJpna#sggHn+2B zqcsz+mnyNRy*Y7Y!E}$ti7jVs(6h6;Ooy%q6fb+_+jyaH?{fofZEdAoZlqXp*P0s& zB>znJ^@>~3UR2GTt-&QHnIy5EN%lh9R41ck!q*9hrgYn*tVzjMoycUnC=m%sx3uJ& z@-3@2^}lrgmge%>Bqz-$*@0~S{z%9L4FU$LgZ@LjXV^Wjr3GgD$+@&s78f117RJjU? zQ&+Z95?ol!UaBb_W<_4=WJ@tpPKo5vV{{PKerZynE~z)~7x z<-my&zAz^o$R>-cN_t+&9uRDYS;ZBQ5Vy%9rzoBLNH)OWEQdz9pHP;eJ7sb5wOe&0 zja{eS(c%gF&Hl|}&mF&Dq`9k$JpGdW^ftEp$LxFvRwYXS88&9nb^-y{K{s(Fn&&{a z*q2q7iFIqA80znP#i^(4yJU%T*9{vtKD7GbC)Yl)V&zIwIg=@{?j^Mm+yE%nh8=|? zmDu%`$DyaGYtl;e5zNn(2K{;)BU&U)*(@*Fb_QAbJKWsSw%t!Usjrhu%iYAr*wct) zr|R%`jAz$2B`>*3>ap;buf(=BSqcrQ_X?A!yi6M znrIKD=lce!skyIUN+qKLp0haYi{xOBj2VxTN9|lDF74 z#<}K}7Y7DAIy-VE7o4)z3aC+m+045_3zfK}rrCF|a^&Q9-Xo7j6m)fUrd_sy{oD?E zM_4C&ergh}durXv6-W8(E0BZo)B2~LV$Q^{zv-!C%2+WicH)54qVO+ttV7DSPIcpY zjLV2Rm7vOB=%vrk5>2P}s~wZf_Qs0o4cOjCovepiZdHeR9TiE(nsMd)i;j`%=3%xc z^4ZNA9ojir?+r{A&62%bDhcoon^xYuMz%YXakpotigzH_n6tLVGG=^i{L$X={pWTJ z7mB5H@->>ZHR&{PI%ONr>6Xf!s~AnkvXxvpIzRqUiZ3tE=9+YpxTvRrOUcY}`Go%Q z;$JomJ-B5!y~)JMCjK?Lw*1gi`mFMN@I;w8Ic?&$Q3=bJM}-_I@Zwo*tGAAijg32T z&c@G*Lz)j@u2zNiuty#Z0_q3xNlo;kbP4Q-o9;HW=bV;;<*hQ z-}{gMkW9w$fBol`S6u$NvGH+ZD*@!r9J?8ybShr1@H$Qyu)jsbBWoW1{J;Ni*QLqM zJhNrD8GC0yW4TGQ&4ZuYxbai}*T+n@2`{f%^Y9lYo~68xzV_p-{Ux=d5i3U23!=!@ z9=r{d9L>P4P%q%w%{ReWa|9#HY_%X+!$tuwvFAW0t0^6SI9XlrX(-S{pk^6i?JSp@urB(KPJ@st=*RDR3%S+lXPo)^ z^DmHdfB)Ox{OZPENSRJM6bSa3xy+&I_hoje0O_W+f6tA{CB_pb*?FQ(o0SjUE!j)yzQo6{`_}0$45%#BXZlc z%&$9t;<)|$vOj<9T;Uo!C7R7tr3N^2TC3LlthrJfGM^T9Xd4WY}J_UG2m{_!|u{> zOP?{u-Uq^utTy(nM^LNK3yw>r;`+hTOBOW^j%OMeai(iTNvX(CAm0jGam-QTj){ND zr|;966ZY*JEB$|Kwh7~{nA`f=WnF)_xbufkY+u^dB<#Cor1aE+yN^e>|>)@W2C7sQ}!Aj>~%YUJ^NTjTR;z{C;mi#kAJYFdH zm2a!gS=gPibG7YlNmvunD+?EbM#xZGU|Id9NRwU|+NLZ;$`!54V2pYhSzSs;eHn@7~o9KCt%jzsZsR zEFXF3{(B#K;QmsvaMxe%c=x;Bb=`H>opt7!U%&DzdZ)xfVO)Ow@TDLA_P4+N*T4LE zXlPJA{I3fy{QYl!z4mW^yItS>fd`DW0g?IJV~_so7eD*r7r%J*)mMv6{69bV-lLDK zx$V~9%OzjG>g$g`_UQ0H|HP5sXGewx`XB$>-)>X4efYr#9$Ed+pZ@UsuYdjPS6_3@ zQ2&5a$-?e~{e5Eb|LKpnUUJDL-?{EO5vBL9x+l#9>Tg-kZ25<^X&6j(M4^nJai(Ku zBV0C?$AR_IX2WVOHnSc>{t`XePPQwXY~O=X8`>K+XUxtX!+Jk1<;~XH6zN1-*(?E@ z^31R48!r{h%vqu+!&IqMPH+*=zn14*%gLvb|DvDD5m6--cU&@&6MI6zT-Y&TY&_97 zHaam8%WJkytifH}k(cx5wl&G;r~1bVqV5qt);pSBUW#egl#-?5TStrA#){I?8wV$d zvo$~A+2(TQEH1B9k~>TkuUyo)oYC>JLXj;dHY{dzS*0i$-4NcOPLhMEBxt*2|02}6 z3V}J`da!_b(jCgw4&;g4Bx_g(M`n6Flxo=Y_V%{7wO)GZrC<1eK0i7-A+YYh_nxlK z&j0@Y55D`o?{{`~-hb~ZVJ129-S7Y4207Bv`M|yRiazSw5 zj|`8fy;kYC#T96!Lh>GXP+Y{K5*|n(UF1Vh}^c@zU_k#+<)d-XN_^L zZ)o)VvYl;oeu?BCd5f-|Ieo)phaG0Hi4R%@x8 z1F~2u$2u8G;;<;PN>y-HIr&C3<69~RWF^xnNnQ^5Fp&u|U!F`DFU4DUjFzuz&QbaD z*fNhUNefz3j-evQ;a&X`NipRrGggYfT~B9|usqa~hWWiOve zgs+r8I>KI=@4WLbxu$&d)}^v~>Tif7Xl`kV#PNhMw$&hKJ+3kCP6bXFGo_APa??*{ z86$Yosa6y4=sJhVo@rLQbdcUpLMLd{i_M%lY~oPJ728`ryF}vcrW{zfW^$A}xYLY{ z7xMY$c#0vKRn2A`$l8xLopw!7bX?Hor%N-vFkFmG-eUQx#huO4x-X1O^pfX?COX5x zJuS_-oDlQT`?O_uND^?D(szn{(QHal&y1d;Q>$m|zLK?4&c?{`u3;pvd2olJT+Vpg zHaiv0{`5J+dV&QERE-;&+#LOGN+}&=lzI-kyJv0Myt%22oI-R&ewx)i%XdLf1SsWl z10!RjYP+XU%^hRMH2u841S#+he5TfUXCZM&mZ9QEfv-#%WB#QxK5e_XL* zDE=WjVwX_LEccOf3T1l!^X<2(O?+KXeqet_ z<8H2=trYUpgK77%PH$pqQEWnsWz`;dA%%&uTSd`w?mmJELAcAu+43qoyl%AUx6NX` zUdwS)8_%1qmvve0=rW|&Ep9E1j1|kF%jM|hiHKqCtmPe9XM3`o}hp6!-6HK4)py(Q{k>j{_$<-kqC=|=s(;Ag|B4|0G_Q-^dUbR?$bhH+?6qnEx(=wz5E}O*#PJSxI?-IR& z{3-;zxSg95h0k80pcZIVNY~DYgoXtSQ~~*Vd*-kSXG$VFa{`%tmo8oN$fHLbe%PXg z3w0cph;3otM;?7_>3;jEB=pu&&gkE!w)T&F2E&k94F6rv*TDWk* z|GMa6QSBeN_r6O%@cz!uPC0VnMHjDr@WCZZmR#}gpKWVv-?nY*M?d;8f6G|kaVmd~ zJ>kR$?knG_t8?Lk1#iCS;_(vejfRgu@g)zhUi~j0xwN~htGT85U;gFe9o@4YUj5Kz zmwvFNrFrGbmGXASpLmjU$z<_Oj;Gd?gO{^MmkfXR@$DBJ z(0%ekF>u?Y|NQQmfqPyYiGKR_qrIms?pWN>ylu3&X4~l74(*w6CYM(zDGNAuAQaq_Y^hrNR%`_AWlK2OdHIqj2RKTyBoWD`((&dc83 z-YVr4BuLv4Mn*=SefHVqhaXuexyvwuUP_~8nWEv{yKUR!kNs`K#%Blm`yFl&<9NxE zeGfV8(Al%+Xy+G~*XPXXY}-089G%&mZ|ZJq-8MMf(b7EO3@#M&EiD5hqjE`SYm4EM z7@bWmErY|OkF0*^x4*gh|Nhjc`g*s|nKP$) zFSO+1f1fcO+SYX}Z|K6AFdG zbDOt)^suG{3l=s{3>@-()lSE8n7AoNYad;+bm`Kzwl>J#8ZCVFTEJl6ovtxU16q{-qC0FK9*HFNc(F8IrewKQY)A}` z>cSL?rT+4f=vhQf+lMC1n%35q&tLh~V~#(8OQj7@KmF?0y?$VD@bg!G<=BZM{Or@~ z;AzJ(u7bqeS=+#BYwx();=(Eq+uJkvPM6dRo$bxQ)^eou66td7?QO^P z3_jLB($mvv&6_57F0t~HtMqD-f850|WjEW)}A+w;r1n-84TJTzW9 zxTmFmy!5B%29wEMil3T3PKQr$!urW%vr%o4It}8D3$sxA8>4sI z74bAaHaDA;+(=VK@N2nPbJOqRIV^`CR7zZsQ=b8v9rxlNm{etyLpGvX$7(8>#)UC!K`qn9pdKcKt0P%_UA7w&$3XrO59B+`0!1`{lgYlH=Jv6dm@ zpxC?Zt^1W0E?m^z)#dEx9VB3%Rra0*48Q^gcFOBw=eTz_lCw8FPick&d#>A>bv)mu zqF&Rj^oT7_Ch4^?jyaxQ-qhUE+}f&FcO>`9vV}O7BH5Oo!&~Wk7b`JS^0>kA!XZZ- zDfaI6$c@ZmqZbZ4;z%h#U*cGH_FPI$Yw~hB8haky-RH;K3(|NKu1ahI72dAz3>bkyTx6rLSUlzXUhiRWL!AmDkgLDeZ(v=YVYuBiT%^vXbY{F_+({ zt+lPEyZg-9FaEr@uV?P;rlwqZzBTdmsy!GYQe)fmoc1E^F-~`G$T->lwNx^h zAmDmstooT?)|q(qB9OpLVIuZYYoIK;$+3-$od(!n8j;C%HqJIgj$75)PrDQLE z)rqD8zD+iE^sLK9_6|kPo{3Rnhjf#rh|&tlO3#E!i85yAO(6VV%ho3vc`0jN5EuGvuZ8QlwdH&sc3CMc(@crk`y+OeMHXbOn`* z&GmRwU<*jYZVg8l=JWZ^uI>ZojGR2ue@|~y_uL+n4ZTM{&Y9=()(_Be*(nQy5 zYPladV?=AWa*nq*$h^n44APq;Id0obMestH{OL@~5$+m#>5g*=6-6#|cGVSsYjkom zFDh~k8J8y86<*C`mJ=*`4rHB8%eF_^=w0V+3sUWN=gVs~cWI2;;LniZ0BxHJvk&%c zg^tcnHoIhNgDHRhn)3bo zCmwb+A53n~L?Vv*UDBl-`RD*c&C{( z^@7dip-^IS-iTeJ+Rkx7?keM;HslD-};GZRy&w?XInb_MYyh=4Pjbt;l3uO-ZshW@|GnO45C)`DyKQ zX0o?ZER$?vG?TiC`YG9D!H_$_Y!U}cd`@Y6Y`AyeTpwe$?-=M3(yqcb`gd%r*D5z3MYMyrudd&w%ChuKmRbP8psmTU_3 zw=_^ojVGQ#wv#+Ss5-n^2fh1Qw=&`k?UWD-d`|adCT*&cdqX07Ya}(ns;&0$f~#~Z zC(8w*)Pj6dzN@QSj+~g=I&aI1xAl$>H@D}zI)t0ujR{JeJT&Rodb%|UTBeB%k=aab zIRRx^Eh^9Bnm83@$*zPH0Zj zp>=S@+)_`^oSxaU#rBQam(;o=QgiKbHIlogfbD(=fPjH&uz*b{Mk6zfya`l?)3g!E zNdSl&*poQ@h&`TWSG=;d1T>xgOg+68xsq?htHS!5?7D(9V6A7aX=`bd@*g@u%UOwC z_bjPuB*WT>%tEUin%8SO$tIh0_K>{L8}@0~DLK2#jqIgd4^8UEOVMZDPce*L)`Q*`H~$UGNZoAYfqXOu5%4kF__|5z1MPL*pbV42ynu zPk2oU%Dc$MW)XHGp95K&*qGpau9E#R!D|LpE^iaqvsn4<$b{#_vKq*Y{*1XTCU6%= z*`8;1tUAgJEl0m0CrDepju&)hM{KEZD$RfFY%8p$>b(}UCVSaUKj}oLYbU?$Id+`V zWUS28)*4?&&vTl`WOeVdoZkceE+KT)-qF$A($e11IW#obGdwbXY_w1qFBFTV31kf! z+^HhCqS{%a9ZbOK=zl?4_osp4<#rSK)M+A}dOqLUGGDZZj*d>DUioSQF?u%3+97_K zMn!JSB-NCR0zkks?JM4!Jv-YE-1hMX*IXJk!mS{hfOLpiAT9j=&)&5y*Kr)N0dJBm z`@#SJX-T=9{Dotc5nAN#0NrzrEnDQd0hMA@7Devaoo#fZZz$Hh5P$tSI1u12XMMmY zE}@VpL|iV-8~e6%`Rr&z9`>jKOUtV}A^QG~jYC^!lU!`7W6=$ZFhnw#+WnO>b;Hl8Q_8qmM z@G~LWLbO#(b3m({%66&Z_D&P*3wK7Z?V3?Ot@zu4$QZ8psspMRCCeSpLK+nuWbAO_HF9R0-s%rt%5L@uQbO>(5wH-SIhQaT{>mN zPZ&BZY5(ta$GdIGWfyw8rnmPp$?iP7wtV>TNw{QV#C~%jap9p;_7WCd^Hg;rx0i6+iWa^p6U807Qu=RnJ{~AwW6HFb0{>I%oeEvNW3tL3GlG8c%LKDl!*8_8l6o(mWod64y696UjCz^<9)KrH8v+ha5$qlq z{kkVm(dwPb%tw9WQM5AWY4)mVpUY!G>YUZoL`JyTDuq2l!|>0t?58qL!XjGVe-Lc< z&!!}|C>gDZ2-2Hbf_qL6MrNDrHxqq+2*)swXY{oeTvzv?RY>iOGFX*{tsS-SEQHrF z+Oi6v(rrpbnQ1cSJf`l2?0-UyqKhlD-L#h?K3D>P%FB?kYA~Heo1-ZGI5un9&KoTj zr*Sa%F>%nn^2*qeI2V3Q_nN&6d(F9U9&Jd4(HW_Oz5v6!a2U=kj#E+&}N{_3Dq_zBN6pc== zlVUo_MN{a`<&e+LD%#H>BV103rrj3!rLzT(^s=~KHLd{@g~j`W7XN0d&&w3-@G+3e zU)&c|vW9vkf>(ND_uJZ6jb*pZ2S(4zxl@+sWSX+#5R1vDst|PBFJ#!oh`I8S_1k)s2m4(2=-dfvMbochy|5fu~fbhk;gQ#>G}BY?CpBp4~_BpM_SILD9P9 zUa`i(W6`~4@&o&k4nn}e>8V?aS7C9XWk6f4$t(mV^;M^v5}@z4n>`XX;t?(CdM)9k z#!tf)MKv@it^l0=VR0qd*r}x6Ecd1>1ll~WF8_*ufEJjlZVB}#w(RvwG)Ap@!r~&) zLw}YTm0L@ek5(oZpZSF<%wqdiCAko-`GU$A^(WgZztI%r`jgSvqRTUq(q=hSujO)_ zd61Pd41L6q-??{^ujttmFZALpcb;Y*cfKRyiY*SgDHV&dM3fu~Fxuwqm8Lb?O$e?= z*9-xFONsb2S0#D0y_8gl4aJhG&Gi`41}WEo7%uifN<%%HrMY3uJv`7lRUEs?9;?pH zhc$*}V@~ZdEk?E(GWHmBGoxhl4@yL}Pb9n3xi}*CkY+Z`n^}!_9QXGItGsuRa6X`abM*Hp|o4 zgcNeM`_DX4tJJgPj#n>_QHmt0Q=+N{W_@?54wFL5YneoOZ=~g?AxZRYvbEh>9bM_p2Zpz? z?WJ3LV^6IckmB%JY(-fxfy)2on6-`02cvW4W0laA7kh^~+;f7=$E3A98ME#c$kYkf z#dAelIR$^{u*?XX=Rq%)E}g+OR1QMG!AUh7DK_EIsdZR&L5xEMKJdz%UPRMsow^cB zuPW-rv?v0jhH(vddiUzEFbY8qZ$;fV z5<}v9T8+2POYUPM*%mC0whwW%J-#N^YsaA6%k`ZdxwRgmfRx z@;zGRHnc4}6dVE$&Om@Z%*_Y*PY1q_=7!T0U&hDsQ z0v9c?M$FU%q(x(M<9g9Kw@=KK`CiQwqmnng8oB@T>HXNG5!3>q7EkLAB+al6k1Sap zXnizW8(0h9r;1C@=3*|wE0GpiMt5zKq+}KqSJm=Z)!|dTADx(CWyW3*fWAmeyO_pe za?8$(JD<74@*j_ZW5J!)}z>rg>62mQkNCi|jFI zT+gv?%LcsCYPFxE5Fa^v%*K$0@A>lq&yJU8SSDa-m$3FDak;pVi?Dk?DmG4hx(Y_6 zECpyy-o;pL*Om{tH8 z??{Uzu$Z5vzqZdj5)vYuLHfvL4);g2LrMRzS|F$m)4OoJhoM|~EEtgSTQ>5tx9379 zo3V~d)NPgGG!S-$#OSkKgwNWZsOtPpeVqHn7ezt(p`kRhYGpor{J2tU#yY9Y)xTZL z`?Pe%@a53;7wJp&@|@UG_$;fvXvP0?YOL*(*vl&-K%a&_LcoDPLfnnrmf2QRm>{N6 zDQ(-D?Pb9zo-U+WUXoLb zY(xqVT5K`S&Vn$*t?~LCQ>+=jmg*~;B)n(Ltn*?wQHz_U+zHxp+`4|(vxu?S3)xgt z`FksVXUj^C)^lxDU>aROe*)%qtwMy0i63<+7`^bYu4CdNt>D%5+T;!UvFqY89vVMa zF0VBaV3f2sXVnF3m3!&L>+jdyU99)T$Iy9%m;F#59v;4Xx<^}+0&m_&SpqZa$a}TC zDy5=Enu{g1T@s&(*fzbPbeM?12wK)`p)l*Oo}C*$*$R!`Uc3NG){ioi9~Q2$>IQu; z9?O-$On)g@MZM-jw+?2gOVGyk?ww&%kxO+_nQ_*01VtlZYoN6faf$n|Y=mZAWXV+x zAdLG|DbbD5t-6m>qA1ySO_q0;ix%4-Ij&X#ex&QHE7dsA)z0-qFw*4onei>x$F}dm z7N~sr?x#C^{P=NX?DHkZ&>`RpeyGnb@J~Pe^vlmbfA@I*_{ANzwg-<2x$UDzo#(tK z@X#Ztq6&5mw1-)6QMu@crJ;hX*12q6dTnEEbN*ysP|Y%yA<27%)gEBMYFf=8&RfJf z5o|f7vRp9f`(xQgUag1zvu_EM8Q19A1Ljnx>A1A@3?bSONU5h4gtK z>`NvVcgt2a3|IAMXbiMID3>S-tt|#`q4=GUW!Y?cfH^lUI}WTiNwozbWxZobMbq;a z<)##`q~sC`H$VUXw<>JGK51&4LdU|>~6CwH^+LN0#MMGXX#U;rVN1 zs35p9d|BYgLx1)B);~NvJR5=Bs1R`QRyY!^KL7XUH}K`_@4x?^dldvXg1awxX5UCz z?{9cRz&G)1c9uQkXs(P#T?f*=TjHw~pudjWSh_?h!z^MG>d zf*?3~D0O#(pE(~k4=ATD2;$709Fd@dAP9mub0Od$2!bF1YX~?eCa+=;1PNG!t0mx^ znB3SP2!arB5Cp+nA*xIegn)w}I02%{1VIQm2!bF8Lcm86%_;~k2zg<1bAsz3;AmDs za6!lmo0}8==JW&{UoQxPAb2-^xkUfwtq3^2UJ$1^2=cy!Urs>4L0*`1xa>HBIiJB9 zzArf#A>b>2Vb1x8hZl1`gB*xch_jWbGzj9Xhk%11QE5zGK38zL?{x_HcHi3=f*`I;K38x;gn)1Ny}d+3 z5U1fnA6Xt;5QKn35Ai~R6Fjm!xFD811RQz@f*>w+ZunVP@(}O^pQ>1goRc6fb#D0O zA_RPqr|QL0-==lAVwQ@z5Aq_1fP*Wv)K_!d!%{(z7dZrcO2;SOQ;vHO1POCPz$ajW z&`A&k;fyoCCo$A#N5DZ41ZRtIM(#-nI0%9uF?2px2smdb2yzaC+m06#2Zw-jhJtIL zvE%3Pis?C?M{aL$y9E3`r#7!a+^LKBTpTo1pFpOAyy^`)5kQQ z^Bp^rM}Om{G6Wn1L7anYa5&=khk%112oe*2^+yPOhJb@uq9C~bnD|t0&>M|~4=(h! zgn)0|5(PotpnQ-#-w<#RpEL-9;8qX<4&svrK@fz1gCG%q5CkFMAP6HS;*Vny1R>xc zxD`e`XOc@QAqYaiK@eXd2!arBa7#F!`0P!uwAg*FTen2zNAsq7XU^80000`dewZ0sDYY_JzMGdmYQfSaF#hy3q9 z3fO93Gjo1baml~eg0+MwEL~h2`B_=r-Q8K-IawUQ7Od=ie0=aZI5?PLJ(!(6?OlvL znC+b@|22a+$k`NZ<>+GNU{4O8(b&Yn)kTN`M(JN$uya&U_>YP0o&RPOjAg7I#*VD) zENrZHcJO^Y_I7qr1^t_h|7mY$bx%hSt18IZ!4+%@lZQFwzXrp2_g^mr?+BxYUkPjl z6N<5|xPz&y9mw8AMqG#j_6>`fl^H)97cY#9JX~x%9BkaY?CiW89Pi$90|307oRS<8 zViNzF<9{~x-TQYEylg!0Bzd{T+1VvH-m!D=@NvF>F9~1+@JPPn`PWz(duJD8dsEQA z*0qAI`}bJB|8gw97#L*i;s926aIpOs0+cNsTpXM&9URHU)VRs%6pT%+?BNgS;R5<= zzv3XUl^e)R66|0{{>Wi|tN#fF|LdLqHP-BZhij}bVp!qu_)l>8*CQAP;UE74{IJG< zs1L{wPTSE2Foz2+xbqPQyk*?&yQw?HJPhy@+%#*Ie z69^^g`+}p8F5|5#^xC2~Za8kkH*0UN1(K5COFQSz;Rz|a>5r3fF0ESs?zU*+z4m5E z^Dx5X5JkMz{h=eK!Z`YqmT2X#8?_2ZJV!$T&_t^htGXNK&f{b7uJ#9;0xkWIC zkGl|x|MS?njE^)-U}0^b&a0Z)zF=;(u7TMcvJea6PMKzSD}*~G#<4n!WGqDdBQS9O zhmo13^2xw=QL{?M#mQF(u~JG6N}N`>90*AG0awEyrx{*`O%*HF636(2xiA7P3@TFv zOG-D0J}Jjr6{f4$S3(mcJ9b#L`dD?`L8)V?Ec(w45=DD45RIBrcHh*iq9f!hrL>x* z*nAO8sbSMuH`Shz*rgGS!$siy=K*SJj@?<(7 zX`Ee(Z*J|^SJ=I92cV?UW5NLxXUwx8tkQD$1jF7v znIyhf7i5z3J;h>3h|4EFn;6bydHHg{w!`3o{MC)iUn;BfQf;>P|Ee`C9e~?& ziTCpupTFdR_Yb=7G9rw+@U^=j?}~vrX+C-NswE?F~17&?zhuaocWZoJ}3VLxEAz;Ud?`(mbcg zC!aC7<^f#BjDHfnY71Mapr;Yw9;P^Zjysp>ztk<%zRu_ZM`U>2C`6J2-;_5mv=6Gi zu6+jml|_e6ZaOahtfPkALdds3_2y?ZBykrV#)5u5H;8YFH~nU`4(7ooKBvFYhhYhv zx6wPr85*%wmL&4bNz^5SDxPm0V{#BUa2zTFx24Seff*Q##zI%+N+6`A$9?R0(;=o@sfHWyt5w)12O z8>+Z!9EMLgthzy$dUPaViU+*^AnJcbb2#svDB!#o6OfPEg`;H{mid0)b#s#_bj9b_ z_syhvaC)O+iA}GmW=v}#{g3aUr)K2B63@)sI;sgqJeuC1V?F-Z z(lAZ0#>+dT1+%9eB+J?Ma7C+vPpPI1FvSdBTAM&=Qp# zf@~JF-!r6sb7^&MXf;tgTH8-})t(=u=8qd&WnHgXll8mt*4kS|vx>B=hohj~qp|l< zY;g`loO$iE4ds|p!FHrW*S!31UOl;7^8%$f2O=?=4=)yad{*k3%0TSvUU*>1>QpRRdQz1hr5iF+Z{6rkHU z@rd47)1j1@a^SsmM`K6TWz(Q#Q)pi1j<=<;?`oo~#RoAre#(q0LCqJyH*g#JuDXnm zbG&tFir}|4*fe3zWaeX4=g)$xw*opfW$)dJN5n-g^mJK(Z=yf^hKmbRlYgg)bcQlj zreaBz^w=gfGx09utT+PXAnYUQX2+?muvO#cdZ7jRo0_${hRN5JCJJu(tCbZ-#)_J4 zj9f1j)h@i2Hb$K{XU$&l+z6f%Lu8b;`_Ld|e0o-JC-Zcmx@q#}RhMNJouOr=msKt4 zI6y&ZJF->oSV`X!ydbo7>K5_Y&+8Su^OmFTq;6o|uFh$oZ_LM3LFV+CL$oP?+B=Ye zcsn`jOQIKyz5p$4d?bAMer5C$OKW+suDQYnGFm&SECKG zDnFDPUvk2)ZoGUymH(+w1VGCzEQ1jfK3h#d0!@=2=$R`TZ>Q*9bH=20lo@x>El`L0 z>}Th+XR*IBTvY>T`cotgxw9J>^md;fSi~DOv za!m+eB#S~ls%_@Oo?sNdtZ7Ge^7TCGTGZQCJWIIe;Gi|qw%xhK&E81=eK4FjWmx~0knk_N|WX{;x)xer$kJN=XeP<^aRF{m} z^t3tcCTuYeN@z)f40n=t5BDSITv35|Boab8xu(KbgF(|gOc*zl>^gxx=E7IdAT1^L zFk;cvW<%|f+Y}V|9=>EA_)6GBQLSz89={Os&R@Ou8sWOj*c-{0X7jo2aju?(X+`8{ z^voNkupki#97d8Tr7l>&m%E?vC z#M?h9yE-VDG8%hfyoN_J;i#o9+kDP0g07Gr+q$iWW5c_p@t_h061Nci% zeGW8T`jwPv`>RRLzSJ=nT(7}$bwm9f--H=qEn}hY2~XitdnvS^o6^Tml`?`a$A(Mz z{Ctk&d~`_Y6*DoW5WNsSWDfTa3V&KNh~P=*vaM8R_f`wXcT2A^{?d@Y)H)npi?gyX z``1?y!Fa<1tHl;`C)1!2D~ub;`+H^UD9N?dCHocEi(2#MoyFC}Nml&>s{@xgK~js+ z7FIKO`IVAvBMxx<8nc8VPuhM;T}-b(sQTja37COwWE7t)l{&oEzXf$;KaO~+9m{WO!YkO@G+p+j}4#mk2T z1(dlfT*Keo0a(O&o(Dp>K#nn@!sgOoVP+{F^gqhZU1BCdv9F+?+4M`5Lx3ZP25rZ< z&!vD-|M2xesg`ELetE+9A+qg-O-xESaqK=Z%Z)3U)*aMAi7V?jT|dLb$Yfd-h1aLQ z71CIU%a@FbYeGXK(0xI_q^t9D1tS{~)VU_Wyeeh(P}{sJv&BUn#B_2BD*cMT@t3+w zOJ|j{Pp!xTNtRPv$_^c#p?0-pYR7ZdMB9&#LimOQup>(w>gsk}EX1R>?sX7`w?nW{G{#AFqS94FQ&52%(bVHvJCuZJZq$g3AbIc0|{F!=yiX`dJXj z%82zGCAS+eOoEL%M8NEEay1D?AHT@hif_F-4MP3fuTosxtM@Q!9N~n2(rb)td9UO! zL~KJ4XPX>%=w>ePaW%Tz9FTUZUW<(-72Gfp@cdCI!D@PqIWVZi79*iCI_G(Nf9#sj z<3mxC6_Ngpf$0b*{0$SivxH6Ma1k1gmkX5(GvN_I{H8d}n*qieCw?$*wXE&sbCQ55 z5~nbE`Q>Td;V8*Pt`$|rm}ibGa**{EiWEebbMAUKB6xAEaf*!IG6!XnH(!bk{RAK; zoj85=mlx1}`ra2s@lZW?AVFzaqJ5Or;)Cua7o4`xzrXy*e$mZ2R%E_!=-)@b%xZ8RtuAnis44-C%UixWjQ+U2%$n z`N<*^7KA@ZOI>}NV|s0W^Ub4=RrIg)h8jwFfToUr|56zb&EnJXrDjU}P5)hy>N?r0 zBX;fYj%-F}-@ZO&JpW;mv6w5Av}M~7O9`~dF0f=O75*y<`GUy!BcV7Tk7gKVYx#js z5{Vn{M>$i$N7#Q^wRMaaPbs>wN^GnV<#U97T-^;72~Ngp?%kB9{rT?vF1;8&hDgv{C236wh5bFGbmpeRGr@Z*}9bq9Kl z(h(6_1y^B8Za3%cEUVzlnfI@lb9Q5XR$@8_@C{nmYT4m8PeY@#OtYw`3NGopGDV4i z1n_mU`F#}BhTj39-osmZ?#8^>;g-gp-z7<>x1>9&`@5~H2Dii zh91{`s*RpD$@1w4ojFZbXrfM4b!jHu4at)l$qt}?&}PO@OMibV2hK^*QkyqtTRS{b z3w)%s_%o?Jsi1Cxu1Jubcsl_f|M$Y%F>8QSpIAMV#tsYbBe6G^sf=iNFtgg8O=f|5 z$h4rN&Lp6m1&$c!j6)%ggaB$MD*j;ay@igex*twMmL}1O(HZ9#I3C`UiD+d`Ly|&MsH}Ho1&e-hss0M2bprlN5}`& z{wg|{1$xxWI|)=NQKpXM^9f8?+J04Wy;XZ{dFnCC_)2Kl^>G(Xxg-zThBckmDQhdp zkRvX4g{o`W3Fy&iQe#fQa|>psvV2^GPc>hcpvPXtbfNV86X&;^_iFG{G|V_S_GHgk z*r01R?(^aHe8YU|9aYmV%7;*?jEoQ;jqh``hUgpVd+mTf?s^wRK!$GfHWUdSlPu^w z9VNEQMKX_Fw)JiD{e!fL&;hdn0mu$D!uuoT=U%@v_*QMbzTJ5aA_lytbw@xu&2L)= zd7iPPg;Wz3*c+Zew*B6W6Q&}LsB3LnM?5y@i=JaYIi|-^rL{MA>o@s1oipFpF>HV!=ZPRT-u;tHQ3M!H@ znFJz?mqslVI=|nKWixrZeP|A!kajFSNg!Yq?Em^49*)w;^X!b=(cavVP|ww>-BV5V|cQ-tu4#&RddJOrbhbZ++y_Y>?x$+RB!id>CfE`37<{03N(!JgyrtjxE- zC8&#DILJv?h7-h~P8>c&G4 zI_zHn6t-#iOjznhnokDU!&eKFAvIqZgt!rM&g|4P9bnHZ91kTW{=TV&P zbj|rc)EYa~V%C{B(ndHv*qX}EZUmY_Qkz3yXAsuQkG?IUkDa+odJ@+e23)vwvS-po}umr8qA?7X-nsHiY5_w}2MB(R|Scn_>sY{2P@F=9K zyR+X>IkQ{X-@}skrwH*ILacMECdn#zZn2*UJ0KWI==dug!Z0mQLl7*n-T}M) zf_?oDn=oPh=du613FGJgo5^(Y?z`&`hgm*%o}RbsJoj$5Hv13D^;0^Ax5HUuv$3A5 zUqYt%%B{2pU6J65h9vC10`w8ilHY5!8;i6{>w^sT3Hxm4N9=;uHh~5=+x~asEli05 z_DlQB462hi!heLzao`$;^J8)5X#dbhNx}cB;(o1oC@IN9U(uAFs@5RvfN#+Dvx+tq3T?t86(0nEclUH8L= zBQLd5CuNg4ALfWLpIcH-Vesjt+F1MPnq0-;sY0`xV+{d=Hk~Hbd!ujH`#3OUN+KyK44bkv9oDMBS z5`L6<_tlNunB28de;QfueWz9$qn=6Ty+&_33K?rBAH!r!j5twCL|_~GEAcPN@4MIS z?srwuR`_wM;LzLKthA5px_&;@`itS=%EbWHG|;g9VfmUmY?>TvaHyii?f5js!RKT_ z#_hTb=Y?lj==sCxwhaEw*^`x|&vB0Gy^5Pxf5z8e2p>0GALZ){sDl zxYMs9IHlM(pP^@@>)x8=AKc*ryH62Kz5DaQ&|atAzAs{SXdNaVq8N#Z1bVCWuT&6k zksErMw`eDu<*ZQx=gZeH1UaM@x2dPces$bh3_83$@egbFfAJhk(NfLZem<`Y)MX{? z@hisHeT5pNYOvO7eNq@RfnCVZ0Yg{$!_DEtQ3NHeYV`~g{ki{b#Y0ll`{%JW8*gKF zoiBVrq&##_oN*OCbv$Q#gRYTu4#1StDAA7XeJ5jNcwfRgXt%t5GC<;fGg3cWu|)GC zC7Ntn8nwDZqc0#i{rvp*_?DSPi3_#2x_6S)F+(~sHl2p7$8C`Xwx8=So~WWPC6Tj# zmL85S7-*?+du}d#^<16ee!lHX`GF+RSZl6SCD%CMG&o-TBK%qJO#ccLTgGqI@CK$t&Gu1{Uy_xrPcm;Y00dt>=_*8fPmQAuti_7_02Nwt;< z2CWt6z7Xn3LI6I;TaiKeX(c`UwEVPIdT!!E;>yK&THNC0SCz{r_MXE2t84w|4Lp(Q z%3t1rMymSfij>GBnb7CD3Jz};SpD~jIPSuJ(&7}f&Fs;;$;g4zB~cb&%2IQv=ASKV zJK1}7st=EDbHbHy2V1qz_Fk7bRknOD;RxA?T@bnbqLLJolGS|3Sga|JpP8>RPK|Q# zurszfBiuMW%f+N&asAs=DZHs8@ZpH4HmR!3Z@dsHr;3Zc1f8{q+mo21g@H0aNvJ+c zf=WC44q5vd3BYOSAmcU-9;xPp2ftSxB5U!PdpXm$KN@3RQ2a84c-hcgp|?InvuYlRA51Vr^9IB*es_2Tcv1{pmYOyVx*0 zYzx3&nxYI6bZj@0k?7e+O$if@Gy>ayJ_H^ywOg%U!(fYJZBL_)yQ62L6V_T*mf?@m zkuHXb&$dwXCS%Wb%mZIDtVn}qaNS91lHTWt(?8Sf_fS=#ux=bns7pCOAdIBrIqc3O zd4FDj-^QjG$jwAH)@9AE4Vqd>OiHBDc2Cu5_>Q@dvqI>!@%soa<0GaAII;!oTl{86 z_ctGo+t&nai*mFYD$TJ`cpGcCT&kWVzk@{>kfoD{s~q~7TQ2MNLyzhJ>pazx?`n4* zva+ESP4M^lRxGjx-IG%u~;|XlQxid=KV!!yPnZ z(5{?TmfWv=gwI+Ti)vx`Ec&t{e82HYlgm2Le!vBe$uvyP}F(s|2D9zXlUHEH>%dr=Yo#9_J3n8&Wrplq~EYT=+>RsvDM@d_%82 z2#gXGX5&qsf5QEgfMj(wt#0PM(%>wN6U^Np6s<4~{?Cr5k0Djf~81Vh0=3{gS!_I$>4*yTh zt=iaQh5|+#KjID#ZVh$4#57=Ztp1RjnGGe60EvY)WRB4$iK*DZ(PDeJPL8gPc7NRMhYmXY*4pvN@7jV z(50m~oF`GVILSM)S}-O5MfPSd>Qgt4epT*SHSUeTz0c3RYWg{&)Um0I4CkX^wDr8K zSDm6AW>B693!9Uk*Ye(whxx=^yW1pmHWB5(phoC%4WPk(aA} zw96XOSS`4-n7a{xVWIf#+gCHn>LRD7VW(L;HBegz_O2Xc;j{#vk^zGwG<}AS+YU06 zVGYCwN1&8Vc708KGbG1rT+~oW2^d1JS*EI|`PP4qGRD#0p+40rw3cBowmK2r>^rEjQ9vRRjXLnNZ4V+JEV%C^piLo0LxWA-iqC4H%8tSV1 zboG?4=)J?2^af&isol*_p~$YcWg`Tj$n;eHZ$(5Fn+nCF>a8psDtZP98EFL+kql-j zpAG${AckEc>Gjn3W zx$4vS*yZ@^{PFrFWku8^ib?zk>)-FX#rBz#G@dCoXgZ&un|anY;pV5S*uTrhN2688 z95mrD)K3Ak_k*&O$-(NT2@s~8fq{f8@C;hTdSOX_7}0a&jp=ycJGa?+mv@mq8;qp> zMTE`K`!2Qhk>NMv_gYo?16Ad20dJU$-V7KTJXBU#8)q;MmAyfw{yxRSHOQ=NFBl6R zWU$e|OWMiE@H2bwCm&mGO~4wb8x-^8n7~7b&$D_&nu?;Gg^_H4k!ZseG0vREmZ z$<#$R1`lLo-L^=x$-7Qew{gyN5oKhH@#L=6+T2NdI{I5rx!XWwZ|9J>v6J?x z9FVQLBqjZFEst^f%Z;yCtz2RskgDIf|Ls7omO;$41{lW5Osjjpc7p`OQmE zn|!}lwE`Z88T;I4L9j`MbSxzC`PAfGxq&!+PKHrUyWs5amF3imn>e-XciSDDIAaP8EbhhAE{lG5AjN%M7#@Fw_W~VtR9i$HRh` z($9MOW%;s9SFm;WbIztgq3(atc!vy+$(BTX4ba zGv;Hh4PkXX18Vldo!gyyhtQbM*DCg{v2hzSj2QhUOC)8`{n}6kYl%j??OCS8=G^Yh z*oCx3scPpFv$mmqncv)0hg+L7`;NTp+wQgXg*rTq3MHYh=i(Pllt_HVG};H)nRHv1 zcLr5O+FY~Bqf4#QJ*cqD3$=;;Z+k1u#bIzZkg5$@&3>nWO6k6`?$DNRu=1hJV1SxK z&CYE@duW;>Eta`duRgCekKXw3C?Quh8LAN%{kGy5$)Sii4RD>qzkvcs3>P6?pOS3V zSsqPY%7`UJ50l#*j0pr1snhyhb-i|#u5O`{@KmUn2Pq8xD16Q-{am(z1BWFL#@cD< z>$`=Gx!?U+w|Ozt(+A%^PX+Nn8SV9+7euwv6S;U-Qzu9Il&m{8Z772Xs-1G5zJVR? ztn%*LP*{4P>E{<(y+=wCgG4qo?)hl$CXKp8tfBJKY~U6RCBEa*^?FY5;n4=e-~eOvOY*T; zhQ)E~Tnd>N)pu1`G*{EuSp#0p0%j1^{?qd-CJCy%krAhvo#6-3-8*~H_=x6WxB4VTa-%nZ;N9kk2O`C zQWoW&UVG6xsX{L!yi$*{F4H+PITc>|&rtfO*DN0>ei;ht$zxE#{9asbQp!qc00h~)t{u6$f+=F8J-`b}4IF)jqs8njt86rP6X89&sw@R=$Nlf-;;Dw9 zulAQX9!{%xHjTjG6O7ipBmJ2GzE8qh$-ryx=1rx#aVxQd7;vEaowZo!SN6e3=#HS5 zDq0A&4j=L8#9(U4QlP-bSUZ%Ca*Tu7d8*>J?XBkuE211V!+>rzpiw5u%Q@CNxzyfe z@U={&A=WZ4DPQv^VX@rI%Wp%DrLQvcS*R^iUj~+H+T0=(6f3wvLm1G+BE^xSW!0-k z(p!)`sZQNEkRtSSWJYZ^dN)l9i_5~qDT-%g74=xu*EQ6HI@HOW0W}|r*Fp`!jrHO&%c+~ zO|NO{89fi%3ftb@^Ox`=mR9 ziUd1bBpX{JRH{cvJ~iTQn=W{UKyEih_^q7j;)=769upokN+YiPFrp%cW%2>=@X@R$ zz~7_%BKip%>GR3|f9C=J6&^pPBVnxgJ6irn&HrWv zT{Gu=jJ~0wuIje4IABCBN)Id0%rlVj)KHOWoU_e5#dpy^w6(FfX%ja_f-vhd>oloi zPZzc)Oi{NBd9O*c{VFJhRg|jQhVIDrL#toGa+?e4%%#8`*-0)>f~ke2*XU38uq^IB zQe5%aRB3J0Yhdh-5{rmyBT9c%JctXIf|yZq=H*mdAKnPljZN0vjm+BX)_h~Bl|uqj z)63RAmu=$rhiZAtsj>Z1_4;sFjj3R($=uh7^qq&{D%j3mMB0-nzhyaP~}E zfH)3-OYBT~SYDfy8oJihX9)Q+U|Q&C5w>Qyxa#k$?z%L#Q0E;BDm3d(H?02X1ok;w zuNz_$Ds`yhWY~?gWqlc@5SBijl*oxi&UZ2|9mr!$c-woeF<;$N zR=+|$CUSM}?lI0D1+xv);tm(TS7o+J0zgb?2(UuDVXZhtpk%byj!0Hk=cJ(bHF5=j zV>Jts`V2+tA^j`6|HMNg>{`XqHO5ive$)V9+Ec(-JD4soxt-}5n?#f%HhZ>lvh6}9 z3!7|C@qL1uQp;Sd03N2+=C}!}wT}J0iXpxc|f%w0u4RFr%y8r|aNRM!8EoJm=PC!{> zKoxBbZGB2-#Vp?PraV~Y^m-Fhv4GRh9LcmyB}s*huw{{}%842sBP@|gKR-W>#emS} zY!kBtd~$4-(_V4-GsY~-uN@j&Ed|s}-0T18dfQ0I`Q$@K-pRIPqL|OS2*F<^<&k{F z-&(+6fNHg-llCSRQet0R>&=okMp#R4`dTc9=M<}r$1M+PaPU)3A5SCFO8i7kHFTUj zug1{x#C%6OF5VwWNrskRU^xjDa~c`oQAw1A`!2V=Rnl*l9h2jp<%`a!WcllAJVv5f zhq}2vYS3oMtbMe5h-S&zmafAEeiDC1`5<&Y7+?c3w~=%9@tCi&8B0A&GefLj;DmBi zi+X};TUOLX@R{iJ8XE2wQ`Cf(mU2nMsSf!7Q0^ad(|!){k)O(yk7)tUS_uLjf>-&7IDSe+{(1plTzS3}#uR9H`#YhTgq8Nr%qFf=F1= z;veBrOjb<-6gJ(csN9x6`Y8eG8 z6AE>+=9w}0&-Q4#&vBJh1ci=jyN?;WiK4)50YP8;ACJ^mQnf9{(}h-I+R7XHbtcm> zVyK*Mo<@E~U&qzWnb1`8>xF^Ib%~wG{yqn<*AxB!Oeay>^?y1-6Tg}sSeG(0zdL?v ziih?Rduk05UrIM7xw}l&A8D3$Bql9gevFAZGsVKaC2bb-=VC7|>UDEs?S`_HpNZ40 z97AmRMtvKhTIrF?>e@9-Eh+9j%n;G!ZFp?`ZboWoZzh5u4oS;471HV&WuH7zP>zWW z?`Sq}hqCS+Ch%xZ{EGZ`KH>M*Y$94$MwgPxjmT>>aTI@zwP|t@zE7-J>(9g3UQ6P0 z+xRg<f7q+m-QnN z7CpV$g-IcBN99(&9CnL3Ny6>V@tG#u9;hg}(NxuIZ(F-IV)Uo8b}hZQBvotbw-o_j z7>@C24Zl_v^2Q~hKGTv;tdhqe+xCS%MZK09eICi4qvZ2Zd%D3M2IP9$1XEgW7y!Td zdHQvJyiCD1nG(1145H`8zU#-snWye+-_SaNK%6((gpcM}BbzGON$*a^Zv7U{-R*w1 zXpn-_%a|2HuX-|w(ll{$T9;2pyo6Bl{T19<*UEz1gg)dop zk@MdE&iy2#Kk*q5JSfQohdL`0Q*p7rmZm{tv6Gm_2t}^k%-m$bMz*jG{R#CaJbcdx z7VVBpSGO91q zyN$=fV*M_>=I&QsB?-!1gON+s7tk1HceItaLif~t6Y~=_wmsIA0yMPja-^zns*iM+ zPueshcGrk3Sb6kgLxxp+Hy9aSD7gGa|215MGw>vYDSBY&$;p$9#R3U7!epGC!BfpA z+8u{cS@cCFp=k+Bc+ZiSUpGRrQ!%JN$Y2q@-r}}hPGz&Wm5YSJ5C9gWR4R75>%IJ3 z*Ro2o)VLNGx5uCDo@!m4-d54vE9iFHpM5YIS>?B|H0^ntVcG(E+~tm%j%MT4yd5PO z_N)AcO-O-K(8tc;X&a5HXsWkqWyRWDJtGEfF7GH}UTJUe*4wsrUW~3HKU^+yiirgt z`aXn&_fUP`^IbumrX{1T-zaQq;y3i&3DSrlDqm=WRI>4h)(8&OY(OOBpb?n%t;Pkm zlXM|4W5eD$ZD`P?U3xLSP*Snr5s|Lw)n-L>B2R_wxyOUrBsoNkEl%pa@m8B0hRrS1 z)Mo`|6Hiv<U;M!oaA?{TI^?XoI$e)i_PWu>3UQuT@Hrpo zb6Ywl{lat{O-3Eoa@hruOR6|E+a?^k^l5`xn&Z^nI-;-?lLQUy0^!qfr5*=67$YTQ z>3>~RELF~3PGu8MV2lY{J^x6pGO**LiqAIq4qU+W)hntSS+ zeqxW09+3PVmJvj6N6fFRq^tNU8mn*|DQjP^>#P2!c!iJXm@l%9CFf&G{~4 z;!`j!3QRqcVadr**};O?Dk^=~IzT;OQshnYf5_aU|GujJ^LvC?%fsIrhFl%(mPq&wQwaAG zPeccQh(G)POyPk!C6NRhpU%5X|C?S%yP$&_wKoU>p1s7+=0*+Ogib>93Zf>Gk!_5v z0C{YyF16$ie==KRCf>)5$XX#FY`sm>U>tl=Rtm`ybRfl2CdHA!Sv9+K_*vLY9RCEt z$S*D}WAT^{6-hJolMN#sGJ>e&;xRsWh|(yJd3^E^9U=N{y&!76;6KUk|6e{g^b2x_ zBJ^`99W;RQ>cwg9w|7||mIiW<+UJ3qS4y+(HdD1`#-8_G^9rVRb=^EQ$E$`uZEi=i z+=jFwemgJPS5_vdZ~%(i+lfr=&O7K)OK(LoclWQvCWCIGh>076R4!Q3d{6g^EOgSy z_N~bpL-*|EWUk8RdwSEeh=qA)y3)YMq|46Uv9XQ&oIPd!8JlMfbt?r&ct>~B_QNEp_>6S=OQUYd*LqFV$D zK$C_{&7xt-gA{<)P+qN*nPt;d=-1-j1HE(sSrWZT|D8x()DL-;=2v%Tj%K~C$BRiN zOY@Df`|5)q%X9b%DZiVBzs?_E7EB@)q%eZdT^##VmblWfcEG5b~V%fj8v+i2=fU@gyHZu>` zdosB`2xeIPjZdUg_VYFwj0s~**a+2e`n;Q_K7C7Jjv^s^;09eq37s_9p2#8;8_SbiR1Qre_1>Hg0R zjJpigi;!v+@Irg}lHmCM^A-&e^{s)(tOs*v?hgxzm7PG~7kc(1Cr zQ}+F+bmrzaDz##JK`uZ{iAP_#{j5poXv8tALf@8&$vDR{5{U1 zaF$Xx+An81T45*MwM{uw=35y1;w~H3)Cm);(WsI+!UY~Hz1j3xkdbsr1^&R`&Z9X) zxMIaQUa_sVq7U0yRK#8-^=lg#3uY!lFQHXbD-yhAR1!kV;JHf%F|`Q?ePp)7zp90B zrY|;?l%F94Jde3}u~P7oCY0v=zmh)xkumwNlP~|nxBq>c3P4SM@)jKtA^KH)3pvbi zYc~BHHOzkr`==95LjrxwQ2_}o*wS(?72%{CA4! zaqK^@DSQ;gzsEi%@%~ZsF#-6v?!Oa&|BYt;_`@qB1g;i+n*-ZbBN&_zWF!>D%ikM) G{67Hv6A#t^ diff --git a/xdoc/rdv1_tutrice b/xdoc/rdv1_tutrice deleted file mode 100755 index 495540c..0000000 --- a/xdoc/rdv1_tutrice +++ /dev/null @@ -1 +0,0 @@ -Dater les documents \ No newline at end of file diff --git a/xdoc/sid.rules b/xdoc/sid.rules deleted file mode 100755 index 46e7aaf..0000000 --- a/xdoc/sid.rules +++ /dev/null @@ -1,258 +0,0 @@ -Organisation GIT ----------------- - - master o--------------o-------------------o-------------------o----> - | | | | - dev o----o----o----o----o----o----o----o----o----o----o----o----o----o----o - - perso ..................... - - [DEV] active tout le temps - MERGE des branches perso toutes les semaines (au moins) - MERGE de la branche DEV vers MASTER à chaque réunion des branches perso - - - - - - - -Organisation TRELLO -------------------- - [ A faire ] - tâches qu'il faut réaliser (1 seul language, un seul fichier) - [ En cours ] - Personne attribuée - [ A vérifier ] - Vérifier par qqn d'extérieur - [ A confirmer] - confirmation par client + W3C - [ Fini ] - ... - - - - - - - -Architecture Fichiers ---------------------- -├── index.php -├── API.js -├── API.php -├── css -│   ├── container.css -│   ├── footer.css -│   ├── header.css -│   ├── layout.css -│   ├── menu.css -│   ├── page1.css -│   ├── page2.css -│   └── pagen.css -├── js -├── manager -│   ├── controles.php -│   ├── DATABASE.php -│   ├── etudiant.php -│   ├── excel.php -│   ├── groups.php -│   ├── history.php -│   ├── MCC.php -│   └── users.php -└── src - - - - - -Commentaires d'entête des fonctions ------------------------------------ -/* NOM : Résumé -* -* @param nomParam1 Le nombre de bits.. -* @param nomParam2 Description param2 -* @param nomParam3 [OBLIGATOIRE] -* -* Explication plus précise mais en prenant en compte les params et le return -* @return = @nomParam1 concaté avec la chaîne @nomParam2 -* -* @return nomVar[] -* -*/ - - - -Vérification d'intégrité des paramètres ---------------------------------------- -1) Créer une fonction booléenne qui vérifie le type d'un paramètre -2) Créer un booléen de vérification pour chaque paramèter utilisant "1)" - -Types pris en compte: - number - int - double - float - strings - char - boolean - [] - int - .. - - -@FUNCTION verifType(variable:void, type:string) - -exemples de @type - 'int' - si entier - 'bool' - si booléen - 'int[]' - si tableau d'entier - 'string[10]' - si tableau de string de taille 10 - 'int[][10]' - si matrice de string de taille n*10 - - -function(p1, p2, p3){ - - verifType( - func_get_args(), - [ 'string', 'int', 'int[10]' ], - [ null, null, null ] - ); - - ........ - -} - - - - - - - -Liste des pages ---------------- - - -I. GROUPES - [eleve] Mon groupe - [tous] Tout les groupes - [admin] Modifier les groupes - + ajouter - + supprimer - [admin] Répartition d'élèves - + ajouter (drag&drop) - + retirer (drag&drop) - + déplacer (drag&drop) - -II. SEMESTRE/UE - [eleve ] Mon parcourt - [prof autorisé] Mes élèves - [admin ] Les élèves - -III. MODULE - [eleve ] Mes modules - + par semestre - + par ue - [prof autorisé] Mes modules - + modifier contenu - . créer/modifier section - . upload document - . rédiger paragraphe - [admin ] Les modules - + ajouter - + supprimer - + modifier - . titre - . section (ajouter/supprimer/modifier) - -IV. CONTRÔLE - [eleve ] Mes contrôles - + par semestre - + par ue - + par module - [prof autorisé] Mes contrôles - + saisir notes (par groupe) - + modifier notes (par groupe) - [admin ] Contrôles - + consulter - . par semestre - . par ue - . par module - + modifier - - -V. PARAMÈTRES - ... - - - -Groupes - Mon groupe - visualiser - Tous - visualiser - Administration - modifier la liste d'élèves (drag & drop) (par ordre alpha) - - -Parametres - Profil - visualiser - modifier - password - mail - description - - -VISUALISER LES NOTES CLASSÉES PAR MODULES -{ - 'level_0': 'visualiser', - 'level_1': 'notes', - 'affichage': 'module' -} - -VISUALISER TOUT LES GROUPES -{ - 'level_O': 'visualiser', - 'level_1': 'groupe', - 'affichage': 'tous' -} - -VISUALISER MON GROUPE -{ - 'level_O': 'visualiser', - 'level_1': 'groupe', - 'affichage': 'ego' -} - -MODIFIER UN GROUPE -{ - 'level_O': 'administrer', - 'level_1': 'groupe', - 'groupe': 'A', - 'action': 'supprimer', - 'membres': [123, 567] -} - -SAISIR LES NOTES D'UN PARTIEL -{ - 'level_O': 'saisir', - 'level_1': 'notes', - 'module': 'M3102', - 'groupe': 'A' -} - - - - -Chevalier RDV (2) - - Eleve peut consulter notes (semestre uniquement) - + pas de moyenne (règlement intérieur => uniquement sur relevé de notes) - - - Rôles cummulatifs (admin choice) - - Profs correcteurs n'accèdent - - Historique des notes (1 courant + 1 antécédent uniquement) - - PROF - [x] Visualiser les notes (choix des groupes/modules) - [x] Saisie des notes (choix des groupes/modules) - [x] visualiser parcourt étu (groupes/modules) diff --git a/xdoc/svg/API.png b/xdoc/svg/API.png deleted file mode 100755 index ab587f229f00ddafee2ca8a85a31d0ece1737fdf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 64217 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 diff --git a/xdoc/svg/API.svg b/xdoc/svg/API.svg deleted file mode 100755 index ef65224..0000000 --- a/xdoc/svg/API.svg +++ /dev/null @@ -1,437 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - API.js - - - - JSON <String> - - - - JSON <String> - - - - - PARSE - - - - UNPARSE - - - - - JSON <Object> - - - - ROUTAGE - - - - - - - MANAGERS:TRAITEMENT - - - - - - - - - - - - - - - JSON <Object> - - - - JSON <Object> - - - API.php physique - - API.php réel - - diff --git a/xdoc/svg/architecture.png b/xdoc/svg/architecture.png deleted file mode 100755 index c5fce10f895c9670b48be45acd91c2823e74145f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59674 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
    }EpkaHJ@kF5F zx-eZ2rqR0FCDR{cWmzB>8$E=Na;mawFUQQ@r`Lq=sRR`M%FzUgBI(vrFSy>2={74OIp_XOIR5OhlPdp{L);# zwfO+iQw%HoylOCH+m03T$Zx-GlfFlJvcCQ&F(Dxh=J>#q!@Vf&(cqX7g*{A8;Ii}> zT8S7F047yGuYUeq|6ev8mOzsbBMq`wnaw6aqZTb=l#C2V>9sYFy!Di4F_vTr;?g=b z$8WWTi+B?V)%ig#B@g{n8yV{+8#^E30t8})KVZxlm(dw?h*J0p8N<_ik7;30LSkYt znV%9yL)O$?`il3FCkzPG5e58Z{6OdmaCL|U_0AM*L7%gP027E4vGTK9iHLLpop82KWJy9qxk zxIsI#HCUrmKQM5Q|LgKJcdM;gB{?FSkq696%v= zNgycLM&;un1cm7)0|((0^J=fr;ia8+EDcwwf+_anDS?+FybvDir>~Q^Gxd#)Rh$qM z!7dr*F{Ntm9i_G;W<1-l?tqPfunQnV#yMJREsCioAVF>JO5IeQwC+Wj8tusOygZ#` zc|8@ODApYO}(IQAwx}GFeO=gC%xG&ixwHs z$Q$07-Tr+*{bvSZMu$^8VmtIT?*UG8NnRA-bbN_d&l>*h%Iar|{}Je-;!7M#K*k`T zv=f(3#?abl4%;oJVJ7~t8dWrUbN`3cni{$RVTehj>7G! zN5CXD820|@1~TiT#^qL2C+)V<7cC`yZ_4Kzy)@PorgqYL5%Z3^5kBq&-a>`%J@`=S zfaY@C(ad09xHUh2y^hn|0IMKKOd4dYsNj#!jx`=(<8s@n;tTL>QC>_-Ol<5zTxhBN z%*U80x2ta$N3$b3Gc-*0(Jq@DZGggBC-2z|=C^E?<`F`>b>oRy1W^Iy;!W&S?EZCfq^x*n6gdTS2qdfJl;s(`T6D4 z_`#A5e&?(dY6uUuCqE@#uf7i+Tk3?WHxAypckfmDew_e4o&!bnKw=#^y?gR_GMm{9 zOp?g04$&^={Z)B+c?y+}q1KB%%6`4e(guU}z@kC<)=zx0NH4{CeYo^gcL;GU*Jk5C zNFD@8(4>!rhF#RG+mdzcSO_f}+tj8E)g3r|xZT?pYTyAAC-&i$fpB19jEigL-E zdms7%0SHsfI9h<-#T8f7{_cuTOF?C2KU^c6qwjD5Q6Y7}f%u76RazNY8-t@Ae0r0^ zLAlo8IMW~~(J9PKL3*%Oa_su%oT@u4L2W#m@g zr6hYixuu~K+r5TZ_{ZEJJjE~RRT#aPAwz1#;8S--p^}or%#Vq~5cl~ht-WQGQXhv4 zoC+QT1%{B~Srl5v1USAVwF}uePFS_@Tz2l-A1g+>NC!#0l4U>zraw_`u7)D~G^1r~f)s zq$w#riIo8>fVj1Z_xeMIBwxu4hF`j!o3{XA=Yz<{U4^X9i6x*K3%T!b)l&cYAf|ufMUi?bNy*G_~Z>5TJmqCPSkp#WF1Lo(Mb|ip}i}IHQiluv;fUEHWUQ@ z**eN0>D&?gLR%4`xuD8>y{4N&EEMny-HW-Vp8Qk39kgDwqFUAE;ezF9$z;Ad2e@AN z-x&EldHJ%PiAkC)rQ)$b}p@;4sLgRQ@?bb3R@A*mNi`oyA6lgMa9h*W$%H$g3rv zeHx#5P=wBDIfj75xXGI#uEolgndx>F%ocnamW&$scXh%wR15bn$su&P0TNtaH z>)$YK=}w*g{^Q5(|I+R+{<2vTb-MG@t@CG!S1ib|7*EN1P4TZF&RIq!hBK$7V(zGc zzJJ^}VHPnl`ngruq{_~*&@S#6QkhV`ZI>4)fgi-v)D{Pgizs9WsEs-&S;Te|D&B7p73 zNIqxutA5Qt@bQ-2X!g3lHh$I&sX%+AwHq7vE#G2~Y0{MX<>vqVsc=+VlB4|H|NrU# f_8AnlsC#v-S$3$wuM0cs6yHyqWtC~^x&40t!}_uX diff --git a/xdoc/svg/architecture.svg b/xdoc/svg/architecture.svg deleted file mode 100755 index 408d21a..0000000 --- a/xdoc/svg/architecture.svg +++ /dev/null @@ -1,341 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - index.php - - - - API.js - - - - API.php - - - - manager/*.php - - - - - - JSON <String> - JSON <String> - - - - - - js - css - - - - - - - - - - - DATABASE.php - - - - - - diff --git a/xdoc/test.php b/xdoc/test.php deleted file mode 100755 index 7d08495..0000000 --- a/xdoc/test.php +++ /dev/null @@ -1,6 +0,0 @@ - \ No newline at end of file diff --git a/xdoc/verifType.php b/xdoc/verifType.php deleted file mode 100755 index ce5d472..0000000 --- a/xdoc/verifType.php +++ /dev/null @@ -1,34 +0,0 @@ - Les variables respectives des paramètres -* @param typeArray< String[] > Les types respectifs des paramètres -* @param defaultArray< *[] > Les valeurs par défaut (respectives) -* -* Vérifie si le type @varArray[n] correspond au type spécifié par le chaîne @typeArray[n] -* si oui, la variable est inchangée -* si non, attribue la valeur @defaultArray[n] -* -*/ -function verifType($valueVar, $typeVar, $defaultVar){ - return ( gettype($valueVar) == $typeVar ) ? $valueVar : $defaultVar; -} - -// implémenter un format pour les types complexes !!! :P - - - - -function test1($arg1, $arg2, $arg3){ - $arg1 = verifType($arg1, 'integer', 0); - $arg2 = verifType($arg2, 'string', 'void'); - $arg3 = verifType($arg3, 'boolean', true); - - echo $arg1.' - '.$arg2.' - '.$arg3; -} - -// test1( Array(), Array(), Array() ); - - - -?> \ No newline at end of file