auralquiz-v0.8.1-src/000775 000764 000764 00000000000 11741613640 014107 5ustar00janjan000000 000000 auralquiz-v0.8.1-src/Auralquiz.pro000644 000764 000764 00000002730 11741607200 016601 0ustar00janjan000000 000000 # Auralquiz # Copyright 2011-2012 JanKusanagi # # 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 2 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, write to the # Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA . # ------------------------------------------------- # Project created by QtCreator # ------------------------------------------------- QT += phonon TARGET = auralquiz TEMPLATE = app SOURCES += src/main.cpp \ src/auralwindow.cpp \ src/optionsdialog.cpp \ src/answerbox.cpp \ src/ranking.cpp HEADERS += src/auralwindow.h \ src/optionsdialog.h \ src/answerbox.h \ src/ranking.h OTHER_FILES += README \ LICENSE \ CHANGELOG \ auralquiz.desktop RESOURCES += Auralquiz.qrc TRANSLATIONS += translations/auralquiz_es.ts \ translations/auralquiz_ca.ts \ translations/auralquiz_cs.ts \ translations/auralquiz_fr.ts \ translations/auralquiz_it.ts LIBS += -ltag # to use TagLib auralquiz-v0.8.1-src/Auralquiz.qrc000644 000764 000764 00000000650 11741607444 016577 0ustar00janjan000000 000000 images/logo.png images/aninote.gif translations/auralquiz_ca.qm translations/auralquiz_es.qm translations/auralquiz_cs.qm icon/auralquiz.png translations/auralquiz_fr.qm translations/auralquiz_it.qm auralquiz-v0.8.1-src/CHANGELOG000644 000764 000764 00000005072 11741607052 015323 0ustar00janjan000000 000000 v0.8.1 - Fixed compilation for GCC 4.7 - Added French translation, thanks to ntome. - Added Italian translation, thanks to Giovanni. v0.8 - Added Czech translation, thanks to Pavel Fric. - Added manpage, thanks to Dean Evans. - Better song shuffling. - Show progress bar while analyzing music. - Reworked ranking. - Fixed bug with 4-button-mode and very long titles/artist names. - Other small fixes. v0.7 - Translation files are included in the binary as resources and loaded correctly. - Metadata analysis is faster, performed using TagLib, which is a new dependency. - Sound control now relies on Phonon States, works better with all backends. - Hardcore difficulty level now uses the "Type-the-answer" mode. - "Reload music" button, to use when there are new files or some have been moved/deleted. - Several visual changes. v0.6 - Fixed a crash while analyzing a lot of files without valid metadata. - Offer game options upon starting a new game. - Added a proper application icon. - Added "first run" info message. - Encoding fixes when extracting metadata from files. - Fixed bug where "Some Artist" and "SOME ARTIST" could be different answers to one question. - Other minor fixes. v0.5 - Multiplayer, bugfixing, little details. - Some fixes to work better with gstreamer-backend. Seeking now works most of the time. - Option to enable a custom color scheme. - Basic multiplayer support. - Player can select answer with 1~4 keys now, instead of F1~F4. - Some bug fixes. v0.4 - Polishing. - Limited music clue playing time to be less than question guessing time. - Music clue begins at a random time in the song, not the beginning. - Added statistics panel. - Bigger buttons with bold text. - Added animation while playing. - Metadata scanned from music files is stored and used upon program start. v0.3 - Mostly usable and complete. - Added recursive loading of music from a folder and its subfolders. - Added Options dialog which allows to configure the number of questions, the difficulty level, and the music folder to be used. - Added loading of translation files based on system language configuration (LANG environment variable) - es_ES and ca_ES translations are provided (not 100% complete, though). - Changed the "good/bad answer" line to have a little color. - Added F1~F4 keys as shortcuts to the answer buttons. v0.2 - Initial public release. - Basic one-folder (not recursive) scanning for ogg, flac, and mp3 music. - 25 questions with 4 choices and time limit. - Configuration dialog is not done yet. v0.1 - Internal. auralquiz-v0.8.1-src/LICENSE000644 000764 000764 00000043254 11520600335 015112 0ustar00janjan000000 000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) 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 this service 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 make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. 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. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), 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 distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the 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 a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE 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. 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 convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 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 2 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, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision 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, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This 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. auralquiz-v0.8.1-src/README000644 000764 000764 00000006574 11712617303 014777 0ustar00janjan000000 000000 Auralquiz - Quiz game about your music Copyright 2011-2012 JanKusanagi ============================================================================== 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 2 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, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA . ============================================================================== Auralquiz analyzes the music files contained in selected folders, and creates a quiz about them, using the information stored in their tags (Title and Artist). It is important that the music files are correctly tagged. In normal mode, the player is presented with a question and 4 buttons to answer. A small clip from one of the music files is played, and the player has a few seconds to answer by clicking the correct button, or pressing 1, 2, 3 or 4 in the keyboard. In the highest difficulty level, instead of having the buttons, the player must type the answer. Symbols like "!", "-", "." etc are filtered out, and it's not case sensitive, so it's a little easier to answer correctly. Auralquiz is based on Qt, Phonon, and TagLib, which are the main requirements to compile. The .qm translation files will be included in the binary as resources, so there's no need to copy them anywhere in the filesystem afterwards. According to my testing, the Phonon xine-backend works better than the others for this. Phonon-vlc-backend works great too. Phonon-gstreamer-backend seems to work ok now, but I've seen it hang sometimes. YMMV depending on Phonon version, etc. ============================================================================== Compiling: From Auralquiz main directory, where Auralquiz.pro is located: mkdir build # create a clean directory for the build cd build # go into it qmake .. # ask Qmake to generate a Makefile make # run Make to compile the project That should do it. Dependencies: You'll need Qmake and the qt-devel, phonon-devel and taglib-devel packages. - Debian (probably the derivatives too): libqt4-dev, libphonon-dev, libtag1-dev. - Mageia (probably Mandriva too): libqt4-devel, phonon-devel, libtaglib-devel. - openSuse: libqt4-devel, phonon-devel, libtag-devel. You might also need to install qt4-qmake, if your distribution does not include it with the qt-devel package (Debian, for instance). If you run Auralquiz in a non-KDE environment, like Gnome or XFCE, you'll probably need to install, besides Qt and Phonon, one Phonon-backend, like phonon-backend-xine, phonon-backend-vlc or phonon-backend-gstreamer. The language files, icon and images will be embedded into the binary upon compilation, so there's no need to keep them afterwards. Visit http://jancoding.wordpress.com/auralquiz for more information. Get the latest source from http://gitorious.org/auralquiz auralquiz-v0.8.1-src/auralquiz.desktop000664 000764 000764 00000001162 11741606737 017530 0ustar00janjan000000 000000 [Desktop Entry] Type=Application Name=Auralquiz GenericName=Music Quiz Game GenericName[ca]=Joc de preguntes musicals GenericName[es]=Juego de preguntas musicales GenericName[it]=Gioco Quiz Musicale GenericName[fr]=Jeu de Quiz musical Comment=A simple music quiz game for GNU/Linux Comment[ca]=Un joc senzill de preguntes musicals per GNU/Linux Comment[es]=Un sencillo juego de preguntas musicales para GNU/Linux Comment[it]=Semplice quiz musicale per GNU/Linux Comment[fr]=Un simple jeu de quiz musical pour GNU/Linux Icon=/usr/share/pixmaps/auralquiz.png Exec=auralquiz Terminal=false StartupNotify=true Categories=Qt;Game; auralquiz-v0.8.1-src/icon/000775 000764 000764 00000000000 11707550327 015043 5ustar00janjan000000 000000 auralquiz-v0.8.1-src/icon/auralquiz.png000664 000764 000764 00000013764 11614704343 017575 0ustar00janjan000000 000000 PNG  IHDR@@iqsRGBIDATx[y#WyV_I#x] 0 &¦p 'I(BvRWBIl(cXa]z4;4>zѱRT%]}. ?? o3FUa'XhwAFSH4Y3VwofБ8s2%$'zHUpRV+i!0pa0#JF ,[P B&Hdo]i댮lZTU\Zo6ap8sdI2}~  kE"B)J)?A읻vF)UD$ L2 W%iYVhmN>Yzuq6m(oYz|$ >^ ς4 4M(˲`;ZFjJF08% ~Ua8D׋`0׋0{Ͳ,(@@^2%Jpcc[*FItMCߏfg}vl߾d 4"lT*!_(`yi KKKXfj EQ:,jK0 Q!I&''J1;;yLӰQ=L!}!@}c!T*Nu6IǏ:u*|ԩ`.j5OK׉iY(AZ6|>My|>|>e:}/?E 4 h˲8q0 !wVϜJ&L|ݻ177DEEhanEAό4ߦ^GA:WPJat]Q1eyLO0>{xG^dVW+++F.PD]יC 8?GXJ&eqXRѣGMh/x9/@z߯!,+x?j 8$B`0(nVF^ b(W*^M8۶EEC)TUEP3f(lnbuu'NJ4M忉/E|/8^{a@V*NT}VKp^S:@UUEeP5 LBp2./0O} Ǿ'p,o~] ug@TB&ylE,;%v &`iiS,B*JEQd4YJP+`=2LDR2 Qa&f/xv  0;`o~(ww`6&" h4m5cl/u_P8L# >@CJ#y;a6EAP:* t]8vﲭcׯzydсg'aVX,Rmqvr!`eeś傥R)l6i qi\ q:22΁g6A0|Hرcfgg qmm];|PB^qi* j*4Ugz]T*zuk6`(Gk}{7A L,hF]omS %V cǎؿ?.B$ Bg|8u1ǁaPUMEamC0#اr9XTb Ðlf,0٣mkϣYZئ~ jAt J)ol(JyӸ 077H$QAR^W1PJaYZLÀe޻c |z=h4mҿvc3OC!(ƶmC Z 7Ze`Bx<`^+8bwMF4M+2i϶may2u J]q`۶(#86lBlvPJAvxc.#ԠV5zԲ,R/xx)!5 'P/*SSbE((((J9Au7r8,Rb<a)qŽ㌄_l%!0 }s=уjgЅc;N) @ZC& 4Qא/ClJ)]CoܐY$z㒟]Lضp8+x'_ 7H#Hz;6?xگ=Pξ_,T*,,,P(@5lna(oUן0^^{65L۶m[^3v#e :3q2ֲ, GATZҏ@K c  8NR+=;/G_j/ztY}z?1s[EpDp,%rGbR w`rvQGt}f8=#:{>Oڢ7Z-r9dN@|OD)7E.xyf_cVšRt]gIŐL&z!B_fx\qK)iq$J)Y²,ٷo777A5eB73 155t:x<ql6\.j S2&r rimгӼnI)MBBlj(HSSS] w0,~~LNN"bNDYFN1=3X,eQՐffMj54 0M]p9_|+.Fm{ש_ LG9Ԕɱlx&DQ }>o"S833K&|4rԅ8CeLMMT,^׋P0X,H$``隆T*Mv>P@RAvm 2Es N!m=ƯZ jGǁ tpz w,nԏ]sꫧ_{.?I)`  G"`  QI# p]0`[TUiYY!IxApP0`4MCBVCZET2qilllc x~ǣnE/W3 Al@tۼ @ 2+xqW%Im@$Zpe!u4~RD =ӄia:SSX\\D6EVCMB4<IJ0??m۶[4s;𝫾sق޺qX,Z(jo,k cdIA%mu|`9mHڎIO,p0 2(:LB/b%[`F5wo^޽:xǍ{oݧF^aRl$c$IeY!" fqГSgؚc\SbGڽ\]xpu>r#XpXN)EAZ)q p(M_Q 7%R8 sKևKc1ioxԹ9 "|G< :xR9Y,'00|u=lۆ ˲`&TU(=vB+aD/<b `0Z0 eemcwyF2l;7NGIR la?{ jصׇiyJ>TUђcY۟oumqN\itbLF|#*DZޅbi(:L@rש3 rvϰbQ?lpb48Nbڎo^ݓn'^fF輦(?ԧ@kT>[wg<ܼ` W*l4W <+=uzAy;~[ICdhi2$s}=wouxF0B5F%ޓB6x;vڭ7M裏~'>q{'36#LɠtO{^v}y24=NPV$qө 8:|n=ī٤M7"~8zDZ󾭃 'aC0EH'7wf/N#yUQG<lH ( |_#hq>a"2 ۶avc0) E=g~C^GaKd %>Oywhձ6L BS4xG?nQQ@[q[y7˲n?u:^!fSM7}?Ȁ^c qYbq!Cڟ:?;I ּ߾喯ew0,^^\vbDz*h8; Wv=sqmuo_1n#|x[^wt;Rؖ]l6 ? wyï qa_EQVe8l|]w{Y+} 8vX%&CHfn!AP`Oa^5;`qرnoF$35Incct{δmƶ 6BJU*r{[lw?"|Zpg^%"^D|}}X_֗e}Y_֗e}y)ज़7oRyB!$PJi)ee|SzIItDJR+R ^TjVwiWrHy(ZkRRJ-}mO O>['&&o,@c9@p\1_VCi 91Mu @Dci9@V[cpV yZϵZjh5RJ*Bo޼y֗/|q{ӧjJ)MVHi>Y&45jcB2@`ץ5z鬅c3GA=͵Rk (m wܵ˿WW_?=9@Ȣ/u.=QmV-4ЅF@N# Xy_6`CmiH -!uz@d@Ѡ8{(@8skaxpz4-t.Q0aر};J)aB n l*JXIHRu*ȴ֊R!.ZhƵ/\|BHSB2B)dҌ2QJ9,pJiF !Lx h5Z*Rw@d<ɉMEݠJBXBJG} ѣGFضm:0!iԩSH۷ ciı[Q1uz*}Rt9"\$%˸41 @@1,:׵Vk Q<#@B8%3c,cqc^y,W]y%LlB*5JqV٬Q!$ZHBk͕Bk{D@AAF!<7_k)*Jr%e23J2Fge2Ƙ0`HB"(ʘ>U篃?\W=(p?ޅǏ/Ƶ^s=J)H)g5?O<-܂}BcxꩧpTKp.z(zvQkjV*5X"@i) PD1Gh@-wu*V*3aDyhid8T1 BL_r _tEy퇞İJ)o=8q-`˖-#˲B)Ŗ-[g}6ߏ;v IRB`سg} _~9^}%9]d (s/2zwZO|ַ)ك@)U|F)RwazdOHe<3{ %4V+YZ(t3qy@F)u=Zꜭ6gxlaͽw}ȴR\))2SJ3TZLrQ@M׽m֗=?<K s&0/a[yK;ֵZ#dYCE=ޅ 6B[os=nOA ;ԩJY^2> S2 M6 OӉn]͕@24WZ7R*RfRd9_2doGq֜2& yL~_A`}Y k>ޡ cThl݆׼5G?Z!Dac(@ .@E_.57-[$N4! %yFD@%͘JFF+D/,G4XXtR/$wcDJJH) J*H!q-?˿Zcח `_nq?*h0[K}^{-@|Rn?Oz*ľ}7OW << | 5}cajB)(RJR)@t3DOЅ tRI"4{jy PRG__ߵKGzAqb|_MaP!J+Ol_} +`]$k܅i93vU+q_ >`vz P)11=hcD@+qasnN+-VI ZQ0iheVD+:DJiM@^N!#x97si#CI)quAC=zcaPAX!e#2JG)cB&dRhOkxJiRBs $!QBJYY)eF eSw52(c2FcRQ1<<>Vjdddd]_xz !~!~i}/9򏎎{^.J DRhC7~7URJ!מ={pz1vRJRJ)*J)iJ)R*t69}M@+uyYk)ϕR :Ip9'Y(HEtjj;vL=?X_G>B@kwy凜CPױ{M~YSlpWnõ^w]kЏ?8 geYQUhA099zGy~}oܸv]3Fʄ\{\Rb"5UJ1W)%ZS)%Z{XyFYp`\)qιgYƅy˂,YenGQq,ErnnN̨VfggU]^_- j5zW uoM6]aȧƞ={*Ak PJn _p†`E@_|(  =I>|^{mTܴivgsH )@ !|cRjARJB)Fυ")RG!Ʀsn\dYƳ,i4My$"21ODt]Ev"c$JDFQ$BuXe`ZFq9 bݸq.k0;v o|!\ynCnV>|7pp E4>9PJH:ǢƦMp!PJ>`bb2y|GV[$<vOKF55g>\s5BB2X 'OĮ];mZ0?7,-dZ*{ϢQlPqkp*Db 1~S]yK}V~S~mxiZ{qK7B7k9\{W5@Ji~E+(Wd A8y$yxٙLO.~V f~c  yѶ'Wn m;b7Q?XzUN-b%z§3q9KkY~<d~ oL acks\Xw(z|$N~A?״_Im6u]x^\P*|//СCذaCn?AJfH)>(3 E(PQLh#c/FMԤ.HLO@ /II>M͹D2e0B.V w@X-,]`@`dh&E!@դrC:|0:[ne(To(<׿xˎyN|#Gzrre6na_װ|Dӧ@h5H |Cް"Il!{X*g#e߶ec|*tR2~)C V=s>^Y+C_EY4IОe JJA_`"s }s=uYPy䑢@كMi+a$`zjMa!8<!B<(yPʹ_P*gz T˵V v= n y\``Az^A_ Xow=UrK8; `)!v؁@JY+ @WF,>?Qlyyo?{FUwCQt+ Rx[ߊí1{M tM$+ԃ2)II\Xbv ._ ,qbZd1kyxV yZAرWh}th'8]rT=G{ A@ MC*!%)j`f_z fb2ߓA#-M!#O/K]@`z¢,sۻ<,<' HG~=,(xPzn BM'M {<\e&/;|鶍Z nb0b|9W_G?y\reqˏcKsq۷c6Ag(0JJ 0ZIYH%J= rV.;+U1Zc'"8.?\?Rb9_9_'QR(! 9&), 7jxэ9[ kCq]ZRdi /w}wKauc~ lRwxO_A,C1^w4?AJĩ%P0Js;X6EyF@\"5i.>\8< 1fDUqI~fLVXiCc bzV8_J aB8M& $)$I48}!BCRW*ajXFxLGnF1Ҩc||q#cTUT*G_&  7maXDs(BGVG['ed2H IBp! ɘB#ޘ< s+~JkxV ,kl@!^'_n|%CzR}@ D9$AEhZhۘGE4mR^!j40ah49/T!+]0prP 83Ϡs_=@.~ǿElƁnbNfEt:zի@?ott oa=ELŘ Rf:$AO#2jNZnߺfqBiT*$g^ _~-_.rp%=W]++KN(uhZh_ \* H! }POK)DP ()2'\to617?ib~~N;9JQW"p)x'JHŻy=/-0VwKu]~)o`LJ>ԓRNVNn~v<4 8W|l 0ˋ2ΑCtnvEQq1a3ÓbddgP&L~Oc'__Z;^EFB֟, e@EI i 8爢]s/@|$I89]gX1R߹c?Y)E\ڬs,CLj:lFƇ0D]UR< p=ZLI"6!flH(Зg$t_3P~k^=WVmx4Row܁f#ʩ^r@b$Ia6n)Ghb8q+LA^/qϢ8F72l\}UH tO.zA'$Ѧ6FT|av1U{O%(:n[GQx} jQ).DE?# ǥyˢ]i7P˫6XKtys./F^_JkJגtz.J*p.]34M0 /m[m W_u<{333H$/1 l[o!7pCQ,g>F1hsޣ P~Jfde(1??|y87 qOiӝ'1: 3mR<=9 W6~FV(Ne/2ᆴl,.=uC3SԥMjKp:~m*V'\.WB0 ,g>z5\e&i47݄^x?x:u z}A W߿pEU}.n݊׽uؾm$41J+a~-}k_J hMv0ʟK)AX'v*0y?uV#1NՃם N(n6lz1=mV{0S 灹nG>#eP` \reM|i{.7Tz@yf+hA9^Ⱦm cÞhS~>]ܪڕxQ?p l8Oz뭟|>BB͓x{߃$IOéS i >55գB`8p=x~$_ž}܀%b& **Z 0t>RJAIoIY o͆hWZcۂlܸQ?·Ko__4Dže^ SNavvvh6JLZR`qlٲ\pmyƠV^FFF`0,Ny9e|ͧMaOiboWyh |.M{<7ga>ۄ]q#+D(U*k*dZcJܛFs^ pAƐ_LzEF`q^Tĕ׎~>L}() s fwqΑ6ɲlq= emT®'|2*Ku}‹.__W}.lԵM5&''099/]rvADiOr/, p8ۂݹ$ԄbJIYVi<CTS JkSuj؇3-S![ ILؓ,Q3ږ]6.<<ٮN.Y*={'֊<aLاjvRrP5VkalL~'%ëT*+3Kywj@ł@!; ڋ (zTZΩZ7a@=67ݎ׶-;[Q CTk5k|8MXPM~6a#x6b!$RAx)!B4t@,CjI͵r'A*heKѻVӝhub4T$rx7ӧO%i8Y؉SD`΀y4+ `r}؞vt _*X~[ /#lAX=IDƫ$oD@P_-$(c~|+O㒉ipAraE^R(Һm5q*1]d^6m AO@< ̧Bq>s]ơVhSsӡ16qek_z#;D""=`|Zx+:22,zT.s9Psƌ1(+fv@E󓎩3?==\=y}͡ZcmZP8}t~ύ|4~d˺YH/PXj1Sv =yo' BZ-J_)I@bDkɇ5/GNT7駰iLZ)ea0'ܧ+ lZ3J.IF8.W%M[Dg~ Fܐ\ehGm,j]rQsS,:Xm=<b;> ps]Fۢ({C[n@#M4'ʈKzZٳ5;bxhzUv*UZ"pr`Eax*V0UYQIEN2,!f y-3˜4M OȦ(1Pq^X*,S,E?5;.I?Zj%1NrBEe5ʿ~w=^,t:֥i0".ٴm2hUJVT<yshwmDqQE8#g#Bf_025܉o˄;pyT*7yB Ksa24ҴhZaVPpi!IӴȷ۳O n`' EzMO,Qt3Y4l rF/^}/]OO&uyGbvwݡaz/B ZrLCdi,wSDq"S,ϗ{g#|=v<ˈ$=̱8}NaB(٬7`ZJH\!z:l 6;!=‘/{@T҆>0X:jc-jz8 dbd'/j|ZɞsƩo)vYW-DI\DNk˝ 8c@)nޒ@9T  7j=%D-.f*ZRJcOI]0'\0R+gabct4)BH !A%Owy/kj9Zܹ4xB*ǥwNEJeJB# CmՇ.q{!+Ӫۑ_1`\5OGR (+ )u yp#0 so]W/2&noM N8B[lxE'X*!,Po@y%C/bA m \&dG6qNQcL,KNUDP A@9sy[܉oߖleq0"Q˲.Ж)/dۼVQRJ|j54oj)d^^E) .Ogbxo~wM6!!{j3}({}~R ni9YSICf]@DP P=b 0j3=Z"'%`ȿ00oJҤ#E_gRN9ZV;j7x՛?ǿB&,KA*=rpSBP@ |RI 1E)=1 *eL>meGưal SS3'eYQo3 ](@% !G|XXh9l C&Oi׬}FMAΨ9:D_3>]>i\jlNcN-Ag4M)$_-W=ZР ) @G[/?cus?_vm8 j: o!y dy4ר,^ hmZ6XMM0fB[HV* 4oֺ<2iJ~ސG,RK "j@aݹ IDATK;d;뾕+V>[40TP_HH2jLb=5pۍf 4]T°0x!y? &ypk9%y*oV?9QlذƍQ5i?,+E(7l=P@ UC`L=ޞ匳nRrL@?sOwvpgjZf_/~I;-q1@tH#SȲ4O%5ZO,1>$:4m8PZ@ABf%#!9{ (6n܈ 6Rө%L;]~gh(zڜ ^0999@{_ 9eƁqS^s M?eẏ\OQʬ30ϳT<(˻QVeuS=~)nH2G.Pz56dg\jos']נ[@/A_`K3tiydH__@*YѷmNOOaz4tڈ|o:ݴ Sg<.9RRgPPZ=WicpDAG2A Rsh2Ր/e" 2I@Þ `XV۠ca~5`k]+B7Nv[(B`JY#{pa;BKU݈P:.׶#3 W<Ϝ)33X1۶ Soݨ_|ӐDz$O>uixOE瑡ϝ+L)A_zQ@+ʲྀ0JyF3/ưs8Qa؉M4?JgyjQ MxTd1d/ٻ6]Z4b 9{mMb"GvNuoB>{>JJ =TV'i9y %t xwP) )KJ6./FqݨNvN("Mp^@L3}2CA@C@Ìd@Nd`R y"1zBV9?΅[^Dk| u@No!Q{gaQ`mR@>Ep-V-[ S$+zg_=P-Q7 `PN " #'J]q9#(AI \魠P]*(AJJ.@0e=L,~Ikb%j#`O7XpK{7ε*_? AfffXUR~'W/o{L,BǶuV):u 'Oӧ&QsY׀UG^qzxv..5[4uΠh*8|׾.* ],T vdNa+24;Q1Q,T\nR/V1( L[P̌Z_oR-r8E;Ӓ,i,32޾)_rn2+nzy/ 8 ;Źr]aWBJ;R6)2qE;R`#xYA=6X܎Uev IQ1sQFcYu<^H$MA>K3p2S%oJgl.g;FQTگq!aȿ *w .+4p^`ϋKʴevBv;i삀=  tI8ic& f1 @+]T2BhPņ獊M3O;)ː07R][`hi;H!@;%yT_~oPSxj5tF0 HV lDύ 㻖*N ݉QW>L~I;Wk5L+ vFWH Zke2Z*7`yqy{iv W8.na122RlEug5V@GqYS1|&nt.Y$5Å3A!6gNwb7/Cғ(wMv'X]~V#q/ Rh mm˅R`l~/kyzW4l۶mQro(4-ܑmGm|#[V%fkE00q&z Y{Q<ޖ,~Z5Lw<@AB jDC&qD׭bЭN҄AfA ) !!ͽL{z]j OέSjzy,tXcNҜ \wg4tqΣ_뎐:A_ײHf{0(EA16^yNl἗q騸C  CQ[-Floo7gz\{i>}gΜ)&O Z&ttSVI +N1^K[sSKo]nG(.fwwC%av!.ѽyJc&|Wi~)BHCd`%OKG ECqqS{ MY.8'~\E1ypOĉDk:3ӣs郣tkpB¯ޫxeO1@64M1%G6wwoƉ'~?< h|WՂas|2] ]`. ,˂MHi0쫟@!I]TH'gCw}<Z#` `, f'dNFLa\psAs9˲I8Ob[^{N^鿉+-ch]xk#A-ct~zmX J> @}TUa@]]* @Keq3*! >_ɫ`7`}Pt8 fEъRjSMod-{!fpR^E yomh6pca,ӯ~/h͙ \ԇ0o6i͹y@yM?ds]-,{T㞿{W=u/Ex=HaCq#p_#`sR:TW? [Pu>ݭdz@CyD3o}=QcDQTxRJ'/;MY|[۶{ _ zc\M`9/3] B8L!O ijC!v'eD+3Е _ud0`Yǁyk᜼~)nI{N5.?nH! 0+o.W0Iڽ5yf>!w?#?~tu*a9y\pA\^rU< }t h4뺰,+Bm:m`_a2C[c\te8y$?Mtݬ!e@i!@;Ǡ{ :1$7@C0,YQ4o<}/#nlkYL±|XGNZfol[1s^M!d )%o MpN:|mh>677U hZX#̕cbO^P$rqav6±8~8Nn!zD$$Xɡ6|`P֠nw.YW<|pNP mFe8syrTp)$杂LFSbmxMEy(^NH>ڲ2ej`zf]N)=Ւ1V,T)۶ {NnHNj1N@]nixnkq)zRH@k"ͯ Q3C]uB uM % l^0NQfnja0Xܦ'SG[$v{ِW l uz.-ҽѾ ̆^IS}GoSkfJ}+)K-]2}AϭHn ࢋ.W5o7QFuQQ)JݤP{{{p8 5 8}766v]lҸe͛M$ h]gIaq=_O-H{ t:xU h3zz3Y:̅jIu]866X[q`(0iw0vuu־< J}Mt%]z9uCO{Ob=Jh*@ӧNY&y%Q)0dh\O=5L&E\?*-Oӫ6t:x6isIYiO L"mj$ZQ:4y cpp.wB^cǎ*YMRt^Znl6G y(A<>8,F/>Ѕ"򾈺zQ07rݣt\ja6UzQ:[U X.^EᇾuL\BNL[^*Tʭuo2}~eх|+ 5N|ʖu# _>RU GwH7^ qWVqqJaڤissΧ[:NRS֖IUAu֟-)3SW(7~=u](=;/U,SUeKT,{ U߻L4 u\Sy|ٻkol,+K:nUJS[l*%]/ʋұ2Z:[N)2R嶗(LҍIYl7U_jU4& %,c$2a^MڞUUa` Q7}UAIMu9κӪ<&2ηh-[֚ź}-IBUIpU߃:'*,@(˰xkP~WїDL,PYY*Et-%δmLZn7RMYD hnBI'Wx ˢ}n1hEz2N{-o;%Z2J)lnnιUǕ*&j*T:e^LU:ǎ瞹ŪUj.S|Uװhت-EGŵ[sskUjbAy:k5磄pX$?U]7c*N[[[ PvJ)[A*~˲v(BLC.LԵz  POQ6yIqU[gpRr!Rv][-X2s^ugZ*\_־*VƖT۽ދǏc:ɓ ܄yEvvvhbsCz=A`P)L&jۭ y u\Eئ,=* @zB=sZ=>WJq:N cB)%l&`*R1,2 mU]l_C~IZ+=yDXnز*V)j$ `CڅQ)7XPALToQu}4u݂A*`2*=:ζmL&Z jL,*O?STys: @twP4e9|(B׹m<$DZ$vRBJ)+MS0 snH)mιa۶sӲ,0 ,i 4B) `R``$b'O =<z@=5u$IVfҿUXZ&Z#^ @> lv@EfǦy6+GJi%I4ucbYL[+ !0H 0Hm6 m ۶i\lf PodϹ,,&,"'+OiGH4Ԃ~w%oiQ/vdq)Mja:qT =~{uQ*`T<h-;Nʴh s27v8Q9Q9RJ7MSRʑRRJr!as ome qmu]DZm۰,Ke1!#64}V9g&N$Q>-IC.@/{H9|Ot%Խ]ü:*σ~_Xݦ+X}mmoo[RJ7v$IZq4u$i'IJ)]V ,!$9"iܲ,nY,,v-VKH)R[YB < \VA@ukH L&7>t6xuUq]-RڋVrkgy Χ{(Y(*O{n$8qw(iA[*Iҭxpɴ{rme]e,pS@J2L%RijĈDZMb/jg.,k۬Nâ(I$Icu8ks49Vpz=oJ}|  ;ד$و+^h~⭵äGxtp7>1ݯy, t[UQj MA?mBщv 8NvY2QW~975Z8&}.H$;;;ǥk715/ܯFyԵSn\s[5XngW%4GV4ДbdtZqzA, IXH,\{ݧEQQݮc&ʄ(4*YG9[F>ҭKkÞE^/ ŽgYɫ /8q6ĝp;7$i0 FhU>"A)&ct"IriME&ssH:P|1tWuU,@XĒ.z΋2P]@f/tU˟K,`F 6}׾%ܾ`]d훬ܓƕgm]Uo, o@P|rCt߽[8Hu-.g󷏢<^/x5 PRLgF!>izcYx?Og=W(: IZ62R ,~$ , Qyx=7gɨ>YA oSs zeyjq0b!D`YVhv8N8Ne0Mj"j$IbijFQdAa(}WF·ވOr(B.}tg3A@FY?`fc: `[Z{0@@n @$|4BŢRJTq([IR I`:b6=ٳg !/<14\qbLq3Aim;~8Wc : jaiaz7~_? t:0rW `yreQ*6cu"5 8ïy56(ԋjGjglaw2ÝxcYwX(-O?Vi@@9 wQ)gߞ0D#ٶ=s]w&~鯭EkAntiYPEQ2Nd:UyOK `Ͻ?Ww>ft:+Tf+af'%1#8/x_xRI q4pP0*rZ\䕃F!-68³,kj^o1 fmic䜛1Ee1 2M(  0 0 }Ti̙Xw/Ō\QدaY2+:*4I2Z1wקf@+ Gu1 xNͯ91gsQ`LL%RLQ7lo]F92kiNQU2WnAP0 ^o}HOc1b cm~᣿^t6pp+L#P@v~#?8}kʡEdfh۶΄9=qĉ輓'`v#쬋c*IS$ H|p[82N$8ȈH ܦZREK91)m(%0-'>@)$kͿ"*7`CP7E2"4T=e87f)P2+L=pCŵ75M/} I"Ct^ޗ}/z_0w [UG 7C;f5Uy9 L- , M   "6 #RI10 R!DbZVlYVlvlYVjfj!*Mf/}Kqn-jȊӀɯ׋H '`rmķ?6 #4M3t'jQՊ{~vq2T*q8ұme[m[mt^릶m+˲a Q30\Z~6dc.r%~v9WfIDu]} c}}kkkzzt:E2^&2X (Xz-/ʥ1X"SJWzx>`ӋG@ra0#A߿10/?/5s\m;nPHUx:u)P^<(? nX '1&9"1M3,+1-+q\75MSuԶmig8cpGڎXV"-Vi*qil[Z%m˒iJ0BhniCİ* o}rk jQ<\(r;:ױ-;v [[[(tݬB/A46Lu.\y5_(u9H! $fae1|#/Fo~7`D8a />^\\8P s`r8UC~D#THci^!mNI4!Lbض-)1Ep$̚g(0 #5 C ΕiR4T61:Q*^htfx{z y++ڼTC QTG;A=RYHP=Q7_qDjhDUDA I(" .__SW?םRhz+pp0.Ym$VF`ǿqlY}{s!Vo5L̇RTƊq{naa4Miv8- ^O:{cYY~8s]7Pi>5T Àt h Y+(]Z ެSh%:8ʅ&&-i =81g Яٯ`ףgu:]BMl"`LVR!Exc o{v^,a99HP_Y:rh\)0.w}_Ao{RϪ-A1JFgNKLJ)R0 J)}Ϫr./2]Q$QdRvLjsSaNn~8{k>VZ<.A?Bq]VkN8w5)LI<3\FJXzX[[CEכ\TY`08X@'1E85?lk9Y49>_U9+N#ZWJq5H0sO2(D͟ `y;-m .hfUg;;T(Ԟk_薕źQ Y}r-b\2QdPW|G}o9@ *뿚"PYw`@iCz (pp_WqޭPԫy噀5d;۰Y/”w}GRb BeW-q }Pt46&_ҋi*4iše-.؅q,wXi3̭4F-jQ-ksycPbeoL # }K}_pߗ0 ¯Ӌf y\ 31k||>d(!Sd&  pjĖhx_?aW , KpрM#?Τ} C2b:zR{dpFyFg K)ӬHA`Da0s<4;zE0X,M$ KDx{Nvsח^OC$DxCzثCɴuFCbi4|4 }KcyL~hƍ^$U%@fys>Dǻ?Wn/:z 0t?ޞ0E{xݧ^;:GdaGRBs/y.jE l+QoEU_sS흐O8u鷶^BJi*D*51NsCd !:s)%SR2~}tscUuY|zz@L;@iU<ͱ zoyV"eQxS<sw!=[ OY ?{Uj5^SV˴j@XŸxb'އϡkvH (l/F0~ᐷ3!d>LTe/L1Ǯ=$0k=U$Tp!҄?NdtI)$I(lfygG#s4PF#>p4baY^;G1<6h<Xx=A('7R2nr-?@hiI[1(]<8{0ż:ZV_XYX^b2 t:d2x<>qw[W7'ކk8@>% !ŭԪ`٨* #\y%8S/}jc@ LqEG~8\2ئ$2E&4 ,p%p֌(AB(+UN;@fA˒e0ӷ6ʸq/|-48(g9 4e2uGQă0apE"!k{> PX%$א֭WҀ~F׼`/S*x_Qa]=bgg}.zV|\Ojngm5RB|3`T^Pf?Yovzq><yb2PP4ZNN6c,0_TRXperw ASlijqa}ߞL&x<&ө9L y})OA ԈXL'c6<Ϙy}aeO1l^|xG 7ⓣž{(Ig6y?HGJ *mvky&y>F!vww=Mpk, !v*X(~c}m n,^w>;?}_}_e~?[؇,jY%:9J~I[Z Dsߩ\kRϽqޣǯZ 5L:o9á=Ldbocc2 d<6&9MtjoDe؏F%2ͤG`:́K1? VD(qZ]BO |6wq/ 2ʯFǠ: r-jbhj%(7;PPHd<%gNӢwaɐ@p>+RItA<Xj®?KY_lW!Y7@Otlrl\f5}=2v=ܱD${?ArMYz뢓$~y;??C9~^Bυ'VQjt4}ْC)Dq?8?pwnzC6N(TD D&s(C!F2 ]1x($4z'+8`hypM{>m]M&tcG·LS+x2P9\asC)eql'IbOt2qǓoC{t]~Mohz>e ̶mpPaA3p|N<q5}?j .(*Zm{+a 3Rls)H&+1Ɠ pڷww6:g2/0 Qnv:hw:hZ5% wfkM7tʧ^}wnc4M(CN"3=q3c+c}w6:5}6Ef7b7v^F鮝v\A۶\gy$ u%^yLmEhڎyyGrjpMT* [^^wFF!=z *Lq߽0snʉ)?Iy3\L6.р9EJs˴`0Ù{ek\LGxۗVϹ9Ӡ}'2TLS:Wpt\u)0-w">FB Vb(E74 |~/Z}xo˺b2o{10)T%]g]ƾ gV /y!ěUB/5((U5 `ƅ9[%׮'h 2a0a'@u[~jП|[i_2 /ia42+5cM*FQ^nn^JV(f: I[LR_ y8} pjfuXkLQQk)@8k^EhthxWL9."2l<($sBhZRYRY|MR P^R&ag3hCx#ZU*)HЀR )<eZxyO8֋PBn@0}QN4@ N_}v7hy+e6jTg@ A,+Du'CcDwoi#_ a/@C0a"mC0grc0Wn ǤjUҒ8)˽o!/j .qscS;͗p |{ "A?M Aiq 10!Ms L0\HYR +^GY=/^KR?K12EhRjJ1۸WwdU>sS=0$YbfQA]UU .5_ *(H:U=3|n[y fP/MRmXH}g QG܊Wg*fخB`A#*e\ vfP(4u=Nk'qP}!|҉@۱~/eF?QVA FQo43PtJpJ- `2j9jo7H5PJ(JP>PI~ CoO/a#Oq@F>@0jhK~xa \r%R.|o$Ef7ԕ0`XCFÑ5guvu䡛O/Jϱ)QPn&E*mxwel3+P~YdZ3^dh15 8!X;<nY30$u|m@&ʹxW6[?ୠַ6"8›)ʧlkiЛ-iX"ғLnf# CB` @S[y`hm0譴;g d&|>/"uuu^>ih yMco8ʦ: ]YSfڴ - K\NF)S(VqHI4]7! ͘pHme[ X Rf_*'@>Ǘ*$v_;`OK)QVuӴI PMn. YeI)̝rs݇?Nfp9w dohkH $۶R&?O6E"jSuC=kpmuu I/I5rc]t6yr-x˧ em&d.룁 iWchaFDG_xYu|+-V?4ݛ[ ,؊Z IDATo-55d2i W _J@mg`R{57OR3-Ӝ 4{Hn@l+pZG@-k~D#nPƷ+Lӷ[c'x3r0cV*+DxRXJQ$("1k+hUVo*p(JTW1ydPRz{{TЏwwwS>l6,M@O)JM71,sSe >{v] AAbdJ،D.CAp1]]](6I3( w/ rsBYՑ?gtqҽi[MzIEȳl% tfmdƒ1 D$jlۦ_9G( IFM$$ hi@v)%lfk| ԣz_ MB6mrtj)t0f" 〈Rʬ%"WJH)%Dd>r MGIags,K J%Y*+tɺP(A4AR7bnZh%3Zu[ss*9sh`UM" Q*~X`s.5MG3V` i'otB_9T[%ўmvhZtW:Y\$ ]-DT ~~6{k"$iHR !Hz>^~;8xS$ui Y"{[O7v,#ЬA aR0T( BXq !B"Rf)'tՅQë׻ A;\VyҲ,KR.|>O:Lj#5M|>rC`94݃0 '`]tD޴ `|epʩiu]4 @s]V+qiiFft=B<盂LsgҕO` cʼ>c,&ce-8?SZZbR_ ..-`qL5}zn9-c>z5 etF sPWWW" ЗRQJ(rBlY9q}?NY NS}wK˲H=8jR0眥iҌ7:uMkSR4 3d ]a6 hik"MMi.y =Z 4uZOOԫF-kjMMӚr2NY GhK1xE@.l;e]Ӡk`]yXԴ u (eJE?<[,BP1 ަKxׯjAvX @*+`'aQqq7(*DQaXðDZ@2HUcYɸg|֪NRg1!q̔0dF& 5Z(ZqoXlzF;l6|ukihAmdh.͛z?}}Zh!fY۶ Z Tf@T 3VѮRq2t׫jbLwHh4$Z퉀XK+qGw6\F\P]߄w6b!!F%Pbu;:$tiVk瞛އTNc !#Bdɒ((0 asNa2 À c1pL `x[,:Y1ˢ"gQehLt5^NGF- ||T暩*ˮi͇جl҂4l4v-TP@Vk-c@k!ŧ5SӳtzN&SdOҀXȖ{#EpƯzo X n5,؀<2!|O9dYDt*:)㝠h|SmYkַ~&sXm\-E*B 0Vk\F!Xc1C_uON.]f/j)v{ Bnf]d2Mjj7@Z;*,pCLINf3V$ZmiFfüƭjX pbf9b^d'Nݘ v%d~6-|| vcJgwT0r5;e&66\\ "xr>}v%EMo_N.Ԗ.]z Qd tv .]}A@QF!0F#T*VJBm3۶) "o |.ruNEQ|.;S[z0Ùt&#kO `-ht4鯏k]3&a$7V VGO}A!ia6,#%@:9*b>~J.\5B(babyLu dt^P|PUIM'Ӧ Zoˏ>)]远 0-hѢ("Rp"*2 mDdK)m"Z[/\ Zʮh)42LS)<3خf̤JKpm㘬:i"M)LM_tR̠L s-&B y_[;$##C'.9' E  0O-q\pcG 8YLFLo7Q7p}q t/5O&Ţp]7(bJK)* \zΪNDB2.d~h:`g;ڛvvv5רy01g 4&Hi7WV) 4'^>{LC #(#]wW,>{x#wŠ:O F HHH8e[m~"f#O* ?~?Xb☓9AwwtGj5ivT,y\r_.-۶۶U"ޖRZD70ZBͲN=) XfvZh mr;Mac2"iZtncjv|킘I:5X&A( 1$SG[CX@,F* P+5[s,$>wի0y*=e 7YOa^g>u-ܦ_AB#[?[|ND\Fww q뺑>cPW%)VːkuN]7i~#6l2w7l!2vBk:4HsNף@{6;yX |ASr-ÿ?R:g/DvݼGؐNg\ 3FuD&wf'ڞbYZ ❴?}  `5V_`8Ө\ H)%c\ ιK˲8^q87e1hCX?>ˬ#乥G3nOn"`ϴX`S,=v{*PO~:u L>WU7FWxfcʻPHlo]B n92W$C:Nx,% A-SŪ&d P~nM?twwC=׿o_~_Z$<LKTZM 9b1,+"PJ`yRι͓qΉsNQswu+˜]s2`$Q! BEXV_H >t$ՌMT'u5H,1%D L&nzpƀ@X2eDX agl@·%!dv*c gi~ؤbi'3 0 : Da=G㰫kJ4BAudYض혈B,,snZ؉ؒRJ)o|4S`&qx\tY]|:fvZ{n;TR" sڴ8A6sMۥ#$_c@rfs#+RV8p]>19-,؎;6QFY!, F4j~((auq u7/+W+mmo^-yYב$\q,BDD԰,VA۲,HQѐA0 EEK)-)%#fU\PBI+r!`VmF!g*3ML3 ا\ nA yPljdp g zE7]…K!jq˷ ="[3]|%ʵrSaM-/Doo/""J*c566 jcX˗O~r7s.L!,XeY!,v]7xfVF! A!1'"K K3LݬY^kN8֦/e*OeO&X̀D .I廝9,G b.?k`:ys[qC۶pqL&r* )7 /7 CGJi !,"19g18d2LвR^ׇRDRs1~2?HڬL4ٟ/$Ads[._ 0WxQC9; <8aAD2=(N? XڷLQ|:x~C;Fcx~*VX%Uf88v&2r\.S^z]8 ("Gl"AJy&aL ^*{zzH7trf+:v.&*7Xz6ͳo9{L*?³G#0.I&UmSԔgLw9VXx'_/ϛl6+2dUX{gYXZebl4hDAd8v p h!`6wg2yf\ J%iuG]lj;Ecm.D$`4^=+OC$v]e֠ŒfmTե Pb0ưzg|[/S\Dh!<ϓ1Ry^8NnP*X^j0$EE" CWK)8cιRm۶V6LR@P(4Mx2v*LMK&b&@c&NI=*HG=cm +9#~3[MV olFR;J@&< @f28"1&\׍02 /< Cj41q,HqdYslۖخZJ˳l6+3 Wo޹Xھ ,U>0w%ڈ'ױ'_!@]K{oXصXpPF7 lƿ. g⾵ªysѱ'՗"`?Up"Z(K%Q l6˅< C 4W%lueY<.r^ 7`] 7FpDV8I x9EC(2BӭHnM[q8.17D_ hk@_"Ƙ@q,HιRo$DWi3\ Yz#DMV Y9+G#xQI.DpB1x2/p&Y&EII'| Ufn\\%(nDZ j;$-fCoA;Ň}+\޼8d@@pp/Ge9L&+kSaɁk[QEQēNxll!$7 c[mQ5mnL6Xbh^yylfͿ SdC#R p !Yvi !`񤪏 5g 0/)N F-)G0eòmv‰'^ZTBR[ޞn `<7| 9}!6(Bkkp-?Qh0 Y`GchXe r|'6 mQ%O-3 "X8_BmveW*wύ0"@)7m4:u ЎyRs|Kq尥:*'9$(Sk> Aˈy'Vb p #n*/ &8laYp϶8wA6G`I4!X@b? ) T>wgP f>[Wp‡EݿÂ\kve:.Ǝ.ZM߼O !"*Pn '#62"ȸr³l𬅈K4!c"@Q#F`!n:}&Pt 9gb<u>a2 hev)JYN'{w-lllbJ,!'IDAT='Ⱔ.\M__ |?A ylظ񯧜z)oDBXt5t}70Eߚe1k#I?~?~ _'QY-XH aIVbg Yr"Nrgyv_;JB\tԿ%'Lڶ ?!8U栐cժUOyܖNAP۴n${}/[bS-؞ 'f R&x%'k;ۇ∞W`].d2ؖe~ٔd^4A2?@P3<[:듣7_4R6mkMC]%)ds;_pʢ7cպUxjcXU[M >$P%c8cׅ` z{Q*%vmoږJ | TgT*G'1?ƺ'/4)^qi H碷l oy~j mՓ zBF1 KuێBi&V.3wy,vJ0Uڎ)aB5(Y^u!K&gqNbꫯ>Ñ3/;ϒ'e^XϿSgRW\._q tǧ+&-x8>I}:》.yy.xY8Z:2<:z5_7~}M˟%`9[~^s'z\f0_]Ø !wlιCQ@ϛBF>O˫ZM+A!SzLwE]]]@^(W(/_}C\y> eBk?\|qX{ͷc=h[2A/n_So"Z64!8`ۀx>lٱr36IogX3~^zi/cj"oy`1jmfVu<^MYHvJimvz}'̌ ڃt{/ZHWAq# CBq8u^}_Jm=`%f$Jo+X9X`=_xM|hٲcߤ-[?}X6ł~E7[T.B}mOW9] +Fݗ  waϮR̝w3ʒ@4sa~'fݮ;?{[_{'ӟ}!3=k#(YiܫN\R`!%(BOaZq ٞ>Oo+F 5E3' 9.V?[wc3 |{١'.;}]}io;p6^6ߝ{[\0x`ޣ *ǿѼ/y ί}[?=b~ƙ?^vcr_`A0@,<\_diK4ۧDžkft_\.84o1FW]?<_MrA[ h_ڧe`{0` X=\Ŵ6) w|#;s_c;vwd*2?W`w,f` @-'{b}JX.hf{44,N.O5i\;Bkvެ~1}<3&) |…FB,G\r?kT3y`{0@az}6=3xt<߿#2`!zV'AodVS~J1À%dElBh̿$ t65س& LO1cFp =[bo#U`<@.!Jq }/;GLM|cؗkEiwef&?eb.}+t޿S+O^OU`[L pz/6.qW ߙ5|pN;Q]Bd ߛǙafk͇: )s5g|kt-i?zi1Q DPh@$ַx>Y˚e'OYvooD*{QǘwueL RX&YTC[[L m$/1H9ku-H~OkMD'4wTubig)t_p3)l@[:l-nj f'c,ZCCC-b!|F鴛k_m^k_w)zICSOEaG8fZ2l $uc |Z.W~QPcQ72S~qi)'/c_{> o kiωfH=D4Lpl7S(*m1uS]0S ь6n#2ߴ`1~ZǪ',^~rCyoZ5DP:AV 8}=ح@O?} pꫮ Mo-L6ѣKBAXODd!ϱDž G"W gOc;:ceWrX]dx8Һ[.M!kA5 @335ѵJ2:of l'(X;a3ҴAB(uuA1GFV~$ƙ{UySWhͧ-{q wqOn]0s.ȮbPTX3O I]]%h-bUW^۸53R} 횸c yJN?_Fҩwc4gmA`q*69`Qh=x^i_sOnol uTtW^+Rjf.xQA,ZnQ"_%p3 @^mI@p ;kI;`[fZi+HQ S~W@0~퇇~O:_TbG]I?5(i&ћ~|?75zN?ٯf@'(>xnG~"D 4{ x@zttwS.L,VS0Q5 ,4MLv-,^d$o-Rk6to½~@soS&aaߗ {>N`?JL./ `K 2gsڏVH@6O?\2 y[vfx)A>M#w 2ҿm;S8k^ŋ7˗o|X`v*ͦ݀ <ʦ/}ߗsMu W*8|^+ 88wιg.mQ*ȷ`sۖfdZ/µ-YGkPGtIBLj@EdvW\,lF+yg)fԕ0`?eu#MlVk[o5%,>]ozC1]J %jB셤\pɇ>ƍWJg[|u<}G옦f:>_6 |y :(@;A0SSdHLW@wMa=tegƄvߔ/%K]tgSBi JmU&`ꫮ[nE$+c#@ ʣW'%E _{Ja`(G_=-Z3m"z86lj{WLt*M<`=}z̍xOkH0%}?}z._W?ȓ7?{g}͔-VcI5`z)"j0rw9eѻ%=vX/:~~o R@?@e­gZn/y_5c.S,=&f t`2F >4~[kRK1KӺN*j3j☺?iI#ү | ~p `$]8 I7YUZAc=C-`{3`_u|SZP/KڃwЫ`H*t+{JY(x@+Y=kFS:ГޟMכ63V_- [sA5i%zR6>|믿-y&̛]s|,1jJPΨ8Q$,uB%,kRPX@5ʉA[k*+KW feb-9.[K_ZM­VN|0HiAR`il:mS<2=EiߋNӤ-9|Ӓ5htձmu]T*W_}\vُbaOҾa6|LDXhnh8H<&pɀ,%Э-ꔘq6T`'ްUE f}J`dfau6y@nd`sӫi Lxާ~بˋ:W1:2˕+➻7)ۘ[#)AQB͇+->BnhqA@%&7A`++-_JI"n*'Dd9 @2Gi`eٙJO&+4@F1OJQ&_H1Wxrnyf9GqI;LP\Y6 nFF?W9`;?OIhn*/V.o ќ c ~bYp{ۀ'3^r\G"\\@%'BJg E`sf\keG7,T`k9al?'\VC80/gx"5d#HO-=Q{@L}" 'zWcʤ'Χ\D1ulmu?Y }2CAH6; k>[sa6}X:O2Y7%B Pz6 1Es! $ҩ˸>mQ%[Hln\~7/7p>pvfPuFLwPw.O*礭xw\v.;ǮȝʩIENDB`auralquiz-v0.8.1-src/images/aninote.gif000664 000764 000764 00000262301 11546473663 017520 0ustar00janjan000000 000000 GIF89a         !  ##% $($& (# ', *' +(/0+ -043 32 211 9.8816%. 8=> = =9 =C:;=E>C C'9!DB #<IJ MFNII IHMM GTS (G S.F'YYSS T^SXXY'R]b5O._ cg^4T)^&^cc$^ g g*]#bl1\%romjmq %l(j/h w{$rDc;yv9k*w>i2"x#u&u.u+u$4t$:s*+*~$0~ 8~%!-(A~1B(44& T|I@-O>** 39+9A/;(4G(J6R?$*BaTF8<"< H0,0J&;E%WBQ7bM1@!;seK HN/W3l\\@>gQ8 NN*I\6jP? sYIfHT&Q}|g`'^8veDF y_Y c6n&$B,h}$J/I" p2I0"P*hmA+ !?D@p"0``$.hbR% %aث=kpE.$a  0@^@b@|H +6(` GH( .WBV 2<bHdхL`A`D!@A&:P8 &@&P&B)|@^>$ 0:x|.SBV8ؠ "P P␈D@7N2q#X/pQ+LMD@ Ph >xB@ q@DxF_Wh|D X.8\` E%04"6A Bd . DIPrk8.*a  J $0@A 0!T( JR`s8.$a  J< $0@AHfPҢnr)p!%LM@" HJV;kp.$ @ Ja pT(J(k8.$ @ J! ( /@HҚ D I,ah"0DyPBLf 0S \Hb  @ ) " D@0&6l -.QBKHt!@0q xA@  >QBKxA!4+(n.IbK8 E*a P̀  HF.IbK8 E* P@  h>.pIbK8 E*  X D`iNtip+H"XDLHE.RQ 8`L$`1`P8 \A&@&PD*rBXP0A /@Vl) WD* ` J<"(0l dXBa Mz@ Ma  ,E*  3θ7xW&@ pPQ"o` HJ`@7AhQM\gD.RQ @`&DǞ<@ D{@ \IhmpZRN{P!4ч(`.pIBHBo q0 0Û~C  XB4"` Th@ DN|z@L% ,!0`yN)41,\`>`h=810YvzlT9P1y@f@6` gp`n"` o*,؂.opV }\ Pm\@6` e@`np0/`63@p l Ұ }blR@6` x@`npp 8-8@VP p  z`bP@6 x@`n@0X83P ` 0 p _@. oJ0{@p81|p  q`\+0 CqC>0{@@"I1`` Pߠ 0 qb9 P3>! e@0V@_ `   Ѐ qbPU_P>%%m@0g@pقK PѸP Ѐ @ qlo0 p T?ay g@И)o`j ` ` ڀ 0 }f Ő z\ao@W0mz  lP0  Ѐ z Ұ 0 f \ip,@9 `0    Ҁ @ fhXp1p0 0 Р @   q`bi'@hj C@ @` 0 p`aNi pⰠ:p  `P@ p`aW9l 0 pߠ   p`ag@ 0˘p"z Р p: Ѐ @ P0 * Ѐ pa@g@ 07˘3z Р p  C ldPkۘ-l ڐ Y Ҡ @D Ѐ bA 0ۘP ` =0 Р ܠ @ l@A@0+`10PjvPv Ȑ : z Ѐ T9$`--Z0 0 Ȱ | zߠ _@1zpj F;@p 90L`0l F;|; @ 90oLpl F+ * z.0c Ȱ ٪ ` Y098-0Z ͤ U08$APc0ZPC@@B=D]F}HJM! ,Rp H(TÇ#B\H1ċ3>\8々Cp X8ˁ @$ _ ppQ hPaG D`TT@ P[ 4  X6Ž@pA "PD 0@aߩ ;p_abUk".% P(zŽN;x/[@``/v1 ,\8" %0@^q&@D#`}A*OL 8S7\⼐D`jHS7`@D#`A,OL ppQ@qG  Rnf o8` 0 Xp@qF0_``y Q ay PI v a 0@p p 10T`y A gP#Ї}0nv o 0[pI` p 1fqvP}x8' pLv@a` 08)= 77Xp@Q\qP< x'`x t y@a` 0ps`Q Dg  Ї戎x)80do@a` 0ps`0?RP `qp~:p)$@"`.9>/Poa` 03 0 k a%0  ! p~:4 =Zz p_9Pa]0ki0 ,p" D@p Їx:PB0t` 0 \K@]PP`0 p2p 1@00  )@E0P ` Ҁ @ z_P ?@ @`@``Qp @5pt` `Pp 0 \H@60ki0 `2` !@`@ @-0@ ް bP@60ki1`2`kI'A 1 1p-P` @@ }`bT60ki0* @pq L$P PP 0 l \@P`i@a0@p2`k9'A 1 1; PP Ѐ zbT?.C?/"ay @Qp@"  `P@ l _P@V@}lP9>ap2`5 1'AP  ;0 PpK  0 f  Q @ f THR2` a@@P  p @ p d p @ zlTR x @1`p K 0 0 Ҡ 0 zbdp P @ z`lT Rx @1` z@ 0 0 Ȱ ڠĆ Ұ ` p hp ` fbT( a`0 QZ Ȱ 0Р Ұ @ ` zp 0p @ @ pb _p!` 1`0<?p  @ @ @ zP  z`l \vP( 1@0@_ ` Ɛ P D @ ` 0  pba@`@ϑC ` @ @` @ p @ Ȁ @ z`ba0 @<)1< aj @ ` Ұ ` ` p  J а zbb g@<) aZp@ ` @ܤ` Ɛ `0 @ ba@2@@@&0Zz@ܜ č @ Р p , z   @<0@`-KPYPPz Р @` ` P1@@@p0l@ - @ 9@P@  Ұ @ C @1z@ ` @= h `0 >_ ` P ڰ z1 p@O.l@ , ` c" .@ q \QPz] @ U&0 ~0;PU0;$t 0  `UYx`nF7qFppUnf0 )aꈤ 8R?qfЇ}x揋q!B  0>QD!F|9D :h `QL1 =C@)W4@`@MJ 0 Zց4Xu: $\s@ Vh9h 0ʶ$X;0+ ; _HV!|ˆ5ccaHWU@rה[%0`X|x`ypA<UHH`{<1 n %Xi`CRpHV" `2.HX 00Bѽ` r#(ǀ! ,Tq H(DȰÇ# THċ32T8GC|#\RŽ@h@G-s б QΣ;p@xT* 8@ѢÄt `lA @@B ЬY DhB nY D+C%0 Qa ;B %~H".#U2Lx#3%PuN dh!D}FBEfdhQb U(鑂A,X7A;%V ͒@?2uhB K. ҇6 БBiu\] %,(")Du!Cv&DBɇ @A8+2dhB ?(|H %} C ,@@Yg5 9J(%P @a+`dd Ú1I(H" 0?d@aC @YG4 B18A$?#040B`EYB Pp 5 AQa%B" Б$XFKذ p 4A =!RpG"J(Ad``]A/L`hK(!h@!P+@ttR  Њp$dBxDHaF"tK " VR|"4@ Ehd` Pđ&F8t!a БBYG:(Y+%lB %`o7zF0BYG:B Q0@L)A hFBF 0@YG:B!V 0$HT!a'Bc\{!@tD!HQHGps`(pcXĠ a D  dpNb ؀ P( ME!!T́ @kPm06.HC 0p` @Grt` 80 { 1 @@G0Ġ a/p p: A +pБT%1@P L 28 ZG2 o D#hAtRxA p(($΁ @gP 8 o D#L@lR p(%X 6 %28 '@ 0 b d 5 @ 6N\$W6 `/"`cG %`N~ 0I)KAD"e V 0zKr @0W |6@*pM,؂q"0"eV 01PK r @2{?@?`'AXP'>s`8" 0gK 01PV0 P2 ?f`pE,X@p p[ 5P0eK %epw2 pRm?p a H P @,-`"0 eK 010&gp0g P`WH$ #@EPBGp1.P& {eKP0=prp2 @ qbIT #EN[pA91%`"WQDP01 g Pg R}%0T MOs0[NA;.O"00]%`04pr@p20 @0 .%0TM#@On9k0S0A;.OQDP0ѧp(pr@p0 @0f`HpT PO͹k0VC090/PQDP0g  { p A ?9`'M   E`kpgPYZZH6PQK0g  {000pa1 Nٜ~uw?Q`(`r@p=@,0@ 0M 1A3=P P @ z_K>/0V M`0X4a`.A[ P @ lRo``(i@ @@`0@-1CL  Ґ @ p D9%0`(i@ Ap `.90SPcP` ްp _?`/P``"h@p Ap}{E`.90K0zP `0@ Ґ  TD`/P-} Q '1 1&P1CPwP @@ Ұ ZD9PR#5``0 Ky '1 1pa-90c `ݠ _H?+`".% Km0'I0 PM&;l `  Ѐ lPhl/N_ZM9%.DpApQ` `1@ P P @ z_H9XPvbP>0>_ '9 Z ް@ z_P?XP zl _@PhR '1X4 1 M ݠ ` b @ w_MJp zpl _@PD_ @E @ D z ˰ Ȁ ` @ w_P`g wLPD80pA XCz @ ` @ @ `  P 0 zh0YP zbT Hv80p0E@Zp P @ P & vh p @ zbTb`r`'1``_w ` &淐 vtp Π @ l ,l0` `._w @a^ z`vP ` l _l0` 5KjzNP ` z0 Ǡ @ P ` zlPy80@A 1&Ujpz  z Đ @ @ lP t`%@}@ -M_lNwppz ` P /  @ @ z__@ `P" p10909Ubz @ ` P @  zPP1 ` AP1`p[Ml @ @ @  @ @ @ _&1@PX 9l @ @ P ѐ  b.&C ,QDĒ/w=D1cԢUZ5c0b$F "T @LhQЊ@h@8Ųe,jҤ-3 4Kb" 80bm`__T+bƀ% S 5Y!C%Zl``·&`U (&Ҙ:)ʐ-PxȐ!&0<0pnhĎ!U|A *KX # &D B$b C1vR%K|+S„ :`@:p 2 !0%bZ 2H@:@8p,Xc)b!ȡD`X8Ą"@!‹-‰!ȡL@H22jx"N0b#"Z &2  M: RЁ &|J!衇fhA0 (COLȀ@8"BZhA2 hLF=q.aUUAhAZ0A2 (L @FXhAZM 2`56 .N8!j< "20)c7xc !Z0< .`&6`| !w@`R&&(9<vv bÀ2,Ӏ 6&!HDv8An8 "p`o8.-! "p<~/-`YH"XJ/p b @p7p2 &-6 0  `?|i 8! 0` `< ! ,TqH!\Ȱ#JHbDXȱǏ !fÓ( 9ҀKWʜISb 8x5 ݘ@8Jt` 㿔P8 A^ذ@Q*q$(Q2)p$ 0_È @ 'V,sW&&o(X#% q@‰9~HAEd:pb(lASs,o-XYDJJ} x_ZE 0v0V,AJ(0 V!J( Bs}% %pA A$ 5eD-`ay_A& %}0D33eD2`a?Hч&H/8`@d02 @2`E>D"$H" @ @ 0@4 `)VKX1&%PB0@ 1` 0@~4 `i8(Di P %zpA =PB `z4 ȰADVDq&h? @C/0@ @2l1 -EPI(ĐpA X "L#L7p [lD =K8pI %<2`8 @rE@ U 2$D9P %}ЁKD  0D U2$D1 b ^"PA$yPH9x0-d P50 CNBCP 6|A =8aP|QA 9D ^l ,Ȑ1D/( (d l x_Fxa =j$ X0@ _ z@A h`C쀆% ?7 %``60`" K6!vP P/l0 J(   8!Dc(@ lh`2 Aĥ g` @4Bd #@ `3<6Ayxb0`s h-2  !J.p?XBC"d lhC?:d ȀEH 2 ؀ ` Q(|! mh WFxa =hP$ 0 0X%!0A 0Ԓ Dp0@/l0 h25V`L9X06A > 0@T0 hGF  ~@"A ^(pA a 0 ?@Рj=hP"@D`XJ%@ ]XB T PB8KW @Aoe  &p\ %А;d!1D@ _ B & Ͱ; U 4@@0( `r6"YB D0 t>`,ȆL@,`V@2B`XD%!yBbP<`( ` >wP h@(\` mD! p0@/ 0 P Aoe #xqKhC ĠXЁ6 @L8hP!@ @F 0t0:%aB `8%@ l@`0@F @AhEH 4d(,ftK a %`lD &`1 @p`! 2t` @ v "p 6X`#Qy1 @p`! 2t (!DbĠ0? +@DDp 8XP$@ 0 pp/] .`00@ @1@ ` ɐ @ vh0PC1I~`thZ`K>`9 Va@VA1_ @ 0P|c@P?X0~p Pv`l_PK6@QP0100 1&M_l`wpZ |PdUSk 0 zpl_P?y QPPA-0MZj|Z^cU {p l _@P@l0%@P+19UM|@MY@xp p P V zbTm0%@P 090MPYhcc@P p Š Š @ zb@Py@KP `0a&90KPY@OZ0h` p Ǡ 0 Š ` bHv>P `0@ Dh0 `0"F C,J(PH[)cf3ft„1TyCG H8`  0`?.d D -\5wyJu5* &@z@K 0 M` X@D =:uZŸ" /Mr@b%LJ p0at@D&_yTbʘFXQG%Q >!n 6za2K0f֢S3ZH$6X"~"0a/ p@E"]cV$R: Ď1" @p0ȄL 5LLEZԥL1bZb ^B5dM7$ L/ظ#G J*)P@#*0 08k @v=qC g4Ȣ%2``i"bb9C1b(A&p`pmp!pcc= &!: XvUqqdx 0p9 +"L "x h˽b ,"vp0 X\wz2t`"sD "Pl  & = tvL20>,@ַ+Ld g?` Z`xb,a @H*3A .P"@&80!0 d L@ 1UX@` s]5E$H`gH@d`@EJ E$H`Bkx X踫4 <@Ԡ&p 0Yf\L@B8c D4%`D H% LU@3 3h& Np p"0 x` 0L hx `@@` @aP{! ,RqH*\Ȑ࿇#JH@ 3j$XGBHɓ pIr#"a JQ4=0Š+0 /@ҫX=@# %9JL02Y@L(>^@@ѻx}`=ȠG ]<3 zAȒ/ 0  0:]@cw`A2t@O`A4tH/-L`VG8]HP&xR 0?3.dpUE `N!GYt!hB  0@p@ D pN!PDH"lH1L!L0@4:Tx0D% ҆ @ pd0@4P{ACAHc4p"t `CIGKB 1Đq n"qpЀ$P "` 0SQPG$e( ,B /HG"@$ / B0JQ=?@xD ! &$B "f @ 1> B0ޤ>?@{D! ;|$>0B A,8( G/?@e(CstB$.p0A$ЃPtEK `?38 "<`6|`@ r,| hȂ`K @` ~.@C. B D  K/@!-PZ38 ] 1!?0 -A/ ar $ [0p1 `\C1Ѕ0 ab$ A l{8H 8 "\XA `A Q6 KPYz ? NN 8B2l3p*A %@ _,A0GІ:8= 2 @!!V .HA p%@! _(`0CӞ>@+8'`  t%Ap%, ]Ѕ%  ? H`'p2 D&1%@ LDC`pb0@ B 4B"6$  `8A~.0 Dx`@Xg h `?A  @A% ?€,@H0> 0?BBt60 y>" 0? H0> 0?BB60 @. (@ 4 B 4 `@"ЁtaxC `%T``Gd38 {(Ch19A \p]$%xJ" 92fp@P(A 8.c0l` JЅAL QPBJ8`%``Gb38B 8bB8P. bt|i( ~`l@b38B 8H9J` @LxZЅBVX88X_Ё 1zP2D!$׀ r,`+`<-`~?/(`810P2D!$׀ P :ad0PXc d8@0@Ё!!"AA:@2! >B 8)G@@!A J Ab08I׀`dQ1!@@!@p$iP @V8P33 $%0 `ЀB8@]> ` &!@-@,(V8*2 "00P{0 `0 3 $xHA ?Q1 ` 5@2` rpAT- 1P@ BUrPuYQ1!1@2 p rpA%"`08Pcg@}Bp ivRD1!002 ` rp="P{P/p+>0=%$p $5.PQK0.9`@@2 p rp=p%>@6>`! 04g@c_P?9./PA@4 p rp0`60n90`pP:{pp Pl _@P?l +P0A4 p rp00@P6@H@!A `7~ zpl _D.P14p xp00DDP0~ ( @zl _@P?/P*.9`A x` Kp %f@ 0 5){ (: Ӏ zb _@P@>4.9`q(p i2+D`%@ ${(Ӡ p zl _@P@6v ``,p i$@@/? `0p0up) h p @ pbP90 ``(p r0@BBb/6P 0;0tp @ f _>``(p r0@BRu6+` A`UvP ΐ @ Ѱ ː @ f PA 000i` K@`@0//0@;l`0 ` P lH0@`(` t$@xH ?``pCl  @ q_" P0t` @K@`<`%6a_p Đ Nl @ l9P0`!P`(KK `<0`l@aZ p ` `  l. 0`BB iPr0@`/0`0Zl ` ߠ, b% 0 (&br"KKp!0)7*0AMl ߠ\ C&0p@"@KDP`!A P+!`0Zp `͐ ` z9".ig` h@"@! $%0A?l Ҡ ߠ ڰ P0;P"`D,G-`"` h"@!aP``?z` Ҡ @ߠ Ұ P9- `g@,P2 5%`"P{v h@"@A &0h@ 0  . wZPC1&@$@5PI5T{"D`P0`1z ` vc0U0C1P& $4PE[0NU?09.p]Ph@a0`9Pz v|hPgPS0G10pT2P^kpg@U>YM>/_P? `P0P1`10KPPZPdgPU0Np;P33 B [~`|`vj_H?0? `@`&h9CV0 G5=k 0 vHl0>` 5P0p".9? NGp;Gk T l _H`]` c&@&.IDNGySpx z o }l _zv 60`P00'@`-090V@u` o PyY` (!@I$`&305AY@P ʠ ` bP /…,PD g"DAdL1;1bHa&CBL @0-lr `v2h <dA!z8"s!Z 2 @t=f!vXֲv"@&,ߏ `z"0A Z4(` x"X&d LЂ<7hP@@D`oރ"g pH8 LAE13Р2`d2@2ɰNЃ̠" FDD`8q=\` @|"xb 00)-@3p L *7C#b@! ,RpH)\ȰÇ#J1 jȱG (QR\p9|,shHQ:J@'v|AÿLj:+vł(]p+ X)(?:#0 [n J@lH? lpV jÅK/>@Yd`Ф6aJ3=0'>| 02&a%Jph`` 0p̠Iy̴AjU(BV& 0$]pALm-0z6\pF%FP/`҆0@eVsLm*&acEɘTsALGf&&00Eh:0?Q$yF$*BI/8` ]D\J\@F%؁lG"&| \+0?Q$vtE]AH"l %qi`JE']sATFKB a%P%8` `ċD gXR]"@D| DL`8`@? QpTF8hp@D|"8* ` @?\p%<@DPH?d A"B DE7\p%Б @w@D$"<4*C1?B @g\"Qp;"@Gq:p1,KЁ\PpXBG=< 4|`E,]t.`Ѐ\F& @.0Aq % Y@ ` @.k)`< @V p 0D-B0H9 0-8S!   B)`Z,_^`m p=dr  1!\"p Y@C ,,!@BJRR:.LBV!?"@8ā &! iXdА @<k)T P08 f:YrABH4@!"p{`2q :DAh`4)dD DhA@}ax d%k%`T P f"`=BȰ/ oT0 q5dr*(i"T3Hp2( Q; >0 0)G֐K @(@ n(@Y"@ aJ4hk%` T P4 T 8`0 4` PB/,0 X%,!+h ` @ - ! _t`FgȄ%` T P8T/L !ހ%`6@j%`Fg%` T P. T `,V'.D( ~ /| 90KJ'G`K (` @ Kp&Ё A & CpAX K@Xb^UV', @0  DATR:?pAX K` r "lBPO Y @*`D0< ( a 8@*\ "؀6XJJ' Ba `D`DA CB!@1:d>0.bt`6 : +ba (2@ P hP P YXb a`%V < 8E\ %-`L/xA 0 `10Dp`D= m \ $%2 l+(`< A " Q p(&0pVP r>1  %P0,HI`a8`b&1`` Q/P- 2 `00@-+8QyP p@@WP P r>%2%0`hI5B[`ma/`0@gP P r>P%1 0P `&p o_@//@ Z@gP P r`8P%/P0Ђhr p-A?9PQa Kb0`I0`p WPW `Ђp:P{P|pzl _HY_P% /@@pg` Prpp`%0+x #~ l _HC9P/@a` Wp0 /`/5~ p ` f \PD//@uppWp ` ip%9`*0`I@ 0k  p @ z`bTD/b0qp pWp i@I+60 02 0 ې P @ z`bT?( /@@p Jp04+`00-@ 0 O zl _ D /@0p pV` Pip 16@?P@4@dP 0` zl _>0/B@` Jp0Q/@P0K` б @ zlP% /@p` Jp0TD D0` 1z ЭP а 0 @ fR=0 2q` 10T0? PP `@l y p  @ܠ а 0 @ b@?`p1` 0p046% 1Pp@ 0 @ @ⰾ z T @! @ 0046@PP Zp ` P ݠ 䰾{ а ` @ b%0/B1`V` 0h``I@P@%@PI`-w @ Ҡ p0p` @ _/B[@` Jp0@P 1Uz ` p @ P` /*RŬ*Wp 0h`PI06 0_0 Ҡ ˲ߠ z% /=̫/ A00@0PI -l  А @ 1 ψ Ы/ 100@P*0;l@ `p| ` Z&77 y/00jPAI`Z 0 Р ߐ ` ;"P:Pp0]: K a`I 14.l@ Ұ ` `Y0;0"p7 Mp> y100+0_p@ P U0A3`p=', 2.#(3 y.0+0Q@9vpz0UPS0G3-@$0}4PIpN0K?09#(]0_P` Z5p0`.;A;30-P- ۸ '@EXguZK9a0\o %0@"`^-P`N @,P^~p 2 wbP?`P`1 Ap$ B~p zbTz@H A pM `~3pkp _{ p zbP_@\A/ M 1gpp p ` lT}_@ тp*Se_"0APup ȹ p P lZ_@ P*/>09PtP o ʠ ` z_M_@ a@p.c` M`lהʼn =l@ѓ"%Q?6~R%K0`A; (ծ]͚9v3bbqbH/PG DUjT5 pPz)խcǜ)Sƌ1[01(pUHx# 8 =<2uaڢE S$Ez|'*>D @jha5z=T-]٢E+V)La IȃLhfG;O[L!z2`^ȈH`/112`"™@w9 D M[?.p;d#? p€! ,RpH*\ȰÃ"F|H⿋3j1 &DG`@œ(S a˒ XH͛[(+ IQ)" 8J*xԇ X;v44EJ 5:O J 9BO1KV8OiӇL]p?:4ڌ"4! &U*Bm "E ]~A уhX<00  poBm W@A \?^(zt_mpYK2 އpYlJ/؂H0A 0ЂYU!%&z@8bTAh`ozA&J"RD`9)QQb4eA\`oE QG"&}jFDDϛp!>L]ā&&FIF@T4$h@`CP %5j0@ 4 ]80y$i"f`j@DAD,U\p. E G"PH  0% Q\pt!>%|p"9p p!҅@ L@$G 0Lh|A ,@Gs\p/  P ` F" @hCo!%L.> d%`+đH"ptdv9^ N Y\@b H/< dvD^DK!Y\p5$ ` dɇDĐT\p@*'!pH0 @Ȑ0p RXB `7k.p @d `4 = C0 0HLpGhodh  0 . l0(pT. -@$,@ }&a! = C0!vB .`6q@pChod$ ?0 /|! mD `<Ф088D.pDl>pa4Ѓ3Ё_B K0vd8 @!Tx  =@C0#|.p^bQ d@@@ M PЇ 0x2\ p!3ZP"P`=Ba?0lI$@ U " 8@J*< p@*`!R`) \3I D"p40 /`B@ M R@J(a1\@hdG$ U! 8@Jfh` =D*410@ @^@.! Rx 0侑(T(D(iDЃBJ4+ @"|@FK\@PE@p@@ O " Px@`@D `$F". O"Q `L b L H',`A RA0('>,D6*$zP " Px@8@C.l 0*:D:H 0d0 [0*`+0DpP ϰ 0 @ z`bT H`" :H 0d001 %P9P`I4 0~p ϐ00` z`bR@90*(:H 0d00A0P/P@H4  0 qlT9 0*:8pIp @`@P/`%@3  P z`bP`0*1:H 0N00FDP?60`-p 0)`Ұ 0 p\ ?`P:H 0d00G%@\*0FD` ې `ߠ Ѐ }f T(0*:H 0d00G4@b %0`Dp9p@ 0P @ Ѐ @ `b@K`pIp `pD0D60Z@ @ p P`Ш Ȁ p (@:8d:H 0A00G4@a0Fd ` P p* b.B:H1:H 0A0DD`b`0Fd- Р ШJ zK`H:H 0>0DD`\!l pP;` @ _ @*1T[`=` `H \ 0Gd 0 Ȱ p K 0,Rb=p y``D` `P0@Pz p|˷ ڰ @ P2,RK* P0F4901j p А 02*K@*P`=` y``D@ 10j 0 p@А " {`  ?0F@[ D@j@ % @ 10j8l0,= q0|<0d@Zp ` P  0A8 v lk7 ?0|,10@<pc`}p @ U-@ P >0<0@d:0.hl`j;-@p P,391%Q0@m``@0=`$@pԧ )PIg@chZK/P_0a``FzmF,P[p P p_@HfPm.0 0qSKrk`Ԧ@E~ = ` p _z@RP`@dzSK{'5k p  f _a %0l.S;*{2{ ۰  p_a %0`1bv S  ې P @ l}@z RP@07~Q &0uP I p Š z_l %0l @g~QTK*r ;v >p @ @ l-l 60v ^&j z~ ` ` z_Ђz R@PpTK.l` p ǰ`  lz P@1S{Zp` P ʠ ` ɰ w zHP0!<10;wP @ @ ` @ l}_@d=01l  ` ` @ ` zy9=_-Pjz @ @ P l%g0Cl @ ` `  zR`د`Ml Ҡ ߠ _9  @!F/l0LZ5o:)Fzp!<~2d%MD$b|DJ0f֨E&M2`H=eɋ   RRM@_ 4Tu5k֢%f@lpa,ܦ8 ,Xp:vKW-S2$ ,@` dO Ë9f:JTBv@Ä 8Xdڵm{ Oq3g={T2$G &Dx`n_1@ HСx/^qd "8d!d_@ 8H!j(BbL & 0`, X`da]hD " ?j RlaDЅL2 0F)r@ 0LHD"c!EH `t) tLD;eADH @65 aTX "Xes.Ƞ?< HDTI[ 0SN p9 e!lA"hYm 0LHb&pc.ȀH0 [0 0`nx .0`wi g' ! ,PpH*\ȰCH@$D`4 `ĀDBhB 0"mD3ш.8h13,h&0|A }D(4Q+xf4 ` gRhc!\@ :baJBvAH p1! <Ad.4*p }@N< ` `cRhѾ3Hd`& (| D(("` ` k6B 3!}(`Ő&@@ f"(6`wK#B @Ő& l`DB8@wFS8E#~>"$"$.d6Hp@l@8bAx PcRh@c(D0BD x8H@^GK E.!;X`  A!! O %0@`@ fl! YB w06 @"JCh^x" L0B w P>!NDBP k~ R  9 ` 0 @)A w"IXmB8d " HAT_x2% aPeD' @ T( .!d(A. $"(5?)  ,T 0$p dFpȔ@X@2łJ8J \@ $p 0@> 8`!PdJ @@Y $S$37@PxA"C U$wP go" @ @P +@Mr}y !PdT Dc| ?0 d >*`#b;r@BA>pȔ3Q8x:<`>w` 6x43( !&&M R2L@8* ,@"D&0 * Sb#6| H[ S0@Z go@,` D=4 85b%= \@  S DaOa0@q_@@6  `P f |'? )),` o010`T0f#p0NP 0 q`\@P(@|,` ǐ @6}`R`06 P` 0 qbP!@a, ǐ @66`P 0f10P 0 z`b@?'p Q0po%@-p @ Ѐ qf T @Q,` ǐ @FmD j N`ܠ Ѐ zb@D@ ,p ǐ @D@`K ` P0  p T2p Q0o}Rjl  0ܠ Ѐ p T!@p Q0o z@ pi Ѐ @ p PPp Q0o@E@ 0 ߐP  а \@9vop Q0o\p k 0 Ȱ ܐP0@ !kR*kAp a000q  z Р px 0 а l @P^*kIp a00\?0@ 0 p{` 0 z`ګjPJ \0>@%`Cp ˠ Ъ А @ `ڮJ P `%0U 0 Р p␧  1k$`  `A6w <@ Y `+ R*`*k9 K@L"P ` @W0.v@ ` 1MGk,t` P 0`Y0_-p  ` $.% 0A }@@P0:a p t+j @=U0hbP?% ?0;Pڿt&l&pBp l TmAy6;#*t`¢k B $t5Š lqy_@ 0*VlP5  P @ pyT@*)B 0٠ @ z`@}T@@^j@GP ؀< zf+,Zlu 0p @ @ l}`_0^j0;^j- ˇ<P ` z@}`_@@pM@C`` ۰ 0Ұ 0 z@}`_@@@P@=&z p а 0 @ f@?pk=1@  j }T0R 1ك;l @ @ Ɛ }P9 ` j+ Ұ ` ` } ?6 j ˰ 0`@ @ z %`^p&w@ ` Ơ Ъ Ұ z90F~9z ` Р 6~ Ҁ @ `_*k6?z `ߠ m% @6C Ɛ @ l%0`0.k-`p Ǡ ` ޠ j Y" @z- ` l9  (@~ ` p `_;` @ _p#p7`s0~g0;k*`p#0O:P2-G @+1?N)@$s b0wb|pfOqspR @q$(0`@q)l$0aO `7> P_k@p$w>˿ կK?R `ppA2d $JsTV! , NoH \Ȱ#JHణǂC8@D4PV<0˗0E0!6HV ϟH)?6 ʴixzĆ jOH[ ` 6_p@xG8l/\̘`yK p6\!FkN*Om   Ԝx@;<†PP80`X kI)O6B(NT'-b@@`@ ЀN*OyˆCi/b@`atIa"/1d؅ `H0`H*qA+&94@0(І Ѐ GbG"/Q1@K^( Ѐ _lʗ|0.iK& Ѐ!2KDP*lG ,iؒgp撆 ?8`. <}$ɦL` K4p. 0>Ȧ gy"paA _ @0}P)%mdjj@@A ]`*<}P/86@&B@8@ ]p`* 8>)%\L 8 Kd8`a8@XH pzD F"NC@1H l|E @a7@^H p,DAI"PDdóP 4 dBx!Q`RaD i@QAp Pd0/@/P0 x Ǡ @ `pb@PRP"l@QAp 0Y 0D01P Ͱ p pbD"l$PA@* 0Y0? 0k π P젋Ǡ @ pbRD(g$PG2P 01@6P0Pu π0  Š @ }fbR@> pp&K2a`0` 0 a 0/6v π 10 zl \@PgBaAp 0Aq}P@60j P ` pbTb`a`0P q}`a`/00 π HPҀ pb@Dw&`a` 0Y@?`p0w 8ޠ Ff Iw&`a`" 0A`Dp0  p ǐ p @ p _@-w&p}q}` 0A DT6`j`  P  l@/ xg$׷$p 0Aq6@1&F ` Ҡ ܀Jߠ Ұ l xBکKb1` 0 q %01-z` ` Р pбߠ Ҁ 0 z % x,$lj0` y01f 1z0 ˠ `б P4 G*ٶg0` y 0AT`@Pw` ` ꠵X` _`9A~wpǙ~0` y@a>P01z ` X۱@ڰ @ &`9A 0` y@Rj%10j p   Kp  ̹  >0@0`P9z @* ` `;$p@N ~0` y@1 @1c@ 0 o h ` S-`$PBjuk9 x0 y@! `_` ` ` |PG3-@$ujG$0 1 m@L0-hScKp;03 2 ʢLŧjw,- 1901&>0@f`@1`p $<],@yL, BS@clbZ?%y/|``uʤ-P8-L$2SP FlPl0RP 0  `) p}`͢=- X p @ qbpoHP 0:!ApP qڤ,G Ͱ * ٠  zbyR@%_M a` uǮ\ݮl10x t* נ @ l zlD0ō q}p&A|D M1`t Ͱ ߝ* @ lzlD0q}p&A 4@C Ͱ ߭P İ lplH0%>q}K,r ;` ې*:P@ @ z_`m_9 @S.qLҶ `Mp` p  z_`D0PAz}Kr&Z P p`  Ұ 0 z_`D0p!_]>`p; @ ˰ 0 z_MDP ~R`j@ ` ` Ȱ` @ zjmT0 a;z` @ ` ƀɘl vpl@9RaZz` @ @ ` d  0 wpa`S_1p_z P P P @ @  pb/`Ul ` ɰ @@ lP0;P_ @ Ѱː  z?Pp_` d p?P1ׯ`$ p 0blHϗ&9DD@O-^ĘQƋZK$/\rݺe #=_18ę: SDU*&ˏ"&8hNU5"wačL3g,Sv/R!W#AF HD\4p!¿ FX$!у '=3@@A⟈H V(UL c 7_ġʖ.Lm @ %8?1v XA_"B.   D4`eo|P+H@A> P]5@gTR]p!l+P҆ @@U4p%хaG"&t,D @_@B'>4@g\RY,Cy%lBI1D@0@ TBGApB l%P-@@4A:0 XB9d0@G"lBD` Ln `B4x q%tDp YH!B hp0 Eg%@A%P<@` 1P ` & ]5kKG(hpAPPI"b0\(K B0 \A`A R B %Ёd@B 9DED  D_5kdr QP7A f$B "fp  AdF],0F&a u|0 B_5kdrVhPw8` @0`0| 9@j XC&2!+h}!J A 4|/ 0!W0A9XAp0!fP0`0X KA@W@0A9X!變` _ Pt@(A6Xъ] `h X` @@@!q: dȆ0dX]e X`\@@ ``b"PA4| a``d?(w(` @p \ 8d\@8 ! d6hXB "`g XC&.!%h@p$%wa&Ȑ(@A ahCЅ @l5drP.P T 1 b@5 V C$| m ` U5L0 K*p 4?`p 6x0 `@ lhCа<L\" K*p 4HV/` p@42@@"0%@C 06` N4BV G@"+HHCD Ё%x` F2Bn @(HHC~>2&@2Xh  _4aD@p@2`Ji^ aB0P` @2,hB @z4Bp@2`JiB\Ђ"02, yCb@@0Ґx2`JiXBJ "x @%? ` oh1P}#@@0` K" 0P%00  "4KvQ@z@  @ ` K -%_`@ &b*@o_@1P}@@ Ap p J7 0%0%0 r 19%Ka ?P p0p VP ` i%/P A 040d@AjP?.?OD%@ 1 Ap` N0%* )p zbTK>D9P p1p V` ` i@P+%0 @` )  zbLP??8 & A qW` ` i@ 0%+@@0`[ 0 pbLRD6-P}ap A%%0@0k 9؀ zl $P@?-P}@   AW` i@ P++01@Up 9 ͐ ` zbLTD`@   AV` i@ >6%`0@Pv P Ǡ @ z`l _@P@!@0W` Pi@ >%P0CP p ې @ }f \ D@z@ 1p p A B@TZz a `  ː 0 z`b@D`@0W` 0i@ ?@RP0 Cw0 p p P ݠ Ґ lP`00p p * 6TP0Mlz P  Ҡ ߰ڠ Ұ q_# 1p ` *!4`6RPPlzP @ ` _%@ 1@ ` %!4`/@H00jp ` P ` l&0@*pb&>&0J` 0i@P0P@01_p ` `p  z 1 7@* A >`%0@9lz@ ,l l. 70@* Jp 0h@P@/ Mw `Xl`ڰ 0 C%`   0J _P@`@`.j ``0@ K1P&PB$$.+ ϭ> _P@P-Pl@ @pp YC1P-`"@.M5 p~& @> _P`P  p0U ` ` YPC;.~-4Pp-=9%`"y#K _P@`01z@ ` @ PcPUC;33~p]E IpAޜ.P"K ]P @0@ q-lt0c@dU`S0Ap;32PB[S`K%YPRP @p0&9C0K`S`SAp;31 B[gu@|`lhP?.0a"10 a -;A0C刞IpXpx`P zbZ?y`_@1 0 @".CQA0GpX{ p ` l Tfo?@p@zPC0``-3~NGN0gP Pp ` p _mo > 0`@&301ڃC`d` ې : Š z_f`o601`Ҧ~3`;0U0| p۰ : Π @ lPvP`1 `` 4 $`90c` kp ʠ ` z_cP`a 0  BarƤ`-U p   z_bh60P%- >"p&Nns-۵k֘#@pPi%(6> OD/J-WS 8A9ԭ[ʌ2Cj-RF˒/h@bvV$3e0 Z(zTZ #-Raʒ/h Ɂ߀+sYrd 8C =a2U.Zl٢E 'Ew| .D^D1ɽ%IMѣPNJ"E9NA3ʏ/_,)/n0-_ѣѣNMJEVN|Ќb-†<|c%@ ~ 5ظCEb!&ZLD@@ pa p~B/ЃZ f iN 40X`,o !`LJ.]tS:D6X0xS0@I@QeAL"D6h"&pҮ#LN9WpI%N‹#!L &x@J"BHch!z!Z02 @yJ&H`jacpL 2 x@`l` rnaƎL2 @l` 2H0\|Y  2hx|.8/@Ч3 # %/Vt0O!ԯ  0 %9^x@`Bp ` %6lX_Ÿ 0?Yw (?| D`fFO."0jzKDAACl(_h )В ߁f@҇ҪX?OA 8 ,P|%&lOUC p@d_& "_tH@E_P p@x_%J(}0 ? U0IGP| *P ? Ѐ,PiP xdEoH"lI(|T <08`@ @{KF$BC 0?@` $Q,D =( P"-"mp!"tA Q, 0$"-%dA!B "`,}A0=GK@B 1$B&4$C . 0? T(ЃQ( (A|%P-hAC 9T4`P $!qJ@ 2 9|Ƚm p 8?`0 @GD!%H% -Qd8ꬳT( {DD!8 ݖBP/  -YtEK  VB, L>H"C -CKdFhdC h` (` , "t@xAB0|! >(@ 'P+! @'!`D =B4 ar  ? AA"H 8 YЇ>!84 l8h0~@p@8@ $!bx %d aЅ%` @F(dp@ 0?؀ f 4%.! Y€0d!"x0 @E,` / J\B .2 _ 8&P@+8'H Np`  D.q F(t]A & `u( J"aVpN\A  DJ@J P 9  E ,8` l0 q ]e Kp"aVN 0B +x:P o@|P ]@DKp"aVN 0Bp@0(aoJ ؀R q P5 A R\? "` DP/boJ0 D`<X0 {B@p`*B /p 8@ g(`LD( ` r@$!p@=8Ct' l /x& ta|( ~@` @g(`0|/xH0 V G l`  =8C ,`!@6(aL@%鰄 0? #// 0@%8 P+``9xAZdd@% $A%!8AD+ J0 P ?Ѓ2! AX 0- 0`ЀJAHKBpЂ `XJ`Kp QA@ 09 00 ar-B@:P0? 1(,`,@pp@0H$*A% $`%)b2D1 X 0p xPЂ4rP^@(0 |@Pp1d>!@, a0(iP J.9-p- 00Q@Q8$!p`0#@(i r8g-A%00`: 1`1Y@>!@$ !@( rP J. %=%0) `k8P-2-BQD1x  ` 0$2 ` r1 P96P Q`&& 0OK?0x ` 0$2 p r-%?60 `A P'X`U?/P"/?/0`` p!2 p r-p06@? `Q 0E{`thZHU+9+P"ap!2 p r(p%`?@60PP0E `l_PK9+I.":@ -p i(`?@? '`@ Pk p `l_PK6+.@":)p$d` J@@ P6?` ~ p P w`l _$/0:a!i` J@B%`?`@@p{ 5 7 0 wjTH6! 0`(p r!`*`?$0;@{ y zl AJP60@ p!i` K@B/6P`1U0x P @ fbP8`@@p!i` K@"6@+00C_@ p @ JK  JP`@@p!i` K@k09@60U_t`  иѐ lP"00:(` t0 1D`@;Zh`P P и b0!8`piP @KPD`@9Zj`zP  Ґ b.P``piP @K@@@609Zjz ` P ްPPP @ z9%0OR(` r(0 1y1;Pbp ` W|U ?.9pp C "u,KP 0@/-PbP W\U z?1%-$ 9"@uK PPP+000;Zz` ݰ, K09.P28& Њ"` i`P%01 9j@ ߰M _K09A02=G91%-"` i0@1Cw Ҡ `m а @ vcK0UAlGS7CP51 i0 Cz pиP p|cM0AlIXgP?P5/Pip  _@ ` ^ 0 pvh0YPK0J[kpg`d?P5+9R]0b 1`9 I~|tPcUCNk 1x@thZK9% ]`%KPZ0hjvv|@u0YPVSkp{pp Iw`l _P6aP>0p.CUc0htPc@UVp{pp l _Hb60p` 0"90K޿>uudUpxP ` zbPlo/0bq";CMNYPdPp p > p z_Hv@Q`aP@-;CV _l?h Π ʠ P l Tbi+0p 0`0p &01;pA0C0S ZvP p v ׀ wZa]+0` 0@ &3;CPjp ΐ  P P z_?h@K `1 ?8 PPa G @… |< @+Ȁ:0f 00O@@D`o g ph8 L>e032`62@2Ι- ``-`b< 3v`h p& pM pe`@ȱLS! ,OpH*\0#JHq 3jܸG 0@ Ǔ(S` &,00 ʛ8q0GQ!3 J1>t@`ǯ >@C'1J| ?p 7@ N^( 8@'N^xF K8@8^؀LosXFO.& P V "M}tpo@s 0qY`"O (6,` CJJbijc6~D(6$` CJ "l R@XzhIE0@ @<40,`E>H"l )@? @,j c>d"P 40D7X ` 2.h%%8`@H -3A$VXV؁ȧP % @C %l @0(lE9d<"YnB1L4 KP0@A NX Bt?@1C/ 0,lE8!CVDP&8B A,C/ 0,( =K,ADP#%hĀЃ9/%L$@b0,(D -pJl$r1!>A-Q@9pL=X @ ^lD !ȐbAfP#%P -aEPd!Q   @ ^lD =ȐAİW 6?B AXE]|FQ@ @ @ ^lD -ȐI| P9VDEhVA @b0)x1  X Dpa >P,t lh@^b$! =@A`<f@Y! І< JhA 08( R@/ ` TC@"H, YB6!oBD ~b ! { $@ 3Q`&/ yh ЛX0 @Aj J 1pKB`%D! _`C.@H ^bP$DV%d! VX|(t! l`C, MPxa @h $0 D ~ % 0 K(0f`EHBH !q ` K/.@!"p3 [A @@"$!8`6P> 1h8  _ L@( 1 "@B` |( K&Ё _l `  AP8V,%А;d!&@0P@as?(0``pРI(B `B`+(0m Dd`@ |)!X % EHBHXA ?h!$vJ" % $HpРB( `B9+m@0+0e AEHBB{ymL0:p I`! E  @    C^ `@J`ؠ@<I`! 2 `? Cb0 `XV`` 3 N @@"$A!p?Bbt   Db ?&Pz 0 Ip`! 2|PaB L:` 0 @pb 2 0``"?"Ђ Db0`0  @pb ! 2  0hEJ%AB L&P`@ $rРIA` h0A v!E!?0x0%  -A` &Av `1`S- 2P0P00@">/-I!0 6H 1JP`V&  &3+P0 06!a"91=0`p0$NP `0"`0>`%0 !!AE 9/0=0@`` 1XP`V!%KD"!#60$"Q/P0$0$NP `0P/@T %0(B@!A P, =pA1% 00=0 ``2NPpV@!/@E"0A(`, [kpVPM?.L %=0 pa2@P`V@@D@\(b010`:s~gPUD/%L("(8"0 I` `0p06@RR"#1pE0s{pYM@+P"(8"00=` `0p0@`R@R`" ^0ٛ{@dPK>/%""8"00$@ pV@P@60! [0ɛ puhZZHD/%0"800$@PpV @``?`#1-[0?`|`j_@P?/(/P0j@@0yP `1\@b/`%#1190X0~ЛA zbR?%1P0:!A`Q@""/#10CV~ p @ @ q`b@P8*0:!Ap Q @EqP/19K`Vp{p ѐI ` }bP.P"0Щ@ 1y P1/P 01`90K dP|P p @ ppI l9+P0@Щ` 1 P10%-CMc @ P  @ p>/P0 `!Ap e` %190?Zw@ @@ @ _?/P"`#A!A Q` pp&9Ml@ @ P?/Pp"8`Q`%011?_p P p ڰ _M*& 0"8pQ`01%0!&?j` ް \P  Ѐ _K1A0A0%`Y.h +0!%0!-U pP` Ҁ z _M@Ng@K.+] +0j@`K ` w_P?Ngx@t_P?`9/] +01-0a0p;z  ڐ؊ @ plZMJk`|`ZPD/ Q `*`l@ m P pv_Pg P `ZPD/ VP `aK@ @ ߝ 0 w`jtg 0 vH?a r`%0G1&Pbw ߞPvh0 `zl_H>v QP@p .0Pjwp Ph@u` ` l_Ha`t%01'a 1Pje^/ƪPt p P  z?v KP@0 10U_Z0 /PP 0 @ p _Kv>@G.KPZ0h|wl0 @ à P lPa@d0jh0&;0KPcpjvp p P à ` z_?]91o0` &1;090KZ P 0 o O P z_9Y`/@ @+!ƈ&CZv pOo րà l?K`J!!A(rOb C_z` Àà `_9`9A!@ͿZA1ha&StL"aHazt .<ņCR\SD6a2UKW`ÆU ӣ;h!"%6  ʙ]@9a'LJӣ@vT  %(Q~EsLh2F==¬h;c,  LQ 'rD$5jVf >cLiAC"^0±a`A&bx;vܱfL+Cv0Az8Za4($"*"D@&X ? 7,, @.ha 28$:Vc,Xbb0 &x8G 8 X#c2Ȣ%!D`@G-9ZHb1<3[bb(0%tN;3O;i" Ac5ΰb!r<@%< @TLCbb(0'*eհP' / '!R hX@ tx'n'!<@)0 RbT" PL 2HɁ ^brg\H &ǁzD0Rrgfh%2X[1bgv8bRjABfՁ0 ZzggZ gcPLhaPIZX))u%P2f!P_Zg ME!z2X@Lbgb@ (i؄Sz2ǀC^ N)O'^' ! ,Pp H@ȰÇ*0ŋ*qbƏ -0!&\r`P8C*E 0a‚J}`2:4``į`ÊKhZÆ8KwnQd  P!Ē,DD,00eE9F+B/)SS A/?` \=1g(DOU@@FrE "}H"͏ލS! z[ 'ԪU8rE "yP&` 0@X ܧN qt^&@Dl % C @ `@?HBi %,&/8@W@@ %`?C q^&DB " %ap p=, ,@GՂ 8XH( %" DPP ֤aG  (ohBl&!dd <`N qtA 5 B IAf&B @(LAFP+8) B =A]% %A `E]@A+`߆B]@C (CgȑFR&G  @ VP@ 0@OGP "rtPA*RE \ i!R,Q @)đ4Ԁ pd,aDı*"xh/atPD8)4Ѐ2peB /P *QF]|Flw8):Ѐ,pV @x9(AhtEya=`PB] (AgaE ,mHADdЁF_!ؑE 0@T+:ЀH`D0l?$_B@4t ahCA;X (#xP  a x "`P/t@C3| -SG.@(`</!RB4d RCl @>*' t@EX `"x @! vxC_0І/)q\@4@ 4P5 2&2|6(.,!"@A | 0 b `@5 h@`EX`"@@VP aC| \%`3|@pE 4P5 -p&2lp@ 0d!-@\``HB8r(86 >2Lx@^@. ?@B(# B"aXh0 `@a)|!}x::/BP`HM8rvfEX`"x@0`LR a`(6(PA 6# B0"aXh0h "(|Dp@l) \"=` D ,` ? >&(LPT8r(@A@[0< Pl-  H0L# D a {B @ `` _ D  eP Xp4P5 (p2`1?b/"t4 @l@‘@"3` B0   @b."t2`""a00<-A4P5 -p `&(tt2 P`@G D-A4P5 -p08` &(tC6$XG@G <-AZP5 -p@`"0r44bt& @@(#@A :ӂ"\ Wh 8.C80 p@,` /0D!@ ZЙ eB @eB 8^ l QFLD`i P+ %! pjE(P-%6P1aJ {0pep-@B%i xPm1D`/` 1 :("-WPJ@$VPx=6Ն"D\  `s Y_l0pe-WPx=@0P`m` a$-`&  (WPJP@1Npx8R`q a p,PE I=1% mQm(VPKP@Ipe8 f\ Qp:P^`^G1%P00`Y%PWPPx a f\ Q )n[pG1%`0(VKP@(p WPPx10D`f@+`9p@OLnG91#Y"Pm0Y%@02pd8A ^+9`POP`0n0^N0C0/.PKKP@4-pd= 1D`+0 !0-PO9sk`Yc_PK90K>P@(pd@ 01`1 En~uwzbP90DP(pdpA 108-= ɑs{p  b@>8 @%: W@ `0Y0000@`. =[z Ь͚ z\66P-`dpN_@` 1@`% ;pN0gP  b?`9PP(]pJ 0 &P.;0U0w @ Kp }P@?%@p-]pJ 4l0 q`%1C0w @ @ Ұ TH9P`-Y@pJP0 a`-1P` ppP b@P?`+ 0 PJ} %jP0&P1_ ǻ  jPK90 % 0%DpNP00 1"P9Pl @P zbPK>VPd0ZM9#>m `%:`0 &Z`   Ѐ @ w _PK`gPylCP?NAp0 Z ݰ`@ lZVpxp 0 zbTHq6A10`1 `P Ȱ Ҡ L zj|{ pbTH6A10p w 0 ˰ ` @ ` `jY@{ pb?A0@ApZ  ` `  P zq p zbCa x`100A`PpP P @  0 0 P v@p p P l _@P@a r`q"0Zp P Ð `P p P  zlCPl`r`qKlz P ϝ ^ 1 ܭ @ ` @  l _ Kv Ap@QKjpz P Ͻ 0 p ̐ ` Tbe@aPq A-Ulpz p똀 P ` ` z_?i`000`~q10M_l`vpzP  ` P հ ` Ġ wRN`@1 `` 1A0UjR   `   `  lMK= @a @q\`9_z @ @ @ n ` l9 /0 `TAŵ 9bP  ` o `_%"-`q_-ZzP @ `oO @ ` p_.` 1p-czP @ Pn6O `c0. a @ 4@ >|8߄CRbѢGwT"&h၁ mڄS'"D;z=BHQ ;cA" D@bo~-S,d0cH,cA3&K)Gh D!` Fpd`E;vT9Ȏ-DpA&, Xj `0bE%C„ "`U|=Zf͖-Nɱ#":`?<0 5xȑ ;(0A0Z>h@ 0&$8bJ0A0 @D19`"F&(B$vL &0 E# 2 t1'!D "x@= 82"nh"!Z0 &@=0 0 < !n"2Z0A2 ;@0X!TjA(sD So ཁn5W]w 8X`Tf\h< k0 2L(a\<`Cls` 0LiȍaX  20慯 L_eTH @3 m9•aX "XFvn.ȀS< !\HYH >`[< !\A[   <`xfh 0p 8L< @2m/h| 0: ! ,PpH*\ȰÇ#JHE 0@`ŏ !SV4ATʄx@C 4"2@I2I_|G" 0@$yD˅/<@"Php!\+J&h$fE  @8HFDAi?`AtLma 3P! E"4 / 1pIR 9<@l\Q$yp}h)tQ>  $(t `q$BIm!$yD+P)X<B}BG 0Ba8a3& ~/S@l!0 `R0ЇF4RȘDP0 2Lz@LB8Xb 6C;D%?$fAÅ)Pp@S A Ph!% @@!_(P PpS! A L6!%l@V3 D`pS! A %Bް `0@J3!\X@K pS! A=`PC`"`P(!f  pS! A   B0J4P) %@ Zq <` Em&8* 6xq <`>0C70` ؀ b@B @ X@S @ p@ЇD 1p@`,`} F,E% ` 0 }H"P0. @ju \ pq <`` BAh@  7 @` H!.!,`A 8 f&A,pAB T08 C 0 `@ D<0@p @^e#%^a 9`@ >hC44 x.Ѐ`P ˈZ@ Db!@ІAht h@ P)|AfMZۚ h$i!AhtPd0 )pMn %XpJ! @`7kl y&A82sH@r;$HC 0" $IA h @x@<`8I0D! (A! MH $X@L )؀ ,`:{Iq rD^z xa ML $XL@ `b9<p rDbԚA,a ML $@;<`"X@`ڗg(S0: " /Xjm &&q  | }H0`vp.0 D;,,`:+ g@@1PT@7'$@I1DŽ pLt0h06-` g@@m@kA07:p,@I1%=%xLth0` g@@\`07P#<7)0%Ӆoh06`r g@@6,06 p74$P"%8y9`k=  p$0kRq`6 0QxQ:4(P pL8y9`k=  p$0k0+ RpkpؑH4 31C(9%/m/pkr00 {01%pkp~q:@EShzzbP`+P/a +pkr0  01pF'p؎EdP` ` fPD]@%pkr0  01p@ 06@)XIpP P 0 lK@Ppkr0  0100 @6 pP@,PB0|` @ p@P1901y p=@s5@k0;  Ҁ @ fT?"pkh  0a@k0 ;0@ Iް @ b _D1 ;1i  0`6 .@ P0Iz 0 b_@H`%3 P]0  0J @kppI!C P0 0 zb-T?1CC1P"0/ ap1pF .  PpP` l-TD`d`zpjP/6]p0pf 0z@  pP  l _@PrP ` p _H@P@a x 0:1P0 0 ӹ 0w+ܠ p _@Y@ p ql _H@_ { 0:F@ Ҡ @ Ѐ zbdp z`bTD0p @Qk Р  z+ @ l hp Š zl _@H0pFw Ȱ ˰ pP @ @ l` ې נ @ pbTa e0j(00b ɰ 0@ ` à p ϰ zb_b x 01,-w𕌀 @ ` @ <` Ġ 0 0` ѐ zb_ br 0ќ`@_ ` ͦ\ ] @ ΐ g 0 @ l _l0r 0= 0p0_p ` ޜ ] ` "m P ` z f _e 0?-qpPzP @ ͌m @ "  Đ z0Ƭ@ bKdp` @``Ah` ٌܘ ` l@9Jp.KPPYz𕌀 @ ɰ P ` @ z H9!0Qa0a>`XCz @ ` ɰ P `  w9 0NIIsu"l@ `   @ _@ N~>Zp ` Ɛ հ  _;l P Ұ @ `P00@x>.j @ ` c<ƶ@ pY&@0`n` 9P_zۏjP;@se0p%KY0cP0;@1jp(cH-&@``p0qH)1NP5,"@0 pL `fKse,@H,@0 Ѕ0gi0:P"NgM> 0Q)p0 pL@#px:IQ"г pL@M0)P" Ѕ?_? pKx)$ Ѕ@.qC)X C  8X@#RH%MDr@- "Dx"D<`0 6 0 PEMZFȐTM!ÄMh4``ReSh儨 lzͨ"@p@@ږf`&D 2hF_6{ m.Nj 600j0$ m Q9; "8XkIh 全SuB($ q -!ÔAУ[nB)铈 @@@.G)Ci Fʋ'Af 1% ! F4@l qP/`A0I(pAD#@V"&mđ+BJ  4@ BRذ!,D*bFL4 $R`4*…lK4E0@ B\E@@Nr !Ƒ+HM(A -L" !\G9 tf8-`jҋ4F2L" !\"a@ *T*$ %P,`@Bb "P<0 4*E %%K/qBaJ,  .BD@l+|!B}b.Āʾ .@}P&ABq$ 1|@Nr$?80@lכ$bBp 2/b0@Gr$?80@׉G*P/Ę4@l`3 @D -`jFl/4@l34DaF"r !_Dq +@X1d ЇDB 6(&(L! [E3d@6D؅DpD"PP$bclP@ AP@H!H0(Q`- 2`pH%A ` 8wdA[E3dr@&DPf0@ HM2`,ȁ 2d_H%6LD@? B /39؂/1 @DP@Cz2bClqq1@Of (\ DD&Г64z_4c>@A K@=) ` HMR 6f "@2` '"`H5 $,p+R '[E3a u @ DV@@O2 \0 6 8zWb60R ` K@=D.@3`-R@Ip.a 'H5@qG(=0 pt0@\ATDD 8Hb l`d JhB@O @ 8 $B$a1e+@3 8e @I. dI ThVh@O#%W$1Qb90@S 3h"x " r%` Er``z.R' '=4> 8+ND.`4?'p O8=< @:ȅ(rBDTh  F ݭ?i#Ht |"yJH! E*<`(Pbb1"]H)!\0ȃ TV.4 ' `kpw `0 Hzl@a<`HAD# X(>D 8$@w6R0 @D M4  6Pbqx@e`P{P)@@a8` @D# @&(au=.yGFhB?X@$2@D#,m" Pn ;@Bz W [TH\@MEGPt 1= m W kTPD0K5 zugp$Kz`b6y@a`W T/@r1J5p[qtgp50w ˀ q RPy+pE1 p @J( T`vt,@ `` p P\%L%` T@@r1IEph `  0 b@RDP0@1@@ p !@I0HEr1!ptj` P 0 p T?P 0H8@@ p !@JI5r1 Pf 1 p Ҁ p`b@DPpap !@ ) Ape1 ` zf _@%rEy 0rA`Pfp `  z`l _99P?1` m@} ``@1`[? Pﰒ0P Ѐ z`l _ YP@ p Pam0@1`  Px 0  pbR@ b@P _ @I@T@ 0 P܀ zbip p @ fRR@`JeA 0 @K  Ѐ p h 0 p\T@@@`J5& 0 0 Р ܰ* а ` @ p  p`b@_ ` Ku_ 0 Ȁ ݰ `  Pѐ @ zf _yp0I@KU@ ˰ Ҡ `ꐶ Ր @  0 0 pba{p``l 2i @ @ А pb\  ``TM@ 0 2i @ p @ l _y` @@9rTP `/ Ѐ @ ` @K А f _p@9@@h0j@ c+ Р ڠ ` ba!``@-PjP 0 n 0 А z ?=@TAh_hYppO0 Ȱ Р @/{ Ґ @ p%@ 9b<`pK@ 0 c+  _@ IP0 9& @ ` ԫ2 @ 9=A@ l 9 0 2 k 0 9p`0 I`80l@ 0 Ҡ L/ P`01@\=1z Ȱ + P`0p`0]J59l v< @ h0"0I5p@Ӝ~Tp .PUC$T``ӟ=A[w ]MϻMa[qt vrrA]@ ` evʆ0b<8Gw v&MT@ y| evy` Nw GWfwH1]= ytg $wH1]p1.H$wH1 `ugH[qy>`$Qf ptt[Aa>1@PfֽH$l=1O>u[}Hl=1O ]phHevE> ]xYY ]0t~1҅[[qrAٸ@r[ H`0}1҅[p@@rA[ý`0p@rqep`M-1qJ;auralquiz-v0.8.1-src/manual/000755 000764 000764 00000000000 11707551113 015360 5ustar00janjan000000 000000 auralquiz-v0.8.1-src/manual/auralquiz.6000644 000764 000764 00000001446 11707547656 017512 0ustar00janjan000000 000000 .TH "auralquiz" "6" "January 4, 2012" "" "Games" .SH NAME auralquiz \- simple music quiz game using your own music files .SH SYNOPSIS .B auralquiz .SH DESCRIPTION auralquiz is a music quiz game that scans a users selected folder of music and creates a quiz using the tags from the audio files. A sample of a random song is played and the player must answer a question about the sample from either multiple choice buttons or for hardcore difficulty, type in the correct answer. Up to 8 players can play in a turn based mode with scoring based on points, more points are given by answering the question faster. .SH AUTHOR auralquiz was written by Jan Kusanagi . .PP This manual page was written by Dean Evans , for the Debian project (and may be used by others). auralquiz-v0.8.1-src/src/000755 000764 000764 00000000000 11741611501 014666 5ustar00janjan000000 000000 auralquiz-v0.8.1-src/src/main.cpp000644 000764 000764 00000003552 11741611451 016327 0ustar00janjan000000 000000 /* * This file is part of Auralquiz * Copyright 2011-2012 JanKusanagi * * 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 2 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, write to the * Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA . */ #include #include #include #include "auralwindow.h" int main(int argc, char *argv[]) { QApplication auralApp(argc, argv); auralApp.setApplicationName("Auralquiz"); auralApp.setApplicationVersion("0.8.1"); auralApp.setOrganizationName("JanCoding"); auralApp.setOrganizationDomain("jancoding.wordpress.com"); std::cout << QString("%1 v%2 - JanKusanagi 2011-2012\n") .arg(auralApp.applicationName()) .arg(auralApp.applicationVersion()).toStdString(); std::cout.flush(); // Enable localization QTranslator translator; QString languageFile; // get LANG environment variable, and generate the resource filename languageFile = QString(":/translations/auralquiz_%1").arg(qgetenv("LANG").constData()); qDebug() << "Language file:" << languageFile; translator.load(languageFile); auralApp.installTranslator(&translator); AuralWindow auralWindow; auralWindow.show(); return auralApp.exec(); } auralquiz-v0.8.1-src/src/auralwindow.h000644 000764 000764 00000011352 11741607534 017410 0ustar00janjan000000 000000 /* * This file is part of Auralquiz * Copyright 2011-2012 JanKusanagi * * 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 2 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, write to the * Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA . */ #ifndef AURALWINDOW_H #define AURALWINDOW_H #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "optionsdialog.h" #include "answerbox.h" #include "ranking.h" // GCC 4.7 requires this #include // TagLib -> libtaglib-devel #include #include //#include #define MAXPLAYERS 8 class AuralWindow : public QWidget { Q_OBJECT public: AuralWindow(QWidget *parent = 0); ~AuralWindow(); void shuffleMusicFiles(); void updateStatistics(); protected: void closeEvent(QCloseEvent *event); public: void initWelcomeScreen(); void initPlayingScreen(); void setThemedColors(); public slots: void loadSongList(); void createSongList(); void playerStateChanged(Phonon::State newstate, Phonon::State oldstate); void timerTick(); void updateConfig(bool startGame, QString directory, bool forceReload, int difficulty, int questions, int players, QStringList playerNameList, bool ownColors); void showAbout(); void toggleScreen(); void newQuestion(); void nextSongLoaded(); void preQuestion(); void answerQuestion(int numAnswer); void answer1(); void answer2(); void answer3(); void answer4(); void answerFromAnswerBox(bool correct); void killRanking(); private: QVBoxLayout *mainLayout; QWidget *welcomeWidget; QVBoxLayout *welcomeLayout; QLabel *logoLabel; QPushButton *startGameButton; QPushButton *configureButton; QPushButton *aboutButton; QPushButton *quitButton; QTimer *postInitTimer; QWidget *playingWidget; QVBoxLayout *playingLayout; QVBoxLayout *playingTopLayout; QHBoxLayout *playingMiddleLayout; QVBoxLayout *statisticsLayout; QVBoxLayout *answersLayout; QHBoxLayout *playingBottomLayout; QTimer *preQuestionTimer; QTimer *postQuestionTimer; QLabel *playerNameLabel; QLabel *questionLabel; QLabel *infoLabel; //const QString infoLabelCorrectStyle; //const QString infoLabelWrongStyle; //const QString infoLabelTimeUpStyle; QLabel *aniNoteLabel; QGroupBox *statisticsBox; QVBoxLayout *statisticsBoxLayout; QLabel *statisticsLabel; QTimer *gameTimer; QProgressBar *timeBar; QProgressBar *gameProgressBar; QLabel *gameScoreLabel; QLCDNumber *gameScore; QPushButton *endGameButton; QPushButton *answerButton[4]; Phonon::MediaObject *musicPlayer; OptionsDialog *optionsDialog; // Options (configuration) window bool firstRun; bool useOwnColorTheme; bool playing; int difficultyLevel; int numQuestions; int numPlayers; int currentPlayer; QStringList playerNames; int maxTime; // depends on difficulty int warningTime; int dangerTime; int pieceDuration; int questionType; int correctAnswer; // For the "playlist" loader QStringList directoryFiles; int currentMusicFile; QString musicDirectory; QStringList musicFiles[3]; QString dataDirectory; // For statistics QList goodAnswers; QList badAnswers; QList timedOutAnswers; QList score; // Widget for the "type-the-answer" mode AnswerBox *answerBox; // Ranking window Ranking *ranking; QTimer *rankingTimer; }; #endif // AURALWINDOW_H auralquiz-v0.8.1-src/src/answerbox.h000664 000764 000764 00000002432 11676734774 017103 0ustar00janjan000000 000000 /* * This file is part of Auralquiz * Copyright 2011-2012 JanKusanagi * * 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 2 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, write to the * Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA . */ #ifndef ANSWERBOX_H #define ANSWERBOX_H #include #include #include #include class AnswerBox : public QLineEdit { Q_OBJECT public: AnswerBox(); ~AnswerBox(); QString normalizeString(QString original); void setAnswer(QString newAnswer); public slots: void validateAnswer(); signals: void answered(bool correct); private: QString correctAnswer; }; #endif // ANSWERBOX_H auralquiz-v0.8.1-src/src/auralwindow.cpp000644 000764 000764 00000141716 11741611501 017740 0ustar00janjan000000 000000 /* * This file is part of Auralquiz * Copyright 2011-2012 JanKusanagi * * 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 2 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, write to the * Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA . */ #include "auralwindow.h" /***************************************************************************************** * * Constructor */ AuralWindow::AuralWindow(QWidget *parent) : QWidget(parent) { QSettings settings; this->setWindowTitle("Auralquiz"); this->setWindowIcon(QIcon(":/icon/auralquiz.png")); this->resize(settings.value("size", QSize(800, 540)).toSize()); this->firstRun = settings.value("firstRun", true).toBool(); if (firstRun) { qDebug() << "This is the first run"; QMessageBox::about(this, "Auralquiz - " + tr("First usage"), tr("This seems to be the first time you use Auralquiz.\n" "Before playing, your music will be analyzed.\n" "If needed, you should click the Options button " "and select the folder where your " "Ogg, FLAC and MP3 files are stored.\n\n" "This folder, and sub-folders will be scanned " "so Auralquiz can generate questions and answers " "about your music.\n" "\n" "You need files correctly tagged in order for the game to work correctly.\n" "\n" "The scan can take some time, and the program " "will not be responsive until it is complete. " "Please be patient.")); } useOwnColorTheme = settings.value("useOwnColorTheme", false).toBool(); if (useOwnColorTheme) { qDebug() << "Using own color theme"; } else { qDebug() << "Using system colors"; } musicDirectory = settings.value("musicDirectory", QDesktopServices::storageLocation(QDesktopServices::MusicLocation)).toString(); if (!musicDirectory.endsWith("/")) { // Adding final "/" if it's not present in chosen path musicDirectory.append("/"); } qDebug() << "Music directory:" << this->musicDirectory; // get data directory path this->dataDirectory = QDesktopServices::storageLocation(QDesktopServices::DataLocation); qDebug() << "Data directory:" << this->dataDirectory; // Create data directory if needed, to store music info later... QDir dataDir; if (!dataDir.exists(this->dataDirectory)) { qDebug() << "Data directory did not exist. Creating..."; if (dataDir.mkpath(this->dataDirectory)) { qDebug() << this->dataDirectory << "directory created successfully!"; } else { qDebug() << this->dataDirectory << "directory could NOT be created"; } } difficultyLevel = settings.value("difficultyLevel", 2).toInt(); // normal(2) by default numQuestions = settings.value("numQuestions", 25).toInt(); // 25 questions by default numPlayers = settings.value("numPlayers", 1).toInt(); // 1 player by default qDebug() << "Phonon version:" << Phonon::phononVersion(); qDebug() << "Backend::audioEffects:" << Phonon::BackendCapabilities::availableAudioEffects(); //qDebug() << "Backend::mimeTypes:" << Phonon::BackendCapabilities::availableMimeTypes(); //qDebug() << "Backend::audioDevices:" << Phonon::BackendCapabilities::availableAudioOutputDevices(); playing = false; mainLayout = new QVBoxLayout(this); initWelcomeScreen(); initPlayingScreen(); this->playerNames.clear(); playerNames = settings.value("playerNames", QStringList() << "1" << "2" // overriden << "3" << "4" // in OptionsDialog << "5" << "6" << "7" << "8").toStringList(); this->score.clear(); // Clear list of players' scores, etc, and set all to 0 this->goodAnswers.clear(); this->badAnswers.clear(); this->timedOutAnswers.clear(); for (int counter = 0; counter != MAXPLAYERS; ++counter) { score << 0; goodAnswers << 0; badAnswers << 0; timedOutAnswers << 0; } this->setLayout(mainLayout); postInitTimer = new QTimer(this); postInitTimer->setSingleShot(true); postInitTimer->setInterval(500); connect(postInitTimer, SIGNAL(timeout()), this, SLOT(loadSongList())); postInitTimer->start(); // Call loadSongList() from the timer, to avoid the // first-run analyzing all songs without visible window // Timer used to show the Ranking window after a moment rankingTimer = new QTimer(this); // TEMPORARY ranking tests - START /* this->goodAnswers.clear(); goodAnswers << 3 << 17 << 3 << 4 << 5 << 6 << 8 << 8; this->badAnswers.clear(); badAnswers << 11 << 22 << 33 << 44 << 55 << 66 << 77 << 88; this->timedOutAnswers.clear(); timedOutAnswers << 111 << 222 << 333 << 444 << 555 << 666 << 777 << 888; this->score.clear(); score << goodAnswers[0]*123 << goodAnswers[1]*123 << goodAnswers[2]*123 << goodAnswers[3]*123 << goodAnswers[4]*123 << goodAnswers[5]*123 << goodAnswers[6]*123 << goodAnswers[7]*123; qDebug() << "Testing scores:" << score; Ranking *rankingTest; rankingTest = new Ranking(this->score.length(), this->playerNames, this->score, this->goodAnswers, this->badAnswers, this->timedOutAnswers); rankingTest->show(); qDebug() << "test ranking created and shown"; */ // TEMPORARY ranking tests - END } /********************************************************************************* * * Destructor */ AuralWindow::~AuralWindow() { qDebug() << "AuralWindow destroyed"; } /********************************************************************************* * * Store app config upon exit */ void AuralWindow::closeEvent(QCloseEvent *event) { QSettings settings; settings.setValue("firstRun", false); settings.setValue("size", this->size()); settings.setValue("useOwnColorTheme", this->useOwnColorTheme); settings.setValue("musicDirectory", this->musicDirectory); settings.setValue("numQuestions", this->numQuestions); settings.setValue("difficultyLevel", this->difficultyLevel); settings.setValue("numPlayers", this->numPlayers); settings.setValue("playerNames", this->playerNames); qDebug("closeEvent: config saved"); event->accept(); } /******************************************************************************* * * Shuffle song list */ void AuralWindow::shuffleMusicFiles() { uint randomSeed; randomSeed = (QTime::currentTime().hour()) + (QTime::currentTime().minute() * 4) + (QTime::currentTime().second() * 5) + (QTime::currentTime().msec() * 6); randomSeed *= 8; randomSeed += qrand() % (randomSeed / (QTime::currentTime().second()+1)); qsrand(randomSeed); // ensure decent randomness based on current time int newPosition; for (int counter=0; counter != musicFiles[0].length(); ++counter) { newPosition = qrand() % musicFiles[0].length(); musicFiles[0].swap(0, newPosition); // filename musicFiles[1].swap(0, newPosition); // artist musicFiles[2].swap(0, newPosition); // title } qDebug() << "Music Files shuffled. randomSeed:" << randomSeed; } /* * Update statistics panel */ void AuralWindow::updateStatistics() { this->statisticsLabel->setText("\n" + tr("Good: %1").arg(this->goodAnswers[currentPlayer]) + "\n\n" + tr("Bad: %2").arg(this->badAnswers[currentPlayer]) + "\n\n" + tr("Timed out: %3").arg(this->timedOutAnswers[currentPlayer]) + "\n"); } /***************************************************************************************** * * Set up the welcome screen, with the logo and main menu */ void AuralWindow::initWelcomeScreen() { qDebug() << "Init welcome screen"; welcomeWidget = new QWidget(); welcomeLayout = new QVBoxLayout(); welcomeLayout->setAlignment(Qt::AlignHCenter); logoLabel = new QLabel(this); logoLabel->setPixmap(QPixmap(":/images/logo.png")); optionsDialog = new OptionsDialog(); startGameButton = new QPushButton(QIcon::fromTheme("media-playback-start"), "\n" + tr("&Start game") + "\n"); connect(startGameButton, SIGNAL(clicked()), optionsDialog, SLOT(showPlayMode())); startGameButton->setDisabled(true); connect(optionsDialog, SIGNAL(optionsChanged(bool,QString,bool,int,int,int,QStringList,bool)), this, SLOT(updateConfig(bool,QString,bool,int,int,int,QStringList,bool))); configureButton = new QPushButton(QIcon::fromTheme("configure"), tr("&Options")); connect(configureButton, SIGNAL(clicked()), optionsDialog, SLOT(showConfigMode())); aboutButton = new QPushButton(QIcon::fromTheme("help-about"), tr("&About...")); connect(aboutButton, SIGNAL(clicked()), this, SLOT(showAbout())); quitButton = new QPushButton(QIcon::fromTheme("application-exit"), tr("&Quit")); quitButton->setShortcut(QKeySequence::Quit); connect(quitButton, SIGNAL(clicked()), this, SLOT(close())); welcomeLayout->addWidget(logoLabel); welcomeLayout->addSpacing(16); welcomeLayout->addWidget(startGameButton); welcomeLayout->addSpacing(8); welcomeLayout->addWidget(configureButton); welcomeLayout->addWidget(aboutButton); welcomeLayout->addWidget(quitButton); welcomeLayout->addSpacing(16); welcomeWidget->setLayout(welcomeLayout); mainLayout->addWidget(welcomeWidget); } /***************************************************************************************** * * Set up the playing screen, with progress bar, time bar, score, etc. */ void AuralWindow::initPlayingScreen() { qDebug() << "Init playing screen"; playingWidget = new QWidget(); playingLayout = new QVBoxLayout(); playingLayout->setAlignment(Qt::AlignRight); playingTopLayout = new QVBoxLayout(); playingMiddleLayout = new QHBoxLayout(); statisticsLayout = new QVBoxLayout(); answersLayout = new QVBoxLayout(); playingBottomLayout = new QHBoxLayout(); QFont playerFont; playerFont = QFont(); playerFont.setPointSize(12); playerFont.setBold(true); playerNameLabel = new QLabel(":: PLAYER ::"); playerNameLabel->setAlignment(Qt::AlignRight | Qt::AlignTop); playerNameLabel->setFont(playerFont); //playerNameLabel->setFrameStyle(QFrame::Raised | QFrame::StyledPanel); QFont questionFont; questionFont = QFont(); questionFont.setPointSize(28); questionFont.setBold(true); questionLabel = new QLabel(":: QUESTION ::"); questionLabel->setAlignment(Qt::AlignCenter); questionLabel->setFont(questionFont); questionLabel->setFrameStyle(QFrame::Raised | QFrame::StyledPanel); QFont infoFont; infoFont = QFont(); infoFont.setPointSize(11); infoFont.setBold(true); infoFont.setItalic(true); infoLabel = new QLabel(":: INFO ::"); infoLabel->setAlignment(Qt::AlignCenter); infoLabel->setFont(infoFont); gameTimer = new QTimer(this); gameTimer->setInterval(100); // every 100ms, so it moves fast connect(gameTimer, SIGNAL(timeout()), this, SLOT(timerTick())); // This will call newQuestion preQuestionTimer = new QTimer(this); preQuestionTimer->setSingleShot(true); //preQuestionTimer->setInterval(3000); // Now changed in updateConfig() connect(preQuestionTimer, SIGNAL(timeout()), this, SLOT(newQuestion())); // This will call preQuestion postQuestionTimer = new QTimer(this); postQuestionTimer->setSingleShot(true); postQuestionTimer->setInterval(1500); // 1,5 seconds connect(postQuestionTimer, SIGNAL(timeout()), this, SLOT(preQuestion())); timeBar = new QProgressBar(); timeBar->setOrientation(Qt::Vertical); timeBar->setFormat(tr("Time")); // "%v seconds" // timeBar's range() and value() will be set upon game start, on toggleScreen() timeBar->setToolTip(tr("Remaining time to answer this question")); gameProgressBar = new QProgressBar(); gameProgressBar->setFormat(tr("%v out of %m questions - %p%")); // gameProgressBar's range() and value() will be set upon game start, on toggleScreen() gameProgressBar->setToolTip(tr("How many questions you've answered")); gameScoreLabel = new QLabel(tr("Score")); gameScoreLabel->setAlignment(Qt::AlignRight | Qt::AlignVCenter); gameScore = new QLCDNumber(5); gameScore->setSegmentStyle(QLCDNumber::Flat); gameScore->display(0); gameScore->setToolTip(tr("Your current score")); endGameButton = new QPushButton(QIcon::fromTheme("media-playback-stop"), tr("&End game")); connect(endGameButton, SIGNAL(clicked()), this, SLOT(toggleScreen())); playingTopLayout->addWidget(playerNameLabel); playingTopLayout->addWidget(questionLabel); playingTopLayout->addWidget(infoLabel); aniNoteLabel = new QLabel(); QMovie *aniNoteMovie = new QMovie(":/images/aninote.gif"); aniNoteLabel->setMovie(aniNoteMovie); aniNoteLabel->setAlignment(Qt::AlignHCenter); statisticsLayout->addWidget(aniNoteLabel); statisticsLayout->addSpacing(12); statisticsLabel = new QLabel("STATS"); statisticsLabel->setAlignment(Qt::AlignVCenter | Qt::AlignLeft); statisticsLabel->setFrameStyle(QFrame::StyledPanel | QFrame::Sunken); // QFrame::Box statisticsBoxLayout = new QVBoxLayout(); statisticsBoxLayout->addWidget(statisticsLabel); statisticsBox = new QGroupBox(tr("Statistics")); statisticsBox->setLayout(statisticsBoxLayout); statisticsBox->setMinimumWidth(190); // FIXME: don't hardcode statisticsBox->setMaximumWidth(190); statisticsLayout->addWidget(statisticsBox); /* * Add the 4 answer buttons, and their font */ answerButton[0] = new QPushButton(QIcon::fromTheme("arrow-right"), "ANSWER 1 ----------------"); connect(answerButton[0], SIGNAL(clicked()), this, SLOT(answer1())); answersLayout->addWidget(answerButton[0]); answersLayout->addSpacing(8); answerButton[1] = new QPushButton(QIcon::fromTheme("arrow-right"), "ANSWER 2 ----------------"); connect(answerButton[1], SIGNAL(clicked()), this, SLOT(answer2())); answersLayout->addWidget(answerButton[1]); answersLayout->addSpacing(8); answerButton[2] = new QPushButton(QIcon::fromTheme("arrow-right"), "ANSWER 3 ----------------"); connect(answerButton[2], SIGNAL(clicked()), this, SLOT(answer3())); answersLayout->addWidget(answerButton[2]); answersLayout->addSpacing(8); answerButton[3] = new QPushButton(QIcon::fromTheme("arrow-right"), "ANSWER 4 ----------------"); connect(answerButton[3], SIGNAL(clicked()), this, SLOT(answer4())); answersLayout->addWidget(answerButton[3]); QFont buttonFont; buttonFont = QFont(); buttonFont.setPointSize(13); buttonFont.setBold(true); // set font and minimum height in all 4 buttons for (int counter = 0; counter != 4; ++counter) { answerButton[counter]->setFont(buttonFont); // Set a minimum width, so it's ok for most titles/names answerButton[counter]->setMinimumWidth(512); // Make buttons use all space available answerButton[counter]->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding); } // Add the AnswerBox, used in the highest difficulty mode, type-the-answer answerBox = new AnswerBox(); answerBox->setFont(buttonFont); answerBox->setMinimumWidth(512); connect(answerBox, SIGNAL(answered(bool)), this, SLOT(answerFromAnswerBox(bool))); answersLayout->addWidget(answerBox); playingMiddleLayout->addLayout(statisticsLayout); playingMiddleLayout->addSpacing(16); playingMiddleLayout->addLayout(answersLayout); playingMiddleLayout->addSpacing(16); playingMiddleLayout->addWidget(timeBar); playingBottomLayout->addWidget(gameProgressBar); playingBottomLayout->addSpacing(32); playingBottomLayout->addWidget(gameScoreLabel); playingBottomLayout->addSpacing(16); playingBottomLayout->addWidget(gameScore); playingLayout->addLayout(playingTopLayout); playingLayout->addSpacing(12); playingLayout->addLayout(playingMiddleLayout); playingLayout->addSpacing(12); playingLayout->addLayout(playingBottomLayout); playingLayout->addSpacing(32); playingLayout->addWidget(endGameButton); playingWidget->setLayout(playingLayout); mainLayout->addWidget(playingWidget); if (useOwnColorTheme) { this->setThemedColors(); } musicPlayer = Phonon::createPlayer(Phonon::MusicCategory, Phonon::MediaSource()); qDebug() << "Phonon::createPlayer()->isValid()? " << musicPlayer->isValid(); if (!musicPlayer->isValid()) { QMessageBox::warning(this, tr("Sound system error"), tr("There seems to be a problem with your sound system.")); } connect(musicPlayer, SIGNAL(stateChanged(Phonon::State,Phonon::State)), this, SLOT(playerStateChanged(Phonon::State,Phonon::State))); playingWidget->hide(); } /* * Set styles to app-specific, or set them empty for user/system-defined */ void AuralWindow::setThemedColors() /* everything here is quite temporary*/ { // set transparency this->setWindowOpacity(0.98); // set light-blue style to the program in general this->setStyleSheet("background: lightblue;" "color: qlineargradient(spread:pad, x1:0, y1:0, x2:3, y2:2," "stop:0.0 rgba(10, 10, 120, 255)," "stop:0.5 rgba(20, 190, 20, 255)," "stop:1.0 rgba(120, 10, 10, 255) );" ""); // set colors on answer buttons answerButton[0]->setStyleSheet("background: #20DD20; color: darkblue"); answerButton[1]->setStyleSheet("background: #20CC20; color: darkblue"); answerButton[2]->setStyleSheet("background: #20BB20; color: darkblue"); answerButton[3]->setStyleSheet("background: #20AA20; color: darkblue"); // set color of LCD score indicator gameScore->setStyleSheet("color: darkBlue"); statisticsLabel->setStyleSheet("color: darkred"); } /************************************************************************/ /* * Load music collection info from files created in previous scan */ void AuralWindow::loadSongList() { qDebug() << "loadSongList()"; QFile cachedMetaData0(this->dataDirectory + "/musicFiles0.aq"); cachedMetaData0.open(QIODevice::ReadOnly); QFile cachedMetaData1(this->dataDirectory + "/musicFiles1.aq"); cachedMetaData1.open(QIODevice::ReadOnly); QFile cachedMetaData2(this->dataDirectory + "/musicFiles2.aq"); cachedMetaData2.open(QIODevice::ReadOnly); if (!cachedMetaData0.isReadable() || !cachedMetaData1.isReadable() || !cachedMetaData2.isReadable()) { cachedMetaData0.close(); cachedMetaData1.close(); cachedMetaData2.close(); qDebug() << "Couldn't load some of the cached metadata files; creating song list"; this->createSongList(); return; } this->musicFiles[0].clear(); this->musicFiles[1].clear(); this->musicFiles[2].clear(); /* * FIXME: PLENTY OF ERROR CONTROL MISSING HERE */ QString fileName; QString artistName; QString songTitle; qDebug() << "Loading cached metadata from files"; while (!cachedMetaData0.atEnd()) { // FIXME: separate this mess (avoids encoding problems) fileName = QString::fromUtf8(cachedMetaData0.readLine(1024).trimmed().data()); musicFiles[0].append(fileName); // FIXME: assuming Utf8 in artist and title tags, for now artistName = QString::fromUtf8(cachedMetaData1.readLine(1024).trimmed().data()); musicFiles[1].append(artistName); songTitle = QString::fromUtf8(cachedMetaData2.readLine(1024).trimmed().data()); musicFiles[2].append(songTitle); } cachedMetaData0.close(); cachedMetaData1.close(); cachedMetaData2.close(); this->startGameButton->setEnabled(true); this->startGameButton->setFocus(); qDebug() << "loadSongList() done"; } /* * Analyze all songs in given directory, get the metadata and store it */ void AuralWindow::createSongList() { startGameButton->setDisabled(true); startGameButton->setText(tr("Analyzing music. Please wait")); qDebug() << "Creating song list..."; this->musicFiles[0].clear(); // make file-list empty this->musicFiles[1].clear(); // make artists-list empty this->musicFiles[2].clear(); // make titles-list empty directoryFiles = QStringList(); QDirIterator dirList(QDir(this->musicDirectory, "*.mp3 *.ogg *.flac", QDir::NoSort, QDir::Files), QDirIterator::Subdirectories | QDirIterator::FollowSymlinks); while (dirList.hasNext()) { directoryFiles.append(dirList.next()); //qDebug() << directoryFiles.last(); } if (directoryFiles.length() == 0) { qDebug() << "There are no files!"; QMessageBox::critical(this, tr("There is no music!"), tr("There are no valid music files" " in your selected music directory.\n" "Please, select another directory containing " "Ogg, FLAC or MP3 files, and try again.")); this->startGameButton->setText(tr("Please choose another music folder")); return; } // Start analyzer loop int validFiles = 0; int totalFiles = directoryFiles.length(); QProgressDialog analyzerProgressDialog(tr("Analyzing %1 files\nunder %2", "%1 is a number, %2 is a folder") .arg(totalFiles).arg(musicDirectory), tr("Cancel analysis"), 0, totalFiles, this); analyzerProgressDialog.setWindowTitle("Auralquiz - " + tr("Analyzing your music...")); for (currentMusicFile = 0; currentMusicFile != totalFiles; ++currentMusicFile) { qDebug() << "currentMusicFile:" << currentMusicFile+1 << "of" << totalFiles; qDebug() << "filename:" << directoryFiles.at(currentMusicFile); QString artistTag; QString titleTag; TagLib::FileRef tagFile(directoryFiles.at(currentMusicFile).toUtf8()); if (!tagFile.isNull()) { //artistTag = tagFile.tag()->artist().toCString(); artistTag = QString::fromStdWString(tagFile.tag()->artist().toWString()); //titleTag = tagFile.tag()->title().toCString(); titleTag = QString::fromStdWString(tagFile.tag()->title().toWString()); qDebug() << artistTag << titleTag; qDebug() << tagFile.audioProperties()->length(); } else { qDebug() << "-- tagFile error:" << directoryFiles.at(currentMusicFile).toUtf8(); qDebug() << "-- tagFile name - " << tagFile.file()->name(); sleep(1); } if (!artistTag.isEmpty() && !titleTag.isEmpty()) { qDebug() << "Has artist AND title, OK ->" << artistTag << titleTag; this->musicFiles[0].append(directoryFiles.at(currentMusicFile)); this->musicFiles[1].append(artistTag); this->musicFiles[2].append(titleTag); ++validFiles; } else { qDebug() << "This file doesn't seem to have metadata, or an error related occurred"; } analyzerProgressDialog.setValue(currentMusicFile); // update progressbar if (analyzerProgressDialog.wasCanceled()) { qDebug() << "createSongList(): analysis cancelled by button"; musicFiles[0].clear(); musicFiles[1].clear(); musicFiles[2].clear(); //this->startGameButton->setText(tr("Please reload music info")); return; // you sure? } } // end analyzer loop // We're done scanning qDebug() << "\n\n---------------- SCAN COMPLETE -------"; //memory required for the lists? qDebug() << "memory used, about: "<< musicFiles[0].length() * 40 * 3 << "bytes"; qDebug() << "Storing data in:" << this->dataDirectory; qDebug() << "Valid files:" << validFiles; if (validFiles < 6) // If not enough files { qDebug() << "ERROR: Not enough valid files (i.e. no metadata in them)"; // FIXME: tmp message in disabled button this->startGameButton->setText(tr("Please choose another music folder")); return; } // Store info about the scanned music files QFile cachedMetadata0(this->dataDirectory + "/musicFiles0.aq"); cachedMetadata0.open(QIODevice::WriteOnly); QString cachedMetadata0Item; QFile cachedMetadata1(this->dataDirectory + "/musicFiles1.aq"); cachedMetadata1.open(QIODevice::WriteOnly); QString cachedMetadata1Item; QFile cachedMetadata2(this->dataDirectory + "/musicFiles2.aq"); cachedMetadata2.open(QIODevice::WriteOnly); QString cachedMetadata2Item; qDebug() << "datafiles created"; for (int counter = 0; counter < this->musicFiles[0].length(); ++counter) { // filenames cachedMetadata0Item = musicFiles[0].at(counter); cachedMetadata0Item.append("\n"); cachedMetadata0.write(cachedMetadata0Item.toUtf8()); // FIXME: encoding problems with tags // artists cachedMetadata1Item = musicFiles[1].at(counter); cachedMetadata1Item.append("\n"); cachedMetadata1.write(cachedMetadata1Item.toUtf8()); // titles cachedMetadata2Item = musicFiles[2].at(counter); cachedMetadata2Item.append("\n"); cachedMetadata2.write(cachedMetadata2Item.toUtf8()); } cachedMetadata0.close(); cachedMetadata1.close(); cachedMetadata2.close(); qDebug() << "Metadata stored in .aq files"; this->startGameButton->setEnabled(true); // songlist is ready, allow starting game this->startGameButton->setText("\n" + tr("&Start game") + "\n"); this->startGameButton->setFocus(); qDebug() << "start button re-enabled and with focus"; } // Used from newQuestion() void AuralWindow::playerStateChanged(Phonon::State newState, Phonon::State oldState) { qDebug() << "playerStateChanged() (5 means error) -> " << oldState << ">" << newState; if (oldState == Phonon::LoadingState && newState == Phonon::StoppedState) { this->nextSongLoaded(); } if (newState == Phonon::PausedState) { qDebug() << "PausedState"; } if (musicPlayer->errorType() != 0) // if some error { qDebug() << "playerStateChanged(), some error!! State:" << newState; qDebug() << "Error string and type:" << musicPlayer->errorString() << musicPlayer->errorType(); QMessageBox::warning(this, tr("Error playing sound"), tr("An error occurred while playing sound.\n" "The error message was: %1\n\n" "Maybe your Phonon-backend does not have support for the MP3 file format.").arg(musicPlayer->errorString())); } } /******************************************************************************/ /* * Decrease time left to guess song. Called by gameTimer */ void AuralWindow::timerTick() { if (timeBar->value() == this->maxTime-1) // Just once upon start { // Seek to a random part of the music file qint64 seekTime = 5000; // Start at least at 00:05 // add random ms avoiding last 100 sec, resulting in range 00:05 -> END -01:35 seekTime += qrand() % (musicPlayer->totalTime() - 100000); qDebug() << "Seeking to:" << seekTime / 1000 << "sec / Seekable:" << musicPlayer->isSeekable() << "/ Total time:" << musicPlayer->totalTime() / 1000; musicPlayer->play(); //musicPlayer->pause(); /* * play() BEFORE seek() * because gstreamer-backend seeks to 0 again on play() apparently... */ musicPlayer->seek(seekTime); // TMPFIX, add error control //musicPlayer->play(); } timeBar->setValue(timeBar->value() - 1); // Stop music earlier than the time limit to answer the question if (timeBar->value() == this->pieceDuration) { this->musicPlayer->stop(); this->aniNoteLabel->movie()->stop(); // TMPFIX qDebug() << "totalTime, again:" << musicPlayer->totalTime() / 1000; // TMP tests } // Clear colored info label (good/bad), soon after new question if (timeBar->value() == this->maxTime - 10) // very very TMPFIX { this->infoLabel->setStyleSheet(""); this->infoLabel->setText(""); } // if remaining time is low, change timeBar colors if (timeBar->value() == this->warningTime) // warning level { timeBar->setStyleSheet("background-color: lightYellow"); // orange? } if (timeBar->value() == this->dangerTime) // danger level { timeBar->setStyleSheet("background-color: red"); } // time to answer ended if (timeBar->value() == 0) { qDebug() << "Time's up!"; musicPlayer->stop(); this->infoLabel->setStyleSheet("background: qradialgradient(spread:pad, cx:0.5, cy:0.5, radius:0.5, fx:0.5, fy:0.5, stop:0 rgba(64, 0, 0, 255) stop:1 rgba(128, 0, 0, 255)); color: white"); this->infoLabel->setText(tr("Time's up!!") + " " + tr("It was:") + " " + musicFiles[questionType].at(currentMusicFile)); answerQuestion(0); // 0 means it's timeout, not a button } } /* * Update configuration from optionsDialog SIGNAL */ void AuralWindow::updateConfig(bool startGame, QString directory, bool forceReload, int difficulty, int questions, int players, QStringList playerNameList, bool ownColors) { bool mustReload = false; if (this->musicDirectory != directory) { qDebug() << "musicDirectory has changed, mustReload = true"; qDebug() << "musicDirectory:" << musicDirectory << "; directory:" << directory; mustReload = true; // if music directory's been changed, reload collection info } this->musicDirectory = directory; this->difficultyLevel = difficulty; this->numQuestions = questions; this->numPlayers = players; this->playerNames.clear(); playerNames = playerNameList; this->useOwnColorTheme = ownColors; qDebug() << "Updated config with: " << startGame << directory << forceReload << difficulty << questions << players << playerNameList << ownColors; // reload music collection information here if needed if (mustReload || forceReload) { qDebug() << "Reloading music collection information"; this->createSongList(); } // if optionsDialog was called in PlayMode, start game now if (startGame) { if (numPlayers > 1) // in multiplayer, give extra time to prepare { this->preQuestionTimer->setInterval(2000); // 2 sec // FIXME: make configurable? } else { this->preQuestionTimer->setInterval(500); // half a sec } this->toggleScreen(); // Start game! } } /* * About... box */ void AuralWindow::showAbout() { QMessageBox::about(this, tr("About Auralquiz"), "Auralquiz v0.8.1" "

(C) 2011-2012 JanKusanagi" "

http://jancoding.wordpress.com/auralquiz" "

" "

" + tr("Auralquiz loads all your music from a specified folder and asks " "questions about it, playing a short piece of each music file as clue.") + "

" "

" + tr("Czech translation by Pavel Fric.") + "

" + tr("Thanks to the betatesters, Jorchube, Coyote, Panko and Eomer for their help.") + "

" + tr("Also thanks to all the packagers out there who built Auralquiz for different distributions.") + "

" + tr("Main screen image based on Oxygen icons: http://www.oxygen-icons.org/ (LGPL licensed)") + "

"); } /***************************************************************************************** * * Switch between the welcome screen and the playing screen, in either way */ void AuralWindow::toggleScreen() { if (!playing) { // START game! qDebug() << "Starting game"; welcomeWidget->hide(); shuffleMusicFiles(); // Reset everything... currentMusicFile = 0; this->gameProgressBar->setRange(0, this->numQuestions); this->gameProgressBar->setValue(0); this->gameScore->display(0); // reset score maxTime = 500 / (difficultyLevel + 1); // In millisec/10 if (difficultyLevel == 5) { maxTime += 100; // Extra time in Hardcore/type-the-answer mode! } warningTime = maxTime / 4; dangerTime = maxTime / 8; //this->pieceDuration = maxTime - (maxTime / (difficultyLevel+1)); this->pieceDuration = maxTime - ( 90 / (difficultyLevel+1) ); // +1 bc diflev can be 0 if (difficultyLevel == 5) { pieceDuration -= 5; // Extra duration in Hardcore level! } qDebug() << "Max/Warning/Danger times:" << maxTime/6 << warningTime/6 << dangerTime/6 << "secs"; qDebug() << "Piece duration:" << (maxTime - pieceDuration) / 6 << "secs"; timeBar->setRange(0, this->maxTime); timeBar->setValue(this->maxTime); if (difficultyLevel < 5) // Regular mode: show buttons, hide AnswerBox { answerButton[0]->show(); answerButton[1]->show(); answerButton[2]->show(); answerButton[3]->show(); answerBox->hide(); } else // Type-the-answer mode: hide buttons and show AnswerBox { answerBox->show(); answerButton[0]->hide(); answerButton[1]->hide(); answerButton[2]->hide(); answerButton[3]->hide(); } if (numPlayers > 1) { this->playerNameLabel->show(); } else { this->playerNameLabel->hide(); } // Reset stats for all players for (int counter = 0; counter != numPlayers; ++counter) { this->score[counter] = 0; this->goodAnswers[counter] = 0; this->badAnswers[counter] = 0; this->timedOutAnswers[counter] = 0; } this->currentPlayer = 0; QStringList startStrings; // Randomly choose from a list of "get ready" strings startStrings << tr("Starting!") << tr("Let's go!") << tr("GO!!") << tr("Good luck!"); this->infoLabel->setStyleSheet("background: qradialgradient(spread:pad, cx:0.5, cy:0.5, radius:0.5, fx:0.5, fy:0.5, stop:0 rgba(0, 64, 64, 255) stop:1 rgba(0, 255, 255, 255)); color: white"); this->infoLabel->setText(startStrings.at(qrand() % startStrings.length())); playingWidget->show(); playing = true; this->updateStatistics(); newQuestion(); } else { // STOP game qDebug() << "Stopping game"; musicPlayer->stop(); // stop music, if any gameTimer->stop(); preQuestionTimer->stop(); // These 2 lines fix problems when clicking postQuestionTimer->stop(); // "End Game" right after answering // (Music in title screen) playingWidget->hide(); welcomeWidget->show(); playing = false; } } /************************************************************************************* * * Prepare a new question, its answers, and play the new song file */ void AuralWindow::newQuestion() { qDebug() << "new question"; timeBar->setValue(this->maxTime); timeBar->setStyleSheet(""); this->correctAnswer = (qrand() % 4) + 1; // 1, 2, 3, 4; 0 would mean TIMED UP //qDebug() << "correctAnswer:" << this->correctAnswer; questionType = (currentMusicFile & 1) + 1; // quite TMPFIX, odd=artist, even=title //qDebug() << "questionType: " << questionType; if (questionType == 1) { questionLabel->setText(tr("Who plays this song?")); } else { questionLabel->setText(tr("What's the title of this song?")); } // show current player name in multiplayer mode if (numPlayers > 1) { playerNameLabel->setText(tr("Player %1").arg(currentPlayer + 1) + " -- " + QString("%1\n").arg(playerNames.at(currentPlayer))); gameScore->display(score.at(currentPlayer)); } QString buttonTexts[4]; int answerCount = 0; // FIXME: These checks should be moved to the analyzer, in createSongList() int tries = 0; while (answerCount != 4) { buttonTexts[answerCount] = musicFiles[questionType] .at(qrand() % this->musicFiles[0].length()); //qDebug() << "answerCount" << answerCount; // If text in current button is NOT the correct answer (lowercase comparison!) if (buttonTexts[answerCount].toLower() != musicFiles[questionType].at(currentMusicFile).toLower()) { bool isGood = true; for (int previousAnswer = 0; previousAnswer != answerCount; ++previousAnswer) { // Compare strings in LOWERCASE (Metallica ~= metallica) if (buttonTexts[answerCount].toLower() != buttonTexts[previousAnswer].toLower()) { isGood = true; //qDebug() << "is GOOD" << previousAnswer; //qDebug() << "is GOOD" << buttonTexts[answerCount] << buttonTexts[previousAnswer]; } else { isGood = false; //qDebug() << "is NOT good; duplicated, break" << previousAnswer; //qDebug() << "is NOT good" << buttonTexts[answerCount] << buttonTexts[previousAnswer]; break; } } if (isGood) { // Set random artists/titles as labels on buttons answerButton[answerCount]->setText(buttonTexts[answerCount]); ++answerCount; tries = 0; } //qDebug() << "buttonTexts[answerCount]:" << buttonTexts[answerCount]; } ++tries; /* TMPFIX Temporary way of catching infinite loops if there are not enough different artists or titles */ if (tries > 50) { // FIXME: these checks should be done after createSongList() qDebug() << "Not enough different titles or artists to create question!"; answerCount = 4; // "break" } } // quite hacky, TMPFIX if (tries < 50) // if no problem with duplicates, meaning we have enough valid files { // Set correct artist/title on one button answerButton[correctAnswer-1]->setText(musicFiles[questionType].at(currentMusicFile)); // replace "&" by "&&" in buttons, so it doesn't turn into an accelerator // Also truncate if answer is too long for (int counter=0; counter != 4; ++counter) { QString fixedAnswer = answerButton[counter]->text(); fixedAnswer.replace(QRegExp("&"), "&&"); // fix non-accelerator fixedAnswer.truncate(64); // avoid wiiiiide buttons // FIXME 0.9: truncate position should be calculated, not hardcoded // For now, 64 seems sane answerButton[counter]->setText(fixedAnswer); } // Set answer for AnswerBox too answerBox->setAnswer(musicFiles[questionType].at(currentMusicFile)); musicPlayer->stop(); musicPlayer->clear(); // Stop playing file and clear queues musicPlayer->setCurrentSource(musicFiles[0].at(currentMusicFile)); qDebug() << this->musicPlayer->isSeekable(); // checks needed for gstreamer qDebug() << "newQuestion(): musicPlayer->setCurrentSource() done"; } else { this->toggleScreen(); // Recursive!! :P QMessageBox::critical(this, tr("Not enough music files"), tr("You don't have enough music files, " "or from enough different artists.\n" "You need music from at least 5 different artists " "to be able to generate questions.")); } } /* * Called from PlayerStateChanged() */ void AuralWindow::nextSongLoaded() { qDebug() << "(playerStateChanged) > nextSongLoaded()"; if (difficultyLevel < 5) { // Allow using 1~4 keys to answer answerButton[0]->setShortcut(Qt::Key_1); answerButton[1]->setShortcut(Qt::Key_2); answerButton[2]->setShortcut(Qt::Key_3); answerButton[3]->setShortcut(Qt::Key_4); // re-enable buttons this->answerButton[0]->setEnabled(true); this->answerButton[1]->setEnabled(true); this->answerButton[2]->setEnabled(true); this->answerButton[3]->setEnabled(true); } else { this->answerBox->setEnabled(true); this->answerBox->setFocus(); } //musicPlayer->play(); // put into PlayingState so seeking works later //musicPlayer->pause(); // Pause, so the user can't hear anything this->aniNoteLabel->movie()->start(); gameTimer->start(); // will call "timerTick()" } void AuralWindow::preQuestion() { if (this->gameProgressBar->value() < this->numQuestions) { // There are more questions! ++currentMusicFile; if (currentMusicFile == this->musicFiles[0].length()) { currentMusicFile = 0; qDebug() << "Not enough music files; back to 1st"; } this->updateStatistics(); infoLabel->setStyleSheet("background: qradialgradient(spread:pad, cx:0.5, cy:0.5, radius:0.5, fx:0.5, fy:0.5, stop:0 rgba(0, 0, 128, 255) stop:1 rgba(0, 128, 255, 127)); color: white"); if (numPlayers > 1) { infoLabel->setText(tr("Go, %1!").arg(playerNames.at(currentPlayer))); } else { infoLabel->setText(tr("Next!")); } preQuestionTimer->start(); // this will call newQuestion() } else { // No more questions! qDebug() << "End of questions"; // Show the ranking window ranking = new Ranking(numPlayers, playerNames, score, goodAnswers, badAnswers, timedOutAnswers); ranking->setWindowModality(Qt::ApplicationModal); connect(ranking, SIGNAL(closed()), this, SLOT(killRanking())); rankingTimer->setSingleShot(true); connect(rankingTimer, SIGNAL(timeout()), ranking, SLOT(show())); rankingTimer->start(2000); // Wait 2 seconds before showing the ranking this->infoLabel->setStyleSheet("background: qradialgradient(spread:pad, cx:0.5, cy:0.5, radius:0.5, fx:0.5, fy:0.5, stop:0 rgba(0, 0, 128, 255) stop:1 rgba(0, 128, 255, 255)); color: white"); this->infoLabel->setText(tr("All done!")); } } /************************************************************************************** * * Check if answer is correct, give score, and get new question */ void AuralWindow::answerQuestion(int numAnswer) { qDebug() << "Answered question with button" << numAnswer; this->answerButton[0]->setDisabled(true); this->answerButton[1]->setDisabled(true); this->answerButton[2]->setDisabled(true); this->answerButton[3]->setDisabled(true); this->answerBox->setDisabled(true); this->aniNoteLabel->movie()->stop(); musicPlayer->stop(); // stop music // This helps Phonon's stateChanged(), avoids silent songs gameTimer->stop(); int questionPoints; if (timeBar->value() != 0) { //questionPoints = (100 * difficultyLevel) + (timeBar->value() / 2); // OLD questionPoints = 50 * difficultyLevel+1; questionPoints += timeBar->value() / 2; questionPoints += 100; } else { questionPoints = 0; this->timedOutAnswers[currentPlayer]++; qDebug() << "Answered by timeout"; } if (questionPoints != 0) { if (numAnswer == correctAnswer) { QStringList rightAnswerStrings; rightAnswerStrings << tr("Correct!!") << tr("Yeah!") << tr("That's right!") << tr("Good!") << tr("Great!"); this->infoLabel->setStyleSheet("background: qradialgradient(spread:pad, cx:0.5, cy:0.5, radius:0.5, fx:0.5, fy:0.5, stop:0 rgba(0, 192, 0, 255) stop:1 rgba(0, 255, 0, 0)); color: white"); this->infoLabel->setText(rightAnswerStrings .at(qrand() % rightAnswerStrings.length()) + QString(" " + tr("+%1 points!")).arg(questionPoints)); // quite TMPFIX this->score[currentPlayer] += questionPoints; gameScore->display(score.at(currentPlayer)); this->goodAnswers[currentPlayer]++; qDebug() << "correct!!" << questionPoints; } else { QStringList wrongAnswerStrings; wrongAnswerStrings << tr("Wrong!") << tr("No!") << tr("That's not it.") << tr("Ooops!") << tr("FAIL!"); this->infoLabel->setStyleSheet("background: qradialgradient(spread:pad, cx:0.5, cy:0.5, radius:0.5, fx:0.5, fy:0.5, stop:0 rgba(192, 0, 0, 255) stop:1 rgba(255, 0, 0, 0)); color: white"); this->infoLabel->setText(wrongAnswerStrings .at(qrand() % wrongAnswerStrings.length()) + " " + tr("It was:") + " " + musicFiles[questionType].at(currentMusicFile)); // quite TMPFIX this->badAnswers[currentPlayer]++; qDebug() << "wrong!"; } } this->updateStatistics(); if (numPlayers > 1) { this->currentPlayer++; if (currentPlayer == numPlayers) { this->currentPlayer = 0; // back to first player qDebug() << "Next question, back to Player 1"; } } if (currentPlayer == 0) { // Always on single-player, and after all players answer, in multi gameProgressBar->setValue(gameProgressBar->value() + 1); } postQuestionTimer->start(); // will call preQuestion() } // These below... suck void AuralWindow::answer1() { answerQuestion(1); } void AuralWindow::answer2() { answerQuestion(2); } void AuralWindow::answer3() { answerQuestion(3); } void AuralWindow::answer4() { answerQuestion(4); } // This one doesn't suck, actually! void AuralWindow::answerFromAnswerBox(bool correct) { if (correct) { answerQuestion(this->correctAnswer); } else { answerQuestion(-1); // Answer incorrectly } } void AuralWindow::killRanking() { qDebug() << "deleting Ranking object"; ranking->deleteLater(); this->endGameButton->click(); } auralquiz-v0.8.1-src/src/optionsdialog.h000644 000764 000764 00000006254 11712574135 017732 0ustar00janjan000000 000000 /* * This file is part of Auralquiz * Copyright 2011-2012 JanKusanagi * * 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 2 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, write to the * Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA . */ #ifndef OPTIONSDIALOG_H #define OPTIONSDIALOG_H #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include class OptionsDialog : public QWidget { Q_OBJECT public: OptionsDialog(); ~OptionsDialog(); protected: void showEvent(QShowEvent *); void closeEvent(QCloseEvent *); public slots: void selectMusicDirectory(); void updateDifficultyName(int newValue); void saveOptions(); void saveAndReload(); void showConfigMode(); void showPlayMode(); signals: void optionsChanged(bool startGame, QString directory, bool forceReload, int difficulty, int questions, int players, QStringList playerNameList, bool ownColors); private: QVBoxLayout *mainLayout; QHBoxLayout *topLayout; QHBoxLayout *middleLayout; QVBoxLayout *difficultyLayout; QHBoxLayout *difficultyTopLayout; QGridLayout *rightSideLayout; QGridLayout *playerNamesLayout; QHBoxLayout *bottomLayout; QLabel *musicFromLabel; QLabel *currentMusicDirectoryLabel; QPushButton *selectMusicDirectoryButton; QPushButton *reloadMusicInfoButton; QLabel *difficultyEasy; QSlider *difficultyLevel; QLabel *difficultyHard; QLabel *difficultyName; QLabel *numQuestionsLabel; QSpinBox *numQuestions; QLabel *numPlayersLabel; QSpinBox *numPlayers; QStringList playerNames; QGroupBox *playerNamesGroup; QLabel *player1Number; QLabel *player2Number; QLabel *player3Number; QLabel *player4Number; QLabel *player5Number; QLabel *player6Number; QLabel *player7Number; QLabel *player8Number; QLineEdit *player1Name; QLineEdit *player2Name; QLineEdit *player3Name; QLineEdit *player4Name; QLineEdit *player5Name; QLineEdit *player6Name; QLineEdit *player7Name; QLineEdit *player8Name; QCheckBox *useOwnColors; QPushButton *saveButton; QPushButton *cancelButton; QString musicDirectory; bool reload; bool playMode; }; #endif // OPTIONSDIALOG_H auralquiz-v0.8.1-src/src/optionsdialog.cpp000644 000764 000764 00000032142 11712606114 020251 0ustar00janjan000000 000000 /* * This file is part of Auralquiz * Copyright 2011-2012 JanKusanagi * * 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 2 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, write to the * Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA . */ #include "optionsdialog.h" /* * Constructor, called on startup even if options dialog is never shown * */ OptionsDialog::OptionsDialog() { QSettings settings; this->setWindowTitle(tr("Game options")); this->setWindowIcon(QIcon::fromTheme("configure")); this->setWindowModality(Qt::ApplicationModal); this->resize(700, 380); playMode = false; this->musicDirectory = settings.value("musicDirectory", QDesktopServices::storageLocation(QDesktopServices::MusicLocation)).toString(); this->reload = false; // TOP layout topLayout = new QHBoxLayout(); musicFromLabel = new QLabel(tr("Using music from:") + " "); topLayout->addWidget(musicFromLabel); currentMusicDirectoryLabel = new QLabel(""); currentMusicDirectoryLabel->setText(this->musicDirectory); topLayout->addWidget(currentMusicDirectoryLabel); topLayout->addSpacing(32); selectMusicDirectoryButton = new QPushButton(QIcon::fromTheme("folder-sound"), tr("Select your &music folder...")); connect(selectMusicDirectoryButton, SIGNAL(clicked()), this, SLOT(selectMusicDirectory())); topLayout->addWidget(selectMusicDirectoryButton); // MIDDLE layout middleLayout = new QHBoxLayout(); // left side difficultyTopLayout = new QHBoxLayout(); //// difficulty sub-layout difficultyEasy = new QLabel(tr("Easier")); difficultyTopLayout->addWidget(difficultyEasy); difficultyLevel = new QSlider(Qt::Horizontal); difficultyLevel->setRange(0, 5); // 0 = very easy, 5 = hardcore difficultyLevel->setValue(settings.value("difficultyLevel", 2).toInt()); difficultyLevel->setTickInterval(1); // One tick mark for every difficulty level difficultyLevel->setTickPosition(QSlider::TicksBothSides); connect(difficultyLevel, SIGNAL(valueChanged(int)), this, SLOT(updateDifficultyName(int))); difficultyTopLayout->addWidget(difficultyLevel); difficultyHard = new QLabel(tr("Harder")); difficultyTopLayout->addWidget(difficultyHard); QFont difficultyFont; difficultyFont.setPointSize(14); difficultyFont.setBold(true); difficultyName = new QLabel(); difficultyName->setFont(difficultyFont); difficultyName->setAlignment(Qt::AlignCenter); difficultyLayout = new QVBoxLayout(); difficultyLayout->setAlignment(Qt::AlignCenter); difficultyLayout->addLayout(difficultyTopLayout); difficultyLayout->addWidget(difficultyName); middleLayout->addLayout(difficultyLayout); updateDifficultyName(this->difficultyLevel->value()); // update difficulty label initially middleLayout->addSpacing(32); // right side rightSideLayout = new QGridLayout(); numQuestionsLabel = new QLabel(tr("How many &questions?")); rightSideLayout->addWidget(numQuestionsLabel, 0, 0); numQuestions = new QSpinBox(); numQuestions->setRange(1, 99); numQuestions->setValue(settings.value("numQuestions", 25).toInt()); numQuestions->setSuffix(" " + tr("questions")); rightSideLayout->addWidget(numQuestions, 0, 1); numQuestionsLabel->setBuddy(this->numQuestions); numPlayersLabel = new QLabel(tr("How many &players?")); rightSideLayout->addWidget(numPlayersLabel, 1, 0); numPlayers = new QSpinBox(); numPlayers->setRange(1, 8); // up to 8 players numPlayers->setValue(settings.value(("numPlayers"), 1).toInt()); numPlayers->setSuffix(" " + tr("players")); rightSideLayout->addWidget(numPlayers, 1, 1); numPlayersLabel->setBuddy(this->numPlayers); useOwnColors = new QCheckBox(tr("Use own color theme")); useOwnColors->setChecked(settings.value("useOwnColorTheme", false).toBool()); rightSideLayout->addWidget(useOwnColors, 2, 0); middleLayout->addLayout(this->rightSideLayout); // PLAYER NAMES layout playerNamesLayout = new QGridLayout(); playerNames = settings.value("playerNames", QStringList() << "Prime" << "Jazz" << "Wheeljack" << "Skyfire" << "Megatron" << "Starscream" << "Soundwave" << "Astrotrain").toStringList(); player1Number = new QLabel(" 1"); player1Name = new QLineEdit(playerNames.at(0)); player2Number = new QLabel(" 2"); player2Name = new QLineEdit(playerNames.at(1)); player3Number = new QLabel(" 3"); player3Name = new QLineEdit(playerNames.at(2)); player4Number = new QLabel(" 4"); player4Name = new QLineEdit(playerNames.at(3)); player5Number = new QLabel(" 5"); player5Name = new QLineEdit(playerNames.at(4)); player6Number = new QLabel(" 6"); player6Name = new QLineEdit(playerNames.at(5)); player7Number = new QLabel(" 7"); player7Name = new QLineEdit(playerNames.at(6)); player8Number = new QLabel(" 8"); player8Name = new QLineEdit(playerNames.at(7)); playerNamesLayout->addWidget(player1Number, 2, 0); playerNamesLayout->addWidget(player1Name, 2, 1); playerNamesLayout->addWidget(player2Number, 2, 2); playerNamesLayout->addWidget(player2Name, 2, 3); playerNamesLayout->addWidget(player3Number, 3, 0); playerNamesLayout->addWidget(player3Name, 3, 1); playerNamesLayout->addWidget(player4Number, 3, 2); playerNamesLayout->addWidget(player4Name, 3, 3); playerNamesLayout->addWidget(player5Number, 4, 0); playerNamesLayout->addWidget(player5Name, 4, 1); playerNamesLayout->addWidget(player6Number, 4, 2); playerNamesLayout->addWidget(player6Name, 4, 3); playerNamesLayout->addWidget(player7Number, 5, 0); playerNamesLayout->addWidget(player7Name, 5, 1); playerNamesLayout->addWidget(player8Number, 5, 2); playerNamesLayout->addWidget(player8Name, 5, 3); playerNamesGroup = new QGroupBox(tr("Player names")); playerNamesGroup->setLayout(playerNamesLayout); // BOTTOM layout bottomLayout = new QHBoxLayout(); saveButton = new QPushButton("SAVE"); connect(saveButton, SIGNAL(clicked()), this, SLOT(saveOptions())); bottomLayout->addWidget(saveButton); reloadMusicInfoButton = new QPushButton(QIcon::fromTheme("view-refresh"), tr("Save and &reload music")); connect(reloadMusicInfoButton, SIGNAL(clicked()), this, SLOT(saveAndReload())); bottomLayout->addWidget(reloadMusicInfoButton); cancelButton = new QPushButton(QIcon::fromTheme("dialog-cancel"), tr("&Cancel")); connect(cancelButton, SIGNAL(clicked()), this, SLOT(close())); bottomLayout->addWidget(cancelButton); mainLayout = new QVBoxLayout(); mainLayout->addLayout(topLayout); mainLayout->addLayout(middleLayout); mainLayout->addWidget(playerNamesGroup); mainLayout->addLayout(bottomLayout); this->setLayout(mainLayout); qDebug() << "Options window created"; } OptionsDialog::~OptionsDialog() { qDebug() << "Options window destroyed"; } void OptionsDialog::showEvent(QShowEvent *event) { event->accept(); qDebug() << "Options window shown"; this->reload = false; // make forceReload false again // until Reload button is clicked } void OptionsDialog::closeEvent(QCloseEvent *event) { event->accept(); qDebug() << "Options dialog closed"; } /* * Open dialog to select directory where music is located * */ void OptionsDialog::selectMusicDirectory() { QString newMusicDir; newMusicDir = QFileDialog::getExistingDirectory(this, tr("Select where your music is located"), this->musicDirectory, QFileDialog::ShowDirsOnly); if (!newMusicDir.isEmpty()) // if user DID NOT cancel the "select directory" dialog { musicDirectory = newMusicDir; if (!musicDirectory.endsWith("/")) { // Adding final "/" if it's not present in chosen path musicDirectory.append("/"); } // update label indicating current path for music currentMusicDirectoryLabel->setText(this->musicDirectory); } } /* * Update the label with the description of the selected difficulty level * */ void OptionsDialog::updateDifficultyName(int newValue) { qDebug() << "new difficulty level:" << newValue; QStringList levels = QStringList(tr("Piece of cake")) << tr("Let's rock") << tr("Come get some") << tr("Damn I'm good") << tr("HARD!!") << tr("Hardcore! Type the answer"); this->difficultyName->setText("[ " + levels.at(newValue) + " ]"); if (newValue == 5) // Hardcore level { difficultyName->setToolTip(tr("In this level you'll have to type the answer.\n" "It's not too strict, so you don't have to worry about caps, commas and such.")); } else { difficultyName->setToolTip(tr("Is this level you'll have to click the correct button,\n" "or press the 1, 2, 3 and 4 keys in your keyboard.")); } } /* * Emit signal with new option values to AuralWindow * */ void OptionsDialog::saveOptions() { playerNames.clear(); playerNames << player1Name->text() << player2Name->text() << player3Name->text() << player4Name->text() << player5Name->text() << player6Name->text() << player7Name->text() << player8Name->text(); // If a player name from the list is empty, replace with number for (int counter=0; counter < playerNames.length(); ++counter) { if (playerNames.at(counter).isEmpty()) { playerNames[counter] = QString("[%1]").arg(counter+1); } } // FIXME: this IF code is duplicated 3 times if (!musicDirectory.endsWith("/")) { // Adding final "/" if it's not present in chosen path musicDirectory.append("/"); } emit optionsChanged(this->playMode, this->musicDirectory, this->reload, this->difficultyLevel->value(), this->numQuestions->value(), this->numPlayers->value(), this->playerNames, this->useOwnColors->isChecked()); qDebug() << "Options saved"; qDebug() << "playMode:" << this->playMode; this->close(); } void OptionsDialog::saveAndReload() { this->reload = true; qDebug() << "Save and reload music pressed"; saveOptions(); } /* * Show Options window in full configuration mode * Used from the "Options" button */ void OptionsDialog::showConfigMode() { playMode = false; this->musicFromLabel->show(); this->currentMusicDirectoryLabel->show(); this->selectMusicDirectoryButton->show(); this->reloadMusicInfoButton->show(); this->useOwnColors->show(); bottomLayout->setAlignment(Qt::AlignBottom | Qt::AlignRight); this->saveButton->setIcon(QIcon::fromTheme("document-save")); this->saveButton->setText(tr("&Save options")); this->saveButton->setMinimumSize(1, 1); this->cancelButton->show(); this->show(); } /* * Show Options window in a "light mode" * This will be used from Start Game button, to set players and difficulty only * (music config and theme options will be hidden) */ void OptionsDialog::showPlayMode() { playMode = true; this->musicFromLabel->hide(); this->currentMusicDirectoryLabel->hide(); this->selectMusicDirectoryButton->hide(); this->reloadMusicInfoButton->hide(); this->useOwnColors->hide(); bottomLayout->setAlignment(Qt::AlignBottom | Qt::AlignCenter); this->saveButton->setIcon(QIcon::fromTheme("media-playback-start")); this->saveButton->setText(tr("Start!")); this->saveButton->setShortcut(Qt::Key_Return); this->saveButton->setMinimumSize(240, 60); this->cancelButton->hide(); this->show(); } auralquiz-v0.8.1-src/src/answerbox.cpp000664 000764 000764 00000007022 11676735035 017425 0ustar00janjan000000 000000 /* * This file is part of Auralquiz * Copyright 2011-2012 JanKusanagi * * 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 2 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, write to the * Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA . */ #include "answerbox.h" // Constructor AnswerBox::AnswerBox() { this->setMinimumHeight(80); this->setAlignment(Qt::AlignCenter); this->setToolTip(tr("Type the answer here")); connect(this, SIGNAL(returnPressed()), this, SLOT(validateAnswer())); qDebug() << "AnswerBox created"; } // Destructor AnswerBox::~AnswerBox() { qDebug() << "AnswerBox destroyed"; } QString AnswerBox::normalizeString(QString original) { // remove "(" and ") original = original.remove(QRegExp("\\(|\\)")); // remove "," and "." original = original.remove(QRegExp(",|\\.")); // remove "-", "~", "*" and "/" original = original.remove(QRegExp("-|~|\\*|/")); // Turn "_" into " " original = original.replace(QRegExp("_"), " "); // remove apostrophes or accents used like apostrophes original = original.remove(QRegExp(QString::fromUtf8("'|`|´"))); // Make the string all lowercase original = original.toLower(); // Turn accented vowels into normal ones. original = original.replace(QRegExp(QString::fromUtf8("à|á|ä|â")), "a"); original = original.replace(QRegExp(QString::fromUtf8("è|é|ë|ê")), "e"); original = original.replace(QRegExp(QString::fromUtf8("ì|í|ï|î")), "i"); original = original.replace(QRegExp(QString::fromUtf8("ò|ó|ö|ô")), "o"); original = original.replace(QRegExp(QString::fromUtf8("ù|ú|ü|û")), "u"); // remove "!" original = original.remove(QRegExp("!")); // remove "?" original = original.remove(QRegExp("\\?")); // Turn "&" into "and" //original = original.replace(QRegExp("&"), " and "); // FIXME: and non-english? // Turn possible double-spaces into one space original = original.replace(QRegExp("\\s+"), " "); // Trim spaces original = original.trimmed(); return original; } void AnswerBox::setAnswer(QString newAnswer) { this->correctAnswer = this->normalizeString(newAnswer); this->clear(); // Erase current text in the box, if any } void AnswerBox::validateAnswer() { QString currentAnswer = this->text(); qDebug() << "Answered:" << currentAnswer; if (currentAnswer.length() == 0) // they pressed Enter with no text! { return; } // Clean the entered string: any extra spaces, caps, &... currentAnswer = this->normalizeString(currentAnswer); qDebug() << "Answer after cleaning:" << currentAnswer; qDebug() << "Correct answer was:" << this->correctAnswer; if (currentAnswer == correctAnswer) { emit answered(true); //this->setStyleSheet("background: green"); } else { emit answered(false); //this->setStyleSheet("background: red"); } } auralquiz-v0.8.1-src/src/ranking.h000664 000764 000764 00000003263 11710344554 016505 0ustar00janjan000000 000000 /* * This file is part of Auralquiz * Copyright 2011-2012 JanKusanagi * * 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 2 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, write to the * Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA . */ #ifndef RANKING_H #define RANKING_H #include #include #include #include #include #include #include #include #include class Ranking : public QWidget { Q_OBJECT public: Ranking(uint totalPlayers, QStringList playerNames, QList playerScores, QList playerGood, QList playerBad, QList playerTimedOut); ~Ranking(); signals: void closed(); public slots: protected: virtual void resizeEvent(QResizeEvent *event); virtual void closeEvent(QCloseEvent *event); private: QLabel *mainLabel; QTableWidget *rankingTable; QLabel *commentsLabel; QPushButton *closeButton; QVBoxLayout *mainLayout; QHBoxLayout *bottomLayout; int normalRowHeight; }; #endif // RANKING_H auralquiz-v0.8.1-src/src/ranking.cpp000664 000764 000764 00000021424 11712615637 017044 0ustar00janjan000000 000000 /* * This file is part of Auralquiz * Copyright 2011-2012 JanKusanagi * * 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 2 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, write to the * Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA . */ #include "ranking.h" Ranking::Ranking(uint totalPlayers, QStringList playerNames, QList playerScores, QList playerGood, QList playerBad, QList playerTimedOut) { this->setWindowTitle(tr("Game ended")); this->setWindowIcon(QIcon::fromTheme("games-highscores")); this->setMinimumSize(740, 520); mainLabel = new QLabel(tr("All questions done!") + "
" + tr("Thanks for playing!") + "

= " + tr("Ranking") + " =

"); mainLabel->setTextFormat(Qt::RichText); mainLabel->setAlignment(Qt::AlignHCenter); //QIcon::fromTheme("format-list-ordered") rankingTable = new QTableWidget(totalPlayers, 5); rankingTable->setHorizontalHeaderLabels(QStringList(tr("Player")) << tr("Score") << tr("Good") << tr("Bad") << tr("T.O.", "Timed out abbreviation")); rankingTable->setEditTriggers(QTableWidget::NoEditTriggers); // NO editing!! rankingTable->setTabKeyNavigation(false); // No TAB key, so UI can be navigated rankingTable->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding); this->normalRowHeight = 0; // Real value acquired in resizeEvent() // Sort player/score pairs for (uint counter = 0; counter < totalPlayers; ++counter) { for (uint counter2 = 0; counter2 < totalPlayers; ++counter2) { if (playerScores[counter] > playerScores[counter2]) { playerNames.swap(counter, counter2); playerScores.swap(counter, counter2); playerGood.swap(counter, counter2); playerBad.swap(counter, counter2); playerTimedOut.swap(counter, counter2); } } } // Fill the table for (uint numPlayer = 0; numPlayer < totalPlayers; ++numPlayer) { rankingTable->setItem(numPlayer, 0, new QTableWidgetItem(QIcon::fromTheme("games-highscores"), playerNames.at(numPlayer), 0)); rankingTable->item(numPlayer, 0)->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter); QString scoreString = QString("%1 ").arg(playerScores.at(numPlayer)); rankingTable->setItem(numPlayer, 1, new QTableWidgetItem(scoreString, 0)); rankingTable->item(numPlayer, 1)->setTextAlignment(Qt::AlignRight | Qt::AlignVCenter); QString goodString = QString("%1 ").arg(playerGood.at(numPlayer)); rankingTable->setItem(numPlayer, 2, new QTableWidgetItem(goodString, 0)); rankingTable->item(numPlayer, 2)->setTextAlignment(Qt::AlignRight | Qt::AlignVCenter); QString badString = QString("%1 ").arg(playerBad.at(numPlayer)); rankingTable->setItem(numPlayer, 3, new QTableWidgetItem(badString, 0)); rankingTable->item(numPlayer, 3)->setTextAlignment(Qt::AlignRight | Qt::AlignVCenter); QString timedOutString = QString("%1 ").arg(playerTimedOut.at(numPlayer)); rankingTable->setItem(numPlayer, 4, new QTableWidgetItem(timedOutString, 0)); rankingTable->item(numPlayer, 4)->setTextAlignment(Qt::AlignRight | Qt::AlignVCenter); } if (playerScores.at(0) == 0) // if EVERYONE has zero points { if (totalPlayers > 1) { commentsLabel = new QLabel(tr("What?? Zero points!!\nYou're all sooo bad!", "Plural, all players")); } else { commentsLabel = new QLabel(tr("Zero points!\n%1, you're very bad!!", "%1 is the name of a player") .arg(playerNames.at(0))); } } else { QString comments; // FIXME for 0.9: add variety of comments if (totalPlayers > 1) { if (playerScores.at(0) == playerScores.at(1)) { // P1 and P2 draw comments = tr("Draw between %1 and %2!", "%1 and %2 are player names") .arg(playerNames.at(0)) .arg(playerNames.at(1)); } else { if (playerScores.at(0) > playerScores.at(1)*2 // p1 doubling p2 && playerScores.at(1) > 0) // and p2 having more than 0 points { comments = tr("You're very good!!"); // doubled 2nd player's score } else { comments = tr("You're good!"); // just won } } commentsLabel = new QLabel(tr("Congratulations, %1!!", "%1 is the name of the winner") .arg(playerNames.at(0)) + "\n\n" + comments); } else // on single player { if (playerGood.at(0) > playerBad.at(0) + playerTimedOut.at(0)) { commentsLabel = new QLabel(tr("That was quite good!")); } else { commentsLabel = new QLabel(tr("You can do better...")); } } } commentsLabel->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter); bottomLayout = new QHBoxLayout(); bottomLayout->addSpacing(8); bottomLayout->addWidget(rankingTable); bottomLayout->addSpacing(16); bottomLayout->addWidget(commentsLabel); bottomLayout->addSpacing(8); closeButton = new QPushButton(QIcon::fromTheme("dialog-ok"), tr("&OK")); connect(closeButton, SIGNAL(clicked()), this, SLOT(close())); mainLayout = new QVBoxLayout(); mainLayout->addWidget(mainLabel); mainLayout->addSpacing(16); mainLayout->addLayout(bottomLayout); mainLayout->addSpacing(16); mainLayout->addWidget(closeButton); this->setLayout(mainLayout); qDebug() << "Ranking created"; } Ranking::~Ranking() { qDebug() << "Ranking destroyed"; } // Close event emmits a signal, to automatically get back to menu screen void Ranking::closeEvent(QCloseEvent *event) { qDebug() << "Closing Ranking"; emit closed(); event->accept(); } // Resize the columns (0,1) to the width of the widget // minus the width of the vertical header (1, 2, 3, etc), so it fits nicely void Ranking::resizeEvent(QResizeEvent *event) { int totalColumnWidth = rankingTable->width() - rankingTable->verticalHeader()->width() - 6; int playerColumnWidth = (totalColumnWidth/10) * 4; // 4 10ths int otherColumnsWidth = (totalColumnWidth - playerColumnWidth) / 4; // the rest qDebug() << "RankingTable width():" << rankingTable->width(); qDebug() << "RankingTable verticalHeader().width():" << rankingTable->verticalHeader()->width(); qDebug() << "Ranking totalColumnWidth:" << totalColumnWidth; qDebug() << "Ranking playerColumnWidth:" << playerColumnWidth; qDebug() << "Ranking otherColumnsWidth:" << otherColumnsWidth; if (normalRowHeight == 0) // on first resize only { normalRowHeight = rankingTable->rowHeight(0); } qDebug() << "Ranking rowHeight:" << normalRowHeight; qDebug() << "\n"; rankingTable->setColumnWidth(0, playerColumnWidth); rankingTable->setColumnWidth(1, otherColumnsWidth); rankingTable->setColumnWidth(2, otherColumnsWidth); rankingTable->setColumnWidth(3, otherColumnsWidth); rankingTable->setColumnWidth(4, otherColumnsWidth); rankingTable->setRowHeight(0, normalRowHeight + 30); rankingTable->setRowHeight(1, normalRowHeight + 20); rankingTable->setRowHeight(2, normalRowHeight + 10); event->accept(); } auralquiz-v0.8.1-src/src/images/000755 000764 000764 00000000000 11710370774 016145 5ustar00janjan000000 000000 auralquiz-v0.8.1-src/src/images/auralquiz-icon.xcf000664 000764 000764 00000033616 11710371135 021615 0ustar00janjan000000 000000 gimp xcf file@@CBCBgimp-image-grid(style solid) (fgcolor (color-rgba 0.000000 0.000000 0.000000 1.000000)) (bgcolor (color-rgba 1.000000 1.000000 1.000000 1.000000)) (xspacing 10.000000) (yspacing 10.000000) (spacing-unit inches) (xoffset 0.000000) (yoffset 0.000000) (offset-unit inches)  {@@AQ     gimp-text-layer(text "AQ") (font "Sans Bold") (font-size 119.000000) (font-size-unit pixels) (hinting yes) (antialias yes) (language "en-us") (base-direction ltr) (color (color-rgb 0.083233 0.065206 0.831373)) (justify left) (box-mode dynamic) (box-unit pixels) Z@@n@@~NN NN N N N NN NNNN NNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN N N6 N8N8N8N         6 888         6 888#Uizn[5& *D R u  AMꡆ`  cB ug(\{s[v4Pw89xfSxEm,6uHTbX@@HCRNp)  \.Ϳm- ,We+F jIO% Bu>5(: 777@@shadow     gimp-text-layer(text "AQ") (font "Sans Bold") (font-size 119.000000) (font-size-unit pixels) (hinting yes) (antialias yes) (language "en-us") (base-direction ltr) (color (color-rgb 0.083233 0.065206 0.831373)) (justify left) (box-mode dynamic) (box-unit pixels) F@@ Z@@ j        "',,'"  '2(text "v0.8") (font "Liberation Sans Bold") (font-size 28.000000) (font-size-unit pixels) (hinting yes) (autohint yes) (antialias yes) (language "en-us") (base-direction ltr) (color (color-rgb 0.991373 1.000000 0.956863)) (justify left) (box-mode fixed) (box-width 56.000000) (box-height 31.000000) (box-unit pixels) 88dG֫HÔ% y} Uƥ]  spREfxwa ]EE  Y qr7-  ͦM /Js '   \]>i _\;\!!  FH /OVy}R 79E  zna粮!vh63.>Ϡ6`ͪ_R v0.8shadow     "">  * : J Z j z                        J .   <= .                                                                                                                                                                                    "#" %0:@C@:0% ".9AFHFA9/#   2FXforofXF2  -ATdpvxvpeUB/  &;UppT9"4NjlP5   $/B^~ǿ|Y8 1QtȿvR2 ,585, %19>DPfнzR/ %EnлpG! "6K[b]N;) #0CVcimw!ֽlA 0XӴZ+ 1Pnv\C59MhѱS, 9eśh3!@f`OTm–d7  =kͣp8%Iuͼ~joͤqA  ;iΥq9&Jyѷ¹ծ{H# 6a̢o7#EuɮиٴM& 0Yˠn7 BK_̣\$%Ix£ΪeZ^eimyϦ^& :gԲzßpsˡ[$-UǠycjвzxۿR "DrֵbMRpӻ}oy·ʪ~D 4\qK7;Txκ~e_qȯc4%Em;~V5%&9WyŽy\JJ_vpz·hF#  /No{[;#"7RmlR<04Gc}jVNTezy`E,1H^nureQ:$ 0DVdmpmcUC0" .CU`aVF6/1=N]jrwvrj]L9( (5@DB:- $/9?A>8.# &1882')4=CGGC=3(  !       ""          F@@ Aural ...      fgimp-text-layerJ(text " Aural\nQuiz") (font "Liberation Sans Bold") (font-size 72.000000) (font-size-unit pixels) (hinting yes) (autohint yes) (antialias yes) (language "en-us") (base-direction ltr) (color (color-rgb 0.114110 0.485399 0.831373)) (justify left) (box-mode fixed) (box-width 250.000000) (box-height 186.000000) (box-unit pixels)  (EEd/")v0L5L9\;;@@D9E /=/=/</=/=/</</</;/;/:/:/ ||=||=||<|=|=|<|<|<|;|;|:|:| =T=<<i<;#;;:8;::M  /1 /0/////./-/-/,/+/*/* / /) / / /  / / /  / / /  / / /  / / /  / / /  / / / / / / / / / / / / / / / /  / / /  /  / /  /  / /  /  / /  /  / /  /  /!/  /#/  /#/  /$/  /%/  /%/  /%/  /&/  / / /  / / / // / // / // / // // // // // // / / | 1| 0|/|/|.|-|-|,|+|*|*| | )| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |! | |# | |# | |$ | |% | |% | |% | |& | | | | | | | || | || | || | || || || || || || |  R F0 / .h Z. -! ,}n,+6'*t)))L;( X 45 X aP X  X-. Xwd X}~ X0%& Xy Xuv XE1 X X lm XZF X  Xd e Xp Z X X) X n X X>"' Y" b" o%;dePCaba nd ]^ HyZ[  1 / / // / // / /  / // /  // // /  // // /  // // / // / // / / / /  / / /  / / /  / / /  / /  / /  / /  // /  // /  // /  // /  // /  // /  / / /  / / /  / / /  / / /  / / /  / / /  / / /  / / /  / //  / /  / ///  / ///  // /  // /  //|| | || | | || | | || | | || | | || | | || ||| ||| | || | || | || | || | | | | | | | ||| | || | || | || | || | || | || | || | || | || | || | || | || | || | || | | | || | || | || | || | |$^t{h@X8XX X 3JX eX VcX %X 0 X ܑ2X k X 4 X [ "X   X ZX X X &X | tX lVX aX XZ X 9h X x X F X  X  X w X  X  X l X  X O X S X  X n F X  K X /. /. /. /. /. /. /. /. /. /. /. /. /. / / / / / / / /  / /  / /  / /  / /  / / /  / / /  / / / / / / / /  / / / / / / / / / / / / / / / / / / / / / /  / / /  / / /  / / /  / / /  / / /  / / /  / / / / / // / // / / / / /  // / /  // /  / / / | .| .| .| .| .| .| .| .| .| .| .| .| .| | | || || | | | | | | | | | | || | || | || | || | | | | | | | | | | || || || || || || | | | | | | | | | | | | | | | | | | | | | | || | ||| ||| || || | | | | || | | | | X- X- X- X- X- X- X- X- X- X- X- X- X- XF_rzzjYF X Tݠ> X Q X  X  X  X e X Ճ[O^  X  j X  X \ X !B) X  F X R X X X X X iX X X X X X X X X X W) X X 0 X X 9 X X X X } SX X e X X ] X X pv \ X ' k X   X  U  X |S`˯c X 0ոp X i@  X   X wd  X :/9//*/&/"/!/#/%/'/)// // / / / / / / // / // / // / // / // / // / // / // / // / // / // / // / // / // / // / // / // / //:|9||*|&|"||!|#|%|'|)| || || | | | | | || | || | || | || | || | || | || | || | || | || | || | || | || | || | || | || | || | |:9+bб_')H@% od!ZL ."; ,," W/-U  LO X q x D?Hj@LY? 1LX#W08Qrtbd]]ml}{/ / / / /8/) /4 /4 /4 /4 /4 /4 / /  /  / /  /  / /  /  / /  /  / /  /  / /  /  / /  /  / /  /  / /  /  / /  /  / /  /  / /  /  / /  /  / /  /  / /  /  / /  /  / /  /  / /  /  / | || |8|)| 4| 4| 4| 4| 4| 4|  | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | WW >8;`v}r`( X3 X3 X3 X3 X3 X3 F X X X X X X X X X X X X X X X X X X X X XX X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X / /  / / / //;/ /'/'/'/'/'/'/3 /2 /2 /2 /2 /2 /2 /1 /2 /2 /2 /.| | | | | |;| |'|'|'|'|'|'|3| 2| 2| 2| 2| 2| 2| 1| 2| 2| 2| .|$ X G X,6:. '''''' 2Kk1"1  1-1ka191 0'1X1U1)- / / /  / / / / /  | | | | | | | |=  X \kP X Xk{sc< 4dw~va@  / // / // / // / // / // / // / // / // / / // / // / /(/ /'/ /%/ / #//  // // ///,/3 /3 /3 /3 /2/1/(/)/*/+/,/-///1 /| | || | || | || | || | || | || | || | || | || | || | ||( ||' ||% | |#| | | || ||||,|3| 3| 3| 3| 2|1|(|)|*|+|,|-|/|1| |vmH\M;" {q_#4J m& n7 #   "{ W  ɇ[=11=Y a" +    H ^ K c. 9 a+Ls2K282n2pS1 0 |\NJTi'' @(J@)@*@+z@,A @.Pܪ"09]s}zsdK. /  /  / /  /  / /  /  / /  /  / /  /  / /  /  / /  /  / /  /  /  /  /  / /  /  / /  /  / / /  ///  /$/  ////  ////  // /  // /  // /  // / / /// s | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | || | |$ | || | || | || | || | || | || | | || s|X X X X X X X Z X Y h X b x X o  X   X   X` w X1C X X nl X  XL 碑O X X XF X K X $ X>G X;`v}r`6 r /2 /2 /2 /1 /2 /3 /4 /4 /5/6/7/7/8/%/%/%/%/%/%/ | 2| 2| 2| 1| 2| 3| 4| 4| 5|6|7|7|8|%|%|%|%|%|%| | !1N1w1B01G2 334>5y667%%%%%%  $ $| $ $}]>. AuralBlur     egimp-text-layerI(text " Aural\nQuiz") (font "Liberation Sans Bold") (font-size 72.000000) (font-size-unit pixels) (hinting yes) (autohint yes) (antialias yes) (language "en-us") (base-direction ltr) (color (color-rgb 0.000000 0.000000 0.000000)) (justify left) (box-mode fixed) (box-width 236.000000) (box-height 164.000000) (box-unit pixels) GGH4HMOTXTduozVx _ ?==<=;; ; : : : 9  2 - (   &  "  ""%%"    %*057::750*%  %-5?FKOTTROKD<5-%  (3?KT`fmqssqmf^TI?3(  *7FTdq}zqbTF7*  (7I[m~}mYF7(  %5F[qýnYF3%   0BWnʾmWB-    (:Of~fN7%    0D^ww[D0    %:OjκhN7%     -B[wƮwYB-    "5KhѺfK5"   ""   *<6~Ķ6<>VB@{´@BVee{}ee즅ʾǰȺ{ĵ}ͻνƚǶ̿ƾɶŁƸƿIѓצ̿I ΀ƶ SΩߙɼS ڌ̺̿ ւ {΃{Ʉ٩ʿ׳ЅŻېǿ欇Ľؘtu¿ҟn徠nǺ== ..'dԪd0JzzJ  )$,,  Ϻ  ۱jiprjk %Ǝix̨xj%9ˆjx׀іl9."պϟkܓlϺ".б~yy~ɱΨop«ͦmnno¬  ̵pݜrʴ  ѼڌϽ ʠz|ѐ oҴpwύwqλs摑Ɏpoȭr{h}rstuy]wxO:­}Ⰶ4#ǪΨ+Ų߼y5P+·^촢Nùe髈Gv[Dķ١`d^ķ^d`=;5~Ķ5;=UA?{´?AUdd{~dd즄ʾǯȺ{ĵ}ͺμŚǶ̿ŽɵŁƸžHГצ̿H ΀ƶ SͩߙɼS ٌ̿˺ Ղ {΃{Ʉ٩ʿ׳ЅŻ񐏚ǿ欇Ľؘtu¿ҟn徠nǺ== ..'dԪd0JzzJ6.UssU.0A ֒A)$''  KK " $ & (* Q,Q * . 101.+2+2 2 Q4Q446B6Bi6i666666p6pM6M!6!4 4 d4d2 2 I2I.T0T . 7*7 z,z *'('7$7?$?;";--FFhh !bb!$8 8(*EqqE*.   Clock blur      (49>HXhx #,ާ  ƻ% :ù .ÿĿϿþ̺½  ¾ ½Ǻξ¿tƾ߽Żᶹɾ⯫ǽঘľߜzso{}ľÚ^RK]cr}ý{cVP`eq|»{uq{{ݜº২¼⇲ݹ㫸¿EúⰼŹ¿NʿʿpȾ¼Ǿ ſƾ½񺻽 ýɿ ʾ ɻXžìX~ų~. Ŵ. pȼp Ul ɲlU>'4KbzֿzbK4 $Vix*ɲ3L`p}*«(CWhv(ӻ7M_m(ʳ )ATcz(5IYp$Ͷ &;Md|&|.AXo$̵o3Jax վxa #:Qh"ŮhQ*AXo ̵oXA/F]tѺt]F/ 1I`wԼw`I1 2JaxսxaJ2 1H_wӼw_H1 -D[rϸr[D-&=TkȱkT=&1H_v Ӽv_H1 7Ne| «|eN7  5LczzcL5 %:QiŮiQ:%! $4DVgxxgVD4$ (  ==<; ::Ǎ99t889٫777766־6Ƚ6666}|osz6skd^KR^6tlf`PVc6~{{qu777788þE89¾N9ü:ſ:¶p:<~==<; ::99t889٫777766վ6ƻ6666~zxjov6qiaZGNZ6rkd^MSa6}zyns778788F89N9:þ:p:<~==<; ::99t889٫777766վ6Ż6666}ywinu6phaYFMY6rjc]LR`6|yxmr~778788E89¿N9:ý;p:<~==%<6;F/:U=&:aJ29nV?(9w`I28kT=%8t]E.8{dM57kT=&7qZC+7u^G06zbK46}fO8 6iR:# 6kT<%6lT=&6lT=&6kT=%6iR;$ 6~gP8! 6{cL56v_H16r[D-6mV>'7}fO7 7v_G07mV?(7zcL58pYB+8dM69XA*9J3::# :*;<>@@ Clock blur 2       SS+Q0R?ROR_RoRRRRRRRRRS ,   ¾ % : .  þ̾ڵ ¾t 䰶맩䠚Özvwy|Ϛn_WY[`flrx}Åj_Y[]bgmrx~rtruwy|֑Ϝϰ۳ОEѴ߸Nḹ份黼h켽 󏮻     sM¿_.g S~(Qq&:KXbjptwy{|}}||{zxxw wxz{ ,   % : .!  ˻ ݾÿt 䮲ꢣݟЕwrtux}Кk\TUX]ciou{υh\VX[`ekqw}prpstwz~ˏěχţ޴F޶N꺻캻 h컼򏮺セ  񗲽    sM_.f S~(Qp&:KXbjptwy{|}}||{zxxw wxz{ ,   ÿ﨩 % 9 ." ˽ʹ ̸¾t 鳱餣䓖Е~vqstx|Йj[STW\bhou{φh\UWZ_djpv|pqortvz}ˎΣχбќEҢN廼麻 h컼󏮺セ  񗲼   ~ sM_.g S~(Qp&:KXbjptwy{|}}||{zxxw wxz{  #*19@HOU[`eilopqrrqpoli %+19@HOW^fmu| ")06DJOW^fmu|ſ #*18?FLQV[cjryĽ  '/6>DKQV\aemt|ǿ  $+3;BIPV[afjov~  &.6>FMTZ_ejnsw~  !(08AIPW]chmrvz~ ")1:CKRY_ekpuy} "*2;CLT[agmrw| !)2:CLT\binty}  )1:CLU]djpu{ '09BLU]dkqw| %.7@JS\ckqw|$,5?HR[cjqw} !)2;EOXaipw| '09CLV`hpv} $-6?IS]fnu|!*2;EOYbksz  '/8AKU_hpx "+3GQ[enw~ %/8AJS]gqy &1:CLU_ir{ '1;CMV`js{ '1;CMV`js{ '1:CLU_ir{ %/9AJT^hqy #-6?HQ[eow   *3GQ[env}  (09BLV`iry  #+4=FPZdlt{ &.7AJT^gov} !)2;DNXajqx~ #+4=GQZckrx~ %.7@JT]elsy~ '09BLU^elsy~ !)2;DNW_fmsx} "+3ELSX^chmqx  #*2:AHNTY^chow~  &-56/'  ûxpiaZRKC<4-% |umf^WOH@91*# ļyqjb[SLD=5.& }unf_WPHA92*# ļyqjb[SLD=5.& |umf^WOH@91*" »wphaYRJC;4,% Žzrkc\TME>6/'  |umf^WOH@91*" º~woh`YQJB;3,$ ûxpiaZRKC<4-% Ľyrjc[TLE=6.'  ƾ{sld]UNF?70(! ƿ{tle]VNG?80)" |umf^WOH@91*" |umf^WOH@91*# |umf^WOH@91*# |umf^WOH@91*" ǿ|tme^VOG@81)" ƾ{sld]UNF?70(! Žzrkc\TME>6/'  üxqibZSKD<5-& »wphaYRJC;4,% }unf_WPHA92*# žzskd\UMF>7/(! üxqibZSKD<5-& }unf_WPHA92*# Žzrkc\TME>6/'  ~vog`XQIB:3+$ Žzrkc\TME>6/'  ~vog`XQIB:3+$ ļyqjb[SLD=5.&  ƿ{tle]VNG?80)" }vng_XPIA:2+$ ûxpiaZRKC<4-% üxqibZSKD<5-& ļyqjb[SLD=5.& üxqibZSKD<5-&  ⺳~woh`YQJB;3,% !㱩|umf^WOH@91*# "奞xqibZSKD<5-& $昑zskd\UMF>7/(! %舁yrjc[TLE=6/'  'nic\UNG?80)" *31/,($  -@@ Background     SS TFim?rqv).Bi~;                                                                                                                                                                                 !"#%&')*+,./02345789::; "'-38>CINTY_djpu{ #(.39>DIOTZ`ekpv{ #(.39?DJOUZ`ekpv| #).49?DJOUZ`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv|?  ! 4!!$ !  2 "    1     .0     ,  ? "4"!0 3 "!  ! 0 2 !  /  /    + $ ? "4"!0 3 "!  ! 0 2 !   /  /       + $ ???; ?: &+ 3348%  *, 34 "*.7 +, 25 &+/ 2  ?+ 159 &/ 3<48 ") 0 4   (- . "'(    ?+ 159 &/ 3<48 ") 0 4   (- . "'(    ???; t 3                                                        t 3                                                           t 3                                                           1 . .;<:94"3#383?3B3D 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E                                                                                                                                                                                                                                                     #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv|+     &      $  ; -)4 ; ; :>       )       /  -& 4 ; ; :> "      .   *    -& 4 ; ; :>    &( ))                              (* *     %  !                     (* *     %                                                                                                                                                                                                                                                                                         3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E                                                                                                                                                                                                                                                                                                   #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| (   >         .      5     -     ?    5       !   4  !( !B  "#$&*+/  (   >         ;          %    '% <     7     5    4       6  !( !B  "#$&*+/  (   >         ;          %    '% <     7     5    4       6  !( !B  "#$&*+/    䙘w 24 56 e78 "99 $u;: $== % k@? $ AA # ! KDD # &,FF $ #A( IH$]TPO]OL 7v KH *aGE $/TzB? Y"4Yu  ĺrS 嶭wUl䷯yUu丮wTs^幮xUvf幯yVwpk庰zVy~u廲yUwk潴zUx$澳xTvu$澳zUv~{#濵yVwy‘#濶yVxsȾ$xUvlε#yUyjϪ$xTwiwʞ"¸yUxkqľ"ùzVujpxĺ{S˗iu|ƼzQr}ǽ{Q  Ⱦ{Q ɿ{Qǁ{QՄ-{Q.{Q-|Q+|Q%|Q%}P"}Q" |Q ~Q ~Q ~Q*|Q)~Q*|Q(|Q#{Q ƾ{Q ż{Q ûzQ zQ ߿zQݾyQݼzQܺyQ ۸yQڶyQ욧ٵyQ  㘗w  e"!$u" $ $ %l"%$ $&#K$&)#$() ###+- $!.2#-/ $/.$/0 #"4'#13 # '6$35 "'0&#67 $#""89  ;: O == D?>   B@ B ED IF -KI .MK -QM,SP%VR%YT"ZW" _Z b] d_ d_*a\)\Y*[W(XT#UQRN OL  LI  IF  EC BA 3>> &5;; Z 89 C56 :f23 <?Zhl     J$# J6 V P; R> [ R?  TB ^  UE   XG ; YL 0 [N79 ]Q ,S11  _S  De| aV -S_ cZ 3VG e\  1I&- g_ &. ibl  kfeD  mi ok,% qo0 sr8 uv xzz z~3  }  !v !1 # # h" ~!9JzKvzX qqrtK op; kk! ZPge! c`r ._\ ҅[V\ CXQ TL MPH~l LA  H= E8 [Q @3  =. y 8)  3$ Է y&18 k 9-Ѭ YFac    꾰n"  繱K"$ E沫7&" »KҤ%.(# ÿU숁C:.)%  ]     g ~T Ua Ui Ukb Uor Url Up ûUp| üUo}  ¾UnƢ  ſUm|̑ ÿUnrŇ ſUnm˹ Uok{ǧ ƒTlls ăKmx ƃKw ƃL݁ ƄL DžK ɅK ˅K ̅KԊ ̆K ̆K≎ ·K χKČ ЇK䉎 ҇K φK ͅL ˅L ɅL DŽL ńL 凎ÃL L L≌ Lʋ ыL ⅎL L醊 LŠ ČL ̋~L ԋ쳮~L ڊ}L ؊|L Ћ|L ɋ{LԶ tG8 ؞rp⦂d;ѫ ە|m_HanV1 {qdRFS3ӊ|vpdQG5xqok^O6DynkjbS9»J²|phebR9ÿSŌķtje^O4\     I"" 7V : =! [ <#  >& ^ =(  A* ; B-  E/   E2 -0  G3 #5 } I7 ,2 J9  .& L< &- N>  PAl  REdD TG VJ,% XN0 ZQ8 \T ^Wz a[2  c^ eav ge1 ih kk ihg ec9Jc`K`\X qp]YK [U; XQ! ZPUN! RJr .OF LD\ CI@ G; MD7~l A4   =0  ;- [Q 8)  5% y 4"  1Զ z&.8 ޏJ0,ѫ *9?  ug Z < D »J}d  ÿSg\, \3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3E 3D 3B2A2<16202( 0J 16/f% 06.A -S),f0  +u3  *{4  )6  (8                                                                                                                                                                                                                                                                                                                                      #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #).49?DJOU[`fkqv| #(.49?DJOUZ`ekqv| #(.39>DIOTZ`ekpv{ !$&(*,/1358:<>ACEGJLNPSUWY\^`bdeffgg   !"#$%&'(*+,-./01223       ? ++ ) 72 20-++)'#! 47,2+996 4 2 20,*('# !$%+-. . ºiO5% LCiO6'# Y3\xaI3($  #+Hh~kW@/)%!  "-Mg{vk[G6/+'# k"2K^hkkf_TG:40,(%! "%3@IMNKE?<952.-)$ Y$,157989:=<::<<7.& $,0368<@EKRTVUNE;/$ !*17?GOWajqsne\PD8* W4&/:DNXblvymbVH7& G֡"*6ALW`irxztj^O<+!s P "'.9DNV^cghcYJ:,!W$&),18>CILMLH=2%c !%+.0268764,!!Z ;$En Ħ~`J@>AMa| Ź       !     ߣ ~T4  S ߅#ӝ<ٲxQቔرxQչׯxQը֬xQե֫wQ{ԩwQyԧwQm~ӦvQuwңuPwvҔhGsŻyjYk̊z[?˺ ŵzqdVEZpS6 ˼|rh[HHU9ô|xriZMF;̺̿ytqneVJ;Ͼxqkki]P=³{qjhg`RAÚĸ~tlgf`Q@ꐘȽwnhe^N;|qkf\K5ƻvmeYFƻznfTB}Ƹ}sbLxqY Ŵ}br°jsκ}p~̭zvê ᨆ~| zz|zz ÷       ɿ!   ޢ }T3  S ߄#ӝ</0 -;@-. r)+Q&(Q#%ǒ# b 辕smjmǃI*_s̻ l!FL>&  ^G{tV:E~aE( TndH+ &ky^D( 7 @qkR9  r .SpziVA* 3L^gie\N>+ R'8ADB;0! Y   !  %+/20,(! R  "(.48960*$?  &,2552.'n4 $(*)& A  [  U u,  =l ŧ{ZB:97 h ½s  þ %))&  þϋ).540+#ϗKS\chihgbbkw~ϣ ЫϳϹ  ! " # $%&'()*+,-./0123456y7o8d9W;H<3~': &<'?!&A"%D%$G& #I("N* !Q.  U. Z0 _2 d3 f5 f6 g6 e6 d5 c4 c4 a3  `2 !^1 "]0 #\/ $Z. %W- &U+ ' S) ( R' * O& +L%,K$ -I#.F!/D!0C 1A2>3:4}7 5u5 6m3 72 8 9 :;<@@auralquiz-v0.8.1-src/src/images/animated-note.xcf000664 000764 000764 00000750301 11710371135 021374 0ustar00janjan000000 000000 gimp xcf fileBBJgimp-image-grid(style solid) (fgcolor (color-rgba 0.000000 0.000000 0.000000 1.000000)) (bgcolor (color-rgba 1.000000 1.000000 1.000000 1.000000)) (xspacing 10.000000) (yspacing 10.000000) (spacing-unit inches) (xoffset 0.000000) (yoffset 0.000000) (offset-unit inches) A, ?C, AE, DH3 EH3 HK3 KN3 MO3 OR!3 QU"3 TV#3!VY$3!UY$3SW#3PT"3MP 3JM3FJ3DG3AD3?A4;>47:/474144.14+.4(+8 8 7 7 6 6  4 "CH 2 Tp31 "t|Y+0  $zcQ0 $xg`G/ $ujfg=/ $rjlti. $rhn}? . !tgm-- y~ekf, [}ch6 ,  I~be{-, Dq\avo, @qV\p, @qVTg}, CqUS]p,   GqPEN^w, GpH**?T, GpB+P,  Gp@j,   Eq@#n,   Cq@9,   Cq?, Fp<, Gq;,  Fp<,  Ep;,  Eq:,  Jq9 ,  Lq9 ,  Hq9,  Dq; ,  Bq; ,  Cp9 ,  Cn9 ,  Bn9  ,  Bm9  ,  Bm9  ,  Am9 - @m8 - >l8 . ?k7 / Bj7 2 Aj8 2 =}j8 &  <|j9/=<<<==65  5  3  2 3  0  /   .  .#! -  ,   , !#  , #%, $' ,'),(+,*,,+-,-/,.131433635737939;3;?3?A3@B3@B3>B3,쒗{P(FsVVjk4+뇋iEKsVVf~g2*넇w_YtVUbua(*tzogtVU_mL)CutwstVR[gvn2 )Ck_wztP@EWhwV ( 6@k|rI)#6J_tr?' "TwqE !8Um~}]+ '  ;lpE+Liy|qK& (a~oE %Kky{d1& V|t`K 'Nm{qF% Oz{s` (OovW#% KzxY  *Wsh:% Hxze 6cpS$  Dw~n! Jme3 $  Bwz[  2coE# CxxF  TrU # FywA Ep^*# HzwD   9ia/' Hyz[  .ad5 %My~o" )^j> &W||f  %\nE% [xL   YnG%&_xD  WlC&1fyD (Wd7 &=izD Gc]-%Ig{D 0kY'%(I[zE KY#F< :: : 5 5 1 0 /    .   .   / "0 $  + !%+& /&  /"./. 0 0  0 7 7 7  7  7  7  7 0 + / .%.+./- '1, +1&=<<<;;;;;;;;;2Ӱ0/...--,+3210//.-%%(" #$                      &021+#     .9IW\XN?.!  ,AUhzygP9'  5Olu]D0!  #;Wz}eL6&  "7No~fO8)  -9QrwbJ6)"    *0Da|}kVB1(#  "(!""$2Jcv~uhXG8.)# >A0! %5J[ehhd[PE;3.'$! ;WP;()7BHLLJE@<61.,*&! 1^l[E0! $-38;==::960)"%UxuaJ5%").2369>CHKMMJE<3*! Iuu`K6'#*0560,(&# $*/37<>=95.%'3GNU]dfd]SJ(  &/8@JS[cjmi`UI)#+4>FNV]bc^TJ<) "'.6=BINOMH?6** #(,038983/(,  "## .  064 2  1  0  /  .  -  -  -,,-  - -  / /03?   <{i:   :yi< :wi>  ;wi> ;wh?   9tg>(2/-*& 7pd< '9D`krwnf`XJ8(7hs[7  /DhypgYMJK^eQ1 -Vɽ}tjaXFQUG- "IŶysjYOJHA- ,\;|vkaXOF>. 3xŶ|nfc]VL@+ 1v˻lda]XQC+    cͽvme`\XQF709EGD?: @;{pg`[XRJPk|sk %k¸~tjb\XQMc|:Ŭxne^WQY ;ǻ{qhaXWs*}¹vlc]j¶QtºzofkƻFl{~qrȼ 1^u}Ĺ~{ɽEhxö$HevǺù ?[p~ȿ-F[kwǾ %3=JVUSXWLLbwǿ Ahyź"(Uq|ȼ(9_t~Ŷ);[pų*1Ogxg+"8M_jv~lV?'-'0>JKHML?3& /  2 2 10 / . - - , , , ,  , , - . / 0 1 3!   $                               /85, )BYhi\I2 !'GhpY?&  /Zw^E+ (Qzs\D*,1YyziS<# (Icu}ugVA, -EWad`YL<*  -(%4>A?8-   0E9   (OVC)   Gd[E,!  ;biYA(" !%('%!3Zi`M7 ! $)-/-)# -M`[N:'" #'++'# %?NMC4#   %140%      ! !%),+($0  &*./.)#+ !&()%,  , -05:7 4  1  0  0  0  1 259D77778&$"! ߸!"$(*284377889:9;;;<<898> '5:&27)/4*,1*). 7 '*!"7 #'"1- !$!6 , !7 - "9 7#: 7"8 7 6 2  4 2  2 2 0 2 / 2 . 2 )2  2 "2 , 2 /2 2$   2-%  27-# 2=1$ 2<-   &." 24 3444988877776665 5 5 6893>KzE Wz$1.@zETn%=yE[h%  =yEj\%:~zEbwC'7z{FDbV(&7y|Q *@& &7x}k32 &5v}v$,  %5t}w%  %6ty% %6sy% %4q}|x%  ! 2k|vwt$  3)5dplrr$   bXJ;0>Zaamq$  !tlcYMIMQWgn#  !yrle]SKGOak&  !ztmhc[SHN`l)  !|skfb^XORfc   !ulfa^ZRWhT  !yoga]YSWh\ "}sjb]YSVer3 "wld^ZQTiy<  "{qh`ZOXlR "񗋀ulcYJZ[( #񠓆zodW?P8  $񩛍~qaL,0 $񮡐mT6 %񯞌vZ9 %tW6 'hI+ 0K1  0   0  0  0  0 0 0 0 1 1 1 0 0 1 2 2 3 4 5 6 7 9}*/' (-&&+( $(* "&* #7  7 #- ' ,)- *7 +7 +7 (7 '7&8%:$:% ::::# :& 22 2  2 34  & 444<=;99:<,,+++*$*)(( ( ( ( ( ( ( ( ( )))*****+,--/8004<<<<<<<:::::999768{@@ Frame 17     @==({e=DLJWm9;: : : : : 5  4   3 "$3 %) 2 #)1 !& 0  # /  " . !"  .(%-.+  ,%&  " ,%'(',&( ',(,') (+,)* #++, , ,- +..+.0+022232352 56 2 67 2 8: 3 :;! 3 ;<" 3!=?# 3 ">@# 3 ">?# 3 !=># -  ;"+I|*%$Cny`:  ^z*%$Bly`: .b*&$Amy`: @*%$Amy`: *$$%Cnz_7*$#%Co{_7 *$#Bn{_7 *##Bo{_6*##Cp{`6*""Er|_6*""Fr~`5 *"!Dr}`6*!!Bo{`7*!!@nz_7*!!@mz^6 *! @lx]5 *! @kw]5* ?jv\5* ?iu\4  *>it[4*#=gs[4 +"=esZ4*#=fqY3,#>fqY3$ #=dpY3"-/) 0\ocPF;&/H" 0]pcRLJ: .w:1]qeSQUN4-S*3`reTS^`L,-k@9dtfUUbncF# ,왕U4&@hvfUUcuvb> +돐fG6HiwgUTbuz^9 *녉rXHOlxgUR^qzZ6*z}bVZoxhUQ[k}wU-)gydadsyhTPXdunG (Kfv^ekw{hRKQ\kz~_5(/J]NbnyzfMABN\jyoM('3A:WkxxdH3.7FVgt|u_=&#)'GctuaB(*;OaosiQ/%7Ypr_A$ 1H]kl_B! %,Pjn]A% .G]hgS1$ "Hfmf_F!  .H]g]@$CcjqqY.  .I^`L*#@bj|v^0  0L^V9#>`j}x`1  7SYF% " <^j}yb1 $CXQ2" ;^j|v[-4QX>";_j|rS( &GXG% ! <`j|oP'>VL, >`j|qS( 5QN/#>ak}v[-.MO3"Bcl{b1  *JP8"!Ggmx^/ !  &IS;" $KiptV*!!#FR<! (PlrrQ'" #EO:!.SmsrP& !!#.BJ3"5WostP&%1GNF-";XoutQ& 'A]nC' ! ";TnutQ&  )KnyI! E:: 84 4 4 1  /  /    .    -  , +   + *  . .-  -  , ./ / 6 6 6 6 2  2  1 0 * ..-,  , "+"&=<<<;;;;;;;;;2Ͽ0/...--,+3210//.-%       "$#!   "&&%#"    $&&%#"   "#$#"     !"!     "%(-11/)!   $-5>GPSOF:,"  &4DTcmtri[I7(  '9Ney|jU@."  &:Sor]H4&  #5Lgt_J7)   *:Pio[G5(     )4F^tueQ?1'"    %*7K_oy~|wnaRC7.(  /3) "*9IW`db^WMD;3.#! 2CB4%",7AHJJHEA>5.+)&" /JUM;* %-38<>?:966530*$)G]_RA/"!'-20258/% ")07>FLRWXUNF<1&%8Oae`TF8-$ !(.6>=;86420,(  "#! !(.2569;<>><71  &+05:?DHLMLHB: %*29@GMSXZWRJ@" #*3:BJQX]^ZSJ?( !(/7?FMRUVRJA6) $*17;72) 5WdR3"%),.0123469=DMW_glong_YRG:0.5R\L0 !#'*-/025<83!0Q}ǹwlc\UPLGDIXejhc]V #=gƻxof^WQMIL]uwpi #Fq˼|siaYRMMXrxpDrƳxmd\VQVl|s /n}rh_YYhw C`sxlc_i{;Yjqv|{oin-Lalsy|tt 9Teov}||#KTTK=* ! *AVgork^L6"  /Lh{vgS<'  'EdzueR<& ,Kewxl]J5 &@Vfproh\M:(    *=MVYVOC5&  ! #/7983) '3-  &errR&"Ssv\'! :drrQ'UspS'!8cqsR'KneF$ #6aptT' /IK5 #5`nxY+ +!#!#4^m{c1!##4^m~i4 #4\l~k6  #4[jl7 $3Zjm6  !2Xg{}l6 ! 1Tbuxi5!-&4OZmtg5!OF=30:KPcod4!bZRJCBFFZib4!ib\VPIEATf`5 !lf`ZUOIASd_4!oga[WRMEVe[1!rjb\WSOHYfW.!vme]XTPIZf[1 !{rhaZUPJZic8 "vmd]VQH[kc9"{qi`YQFZdS- "vldZQBUU>!  #|qf\N:JD. #tfXE/93& $raM6$&" %|iS;$  %jS;$ &xbK4  (P=* /) 00  0$"  0#"  0#! 0#! 0#  0" 0"  0! /! 0!  1#! 1$#  2%$" 3&%#!3'&#!4'%"5%! 79 }"' &() * 6 6  + ! +" +# 6$ 6 # 7 " 7 ! 7 7: : :: - , : 222  2 2  &  & 22243==<p<9899;,,+++*$*)(( ( ( ( ( ( ( ( ( )))*****+,--/8003<<<<<<<:::::989768{@@ Frame 16     <||.{|J:: : 9 9 953 2  10'/%$ .!#- , ,  +    *  #"   *     *    *    *    *    *    *    *    *   !! *   "" *   ## 0   $% 0  %% 0  && 0  '( 0  () 0 )* 0 *+0 ++ 0 +,0 *+ * )) + '( 1 %& , $% 1 "# 1 !" 1    1  ,   ,   2  2    0:85 3*,"2./# 1.0%1/1% 101& #/02' $/0! .02'#,AMF& -13)(6TlkX. ,33*,?cuR& , 43+/CimJ!*34,/El{b> )24,/Ejs\:)34,/FhqU#(44+/Ehn< (54+.Dhg5(54+,=fz|~Y"(55+*9Mx}uxy;(55+*9>Wc|qr~t7(55+)60-3@v(66*&*;SZM8& +Dt(66*&!;SZM5$Zt( 76*&!;RZL3  6_("86*&!;RZK2  G( 76*&!:SZK2  .(66*&1;SZL2  (56*&1;SZL1 (55*&";SZK1 (54)&!2"0 (@MI<,/ *DQOB4' /+ +ESQG<1# .@% -FUSJC<0 -f6-GUUMIG@0 ,G,1IXVONONA- +W;(%5LYWQPVZR@(+뎃H5/PXBP\bbWKBCKVakpm^E* &1CG5HXa`TE:6;EQ^gjcR9!%(77)>Q^^RA1)*2>LYccZG0 $%/,4IY[P>, !+8HU^]R=%$#( *BUXN<,%5FT[XH1 #"#$)!$ 3JSrsb?% *>HD1  ! 2IRrq`>$ 3DF7"  3IRqn\;$"  )=F<(  3JSpn\9"$$!6D>,   3JSpo^:#$(! /@?/  5KTtt`=$$*( +=>1 7LTvvc?$#),&':>2 :OVvub>$!&+," $8>2 #=RXur_<# #(,+#!5<2&@UZtq]:"!%*-,'"!4:0*CVZuq\9""&*-//,16, .FX[xs[9""%+43,(%" *8?;1& &-38<>@97210.,)$(9FIC7*  &,1-.135799751+$%7GPOE8,"  %).26:>@BA<60(!%4DPTND8,# #(.38>BEFD?80(!$0?KQQJ@5,% !&,1794/+&"  %'*++*($&.5:=>>=:851-( $+16::5/ #*/5:@DGIJGC=6 "(/7;731.+(%" *2IPE. /:52/,*(&$!-1GPD/ 2?FIKLMMKIFA<851/-+*'%"+1FND/  !3>DHJLMNONKHEB><::8642/+%" 0ELB.  09@DHKLNOOPONNPOOMIEA<5-)0BI?, *38>CGJKNPSX\`dilopqnje^XRH>871?E;)#-26=>6%).159>CGMWduzpf[UQ9;:1" *-138=CKVh~ĹwmdXA>:6-  !*-037=FViµzpkUFA<6, !*,027@Qhɻ{s[NIC>7-"  (,/2:Ia}~uWNJE?91'%*-3?Sp³]VOJEA;6213443/,'-6F_|h^WOJEA>>BIORRMIC)7Lhɽui`XQKFBBFR^gjg`[U!5Onǿ}tlc[SMHFHRbpyxsle_*Jkϳxof^VOKKQ`rzrkc0azű}tkbYSPT`qxph!9Ncxof]XYap}vm 1GWahnsz|rib_eq{s'O\hq{'-@P^it}(-=LZfpyvg)(7DOZcjpuxyxslaUH*  *5>FMQUWWTOJB:@* %*04676JIKIE=+ !(?JMMKGD?+ ,:GNNKHD?;,/:-"19=@ABCEDC@<9- +37:<>?@BB@=95-%*/268;<=>>=:73,#&*/25689:;:740, !"#&+/135568752/, "$(+-01234541/+ !#&)+,.0133410+!"%')+-.023431+ !$'(+-/123553,  !#&(+-/13455- "%'*-/123565-  "$&),-023465- !#%'*,.02330"%'(*,--,)1  2       $$    $,0/*$    .5520,&  *1331/+%  (-/0.,("!&**'#  !""!    %)*'  %.7?CA;0#  )9GRYZVM?-  +>SajmjcVF3" $9PbntsndWG5" (=Sclqoi^P@/$6IV`ca[QC4$   '6BKMKEFgrfA" $ >81--5<@amd@" # OIB=9:<TXK1 "uk`UH:MN@+#xl`RC2BC9( $yj[K9(4:4& $sbQ?-(30%  %veS@/!"//% &raP?0"-.$ (WH9, ,-# .<0& *-# .6-% () /82-(#%$0;63/+& 0962/,($0741-*'$ 062.*'$! 040,($! 01-)&" 0/+(%! 0-*&#  /,*&#! /,*&#!1-+)%# 1/-*'$!210,*'#230.+(# 331.+'" 431,(" 50+% 7% 8 } ' & (  )  )  2  ,  , ! +  # -  # -  # 4 " 4 ! 5  5  5 9 9 9: - %1122  2  2   %  % 2 222244:00=<o;98 8 9::,,+++*$*)(( ( ( ( ( ( ( ( ( )))*****+,--/8003<<<;;;<:9:::988768{@@ Frame 15     8,D`[9 9877 5 1  0   0   /  %  /   "'-   %% ,   ",    +   *   *   *   *   *!   *"!   *#"   *%#   *&$  *'%  *(&  *)'  +*'  /*(  /)'  /(&  /'%  /%#  /#"  /!  /   / * *   *   +   +   /   0   0  0 , ,  0   0   !     m7 5!$ 47:-"3!<>0%1#>?2($1 #?A3*($0 %?A4,,/& . %@B5/2<:* - %@B729KRH', 'AD97AXifR+, +CE::Iby~nM% + -EE<Oj~c>* )CF=?Niw\; ) )DF>?Nh}rU$ ) +EF>>Neyl;) -FG==Mev}c6 ) ,GH=;Gat}wU$) ,FH<9CFgzyz}q9 ) -GH<9@6EQuswj5) +GH<8=4AKL]qz}T) *FH<7;3?HIH]tw) +GI;7:1>EFDDZy) ,HI<5.2>DC@>A[}) ,HI<5&2>DA;57=_) ,HI<681>C>5-+/9n) ,HJ;5/2>B<0% !)@n|) ,HJ;4%2>B:- %Yp) .IJ;4%2>A:+ <_) 0JJ<4%2=A9* N) -JK<4%2>A9*  :) +HJ<472>A9)  -) +GJ<472>A9) $) +GI;4&2>A8) ) +GH;4$2>B9) ) *EG:4%3?B9( ) *EG:4%3?B9) ) *EF:4%3?B9( ) *CE:4%3?B9( #) *CD93$2>B9) *) (BD93$2=@8( +) (AC82$1=@7( -) )BC82$16' ') '?A73%/;>6'  ) &>A734/:>5'  ) &=@835/:=5& ) &=?745/:=5& # &=?745/9=4&  &<>735.9<4&  &:<513-8;4&    %672/1,7:4& :: : : : 8 4 3  1   1   0 0  . .  -   ,    *   *   *   *    *    *    *    *    +    +    +   +   /   / *  /    /   /    /    /   /    *    *   +   ,  , 0 0  0  0   ,   -   2   2 #    :766554332110ٽ/..--,+++++++++++++++ + + ++++++++++++,..., :83 3 3 3   1   0  .   -   +    +   *   *  *   +    +    *   +  + *  *  )  ( ) ) ) (.- /  ! / !# . #$  - &&  , && , (' + )( *  *)) +*&:5 1  0 "! 0 '-,% / -65.#. #2;;5+  .*%3>?:3) -8$&5?A?93* ,V1!(7ADCA=6, ,p=+ !,9CGGC:++I5)(04/5?GKLPTWSI8& )yH:7;CILMQW\]VG5# )yxTA>AFKMNQW_b_UE1(pscDCEJMMPV^de`SA, 'ekgDEILNMKMS[bfe]N;& 'Vb`?EJNOMJJNU\cecYH3&JWV8BHMNKGEGMT[ac^Q?+ %@NK1967;CLU[ZQB/$3?8!-:DGC<4/-/5?JSXVK:' #18.'5@DA94,%$)11! !- )7?cogL5-+  $3>?6'  &(7?bngK4--&*7=8+ )7?bngJ3,/,  "1:8-)8?cogK3-/1&+67.!  *8@grhL4-/2.  %25." ,;@jtiL4,-12+!.2-# .;BisiL4++.22'+0-"0=CgriK3+*+/21((.*! !2?DhrhK2+)'+.32-%&+(   #4@EirgJ2+(&'*/461%$)&  &6BFlsgJ2*(%$'*1:=9*&#  '6BFmthJ1% !"&-9DH@%  '6BFlthJ1"*5EOK* F:834331/ - , ,  ,  +  ,  ,  , , + +,, , ,-)/.  .  -  0  / .   -   -   ,  + + * &=<<<;;;;;;;;;20/...--,+3210//.-%    $'&"   !,5::4,#  .;CFFB;2(    "4DKLJHD>6," 0?GKKJIE?7.$  #3=DGIIGD>70'   +6=BCDDA=83,'$"  "-4:<>??><8642/+&    #+0591%  )6EVft{oaQA2'   ,9IYiwzn`P@1&    +8FUcpzzreWH:.%     (2=JWbjnmi`VJ=3,&    %+3=GPWYXUNF>82+ !%%!  #*08>BEEC?=1)$  "*.,' !'-26:=>53,+)'%"",463+# %*/()*,.//.-*'"!,5<<7/& #&*-02332.*% !*5=A?91)" !%),035530+% (2;AB@:3,&  $',/1331-(#%-6>BB@<60*&! #&),,*&" '08>BBA>:50+% !"##!"(18>BDCB@;71* "(18>CFGGEB=60 !(08?EILLKHB<3  (/7>EJNONKE>5 &-5;962/*()0)482& /DRZ`cegijifc_ZVRPMIEB?<82/,)361% +@LU[`dfijlmlkifdba^ZVRMID>83!*24/#  #9DKSZ_cfjmqvy{||{yvqkf_YSKC=8,12,! 0=CIPW]bglt|xph`XMGH710)  #7>BGMS[bit|tkaVPJ10-' *8=AFKR[eqû|qf]O840,% ,8951/-,-,,*($)5>HWjɺZPJB>:7568;?A?=:5,9GZozdYRJD?<::>DKPROLHB .BXoútlc[SLFA>=@HQY^_\WRM 4Ng{}tmd]VNIDBCHR]fiie_ZT 1Zp~|uog`YRLHGKS^ipsqlf`Z 1AUy~}xrjc[UOMOU_ju{|ztnha )9GQY^dinsw{~~ysmf^XTTXalw}wpj !0=IQW]bhmrv{~}ztmf`[Y\cmyyr &3>HOV\bgmrvz|}}{wrje`__eny{ '2=FMSZ`ejnrtuutpkfb`afnw %/8AHNTY^adfggec`_`dku )07=CHLMOQRUVWYZ\afpz %*/25778:>CIOTZ`is~  !"%*1Zdijhea[+ .ETahigc_YU, .BRZ_ab`^ZWQ-.BNTXY[\\ZWSN.+BEGIJKIFA=,#'+/48=?@BDDC@<7, $%'*/479;<=>?<85+ ##%(,025689:;:64+!##%'*,0135689975+!"#$&)+-/23579:86+ ""$%(+-/24689;:9,!"#%'*-/24689;;:,"#$&)+.24689;;. "$&'*-02578:;;- "$&),.1357899/#%)+,/1221.1!!$$2       !*0/)   #1;>=80&   *@?;6/& ",38851*#   (,..-*&"   #%%$#"!"##  !%)/343/'   &1:BFFD=2%)%4ALTWWPF9+  0@NX^`\SI;- #3COZ^^YPE7*  .=IPTSNF;-   $/9@BA;4*    &,-+'"      !  !''!    (,*#    &,-*"    !),,'     "'*(%     $%$"     "#"  "##!  "$&&%"$ !%'(&$. #%%$!.  /  0  0   2 3 3  3   2  (+)$1!,10.*&0$.11/-*%/ %+--,*'" / %'('%" 0  1  4 6?5 5  6  6 787@&$"! ׽!"$(*284376789:9:;;<< 89  *+'*+& ++( ++) ++* ,,1 --, -.+ .0, .1, .22 -22-0/).$',0&)0 "'0  &0  $0  " 0    $    %   0   0   1$  2("  2+#  1-$  &+#  &'    &"  2  2  2 2 2 2 3 0 0 4 4 4 / / 3 3 3 4 4 5 6 8:}&4@DlshJ0  %3CPQC  #2>CktiJ0 0BNRI(  /GC7  (7?juiJ0  %:=7(  '6?jvkL1  &36- &6>iwmM2   $12"  &5>jxoN1  ,3'  %5>jypO2  %2,! %4=kzqP2  2- %3951/011SifK1  & GB>:6431QgeK1 !!OID@<852RfdJ0  !TOJE@=84TgbH/   ![UPKEA<7WgaG. !!c]VQJEA;YgaG. !!ke^VPKE>ZgaF, "sld\UOH@]f^D+  "{rjbZRJA\cY@) "xof\TI?W\R;'"}rh^SH1AHC3#$}oaRC5)9B?1# %teWH:.#3?=0#&tfXJ<1'/=7/'#'&0PLHB=71)"0MHC>83.("0HC>83-)% 0C=72,'#  0=72-($ 072.*%! 03/+'$  /1.*'$! /1.*'$!12/,)&# 142/,(%!2651.+&" 28630,'" 3963/+% 4861,& 550)!7(  8} ' & ( ) *  2  !, !"+ "#, "$-"%3"%4!%3# ( ! 5  5  7 8 8 9  $  %011  2  2  2   &   &  & 222223800<<o;9 8 8 9::,,+++*$*)(( ( ( ( ( ( ( ( ( )))*****+,--/8003<<<;;;<:9:::988768{@@ Frame 14     4Hk5"8; 88 7 7  6  5 1  0   /   /  $" .  "*! -   (* -! '$ ,#  !+$!  *%#   *&$   *'&  *(' **)  *,)  *-+  *.,  *0-   +1/   *30  +41  *52  /52  /52 *30 /2.  //, /,+  /*) /)' /'& *%$  *#!  +!  +  +  /  /  /   /    ,   ,  / 0        /:7  5-1'4 )GI:, 3 .MO>2(1 1OQA4/$ 0 2PRC74/ / 3QSD:9;0 . 3RTE=?GD1 -4SUG@ETXK( ,6TVIDK^keP) +:VWKGPex|lJ" +;WXLISi~kF *9VXMJTjf?*8VYNKUi~|_; )8WZNKTfyvU% ):YZNKTeum;)TpzuM);Z]MB:).59]_MA&',/0--.5Ux)=]_MA9',/.*'&*3fy)=]`M@.',.,&  &_aM@%'+-(  F)<]`M@6'+-(  :);\`M@6'+-(  2)<\^L@%'+-(  %)<[]L@%(,-(  !):Z]K?$',-(  ):Y\K>$(,-(  ):XZJ>$(,-(  $):WZJ>$(,-(  0)9WYI>$(+-( 8)7UYI>#'+,( 9)8TWI=#'*,'  #:)9TWH=#'*,'  )=)8TWH=#&*+& .:)6RUG=#%*+& 52)6RUH="&)+& $4!)6RUH>$%)*& )) )4PTH=5%)*% *)4OSH>6&)*%  )5ORG?8%)*%  )4NQG?7%)*% 4MPF>6%))%    3JMD<4$()$  "),*'#3EG@82$')$ 9 9 9 8 8 5 52 1   0   0   .  -   -   -   ,    *   *  * * *  *   +!   *#   +$"  +%#  +&$  +'% /(& /'& *%$ /%# /#"  /!   /   /  /  *  *  +   +   +   /   0   0  0  ,  ,  /  0 "   :766554332110ټ/..--,+++++++++++++++ + + ++++++++++++,./., ;83322 1 /  .  ,   +   +   *  *  *  +  (  '  *   *   *   *   )  &  &   & ! '! '" . $ -!& 0"'  /$*   . %+  - (-   , )-  , +/   * -0  ) -0 ) -2 '92 1  0  /   .   $$! . #))'! -&%+-,'" -1"'.010+% ,K,!)058871( +c4'$,28=AB?6* *u>.&$(-5;AHLKC7)*zf4-)+06=EMSTNC4% ){n=1./48?FOWZVM@1! (wqH5236:@GPY][UL>.'qoW7568;@GOX]][UI:)'jk_7679<@FOV[]][SG5$ &`fZ4579;@ELSXZ]]ZQA/%V_U0359;>CIOSUX\\XL;) %OYP+/369<@EJMOQW[\TF5# $HTJ&+/379=ADEFIPW[ZP@.$COC"&+157;=?>=?FOWZVK:( #@H:!(.258=>856;EPWXRD2 #>B0$+0=U`XF>.2:EPVUL<* "?>$"*/Iil]J?+'.9ENSOC2 "A;!).Unr^I>."+7CLNH9( !@3 '.Tmq]I=3)6AHH>/!?,&.Tmq]G<3!(5@DA5'  ;%&.Smp\F<5$ )6?@9, 4 &.Smq\F:8+ +6=;1" * &-Tnq\E;92  !.892&  '.Unr\E;96'&163)  (.Xqs\F;880   *10* !(/[tt]F:775+ $+.*  ")0Zrt^F9442('*(!#+0Xqt]E920121)#''! %,2Yrt]E91,,/33,  #$!  &-2Zss\E90))+056- "   '.2]us\E80(%'+287-  '.3_vt]E4(#"#'.7>:,  '.2^ut\E/#*3=@8 F;:43331/.,++++ ,)( * + + , +  + + ( . . . - 0 /  .  -  -  ,   + " *  # )  # (=<<<;;;;;;;;;20/...--,+3210//.-%    '/31+# -:DJIB8,   *941.)$   !-6=CFHHGFCB@=83-&   #+29=AEILMNNKF>7-$  %+29AIPW\^]ZTJ?4)!  #+3;8,# !   "'+03699/,&$"  %&%! "'*$#$$%%$" !'*,)%  !#%%&%$"!',01/+&! "$&'&%#&-26763.("  #$%$#!$,39>@><71+#   !)2:AFHGE@92* $.8AHMONKF@7/ '2=FNRTTPKD<2   )4>HOTVVSNG>5 )3=GNRUTRMF>4 '09AHMPPMIC;2! "*3:@EGGEA<5.( $+17;==;84/)( #).02320,)%* !$')**)(&#+ "##%%-+ &)..-*+ "(.11/*'- !+6:850)$.)5;?>;6/)"."1?>=<93,#. #.589:974-&- &,0122/,&- "'()(%# ,  ,  ,   , , , , - . / 15 &=FJMNJFA<62,'$2?@940"'($  #=R`gjhc^XRMID?:6/05951."&($  "=Vgryxvqld^XSMIEA=841220/!&($  5Pesz~|xrkc]WSMIEB>951001!&'#  94!%&" 9Ramuz~~yuojd_YTPLF@:!"%%!  .IVajry~{ung`[VOG@6$%$  !>NU]fnv}硞}umf_WNFC.%# /FNUZakt{xpg]RKB'%" 6GNSX`is}¼wlaWF.)&" :HMRX`it{obY>0*&" 9FLRW`jyʾ}pdE60,(# 5DKQYbo~ĸ}pb?61,)%"+?IQYdrǹ{iD<51.+('&%$$#!6DOZfuĵyLA;62/-,,-/010.+( &9IWgwȹjTIB<7310036:<<;952#: &=Tizsf^WPJD?;879;<>DJPVWXVRNJ *6Hku|pjlkkjheb]YSNHDA@AELTZ`bca^YU  -7AGMRV[]abefgfdb^ZUOKGEEHNV_flopolgc $.7>DINRVZ]_bcdca^ZUPLIIKQXblu|{vp &/6CIR\iv !%)/7>HS`n| '/:FTbp| (4CRanz !.>N]it}% '7FUakrzz' ,??<84+ ##%(,/24578:;963+!##$')-/135689974+!"#$&)+-013578986+ !"$%(*-023689;:8,!"#$'),024689;;:,"#$&(,.13689;<;- "$%()-12478:;;- "%'),.1247899/"%)+-/1210.1!!$$ 2      $    ,6=;4(/?KONG=0"  6LVXURJA4&  0EQVWUPJ@4&  4CKPRQLF<0% *8AGIHD=6+! )39;;94.&  "'+-,*&!   !"#$&((&#  !'.2554/' (  )3;ACD@8/# (4=FLMKE<2& +7@IMNKD:0$ (3A;$  #+0Yss[D- "4=@>0  !)/Yss[C,+9>>5  '.Ytt[C, .9<9(  '-[uu\C! .9<3 &-Zuv\C, 2<:*  &-Yuw]C, %:@1  %,Yvw]D"5@7  $,Zwx^D"0@9 $,[xx^D! +@:" $+Zwx^D!&<8 $*Utw]C*66$)Rqt\C,33  $(Qos[C(-0 %#! #%'OmpZB! ', /+('%%&LjoYB! #' 63/-*(''KgmXA "!>962/,)(KglW@  !FB=951.*OhjU? !QLGB=83.SiiS>!!]XRLFA:5WigP; !!kd]VPICSXRA/ $th]QF;MSO>. $}qeXLA7GOL=-  %xl_RG<2EMJ;-&{ocWLA7/BKI;+'pf[QF=5-@JG9).d\SJB:2,>HE7%.wodG@82);C@1 /tmdZSK@17<7) 0slf]UKA601-!0lh`YQI?6+# 0f`YQIA91(0]VOF>7/)# 0RJC;2,&! 0F?81+%  0;50*%! 04/+'#  /1-)'#  /0-*'$!12/-)&" 142/+($!2641.+'" 28630,'" 3873/+% 4861,& 560)!7)  8}  $ (  $ ' !$ + !$ * "$ * "% 2"%2#&2#'2#'2#(2#(3"'3 !%( #) !6  8 8 8 0 $ %01  1  2  2  2   %   &  &22 2 2 2 2 700:<o;9 8 8 99:,,+++*$*)(( ( ( ( ( ( ( ( ( )))*****+,--/80037<;;;;;:9:::988668{@@ Frame 13     0II4UIPZQg }: 8 8 8 7 6  3! 2#  1#  0$   /%" %%/'# #-& .)% ,/ -*% ",) ,,'  &+-(   */*   *0,  *1-   *3/  +51  * 62  +!83  +":5  + $=7  * %>9  + &@: + 'A<  + 'B= . 'D> . &B= * %A; * $>8 /#;6 /!84 .61 .40 .2- */+ *,) **' +'$  *%"  /"!  /   0  -    ,  ,  /  0 #    n7 5;@4%4 7Z]J7& 4?cbN>23BeeQB:-2CfeRD?: 1DgfSFDF: /DhgUIISN7 .FiiVKO]aQ( -HjiXNSerkR% ,MlkYPVj}oH ,OmlZQWlmC+Kmm[RXki=*Jmm\SXi~c9 *Knm\SXgy~X"*Mon]SXetr:*Pqo]RVco}d1 *Oqp]POZgs~xP*Oqq]NE6Nfr|k2*Orr]L>$*3^oyy`,*Nrr]K: ")0Jl{sE*Mrs]K8 $)/Lm}~d*Nst]J7!%(.Ior*Ptt]J*!#$&-Iq{*Ruu_J" !!$+Lu*Qvu_J4 !+`y*Qvv^H* 6j|*Ruv^G "Yt*Swv]G Bi*Uxv]G  !]*Swv^H!  P*Pvv^H1  G*Out^I1 @*Ott]G"  1*Nss\F!  ,*Mrr\E!  **Mpq[E!  +*MppZE   1*LopZD  A*KmnYD  &J*JlmYD   *L*IkmXD  /M*KkkWC 7O*IjkWD >L*HhjWC  FB*HhiWD 1E/*GghWF! 87*FegWF1 9( *FefWG3 %*FdfWG4 *FcdVH4  DabVG3   C]`SD2  #+3752-$BWXM@/ 9 9 8  8 8 7 4 2  2   1    0    /  /   .  -   ,  *   *!*# *$!+&#*($ +*& *+' +-) +/+ +0, *2. .2. /1- *0+ *.* /-(  /*'  /)&  /'$  /&#  *$!  *!   *   ,+ 0 0 0 ,   ,   , / 0 0   :м766554332110ؼ/..--,++++++߯+++++++++ + + +++++++++ݾ++Ϳ+,..., E943221/. ,  +  +  *  *  )  *  *   *    *   *   *   *   ) "   & &  & ' & ' & ) ( !+ .$,  -%." 0%0#  /'2%  .)4&   -+6'  ,-7(  +-9(   * /:)  * 1;*) 1<*'420 0  /   .  -  -  ,)"#%# +A#!&+13/& +Z*#*3?EC7)*p5%!&-:ISQF6& )x]*"!#(0>OZYPA1" (|i2&"#%(1?Q^^VJ=- ({o>)$%&)1@R_aZQG9)'wqO*&&'*1@R_a]VQE5$ 'rpY+&&(*2@R_a\YWQC1 &kmX*&%'*1?R^`\Z[ZQ>* %diW(%#&)1?Q\]XW[_[M8$ %_gT&"#$(/=OYZTSY`bZH2$YcR# #&-0 % CopYIA9% "0:=4# HrpZIA;- %197)  LtpYI?82' (25-  IsqYH;51-#  +3/#  HsrYG90--$%./& !IsqXF7,(*..'  *.) "JuqXF6($&*0/#&-) "NvqYF6(""'-1. "*) "OwqYD0% "(02,() !NwqYA%,12(') G<:444310.- , + * , , + ,  +  +  ,   +   + ' & ' ) . .  .  0  / !/ #- % -& , ( +") *"* *"* )=<<<;;;;;;;;;20/...-ߵ-,+3210//.-% !   %1;@=5+ ':JU\ZQD6'  5L^jnmf\N>/  "9SitwvrlbSD5&  3LbouwwslcVG8*  #7N^jqtrni`UG9-% !0CT`hkkhc[QE9/)%   %5ERZ]_]ZSLB:30+'"   '7AJOQQOKGB>;83/)#   *3;@DFGGHGGEB>80)" #*17HQZadc_WNB7-&     !'.5=EKPRPMF>6/)"    !',16:==<840$   "&*-/021($    !$ "$%%"  &+0341,&  "*3;BEEA:3( "-9ENTVTNF;0  ,:IU]aa]WMA6   &6FU_effaZPE9   +:JX`efd`YPF9  +:IT\ab`\UMB7 (3@KSXYXUNF=3  ",6@GLMLHD=6.' $,4:>@@=950+( $+/355320-** "'*,-..-,+ !$'),.01<+  $04:=<:, )08;=<:8- &0:@@?<72. "-7=BCA=82,/'6?DCCB@;4-&/"4@DEDCB?91( . #/7;=?>=93*!- #+/1331-' - $%&%#  ,  ,  ,    - , , , - . / 16 "0MX^aa\WQKD>60/?NNE;-  ,Mhyztlf_YSMHA;;Zkvyqjc^YTKB1  +N`ip{|tle_XNE>$ ;V`flv}tme[QF9 EX_djs}|sh]Q=$  HX_cir{żwk^P2$ %HW^cir|ƺzl^9)$  BT\bjs}xiV1($!8O[bisĶt]6.(%"!&DU`jt}k<2,)%$#""#"!0HXfsŴYB72-*(&&')*++*(&$-H\l{zNE=62.+*((*,.0121/,*,F[n}s[OG@;730.+,,.1468764201RdrykYSNIE@<9520./1369<>>=;9",;\hnsxy]VTSQOLJHDA>:742249=AEHJKJJH  (06;?BDFHIIJJIIHEB?;86556:@FNTZ_aba_  &,158;>ACEFHHFDB?<9779=CLValtz|{yu  &+/269<>ACDDCB?=<99:?FP^m|  %)-1479<>?@@?>=;::;@IVev #&*-02467889988:@IWh| "$')+-./012346=FVh|  "#$')+-17@Pbu !$(-7FXl~ "*9K^q ):Naq} &9N`mw  "6K[gow~'0DT_fmsz( (;KU]bioty})0@KRX^dinr* $3>GMS_j+ %1;D^t, "=Vly-"Iapx}}.1J[emrv{~{tl. 1>HQY^dimolg_V-#*18?DIORVVUOIA,"%*/37:=@ACA>83,  !#%*-02457751., "#'*,./12330-+ !#%(+,./02331/+!"%')+,.023431+ !$&(+-/023553,  !#&(+-/134554, "%'*,/023565-  "$%),-023465- !#%'*,.01233/"%'(*,-,,)1  !2     )-)   )8DKH?1"&FIHD=4)   )0442-'  ! "!  ' "$'('$  !'-1463-'  !*29=?>:2*!  %.7=AC@:3*   #,3:==:5,#  #*/10-(!  !!                      ',.-)! %/7;=:4+!%2=DHGC;1&  .=GLMKF>4'! "2>GKKHC;1&#  .9ADDB<4,!/%/69973+#/ "(,,*&  0  0  2 3 4 54  2 &))& 0$031/,)" 0*6:9540,$ / (02442/*!/ %(**)%  0  1  4 6@55  6  6 797@&$"! Ӷ߾!ٹ"$(*2¾84266789:9:;;;< 89 0<(& 0<('0;'11;% *1:$ 11:$  %2;# %2;"  %2:! 22: 21: #1://8 $.6 # ,3 # )0 $ &- / #*0 "(0  !%0  "$   %   0   0%  0)   1-# 1.$ 0,# &*# &'"  0&"  0&#  0*'#  1960# 273.(" 250+$ 2.*% 3&! 0 0 5 5 4 0 / 3 3 3 4 5 5 6 8:~ !MvpY@  (-1.$$(! !LupY? $,/1-#' ItoX> )/0/(!% HsoW=+/1- # ItoW=+140 "  KunW/"0;=)   IuoX<,?G?  HtoX=#?NF HuoW/95/*%Mlr`M*![VPJD=60Ukm[H'!ohbZSLD<[igUC$"}ume]VNF`gbP>!"|skcZSJae^M< "wnd\TK_b\K: "yof\SJ]a[J9#{qf[QH[^YJ9 ${peZOFX\WI9(%yncXNDTYTG9( %vl`VLBSWSF8& &~sh]TJARVRE6! (zpf[RH@RVRD2.}umc[RI@QURA-/𘏅d[RI>NSM:%/񓋂xofYIIKA/ 0񑋂yocWH>;2"0}sh^PC3' 0{rh\PD7+ 0ukaUI>3*! 0bWL@5,$ 0KA8/'! 082+%! 0.)&! /+(%"  /+(&#!1-*(%" 1/-*'$!210,)'"230.+(# 331.+'" 431,'"50+% 7$ 8}"* '#+ '#* 1#+ *#+ 2$+ &$+&$+  %%+  %%+ 2 %,  $ %, 2 $+ ' ") ' !'( %,#8 888 $ %0  0  1 2  2 2 &  &222 2 2 2 2 6 00;<o<98 8 9:;,,+++*$*)(( ( ( ( ( ( ( ( ( )))*****+,--/8003<<;;;;;:9:::988668{@@ Frame 12     ,&B;9 8$ 8& 8( 8)"5+$4-% 3.& 2.' " 10) *+ 02+ (4- /5, 17'/!7. %21 .#8/ $+$,#:1  +$<3   +#=5  +$>6+&@8+'C:,*E< ,,G> ,-J? ,/MB +1OC ,2RF ,3SH! ,3TI! .4UI! /3TH! +1QE +1NC /.KA /+H> /)D< /(B9 /'?6 +$<4  +"81 +5. +1+ +.(+,'+)$,&!,# , , . 0 & !  o97&PVF05 Kvt[E14 V~w^J>"4 Yx_ME83 Yz_MJG&2 [{aPOTF/[|bRS`]>-\}cSVio^' -_~dUYn~xW ,deV[pyG +efW[qu? *cfWZnp:*bgWYjk3*bhXYgy\ *eiXYft}7*hiWXdo|j**ijVOYgtP *gkUA+Ebrq,*glS6%Sm|b$*dkS3!60&@70&?7+&=4+%;30"900 6/04-01+01)+-( ++%,($+&"+$ ," ,  , ,  + , / 0 1  # 便:˶766554332110չ/..--,++++++ݩ++++++ޮ+߬++ + + +++++++++ٸ++ĸ+,..., E:54332 /.  - ,  +  *  *  *   +   )    ) !  * "   * "  "+ $ !! **, +,* % 1*   %!1, %!3- &"4- / $60 / %91 . ';2 0 (=4 / )@7!  . +B8"  - .D:"  ,0F<$  +0G=$  *2H=$ *4I=%)3J<%(420/. .   -  -  +  +5+2/$*T*APL<) *p)1ReaM9$ (|T4WliVD1(h& 5YojYK=) 's4 6Ypk\QI8" 'yG 6Ypl\UTI3&~{U 6Zpm]X[YG* %y{Y 7[ql\X`eZ>"%vxZ 9]qj[W`ljU5 $rw[ 9^qiYT^mtiN- #lv[7\ogVPYivyfH)#irW4XldSMTcs|wcC$#enQ3[nbPIO[ky~v\: "fjF SpZEISaoz|nO+"hf3 *kq\C>HUcoxt`? "ka& 0poYD.6CSamqiQ0!kW /pnXG*;M]hi\A# !hL /pmWE#  3GXb`O3 d> /omWF# .CV^XC' [*  .onVH+  .DUYM3 K /pnWK3 /FUS>  1  /qmVH6 1GQG+  3tmVH7#5IL7 6wmVG8( %+"!"  ",   #?\vvfSA0$  *B]s}rcR@1&  %8Pet|~{si\M=1)$   *>Rbkooke]QE:2-)%! .?MU[\ZUOH@:62.)%   $0:BGIHGECA><:72+%  '/49=@BEHJJIHD<4+#  $*052(!  #)/6=CHLMKHB80)#   "',04899851,&    !%()+*)(              '/451+#   +8EPSPH   &=Vlz}wnaQB 0G^oy~}ztk_P@ !1DYhpuurldYK= *9KZcihfaYNB6  !-EHIIFD. #,4;ACDCA=7/ ,9@BA@AA>93,/#:GKJHGFE>6-#.+6ZitñuE.$ 7Xjxοd7-'#!1PgwZB5.)&$!  !"##"! /RcqaN<61.+)'%#!  !#%%&&%$ !-MZ^`ecE<95310/.,*(&$#""#%&'*,/1478 #&)+-,-../.,*)&$$##$%(,2:CJRV[]  #%')*+,--,+*('%%$$&*2=K\lx  "$&')**+**('&&%&(.9I_v !"$%&&((''&%&&)1AXr  !""#$$%)4Fa~  !""#'2Fc #,A^} %7Sp *Dby 1Ojz 5Vlw~ 8Virx% 6Sdlry(/L^flrx($@T_fkqw*/FU^ekv+ 4FS]u-/Tl}. 'Zt/-Nfw~.%4CQ[eqy}}vj[-#*17?IOQSQKB6, "%'+./121.*%,"#%&''(('$",  "#$%&''&$#+ !#$%&''%#+ "#$&''&%+ ##%''((',  ##%''))(,"#%''()(-!#$&'()(."#$&''0  !!1  3      &281&  1DSZXL;( -I`otrj[H3  3TpzpaN8$  (Igyyn_M8#-Ldsz{xqgXE3 $>SbjmicYK:* ) + !0q|f>  !0ozf> !0nye=!$!4nvb;!863.*$@pp^8![XRLD=3+RqwgW3 !{sld]TJ@]kk\N. "ypiaYOce`RE*"}ume]Vef]OB)"wnf^Wee_OB(  #yof^Ude_RC( #{qg]Tbc_RD( $|qf]S`b^QD5 %|qf]S``\OC5 %|rg]T``[OB3'}rh^Tb`[N@+ '𛒈tj_Vba[N= /𚓊wmbXca]N5/񷯥{qeYbaZE( 0񳬢uc^ZM30񱫢}o_PG7 0񭧜ueS=* 0񣛐rbR>) 0xfTD5& 0teSA3& 0M>1& 0-$ 0! /  0  1"  1#"  2%$" 3&%#!3'&# 4'%!6%! 79 } $5, ' $5* ' $4( 1 $4( * %3' 3 &3%3 %3$ % &2# % '3" $ '3! % &1 % &1 &&0 )$. )#+ +!) +' -$ 8"8 8 % 00  0 // 22 & %.22 2 2 2 3 6 88;<q<;99:;,,+++*$*)(( ( ( ( ( ( ( ( ( )))*****+,--/8003<<<;;;<:9:::988768{@@Frame 8      ЕЭ V: 8# 8*#8-&8/'81)5!2+4"4,  3"6. 2!6.% 1"70 ./0$;2 ,92 /%=4#7=,/(?6 )76" .)A8 '0(.+C:  " ,,E<  -+G>  ++H@*.KB */ND +2PG + 4SH! + 6VK" + 8YM# , :\O$ 3 <_R$ 3 =`T& 3 =aU' 3 >bV' 3 =bT& * ;^Q% * :[O$ 3 7WL" 33SI! 31OE 30LC 4/I@ ++E= +)A9+%=6+#93+!6/, 3-,/),,',)$ +% ," - 6 +'    n8 6-]eR95XlQ94erYI)4jt\RA3jt]XQ, 2lu`]aO1luaamiE1mvbdw|g) 0qvbf}]/vwcf}I.wxce{|@-txbcvv:-sxbaqp3 ,tyb`n`+wyb`kx6*{za^hsn'*{z_T[ivO*yz\A(@^qs) *x{Z5Jj}a*v{Z1  2e}y;*v{Z1 2g_*x|Y/ 2jq*{{W 2m*}|W:u*}|X*W*}|V  (p*~|TZ*{Q ?w*|Qm*|Tc*{}V&]*z|V&W*z{S D*yzQ =*vyO ;*vxO =*wxOJ*vwOb*swO8o*qvO @r*quN Jr*qtNVt*qtNaq*nsN *kf*nsPLjJ*msR!WX*ksU) .Z@ *ksV,  2?*krW. *kqW. #iqV- ! emS+ 1?LTQKD6* b|yeM( < 9 888 8 5 4 3   2  1"  0$  0&"   /(# /*%  .-'  -.) -0* +1,+3.+!60+"91.$;4.&=57(@87*C:7,F<7-G>6-H?6.JA 7-I@+-F>++D<4)B95'>74%<54$:35#80+!4/ +2++/*+,'+*%,'$,%!,# ,  + , - 77 (   便:˶766554332110չ/..--,++++++ݨ++++++ޮ+ެ++ + + +++++++++ٸ++ø+,..., 20 / / /  4   5 ! - # 2 $   * %  ) '  0 ( %"/!)  &*!/$, (( .25!  %-32   %#73   %#85!  %$:6# $&<8# $ '?:%( )A;&' +C=&/ +E?(4 ,IA) 3 /KD* 2 1NE+ 2 3PH, 1 4QI- 0 5RJ./6SJ.-5SH.'F94311/  .. %0/# -N "ATO=),n! ,TkeO9"+}L/ZslVC0 +d0\tmYJ<'*s+ 1\umZOH7 ){@1\un[RSI2)Q1]vo[UZ[H((W3_xo\V`h^@ (Z5byo[VappZ6'}]7dzo[U`r|qS-&x_5cyoZS\ooM*&u~]3`xnYQXj|lI% %szV2d|nXPUcug?%swMSfNR\l{{X/$vr7  lhMGQ`o|kE #ym* 'sfN5=M]mzv[4#yc&reP!#1BVgtugH& "vV&rcK&$9ObllY:!rF %pcL&2K_icM+!h0 %qcO-  2K_eX;!U%rdR5 3M_^H%  9 &tcO8  5O]R1 +wbN8# :RW@ .ybN9'%CVL-,ybK5&! 2NR;*xaE-"!   $DSE#  )x_?%"! 9QL+ ,z^># "/LN1 /{`@$ ! (GN5 0}a>$ #CO9 0{c) @P>;9 0  1  8 8 6 42* )  0 /   /. #  . !  %"!%$#%%$$'& $)' (+) '-+ //, 41/ 430 2!63 2!84! 1#:6" 1 %;7# / %<7#0 %<5#-=<<<;;;;;;;;;20/...-ݰ-,+3210//.-% .10)   # 3HY_XM=,  "8Vl|ucM8'  .PoqZB.! 2VyybJ5& *KnzcL7)   2Pqt_I7*# "-Ea{ziVC4*$  $4Kcv}thYJ<1+&# &7L\ekjf^UJ?72-)%!  +9EMPROKFA=9641-'!  %.6;?AABCDDCA=6/'  ")049>AFLQUWWSKB8.$  &-4;CLS[bgig`VK@3' $,5>HQ[ckrsof[NA2& ")3=GPYbjnok`UG8," "'.7@HOV\_^XOD8,#  !%*/5+ #)-27&  !dŷzslf]TMF=) 8t˾{tnicZQH=% 5xõ}unie^VL=-nǺwoie`YN?[ʾ|rkeaZOC'  Au·vmgaZOD5[~ǽ{rjaXM?& &hĺulbXI*0mĹzocU?7l~µ|rcP! 'dzɼ}n[9TsͿyd@  ;cxʺkG HgyϾd2  @dw˹uN!  7Wn}oB)  /RbpsK4    #AMOPSN0%   &,     !.;FOUZ  ';Peu~  #:Uq  0Mm 8Z|;_ľ 6Y|+Nn >`x"*Njz'3Wny(9[ov|*9Zlty+3Viqv|+)Jamty+8Seov},#?Vfq-$;g..f//Rm.%4EValytc-$+29AKSUWUOD8, "%(+.0232/+%, "$%&''(('$", !"#$%&''&%#+!"#$%&''%$+!"#%&'('%+!"#%'')(', !#$%''))(, "#%''))."#$&'()). "#$&''0  ""1 3    $.=B:."$%  =du^C+ 0X|r\B)!6\yzhS;$  ,Lfw~vhVB-   3IZdgd[O?-  +:BFD>2%  ! #&%  +   ,   * !&*,,*%)#(.231-'*#(-00-(! % #$"          %$$1(6AGC7*0 *>Q_fd[L8$0 2NeuzzrfT@*/.Mj|}tfUA+/ 9Wnz~|vm_N;'/ 6Ocmqoi`RC0/';841.& /%047:850'/!$((%  0  1  48A656679=A&$"! аܶ!ղ"$(*̿2û84376789:9;;;<< 89 5RF,5 5QD+7 5OB)7 5N?'0 6N=&7 6M;%  + 6L9#* 6J6!* 7I4 ) 6H2 * 5G/ * 5F.  ) 6E+ , 2A) + 0=& + .9"+ +6 -(38&/ 0%+ 0 "' %    $   0%  /, /2# .6' 05' 01&&.% &*%!.+(%"/10,)# 1=<82,$ 1YUO<3*!1]WOE;0& 2[TJ@4) 2PH?5*3>7.%4-& 0 5 5 5/03 3 4 4 5 6 7 8:~/{a >QA -y_  !|vnf_VMCapsg[8 "{sle]Tilh\Q4"xqib\nmgYL2  "{rkd^opj[M1  #}tld]oql^P1 #wne]opl_Q1 $zpg_nol_QA %|ri`ook^QB  %ulcrpj]O?&褐zofurk\M5 (ﮥtixtl[G&.𲫣ynzumY</Ǣp{shM, 0ź}tiV80Źt`Q="0̿yaF. 0ƽs]E. 0񮠍w`M:( 0s]H6( 0SB4( 0.% 0! /  0! 1"  1$"  2%$" 3&%#!3'&#!4'%"5%! 79 } %;5!5 %;3 7 &917 &9/ 0&9.7 (8,  + '8+ * (7) ) (7( )(6& *'5%)(5$)(4" ,&2 +$/+#,+ * -' 8% 8" 8%  $ 0  0 .. 22&&./  2 2" 2%$ 2#  2 5 0 0:<p<9899;,,+++*$*)(( ( ( ( ( ( ( ( ( )))*****+,--/8003<<<<=<<:::::989768{@@Frame 7       N{ :+)>p;98 6"6$ 6%!6'#3)$2+% 1,' 0-)  /.*  ))/ 0+  '2, . 2-  05% - !4.  %0. , "50 $+#, $71  , $94   + %:6   * %<8 * &>: * (@; * *C> + ,E?+ -GA + /JC! * 1LE#+2NH#03OI$03PJ%03RK%03PJ$ * 1NH$ * 0KD"0 .HB!0 +D?0 )B<0 (?:/ '=7* $94 * "62 * 3/ * 0, *-* 0*' 0'$ 0$" ,! *  + - 1 # "    0:6  5 'IPC14Fmr]G13Rz{fQ@% 3V~jVJ92XkZPH* 1Ym\WVF 0Yn^\c\@ 0[oaanp\,/^pbduvX%, cpcexwK , dqdextE + brceuo> * `sccri:* arbbn\! ) csbakyy: ) fr`]grg.) gr^U[gs{O ) fqZI3H_n|k.) eqW>(Rixz]%) eqV9!\) `iK F^) _iK  LZ* ]iL  #SO* \iM ;Q:*[iN  AB*Z}iN/  "@0 *Z|~iP1  "+*Y{~hP2 )Yz|hP2  XxyfP1   WsubM/   2&'oqU !9ScaZVZa_P8!&kpV !9Sb`XTZdh`L3 %fnV  8R`_URWclk_H. %ckS 6P^]TOS`kql\C)$`gM 6Sb\QKOZgptkV%"cZ(  8pqaK27BO]gi_L2 "cQ!  8pp^N%%-;JX`_T?'!aG  7po\I.%5ESZWI4 !]>  7po[I-  1BPUO?( S,  7oo[J2/ANQF3  E  7poZL81AKI;$ 0 8roZK=&  3BG?, =toZK?/ #5AB3   @voZI=3& (9@9' ?voXF92-"/=<.  =upXC4.-+" &7=4  =voWA0)),+"2<7% >voW?,%%*-+  +98( BxpWA,#"%*-& &68* CypW<)!!&++" #38-  CyqW)"&*( !29/ 610/ / 3 3 1 0  / .   /   .   .   -   -  ,  & % % & ' ! ( # ' $ 4 &  2 (! 1 *# / !,$ /"-&.#0'-$1(,%1(,&2((=<<<;;;;;;;;;20/...-ߵ-,+3210//.-% +-+%    3CNRMD7*  6M_nvtiYG4% ,FbxygR>,  .KjnYD2% &Ba}p[G5(   -He||kYF5*# +@Xn~}qcRB4+%  #2G[kuzyumcVI=3.($   &6HV^cda[TJB;62-)$ *7BJNPNLIFB?<950*$  $-5;?BDEGIJIHE@:2)"  !'/49@DJOTXZYUNE:/% %,4;CKT[bgig`WL@4( #+4=FPYbjopldZMA3(  !(1;EOX`gkmh_TH;.$ '.5?GOV\^]YQG;/&  $)/5=BGKLJE>6-%  "'+0378763.("   #%'('&$            $,2540*" #0+  %Xq}ĺwndWI0  ,\r|ĺ{pdUB"  1\p|¶~rcP(  %Ulxɼ~n\B Gdt}̾yeH!   4UjxɺkP%      >Ylzͽk@(     9WkzƵz[2%   4Odt{T<-#1Pan{}[J5-&   "/LV[]`]C84-(# %+/268  #%&&%# #,7AJPUXW "-;KZgqvxxt (7J]q  .@Vl !1D\u  /E^w   *@Yq "6Of{ )BYn~ 0I`p|%4Nbnx' 5N`lsz) 3L]hou|* -FWbjpw~*%,  .CR[^[TJ<-   *6>B@;2'   #&&# )  &  #%$!) $)-//+&  )$*0342.(  #).00.*#  !%&%#           !#! ! !+48:6-#! +9ENQNH<-" .AP[a`\RD5## (=Q`hig`TF5%. .CVaggbZOA2". +>NY]\XPE8*/"2?HMLHA7+/ "-4885.& 0  $%" 0  2  3 4 4 4 %%!2  '+,)% 0%0531.+%0*7:9751.& / (034530+"/ %(*+)&! 0  1  4 6=5 5  6  6 784@&$"! Ӷ߾!ٹ"$(*2¾84376789:9:;;<< 894E4$(3D3"(4C1 14C0,4B.24B-'4A,&4A*&5@) '4@( '3?'  '3>% 52=# *0:! $/7 # +4$ (1 $ %. / #+ / "( /  $$  %   0#   /)  .." /1% 01& //% &,% &)$.)&"/.+($0530+%0MJC2*#1MHA91)  1JD=4+" 2B<4,# 26/)! 0)# 0 5 4 3 / / 3 3 3 4 4 5 6 8:~ BxpV  #&(%090  @wpU $&($.8/  >uoR !&()%-5-  =unR #'+, ,3* =vnR  $-49-1& ?wn@  -=G9/" >vnQ *CST. =vmQ #DZZ,  =vm@ D]\;  =vl? B^\9@wl? C^Y9?wl? AZQ/ :ukO  >RH' 9s~jP  :H>!  9q}kK  *<5  9q|j@  /,   8nzj@  %$! 7myi@ ! 9myi?  ! >nue=   !873/+% Ip}qa9 !VRMGA:3.UpxjZ5 !oib\UME>`qrbS0 "xqiaZSKgqm]M- "wng`YQkpjYJ+  "{rib[TkpjYI*  "~tlc\TlpkZI* #vmd\Tlok[J*  $xne]Tknj[J8 $zpf^UjmhYJ8  %|rh_VlmhYH4&}tkaYnngWE-(xnd[pngT>$ .|qg]pmeO6.ƾwk\ni]E+/ºje]N6 0vcRH:'0񻳨{hU@/%0񮤗vfTC2#0{kZJ<0$ 0wj[K=2(! 0VJ>4*# 0<5-'! 0/*&" /+(%"  /+)&#!1-*(%" 1/-*'$!210,*'#230.+(# 331.+'" 431,(" 50+% 7% 8 }%1&)%1%)%1$3%1$,&0#4&0"  ('0! &&0  &'0 ' '0 ( '0  ( &/6 &. + $, + #* + "( , & ,$ 8! 87$ %0 0 0  /  2  2% %/0 2 2 2 2 2 5 009<o;98 8 9::,,+++*$*)(( ( ( ( ( ( ( ( ( )))*****+,--/8003<<<;;;<:9:::988768{@@Frame 6     O+OCGO_amgn:9 6  6 6 5 5 4!1" 0$!  /$" .%$ %$-'% #-% -)&  *. -*'  !+) , ,)  &+ -*   * /,  ) 0-  ) 1/  ) 31 * 52 ) "74 * #86 * $:7 ) &=8) '>: )(@< /)A= /)B> /)C? /(B> /(@< / &>9 / %;7 / "85  / !63  / 41  / 1.  * /,  * ,) +)' *'% *$# 0#! 0  0 + + + -  #        .75  3 ":@7) 28X]M<+1AcfUE7! 1 FgkZJ@2 0 Ijn^OG?%/ Jko_SNL=. JlpbVTXR; - KmrcYZeeU- , Mnse[_mwnU) + Qpse^bsqL" * Squf_cuoH* Qqug_ctj@) Pqvf^crd= ( Prvg^an~}Y%( Rswg\`kxq<( Ttxf[\gr~c3 ( UuweWU^is}vP ( TuxdTL( LjmZG   -?-( KimZH"  12( JhlZG3  0# ( JgkZH4  ( JfjZI6  JfiYI6  IdfXH4   IadUE3  /5<@=:5+%!"I[\OA0 ;8 7 7 6 6 4 3  1   0    /   /   -  -   -  ,   , +  *! *#! *$" +'$ +(% +*' * +) + -* * /, / 0- / 1. / 2/ / 1. 0 0, * .+ 0 ,* 0 *( 0(& 0'% 0&# *#" *"  +  * *0 0 + ,  *  + . 1 !   :766554332110ټ/..--,+++++++++++++++ + + ++++++++++++,./., <54420. - -  ,  +  +  +  ,   (  '   *   *    *    +   + ! % &  $ ' %"( %") &#+-&-  -'.! 2(0# 1)2$  0*4%  .-6&  -/7' - /8(  + 19) * 2:) * 2:( '421 1  0  /   .   -&   ,> &,/,% +V'$/9><3(+i1)6CKJB5% *rV%+;JSSK?0! )ub.!-=MWYSH;,)ti:"".=NY[XOE7((qkJ&#/>NY\YTMC4# 'miT'#/=NX\ZWTMB1'fhS&#/=LV[YXXVL>+ &_dR%#.HS[^YL9% "OI#Go}q_VD.19EOWXPB/!OA Gn}p_SG%#*4@KQPG6% !M: Go}p]QD0$1=HLJ=- J2 Fn|p]OD/!/+ $0::3%   Krp\NE?3 '274)  Ntq\MD=8, *22+  Msr\MA:73' #,1-#  Ksr\L?6431' &--& Ksr\L=3/031( "*,' Muq\L=0+,/31$'+(   Pvq\L=/('+/4/ $)(    Qwq\J7+%$&+25. '(!   Qvp]G% "'-45*%(! <;6410.-- . , - - ) ( ,  -  ,  ,   + %  %  %  (  -  .  -  2   1 " 0#  /$  /&  .!( ,"( ,#)+#)(=<<<;;;;;;;;;20/...--,+3210//.-% '(&!   /:CGC<1%  1BR^edZN?/"  (=SguzztiZH7( )@Zs{p`O>-! "8Rl{|qbP@0%  '>Vjxxm_P@2'! &8M`nw{zvoeYK>2*%    -?Q^gklic[RG<5/*%!  $1@MUY\ZVQJD?:51,&! (25,$  %,39@FNTZ^_^ZQH=2' #*2;DMV_fklibYNB6*   !)25( #-7AHMONJE?70* %-6<@BB@<83-* %+04676530-* #(+.011/+ "&),/235C+ #&59ADB@+  .7>BCC@>, ",7CIIGD>9-%2=EJLJF@:3- '6BHIIGFA;3+."3>CDDECA;4,#. $07;=>><93+#- &-13432.)!- #')*)&#,  , ,    - , , , - . / 16 .::HTSH<- :Zszskd]VPJDEJKB7+  7Zw|ung`ZTOIEC>6+  #Oo|tmf`ZUOHB<5-  3Vxyqjd^YTNF>5+  .Wwwohb]XRKB7 )Qnwohb]WPF;  Cbvwogb[TI>- 3UjxĽwng`WK@8  B^mx~ulcZL@2  !Janwļ{peYL7  'Namu~ƻsfWI,  +M`kt|ĸsdT2"  G[irzʽp_K*  =Ucox̾zhQ-# -I[iuɺp\3& 5L^m{˼uN7+# 2L_põkC7.&  0H]n|fOA7/(# #%%&%%$  2Rcp{l^KD=60*%""'+-0110!,9WaeimmTKID@<83/+(%"!%+28=@BDCC%+0369::986431/,*'%"  #(0:CLRW[[Y "%(*+--.--,*)'%#!!"'-6BNZemsturn "#%&'))(&%$$%)1;JYgu  "#$%&&%$%+3?N_p  !!"#%+3@Pbt  "(0>Oat "+8I\n #0@Sew $4GYky $6J]kx& $7J\it|( !4HXdnu})/BR]fmtz) (;JV_ekrw}* 1@LV\cioty* '5BLTZhv+)6AJk+ (C_w, (Mfv-8N^hpx}~u-&8DOW^cinqsqmf]-*18@FLQVZ\][WQJ,"'*06;@CFHJLKGA<, $%'*047:<>?A@=96+ ##%(,025679:;963+!##%'*,/135689964+!"#$&)+-/23579:86+ ""$%(+-/24689;:9,!"#%'*-/24689;;:,"#$&)+.24689;;. "$&'*-02578:;;- "$&),.1357899/#%)+,/1221.1!!$$2     !)02-% #2@LRQF8(  -CWekjbUC1 .Jetxwrh[H5"%B\nvzxrhYH5#*F[hpsrkaSB1$:M\cfd^TG8) *:GORPKB8+  %/7;:70(   %&$  (    ( "'*,.+&  ' $+15651+$ (  )/59972,$ '-2553-'  %*+*'"               ""! ! %,010+$! )3:>@=7.$" )6@HLKG@6)" "1?IPSQKC8+- $3@KPROIA5). "0=EJKHB:/$/ (3:>?<7/&/ &,/0.*#/  !  0  0  2 3 4 3 %%"2 #+/.*$0$0642/,%0'377430+$ / (/1210-' /  ')**(%  0 !! 0  4 6?5 5  6  6 787@&$"! պ!۾" $(*284376789:9:;;<< 89 1:'( 1:'( 29&119%+29#22:# 229"'3:"&3:! &3:! '2:  '2: 319 3.6 $,3 $*/ $ &- % $+/ #(/ !%/  #%   %   0    0'   0+"  0.$ 0/% 0.$ &+$ &)# &)$  0*&#0-*'#0A<7&! 0>93-(  1;60)" 240+$ 2-(" 0$ 0 4 5 4 / / 3 3 3 4 4 5 6 8:} Pvp\F !)043)%&"  Ntp[F&.263"$&"  Lto[E+257.!%   KsoZD /594!#  LtnZD"18:4 " Nun[5(7?>)! MvoZC2AF=  LuoZC 'ALC  LvoZ4>MG+  LvoZ3:MI, NwoY37LG.  LvoY32GB)  ItnXA  ,A?% Fq~mXB )<9#  Fp}lX= 44   Eo{kX4 +. ClyjX4 &) CkxiW3 !#!" EkvhV2 !/-+'$! JlueT1 !A>;62-*(QnsbQ. !!VRMGB<63Ynq_M+ !!jc]WPIC=_no\I(  "xpibZSLEeplXE%   "yqiaYQJhoiUC$  "~vmd\SLgmhUA# "퍃yoe\TLglfTA# #폅{qg]TLfjeSA# $푆{qf\SJdhcR@. $퐆{pe\SJbgbQ?-  %zoe[SJbfaP>+&yoe[SKce_N;' 'xnf]TKbe]J7! -xog^ULaaZF1.ﮥrjaVJ][R>).𨡗ykVTQE2 /񧟖qbRE@6& 0񟘎viZI:-&0sfYK>1$0wk^QE:1'0k`TI=4+%  0TKA80)" 0B;4-'# 071-($  /2.*'$  /0.*'$!11/,)&# 142/,(%!2651.+&" 28630,'" 3963/+% 4861,& 550)!7(  8}#*(#*(#*2#* ,$* 2$* 3%* (%+ '%+'&+ '&,  '%, 4$+  ) "( * !& ) %* #-!77 / % % 0 0 1  2  2  2   &  &  &2 2 2 2 2 2 6 009<o;9 8 8 9::,,+++*$*)(( ( ( ( ( ( ( ( ( )))*****+,--/80037<<;;;<:9:::988768{@@Frame 5     ^+bo;9 6 6 6  5  5 3 1  /   .  - %! , ")  ,! &( +" %# +#   *$"  )%#   )&$  )'&   ) )'   ) *)   ) ,*   ) -+  ) /- ) 1. ) 2/ ) 31  ) 42  . 52  . 52  . 52 / 30 / 1/  / /-  / -*  / +)  / )'  / '%  )%#  )#!  *!   )  *  /  0 0 +   +   +  /  !      -63  2 .1*!1 +FI<0"02NRC7. / 6RVH<5* / 8UYL@;5 . :V[NDA@4- :X\PGGMH5, ;X]RKNZ]O++ =Z_TOTeqjU,+ A\`UQZmoM$ * B]`VS\qlH! ) @\`WT]rf@) @\aWS]oz_= ( @]bWS\nvV% ( A]aVQ[kzm<( C_bUOWht~b5 ( C_aTMRbox|tQ#( C^aRJJD^osw~~k4( C^aQGE1:Cgks|xa/( B^`PE@-3:=Oht}rJ( A^`PD=*.359Oiw}i( B_aOC<(+./15Kl{t( C`aPB.&)++,3Lo|z( D`bOB&&))'$#(1Qr||( C`bOB8&(($$/atz( D`bOA.&''""8ft(D`bOA$&''!#Tk(EabOA$%''! <^(FbcOA$%''  Q(DbcOA$%''   B( BabO@6&(&   7( B`aO@6&(&   1( B_`N@%&(&  &( A^_M@#%('  $( A]^M?$%('  #( @\]L?$&('  #( @[\L>#%('   &( ?Z\L>#%(&   0( >Z[K>#%'&   7( >YZK>"$'&   !8( =XYJ="$&&  $9( >XYJ="#&% ):( =WXI="$&%  ,7( ;VXI="#&%  1/( ;UWI="#&%  "0 ( ;TWI>$$&% %% ( :TVI=4$&% %( :SUI>5$&$    :RTI?6$'$   ;RSH>6$&$    :PRG=4#&$  :OPE;3"%$  (-252/+% :JKA80"$# 98 6 6 6 4  3 2  0   /   /    .    -    -   ,  +   *  *  )  )  * )  )"  *#   *$"  *%#  /&$  /(% / (& /'% )&$ )$# /#! /"! /  / / ) * + *  +   0   0   0  ,   +  + 0 #    :766554332110ټ/..--,+++++++++++++++ + + ++++++++++++,./., E;94332 0  .  - -  ,  *   ,    ,    ,    +  +  *  *   *   *    *   '  $! %! &" & $ -!% -#' 0$( 0 %*  / ',  - )-   , *.  , ,/  + -0  * -0 * .1 '42 1  0  0  .  !"." #&$" -- &)+*'" ,H& (-133.& +_0 "+28!&,268:;=>BHPX[WL<* #>D6#*047;;98:?GPWYTF4" "<>- (/=T^XJE47>GQWVM=,"=:"&.Iil^NG3/48%-Uor_NF8'*0:DLOH;* >1%-Unr_MD;! $-8BIH?1!  <+$-Tnq^KB;+ +7AEB6( 9%#-Tnq^IA;++7@A9, 1 #-Tmp\I@=1 ,8>:0# ( #-Tmp\H?=6# #0992&  #-Unq]H?=:+(262)   $-Yqr]H?<;3   ,20* %.\ss^I>;:7-&./*! %/Zrt^I>9764' !*+(!  &/Yqs^H>73341'&)'"  (0Yqs]G=60/032)"%$   (0Zrr\G=6.,,/34*""  )2]sr\G=6,((*066,   *2_ts]G9/)$$&,5=;/  )1]ss\G6")1=B;  G<<94431/.--.,,---,,+ * * *  *  '  '  (  -  -  1 0 /  .   .    -   + " +  " *  # '=<<<;;;;;;;;;20/...--,+3210//.-%  !  '06:71)  (6BMSRJ@4' !2DT`dd_VJ=."  3J^inmke\OB3& /DXeloolg^RD6)   !3HWbimlid[PD7,# .@OZbefc^WMC8/)$   &5DOWZ[YVQJB;51,(#   *7AHMOONKHDB@<71+$  ",4:@DGJKLMMKHC;3*! %+18>DKQWZZYVOF;0&   '.6@JS\dhjhcZOB6*!   '/9EQ]fnstpi_SG9-"  &0;GT`jrwwrk`TG8,!  %.9DP[fmqqleZM?2(   #*3:3-&  *4=DHKJGB<4, $/:CKPRROKC;2   '3>HQVXXUQI?5  )5@KSY[[YSKB8  *5?IRWZZXRJB8 (2;DLRUUSNF>5( $-5=DILLJE@81) &.4:>AA@=83,)  %+0356541-)* "&),--,*(+ "$&')**4+ ,/5630+ '/57761/, &1;@><71,- ,7?CCA;6/(-"193+$..8<==<95-'. #-3578863-' - %,/11.+% - #'()'&#,  ,  ,  - , , , - . / 15 '2IQUXWSOID?:510;FD;3/!##  1J_lsvuqke_YSMHC?9:>>71-##  -Jbt}woha\VPKGB>:84/,""  A[pxohb\VQMIC=72//""  +Fbw~vngaZVQMIB;4/-""  'Gau|voic]WRMHA81!! #BZm|{tnga[VPG?6   7Rap}|tle_XPE<0 *FWco{yph`WJA='  5MZdnxxof\OE:"  =P[cluti]Q@(#  ?PZbks|vj]Q7)"  #?OYbir|ǻvh[>/("  ;KW_gq}tfW7,&!  1ER\eqp];2*$  $;KWcpʼyjB7/($  "#"!  +?N]m̾^H<4-($! "%),-,+(& )?RfxĹ~VKA92,($"!#(-266530- )?Vk|{fXNF?81,)%$&)/6;>?>;96 3Uht~td^WPJC=72.*((*08@EIJIGDB )6Fdlrv{~f__][XUPLFB<73/,,-3;DMSWXWUSP *3HS\chihfb_  (059=@CEGHIJJHGD@=9656:BMXeouz{zwsn&,037:=?ACEEFFDA?;:99>FP]jv{ #(,0369;>?AA@@><::?GR_m{ $(,/24578998:>GR_m{ !$'**+--//136;DN\jx  "%*/5>HUds #+4@M[jx '3AP_mz"1@Q_ly' ,JSZaglpsuwyxw)'2=FMSY^bf* (2;AHS`*(07Sm{+ 3Jar|~+ !@Ventx|}xr,3GS\bgkortrojd-'7BIPVZ^adec`ZT-*18?EIMPSUVUQMG,#(,07<@CFGIJJFA<, $%'+058;=?@AA>;7+ ##%(,03579:;<;74+!##$')-013568::75+!"#$&)+-013578986+ !"$%(*-023689;:8,!"#$'),024689;;:,"#$&(,.13689;<;- "$%()-12478:;;- "%'),.1247899/"%)+-/1210.1!!$$ 2     !')%  (4=DB:.!  $6FSWWPE8) %;R_b`\UJ<,6KY`ba\UI;,#9IT[^\WOD7)0?JQTRME;0$  #0;ADC?91(    (.220,&    ""!! "##!  $),/.-(! ' &.59;;81( ( $/8>CDB<5+!  &1:AEEB<4*   #.7=:4-$. %.5:;;71*!.  (.3530+$.  %)*)&!/  0  0  2 3 34 #! 2 ")-,(! 1!-21/,(" 0$.220.+'! / %+-.-+)$/ %'((%" 0    1  4 6=5 5  6 5 784 @&$"! ֽ!"$(*284266789:9:;;;< 89 -1( -1' .2, -2 + .2 0 .2 1 /2  & 04 ' 15  & 15 206 205 2/4 1+2$)/#(-. $*. "(. !&.  $/  ! $   $   0   0$   0)   0,$ 0.% 0.% &,% %*# &'! 0%!  0%"  02-* 0.+&! 2,)$ 2'%  2# 0 0 3 4 3 / / 3 3 3 4 4 5 6 8:} )0]ss\F5 #.9CC7  '0\sr\F5*8AE@'  &.Zrr[F4 5@DB2 $-Yqr[F4,>CB7 #-Yrr[F21>?:)  #,[tr[E( 2<<2  ",[tt\F2 !4<9*  "+Zuu]F2  '8=0  !+Zvv]F' 4=5   +[vx^F' /=8   +]wx^F'  *<8#   *Zwx^F'  %86! )Vtw]E0  23   (Squ]D1 /2 &Qos\E-*/%Nmq[E' %, #  $KjoZD' "( *(%#!!"$JhnYD&"!31.+)&&'LhmXC% !>;841.,+PjlWB$   !LHD?;741UkkV@# !!ZUPKEA<8ZlkT?! !!ib\UOJD>^mjS=   "unf_XQKCcnhQ:  "~vme^VOFdmfO9  "|skaYPGcibL8 "튁wmcYPFae^J5 #퍃yodYNC^b[G5 $폅znaUKAY^XF5# $펃wk_RG>UZVE4#  %~rfZOE1(#0wog^TJA7-# 0jbYPG>6.'!0[SKB:2+%! 0ME>70)# 0@:4/)$ 072.)&! /3/,($! /1.+'%!12/-)&" 142/+($!2641.+'" 28630,'" 3873/+% 4861,& 560)!7)  8}  # (  $ ' !$ ,  $ + !$ 1 "$ 2"%  &#& '#'  &#( 2$(2$(3#'3!%( $) !)  5 7 7 / $ $0 2 2  2  2  2   %   &  & 2 2 2 2 2 2 6 008<o;9 8 8 99:,,+++*$*)(( ( ( ( ( ( ( ( ( )))*****+,--/8003<<;;;;;:9:::988668{@@Frame 4     &BDK:6 66 5 3 2 0   /    .   -   & ,   #$ ,   #!+  +  +   )    (    (    (   (   (!    ("!  ($"  (%# (&$ ('% )(& .(& .)' .(& .'$ .&$ .$" ."   .   .  .  )  *  *   *   *   /   /  0  0  +  +   0   !         :53 1"%0 68.$ 0 #;>3*# /&>B7-) . (AD80-( . *BF;323( - +CG=68?<, , ,DH?:?OVK)+ -EJ@>G_qlW.* 0GJBANjrQ& * 2HJCCRokI! ) 0HKCDSp|b?( /GKCDRou]< ( 0HKCCRlrV%' 0HKBBRkm;' 2IK@@Oj|}d5 ' 1IJ?=Hgz}z~xU!' 1HJ>;CKn|vswq6' 2HJ>8A:LVpkoyi1' 0HI<7<6FNLVgs~|R' 0HI<593CJGCSjyu' 1HI;481AGC>>Sp~' 1HI;4,0?D?97B<2-1:Zx' 1II;350=A8,$$+6hy' 1II;3+0=@5(%=jw' 2IJ;3"0=@5%!Ul' 2JJ;2"/=?4# 7\' 4KJ;2!/=?4" I' 3JJ;2"/=?3" 6' 1IJ;23/=@3" )' 0HI;230=@4! "' 0HH:2#0=@4! ( 0GH:1!0=@3  ( /FG91"0=@4  ( /FF91"0>@3  ( /EF91"1>@3  ( /EE91"0>@3  #( -DD91!/=@4 )( -CD80 .<>3 )( -BC80 .<>2!*( .CC70 .;>2  ,( -AB7/ .;>2  )( ,AB70 -:>2 $#( ,@A70 -;>2!$( ,@A60"-:>1  ' +?@600-:=1  ' +??600-:=1   +??611-9<1  +>>601-9<0  +=>501,8<0  +<=4//+8;0 #'(&$!+991,-*7:/987 6 6 4 3 2  0  /  /.  - -   ,  *   *   )    )    )    )    )     )   )   *   *   )   /   .   .   /   /   /   /   /   /   /   )   )  *  *  +   0   0  1   1   ,   +   1  #   :766554332110ڻ/..--,+++++++++++++++ + + ++++++++++++,./., E;8 4 3 3 2   0  /  .    -   ,   +   +   -   ,    ,    +  *   * * *  )  ())* ) )  -    / !#  / !%   . $&   - &&   ,&&  ,''   +  ('  * ")(  * !)) &63 21 $+)! 0 *31) /  .76/% .& /993-% -6 0;<840',V- 2=?<;;6*+m:$"4@B@CFE:) *|H/'7CEEHNPJ9% *}o9)#,:DGFKSYWJ6" )zsD3,1>GHIMU^aYH3(urQ;47AHJINV`ecXE/(mo_A<=EIJILU_fidUA* 'bhdB@BGKJIKR\dijbQ:#&R^]>ADILJGHNV_fih\I2%DRR6>EJLIDBELU]dgcU@) %:HF-8BIKF@;;AIR[bc\M7# #2?<%1=GIE<414KVZWH2"-.JTWN=' !-++:CWjcM:3%#(1=JRQC/!/))9BcpiO;4) %/FeofI4.,)*,.,&(0+   /?FgodI4.+((+-.*#&,(  1@GiqdH4.+&$%&+387,)# !2?GjreI3*$#!!'3AGC'   !0?FiqeI3$$0CQP- F<:84432/ . - -  .  .  .  .   - , , ,++ + +  *  *  ,  ,  -  ,  0 /  .  .   .  - , , * &=<<<;;;;;;;;;20/...--,+3210//.-%    $*-+'   )3<@@:2(   %4AJMNIB:/%  '8IQTTRNG>4)   #5DNSVUSOH?5+  (8CLQTTRNF?5+#  $2=FLOOMID=6/(%" )5=CFGGEC?:742/*%   !+38=?BCDDCDEC>7/'  #).49>DJOUWWTNE9.$  #)08BLWagihd[PB5)  !)2>L[hrvxwpeXI;."  ",8GWfs||ui]M=/$  #.;IYht||sh[L<-#   #,8ESamuyytl`SD6*"    ")0;GS_fihd\QE9.'!     $)0:DMSUSPIA92+$  !"  !'-4;?@A?;74*"  &+)#  %*.1456.,'%$" (251)  !&)%%'(()('$!(4<;6-% "%(),,-,(% '4>B@:1)#  $'*-./-*% &2=DEB<6.(# !&)*,+*&"#.9AFFC>94.)# !#%%# (2;BEEDB>95.) !*3;AEGHGEA;5. "*2:BGKMMLHC<4  "*3;CJORTSOIB9 ")3:61.*'$-65-)+)69/ %8HTY\\YTOJFB=962--00*'*(59/ #8KZdikifb]WRMHC?<840,*(&+(58/ 1FXdlpstrnjd^XRMHD@<95/*&&,'48/  6L]hptwyzyupkc\WQLHD@=93-(%*'37/ 6L[fntx|~}ytpic^XUQLHE@;3-(&26. 3GUajqw{~~{wsoliea]WRMF>5.&02+ *?LWbkrw{}xrkc\VKA81'.0( 6DNWaipv{|rkbXLBA1,,% *=GNV]gmt{~tk`TKB,+(!  /?GNU\eluƽyncYJ4/*%  1?FMT[bmzƹ{od[D60*%  1>ELRZcr̿{odJ=60+%  -;CJPZg{ĶznaE;50+& &6?GO[lĶyiJA:4/,'$! !"#! .:CM\qxRG?83/+)),057641-!0:0D[tk`WNF?840/07CLSSPKGC 5Qk~~pg_WNF@:5237BOY^\XSOK 2\p{~ztme^WPIB<86:BP]fhfb]XS1CTpx~zvwxxvtqke_XRKE@=>EQ`lrsqlgb^ (9EMSX\aeilnopqpmje`ZSMHDDITbpz|xtoh-;DJNSX\`dgiklmkhe`YUOKJNXdr~zt !/9AFLPTY]`cfghhfb^XSOOR[ft~ "-5=CHLRVY]_acc`^XUQPT\fs (08>CGLPRUVVTRPOSZdp} !(.38CHLOQnpwxtm* $*05>Hgqvxwtql* !':O^kstsrokf* $7JXagkllkie`+ 3DQX\_bdedb^Y++:7, !"$',13578:;;952, "$(,.123566530+ !#&),-.0134420+!"%')+-/023431+ !$&(+-/023553,  !#&(+-/134554, "%'*,/023565-  "$%),-023465- !#%'*,.01233/"%'(*,-,,)1  !2         '/43-$ (6@CC>5+  .?IKIFA9."  ):DIKJF@8."  -9AEGFC=4*   %19>@?;5/& %-3442.("    $(('&"   "&+/0/+# $-6>BB?8.! ' #1?HOQOJ@4') .>JSXWTMB6)( !1?KTWVQI?2& ,9DJMLH@6)   +5;><70&    #(*'$      !    ''!   )-,$    (/1,$    $-10+$    &-/-(#    $)**'#    %'(('$!  "'*++*'"  #)-0/.+& . $*.110,' . !'+..-)#.  %''%!-  -  .  0  2 3  3  2 $'%! 1&+*(&# 0(*+)(%!/  %''$" /  "#"!0 1  4  6@55  6  6 797@&$"! !"$(*284266789:9:;;;< 89  () ( (* ' )* , )* + )* , *+ 1 +- 1 ,. 1 -1- .22 -22 -32 ,1.*.$',. %*. #). '.  %/  " /  ! %   %   /   1#   1'   1,$  1/'  01(  &/'   &+#  0%  0  0 0#  0  1 2 2 0 0 3 3 4 0 / 3 3 3 4 5 5 6 8:~ .=FiqeH3$  /ARVG  *;EhpeH2# ,BQXK' (9DgpeH2#  #AQVL1  %8DfpeH2# :PSI3 #6CgpeH1"  'DMD4 "6BirfH1 (<;3% !6AhtiJ2!  $.1* !4AgulK3"   ,.! !4@gwoN2  (0&  !4@hxpN3 #.)   3?iyqO3 .*  3>gxqO3 *)1=cvpN3! &) /:_snN2" %(!/6[plM2 !'*&"%-3VljL2  % 62.*)*-0QiiK2 " ?;7300/0OfgK1 !FB?;7532QffJ1  !NJFA>;95SgdH0   !XRMIEA?:WidH/ !c\WQLHD?ZjeH/ !mf_YSMIB^kfI/ "wog`YSMEameH. "wnf^WNFaj`D-  "}tkbYOD]dX?+  "쌄yodZNAZ\Q;) #쑈|qeXJ70+;C?2%-ZQIA:5/*8@=0"-i`X@:5/(5<8+.g`YRKD:.160% .ga\UMD;0,,( /b]WPIB90(!0[UPIB;4-&0SMG@93-(# 0JD=71+%! 0@;60*%  084/*%! 02.+&# //+(%" /-*'$"1-+)&" 1/-*'$!210,)'"230.+(# 331.+'" 431,'"50+% 7$ 8} ( ' , + , 2  2  "- !$- !%2 !%2 "%3!%3#) ! 3  3 5 7 7 / %%02 2 2  2  2  &  & 2 222 2 336009<o<98 8 9:;,,+++*$*)(( ( ( ( ( ( ( ( ( )))*****+,--/8003<<;;;;;:9:::988668{@@Frame 3      c1=T7 6 6 5 5 3 0  /  . "-"' , &,# *  *  *   * #  )  (%  (     (    (    ! # (   !" "(   ""(  #$ (   %$ (   %%(  &')  '(/ ))/ **/   +*/   ,,/   -./  ///  0// 11/  13/  12/ 11).//-.0+,*)*0 '(0 %'1 %%1 "#+  , $   :621  0$&/()!. *,$ - +.&, -/'!! , -0(#$,, * .1*&,?OJ& * /1+)4Ywv`/ ) 02++>kwU( ( !13,-BqhL ( 13-.CqsaA ' 13,-Cpzn_:' 13,-Cn{wrZ ' 12+,Blzz}s= ' 22*+@mvym3' 12)(9l|quZ ' 12)&4Qylo}}7' !11(%3Acqvhixv1' 11'$/>_j\Ycr]' 10&"-:]gZLVk}' 11&!,9[fXIHZt' 11& ":[eUFBI`{' 20&!:[dS?7;Fe~' 11&!*;[dP7('1Ar' 11& #:[cN2'Br}' 11& :[cM. Yr' 21& 9ZbM./^' !31&9ZbM.B' 21&9ZbM-&' 11% (:ZbL,' 00%(:[dL+' 00%9[dL,' 00%9[dL+' //%:[dL+' //$<]dL*' //$<^eL*' ..$;]dL+' ..$9[cM+ ' --#8ZbL+ ' --#7ZbK*' ,-#7XaJ*' ,,#7XaJ*' +,#7W`J*' +,"7W_J*' +,"6W_J*' *+#%5U^J* $ *+"%5T]I*  **"'5U\H) **"&6U\H( )*"&5T[G(    ))"$4QZF( '& #2QYF)<:987652 1  0   /   .   .   -    -    +   *    )     )     )    )   )   (   (  (  ) ) / / / / /  !/!"0##0$$0%%0%&0 $%* ##0 "#0  +  1 1 1 1+ +  2  !      :766554332110ڸ/..--,+++++++++++++++ + + ++++++++++++,..., E: 9 8  4  4  4  0 /   .    -   ,  / #! /" %."   - "  ,    +  ++ * * * )  *  *  ,  ,   ,  1  0  0 !  .   .!  . !  -  ""  , ##  +&%$ *"'$$!&=3 2)3.!2=JA11  $ETK:* 0 %FWN?3%.& &IYOA:1 -?  &IZQDA>2 +i3 (K\SGFKE0 +H&*N^UIKTVD)*]8.QaWLNZcZ@")ꉃI, 5VcYMO\kkX9 )郀X=.;WeZNO\mvnT5 ({|dLO_kndM. #$ 0L_bU>' )7J\gh[@#" 'DZ_T=)%4H[ecP1 ! >V]\[L/#4I\dY> ! 9T\fm]9%#3J[\J,   7S\psc;%!!4KYR8  4P[pue<%"#9PUD' 3P[qvf<%!(BSM2 1O[pr`9#!! 3LR<  1O[poX4" " 'CRC' 2P[pnV2! #"  9OG,  3Q[poY3! #$1JH. 4Q[qs`8!"%" *EH1 6R\txf;#!$%  &BH4 :U^tvc:" "$$ "?I7 =W`rr\5! "$"U^9$  .CZcvrW2 (Gci>  F<: 9 : 4 4 1  /  /   .  -    0    /    ,    .   / . -  , , ,, - , ,01 - 1 1 0 .  .  . - - ,  +  &=<<<;;;;;;;;;2п0/...--,+3210//.-%         "(++'"   ",2452-'  &2798750*"  #/589:851+$   &.368875/*$   "*035540.)%!  $*.//./010-'    "%(*-16;?FKLH@5*   $)0;FQ]chf]QB3&  #/=N_nx}}xm^L:+   -=QgzufTA1#  (7J`uxhVC2&  -;LbvteSA1%    +5DXjxvj[J:-$    !&,7HXgorqlcXK>2*$  %(    "$+8EQY[ZUOF=5.(  '54) #+5=CDDB>;7.(%" &;D>1$ #*0478831.--+)&" !9LND6) $)-+,.0256752.("6KVRG9,"  #(,159=?A?:5.' 3IWZSF9-$ "'-377/*&" !%+/26863-' &3?FIIFA<73/*& "%'(('$ '18=@AA@>=:71, &-37;@BEFEDA;4  %+29?EJOQRPKD< $+4CGHFB<4+*  $).257741,%+ "$&'&$!+ + , -  $"-  %''$!. $((&&%!. #%&&%$".!""#""-   - ,  ,  ,  ,   - , - - 0 0 2? $),./-*(%"%#"1OXF) $09=??=:630-*'%" "0OWF* %2=EIIHFC?;851.,)'$!#0NVF+ /A5" *05;AFLOSZduzrg\SM6::/  +05:@EJOXhƹukbVB;73,"+059>CJVjvleTG?82*!*/58=CPjƸwmXMHB:3)(-26Qu˽v[RKE@<60)(+/0/,((-4B_ɺf[RJD?<859EOTRNID  (3Joµqe\SKE@<9;I\hje_YS 0Nuƾzpg]UMGA=ACDEFECA=++269<>?AA@>;7, $+/2578:;<:862-"&*-014466530-,"&(,-/0121.,),"%')*+,--+)', "$&&())**'%+ !"$%&'))&$+!"#%&'('&+ #$%'((',  ##%''))(,"#%''()(-!#$&'()(."#$&''0  !!1  3        #"  $+.-)$  ,121/+' (.120/+&  &+.0/-)#   &)+*($  "#"!    %(%   )5>ED=1" ' &8HU\\WM>-   )@VelmibTE2 )#;SeprpjaTD3 )'?Uclnke[N>-!6HU]`^XNA2"  %4AIKIC:.!  (010+$ (#    /4+    /=<0   +>D>0   &:EC:+   !3@B<1$   )5:70&    %*+'!      !$%&%". "'*,-+&!. #(+--*% . #&'&"-  -  . 023  4  2 1   0   0/ 0  2  48B65668&$"! !"$(*284376789:9:;;<< 89"&"#! (!$!#! '"$" * %# * $# ) %% 1 '(1 (,- *0+ *2,)21)22 (2. &/. %-. #+ .  ) . ( / & / # 0  %  0 " 1  " 1!  1&   1-%  13*!  16+"  04)   &-#  0# 0 0 1 2 2 2 3 0 0 5 4 4/054 4 5 5 6 7 8+=WcwqW2  (IfnY  #8TbvqW1 &JelY$   2SatoW1  KfjV) /RatpW2 KfeP*-Q`tpW2 >_]E(,O^urY2 %=E5%  +O]tt^5  #"#! +M\twg:   *M[szl=      *L[rzn>    *KZs|o?   )KZr{p?  )IXoyn>   (ETivl=  #*BMdqj= >80)&0?E\nh=  OHB;77;>Tie=  VQLGC><;Ofd=  ![VQMIEA84'%!!)' -B=94/*$%" .EA=83-' .A>:51,'" /=:62-)%  0951,($  04/+($  0.+'#  0*&# 0&#! /$" 0#! 1#! 1$"  2%$" 3&%#!3'&# 4'%!6%! 79 }  '  &  *  *  )  1  2 -" +$ - % 3 % 3 $ 3 # 3 ! 3 4 7 8 80 %1 2 22 2  2 2  &  % 2 223443789:<q<;99:;,,+++*$*)(( ( ( ( ( ( ( ( ( )))*****+,--/8003<<<;;;<:9:::988768{@@Frame 2     dFd^ dzu=::9875 2  1""0%'0%( /%( /$' -$' ,&(  ,-* * /-   ) +- %) ) +-#/-) ,. ,3') .0 /.) /1 () 12) 24 ) 45) 57* 69/ 8:/ :<0 <>0 >?0 @A0 AD 0  CE 0 !FG"0 !GI"1 !GI#1 DG!1BD 1@B1=?1:<28:2682352022./2+-2)*"&(#%!"/863 1 0  /  .  .  -  , -EH(+$S{_2 +0myT,*5t~bF# )5si]@(4plg`4 (4onlpY '4nmoywD'0n~ko~q/ '(l}ilZ' Y{fi}B'Kvcexy2'Fxo]`sd'BulWZl'BukUSbw'CwjRNXj'DyiLAGWm'FygC,+:Po'Eye=+Mw'Dze;"Uz'Cyf; )c'Axe:<'Bxd9'Ezd7 'F{d6 'Dzd7( Bzd6( Czd5( F}d5(  Hd4(  E}d5 (  Azd6 (  @xd6 (  @xc5 (  @wc4 (  @vb4 (  @ub4 (  ?ta4 '  @sa4' ?q`4& >p~`4  @p}`3 Ap}_3  @o|^3  =mz^4  -u: /e|iRS\W6,Z' 1h}jTUekR* +zC8mkUWiznH *땈]1?slVWjj=*銈oI.EtmVVgc7(還w^DMsmVUdz`4({{mXXvnWU`sZ+ 'i||sfe{nWT^l~zH&DivplnnUPXetf4%"BYajsmOADSdt{Q% % 3F_rkH.)6I\oh>#*Lk~iE#&:SiytV-#8`x|gD! /KdtwhG #  *VsygH( +Jets[2" Movl_E ,KgshC" GmwuqW( -LhmR( ! DkxyvY) /Ri_9  Bjxzy_,  8[eM#  ?hwz{c.  !Gc[3 =hwzwX' 3ZcA >hwzrK  $MdN$ @jwypG AbU+ @jxyqI 7\W0AjyzwX'  .VX4Elz{|d.  )S\;Lo||y^* &R_@ "Pr~}tO! "N^A &Tt}rI $L[= .Yv~rH+MU46\v~sH @[P- >\vsI 3_qR'  $>UusI  Gr}U!F;: :94 4 1 0 /   .   -   / /   + *   / /. . . 0 1 1 4 3 3 4 4  4  3 1 / /./#.'- !*+$*&=<<<;;;:::::::://..---++**//..-,,$                          %+01/)"   '2=HSVSI;,"  "1CUerzyn^K7'  $8Ph}lWA-!  &;Uqs^H4%  $6Lit_J6(  +9Njo[F4'    *1C\utdQ?0'! "  !#'4H_oy}|vmbSD7,&!  47+'6HW_cb^WMB91*%" 4JF5% *7@GIJGC>84/+)'# .P]Q>, $,279::8776541+%&KfhXD1#&+.147:=BDFEB=5-%#CerjYE3&!',17=CIOSUSNF=3*#>_rreTB2'! $+29BIOV\]ZSI?3($;Wlog[K<0(#!(08?GMTXYUMC8,# %6M_eaYMA7/)%!$+17>DHJID<3)!".?LSSOHA:40-)% $)-15663/)#%/9?BB@><;8641,  !##!$+158:=?BCDCA=6 #).4:?EJOSUTPI@ !(/6>GNU\adaZRG(&/7@JRZaghd]RG) #+4=EMU[__[RH<) !'.6_|tlbSIDB9( "%/EmǺvmcXPH@7(",J{vj_ZTLD8&&ExĴtf]XTOG:'  4gŶqe\WSOH>406=?=83&Nŷ~qg^WROICH[mspjc\ 4hķ~si`XSOII\|}un Avĵwmc[TOJUt{tAwɽ{pf^WQSlx /ftjbZXf}Mo|zoe`h?ary~~rjmû.Sisy~uuƿ=[ktz~}º "?Whs|ƾ 8Nanxļ)=N\gpx}}z|Ľ #.7BJKKNLFIYjsv{Ž ;[mt{ù  %JeqzŻ(3Thu)7Rhw) /J`q~j*%8KZgr}}n]I8* !,6BKMNPPI@7.&* !"#&((%$#" * !$$%%$#* !%''&%#"+ !$&&%$"!+  "#$$#"!, !!"" -  - , , + + + + , , . . 0 0 3                               "-20' -?OZZQ@,  )C\oxyrcO8" .PoyjU>' &GjwgS=&,-Nj|yn^K6  %@Yirspi]M;( *?NWZWPE6'  $! $08;:4* *90   &BI;%  >TQ>(   7S\P<&  ""  /M[WG3  #'(&# *CSSH8'  "%%"  "6DG?3$   !-2/'       ""!" $(+-+($/"'+./-(#/ #&(($ ,  ,  - 0364 2  1  0  0  0   0  249E88689#! "$'-3##204467789::::; 88/5#'-2" &+0! )(- !*%*!*#'" 2 %#! 2 !&), '-, '.- '05'05&/0$-0 #+0  "*0 '0 &1 %2 " 2  2  2 #2 $2!   2&   2.'   27-#  2<0$ 2:-! 2/$ 2! 2 2 2344556666667766 6 889)7JrsI  Px_ &+Ao}rI Ow}c#&6 %>@'6 'AB(6 (CD*6 )DF+6*GH,6,IK.6,JK.6,JL.6+HJ.6 *FH,6 (CE*6 &@C)6 %=?'6 #;=% 6 "8:$ 6 67" 6 35 6 02 6./ 6+, 6() 6&'6#$48 6$8;, 4EejT4 3 -_pN/24i{^B'24jfQ; 14ij^O403hle`L*02hmjneD/ /gnmwzb9/ *coo}~X+0 %[nnzK!0!Tnl}q@0Omjyf0M}lht0M~len0Oi_eu0Q~aQTau0 R{X?:EYr0 SzQ.!%7Sr0 SxL&1Tv0RxK# 4\0QxK" <0QxJ!  0RwH  0SwH 0SxH 5RxG5 SxG5!VxF5!VxF5 UxG5SxG5QwG5PvF5PuE5OuE5OtE5NsE5M~rD5L|rD5K{qD5L{pC5LzpC5KyoC5JwnC5HunCu<9 8 8  8  8  7  6  33 1 1 1 1 1 0! 0!# 0#$0$&0&'1(( 0)* 0+, 6,- 6./ 601 6 23 6 45 6 67" 6 !78# 6 !79# 6 68" 6 45! 6 24 6 12 6.0 6,. 6+, 6)* 6'(6%&6#%6!"6 77487775770/////0:;<:99999:;==98  833 "3 "# 3#% 0$' /!&(   . ')   -)+  ! ,  +-  '+"+ ,. %0/!* ,0 ,3+ *,0 "--")*0   %!*&,   - '   ,   , -  /  .  /  4  4  4 4  4  5 4  4  *  * !" 4 '%5!-(5(2**-5,(07,$8 6!(%4 %BPI6 15^rgN3 0 =lw]C)0?p}eO8 /8@p~iYI1.Z-@qkaYF(.yI!Armgh]@ -e7Dtnkss\7,|P,'JynmzvT,,왉gC7S~nm|tK&+둍xZJ]nk{pE" *ꇊn^inivlA )x{oumgqd7)`z|ldk|T) (?awi]aop@' ;Xn}`MLXlZ/' 3Qn{W;29LbxoF! &4Y{wP-*?Wp{]6' FnuO) 4Pj}nK' '7cwV/ /Miyw^7'-Y}|a</MiviH" & 'SykG 1PimU0& #OwpM$  4Uh`@%"MtsQ(  =\dO+& KttR' (KaZ9&JrpK#:ZaE! %JskC-QcO+% Kth? #GaU2$!MvjB>\X7$ #OwpL#8YY;$ 'SytQ( 3W\A$,Y}rO& 1U^E#0^nF.T_F #6bj@.S\C$4VY=$ Dlj>C`X7# &Imj>/XlY2#,Jjj>Aiv[/"E98  4  4  4  4   1 /  .   -   ,  +  +*  *  *  - ,- , / . / 6 6 6 6  6  5  5  4  *  *  5  5 " 5&  6#)! (%*! $=<<<<<<==<<:988882777789999999;;-++*)"1 !7777  ,  (   &   $ $-342,#  ".>LW[XN@1%   .CYlzxgS?-"  6Rmx`I4& !8VuhO:*! 1KjhQ<-$  &7OlycN;-%   &2G`z~mYG8-&!  "($ ")8Ldvwk\M?4-(# );>4(  +;M]gllgaWMC:3/+'" &ASRC1$ ".;GOSTRNID@<851-("">[h`L8( '09>CEFFDB=70(  8YrvhR<," #+18<@EIMRUWUQKC9.%!4SqzhR=.$!(/54-($ "'.6>ELSXZYSKA6-),7ET]^ZSJB:51,( "'-38=ADDA=6.'$%,6AIMMKGDA>;950 !$(*,,+*(% #*2:?BDEGHJJIFB; !(/6;AFLQVZ\[VOF   &.4   5Lcx|tkaULHTbfU8  5Uw}tkaZY\ZL3(JrȻ|tld]YSF1 3Y´yqjbZQD0 8cȺzsmf^TE1 5bͿ{snhaWI7(!!"! 'Uµ|smhbZPHFJOPMHBAoŸvnhb\Y_o~{tk *Wɼypjc_ey6e}skefu8gȽvnjsķ3`ƻ{tv˼ +UwĶ~ "Hlʼķ8]y̽Ǻ&Hg~Ǹ˾.Kf{ʺø,E]q#7K]mzʾ %2>JT[`acb`ft &*,,-++6Ol  4Vs! >]vѾ(%@[rɵ("9Qfxi) ,>O^kw}n\G3+&0;DKOPQOH>2%, !!  /277 7  8  8  +( %  $ #/9=:/! " (;N]gf[J5 ! 5Qj}r\C* 7Zy{cI. +Mqw`F- 1St~lV>'*GcwxjYD/    2HYdgd\P@.(% +9CFD>3& 2>7% #'&" 1IPD-    +H\[I0   $B[e[F-   #&()&" 9SbaQ;%   %*-.-)# 0GX[P?+  $(++($ $7FLE9(   ".43+           !   %)++($0  &*-.-)#+ "%((%!+  ,  -/3p877779#:8888  16+& 04)& -1(' *.'(',%($)# *"&# +$!!+! #!+##+ "#- !#5 !#1"1  1  1 1  1  1  1  1  1  0  0$  1*$  13+" 2;1& 3@4' 5=/# 62% 7! 8 9;~-Dbj>Ls|]. "(:Y~i>"Pv}]- ".Q{i> $SvzX* " #Lyi> &TtqM#$ Hwi> 'Oh_;%FukA'DO@$ &EtoI )73!'DrtS) '* (CqxZ. )Cpy]1 )Boy]2 *Any]2 )@kv[1 0@f{{sY0 0;2*$*DbqrmV/ 0bWLA?K\fhfS. 0{qf\UUY\^`P- 0}uld]YVW[N- 0yrld\VVYL+ 0ztmg`ZYYH' 0|tnhc]\YE$ 0}tnhc^\[J) 0񗌁woic]\^P10񛐅zqjc]\^P00񡖉~ulc]ZR>! 0򩜏xmbYP?&1򱤖zl\M;&1󹫛xdM7"2mS73uW9 4sU85gJ0 6O8# 7" 9 ;> %)  & $( & #& ' #(") + , + + + - 55 5 6 6 7 88 8 8 880 1 1 25 8 8 9:;))))+++, .<<<<<<<<<;;:997777789v@@auralquiz-v0.8.1-src/translations/000755 000764 000764 00000000000 11741607424 016631 5ustar00janjan000000 000000 auralquiz-v0.8.1-src/translations/auralquiz_ca.qm000664 000764 000764 00000031765 11741607424 021666 0ustar00janjan000000 000000 )4 -q*,1 M~ l[~ Q }  ޳n : xM , I! ֵ!L # Gu K/I Rί a~ 5  %* GFS .Z c(X +5 .)` B Ua. ga zN C! m5b Au(q hR'k,Q.ŅZ?$i00Tecleja la resposta aquiType the answer here AnswerBox0%v de %m preguntes - %p%%v out of %m questions - %p% AuralWindowSo&bre... &About... AuralWindow&Finalitzar joc &End game AuralWindow&Opcions&Options AuralWindow&Sortir&Quit AuralWindowComenar &joc &Start game AuralWindow+%1 punts! +%1 points! AuralWindowSobre AuralquizAbout Auralquiz AuralWindowTot fet! All done! AuralWindowAgraments tamb per tots els empaquetadors que han compillat Auralquiz per diferents distribucions.[Also thanks to all the packagers out there who built Auralquiz for different distributions. AuralWindow,S'ha produt un error durant la reproducci de so. El missatge d'error ha sigut: %1 Potser el teu Phonon-backend no t suport pel format d'arxiu MP3.An error occurred while playing sound. The error message was: %1 Maybe your Phonon-backend does not have support for the MP3 file format. AuralWindow2Analitzant %1 arxius a %2Analyzing %1 files under %2 AuralWindowJAnalitzant msica. Espera, si us plauAnalyzing music. Please wait AuralWindow8Analitzant la teva msica...Analyzing your music... AuralWindow8Auralquiz carrega tota la teva msica d'una carpeta especificada, i fa preguntes sobre ella, reproduint una petita pea de cada arxiu de msica com a pista.Auralquiz loads all your music from a specified folder and asks questions about it, playing a short piece of each music file as clue. AuralWindowMalament: %2Bad: %2 AuralWindow$Cancelar l'anlisiCancel analysis AuralWindowCorrecte!! Correct!! AuralWindowBTraducci al txec per Pavel Fric. Czech translation by Pavel Fric. AuralWindow&Error reproduint soError playing sound AuralWindow FAIL!FAIL! AuralWindowPrimer s First usage AuralWindow Vinga!GO!! AuralWindowEndavant, %1!Go, %1! AuralWindowBona sort! Good luck! AuralWindowB!Good! AuralWindowB: %1 Good: %1 AuralWindowGenial!Great! AuralWindow>Quantes preguntes has contestat"How many questions you've answered AuralWindowEra:It was: AuralWindow Anem! Let's go! AuralWindowImatge de la pantalla principal basada en Oxygen Icons: http://www.oxygen-icons.org/ (llicencia LGPL)UMain screen image based on Oxygen icons: http://www.oxygen-icons.org/ (LGPL licensed) AuralWindowSegent!Next! AuralWindowNo!No! AuralWindow<No hi ha prou arxius de msicaNot enough music files AuralWindowUps!Ooops! AuralWindowJugador %1 Player %1 AuralWindowhSi us plau, sellecciona una altra carpeta de msica"Please choose another music folder AuralWindowNTemps restant per respondre la pregunta&Remaining time to answer this question AuralWindowPuntuaciScore AuralWindow.Error del sistema de soSound system error AuralWindowComencem! Starting! AuralWindowEstadstiques Statistics AuralWindowAgraments als betatesters, Jorchube, Coyote, Panko i Eomer per la seva ajuda.LThanks to the betatesters, Jorchube, Coyote, Panko and Eomer for their help. AuralWindowNo, aquesta no.That's not it. AuralWindowAix s! That's right! AuralWindowZNo hi han arxius de msica vlids al teu directori de msica selleccionat. Si us plau, sellecciona un altre directori que contingui arxius Ogg, FLAC o MP3, i prova de nou.There are no valid music files in your selected music directory. Please, select another directory containing Ogg, FLAC or MP3 files, and try again. AuralWindow No hi ha msica!There is no music! AuralWindowlSembla que hi ha un problema amb el teu sistema de so.3There seems to be a problem with your sound system. AuralWindowPSembla que aquesta s la primera vegada que utilitzes Auralquiz. Abans de jugar, s'analitzar la teva msica. Si fos necessari, haures de fer click al bot d'Opcions i selleccionar la carpeta on es troben els teus arxius Ogg, Flac i MP3. Aquesta carpeta, i sub-carpetes seran analitzades perque Auralquiz pugui generar preguntes i respostes sobre la teva msica. Necessites arxius etiquetats correctament perque el joc funcioni com cal. L'anlisis pot trigar una mica, i el programa no respondr fins que sigui complet. Si us plau, sigues pacient.This seems to be the first time you use Auralquiz. Before playing, your music will be analyzed. If needed, you should click the Options button and select the folder where your Ogg, FLAC and MP3 files are stored. This folder, and sub-folders will be scanned so Auralquiz can generate questions and answers about your music. You need files correctly tagged in order for the game to work correctly. The scan can take some time, and the program will not be responsive until it is complete. Please be patient. AuralWindow TempsTime AuralWindow*S'ha acabat el temps! Time's up!! AuralWindow$Temps esgotat: %3Timed out: %3 AuralWindowBQuin es el ttol d'aquesta can?What's the title of this song? AuralWindow.Qui toca aquesta can?Who plays this song? AuralWindowEquivocat!Wrong! AuralWindowSi!Yeah! AuralWindow2No tens prou arxius de msica, o no son de prou artistes diferents. Necessites msica de 5 artistes diferents, com a mnim, pero poder generar preguntes.You don't have enough music files, or from enough different artists. You need music from at least 5 different artists to be able to generate questions. AuralWindow0La teva puntuaci actualYour current score AuralWindow&Cancellar&Cancel OptionsDialog &Guardar opcions &Save options OptionsDialog Come get some OptionsDialog Damn I'm good OptionsDialogMes fcilEasier OptionsDialogOpcions del joc Game options OptionsDialogHARD!! OptionsDialogBMolt difcil! Tecleja la respostaHardcore! Type the answer OptionsDialogMes difcilHarder OptionsDialog"Quants &jugadors?How many &players? OptionsDialog&Quantes &preguntes?How many &questions? OptionsDialog En aquest nivell haurs d'escriure la resposta. No es gaire estricte, o sigui que no t'has de preocupar de les majscules, comes, etc.zIn this level you'll have to type the answer. It's not too strict, so you don't have to worry about caps, commas and such. OptionsDialogEn aquest nivell haurs de fer clic al bot correcte, o apretar les tecles 1, 2, 3 i 4 del teclat.hIs this level you'll have to click the correct button, or press the 1, 2, 3 and 4 keys in your keyboard. OptionsDialog Let's rock OptionsDialog Piece of cake OptionsDialog$Noms dels jugadors Player names OptionsDialog>Guardar i &recarregar la msicaSave and &reload music OptionsDialogNSellecciona on es troba la teva msica"Select where your music is located OptionsDialogTSellecciona la teva carpeta de &msica...Select your &music folder... OptionsDialogComenar!Start! OptionsDialog<Utilitzar tema de colors propiUse own color theme OptionsDialog,Fent servir msica de:Using music from: OptionsDialogjugadorsplayers OptionsDialogpreguntes questions OptionsDialog&OK&OKRankingDHas contestat totes les preguntes!All questions done!RankingMalamentBadRankingFelicitats, %1!Congratulations, %1!!Ranking(Empat entre %1 i %2!Draw between %1 and %2!RankingJoc acabat Game endedRankingBGoodRankingJugadorPlayerRankingClasificaciRankingRankingPuntuaciScoreRankingT.E.T.O.Ranking$Grcies per jugar!Thanks for playing!Ranking$Ha estat fora b!That was quite good!RankingVQu?? Zero punts!! Sou tots mooolt dolents!)What?? Zero points!! You're all sooo bad!Ranking*Pots fer-ho millor...You can do better...RankingEts bo! You're good!RankingEts molt bo!!You're very good!!RankingBZero punts! %1, ets molt dolent!!"Zero points! %1, you're very bad!!RankingA auralquiz-v0.8.1-src/translations/auralquiz_es.ts000644 000764 000764 00000070054 11741607212 021706 0ustar00janjan000000 000000 AnswerBox Type the answer here Teclea la respuesta aquí AuralWindow This seems to be the first time you use Auralquiz. Before playing, your music will be analized. If needed, you should click the Options button and select the folder where your Ogg, FLAC and MP3 files are stored. This folder, and sub-folders will be scanned so Auralquiz can generate questions and answers about your music. You need files correctly tagged in order for the game to work correctly. The scan can take some time, and the program will not be responsive until it is complete. Please be patient. Parece que esta es la primera vez que usas Auralquiz. Antes de jugar, se analizará tu música. Si fuese necesario, deberías hacer click en el botón Opciones y seleccionar la carpeta donde se encuentran tus archivos Ogg, FLAC y MP3. Esta carpeta, y sub-carpetas serán analizadas para que Auralquiz pueda generar preguntas y respuestas sobre tu música. Necesitas archivos correctamente etiquetados para que el juego funcione bien. El análisis puede tardar un poco, y el programa no responderá hasta que esté completo. Por favor, se paciente. &Start game Comenzar &juego &About... &Acerca de... &Quit &Salir Remaining time to answer this question Tiempo restante para responder la pregunta %v out of %m questions - %p% %v de %m preguntas - %p% How many questions you've answered Cuantas preguntas has respondido Score Puntuación Your current score Tu puntuación actual &End game &Finalizar juego Statistics Estadísticas Sound system error Error del sistema de sonido There seems to be a problem with your sound system. Parece que hay un problema con tu sistema de sonido. Analizing music. Please wait Analizando música. Espera, por favor This seems to be the first time you use Auralquiz. Before playing, your music will be analyzed. If needed, you should click the Options button and select the folder where your Ogg, FLAC and MP3 files are stored. This folder, and sub-folders will be scanned so Auralquiz can generate questions and answers about your music. You need files correctly tagged in order for the game to work correctly. The scan can take some time, and the program will not be responsive until it is complete. Please be patient. Parece que esta es la primera vez que usas Auralquiz. Antes de jugar, se analizará tu música. Si fuese necesario, deberías hacer click en el botón Opciones y seleccionar la carpeta donde se encuentran tus archivos Ogg, FLAC y MP3. Esta carpeta, y sub-carpetas serán analizadas para que Auralquiz pueda generar preguntas y respuestas sobre tu música. Necesitas archivos correctamente etiquetados para que el juego funcione bien. El análisis puede tardar un poco, y el programa no responderá hasta que esté completo. Por favor, se paciente. Analyzing music. Please wait Analizando música. Espera, por favor There is no music! ¡No hay música! There are no valid music files in your selected music directory. Please, select another directory containing Ogg, FLAC or MP3 files, and try again. No hay archivos de música válidos en tu directorio de música seleccionado. Por favor, selecciona otro directorio que contenga archivos Ogg, FLAC o MP3, e intentalo de nuevo. Please choose another music folder Por favor, selecciona otra carpeta de música Cancel analysis Cancelar análisis Analyzing your music... Analizando tu música... Error playing sound Error reproduciendo sonido An error occurred while playing sound. The error message was: %1 Maybe your Phonon-backend does not have support for the MP3 file format. Ha ocurrido un error mientras se reproducia sonido. El mensaje de error ha sido: %1 Tal vez tu Phonon-backend no tenga soporte para el formato de archivo MP3. Time's up!! ¡Se acabó el tiempo! It was: Era: About Auralquiz Acerca de Auralquiz Auralquiz loads all your music from a specified folder and asks questions about it, playing a short piece of each music file as clue. Auralquiz carga toda tu música de una carpeta especificada, y pregunta sobre ella, reproduciendo una pequeña pieza de cada archivo de música como pista. Czech translation by Pavel Fric. Traducción al checo por Pavel Fric. Thanks to the betatesters, Jorchube, Coyote, Panko and Eomer for their help. Agradecimientos a los betatesters, Jorchube, Coyote, Panko y Eomer por su ayuda. Also thanks to all the packagers out there who built Auralquiz for different distributions. Gracias también a todos los empaquetadores que han compilado Auralquiz para diferentes distribuciones. Main screen image based on Oxygen icons: http://www.oxygen-icons.org/ (LGPL licensed) Imagen de la pantalla principal basada en Oxygen Icons: http://www.oxygen-icons.org/ (licencia LGPL) Starting! ¡Comenzamos! Let's go! ¡Vamos! GO!! ¡Venga! Good luck! ¡Buena suerte! +%1 points! ¡+%1 puntos! Thanks for playing! ¡Gracias por jugar! Good: %1 Bien: %1 Bad: %2 Mal: %2 Timed out: %3 Tiempo agotado: %3 First usage Primer uso This seems to be the first time you use Auralquiz. Before playing, you should click the Options button and select the folder where your Ogg, FLAC and MP3 files are stored. This folder, and sub-folders will be scanned so Auralquiz can generate questions and answers about your music. The scan can take some time, please be patient. Parece que esta es la primera vez que usas Auralquiz. Antes de jugar, deberías hacer click en el botón Opciones y seleccionar la carpeta donde se encuentran tus archivos Ogg, FLAC y MP3. Esta carpeta, y sub-carpetas serán analizadas para que Auralquiz pueda generar preguntas y respuestas sobre tu música. El análisis puede tardar un poco, por favor, se paciente. Auralquiz loads all your music from a specified folder and asks questions about it, playing a short piece of each music file as clue.<p><p>Thanks to the betatesters, Jorchube, Coyote, Panko and Eomer for their help.<p><p>Main screen image based on Oxygen icons: http://www.oxygen-icons.org/ (LGPL licensed)<p> Auralquiz carga toda tu música de una carpeta especificada, y pregunta sobre ella, reproduciendo una pequeña pieza de cada archivo de música como pista.<p><p>Gracias a los betatesters, Jorchube, Coyote, Panko y Eomer por su ayuda.<p><p>Imagen de la pantalla principal basada en Oxygen Icons: http://www.oxygen-icons.org/ (licencia LGPL)<p> Player %1 Jugador %1 Not enough music files No hay suficientes archivos de música You don't have enough music files, or from enough different artists. You need music from at least 5 different artists to be able to generate questions. No tienes suficientes archivos de música, o de suficientes artistas diferentes. Necesitas música de al menos 5 artistas diferentes para poder generar preguntas. Go, %1! ¡Adelante, %1! Next! ¡Siguiente! Correct!! ¡¡Correcto!! Yeah! ¡Sí! That's right! ¡Así es! Good! ¡Bien! Great! ¡Genial! points! puntos! Wrong! ¡Equivocado! No! ¡No! That's not it No, esa no Ooops! ¡Ups! FAIL! FAIL! That's not it. No, esa no. Ranking Clasificación All questions are done. Has contestado todas las preguntas. Thanks for playing! ¡Gracias por jugar! All done! ¡Todo hecho! Game ended Juego terminado This seems to be the first time you use Auralquiz. Before playing, you should click the Options button and select the folder where your Ogg, FLAC and MP3 files are stored. This folder, and sub-folders will be scanned so Auralquiz can generate questions and answers about your music. You need files correctly tagged in order for the game to work correctly. The scan can take some time, please be patient. Parece que esta es la primera vez que usas Auralquiz. Antes de jugar, deberías hacer click en el botón Opciones y seleccionar la carpeta donde se encuentran tus archivos Ogg, FLAC y MP3. Esta carpeta, y sub-carpetas serán analizadas para que Auralquiz pueda generar preguntas y respuestas sobre tu música. Necesitas archivos correctamente etiquetados para que el juego funcione bien. El análisis puede tardar un poco, por favor, se paciente. Good: %1 Bien: %1 Bad: %2 Mal: %2 Timed out: %3 Tiempo agotado: %3 &Options &Opciones Time Tiempo Analyzing %1 files under %2 %1 is a number, %2 is a folder Analizando %1 archivos en %2 Who plays this song? ¿Quien toca esta canción? What's the title of this song? ¿Cual es el título de esta canción? OptionsDialog Game options Opciones del juego Using music from: Usando música de: Easier Más fácil Harder Más difícil Select your &music folder... Selecciona tu carpeta de &música... How many &questions? ¿Cuantas &preguntas? questions preguntas How many &players? ¿Cuantos &jugadores? players jugadores Use own color theme Usar tema de colores propio Player names Nombres de los jugadores Save and &reload music Guardar y &recargar la música Is this level you'll have to click the correct button, or press the 1, 2, 3 and 4 keys in your keyboard. En este nivel tendrás que hacer click en el botón correcto, o apretar las teclas 1, 2, 3 y 4 del teclado. &Save options &Guardar opciones &Cancel &Cancelar Select where your music is located Selecciona donde se encuentra tu música Piece of cake Let's rock Come get some Damn I'm good HARD!! Hardcore! Type the answer ¡Muy difícil! Teclea la respuesta In this level you'll have to type the answer. It's not too strict, so you don't have to worry about caps, commas and such. En este nivel tendrás que teclear la respuesta. No es muy estricto, así que no te has de preocupar de las mayúsculas, comas, etc. Is this level you'll have click the correct button, or press the 1, 2, 3 and 4 keys in your keyboard. En este nivel tendrás que hacer click en el botón correcto, o apretar las teclas 1, 2, 3 y 4 del teclado. Start! ¡Comenzar! Ranking Game ended Juego terminado All questions done! ¡Has contestado todas las preguntas! Thanks for playing! ¡Gracias por jugar! Ranking Clasificación Player Jugador Score Puntuación Good Bien Bad Mal T.O. Timed out abbreviation T.A. What?? Zero points!! You're all sooo bad! Plural, all players ¿¿Qué?? ¡¡Cero puntos!! ¡Sois todos muuuy malos! Zero points! %1, you're very bad!! %1 is the name of a player ¡Cero puntos! ¡%1, eres muy malo! Draw between %1 and %2! %1 and %2 are player names ¡Empate entrer %1 y %2! You're very good!! ¡¡Eres muy bueno!! Congratulations, %1!! %1 is the name of the winner ¡Felicidades, %1! That was quite good! ¡Ha estado bastante bien! You can do better... Puedes hacerlo mejor... You're good! ¡Eres bueno! &OK &OK auralquiz-v0.8.1-src/translations/auralquiz_ca.ts000644 000764 000764 00000072363 11741607212 021667 0ustar00janjan000000 000000 AnswerBox Type the answer here Tecleja la resposta aqui AuralWindow This seems to be the first time you use Auralquiz. Before playing, your music will be analized. If needed, you should click the Options button and select the folder where your Ogg, FLAC and MP3 files are stored. This folder, and sub-folders will be scanned so Auralquiz can generate questions and answers about your music. You need files correctly tagged in order for the game to work correctly. The scan can take some time, and the program will not be responsive until it is complete.Please be patient. Sembla que aquesta és la primera vegada que utilitzes Auralquiz. Abans de jugar, s'analitzarà la teva música. Si fos necessari, hauríes de fer click al botó d'Opcions i sel·leccionar la carpeta on es troben els teus arxius Ogg, Flac i MP3. Aquesta carpeta, i sub-carpetes seran analitzades perque Auralquiz pugui generar preguntes i respostes sobre la teva música. Necessites arxius etiquetats correctament perque el joc funcioni com cal. L'anàlisis pot trigar una mica, i el programa no respondrà fins que sigui complet. Si us plau, sigues pacient. This seems to be the first time you use Auralquiz. Before playing, your music will be analized. If needed, you should click the Options button and select the folder where your Ogg, FLAC and MP3 files are stored. This folder, and sub-folders will be scanned so Auralquiz can generate questions and answers about your music. You need files correctly tagged in order for the game to work correctly. The scan can take some time, and the program will not be responsive until it is complete. Please be patient. Sembla que aquesta és la primera vegada que utilitzes Auralquiz. Abans de jugar, s'analitzarà la teva música. Si fos necessari, hauríes de fer click al botó d'Opcions i sel·leccionar la carpeta on es troben els teus arxius Ogg, Flac i MP3. Aquesta carpeta, i sub-carpetes seran analitzades perque Auralquiz pugui generar preguntes i respostes sobre la teva música. Necessites arxius etiquetats correctament perque el joc funcioni com cal. L'anàlisis pot trigar una mica, i el programa no respondrà fins que sigui complet. Si us plau, sigues pacient. &Start game Començar &joc &About... So&bre... &Quit &Sortir Remaining time to answer this question Temps restant per respondre la pregunta %v out of %m questions - %p% %v de %m preguntes - %p% How many questions you've answered Quantes preguntes has contestat Score Puntuació Your current score La teva puntuació actual &End game &Finalitzar joc Statistics Estadístiques Sound system error Error del sistema de so There seems to be a problem with your sound system. Sembla que hi ha un problema amb el teu sistema de so. Analizing music. Please wait Analitzant música. Espera, si us plau This seems to be the first time you use Auralquiz. Before playing, your music will be analyzed. If needed, you should click the Options button and select the folder where your Ogg, FLAC and MP3 files are stored. This folder, and sub-folders will be scanned so Auralquiz can generate questions and answers about your music. You need files correctly tagged in order for the game to work correctly. The scan can take some time, and the program will not be responsive until it is complete. Please be patient. Sembla que aquesta és la primera vegada que utilitzes Auralquiz. Abans de jugar, s'analitzarà la teva música. Si fos necessari, hauríes de fer click al botó d'Opcions i sel·leccionar la carpeta on es troben els teus arxius Ogg, Flac i MP3. Aquesta carpeta, i sub-carpetes seran analitzades perque Auralquiz pugui generar preguntes i respostes sobre la teva música. Necessites arxius etiquetats correctament perque el joc funcioni com cal. L'anàlisis pot trigar una mica, i el programa no respondrà fins que sigui complet. Si us plau, sigues pacient. Analyzing music. Please wait Analitzant música. Espera, si us plau There is no music! No hi ha música! There are no valid music files in your selected music directory. Please, select another directory containing Ogg, FLAC or MP3 files, and try again. No hi han arxius de música vàlids al teu directori de música sel·leccionat. Si us plau, sel·lecciona un altre directori que contingui arxius Ogg, FLAC o MP3, i prova de nou. Please choose another music folder Si us plau, sel·lecciona una altra carpeta de música Cancel analysis Cancelar l'anàlisi Analyzing your music... Analitzant la teva música... Error playing sound Error reproduint so An error occurred while playing sound. The error message was: %1 Maybe your Phonon-backend does not have support for the MP3 file format. S'ha produït un error durant la reproducció de so. El missatge d'error ha sigut: %1 Potser el teu Phonon-backend no té suport pel format d'arxiu MP3. Time's up!! S'ha acabat el temps! It was: Era: About Auralquiz Sobre Auralquiz Auralquiz loads all your music from a specified folder and asks questions about it, playing a short piece of each music file as clue. Auralquiz carrega tota la teva música d'una carpeta especificada, i fa preguntes sobre ella, reproduint una petita peça de cada arxiu de música com a pista. Czech translation by Pavel Fric. Traducció al txec per Pavel Fric. Thanks to the betatesters, Jorchube, Coyote, Panko and Eomer for their help. Agraïments als betatesters, Jorchube, Coyote, Panko i Eomer per la seva ajuda. Also thanks to all the packagers out there who built Auralquiz for different distributions. Agraïments també per tots els empaquetadors que han compil·lat Auralquiz per diferents distribucions. Main screen image based on Oxygen icons: http://www.oxygen-icons.org/ (LGPL licensed) Imatge de la pantalla principal basada en Oxygen Icons: http://www.oxygen-icons.org/ (llicencia LGPL) Starting! Comencem! Let's go! Anem! GO!! Vinga! Good luck! Bona sort! +%1 points! +%1 punts! Thanks for playing! Gràcies per jugar! Good: %1 Be: %1 Bad: %2 Malament: %2 Timed out: %3 Temps esgotat: %3 First usage Primer ús This seems to be the first time you use Auralquiz. Before playing, you should click the Options button and select the folder where your Ogg, FLAC and MP3 files are stored. This folder, and sub-folders will be scanned so Auralquiz can generate questions and answers about your music. The scan can take some time, please be patient. Sembla que aquesta és la primera vegada que utilitzes Auralquiz. Abans de jugar, hauríes de fer click al botó d'Opcions i sel·leccionar la carpeta on es troben els teus arxius Ogg, Flac i MP3. Aquesta carpeta, i sub-carpetes seran analitzades perque Auralquiz pugui generar preguntes i respostes sobre la teva música. L'anàlisis pot trigar una mica, si us plau, sigues pacient. Auralquiz loads all your music from a specified folder and asks questions about it, playing a short piece of each music file as clue.<p><p>Thanks to the betatesters, Jorchube, Coyote, Panko and Eomer for their help.<p><p>Main screen image based on Oxygen icons: http://www.oxygen-icons.org/ (LGPL licensed)<p> Auralquiz carrega tota la teva música d'una carpeta especificada, i fa preguntes sobre ella, reproduint una petita peça de cada arxiu de música com a pista.<p><p>Agraïments als betatesters, Jorchube, Coyote, Panko i Eomer per la seva ajuda.<p><p>Imatge de la pantalla principal basada en Oxygen Icons: http://www.oxygen-icons.org/ (llicencia LGPL)<p> Player %1 Jugador %1 Not enough music files No hi ha prou arxius de música You don't have enough music files, or from enough different artists. You need music from at least 5 different artists to be able to generate questions. No tens prou arxius de música, o no son de prou artistes diferents. Necessites música de 5 artistes diferents, com a mínim, pero poder generar preguntes. Go, %1! Endavant, %1! Next! Següent! Correct!! Correcte!! Yeah! Si! That's right! Així és! Good! Bé! Great! Genial! points! punts! Wrong! Equivocat! No! No! That's not it No, aquesta no Ooops! Ups! FAIL! FAIL! That's not it. No, aquesta no. Ranking Clasificació All questions are done. Has contestat totes les preguntes. Thanks for playing! Gràcies per jugar! All done! Tot fet! Game ended Joc acabat This seems to be the first time you use Auralquiz. Before playing, you should click the Options button and select the folder where your Ogg, FLAC and MP3 files are stored. This folder, and sub-folders will be scanned so Auralquiz can generate questions and answers about your music. You need files correctly tagged in order for the game to work correctly. The scan can take some time, please be patient. Sembla que aquesta és la primera vegada que utilitzes Auralquiz. Abans de jugar, hauríes de fer click al botó d'Opcions i sel·leccionar la carpeta on es troben els teus arxius Ogg, Flac i MP3. Aquesta carpeta, i sub-carpetes seran analitzades perque Auralquiz pugui generar preguntes i respostes sobre la teva música. Necessites arxius etiquetats correctament perque el joc funcioni com cal. L'anàlisis pot trigar una mica, si us plau, sigues pacient. Good: %1 Bé: %1 Bad: %2 Malament: %2 Timed out: %3 Temps esgotat: %3 &Options &Opcions Time Temps Analyzing %1 files under %2 %1 is a number, %2 is a folder Analitzant %1 arxius a %2 Who plays this song? Qui toca aquesta cançó? What's the title of this song? Quin es el títol d'aquesta cançó? OptionsDialog Game options Opcions del joc Using music from: Fent servir música de: Easier Mes fàcil Harder Mes difícil Select your &music folder... Sel·lecciona la teva carpeta de &música... How many &questions? Quantes &preguntes? questions preguntes How many &players? Quants &jugadors? players jugadors Use own color theme Utilitzar tema de colors propi Player names Noms dels jugadors Save and &reload music Guardar i &recarregar la música Is this level you'll have to click the correct button, or press the 1, 2, 3 and 4 keys in your keyboard. En aquest nivell hauràs de fer clic al botó correcte, o apretar les tecles 1, 2, 3 i 4 del teclat. &Save options &Guardar opcions &Cancel &Cancel·lar Select where your music is located Sel·lecciona on es troba la teva música Piece of cake Let's rock Come get some Damn I'm good HARD!! Hardcore! Type the answer Molt difícil! Tecleja la resposta In this level you'll have to type the answer. It's not too strict, so you don't have to worry about caps, commas and such. En aquest nivell hauràs d'escriure la resposta. No es gaire estricte, o sigui que no t'has de preocupar de les majúscules, comes, etc. Is this level you'll have click the correct button, or press the 1, 2, 3 and 4 keys in your keyboard. En aquest nivell hauràs de fer clic al botó correcte, o apretar les tecles 1, 2, 3 i 4 del teclat. Start! Començar! Ranking Game ended Joc acabat All questions done! Has contestat totes les preguntes! Thanks for playing! Gràcies per jugar! Ranking Clasificació Player Jugador Score Puntuació Good Bad Malament T.O. Timed out abbreviation T.E. What?? Zero points!! You're all sooo bad! Plural, all players Què?? Zero punts!! Sou tots mooolt dolents! Zero points! %1, you're very bad!! %1 is the name of a player Zero punts! %1, ets molt dolent!! Draw between %1 and %2! %1 and %2 are player names Empat entre %1 i %2! You're very good!! Ets molt bo!! Congratulations, %1!! %1 is the name of the winner Felicitats, %1! That was quite good! Ha estat força bé! You can do better... Pots fer-ho millor... You're good! Ets bo! &OK &OK auralquiz-v0.8.1-src/translations/auralquiz_es.qm000664 000764 000764 00000032232 11741607424 021700 0ustar00janjan000000 000000 >)4A -*1 M~ l[~ Q T ޳n. : x , I" ֵ! #W Gu K/ Rίj a~   %+ GFS . c( + .) r Ua/4 ga z C"K m5b A(q R(k,Q.}ŅZQ%#i1I0Teclea la respuesta aquType the answer here AnswerBox0%v de %m preguntas - %p%%v out of %m questions - %p% AuralWindow&Acerca de... &About... AuralWindow &Finalizar juego &End game AuralWindow&Opciones&Options AuralWindow &Salir&Quit AuralWindowComenzar &juego &Start game AuralWindow+%1 puntos! +%1 points! AuralWindow&Acerca de AuralquizAbout Auralquiz AuralWindowTodo hecho! All done! AuralWindowGracias tambin a todos los empaquetadores que han compilado Auralquiz para diferentes distribuciones.[Also thanks to all the packagers out there who built Auralquiz for different distributions. AuralWindow>Ha ocurrido un error mientras se reproducia sonido. El mensaje de error ha sido: %1 Tal vez tu Phonon-backend no tenga soporte para el formato de archivo MP3.An error occurred while playing sound. The error message was: %1 Maybe your Phonon-backend does not have support for the MP3 file format. AuralWindow8Analizando %1 archivos en %2Analyzing %1 files under %2 AuralWindowHAnalizando msica. Espera, por favorAnalyzing music. Please wait AuralWindow.Analizando tu msica...Analyzing your music... AuralWindow0Auralquiz carga toda tu msica de una carpeta especificada, y pregunta sobre ella, reproduciendo una pequea pieza de cada archivo de msica como pista.Auralquiz loads all your music from a specified folder and asks questions about it, playing a short piece of each music file as clue. AuralWindowMal: %2Bad: %2 AuralWindow"Cancelar anlisisCancel analysis AuralWindowCorrecto!! Correct!! AuralWindowFTraduccin al checo por Pavel Fric. Czech translation by Pavel Fric. AuralWindow4Error reproduciendo sonidoError playing sound AuralWindow FAIL!FAIL! AuralWindowPrimer uso First usage AuralWindowVenga!GO!! AuralWindowAdelante, %1!Go, %1! AuralWindowBuena suerte! Good luck! AuralWindow Bien!Good! AuralWindowBien: %1 Good: %1 AuralWindowGenial!Great! AuralWindow@Cuantas preguntas has respondido"How many questions you've answered AuralWindowEra:It was: AuralWindowVamos! Let's go! AuralWindowImagen de la pantalla principal basada en Oxygen Icons: http://www.oxygen-icons.org/ (licencia LGPL)UMain screen image based on Oxygen icons: http://www.oxygen-icons.org/ (LGPL licensed) AuralWindowSiguiente!Next! AuralWindowNo!No! AuralWindowJNo hay suficientes archivos de msicaNot enough music files AuralWindow Ups!Ooops! AuralWindowJugador %1 Player %1 AuralWindowXPor favor, selecciona otra carpeta de msica"Please choose another music folder AuralWindowTTiempo restante para responder la pregunta&Remaining time to answer this question AuralWindowPuntuacinScore AuralWindow6Error del sistema de sonidoSound system error AuralWindowComenzamos! Starting! AuralWindowEstadsticas Statistics AuralWindowAgradecimientos a los betatesters, Jorchube, Coyote, Panko y Eomer por su ayuda.LThanks to the betatesters, Jorchube, Coyote, Panko and Eomer for their help. AuralWindowNo, esa no.That's not it. AuralWindowAs es! That's right! AuralWindowZNo hay archivos de msica vlidos en tu directorio de msica seleccionado. Por favor, selecciona otro directorio que contenga archivos Ogg, FLAC o MP3, e intentalo de nuevo.There are no valid music files in your selected music directory. Please, select another directory containing Ogg, FLAC or MP3 files, and try again. AuralWindowNo hay msica!There is no music! AuralWindowhParece que hay un problema con tu sistema de sonido.3There seems to be a problem with your sound system. AuralWindow:Parece que esta es la primera vez que usas Auralquiz. Antes de jugar, se analizar tu msica. Si fuese necesario, deberas hacer click en el botn Opciones y seleccionar la carpeta donde se encuentran tus archivos Ogg, FLAC y MP3. Esta carpeta, y sub-carpetas sern analizadas para que Auralquiz pueda generar preguntas y respuestas sobre tu msica. Necesitas archivos correctamente etiquetados para que el juego funcione bien. El anlisis puede tardar un poco, y el programa no responder hasta que est completo. Por favor, se paciente.This seems to be the first time you use Auralquiz. Before playing, your music will be analyzed. If needed, you should click the Options button and select the folder where your Ogg, FLAC and MP3 files are stored. This folder, and sub-folders will be scanned so Auralquiz can generate questions and answers about your music. You need files correctly tagged in order for the game to work correctly. The scan can take some time, and the program will not be responsive until it is complete. Please be patient. AuralWindow TiempoTime AuralWindow(Se acab el tiempo! Time's up!! AuralWindow&Tiempo agotado: %3Timed out: %3 AuralWindowFCual es el ttulo de esta cancin?What's the title of this song? AuralWindow2Quien toca esta cancin?Who plays this song? AuralWindowEquivocado!Wrong! AuralWindowS!Yeah! AuralWindow@No tienes suficientes archivos de msica, o de suficientes artistas diferentes. Necesitas msica de al menos 5 artistas diferentes para poder generar preguntas.You don't have enough music files, or from enough different artists. You need music from at least 5 different artists to be able to generate questions. AuralWindow(Tu puntuacin actualYour current score AuralWindow&Cancelar&Cancel OptionsDialog"&Guardar opciones &Save options OptionsDialog Come get some OptionsDialog Damn I'm good OptionsDialogMs fcilEasier OptionsDialog$Opciones del juego Game options OptionsDialogHARD!! OptionsDialogBMuy difcil! Teclea la respuestaHardcore! Type the answer OptionsDialogMs difcilHarder OptionsDialog(Cuantos &jugadores?How many &players? OptionsDialog(Cuantas &preguntas?How many &questions? OptionsDialogEn este nivel tendrs que teclear la respuesta. No es muy estricto, as que no te has de preocupar de las maysculas, comas, etc.zIn this level you'll have to type the answer. It's not too strict, so you don't have to worry about caps, commas and such. OptionsDialogEn este nivel tendrs que hacer click en el botn correcto, o apretar las teclas 1, 2, 3 y 4 del teclado.hIs this level you'll have to click the correct button, or press the 1, 2, 3 and 4 keys in your keyboard. OptionsDialog Let's rock OptionsDialog Piece of cake OptionsDialog0Nombres de los jugadores Player names OptionsDialog:Guardar y &recargar la msicaSave and &reload music OptionsDialogNSelecciona donde se encuentra tu msica"Select where your music is located OptionsDialogFSelecciona tu carpeta de &msica...Select your &music folder... OptionsDialogComenzar!Start! OptionsDialog6Usar tema de colores propioUse own color theme OptionsDialog"Usando msica de:Using music from: OptionsDialogjugadoresplayers OptionsDialogpreguntas questions OptionsDialog&OK&OKRankingHHas contestado todas las preguntas!All questions done!RankingMalBadRanking"Felicidades, %1!Congratulations, %1!!Ranking.Empate entrer %1 y %2!Draw between %1 and %2!RankingJuego terminado Game endedRankingBienGoodRankingJugadorPlayerRankingClasificacinRankingRankingPuntuacinScoreRankingT.A.T.O.Ranking&Gracias por jugar!Thanks for playing!Ranking2Ha estado bastante bien!That was quite good!Ranking`Qu?? Cero puntos!! Sois todos muuuy malos!)What?? Zero points!! You're all sooo bad!Ranking.Puedes hacerlo mejor...You can do better...RankingEres bueno! You're good!Ranking$Eres muy bueno!!You're very good!!RankingBCero puntos! %1, eres muy malo!"Zero points! %1, you're very bad!!Rankingauralquiz-v0.8.1-src/translations/auralquiz_cs.qm000664 000764 000764 00000031136 11741607424 021700 0ustar00janjan000000 000000 f1!"Sa fgQr+q|l a(PӰ d "s"1u ew_ {0@  !"!D S()Jo\'Rp+ r s!|&A.y.)ݷ>)4_ +(1( M~ l[~ Q   ޳n :4 x * I  ֵ #S Gu K- Rί a~  h %( GFSn , c& )} .'  Ua, ga z C Q m5X A+(q R&k,Qp,5ŅZ#%i/ &Zde napiate odpovType the answer here AnswerBox(%v z %m otzek - %p%%v out of %m questions - %p% AuralWindow &O... &About... AuralWindow&Ukon it hru &End game AuralWindow &Volby&Options AuralWindow&Ukon it&Quit AuralWindow&Spustit hru &Start game AuralWindow+%1 bodo! +%1 points! AuralWindow(O programu AuralquizAbout Auralquiz AuralWindowVae hotovo! All done! AuralWindowTak podkovn vaem tvorcom bal ko, kteY Auralquiz zabalili pro rozn distribuce.[Also thanks to all the packagers out there who built Auralquiz for different distributions. AuralWindowPYi pYehrvn zvuku se vyskytla chyba. Chybov hlaen bylo: %1 Mo~n vaae jdro Phonon nem podporu pro formt MP3.An error occurred while playing sound. The error message was: %1 Maybe your Phonon-backend does not have support for the MP3 file format. AuralWindowFProvd se rozbor %1 souboro pod %2Analyzing %1 files under %2 AuralWindowRProvd se rozbor hudby. Po kejte, prosmAnalyzing music. Please wait AuralWindow>Provd se rozbor vaa hudby...Analyzing your music... AuralWindowAuralquiz nahrv vaechnu vaai hudbu ze zadan slo~ky a pt se na ni pYehrvaje kousek z ka~dho hudebnho souboru jako npovdu.Auralquiz loads all your music from a specified folder and asks questions about it, playing a short piece of each music file as clue. AuralWindow`patn: %2Bad: %2 AuralWindowZruait rozborCancel analysis AuralWindowSprvn! Correct!! AuralWindow4 esk pYeklad: Pavel Fric. Czech translation by Pavel Fric. AuralWindow4Chyba pYi pYehrvn zvukuError playing sound AuralWindowNespch!FAIL! AuralWindowPrvn pou~it First usage AuralWindowPojme!GO!! AuralWindowJdi, %1!Go, %1! AuralWindowHodn atst! Good luck! AuralWindow DobYe!Good! AuralWindowDobYe: %1 Good: %1 AuralWindowBje n!Great! AuralWindow8Kolik otzek jste zodpovdl"How many questions you've answered AuralWindowBylo to:It was: AuralWindowPojme na to! Let's go! AuralWindowObrzek na hlavn obrazovce je zalo~en na ikonch Oxygen: http://www.oxygen-icons.org/ (LGPL licensed)UMain screen image based on Oxygen icons: http://www.oxygen-icons.org/ (LGPL licensed) AuralWindow DalaNext! AuralWindowNe!No! AuralWindow8Nedostatek hudebnch souboroNot enough music files AuralWindow Jejda!Ooops! AuralWindowHr %1 Player %1 AuralWindowLVyberte, prosm, jin adresY s hudbou"Please choose another music folder AuralWindowP as zbvajc na zodpovzen tto otzky&Remaining time to answer this question AuralWindowVsledekScore AuralWindow.Chyba zvukovho systmuSound system error AuralWindowZa nme! Starting! AuralWindowStatistika Statistics AuralWindowPodkovn zkouae om Jorchube, Coyote, Panko a Eomer za jejich pomoc.LThanks to the betatesters, Jorchube, Coyote, Panko and Eomer for their help. AuralWindowTo nen ono.That's not it. AuralWindowSprvn! That's right! AuralWindow<Ve vmi vybranm adresYi s hudbou nejsou ~dn platn hudebn soubory. Vyberte, prosm, jin adresY obsahujc soubory Ogg, FLAC nebo MP3 a zkuste to znovu.There are no valid music files in your selected music directory. Please, select another directory containing Ogg, FLAC or MP3 files, and try again. AuralWindow(Nen tu ~dn hudba!There is no music! AuralWindowPZd se, ~e va zvukov systm m pot~e.3There seems to be a problem with your sound system. AuralWindowZd se, ~e je to poprv, kdy pou~vte Auralquiz. PYed za tkem hry bude vaae hudba zpracovna. V pYpad potYeby mte klepnout na tla tko Volby a vybrat slo~ku, v n~ jsou ulo~eny vaae soubory Ogg, FLAC a MP3. Tato slo~ka a jej podslo~ky budou prohledny, tak~e Auralquiz bude moci vytvoYit otzky a odpovdi k vaa hudb. Aby hra b~ela sprvn, je potYeba, aby soubory byly Ydn ozna kovny. Prohldka mo~e chvli trvat a program nebude odpovdat, dokud nebude hotov. Mjte, prosm, trplivost.This seems to be the first time you use Auralquiz. Before playing, your music will be analyzed. If needed, you should click the Options button and select the folder where your Ogg, FLAC and MP3 files are stored. This folder, and sub-folders will be scanned so Auralquiz can generate questions and answers about your music. You need files correctly tagged in order for the game to work correctly. The scan can take some time, and the program will not be responsive until it is complete. Please be patient. AuralWindow asTime AuralWindow as vyprael! Time's up!! AuralWindow(PYekro en  asu: %3Timed out: %3 AuralWindow2Jak je nzev tto psn?What's the title of this song? AuralWindow*Kdo hraje tuto pseH?Who plays this song? AuralWindow`patn!Wrong! AuralWindowAno!Yeah! AuralWindowNemte dostatek hudebnch souboro, nebo dost souboro od roznch umlco. Na tvoYen otzek potYebujete hudbu od alespoH pti roznch umlco.You don't have enough music files, or from enough different artists. You need music from at least 5 different artists to be able to generate questions. AuralWindow(Va nynja vsledekYour current score AuralWindowZ&ruait&Cancel OptionsDialog&Ulo~it volby &Save options OptionsDialog$Pojme nco sehnat Come get some OptionsDialog"Sakra, jsem dobr Damn I'm good OptionsDialog Leh Easier OptionsDialogVolby pro hru Game options OptionsDialog T~k!HARD!! OptionsDialog,T~k! Napiate odpovHardcore! Type the answer OptionsDialog T~aHarder OptionsDialogKolik &hr o?How many &players? OptionsDialogKolik &otzek?How many &questions? OptionsDialogNa tto rovni muste napsat odpov. Nen to pYlia pYsn, tak~e se nemuste obvat velikosti psmen,  rek a tak podobn.zIn this level you'll have to type the answer. It's not too strict, so you don't have to worry about caps, commas and such. OptionsDialogNa tto rovni muste klepnout na sprvn tla tko, nebo na vaa klvesnici stisknout klvesu 1, 2, 3 nebo 4.hIs this level you'll have to click the correct button, or press the 1, 2, 3 and 4 keys in your keyboard. OptionsDialogRozjedem to Let's rock OptionsDialogBrnka ka Piece of cake OptionsDialogJmna hr o Player names OptionsDialog8Ulo~it a &nahrt hudbu znovuSave and &reload music OptionsDialogFVyberte, kde je vaae hudba umstna"Select where your music is located OptionsDialog6Vyberte slo~ku s &hudbou...Select your &music folder... OptionsDialog Za t!Start! OptionsDialog8Pou~t vlastn barevn motivUse own color theme OptionsDialog&Pou~v se hudba z:Using music from: OptionsDialog hr oplayers OptionsDialog otzek questions OptionsDialog&OK&OKRanking.Vaechny otzky udlny!All questions done!Ranking `patnBadRankingBlahopYn %1!Congratulations, %1!!Ranking(Remza mezi %1 a %2!Draw between %1 and %2!RankingHra skon ena Game endedRanking DobrGoodRankingHr PlayerRanking}ebY ekRankingRankingVsledekScoreRankingPYekr.  asuT.O.RankingDky za hran!Thanks for playing!Ranking*To bylo docela dobr!That was quite good!RankingjCo~e? }dn body? Jste na to vaichni hodn moc bled!)What?? Zero points!! You're all sooo bad!Ranking2Dok~ete to udlat lp...You can do better...RankingJste dobr! You're good!Ranking"Jste velmi dobr!You're very good!!RankingR}dn body? %1, jste na tom velmi apatn!"Zero points! %1, you're very bad!!Rankingauralquiz-v0.8.1-src/translations/auralquiz_cs.ts000600 000764 000764 00000062363 11741607212 021700 0ustar00janjan000000 000000 AnswerBox Type the answer here Zde napište odpověď AuralWindow First usage První použití This seems to be the first time you use Auralquiz. Before playing, your music will be analized. If needed, you should click the Options button and select the folder where your Ogg, FLAC and MP3 files are stored. This folder, and sub-folders will be scanned so Auralquiz can generate questions and answers about your music. You need files correctly tagged in order for the game to work correctly. The scan can take some time, and the program will not be responsive until it is complete. Please be patient. Zdá se, že je to poprvé, kdy používáte Auralquiz. Před začátkem hry bude vaše hudba zpracována. V případě potřeby máte klepnout na tlačítko Volby a vybrat složku, v níž jsou uloženy vaše soubory Ogg, FLAC a MP3. Tato složka a její podsložky budou prohledány, takže Auralquiz bude moci vytvořit otázky a odpovědi k vaší hudbě. Aby hra běžela správně, je potřeba, aby soubory byly řádně označkovány. Prohlídka může chvíli trvat a program nebude odpovídat, dokud nebude hotová. Mějte, prosím, trpělivost. Good: %1 Dobře: %1 Bad: %2 Špatně: %2 Timed out: %3 Překročení času: %3 &Start game &Spustit hru &Options &Volby &About... &O... &Quit &Ukončit Time Čas Remaining time to answer this question Čas zbývající na zodpovězení této otázky %v out of %m questions - %p% %v z %m otázek - %p% How many questions you've answered Kolik otázek jste zodpověděl Score Výsledek Your current score Váš nynější výsledek &End game &Ukončit hru Statistics Statistika Sound system error Chyba zvukového systému There seems to be a problem with your sound system. Zdá se, že váš zvukový systém má potíže. Analizing music. Please wait Provádí se rozbor hudby. Počkejte, prosím There is no music! Není tu žádná hudba! There are no valid music files in your selected music directory. Please, select another directory containing Ogg, FLAC or MP3 files, and try again. Ve vámi vybraném adresáři s hudbou nejsou žádné platné hudební soubory. Vyberte, prosím, jiný adresář obsahující soubory Ogg, FLAC nebo MP3 a zkuste to znovu. Please choose another music folder Vyberte, prosím, jiný adresář s hudbou Analyzing %1 files under %2 %1 is a number, %2 is a folder Provádí se rozbor %1 souborů pod %2 Cancel analysis Zrušit rozbor Analyzing your music... Provádí se rozbor vaší hudby... Error playing sound Chyba při přehrávání zvuku An error occurred while playing sound. The error message was: %1 Maybe your Phonon-backend does not have support for the MP3 file format. Při přehrávání zvuku se vyskytla chyba. Chybové hlášení bylo: %1 Možná vaše jádro Phonon nemá podporu pro formát MP3. Time's up!! Čas vypršel! It was: Bylo to: About Auralquiz O programu Auralquiz Auralquiz loads all your music from a specified folder and asks questions about it, playing a short piece of each music file as clue. Auralquiz nahrává všechnu vaši hudbu ze zadané složky a ptá se na ni přehrávaje kousek z každého hudebního souboru jako nápovědu. Czech translation by Pavel Fric. Český překlad: Pavel Fric. Thanks to the betatesters, Jorchube, Coyote, Panko and Eomer for their help. Poděkování zkoušečům Jorchube, Coyote, Panko a Eomer za jejich pomoc. Also thanks to all the packagers out there who built Auralquiz for different distributions. Také poděkování všem tvůrcům balíčků, kteří Auralquiz zabalili pro různé distribuce. Main screen image based on Oxygen icons: http://www.oxygen-icons.org/ (LGPL licensed) Obrázek na hlavní obrazovce je založen na ikonách Oxygen: http://www.oxygen-icons.org/ (LGPL licensed) Auralquiz loads all your music from a specified folder and asks questions about it, playing a short piece of each music file as clue.<p><p>Thanks to the betatesters, Jorchube, Coyote, Panko and Eomer for their help.<p><p>Main screen image based on Oxygen icons: http://www.oxygen-icons.org/ (LGPL licensed)<p> Auralquiz nahrává všechnu vaši hudbu z dané složky a dotazuje se na ni přehráním krátkého kousku každého hudebního souboru jako nápovědy.<p><p>Poděkování zkoušečům: Jorchube, Coyote, Panko a Eomer za jejich pomoc.<p><p>Obrázek hlavní obrazovky je založen na ikonách Oxygen: http://www.oxygen-icons.org/ (licencováno LGPL)<p> This seems to be the first time you use Auralquiz. Before playing, your music will be analyzed. If needed, you should click the Options button and select the folder where your Ogg, FLAC and MP3 files are stored. This folder, and sub-folders will be scanned so Auralquiz can generate questions and answers about your music. You need files correctly tagged in order for the game to work correctly. The scan can take some time, and the program will not be responsive until it is complete. Please be patient. Zdá se, že je to poprvé, kdy používáte Auralquiz. Před začátkem hry bude vaše hudba zpracována. V případě potřeby máte klepnout na tlačítko Volby a vybrat složku, v níž jsou uloženy vaše soubory Ogg, FLAC a MP3. Tato složka a její podsložky budou prohledány, takže Auralquiz bude moci vytvořit otázky a odpovědi k vaší hudbě. Aby hra běžela správně, je potřeba, aby soubory byly řádně označkovány. Prohlídka může chvíli trvat a program nebude odpovídat, dokud nebude hotová. Mějte, prosím, trpělivost. Analyzing music. Please wait Provádí se rozbor hudby. Počkejte, prosím Starting! Začínáme! Let's go! Pojďme na to! GO!! Pojďme! Good luck! Hodně štěstí! Who plays this song? Kdo hraje tuto píseň? What's the title of this song? Jaký je název této písně? Player %1 Hráč %1 Not enough music files Nedostatek hudebních souborů You don't have enough music files, or from enough different artists. You need music from at least 5 different artists to be able to generate questions. Nemáte dostatek hudebních souborů, nebo dost souborů od různých umělců. Na tvoření otázek potřebujete hudbu od alespoň pěti různých umělců. Go, %1! Jdi, %1! Next! Další Correct!! Správně! Yeah! Ano! That's right! Správně! Good! Dobře! Great! Báječně! +%1 points! +%1 bodů! Wrong! Špatně! No! Ne! That's not it. To není ono. Ooops! Jejda! FAIL! Neúspěch! Ranking Žebříček Game ended Hra skončila All questions are done. Všechny otázky jsou udělány. Thanks for playing! Díky za hraní! All done! Vše hotovo! OptionsDialog Game options Volby pro hru Using music from: Používá se hudba z: Select your &music folder... Vyberte složku s &hudbou... Easier Lehčí Harder Těžší How many &questions? Kolik &otázek? questions otázek How many &players? Kolik &hráčů? players hráčů Use own color theme Použít vlastní barevný motiv Player names Jména hráčů Save and &reload music Uložit a &nahrát hudbu znovu &Cancel Z&rušit Select where your music is located Vyberte, kde je vaše hudba umístěna Piece of cake Brnkačka Let's rock Rozjedem to Come get some Pojďme něco sehnat Damn I'm good Sakra, jsem dobrý HARD!! Těžké! Hardcore! Type the answer Těžké! Napište odpověď In this level you'll have to type the answer. It's not too strict, so you don't have to worry about caps, commas and such. Na této úrovni musíte napsat odpověď. Není to příliš přísné, takže se nemusíte obávat velikosti písmen, čárek a tak podobně. Is this level you'll have to click the correct button, or press the 1, 2, 3 and 4 keys in your keyboard. Na této úrovni musíte klepnout na správné tlačítko, nebo na vaší klávesnici stisknout klávesu 1, 2, 3 nebo 4. &Save options &Uložit volby Start! Začít! Ranking Game ended Hra skončena All questions done! Všechny otázky udělány! Thanks for playing! Díky za hraní! Ranking Žebříček Player Hráč Score Výsledek Good Dobrý Bad Špatný T.O. Timed out abbreviation Překr. času What?? Zero points!! You're all sooo bad! Plural, all players Cože? Žádné body? Jste na to všichni hodně moc bledě! Zero points! %1, you're very bad!! %1 is the name of a player Žádné body? %1, jste na tom velmi špatně! Draw between %1 and %2! %1 and %2 are player names Remíza mezi %1 a %2! You're very good!! Jste velmi dobrý! Congratulations, %1!! %1 is the name of the winner Blahopřání %1! That was quite good! To bylo docela dobré! You can do better... Dokážete to udělat líp... You're good! Jste dobrý! &OK &OK auralquiz-v0.8.1-src/translations/auralquiz_fr.ts000600 000764 000764 00000056373 11741607212 021706 0ustar00janjan000000 000000 AnswerBox Type the answer here Tapez la réponse ici AuralWindow First usage Première utilisation This seems to be the first time you use Auralquiz. Before playing, your music will be analyzed. If needed, you should click the Options button and select the folder where your Ogg, FLAC and MP3 files are stored. This folder, and sub-folders will be scanned so Auralquiz can generate questions and answers about your music. You need files correctly tagged in order for the game to work correctly. The scan can take some time, and the program will not be responsive until it is complete. Please be patient. Il semble que c'est la première fois que vous utilisez Auralquiz. Avant de jouer, votre musique sera analysée. Si vous avez besoin, vous pouvez cliquer le bouton Options et sélectionner le dossier où se trouvent vos fichiers Ogg, FLAC et MP3. Ce dossier, et ses sous-dossiers seront scannés pour qu'Auralquiz puisse générer des questions-réponses sur votre musique. Vous avez besoin de fichiers correctement taggés pour que le jeu fonctionne bien. Le scan peut durer longtemps, et le programme peut ne plus répondre tant que ce n'est pas fini. Soyez patient. Good: %1 Bon : %1 Bad: %2 Mauvais : %2 Timed out: %3 Délai dépassé : %3 &Start game &Démarrer le jeu &Options &Options &About... À &propos... &Quit &Quitter Time Temps Remaining time to answer this question Temps restant pour répondre à cette question %v out of %m questions - %p% %v sur %m questions - %p% How many questions you've answered À combien de questions vous avez répondu Score Score Your current score Votre score actuel &End game &Terminer le jeu Statistics Statistiques Sound system error Erreur du système de son There seems to be a problem with your sound system. Il semble qu'il y a un problème avec votre système de son. Analyzing music. Please wait Analyse de la musique. Veuillez patienter There is no music! Il n'y a pas de musique ! There are no valid music files in your selected music directory. Please, select another directory containing Ogg, FLAC or MP3 files, and try again. Il n'y a pas de fichier de musique valide dans le dossier de musique sélectionné. Veuillez sélectionner un autre dossier contenant des fichiers Ogg, FLAC ou MP3 puis réessayez. Please choose another music folder Veuillez sélectionner un autre dossier de musique Analyzing %1 files under %2 %1 is a number, %2 is a folder Analyse %1 fichiers dans %2 Cancel analysis Annuler l'analyse Analyzing your music... Analyse votre musique... Error playing sound Erreur en jouant un son An error occurred while playing sound. The error message was: %1 Maybe your Phonon-backend does not have support for the MP3 file format. Une erreur est survenue en jouant un son. Le message d'erreur était : %1 Peut-être que votre backend Phonon ne supporte pas le format de fichier MP3. Time's up!! Délai dépassé ! It was: C'était : About Auralquiz À propos d'Auralquiz Auralquiz loads all your music from a specified folder and asks questions about it, playing a short piece of each music file as clue. Auralquiz charge toute votre musique depuis un certain dossier et pose des questions dessus, en jouant un petit morceau de chaque musique comme indice. Czech translation by Pavel Fric. Traduction tchèque par Pavel Fric. Thanks to the betatesters, Jorchube, Coyote, Panko and Eomer for their help. Merci aux betatesteurs, Jorchube, Coyote, Panko et Eomer pour leur aide. Also thanks to all the packagers out there who built Auralquiz for different distributions. Merci aussi à tous les développeurs qui ont fait des paquets d'Auralquiz pour les différentes distributions. Main screen image based on Oxygen icons: http://www.oxygen-icons.org/ (LGPL licensed) Image de l'écran principal basé sur les icones Oxygen : http://www.oxygen-icons.org/ (licence LGPL) Starting! À vos marques ! Let's go! Prêts ? GO!! PARTEZ ! Good luck! Bonne chance ! Who plays this song? Qui joue ce morceau ? What's the title of this song? Quel est le titre de ce morceau ? Player %1 Player %1 of %2 Joueur %1 sur %2 Not enough music files Pas assez de fichiers musicaux You don't have enough music files, or from enough different artists. You need music from at least 5 different artists to be able to generate questions. Vous n'avez pas assez de fichiers musicaux, ou pas assez d'artistes différents. Vous avez besoin de musique d'au moins 5 artistes différents pour pouvoir générer des questions. Go, %1! Allez, %1 ! Next! Au suivant ! All done! Terminé ! Correct!! Correct ! Yeah! Yeah ! That's right! C'est ça ! Good! Bien ! Great! Génial ! +%1 points! +%1 points ! Wrong! Faux ! No! Non ! That's not it. Ce n'est pas ça. Ooops! Ouuups ! FAIL! FAIL ! OptionsDialog Game options Options du jeu Using music from: Utilise la musique de : Select your &music folder... Sélectionnez votre dossier de &musique... Easier Plus facile Harder Plus difficile How many &questions? Combien de &questions ? questions questions How many &players? Combien de &joueurs ? players joueurs Use own color theme Utiliser le thème de couleur spécial Player names Noms des joueurs Save and &reload music Sauver et &recharger la musique &Cancel &Annuler Select where your music is located Sélectionnez le dossier où se trouve votre musique Piece of cake not translated for DN3D reference Piece of cake Let's rock not translated for DN3D reference Let's rock Come get some not translated for DN3D reference Come get some Damn I'm good not translated for DN3D reference Damn I'm good HARD!! Difficile ! Hardcore! Type the answer Super difficile ! Tapez la réponse In this level you'll have to type the answer. It's not too strict, so you don't have to worry about caps, commas and such. Dans ce niveau, vous devrez taper la réponse. Ce n'est pas strict, vous n'avez pas besoin de mettre les majuscules, virgules etc. Is this level you'll have to click the correct button, or press the 1, 2, 3 and 4 keys in your keyboard. Dans ce niveau, vous devez cliquer sur le bon bouton, ou appuyer sur les touches 1, 2, 3 ou 4 de votre clavier. &Save options &Sauver les options Start! Démarrer ! Ranking Game ended Jeu terminé All questions done! Fin des questions ! Thanks for playing! Merci d'avoir joué ! Ranking Classement Player Joueur Score Score Good Bon Bad Mauvais T.O. Timed out abbreviation D.D. What?? Zero points!! You're all sooo bad! Plural, all players Comment ? Aucun point ! Mais vous êtes tous mauvais ! Zero points! %1, you're very bad!! %1 is the name of a player Aucun point ! %1, vous êtes très mauvais ! Draw between %1 and %2! %1 and %2 are player names Égalité entre %1 et %2 ! You're very good!! Vous êtes très bon ! You're good! Vous êtes bon ! Congratulations, %1!! %1 is the name of the winner Félicitations, %1 ! That was quite good! C'était bien ! You can do better... Peut mieux faire... &OK &OK auralquiz-v0.8.1-src/translations/auralquiz_it.ts000600 000764 000764 00000067604 11741607212 021712 0ustar00janjan000000 000000 AnswerBox Type the answer here Scrivi la risposta qui AuralWindow This seems to be the first time you use Auralquiz. Before playing, your music will be analized. If needed, you should click the Options button and select the folder where your Ogg, FLAC and MP3 files are stored. This folder, and sub-folders will be scanned so Auralquiz can generate questions and answers about your music. You need files correctly tagged in order for the game to work correctly. The scan can take some time, and the program will not be responsive until it is complete. Please be patient. Parece que esta es la primera vez que usas Auralquiz. Antes de jugar, se analizará tu música. Si fuese necesario, deberías hacer click en el botón Opciones y seleccionar la carpeta donde se encuentran tus archivos Ogg, FLAC y MP3. Esta carpeta, y sub-carpetas serán analizadas para que Auralquiz pueda generar preguntas y respuestas sobre tu música. Necesitas archivos correctamente etiquetados para que el juego funcione bien. El análisis puede tardar un poco, y el programa no responderá hasta que esté completo. Por favor, se paciente. &Start game Inizio &gioco &About... &About... &Quit &Esci Remaining time to answer this question Tempo restante per rispondere alla domanda %v out of %m questions - %p% %v di %m domande - %p% How many questions you've answered Quante domande hai risposto Score Punteggio Your current score Punteggio attuale &End game &Fine gioco Statistics Statistiche Sound system error Errore del sistema sonoro There seems to be a problem with your sound system. Sembra ci sia un problema con il tuo sistema sonoro. Analizing music. Please wait Analizando música. Espera, por favor This seems to be the first time you use Auralquiz. Before playing, your music will be analyzed. If needed, you should click the Options button and select the folder where your Ogg, FLAC and MP3 files are stored. This folder, and sub-folders will be scanned so Auralquiz can generate questions and answers about your music. You need files correctly tagged in order for the game to work correctly. The scan can take some time, and the program will not be responsive until it is complete. Please be patient. Sembra sia la prima volta che usi Auralquiz. Prima di iniziare a giocare, la tua musica sarà analizzata. Se necessario, clicca il pulsante Opzioni e seleziona la cartella dove si trovano i tuoi file Ogg, FLAC e MP3. Questa cartella e le sue sotto-cartelle saranno analizzate così Auralquiz può generare le domande e le risposte sulla tua musica. Bisogna che i file abbiano i tag corretti per far sì che il gioco funzioni correttamente. L'analisi può richiedere un po' di tempo, il programma non sarà responsivo finchè non sarà terminata. Per favore abbi pazienza. Analyzing music. Please wait Analisi musica. Attendi There is no music! Musica non trovata! There are no valid music files in your selected music directory. Please, select another directory containing Ogg, FLAC or MP3 files, and try again. Non ci sono file musicali validi nella cartella selezionata. Seleziona un'altra cartella contenente file Ogg, FLAC o MP3, e prova di nuovo. Please choose another music folder Scegli un'altra cartella della musica Cancel analysis Annulla analisi Analyzing your music... Analisi della tua musica... Error playing sound Errore riproduzione suoni An error occurred while playing sound. The error message was: %1 Maybe your Phonon-backend does not have support for the MP3 file format. Si è verificato un errore riproducendo suoni. Il messaggio di errore è: %1 Forse il tuo Phonon-backend non supporta i file in formato MP3. Time's up!! Tempo scaduto! It was: Era: About Auralquiz About Auralquiz Auralquiz loads all your music from a specified folder and asks questions about it, playing a short piece of each music file as clue. Auralquiz carica tutta la tua musica da una cartella specificata e ti fa domande su di essa, riproducendo un breve pezzo di ogni file come indizio. Czech translation by Pavel Fric. Traduzione in ceco di Pavel Fric. Thanks to the betatesters, Jorchube, Coyote, Panko and Eomer for their help. Grazie ai betatesters, Jorchube, Coyote, Panko e Eomer per il loro aiuto. Also thanks to all the packagers out there who built Auralquiz for different distributions. Grazie anche a tutti i packagers che hanno compulato Auralquiz per diverse ditribuzioni. Main screen image based on Oxygen icons: http://www.oxygen-icons.org/ (LGPL licensed) Immagine della schermata principale basata sulle icone Oxygen: http://www.oxygen-icons.org/ (LGPL licensed) Starting! Inizio! Let's go! Andiamo! GO!! VAI!! Good luck! Buona fortuna! +%1 points! +%1 punti! Thanks for playing! ¡Gracias por jugar! Good: %1 Bien: %1 Bad: %2 Mal: %2 Timed out: %3 Tiempo agotado: %3 First usage Primo utilizzo This seems to be the first time you use Auralquiz. Before playing, you should click the Options button and select the folder where your Ogg, FLAC and MP3 files are stored. This folder, and sub-folders will be scanned so Auralquiz can generate questions and answers about your music. The scan can take some time, please be patient. Parece que esta es la primera vez que usas Auralquiz. Antes de jugar, deberías hacer click en el botón Opciones y seleccionar la carpeta donde se encuentran tus archivos Ogg, FLAC y MP3. Esta carpeta, y sub-carpetas serán analizadas para que Auralquiz pueda generar preguntas y respuestas sobre tu música. El análisis puede tardar un poco, por favor, se paciente. Auralquiz loads all your music from a specified folder and asks questions about it, playing a short piece of each music file as clue.<p><p>Thanks to the betatesters, Jorchube, Coyote, Panko and Eomer for their help.<p><p>Main screen image based on Oxygen icons: http://www.oxygen-icons.org/ (LGPL licensed)<p> Auralquiz carga toda tu música de una carpeta especificada, y pregunta sobre ella, reproduciendo una pequeña pieza de cada archivo de música como pista.<p><p>Gracias a los betatesters, Jorchube, Coyote, Panko y Eomer por su ayuda.<p><p>Imagen de la pantalla principal basada en Oxygen Icons: http://www.oxygen-icons.org/ (licencia LGPL)<p> Player %1 Giocatore %1 Not enough music files Numero di file musicali insufficiente You don't have enough music files, or from enough different artists. You need music from at least 5 different artists to be able to generate questions. Non hai abbastanza file musicali, o di abbastanza artisti diversi. Devi avere canzoni di almeno 5 artisti diversi per poter generare le domande. Go, %1! Vai, %1! Next! Prossimo! Correct!! Corretto!! Yeah! Sì! That's right! È giusto! Good! Bene! Great! Grande! points! puntos! Wrong! Sbagliato! No! No! That's not it No, esa no Ooops! Ops! FAIL! FALLITO! That's not it. Non è quello. Ranking Clasificación All questions are done. Has contestado todas las preguntas. Thanks for playing! ¡Gracias por jugar! All done! Finito! Game ended Juego terminado This seems to be the first time you use Auralquiz. Before playing, you should click the Options button and select the folder where your Ogg, FLAC and MP3 files are stored. This folder, and sub-folders will be scanned so Auralquiz can generate questions and answers about your music. You need files correctly tagged in order for the game to work correctly. The scan can take some time, please be patient. Parece que esta es la primera vez que usas Auralquiz. Antes de jugar, deberías hacer click en el botón Opciones y seleccionar la carpeta donde se encuentran tus archivos Ogg, FLAC y MP3. Esta carpeta, y sub-carpetas serán analizadas para que Auralquiz pueda generar preguntas y respuestas sobre tu música. Necesitas archivos correctamente etiquetados para que el juego funcione bien. El análisis puede tardar un poco, por favor, se paciente. Good: %1 Giuste: %1 Bad: %2 Sbagliate: %2 Timed out: %3 Tempo scaduto: %3 &Options &Opzioni Time Tempo Analyzing %1 files under %2 %1 is a number, %2 is a folder Analisi %1 file in %2 Who plays this song? Chi canta questa canzone? What's the title of this song? Qual è il titolo di questa canzone? OptionsDialog Game options Opzioni gioco Using music from: Usando la musica da: Easier Più facile Harder Più difficile Select your &music folder... Seleziona la tua cartella della &musica... How many &questions? Quante &domande? questions domande How many &players? Quanti &giocatori? players giocatori Use own color theme Usa tema dei colori proprio Player names Nomi dei giocatori Save and &reload music Salva e &ricarica la musica Is this level you'll have to click the correct button, or press the 1, 2, 3 and 4 keys in your keyboard. In questo livello devi cliccare il pulsante corretto, o premere i tasti 1, 2, 3 e 4 sulla tastiera. &Save options &Salva opzioni &Cancel &Annulla Select where your music is located Seleziona dove si trova la tua musica Piece of cake Gioco da ragazzi Let's rock Dacci dentro Come get some Ti faccio nero Damn I'm good Ehi! Sono bravo HARD!! DIFFICILE!! Hardcore! Type the answer Estremo! Scrivi la risposta In this level you'll have to type the answer. It's not too strict, so you don't have to worry about caps, commas and such. In questo livello devi digitare la risposta. Non è molto stringente, quindi non ti devi preoccupare di maiuscole, virgole e simili. Is this level you'll have click the correct button, or press the 1, 2, 3 and 4 keys in your keyboard. En este nivel tendrás que hacer click en el botón correcto, o apretar las teclas 1, 2, 3 y 4 del teclado. Start! Inizio! Ranking Game ended Gioco finito All questions done! Tutte le domande fatte! Thanks for playing! Grazie per aver giocato! Ranking Classifica Player Giocatore Score Punteggio Good Giuste Bad Sbagliate T.O. Timed out abbreviation T.S. What?? Zero points!! You're all sooo bad! Plural, all players Cosa?? Zero punti!! Siete proprio scarsi! Zero points! %1, you're very bad!! %1 is the name of a player Zero punti! %1, sei proprio scarso! Draw between %1 and %2! %1 and %2 are player names Pareggio tra %1 e %2! You're very good!! Sei molto bravo!! Congratulations, %1!! %1 is the name of the winner Congratulazioni, %1! That was quite good! È andata abbastanza bene! You can do better... Puoi fare di meglio... You're good! Sei bravo! &OK &OK auralquiz-v0.8.1-src/translations/auralquiz_fr.qm000664 000764 000764 00000032525 11741607424 021705 0ustar00janjan000000 000000 !D (,Go\)p.r#s! |& AA1z1$ݷ>C)4 .+i1 M~ l[~ Q v ޳n2 : xy - I"7 ֵ! #8 Gu K0 Rί a~ v  %+ GFS7 / c) ,~ .* n Ua/ ga z C"p m5Z A(q R(k,Q/6ŅZM%i2 (Tapez la rponse iciType the answer here AnswerBox2%v sur %m questions - %p%%v out of %m questions - %p% AuralWindow &propos... &About... AuralWindow &Terminer le jeu &End game AuralWindow&Options&Options AuralWindow&Quitter&Quit AuralWindow &Dmarrer le jeu &Start game AuralWindow+%1 points ! +%1 points! AuralWindow( propos d'AuralquizAbout Auralquiz AuralWindowTermin ! All done! AuralWindowMerci aussi tous les dveloppeurs qui ont fait des paquets d'Auralquiz pour les diffrentes distributions.[Also thanks to all the packagers out there who built Auralquiz for different distributions. AuralWindow,Une erreur est survenue en jouant un son. Le message d'erreur tait : %1 Peut-tre que votre backend Phonon ne supporte pas le format de fichier MP3.An error occurred while playing sound. The error message was: %1 Maybe your Phonon-backend does not have support for the MP3 file format. AuralWindow6Analyse %1 fichiers dans %2Analyzing %1 files under %2 AuralWindowRAnalyse de la musique. Veuillez patienterAnalyzing music. Please wait AuralWindow0Analyse votre musique...Analyzing your music... AuralWindow.Auralquiz charge toute votre musique depuis un certain dossier et pose des questions dessus, en jouant un petit morceau de chaque musique comme indice.Auralquiz loads all your music from a specified folder and asks questions about it, playing a short piece of each music file as clue. AuralWindowMauvais : %2Bad: %2 AuralWindow"Annuler l'analyseCancel analysis AuralWindowCorrect ! Correct!! AuralWindowDTraduction tchque par Pavel Fric. Czech translation by Pavel Fric. AuralWindow.Erreur en jouant un sonError playing sound AuralWindow FAIL !FAIL! AuralWindow(Premire utilisation First usage AuralWindowPARTEZ !GO!! AuralWindowAllez, %1 !Go, %1! AuralWindowBonne chance ! Good luck! AuralWindow Bien !Good! AuralWindowBon : %1 Good: %1 AuralWindowGnial !Great! AuralWindowP combien de questions vous avez rpondu"How many questions you've answered AuralWindowC'tait :It was: AuralWindowPrts ? Let's go! AuralWindowImage de l'cran principal bas sur les icones Oxygen : http://www.oxygen-icons.org/ (licence LGPL)UMain screen image based on Oxygen icons: http://www.oxygen-icons.org/ (LGPL licensed) AuralWindowAu suivant !Next! AuralWindow Non !No! AuralWindow<Pas assez de fichiers musicauxNot enough music files AuralWindowOuuups !Ooops! AuralWindowbVeuillez slectionner un autre dossier de musique"Please choose another music folder AuralWindowXTemps restant pour rpondre cette question&Remaining time to answer this question AuralWindow ScoreScore AuralWindow0Erreur du systme de sonSound system error AuralWindow vos marques ! Starting! AuralWindowStatistiques Statistics AuralWindowMerci aux betatesteurs, Jorchube, Coyote, Panko et Eomer pour leur aide.LThanks to the betatesters, Jorchube, Coyote, Panko and Eomer for their help. AuralWindow Ce n'est pas a.That's not it. AuralWindowC'est a ! That's right! AuralWindow`Il n'y a pas de fichier de musique valide dans le dossier de musique slectionn. Veuillez slectionner un autre dossier contenant des fichiers Ogg, FLAC ou MP3 puis ressayez.There are no valid music files in your selected music directory. Please, select another directory containing Ogg, FLAC or MP3 files, and try again. AuralWindow2Il n'y a pas de musique !There is no music! AuralWindowtIl semble qu'il y a un problme avec votre systme de son.3There seems to be a problem with your sound system. AuralWindowbIl semble que c'est la premire fois que vous utilisez Auralquiz. Avant de jouer, votre musique sera analyse. Si vous avez besoin, vous pouvez cliquer le bouton Options et slectionner le dossier o se trouvent vos fichiers Ogg, FLAC et MP3. Ce dossier, et ses sous-dossiers seront scanns pour qu'Auralquiz puisse gnrer des questions-rponses sur votre musique. Vous avez besoin de fichiers correctement taggs pour que le jeu fonctionne bien. Le scan peut durer longtemps, et le programme peut ne plus rpondre tant que ce n'est pas fini. Soyez patient.This seems to be the first time you use Auralquiz. Before playing, your music will be analyzed. If needed, you should click the Options button and select the folder where your Ogg, FLAC and MP3 files are stored. This folder, and sub-folders will be scanned so Auralquiz can generate questions and answers about your music. You need files correctly tagged in order for the game to work correctly. The scan can take some time, and the program will not be responsive until it is complete. Please be patient. AuralWindow TempsTime AuralWindowDlai dpass ! Time's up!! AuralWindow$Dlai dpass : %3Timed out: %3 AuralWindowBQuel est le titre de ce morceau ?What's the title of this song? AuralWindow*Qui joue ce morceau ?Who plays this song? AuralWindow Faux !Wrong! AuralWindow Yeah !Yeah! AuralWindow`Vous n'avez pas assez de fichiers musicaux, ou pas assez d'artistes diffrents. Vous avez besoin de musique d'au moins 5 artistes diffrents pour pouvoir gnrer des questions.You don't have enough music files, or from enough different artists. You need music from at least 5 different artists to be able to generate questions. AuralWindow$Votre score actuelYour current score AuralWindow&Annuler&Cancel OptionsDialog&&Sauver les options &Save options OptionsDialogCome get some Come get some OptionsDialogDamn I'm good Damn I'm good OptionsDialogPlus facileEasier OptionsDialogOptions du jeu Game options OptionsDialogDifficile !HARD!! OptionsDialogDSuper difficile ! Tapez la rponseHardcore! Type the answer OptionsDialogPlus difficileHarder OptionsDialog*Combien de &joueurs ?How many &players? OptionsDialog.Combien de &questions ?How many &questions? OptionsDialogDans ce niveau, vous devrez taper la rponse. Ce n'est pas strict, vous n'avez pas besoin de mettre les majuscules, virgules etc.zIn this level you'll have to type the answer. It's not too strict, so you don't have to worry about caps, commas and such. OptionsDialogDans ce niveau, vous devez cliquer sur le bon bouton, ou appuyer sur les touches 1, 2, 3 ou 4 de votre clavier.hIs this level you'll have to click the correct button, or press the 1, 2, 3 and 4 keys in your keyboard. OptionsDialogLet's rock Let's rock OptionsDialogPiece of cake Piece of cake OptionsDialog Noms des joueurs Player names OptionsDialog>Sauver et &recharger la musiqueSave and &reload music OptionsDialogdSlectionnez le dossier o se trouve votre musique"Select where your music is located OptionsDialogRSlectionnez votre dossier de &musique...Select your &music folder... OptionsDialogDmarrer !Start! OptionsDialogHUtiliser le thme de couleur spcialUse own color theme OptionsDialog.Utilise la musique de :Using music from: OptionsDialogjoueursplayers OptionsDialogquestions questions OptionsDialog&OK&OKRanking&Fin des questions !All questions done!RankingMauvaisBadRanking&Flicitations, %1 !Congratulations, %1!!Ranking0galit entre %1 et %2 !Draw between %1 and %2!RankingJeu termin Game endedRankingBonGoodRanking JoueurPlayerRankingClassementRankingRanking ScoreScoreRankingD.D.T.O.Ranking(Merci d'avoir jou !Thanks for playing!RankingC'tait bien !That was quite good!RankingjComment ? Aucun point ! Mais vous tes tous mauvais !)What?? Zero points!! You're all sooo bad!Ranking&Peut mieux faire...You can do better...RankingVous tes bon ! You're good!Ranking(Vous tes trs bon !You're very good!!RankingTAucun point ! %1, vous tes trs mauvais !"Zero points! %1, you're very bad!!Rankingauralquiz-v0.8.1-src/translations/auralquiz_it.qm000664 000764 000764 00000031674 11741607424 021716 0ustar00janjan000000 000000 2)4 -)1ZX M~ l[~ Q 2   ޳n : x , I ֵ # Gu K. Rί a~%   %*? GFS. . c( * .)  Ua.h ga z C!3 m5^ A(q R'+k,Qx-ŅZ+$9i0k,Scrivi la risposta quiType the answer here AnswerBox,%v di %m domande - %p%%v out of %m questions - %p% AuralWindow&About... &About... AuralWindow&Fine gioco &End game AuralWindow&Opzioni&Options AuralWindow &Esci&Quit AuralWindowInizio &gioco &Start game AuralWindow+%1 punti! +%1 points! AuralWindowAbout AuralquizAbout Auralquiz AuralWindowFinito! All done! AuralWindowGrazie anche a tutti i packagers che hanno compulato Auralquiz per diverse ditribuzioni.[Also thanks to all the packagers out there who built Auralquiz for different distributions. AuralWindowSi verificato un errore riproducendo suoni. Il messaggio di errore : %1 Forse il tuo Phonon-backend non supporta i file in formato MP3.An error occurred while playing sound. The error message was: %1 Maybe your Phonon-backend does not have support for the MP3 file format. AuralWindow*Analisi %1 file in %2Analyzing %1 files under %2 AuralWindow.Analisi musica. AttendiAnalyzing music. Please wait AuralWindow6Analisi della tua musica...Analyzing your music... AuralWindow&Auralquiz carica tutta la tua musica da una cartella specificata e ti fa domande su di essa, riproducendo un breve pezzo di ogni file come indizio.Auralquiz loads all your music from a specified folder and asks questions about it, playing a short piece of each music file as clue. AuralWindowSbagliate: %2Bad: %2 AuralWindowAnnulla analisiCancel analysis AuralWindowCorretto!! Correct!! AuralWindowBTraduzione in ceco di Pavel Fric. Czech translation by Pavel Fric. AuralWindow2Errore riproduzione suoniError playing sound AuralWindowFALLITO!FAIL! AuralWindowPrimo utilizzo First usage AuralWindow VAI!!GO!! AuralWindowVai, %1!Go, %1! AuralWindowBuona fortuna! Good luck! AuralWindow Bene!Good! AuralWindowGiuste: %1 Good: %1 AuralWindowGrande!Great! AuralWindow6Quante domande hai risposto"How many questions you've answered AuralWindowEra:It was: AuralWindowAndiamo! Let's go! AuralWindowImmagine della schermata principale basata sulle icone Oxygen: http://www.oxygen-icons.org/ (LGPL licensed)UMain screen image based on Oxygen icons: http://www.oxygen-icons.org/ (LGPL licensed) AuralWindowProssimo!Next! AuralWindowNo!No! AuralWindowJNumero di file musicali insufficienteNot enough music files AuralWindowOps!Ooops! AuralWindowGiocatore %1 Player %1 AuralWindowJScegli un'altra cartella della musica"Please choose another music folder AuralWindowTTempo restante per rispondere alla domanda&Remaining time to answer this question AuralWindowPunteggioScore AuralWindow2Errore del sistema sonoroSound system error AuralWindowInizio! Starting! AuralWindowStatistiche Statistics AuralWindowGrazie ai betatesters, Jorchube, Coyote, Panko e Eomer per il loro aiuto.LThanks to the betatesters, Jorchube, Coyote, Panko and Eomer for their help. AuralWindowNon quello.That's not it. AuralWindow giusto! That's right! AuralWindowNon ci sono file musicali validi nella cartella selezionata. Seleziona un'altra cartella contenente file Ogg, FLAC o MP3, e prova di nuovo.There are no valid music files in your selected music directory. Please, select another directory containing Ogg, FLAC or MP3 files, and try again. AuralWindow&Musica non trovata!There is no music! AuralWindowhSembra ci sia un problema con il tuo sistema sonoro.3There seems to be a problem with your sound system. AuralWindowlSembra sia la prima volta che usi Auralquiz. Prima di iniziare a giocare, la tua musica sar analizzata. Se necessario, clicca il pulsante Opzioni e seleziona la cartella dove si trovano i tuoi file Ogg, FLAC e MP3. Questa cartella e le sue sotto-cartelle saranno analizzate cos Auralquiz pu generare le domande e le risposte sulla tua musica. Bisogna che i file abbiano i tag corretti per far s che il gioco funzioni correttamente. L'analisi pu richiedere un po' di tempo, il programma non sar responsivo finch non sar terminata. Per favore abbi pazienza.This seems to be the first time you use Auralquiz. Before playing, your music will be analyzed. If needed, you should click the Options button and select the folder where your Ogg, FLAC and MP3 files are stored. This folder, and sub-folders will be scanned so Auralquiz can generate questions and answers about your music. You need files correctly tagged in order for the game to work correctly. The scan can take some time, and the program will not be responsive until it is complete. Please be patient. AuralWindow TempoTime AuralWindowTempo scaduto! Time's up!! AuralWindow$Tempo scaduto: %3Timed out: %3 AuralWindowFQual il titolo di questa canzone?What's the title of this song? AuralWindow2Chi canta questa canzone?Who plays this song? AuralWindowSbagliato!Wrong! AuralWindowS!Yeah! AuralWindow Non hai abbastanza file musicali, o di abbastanza artisti diversi. Devi avere canzoni di almeno 5 artisti diversi per poter generare le domande.You don't have enough music files, or from enough different artists. You need music from at least 5 different artists to be able to generate questions. AuralWindow"Punteggio attualeYour current score AuralWindow&Annulla&Cancel OptionsDialog&Salva opzioni &Save options OptionsDialogTi faccio nero Come get some OptionsDialogEhi! Sono bravo Damn I'm good OptionsDialogPi facileEasier OptionsDialogOpzioni gioco Game options OptionsDialogDIFFICILE!!HARD!! OptionsDialog6Estremo! Scrivi la rispostaHardcore! Type the answer OptionsDialogPi difficileHarder OptionsDialog$Quanti &giocatori?How many &players? OptionsDialog Quante &domande?How many &questions? OptionsDialogIn questo livello devi digitare la risposta. Non molto stringente, quindi non ti devi preoccupare di maiuscole, virgole e simili.zIn this level you'll have to type the answer. It's not too strict, so you don't have to worry about caps, commas and such. OptionsDialogIn questo livello devi cliccare il pulsante corretto, o premere i tasti 1, 2, 3 e 4 sulla tastiera.hIs this level you'll have to click the correct button, or press the 1, 2, 3 and 4 keys in your keyboard. OptionsDialogDacci dentro Let's rock OptionsDialog Gioco da ragazzi Piece of cake OptionsDialog$Nomi dei giocatori Player names OptionsDialog6Salva e &ricarica la musicaSave and &reload music OptionsDialogJSeleziona dove si trova la tua musica"Select where your music is located OptionsDialogTSeleziona la tua cartella della &musica...Select your &music folder... OptionsDialogInizio!Start! OptionsDialog6Usa tema dei colori proprioUse own color theme OptionsDialog(Usando la musica da:Using music from: OptionsDialoggiocatoriplayers OptionsDialogdomande questions OptionsDialog&OK&OKRanking.Tutte le domande fatte!All questions done!RankingSbagliateBadRanking(Congratulazioni, %1!Congratulations, %1!!Ranking*Pareggio tra %1 e %2!Draw between %1 and %2!RankingGioco finito Game endedRanking GiusteGoodRankingGiocatorePlayerRankingClassificaRankingRankingPunteggioScoreRankingT.S.T.O.Ranking0Grazie per aver giocato!Thanks for playing!Ranking2 andata abbastanza bene!That was quite good!RankingRCosa?? Zero punti!! Siete proprio scarsi!)What?? Zero points!! You're all sooo bad!Ranking,Puoi fare di meglio...You can do better...RankingSei bravo! You're good!Ranking"Sei molto bravo!!You're very good!!RankingFZero punti! %1, sei proprio scarso!"Zero points! %1, you're very bad!!Ranking