From c1e06056ae415347817563c7454f4398605cc362 Mon Sep 17 00:00:00 2001 From: Nicolas MASSE Date: Wed, 11 Sep 2019 11:40:16 +0200 Subject: [PATCH] migration from svn --- Compilation/Compilation.kdevelop | 102 + Compilation/Compilation.kdevelop.filelist | 9 + Compilation/Makefile | 77 + Compilation/README | 61 + Compilation/debug.c | 39 + Compilation/epc.h | 54 + Compilation/exemples/Makefile | 49 + Compilation/exemples/femtopascal.pas | 10 + Compilation/exemples/for.pas | 18 + Compilation/exemples/if.pas | 12 + Compilation/exemples/micropascal.pas | 17 + Compilation/exemples/proc_fonc.pas | 124 + Compilation/exemples/tabmulti.pas | 38 + Compilation/exemples/while.pas | 10 + Compilation/generator.c | 169 + Compilation/generator.h | 130 + Compilation/main_parser.c | 59 + Compilation/parser.y | 428 + Compilation/scanner.l | 163 + Corba/Bank/AccountImpl.java | 96 + Corba/Bank/BankClient.java | 195 + Corba/Bank/BankImpl.java | 201 + Corba/Bank/BankServer.java | 87 + Corba/BankManagement.idl | 32 + Corba/Makefile | 38 + Cpp/TP1_VariablesPointeursReferences/Makefile | 57 + Cpp/TP1_VariablesPointeursReferences/ex1.cpp | 92 + Cpp/TP1_VariablesPointeursReferences/ex1.h | 122 + Cpp/TP1_VariablesPointeursReferences/ex2.cpp | 45 + Cpp/TP1_VariablesPointeursReferences/ex3.cpp | 45 + .../porte.cpp | 154 + .../Makefile | 51 + .../checkComplex.cpp | 78 + .../complex.cpp | 178 + .../complex.h | 241 + .../notes | 218 + .../CalculMatriciel.kdevelop | 101 + .../CalculMatriciel.kdevelop.filelist | 5 + .../CalculMatriciel.kdevelop.pcs | Bin 0 -> 17854 bytes .../CalculMatriciel.kdevses | 32 + Cpp/TP3_CalculMatriciel/Doxyfile | 275 + Cpp/TP3_CalculMatriciel/Makefile | 49 + Cpp/TP3_CalculMatriciel/checkMatrix.cpp | 92 + Cpp/TP3_CalculMatriciel/matrix.cpp | 489 + Cpp/TP3_CalculMatriciel/matrix.h | 285 + Cpp/TP3_CalculMatriciel/notes | 23 + Cpp/TP4_ComptesBancaires/AUTHORS | 2 + Cpp/TP4_ComptesBancaires/COPYING | 340 + Cpp/TP4_ComptesBancaires/ChangeLog | 0 Cpp/TP4_ComptesBancaires/Doxyfile | 275 + Cpp/TP4_ComptesBancaires/INSTALL | 167 + Cpp/TP4_ComptesBancaires/Makefile.am | 5 + Cpp/TP4_ComptesBancaires/Makefile.cvs | 8 + Cpp/TP4_ComptesBancaires/Makefile.in | 612 + Cpp/TP4_ComptesBancaires/NEWS | 0 Cpp/TP4_ComptesBancaires/README | 1 + Cpp/TP4_ComptesBancaires/TODO | 1 + Cpp/TP4_ComptesBancaires/aclocal.m4 | 7147 +++++ Cpp/TP4_ComptesBancaires/config.guess | 1483 + Cpp/TP4_ComptesBancaires/config.h.in | 55 + Cpp/TP4_ComptesBancaires/config.sub | 1605 + Cpp/TP4_ComptesBancaires/configure | 21369 +++++++++++++ Cpp/TP4_ComptesBancaires/configure.in | 10 + Cpp/TP4_ComptesBancaires/depcomp | 441 + Cpp/TP4_ComptesBancaires/install-sh | 276 + Cpp/TP4_ComptesBancaires/ltmain.sh | 6643 ++++ Cpp/TP4_ComptesBancaires/missing | 336 + Cpp/TP4_ComptesBancaires/mkinstalldirs | 111 + Cpp/TP4_ComptesBancaires/src/Banque.cpp | 124 + Cpp/TP4_ComptesBancaires/src/Banque.h | 109 + Cpp/TP4_ComptesBancaires/src/Compte.cpp | 174 + Cpp/TP4_ComptesBancaires/src/Compte.h | 162 + Cpp/TP4_ComptesBancaires/src/CompteCheque.cpp | 83 + Cpp/TP4_ComptesBancaires/src/CompteCheque.h | 90 + Cpp/TP4_ComptesBancaires/src/Livret.cpp | 109 + Cpp/TP4_ComptesBancaires/src/Livret.h | 128 + Cpp/TP4_ComptesBancaires/src/Makefile.am | 11 + Cpp/TP4_ComptesBancaires/src/Makefile.in | 464 + Cpp/TP4_ComptesBancaires/src/Moneo.cpp | 154 + Cpp/TP4_ComptesBancaires/src/Moneo.h | 148 + .../src/PlanEpargneLogement.cpp | 96 + .../src/PlanEpargneLogement.h | 102 + Cpp/TP4_ComptesBancaires/src/comptes.cpp | 49 + Cpp/TP4_ComptesBancaires/src/comptes.h | 52 + .../src/tp4_comptesbancaires.cpp | 55 + Cpp/TP4_ComptesBancaires/templates/cpp | 37 + Cpp/TP4_ComptesBancaires/templates/h | 37 + .../tp4_comptesbancaires.kdevelop | 195 + .../tp4_comptesbancaires.kdevelop.pcs | Bin 0 -> 45028 bytes .../tp4_comptesbancaires.kdevses | 20 + Cpp/TP5_ModelesDeClasses/Ensemble.hh | 619 + Cpp/TP5_ModelesDeClasses/EnsembleDouble.h | 244 + Cpp/TP5_ModelesDeClasses/essai_ensemble.cc | 137 + Cpp/TP6_STL/HollowMatrix.cpp | 138 + Cpp/TP6_STL/HollowMatrix.h | 78 + Cpp/TP6_STL/Makefile | 12 + Cpp/TP6_STL/ex3.cpp | 62 + Cpp/TP6_STL/ex4.cpp | 106 + Cpp/TP6_STL/ex5.cpp | 65 + Cpp/TP6_STL/ex6.cpp | 169 + Cpp/TP6_STL/tp.cpp | 174 + Cpp/TP7_Rip/AUTHORS | 1 + Cpp/TP7_Rip/COPYING | 340 + Cpp/TP7_Rip/ChangeLog | 0 Cpp/TP7_Rip/Doxyfile | 275 + Cpp/TP7_Rip/INSTALL | 167 + Cpp/TP7_Rip/Makefile.am | 5 + Cpp/TP7_Rip/Makefile.cvs | 8 + Cpp/TP7_Rip/NEWS | 0 Cpp/TP7_Rip/README | 14 + Cpp/TP7_Rip/TODO | 0 Cpp/TP7_Rip/config.guess | 1495 + Cpp/TP7_Rip/config.sub | 1627 + Cpp/TP7_Rip/configure.in | 10 + Cpp/TP7_Rip/data/test_network.txt | 10 + Cpp/TP7_Rip/depcomp | 441 + Cpp/TP7_Rip/install-sh | 276 + Cpp/TP7_Rip/ltmain.sh | 6971 +++++ Cpp/TP7_Rip/missing | 336 + Cpp/TP7_Rip/mkinstalldirs | 111 + Cpp/TP7_Rip/src/Host.cpp | 183 + Cpp/TP7_Rip/src/Host.h | 179 + Cpp/TP7_Rip/src/IpMessage.cpp | 68 + Cpp/TP7_Rip/src/IpMessage.h | 92 + Cpp/TP7_Rip/src/Makefile.am | 13 + Cpp/TP7_Rip/src/Network.cpp | 214 + Cpp/TP7_Rip/src/Network.h | 147 + Cpp/TP7_Rip/src/RipMessage.cpp | 67 + Cpp/TP7_Rip/src/RipMessage.h | 93 + Cpp/TP7_Rip/src/RoutingTable.cpp | 143 + Cpp/TP7_Rip/src/RoutingTable.h | 105 + Cpp/TP7_Rip/src/RoutingTableEntry.cpp | 53 + Cpp/TP7_Rip/src/RoutingTableEntry.h | 88 + Cpp/TP7_Rip/src/tp7.cpp | 72 + Cpp/TP7_Rip/templates/cpp | 37 + Cpp/TP7_Rip/templates/h | 37 + Cpp/TP7_Rip/tp7.kdevelop | 209 + Cpp/TP7_Rip/tp7.kdevses | 53 + DB/TD1/create.sql | 29 + DB/TD1/insert.sql | 124 + DB/TP1_OrdresSQL/create.sql | 80 + DB/TP1_OrdresSQL/delete_data.sql | 32 + DB/TP1_OrdresSQL/drop_table.sql | 32 + DB/TP1_OrdresSQL/dump/cinema.com | 1410 + DB/TP1_OrdresSQL/dump/cinema.film | 432 + DB/TP1_OrdresSQL/dump/cinema.genre | 47 + DB/TP1_OrdresSQL/dump/cinema.numero | 26 + DB/TP1_OrdresSQL/dump/cinema.realis | 366 + DB/TP1_OrdresSQL/dump/cinema.role | 1876 ++ DB/TP1_OrdresSQL/indexes.sql | 55 + DB/TP1_OrdresSQL/insert_data.sql | 92 + DB/TP1_OrdresSQL/queries.sql | 90 + DB/TP1_OrdresSQL/update_data.sql | 41 + DB/TP2_ServeurWeb/actorDetails.php | 61 + DB/TP2_ServeurWeb/chooseActor.php | 54 + DB/TP2_ServeurWeb/chooseDirector.php | 64 + DB/TP2_ServeurWeb/directorDetails.php | 62 + DB/TP2_ServeurWeb/film.txt | 16 + DB/TP2_ServeurWeb/findMovieFromTitle.php | 65 + DB/TP2_ServeurWeb/inc/Actor.inc.php | 226 + DB/TP2_ServeurWeb/inc/Connection.inc.php | 37 + DB/TP2_ServeurWeb/inc/Director.inc.php | 206 + DB/TP2_ServeurWeb/inc/Kind.inc.php | 209 + DB/TP2_ServeurWeb/inc/Movie.inc.php | 441 + DB/TP2_ServeurWeb/inc/footer.inc.xhtml | 5 + DB/TP2_ServeurWeb/inc/util.inc.php | 149 + DB/TP2_ServeurWeb/inc/util_xhtml.inc.php | 103 + DB/TP2_ServeurWeb/index.php | 97 + DB/TP2_ServeurWeb/kindDetails.php | 59 + DB/TP2_ServeurWeb/listMovieByDirector.php | 87 + DB/TP2_ServeurWeb/listMovieByKind.php | 87 + DB/TP2_ServeurWeb/listMovieWithActor.php | 87 + DB/TP2_ServeurWeb/movieDetails.php | 111 + DB/TP2_ServeurWeb/movie_catalog.php | 49 + DB/TP2_ServeurWeb/yearDetails.php | 63 + GL/BarrierePeage/BornePéagepasser.eps | 1669 + GL/BarrierePeage/Casdutilisation.eps | 2634 ++ GL/BarrierePeage/Domainebarrièredepéage.eps | 3570 +++ GL/BarrierePeage/Passagedusager.eps | 1703 + GL/BarrierePeage/barrierePeage.zuml | Bin 0 -> 11197 bytes GL/BarrierePeage/barrierePeage2.zuml | Bin 0 -> 34986 bytes GL/BarrierePeage/barrierePeage3.zuml | Bin 0 -> 38804 bytes GL/BarrierePeage/barrierePeage4.zuml | Bin 0 -> 42312 bytes GL/BarrierePeage/barrierePeage5.zuml | Bin 0 -> 46868 bytes GL/BarrierePeage/rapport.sxw | Bin 0 -> 7949 bytes GUI/TP-Painter/MyPainter.cpp | 81 + GUI/TP-Painter/MyPainter.h | 66 + GUI/TP-Painter/myPainter.cpp | 57 + GUI/TP-Painter/myPainter.pro | 5 + GUI/TP1/ColorWidget.cpp | 27 + GUI/TP1/ColorWidget.h | 67 + GUI/TP1/MainWidget.cpp | 89 + GUI/TP1/MainWidget.h | 55 + GUI/TP1/main.cpp | 35 + GUI/TP1/main.pro | 5 + GUI/TP2/CodeValidator.cpp | 19 + GUI/TP2/CodeValidator.h | 18 + GUI/TP2/MainWidget.cpp | 125 + GUI/TP2/MainWidget.h | 51 + GUI/TP2/main.cpp | 34 + GUI/TP2/main.pro | 5 + GUI/TP3/calc/COPYING | 340 + GUI/TP3/calc/Doxyfile | 275 + GUI/TP3/calc/Makefile | 51 + GUI/TP3/calc/calc.kdevelop | 125 + GUI/TP3/calc/calc.kdevses | 32 + GUI/TP3/calc/calc.pro | 2 + GUI/TP3/calc/src/CalcGUI.cpp | 147 + GUI/TP3/calc/src/CalcGUI.h | 90 + GUI/TP3/calc/src/Controller.cpp | 117 + GUI/TP3/calc/src/Controller.h | 81 + GUI/TP3/calc/src/Makefile | 149 + GUI/TP3/calc/src/calc.cpp | 37 + GUI/TP3/calc/src/src.pro | 16 + GUI/TP3/calc/templates/cpp | 37 + GUI/TP3/calc/templates/h | 37 + GUI/TP4/COPYING | 340 + GUI/TP4/Doxyfile | 275 + GUI/TP4/exemple.html | 33 + GUI/TP4/src/ChildWindow.cpp | 154 + GUI/TP4/src/ChildWindow.h | 125 + GUI/TP4/src/MainWindow.cpp | 152 + GUI/TP4/src/MainWindow.h | 138 + GUI/TP4/src/formattedview.cpp | 41 + GUI/TP4/src/formattedview.h | 56 + GUI/TP4/src/htmldocmodel.cpp | 135 + GUI/TP4/src/htmldocmodel.h | 148 + GUI/TP4/src/main.cpp | 53 + GUI/TP4/src/overview.cpp | 41 + GUI/TP4/src/overview.h | 54 + GUI/TP4/src/sourceeditor.cpp | 36 + GUI/TP4/src/sourceeditor.h | 46 + GUI/TP4/src/src.pro | 27 + GUI/TP4/src/statview.cpp | 43 + GUI/TP4/src/statview.h | 63 + GUI/TP4/templates/cpp | 37 + GUI/TP4/templates/h | 37 + GUI/TP4/tp4.kdevelop | 189 + GUI/TP4/tp4.pro | 6 + GUI/TP5/COPYING | 340 + GUI/TP5/Doxyfile | 275 + GUI/TP5/snapshot.png | Bin 0 -> 83820 bytes GUI/TP5/src/facture.ui | 546 + GUI/TP5/src/factureimpl.cpp | 123 + GUI/TP5/src/factureimpl.h | 79 + GUI/TP5/src/facturemodel.cpp | 113 + GUI/TP5/src/facturemodel.h | 84 + GUI/TP5/src/factureview.cpp | 178 + GUI/TP5/src/factureview.h | 72 + GUI/TP5/src/mywidget.h | 22 + GUI/TP5/src/src.pro | 15 + GUI/TP5/src/tp5.cpp | 33 + GUI/TP5/templates/cpp | 22 + GUI/TP5/templates/h | 22 + GUI/TP5/tp5.kdevelop | 142 + GUI/TP5/tp5.pro | 2 + IntelligentSystem/TP1/examples/banque.txt | 11 + .../TP1/examples/carte-credit.txt | 18 + IntelligentSystem/TP1/examples/meteo-tp.txt | 15 + IntelligentSystem/TP1/main.lisp | 170 + IntelligentSystem/TP1/meta/classes.lisp | 72 + .../TP1/meta/generic-example.lisp | 160 + IntelligentSystem/TP1/meta/main.lisp | 16 + IntelligentSystem/TP1/packages.lisp | 36 + IntelligentSystem/TP1/trace.txt | 187 + IntelligentSystem/TP1/tree/classes.lisp | 40 + .../TP1/tree/decision-tree-builder.lisp | 209 + IntelligentSystem/TP1/tree/decision-tree.lisp | 77 + IntelligentSystem/TP1/tree/example-set.lisp | 52 + IntelligentSystem/TP1/tree/main.lisp | 18 + IntelligentSystem/TP2/bateaux_dico.lsp | 35 + IntelligentSystem/TP2/bateaux_faits.lsp | 12 + IntelligentSystem/TP2/bateaux_regles | 19 + IntelligentSystem/TP2/bateaux_regles.lsp | 19 + IntelligentSystem/TP2/exemple_de_regles | 14 + IntelligentSystem/TP2/packages.lsp | 2 + IntelligentSystem/TP2/se.lsp | 240 + IntelligentSystem/TP2/test-se.lsp | 11 + IntelligentSystem/TP2/traces | 17 + Java/Makefile | 18 + Java/TP1/ex1/JavaVersC.c | 29 + Java/TP1/ex1/JavaVersC.h | 21 + Java/TP1/ex1/JavaVersC.java | 45 + Java/TP1/ex1/Makefile | 44 + Java/TP1/ex2/Login.java | 60 + Java/TP1/ex2/Makefile | 54 + Java/TP1/ex2/login.c | 102 + Java/TP1/ex2/test.c | 60 + Java/TP1/ex3/Makefile | 45 + Java/TP1/ex3/ReadFile.c | 62 + Java/TP1/ex3/ReadFile.h | 21 + Java/TP1/ex3/ReadFile.java | 56 + Java/TP2/build.xml | 69 + Java/TP2/nbproject/build-impl.xml | 497 + Java/TP2/nbproject/genfiles.properties | 8 + Java/TP2/nbproject/private/private.properties | 4 + Java/TP2/nbproject/private/private.xml | 10 + Java/TP2/nbproject/project.properties | 56 + Java/TP2/nbproject/project.xml | 22 + Java/TP2/src/mybeans/ImageBean.java | 124 + Java/TP2/src/mybeans/ImageChangedEvent.java | 48 + .../TP2/src/mybeans/ImageChangedListener.java | 31 + Java/TP2/src/mybeans/ImageDisplayer.form | 240 + Java/TP2/src/mybeans/ImageDisplayer.java | 279 + Java/TP2/src/mybeans/ImageFileFilter.java | 35 + Java/TP2/src/mybeans/ImageIterator.java | 192 + Java/TP2/src/mybeans/LabelBean.java | 56 + Java/TP2/src/mybeans/Main.java | 33 + Java/TP2/src/mybeans/TimerBean.java | 147 + Java/TP2/src/mybeans/TimerBean.png | Bin 0 -> 3979 bytes Java/TP2/src/mybeans/TimerBeanBeanInfo.java | 53 + Java/TP3/CineJava/build.xml | 69 + Java/TP3/CineJava/manifest.mf | 3 + Java/TP3/CineJava/nbproject/build-impl.xml | 497 + .../CineJava/nbproject/genfiles.properties | 8 + .../nbproject/private/private.properties | 5 + .../CineJava/nbproject/private/private.xml | 12 + .../TP3/CineJava/nbproject/project.properties | 62 + Java/TP3/CineJava/nbproject/project.xml | 16 + Java/TP3/CineJava/src/cinejava/Actor.java | 121 + .../CineJava/src/cinejava/CineJavaFrame.form | 143 + .../CineJava/src/cinejava/CineJavaFrame.java | 242 + .../CineJava/src/cinejava/GestionBase.java | 80 + Java/TP3/CineJava/src/cinejava/Main.java | 41 + Java/TP3/CineJava/src/cinejava/Movie.java | 188 + Java/TP3/CineServlet/build.xml | 64 + Java/TP3/CineServlet/conf/MANIFEST.MF | 2 + Java/TP3/CineServlet/nbproject/build-impl.xml | 621 + .../CineServlet/nbproject/genfiles.properties | 8 + .../nbproject/private/private.properties | 6 + .../CineServlet/nbproject/private/private.xml | 4 + .../CineServlet/nbproject/project.properties | 69 + Java/TP3/CineServlet/nbproject/project.xml | 37 + .../CineServlet/src/cineservlet/Cinema.java | 119 + Java/TP3/CineServlet/web/META-INF/context.xml | 2 + Java/TP3/CineServlet/web/WEB-INF/web.xml | 30 + Java/TP3/commandRun | 1 + Java/TP3/install | 9 + Java/TP4/NombreADeviner/build.xml | 64 + Java/TP4/NombreADeviner/conf/MANIFEST.MF | 2 + .../NombreADeviner/nbproject/build-impl.xml | 603 + .../nbproject/genfiles.properties | 8 + .../nbproject/private/private.properties | 5 + .../nbproject/private/private.xml | 10 + .../nbproject/project.properties | 65 + Java/TP4/NombreADeviner/nbproject/project.xml | 21 + .../NombreADeviner/src/NombreADeviner.java | 151 + .../NombreADeviner/web/META-INF/context.xml | 2 + Java/TP4/NombreADeviner/web/WEB-INF/web.xml | 17 + Java/TP4/NombreADeviner/web/index.jsp | 56 + Java/TP4/WebChat/activation.jar | Bin 0 -> 55147 bytes Java/TP4/WebChat/conf/MANIFEST.MF | 2 + Java/TP4/WebChat/mail.jar | Bin 0 -> 355193 bytes .../TP4/WebChat/nbproject/genfiles.properties | 8 + .../nbproject/private/private.properties | 8 + Java/TP4/WebChat/nbproject/project.properties | 69 + Java/TP4/WebChat/nbproject/project.xml | 35 + Java/TP4/WebChat/src/WebChat/JAVChat.java | 337 + Java/TP4/WebChat/web/ForgotPassword.jsp | 22 + Java/TP4/WebChat/web/JAVirc.jsp | 210 + Java/TP4/WebChat/web/META-INF/context.xml | 2 + Java/TP4/WebChat/web/WEB-INF/web.xml | 17 + Java/TP4/WebChat/web/connect.jsp | 27 + Java/TP4/WebChat/web/register.jsp | 82 + Java/TP4/WebChat/web/sendPassword.jsp | 46 + Lisp/TP1/ex1.lsp | 355 + Lisp/TP2/ex1.lsp | 152 + Lisp/TP2/ex2.lsp | 103 + Lisp/TP2/ex3.lsp | 258 + Lisp/TP3/ex1.lsp | 188 + Lisp/TP4/connexion.lsp | 403 + Lisp/TP4/tests.lsp | 80 + Lisp/TP4/trace_complete.txt | 54 + Lisp/TP4/trace_simplifiee.txt | 7 + PkiAndSmartCards/PkiAndSmartCards.odt | Bin 0 -> 191633 bytes PkiAndSmartCards/PkiAndSmartCards.pdf | Bin 0 -> 359712 bytes amaroK/algo/algo1.m | 18 + amaroK/algo/beatTracking1.sci | 198 + amaroK/algo/beatTrackingSEF.sci | 210 + amaroK/algo/calculate_differentiator.sci | 35 + amaroK/algo/essai.m | 25 + amaroK/algo/specgram.sci | 106 + amaroK/algo/test.sci | 105 + amaroK/doc/2006_eurasip_draft.pdf | Bin 0 -> 830775 bytes amaroK/doc/2076.pdf | Bin 0 -> 281681 bytes amaroK/doc/Icme05_Alonso.pdf | Bin 0 -> 619890 bytes amaroK/doc/MiguelAlonso.pdf | Bin 0 -> 6076769 bytes amaroK/doc/Peeters_2005_ICMC_Tempo.pdf | Bin 0 -> 191003 bytes amaroK/doc/SEF_true.m | 120 + amaroK/doc/a558.pdf | Bin 0 -> 207110 bytes amaroK/doc/algo | 2 + amaroK/doc/dpwe-ms-thesis.pdf | Bin 0 -> 1084629 bytes amaroK/doc/drumtrack.pdf | Bin 0 -> 165743 bytes amaroK/doc/icassp2001.ps | 25881 ++++++++++++++++ amaroK/doc/ismir_slides.pdf | Bin 0 -> 6801133 bytes amaroK/doc/leveau.pdf | Bin 0 -> 1556903 bytes amaroK/doc/peeters.pdf | Bin 0 -> 20271 bytes amaroK/rapport/rapport.pdf | Bin 0 -> 609162 bytes amaroK/rapport/rapport_projet2A_rendu.odt | Bin 0 -> 481164 bytes amaroK/tests/LISEZ_MOI | 42 + amaroK/tests/Makefile | 30 + amaroK/tests/algo1.c | 109 + amaroK/tests/algo1.h | 9 + amaroK/tests/apodization_functions.c | 40 + amaroK/tests/apodization_functions.h | 14 + amaroK/tests/beatDetectSEF.c | 480 + amaroK/tests/beatDetectSEF.h | 158 + amaroK/tests/bin2txt.c | 14 + amaroK/tests/block.h | 19 + amaroK/tests/buffer.c | 42 + amaroK/tests/buffer.h | 20 + amaroK/tests/command_test_audio | 9 + amaroK/tests/filter.c | 54 + amaroK/tests/gen.c | 70 + amaroK/tests/genStats.c | 92 + amaroK/tests/play.c | 108 + amaroK/tests/toOctave.c | 51 + header.c | 37 + header.cpp | 39 + header.hh | 40 + header.java | 19 + header.lisp | 28 + header.make | 28 + header.php | 30 + header.sh | 36 + header.sql | 27 + print.sh | 96 + uP/TP1_SerialAndParallelPort/ex320.c | 90 + uP/TP1_SerialAndParallelPort/ex33xb.c | 252 + uP/TP1_SerialAndParallelPort/ex33xi.c | 232 + uP/TP1_SerialAndParallelPort/ex33xp.c | 142 + uP/TP1_SerialAndParallelPort/ex51.c | 84 + uP/TP1_SerialAndParallelPort/ex52.c | 80 + uP/TP1_SerialAndParallelPort/ex53.c | 88 + uP/TP2_USB/test_usb.c | 188 + uP/TP3_DSP/ex1/asm_ps0.asm | 73 + uP/TP3_DSP/ex1/asm_ps1.asm | 79 + uP/TP3_DSP/ex1/asm_ps2.asm | 89 + uP/TP3_DSP/ex1/asm_ps3.asm | 116 + uP/TP3_DSP/ex1/asm_ps4.asm | 122 + uP/TP3_DSP/ex1/data.h | 7 + uP/TP3_DSP/ex1/ex1.c | 121 + uP/TP3_DSP/ex1/ex1.pjt | 57 + uP/TP3_DSP/ex1/ex1cfg.cmd | 306 + uP/TP3_DSP/ex1/ex1cfg.h | 31 + uP/TP3_DSP/ex1/ex1cfg_c.c | 32 + uP/TP3_DSP/ex1/sa_ps0.sa | 57 + uP/TP3_DSP/ex1/sa_ps1.sa | 69 + uP/TP3_DSP/ex1/sa_ps2.sa | 63 + uP/TP3_DSP/ex2/ex2.c | 173 + uP/TP3_DSP/ex2/ex2.pjt | 40 + uP/TP3_DSP/ex2/ex2_0.c | 55 + uP/TP3_DSP/ex2/ex2cfg.cmd | 306 + uP/TP3_DSP/ex2/ex2cfg.h | 31 + uP/TP3_DSP/ex2/ex2cfg_c.c | 32 + uP/TP3_DSP/ex2/sinegen_.c | 16 + uP/TP3_DSP/ex3a/bloc_gen.c | 45 + uP/TP3_DSP/ex3a/ex3a.c | 139 + uP/TP3_DSP/ex3a/ex3a.h | 11 + uP/TP3_DSP/ex3a/ex3a.pjt | 41 + uP/TP3_DSP/ex3a/ex3acfg.cmd | 306 + uP/TP3_DSP/ex3a/ex3acfg.h | 31 + uP/TP3_DSP/ex3a/ex3acfg_c.c | 32 + uP/TP3_DSP/ex3b/bloc_gen.c | 46 + uP/TP3_DSP/ex3b/ex3b.c | 87 + uP/TP3_DSP/ex3b/ex3b.h | 11 + uP/TP3_DSP/ex3b/ex3b.pjt | 41 + uP/TP3_DSP/ex3b/ex3bcfg.cmd | 306 + uP/TP3_DSP/ex3b/ex3bcfg.h | 36 + uP/TP3_DSP/ex3b/ex3bcfg_c.c | 53 + uP/TP3_DSP/ex4a/ex4a.c | 78 + uP/TP3_DSP/ex4a/ex4a.gel | 5 + uP/TP3_DSP/ex4a/ex4a.pjt | 40 + uP/TP3_DSP/ex4a/ex4acfg.cmd | 310 + uP/TP3_DSP/ex4a/ex4acfg.h | 36 + uP/TP3_DSP/ex4a/ex4acfg_c.c | 41 + uP/TP3_DSP/ex4b/ex4b.c | 76 + uP/TP3_DSP/ex4b/ex4b.pjt | 40 + uP/TP3_DSP/ex4b/ex4bcfg.cmd | 308 + uP/TP3_DSP/ex4b/ex4bcfg.h | 37 + uP/TP3_DSP/ex4b/ex4bcfg_c.c | 41 + uP/TP_x86/TP02/ex2.asm | 118 + uP/TP_x86/TP04/ex4.asm | 83 + uP/TP_x86/TP05/ex5.asm | 279 + uP/TP_x86/TP06/dump.asm | 78 + uP/TP_x86/TP06/ex6.asm | 45 + uP/TP_x86/TP06/l6.bat | 2 + uP/TP_x86/TP07/tp7.asm | 79 + uP/TP_x86/TP08/ex8.asm | 234 + uP/TP_x86/TP09/ex9.asm | 281 + uP/TP_x86/TP10/ex10.asm | 181 + uP/TP_x86/TP10/ex10_2.asm | 208 + 492 files changed, 132254 insertions(+) create mode 100755 Compilation/Compilation.kdevelop create mode 100755 Compilation/Compilation.kdevelop.filelist create mode 100755 Compilation/Makefile create mode 100755 Compilation/README create mode 100755 Compilation/debug.c create mode 100755 Compilation/epc.h create mode 100755 Compilation/exemples/Makefile create mode 100755 Compilation/exemples/femtopascal.pas create mode 100755 Compilation/exemples/for.pas create mode 100755 Compilation/exemples/if.pas create mode 100755 Compilation/exemples/micropascal.pas create mode 100755 Compilation/exemples/proc_fonc.pas create mode 100755 Compilation/exemples/tabmulti.pas create mode 100755 Compilation/exemples/while.pas create mode 100755 Compilation/generator.c create mode 100755 Compilation/generator.h create mode 100755 Compilation/main_parser.c create mode 100755 Compilation/parser.y create mode 100755 Compilation/scanner.l create mode 100755 Corba/Bank/AccountImpl.java create mode 100755 Corba/Bank/BankClient.java create mode 100755 Corba/Bank/BankImpl.java create mode 100755 Corba/Bank/BankServer.java create mode 100755 Corba/BankManagement.idl create mode 100755 Corba/Makefile create mode 100755 Cpp/TP1_VariablesPointeursReferences/Makefile create mode 100755 Cpp/TP1_VariablesPointeursReferences/ex1.cpp create mode 100755 Cpp/TP1_VariablesPointeursReferences/ex1.h create mode 100755 Cpp/TP1_VariablesPointeursReferences/ex2.cpp create mode 100755 Cpp/TP1_VariablesPointeursReferences/ex3.cpp create mode 100755 Cpp/TP1_VariablesPointeursReferences/porte.cpp create mode 100755 Cpp/TP2_EncapsulationConstructionEtNotionsDeBase/Makefile create mode 100755 Cpp/TP2_EncapsulationConstructionEtNotionsDeBase/checkComplex.cpp create mode 100755 Cpp/TP2_EncapsulationConstructionEtNotionsDeBase/complex.cpp create mode 100755 Cpp/TP2_EncapsulationConstructionEtNotionsDeBase/complex.h create mode 100755 Cpp/TP2_EncapsulationConstructionEtNotionsDeBase/notes create mode 100755 Cpp/TP3_CalculMatriciel/CalculMatriciel.kdevelop create mode 100755 Cpp/TP3_CalculMatriciel/CalculMatriciel.kdevelop.filelist create mode 100755 Cpp/TP3_CalculMatriciel/CalculMatriciel.kdevelop.pcs create mode 100755 Cpp/TP3_CalculMatriciel/CalculMatriciel.kdevses create mode 100755 Cpp/TP3_CalculMatriciel/Doxyfile create mode 100755 Cpp/TP3_CalculMatriciel/Makefile create mode 100755 Cpp/TP3_CalculMatriciel/checkMatrix.cpp create mode 100755 Cpp/TP3_CalculMatriciel/matrix.cpp create mode 100755 Cpp/TP3_CalculMatriciel/matrix.h create mode 100755 Cpp/TP3_CalculMatriciel/notes create mode 100755 Cpp/TP4_ComptesBancaires/AUTHORS create mode 100755 Cpp/TP4_ComptesBancaires/COPYING create mode 100755 Cpp/TP4_ComptesBancaires/ChangeLog create mode 100755 Cpp/TP4_ComptesBancaires/Doxyfile create mode 100755 Cpp/TP4_ComptesBancaires/INSTALL create mode 100755 Cpp/TP4_ComptesBancaires/Makefile.am create mode 100755 Cpp/TP4_ComptesBancaires/Makefile.cvs create mode 100755 Cpp/TP4_ComptesBancaires/Makefile.in create mode 100755 Cpp/TP4_ComptesBancaires/NEWS create mode 100755 Cpp/TP4_ComptesBancaires/README create mode 100755 Cpp/TP4_ComptesBancaires/TODO create mode 100755 Cpp/TP4_ComptesBancaires/aclocal.m4 create mode 100755 Cpp/TP4_ComptesBancaires/config.guess create mode 100755 Cpp/TP4_ComptesBancaires/config.h.in create mode 100755 Cpp/TP4_ComptesBancaires/config.sub create mode 100755 Cpp/TP4_ComptesBancaires/configure create mode 100755 Cpp/TP4_ComptesBancaires/configure.in create mode 100755 Cpp/TP4_ComptesBancaires/depcomp create mode 100755 Cpp/TP4_ComptesBancaires/install-sh create mode 100755 Cpp/TP4_ComptesBancaires/ltmain.sh create mode 100755 Cpp/TP4_ComptesBancaires/missing create mode 100755 Cpp/TP4_ComptesBancaires/mkinstalldirs create mode 100755 Cpp/TP4_ComptesBancaires/src/Banque.cpp create mode 100755 Cpp/TP4_ComptesBancaires/src/Banque.h create mode 100755 Cpp/TP4_ComptesBancaires/src/Compte.cpp create mode 100755 Cpp/TP4_ComptesBancaires/src/Compte.h create mode 100755 Cpp/TP4_ComptesBancaires/src/CompteCheque.cpp create mode 100755 Cpp/TP4_ComptesBancaires/src/CompteCheque.h create mode 100755 Cpp/TP4_ComptesBancaires/src/Livret.cpp create mode 100755 Cpp/TP4_ComptesBancaires/src/Livret.h create mode 100755 Cpp/TP4_ComptesBancaires/src/Makefile.am create mode 100755 Cpp/TP4_ComptesBancaires/src/Makefile.in create mode 100755 Cpp/TP4_ComptesBancaires/src/Moneo.cpp create mode 100755 Cpp/TP4_ComptesBancaires/src/Moneo.h create mode 100755 Cpp/TP4_ComptesBancaires/src/PlanEpargneLogement.cpp create mode 100755 Cpp/TP4_ComptesBancaires/src/PlanEpargneLogement.h create mode 100755 Cpp/TP4_ComptesBancaires/src/comptes.cpp create mode 100755 Cpp/TP4_ComptesBancaires/src/comptes.h create mode 100755 Cpp/TP4_ComptesBancaires/src/tp4_comptesbancaires.cpp create mode 100755 Cpp/TP4_ComptesBancaires/templates/cpp create mode 100755 Cpp/TP4_ComptesBancaires/templates/h create mode 100755 Cpp/TP4_ComptesBancaires/tp4_comptesbancaires.kdevelop create mode 100755 Cpp/TP4_ComptesBancaires/tp4_comptesbancaires.kdevelop.pcs create mode 100755 Cpp/TP4_ComptesBancaires/tp4_comptesbancaires.kdevses create mode 100755 Cpp/TP5_ModelesDeClasses/Ensemble.hh create mode 100755 Cpp/TP5_ModelesDeClasses/EnsembleDouble.h create mode 100755 Cpp/TP5_ModelesDeClasses/essai_ensemble.cc create mode 100755 Cpp/TP6_STL/HollowMatrix.cpp create mode 100755 Cpp/TP6_STL/HollowMatrix.h create mode 100755 Cpp/TP6_STL/Makefile create mode 100755 Cpp/TP6_STL/ex3.cpp create mode 100755 Cpp/TP6_STL/ex4.cpp create mode 100755 Cpp/TP6_STL/ex5.cpp create mode 100755 Cpp/TP6_STL/ex6.cpp create mode 100755 Cpp/TP6_STL/tp.cpp create mode 100755 Cpp/TP7_Rip/AUTHORS create mode 100755 Cpp/TP7_Rip/COPYING create mode 100755 Cpp/TP7_Rip/ChangeLog create mode 100755 Cpp/TP7_Rip/Doxyfile create mode 100755 Cpp/TP7_Rip/INSTALL create mode 100755 Cpp/TP7_Rip/Makefile.am create mode 100755 Cpp/TP7_Rip/Makefile.cvs create mode 100755 Cpp/TP7_Rip/NEWS create mode 100755 Cpp/TP7_Rip/README create mode 100755 Cpp/TP7_Rip/TODO create mode 100755 Cpp/TP7_Rip/config.guess create mode 100755 Cpp/TP7_Rip/config.sub create mode 100755 Cpp/TP7_Rip/configure.in create mode 100755 Cpp/TP7_Rip/data/test_network.txt create mode 100755 Cpp/TP7_Rip/depcomp create mode 100755 Cpp/TP7_Rip/install-sh create mode 100755 Cpp/TP7_Rip/ltmain.sh create mode 100755 Cpp/TP7_Rip/missing create mode 100755 Cpp/TP7_Rip/mkinstalldirs create mode 100755 Cpp/TP7_Rip/src/Host.cpp create mode 100755 Cpp/TP7_Rip/src/Host.h create mode 100755 Cpp/TP7_Rip/src/IpMessage.cpp create mode 100755 Cpp/TP7_Rip/src/IpMessage.h create mode 100755 Cpp/TP7_Rip/src/Makefile.am create mode 100755 Cpp/TP7_Rip/src/Network.cpp create mode 100755 Cpp/TP7_Rip/src/Network.h create mode 100755 Cpp/TP7_Rip/src/RipMessage.cpp create mode 100755 Cpp/TP7_Rip/src/RipMessage.h create mode 100755 Cpp/TP7_Rip/src/RoutingTable.cpp create mode 100755 Cpp/TP7_Rip/src/RoutingTable.h create mode 100755 Cpp/TP7_Rip/src/RoutingTableEntry.cpp create mode 100755 Cpp/TP7_Rip/src/RoutingTableEntry.h create mode 100755 Cpp/TP7_Rip/src/tp7.cpp create mode 100755 Cpp/TP7_Rip/templates/cpp create mode 100755 Cpp/TP7_Rip/templates/h create mode 100755 Cpp/TP7_Rip/tp7.kdevelop create mode 100755 Cpp/TP7_Rip/tp7.kdevses create mode 100755 DB/TD1/create.sql create mode 100755 DB/TD1/insert.sql create mode 100755 DB/TP1_OrdresSQL/create.sql create mode 100755 DB/TP1_OrdresSQL/delete_data.sql create mode 100755 DB/TP1_OrdresSQL/drop_table.sql create mode 100755 DB/TP1_OrdresSQL/dump/cinema.com create mode 100755 DB/TP1_OrdresSQL/dump/cinema.film create mode 100755 DB/TP1_OrdresSQL/dump/cinema.genre create mode 100755 DB/TP1_OrdresSQL/dump/cinema.numero create mode 100755 DB/TP1_OrdresSQL/dump/cinema.realis create mode 100755 DB/TP1_OrdresSQL/dump/cinema.role create mode 100755 DB/TP1_OrdresSQL/indexes.sql create mode 100755 DB/TP1_OrdresSQL/insert_data.sql create mode 100755 DB/TP1_OrdresSQL/queries.sql create mode 100755 DB/TP1_OrdresSQL/update_data.sql create mode 100755 DB/TP2_ServeurWeb/actorDetails.php create mode 100755 DB/TP2_ServeurWeb/chooseActor.php create mode 100755 DB/TP2_ServeurWeb/chooseDirector.php create mode 100755 DB/TP2_ServeurWeb/directorDetails.php create mode 100755 DB/TP2_ServeurWeb/film.txt create mode 100755 DB/TP2_ServeurWeb/findMovieFromTitle.php create mode 100755 DB/TP2_ServeurWeb/inc/Actor.inc.php create mode 100755 DB/TP2_ServeurWeb/inc/Connection.inc.php create mode 100755 DB/TP2_ServeurWeb/inc/Director.inc.php create mode 100755 DB/TP2_ServeurWeb/inc/Kind.inc.php create mode 100755 DB/TP2_ServeurWeb/inc/Movie.inc.php create mode 100755 DB/TP2_ServeurWeb/inc/footer.inc.xhtml create mode 100755 DB/TP2_ServeurWeb/inc/util.inc.php create mode 100755 DB/TP2_ServeurWeb/inc/util_xhtml.inc.php create mode 100755 DB/TP2_ServeurWeb/index.php create mode 100755 DB/TP2_ServeurWeb/kindDetails.php create mode 100755 DB/TP2_ServeurWeb/listMovieByDirector.php create mode 100755 DB/TP2_ServeurWeb/listMovieByKind.php create mode 100755 DB/TP2_ServeurWeb/listMovieWithActor.php create mode 100755 DB/TP2_ServeurWeb/movieDetails.php create mode 100755 DB/TP2_ServeurWeb/movie_catalog.php create mode 100755 DB/TP2_ServeurWeb/yearDetails.php create mode 100755 GL/BarrierePeage/BornePéagepasser.eps create mode 100755 GL/BarrierePeage/Casdutilisation.eps create mode 100755 GL/BarrierePeage/Domainebarrièredepéage.eps create mode 100755 GL/BarrierePeage/Passagedusager.eps create mode 100755 GL/BarrierePeage/barrierePeage.zuml create mode 100755 GL/BarrierePeage/barrierePeage2.zuml create mode 100755 GL/BarrierePeage/barrierePeage3.zuml create mode 100755 GL/BarrierePeage/barrierePeage4.zuml create mode 100755 GL/BarrierePeage/barrierePeage5.zuml create mode 100755 GL/BarrierePeage/rapport.sxw create mode 100755 GUI/TP-Painter/MyPainter.cpp create mode 100755 GUI/TP-Painter/MyPainter.h create mode 100755 GUI/TP-Painter/myPainter.cpp create mode 100755 GUI/TP-Painter/myPainter.pro create mode 100755 GUI/TP1/ColorWidget.cpp create mode 100755 GUI/TP1/ColorWidget.h create mode 100755 GUI/TP1/MainWidget.cpp create mode 100755 GUI/TP1/MainWidget.h create mode 100755 GUI/TP1/main.cpp create mode 100755 GUI/TP1/main.pro create mode 100755 GUI/TP2/CodeValidator.cpp create mode 100755 GUI/TP2/CodeValidator.h create mode 100755 GUI/TP2/MainWidget.cpp create mode 100755 GUI/TP2/MainWidget.h create mode 100755 GUI/TP2/main.cpp create mode 100755 GUI/TP2/main.pro create mode 100755 GUI/TP3/calc/COPYING create mode 100755 GUI/TP3/calc/Doxyfile create mode 100755 GUI/TP3/calc/Makefile create mode 100755 GUI/TP3/calc/calc.kdevelop create mode 100755 GUI/TP3/calc/calc.kdevses create mode 100755 GUI/TP3/calc/calc.pro create mode 100755 GUI/TP3/calc/src/CalcGUI.cpp create mode 100755 GUI/TP3/calc/src/CalcGUI.h create mode 100755 GUI/TP3/calc/src/Controller.cpp create mode 100755 GUI/TP3/calc/src/Controller.h create mode 100755 GUI/TP3/calc/src/Makefile create mode 100755 GUI/TP3/calc/src/calc.cpp create mode 100755 GUI/TP3/calc/src/src.pro create mode 100755 GUI/TP3/calc/templates/cpp create mode 100755 GUI/TP3/calc/templates/h create mode 100755 GUI/TP4/COPYING create mode 100755 GUI/TP4/Doxyfile create mode 100755 GUI/TP4/exemple.html create mode 100755 GUI/TP4/src/ChildWindow.cpp create mode 100755 GUI/TP4/src/ChildWindow.h create mode 100755 GUI/TP4/src/MainWindow.cpp create mode 100755 GUI/TP4/src/MainWindow.h create mode 100755 GUI/TP4/src/formattedview.cpp create mode 100755 GUI/TP4/src/formattedview.h create mode 100755 GUI/TP4/src/htmldocmodel.cpp create mode 100755 GUI/TP4/src/htmldocmodel.h create mode 100755 GUI/TP4/src/main.cpp create mode 100755 GUI/TP4/src/overview.cpp create mode 100755 GUI/TP4/src/overview.h create mode 100755 GUI/TP4/src/sourceeditor.cpp create mode 100755 GUI/TP4/src/sourceeditor.h create mode 100755 GUI/TP4/src/src.pro create mode 100755 GUI/TP4/src/statview.cpp create mode 100755 GUI/TP4/src/statview.h create mode 100755 GUI/TP4/templates/cpp create mode 100755 GUI/TP4/templates/h create mode 100755 GUI/TP4/tp4.kdevelop create mode 100755 GUI/TP4/tp4.pro create mode 100755 GUI/TP5/COPYING create mode 100755 GUI/TP5/Doxyfile create mode 100755 GUI/TP5/snapshot.png create mode 100755 GUI/TP5/src/facture.ui create mode 100755 GUI/TP5/src/factureimpl.cpp create mode 100755 GUI/TP5/src/factureimpl.h create mode 100755 GUI/TP5/src/facturemodel.cpp create mode 100755 GUI/TP5/src/facturemodel.h create mode 100755 GUI/TP5/src/factureview.cpp create mode 100755 GUI/TP5/src/factureview.h create mode 100755 GUI/TP5/src/mywidget.h create mode 100755 GUI/TP5/src/src.pro create mode 100755 GUI/TP5/src/tp5.cpp create mode 100755 GUI/TP5/templates/cpp create mode 100755 GUI/TP5/templates/h create mode 100755 GUI/TP5/tp5.kdevelop create mode 100755 GUI/TP5/tp5.pro create mode 100755 IntelligentSystem/TP1/examples/banque.txt create mode 100755 IntelligentSystem/TP1/examples/carte-credit.txt create mode 100755 IntelligentSystem/TP1/examples/meteo-tp.txt create mode 100755 IntelligentSystem/TP1/main.lisp create mode 100755 IntelligentSystem/TP1/meta/classes.lisp create mode 100755 IntelligentSystem/TP1/meta/generic-example.lisp create mode 100755 IntelligentSystem/TP1/meta/main.lisp create mode 100755 IntelligentSystem/TP1/packages.lisp create mode 100755 IntelligentSystem/TP1/trace.txt create mode 100755 IntelligentSystem/TP1/tree/classes.lisp create mode 100755 IntelligentSystem/TP1/tree/decision-tree-builder.lisp create mode 100755 IntelligentSystem/TP1/tree/decision-tree.lisp create mode 100755 IntelligentSystem/TP1/tree/example-set.lisp create mode 100755 IntelligentSystem/TP1/tree/main.lisp create mode 100755 IntelligentSystem/TP2/bateaux_dico.lsp create mode 100755 IntelligentSystem/TP2/bateaux_faits.lsp create mode 100755 IntelligentSystem/TP2/bateaux_regles create mode 100755 IntelligentSystem/TP2/bateaux_regles.lsp create mode 100755 IntelligentSystem/TP2/exemple_de_regles create mode 100755 IntelligentSystem/TP2/packages.lsp create mode 100755 IntelligentSystem/TP2/se.lsp create mode 100755 IntelligentSystem/TP2/test-se.lsp create mode 100755 IntelligentSystem/TP2/traces create mode 100755 Java/Makefile create mode 100755 Java/TP1/ex1/JavaVersC.c create mode 100755 Java/TP1/ex1/JavaVersC.h create mode 100755 Java/TP1/ex1/JavaVersC.java create mode 100755 Java/TP1/ex1/Makefile create mode 100755 Java/TP1/ex2/Login.java create mode 100755 Java/TP1/ex2/Makefile create mode 100755 Java/TP1/ex2/login.c create mode 100755 Java/TP1/ex2/test.c create mode 100755 Java/TP1/ex3/Makefile create mode 100755 Java/TP1/ex3/ReadFile.c create mode 100755 Java/TP1/ex3/ReadFile.h create mode 100755 Java/TP1/ex3/ReadFile.java create mode 100755 Java/TP2/build.xml create mode 100755 Java/TP2/nbproject/build-impl.xml create mode 100755 Java/TP2/nbproject/genfiles.properties create mode 100755 Java/TP2/nbproject/private/private.properties create mode 100755 Java/TP2/nbproject/private/private.xml create mode 100755 Java/TP2/nbproject/project.properties create mode 100755 Java/TP2/nbproject/project.xml create mode 100755 Java/TP2/src/mybeans/ImageBean.java create mode 100755 Java/TP2/src/mybeans/ImageChangedEvent.java create mode 100755 Java/TP2/src/mybeans/ImageChangedListener.java create mode 100755 Java/TP2/src/mybeans/ImageDisplayer.form create mode 100755 Java/TP2/src/mybeans/ImageDisplayer.java create mode 100755 Java/TP2/src/mybeans/ImageFileFilter.java create mode 100755 Java/TP2/src/mybeans/ImageIterator.java create mode 100755 Java/TP2/src/mybeans/LabelBean.java create mode 100755 Java/TP2/src/mybeans/Main.java create mode 100755 Java/TP2/src/mybeans/TimerBean.java create mode 100755 Java/TP2/src/mybeans/TimerBean.png create mode 100755 Java/TP2/src/mybeans/TimerBeanBeanInfo.java create mode 100755 Java/TP3/CineJava/build.xml create mode 100755 Java/TP3/CineJava/manifest.mf create mode 100755 Java/TP3/CineJava/nbproject/build-impl.xml create mode 100755 Java/TP3/CineJava/nbproject/genfiles.properties create mode 100755 Java/TP3/CineJava/nbproject/private/private.properties create mode 100755 Java/TP3/CineJava/nbproject/private/private.xml create mode 100755 Java/TP3/CineJava/nbproject/project.properties create mode 100755 Java/TP3/CineJava/nbproject/project.xml create mode 100755 Java/TP3/CineJava/src/cinejava/Actor.java create mode 100755 Java/TP3/CineJava/src/cinejava/CineJavaFrame.form create mode 100755 Java/TP3/CineJava/src/cinejava/CineJavaFrame.java create mode 100755 Java/TP3/CineJava/src/cinejava/GestionBase.java create mode 100755 Java/TP3/CineJava/src/cinejava/Main.java create mode 100755 Java/TP3/CineJava/src/cinejava/Movie.java create mode 100755 Java/TP3/CineServlet/build.xml create mode 100755 Java/TP3/CineServlet/conf/MANIFEST.MF create mode 100755 Java/TP3/CineServlet/nbproject/build-impl.xml create mode 100755 Java/TP3/CineServlet/nbproject/genfiles.properties create mode 100755 Java/TP3/CineServlet/nbproject/private/private.properties create mode 100755 Java/TP3/CineServlet/nbproject/private/private.xml create mode 100755 Java/TP3/CineServlet/nbproject/project.properties create mode 100755 Java/TP3/CineServlet/nbproject/project.xml create mode 100755 Java/TP3/CineServlet/src/cineservlet/Cinema.java create mode 100755 Java/TP3/CineServlet/web/META-INF/context.xml create mode 100755 Java/TP3/CineServlet/web/WEB-INF/web.xml create mode 100755 Java/TP3/commandRun create mode 100755 Java/TP3/install create mode 100755 Java/TP4/NombreADeviner/build.xml create mode 100755 Java/TP4/NombreADeviner/conf/MANIFEST.MF create mode 100755 Java/TP4/NombreADeviner/nbproject/build-impl.xml create mode 100755 Java/TP4/NombreADeviner/nbproject/genfiles.properties create mode 100755 Java/TP4/NombreADeviner/nbproject/private/private.properties create mode 100755 Java/TP4/NombreADeviner/nbproject/private/private.xml create mode 100755 Java/TP4/NombreADeviner/nbproject/project.properties create mode 100755 Java/TP4/NombreADeviner/nbproject/project.xml create mode 100755 Java/TP4/NombreADeviner/src/NombreADeviner.java create mode 100755 Java/TP4/NombreADeviner/web/META-INF/context.xml create mode 100755 Java/TP4/NombreADeviner/web/WEB-INF/web.xml create mode 100755 Java/TP4/NombreADeviner/web/index.jsp create mode 100755 Java/TP4/WebChat/activation.jar create mode 100755 Java/TP4/WebChat/conf/MANIFEST.MF create mode 100755 Java/TP4/WebChat/mail.jar create mode 100755 Java/TP4/WebChat/nbproject/genfiles.properties create mode 100755 Java/TP4/WebChat/nbproject/private/private.properties create mode 100755 Java/TP4/WebChat/nbproject/project.properties create mode 100755 Java/TP4/WebChat/nbproject/project.xml create mode 100755 Java/TP4/WebChat/src/WebChat/JAVChat.java create mode 100755 Java/TP4/WebChat/web/ForgotPassword.jsp create mode 100755 Java/TP4/WebChat/web/JAVirc.jsp create mode 100755 Java/TP4/WebChat/web/META-INF/context.xml create mode 100755 Java/TP4/WebChat/web/WEB-INF/web.xml create mode 100755 Java/TP4/WebChat/web/connect.jsp create mode 100755 Java/TP4/WebChat/web/register.jsp create mode 100755 Java/TP4/WebChat/web/sendPassword.jsp create mode 100755 Lisp/TP1/ex1.lsp create mode 100755 Lisp/TP2/ex1.lsp create mode 100755 Lisp/TP2/ex2.lsp create mode 100755 Lisp/TP2/ex3.lsp create mode 100755 Lisp/TP3/ex1.lsp create mode 100755 Lisp/TP4/connexion.lsp create mode 100755 Lisp/TP4/tests.lsp create mode 100755 Lisp/TP4/trace_complete.txt create mode 100755 Lisp/TP4/trace_simplifiee.txt create mode 100755 PkiAndSmartCards/PkiAndSmartCards.odt create mode 100755 PkiAndSmartCards/PkiAndSmartCards.pdf create mode 100755 amaroK/algo/algo1.m create mode 100755 amaroK/algo/beatTracking1.sci create mode 100755 amaroK/algo/beatTrackingSEF.sci create mode 100755 amaroK/algo/calculate_differentiator.sci create mode 100755 amaroK/algo/essai.m create mode 100755 amaroK/algo/specgram.sci create mode 100755 amaroK/algo/test.sci create mode 100755 amaroK/doc/2006_eurasip_draft.pdf create mode 100755 amaroK/doc/2076.pdf create mode 100755 amaroK/doc/Icme05_Alonso.pdf create mode 100755 amaroK/doc/MiguelAlonso.pdf create mode 100755 amaroK/doc/Peeters_2005_ICMC_Tempo.pdf create mode 100755 amaroK/doc/SEF_true.m create mode 100755 amaroK/doc/a558.pdf create mode 100755 amaroK/doc/algo create mode 100755 amaroK/doc/dpwe-ms-thesis.pdf create mode 100755 amaroK/doc/drumtrack.pdf create mode 100755 amaroK/doc/icassp2001.ps create mode 100755 amaroK/doc/ismir_slides.pdf create mode 100755 amaroK/doc/leveau.pdf create mode 100755 amaroK/doc/peeters.pdf create mode 100755 amaroK/rapport/rapport.pdf create mode 100755 amaroK/rapport/rapport_projet2A_rendu.odt create mode 100755 amaroK/tests/LISEZ_MOI create mode 100755 amaroK/tests/Makefile create mode 100755 amaroK/tests/algo1.c create mode 100755 amaroK/tests/algo1.h create mode 100755 amaroK/tests/apodization_functions.c create mode 100755 amaroK/tests/apodization_functions.h create mode 100755 amaroK/tests/beatDetectSEF.c create mode 100755 amaroK/tests/beatDetectSEF.h create mode 100755 amaroK/tests/bin2txt.c create mode 100755 amaroK/tests/block.h create mode 100755 amaroK/tests/buffer.c create mode 100755 amaroK/tests/buffer.h create mode 100755 amaroK/tests/command_test_audio create mode 100755 amaroK/tests/filter.c create mode 100755 amaroK/tests/gen.c create mode 100755 amaroK/tests/genStats.c create mode 100755 amaroK/tests/play.c create mode 100755 amaroK/tests/toOctave.c create mode 100755 header.c create mode 100755 header.cpp create mode 100755 header.hh create mode 100755 header.java create mode 100755 header.lisp create mode 100755 header.make create mode 100755 header.php create mode 100755 header.sh create mode 100755 header.sql create mode 100755 print.sh create mode 100755 uP/TP1_SerialAndParallelPort/ex320.c create mode 100755 uP/TP1_SerialAndParallelPort/ex33xb.c create mode 100755 uP/TP1_SerialAndParallelPort/ex33xi.c create mode 100755 uP/TP1_SerialAndParallelPort/ex33xp.c create mode 100755 uP/TP1_SerialAndParallelPort/ex51.c create mode 100755 uP/TP1_SerialAndParallelPort/ex52.c create mode 100755 uP/TP1_SerialAndParallelPort/ex53.c create mode 100755 uP/TP2_USB/test_usb.c create mode 100755 uP/TP3_DSP/ex1/asm_ps0.asm create mode 100755 uP/TP3_DSP/ex1/asm_ps1.asm create mode 100755 uP/TP3_DSP/ex1/asm_ps2.asm create mode 100755 uP/TP3_DSP/ex1/asm_ps3.asm create mode 100755 uP/TP3_DSP/ex1/asm_ps4.asm create mode 100755 uP/TP3_DSP/ex1/data.h create mode 100755 uP/TP3_DSP/ex1/ex1.c create mode 100755 uP/TP3_DSP/ex1/ex1.pjt create mode 100755 uP/TP3_DSP/ex1/ex1cfg.cmd create mode 100755 uP/TP3_DSP/ex1/ex1cfg.h create mode 100755 uP/TP3_DSP/ex1/ex1cfg_c.c create mode 100755 uP/TP3_DSP/ex1/sa_ps0.sa create mode 100755 uP/TP3_DSP/ex1/sa_ps1.sa create mode 100755 uP/TP3_DSP/ex1/sa_ps2.sa create mode 100755 uP/TP3_DSP/ex2/ex2.c create mode 100755 uP/TP3_DSP/ex2/ex2.pjt create mode 100755 uP/TP3_DSP/ex2/ex2_0.c create mode 100755 uP/TP3_DSP/ex2/ex2cfg.cmd create mode 100755 uP/TP3_DSP/ex2/ex2cfg.h create mode 100755 uP/TP3_DSP/ex2/ex2cfg_c.c create mode 100755 uP/TP3_DSP/ex2/sinegen_.c create mode 100755 uP/TP3_DSP/ex3a/bloc_gen.c create mode 100755 uP/TP3_DSP/ex3a/ex3a.c create mode 100755 uP/TP3_DSP/ex3a/ex3a.h create mode 100755 uP/TP3_DSP/ex3a/ex3a.pjt create mode 100755 uP/TP3_DSP/ex3a/ex3acfg.cmd create mode 100755 uP/TP3_DSP/ex3a/ex3acfg.h create mode 100755 uP/TP3_DSP/ex3a/ex3acfg_c.c create mode 100755 uP/TP3_DSP/ex3b/bloc_gen.c create mode 100755 uP/TP3_DSP/ex3b/ex3b.c create mode 100755 uP/TP3_DSP/ex3b/ex3b.h create mode 100755 uP/TP3_DSP/ex3b/ex3b.pjt create mode 100755 uP/TP3_DSP/ex3b/ex3bcfg.cmd create mode 100755 uP/TP3_DSP/ex3b/ex3bcfg.h create mode 100755 uP/TP3_DSP/ex3b/ex3bcfg_c.c create mode 100755 uP/TP3_DSP/ex4a/ex4a.c create mode 100755 uP/TP3_DSP/ex4a/ex4a.gel create mode 100755 uP/TP3_DSP/ex4a/ex4a.pjt create mode 100755 uP/TP3_DSP/ex4a/ex4acfg.cmd create mode 100755 uP/TP3_DSP/ex4a/ex4acfg.h create mode 100755 uP/TP3_DSP/ex4a/ex4acfg_c.c create mode 100755 uP/TP3_DSP/ex4b/ex4b.c create mode 100755 uP/TP3_DSP/ex4b/ex4b.pjt create mode 100755 uP/TP3_DSP/ex4b/ex4bcfg.cmd create mode 100755 uP/TP3_DSP/ex4b/ex4bcfg.h create mode 100755 uP/TP3_DSP/ex4b/ex4bcfg_c.c create mode 100755 uP/TP_x86/TP02/ex2.asm create mode 100755 uP/TP_x86/TP04/ex4.asm create mode 100755 uP/TP_x86/TP05/ex5.asm create mode 100755 uP/TP_x86/TP06/dump.asm create mode 100755 uP/TP_x86/TP06/ex6.asm create mode 100755 uP/TP_x86/TP06/l6.bat create mode 100755 uP/TP_x86/TP07/tp7.asm create mode 100755 uP/TP_x86/TP08/ex8.asm create mode 100755 uP/TP_x86/TP09/ex9.asm create mode 100755 uP/TP_x86/TP10/ex10.asm create mode 100755 uP/TP_x86/TP10/ex10_2.asm diff --git a/Compilation/Compilation.kdevelop b/Compilation/Compilation.kdevelop new file mode 100755 index 0000000..eb2d259 --- /dev/null +++ b/Compilation/Compilation.kdevelop @@ -0,0 +1,102 @@ + + + + Nicolas MASSÉ + nicolas27.masse@laposte.net + $VERSION$ + KDevCustomProject + C + + + + + Compilation + executable + + + + + + + + + + ada + ada_bugs_gcc + bash + bash_bugs + clanlib + fortran_bugs_gcc + gnome1 + gnustep + gtk + gtk_bugs + haskell + haskell_bugs_ghc + java_bugs_gcc + java_bugs_sun + kde2book + libstdc++ + opengl + pascal_bugs_fp + php + php_bugs + perl + perl_bugs + python + python_bugs + qt-kdev3 + ruby + ruby_bugs + sdl + stl + sw + w3c-dom-level2-html + w3c-svg + w3c-uaag10 + wxwidgets_bugs + + + Guide to the Qt Translation Tools + Qt Assistant Manual + Qt Designer Manual + Qt Reference Documentation + qmake User Guide + + + KDE Libraries (Doxygen) + + + + + + + + + + + + + true + true + true + false + true + true + true + 250 + 400 + 250 + + + + + false + false + + + *.o,*.lo,CVS + false + + + diff --git a/Compilation/Compilation.kdevelop.filelist b/Compilation/Compilation.kdevelop.filelist new file mode 100755 index 0000000..45d44ea --- /dev/null +++ b/Compilation/Compilation.kdevelop.filelist @@ -0,0 +1,9 @@ +# KDevelop Custom Project File List +debug.c +generator.c +generator.h +Makefile +epc.h +exemples/while.pas +exemples/if.pas +README diff --git a/Compilation/Makefile b/Compilation/Makefile new file mode 100755 index 0000000..218a8db --- /dev/null +++ b/Compilation/Makefile @@ -0,0 +1,77 @@ +# +# Makefile ENSICAEN 2006 +# +# MASSE Nicolas (2005-Groupe3-LIMIN) +# LIMIN Thomas (2005-Groupe3-MASSE) +# +# ENSICAEN +# 6 Boulevard Marechal Juin +# F-14050 Caen Cedex +# +# Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre +# reproduit, utilise ou modifie sans l'avis express de ses auteurs. +# + +# +# Construit le programme EPC +# + +# +# version: 05/04/2006 +# +# done: - +# +# todo: - +# + + +CC = gcc +CFLAGS = -Wall -ggdb +LDFLAGS = + +LEX = lex + +# Le -v génère un fichier "parser.output" contenant des informations utiles. +YACC = yacc +YACCFLAGS = -v + +TARGETS = debug epc epc-debug + +all: $(TARGETS) exemples + +exemples: + $(MAKE) -C $@ + +epc: lex.yy.o parser.tab.o main_parser.o generator.o + $(CC) -o $@ $(LDFLAGS) $^ + +epc-debug: lex-debug.yy.o parser.tab.o main_parser.o generator.o + $(CC) -o $@ $(LDFLAGS) $^ + +debug: lex.yy.o debug.o parser.tab.o generator.o + $(CC) -o $@ $(LDFLAGS) $^ + +lex.yy.o: parser.tab.h + +lex-debug.yy.o: lex.yy.c parser.tab.h + $(CC) $(CFLAGS) -DDEBUG -c -o $@ $< + +lex.yy.c: scanner.l + $(LEX) $< + +parser.tab.c: parser.y + $(YACC) $(YACCFLAGS) -d -b parser $< + +parser.tab.h: parser.y + $(YACC) $(YACCFLAGS) -d -b parser $< + +clean: + rm -f lex.yy.c parser.tab.c parser.tab.h parser.output *.o $(TARGETS) + make -C exemples $@ + +distclean: clean + rm -f *~ + make -C exemples $@ + + +.PHONY: distclean clean all exemples diff --git a/Compilation/README b/Compilation/README new file mode 100755 index 0000000..e20ba33 --- /dev/null +++ b/Compilation/README @@ -0,0 +1,61 @@ +============================================================================= + README ENSICAEN 2006 + + MASSE Nicolas (2005-Groupe3-LIMIN) + LIMIN Thomas (2005-Groupe3-MASSE) + + ENSICAEN + 6 Boulevard Marechal Juin + F-14050 Caen Cedex + + Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + reproduit, utilise ou modifie sans l'avis express de ses auteurs. +============================================================================= + + + +Travail effectué : +----------------------------------------------------------- + - Analyse lexicale + - Analyse syntaxique + - Génération de code à 3 adresses + - Makefiles + - Correction de bug dans la fonction trim + - Ajout de 2 fonctions dans generator.[hc] + + void init(struct t_code * s); + + char * getType(char * id); + - Test du programme avec les examples + + + + +Reste à faire : +----------------------------------------------------------- + - Vérification de type + - Tests intensifs + + + + +Description des fichiers : +----------------------------------------------------------- + epc.h : déclarations communes à tous les fichiers + debug.c : programme de test, analyse lexicale seulement + main_parser.c : le main du compilateur + parser.y : fichier yacc + scanner.l : fichier lex + exemples/*.pas : fichiers exemples + generator.[ch] : fonctions utilitaires + README : ce fichier + Compilation.kdevelop : projet KDevelop + + + + +Fichiers générés : +----------------------------------------------------------- + epc : le compilateur + epc-debug : le compilateur, avec affichage de l'analyse lexicale + debug : programme de test, analyse lexicale seulement + exemples/*.c : exemples compilés + parser.output : généré par yacc, descriptif de la grammaire diff --git a/Compilation/debug.c b/Compilation/debug.c new file mode 100755 index 0000000..76beea7 --- /dev/null +++ b/Compilation/debug.c @@ -0,0 +1,39 @@ +/** + * #(@)debug.c ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/* + * @version 05/04/2006 + * + * done: - + * + * todo: - + */ + +#include + +/* Header commun */ +#include "epc.h" + +/** Le nom du programme, indispensable pour l'édition des liens */ +char * progname = "test"; + +/** + * Programme de test : analyse lexicalement l'entrée standard. + */ +int main() { + for (;;) + yylex(); + +} + diff --git a/Compilation/epc.h b/Compilation/epc.h new file mode 100755 index 0000000..c44798e --- /dev/null +++ b/Compilation/epc.h @@ -0,0 +1,54 @@ +/** + * #(@)epc.h ENSICAEN 2006 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/* + * Contient la déclaration des variables partagées entre les différents + * fichiers. + * + * @version 05/04/2006 + * + * done: - + * + * todo: - + */ + +#ifndef EPC_H +#define EPC_H + +/* Pour FILE* */ +#include + +/** Le nom du programme, défini dans le fichier parser.y */ +extern char* progname; + +/** L'analyseur syntaxique, fonction définie par lex */ +extern int yylex(void); + +/** Le flux d'entrée utilisée par l'analyseur syntaxique */ +extern FILE *yyin; + +/** + * Analyseur syntaxique, fonction définie par yacc + * dans le fichier parser.tab.c + */ +extern int yyparse(void); + +/** Définie dans le fichier scanner.l */ +extern int line_no; + +/** Définie par lex */ +extern char * yytext; + + +#endif /* EPC_H */ diff --git a/Compilation/exemples/Makefile b/Compilation/exemples/Makefile new file mode 100755 index 0000000..c7b2405 --- /dev/null +++ b/Compilation/exemples/Makefile @@ -0,0 +1,49 @@ +# +# Makefile ENSICAEN 2006 +# +# MASSE Nicolas (2005-Groupe3-LIMIN) +# LIMIN Thomas (2005-Groupe3-MASSE) +# +# ENSICAEN +# 6 Boulevard Marechal Juin +# F-14050 Caen Cedex +# +# Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre +# reproduit, utilise ou modifie sans l'avis express de ses auteurs. +# + +# +# Construit les exemples +# + +# +# version: 05/04/2006 +# +# done: - +# +# todo: - +# + + +CC = gcc +CFLAGS = -Wall +LDFLAGS = -lm + +EPC = ../epc + +TARGETS = if while micropascal + +all: $(TARGETS) + +$(TARGETS): % : %.pas $(EPC) + $(EPC) $< >$@.c + $(CC) $(CFLAGS) $(LDFLAGS) $@.c -o $@ + +clean: + rm -f *.c $(TARGETS) + +distclean: clean + rm -f *~ + + +.PHONY: distclean clean all diff --git a/Compilation/exemples/femtopascal.pas b/Compilation/exemples/femtopascal.pas new file mode 100755 index 0000000..0d4a4a9 --- /dev/null +++ b/Compilation/exemples/femtopascal.pas @@ -0,0 +1,10 @@ +program femto; +var var1 : integer; +begin + var1 := 10; + while (var1 * 2) > 0 do + begin + var1 := var1 - 1; + printf('%d\n', var1); + end; +end. diff --git a/Compilation/exemples/for.pas b/Compilation/exemples/for.pas new file mode 100755 index 0000000..95eaef4 --- /dev/null +++ b/Compilation/exemples/for.pas @@ -0,0 +1,18 @@ +program toto; +var i,j,k : integer; + +begin + + for i:=2 to 7 step 2 do + begin + writeln('i = ',i); + for j:=0 to 3 do + begin + writeln(' j = ',j); + for k:=5 downto 3 do + begin + writeln(' k = ',k); + end; + end; + end; +end. diff --git a/Compilation/exemples/if.pas b/Compilation/exemples/if.pas new file mode 100755 index 0000000..89c8c05 --- /dev/null +++ b/Compilation/exemples/if.pas @@ -0,0 +1,12 @@ +program if1; +var var1 : integer; +begin + var1 := 10; + + if (var1 * 2) > 0 then + printf('(var1 * 2) > 0\n'); + + if (var1 + 2 ) < 0 then + printf('(var1 + 2 ) < 0\n'); +end. + diff --git a/Compilation/exemples/micropascal.pas b/Compilation/exemples/micropascal.pas new file mode 100755 index 0000000..166f0be --- /dev/null +++ b/Compilation/exemples/micropascal.pas @@ -0,0 +1,17 @@ +program toto; +var i : integer; + k,variablelongue : integer; +begin + i:=20; + variablelongue:=-10; + k:=i+2*3+4; + variablelongue:=pow(2,3); + if (NOT (1>2)) then i:=20; + + while (i> 10) do + begin + printf('i = %d\n', i+3); + if (i=2) then puts('i=2'); + i:=i-1; + end; +end. diff --git a/Compilation/exemples/proc_fonc.pas b/Compilation/exemples/proc_fonc.pas new file mode 100755 index 0000000..a497534 --- /dev/null +++ b/Compilation/exemples/proc_fonc.pas @@ -0,0 +1,124 @@ +program testoffset; + +const + MAX = 100; +type + complex = record + re,im : integer; + end; + pile = array [0..10] of complex; + pile_int = array [0..10] of integer; + complexpile = record + p : array [0..2] of record + re,im : integer ; + end; + sommet : integer; + end; + +const + TOOOOOO = 100; +var + test1 : complex; + i : integer; + mapile : complexpile; + mapile2 : complexpile; + test : array [0..2] of integer; + test2 : array [0..2] of complex; + ok : boolean; + c : char; + + + + +function fucnspeciale (idd : integer ):integer; +const MAX = 3; +var ddddeedede : integer; +begin + write (MAX); + idd:=45; + idd:=4; +end; + +procedure totii (idd :integer ); +const MAX = 4; +var ddddededede : integer; +begin + idd:=45; + write ('tot'); +end; + +procedure totii2 (idd :boolean ); +const MAX = 5; +var ddddededede : integer; +begin + idd:=true; + write ('tot'); +end; + +procedure totii3 (idd :boolean ); +const MAX = 6; +var ddddededede : integer; +begin + idd:=true; + write ('tot'); +end; + +procedure totii4 (idd :boolean ); +const MAX = 7; +var ddddededede : integer; +begin + idd:=true; + write ('tot'); +end; + +function fucnspeciale2 (idd :integer ):integer; +const MAX = 8; +var ddddeedede: integer; +begin + write ('tot'); + ddddeedede:=45; + idd:=4; +end; + +function specialtest (c : char ,b:boolean,i:integer):integer; +const MAX =9; +begin + i:=4; + specialtest:=4; +end; + +begin + totii2(true); + i:=10+fucnspeciale(i)+specialtest('t',false,1+5+8-8); + i:=10+fucnspeciale(i)+specialtest(c,ok,i); + test1.im:=4; + i:=10; + mapile.sommet := 0; + mapile2.sommet := 0; + mapile.p[2].re := 10; + test[5]:=MAX+5+i; + ok := true; + c := 't'; + writeln(ok); + read(ok, test2[1].re,c); + writeln(ok); + writeln(test2[1].re); + writeln (i); + + + writeln(1+5+8+8+7); + while true = ok do + begin + if i = 15 then + ok:=false; + writeln (i); + i:=i+1; + end; + c:='z'; + if c <> 't' then + writeln(ok); + + if 1+i=5+5+1 then + writeln(ok); + mapile.p[0].re :=3; +end. diff --git a/Compilation/exemples/tabmulti.pas b/Compilation/exemples/tabmulti.pas new file mode 100755 index 0000000..f864cd0 --- /dev/null +++ b/Compilation/exemples/tabmulti.pas @@ -0,0 +1,38 @@ +program tabmulti; + +var + test2 : array [2..4,3,4,5] of integer; + test : array [4,6,7] of integer; + i,j,k,l : integer; + +begin + test2[3,2,3,4]:=4; + i:=1; + j:=1; + k:=1; + l:=7; +{ for i:= 0 to 2 do } +{ begin } +{ for j:=0 to 3 do } +{ begin } + for k:=0 to 5 do + begin + write('k = '); + writeln (k); + for l:=0 to 6 do + begin +{ write('i = '); } +{ write (i); } +{ write(' j = '); } +{ write (j); } + write(' l = '); + writeln (l); + test[j,k,l] := l; +{ writeln(test[j,k,l]); } + end; + end; +{ end; } +{ end; } + test[3,5,6]:=4; + writeln( test[3,5,6]); +end. \ No newline at end of file diff --git a/Compilation/exemples/while.pas b/Compilation/exemples/while.pas new file mode 100755 index 0000000..291516a --- /dev/null +++ b/Compilation/exemples/while.pas @@ -0,0 +1,10 @@ +program while1; +var var1 : integer; +begin + var1 := 10; + while (var1 * 2) > 0 do + begin + var1 := var1 - 1; + printf('%d\n', var1); + end; +end. diff --git a/Compilation/generator.c b/Compilation/generator.c new file mode 100755 index 0000000..e511b9b --- /dev/null +++ b/Compilation/generator.c @@ -0,0 +1,169 @@ +/** -*- c-basic-offset: 3 -*- + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/** + * @author Regis Clouard + * + * @version 2006-03-06 + */ + +#include +#include +#include +#include +#include "generator.h" + +/** + * @file generator.c + * + * Theses functions do not care about memory management. + * @todo Manage memory. + */ + +/** + * Init the parser's union. + */ +void init(struct t_code * s) { + s->after = ""; + s->before = ""; + s->code = ""; + s->place = ""; + s->type = ""; +} + + +/** + * Does not create new string. + */ +char *trim( char *s ) { + // Bug : s[strlen(s)-2]='\0'; + s[strlen(s)-1]='\0'; + return s+1; +} + +/** + * Creates a new string. + */ +char *prod( const char *s ) { + if (s!=NULL && (strlen(s) > 0)) { + char* ns=(char*)malloc((strlen(s)+6)*sizeof(char)); + strcpy(ns," "); + strcat(ns,s); + strcat(ns,";\n"); + return ns; + } else { + return strdup(""); + } +} + +/* The current temporary counter. */ +static int _tempCounter=0; + +static struct s_table *_symbolTable=NULL; + +/** + * Creates a new string that can be free. + */ +char *newTemp( char * type) { + char *_name=(char *)malloc(7*sizeof(char)); + + sprintf(_name,"__t%03d",_tempCounter++); + addType(_name,type); + return _name; +} + +/* Current number of label. */ +static int _label=0; + +/** + * Creates a new string that can be free. + */ +char *newLabel( ) { + char *_name=(char *)malloc(5*sizeof(char)); + + sprintf(_name,"__L%03d",_label++); + return _name; +} + +/** + * Creates a new string. + */ +char *concat( const char *item, ... ) { + //const char *p; + va_list argp; + //int i; + char *s; + int size=strlen(item)+1; + char *statement=(char *)malloc(size*sizeof(char)); + + va_start(argp, item); + strcpy(statement,item); + while ((s = va_arg(argp, char *))!= NULL) { + statement=realloc(statement,size+strlen(s)); + statement[size-1]='\0'; + strcat(statement,s); + size+=strlen(s); + } + + va_end(argp); + statement[size-1]='\0'; + return statement; +} + +/** + * Allocates a new entry in the symbol table, but + * the structure field are already allocated. + * @param a name for the identifier. + * @param type a type name (int, float, void ...). + */ +void addType(char *identifier, char* type) { + struct s_table *ns= (struct s_table *)(malloc(sizeof(struct s_table))); + + strcpy(ns->name,identifier); + strcpy(ns->type,type); + ns->next=_symbolTable; + _symbolTable=ns; +} + +/** + * Retourne le type d'un symbole + */ +char * getType(char * id) { + struct s_table * se = _symbolTable; + while (se != NULL) { + if (strcmp(se->name, id) == 0) { + return se->type; + } + + se = se->next; + } + + // type par defaut + return "void"; +} + +/** + * Goes through the symbol table and builds + * the convenient C statement liek: type variable; + * One line per variable. + */ +char *genDeclarationVars( ) { + char *s,*s1; + struct s_table *t=_symbolTable; + + s=NULL; + while ( t!= NULL) { + s1=s; + s=concat(prod(concat(t->type," ",t->name,NULL)),s1,NULL); + if (s1) free(s1); + t=t->next; + } + return s; +} diff --git a/Compilation/generator.h b/Compilation/generator.h new file mode 100755 index 0000000..aa77272 --- /dev/null +++ b/Compilation/generator.h @@ -0,0 +1,130 @@ +/** -*- c-basic-offset: 3 -*- + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +#ifndef GENERATOR_H +#define GENERATOR_H + +#include "parser.tab.h" + +/** + * @author Regis Clouard + * @author Nicolas Massé + * @author Thomas Limin + * + * @version 2006-03-06 + */ + +/** + * @file generator.h + * This file contains functions for managing + * symbol table and intermediate code. + */ + +/** + * The symbol table. + */ +struct s_table { + char name[255]; /* the name of the symbol */ + char type[255]; /* The C type of symbol : int, float, void. */ + struct s_table *next; /* The next symbol. */ +}; + +extern struct s_table *_symbolTable; + +/** + * Initialise une structure de donnees du parseur. + */ +void init(struct t_code * s); + +/** + * Retourne le type d'un symbole. + */ +char * getType(char * id); + +/** + * Creates a new entry in the symbol table + * for the given identifier with the specified type. + * Available types are those of the C language. + * For example, the following call adds the integer + * variable 'i' in the symbol table: + *
+ * addType("i","int");
+ * 
+ * @param the name of the identifier. + * @param type the type name (int, float, void ...). + */ +void addType( char *identifier, char *type ) ; + +/** + * Returns the code for the declaration + * of all the variables in the symbol table. + * @return the code. + */ +char* genDeclarationVars(); + +/** + * Creates a new tempory variable name with the + * specified type. Available types are those + * of the C language: int, float, etc. For + * example the following call creates a new + * integer variable: + *
+ * char * variable=newTemp("int");
+ * 
+ * The variable name template looks like __txxx where + * xxx is a serial integer number that begins with 1. + * For example, the second call to newTemp returns: __t002 + * Also, adds the variable in the symbol table. + * + * @param type the type of the temporary variable. + * @return a new variable name. + */ +char* newTemp( char *type ); + +/** + * Creates a new label name. + * The label name takes the form of __Lxxxx + * where xxxx is an integer. For example, + * the second call to newLabel() return __L002 + * @return the string with the label name. + */ +char *newLabel( ) ; + +/** + * Catenates the given strings into one single string. + * The result string is dynamically allocated. So a free + * is necessary for destruction. + * @param items the list of input strings. + * @return the new statement. + */ +char *concat( const char *item, ... ); + +/** + * Returns the given string without the first and + * the last character. For example this is convenient + * for getting text from Pascal string: + *
+ * trim("'this a text'"); -> returns "this a text"
+ * 
+ * @param s the string to process. + * @return the string modified. + */ +char *trim( char *s ); + +/** + * Builds a C statement with + * the given code. + * Adds semicolon and indents each line. + * @param s the given code. + * @return the C statement. + */ +char *prod( const char *s ) ; + +#endif /* GENERATOR_H */ diff --git a/Compilation/main_parser.c b/Compilation/main_parser.c new file mode 100755 index 0000000..13cb49f --- /dev/null +++ b/Compilation/main_parser.c @@ -0,0 +1,59 @@ +/** + * #(@)main_parser.c ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/** + * Executes the parser and the semantic analyzer. + * Generates the intermediate code to standard output. + * The compiler accepts only one Pascal file. + */ + +#include "parser.tab.h" +#include "epc.h" + +#include +#include + +int main( int argc, char *argv[] ) { + if (argc == 1) { + fprintf(stderr,"%s: no input files\n",argv[0]); + exit(1); + } + + if (strcmp(argv[1],"-h") == 0) { + fprintf(stderr,"Usage: %s [options] file\n",argv[0]); + fputs("Options:",stderr); + fputs(" -h Display this information",stderr); + exit(0); + } + + yyin=fopen(argv[1], "r"); /* Open the input for the parser. */ + + /* @todo: !! Add a function to get only the name of the */ + /* file without the path. */ + progname=argv[1]; + + if (!yyin) { /* Cannot open input file. */ + fprintf(stderr,"%s: %s: No such file or directory\n",argv[0],argv[1]); + fprintf(stderr,"%s: no input file\n",argv[0]); + return 1; + } + + if (yyparse()) { + fprintf(stderr,"%s: %s: compilation failed\n",argv[0],argv[1]); + return 1; + } + + return 0; +} + diff --git a/Compilation/parser.y b/Compilation/parser.y new file mode 100755 index 0000000..fd36077 --- /dev/null +++ b/Compilation/parser.y @@ -0,0 +1,428 @@ +/** + * #(@)parser.y ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/* + * @version 05/04/2006 + * + * done: - + * + * todo: - + */ + +/** + * @file parser.y + * + * Part of the Pascal grammar in Yacc format, based originally on BNF. + * The grammar has been massaged somewhat to make it LALR, and limited + * to integer type, and if and while control structure. + */ + +%{ +#include +#include +#include + +/* Fonctions utilitaires */ +#include "generator.h" + +/* Header commun */ +#include "epc.h" + +/* voir le corps de la méthode ci-dessous */ +int yyerror(char * s); + +/** Le nom du programme, utilisée par yacc */ +char * progname; +%} + +/** + * The list of attributes associated to each terminal + * and non terminal of the grammar. + */ +%union { + char strval[255]; /* The value of the token. */ + + /** + * This structure defines the convenient + * information for building the code. + */ + struct t_code { + char* code; /* The string that contains the 3 address code */ + char* place; /* The name of the identifier or the temporary variable. */ + char* before; /* The name of the label before the code. */ + char* after; /* The name of the label after the code. */ + char* type; /* The name of the type (int, float, ...). */ + } code3a; +} + +/* Les jetons */ +%token AND ASSIGNMENT +%token COLON COMMA DO DOT END EQUAL +%token GE GT IF IN INTEGER LBRAC LE +%token LPAREN LT MINUS NOT NOTEQUAL OF OR +%token PBEGIN PLUS +%token PROGRAM +%token RBRAC RPAREN +%token SEMICOLON DIV MULT THEN +%token VAR WHILE +%token IDENTIFIER +%token REALNUMBER +%token INTNUMBER +%token CHARACTER_STRING + +/* Operator associativity. */ +%left PLUS MINUS +%left OR AND NOT +%right MULT DIV + +/* The axiom. */ +%start program + +/* Information de typage des non termimaux */ +%type identifier number term type_denoter sign +%type compound_statement statement_sequence procedure_statement +%type simple_expression expression instruction +%type actual_parameter_list relop variable_declaration +%type program_heading block statement_part +%% +program: program_heading SEMICOLON block DOT + { + puts("#include "); + puts("#include "); + puts($1.code); + puts($3.code); + } + ; + +program_heading: PROGRAM identifier + { + init(&$$); + $$.code = concat("/* nom du programme : '", $2.place, "' */", NULL); + } + ; + +block: variable_declaration_part statement_part + { + init(&$$); + $$.code = concat("int main(void) {\n", + $2.code, + prod("return 0"), + "}\n", NULL); + } + ; + +statement_part: compound_statement + { + init(&$$); + $$.code = concat(" /* début des variables */\n", + genDeclarationVars(), + " /* fin des variables */\n\n", + $1.code, NULL); + } + ; + +variable_declaration_part : VAR variable_declaration_list SEMICOLON + { + } + | + { + } + ; + +variable_declaration_list : variable_declaration_list SEMICOLON variable_declaration + { + } + + | variable_declaration + { + } + + ; +variable_declaration : identifier COLON type_denoter + { + init(&$$); + addType($1.place, $3.type); + $$.type = $3.type; + } + | identifier COMMA variable_declaration + { + init(&$$); + addType($1.place, $3.type); + $$.type = $3.type; + } + + ; +type_denoter: INTEGER + { + init(&$$); + $$.type = "int"; + } + ; + +compound_statement: PBEGIN statement_sequence SEMICOLON END + { + init(&$$); + $$.code = concat(" { /* début du bloc */\n", $2.code, " } /* fin du bloc */\n", NULL); + } + ; +statement_sequence: instruction + { + init(&$$); + $$.code = $1.code; + } + | statement_sequence SEMICOLON instruction + { + init(&$$); + $$.code = concat($1.code, $3.code, NULL); + } + ; +/* INSTRUCTION */ +instruction: identifier ASSIGNMENT expression /* S -> id:=E */ + { + init(&$$); + $$.code = concat($3.code, prod(concat($1.place , " = ", $3.place, NULL)), NULL); + } + | procedure_statement /* S->procedure(args) */ + { + $$ = $1; // pass through + } + | compound_statement /* S -> BEGIN S END */ + { + $$ = $1; // pass through + } + | IF expression THEN instruction /* S -> IF THEN */ + { + $$.after = newLabel(); + $$.code = concat($2.code, + prod(concat("if (", $2.place, " == 0) goto ", $$.after, NULL)), + $4.code, + prod(concat($$.after, ":", NULL)), + NULL); + } + | WHILE expression DO instruction /* S-> WHILE DO */ + { + $$.before = newLabel(); + $$.after = newLabel(); + $$.code = concat(prod(concat($$.before, ":", NULL)), + $2.code, + prod(concat("if (", $2.place, " == 0) goto ", $$.after, NULL)), + $4.code, + prod(concat("goto ", $$.before, NULL)), + prod(concat($$.after, ":", NULL)), + NULL); + } + ; +/* PROCEDURE CALL */ +procedure_statement: identifier /* no actual parameter list */ + { + init(&$$); + $$.code = prod(concat($1.place, "()", NULL)); + $$.type = "void"; + } + | identifier LPAREN actual_parameter_list RPAREN /* with actual argument list */ + { + init(&$$); + $$.code = concat($3.code, prod(concat($1.place, "(", $3.place, ")", NULL)), NULL); + $$.type= "void"; + } + ; +actual_parameter_list: expression + { + $$ = $1; // pass through + } + | actual_parameter_list COMMA expression + { + init(&$$); + $$.code = concat($1.code, $3.code, NULL); + $$.place = concat($1.place, ", ", $3.place, NULL); + } + ; +/* EXPRESSIONS */ +expression: simple_expression + { + $$ = $1; // pass through + } + | simple_expression relop simple_expression + { + init(&$$); + $$.type = $1.type; // TODO type checking + $$.place = newTemp($$.type); + $$.code = concat($1.code, $3.code, prod(concat($$.place, " = ", $1.place, " ", $2.code , " ", $3.place, NULL)), NULL); + } + ; +simple_expression: term /* E -> T */ + { + $$ = $1; // pass through + } + | sign term /* E-> +/- T */ + { + init(&$$); + $$.type = $2.type; // TODO type checking + $$.place = newTemp($$.type); + $$.code = concat($2.code, + prod(concat($$.place, " = ", $1.code, " ", $2.place, NULL)), + NULL); + } + | NOT simple_expression /* E-> NOT E */ + { + init(&$$); + $$.type = $2.type; // TODO type checking + $$.place = newTemp($$.type); + $$.code = concat($2.code, + prod(concat($$.place, " = ! ", $2.place, NULL)), + NULL); + + } + | simple_expression PLUS simple_expression /* E -> E + E */ + { + init(&$$); + $$.type = $1.type; // TODO type checking + $$.place = newTemp($$.type); + $$.code = concat($1.code, $3.code, prod(concat($$.place, " = ", $1.place, " + ", $3.place, NULL)), NULL); + } + | simple_expression MINUS simple_expression /* E -> E - E */ + { + init(&$$); + $$.type = $1.type; // TODO type checking + $$.place = newTemp($$.type); + $$.code = concat($1.code, $3.code, prod(concat($$.place, " = ", $1.place, " - ", $3.place, NULL)), NULL); + } + | simple_expression MULT simple_expression /* E -> E * E */ + { + init(&$$); + $$.type = $1.type; // TODO type checking + $$.place = newTemp($$.type); + $$.code = concat($1.code, $3.code, prod(concat($$.place, " = ", $1.place, " * ", $3.place, NULL)), NULL); + } + | simple_expression DIV simple_expression /* E -> E / E */ + { + init(&$$); + $$.type = $1.type; // TODO type checking + $$.place = newTemp($$.type); + $$.code = concat($1.code, $3.code, prod(concat($$.place, " = ", $1.place, " / ", $3.place, NULL)), NULL); + } + | simple_expression AND simple_expression /* E -> E AND E */ + { + init(&$$); + $$.type = $1.type; // TODO type checking + $$.place = newTemp($$.type); + $$.code = concat($1.code, $3.code, prod(concat($$.place, " = ", $1.place, " && ", $3.place, NULL)), NULL); + } + | simple_expression OR simple_expression /* E -> E OR E */ + { + init(&$$); + $$.type = $1.type; // TODO type checking + $$.place = newTemp($$.type); + $$.code = concat($1.code, $3.code, prod(concat($$.place, " = ", $1.place, " || ", $3.place, NULL)), NULL); + } + | LPAREN expression RPAREN /* E -> (E) */ + { + $$ = $2; // pass through + } + ; +term: identifier + { + init(&$$); + $$.place = $1.place; + $$.type = $1.type; + } + | identifier LPAREN actual_parameter_list RPAREN /* Function call */ + { + init(&$$); + $$.type = "int"; // TODO type checking + $$.place = newTemp($$.type); + $$.code = concat($3.code, + prod(concat($$.place, " = ", $1.place, "(", $3.place, ")", NULL)), + NULL); + } + | number + { + $$ = $1; // pass through + } + | CHARACTER_STRING + { + init(&$$); + $$.type = "char *"; + $$.place = newTemp($$.type); + $$.code = prod(concat($$.place, " = ", concat("\"", trim($1), "\"", NULL), NULL)); +} + ; +identifier: IDENTIFIER + { + init(&$$); + $$.place = strdup($1); + $$.type = getType($1); + } + ; +number: INTNUMBER + { + init(&$$); + $$.place = strdup($1); + $$.type = "int"; + } + ; +sign: PLUS + { + init(&$$); + $$.code = "+"; + } + | MINUS + { + init(&$$); + $$.code = "-"; + } + ; +relop: EQUAL + { + init(&$$); + $$.code = "=="; + } + | NOTEQUAL + { + init(&$$); + $$.code = "!="; + } + | LT + { + init(&$$); + $$.code = "<"; + } + | GT + { + init(&$$); + $$.code = ">"; + } + | LE + { + init(&$$); + $$.code = "<="; + } + | GE + { + init(&$$); + $$.code = ">="; + } + ; +%% + +/** + * Provides a yyerror routine which simply reports error line. + * It is called when the parser finds something not covered by any rule. + * + * @param s the error message to print. + */ +int yyerror(char * s) { + fprintf(stderr, "%s:%d: %s: at or before '%s'\n", progname, line_no, s, yytext); + return 0; +} diff --git a/Compilation/scanner.l b/Compilation/scanner.l new file mode 100755 index 0000000..2f15958 --- /dev/null +++ b/Compilation/scanner.l @@ -0,0 +1,163 @@ +/** + * #(@)scanner.l ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/* + * @version 05/04/2006 + * + * done: - + * + * todo: - + */ + + +%{ +#include +#include + +/* Header généré par yacc */ +#include "parser.tab.h" + +/* Header commun */ +#include "epc.h" + +/** + * Affiche le jeton sur la sortie standard et le retourne. + * + * @param x le jeton + * @return le jeton + */ +#ifdef DEBUG +#define A(x) {printf("Trouve: %s = \"%s\"\n", #x, yytext); return x;} +#else +#define A(x) {return x;} +#endif + +/** Le numéro de la ligne courante */ +int line_no = 1; + +/* Termine un commentaire ? */ +void commenteof(); + +%} + +ID [a-zA-Z][a-zA-Z0-9_]* +INT [0-9]+ +REAL [0-9]*\.[0-9]+ +A [aA] +B [bB] +C [cC] +D [dD] +E [eE] +F [fF] +G [gG] +H [hH] +I [iI] +J [jJ] +K [kK] +L [lL] +M [mM] +N [nN] +O [oO] +P [pP] +Q [qQ] +R [rR] +S [sS] +T [tT] +U [uU] +V [vV] +W [wW] +X [xX] +Y [yY] +Z [zZ] + + +%% + +"(*" | +"{" { int c; + while ((c = input())) { + if (c == '}') + break; + else if (c == '*') { + if ((c = input()) == ')') + break; + else + unput (c); + } else if (c == '\n') + line_no++; + else if (c == 0) + commenteof(); + } +} +{A}{N}{D} {A(AND)} +{N}{O}{T} {A(NOT)} +{O}{R} {A(OR)} +{D}{O} {A(DO)} +{I}{F} {A(IF)} +{I}{N} {A(IN)} +{E}{N}{D} {A(END)} +{O}{F} {A(OF)} +{B}{E}{G}{I}{N} {A(PBEGIN)} +{P}{R}{O}{G}{R}{A}{M} {A(PROGRAM)} +{T}{H}{E}{N} {A(THEN)} +{V}{A}{R} {A(VAR)} +{W}{H}{I}{L}{E} {A(WHILE)} +{I}{N}{T}{E}{G}{E}{R} {A(INTEGER)} +":=" {A(ASSIGNMENT)} +'[^']*' {strcpy(yylval.strval, yytext); A(CHARACTER_STRING)} +":" {A(COLON)} +";" {A(SEMICOLON)} +"," {A(COMMA)} +"." {A(DOT)} +"=" {A(EQUAL)} +">=" {A(GE)} +">" {A(GT)} +"<" {A(LT)} +"<>" {A(NOTEQUAL)} +"<=" {A(LE)} +"[" {A(LBRAC)} +"]" {A(RBRAC)} +"(" {A(LPAREN)} +")" {A(RPAREN)} +"-" {A(MINUS)} +"+" {A(PLUS)} +"/" {A(DIV)} +"*" {A(MULT)} +{INT} {strcpy(yylval.strval, yytext); A(INTNUMBER)} +{REAL} {strcpy(yylval.strval, yytext); A(REALNUMBER)} +{ID} {strcpy(yylval.strval, yytext); A(IDENTIFIER)} +[ \t\f] ; +\n line_no++; +. fprintf (stderr,"%s:%d: error: '%c' (%d): illegal character\n", progname,line_no,yytext[0], yytext[0]); +%% + +/** + * Prints error message in case of bad comment pattern. + */ +void commenteof() { + fprintf (stderr, "%s:%d:error: unexpected EOF inside comment at line\n", progname, line_no); + exit (1); +} + +/** + * If the application requires yylex to continue processing + * with another source of input, returns TRUE. + * + * @return always TRUE. + */ +int yywrap () { + return 1; +} + + diff --git a/Corba/Bank/AccountImpl.java b/Corba/Bank/AccountImpl.java new file mode 100755 index 0000000..cd274b0 --- /dev/null +++ b/Corba/Bank/AccountImpl.java @@ -0,0 +1,96 @@ +/* + * #(@)AccountImpl.java ENSICAEN 2005 + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ +package Bank; + +import BankManagement.*; + +import org.omg.CosNaming.*; +import org.omg.CosNaming.NamingContextPackage.*; +import org.omg.CORBA.*; +import org.omg.PortableServer.*; +import org.omg.PortableServer.POA; + +import java.util.*; + +/** + * Un compte bancaire concret: le servant + */ +class AccountImpl extends AccountPOA { + + /** + * Le solde du compte. + */ + private int balance = 0; + + /** + * Le possesseur du compte. + */ + private String username; + + /** + * La liste des operations. + */ + private List opList; + + + /** + * Construit un nouveau compte bancaire. + */ + public AccountImpl(String username) { + setUsername(username); + opList = new ArrayList(); + } + + private void setUsername(String user) { + this.username = user; + } + + public String getUsername() { + return this.username; + } + + /** + * Retourne le solde du compte. + */ + public int balance() { + return balance; + } + + /** + * Effectue un retrait. + */ + public void withdraw(int amount) { + balance -= amount; + opList.add("withdraw[amount = " + amount + "]"); + } + + /** + * Effectue un retrait. + */ + public void deposit(int amount) { + balance += amount; + opList.add("deposit[amount = " + amount + "]"); + } + + public String operations() { + StringBuffer sb = new StringBuffer(); + + Iterator it = opList.iterator(); + while (it.hasNext()) { + sb.append(it.next()); + sb.append(Character.LINE_SEPARATOR); + } + + return sb.toString(); + } + +} + diff --git a/Corba/Bank/BankClient.java b/Corba/Bank/BankClient.java new file mode 100755 index 0000000..033a53a --- /dev/null +++ b/Corba/Bank/BankClient.java @@ -0,0 +1,195 @@ +/* + * #(@)BankClient.java ENSICAEN 2005 + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +package Bank; + +import BankManagement.*; + +import java.io.*; +import java.util.*; +import org.omg.CosNaming.*; +import org.omg.CORBA.*; + +/** + * Le client qui permet d'accéder au serveur. + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * @version 0.0.1 + */ +public class BankClient { + public static void main(String args[]) { + + String host = "localhost"; + String port = "1050"; + + if (args.length >= 1) { + port = args[0]; + } + + if (args.length >= 2) { + host = args[1]; + } + + displayHelp(); + + try { + // create and initialize the ORB + ORB orb = ORB.init(new String[] {"-ORBInitialPort", host, "-ORBInitialPort", port }, null); + + // get the root naming context + org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService"); + NamingContext ncRef = NamingContextHelper.narrow(objRef); + + // resolve the Object Reference in Naming + // make sure there are no spaces between "" + NameComponent nc = new NameComponent("Bank", ""); + NameComponent path[] = {nc}; + Bank bankRef = BankHelper.narrow(ncRef.resolve(path)); + + + int accNum = -1; + int sessionId = -1; + String user = null; + String pass = null; + Account accRef = null; + + boolean quit = false; + + BufferedReader buff = new BufferedReader(new InputStreamReader(System.in)); + + + while (!quit) { + StringTokenizer stk = new StringTokenizer(buff.readLine(), " \t"); + + try { + + while (!quit && stk.hasMoreTokens()) { + String token = stk.nextToken(); + + + if (token.equals("login")) { + System.out.print("[ LOGIN ] (void)"); + if (stk.hasMoreTokens()) { + user = stk.nextToken(); + System.out.println(" : login = " + user); + } else { + throw new Exception("Syntax error at '" + token + "'"); + } + } else if (token.equals("pass")) { + System.out.print("[ PASS ] (void)"); + if (stk.hasMoreTokens()) { + pass = stk.nextToken(); + System.out.println(" : pass = " + pass); + } else { + throw new Exception("Syntax error at '" + token + "'"); + } + + } else if (token.equals("connect")) { + System.out.print("[ CONNECT ] (login = " + user + ", pass = " + pass + ")"); + sessionId = bankRef.connect(user, pass); + System.out.println(" : sessionId = " + sessionId); + if (sessionId == 0) { + System.out.println("wrong login or password"); + } + } else if (token.equals("disconnect")) { + System.out.print("[ DISCONNECT ] (sessionId = " + sessionId + ")"); + bankRef.disconnect(sessionId); + sessionId = -1; + System.out.println(" : OK"); + } else if (token.equals("create")) { + accNum = bankRef.create(sessionId); + if (accNum == 0) { + System.out.println("Please log-in before create account: login pass connect "); + } else { + System.out.print("[ CREATE ] (sessionId = " + sessionId + ")"); + System.out.println(" : accNum = " + accNum); + System.out.println(" : OK"); + } + } else if (token.equals("getacc")) { + if (stk.hasMoreTokens()) { + accNum = Integer.parseInt(stk.nextToken()); + } else { + throw new Exception("Syntax error at '" + token + "'"); + } + System.out.print("[ GET ACCOUNT ] (sessionId = " + sessionId + ", accNum = " + accNum + ")"); + accRef = bankRef.getAccount(accNum, sessionId); + System.out.println(" : OK"); + } else if (token.equals("deposit")) { + int m; + if (stk.hasMoreTokens()) { + m = Integer.parseInt(stk.nextToken()); + } else { + throw new Exception("Syntax error at '" + token + "'"); + } + + System.out.print("[ DEPOSIT ] (sessionId = " + sessionId + ", accNum = " + accNum + ", amount = " + m + ")"); + accRef.deposit(m); + System.out.println(" : OK"); + } else if (token.equals("withdraw")) { + int m; + if (stk.hasMoreTokens()) { + m = Integer.parseInt(stk.nextToken()); + } else { + throw new Exception("Syntax error at '" + token + "'"); + } + System.out.print("[ WITHDRAW ] (sessionId = " + sessionId + ", accNum = " + accNum + ", amount = " + m + ")"); + accRef.withdraw(m); + System.out.println(" : OK"); + } else if (token.equals("balance")) { + System.out.print("[ BALANCE ] (sessionId = " + sessionId + ", accNum = " + accNum + ")"); + int b = accRef.balance(); + System.out.println(" : balance = " + b); + } else if (token.equals("quit")) { + quit = true; + } else if (token.equals("del")) { + bankRef.del(accNum, sessionId); + System.out.println("[ DEL ] (accNum = " + accNum + ")"); + accNum = -1; + accRef = null; + } else if (token.equals("help")) { + displayHelp(); + } else { + throw new Exception("Syntax error at '" + token + "'"); + } + } + + } catch (Exception e) { + System.out.println("\nERROR : " + e) ; + } + + } + + } catch (Exception e) { + System.out.println("\n\n\nERROR : " + e) ; + e.printStackTrace(System.out); + } + + } + + private static void displayHelp() { + System.out.println("Syntax: command [argument]"); + System.out.println("login "); + System.out.println("pass "); + System.out.println("connect"); + System.out.println("create"); + System.out.println("getacc "); + System.out.println("deposit "); + System.out.println("withdraw "); + System.out.println("balance"); + System.out.println("disconnect"); + System.out.println("del"); + System.out.println("help"); + System.out.println("quit"); + System.out.println("\nHint: login utest pass ptest is valid"); + } + +} diff --git a/Corba/Bank/BankImpl.java b/Corba/Bank/BankImpl.java new file mode 100755 index 0000000..59efe8b --- /dev/null +++ b/Corba/Bank/BankImpl.java @@ -0,0 +1,201 @@ +/* + * #(@)BankImpl.java ENSICAEN 2006-04-04 + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/** + * + * @author MASSE Nicolas (2004-Groupe4-LIMIN) + * @author LIMIN Thomas (2004-Groupe4-MASSE) + * @version 1.0 + */ + +package Bank; + +import BankManagement.*; +import java.util.*; +import org.omg.CORBA.*; +import org.omg.PortableServer.*; + + +/** + * A Bank servant. + */ +class BankImpl extends BankPOA { + + /** + * Bank servant constructor + */ + public BankImpl() { + //this.account = account; + this.currentAccountNumber = 0; + this.currentSessionID = 0; + this.accounts = new HashMap(16); + this.users = new HashMap(16); + this.sessions = new HashMap(16); + + // Workaround : file storage not implemented (not very "corba related") + // so users are created here and account related data are reinitialized + // every BankServer relaunch. (interessant kind of periodic revolution ;-) ) + users.put("Thomas", "grouik"); + users.put("Nicolas", "pouet"); + users.put("utest", "ptest"); + } + + /** + * Create a new account. If the session is incorrect + * it returns 0; + * + * @param sessionID + * @return the new account number + */ + public int create (int sessionID) { + int accNumber = 0; + String username = sessions.get(sessionID); + if (username != null) { + accNumber = this.getNextAccountNumber(); + AccountImpl acc = new AccountImpl(username); + + try { + _default_POA().activate_object(acc); + + } catch (org.omg.PortableServer.POAPackage.ServantAlreadyActive e) { + System.err.println(e.getMessage()); + } catch (org.omg.PortableServer.POAPackage.WrongPolicy e) { + System.err.println(e.getMessage()); + } + + this.accounts.put(accNumber, acc); + System.out.println("User " + username + " create a new account with number: " + accNumber + "(session id: " + sessionID + ")" ); + } else { + System.out.println("Invalid session id: " + sessionID); + } + + return accNumber; + } + + + /** + * Provide an account stub. + * + * @param sessionID + * @param acc_num + * @return the account stub + */ + public BankManagement.Account getAccount (int acc_num, int sessionID) throws BankManagement.no_such_account { + String username = null; + AccountImpl acc = null; + Account aref = null; + + username = this.sessions.get(sessionID); + + if (username != null) { + acc = this.accounts.get(acc_num); + } else { + System.out.println("Invalid session id: " + sessionID); + throw new BankManagement.no_such_account(); + } + + if ((acc == null || !(acc.getUsername().equals(username)))) { + System.out.println("No account " + acc_num + " for user " + username +" (session id: " + sessionID + ")"); + throw new BankManagement.no_such_account(); + } + + System.out.println("Provide account " + acc_num + " to " + username + " (session id: " + sessionID + ")"); + + try { + //get object reference from the servant + //aref = AccountHelper.narrow(_default_POA().servant_to_reference(acc)); + + + + // aref = acc._this(); // doesn't work, WHY ????? + aref = AccountHelper.narrow(this._default_POA().servant_to_reference(acc)); + + } catch (Exception e){} + + return aref; + } + + + /** + * Connect a user and give him a session id or 0 if login + * or password are wrong. + * + * @param login + * @param password + * @return the session id + */ + public int connect (String login, String password) { + String storedPassword = this.users.get(login); + int sessionID = 0; + + if ((storedPassword == null) || ! password.equals(storedPassword)) { + System.out.println("Connection refused for user " + login); + } else { + sessionID = this.getNextSessionID(); + this.sessions.put(sessionID, login); + System.out.println("User " + login + " connected (session id: " + sessionID + ")"); + } + + return sessionID; + } + + /** + * Discard a session id so the user have to log-in + * again to send commands. + * + * @param sessionID + */ + public void disconnect (int sessionID) { + String login = null; + login = this.sessions.remove(sessionID); + + if (login != null) { + System.out.println("User " + login + " is now disconnected (previously connected with session id: " + sessionID + ")"); + } else { + System.out.println("Error disconnecting session: session " + sessionID + " unknown"); + } + } + + + /** + * Destroy an account. But where is the remaining cash deposited?? + * + * @param acc_num + * @param sessionID + */ + public void del (int acc_num, int sessionID) { + String username = null; + username = this.sessions.get(sessionID); + + if (username != null) { + AccountImpl acc = accounts.get(acc_num); + if (acc.getUsername().equals(username)) { + this.accounts.remove(sessionID); + } + } + } + + private int getNextAccountNumber() { + return ++ this.currentAccountNumber; + } + + private int getNextSessionID() { + return ++ this.currentSessionID; + } + + private Account account; + private int currentAccountNumber; + private int currentSessionID; + private Map accounts; + private Map users; + private Map sessions; + +} \ No newline at end of file diff --git a/Corba/Bank/BankServer.java b/Corba/Bank/BankServer.java new file mode 100755 index 0000000..70919ef --- /dev/null +++ b/Corba/Bank/BankServer.java @@ -0,0 +1,87 @@ +/* + * #(@)BankServer.java ENSICAEN 2005 + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +package Bank; + +import BankManagement.*; + +import org.omg.CosNaming.*; +import org.omg.CosNaming.NamingContextPackage.*; +import org.omg.CORBA.*; +import org.omg.PortableServer.*; +import org.omg.PortableServer.POA; + +import java.util.Properties; + +/** + * Make a bank servant availlable on the corba bus + */ +public class BankServer { + + /** + * Lauch the bank server. + */ + public static void main(String args[]) { + + String host = "localhost"; + String port = "1050"; + + if (args.length >= 1) { + port = args[0]; + } + + if (args.length >= 2) { + host = args[1]; + } + + + try{ + // Step 1: Instantiate the ORB + ORB orb = ORB.init(new String[] {"-ORBInitialPort", host, "-ORBInitialPort", port }, null); + + // Step 2: Instantiate the servant + BankImpl bankServ = new BankImpl(); + + // get reference to rootpoa & activate the POAManager + POA rootpoa = POAHelper.narrow(orb.resolve_initial_references("RootPOA")); + rootpoa.the_POAManager().activate(); + + rootpoa.activate_object(bankServ); + + + // Resolve RootNaming context and bind a name for the + // servant. + // NOTE: If the Server is persistent in nature then using Persistent + // Name Service is a good choice. Even if ORBD is restarted the Name + // Bindings will be intact. To use Persistent Name Service use + // 'NameService' as the key for resolve_initial_references() when + // ORBD is running. + org.omg.CORBA.Object obj = orb.resolve_initial_references("NameService" ); + NamingContextExt rootContext = NamingContextExtHelper.narrow(obj); + + NameComponent[] nc = rootContext.to_name("Bank"); + rootContext.rebind(nc, rootpoa.servant_to_reference(bankServ)); + System.out.println("Bank server ready and waiting ..."); + + // wait for invocations from clients + orb.run(); + } + + catch (Exception e) { + System.err.println("ERROR: " + e); + e.printStackTrace(System.out); + } + + System.out.println("Bank Server Exiting ..."); + + } +} + diff --git a/Corba/BankManagement.idl b/Corba/BankManagement.idl new file mode 100755 index 0000000..ccba824 --- /dev/null +++ b/Corba/BankManagement.idl @@ -0,0 +1,32 @@ +/* + * #(@)BankManagement.idl ENSICAEN 2005 + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + + +module BankManagement { + exception no_such_account { }; + + interface Account { + void deposit(in long amount); + void withdraw(in long amount); + long balance(); + string operations(); + string getUsername(); + }; + + interface Bank { + long create(in long sessionID); + Account getAccount(in long acc_num, in long sessionID) raises (no_such_account); + long connect(in string login, in string password); + void disconnect(in long sessionID); + void del(in long acc_num, in long sessionID); + }; +}; + diff --git a/Corba/Makefile b/Corba/Makefile new file mode 100755 index 0000000..996762a --- /dev/null +++ b/Corba/Makefile @@ -0,0 +1,38 @@ +# +# Makefile ENSICAEN 2005 +# +# MASSE Nicolas (2005-Groupe3-LIMIN) +# LIMIN Thomas (2005-Groupe3-MASSE) +# +# ENSICAEN +# 6 Boulevard Marechal Juin +# F-14050 Caen Cedex +# +# Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre +# reproduit, utilise ou modifie sans l'avis express de ses auteurs. +# + +IDLJ = idlj +IDLJFLAGS = -fall +JAVACFLAGS = -Xlint +JAVA_CLASS = Bank/BankServer.class Bank/BankClient.class Bank/AccountImpl.class Bank/BankImpl.class + +all: common client server + +server: Bank/BankServer.class +client: Bank/BankClient.class + +common: BankManagement Bank/AccountImpl.class Bank/BankImpl.class + +$(JAVA_CLASS) : %.class : %.java + $(JAVAC) $(JAVACFLAGS) $< + +BankManagement: BankManagement.idl + $(IDLJ) $(IDLJFLAGS) $< + test -d $@ || exit 1 + touch $@ + +clean: + rm -rf BankManagement + rm -f Bank/*.class + diff --git a/Cpp/TP1_VariablesPointeursReferences/Makefile b/Cpp/TP1_VariablesPointeursReferences/Makefile new file mode 100755 index 0000000..b2dedbe --- /dev/null +++ b/Cpp/TP1_VariablesPointeursReferences/Makefile @@ -0,0 +1,57 @@ +# +# Makefile ENSICAEN 2005 +# +# MASSE Nicolas (2005-Groupe3-LIMIN) +# LIMIN Thomas (2005-Groupe3-MASSE) +# +# ENSICAEN +# 6 Boulevard Marechal Juin +# F-14050 Caen Cedex +# +# Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre +# reproduit, utilise ou modifie sans l'avis express de ses auteurs. +# + +# +# Description du makefile +# + +# +# Version : 1.0.0 +# +# Fait : Detail de ce qui a ete fait. +# +# A faire : Detail de ce qui n'a pas ete fait. +# + +CXX = g++ +LD = g++ +CFLAGS = -Wall --pedantic +CPPFLAGS = -I./ + + +OBJECTS = ex2.o ex3.o porte.o + +EXEC = ex2 ex3 + +all : $(EXEC) porte + +ex1.o : %.o : %.cpp %.h + $(CXX) -c $(CPPFLAGS) $(CFLAGS) $< -o $@ + +ex1.o : ex1.h + +$(OBJECTS) : %.o : %.cpp + $(CXX) -c $(CPPFLAGS) $(CFLAGS) $< -o $@ + +$(EXEC) : % : %.o ex1.o + $(LD) ex1.o $< -o $@ + +porte : porte.o + $(LD) ex1.o $< -o $@ + +clean: + rm -f ex1 ex2 ex3 porte *~ *.o + +.PHONY: all clean + diff --git a/Cpp/TP1_VariablesPointeursReferences/ex1.cpp b/Cpp/TP1_VariablesPointeursReferences/ex1.cpp new file mode 100755 index 0000000..c6014d6 --- /dev/null +++ b/Cpp/TP1_VariablesPointeursReferences/ex1.cpp @@ -0,0 +1,92 @@ + /** + * #(@)ex1.cpp ENSICAEN 2005-09-20 + * + * @author MASSE Nicolas (2005-Groupe4-LIMIN) + * @author LIMIN Thomas (2005-Groupe4-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + + +#include "ex1.h" + +void lectureClavierTableau(int * tableau, int taille) { + cout << "Veuiler saisir " << taille << " entiers" << endl; + for (int i = 0; i < taille; i++) { + cin >> tableau[i]; + } +} + + +void affichageTableau(int * tableau, int taille) { + cout << "Affichage d'un tableau contenant " << taille << " valeurs" << endl; + + for (int i = 0; i < taille; i++) { + cout << tableau[i] << endl; + } +} + + +void echange(int * entier1, int * entier2) { + int tmp = *entier1; + *entier1 = *entier2; + *entier2 = tmp; +} + + +void echange(int & entier1, int & entier2) { + int tmp = entier1; + entier1 = entier2; + entier2 = tmp; +} + + +int & getMin(int * const tableau, int taille) { + int min = tableau[0]; + int idMin = 0; + + for (int i = 1; i < taille; i ++) { + if (tableau[i] < min) { + min = tableau[i]; + idMin = i; + } + } + + return tableau[idMin]; +} + + +int & getMax(int * const tableau, int taille) { + int max = tableau[0]; + int idMax = 0; + + for (int i = 1; i < taille; i ++) { + if (tableau[i] > max) { + max = tableau[i]; + idMax = i; + } + } + + return tableau[idMax]; +} + + +int & getRandom(int * const tableau, int taille) { + // récupératoin d'un nombre aléatoire x, tel que 0 <= x < taille + // à l'aide des bits de poids fort du résultat de rand + int index = static_cast(taille * (rand() / (RAND_MAX + 1.0))); + + return tableau[index]; +} + + +void melanger(int * const tableau, int taille, int nbEchange) { + for (int i = nbEchange - 1; i >= 0; i--) { + echange(getRandom(tableau, taille), getRandom(tableau, taille)); + } +} diff --git a/Cpp/TP1_VariablesPointeursReferences/ex1.h b/Cpp/TP1_VariablesPointeursReferences/ex1.h new file mode 100755 index 0000000..52643bb --- /dev/null +++ b/Cpp/TP1_VariablesPointeursReferences/ex1.h @@ -0,0 +1,122 @@ + /** + * #(@)ex1.h ENSICAEN 2005-09-20 + * + * @author MASSE Nicolas (2005-Groupe4-LIMIN) + * @author LIMIN Thomas (2005-Groupe4-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/** + * Premier TP, découverte du C++, des entrées/sorties, des références + */ + +#include +#include +#include + +using namespace std; + + +/** + * Lecture au clavier d'un tableau d'entier + * + * @param tableau le tableau à remplir + * @param taille la taille du tableau + */ +void lectureClavierTableau(int * tableau, int taille); + + +/** + * Affichage des éléments du tableau sur la sortie standard + * + * Lecture au clavier d'un tableau d'entier + * + * @param tableau le tableau à afficher + * @param taille la taille du tableau + */ +void affichageTableau(int * tableau, int taille); + + +/** + * Echange de deux entiers, passage par adresse/pointeur + * + * @param entier1 adresse du premier entier + * @param entier2 adresse du second entier + */ +void echange(int * entier1, int * entier2); + + +/** + * Echange de deux entiers, passage par référence + * + * @param entier1 premier entier + * @param entier2 second entier + */ +void echange(int & entier1, int & entier2); + + +/** + * Echange de deux entiers, passage par valeurs + * (cette fonction est volontairement défaillante, il n'est pas + * possible d'échanger deux variable à l'aide d'une fonction + * à qui l'on ne passe que les valeurs des variables. De plus, + * elle est commentée car si elle est disponible, elle rend la + * résolution de surcharge ambigue entre la version echange(int, int) + * et la version echange(int &, int &), le compilateur ne pouvant déterminer + * laquelle des deux doit etre appelée, les deux acceptant des entiers en + * parametres) + * + * @param entier1 premier entier + * @param entier2 second entier + */ +/* +void echange(int entier1, int entier2) { + int tmp = entier1; + entier1 = entier2; + entier2 = tmp; +} +*/ + + +/** + * Recherche et retour du minimum d'un tableau d'entiers + * + * @param tableau le tableau dont il faut retourner le minimum + * @param taille la taille du tableau + */ +int & getMin(int * const tableau, int taille); + + +/** + * Recherche et retour du maximum d'un tableau d'entiers + * + * @param tableau le tableau dont il faut retourner le maximum + * @param taille la taille du tableau + */ +int & getMax(int * const tableau, int taille); + + +/** + * Retourne un élément tiré au hasard dans le tableau + * + * @param tableau le tableau dont il faut retourner le maximum + * @param taille la taille du tableau + */ +int & getRandom(int * const tableau, int taille); + + +/** + * Effectue le mélange du tableau l'aide d'un nombre + * donné d'échnges + * + * @param tableau le tableau à melanger + * @param taille la taille du tableau + * @param nbEchange le nombre d'échange à faire + */ +void melanger(int * const tableau, int taille, int nbEchange); diff --git a/Cpp/TP1_VariablesPointeursReferences/ex2.cpp b/Cpp/TP1_VariablesPointeursReferences/ex2.cpp new file mode 100755 index 0000000..c271495 --- /dev/null +++ b/Cpp/TP1_VariablesPointeursReferences/ex2.cpp @@ -0,0 +1,45 @@ + /** + * #(@)ex2.cpp ENSICAEN 2005-09-20 + * + * @author MASSE Nicolas (2005-Groupe4-LIMIN) + * @author LIMIN Thomas (2005-Groupe4-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/** + * Exercice 2 du TP 1 de C++. + */ + +#include "ex1.h" + +/** + * la taille maximale du tableau + */ +#define TAILLE_MAX 10 + +/** + * Fonction principale. + * - demande à l'utilisateur de remplir un tableau + * - permute le mini et le maxi du tableau + * - affiche le tableau + * + * La ligne de commande doit préciser le nombre de case du tableau, qui + * doit etre strictement positive et inférieure ou égale à TAILLE_MAX + */ +int main(int argc, char ** argv) { + int tableau[TAILLE_MAX]; + + // récupération sur la ligne de commande du parametre "taille du tableau" + int taille = int(argv[1]); + lectureClavierTableau(tableau, taille); + echange(getMin(tableau, taille), getMax(tableau, taille)); + affichageTableau(tableau, taille); +} + + diff --git a/Cpp/TP1_VariablesPointeursReferences/ex3.cpp b/Cpp/TP1_VariablesPointeursReferences/ex3.cpp new file mode 100755 index 0000000..9b76d3a --- /dev/null +++ b/Cpp/TP1_VariablesPointeursReferences/ex3.cpp @@ -0,0 +1,45 @@ + /** + * #(@)ex3.cpp ENSICAEN 2005-09-20 + * + * @author MASSE Nicolas (2005-Groupe4-LIMIN) + * @author LIMIN Thomas (2005-Groupe4-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/** + * Exercice 3 du TP 1 de C++. + */ + +#include "ex1.h" + +/** + * la taille maximale du tableau + */ +#define TAILLE_MAX 10 + +/** + * Fonction principale. + * - demande à l'utilisateur de remplir un tableau + * - permute le mini et le maxi du tableau + * - affiche le tableau + * + * La ligne de commande doit préciser le nombre de case du tableau, qui + * doit etre strictement positive et inférieure ou égale à TAILLE_MAX + */ +int main(int argc, char ** argv) { + int tableau[TAILLE_MAX]; + + // récupération sur la ligne de commande du parametre "taille du tableau" + int taille = int(argv[1]); + lectureClavierTableau(tableau, taille); + echange(getMin(tableau, taille), getMax(tableau, taille)); + affichageTableau(tableau, taille); +} + + diff --git a/Cpp/TP1_VariablesPointeursReferences/porte.cpp b/Cpp/TP1_VariablesPointeursReferences/porte.cpp new file mode 100755 index 0000000..f73516a --- /dev/null +++ b/Cpp/TP1_VariablesPointeursReferences/porte.cpp @@ -0,0 +1,154 @@ +/** + * #(@)porte.cpp ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/** + * Ce programme permet de definir des fonctions logiques en intention + * et de les utiliser. Il ne prend pas de parametre. + * + * + * Trace d'execution + * ------------------- + * + * Table de verite par defaut : + * +-----+-----+-----+ + * |b1\b2| 0 | 1 | + * +-----+-----+-----+ + * | 0 | 0 | 0 | + * +-----+-----+-----+ + * | 1 | 0 | 0 | + * +-----+-----+-----+ + * + * Table de verite de la fonction ET : + * +-----+-----+-----+ + * |b1\b2| 0 | 1 | + * +-----+-----+-----+ + * | 0 | 0 | 0 | + * +-----+-----+-----+ + * | 1 | 0 | 1 | + * +-----+-----+-----+ + * + * Test OK + */ + +#include + +using namespace std; + +/** + * Faire retourner par une fonction une reference a une variable locale + * est une erreur. Mais si cette variable est declaree static, alors cela + * devient possible. + * + * En effet, lorsque l'on declare une variable locale a une fonction, cette + * variable est alouee sur la pile et une fois la fonction terminee, la pile + * est reajustee et la variable n'existe plus. Faire reference a cette + * variable est incorrect et conduit a des resultats errones. + * + * Mais lorsque l'on declare une variable "static", le compilateur + * reserve une zone memoire pendant toute l'execution du programme ; on + * peut alors y faire reference à partir de n'importe quel moment de + * l'execution du programme. + * + * Le fait de retourner une reference permet d'utiliser l'appel de fonction + * comme "lvalue", c'est une construction similaire à la suivante en C : + * + * strncpy(dst, src, size)[size - 1] = '\0'; + * + */ + + +/* + * @version 1.0 + * + * @Fait Enonce + affichage de la table de verite. + * + * @Afaire - + */ + + +/** + * Cette fonction dispose d'un tableau statique de 4 booleens a deux entrees + * qui definit la table de verite de la fonction logique. Les deux parametres + * b1 et b2 sont les indices dans tableau du resultat de la fonction logique + * pour ces deux valeurs. + * + * Elle retourne une reference vers l'element du tableau qui contient le + * resultat de la fonction logique, ce qui permet d'utiliser un appel de + * cette fonction comme "lvalue". + * + */ +bool & porte(bool b1, bool b2) { + static bool tableVerite[2][2] = {{false, false}, {false, false}}; + + return tableVerite[int(b1)][int(b2)]; +} + + +/** + * Cette fonction affiche la table de verite definie en intention par + * l'intermediaire de la fonction porte(bool, bool). + * + * @param st le flux de sortie. + */ +void afficheTableVerite(ostream & st) { + int b1, b2; + + // Entete de la table de verite + st << "+-----+-----+-----+" << endl; + st << "|b1\\b2| 0 | 1 |" << endl; + st << "+-----+-----+-----+" << endl; + + // Parcours ligne / ligne + for (b1 = 0; b1 <= 1; b1++) { + // Entete de ligne + st << "| " << b1 << " |"; + + // Parcours colonne par colonne + for (b2 = 0; b2 <= 1; b2++) { + st << " " << porte(bool(b1), bool(b2)) << " |"; + } + + // Fin de la ligne + st << endl; + + // Separation entre deux lignes + st << "+-----+-----+-----+" << endl; + } +} + + +/** + * Point d'entree du programme. Ce programme n'accepte pas de parametres. + */ +int main(int argc, char ** argv) { + cout << "Table de verite par defaut :" << endl; + afficheTableVerite(cout); + cout << endl; + + /* Definition de la fonction logique ET par extention */ + porte(true, false) = false; + porte(false, true) = false; + porte(true, true) = true; + porte(false, false) = false; + + cout << "Table de verite de la fonction ET :" << endl; + afficheTableVerite(cout); + cout << endl; + + if (porte(true, true)) + cout << "Test OK" << endl; + + return 0; +} + diff --git a/Cpp/TP2_EncapsulationConstructionEtNotionsDeBase/Makefile b/Cpp/TP2_EncapsulationConstructionEtNotionsDeBase/Makefile new file mode 100755 index 0000000..2fb847e --- /dev/null +++ b/Cpp/TP2_EncapsulationConstructionEtNotionsDeBase/Makefile @@ -0,0 +1,51 @@ +# +# Makefile ENSICAEN 2005 +# +# MASSE Nicolas (2005-Groupe3-LIMIN) +# LIMIN Thomas (2005-Groupe3-MASSE) +# +# ENSICAEN +# 6 Boulevard Marechal Juin +# F-14050 Caen Cedex +# +# Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre +# reproduit, utilise ou modifie sans l'avis express de ses auteurs. +# + +# +# Description du makefile +# + +CXX = g++ +LD = g++ +CFLAGS = -Wall --pedantic -g +#CFLAGS = -Wall +CPPFLAGS = -I./ + + +OBJECTS = complex.o + +EXEC = checkComplex + +all : $(EXEC) + +checkComplex : checkComplex.o + +checkComplex.o : %.o : %.cpp + $(CXX) -c $(CPPFLAGS) $(CFLAGS) $< -o $@ + + +$(OBJECTS) : %.o : %.cpp + $(CXX) -c $(CPPFLAGS) $(CFLAGS) $< -o $@ + +$(EXEC) : % : %.o $(OBJECTS) + $(LD) $^ -o $@ + +clean: + rm -f *~ *.o + +distclean: clean + rm -f $(EXEC) + +.PHONY: all clean distclean + diff --git a/Cpp/TP2_EncapsulationConstructionEtNotionsDeBase/checkComplex.cpp b/Cpp/TP2_EncapsulationConstructionEtNotionsDeBase/checkComplex.cpp new file mode 100755 index 0000000..dbd094c --- /dev/null +++ b/Cpp/TP2_EncapsulationConstructionEtNotionsDeBase/checkComplex.cpp @@ -0,0 +1,78 @@ + /** + * #(@)checkComplex.cpp ENSICAEN 2005-09-29 + * + * @author MASSE Nicolas (2005-Groupe4-LIMIN) + * @author LIMIN Thomas (2005-Groupe4-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/** + * Test de la classe complexe, objet du TP2 + */ + +#include "complex.h" + +int main(int argc, char ** argv) { + Complex a(1, 1); + Complex b(3, 4); + Complex c; + + std::cout << "a: "; + a.writeTo(std::cout); + + std::cout << std::endl << "b: "; + b.writeTo(std::cout); + + std::cout << std::endl << "c: "; + c.writeTo(std::cout); + std::cout << std::endl; + + std::cout << std::endl << "a * b: " << std::endl; + (a * b).writeTo(std::cout); + std::cout << std::endl; + + std::cout << std::endl << "a - b: " << std::endl; + (a - b).writeTo(std::cout); + std::cout << std::endl; + + std::cout << std::endl << "a + b: " << std::endl; + (a + b).writeTo(std::cout); + std::cout << std::endl; + + std::cout << "Normalisation" << std::endl; + c = normalize(a); + c.writeTo(std::cout); + std::cout << std::endl; + std::cout << "Fin de la normalisation" << std::endl << std::endl; + + std::cout << "Rotation" << std::endl; + c = b.rotate(a, M_PI / 2); + c.writeTo(std::cout); + std::cout << std::endl; + std::cout << "Fin de la rotation" << std::endl << std::endl; + + std::cout << "Debut de 'Complex d = getMax(a, b)'" << std::endl; + Complex d = getMax(a, b); + std::cout << "Fin de 'Complex d = getMax(a, b)'" << std::endl << std::endl; + + + std::cout << "Debut de 'c = getMax(a, b)'" << std::endl; + c = getMax(a, b); + std::cout << "Fin de 'c = getMax(a, b)'" << std::endl << std::endl; + + std::cout << "Debut de l'initialisation du tableau (taille 10)" << std::endl; + Complex tab[10]; + std::cout << "Fin de l'initialisation du tableau" << std::endl << std::endl; + + std::cout << "Appel de la fonction remplirTableau(3, tab)" << std::endl; + remplirTableau(3, tab); + std::cout << "Fin de l'appel" << std::endl << std::endl; + + return 0; +} diff --git a/Cpp/TP2_EncapsulationConstructionEtNotionsDeBase/complex.cpp b/Cpp/TP2_EncapsulationConstructionEtNotionsDeBase/complex.cpp new file mode 100755 index 0000000..4cb857a --- /dev/null +++ b/Cpp/TP2_EncapsulationConstructionEtNotionsDeBase/complex.cpp @@ -0,0 +1,178 @@ +/** + * #(@)complex.cpp ENSICAEN 2005-02-27 + * + * @author MASSE Nicolas (2005-Groupe4-LIMIN) + * @author LIMIN Thomas (2005-Groupe4-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + + +#include "complex.h" +#include + +using namespace std; + +Complex::~Complex() { + cout << "---Complex[" << this << "]("; + this->writeTo(cout); + cout << ")" << endl; +} + +Complex::Complex(double re, double im) : _re(re), _im(im) { + cout << "+++Complex[" << this << "](" << re << ", " << im << ")" << endl; +} + +Complex::Complex(const Complex & cpx) { + cout << "rrrComplex[" << this << "]("; + cpx.writeTo(cout); + cout << ")" << endl; + + this->setRealPart(cpx.getRealPart()); + this->setImaginaryPart(cpx.getImaginaryPart()); +} + +double Complex::getRealPart() const { + return _re; +} + + +double Complex::getImaginaryPart() const { + return _im; +} + +void Complex::setRealPart(double re) { + _re = re; +} + +void Complex::setImaginaryPart(double im) { + _im = im; +} + +double Complex::getMagnitude() const { + double re = this->getRealPart(); + double im = this->getImaginaryPart(); + + return std::sqrt((re * re) + (im * im)); +} + +double Complex::getAngle() const { + double angle = 0; + double r = this->getRealPart(); + double i = this->getImaginaryPart(); + + if (r == 0) { + if (i > 0) { + angle = M_PI_2; + } else if (i < 0) { + angle = - M_PI_2; + } else { + angle = FP_NAN; + } + } else if (r > 0) { + angle = std::atan(i / r); + } else { + if (i > 0) { + angle = M_PI - std::atan(i / r); + } else { + angle = - M_PI + std::atan(i / r); + } + } + + return angle; +} + +Complex Complex::rotate(Complex & c, double angle) const { + Complex tmp = (*this) - c; + Complex tmp2 = tmp * Complex(cos(angle), sin(angle)); + return tmp2 + c; +} + +void Complex::writeTo(std::ostream & output) const { + output << this->getRealPart() << " + i * " << this->getImaginaryPart(); +} + +Complex Complex::operator+(const Complex & c2) const { + return sum(*this, c2); +} + +Complex Complex::operator-(const Complex & c2) const { + return ::minus(*this, c2); +} + +Complex Complex::operator*(const Complex & c2) const { + return product(*this, c2); +} + +Complex & Complex::operator=(const Complex & c2) { + cout << "===Complex[" << &c2 << "]("; + c2.writeTo(cout); + cout << ") >> [" << this << "]("; + this->writeTo(cout); + cout << ")"<< endl; + this->setImaginaryPart(c2.getImaginaryPart()); + this->setRealPart(c2.getRealPart()); + + return *this; +} + +void Complex::swapRealAndImaginaryPart() { + double tmp = this->getImaginaryPart(); + this->setImaginaryPart(this->getRealPart()); + this->setRealPart(tmp); +} + +Complex product(const Complex & cpx1, const Complex & cpx2) { + double re1 = cpx1.getRealPart(); + double re2 = cpx2.getRealPart(); + double im1 = cpx1.getImaginaryPart(); + double im2 = cpx2.getImaginaryPart(); + + return Complex((re1 * re2) - (im1 * im2), (re1 * im2) + (im1 * re2)); +} + +Complex sum(const Complex & cpx1, const Complex & cpx2) { + return Complex(cpx1.getRealPart() + cpx2.getRealPart(), + cpx1.getImaginaryPart() + cpx2.getImaginaryPart()); +} + +Complex minus(const Complex & cpx1, const Complex & cpx2) { + return Complex(cpx1.getRealPart() - cpx2.getRealPart(), + cpx1.getImaginaryPart() - cpx2.getImaginaryPart()); +} + +Complex normalize(Complex cpx) { + cout << "La normalisation a commence" << endl; + + double mag = cpx.getMagnitude(); + double r, i; + + r = cpx.getRealPart() / mag; + i = cpx.getImaginaryPart() / mag; + + return Complex(r, i); +} + +Complex & getMax(Complex & c1, Complex & c2) { + Complex & max = c2; + + if (c1.getMagnitude() > c2.getMagnitude()) { + max = c1; + } + + return max; +} + +void remplirTableau(int n, Complex * tab) { + int i; + + for (i = 0; i < n; i++) { + tab[i] = Complex(i, 0); + } +} + diff --git a/Cpp/TP2_EncapsulationConstructionEtNotionsDeBase/complex.h b/Cpp/TP2_EncapsulationConstructionEtNotionsDeBase/complex.h new file mode 100755 index 0000000..8aa70f7 --- /dev/null +++ b/Cpp/TP2_EncapsulationConstructionEtNotionsDeBase/complex.h @@ -0,0 +1,241 @@ + /** + * #(@)complex.h ENSICAEN 2005-02-27 + * + * @author MASSE Nicolas (2005-Groupe4-LIMIN) + * @author LIMIN Thomas (2005-Groupe4-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + + +#ifndef __COMPLEXE_H__ +#define __COMPLEXE_H__ + +#include + +/** + * Définition d'une classe complexe fournissant les services de base + * (voir énoncé TP2) + * + * @author MASSE Nicolas & LIMIN Thomas + * @version 0.0.1 + */ +class Complex { + + public: + + + /** + * Constructeur par défaut. + * + * @param re partie réelle du nombre complexe, 0 par défaut + * @param im partie imaginaire du nmbre complexe, 0 par defaut + */ + Complex(double re = 0, double im = 0); + + + /** + * Construit un complexe de module 1 a partir de son argument. + * + * @param angle l'argument du complexe + */ + Complex(double angle); + + + /** + * Constructeur par recopie (clone) + */ + Complex(const Complex & cpx); + + + /** + * Destructeur + */ + ~Complex(); + + /** + * Retourne la partie réelle. + * + * @return la partie réelle du complexe + */ + double getRealPart() const; + + + /** + * Retourne la partie imaginaire. + * + * @return la partie imaginaire du complexe + */ + double getImaginaryPart() const; + + + /** + * Modifie la partie réelle + * + * @param re la nouvelle partie réelle affectée + */ + void setRealPart(double re); + + + /** + * Modifie la partie imaginaire. + * + * @param im la nouvelle partie imaginaire affectée + */ + void setImaginaryPart(double im); + + + /** + * Retourne le module. + * + * @return le module du nombre complexe + */ + double getMagnitude() const; + + + /** + * Retourne l'argument en radians + * + * return l'argument du nombre complexe + */ + double getAngle() const; + + + /** + * Retourne un nouveau complexe résultant de la rotation + * de l'instance de complexe par l'angle donné + * + * @param c centre de rotation + * @param angle angle de rotation en radians + * @return le resultat de la rotation + */ + Complex rotate(Complex & c, double angle) const; + + /** + * Donne une représentation sous la forme a + ib du nombre complexe + * et la copie dans le flux passé en argument + * + * @param output le flux dans lequel sera écrit la représentation + */ + void writeTo(std::ostream & output) const; + + /** + * Effectue la somme de ce complexe et de celui passe en parametre. + * + * @param c2 le complexe a ajouter + * @return la somme des deux complexes + */ + Complex operator+(const Complex & c2) const; + + /** + * Effectue la difference de ce complexe et de celui passe en parametre. + * + * @param c2 le complexe a soustraire + * @return la difference des deux complexes + */ + Complex operator-(const Complex & c2) const; + + /** + * Effectue le produit de ce complexe et de celui passe en parametre. + * + * @param c2 le complexe a multiplier + * @return le produit des deux complexes + */ + Complex operator*(const Complex & c2) const; + + /** + * Operateur d'affectation + * + * @param c2 le complexe a affecter + * @return le complexe + */ + Complex & operator=(const Complex & c2); + + /** + * Echange les parties réelles et imaginaires + */ + void swapRealAndImaginaryPart(); + + private: + + /** + * Partie entière du nombre complexe + */ + double _re; + + /** + * Partie imaginaire du nombre complexe + */ + double _im; + + + +}; + + +/** + * Effectue le produit de deux nombres complexes. + * + * @param cpx1 premier complexe + * @param cpx1 second complexe + * @return un nombre complexe issu du produit + * des deux premiers. La propriété est transférée à l'appelant. + */ +Complex product(const Complex & cpx1, const Complex & cpx2); + + +/** + * Effectue la somme de deux nombres complexes. + * + * @param cpx1 premier complexe + * @param cpx1 second complexe + * @return un nombre complexe issu de la somme + * des deux premiers. La propriété est transférée à l'appelant. + */ +Complex sum(const Complex & cpx1, const Complex & cpx2); + + +/** + * Effectue la difference de deux nombres complexes + * + * @param cpx1 premier complexe + * @param cpx1 second complexe + * @return un nombre complexe issu de la difference + * des deux premiers (cpx1 - cpx2 => cpx3). + */ +Complex minus(const Complex & cpx1, const Complex & cpx2); + +/** + * Normalise un complexe. + * + * @param cpx le complexe a normaliser + * @return le complexe normalise + */ +Complex normalize(Complex cpx); + +/** + * Retourne le complexe qui a le plus grand module. + * + * @param c1 le premier complexe + * @param c2 le deuxieme complexe + * @return le plus grand des deux. + */ +Complex & getMax(Complex & c1, Complex & c2); + + +/** + * Remplit le tableau de n elements avec une suite de nombre + * complexes de 0 à n-1. + * + * @param n le nombre d'éléments dans le tableau + * @param tab le tableau + */ +void remplirTableau(int n, Complex * tab); + + +#endif /* def __COMPLEXE_H__ */ diff --git a/Cpp/TP2_EncapsulationConstructionEtNotionsDeBase/notes b/Cpp/TP2_EncapsulationConstructionEtNotionsDeBase/notes new file mode 100755 index 0000000..3175464 --- /dev/null +++ b/Cpp/TP2_EncapsulationConstructionEtNotionsDeBase/notes @@ -0,0 +1,218 @@ + + + Réponses aux questions posées + + + +1.2 - Effectivement, et heureusement, selon toute attente, le compilateur +détecte un eerreur et refuse la compilation lorsque l'on essaie d'atteindre +un champ privé à partir d'une fonction non membre: + +complex.h: Dans function « Complex minus(const Complex&, const Complex&) »: +complex.h:115: error: `double Complex::_re' is private + + +1.4 - Il est difficile d'ajouter un Constructeur prenant pour argument le +module et l'argument, ce constructeur aurait la meme "signature" que celui +prenant comme argument la partie reelle et la partie imaginaire. En effet +ces quatres parametres seraient vraisemblablement des doubles, et lors de la +compilation, le compilateur ne pourrait determiner, a l'aide du type des +arguments, quel constructeur était souhaité. + + + + +3.1 - Nous avons cree une methode normalize dont le prototype est le suivant : + + Complex normalize(Complex cpx); + +Comme le parametre cpx est passe par valeur, il est necessaire d'en effectuer +une copie sur la pile d'ou l'appel au constructeur de recopie avant l'appel à +la fonction. On peut noter que la copie est detruite lorsque la fonction se +termine. + +Ainsi pour le code suivant : + + Complex c; + + [...] + + std::cout << "Normalisation" << std::endl; + c = normalize(a); + std::cout << std::endl; + std::cout << "Fin de la normalisation" << std::endl; + +On obtient la trace suivante : + +(1) +++Complex[0xbfd23db0](0, 0) +(2) Normalisation +(3) rrrComplex[0xbfd23d90](1 + i * 1) +(4) La normalisation a commence +(5) +++Complex[0xbfd23da0](0.707107, 0.707107) +(6) ===Complex[0xbfd23da0](0.707107 + i * 0.707107) >> [0xbfd23db0](0 + i * 0) +(7) ---Complex[0xbfd23da0](0.707107 + i * 0.707107) +(8) ---Complex[0xbfd23d90](1 + i * 1) +(9) Fin de la normalisation +(10) ---Complex[0xbfd23db0](0.707107 + i * 0.707107) + +Etude de la trace d'execution : + 1 - Declaration du complexe "c", et appel du constructeur par defaut. + 2 - Avant appel a la fonction de normalisation. + 3 - Appel du constructeur de recopie pour passer le complexe sur la pile. + 4 - Dans la fonction de normalisation + 5 - Creation d'un nouveau complexe local + 6 - Affectation de la valeur de retour (complexe local) + dans la variable c (appartenant à l'appelant) + 7 - Destruction du complexe local + 8 - Destruction du complexe parametre + 9 - Fonction de normalisation terminee + 10 - Destruction du complexe "c" + + => Remarque : + + On remarque qu'un appel au constructeur de recopie est effectue pour passer + le parametre sur la pile (initialisation d'une zone mémoire "brute"), mais + que c'est l'opérateur d'affectation qui est utilisé pour recopier la valeur + de retour (écrasement d'une zone mémoire déjà initialisée) + + + + +3.2 - Nous avons ajoute une methode dont le prototype est le suivant : + + Complex Complex::rotate(Complex & c, double angle) const; + +Ainsi, pour le code suivant : + + std::cout << "Rotation" << std::endl; + c = b.rotate(a, M_PI / 2); + c.writeTo(std::cout); + std::cout << std::endl; + std::cout << "Fin de la rotation" << std::endl; + +et la methode suivante : + + Complex Complex::rotate(Complex & c, double angle) const { + Complex tmp = (*this) - c; + Complex tmp2 = tmp * Complex(cos(angle), sin(angle)); + return tmp2 + c; + } + +On obtient la trace d'execution suivante : + +(1) +++Complex[0xbfd5ef00](0, 0) +(2) Rotation +(3) +++Complex[0xbfd5ee80](2, 3) +(4) +++Complex[0xbfd5ee60](6.12303e-17, 1) +(5) +++Complex[0xbfd5ee70](-3, 2) +(6) ---Complex[0xbfd5ee60](6.12303e-17 + i * 1) +(7) +++Complex[0xbfd5eee0](-2, 3) +(8) ---Complex[0xbfd5ee70](-3 + i * 2) +(9) ---Complex[0xbfd5ee80](2 + i * 3) +(10) ===Complex[0xbfd5eee0](-2 + i * 3) >> [0xbfd5ef00](0.707107 + i * 0.707107) +(11) ---Complex[0xbfd5eee0](-2 + i * 3) +(12) Fin de la rotation +(13) ---Complex[0xbfd5ef00](-2 + i * 3) + +Etude de la trace d'execution : + 1 - Declaration du complexe "c", et appel du constructeur par defaut. + 2 - Avant appel a la methode de rotation. + 3 - Creation et initialisation de l'objet tmp + 4 - Creation et initialisation du complexe Complex(cos(angle), sin(angle)) + 5 - Creation et initialisation de tmp2 + 6 - Destruction de Complex(cos(angle), sin(angle)) + 7 - Creation et initialisation de tmp2 + c + 8 - Destruction de tmp2 + 9 - Destruction de tmp + 10 - Recopie de la valeur de retour (tmp2 + c) dans "c" + 11 - Destruction de la valeur de retour + 12 - Apres appel a la methode de rotation. + 13 - Destruction de "c" + + => Remarque : + On remarque que lors d'un passage d'arguments par référence, le + constructeur par recopie n'est pas appellé, d'ou un gain de performance. + Il ne faut cependant pas oublier que l'objet passé par référence est + modifiable pas la méthode appellée, c'est pourquoi l'utilisation du mot + clé "const", lorsque cela est possible, est recommandée. + + + + +3.3 - Nous avons defini une fonction dont le prototype est le suivant : + + Complex & getMax(Complex & c1, Complex & c2) + +et nous avons obtenu les resultats suivants : + + Debut de 'Complex d = getMax(a, b)' +(1) rrrComplex[0xbfed1af0](3 + i * 4) + Fin de 'Complex d = getMax(a, b)' + + Debut de 'c = getMax(a, b)' +(2) ===Complex[0xbfed1b20](3 + i * 4) >> [0xbfed1b10](-2 + i * 3) + Fin de 'c = getMax(a, b)' + +On remarque que : + 1 - Lors d'une initialisation à partir du résultat de la fonction, + c'est le constructeur par recopie qui est utilisé. + 2 - Lors d'une affectation, c'est la méthode qui surcharge l'opérateur + d'affectation qui est appellée. + + + +3.4 - Comme l'énoncé n'est pas très clair, nous avons choisi de remplir le +tableau selon la méthode suivante : + + tab[i] = Complex(i, 0); + +On obtient la trace d'exécution suivante : + + Debut de l'initialisation du tableau (taille 10) + (1) +++Complex[0xbf80c330](0, 0) + +++Complex[0xbf80c340](0, 0) + +++Complex[0xbf80c350](0, 0) + +++Complex[0xbf80c360](0, 0) + +++Complex[0xbf80c370](0, 0) + +++Complex[0xbf80c380](0, 0) + +++Complex[0xbf80c390](0, 0) + +++Complex[0xbf80c3a0](0, 0) + +++Complex[0xbf80c3b0](0, 0) + (10) +++Complex[0xbf80c3c0](0, 0) + Fin de l'initialisation du tableau + + Appel de la fonction remplirTableau(3, tab) + (11) +++Complex[0xbf80c2b0](0, 0) + (12) ===Complex[0xbf80c2b0](0 + i * 0) >> [0xbf80c330](0 + i * 0) + (13) ---Complex[0xbf80c2b0](0 + i * 0) + +++Complex[0xbf80c2b0](1, 0) + ===Complex[0xbf80c2b0](1 + i * 0) >> [0xbf80c340](0 + i * 0) + ---Complex[0xbf80c2b0](1 + i * 0) + +++Complex[0xbf80c2b0](2, 0) + ===Complex[0xbf80c2b0](2 + i * 0) >> [0xbf80c350](0 + i * 0) + ---Complex[0xbf80c2b0](2 + i * 0) + Fin de l'appel + + (14) ---Complex[0xbf80c3c0](0 + i * 0) + ---Complex[0xbf80c3b0](0 + i * 0) + ---Complex[0xbf80c3a0](0 + i * 0) + ---Complex[0xbf80c390](0 + i * 0) + ---Complex[0xbf80c380](0 + i * 0) + ---Complex[0xbf80c370](0 + i * 0) + ---Complex[0xbf80c360](0 + i * 0) + ---Complex[0xbf80c350](2 + i * 0) + ---Complex[0xbf80c340](1 + i * 0) + (24) ---Complex[0xbf80c330](0 + i * 0) + + +Remarques : + 1-10 - Chaque element du tableau est initialisé par le constructeur par + defaut. + + 11 - Un objet temporaire est cree. + 12 - Cet objet est affecté a la case courante du tableau. + 13 - L'objet temporaire est detruit. + + 14-24 - Chaque element du tableau est passé au destructeur. + + diff --git a/Cpp/TP3_CalculMatriciel/CalculMatriciel.kdevelop b/Cpp/TP3_CalculMatriciel/CalculMatriciel.kdevelop new file mode 100755 index 0000000..665ec22 --- /dev/null +++ b/Cpp/TP3_CalculMatriciel/CalculMatriciel.kdevelop @@ -0,0 +1,101 @@ + + + + Nicolas MASSE + nicolas27.masse@laposte.net + $VERSION$ + KDevCustomProject + C++ + + + + + CalculMatriciel + executable + + + + + + + + + + ada + ada_bugs_gcc + bash + bash_bugs + clanlib + fortran_bugs_gcc + gnome1 + gnustep + gtk + gtk_bugs + haskell + haskell_bugs_ghc + java_bugs_gcc + java_bugs_sun + kde2book + opengl + pascal_bugs_fp + php + php_bugs + perl + perl_bugs + python + python_bugs + qt-kdev3 + ruby + ruby_bugs + sdl + sw + w3c-dom-level2-html + w3c-svg + w3c-uaag10 + wxwidgets_bugs + + + Guide to the Qt Translation Tools + Qt Assistant Manual + Qt Designer Manual + Qt Reference Documentation + qmake User Guide + + + KDE Libraries (Doxygen) + + + + + + + + + + + + + + true + true + true + false + true + true + true + 250 + 400 + 250 + + + + + false + false + + + *.o,*.lo,CVS + false + + + diff --git a/Cpp/TP3_CalculMatriciel/CalculMatriciel.kdevelop.filelist b/Cpp/TP3_CalculMatriciel/CalculMatriciel.kdevelop.filelist new file mode 100755 index 0000000..2d1a8aa --- /dev/null +++ b/Cpp/TP3_CalculMatriciel/CalculMatriciel.kdevelop.filelist @@ -0,0 +1,5 @@ +# KDevelop Custom Project File List +checkMatrix.cpp +Makefile +matrix.cpp +matrix.h diff --git a/Cpp/TP3_CalculMatriciel/CalculMatriciel.kdevelop.pcs b/Cpp/TP3_CalculMatriciel/CalculMatriciel.kdevelop.pcs new file mode 100755 index 0000000000000000000000000000000000000000..f33003076bca66a5601d2ec26bf89ccde2b8afc8 GIT binary patch literal 17854 zcmeI3O=w+36vxktZFph~PmLOjg@~ZFwYF9(h;6k75ye`+P^3sn+Gkr#lbEC*ZdwsV z5yX`nsaRT9MGz4|5M8(taiO@^r4-z_aU(+g{b%mYd-vVBFKP1H&Oipv%)K-B&OPTp z=gge>xMtRG&)BFvZ)U5ZtDtkX$qw3-9kwP{lXl4VaW`ROHp~4CxzpUwl0Qc}V{efA zm_1D$PuO1D!W;YTW%5ROZkqH3zHlEU_foczcr)=9;?1^|+)?VC;0s5HcX2&Ojr!st zzB9qw`{1QX{90S-al3~cY9F1t{UNiyTjBaN&&I>`;dx2gcwKiMkk7#Dsfc+!I68Ib zS+li|!e=clZMZ;y<8DC`NyqDG_ZT`h$#p{d4!1W$3VR?)V@RRU2g!o#$TedJY+nT$ z{Z8t+thD`&qZMxqI2%;0>ur7ZOjZluTS2tfhyrRM2;t~^w+h`U2*S+`knC@u(3>Y9 zA3Qf8g|(2{MARt{p z75NdtN_YV3hP=wuqxIS03bfZaB!%}JIJf+b<93JMP~d&xG(;cTRJ5yDLdv`d$+xcpMQ+| zB;>FCCczLLkKD=c?uc?Ps?R1XtY9(yb-(j2k5|;NrmDxE_pa(T4wCBeeP47F*V7JX z&5tza8nN4KJEbY;+FKd8Z<7Xf?c{|EZ)RnyNtfJv^KK_{LjmO0^IQVB)!v6sLhTbp z8FkvCdw^)UxOLX+N5HbyZQxr8U}x_N7{Uk8mB21!u^W=H*bg0cW*=V$^ahJw7+^v+bFS6@A?N2HgR%WhM_?n?nf_!jDBw|XYjXNBx;V={L4nZzP|0d~KaEFEwgdTCo!gtsXI7q?5H7*cpzbbN< zK5AJw^U_KS*PQiYExb|iPg*PB4L1XBs|`lfme;#4jJY*EzfaaAHvw$zI}fG(NZQS+ z^;kh$xtHV(J7L8&wKU{@Py!Lu`*xMPLa+2r)H`|=d`o5p@h|)7Y}2S^g5NtKh5sPQ z&>n8&Mmm|AOk3c26{IxR$D$0oDQT@!rLo5lyC$gz5b8>GmO$E6M13bYK7U#MU}lNF zxAgl9qxhW@oSqn`{@8K)3Lb^i*N|{1<8;VI$XBRbC#B4flV1L(-1>Pl5d_Y`y%6{u z3L{{PMxbhkDRwRR9oesel&*uyTF`VDC|?-$YIiBe>qX{g6Re>(Z704~{8sZlJW6MN zfWkVn+u@b_uzfaDF=AKRRQ9}T@2fodvC!KCoZFfL*KyEoQj;G)i#vL;>!#LwrJG7` zfy%nM(_u|fM-T7iE$`;VF7cm8B8io*fyxql?V>0sacDm1_m*Op{3Rs18d9o#iIU{? z^M8zF`Q9>?cq)K87Q3$$J7ymti?l`Q-B1ZL^V*{P2Y%>i3gkNA5s|oYK3Xvc~!Ii@nge@S1i==d>RZJ90WpA)Qki*11U= zp{y6kg>)`e+)jXra8nwd&0YM6==YFf*O+6Odc{}ZA$Ht8g-6W` z&qDIG%D5G+wV%C7&f6_=bKa`{7*Nhxe0W*X?)UTw}1(@EF`$DJ=FCUh2?ZQtUE6jI7d0 zrPo4bdnQw%ZM8-%+{jLvudD?7za`RG3%?XA!KwAaDX(mFB3fu&c*S#|!_L8K zOBce;kNs8uVJ`0NrFsq;heU&{Shf8-Mo#Rb=-=?DzfzPAL)sNlsKkphN!pl~^a!W- z^oLjcvi=K?@{*M5#6m7>+2V2u3x5>yM(nNm7d)ypm1;jGmvEuh9H2FGSyO1qe~?Wr zsdT7K&PKDviu3t*ilwbC6twJawz+#h4Pg=UE0Qwzx*FUVuFeQ literal 0 HcmV?d00001 diff --git a/Cpp/TP3_CalculMatriciel/CalculMatriciel.kdevses b/Cpp/TP3_CalculMatriciel/CalculMatriciel.kdevses new file mode 100755 index 0000000..9b4f57b --- /dev/null +++ b/Cpp/TP3_CalculMatriciel/CalculMatriciel.kdevses @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Cpp/TP3_CalculMatriciel/Doxyfile b/Cpp/TP3_CalculMatriciel/Doxyfile new file mode 100755 index 0000000..d94c708 --- /dev/null +++ b/Cpp/TP3_CalculMatriciel/Doxyfile @@ -0,0 +1,275 @@ +# Doxyfile 1.4.1-KDevelop + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +PROJECT_NAME = CalculMatriciel.kdevelop +PROJECT_NUMBER = $VERSION$ +OUTPUT_DIRECTORY = +CREATE_SUBDIRS = NO +OUTPUT_LANGUAGE = English +USE_WINDOWS_ENCODING = NO +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the +ALWAYS_DETAILED_SEC = NO +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = YES +STRIP_FROM_PATH = /home/nicolas/ +STRIP_FROM_INC_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = NO +MULTILINE_CPP_IS_BRIEF = NO +DETAILS_AT_TOP = NO +INHERIT_DOCS = YES +DISTRIBUTE_GROUP_DOC = NO +TAB_SIZE = 8 +ALIASES = +OPTIMIZE_OUTPUT_FOR_C = NO +OPTIMIZE_OUTPUT_JAVA = NO +SUBGROUPING = YES +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- +EXTRACT_ALL = NO +EXTRACT_PRIVATE = NO +EXTRACT_STATIC = NO +EXTRACT_LOCAL_CLASSES = YES +EXTRACT_LOCAL_METHODS = NO +HIDE_UNDOC_MEMBERS = NO +HIDE_UNDOC_CLASSES = NO +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = NO +CASE_SENSE_NAMES = YES +HIDE_SCOPE_NAMES = NO +SHOW_INCLUDE_FILES = YES +INLINE_INFO = YES +SORT_MEMBER_DOCS = YES +SORT_BRIEF_DOCS = NO +SORT_BY_SCOPE_NAME = NO +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 30 +SHOW_USED_FILES = YES +SHOW_DIRECTORIES = YES +FILE_VERSION_FILTER = +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- +QUIET = NO +WARNINGS = YES +WARN_IF_UNDOCUMENTED = YES +WARN_IF_DOC_ERROR = YES +WARN_NO_PARAMDOC = NO +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- +INPUT = /home/nicolas/repository/ENSI_2ndY/Cpp/TP3_12-10-2005_CalculMatriciel +FILE_PATTERNS = *.c \ + *.cc \ + *.cxx \ + *.cpp \ + *.c++ \ + *.java \ + *.ii \ + *.ixx \ + *.ipp \ + *.i++ \ + *.inl \ + *.h \ + *.hh \ + *.hxx \ + *.hpp \ + *.h++ \ + *.idl \ + *.odl \ + *.cs \ + *.php \ + *.php3 \ + *.inc \ + *.m \ + *.mm \ + *.dox \ + *.C \ + *.CC \ + *.C++ \ + *.II \ + *.I++ \ + *.H \ + *.HH \ + *.H++ \ + *.CS \ + *.PHP \ + *.PHP3 \ + *.M \ + *.MM \ + *.C \ + *.H \ + *.tlh \ + *.diff \ + *.patch \ + *.moc \ + *.xpm \ + *.dox +RECURSIVE = yes +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = * +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = +INPUT_FILTER = +FILTER_PATTERNS = +FILTER_SOURCE_FILES = NO +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = NO +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = YES +REFERENCES_RELATION = YES +VERBATIM_HEADERS = YES +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = NO +COLS_IN_ALPHA_INDEX = 5 +IGNORE_PREFIX = +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- +GENERATE_HTML = YES +HTML_OUTPUT = html +HTML_FILE_EXTENSION = .html +HTML_HEADER = +HTML_FOOTER = +HTML_STYLESHEET = +HTML_ALIGN_MEMBERS = YES +GENERATE_HTMLHELP = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +BINARY_TOC = NO +TOC_EXPAND = NO +DISABLE_INDEX = NO +ENUM_VALUES_PER_LINE = 4 +GENERATE_TREEVIEW = NO +TREEVIEW_WIDTH = 250 +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- +GENERATE_LATEX = YES +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4wide +EXTRA_PACKAGES = +LATEX_HEADER = +PDF_HYPERLINKS = NO +USE_PDFLATEX = NO +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- +GENERATE_MAN = NO +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_LINKS = NO +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = yes +XML_OUTPUT = xml +XML_SCHEMA = +XML_DTD = +XML_PROGRAMLISTING = YES +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- +GENERATE_AUTOGEN_DEF = NO +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = NO +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- +TAGFILES = +GENERATE_TAGFILE = CalculMatriciel.tag +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +PERL_PATH = /usr/bin/perl +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- +CLASS_DIAGRAMS = YES +HIDE_UNDOC_RELATIONS = YES +HAVE_DOT = NO +CLASS_GRAPH = YES +COLLABORATION_GRAPH = YES +GROUP_GRAPHS = YES +UML_LOOK = NO +TEMPLATE_RELATIONS = NO +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = YES +CALL_GRAPH = NO +GRAPHICAL_HIERARCHY = YES +DIRECTORY_GRAPH = YES +DOT_IMAGE_FORMAT = png +DOT_PATH = +DOTFILE_DIRS = +MAX_DOT_GRAPH_WIDTH = 1024 +MAX_DOT_GRAPH_HEIGHT = 1024 +MAX_DOT_GRAPH_DEPTH = 1000 +DOT_TRANSPARENT = NO +DOT_MULTI_TARGETS = NO +GENERATE_LEGEND = YES +DOT_CLEANUP = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- +SEARCHENGINE = NO diff --git a/Cpp/TP3_CalculMatriciel/Makefile b/Cpp/TP3_CalculMatriciel/Makefile new file mode 100755 index 0000000..069f2f8 --- /dev/null +++ b/Cpp/TP3_CalculMatriciel/Makefile @@ -0,0 +1,49 @@ +# +# Makefile ENSICAEN 2005 +# +# MASSE Nicolas (2005-Groupe3-LIMIN) +# LIMIN Thomas (2005-Groupe3-MASSE) +# +# ENSICAEN +# 6 Boulevard Marechal Juin +# F-14050 Caen Cedex +# +# Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre +# reproduit, utilise ou modifie sans l'avis express de ses auteurs. +# + +# +# Description du makefile +# + +CXX = g++ +LD = g++ +CFLAGS = -Wall --pedantic -ggdb +CPPFLAGS = -I./ + + +OBJECTS = matrix.o + +EXEC = checkMatrix + +checkMatrix : checkMatrix.o + +all : $(OBJECTS) + +checkMatrix.o : %.o : %.cpp + $(CXX) -c $(CPPFLAGS) $(CFLAGS) $< -o $@ + +$(OBJECTS) : %.o : %.cpp %.h + $(CXX) -c $(CPPFLAGS) $(CFLAGS) $< -o $@ + +$(EXEC) : % : %.o $(OBJECTS) + $(LD) $^ -o $@ + +clean: + rm -f *~ *.o + +distclean: clean + rm -f $(EXEC) + +.PHONY: all clean distclean + diff --git a/Cpp/TP3_CalculMatriciel/checkMatrix.cpp b/Cpp/TP3_CalculMatriciel/checkMatrix.cpp new file mode 100755 index 0000000..db5387d --- /dev/null +++ b/Cpp/TP3_CalculMatriciel/checkMatrix.cpp @@ -0,0 +1,92 @@ + /** + * #(@)checkMatrix.cpp ENSICAEN 2005-10-18 + * + * @author MASSE Nicolas (2005-Groupe4-LIMIN) + * @author LIMIN Thomas (2005-Groupe4-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/** + * Test de la classe Matrix, objet du TP3 + */ + +#include +#include "matrix.h" + +using namespace std; + +int main(int argc, char ** argv) { + unsigned int truc; + + cout << "isPowerOfTwo(0) = " << isPowerOfTwo(0, &truc) << " (" << truc << ")" << endl; + cout << "isPowerOfTwo(1) = " << isPowerOfTwo(1, &truc) << " (" << truc << ")" << endl; + cout << "isPowerOfTwo(2) = " << isPowerOfTwo(2, &truc) << " (" << truc << ")" << endl; + cout << "isPowerOfTwo(3) = " << isPowerOfTwo(3, &truc) << " (" << truc << ")" << endl; + cout << "isPowerOfTwo(4) = " << isPowerOfTwo(4, &truc) << " (" << truc << ")" << endl; + cout << "isPowerOfTwo(5) = " << isPowerOfTwo(5, &truc) << " (" << truc << ")" << endl; + cout << "isPowerOfTwo(6) = " << isPowerOfTwo(6, &truc) << " (" << truc << ")" << endl; + cout << "isPowerOfTwo(7) = " << isPowerOfTwo(7, &truc) << " (" << truc << ")" << endl; + cout << "isPowerOfTwo(0x80000000) = " << isPowerOfTwo(0x80000000, &truc) << " (" << truc << ")" << endl; + + + Matrix a(1,2); + Matrix b; +// Matrix * c; + + bool result = a == b; + + cout << "a == b ? " << result << endl; + + Matrix d(2, 3); + Matrix e(3, 3); + + d.setValueAt(1, 1, 11); + d.setValueAt(1, 2, 12); + d.setValueAt(1, 3, 13); + d.setValueAt(2, 1, 21); + d.setValueAt(2, 2, 22); + d.setValueAt(2, 3, 23); + + e.setValueAt(1, 1, 1); + e.setValueAt(2, 2, 1); + e.setValueAt(3, 3, 1); + + Matrix f = d * e; + cout << d << e; + cout << f; + + //Matrix q(1,1); + //q.setValueAt(1, 1, 4); + + Matrix q(2,2); + q.setValueAt(1, 1, 1); + q.setValueAt(1, 2, 2); + q.setValueAt(2, 1, 3); + q.setValueAt(2, 2, 4); + + //for (unsigned int i = 1; i <= q.getLineNb(); i++) { + // for (unsigned int j = 1; j <= q.getColNb(); j++) { + // q.setValueAt(i, j, (i * j) % 7); + // } + //} + + Matrix iq = q.invert(); + cout << "Avant l'inversion:" << endl << q << endl; + cout << "Résultat de l'inversion:" << endl << iq << endl; + /* + cout << "Entrez une matrice au clavier, dont le format est le suivant :" << endl; + cout << "nlignes ncols 11 12 13 21 22 23 ..." << endl; + + cin >> &c; + + cout << *c; + + delete c; + */ +} diff --git a/Cpp/TP3_CalculMatriciel/matrix.cpp b/Cpp/TP3_CalculMatriciel/matrix.cpp new file mode 100755 index 0000000..4978aeb --- /dev/null +++ b/Cpp/TP3_CalculMatriciel/matrix.cpp @@ -0,0 +1,489 @@ +/** + * #(@)matrix.cpp ENSICAEN 2005-10-15 + * + * @author MASSE Nicolas (2005-Groupe4-LIMIN) + * @author LIMIN Thomas (2005-Groupe4-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +#include "matrix.h" + +Matrix::Matrix(unsigned int line_nb, unsigned int col_nb) { + // store dimensions + _line_nb = line_nb; + _col_nb = col_nb; + + // allocate memory + _columns = new double[line_nb * col_nb]; + _lines = new double*[line_nb]; + + // initialise lines' pointers + for (unsigned int i = 0; i < line_nb; i++) { + _lines[i] = _columns + (i * col_nb); + } +} + + +Matrix::Matrix(const Matrix & m) { + // retrieve and copy dimension + _line_nb = m._line_nb; + _col_nb = m._col_nb; + + // allocate memory + _columns = new double[_line_nb * _col_nb]; + _lines = new double*[_line_nb]; + + + // initialise lines' pointers + for (unsigned int i = 0; i < _line_nb; i++) { + _lines[i] = _columns + (i * _col_nb); + } + + // copy the values from m to this + double * src = m._columns; + double * dest = _columns; + for (unsigned int i = _line_nb * _col_nb; i > 0 ; i--) { + *(dest++) = *(src++); + } + +} + + +Matrix::~Matrix() { + // free the two blocks of memory + delete[] _lines; + delete[] _columns; +} + + +Matrix & Matrix::operator=(const Matrix & m) { + // check inequality + if (this != &m) { + + // matrix geometry changed flag + bool reInitLines = false; + + // check number of coefficients + unsigned int nbCells = (m._col_nb * m._line_nb); + if ((_col_nb * _line_nb) != nbCells) { + // number of "cells" has changed : necessary to reallocate memory + delete[] _columns; + _columns = new double[_line_nb * _col_nb]; + reInitLines = true; + } + + // check number of line: + if (_line_nb != m._line_nb) { + // number of line has changed : necessary to reallocate memory + delete[] _lines; + _lines = new double*[_line_nb]; + reInitLines = true; + } + + // store new dimensions + _line_nb = m._line_nb; + _col_nb = m._col_nb; + + if (reInitLines) { + // initialise lines' pointers + for (unsigned int i = 0; i < _line_nb; i++) { + _lines[i] = _columns + (i * _col_nb); + } + } + + // copy the values from m to this + double * src = m._columns; + double * dest = _columns; + for (unsigned int i = nbCells; i > 0 ; i--) { + *(dest++) = *(src++); + } + } + + return *this; +} + +bool Matrix::operator==(const Matrix & m) const { + + // check dimensions + if ((_line_nb != m._line_nb) || (_col_nb != m._col_nb)) { + return false; + } + + // check coefficients values + double * c1 = m._columns; + double * c2 = _columns; + for (unsigned int i = _line_nb * _col_nb; i > 0 ; i--) { + if (*(c1++) != *(c2++)) { + return false; + } + } + + return true; + } + + +bool Matrix::operator!=(const Matrix & m) const { + return ! (*this == m); +} + + +Matrix Matrix::operator+(const Matrix & m) const { + Matrix mat(*this); + + mat += m; + + return mat; +} + +Matrix & Matrix::operator+=(const Matrix & m) { + assert(m.getColNb() == this->getColNb()); + assert(m.getLineNb() == this->getLineNb()); + + for (unsigned int r = 1; r <= this->getLineNb(); r++) { + for (unsigned int c = 1; c <= this->getColNb(); c++) { + this->setValueAt(r, c, this->getValueAt(r, c) + m.getValueAt(r, c)); + } + } + + return *this; +} + +Matrix Matrix::operator-(const Matrix & m) const { + Matrix mat(*this); + + mat -= m; + + return mat; +} + +Matrix & Matrix::operator-=(const Matrix & m) { + assert(m.getColNb() == this->getColNb()); + assert(m.getLineNb() == this->getLineNb()); + + for (unsigned int r = 1; r <= this->getLineNb(); r++) { + for (unsigned int c = 1; c <= this->getColNb(); c++) { + this->setValueAt(r, c, this->getValueAt(r, c) - m.getValueAt(r, c)); + } + } + + return *this; +} + +Matrix Matrix::operator-() const { + Matrix tmp(this->getLineNb(), this->getColNb()); + + for (unsigned int r = 1; r <= this->getLineNb(); r++) { + for (unsigned int c = 1; c <= this->getColNb(); c++) { + tmp.setValueAt(r, c, - this->getValueAt(r, c)); + } + } + + return tmp; +} + +Matrix Matrix::transpose() const { + Matrix mat(this->getColNb(), this->getLineNb()); + + for (unsigned int r = 1; r <= this->getLineNb(); r++) { + for (unsigned int c = 1; c <= this->getColNb(); c++) { + mat.setValueAt(c, r, this->getValueAt(r, c)); + } + } + + return mat; +} + +Matrix Matrix::invertR() const { + assert(this->getColNb() == this->getLineNb() && isPowerOfTwo(this->getColNb(), 0)); + + if (this->getColNb() == 1) { + Matrix tmp(1, 1); + tmp.setValueAt(1, 1, 1 / this->getValueAt(1, 1)); + cout << "Résultat temporaire:" << endl << *this << endl << tmp << endl; + return tmp; + } else { + Matrix B = this->getQuarter(1); + Matrix Ct = this->getQuarter(2); + Matrix D = this->getQuarter(3); + Matrix C = this->getQuarter(4); + + cout << "quarter B" << endl << B << endl; + cout << "quarter Ct" << endl << Ct << endl; + cout << "quarter D" << endl << D << endl; + cout << "quarter C" << endl << C << endl; + + Matrix Bm1 = B.invertR(); + Matrix CBm1T = (C * Bm1).transpose(); + Matrix S = D - C * Bm1 * Ct; // OK + Matrix Q3 = S.invertR(); + Matrix & Sm1 = Q3; + Matrix Sm1CBm1 = (Sm1 * C) * Bm1; + Matrix Sm1CBm1T = Sm1CBm1.transpose(); + + Matrix Bm1CTSm1 = (Bm1 * CBm1T) * Sm1; + Matrix Q2 = -Bm1CTSm1; + + Matrix Q4 = - Sm1CBm1; + + Matrix Q1 = Bm1 + (CBm1T * Sm1CBm1); + + Matrix ret(this->getLineNb(), this->getLineNb()); + + unsigned int nl1 = Q1.getLineNb(); + unsigned int nc1 = Q1.getColNb(); + for (unsigned int i = 1; i <= nl1; i ++) { + for (unsigned int j = 1; j <= nc1; j ++) { + ret.setValueAt(i,j, Q1.getValueAt(i, j)); + } + } + + unsigned int nl2 = Q2.getLineNb(); + unsigned int nc2 = Q2.getColNb(); + for (unsigned int i = 1; i <= nl2; i ++) { + for (unsigned int j = 1; j <= nc2; j ++) { + ret.setValueAt(i, nc1 + j, Q2.getValueAt(i, j)); + } + } + + unsigned int nl3 = Q3.getLineNb(); + unsigned int nc3 = Q3.getColNb(); + for (unsigned int i = 1; i <= nl3; i ++) { + for (unsigned int j = 1; j <= nc3; j ++) { + ret.setValueAt(nl1 + i, nc1 + j, Q3.getValueAt(i, j)); + } + } + + unsigned int nl4 = Q4.getLineNb(); + unsigned int nc4 = Q4.getColNb(); + for (unsigned int i = 1; i <= nl4; i ++) { + for (unsigned int j = 1; j <= nc4; j ++) { + ret.setValueAt(nl1 + i, j, Q2.getValueAt(i, j)); + } + } + + cout << "Résultat temporaire:" << endl << *this << endl <getLineNb() != this->getColNb()) { + // Error, simply return the matrix + return *this; + } + + // we provide a positive defined matrix; + Matrix m(*this); + Matrix mt = m.transpose(); + Matrix r = mt * m; + + unsigned int size; + isPowerOfTwo(r.getColNb(), &size); + + Matrix * toBeInverted = &r; + if (size != toBeInverted->getColNb()) { + // we must resize the Matrix + toBeInverted = new Matrix(size, size); + unsigned int rSize = r.getColNb(); + for (unsigned int i = 1; i <= size; i++) { + for (unsigned int j = 1; j <= size; j++) { + double value = 0; + + if (i <= rSize && j <= rSize) { + value = r.getValueAt(i, j); + } else if (i == j) { + value = 1; + } + toBeInverted->setValueAt(i, j, value); + } + } + } + + + cout << "La matrice qui va être effectivement inversée:" << endl << *toBeInverted << endl; + + Matrix invert = toBeInverted->invertR(); + Matrix small(this->getLineNb(), this->getColNb()); + + // copy the inverted matrix into the source matrix + int c = this->getColNb(); + int l = this->getLineNb(); + + for (int i = 1; i <= l; i++) { + for (int j = 1; j <= c; j++) { + small.setValueAt(i, j, invert.getValueAt(i, j)); + } + } + + if (toBeInverted != &r) { + delete toBeInverted; + } + + return small * mt; +} + + +Matrix Matrix::getQuarter(int quarter) const { + unsigned int nbLine = this->getLineNb(); + unsigned int nbCol = this->getColNb(); + + Matrix m((nbLine / 2) + (nbLine % 2), (nbCol / 2) + (nbCol % 2)); + unsigned int lineStart, lineEnd, colStart, colEnd; + if (quarter == 1) { + // return up left quarter + lineStart = 1; + colStart = 1; + lineEnd = nbLine / 2; + colEnd = nbCol / 2; + if ((nbLine % 2) != 0) { + // nbLine odd + lineEnd++; + } + if ((nbCol % 2) != 0) { + // nbCol odd + colEnd++; + } + } else if (quarter == 2) { + // return up right quarter + lineStart = 1; + lineEnd = nbLine / 2; + colStart = nbCol / 2 + 1; + colEnd = nbCol; + if ((nbLine % 2) != 0) { + // nbLine odd + lineEnd++; + } + } else if (quarter == 3) { + // return down right quarter + lineStart = nbLine / 2 + 1; + lineEnd = nbLine; + colStart = nbCol / 2 + 1; + colEnd = nbCol; + } else if (quarter == 4) { + // return down left quarter + lineStart = nbLine / 2 + 1; + lineEnd = nbLine; + colStart = 1; + colEnd = (nbCol /2) + (nbCol %2); + if ((nbCol % 2) != 0) { + // nbCol odd + colEnd++; + } + } + + unsigned int im = 1, jm = 1; + for(unsigned int i = lineStart; i <= lineEnd; i++) { + for(unsigned int j = colStart; j <= colEnd; j++) { + m.setValueAt(im, jm, this->getValueAt(i,j)); + jm ++; + } + jm = 1; + im ++; + } + + return m; +} + +Matrix Matrix::operator*(const Matrix & m) const { + assert(this->getColNb() == m.getLineNb()); + + Matrix mat(this->getLineNb(), m.getColNb()); + + for (unsigned int r = 1; r <= mat.getLineNb(); r++) { + for (unsigned int c = 1; c <= mat.getColNb(); c++) { + double tmp = 0; + + for (unsigned int i = 1; i <= this->getColNb(); i++) { + //cout << r << " " << c << " " << i << endl; + tmp += this->getValueAt(r, i) * m.getValueAt(i, c); + } + + mat.setValueAt(r, c, tmp); + } + } + + return mat; +} + + +ostream & operator<<(ostream & os, const Matrix & m) { + unsigned int nbLine = m.getLineNb(); + unsigned int nbCol = m.getColNb(); + + // write values, line by line + for (unsigned int i = 1; i <= nbLine; i++) { + if (i == 1) { + os << "["; + } else { + os << " "; + } + + for (unsigned int j = 1; j <= nbCol; j++) { + os << m.getValueAt(i, j) << " "; + } + + if (i == nbLine) { + os << "]"; + } + + os << endl; + } + + return os; +} + + +istream & operator>>(istream & is, Matrix ** m) { + // write number of line and column + unsigned int nbLine; + unsigned int nbCol; + + is >> nbLine; + is >> nbCol; + + *m = new Matrix(nbLine, nbCol); + + // write values, line by line + for (unsigned int i = 1; i <= nbLine; i++) { + for (unsigned int j = 1; j <= nbCol; j++) { + double val; + + is >> val; + (*m)->setValueAt(i, j, val); + } + } + + return is; +} + +bool isPowerOfTwo(unsigned int n, unsigned int * max) { + unsigned int shifted = 0x80000000; + bool power = true; + int nb = sizeof(shifted) * 8; + + // Find a bit + while ((shifted & n) == 0 && nb != 0) { + shifted >>= 1; + nb--; + } + + // Is it the only one ? + if ((shifted & n) != n) { + power = false; + if (max != 0) { + *max = shifted << 1; + } + } else if (max != 0) { + *max = n; + } + + return power; +} diff --git a/Cpp/TP3_CalculMatriciel/matrix.h b/Cpp/TP3_CalculMatriciel/matrix.h new file mode 100755 index 0000000..1bef197 --- /dev/null +++ b/Cpp/TP3_CalculMatriciel/matrix.h @@ -0,0 +1,285 @@ +/** +* #(@)Matrix.h ENSICAEN 2005-10-12 +* +* @author MASSE Nicolas (2005-Groupe4-LIMIN) +* @author LIMIN Thomas (2005-Groupe4-MASSE) +* +* ENSICAEN +* 6 Boulevard Marechal Juin +* F-14050 Caen Cedex +* +* Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre +* reproduit, utilise ou modifie sans l'avis express de ses auteurs. +*/ + +/** + * Objectifs du TP: allocation dynamique, copie et destruction des objets, + * surcharge d'operateurs, programmation d'une classe concrète, CHoix entre + * fonctions membres, non-membres, + */ + +/* + * @version 0.0.1 + * + * @done: nothing + * + * @todo: all + */ + +#ifndef __MATRIX_H__ +#define __MATRIX_H__ + +#include +#include + +using namespace std; + +/** + * A class wich implements the mathematical concept of Matrix + */ +class Matrix { + +public: + + /** + * Default constructor. The caller has to provide the + * size of the future matrix. + * + * @param line_nb number of line, default 2 + * @param col_nb number of column, default 2 + */ + Matrix(unsigned int line_nb = 2, unsigned int col_nb = 2); + + /** + * Clone constructor + * + * @param m original matrix + */ + Matrix(const Matrix & m); + + /** + * Matrix destructor. Free memory that is used to store + * the coeficient. + */ + ~Matrix(); + + /** + * Assignment operator. + * + * @param m original matrix + * @retun a reference on the matrix' copy + */ + Matrix & operator=(const Matrix & m); + + /** + * Equality check operator. + * + * @param m second matrix + * @retun true if the matrices are identical, else false + */ + bool operator==(const Matrix & m) const; + + /** + * Inequality check operator. + * + * @param m second matrix + * @retun true if the matrices are different, else true + */ + bool operator!=(const Matrix & m) const; + + /** + * Addition operator. + * + * @param m second matrix + * @return the addition of the two matrix + */ + Matrix operator+(const Matrix & m) const; + + /** + * Addition and affectation operator. + * + * @param m second matrix + * @return a reference to this + */ + Matrix & operator+=(const Matrix & m); + + /** + * Minus operator. + * + * @param m second matrix + * @return the difference between the two matrix + */ + Matrix operator-(const Matrix & m) const; + + /** + * Minus and affectation operator. + * + * @param m second matrix + * @return a reference to this + */ + Matrix & operator-=(const Matrix & m); + + /** + * Unary minus operator. + * + * @return a new matrix + */ + Matrix operator-() const; + + /** + * Transposes this matrix. + * + * @return a new transposed matrix. + */ + Matrix transpose() const; + + /** + * Invert the Matrix. This is the entry point for the recursive + * inversion process. It init the matrix so it will be inversible + * + * @return a new matrix, inverted + */ + Matrix invert() const; + + /** + * Multiply operator. + * + * @param m the second matrix. + * @return the result. + */ + Matrix operator*(const Matrix & m) const; + + /** + * Return a pointer linked to the previous element of the first element + * of the row, so that the notation m[row][col] works (with row in [1,n] + * and col in [1,n]. + * + * @param row the row number (between 1 and _line_nb). + * @return a pointer to the row. + */ + inline double * operator[](unsigned int row) { + assert(row > 0 && row <= this->getLineNb()); + + return _lines[row - 1] - 1; + } + + /** + * Number of lines getter + * + * @return the number of lines + */ + inline unsigned int getLineNb() const { + return _line_nb; + } + + /** + * Number of columns getter + * + * @return the number of comumns + */ + inline unsigned int getColNb() const { + return _col_nb; + } + + /** + * Matrix values getter. + * + * @param r the row number [1,n] + * @param c the col number [1,n] + * @return the value. + */ + inline double getValueAt(unsigned int r, unsigned int c) const { + assert(r > 0 && r <= _line_nb); + assert(c > 0 && c <= _col_nb); + return _lines[r - 1][c - 1]; + } + + /** + * Matrix values setter. + * + * @param r the row number [1,n] + * @param c the col number [1,n] + * @param v the value. + */ + inline void setValueAt(unsigned int r, unsigned int c, double v) { + assert(r > 0 && r <= _line_nb); + assert(c > 0 && c <= _col_nb); + _lines[r - 1][c - 1] = v; + } + + /** + * Create a Matrix which is a copy of a quarter of the current Matrix + * The returned quarter is: + * + * 1 => up left + * 2 => up right + * 3 => down right + * 4 => down left + * + * @param quarter the quarter to return + * @return a new Matrix + */ + Matrix getQuarter(int quarter) const; + + +private: + /** + * Inverts this matrix (recursive) + * + * @return a new inverted matrix. + */ + Matrix invertR() const; + + /** + * The number of line of the matrix + */ + unsigned int _line_nb; + + /** + * The number of line of the matrix + */ + unsigned int _col_nb; + + /** + * An array of pointers, each allowing access to a column + */ + double ** _lines; + + /** + * Memory area in wich columns are stored + */ + double * _columns; + +}; + +/** + * Write a Matrix to output stream. Following format is used: + * line_number column number values (line by line) + * + * @param os the output stream + * @param m the matrix to write out + * @return the output stream + */ +ostream & operator<<(ostream & os, const Matrix & m); + +/** + * Get a Matrix from input stream. Following format is used: + * line_number column number values (line by line) + * + * @param is the input stream + * @param m a pointer on a Matrix pointer. the param is used + * to write out the pointer to the new Matrix + * @return the input stream + */ +istream & operator>>(istream & is, Matrix ** m); + +/** + * Tests if n is a power of two. + * + * @param n the number to test. + * @param max a pointer to store the power of two upper or equal to n + * @return true or false. + */ +bool isPowerOfTwo(unsigned int n, unsigned int * max); + +#endif /* define __MATRIX_H__ */ diff --git a/Cpp/TP3_CalculMatriciel/notes b/Cpp/TP3_CalculMatriciel/notes new file mode 100755 index 0000000..35a9532 --- /dev/null +++ b/Cpp/TP3_CalculMatriciel/notes @@ -0,0 +1,23 @@ +Utilisation des Fonctions membres en tant qu'amies + +Les fonctions membres d'une classe sont implicitement "amies de la classe", ce +qui implique qu'une fonction membre peut accéder aux variables d'instance de +l'objet sur lequel elle est appelée, mais aussi le cas échéant, aux variables +d'instance d'un objet de meme classe passé en parametre. Cette propriété est +beaucoup utilisée dans notre implémentation de ce TP, notamment pour nous +éviter l'écriture de nombreux accesseurs privés. + +Cependant cette propriété met à mal le concept d'encapsulation, car il permet +à des objets d'accéder aux champs privés d'autres objets. Pour relativiser, +nous argumenterons que le code violant l'encapsulation est interne à la classe +"violée" et donc qu'il est écrit en tenant compte de l'implémentation de +celle ci, pour en tirer le meilleur partis en terme d'efficacité. Ce souci +d'efficacité est un élément important lors des choix d'implémentation, car +l'utilisation, somme toute périlleuse et difficile du langage C++, n'est due +qu'a la propriété de ce langage de permettre l'écriture d'applications très +efficaces, avantage qu'il serait peu judicieux de perdre en s'encombrant de +lourdeurs. Par ailleurs, l'avantage qu'a le respect de l'encapsulation à +l'intérieur d'un classe est de pouvoir changer la représentation de données +en ayant à réécrir qu'un minimum d'acceseurs. Or dans notre cas (TP3), +le format des données en interne est fixé une fois pour toute, ce qui +réduit considérablement l'interet induit par le respect de l'encapsulation. \ No newline at end of file diff --git a/Cpp/TP4_ComptesBancaires/AUTHORS b/Cpp/TP4_ComptesBancaires/AUTHORS new file mode 100755 index 0000000..a6c9f7e --- /dev/null +++ b/Cpp/TP4_ComptesBancaires/AUTHORS @@ -0,0 +1,2 @@ +Nicolas MASSE +Thomas LIMIN diff --git a/Cpp/TP4_ComptesBancaires/COPYING b/Cpp/TP4_ComptesBancaires/COPYING new file mode 100755 index 0000000..5b6e7c6 --- /dev/null +++ b/Cpp/TP4_ComptesBancaires/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 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 Library 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 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 Library General +Public License instead of this License. diff --git a/Cpp/TP4_ComptesBancaires/ChangeLog b/Cpp/TP4_ComptesBancaires/ChangeLog new file mode 100755 index 0000000..e69de29 diff --git a/Cpp/TP4_ComptesBancaires/Doxyfile b/Cpp/TP4_ComptesBancaires/Doxyfile new file mode 100755 index 0000000..13a6a01 --- /dev/null +++ b/Cpp/TP4_ComptesBancaires/Doxyfile @@ -0,0 +1,275 @@ +# Doxyfile 1.4.1-KDevelop + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +PROJECT_NAME = tp4_comptesbancaires.kdevelop +PROJECT_NUMBER = 0.1 +OUTPUT_DIRECTORY = +CREATE_SUBDIRS = NO +OUTPUT_LANGUAGE = English +USE_WINDOWS_ENCODING = NO +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the +ALWAYS_DETAILED_SEC = NO +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = YES +STRIP_FROM_PATH = /home/nicolas/repository/ENSI_2ndY/Cpp/TP3_12-10-2005_CalculMatriciel/ +STRIP_FROM_INC_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = NO +MULTILINE_CPP_IS_BRIEF = NO +DETAILS_AT_TOP = NO +INHERIT_DOCS = YES +DISTRIBUTE_GROUP_DOC = NO +TAB_SIZE = 8 +ALIASES = +OPTIMIZE_OUTPUT_FOR_C = NO +OPTIMIZE_OUTPUT_JAVA = NO +SUBGROUPING = YES +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- +EXTRACT_ALL = NO +EXTRACT_PRIVATE = NO +EXTRACT_STATIC = NO +EXTRACT_LOCAL_CLASSES = YES +EXTRACT_LOCAL_METHODS = NO +HIDE_UNDOC_MEMBERS = NO +HIDE_UNDOC_CLASSES = NO +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = NO +CASE_SENSE_NAMES = YES +HIDE_SCOPE_NAMES = NO +SHOW_INCLUDE_FILES = YES +INLINE_INFO = YES +SORT_MEMBER_DOCS = YES +SORT_BRIEF_DOCS = NO +SORT_BY_SCOPE_NAME = NO +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 30 +SHOW_USED_FILES = YES +SHOW_DIRECTORIES = YES +FILE_VERSION_FILTER = +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- +QUIET = NO +WARNINGS = YES +WARN_IF_UNDOCUMENTED = YES +WARN_IF_DOC_ERROR = YES +WARN_NO_PARAMDOC = NO +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- +INPUT = /home/nicolas/repository/ENSI_2ndY/Cpp/tp4_comptesbancaires +FILE_PATTERNS = *.c \ + *.cc \ + *.cxx \ + *.cpp \ + *.c++ \ + *.java \ + *.ii \ + *.ixx \ + *.ipp \ + *.i++ \ + *.inl \ + *.h \ + *.hh \ + *.hxx \ + *.hpp \ + *.h++ \ + *.idl \ + *.odl \ + *.cs \ + *.php \ + *.php3 \ + *.inc \ + *.m \ + *.mm \ + *.dox \ + *.C \ + *.CC \ + *.C++ \ + *.II \ + *.I++ \ + *.H \ + *.HH \ + *.H++ \ + *.CS \ + *.PHP \ + *.PHP3 \ + *.M \ + *.MM \ + *.C \ + *.H \ + *.tlh \ + *.diff \ + *.patch \ + *.moc \ + *.xpm \ + *.dox +RECURSIVE = yes +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = * +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = +INPUT_FILTER = +FILTER_PATTERNS = +FILTER_SOURCE_FILES = NO +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = NO +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = YES +REFERENCES_RELATION = YES +VERBATIM_HEADERS = YES +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = NO +COLS_IN_ALPHA_INDEX = 5 +IGNORE_PREFIX = +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- +GENERATE_HTML = YES +HTML_OUTPUT = html +HTML_FILE_EXTENSION = .html +HTML_HEADER = +HTML_FOOTER = +HTML_STYLESHEET = +HTML_ALIGN_MEMBERS = YES +GENERATE_HTMLHELP = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +BINARY_TOC = NO +TOC_EXPAND = NO +DISABLE_INDEX = NO +ENUM_VALUES_PER_LINE = 4 +GENERATE_TREEVIEW = NO +TREEVIEW_WIDTH = 250 +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- +GENERATE_LATEX = YES +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4wide +EXTRA_PACKAGES = +LATEX_HEADER = +PDF_HYPERLINKS = NO +USE_PDFLATEX = NO +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- +GENERATE_MAN = NO +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_LINKS = NO +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = yes +XML_OUTPUT = xml +XML_SCHEMA = +XML_DTD = +XML_PROGRAMLISTING = YES +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- +GENERATE_AUTOGEN_DEF = NO +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = NO +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- +TAGFILES = +GENERATE_TAGFILE = tp4_comptesbancaires.tag +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +PERL_PATH = /usr/bin/perl +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- +CLASS_DIAGRAMS = YES +HIDE_UNDOC_RELATIONS = YES +HAVE_DOT = NO +CLASS_GRAPH = YES +COLLABORATION_GRAPH = YES +GROUP_GRAPHS = YES +UML_LOOK = NO +TEMPLATE_RELATIONS = NO +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = YES +CALL_GRAPH = NO +GRAPHICAL_HIERARCHY = YES +DIRECTORY_GRAPH = YES +DOT_IMAGE_FORMAT = png +DOT_PATH = +DOTFILE_DIRS = +MAX_DOT_GRAPH_WIDTH = 1024 +MAX_DOT_GRAPH_HEIGHT = 1024 +MAX_DOT_GRAPH_DEPTH = 1000 +DOT_TRANSPARENT = NO +DOT_MULTI_TARGETS = NO +GENERATE_LEGEND = YES +DOT_CLEANUP = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- +SEARCHENGINE = NO diff --git a/Cpp/TP4_ComptesBancaires/INSTALL b/Cpp/TP4_ComptesBancaires/INSTALL new file mode 100755 index 0000000..02a4a07 --- /dev/null +++ b/Cpp/TP4_ComptesBancaires/INSTALL @@ -0,0 +1,167 @@ +Basic Installation +================== + + These are generic installation instructions. + + The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions. Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, a file +`config.cache' that saves the results of its tests to speed up +reconfiguring, and a file `config.log' containing compiler output +(useful mainly for debugging `configure'). + + If you need to do unusual things to compile the package, please try +to figure out how `configure' could check whether to do them, and mail +diffs or instructions to the address given in the `README' so they can +be considered for the next release. If at some point `config.cache' +contains results you don't want to keep, you may remove or edit it. + + The file `configure.in' is used to create `configure' by a program +called `autoconf'. You only need `configure.in' if you want to change +it or regenerate `configure' using a newer version of `autoconf'. + +The simplest way to compile this package is: + + 1. `cd' to the directory containing the package's source code and type + `./configure' to configure the package for your system. If you're + using `csh' on an old version of System V, you might need to type + `sh ./configure' instead to prevent `csh' from trying to execute + `configure' itself. + + Running `configure' takes a while. While running, it prints some + messages telling which features it is checking for. + + 2. Type `make' to compile the package. + + 3. Type `make install' to install the programs and any data files and + documentation. + + 4. You can remove the program binaries and object files from the + source code directory by typing `make clean'. + +Compilers and Options +===================== + + Some systems require unusual options for compilation or linking that +the `configure' script does not know about. You can give `configure' +initial values for variables by setting them in the environment. Using +a Bourne-compatible shell, you can do that on the command line like +this: + CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure + +Or on systems that have the `env' program, you can do it like this: + env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure + +Compiling For Multiple Architectures +==================================== + + You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you must use a version of `make' that +supports the `VPATH' variable, such as GNU `make'. `cd' to the +directory where you want the object files and executables to go and run +the `configure' script. `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'. + + If you have to use a `make' that does not supports the `VPATH' +variable, you have to compile the package for one architecture at a time +in the source code directory. After you have installed the package for +one architecture, use `make distclean' before reconfiguring for another +architecture. + +Installation Names +================== + + By default, `make install' will install the package's files in +`/usr/local/bin', `/usr/local/man', etc. You can specify an +installation prefix other than `/usr/local' by giving `configure' the +option `--prefix=PATH'. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +give `configure' the option `--exec-prefix=PATH', the package will use +PATH as the prefix for installing programs and libraries. +Documentation and other data files will still use the regular prefix. + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + +Optional Features +================= + + Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System). The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + + For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + +Specifying the System Type +========================== + + There may be some features `configure' can not figure out +automatically, but needs to determine by the type of host the package +will run on. Usually `configure' can figure that out, but if it prints +a message saying it can not guess the host type, give it the +`--host=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name with three fields: + CPU-COMPANY-SYSTEM + +See the file `config.sub' for the possible values of each field. If +`config.sub' isn't included in this package, then this package doesn't +need to know the host type. + + If you are building compiler tools for cross-compiling, you can also +use the `--target=TYPE' option to select the type of system they will +produce code for and the `--build=TYPE' option to select the type of +system on which you are compiling the package. + +Sharing Defaults +================ + + If you want to set default values for `configure' scripts to share, +you can create a site shell script called `config.site' that gives +default values for variables like `CC', `cache_file', and `prefix'. +`configure' looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists. Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: not all `configure' scripts look for a site script. + +Operation Controls +================== + + `configure' recognizes the following options to control how it +operates. + +`--cache-file=FILE' + Use and save the results of the tests in FILE instead of + `./config.cache'. Set FILE to `/dev/null' to disable caching, for + debugging `configure'. + +`--help' + Print a summary of the options to `configure', and exit. + +`--quiet' +`--silent' +`-q' + Do not print messages saying which checks are being made. + +`--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + `configure' can determine that directory automatically. + +`--version' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`configure' also accepts some other, not widely useful, options. + diff --git a/Cpp/TP4_ComptesBancaires/Makefile.am b/Cpp/TP4_ComptesBancaires/Makefile.am new file mode 100755 index 0000000..02520f2 --- /dev/null +++ b/Cpp/TP4_ComptesBancaires/Makefile.am @@ -0,0 +1,5 @@ +# not a GNU package. You can remove this line, if +# have all needed files, that a GNU package needs +AUTOMAKE_OPTIONS = foreign 1.4 + +SUBDIRS = src diff --git a/Cpp/TP4_ComptesBancaires/Makefile.cvs b/Cpp/TP4_ComptesBancaires/Makefile.cvs new file mode 100755 index 0000000..d160702 --- /dev/null +++ b/Cpp/TP4_ComptesBancaires/Makefile.cvs @@ -0,0 +1,8 @@ +default: all + +all: + aclocal + autoheader + automake + autoconf + diff --git a/Cpp/TP4_ComptesBancaires/Makefile.in b/Cpp/TP4_ComptesBancaires/Makefile.in new file mode 100755 index 0000000..9490609 --- /dev/null +++ b/Cpp/TP4_ComptesBancaires/Makefile.in @@ -0,0 +1,612 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = . +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in $(srcdir)/config.h.in \ + $(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \ + TODO config.guess config.sub depcomp install-sh ltmain.sh \ + missing mkinstalldirs +subdir = . +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno configure.status.lineno +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-exec-recursive install-info-recursive \ + install-recursive installcheck-recursive installdirs-recursive \ + pdf-recursive ps-recursive uninstall-info-recursive \ + uninstall-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + { test ! -d $(distdir) \ + || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -fr $(distdir); }; } +DIST_ARCHIVES = $(distdir).tar.gz +GZIP_ENV = --best +distuninstallcheck_listfiles = find . -type f -print +distcleancheck_listfiles = find . -type f -print +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ + +# not a GNU package. You can remove this line, if +# have all needed files, that a GNU package needs +AUTOMAKE_OPTIONS = foreign 1.4 +SUBDIRS = src +all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: +am--refresh: + @: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --foreign '; \ + cd $(srcdir) && $(AUTOMAKE) --foreign \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) + +config.h: stamp-h1 + @if test ! -f $@; then \ + rm -f stamp-h1; \ + $(MAKE) stamp-h1; \ + else :; fi + +stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status + @rm -f stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status config.h +$(srcdir)/config.h.in: $(am__configure_deps) + cd $(top_srcdir) && $(AUTOHEADER) + rm -f stamp-h1 + touch $@ + +distclean-hdr: + -rm -f config.h stamp-h1 + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + $(am__remove_distdir) + mkdir $(distdir) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(mkdir_p) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + distdir) \ + || exit 1; \ + fi; \ + done + -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r $(distdir) +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 + $(am__remove_distdir) + +dist-tarZ: distdir + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__remove_distdir) + +dist-shar: distdir + shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz + $(am__remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__remove_distdir) + +dist dist-all: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + chmod -R a-w $(distdir); chmod a+w $(distdir) + mkdir $(distdir)/_build + mkdir $(distdir)/_inst + chmod a-w $(distdir) + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && cd $(distdir)/_build \ + && ../configure --srcdir=.. --prefix="$$dc_install_base" \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck + $(am__remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}' +distuninstallcheck: + @cd $(distuninstallcheck_dir) \ + && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: check-recursive +all-am: Makefile config.h +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-hdr \ + distclean-libtool distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-recursive + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-info-am + +uninstall-info: uninstall-info-recursive + +.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \ + check-am clean clean-generic clean-libtool clean-recursive \ + ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \ + dist-shar dist-tarZ dist-zip distcheck distclean \ + distclean-generic distclean-hdr distclean-libtool \ + distclean-recursive distclean-tags distcleancheck distdir \ + distuninstallcheck dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-exec \ + install-exec-am install-info install-info-am install-man \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + maintainer-clean-recursive mostlyclean mostlyclean-generic \ + mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \ + tags tags-recursive uninstall uninstall-am uninstall-info-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/Cpp/TP4_ComptesBancaires/NEWS b/Cpp/TP4_ComptesBancaires/NEWS new file mode 100755 index 0000000..e69de29 diff --git a/Cpp/TP4_ComptesBancaires/README b/Cpp/TP4_ComptesBancaires/README new file mode 100755 index 0000000..40c27ea --- /dev/null +++ b/Cpp/TP4_ComptesBancaires/README @@ -0,0 +1 @@ +On peut dire que le type compte n'est pas absolument polymorphe car ce n'est pas un type abstrait: toute les methodes ont une implémentation, de plus ele ne sont pas toute surchargées. Il y a donc une partie de l'implémentation qui est propre à la classe Compte, elle n'est donc pas absolument polymorphe \ No newline at end of file diff --git a/Cpp/TP4_ComptesBancaires/TODO b/Cpp/TP4_ComptesBancaires/TODO new file mode 100755 index 0000000..c049eb5 --- /dev/null +++ b/Cpp/TP4_ComptesBancaires/TODO @@ -0,0 +1 @@ +La totalité de l'énoncé a été traité diff --git a/Cpp/TP4_ComptesBancaires/aclocal.m4 b/Cpp/TP4_ComptesBancaires/aclocal.m4 new file mode 100755 index 0000000..7d85358 --- /dev/null +++ b/Cpp/TP4_ComptesBancaires/aclocal.m4 @@ -0,0 +1,7147 @@ +# generated automatically by aclocal 1.9.6 -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +# 2005 Free Software Foundation, Inc. +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- + +# serial 47 AC_PROG_LIBTOOL + + +# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED) +# ----------------------------------------------------------- +# If this macro is not defined by Autoconf, define it here. +m4_ifdef([AC_PROVIDE_IFELSE], + [], + [m4_define([AC_PROVIDE_IFELSE], + [m4_ifdef([AC_PROVIDE_$1], + [$2], [$3])])]) + + +# AC_PROG_LIBTOOL +# --------------- +AC_DEFUN([AC_PROG_LIBTOOL], +[AC_REQUIRE([_AC_PROG_LIBTOOL])dnl +dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX +dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX. + AC_PROVIDE_IFELSE([AC_PROG_CXX], + [AC_LIBTOOL_CXX], + [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX + ])]) +dnl And a similar setup for Fortran 77 support + AC_PROVIDE_IFELSE([AC_PROG_F77], + [AC_LIBTOOL_F77], + [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77 +])]) + +dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly. +dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run +dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both. + AC_PROVIDE_IFELSE([AC_PROG_GCJ], + [AC_LIBTOOL_GCJ], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], + [AC_LIBTOOL_GCJ], + [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ], + [AC_LIBTOOL_GCJ], + [ifdef([AC_PROG_GCJ], + [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])]) + ifdef([A][M_PROG_GCJ], + [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])]) + ifdef([LT_AC_PROG_GCJ], + [define([LT_AC_PROG_GCJ], + defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])]) +])])# AC_PROG_LIBTOOL + + +# _AC_PROG_LIBTOOL +# ---------------- +AC_DEFUN([_AC_PROG_LIBTOOL], +[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl +AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl +AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl +AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +AC_SUBST(LIBTOOL)dnl + +# Prevent multiple expansion +define([AC_PROG_LIBTOOL], []) +])# _AC_PROG_LIBTOOL + + +# AC_LIBTOOL_SETUP +# ---------------- +AC_DEFUN([AC_LIBTOOL_SETUP], +[AC_PREREQ(2.50)dnl +AC_REQUIRE([AC_ENABLE_SHARED])dnl +AC_REQUIRE([AC_ENABLE_STATIC])dnl +AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_LD])dnl +AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl +AC_REQUIRE([AC_PROG_NM])dnl + +AC_REQUIRE([AC_PROG_LN_S])dnl +AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl +# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! +AC_REQUIRE([AC_OBJEXT])dnl +AC_REQUIRE([AC_EXEEXT])dnl +dnl + +AC_LIBTOOL_SYS_MAX_CMD_LEN +AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE +AC_LIBTOOL_OBJDIR + +AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl +_LT_AC_PROG_ECHO_BACKSLASH + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='sed -e 1s/^X//' +[sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'] + +# Same as above, but do not quote variable references. +[double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'] + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +# Constants: +rm="rm -f" + +# Global variables: +default_ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a +ltmain="$ac_aux_dir/ltmain.sh" +ofile="$default_ofile" +with_gnu_ld="$lt_cv_prog_gnu_ld" + +AC_CHECK_TOOL(AR, ar, false) +AC_CHECK_TOOL(RANLIB, ranlib, :) +AC_CHECK_TOOL(STRIP, strip, :) + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$AR" && AR=ar +test -z "$AR_FLAGS" && AR_FLAGS=cru +test -z "$AS" && AS=as +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$DLLTOOL" && DLLTOOL=dlltool +test -z "$LD" && LD=ld +test -z "$LN_S" && LN_S="ln -s" +test -z "$MAGIC_CMD" && MAGIC_CMD=file +test -z "$NM" && NM=nm +test -z "$SED" && SED=sed +test -z "$OBJDUMP" && OBJDUMP=objdump +test -z "$RANLIB" && RANLIB=: +test -z "$STRIP" && STRIP=: +test -z "$ac_objext" && ac_objext=o + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" + ;; + *) + old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi + +_LT_CC_BASENAME([$compiler]) + +# Only perform the check for file, if the check method requires it +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + AC_PATH_MAGIC + fi + ;; +esac + +AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no) +AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], +enable_win32_dll=yes, enable_win32_dll=no) + +AC_ARG_ENABLE([libtool-lock], + [AC_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +AC_ARG_WITH([pic], + [AC_HELP_STRING([--with-pic], + [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], + [pic_mode="$withval"], + [pic_mode=default]) +test -z "$pic_mode" && pic_mode=default + +# Check if we have a version mismatch between libtool.m4 and ltmain.sh. +# +# Note: This should be in AC_LIBTOOL_SETUP, _after_ $ltmain have been defined. +# We also should do it _before_ AC_LIBTOOL_LANG_C_CONFIG that actually +# calls AC_LIBTOOL_CONFIG and creates libtool. +# +_LT_VERSION_CHECK + +# Use C for the default configuration in the libtool script +tagname= +AC_LIBTOOL_LANG_C_CONFIG +_LT_AC_TAGCONFIG +])# AC_LIBTOOL_SETUP + + +# _LT_VERSION_CHECK +# ----------------- +AC_DEFUN([_LT_VERSION_CHECK], +[AC_MSG_CHECKING([for correct ltmain.sh version]) +if test "x$ltmain" = "x" ; then + AC_MSG_RESULT(no) + AC_MSG_ERROR([ + +*** @<:@Gentoo@:>@ sanity check failed! *** +*** \$ltmain is not defined, please check the patch for consistency! *** +]) +fi +gentoo_lt_version="1.5.20" +gentoo_ltmain_version=`grep '^@<:@ @:>@*VERSION=' $ltmain | sed -e 's|^@<:@ @:>@*VERSION=||'` +if test "x$gentoo_lt_version" != "x$gentoo_ltmain_version" ; then + AC_MSG_RESULT(no) + AC_MSG_ERROR([ + +*** @<:@Gentoo@:>@ sanity check failed! *** +*** libtool.m4 and ltmain.sh have a version mismatch! *** +*** (libtool.m4 = $gentoo_lt_version, ltmain.sh = $gentoo_ltmain_version) *** + +Please run: + + libtoolize --copy --force + +if appropriate, please contact the maintainer of this +package (or your distribution) for help. +]) +else + AC_MSG_RESULT(yes) +fi +])# _LT_VERSION_CHECK + + +# _LT_AC_SYS_COMPILER +# ------------------- +AC_DEFUN([_LT_AC_SYS_COMPILER], +[AC_REQUIRE([AC_PROG_CC])dnl + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# Allow CC to be a program name with arguments. +compiler=$CC +])# _LT_AC_SYS_COMPILER + + +# _LT_CC_BASENAME(CC) +# ------------------- +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +AC_DEFUN([_LT_CC_BASENAME], +[for cc_temp in $1""; do + case $cc_temp in + compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; + distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` +]) + + +# _LT_COMPILER_BOILERPLATE +# ------------------------ +# Check for compiler boilerplate output or warnings with +# the simple compiler test code. +AC_DEFUN([_LT_COMPILER_BOILERPLATE], +[ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* +])# _LT_COMPILER_BOILERPLATE + + +# _LT_LINKER_BOILERPLATE +# ---------------------- +# Check for linker boilerplate output or warnings with +# the simple link test code. +AC_DEFUN([_LT_LINKER_BOILERPLATE], +[ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* +])# _LT_LINKER_BOILERPLATE + + +# _LT_AC_SYS_LIBPATH_AIX +# ---------------------- +# Links a minimal program and checks the executable +# for the system default hardcoded library path. In most cases, +# this is /usr/lib:/lib, but when the MPI compilers are used +# the location of the communication and MPI libs are included too. +# If we don't find anything, use the default library path according +# to the aix ld manual. +AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX], +[AC_LINK_IFELSE(AC_LANG_PROGRAM,[ +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi],[]) +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi +])# _LT_AC_SYS_LIBPATH_AIX + + +# _LT_AC_SHELL_INIT(ARG) +# ---------------------- +AC_DEFUN([_LT_AC_SHELL_INIT], +[ifdef([AC_DIVERSION_NOTICE], + [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], + [AC_DIVERT_PUSH(NOTICE)]) +$1 +AC_DIVERT_POP +])# _LT_AC_SHELL_INIT + + +# _LT_AC_PROG_ECHO_BACKSLASH +# -------------------------- +# Add some code to the start of the generated configure script which +# will find an echo command which doesn't interpret backslashes. +AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH], +[_LT_AC_SHELL_INIT([ +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} + +case X$ECHO in +X*--fallback-echo) + # Remove one level of quotation (which was required for Make). + ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` + ;; +esac + +echo=${ECHO-echo} +if test "X[$]1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X[$]1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then + # Yippee, $echo works! + : +else + # Restart under the correct shell. + exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} +fi + +if test "X[$]1" = X--fallback-echo; then + # used as fallback echo + shift + cat </dev/null 2>&1 && unset CDPATH + +if test -z "$ECHO"; then +if test "X${echo_test_string+set}" != Xset; then +# find a string as large as possible, as long as the shell can cope with it + for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do + # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... + if (echo_test_string=`eval $cmd`) 2>/dev/null && + echo_test_string=`eval $cmd` && + (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null + then + break + fi + done +fi + +if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + : +else + # The Solaris, AIX, and Digital Unix default echo programs unquote + # backslashes. This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # + # So, first we look for a working echo in the user's PATH. + + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for dir in $PATH /usr/ucb; do + IFS="$lt_save_ifs" + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$dir/echo" + break + fi + done + IFS="$lt_save_ifs" + + if test "X$echo" = Xecho; then + # We didn't find a better echo, so look for alternatives. + if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # This shell has a builtin print -r that does the trick. + echo='print -r' + elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && + test "X$CONFIG_SHELL" != X/bin/ksh; then + # If we have ksh, try running configure again with it. + ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + export ORIGINAL_CONFIG_SHELL + CONFIG_SHELL=/bin/ksh + export CONFIG_SHELL + exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} + else + # Try using printf. + echo='printf %s\n' + if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # Cool, printf works + : + elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL + export CONFIG_SHELL + SHELL="$CONFIG_SHELL" + export SHELL + echo="$CONFIG_SHELL [$]0 --fallback-echo" + elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$CONFIG_SHELL [$]0 --fallback-echo" + else + # maybe with a smaller string... + prev=: + + for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do + if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null + then + break + fi + prev="$cmd" + done + + if test "$prev" != 'sed 50q "[$]0"'; then + echo_test_string=`eval $prev` + export echo_test_string + exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} + else + # Oops. We lost completely, so just stick with echo. + echo=echo + fi + fi + fi + fi +fi +fi + +# Copy echo and quote the copy suitably for passing to libtool from +# the Makefile, instead of quoting the original, which is used later. +ECHO=$echo +if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then + ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" +fi + +AC_SUBST(ECHO) +])])# _LT_AC_PROG_ECHO_BACKSLASH + + +# _LT_AC_LOCK +# ----------- +AC_DEFUN([_LT_AC_LOCK], +[AC_ARG_ENABLE([libtool-lock], + [AC_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '[#]line __oline__ "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-linux*) + # Test if the compiler is 64bit + echo 'int i;' > conftest.$ac_ext + lt_cv_cc_64bit_output=no + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.$ac_objext` in + *"ELF 64"*) + lt_cv_cc_64bit_output=yes + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, + [AC_LANG_PUSH(C) + AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) + AC_LANG_POP]) + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; +AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], +[*-*-cygwin* | *-*-mingw* | *-*-pw32*) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) + ;; + ]) +esac + +need_locks="$enable_libtool_lock" + +])# _LT_AC_LOCK + + +# AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------------------- +# Check whether the given compiler option works +AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], +[AC_REQUIRE([LT_AC_PROG_SED]) +AC_CACHE_CHECK([$1], [$2], + [$2=no + ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$3" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp + $SED '/^$/d' conftest.err >conftest.er2 + if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + fi + $rm conftest* +]) + +if test x"[$]$2" = xyes; then + ifelse([$5], , :, [$5]) +else + ifelse([$6], , :, [$6]) +fi +])# AC_LIBTOOL_COMPILER_OPTION + + +# AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [ACTION-SUCCESS], [ACTION-FAILURE]) +# ------------------------------------------------------------ +# Check whether the given compiler option works +AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], +[AC_CACHE_CHECK([$1], [$2], + [$2=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $3" + printf "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&AS_MESSAGE_LOG_FD + $echo "X$_lt_linker_boilerplate" | $Xsed > conftest.exp + $SED '/^$/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + else + $2=yes + fi + fi + $rm conftest* + LDFLAGS="$save_LDFLAGS" +]) + +if test x"[$]$2" = xyes; then + ifelse([$4], , :, [$4]) +else + ifelse([$5], , :, [$5]) +fi +])# AC_LIBTOOL_LINKER_OPTION + + +# AC_LIBTOOL_SYS_MAX_CMD_LEN +# -------------------------- +AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], +[# find the maximum length of command line arguments +AC_MSG_CHECKING([the maximum length of command line arguments]) +AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + *) + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \ + = "XX$teststring") >/dev/null 2>&1 && + new_result=`expr "X$teststring" : ".*" 2>&1` && + lt_cv_sys_max_cmd_len=$new_result && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + teststring= + # Add a significant safety factor because C++ compilers can tack on massive + # amounts of additional arguments before passing them to the linker. + # It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + ;; + esac +]) +if test -n $lt_cv_sys_max_cmd_len ; then + AC_MSG_RESULT($lt_cv_sys_max_cmd_len) +else + AC_MSG_RESULT(none) +fi +])# AC_LIBTOOL_SYS_MAX_CMD_LEN + + +# _LT_AC_CHECK_DLFCN +# -------------------- +AC_DEFUN([_LT_AC_CHECK_DLFCN], +[AC_CHECK_HEADERS(dlfcn.h)dnl +])# _LT_AC_CHECK_DLFCN + + +# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +# ------------------------------------------------------------------ +AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF], +[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl +if test "$cross_compiling" = yes; then : + [$4] +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + + exit (status); +}] +EOF + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) $1 ;; + x$lt_dlneed_uscore) $2 ;; + x$lt_unknown|x*) $3 ;; + esac + else : + # compilation failed + $3 + fi +fi +rm -fr conftest* +])# _LT_AC_TRY_DLOPEN_SELF + + +# AC_LIBTOOL_DLOPEN_SELF +# ------------------- +AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], +[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ]) + ;; + + *) + AC_CHECK_FUNC([shl_load], + [lt_cv_dlopen="shl_load"], + [AC_CHECK_LIB([dld], [shl_load], + [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], + [AC_CHECK_FUNC([dlopen], + [lt_cv_dlopen="dlopen"], + [AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], + [AC_CHECK_LIB([svld], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], + [AC_CHECK_LIB([dld], [dld_link], + [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) + ]) + ]) + ]) + ]) + ]) + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + AC_CACHE_CHECK([whether a program can dlopen itself], + lt_cv_dlopen_self, [dnl + _LT_AC_TRY_DLOPEN_SELF( + lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, + lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) + ]) + + if test "x$lt_cv_dlopen_self" = xyes; then + LDFLAGS="$LDFLAGS $link_static_flag" + AC_CACHE_CHECK([whether a statically linked program can dlopen itself], + lt_cv_dlopen_self_static, [dnl + _LT_AC_TRY_DLOPEN_SELF( + lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, + lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) + ]) + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi +])# AC_LIBTOOL_DLOPEN_SELF + + +# AC_LIBTOOL_PROG_CC_C_O([TAGNAME]) +# --------------------------------- +# Check to see if options -c and -o are simultaneously supported by compiler +AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O], +[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl +AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], + [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)], + [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp + $SED '/^$/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then + _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + fi + fi + chmod u+w . 2>&AS_MESSAGE_LOG_FD + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* +]) +])# AC_LIBTOOL_PROG_CC_C_O + + +# AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME]) +# ----------------------------------------- +# Check to see if we can do hard links to lock some files if needed +AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], +[AC_REQUIRE([_LT_AC_LOCK])dnl + +hard_links="nottested" +if test "$_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + AC_MSG_CHECKING([if we can lock with hard links]) + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + AC_MSG_RESULT([$hard_links]) + if test "$hard_links" = no; then + AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) + need_locks=warn + fi +else + need_locks=no +fi +])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS + + +# AC_LIBTOOL_OBJDIR +# ----------------- +AC_DEFUN([AC_LIBTOOL_OBJDIR], +[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], +[rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null]) +objdir=$lt_cv_objdir +])# AC_LIBTOOL_OBJDIR + + +# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME]) +# ---------------------------------------------- +# Check hardcoding attributes. +AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], +[AC_MSG_CHECKING([how to hardcode library paths into programs]) +_LT_AC_TAGVAR(hardcode_action, $1)= +if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \ + test -n "$_LT_AC_TAGVAR(runpath_var, $1)" || \ + test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no && + test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then + # Linking always hardcodes the temporary library directory. + _LT_AC_TAGVAR(hardcode_action, $1)=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + _LT_AC_TAGVAR(hardcode_action, $1)=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + _LT_AC_TAGVAR(hardcode_action, $1)=unsupported +fi +AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)]) + +if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi +])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH + + +# AC_LIBTOOL_SYS_LIB_STRIP +# ------------------------ +AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP], +[striplib= +old_striplib= +AC_MSG_CHECKING([whether stripping libraries is possible]) +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) +fi + ;; + *) + AC_MSG_RESULT([no]) + ;; + esac +fi +])# AC_LIBTOOL_SYS_LIB_STRIP + + +# AC_LIBTOOL_SYS_DYNAMIC_LINKER +# ----------------------------- +# PORTME Fill in your ld.so characteristics +AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER], +[AC_MSG_CHECKING([dynamic linker characteristics]) +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[[01]] | aix4.[[01]].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[[45]]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + linux*) + if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [01].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + if test $supports_anon_versioning = yes; then + archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~ +cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ +$echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + else + $archive_expsym_cmds="$archive_cmds" + fi + else + ld_shlibs=no + fi + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +kfreebsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[[123]]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + # Handle Gentoo/FreeBSD as it was Linux + case $host_vendor in + gentoo) + version_type=linux ;; + *) + version_type=freebsd-$objformat ;; + esac + + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + linux) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + need_lib_prefix=no + need_version=no + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[[01]]* | freebsdelf3.[[01]]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + *) # from 3.2 on + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + case $host_cpu:$lt_cv_cc_64bit_output in + powerpc64:yes | s390x:yes | sparc64:yes | x86_64:yes) + sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /usr/X11R6/lib64" + sys_lib_search_path_spec="/lib64 /usr/lib64 /usr/local/lib64 /usr/X11R6/lib64" + ;; + esac + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + + # Find out which ABI we are using (multilib Linux x86_64 hack). + libsuff= + case "$host_cpu" in + x86_64*) + echo '[#]line __oline__ "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.$ac_objext` in + *64-bit*) + libsuff=64 + ;; + esac + fi + rm -rf conftest* + ;; + *) + ;; + esac + sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff}" + sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" + ;; + +knetbsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[[89]] | openbsd2.[[89]].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +sco3.2v5*) + version_type=osf + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +AC_MSG_RESULT([$dynamic_linker]) +test "$dynamic_linker" = no && can_build_shared=no +])# AC_LIBTOOL_SYS_DYNAMIC_LINKER + + +# _LT_AC_TAGCONFIG +# ---------------- +AC_DEFUN([_LT_AC_TAGCONFIG], +[AC_ARG_WITH([tags], + [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@], + [include additional configurations @<:@automatic@:>@])], + [tagnames="$withval"]) + +if test -f "$ltmain" && test -n "$tagnames"; then + if test ! -f "${ofile}"; then + AC_MSG_WARN([output file `$ofile' does not exist]) + fi + + if test -z "$LTCC"; then + eval "`$SHELL ${ofile} --config | grep '^LTCC='`" + if test -z "$LTCC"; then + AC_MSG_WARN([output file `$ofile' does not look like a libtool script]) + else + AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile']) + fi + fi + + # Extract list of available tagged configurations in $ofile. + # Note that this assumes the entire list is on one line. + available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` + + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for tagname in $tagnames; do + IFS="$lt_save_ifs" + # Check whether tagname contains only valid characters + case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in + "") ;; + *) AC_MSG_ERROR([invalid tag name: $tagname]) + ;; + esac + + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null + then + AC_MSG_ERROR([tag name \"$tagname\" already exists]) + fi + + # Update the list of available tags. + if test -n "$tagname"; then + echo appending configuration tag \"$tagname\" to $ofile + + case $tagname in + CXX) + if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + AC_LIBTOOL_LANG_CXX_CONFIG + else + tagname="" + fi + ;; + + F77) + if test -n "$F77" && test "X$F77" != "Xno"; then + AC_LIBTOOL_LANG_F77_CONFIG + else + tagname="" + fi + ;; + + GCJ) + if test -n "$GCJ" && test "X$GCJ" != "Xno"; then + AC_LIBTOOL_LANG_GCJ_CONFIG + else + tagname="" + fi + ;; + + RC) + AC_LIBTOOL_LANG_RC_CONFIG + ;; + + *) + AC_MSG_ERROR([Unsupported tag name: $tagname]) + ;; + esac + + # Append the new tag name to the list of available tags. + if test -n "$tagname" ; then + available_tags="$available_tags $tagname" + fi + fi + done + IFS="$lt_save_ifs" + + # Now substitute the updated list of available tags. + if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then + mv "${ofile}T" "$ofile" + chmod +x "$ofile" + else + rm -f "${ofile}T" + AC_MSG_ERROR([unable to update list of available tagged configurations.]) + fi +fi +])# _LT_AC_TAGCONFIG + + +# AC_LIBTOOL_DLOPEN +# ----------------- +# enable checks for dlopen support +AC_DEFUN([AC_LIBTOOL_DLOPEN], + [AC_BEFORE([$0],[AC_LIBTOOL_SETUP]) +])# AC_LIBTOOL_DLOPEN + + +# AC_LIBTOOL_WIN32_DLL +# -------------------- +# declare package support for building win32 DLLs +AC_DEFUN([AC_LIBTOOL_WIN32_DLL], +[AC_BEFORE([$0], [AC_LIBTOOL_SETUP]) +])# AC_LIBTOOL_WIN32_DLL + + +# AC_ENABLE_SHARED([DEFAULT]) +# --------------------------- +# implement the --enable-shared flag +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +AC_DEFUN([AC_ENABLE_SHARED], +[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE([shared], + [AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@], + [build shared libraries @<:@default=]AC_ENABLE_SHARED_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_shared=]AC_ENABLE_SHARED_DEFAULT) +])# AC_ENABLE_SHARED + + +# AC_DISABLE_SHARED +# ----------------- +#- set the default shared flag to --disable-shared +AC_DEFUN([AC_DISABLE_SHARED], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_SHARED(no) +])# AC_DISABLE_SHARED + + +# AC_ENABLE_STATIC([DEFAULT]) +# --------------------------- +# implement the --enable-static flag +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +AC_DEFUN([AC_ENABLE_STATIC], +[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE([static], + [AC_HELP_STRING([--enable-static@<:@=PKGS@:>@], + [build static libraries @<:@default=]AC_ENABLE_STATIC_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_static=]AC_ENABLE_STATIC_DEFAULT) +])# AC_ENABLE_STATIC + + +# AC_DISABLE_STATIC +# ----------------- +# set the default static flag to --disable-static +AC_DEFUN([AC_DISABLE_STATIC], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_STATIC(no) +])# AC_DISABLE_STATIC + + +# AC_ENABLE_FAST_INSTALL([DEFAULT]) +# --------------------------------- +# implement the --enable-fast-install flag +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +AC_DEFUN([AC_ENABLE_FAST_INSTALL], +[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE([fast-install], + [AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], + [optimize for fast installation @<:@default=]AC_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_fast_install=]AC_ENABLE_FAST_INSTALL_DEFAULT) +])# AC_ENABLE_FAST_INSTALL + + +# AC_DISABLE_FAST_INSTALL +# ----------------------- +# set the default to --disable-fast-install +AC_DEFUN([AC_DISABLE_FAST_INSTALL], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_FAST_INSTALL(no) +])# AC_DISABLE_FAST_INSTALL + + +# AC_LIBTOOL_PICMODE([MODE]) +# -------------------------- +# implement the --with-pic flag +# MODE is either `yes' or `no'. If omitted, it defaults to `both'. +AC_DEFUN([AC_LIBTOOL_PICMODE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +pic_mode=ifelse($#,1,$1,default) +])# AC_LIBTOOL_PICMODE + + +# AC_PROG_EGREP +# ------------- +# This is predefined starting with Autoconf 2.54, so this conditional +# definition can be removed once we require Autoconf 2.54 or later. +m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP], +[AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep], + [if echo a | (grep -E '(a|b)') >/dev/null 2>&1 + then ac_cv_prog_egrep='grep -E' + else ac_cv_prog_egrep='egrep' + fi]) + EGREP=$ac_cv_prog_egrep + AC_SUBST([EGREP]) +])]) + + +# AC_PATH_TOOL_PREFIX +# ------------------- +# find a file program which can recognise shared library +AC_DEFUN([AC_PATH_TOOL_PREFIX], +[AC_REQUIRE([AC_PROG_EGREP])dnl +AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +[case $MAGIC_CMD in +[[\\/*] | ?:[\\/]*]) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +dnl $ac_dummy forces splitting on constant user-supplied paths. +dnl POSIX.2 word splitting is done only on the output of word expansions, +dnl not every word. This closes a longstanding sh security hole. + ac_dummy="ifelse([$2], , $PATH, [$2])" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$1; then + lt_cv_path_MAGIC_CMD="$ac_dir/$1" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac]) +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + AC_MSG_RESULT($MAGIC_CMD) +else + AC_MSG_RESULT(no) +fi +])# AC_PATH_TOOL_PREFIX + + +# AC_PATH_MAGIC +# ------------- +# find a file program which can recognise a shared library +AC_DEFUN([AC_PATH_MAGIC], +[AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) + else + MAGIC_CMD=: + fi +fi +])# AC_PATH_MAGIC + + +# AC_PROG_LD +# ---------- +# find the pathname to the GNU or non-GNU linker +AC_DEFUN([AC_PROG_LD], +[AC_ARG_WITH([gnu-ld], + [AC_HELP_STRING([--with-gnu-ld], + [assume the C compiler uses GNU ld @<:@default=no@:>@])], + [test "$withval" = no || with_gnu_ld=yes], + [with_gnu_ld=no]) +AC_REQUIRE([LT_AC_PROG_SED])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by $CC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(lt_cv_path_LD, +[if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux*) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +nto-qnx*) + lt_cv_deplibs_check_method=unknown + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +sco3.2v5*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac +]) +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown +])# AC_DEPLIBS_CHECK_METHOD + + +# AC_PROG_NM +# ---------- +# find the pathname to a BSD-compatible name lister +AC_DEFUN([AC_PROG_NM], +[AC_CACHE_CHECK([for BSD-compatible nm], lt_cv_path_NM, +[if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/${ac_tool_prefix}nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + esac + fi + done + IFS="$lt_save_ifs" + test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm +fi]) +NM="$lt_cv_path_NM" +])# AC_PROG_NM + + +# AC_CHECK_LIBM +# ------------- +# check for math library +AC_DEFUN([AC_CHECK_LIBM], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case $host in +*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) + # These system don't have libm, or don't need it + ;; +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") + AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, cos, LIBM="-lm") + ;; +esac +])# AC_CHECK_LIBM + + +# AC_LIBLTDL_CONVENIENCE([DIRECTORY]) +# ----------------------------------- +# sets LIBLTDL to the link flags for the libltdl convenience library and +# LTDLINCL to the include flags for the libltdl header and adds +# --enable-ltdl-convenience to the configure arguments. Note that +# AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided, +# it is assumed to be `libltdl'. LIBLTDL will be prefixed with +# '${top_builddir}/' and LTDLINCL will be prefixed with '${top_srcdir}/' +# (note the single quotes!). If your package is not flat and you're not +# using automake, define top_builddir and top_srcdir appropriately in +# the Makefiles. +AC_DEFUN([AC_LIBLTDL_CONVENIENCE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl + case $enable_ltdl_convenience in + no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; + "") enable_ltdl_convenience=yes + ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; + esac + LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la + LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) + # For backwards non-gettext consistent compatibility... + INCLTDL="$LTDLINCL" +])# AC_LIBLTDL_CONVENIENCE + + +# AC_LIBLTDL_INSTALLABLE([DIRECTORY]) +# ----------------------------------- +# sets LIBLTDL to the link flags for the libltdl installable library and +# LTDLINCL to the include flags for the libltdl header and adds +# --enable-ltdl-install to the configure arguments. Note that +# AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided, +# and an installed libltdl is not found, it is assumed to be `libltdl'. +# LIBLTDL will be prefixed with '${top_builddir}/'# and LTDLINCL with +# '${top_srcdir}/' (note the single quotes!). If your package is not +# flat and you're not using automake, define top_builddir and top_srcdir +# appropriately in the Makefiles. +# In the future, this macro may have to be called after AC_PROG_LIBTOOL. +AC_DEFUN([AC_LIBLTDL_INSTALLABLE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl + AC_CHECK_LIB(ltdl, lt_dlinit, + [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], + [if test x"$enable_ltdl_install" = xno; then + AC_MSG_WARN([libltdl not installed, but installation disabled]) + else + enable_ltdl_install=yes + fi + ]) + if test x"$enable_ltdl_install" = x"yes"; then + ac_configure_args="$ac_configure_args --enable-ltdl-install" + LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la + LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) + else + ac_configure_args="$ac_configure_args --enable-ltdl-install=no" + LIBLTDL="-lltdl" + LTDLINCL= + fi + # For backwards non-gettext consistent compatibility... + INCLTDL="$LTDLINCL" +])# AC_LIBLTDL_INSTALLABLE + + +# AC_LIBTOOL_CXX +# -------------- +# enable support for C++ libraries +AC_DEFUN([AC_LIBTOOL_CXX], +[AC_REQUIRE([_LT_AC_LANG_CXX]) +])# AC_LIBTOOL_CXX + + +# _LT_AC_LANG_CXX +# --------------- +AC_DEFUN([_LT_AC_LANG_CXX], +[AC_REQUIRE([AC_PROG_CXX]) +AC_REQUIRE([_LT_AC_PROG_CXXCPP]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX]) +])# _LT_AC_LANG_CXX + +# _LT_AC_PROG_CXXCPP +# --------------- +AC_DEFUN([_LT_AC_PROG_CXXCPP], +[ +AC_REQUIRE([AC_PROG_CXX]) +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + AC_PROG_CXXCPP +fi +])# _LT_AC_PROG_CXXCPP + +# AC_LIBTOOL_F77 +# -------------- +# enable support for Fortran 77 libraries +AC_DEFUN([AC_LIBTOOL_F77], +[AC_REQUIRE([_LT_AC_LANG_F77]) +])# AC_LIBTOOL_F77 + + +# _LT_AC_LANG_F77 +# --------------- +AC_DEFUN([_LT_AC_LANG_F77], +[AC_REQUIRE([AC_PROG_F77]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77]) +])# _LT_AC_LANG_F77 + + +# AC_LIBTOOL_GCJ +# -------------- +# enable support for GCJ libraries +AC_DEFUN([AC_LIBTOOL_GCJ], +[AC_REQUIRE([_LT_AC_LANG_GCJ]) +])# AC_LIBTOOL_GCJ + + +# _LT_AC_LANG_GCJ +# --------------- +AC_DEFUN([_LT_AC_LANG_GCJ], +[AC_PROVIDE_IFELSE([AC_PROG_GCJ],[], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[], + [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[], + [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])], + [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])], + [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ]) +])# _LT_AC_LANG_GCJ + + +# AC_LIBTOOL_RC +# -------------- +# enable support for Windows resource files +AC_DEFUN([AC_LIBTOOL_RC], +[AC_REQUIRE([LT_AC_PROG_RC]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}RC]) +])# AC_LIBTOOL_RC + + +# AC_LIBTOOL_LANG_C_CONFIG +# ------------------------ +# Ensure that the configuration vars for the C compiler are +# suitably defined. Those variables are subsequently used by +# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. +AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG]) +AC_DEFUN([_LT_AC_LANG_C_CONFIG], +[lt_save_CC="$CC" +AC_LANG_PUSH(C) + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +_LT_AC_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}\n' + +_LT_AC_SYS_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# +# Check for any special shared library compilation flags. +# +_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)= +if test "$GCC" = no; then + case $host_os in + sco3.2v5*) + _LT_AC_TAGVAR(lt_prog_cc_shlib, $1)='-belf' + ;; + esac +fi +if test -n "$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)"; then + AC_MSG_WARN([`$CC' requires `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to build shared libraries]) + if echo "$old_CC $old_CFLAGS " | grep "[[ ]]$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)[[ ]]" >/dev/null; then : + else + AC_MSG_WARN([add `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to the CC or CFLAGS env variable and reconfigure]) + _LT_AC_TAGVAR(lt_cv_prog_cc_can_build_shared, $1)=no + fi +fi + + +# +# Check to make sure the static flag actually works. +# +AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $_LT_AC_TAGVAR(lt_prog_compiler_static, $1) works], + _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1), + $_LT_AC_TAGVAR(lt_prog_compiler_static, $1), + [], + [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=]) + + +AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) +AC_LIBTOOL_PROG_COMPILER_PIC($1) +AC_LIBTOOL_PROG_CC_C_O($1) +AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) +AC_LIBTOOL_PROG_LD_SHLIBS($1) +AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) +AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) +AC_LIBTOOL_SYS_LIB_STRIP +AC_LIBTOOL_DLOPEN_SELF($1) + +# Report which librarie types wil actually be built +AC_MSG_CHECKING([if libtool supports shared libraries]) +AC_MSG_RESULT([$can_build_shared]) + +AC_MSG_CHECKING([whether to build shared libraries]) +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case $host_os in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + +aix4* | aix5*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; +esac +AC_MSG_RESULT([$enable_shared]) + +AC_MSG_CHECKING([whether to build static libraries]) +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +AC_MSG_RESULT([$enable_static]) + +AC_LIBTOOL_CONFIG($1) + +AC_LANG_POP +CC="$lt_save_CC" +])# AC_LIBTOOL_LANG_C_CONFIG + + +# AC_LIBTOOL_LANG_CXX_CONFIG +# -------------------------- +# Ensure that the configuration vars for the C compiler are +# suitably defined. Those variables are subsequently used by +# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. +AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)]) +AC_DEFUN([_LT_AC_LANG_CXX_CONFIG], +[AC_LANG_PUSH(C++) +AC_REQUIRE([AC_PROG_CXX]) +AC_REQUIRE([_LT_AC_PROG_CXXCPP]) + +_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_AC_TAGVAR(allow_undefined_flag, $1)= +_LT_AC_TAGVAR(always_export_symbols, $1)=no +_LT_AC_TAGVAR(archive_expsym_cmds, $1)= +_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_AC_TAGVAR(hardcode_direct, $1)=no +_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= +_LT_AC_TAGVAR(hardcode_libdir_separator, $1)= +_LT_AC_TAGVAR(hardcode_minus_L, $1)=no +_LT_AC_TAGVAR(hardcode_automatic, $1)=no +_LT_AC_TAGVAR(module_cmds, $1)= +_LT_AC_TAGVAR(module_expsym_cmds, $1)= +_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown +_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_AC_TAGVAR(no_undefined_flag, $1)= +_LT_AC_TAGVAR(whole_archive_flag_spec, $1)= +_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Dependencies to place before and after the object being linked: +_LT_AC_TAGVAR(predep_objects, $1)= +_LT_AC_TAGVAR(postdep_objects, $1)= +_LT_AC_TAGVAR(predeps, $1)= +_LT_AC_TAGVAR(postdeps, $1)= +_LT_AC_TAGVAR(compiler_lib_search_path, $1)= + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +_LT_AC_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_AC_SYS_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_LD=$LD +lt_save_GCC=$GCC +GCC=$GXX +lt_save_with_gnu_ld=$with_gnu_ld +lt_save_path_LD=$lt_cv_path_LD +if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx +else + unset lt_cv_prog_gnu_ld +fi +if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX +else + unset lt_cv_path_LD +fi +test -z "${LDCXX+set}" || LD=$LDCXX +CC=${CXX-"c++"} +compiler=$CC +_LT_AC_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) + +# We don't want -fno-exception wen compiling C++ code, so set the +# no_builtin_flag separately +if test "$GXX" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' +else + _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= +fi + +if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + AC_PROG_LD + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ + grep 'no-whole-archive' > /dev/null; then + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + +else + GXX=no + with_gnu_ld=no + wlarc= +fi + +# PORTME: fill in a description of your system's C++ link characteristics +AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +_LT_AC_TAGVAR(ld_shlibs, $1)=yes +case $host_os in + aix3*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_AC_TAGVAR(archive_cmds, $1)='' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + if test "$GXX" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + else + # We have old collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + # -bexpall does not export symbols beginning with underscore (_) + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + # Exported symbols can be pulled into shared objects from archives + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' ' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds its shared libraries. + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(always_export_symbols, $1)=no + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + darwin* | rhapsody*) + case $host_os in + rhapsody* | darwin1.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_automatic, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + if test "$GXX" = yes ; then + lt_int_apple_cc_single_mod=no + output_verbose_link_cmd='echo' + if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then + lt_int_apple_cc_single_mod=yes + fi + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + fi + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + fi + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + freebsd[[12]]*) + # C++ shared libraries reported to be fairly broken before switch to ELF + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + freebsd-elf*) + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + ;; + freebsd* | kfreebsd*-gnu | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + _LT_AC_TAGVAR(ld_shlibs, $1)=yes + ;; + gnu*) + ;; + hpux9*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[[-]]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + case $host_cpu in + hppa*64*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + ia64*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + ;; + *) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + esac + fi + case $host_cpu in + hppa*64*) + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + ia64*) + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + *) + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + case $host_cpu in + hppa*64*|ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case $host_cpu in + ia64*|hppa*64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' + fi + fi + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + ;; + esac + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + linux*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc*) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + pgCC*) + # Portland Group C++ compiler + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + ;; + cxx*) + # Compaq C++ + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + esac + ;; + lynxos*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + m88k*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + openbsd2*) + # C++ shared libraries are fairly broken + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + openbsd*) + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd='echo' + ;; + osf3*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + cxx*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + cxx*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~ + $rm $lib.exp' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + psos*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + sco*) + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_AC_TAGVAR(archive_cmds_need_lc,$1)=yes + _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The C++ compiler is used as linker so we must use $wl + # flag to pass the commands to the underlying system + # linker. We must also pass each convience library through + # to the system linker between allextract/defaultextract. + # The C++ compiler will combine linker options so we + # cannot just pass the convience library names through + # without $wl. + # Supported since Solaris 2.6 (maybe 2.5.1?) + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' + ;; + esac + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + output_verbose_link_cmd='echo' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' + if $CC --version | grep -v '^2\.7' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + fi + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' + fi + ;; + esac + ;; + sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*) + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + vxworks*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; +esac +AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) +test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + +_LT_AC_TAGVAR(GCC, $1)="$GXX" +_LT_AC_TAGVAR(LD, $1)="$LD" + +AC_LIBTOOL_POSTDEP_PREDEP($1) +AC_LIBTOOL_PROG_COMPILER_PIC($1) +AC_LIBTOOL_PROG_CC_C_O($1) +AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) +AC_LIBTOOL_PROG_LD_SHLIBS($1) +AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) +AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) +AC_LIBTOOL_SYS_LIB_STRIP +AC_LIBTOOL_DLOPEN_SELF($1) + +AC_LIBTOOL_CONFIG($1) + +AC_LANG_POP +CC=$lt_save_CC +LDCXX=$LD +LD=$lt_save_LD +GCC=$lt_save_GCC +with_gnu_ldcxx=$with_gnu_ld +with_gnu_ld=$lt_save_with_gnu_ld +lt_cv_path_LDCXX=$lt_cv_path_LD +lt_cv_path_LD=$lt_save_path_LD +lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld +lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +])# AC_LIBTOOL_LANG_CXX_CONFIG + +# AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME]) +# ------------------------ +# Figure out "hidden" library dependencies from verbose +# compiler output when linking a shared library. +# Parse the compiler output and extract the necessary +# objects, libraries and library flags. +AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP],[ +dnl we can't use the lt_simple_compile_test_code here, +dnl because it contains code intended for an executable, +dnl not a library. It's possible we should let each +dnl tag define a new lt_????_link_test_code variable, +dnl but it's only used here... +ifelse([$1],[],[cat > conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext <> "$cfgfile" +ifelse([$1], [], +[#! $SHELL + +# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 +# Free Software Foundation, Inc. +# +# This file is part of GNU Libtool: +# Originally by Gordon Matzigkeit , 1996 +# +# 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. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="$SED -e 1s/^X//" + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# The names of the tagged configurations supported by this script. +available_tags= + +# ### BEGIN LIBTOOL CONFIG], +[# ### BEGIN LIBTOOL TAG CONFIG: $tagname]) + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1) + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# A language-specific compiler. +CC=$lt_[]_LT_AC_TAGVAR(compiler, $1) + +# Is the compiler the GNU C compiler? +with_gcc=$_LT_AC_TAGVAR(GCC, $1) + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_[]_LT_AC_TAGVAR(LD, $1) + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1) + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1) + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1) + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1) + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1) +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1) + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) + +# Commands used to build and install a shared archive. +archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1) +archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1) +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1) +module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1) + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_[]_LT_AC_TAGVAR(predep_objects, $1) + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1) + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1) + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1) + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1) + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1) + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1) + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1) + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1) + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1) + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1) + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1) + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$_LT_AC_TAGVAR(hardcode_automatic, $1) + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1) + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$_LT_AC_TAGVAR(fix_srcfile_path, $1)" + +# Set to yes if exported symbols are required. +always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1) + +# The commands to list exported symbols. +export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1) + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1) + +# Symbols that must always be exported. +include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1) + +ifelse([$1],[], +[# ### END LIBTOOL CONFIG], +[# ### END LIBTOOL TAG CONFIG: $tagname]) + +__EOF__ + +ifelse([$1],[], [ + case $host_os in + aix3*) + cat <<\EOF >> "$cfgfile" + +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +EOF + ;; + esac + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || \ + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" +]) +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi +])# AC_LIBTOOL_CONFIG + + +# AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME]) +# ------------------------------------------- +AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], +[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl + +_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + +if test "$GCC" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' + + AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], + lt_cv_prog_compiler_rtti_exceptions, + [-fno-rtti -fno-exceptions], [], + [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) +fi +])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI + + +# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE +# --------------------------------- +AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], +[AC_REQUIRE([AC_CANONICAL_HOST]) +AC_REQUIRE([AC_PROG_NM]) +AC_REQUIRE([AC_OBJEXT]) +# Check for command to grab the raw symbol name followed by C symbol from nm. +AC_MSG_CHECKING([command to parse $NM output from $compiler object]) +AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], +[ +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[[BCDEGRST]]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' + +# Transform an extracted symbol line into a proper C declaration +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[[BCDT]]' + ;; +cygwin* | mingw* | pw32*) + symcode='[[ABCDGISTW]]' + ;; +hpux*) # Its linker distinguishes data from code symbols + if test "$host_cpu" = ia64; then + symcode='[[ABCDEGRST]]' + fi + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + ;; +linux*) + if test "$host_cpu" = ia64; then + symcode='[[ABCDGIRSTW]]' + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + fi + ;; +irix* | nonstopux*) + symcode='[[BCDEGRST]]' + ;; +osf*) + symcode='[[BCDEGQRST]]' + ;; +solaris* | sysv5*) + symcode='[[BDRT]]' + ;; +sysv4) + symcode='[[DFNSTU]]' + ;; +esac + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[[ABCDGIRSTW]]' ;; +esac + +# Try without a prefix undercore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext < $nlist) && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if grep ' nm_test_var$' "$nlist" >/dev/null; then + if grep ' nm_test_func$' "$nlist" >/dev/null; then + cat < conftest.$ac_ext +#ifdef __cplusplus +extern "C" { +#endif + +EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' + + cat <> conftest.$ac_ext +#if defined (__STDC__) && __STDC__ +# define lt_ptr_t void * +#else +# define lt_ptr_t char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + lt_ptr_t address; +} +lt_preloaded_symbols[[]] = +{ +EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext + cat <<\EOF >> conftest.$ac_ext + {0, (lt_ptr_t) 0} +}; + +#ifdef __cplusplus +} +#endif +EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_save_LIBS="$LIBS" + lt_save_CFLAGS="$CFLAGS" + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS="$lt_save_LIBS" + CFLAGS="$lt_save_CFLAGS" + else + echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD + fi + else + echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD + cat conftest.$ac_ext >&5 + fi + rm -f conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done +]) +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + AC_MSG_RESULT(failed) +else + AC_MSG_RESULT(ok) +fi +]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE + + +# AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME]) +# --------------------------------------- +AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC], +[_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)= +_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= +_LT_AC_TAGVAR(lt_prog_compiler_static, $1)= + +AC_MSG_CHECKING([for $compiler option to produce PIC]) + ifelse([$1],[CXX],[ + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | os2* | pw32*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + sysv4*MP*) + if test -d /usr/nec; then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + case $host_os in + aix4* | aix5*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + esac + ;; + dgux*) + case $cc_basename in + ec++*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | kfreebsd*-gnu | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" + if test "$host_cpu" != ia64; then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + fi + ;; + aCC*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux*) + case $cc_basename in + KCC*) + # KAI C++ Compiler + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + icpc* | ecpc*) + # Intel C++ + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgCC*) + # Portland Group C++ compiler. + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd*) + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + cxx*) + # Digital/Compaq C++ + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + sco*) + case $cc_basename in + CC*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + *) + ;; + esac + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + lcc*) + # Lucid + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + *) + ;; + esac + ;; + unixware*) + ;; + vxworks*) + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +], +[ + if test "$GCC" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + esac + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC (with -KPIC) is the default. + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + newsos6) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + linux*) + case $cc_basename in + icc* | ecc*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + ccc*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All Alpha code is PIC. + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + esac + ;; + + osf3* | osf4* | osf5*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All OSF/1 code is PIC. + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + sco3.2v5*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kpic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-dn' + ;; + + solaris*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; + *) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; + esac + ;; + + sunos4*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + unicos*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + + uts4*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *) + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +]) +AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)]) + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then + AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works], + _LT_AC_TAGVAR(lt_prog_compiler_pic_works, $1), + [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [], + [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in + "" | " "*) ;; + *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;; + esac], + [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) +fi +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])" + ;; +esac +]) + + +# AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME]) +# ------------------------------------ +# See if the linker supports building shared libraries. +AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS], +[AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +ifelse([$1],[CXX],[ + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + case $host_os in + aix4* | aix5*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + else + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" + ;; + cygwin* | mingw*) + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([[^ ]]*\) [[^ ]]*/\1 DATA/;/^I /d;/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' + ;; + *) + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac +],[ + runpath_var= + _LT_AC_TAGVAR(allow_undefined_flag, $1)= + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no + _LT_AC_TAGVAR(archive_cmds, $1)= + _LT_AC_TAGVAR(archive_expsym_cmds, $1)= + _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)= + _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)= + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + _LT_AC_TAGVAR(thread_safe_flag_spec, $1)= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_minus_L, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown + _LT_AC_TAGVAR(hardcode_automatic, $1)=no + _LT_AC_TAGVAR(module_cmds, $1)= + _LT_AC_TAGVAR(module_expsym_cmds, $1)= + _LT_AC_TAGVAR(always_export_symbols, $1)=no + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + _LT_AC_TAGVAR(include_expsyms, $1)= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + _LT_AC_TAGVAR(exclude_expsyms, $1)="_GLOBAL_OFFSET_TABLE_" + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + extract_expsyms_cmds= + # Just being paranoid about ensuring that cc_basename is set. + _LT_CC_BASENAME([$compiler]) + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + _LT_AC_TAGVAR(ld_shlibs, $1)=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + _LT_AC_TAGVAR(ld_shlibs, $1)=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(always_export_symbols, $1)=no + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + linux*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris* | sysv5*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + _LT_AC_TAGVAR(ld_shlibs, $1)=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + sunos4*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + + if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no; then + runpath_var= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + if test "$GCC" = yes && test -z "$link_static_flag"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + else + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_AC_TAGVAR(archive_cmds, $1)='' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + else + # We have old collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + # -bexpall does not export symbols beginning with underscore (_) + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + # Exported symbols can be pulled into shared objects from archives + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' ' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds its shared libraries. + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + # see comment about different semantics on the GNU ld section + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + + bsdi[[45]]*) + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true' + # FIXME: Should let the user specify the lib program. + _LT_AC_TAGVAR(old_archive_cmds, $1)='lib /OUT:$oldlib$oldobjs$old_deplibs' + _LT_AC_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`' + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + + darwin* | rhapsody*) + case $host_os in + rhapsody* | darwin1.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_automatic, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + fi + ;; + + dgux*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + freebsd1*) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | kfreebsd*-gnu | dragonfly*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + hpux9*) + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + + hpux10* | hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*|ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*|ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + ia64*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + ;; + *) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + newsos6) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + openbsd*) + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + else + case $host_os in + openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + + os2*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(archive_cmds, $1)='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + else + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + fi + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + sco3.2v5*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ;; + + solaris*) + _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' + if test "$GCC" = yes; then + wlarc='${wl}' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + wlarc='' + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine linker options so we + # cannot just pass the convience library names through + # without $wl, iff we do not link with $LD. + # Luckily, gcc supports the same syntax we need for Sun Studio. + # Supported since Solaris 2.6 (maybe 2.5.1?) + case $wlarc in + '') + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; + *) + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; + esac ;; + esac + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4) + case $host_vendor in + sni) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' + _LT_AC_TAGVAR(hardcode_direct, $1)=no + ;; + motorola) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4.3*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + _LT_AC_TAGVAR(ld_shlibs, $1)=yes + fi + ;; + + sysv4.2uw2*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + hardcode_runpath_var=yes + runpath_var=LD_RUN_PATH + ;; + + sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*) + _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z ${wl}text' + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + runpath_var='LD_RUN_PATH' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv5*) + _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + ;; + + uts4*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + fi +]) +AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) +test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +# +# Do we need to explicitly link libc? +# +case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in +x|xyes) + # Assume -lc should be added + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $_LT_AC_TAGVAR(archive_cmds, $1) in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + AC_MSG_CHECKING([whether -lc should be explicitly linked in]) + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if AC_TRY_EVAL(ac_compile) 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1) + _LT_AC_TAGVAR(allow_undefined_flag, $1)= + if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) + then + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + else + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + fi + _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)]) + ;; + esac + fi + ;; +esac +])# AC_LIBTOOL_PROG_LD_SHLIBS + + +# _LT_AC_FILE_LTDLL_C +# ------------------- +# Be careful that the start marker always follows a newline. +AC_DEFUN([_LT_AC_FILE_LTDLL_C], [ +# /* ltdll.c starts here */ +# #define WIN32_LEAN_AND_MEAN +# #include +# #undef WIN32_LEAN_AND_MEAN +# #include +# +# #ifndef __CYGWIN__ +# # ifdef __CYGWIN32__ +# # define __CYGWIN__ __CYGWIN32__ +# # endif +# #endif +# +# #ifdef __cplusplus +# extern "C" { +# #endif +# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); +# #ifdef __cplusplus +# } +# #endif +# +# #ifdef __CYGWIN__ +# #include +# DECLARE_CYGWIN_DLL( DllMain ); +# #endif +# HINSTANCE __hDllInstance_base; +# +# BOOL APIENTRY +# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) +# { +# __hDllInstance_base = hInst; +# return TRUE; +# } +# /* ltdll.c ends here */ +])# _LT_AC_FILE_LTDLL_C + + +# _LT_AC_TAGVAR(VARNAME, [TAGNAME]) +# --------------------------------- +AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])]) + + +# old names +AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL]) +AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) +AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) +AC_DEFUN([AM_PROG_LD], [AC_PROG_LD]) +AC_DEFUN([AM_PROG_NM], [AC_PROG_NM]) + +# This is just to silence aclocal about the macro not being used +ifelse([AC_DISABLE_FAST_INSTALL]) + +AC_DEFUN([LT_AC_PROG_GCJ], +[AC_CHECK_TOOL(GCJ, gcj, no) + test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" + AC_SUBST(GCJFLAGS) +]) + +AC_DEFUN([LT_AC_PROG_RC], +[AC_CHECK_TOOL(RC, windres, no) +]) + +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_SED. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +# LT_AC_PROG_SED +# -------------- +# Check for a fully-functional sed program, that truncates +# as few characters as possible. Prefer GNU sed if found. +AC_DEFUN([LT_AC_PROG_SED], +[AC_MSG_CHECKING([for a sed that does not truncate output]) +AC_CACHE_VAL(lt_cv_path_SED, +[# Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f $lt_ac_sed && continue + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test $lt_ac_count -gt 10 && break + lt_ac_count=`expr $lt_ac_count + 1` + if test $lt_ac_count -gt $lt_ac_max; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done +]) +SED=$lt_cv_path_SED +AC_MSG_RESULT([$SED]) +]) + +# Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"]) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION so it can be traced. +# This function is AC_REQUIREd by AC_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], + [AM_AUTOMAKE_VERSION([1.9.6])]) + +# AM_AUX_DIR_EXPAND -*- Autoconf -*- + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to +# `$srcdir', `$srcdir/..', or `$srcdir/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is `.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +AC_DEFUN([AM_AUX_DIR_EXPAND], +[dnl Rely on autoconf to set up CDPATH properly. +AC_PREREQ([2.50])dnl +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 7 + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[AC_PREREQ(2.52)dnl + ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE]) +AC_SUBST([$1_FALSE]) +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) + + +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 8 + +# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "GCJ", or "OBJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +ifelse([$1], CC, [depcc="$CC" am_compiler_list=], + [$1], CXX, [depcc="$CXX" am_compiler_list=], + [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE(dependency-tracking, +[ --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH]) +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +#serial 3 + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # So let's grep whole file. + if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`AS_DIRNAME(["$file"])` + AS_MKDIR_P([$dirpart/$fdir]) + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking +# is enabled. FIXME. This creates each `.P' file that we will +# need in order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) +]) + +# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 8 + +# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. +AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) + +# Do all the work for Automake. -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 12 + +# This macro actually does too much. Some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_PREREQ([2.58])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +# test to see if srcdir already configured +if test "`cd $srcdir && pwd`" != "`pwd`" && + test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) + AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) +AM_MISSING_PROG(AUTOCONF, autoconf) +AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) +AM_MISSING_PROG(AUTOHEADER, autoheader) +AM_MISSING_PROG(MAKEINFO, makeinfo) +AM_PROG_INSTALL_SH +AM_PROG_INSTALL_STRIP +AC_REQUIRE([AM_PROG_MKDIR_P])dnl +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES(CC)], + [define([AC_PROG_CC], + defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES(CXX)], + [define([AC_PROG_CXX], + defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl +]) +]) + + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $1 | $1:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +install_sh=${install_sh-"$am_aux_dir/install-sh"} +AC_SUBST(install_sh)]) + +# Copyright (C) 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 2 + +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 3 + +# AM_MAKE_INCLUDE() +# ----------------- +# Check to see how make treats includes. +AC_DEFUN([AM_MAKE_INCLUDE], +[am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo done +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +AC_MSG_CHECKING([for style of include used by $am_make]) +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote="\"" + _am_result=BSD + fi +fi +AC_SUBST([am__include]) +AC_SUBST([am__quote]) +AC_MSG_RESULT([$_am_result]) +rm -f confinc confmf +]) + +# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 4 + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it supports --run. +# If it does, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + AC_MSG_WARN([`missing' script is too old or missing]) +fi +]) + +# Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_MKDIR_P +# --------------- +# Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise. +# +# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories +# created by `make install' are always world readable, even if the +# installer happens to have an overly restrictive umask (e.g. 077). +# This was a mistake. There are at least two reasons why we must not +# use `-m 0755': +# - it causes special bits like SGID to be ignored, +# - it may be too restrictive (some setups expect 775 directories). +# +# Do not use -m 0755 and let people choose whatever they expect by +# setting umask. +# +# We cannot accept any implementation of `mkdir' that recognizes `-p'. +# Some implementations (such as Solaris 8's) are not thread-safe: if a +# parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c' +# concurrently, both version can detect that a/ is missing, but only +# one can create it and the other will error out. Consequently we +# restrict ourselves to GNU make (using the --version option ensures +# this.) +AC_DEFUN([AM_PROG_MKDIR_P], +[if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then + # We used to keeping the `.' as first argument, in order to + # allow $(mkdir_p) to be used without argument. As in + # $(mkdir_p) $(somedir) + # where $(somedir) is conditionally defined. However this is wrong + # for two reasons: + # 1. if the package is installed by a user who cannot write `.' + # make install will fail, + # 2. the above comment should most certainly read + # $(mkdir_p) $(DESTDIR)$(somedir) + # so it does not work when $(somedir) is undefined and + # $(DESTDIR) is not. + # To support the latter case, we have to write + # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), + # so the `.' trick is pointless. + mkdir_p='mkdir -p --' +else + # On NextStep and OpenStep, the `mkdir' command does not + # recognize any option. It will interpret all options as + # directories to create, and then abort because `.' already + # exists. + for d in ./-p ./--version; + do + test -d $d && rmdir $d + done + # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. + if test -f "$ac_aux_dir/mkinstalldirs"; then + mkdir_p='$(mkinstalldirs)' + else + mkdir_p='$(install_sh) -d' + fi +fi +AC_SUBST([mkdir_p])]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 3 + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _AM_SET_OPTION(NAME) +# ------------------------------ +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) + +# _AM_SET_OPTIONS(OPTIONS) +# ---------------------------------- +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 4 + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Just in case +sleep 1 +echo timestamp > conftest.file +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftest.file` + fi + rm -f conftest.file + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken +alias in your environment]) + fi + + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT(yes)]) + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_STRIP +# --------------------- +# One issue with vendor `install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in `make install-strip', and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be `maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# Check how to create a tarball. -*- Autoconf -*- + +# Copyright (C) 2004, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 2 + +# _AM_PROG_TAR(FORMAT) +# -------------------- +# Check how to create a tarball in format FORMAT. +# FORMAT should be one of `v7', `ustar', or `pax'. +# +# Substitute a variable $(am__tar) that is a command +# writing to stdout a FORMAT-tarball containing the directory +# $tardir. +# tardir=directory && $(am__tar) > result.tar +# +# Substitute a variable $(am__untar) that extract such +# a tarball read from stdin. +# $(am__untar) < result.tar +AC_DEFUN([_AM_PROG_TAR], +[# Always define AMTAR for backward compatibility. +AM_MISSING_PROG([AMTAR], [tar]) +m4_if([$1], [v7], + [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], + [m4_case([$1], [ustar],, [pax],, + [m4_fatal([Unknown tar format])]) +AC_MSG_CHECKING([how to create a $1 tar archive]) +# Loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' +_am_tools=${am_cv_prog_tar_$1-$_am_tools} +# Do not fold the above two line into one, because Tru64 sh and +# Solaris sh will not grok spaces in the rhs of `-'. +for _am_tool in $_am_tools +do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; + do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi +done +rm -rf conftest.dir + +AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) +AC_MSG_RESULT([$am_cv_prog_tar_$1])]) +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) # _AM_PROG_TAR + diff --git a/Cpp/TP4_ComptesBancaires/config.guess b/Cpp/TP4_ComptesBancaires/config.guess new file mode 100755 index 0000000..d023e56 --- /dev/null +++ b/Cpp/TP4_ComptesBancaires/config.guess @@ -0,0 +1,1483 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. + +timestamp='2005-11-11' + +# This file 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. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + + +# Originally written by Per Bothner . +# Please send patches to . Submit a context +# diff and a properly formatted ChangeLog entry. +# +# This script attempts to guess a canonical system name similar to +# config.sub. If it succeeds, it prints the system name on stdout, and +# exits with 0. Otherwise, it exits with 1. +# +# The plan is that this can be called by configure scripts if you +# don't specify an explicit build system type. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ; set_cc_for_build= ;' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +if [ "${UNAME_SYSTEM}" = "Linux" ] ; then + eval $set_cc_for_build + cat << EOF > $dummy.c + #include + #ifdef __UCLIBC__ + # ifdef __UCLIBC_CONFIG_VERSION__ + LIBC=uclibc __UCLIBC_CONFIG_VERSION__ + # else + LIBC=uclibc + # endif + #else + LIBC=gnu + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep LIBC= | sed -e 's: ::g'` +fi + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. + case "${UNAME_MACHINE_ARCH}" in + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep __ELF__ >/dev/null + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}" + exit ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} + exit ;; + *:ekkoBSD:*:*) + echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + exit ;; + macppc:MirBSD:*:*) + echo powerppc-unknown-mirbsd${UNAME_RELEASE} + exit ;; + *:MirBSD:*:*) + echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + exit ;; + alpha:OSF1:*:*) + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE="alpha" ;; + "EV4.5 (21064)") + UNAME_MACHINE="alpha" ;; + "LCA4 (21066/21068)") + UNAME_MACHINE="alpha" ;; + "EV5 (21164)") + UNAME_MACHINE="alphaev5" ;; + "EV5.6 (21164A)") + UNAME_MACHINE="alphaev56" ;; + "EV5.6 (21164PC)") + UNAME_MACHINE="alphapca56" ;; + "EV5.7 (21164PC)") + UNAME_MACHINE="alphapca57" ;; + "EV6 (21264)") + UNAME_MACHINE="alphaev6" ;; + "EV6.7 (21264A)") + UNAME_MACHINE="alphaev67" ;; + "EV6.8CB (21264C)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8AL (21264B)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8CX (21264D)") + UNAME_MACHINE="alphaev68" ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE="alphaev69" ;; + "EV7 (21364)") + UNAME_MACHINE="alphaev7" ;; + "EV7.9 (21364A)") + UNAME_MACHINE="alphaev79" ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + exit ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit ;; + *:z/VM:*:*) + echo s390-ibm-zvmoe + exit ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit ;; + arm:riscos:*:*|arm:RISCOS:*:*) + echo arm-unknown-riscos + exit ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7; exit ;; + esac ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + i86pc:SunOS:5.*:*) + echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit ;; + m68k:machten:*:*) + echo m68k-apple-machten${UNAME_RELEASE} + exit ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && + dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`$dummy $dummyarg` && + { echo "$SYSTEM_NAME"; exit; } + echo mips-mips-riscos${UNAME_RELEASE} + exit ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] + then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} + fi + exit ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` + then + echo "$SYSTEM_NAME" + else + echo rs6000-ibm-aix3.2.5 + fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit ;; + *:AIX:*:[45]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ ${HP_ARCH} = "hppa2.0w" ] + then + eval $set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | + grep __LP64__ >/dev/null + then + HP_ARCH="hppa2.0w" + else + HP_ARCH="hppa64" + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + echo unknown-hitachi-hiuxwe2 + exit ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + *:UNICOS/mp:*:*) + echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:FreeBSD:*:*) + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit ;; + i*:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit ;; + i*:windows32*:*) + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 + exit ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit ;; + x86:Interix*:[345]*) + echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//' + exit ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i586-pc-interix + exit ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + echo x86_64-unknown-cygwin + exit ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + *:GNU:*:*) + # the GNU system + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu + exit ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit ;; + arm*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + cris:Linux:*:*) + echo cris-axis-linux-${LIBC} + exit ;; + crisv32:Linux:*:*) + echo crisv32-axis-linux-${LIBC} + exit ;; + frv:Linux:*:*) + echo frv-unknown-linux-${LIBC} + exit ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + m32r*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + mips:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips + #undef mipsel + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mipsel + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } + ;; + mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips64 + #undef mips64el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mips64el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips64 + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } + ;; + or32:Linux:*:*) + echo or32-unknown-linux-${LIBC} + exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-${LIBC} + exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-${LIBC} + exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null + if test "$?" = 0 ; then LIBC="gnulibc1" ; fi + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; + PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; + *) echo hppa-unknown-linux-${LIBC} ;; + esac + exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-${LIBC} + exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux + exit ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + x86_64:Linux:*:*) + echo x86_64-unknown-linux-${LIBC} + exit ;; + i*86:Linux:*:*) + # The BFD linker knows what the default object file format is, so + # first see if it will tell us. cd to the root directory to prevent + # problems with other programs or directories called `ld' in the path. + # Set LC_ALL=C to ensure ld outputs messages in English. + ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ + | sed -ne '/supported targets:/!d + s/[ ][ ]*/ /g + s/.*supported targets: *// + s/ .*// + p'` + case "$ld_supported_targets" in + elf32-i386) + TENTATIVE="${UNAME_MACHINE}-pc-linux-${LIBC}" + ;; + a.out-i386-linux) + echo "${UNAME_MACHINE}-pc-linux-${LIBC}aout" + exit ;; + coff-i386) + echo "${UNAME_MACHINE}-pc-linux-${LIBC}coff" + exit ;; + "") + # Either a pre-BFD a.out linker (linux-gnuoldld) or + # one that does not give us useful --help. + echo "${UNAME_MACHINE}-pc-linux-${LIBC}oldld" + exit ;; + esac + if [ "$LIBC" != "gnu" ] ; then echo "$TENTATIVE" && exit 0 ; fi + # Determine whether the default compiler is a.out or elf + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + #ifdef __ELF__ + # ifdef __GLIBC__ + # if __GLIBC__ >= 2 + LIBC=gnu + # else + LIBC=gnulibc1 + # endif + # else + LIBC=gnulibc1 + # endif + #else + #ifdef __INTEL_COMPILER + LIBC=gnu + #else + LIBC=gnuaout + #endif + #endif + #ifdef __dietlibc__ + LIBC=dietlibc + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` + test x"${LIBC}" != x && { + echo "${UNAME_MACHINE}-pc-linux-${LIBC}" + exit + } + test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; } + ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit ;; + i*86:syllable:*:*) + echo ${UNAME_MACHINE}-pc-syllable + exit ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i386. + echo i386-pc-msdosdjgpp + exit ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + echo ${UNAME_MACHINE}-stratus-vos + exit ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + case $UNAME_PROCESSOR in + unknown) UNAME_PROCESSOR=powerpc ;; + esac + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit ;; + NSE-?:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk${UNAME_RELEASE} + exit ;; + NSR-?:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = "386"; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit ;; + *:DragonFly:*:*) + echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case "${UNAME_MACHINE}" in + A*) echo alpha-dec-vms ; exit ;; + I*) echo ia64-dec-vms ; exit ;; + V*) echo vax-dec-vms ; exit ;; + esac ;; + *:XENIX:*:SysV) + echo i386-pc-xenix + exit ;; + i*86:skyos:*:*) + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' + exit ;; +esac + +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + +eval $set_cc_for_build +cat >$dummy.c < +# include +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix\n"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); + +#endif + +#if defined (vax) +# if !defined (ultrix) +# include +# if defined (BSD) +# if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +# else +# if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# endif +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# else + printf ("vax-dec-ultrix\n"); exit (0); +# endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + c34*) + echo c34-convex-bsd + exit ;; + c38*) + echo c38-convex-bsd + exit ;; + c4*) + echo c4-convex-bsd + exit ;; + esac +fi + +cat >&2 < in order to provide the needed +information to handle your system. + +config.guess timestamp = $timestamp + +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/Cpp/TP4_ComptesBancaires/config.h.in b/Cpp/TP4_ComptesBancaires/config.h.in new file mode 100755 index 0000000..5a1898a --- /dev/null +++ b/Cpp/TP4_ComptesBancaires/config.h.in @@ -0,0 +1,55 @@ +/* config.h.in. Generated from configure.in by autoheader. */ + +/* Define to 1 if you have the header file. */ +#undef HAVE_DLFCN_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Name of package */ +#undef PACKAGE + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Version number of package */ +#undef VERSION diff --git a/Cpp/TP4_ComptesBancaires/config.sub b/Cpp/TP4_ComptesBancaires/config.sub new file mode 100755 index 0000000..e3a11c8 --- /dev/null +++ b/Cpp/TP4_ComptesBancaires/config.sub @@ -0,0 +1,1605 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. + +timestamp='2005-11-13' + +# This file is (in principle) common to ALL GNU software. +# The presence of a machine in this file suggests that SOME GNU software +# can handle that machine. It does not imply ALL GNU software can. +# +# This file 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. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + + +# Please send patches to . Submit a context +# diff and a properly formatted ChangeLog entry. +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS + $0 [OPTION] ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \ + kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis | -knuth | -cray) + os= + basic_machine=$1 + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco6) + os=-sco5v6 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ + | bfin \ + | c4x | clipper \ + | d10v | d30v | dlx | dsp16xx | dvp \ + | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | i370 | i860 | i960 | ia64 \ + | ip2k | iq2000 \ + | m32r | m32rle | m68000 | m68k | m88k | maxq | mcore \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64vr | mips64vrel \ + | mips64orion | mips64orionel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | ms1 \ + | msp430 \ + | ns16k | ns32k \ + | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | pyramid \ + | sh | sh[1234] | sh[24]a | sh[24]a*eb | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b \ + | strongarm \ + | tahoe | thumb | tic4x | tic80 | tron \ + | v850 | v850e \ + | we32k \ + | x86 | xscale | xscalee[bl] | xstormy16 | xtensa \ + | z8k) + basic_machine=$basic_machine-unknown + ;; + m32c) + basic_machine=$basic_machine-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12) + # Motorola 68HC11/12. + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* \ + | bfin-* | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ + | clipper-* | craynv-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | elxsi-* \ + | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* | iq2000-* \ + | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | maxq-* | mcore-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mips64vr5900-* | mips64vr5900el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | ms1-* \ + | msp430-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | pyramid-* \ + | romp-* | rs6000-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc86x-* | sparclet-* \ + | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ + | tahoe-* | thumb-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tron-* \ + | v850-* | v850e-* | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \ + | xstormy16-* | xtensa-* \ + | ymp-* \ + | z8k-*) + ;; + m32c-*) + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + abacus) + basic_machine=abacus-unknown + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amd64) + basic_machine=x86_64-pc + ;; + amd64-*) + basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + craynv) + basic_machine=craynv-cray + os=-unicosmp + ;; + cr16c) + basic_machine=cr16c-unknown + os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; + crisv32 | crisv32-* | etraxfs*) + basic_machine=crisv32-axis + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; +# I'm not sure what "Sysv32" means. Should this be sysv3.2? + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + mingw32) + basic_machine=i386-pc + os=-mingw32 + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mipsEE* | ee | ps2) + basic_machine=mips64r5900el-scei + case $os in + -linux*) + ;; + *) + os=-elf + ;; + esac + ;; + iop) + basic_machine=mipsel-scei + os=-irx + ;; + dvp) + basic_machine=dvp-scei + os=-elf + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + openrisc | openrisc-*) + basic_machine=or32-unknown + ;; + os400) + basic_machine=powerpc-ibm + os=-os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc) basic_machine=powerpc-unknown + ;; + ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little | ppc64-le | powerpc64-little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tic54x | c54x*) + basic_machine=tic54x-unknown + os=-coff + ;; + tic55x | c55x*) + basic_machine=tic55x-unknown + os=-coff + ;; + tic6x | c6x*) + basic_machine=tic6x-unknown + os=-coff + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + tpf) + basic_machine=s390x-ibm + os=-tpf + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + xbox) + basic_machine=i686-pc + os=-mingw32 + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + mmix) + basic_machine=mmix-knuth + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sparc | sparcv8 | sparcv9 | sparcv9b) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \ + | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ + | -skyos* | -haiku* | -irx*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux-dietlibc) + os=-linux-dietlibc + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -os400*) + os=-os400 + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -syllable*) + os=-syllable + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -tpf*) + os=-tpf + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -aros*) + os=-aros + ;; + -kaos*) + os=-kaos + ;; + -zvmoe) + os=-zvmoe + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + c4x-* | tic4x-*) + os=-coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + # This also exists in the configure program, but was not the + # default. + # os=-sunos4 + ;; + m68*-cisco) + os=-aout + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-haiku) + os=-haiku + ;; + *-ibm) + os=-aix + ;; + *-knuth) + os=-mmixware + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -os400*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -tpf*) + vendor=ibm + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/Cpp/TP4_ComptesBancaires/configure b/Cpp/TP4_ComptesBancaires/configure new file mode 100755 index 0000000..e9bc9af --- /dev/null +++ b/Cpp/TP4_ComptesBancaires/configure @@ -0,0 +1,21369 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.59. +# +# Copyright (C) 2003 Free Software Foundation, Inc. +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi +DUALCASE=1; export DUALCASE # for MKS sh + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + + + +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} + +case X$ECHO in +X*--fallback-echo) + # Remove one level of quotation (which was required for Make). + ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','` + ;; +esac + +echo=${ECHO-echo} +if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then + # Yippee, $echo works! + : +else + # Restart under the correct shell. + exec $SHELL "$0" --no-reexec ${1+"$@"} +fi + +if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift + cat </dev/null 2>&1 && unset CDPATH + +if test -z "$ECHO"; then +if test "X${echo_test_string+set}" != Xset; then +# find a string as large as possible, as long as the shell can cope with it + for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do + # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... + if (echo_test_string=`eval $cmd`) 2>/dev/null && + echo_test_string=`eval $cmd` && + (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null + then + break + fi + done +fi + +if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + : +else + # The Solaris, AIX, and Digital Unix default echo programs unquote + # backslashes. This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # + # So, first we look for a working echo in the user's PATH. + + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for dir in $PATH /usr/ucb; do + IFS="$lt_save_ifs" + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$dir/echo" + break + fi + done + IFS="$lt_save_ifs" + + if test "X$echo" = Xecho; then + # We didn't find a better echo, so look for alternatives. + if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # This shell has a builtin print -r that does the trick. + echo='print -r' + elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && + test "X$CONFIG_SHELL" != X/bin/ksh; then + # If we have ksh, try running configure again with it. + ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + export ORIGINAL_CONFIG_SHELL + CONFIG_SHELL=/bin/ksh + export CONFIG_SHELL + exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} + else + # Try using printf. + echo='printf %s\n' + if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # Cool, printf works + : + elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL + export CONFIG_SHELL + SHELL="$CONFIG_SHELL" + export SHELL + echo="$CONFIG_SHELL $0 --fallback-echo" + elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$CONFIG_SHELL $0 --fallback-echo" + else + # maybe with a smaller string... + prev=: + + for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do + if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null + then + break + fi + prev="$cmd" + done + + if test "$prev" != 'sed 50q "$0"'; then + echo_test_string=`eval $prev` + export echo_test_string + exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} + else + # Oops. We lost completely, so just stick with echo. + echo=echo + fi + fi + fi + fi +fi +fi + +# Copy echo and quote the copy suitably for passing to libtool from +# the Makefile, instead of quoting the original, which is used later. +ECHO=$echo +if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then + ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" +fi + + + + +tagnames=${tagnames+${tagnames},}CXX + +tagnames=${tagnames+${tagnames},}F77 + +# Name of the host. +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +exec 6>&1 + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_config_libobj_dir=. +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Maximum number of lines to put in a shell here document. +# This variable seems obsolete. It should probably be removed, and +# only ac_max_sed_lines should be used. +: ${ac_max_here_lines=38} + +# Identity of this package. +PACKAGE_NAME= +PACKAGE_TARNAME= +PACKAGE_VERSION= +PACKAGE_STRING= +PACKAGE_BUGREPORT= + +ac_unique_file="configure.in" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#if HAVE_SYS_TYPES_H +# include +#endif +#if HAVE_SYS_STAT_H +# include +#endif +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_STRING_H +# if !STDC_HEADERS && HAVE_MEMORY_H +# include +# endif +# include +#endif +#if HAVE_STRINGS_H +# include +#endif +#if HAVE_INTTYPES_H +# include +#else +# if HAVE_STDINT_H +# include +# endif +#endif +#if HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar CXX CXXFLAGS LDFLAGS CPPFLAGS ac_ct_CXX EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE build build_cpu build_vendor build_os host host_cpu host_vendor host_os CC CFLAGS ac_ct_CC CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE EGREP LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB CPP CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL LIBOBJS LTLIBOBJS' +ac_subst_files='' + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datadir='${prefix}/share' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +libdir='${exec_prefix}/lib' +includedir='${prefix}/include' +oldincludedir='/usr/include' +infodir='${prefix}/info' +mandir='${prefix}/man' + +ac_prev= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval "$ac_prev=\$ac_option" + ac_prev= + continue + fi + + ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_option in + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) + datadir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + eval "enable_$ac_feature=no" ;; + + -enable-* | --enable-*) + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "enable_$ac_feature='$ac_optarg'" ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package| sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "with_$ac_package='$ac_optarg'" ;; + + -without-* | --without-*) + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/-/_/g'` + eval "with_$ac_package=no" ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) { echo "$as_me: error: unrecognized option: $ac_option +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` + eval "$ac_envvar='$ac_optarg'" + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + { echo "$as_me: error: missing argument to $ac_option" >&2 + { (exit 1); exit 1; }; } +fi + +# Be sure to have absolute paths. +for ac_var in exec_prefix prefix +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* | NONE | '' ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# Be sure to have absolute paths. +for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ + localstatedir libdir includedir oldincludedir infodir mandir +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used." >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then its parent. + ac_confdir=`(dirname "$0") 2>/dev/null || +$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$0" : 'X\(//\)[^/]' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$0" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + if test "$ac_srcdir_defaulted" = yes; then + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 + { (exit 1); exit 1; }; } + else + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { (exit 1); exit 1; }; } + fi +fi +(cd $srcdir && test -r "./$ac_unique_file") 2>/dev/null || + { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 + { (exit 1); exit 1; }; } +srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +ac_env_build_alias_set=${build_alias+set} +ac_env_build_alias_value=$build_alias +ac_cv_env_build_alias_set=${build_alias+set} +ac_cv_env_build_alias_value=$build_alias +ac_env_host_alias_set=${host_alias+set} +ac_env_host_alias_value=$host_alias +ac_cv_env_host_alias_set=${host_alias+set} +ac_cv_env_host_alias_value=$host_alias +ac_env_target_alias_set=${target_alias+set} +ac_env_target_alias_value=$target_alias +ac_cv_env_target_alias_set=${target_alias+set} +ac_cv_env_target_alias_value=$target_alias +ac_env_CXX_set=${CXX+set} +ac_env_CXX_value=$CXX +ac_cv_env_CXX_set=${CXX+set} +ac_cv_env_CXX_value=$CXX +ac_env_CXXFLAGS_set=${CXXFLAGS+set} +ac_env_CXXFLAGS_value=$CXXFLAGS +ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set} +ac_cv_env_CXXFLAGS_value=$CXXFLAGS +ac_env_LDFLAGS_set=${LDFLAGS+set} +ac_env_LDFLAGS_value=$LDFLAGS +ac_cv_env_LDFLAGS_set=${LDFLAGS+set} +ac_cv_env_LDFLAGS_value=$LDFLAGS +ac_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_env_CPPFLAGS_value=$CPPFLAGS +ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_cv_env_CPPFLAGS_value=$CPPFLAGS +ac_env_CC_set=${CC+set} +ac_env_CC_value=$CC +ac_cv_env_CC_set=${CC+set} +ac_cv_env_CC_value=$CC +ac_env_CFLAGS_set=${CFLAGS+set} +ac_env_CFLAGS_value=$CFLAGS +ac_cv_env_CFLAGS_set=${CFLAGS+set} +ac_cv_env_CFLAGS_value=$CFLAGS +ac_env_CPP_set=${CPP+set} +ac_env_CPP_value=$CPP +ac_cv_env_CPP_set=${CPP+set} +ac_cv_env_CPP_value=$CPP +ac_env_CXXCPP_set=${CXXCPP+set} +ac_env_CXXCPP_value=$CXXCPP +ac_cv_env_CXXCPP_set=${CXXCPP+set} +ac_cv_env_CXXCPP_value=$CXXCPP +ac_env_F77_set=${F77+set} +ac_env_F77_value=$F77 +ac_cv_env_F77_set=${F77+set} +ac_cv_env_F77_value=$F77 +ac_env_FFLAGS_set=${FFLAGS+set} +ac_env_FFLAGS_value=$FFLAGS +ac_cv_env_FFLAGS_set=${FFLAGS+set} +ac_cv_env_FFLAGS_value=$FFLAGS + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures this package to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +_ACEOF + + cat <<_ACEOF +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --datadir=DIR read-only architecture-independent data [PREFIX/share] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --infodir=DIR info documentation [PREFIX/info] + --mandir=DIR man documentation [PREFIX/man] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + + cat <<\_ACEOF + +Optional Features: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors + --enable-shared[=PKGS] + build shared libraries [default=yes] + --enable-static[=PKGS] + build static libraries [default=yes] + --enable-fast-install[=PKGS] + optimize for fast installation [default=yes] + --disable-libtool-lock avoid locking (might break parallel builds) + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-gnu-ld assume the C compiler uses GNU ld [default=no] + --with-pic try to use only PIC/non-PIC objects [default=use + both] + --with-tags[=TAGS] + include additional configurations [automatic] + +Some influential environment variables: + CXX C++ compiler command + CXXFLAGS C++ compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have + headers in a nonstandard directory + CC C compiler command + CFLAGS C compiler flags + CPP C preprocessor + CXXCPP C++ preprocessor + F77 Fortran 77 compiler command + FFLAGS Fortran 77 compiler flags + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +_ACEOF +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + ac_popdir=`pwd` + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d $ac_dir || continue + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + cd $ac_dir + # Check for guested configure; otherwise get Cygnus style configure. + if test -f $ac_srcdir/configure.gnu; then + echo + $SHELL $ac_srcdir/configure.gnu --help=recursive + elif test -f $ac_srcdir/configure; then + echo + $SHELL $ac_srcdir/configure --help=recursive + elif test -f $ac_srcdir/configure.ac || + test -f $ac_srcdir/configure.in; then + echo + $ac_configure --help + else + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi + cd $ac_popdir + done +fi + +test -n "$ac_init_help" && exit 0 +if $ac_init_version; then + cat <<\_ACEOF + +Copyright (C) 2003 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit 0 +fi +exec 5>config.log +cat >&5 <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by $as_me, which was +generated by GNU Autoconf 2.59. Invocation command line was + + $ $0 $@ + +_ACEOF +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +hostinfo = `(hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + echo "PATH: $as_dir" +done + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_sep= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; + 2) + ac_configure_args1="$ac_configure_args1 '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" + # Get rid of the leading space. + ac_sep=" " + ;; + esac + done +done +$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } +$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Be sure not to use single quotes in there, as some shells, +# such as our DU 5.0 friend, will then `close' the trap. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + cat <<\_ASBOX +## ---------------- ## +## Cache variables. ## +## ---------------- ## +_ASBOX + echo + # The following way of writing the cache mishandles newlines in values, +{ + (set) 2>&1 | + case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in + *ac_space=\ *) + sed -n \ + "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" + ;; + *) + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} + echo + + cat <<\_ASBOX +## ----------------- ## +## Output variables. ## +## ----------------- ## +_ASBOX + echo + for ac_var in $ac_subst_vars + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +## ------------- ## +## Output files. ## +## ------------- ## +_ASBOX + echo + for ac_var in $ac_subst_files + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + fi + + if test -s confdefs.h; then + cat <<\_ASBOX +## ----------- ## +## confdefs.h. ## +## ----------- ## +_ASBOX + echo + sed "/^$/d" confdefs.h | sort + echo + fi + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" + echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core && + rm -rf conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status + ' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo >confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer explicitly selected file to automatically selected ones. +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +fi +for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special + # files actually), so we avoid doing that. + if test -f "$cache_file"; then + { echo "$as_me:$LINENO: loading cache $cache_file" >&5 +echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . $cache_file;; + *) . ./$cache_file;; + esac + fi +else + { echo "$as_me:$LINENO: creating cache $cache_file" >&5 +echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in `(set) 2>&1 | + sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val="\$ac_cv_env_${ac_var}_value" + eval ac_new_val="\$ac_env_${ac_var}_value" + case $ac_old_set,$ac_new_set in + set,) + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 +echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 +echo "$as_me: former value: $ac_old_val" >&2;} + { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 +echo "$as_me: current value: $ac_new_val" >&2;} + ac_cache_corrupted=: + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + + + + + + + + + + + + + + + + + ac_config_headers="$ac_config_headers config.h" + +am__api_version="1.9" +ac_aux_dir= +for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do + if test -f $ac_dir/install-sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f $ac_dir/install.sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f $ac_dir/shtool; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 +echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} + { (exit 1); exit 1; }; } +fi +ac_config_guess="$SHELL $ac_aux_dir/config.guess" +ac_config_sub="$SHELL $ac_aux_dir/config.sub" +ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in + ./ | .// | /cC/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + done + done + ;; +esac +done + + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL=$ac_install_sh + fi +fi +echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6 + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +echo "$as_me:$LINENO: checking whether build environment is sane" >&5 +echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6 +# Just in case +sleep 1 +echo timestamp > conftest.file +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftest.file` + fi + rm -f conftest.file + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" >&5 +echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" >&2;} + { (exit 1); exit 1; }; } + fi + + test "$2" = conftest.file + ) +then + # Ok. + : +else + { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! +Check your system clock" >&5 +echo "$as_me: error: newly created file is older than distributed files! +Check your system clock" >&2;} + { (exit 1); exit 1; }; } +fi +echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +test "$program_prefix" != NONE && + program_transform_name="s,^,$program_prefix,;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s,\$,$program_suffix,;$program_transform_name" +# Double any \ or $. echo might interpret backslashes. +# By default was `s,x,x', remove it if useless. +cat <<\_ACEOF >conftest.sed +s/[\\$]/&&/g;s/;s,x,x,$// +_ACEOF +program_transform_name=`echo $program_transform_name | sed -f conftest.sed` +rm conftest.sed + +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` + +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 +echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} +fi + +if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then + # We used to keeping the `.' as first argument, in order to + # allow $(mkdir_p) to be used without argument. As in + # $(mkdir_p) $(somedir) + # where $(somedir) is conditionally defined. However this is wrong + # for two reasons: + # 1. if the package is installed by a user who cannot write `.' + # make install will fail, + # 2. the above comment should most certainly read + # $(mkdir_p) $(DESTDIR)$(somedir) + # so it does not work when $(somedir) is undefined and + # $(DESTDIR) is not. + # To support the latter case, we have to write + # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), + # so the `.' trick is pointless. + mkdir_p='mkdir -p --' +else + # On NextStep and OpenStep, the `mkdir' command does not + # recognize any option. It will interpret all options as + # directories to create, and then abort because `.' already + # exists. + for d in ./-p ./--version; + do + test -d $d && rmdir $d + done + # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. + if test -f "$ac_aux_dir/mkinstalldirs"; then + mkdir_p='$(mkinstalldirs)' + else + mkdir_p='$(install_sh) -d' + fi +fi + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_AWK+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + echo "$as_me:$LINENO: result: $AWK" >&5 +echo "${ECHO_T}$AWK" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$AWK" && break +done + +echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 +set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` +if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.make <<\_ACEOF +all: + @echo 'ac_maketemp="$(MAKE)"' +_ACEOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` +if test -n "$ac_maketemp"; then + eval ac_cv_prog_make_${ac_make}_set=yes +else + eval ac_cv_prog_make_${ac_make}_set=no +fi +rm -f conftest.make +fi +if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + SET_MAKE= +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +# test to see if srcdir already configured +if test "`cd $srcdir && pwd`" != "`pwd`" && + test -f $srcdir/config.status; then + { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 +echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} + { (exit 1); exit 1; }; } +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE=tp4_comptesbancaires + VERSION=0.1 + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE "$PACKAGE" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define VERSION "$VERSION" +_ACEOF + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +install_sh=${install_sh-"$am_aux_dir/install-sh"} + +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + echo "$as_me:$LINENO: result: $STRIP" >&5 +echo "${ECHO_T}$STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +echo "${ECHO_T}$ac_ct_STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + STRIP=$ac_ct_STRIP +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" + +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +# Always define AMTAR for backward compatibility. + +AMTAR=${AMTAR-"${am_missing_run}tar"} + +am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' + + + + + + +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -n "$ac_tool_prefix"; then + for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + echo "$as_me:$LINENO: result: $CXX" >&5 +echo "${ECHO_T}$CXX" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 +echo "${ECHO_T}$ac_ct_CXX" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CXX" && break +done +test -n "$ac_ct_CXX" || ac_ct_CXX="g++" + + CXX=$ac_ct_CXX +fi + + +# Provide some information about the compiler. +echo "$as_me:$LINENO:" \ + "checking for C++ compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +echo "$as_me:$LINENO: checking for C++ compiler default output file name" >&5 +echo $ECHO_N "checking for C++ compiler default output file name... $ECHO_C" >&6 +ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 + (eval $ac_link_default) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Find the output, starting from the most likely. This scheme is +# not robust to junk in `.', hence go to wildcards (a.*) only as a last +# resort. + +# Be careful to initialize this variable, since it used to be cached. +# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. +ac_cv_exeext= +# b.out is created by i960 compilers. +for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) + ;; + conftest.$ac_ext ) + # This is the source file. + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + # FIXME: I believe we export ac_cv_exeext for Libtool, + # but it would be cool to find out if it's true. Does anybody + # maintain Libtool? --akim. + export ac_cv_exeext + break;; + * ) + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: C++ compiler cannot create executables +See \`config.log' for more details." >&5 +echo "$as_me: error: C++ compiler cannot create executables +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; } +fi + +ac_exeext=$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6 + +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether the C++ compiler works" >&5 +echo $ECHO_N "checking whether the C++ compiler works... $ECHO_C" >&6 +# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 +# If not cross compiling, check that we can run a simple program. +if test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { echo "$as_me:$LINENO: error: cannot run C++ compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run C++ compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + fi + fi +fi +echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +rm -f a.out a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6 + +echo "$as_me:$LINENO: checking for suffix of executables" >&5 +echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + export ac_cv_exeext + break;; + * ) break;; + esac +done +else + { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +echo "${ECHO_T}$ac_cv_exeext" >&6 + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +echo "$as_me:$LINENO: checking for suffix of object files" >&5 +echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 +if test "${ac_cv_objext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6 +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6 +if test "${ac_cv_cxx_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6 +GXX=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +CXXFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 +echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cxx_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cxx_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_cxx_g=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6 +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +for ac_declaration in \ + '' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +#include +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +continue +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +DEPDIR="${am__leading_dot}deps" + + ac_config_commands="$ac_config_commands depfiles" + + +am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo done +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 +echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6 +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote="\"" + _am_result=BSD + fi +fi + + +echo "$as_me:$LINENO: result: $_am_result" >&5 +echo "${ECHO_T}$_am_result" >&6 +rm -f confinc confmf + +# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then + enableval="$enable_dependency_tracking" + +fi; +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi + + +if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + + + +depcc="$CXX" am_compiler_list= + +echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 +if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CXX_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CXX_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CXX_dependencies_compiler_type=none +fi + +fi +echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 +echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6 +CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type + + + +if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then + am__fastdepCXX_TRUE= + am__fastdepCXX_FALSE='#' +else + am__fastdepCXX_TRUE='#' + am__fastdepCXX_FALSE= +fi + + +# Check whether --enable-shared or --disable-shared was given. +if test "${enable_shared+set}" = set; then + enableval="$enable_shared" + p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_shared=yes +fi; + +# Check whether --enable-static or --disable-static was given. +if test "${enable_static+set}" = set; then + enableval="$enable_static" + p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_static=yes +fi; + +# Check whether --enable-fast-install or --disable-fast-install was given. +if test "${enable_fast_install+set}" = set; then + enableval="$enable_fast_install" + p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_fast_install=yes +fi; + +# Make sure we can run config.sub. +$ac_config_sub sun4 >/dev/null 2>&1 || + { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 +echo "$as_me: error: cannot run $ac_config_sub" >&2;} + { (exit 1); exit 1; }; } + +echo "$as_me:$LINENO: checking build system type" >&5 +echo $ECHO_N "checking build system type... $ECHO_C" >&6 +if test "${ac_cv_build+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_build_alias=$build_alias +test -z "$ac_cv_build_alias" && + ac_cv_build_alias=`$ac_config_guess` +test -z "$ac_cv_build_alias" && + { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 +echo "$as_me: error: cannot guess build type; you must specify one" >&2;} + { (exit 1); exit 1; }; } +ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +echo "${ECHO_T}$ac_cv_build" >&6 +build=$ac_cv_build +build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + +echo "$as_me:$LINENO: checking host system type" >&5 +echo $ECHO_N "checking host system type... $ECHO_C" >&6 +if test "${ac_cv_host+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_host_alias=$host_alias +test -z "$ac_cv_host_alias" && + ac_cv_host_alias=$ac_cv_build_alias +ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_host" >&5 +echo "${ECHO_T}$ac_cv_host" >&6 +host=$ac_cv_host +host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CC" && break +done + + CC=$ac_ct_CC +fi + +fi + + +test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&5 +echo "$as_me: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + +# Provide some information about the compiler. +echo "$as_me:$LINENO:" \ + "checking for C compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 +if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 +GCC=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +CFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_cc_g=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 +echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_prog_cc_stdc=no +ac_save_CC=$CC +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std1 is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std1. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX 10.20 and later -Ae +# HP-UX older versions -Aa -D_HPUX_SOURCE +# SVR4 -Xc -D__EXTENSIONS__ +for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_stdc=$ac_arg +break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext +done +rm -f conftest.$ac_ext conftest.$ac_objext +CC=$ac_save_CC + +fi + +case "x$ac_cv_prog_cc_stdc" in + x|xno) + echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6 ;; + *) + echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 + CC="$CC $ac_cv_prog_cc_stdc" ;; +esac + +# Some people use a C++ compiler to compile C. Since we use `exit', +# in C++ we need to declare it. In case someone uses the same compiler +# for both compiling C and C++ we need to have the C++ compiler decide +# the declaration of exit, since it's the most demanding environment. +cat >conftest.$ac_ext <<_ACEOF +#ifndef __cplusplus + choke me +#endif +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + for ac_declaration in \ + '' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +#include +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +continue +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +depcc="$CC" am_compiler_list= + +echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 +if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 +echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + + +if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + +echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 +echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6 +if test "${lt_cv_path_SED+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f $lt_ac_sed && continue + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test $lt_ac_count -gt 10 && break + lt_ac_count=`expr $lt_ac_count + 1` + if test $lt_ac_count -gt $lt_ac_max; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done + +fi + +SED=$lt_cv_path_SED +echo "$as_me:$LINENO: result: $SED" >&5 +echo "${ECHO_T}$SED" >&6 + +echo "$as_me:$LINENO: checking for egrep" >&5 +echo $ECHO_N "checking for egrep... $ECHO_C" >&6 +if test "${ac_cv_prog_egrep+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if echo a | (grep -E '(a|b)') >/dev/null 2>&1 + then ac_cv_prog_egrep='grep -E' + else ac_cv_prog_egrep='egrep' + fi +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 +echo "${ECHO_T}$ac_cv_prog_egrep" >&6 + EGREP=$ac_cv_prog_egrep + + + +# Check whether --with-gnu-ld or --without-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then + withval="$with_gnu_ld" + test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi; +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + echo "$as_me:$LINENO: checking for ld used by $CC" >&5 +echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6 + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + echo "$as_me:$LINENO: checking for GNU ld" >&5 +echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 +else + echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 +fi +if test "${lt_cv_path_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +echo "${ECHO_T}$LD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi +test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 +echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} + { (exit 1); exit 1; }; } +echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 +if test "${lt_cv_prog_gnu_ld+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 +with_gnu_ld=$lt_cv_prog_gnu_ld + + +echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 +echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6 +if test "${lt_cv_ld_reload_flag+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_ld_reload_flag='-r' +fi +echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 +echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6 +reload_flag=$lt_cv_ld_reload_flag +case $reload_flag in +"" | " "*) ;; +*) reload_flag=" $reload_flag" ;; +esac +reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + darwin*) + if test "$GCC" = yes; then + reload_cmds='$CC -nostdlib ${wl}-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; +esac + +echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 +echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6 +if test "${lt_cv_path_NM+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/${ac_tool_prefix}nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + esac + fi + done + IFS="$lt_save_ifs" + test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm +fi +fi +echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5 +echo "${ECHO_T}$lt_cv_path_NM" >&6 +NM="$lt_cv_path_NM" + +echo "$as_me:$LINENO: checking whether ln -s works" >&5 +echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + echo "$as_me:$LINENO: result: no, using $LN_S" >&5 +echo "${ECHO_T}no, using $LN_S" >&6 +fi + +echo "$as_me:$LINENO: checking how to recognise dependent libraries" >&5 +echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6 +if test "${lt_cv_deplibs_check_method+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# `unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# which responds to the $file_magic_cmd with a given extended regex. +# If you have `file' or equivalent on your system and you're not sure +# whether `pass_all' will *always* work, you probably want this one. + +case $host_os in +aix4* | aix5*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[45]*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump'. + lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | kfreebsd*-gnu | dragonfly*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]' + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux*) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +nto-qnx*) + lt_cv_deplibs_check_method=unknown + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +sco3.2v5*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac + +fi +echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 +echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6 +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# Check whether --enable-libtool-lock or --disable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then + enableval="$enable_libtool_lock" + +fi; +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '#line 4118 "configure"' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-linux*) + # Test if the compiler is 64bit + echo 'int i;' > conftest.$ac_ext + lt_cv_cc_64bit_output=no + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + case `/usr/bin/file conftest.$ac_objext` in + *"ELF 64"*) + lt_cv_cc_64bit_output=yes + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 +echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6 +if test "${lt_cv_cc_needs_belf+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + lt_cv_cc_needs_belf=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +lt_cv_cc_needs_belf=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 +echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6 + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; + +esac + +need_locks="$enable_libtool_lock" + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test "${ac_cv_prog_CPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +echo "$as_me:$LINENO: result: $CPP" >&5 +echo "${ECHO_T}$CPP" >&6 +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&5 +echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +if test "${ac_cv_header_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_header_stdc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_header_stdc=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then + : +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + exit(2); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6 +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\_ACEOF +#define STDC_HEADERS 1 +_ACEOF + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. + + + + + + + + + +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default + +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_Header=no" +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + +for ac_header in dlfcn.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------------ ## +## Report this to the AC_PACKAGE_NAME lists. ## +## ------------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 +echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6 +if test -z "$CXXCPP"; then + if test "${ac_cv_prog_CXXCPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CXXCPP needs to be expanded + for CXXCPP in "$CXX -E" "/lib/cpp" + do + ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CXXCPP=$CXXCPP + +fi + CXXCPP=$ac_cv_prog_CXXCPP +else + ac_cv_prog_CXXCPP=$CXXCPP +fi +echo "$as_me:$LINENO: result: $CXXCPP" >&5 +echo "${ECHO_T}$CXXCPP" >&6 +ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details." >&5 +echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +fi + + +ac_ext=f +ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' +ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_f77_compiler_gnu +if test -n "$ac_tool_prefix"; then + for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$F77"; then + ac_cv_prog_F77="$F77" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_F77="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +F77=$ac_cv_prog_F77 +if test -n "$F77"; then + echo "$as_me:$LINENO: result: $F77" >&5 +echo "${ECHO_T}$F77" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$F77" && break + done +fi +if test -z "$F77"; then + ac_ct_F77=$F77 + for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_F77"; then + ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_F77="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_F77=$ac_cv_prog_ac_ct_F77 +if test -n "$ac_ct_F77"; then + echo "$as_me:$LINENO: result: $ac_ct_F77" >&5 +echo "${ECHO_T}$ac_ct_F77" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_F77" && break +done + + F77=$ac_ct_F77 +fi + + +# Provide some information about the compiler. +echo "$as_me:5251:" \ + "checking for Fortran 77 compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +rm -f a.out + +# If we don't use `.F' as extension, the preprocessor is not run on the +# input file. (Note that this only needs to work for GNU compilers.) +ac_save_ext=$ac_ext +ac_ext=F +echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6 +if test "${ac_cv_f77_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF + program main +#ifndef __GNUC__ + choke me +#endif + + end +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_f77_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_f77_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6 +ac_ext=$ac_save_ext +ac_test_FFLAGS=${FFLAGS+set} +ac_save_FFLAGS=$FFLAGS +FFLAGS= +echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5 +echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_f77_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + FFLAGS=-g +cat >conftest.$ac_ext <<_ACEOF + program main + + end +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_f77_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_f77_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_f77_g=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5 +echo "${ECHO_T}$ac_cv_prog_f77_g" >&6 +if test "$ac_test_FFLAGS" = set; then + FFLAGS=$ac_save_FFLAGS +elif test $ac_cv_prog_f77_g = yes; then + if test "x$ac_cv_f77_compiler_gnu" = xyes; then + FFLAGS="-g -O2" + else + FFLAGS="-g" + fi +else + if test "x$ac_cv_f77_compiler_gnu" = xyes; then + FFLAGS="-O2" + else + FFLAGS= + fi +fi + +G77=`test $ac_compiler_gnu = yes && echo yes` +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + + +# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! + +# find the maximum length of command line arguments +echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 +echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6 +if test "${lt_cv_sys_max_cmd_len+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + *) + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + while (test "X"`$SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \ + = "XX$teststring") >/dev/null 2>&1 && + new_result=`expr "X$teststring" : ".*" 2>&1` && + lt_cv_sys_max_cmd_len=$new_result && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + teststring= + # Add a significant safety factor because C++ compilers can tack on massive + # amounts of additional arguments before passing them to the linker. + # It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + ;; + esac + +fi + +if test -n $lt_cv_sys_max_cmd_len ; then + echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 +echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6 +else + echo "$as_me:$LINENO: result: none" >&5 +echo "${ECHO_T}none" >&6 +fi + + + + +# Check for command to grab the raw symbol name followed by C symbol from nm. +echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5 +echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6 +if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[BCDEGRST]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +# Transform an extracted symbol line into a proper C declaration +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw* | pw32*) + symcode='[ABCDGISTW]' + ;; +hpux*) # Its linker distinguishes data from code symbols + if test "$host_cpu" = ia64; then + symcode='[ABCDEGRST]' + fi + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + ;; +linux*) + if test "$host_cpu" = ia64; then + symcode='[ABCDGIRSTW]' + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + fi + ;; +irix* | nonstopux*) + symcode='[BCDEGRST]' + ;; +osf*) + symcode='[BCDEGQRST]' + ;; +solaris* | sysv5*) + symcode='[BDRT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[ABCDGIRSTW]' ;; +esac + +# Try without a prefix undercore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Now try to grab the symbols. + nlist=conftest.nm + if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 + (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if grep ' nm_test_var$' "$nlist" >/dev/null; then + if grep ' nm_test_func$' "$nlist" >/dev/null; then + cat < conftest.$ac_ext +#ifdef __cplusplus +extern "C" { +#endif + +EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' + + cat <> conftest.$ac_ext +#if defined (__STDC__) && __STDC__ +# define lt_ptr_t void * +#else +# define lt_ptr_t char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + lt_ptr_t address; +} +lt_preloaded_symbols[] = +{ +EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext + cat <<\EOF >> conftest.$ac_ext + {0, (lt_ptr_t) 0} +}; + +#ifdef __cplusplus +} +#endif +EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_save_LIBS="$LIBS" + lt_save_CFLAGS="$CFLAGS" + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS="$lt_save_LIBS" + CFLAGS="$lt_save_CFLAGS" + else + echo "cannot find nm_test_func in $nlist" >&5 + fi + else + echo "cannot find nm_test_var in $nlist" >&5 + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 + fi + else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -f conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done + +fi + +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + echo "$as_me:$LINENO: result: failed" >&5 +echo "${ECHO_T}failed" >&6 +else + echo "$as_me:$LINENO: result: ok" >&5 +echo "${ECHO_T}ok" >&6 +fi + +echo "$as_me:$LINENO: checking for objdir" >&5 +echo $ECHO_N "checking for objdir... $ECHO_C" >&6 +if test "${lt_cv_objdir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null +fi +echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5 +echo "${ECHO_T}$lt_cv_objdir" >&6 +objdir=$lt_cv_objdir + + + + + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='sed -e 1s/^X//' +sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +# Constants: +rm="rm -f" + +# Global variables: +default_ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a +ltmain="$ac_aux_dir/ltmain.sh" +ofile="$default_ofile" +with_gnu_ld="$lt_cv_prog_gnu_ld" + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. +set dummy ${ac_tool_prefix}ar; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_AR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="${ac_tool_prefix}ar" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + echo "$as_me:$LINENO: result: $AR" >&5 +echo "${ECHO_T}$AR" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_AR"; then + ac_ct_AR=$AR + # Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_AR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="ar" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_AR" && ac_cv_prog_ac_ct_AR="false" +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 +echo "${ECHO_T}$ac_ct_AR" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + AR=$ac_ct_AR +else + AR="$ac_cv_prog_AR" +fi + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + echo "$as_me:$LINENO: result: $RANLIB" >&5 +echo "${ECHO_T}$RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +echo "${ECHO_T}$ac_ct_RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + RANLIB=$ac_ct_RANLIB +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + echo "$as_me:$LINENO: result: $STRIP" >&5 +echo "${ECHO_T}$STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +echo "${ECHO_T}$ac_ct_STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + STRIP=$ac_ct_STRIP +else + STRIP="$ac_cv_prog_STRIP" +fi + + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$AR" && AR=ar +test -z "$AR_FLAGS" && AR_FLAGS=cru +test -z "$AS" && AS=as +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$DLLTOOL" && DLLTOOL=dlltool +test -z "$LD" && LD=ld +test -z "$LN_S" && LN_S="ln -s" +test -z "$MAGIC_CMD" && MAGIC_CMD=file +test -z "$NM" && NM=nm +test -z "$SED" && SED=sed +test -z "$OBJDUMP" && OBJDUMP=objdump +test -z "$RANLIB" && RANLIB=: +test -z "$STRIP" && STRIP=: +test -z "$ac_objext" && ac_objext=o + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" + ;; + *) + old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi + +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +# Only perform the check for file, if the check method requires it +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 +echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6 +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/${ac_tool_prefix}file; then + lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +echo "${ECHO_T}$MAGIC_CMD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + echo "$as_me:$LINENO: checking for file" >&5 +echo $ECHO_N "checking for file... $ECHO_C" >&6 +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/file; then + lt_cv_path_MAGIC_CMD="$ac_dir/file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +echo "${ECHO_T}$MAGIC_CMD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + else + MAGIC_CMD=: + fi +fi + + fi + ;; +esac + +enable_dlopen=no +enable_win32_dll=no + +# Check whether --enable-libtool-lock or --disable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then + enableval="$enable_libtool_lock" + +fi; +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + + +# Check whether --with-pic or --without-pic was given. +if test "${with_pic+set}" = set; then + withval="$with_pic" + pic_mode="$withval" +else + pic_mode=default +fi; +test -z "$pic_mode" && pic_mode=default + +# Check if we have a version mismatch between libtool.m4 and ltmain.sh. +# +# Note: This should be in AC_LIBTOOL_SETUP, _after_ $ltmain have been defined. +# We also should do it _before_ AC_LIBTOOL_LANG_C_CONFIG that actually +# calls AC_LIBTOOL_CONFIG and creates libtool. +# +echo "$as_me:$LINENO: checking for correct ltmain.sh version" >&5 +echo $ECHO_N "checking for correct ltmain.sh version... $ECHO_C" >&6 +if test "x$ltmain" = "x" ; then + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + { { echo "$as_me:$LINENO: error: + +*** [Gentoo] sanity check failed! *** +*** \$ltmain is not defined, please check the patch for consistency! *** +" >&5 +echo "$as_me: error: + +*** [Gentoo] sanity check failed! *** +*** \$ltmain is not defined, please check the patch for consistency! *** +" >&2;} + { (exit 1); exit 1; }; } +fi +gentoo_lt_version="1.5.20" +gentoo_ltmain_version=`grep '^[ ]*VERSION=' $ltmain | sed -e 's|^[ ]*VERSION=||'` +if test "x$gentoo_lt_version" != "x$gentoo_ltmain_version" ; then + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + { { echo "$as_me:$LINENO: error: + +*** [Gentoo] sanity check failed! *** +*** libtool.m4 and ltmain.sh have a version mismatch! *** +*** (libtool.m4 = $gentoo_lt_version, ltmain.sh = $gentoo_ltmain_version) *** + +Please run: + + libtoolize --copy --force + +if appropriate, please contact the maintainer of this +package (or your distribution) for help. +" >&5 +echo "$as_me: error: + +*** [Gentoo] sanity check failed! *** +*** libtool.m4 and ltmain.sh have a version mismatch! *** +*** (libtool.m4 = $gentoo_lt_version, ltmain.sh = $gentoo_ltmain_version) *** + +Please run: + + libtoolize --copy --force + +if appropriate, please contact the maintainer of this +package (or your distribution) for help. +" >&2;} + { (exit 1); exit 1; }; } +else + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +fi + + +# Use C for the default configuration in the libtool script +tagname= +lt_save_CC="$CC" +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +objext=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}\n' + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + +# +# Check for any special shared library compilation flags. +# +lt_prog_cc_shlib= +if test "$GCC" = no; then + case $host_os in + sco3.2v5*) + lt_prog_cc_shlib='-belf' + ;; + esac +fi +if test -n "$lt_prog_cc_shlib"; then + { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&5 +echo "$as_me: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&2;} + if echo "$old_CC $old_CFLAGS " | grep "[ ]$lt_prog_cc_shlib[ ]" >/dev/null; then : + else + { echo "$as_me:$LINENO: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5 +echo "$as_me: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;} + lt_cv_prog_cc_can_build_shared=no + fi +fi + + +# +# Check to make sure the static flag actually works. +# +echo "$as_me:$LINENO: checking if $compiler static flag $lt_prog_compiler_static works" >&5 +echo $ECHO_N "checking if $compiler static flag $lt_prog_compiler_static works... $ECHO_C" >&6 +if test "${lt_prog_compiler_static_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_static_works=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_prog_compiler_static" + printf "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $echo "X$_lt_linker_boilerplate" | $Xsed > conftest.exp + $SED '/^$/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_static_works=yes + fi + else + lt_prog_compiler_static_works=yes + fi + fi + $rm conftest* + LDFLAGS="$save_LDFLAGS" + +fi +echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5 +echo "${ECHO_T}$lt_prog_compiler_static_works" >&6 + +if test x"$lt_prog_compiler_static_works" = xyes; then + : +else + lt_prog_compiler_static= +fi + + + + +lt_prog_compiler_no_builtin_flag= + +if test "$GCC" = yes; then + lt_prog_compiler_no_builtin_flag=' -fno-builtin' + + +echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 +if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:6410: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:6414: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp + $SED '/^$/d' conftest.err >conftest.er2 + if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6 + +if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then + lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" +else + : +fi + +fi + +lt_prog_compiler_wl= +lt_prog_compiler_pic= +lt_prog_compiler_static= + +echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 + + if test "$GCC" = yes; then + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_static='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + ;; + + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + else + lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic='-qnocommon' + lt_prog_compiler_wl='-Wl,' + ;; + esac + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static='-non_shared' + ;; + + newsos6) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + linux*) + case $cc_basename in + icc* | ecc*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + esac + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + + sco3.2v5*) + lt_prog_compiler_pic='-Kpic' + lt_prog_compiler_static='-dn' + ;; + + solaris*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + lt_prog_compiler_wl='-Qoption ld ';; + *) + lt_prog_compiler_wl='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl='-Qoption ld ' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic='-Kconform_pic' + lt_prog_compiler_static='-Bstatic' + fi + ;; + + unicos*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_can_build_shared=no + ;; + + uts4*) + lt_prog_compiler_pic='-pic' + lt_prog_compiler_static='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared=no + ;; + esac + fi + +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic" >&6 + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic"; then + +echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6 +if test "${lt_prog_compiler_pic_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_pic_works=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic -DPIC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:6672: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:6676: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp + $SED '/^$/d' conftest.err >conftest.er2 + if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_pic_works=yes + fi + fi + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6 + +if test x"$lt_prog_compiler_pic_works" = xyes; then + case $lt_prog_compiler_pic in + "" | " "*) ;; + *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; + esac +else + lt_prog_compiler_pic= + lt_prog_compiler_can_build_shared=no +fi + +fi +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic= + ;; + *) + lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" + ;; +esac + +echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 +if test "${lt_cv_prog_compiler_c_o+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:6734: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:6738: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp + $SED '/^$/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6 + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6 + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 + + runpath_var= + allow_undefined_flag= + enable_shared_with_static_runtimes=no + archive_cmds= + archive_expsym_cmds= + old_archive_From_new_cmds= + old_archive_from_expsyms_cmds= + export_dynamic_flag_spec= + whole_archive_flag_spec= + thread_safe_flag_spec= + hardcode_libdir_flag_spec= + hardcode_libdir_flag_spec_ld= + hardcode_libdir_separator= + hardcode_direct=no + hardcode_minus_L=no + hardcode_shlibpath_var=unsupported + link_all_deplibs=unknown + hardcode_automatic=no + module_cmds= + module_expsym_cmds= + always_export_symbols=no + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms="_GLOBAL_OFFSET_TABLE_" + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + extract_expsyms_cmds= + # Just being paranoid about ensuring that cc_basename is set. + for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + ld_shlibs=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + ld_shlibs=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + allow_undefined_flag=unsupported + always_export_symbols=no + enable_shared_with_static_runtimes=yes + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + else + ld_shlibs=no + fi + ;; + + linux*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + archive_cmds='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + else + ld_shlibs=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris* | sysv5*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test "$ld_shlibs" = no; then + runpath_var= + hardcode_libdir_flag_spec= + export_dynamic_flag_spec= + whole_archive_flag_spec= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes && test -z "$link_static_flag"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix5*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds='' + hardcode_direct=yes + hardcode_libdir_separator=':' + link_all_deplibs=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct=yes + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='-berok' + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-z nodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag=' ${wl}-bernotok' + allow_undefined_flag=' ${wl}-berok' + # -bexpall does not export symbols beginning with underscore (_) + always_export_symbols=yes + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec=' ' + archive_cmds_need_lc=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + # see comment about different semantics on the GNU ld section + ld_shlibs=no + ;; + + bsdi[45]*) + export_dynamic_flag_spec=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_From_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes=yes + ;; + + darwin* | rhapsody*) + case $host_os in + rhapsody* | darwin1.[012]) + allow_undefined_flag='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc=no + hardcode_direct=no + hardcode_automatic=yes + hardcode_shlibpath_var=unsupported + whole_archive_flag_spec='' + link_all_deplibs=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs=no + ;; + esac + fi + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + freebsd1*) + ld_shlibs=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | kfreebsd*-gnu | dragonfly*) + archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + export_dynamic_flag_spec='${wl}-E' + ;; + + hpux10* | hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*|ia64*) + archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*|ia64*) + archive_cmds='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' + ;; + *) + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_flag_spec_ld='+b $libdir' + hardcode_libdir_separator=: + hardcode_direct=no + hardcode_shlibpath_var=no + ;; + ia64*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=no + hardcode_shlibpath_var=no + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + *) + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + export_dynamic_flag_spec='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_ld='-rpath $libdir' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + link_all_deplibs=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_shlibpath_var=no + ;; + + openbsd*) + hardcode_direct=yes + hardcode_shlibpath_var=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_From_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + hardcode_libdir_separator=: + ;; + + sco3.2v5*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='${wl}-Bexport' + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ;; + + solaris*) + no_undefined_flag=' -z text' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + wlarc='' + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine linker options so we + # cannot just pass the convience library names through + # without $wl, iff we do not link with $LD. + # Luckily, gcc supports the same syntax we need for Sun Studio. + # Supported since Solaris 2.6 (maybe 2.5.1?) + case $wlarc in + '') + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; + *) + whole_archive_flag_spec='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; + esac ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds='$CC -r -o $output$reload_objs' + hardcode_direct=no + ;; + motorola) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4.2uw2*) + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=no + hardcode_shlibpath_var=no + hardcode_runpath_var=yes + runpath_var=LD_RUN_PATH + ;; + + sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) + no_undefined_flag='${wl}-z ${wl}text' + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv5*) + no_undefined_flag=' -z text' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + hardcode_libdir_flag_spec= + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac + fi + +echo "$as_me:$LINENO: result: $ld_shlibs" >&5 +echo "${ECHO_T}$ld_shlibs" >&6 +test "$ld_shlibs" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc=no + else + archive_cmds_need_lc=yes + fi + allow_undefined_flag=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5 +echo "${ECHO_T}$archive_cmds_need_lc" >&6 + ;; + esac + fi + ;; +esac + +echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + linux*) + if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ 01.* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + if test $supports_anon_versioning = yes; then + archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~ +cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ +$echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + else + $archive_expsym_cmds="$archive_cmds" + fi + else + ld_shlibs=no + fi + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +kfreebsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + # Handle Gentoo/FreeBSD as it was Linux + case $host_vendor in + gentoo) + version_type=linux ;; + *) + version_type=freebsd-$objformat ;; + esac + + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + linux) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + need_lib_prefix=no + need_version=no + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + *) # from 3.2 on + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + case $host_cpu:$lt_cv_cc_64bit_output in + powerpc64:yes | s390x:yes | sparc64:yes | x86_64:yes) + sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /usr/X11R6/lib64" + sys_lib_search_path_spec="/lib64 /usr/lib64 /usr/local/lib64 /usr/X11R6/lib64" + ;; + esac + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + + # Find out which ABI we are using (multilib Linux x86_64 hack). + libsuff= + case "$host_cpu" in + x86_64*) + echo '#line 8186 "configure"' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + case `/usr/bin/file conftest.$ac_objext` in + *64-bit*) + libsuff=64 + ;; + esac + fi + rm -rf conftest* + ;; + *) + ;; + esac + sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff}" + sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" + ;; + +knetbsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +sco3.2v5*) + version_type=osf + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6 +test "$dynamic_linker" = no && can_build_shared=no + +echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || \ + test -n "$runpath_var" || \ + test "X$hardcode_automatic" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, )" != no && + test "$hardcode_minus_L" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +echo "$as_me:$LINENO: result: $hardcode_action" >&5 +echo "${ECHO_T}$hardcode_action" >&6 + +if test "$hardcode_action" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + +striplib= +old_striplib= +echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 +echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + ;; + *) + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + ;; + esac +fi + +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dl_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + +fi + + ;; + + *) + echo "$as_me:$LINENO: checking for shl_load" >&5 +echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 +if test "${ac_cv_func_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define shl_load to an innocuous variant, in case declares shl_load. + For example, HP-UX 11i declares gettimeofday. */ +#define shl_load innocuous_shl_load + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char shl_load (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef shl_load + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_shl_load) || defined (__stub___shl_load) +choke me +#else +char (*f) () = shl_load; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != shl_load; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_shl_load=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 +echo "${ECHO_T}$ac_cv_func_shl_load" >&6 +if test $ac_cv_func_shl_load = yes; then + lt_cv_dlopen="shl_load" +else + echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 +echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load (); +int +main () +{ +shl_load (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dld_shl_load=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 +if test $ac_cv_lib_dld_shl_load = yes; then + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" +else + echo "$as_me:$LINENO: checking for dlopen" >&5 +echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 +if test "${ac_cv_func_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define dlopen to an innocuous variant, in case declares dlopen. + For example, HP-UX 11i declares gettimeofday. */ +#define dlopen innocuous_dlopen + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char dlopen (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef dlopen + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_dlopen) || defined (__stub___dlopen) +choke me +#else +char (*f) () = dlopen; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != dlopen; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 +echo "${ECHO_T}$ac_cv_func_dlopen" >&6 +if test $ac_cv_func_dlopen = yes; then + lt_cv_dlopen="dlopen" +else + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dl_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 +echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 +if test "${ac_cv_lib_svld_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_svld_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_svld_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 +if test $ac_cv_lib_svld_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +else + echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 +echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_dld_link+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dld_link (); +int +main () +{ +dld_link (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_dld_link=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dld_dld_link=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 +if test $ac_cv_lib_dld_dld_link = yes; then + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 +echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 +if test "${lt_cv_dlopen_self+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_unknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self" >&6 + + if test "x$lt_cv_dlopen_self" = xyes; then + LDFLAGS="$LDFLAGS $link_static_flag" + echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 +echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 +if test "${lt_cv_dlopen_self_static+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + +# Report which librarie types wil actually be built +echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 +echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: $can_build_shared" >&5 +echo "${ECHO_T}$can_build_shared" >&6 + +echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 +echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6 +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case $host_os in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + +aix4* | aix5*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; +esac +echo "$as_me:$LINENO: result: $enable_shared" >&5 +echo "${ECHO_T}$enable_shared" >&6 + +echo "$as_me:$LINENO: checking whether to build static libraries" >&5 +echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +echo "$as_me:$LINENO: result: $enable_static" >&5 +echo "${ECHO_T}$enable_static" >&6 + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler \ + CC \ + LD \ + lt_prog_compiler_wl \ + lt_prog_compiler_pic \ + lt_prog_compiler_static \ + lt_prog_compiler_no_builtin_flag \ + export_dynamic_flag_spec \ + thread_safe_flag_spec \ + whole_archive_flag_spec \ + enable_shared_with_static_runtimes \ + old_archive_cmds \ + old_archive_from_new_cmds \ + predep_objects \ + postdep_objects \ + predeps \ + postdeps \ + compiler_lib_search_path \ + archive_cmds \ + archive_expsym_cmds \ + postinstall_cmds \ + postuninstall_cmds \ + old_archive_from_expsyms_cmds \ + allow_undefined_flag \ + no_undefined_flag \ + export_symbols_cmds \ + hardcode_libdir_flag_spec \ + hardcode_libdir_flag_spec_ld \ + hardcode_libdir_separator \ + hardcode_automatic \ + module_cmds \ + module_expsym_cmds \ + lt_cv_prog_compiler_c_o \ + exclude_expsyms \ + include_expsyms; do + + case $var in + old_archive_cmds | \ + old_archive_from_new_cmds | \ + archive_cmds | \ + archive_expsym_cmds | \ + module_cmds | \ + module_expsym_cmds | \ + old_archive_from_expsyms_cmds | \ + export_symbols_cmds | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="${ofile}T" + trap "$rm \"$cfgfile\"; exit 1" 1 2 15 + $rm -f "$cfgfile" + { echo "$as_me:$LINENO: creating $ofile" >&5 +echo "$as_me: creating $ofile" >&6;} + + cat <<__EOF__ >> "$cfgfile" +#! $SHELL + +# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 +# Free Software Foundation, Inc. +# +# This file is part of GNU Libtool: +# Originally by Gordon Matzigkeit , 1996 +# +# 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. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="$SED -e 1s/^X//" + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# The names of the tagged configurations supported by this script. +available_tags= + +# ### BEGIN LIBTOOL CONFIG + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# A language-specific compiler. +CC=$lt_compiler + +# Is the compiler the GNU C compiler? +with_gcc=$GCC + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds +module_expsym_cmds=$lt_module_expsym_cmds + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# ### END LIBTOOL CONFIG + +__EOF__ + + + case $host_os in + aix3*) + cat <<\EOF >> "$cfgfile" + +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +EOF + ;; + esac + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || \ + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +CC="$lt_save_CC" + + +# Check whether --with-tags or --without-tags was given. +if test "${with_tags+set}" = set; then + withval="$with_tags" + tagnames="$withval" +fi; + +if test -f "$ltmain" && test -n "$tagnames"; then + if test ! -f "${ofile}"; then + { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5 +echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;} + fi + + if test -z "$LTCC"; then + eval "`$SHELL ${ofile} --config | grep '^LTCC='`" + if test -z "$LTCC"; then + { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5 +echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;} + else + { echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5 +echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;} + fi + fi + + # Extract list of available tagged configurations in $ofile. + # Note that this assumes the entire list is on one line. + available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` + + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for tagname in $tagnames; do + IFS="$lt_save_ifs" + # Check whether tagname contains only valid characters + case `$echo "X$tagname" | $Xsed -e 's:[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]::g'` in + "") ;; + *) { { echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5 +echo "$as_me: error: invalid tag name: $tagname" >&2;} + { (exit 1); exit 1; }; } + ;; + esac + + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null + then + { { echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5 +echo "$as_me: error: tag name \"$tagname\" already exists" >&2;} + { (exit 1); exit 1; }; } + fi + + # Update the list of available tags. + if test -n "$tagname"; then + echo appending configuration tag \"$tagname\" to $ofile + + case $tagname in + CXX) + if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + + + +archive_cmds_need_lc_CXX=no +allow_undefined_flag_CXX= +always_export_symbols_CXX=no +archive_expsym_cmds_CXX= +export_dynamic_flag_spec_CXX= +hardcode_direct_CXX=no +hardcode_libdir_flag_spec_CXX= +hardcode_libdir_flag_spec_ld_CXX= +hardcode_libdir_separator_CXX= +hardcode_minus_L_CXX=no +hardcode_automatic_CXX=no +module_cmds_CXX= +module_expsym_cmds_CXX= +link_all_deplibs_CXX=unknown +old_archive_cmds_CXX=$old_archive_cmds +no_undefined_flag_CXX= +whole_archive_flag_spec_CXX= +enable_shared_with_static_runtimes_CXX=no + +# Dependencies to place before and after the object being linked: +predep_objects_CXX= +postdep_objects_CXX= +predeps_CXX= +postdeps_CXX= +compiler_lib_search_path_CXX= + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +objext_CXX=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(int, char *) { return(0); }\n' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_LD=$LD +lt_save_GCC=$GCC +GCC=$GXX +lt_save_with_gnu_ld=$with_gnu_ld +lt_save_path_LD=$lt_cv_path_LD +if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx +else + unset lt_cv_prog_gnu_ld +fi +if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX +else + unset lt_cv_path_LD +fi +test -z "${LDCXX+set}" || LD=$LDCXX +CC=${CXX-"c++"} +compiler=$CC +compiler_CXX=$CC +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +# We don't want -fno-exception wen compiling C++ code, so set the +# no_builtin_flag separately +if test "$GXX" = yes; then + lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' +else + lt_prog_compiler_no_builtin_flag_CXX= +fi + +if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + +# Check whether --with-gnu-ld or --without-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then + withval="$with_gnu_ld" + test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi; +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + echo "$as_me:$LINENO: checking for ld used by $CC" >&5 +echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6 + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + echo "$as_me:$LINENO: checking for GNU ld" >&5 +echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 +else + echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 +fi +if test "${lt_cv_path_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +echo "${ECHO_T}$LD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi +test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 +echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} + { (exit 1); exit 1; }; } +echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 +if test "${lt_cv_prog_gnu_ld+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ + grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_CXX= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + +else + GXX=no + with_gnu_ld=no + wlarc= +fi + +# PORTME: fill in a description of your system's C++ link characteristics +echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 +ld_shlibs_CXX=yes +case $host_os in + aix3*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix5*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_CXX='' + hardcode_direct_CXX=yes + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + + if test "$GXX" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct_CXX=yes + else + # We have old collect2 + hardcode_direct_CXX=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_CXX=yes + hardcode_libdir_flag_spec_CXX='-L$libdir' + hardcode_libdir_separator_CXX= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols_CXX=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag_CXX='-berok' + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" + + archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_CXX="-z nodefs" + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_CXX=' ${wl}-bernotok' + allow_undefined_flag_CXX=' ${wl}-berok' + # -bexpall does not export symbols beginning with underscore (_) + always_export_symbols_CXX=yes + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_CXX=' ' + archive_cmds_need_lc_CXX=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_CXX='-L$libdir' + allow_undefined_flag_CXX=unsupported + always_export_symbols_CXX=no + enable_shared_with_static_runtimes_CXX=yes + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + else + ld_shlibs_CXX=no + fi + ;; + darwin* | rhapsody*) + case $host_os in + rhapsody* | darwin1.[012]) + allow_undefined_flag_CXX='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag_CXX='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc_CXX=no + hardcode_direct_CXX=no + hardcode_automatic_CXX=yes + hardcode_shlibpath_var_CXX=unsupported + whole_archive_flag_spec_CXX='' + link_all_deplibs_CXX=yes + + if test "$GXX" = yes ; then + lt_int_apple_cc_single_mod=no + output_verbose_link_cmd='echo' + if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then + lt_int_apple_cc_single_mod=yes + fi + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + else + archive_cmds_CXX='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + fi + module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs_CXX=no + ;; + esac + fi + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + freebsd[12]*) + # C++ shared libraries reported to be fairly broken before switch to ELF + ld_shlibs_CXX=no + ;; + freebsd-elf*) + archive_cmds_need_lc_CXX=no + ;; + freebsd* | kfreebsd*-gnu | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + ld_shlibs_CXX=yes + ;; + gnu*) + ;; + hpux9*) + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_CXX=: + export_dynamic_flag_spec_CXX='${wl}-E' + hardcode_direct_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + archive_cmds_CXX='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + archive_cmds_CXX='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + case $host_cpu in + hppa*64*) + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_flag_spec_ld_CXX='+b $libdir' + hardcode_libdir_separator_CXX=: + ;; + ia64*) + hardcode_libdir_flag_spec_CXX='-L$libdir' + ;; + *) + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_CXX=: + export_dynamic_flag_spec_CXX='${wl}-E' + ;; + esac + fi + case $host_cpu in + hppa*64*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + ;; + ia64*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + *) + hardcode_direct_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + case $host_cpu in + hppa*64*|ia64*) + archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' + ;; + *) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case $host_cpu in + ia64*|hppa*64*) + archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' + ;; + *) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' + fi + fi + link_all_deplibs_CXX=yes + ;; + esac + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + ;; + linux*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + + hardcode_libdir_flag_spec_CXX='${wl}--rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc*) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + archive_cmds_need_lc_CXX=no + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + pgCC*) + # Portland Group C++ compiler + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + ;; + cxx*) + # Compaq C++ + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + esac + ;; + lynxos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + m88k*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + openbsd2*) + # C++ shared libraries are fairly broken + ld_shlibs_CXX=no + ;; + openbsd*) + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + export_dynamic_flag_spec_CXX='${wl}-E' + whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd='echo' + ;; + osf3*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + hardcode_libdir_separator_CXX=: + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' + + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + cxx*) + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + hardcode_libdir_separator_CXX=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + cxx*) + allow_undefined_flag_CXX=' -expect_unresolved \*' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~ + $rm $lib.exp' + + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + psos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + sco*) + archive_cmds_need_lc_CXX=no + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + archive_cmds_need_lc_CXX=yes + no_undefined_flag_CXX=' -zdefs' + archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_shlibpath_var_CXX=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The C++ compiler is used as linker so we must use $wl + # flag to pass the commands to the underlying system + # linker. We must also pass each convience library through + # to the system linker between allextract/defaultextract. + # The C++ compiler will combine linker options so we + # cannot just pass the convience library names through + # without $wl. + # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' + ;; + esac + link_all_deplibs_CXX=yes + + output_verbose_link_cmd='echo' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + no_undefined_flag_CXX=' ${wl}-z ${wl}defs' + if $CC --version | grep -v '^2\.7' > /dev/null; then + archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + fi + + hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' + fi + ;; + esac + ;; + sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) + archive_cmds_need_lc_CXX=no + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + vxworks*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; +esac +echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 +echo "${ECHO_T}$ld_shlibs_CXX" >&6 +test "$ld_shlibs_CXX" = no && can_build_shared=no + +GCC_CXX="$GXX" +LD_CXX="$LD" + + +cat > conftest.$ac_ext <&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + # The `*' in the case matches for architectures that use `case' in + # $output_verbose_cmd can trigger glob expansion during the loop + # eval without this substitution. + output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"` + + for p in `eval $output_verbose_link_cmd`; do + case $p in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test $p = "-L" \ + || test $p = "-R"; then + prev=$p + continue + else + prev= + fi + + if test "$pre_test_object_deps_done" = no; then + case $p in + -L* | -R*) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$compiler_lib_search_path_CXX"; then + compiler_lib_search_path_CXX="${prev}${p}" + else + compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$postdeps_CXX"; then + postdeps_CXX="${prev}${p}" + else + postdeps_CXX="${postdeps_CXX} ${prev}${p}" + fi + fi + ;; + + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test "$pre_test_object_deps_done" = no; then + if test -z "$predep_objects_CXX"; then + predep_objects_CXX="$p" + else + predep_objects_CXX="$predep_objects_CXX $p" + fi + else + if test -z "$postdep_objects_CXX"; then + postdep_objects_CXX="$p" + else + postdep_objects_CXX="$postdep_objects_CXX $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling CXX test program" +fi + +$rm -f confest.$objext + +# PORTME: override above test on systems where it is broken +case $host_os in +solaris*) + case $cc_basename in + CC*) + # Adding this requires a known-good setup of shared libraries for + # Sun compiler versions before 5.6, else PIC objects from an old + # archive will be linked into the output, leading to subtle bugs. + postdeps_CXX='-lCstd -lCrun' + ;; + esac +esac + + +case " $postdeps_CXX " in +*" -lc "*) archive_cmds_need_lc_CXX=no ;; +esac + +lt_prog_compiler_wl_CXX= +lt_prog_compiler_pic_CXX= +lt_prog_compiler_static_CXX= + +echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 + + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + fi + ;; + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' + ;; + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | os2* | pw32*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_CXX='-DDLL_EXPORT' + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_CXX='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + lt_prog_compiler_pic_CXX= + ;; + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_CXX=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + else + case $host_os in + aix4* | aix5*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + else + lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_AC_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic_CXX='-qnocommon' + lt_prog_compiler_wl_CXX='-Wl,' + ;; + esac + ;; + dgux*) + case $cc_basename in + ec++*) + lt_prog_compiler_pic_CXX='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | kfreebsd*-gnu | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" + if test "$host_cpu" != ia64; then + lt_prog_compiler_pic_CXX='+Z' + fi + ;; + aCC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_CXX='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux*) + case $cc_basename in + KCC*) + # KAI C++ Compiler + lt_prog_compiler_wl_CXX='--backend -Wl,' + lt_prog_compiler_pic_CXX='-fPIC' + ;; + icpc* | ecpc*) + # Intel C++ + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-static' + ;; + pgCC*) + # Portland Group C++ compiler. + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-fpic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + *) + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + lt_prog_compiler_pic_CXX='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd*) + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + lt_prog_compiler_wl_CXX='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + lt_prog_compiler_pic_CXX='-pic' + ;; + cxx*) + # Digital/Compaq C++ + lt_prog_compiler_wl_CXX='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + sco*) + case $cc_basename in + CC*) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + *) + ;; + esac + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + lt_prog_compiler_wl_CXX='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + lt_prog_compiler_pic_CXX='-pic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + lcc*) + # Lucid + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + lt_prog_compiler_pic_CXX='-KPIC' + ;; + *) + ;; + esac + ;; + unixware*) + ;; + vxworks*) + ;; + *) + lt_prog_compiler_can_build_shared_CXX=no + ;; + esac + fi + +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6 + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_CXX"; then + +echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6 +if test "${lt_prog_compiler_pic_works_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_pic_works_CXX=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:11403: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:11407: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp + $SED '/^$/d' conftest.err >conftest.er2 + if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_pic_works_CXX=yes + fi + fi + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_CXX" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_works_CXX" >&6 + +if test x"$lt_prog_compiler_pic_works_CXX" = xyes; then + case $lt_prog_compiler_pic_CXX in + "" | " "*) ;; + *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; + esac +else + lt_prog_compiler_pic_CXX= + lt_prog_compiler_can_build_shared_CXX=no +fi + +fi +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_CXX= + ;; + *) + lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" + ;; +esac + +echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 +if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o_CXX=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:11465: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:11469: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp + $SED '/^$/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_CXX=yes + fi + fi + chmod u+w . 2>&5 + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6 + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6 + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 + + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + case $host_os in + aix4* | aix5*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + export_symbols_cmds_CXX="$ltdll_cmds" + ;; + cygwin* | mingw*) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([^ ]*\) [^ ]*/\1 DATA/;/^I /d;/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' + ;; + *) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac + +echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 +echo "${ECHO_T}$ld_shlibs_CXX" >&6 +test "$ld_shlibs_CXX" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_CXX" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_CXX=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds_CXX in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_CXX + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_CXX + allow_undefined_flag_CXX= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc_CXX=no + else + archive_cmds_need_lc_CXX=yes + fi + allow_undefined_flag_CXX=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5 +echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6 + ;; + esac + fi + ;; +esac + +echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + linux*) + if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ 01.* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + if test $supports_anon_versioning = yes; then + archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~ +cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ +$echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + else + $archive_expsym_cmds="$archive_cmds" + fi + else + ld_shlibs=no + fi + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +kfreebsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + # Handle Gentoo/FreeBSD as it was Linux + case $host_vendor in + gentoo) + version_type=linux ;; + *) + version_type=freebsd-$objformat ;; + esac + + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + linux) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + need_lib_prefix=no + need_version=no + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + *) # from 3.2 on + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + case $host_cpu:$lt_cv_cc_64bit_output in + powerpc64:yes | s390x:yes | sparc64:yes | x86_64:yes) + sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /usr/X11R6/lib64" + sys_lib_search_path_spec="/lib64 /usr/lib64 /usr/local/lib64 /usr/X11R6/lib64" + ;; + esac + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + + # Find out which ABI we are using (multilib Linux x86_64 hack). + libsuff= + case "$host_cpu" in + x86_64*) + echo '#line 12046 "configure"' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + case `/usr/bin/file conftest.$ac_objext` in + *64-bit*) + libsuff=64 + ;; + esac + fi + rm -rf conftest* + ;; + *) + ;; + esac + sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff}" + sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" + ;; + +knetbsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +sco3.2v5*) + version_type=osf + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6 +test "$dynamic_linker" = no && can_build_shared=no + +echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 +hardcode_action_CXX= +if test -n "$hardcode_libdir_flag_spec_CXX" || \ + test -n "$runpath_var_CXX" || \ + test "X$hardcode_automatic_CXX" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct_CXX" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, CXX)" != no && + test "$hardcode_minus_L_CXX" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_CXX=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_CXX=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_CXX=unsupported +fi +echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5 +echo "${ECHO_T}$hardcode_action_CXX" >&6 + +if test "$hardcode_action_CXX" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + +striplib= +old_striplib= +echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 +echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + ;; + *) + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + ;; + esac +fi + +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dl_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + +fi + + ;; + + *) + echo "$as_me:$LINENO: checking for shl_load" >&5 +echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 +if test "${ac_cv_func_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define shl_load to an innocuous variant, in case declares shl_load. + For example, HP-UX 11i declares gettimeofday. */ +#define shl_load innocuous_shl_load + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char shl_load (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef shl_load + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_shl_load) || defined (__stub___shl_load) +choke me +#else +char (*f) () = shl_load; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != shl_load; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_shl_load=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 +echo "${ECHO_T}$ac_cv_func_shl_load" >&6 +if test $ac_cv_func_shl_load = yes; then + lt_cv_dlopen="shl_load" +else + echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 +echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load (); +int +main () +{ +shl_load (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dld_shl_load=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 +if test $ac_cv_lib_dld_shl_load = yes; then + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" +else + echo "$as_me:$LINENO: checking for dlopen" >&5 +echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 +if test "${ac_cv_func_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define dlopen to an innocuous variant, in case declares dlopen. + For example, HP-UX 11i declares gettimeofday. */ +#define dlopen innocuous_dlopen + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char dlopen (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef dlopen + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_dlopen) || defined (__stub___dlopen) +choke me +#else +char (*f) () = dlopen; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != dlopen; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 +echo "${ECHO_T}$ac_cv_func_dlopen" >&6 +if test $ac_cv_func_dlopen = yes; then + lt_cv_dlopen="dlopen" +else + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dl_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 +echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 +if test "${ac_cv_lib_svld_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_svld_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_svld_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 +if test $ac_cv_lib_svld_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +else + echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 +echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_dld_link+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dld_link (); +int +main () +{ +dld_link (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_dld_link=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dld_dld_link=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 +if test $ac_cv_lib_dld_dld_link = yes; then + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 +echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 +if test "${lt_cv_dlopen_self+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_unknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self" >&6 + + if test "x$lt_cv_dlopen_self" = xyes; then + LDFLAGS="$LDFLAGS $link_static_flag" + echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 +echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 +if test "${lt_cv_dlopen_self_static+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_CXX \ + CC_CXX \ + LD_CXX \ + lt_prog_compiler_wl_CXX \ + lt_prog_compiler_pic_CXX \ + lt_prog_compiler_static_CXX \ + lt_prog_compiler_no_builtin_flag_CXX \ + export_dynamic_flag_spec_CXX \ + thread_safe_flag_spec_CXX \ + whole_archive_flag_spec_CXX \ + enable_shared_with_static_runtimes_CXX \ + old_archive_cmds_CXX \ + old_archive_from_new_cmds_CXX \ + predep_objects_CXX \ + postdep_objects_CXX \ + predeps_CXX \ + postdeps_CXX \ + compiler_lib_search_path_CXX \ + archive_cmds_CXX \ + archive_expsym_cmds_CXX \ + postinstall_cmds_CXX \ + postuninstall_cmds_CXX \ + old_archive_from_expsyms_cmds_CXX \ + allow_undefined_flag_CXX \ + no_undefined_flag_CXX \ + export_symbols_cmds_CXX \ + hardcode_libdir_flag_spec_CXX \ + hardcode_libdir_flag_spec_ld_CXX \ + hardcode_libdir_separator_CXX \ + hardcode_automatic_CXX \ + module_cmds_CXX \ + module_expsym_cmds_CXX \ + lt_cv_prog_compiler_c_o_CXX \ + exclude_expsyms_CXX \ + include_expsyms_CXX; do + + case $var in + old_archive_cmds_CXX | \ + old_archive_from_new_cmds_CXX | \ + archive_cmds_CXX | \ + archive_expsym_cmds_CXX | \ + module_cmds_CXX | \ + module_expsym_cmds_CXX | \ + old_archive_from_expsyms_cmds_CXX | \ + export_symbols_cmds_CXX | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_CXX + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# A language-specific compiler. +CC=$lt_compiler_CXX + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_CXX + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_CXX + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_CXX + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_CXX +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_CXX + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_CXX +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_CXX +archive_expsym_cmds=$lt_archive_expsym_cmds_CXX +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_CXX +module_expsym_cmds=$lt_module_expsym_cmds_CXX + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects_CXX + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_CXX + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_CXX + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_CXX + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_CXX + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_CXX + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_CXX + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_CXX + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_CXX + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_CXX + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_CXX + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_CXX + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path_CXX" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_CXX + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_CXX + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_CXX + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_CXX + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +CC=$lt_save_CC +LDCXX=$LD +LD=$lt_save_LD +GCC=$lt_save_GCC +with_gnu_ldcxx=$with_gnu_ld +with_gnu_ld=$lt_save_with_gnu_ld +lt_cv_path_LDCXX=$lt_cv_path_LD +lt_cv_path_LD=$lt_save_path_LD +lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld +lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld + + else + tagname="" + fi + ;; + + F77) + if test -n "$F77" && test "X$F77" != "Xno"; then + +ac_ext=f +ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' +ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_f77_compiler_gnu + + +archive_cmds_need_lc_F77=no +allow_undefined_flag_F77= +always_export_symbols_F77=no +archive_expsym_cmds_F77= +export_dynamic_flag_spec_F77= +hardcode_direct_F77=no +hardcode_libdir_flag_spec_F77= +hardcode_libdir_flag_spec_ld_F77= +hardcode_libdir_separator_F77= +hardcode_minus_L_F77=no +hardcode_automatic_F77=no +module_cmds_F77= +module_expsym_cmds_F77= +link_all_deplibs_F77=unknown +old_archive_cmds_F77=$old_archive_cmds +no_undefined_flag_F77= +whole_archive_flag_spec_F77= +enable_shared_with_static_runtimes_F77=no + +# Source file extension for f77 test sources. +ac_ext=f + +# Object file extension for compiled f77 test sources. +objext=o +objext_F77=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code=" subroutine t\n return\n end\n" + +# Code to be used in simple link tests +lt_simple_link_test_code=" program t\n end\n" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${F77-"f77"} +compiler=$CC +compiler_F77=$CC +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 +echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: $can_build_shared" >&5 +echo "${ECHO_T}$can_build_shared" >&6 + +echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 +echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6 +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case $host_os in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; +aix4* | aix5*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; +esac +echo "$as_me:$LINENO: result: $enable_shared" >&5 +echo "${ECHO_T}$enable_shared" >&6 + +echo "$as_me:$LINENO: checking whether to build static libraries" >&5 +echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +echo "$as_me:$LINENO: result: $enable_static" >&5 +echo "${ECHO_T}$enable_static" >&6 + +test "$ld_shlibs_F77" = no && can_build_shared=no + +GCC_F77="$G77" +LD_F77="$LD" + +lt_prog_compiler_wl_F77= +lt_prog_compiler_pic_F77= +lt_prog_compiler_static_F77= + +echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 + + if test "$GCC" = yes; then + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_static_F77='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_F77='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_F77='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_F77='-fno-common' + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared_F77=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_F77=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_F77='-fPIC' + ;; + esac + ;; + + *) + lt_prog_compiler_pic_F77='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl_F77='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_F77='-Bstatic' + else + lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic_F77='-qnocommon' + lt_prog_compiler_wl_F77='-Wl,' + ;; + esac + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_F77='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl_F77='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_F77='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static_F77='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl_F77='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static_F77='-non_shared' + ;; + + newsos6) + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + linux*) + case $cc_basename in + icc* | ecc*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-fpic' + lt_prog_compiler_static_F77='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl_F77='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static_F77='-non_shared' + ;; + esac + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl_F77='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static_F77='-non_shared' + ;; + + sco3.2v5*) + lt_prog_compiler_pic_F77='-Kpic' + lt_prog_compiler_static_F77='-dn' + ;; + + solaris*) + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + lt_prog_compiler_wl_F77='-Qoption ld ';; + *) + lt_prog_compiler_wl_F77='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl_F77='-Qoption ld ' + lt_prog_compiler_pic_F77='-PIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic_F77='-Kconform_pic' + lt_prog_compiler_static_F77='-Bstatic' + fi + ;; + + unicos*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_can_build_shared_F77=no + ;; + + uts4*) + lt_prog_compiler_pic_F77='-pic' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared_F77=no + ;; + esac + fi + +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6 + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_F77"; then + +echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6 +if test "${lt_prog_compiler_pic_works_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_pic_works_F77=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_F77" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:13893: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:13897: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp + $SED '/^$/d' conftest.err >conftest.er2 + if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_pic_works_F77=yes + fi + fi + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_F77" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_works_F77" >&6 + +if test x"$lt_prog_compiler_pic_works_F77" = xyes; then + case $lt_prog_compiler_pic_F77 in + "" | " "*) ;; + *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;; + esac +else + lt_prog_compiler_pic_F77= + lt_prog_compiler_can_build_shared_F77=no +fi + +fi +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_F77= + ;; + *) + lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77" + ;; +esac + +echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 +if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o_F77=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:13955: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:13959: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp + $SED '/^$/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_F77=yes + fi + fi + chmod u+w . 2>&5 + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6 + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6 + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 + + runpath_var= + allow_undefined_flag_F77= + enable_shared_with_static_runtimes_F77=no + archive_cmds_F77= + archive_expsym_cmds_F77= + old_archive_From_new_cmds_F77= + old_archive_from_expsyms_cmds_F77= + export_dynamic_flag_spec_F77= + whole_archive_flag_spec_F77= + thread_safe_flag_spec_F77= + hardcode_libdir_flag_spec_F77= + hardcode_libdir_flag_spec_ld_F77= + hardcode_libdir_separator_F77= + hardcode_direct_F77=no + hardcode_minus_L_F77=no + hardcode_shlibpath_var_F77=unsupported + link_all_deplibs_F77=unknown + hardcode_automatic_F77=no + module_cmds_F77= + module_expsym_cmds_F77= + always_export_symbols_F77=no + export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms_F77= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms_F77="_GLOBAL_OFFSET_TABLE_" + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + extract_expsyms_cmds= + # Just being paranoid about ensuring that cc_basename is set. + for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + ld_shlibs_F77=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_F77='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_F77= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs_F77=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_minus_L_F77=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + ld_shlibs_F77=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_F77=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs_F77=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_F77='-L$libdir' + allow_undefined_flag_F77=unsupported + always_export_symbols_F77=no + enable_shared_with_static_runtimes_F77=yes + export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + else + ld_shlibs_F77=no + fi + ;; + + linux*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers + whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + archive_cmds_F77='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + else + ld_shlibs_F77=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris* | sysv5*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs_F77=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_F77=no + fi + ;; + + sunos4*) + archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_F77=no + fi + ;; + esac + + if test "$ld_shlibs_F77" = no; then + runpath_var= + hardcode_libdir_flag_spec_F77= + export_dynamic_flag_spec_F77= + whole_archive_flag_spec_F77= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag_F77=unsupported + always_export_symbols_F77=yes + archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L_F77=yes + if test "$GCC" = yes && test -z "$link_static_flag"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct_F77=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix5*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_F77='' + hardcode_direct_F77=yes + hardcode_libdir_separator_F77=':' + link_all_deplibs_F77=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct_F77=yes + else + # We have old collect2 + hardcode_direct_F77=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_F77=yes + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_libdir_separator_F77= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols_F77=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag_F77='-berok' + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF + program main + + end +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_f77_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_F77="-z nodefs" + archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF + program main + + end +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_f77_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_F77=' ${wl}-bernotok' + allow_undefined_flag_F77=' ${wl}-berok' + # -bexpall does not export symbols beginning with underscore (_) + always_export_symbols_F77=yes + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_F77=' ' + archive_cmds_need_lc_F77=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_minus_L_F77=yes + # see comment about different semantics on the GNU ld section + ld_shlibs_F77=no + ;; + + bsdi[45]*) + export_dynamic_flag_spec_F77=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec_F77=' ' + allow_undefined_flag_F77=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_From_new_cmds_F77='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds_F77='lib /OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path_F77='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes_F77=yes + ;; + + darwin* | rhapsody*) + case $host_os in + rhapsody* | darwin1.[012]) + allow_undefined_flag_F77='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag_F77='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc_F77=no + hardcode_direct_F77=no + hardcode_automatic_F77=yes + hardcode_shlibpath_var_F77=unsupported + whole_archive_flag_spec_F77='' + link_all_deplibs_F77=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + archive_cmds_F77='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs_F77=no + ;; + esac + fi + ;; + + dgux*) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_shlibpath_var_F77=no + ;; + + freebsd1*) + ld_shlibs_F77=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=yes + hardcode_minus_L_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | kfreebsd*-gnu | dragonfly*) + archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_F77=: + hardcode_direct_F77=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_F77=yes + export_dynamic_flag_spec_F77='${wl}-E' + ;; + + hpux10* | hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*|ia64*) + archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*|ia64*) + archive_cmds_F77='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' + ;; + *) + archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' + hardcode_libdir_flag_spec_ld_F77='+b $libdir' + hardcode_libdir_separator_F77=: + hardcode_direct_F77=no + hardcode_shlibpath_var_F77=no + ;; + ia64*) + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_direct_F77=no + hardcode_shlibpath_var_F77=no + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_F77=yes + ;; + *) + hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_F77=: + hardcode_direct_F77=yes + export_dynamic_flag_spec_F77='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_F77=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_ld_F77='-rpath $libdir' + fi + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_F77=: + link_all_deplibs_F77=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + newsos6) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=yes + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_F77=: + hardcode_shlibpath_var_F77=no + ;; + + openbsd*) + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' + export_dynamic_flag_spec_F77='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_F77='-R$libdir' + ;; + *) + archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + + os2*) + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_minus_L_F77=yes + allow_undefined_flag_F77=unsupported + archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag_F77=' -expect_unresolved \*' + archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_F77=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag_F77=' -expect_unresolved \*' + archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec_F77='-rpath $libdir' + fi + hardcode_libdir_separator_F77=: + ;; + + sco3.2v5*) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_F77=no + export_dynamic_flag_spec_F77='${wl}-Bexport' + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ;; + + solaris*) + no_undefined_flag_F77=' -z text' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + wlarc='' + archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_shlibpath_var_F77=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine linker options so we + # cannot just pass the convience library names through + # without $wl, iff we do not link with $LD. + # Luckily, gcc supports the same syntax we need for Sun Studio. + # Supported since Solaris 2.6 (maybe 2.5.1?) + case $wlarc in + '') + whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' ;; + *) + whole_archive_flag_spec_F77='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; + esac ;; + esac + link_all_deplibs_F77=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_direct_F77=yes + hardcode_minus_L_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds_F77='$CC -r -o $output$reload_objs' + hardcode_direct_F77=no + ;; + motorola) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var_F77=no + ;; + + sysv4.3*) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_F77=no + export_dynamic_flag_spec_F77='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_F77=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs_F77=yes + fi + ;; + + sysv4.2uw2*) + archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=yes + hardcode_minus_L_F77=no + hardcode_shlibpath_var_F77=no + hardcode_runpath_var=yes + runpath_var=LD_RUN_PATH + ;; + + sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) + no_undefined_flag_F77='${wl}-z ${wl}text' + if test "$GCC" = yes; then + archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_F77='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var_F77=no + ;; + + sysv5*) + no_undefined_flag_F77=' -z text' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + hardcode_libdir_flag_spec_F77= + hardcode_shlibpath_var_F77=no + runpath_var='LD_RUN_PATH' + ;; + + uts4*) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_shlibpath_var_F77=no + ;; + + *) + ld_shlibs_F77=no + ;; + esac + fi + +echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5 +echo "${ECHO_T}$ld_shlibs_F77" >&6 +test "$ld_shlibs_F77" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_F77" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_F77=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds_F77 in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_F77 + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_F77 + allow_undefined_flag_F77= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc_F77=no + else + archive_cmds_need_lc_F77=yes + fi + allow_undefined_flag_F77=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5 +echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6 + ;; + esac + fi + ;; +esac + +echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + linux*) + if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ 01.* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + if test $supports_anon_versioning = yes; then + archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~ +cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ +$echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + else + $archive_expsym_cmds="$archive_cmds" + fi + else + ld_shlibs=no + fi + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +kfreebsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + # Handle Gentoo/FreeBSD as it was Linux + case $host_vendor in + gentoo) + version_type=linux ;; + *) + version_type=freebsd-$objformat ;; + esac + + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + linux) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + need_lib_prefix=no + need_version=no + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + *) # from 3.2 on + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + case $host_cpu:$lt_cv_cc_64bit_output in + powerpc64:yes | s390x:yes | sparc64:yes | x86_64:yes) + sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /usr/X11R6/lib64" + sys_lib_search_path_spec="/lib64 /usr/lib64 /usr/local/lib64 /usr/X11R6/lib64" + ;; + esac + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + + # Find out which ABI we are using (multilib Linux x86_64 hack). + libsuff= + case "$host_cpu" in + x86_64*) + echo '#line 15387 "configure"' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + case `/usr/bin/file conftest.$ac_objext` in + *64-bit*) + libsuff=64 + ;; + esac + fi + rm -rf conftest* + ;; + *) + ;; + esac + sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff}" + sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" + ;; + +knetbsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +sco3.2v5*) + version_type=osf + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6 +test "$dynamic_linker" = no && can_build_shared=no + +echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 +hardcode_action_F77= +if test -n "$hardcode_libdir_flag_spec_F77" || \ + test -n "$runpath_var_F77" || \ + test "X$hardcode_automatic_F77" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct_F77" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no && + test "$hardcode_minus_L_F77" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_F77=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_F77=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_F77=unsupported +fi +echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5 +echo "${ECHO_T}$hardcode_action_F77" >&6 + +if test "$hardcode_action_F77" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + +striplib= +old_striplib= +echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 +echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + ;; + *) + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + ;; + esac +fi + + + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_F77 \ + CC_F77 \ + LD_F77 \ + lt_prog_compiler_wl_F77 \ + lt_prog_compiler_pic_F77 \ + lt_prog_compiler_static_F77 \ + lt_prog_compiler_no_builtin_flag_F77 \ + export_dynamic_flag_spec_F77 \ + thread_safe_flag_spec_F77 \ + whole_archive_flag_spec_F77 \ + enable_shared_with_static_runtimes_F77 \ + old_archive_cmds_F77 \ + old_archive_from_new_cmds_F77 \ + predep_objects_F77 \ + postdep_objects_F77 \ + predeps_F77 \ + postdeps_F77 \ + compiler_lib_search_path_F77 \ + archive_cmds_F77 \ + archive_expsym_cmds_F77 \ + postinstall_cmds_F77 \ + postuninstall_cmds_F77 \ + old_archive_from_expsyms_cmds_F77 \ + allow_undefined_flag_F77 \ + no_undefined_flag_F77 \ + export_symbols_cmds_F77 \ + hardcode_libdir_flag_spec_F77 \ + hardcode_libdir_flag_spec_ld_F77 \ + hardcode_libdir_separator_F77 \ + hardcode_automatic_F77 \ + module_cmds_F77 \ + module_expsym_cmds_F77 \ + lt_cv_prog_compiler_c_o_F77 \ + exclude_expsyms_F77 \ + include_expsyms_F77; do + + case $var in + old_archive_cmds_F77 | \ + old_archive_from_new_cmds_F77 | \ + archive_cmds_F77 | \ + archive_expsym_cmds_F77 | \ + module_cmds_F77 | \ + module_expsym_cmds_F77 | \ + old_archive_from_expsyms_cmds_F77 | \ + export_symbols_cmds_F77 | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_F77 + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77 + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# A language-specific compiler. +CC=$lt_compiler_F77 + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_F77 + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_F77 + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_F77 + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_F77 +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77 + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_F77 + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77 + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77 + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77 + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77 + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_F77 +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77 + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77 + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_F77 +archive_expsym_cmds=$lt_archive_expsym_cmds_F77 +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_F77 +module_expsym_cmds=$lt_module_expsym_cmds_F77 + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects_F77 + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_F77 + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_F77 + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_F77 + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_F77 + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_F77 + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_F77 + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_F77 + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77 + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_F77 + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77 + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_F77 + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_F77 + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_F77 + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_F77 + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_F77 + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path_F77" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_F77 + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_F77 + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_F77 + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_F77 + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +CC="$lt_save_CC" + + else + tagname="" + fi + ;; + + GCJ) + if test -n "$GCJ" && test "X$GCJ" != "Xno"; then + + + +# Source file extension for Java test sources. +ac_ext=java + +# Object file extension for compiled Java test sources. +objext=o +objext_GCJ=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="class foo {}\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }\n' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${GCJ-"gcj"} +compiler=$CC +compiler_GCJ=$CC +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +# GCJ did not exist at the time GCC didn't implicitly link libc in. +archive_cmds_need_lc_GCJ=no + +old_archive_cmds_GCJ=$old_archive_cmds + + +lt_prog_compiler_no_builtin_flag_GCJ= + +if test "$GCC" = yes; then + lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin' + + +echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 +if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:16153: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:16157: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp + $SED '/^$/d' conftest.err >conftest.er2 + if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6 + +if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then + lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions" +else + : +fi + +fi + +lt_prog_compiler_wl_GCJ= +lt_prog_compiler_pic_GCJ= +lt_prog_compiler_static_GCJ= + +echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 + + if test "$GCC" = yes; then + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_static_GCJ='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_GCJ='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_GCJ='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_GCJ='-fno-common' + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared_GCJ=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_GCJ=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_GCJ='-fPIC' + ;; + esac + ;; + + *) + lt_prog_compiler_pic_GCJ='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl_GCJ='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_GCJ='-Bstatic' + else + lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic_GCJ='-qnocommon' + lt_prog_compiler_wl_GCJ='-Wl,' + ;; + esac + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_GCJ='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl_GCJ='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_GCJ='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl_GCJ='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static_GCJ='-non_shared' + ;; + + newsos6) + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + linux*) + case $cc_basename in + icc* | ecc*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-fpic' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl_GCJ='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static_GCJ='-non_shared' + ;; + esac + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl_GCJ='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static_GCJ='-non_shared' + ;; + + sco3.2v5*) + lt_prog_compiler_pic_GCJ='-Kpic' + lt_prog_compiler_static_GCJ='-dn' + ;; + + solaris*) + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + lt_prog_compiler_wl_GCJ='-Qoption ld ';; + *) + lt_prog_compiler_wl_GCJ='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl_GCJ='-Qoption ld ' + lt_prog_compiler_pic_GCJ='-PIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic_GCJ='-Kconform_pic' + lt_prog_compiler_static_GCJ='-Bstatic' + fi + ;; + + unicos*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_can_build_shared_GCJ=no + ;; + + uts4*) + lt_prog_compiler_pic_GCJ='-pic' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared_GCJ=no + ;; + esac + fi + +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6 + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_GCJ"; then + +echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6 +if test "${lt_prog_compiler_pic_works_GCJ+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_pic_works_GCJ=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_GCJ" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:16415: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:16419: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp + $SED '/^$/d' conftest.err >conftest.er2 + if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_pic_works_GCJ=yes + fi + fi + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_GCJ" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_works_GCJ" >&6 + +if test x"$lt_prog_compiler_pic_works_GCJ" = xyes; then + case $lt_prog_compiler_pic_GCJ in + "" | " "*) ;; + *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;; + esac +else + lt_prog_compiler_pic_GCJ= + lt_prog_compiler_can_build_shared_GCJ=no +fi + +fi +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_GCJ= + ;; + *) + lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ" + ;; +esac + +echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 +if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o_GCJ=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:16477: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:16481: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp + $SED '/^$/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_GCJ=yes + fi + fi + chmod u+w . 2>&5 + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6 + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6 + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 + + runpath_var= + allow_undefined_flag_GCJ= + enable_shared_with_static_runtimes_GCJ=no + archive_cmds_GCJ= + archive_expsym_cmds_GCJ= + old_archive_From_new_cmds_GCJ= + old_archive_from_expsyms_cmds_GCJ= + export_dynamic_flag_spec_GCJ= + whole_archive_flag_spec_GCJ= + thread_safe_flag_spec_GCJ= + hardcode_libdir_flag_spec_GCJ= + hardcode_libdir_flag_spec_ld_GCJ= + hardcode_libdir_separator_GCJ= + hardcode_direct_GCJ=no + hardcode_minus_L_GCJ=no + hardcode_shlibpath_var_GCJ=unsupported + link_all_deplibs_GCJ=unknown + hardcode_automatic_GCJ=no + module_cmds_GCJ= + module_expsym_cmds_GCJ= + always_export_symbols_GCJ=no + export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms_GCJ= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms_GCJ="_GLOBAL_OFFSET_TABLE_" + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + extract_expsyms_cmds= + # Just being paranoid about ensuring that cc_basename is set. + for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + ld_shlibs_GCJ=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_GCJ='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_GCJ= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs_GCJ=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_minus_L_GCJ=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + ld_shlibs_GCJ=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_GCJ=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_GCJ='-L$libdir' + allow_undefined_flag_GCJ=unsupported + always_export_symbols_GCJ=no + enable_shared_with_static_runtimes_GCJ=yes + export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + else + ld_shlibs_GCJ=no + fi + ;; + + linux*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers + whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + archive_cmds_GCJ='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + else + ld_shlibs_GCJ=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris* | sysv5*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs_GCJ=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + + sunos4*) + archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + esac + + if test "$ld_shlibs_GCJ" = no; then + runpath_var= + hardcode_libdir_flag_spec_GCJ= + export_dynamic_flag_spec_GCJ= + whole_archive_flag_spec_GCJ= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag_GCJ=unsupported + always_export_symbols_GCJ=yes + archive_expsym_cmds_GCJ='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L_GCJ=yes + if test "$GCC" = yes && test -z "$link_static_flag"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct_GCJ=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_GCJ='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix5*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_GCJ='' + hardcode_direct_GCJ=yes + hardcode_libdir_separator_GCJ=':' + link_all_deplibs_GCJ=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct_GCJ=yes + else + # We have old collect2 + hardcode_direct_GCJ=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_GCJ=yes + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_libdir_separator_GCJ= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols_GCJ=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag_GCJ='-berok' + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_GCJ="-z nodefs" + archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_GCJ=' ${wl}-bernotok' + allow_undefined_flag_GCJ=' ${wl}-berok' + # -bexpall does not export symbols beginning with underscore (_) + always_export_symbols_GCJ=yes + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_GCJ=' ' + archive_cmds_need_lc_GCJ=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_minus_L_GCJ=yes + # see comment about different semantics on the GNU ld section + ld_shlibs_GCJ=no + ;; + + bsdi[45]*) + export_dynamic_flag_spec_GCJ=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec_GCJ=' ' + allow_undefined_flag_GCJ=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_From_new_cmds_GCJ='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds_GCJ='lib /OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path_GCJ='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes_GCJ=yes + ;; + + darwin* | rhapsody*) + case $host_os in + rhapsody* | darwin1.[012]) + allow_undefined_flag_GCJ='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag_GCJ='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc_GCJ=no + hardcode_direct_GCJ=no + hardcode_automatic_GCJ=yes + hardcode_shlibpath_var_GCJ=unsupported + whole_archive_flag_spec_GCJ='' + link_all_deplibs_GCJ=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + archive_cmds_GCJ='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds_GCJ='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs_GCJ=no + ;; + esac + fi + ;; + + dgux*) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_shlibpath_var_GCJ=no + ;; + + freebsd1*) + ld_shlibs_GCJ=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=yes + hardcode_minus_L_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | kfreebsd*-gnu | dragonfly*) + archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds_GCJ='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds_GCJ='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + hardcode_direct_GCJ=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_GCJ=yes + export_dynamic_flag_spec_GCJ='${wl}-E' + ;; + + hpux10* | hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*|ia64*) + archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*|ia64*) + archive_cmds_GCJ='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' + ;; + *) + archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' + hardcode_libdir_flag_spec_ld_GCJ='+b $libdir' + hardcode_libdir_separator_GCJ=: + hardcode_direct_GCJ=no + hardcode_shlibpath_var_GCJ=no + ;; + ia64*) + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_direct_GCJ=no + hardcode_shlibpath_var_GCJ=no + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_GCJ=yes + ;; + *) + hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + hardcode_direct_GCJ=yes + export_dynamic_flag_spec_GCJ='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_GCJ=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir' + fi + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + link_all_deplibs_GCJ=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + newsos6) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=yes + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + hardcode_shlibpath_var_GCJ=no + ;; + + openbsd*) + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' + export_dynamic_flag_spec_GCJ='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_GCJ='-R$libdir' + ;; + *) + archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + + os2*) + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_minus_L_GCJ=yes + allow_undefined_flag_GCJ=unsupported + archive_cmds_GCJ='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_From_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag_GCJ=' -expect_unresolved \*' + archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag_GCJ=' -expect_unresolved \*' + archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec_GCJ='-rpath $libdir' + fi + hardcode_libdir_separator_GCJ=: + ;; + + sco3.2v5*) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_GCJ=no + export_dynamic_flag_spec_GCJ='${wl}-Bexport' + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ;; + + solaris*) + no_undefined_flag_GCJ=' -z text' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + wlarc='' + archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_shlibpath_var_GCJ=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine linker options so we + # cannot just pass the convience library names through + # without $wl, iff we do not link with $LD. + # Luckily, gcc supports the same syntax we need for Sun Studio. + # Supported since Solaris 2.6 (maybe 2.5.1?) + case $wlarc in + '') + whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' ;; + *) + whole_archive_flag_spec_GCJ='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; + esac ;; + esac + link_all_deplibs_GCJ=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_direct_GCJ=yes + hardcode_minus_L_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds_GCJ='$CC -r -o $output$reload_objs' + hardcode_direct_GCJ=no + ;; + motorola) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var_GCJ=no + ;; + + sysv4.3*) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_GCJ=no + export_dynamic_flag_spec_GCJ='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_GCJ=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs_GCJ=yes + fi + ;; + + sysv4.2uw2*) + archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=yes + hardcode_minus_L_GCJ=no + hardcode_shlibpath_var_GCJ=no + hardcode_runpath_var=yes + runpath_var=LD_RUN_PATH + ;; + + sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) + no_undefined_flag_GCJ='${wl}-z ${wl}text' + if test "$GCC" = yes; then + archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_GCJ='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var_GCJ=no + ;; + + sysv5*) + no_undefined_flag_GCJ=' -z text' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + hardcode_libdir_flag_spec_GCJ= + hardcode_shlibpath_var_GCJ=no + runpath_var='LD_RUN_PATH' + ;; + + uts4*) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_shlibpath_var_GCJ=no + ;; + + *) + ld_shlibs_GCJ=no + ;; + esac + fi + +echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5 +echo "${ECHO_T}$ld_shlibs_GCJ" >&6 +test "$ld_shlibs_GCJ" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_GCJ" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_GCJ=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds_GCJ in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_GCJ + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ + allow_undefined_flag_GCJ= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc_GCJ=no + else + archive_cmds_need_lc_GCJ=yes + fi + allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5 +echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6 + ;; + esac + fi + ;; +esac + +echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + linux*) + if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ 01.* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + if test $supports_anon_versioning = yes; then + archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~ +cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ +$echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + else + $archive_expsym_cmds="$archive_cmds" + fi + else + ld_shlibs=no + fi + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +kfreebsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + # Handle Gentoo/FreeBSD as it was Linux + case $host_vendor in + gentoo) + version_type=linux ;; + *) + version_type=freebsd-$objformat ;; + esac + + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + linux) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + need_lib_prefix=no + need_version=no + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + *) # from 3.2 on + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + case $host_cpu:$lt_cv_cc_64bit_output in + powerpc64:yes | s390x:yes | sparc64:yes | x86_64:yes) + sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /usr/X11R6/lib64" + sys_lib_search_path_spec="/lib64 /usr/lib64 /usr/local/lib64 /usr/X11R6/lib64" + ;; + esac + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + + # Find out which ABI we are using (multilib Linux x86_64 hack). + libsuff= + case "$host_cpu" in + x86_64*) + echo '#line 17929 "configure"' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + case `/usr/bin/file conftest.$ac_objext` in + *64-bit*) + libsuff=64 + ;; + esac + fi + rm -rf conftest* + ;; + *) + ;; + esac + sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff}" + sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" + ;; + +knetbsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +sco3.2v5*) + version_type=osf + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6 +test "$dynamic_linker" = no && can_build_shared=no + +echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 +hardcode_action_GCJ= +if test -n "$hardcode_libdir_flag_spec_GCJ" || \ + test -n "$runpath_var_GCJ" || \ + test "X$hardcode_automatic_GCJ" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct_GCJ" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no && + test "$hardcode_minus_L_GCJ" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_GCJ=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_GCJ=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_GCJ=unsupported +fi +echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5 +echo "${ECHO_T}$hardcode_action_GCJ" >&6 + +if test "$hardcode_action_GCJ" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + +striplib= +old_striplib= +echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 +echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + ;; + *) + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + ;; + esac +fi + +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dl_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + +fi + + ;; + + *) + echo "$as_me:$LINENO: checking for shl_load" >&5 +echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 +if test "${ac_cv_func_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define shl_load to an innocuous variant, in case declares shl_load. + For example, HP-UX 11i declares gettimeofday. */ +#define shl_load innocuous_shl_load + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char shl_load (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef shl_load + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_shl_load) || defined (__stub___shl_load) +choke me +#else +char (*f) () = shl_load; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != shl_load; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_shl_load=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 +echo "${ECHO_T}$ac_cv_func_shl_load" >&6 +if test $ac_cv_func_shl_load = yes; then + lt_cv_dlopen="shl_load" +else + echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 +echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load (); +int +main () +{ +shl_load (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dld_shl_load=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 +if test $ac_cv_lib_dld_shl_load = yes; then + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" +else + echo "$as_me:$LINENO: checking for dlopen" >&5 +echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 +if test "${ac_cv_func_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define dlopen to an innocuous variant, in case declares dlopen. + For example, HP-UX 11i declares gettimeofday. */ +#define dlopen innocuous_dlopen + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char dlopen (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef dlopen + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_dlopen) || defined (__stub___dlopen) +choke me +#else +char (*f) () = dlopen; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != dlopen; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 +echo "${ECHO_T}$ac_cv_func_dlopen" >&6 +if test $ac_cv_func_dlopen = yes; then + lt_cv_dlopen="dlopen" +else + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dl_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 +echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 +if test "${ac_cv_lib_svld_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_svld_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_svld_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 +if test $ac_cv_lib_svld_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +else + echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 +echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_dld_link+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dld_link (); +int +main () +{ +dld_link (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_dld_link=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dld_dld_link=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 +if test $ac_cv_lib_dld_dld_link = yes; then + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 +echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 +if test "${lt_cv_dlopen_self+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_unknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self" >&6 + + if test "x$lt_cv_dlopen_self" = xyes; then + LDFLAGS="$LDFLAGS $link_static_flag" + echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 +echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 +if test "${lt_cv_dlopen_self_static+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_GCJ \ + CC_GCJ \ + LD_GCJ \ + lt_prog_compiler_wl_GCJ \ + lt_prog_compiler_pic_GCJ \ + lt_prog_compiler_static_GCJ \ + lt_prog_compiler_no_builtin_flag_GCJ \ + export_dynamic_flag_spec_GCJ \ + thread_safe_flag_spec_GCJ \ + whole_archive_flag_spec_GCJ \ + enable_shared_with_static_runtimes_GCJ \ + old_archive_cmds_GCJ \ + old_archive_from_new_cmds_GCJ \ + predep_objects_GCJ \ + postdep_objects_GCJ \ + predeps_GCJ \ + postdeps_GCJ \ + compiler_lib_search_path_GCJ \ + archive_cmds_GCJ \ + archive_expsym_cmds_GCJ \ + postinstall_cmds_GCJ \ + postuninstall_cmds_GCJ \ + old_archive_from_expsyms_cmds_GCJ \ + allow_undefined_flag_GCJ \ + no_undefined_flag_GCJ \ + export_symbols_cmds_GCJ \ + hardcode_libdir_flag_spec_GCJ \ + hardcode_libdir_flag_spec_ld_GCJ \ + hardcode_libdir_separator_GCJ \ + hardcode_automatic_GCJ \ + module_cmds_GCJ \ + module_expsym_cmds_GCJ \ + lt_cv_prog_compiler_c_o_GCJ \ + exclude_expsyms_GCJ \ + include_expsyms_GCJ; do + + case $var in + old_archive_cmds_GCJ | \ + old_archive_from_new_cmds_GCJ | \ + archive_cmds_GCJ | \ + archive_expsym_cmds_GCJ | \ + module_cmds_GCJ | \ + module_expsym_cmds_GCJ | \ + old_archive_from_expsyms_cmds_GCJ | \ + export_symbols_cmds_GCJ | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_GCJ + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_GCJ + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# A language-specific compiler. +CC=$lt_compiler_GCJ + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_GCJ + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_GCJ + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_GCJ + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_GCJ +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_GCJ + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_GCJ + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_GCJ + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_GCJ + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_GCJ + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_GCJ +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_GCJ + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_GCJ + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_GCJ +archive_expsym_cmds=$lt_archive_expsym_cmds_GCJ +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_GCJ +module_expsym_cmds=$lt_module_expsym_cmds_GCJ + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects_GCJ + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_GCJ + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_GCJ + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_GCJ + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_GCJ + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_GCJ + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_GCJ + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_GCJ + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_GCJ + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_GCJ + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_GCJ + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_GCJ + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_GCJ + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_GCJ + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_GCJ + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_GCJ + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path_GCJ" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_GCJ + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_GCJ + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_GCJ + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_GCJ + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +CC="$lt_save_CC" + + else + tagname="" + fi + ;; + + RC) + + + +# Source file extension for RC test sources. +ac_ext=rc + +# Object file extension for compiled RC test sources. +objext=o +objext_RC=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n' + +# Code to be used in simple link tests +lt_simple_link_test_code="$lt_simple_compile_test_code" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${RC-"windres"} +compiler=$CC +compiler_RC=$CC +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + +lt_cv_prog_compiler_c_o_RC=yes + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_RC \ + CC_RC \ + LD_RC \ + lt_prog_compiler_wl_RC \ + lt_prog_compiler_pic_RC \ + lt_prog_compiler_static_RC \ + lt_prog_compiler_no_builtin_flag_RC \ + export_dynamic_flag_spec_RC \ + thread_safe_flag_spec_RC \ + whole_archive_flag_spec_RC \ + enable_shared_with_static_runtimes_RC \ + old_archive_cmds_RC \ + old_archive_from_new_cmds_RC \ + predep_objects_RC \ + postdep_objects_RC \ + predeps_RC \ + postdeps_RC \ + compiler_lib_search_path_RC \ + archive_cmds_RC \ + archive_expsym_cmds_RC \ + postinstall_cmds_RC \ + postuninstall_cmds_RC \ + old_archive_from_expsyms_cmds_RC \ + allow_undefined_flag_RC \ + no_undefined_flag_RC \ + export_symbols_cmds_RC \ + hardcode_libdir_flag_spec_RC \ + hardcode_libdir_flag_spec_ld_RC \ + hardcode_libdir_separator_RC \ + hardcode_automatic_RC \ + module_cmds_RC \ + module_expsym_cmds_RC \ + lt_cv_prog_compiler_c_o_RC \ + exclude_expsyms_RC \ + include_expsyms_RC; do + + case $var in + old_archive_cmds_RC | \ + old_archive_from_new_cmds_RC | \ + archive_cmds_RC | \ + archive_expsym_cmds_RC | \ + module_cmds_RC | \ + module_expsym_cmds_RC | \ + old_archive_from_expsyms_cmds_RC | \ + export_symbols_cmds_RC | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_RC + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# A language-specific compiler. +CC=$lt_compiler_RC + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_RC + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_RC + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_RC + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_RC +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_RC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_RC + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_RC +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_RC +archive_expsym_cmds=$lt_archive_expsym_cmds_RC +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_RC +module_expsym_cmds=$lt_module_expsym_cmds_RC + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects_RC + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_RC + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_RC + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_RC + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_RC + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_RC + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_RC + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_RC + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_RC + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_RC + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_RC + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_RC + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_RC + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_RC + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path_RC" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_RC + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_RC + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_RC + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_RC + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +CC="$lt_save_CC" + + ;; + + *) + { { echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5 +echo "$as_me: error: Unsupported tag name: $tagname" >&2;} + { (exit 1); exit 1; }; } + ;; + esac + + # Append the new tag name to the list of available tags. + if test -n "$tagname" ; then + available_tags="$available_tags $tagname" + fi + fi + done + IFS="$lt_save_ifs" + + # Now substitute the updated list of available tags. + if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then + mv "${ofile}T" "$ofile" + chmod +x "$ofile" + else + rm -f "${ofile}T" + { { echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5 +echo "$as_me: error: unable to update list of available tagged configurations." >&2;} + { (exit 1); exit 1; }; } + fi +fi + + + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' + +# Prevent multiple expansion + + + + + + + + + + + + + + + + + + + + + + ac_config_files="$ac_config_files Makefile src/Makefile" +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, don't put newlines in cache variables' values. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +{ + (set) 2>&1 | + case `(ac_space=' '; set | grep ac_space) 2>&1` in + *ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} | + sed ' + t clear + : clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + : end' >>confcache +if diff $cache_file confcache >/dev/null 2>&1; then :; else + if test -w $cache_file; then + test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" + cat confcache >$cache_file + else + echo "not updating unwritable cache $cache_file" + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/; +s/:*\${srcdir}:*/:/; +s/:*@srcdir@:*/:/; +s/^\([^=]*=[ ]*\):*/\1/; +s/:*$//; +s/^[^=]*=[ ]*$//; +}' +fi + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_i=`echo "$ac_i" | + sed 's/\$U\././;s/\.o$//;s/\.obj$//'` + # 2. Add them. + ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi + +: ${CONFIG_STATUS=./config.status} +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 +echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >$CONFIG_STATUS <<_ACEOF +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false +SHELL=\${CONFIG_SHELL-$SHELL} +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi +DUALCASE=1; export DUALCASE # for MKS sh + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 +echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 +echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + +exec 6>&1 + +# Open the log real soon, to keep \$[0] and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. Logging --version etc. is OK. +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX +} >&5 +cat >&5 <<_CSEOF + +This file was extended by $as_me, which was +generated by GNU Autoconf 2.59. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +_CSEOF +echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 +echo >&5 +_ACEOF + +# Files that config.status was made for. +if test -n "$ac_config_files"; then + echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_headers"; then + echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_links"; then + echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_commands"; then + echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS +fi + +cat >>$CONFIG_STATUS <<\_ACEOF + +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to ." +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +ac_cs_version="\\ +config.status +configured by $0, generated by GNU Autoconf 2.59, + with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" + +Copyright (C) 2003 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." +srcdir=$srcdir +INSTALL="$INSTALL" +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# If no file are specified by the user, then we need to provide default +# value. By we need to know if files were specified by the user. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=*) + ac_option=`expr "x$1" : 'x\([^=]*\)='` + ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` + ac_shift=: + ;; + -*) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + *) # This is not an option, so the user has probably given explicit + # arguments. + ac_option=$1 + ac_need_defaults=false;; + esac + + case $ac_option in + # Handling of the options. +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --vers* | -V ) + echo "$ac_cs_version"; exit 0 ;; + --he | --h) + # Conflict between --help and --header + { { echo "$as_me:$LINENO: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + CONFIG_FILES="$CONFIG_FILES $ac_optarg" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + ac_need_defaults=false;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +if \$ac_cs_recheck; then + echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 + exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion +fi + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +# +# INIT-COMMANDS section. +# + +AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" + +_ACEOF + + + +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_config_target in $ac_config_targets +do + case "$ac_config_target" in + # Handling of arguments. + "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; + "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + esac +done + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason to put it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Create a temporary directory, and hook for its removal unless debugging. +$debug || +{ + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} + +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./confstat$$-$RANDOM + (umask 077 && mkdir $tmp) +} || +{ + echo "$me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } +} + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF + +# +# CONFIG_FILES section. +# + +# No need to generate the scripts if there are no CONFIG_FILES. +# This happens for instance when ./config.status config.h +if test -n "\$CONFIG_FILES"; then + # Protect against being on the right side of a sed subst in config.status. + sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; + s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF +s,@SHELL@,$SHELL,;t t +s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t +s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t +s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t +s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t +s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t +s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t +s,@exec_prefix@,$exec_prefix,;t t +s,@prefix@,$prefix,;t t +s,@program_transform_name@,$program_transform_name,;t t +s,@bindir@,$bindir,;t t +s,@sbindir@,$sbindir,;t t +s,@libexecdir@,$libexecdir,;t t +s,@datadir@,$datadir,;t t +s,@sysconfdir@,$sysconfdir,;t t +s,@sharedstatedir@,$sharedstatedir,;t t +s,@localstatedir@,$localstatedir,;t t +s,@libdir@,$libdir,;t t +s,@includedir@,$includedir,;t t +s,@oldincludedir@,$oldincludedir,;t t +s,@infodir@,$infodir,;t t +s,@mandir@,$mandir,;t t +s,@build_alias@,$build_alias,;t t +s,@host_alias@,$host_alias,;t t +s,@target_alias@,$target_alias,;t t +s,@DEFS@,$DEFS,;t t +s,@ECHO_C@,$ECHO_C,;t t +s,@ECHO_N@,$ECHO_N,;t t +s,@ECHO_T@,$ECHO_T,;t t +s,@LIBS@,$LIBS,;t t +s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t +s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t +s,@INSTALL_DATA@,$INSTALL_DATA,;t t +s,@CYGPATH_W@,$CYGPATH_W,;t t +s,@PACKAGE@,$PACKAGE,;t t +s,@VERSION@,$VERSION,;t t +s,@ACLOCAL@,$ACLOCAL,;t t +s,@AUTOCONF@,$AUTOCONF,;t t +s,@AUTOMAKE@,$AUTOMAKE,;t t +s,@AUTOHEADER@,$AUTOHEADER,;t t +s,@MAKEINFO@,$MAKEINFO,;t t +s,@install_sh@,$install_sh,;t t +s,@STRIP@,$STRIP,;t t +s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t +s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t +s,@mkdir_p@,$mkdir_p,;t t +s,@AWK@,$AWK,;t t +s,@SET_MAKE@,$SET_MAKE,;t t +s,@am__leading_dot@,$am__leading_dot,;t t +s,@AMTAR@,$AMTAR,;t t +s,@am__tar@,$am__tar,;t t +s,@am__untar@,$am__untar,;t t +s,@CXX@,$CXX,;t t +s,@CXXFLAGS@,$CXXFLAGS,;t t +s,@LDFLAGS@,$LDFLAGS,;t t +s,@CPPFLAGS@,$CPPFLAGS,;t t +s,@ac_ct_CXX@,$ac_ct_CXX,;t t +s,@EXEEXT@,$EXEEXT,;t t +s,@OBJEXT@,$OBJEXT,;t t +s,@DEPDIR@,$DEPDIR,;t t +s,@am__include@,$am__include,;t t +s,@am__quote@,$am__quote,;t t +s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t +s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t +s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t +s,@CXXDEPMODE@,$CXXDEPMODE,;t t +s,@am__fastdepCXX_TRUE@,$am__fastdepCXX_TRUE,;t t +s,@am__fastdepCXX_FALSE@,$am__fastdepCXX_FALSE,;t t +s,@build@,$build,;t t +s,@build_cpu@,$build_cpu,;t t +s,@build_vendor@,$build_vendor,;t t +s,@build_os@,$build_os,;t t +s,@host@,$host,;t t +s,@host_cpu@,$host_cpu,;t t +s,@host_vendor@,$host_vendor,;t t +s,@host_os@,$host_os,;t t +s,@CC@,$CC,;t t +s,@CFLAGS@,$CFLAGS,;t t +s,@ac_ct_CC@,$ac_ct_CC,;t t +s,@CCDEPMODE@,$CCDEPMODE,;t t +s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t +s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t +s,@EGREP@,$EGREP,;t t +s,@LN_S@,$LN_S,;t t +s,@ECHO@,$ECHO,;t t +s,@AR@,$AR,;t t +s,@ac_ct_AR@,$ac_ct_AR,;t t +s,@RANLIB@,$RANLIB,;t t +s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t +s,@CPP@,$CPP,;t t +s,@CXXCPP@,$CXXCPP,;t t +s,@F77@,$F77,;t t +s,@FFLAGS@,$FFLAGS,;t t +s,@ac_ct_F77@,$ac_ct_F77,;t t +s,@LIBTOOL@,$LIBTOOL,;t t +s,@LIBOBJS@,$LIBOBJS,;t t +s,@LTLIBOBJS@,$LTLIBOBJS,;t t +CEOF + +_ACEOF + + cat >>$CONFIG_STATUS <<\_ACEOF + # Split the substitutions into bite-sized pieces for seds with + # small command number limits, like on Digital OSF/1 and HP-UX. + ac_max_sed_lines=48 + ac_sed_frag=1 # Number of current file. + ac_beg=1 # First line for current file. + ac_end=$ac_max_sed_lines # Line after last line for current file. + ac_more_lines=: + ac_sed_cmds= + while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + else + sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + fi + if test ! -s $tmp/subs.frag; then + ac_more_lines=false + else + # The purpose of the label and of the branching condition is to + # speed up the sed processing (if there are no `@' at all, there + # is no need to browse any of the substitutions). + # These are the two extra sed commands mentioned above. + (echo ':t + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" + else + ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" + fi + ac_sed_frag=`expr $ac_sed_frag + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_lines` + fi + done + if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat + fi +fi # test -n "$CONFIG_FILES" + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_builddir$INSTALL ;; + esac + + if test x"$ac_file" != x-; then + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + rm -f "$ac_file" + fi + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + configure_input= + else + configure_input="$ac_file. " + fi + configure_input=$configure_input"Generated from `echo $ac_file_in | + sed 's,.*/,,'` by configure." + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo "$f";; + *) # Relative + if test -f "$f"; then + # Build tree + echo "$f" + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF + sed "$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s,@configure_input@,$configure_input,;t t +s,@srcdir@,$ac_srcdir,;t t +s,@abs_srcdir@,$ac_abs_srcdir,;t t +s,@top_srcdir@,$ac_top_srcdir,;t t +s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t +s,@builddir@,$ac_builddir,;t t +s,@abs_builddir@,$ac_abs_builddir,;t t +s,@top_builddir@,$ac_top_builddir,;t t +s,@abs_top_builddir@,$ac_abs_top_builddir,;t t +s,@INSTALL@,$ac_INSTALL,;t t +" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out + rm -f $tmp/stdin + if test x"$ac_file" != x-; then + mv $tmp/out $ac_file + else + cat $tmp/out + rm -f $tmp/out + fi + +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_HEADER section. +# + +# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +# NAME is the cpp macro being defined and VALUE is the value it is being given. +# +# ac_d sets the value in "#define NAME VALUE" lines. +ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' +ac_dB='[ ].*$,\1#\2' +ac_dC=' ' +ac_dD=',;t' +# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_uB='$,\1#\2define\3' +ac_uC=' ' +ac_uD=',;t' + +for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + # Do quote $f, to prevent DOS paths from being IFS'd. + echo "$f";; + *) # Relative + if test -f "$f"; then + # Build tree + echo "$f" + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } + # Remove the trailing spaces. + sed 's/[ ]*$//' $ac_file_inputs >$tmp/in + +_ACEOF + +# Transform confdefs.h into two sed scripts, `conftest.defines' and +# `conftest.undefs', that substitutes the proper values into +# config.h.in to produce config.h. The first handles `#define' +# templates, and the second `#undef' templates. +# And first: Protect against being on the right side of a sed subst in +# config.status. Protect against being in an unquoted here document +# in config.status. +rm -f conftest.defines conftest.undefs +# Using a here document instead of a string reduces the quoting nightmare. +# Putting comments in sed scripts is not portable. +# +# `end' is used to avoid that the second main sed command (meant for +# 0-ary CPP macros) applies to n-ary macro definitions. +# See the Autoconf documentation for `clear'. +cat >confdef2sed.sed <<\_ACEOF +s/[\\&,]/\\&/g +s,[\\$`],\\&,g +t clear +: clear +s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp +t end +s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp +: end +_ACEOF +# If some macros were called several times there might be several times +# the same #defines, which is useless. Nevertheless, we may not want to +# sort them, since we want the *last* AC-DEFINE to be honored. +uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines +sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs +rm -f confdef2sed.sed + +# This sed command replaces #undef with comments. This is necessary, for +# example, in the case of _POSIX_SOURCE, which is predefined and required +# on some systems where configure will not decide to define it. +cat >>conftest.undefs <<\_ACEOF +s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, +_ACEOF + +# Break up conftest.defines because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS +echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS +echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS +echo ' :' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.defines >/dev/null +do + # Write a limited-size here document to $tmp/defines.sed. + echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS + # Speed up: don't consider the non `#define' lines. + echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/defines.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail + rm -f conftest.defines + mv conftest.tail conftest.defines +done +rm -f conftest.defines +echo ' fi # grep' >>$CONFIG_STATUS +echo >>$CONFIG_STATUS + +# Break up conftest.undefs because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #undef templates' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.undefs >/dev/null +do + # Write a limited-size here document to $tmp/undefs.sed. + echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS + # Speed up: don't consider the non `#undef' + echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/undefs.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail + rm -f conftest.undefs + mv conftest.tail conftest.undefs +done +rm -f conftest.undefs + +cat >>$CONFIG_STATUS <<\_ACEOF + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + echo "/* Generated by configure. */" >$tmp/config.h + else + echo "/* $ac_file. Generated by configure. */" >$tmp/config.h + fi + cat $tmp/in >>$tmp/config.h + rm -f $tmp/in + if test x"$ac_file" != x-; then + if diff $ac_file $tmp/config.h >/dev/null 2>&1; then + { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 +echo "$as_me: $ac_file is unchanged" >&6;} + else + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + rm -f $ac_file + mv $tmp/config.h $ac_file + fi + else + cat $tmp/config.h + rm -f $tmp/config.h + fi +# Compute $ac_file's index in $config_headers. +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $ac_file | $ac_file:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null || +$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X$ac_file : 'X\(//\)[^/]' \| \ + X$ac_file : 'X\(//\)$' \| \ + X$ac_file : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X$ac_file | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'`/stamp-h$_am_stamp_count +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_COMMANDS section. +# +for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue + ac_dest=`echo "$ac_file" | sed 's,:.*,,'` + ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_dir=`(dirname "$ac_dest") 2>/dev/null || +$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_dest" : 'X\(//\)[^/]' \| \ + X"$ac_dest" : 'X\(//\)$' \| \ + X"$ac_dest" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_dest" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + + { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 +echo "$as_me: executing $ac_dest commands" >&6;} + case $ac_dest in + depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # So let's grep whole file. + if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then + dirpart=`(dirname "$mf") 2>/dev/null || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`(dirname "$file") 2>/dev/null || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p $dirpart/$fdir + else + as_dir=$dirpart/$fdir + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 +echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} + { (exit 1); exit 1; }; }; } + + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done + ;; + esac +done +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF + +{ (exit 0); exit 0; } +_ACEOF +chmod +x $CONFIG_STATUS +ac_clean_files=$ac_clean_files_save + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || { (exit 1); exit 1; } +fi + diff --git a/Cpp/TP4_ComptesBancaires/configure.in b/Cpp/TP4_ComptesBancaires/configure.in new file mode 100755 index 0000000..af5465c --- /dev/null +++ b/Cpp/TP4_ComptesBancaires/configure.in @@ -0,0 +1,10 @@ +AC_INIT(configure.in) + +AM_CONFIG_HEADER(config.h) +AM_INIT_AUTOMAKE(tp4_comptesbancaires, 0.1) + +AC_LANG_CPLUSPLUS +AC_PROG_CXX +AM_PROG_LIBTOOL + +AC_OUTPUT(Makefile src/Makefile) diff --git a/Cpp/TP4_ComptesBancaires/depcomp b/Cpp/TP4_ComptesBancaires/depcomp new file mode 100755 index 0000000..4c20c6c --- /dev/null +++ b/Cpp/TP4_ComptesBancaires/depcomp @@ -0,0 +1,441 @@ +#! /bin/sh + +# depcomp - compile a program generating dependencies as side-effects +# Copyright 1999, 2000 Free Software Foundation, Inc. + +# 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, 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., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Alexandre Oliva . + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +fi +# `libtool' can also be set to `yes' or `no'. + +depfile=${depfile-`echo "$object" | sed 's,\([^/]*\)$,.deps/\1,;s/\.\([^.]*\)$/.P\1/'`} +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. + "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz +## The second -e expression handles DOS-style file names with drive letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the `deleted header file' problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. + tr ' ' ' +' < "$tmpdepfile" | +## Some versions of gcc put a space before the `:'. On the theory +## that the space means something, we add a space to the output as +## well. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like `#:fec' to the end of the + # dependency line. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ + tr ' +' ' ' >> $depfile + echo >> $depfile + + # The second pass generates a dummy entry for each header file. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> $depfile + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. This file always lives in the current directory. + # Also, the AIX compiler puts `$object:' at the start of each line; + # $object doesn't have directory information. + stripped=`echo "$object" | sed -e 's,^.*/,,' -e 's/\(.*\)\..*$/\1/'` + tmpdepfile="$stripped.u" + outname="$stripped.o" + if test "$libtool" = yes; then + "$@" -Wc,-M + else + "$@" -M + fi + + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + + if test -f "$tmpdepfile"; then + # Each line is of the form `foo.o: dependent.h'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" + sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +icc) + # Must come before tru64. + + # Intel's C compiler understands `-MD -MF file'. However + # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c + # will fill foo.d with something like + # foo.o: sub/foo.c + # foo.o: sub/foo.h + # which is wrong. We want: + # sub/foo.o: sub/foo.c + # sub/foo.o: sub/foo.h + # sub/foo.c: + # sub/foo.h: + + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each line is of the form `foo.o: dependent.h'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed -e "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + sed -e "s,^[^:]*: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" + rm -f "$tmpdepfile" + ;; + +tru64) + # The Tru64 AIX compiler uses -MD to generate dependencies as a side + # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in `foo.d' instead, so we check for that too. + # Subdirectories are respected. + + tmpdepfile1="$object.d" + tmpdepfile2=`echo "$object" | sed -e 's/.o$/.d/'` + if test "$libtool" = yes; then + "$@" -Wc,-MD + else + "$@" -MD + fi + + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" + exit $stat + fi + + if test -f "$tmpdepfile1"; then + tmpdepfile="$tmpdepfile1" + else + tmpdepfile="$tmpdepfile2" + fi + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" + # That's a space and a tab in the []. + sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" + else + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the proprocessed file to stdout, regardless of -o, + # because we must use -o when running libtool. + test -z "$dashmflag" && dashmflag=-M + ( IFS=" " + case " $* " in + *" --mode=compile "*) # this is libtool, let us make it quiet + for arg + do # cycle over the arguments + case "$arg" in + "--mode=compile") + # insert --quiet before "--mode=compile" + set fnord "$@" --quiet + shift # fnord + ;; + esac + set fnord "$@" "$arg" + shift # fnord + shift # "$arg" + done + ;; + esac + "$@" $dashmflag | sed 's:^[^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" + ) & + proc=$! + "$@" + stat=$? + wait "$proc" + if test "$stat" != 0; then exit $stat; fi + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + tr ' ' ' +' < "$tmpdepfile" | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + # X makedepend + ( + shift + cleared=no + for arg in "$@"; do + case $cleared in no) + set ""; shift + cleared=yes + esac + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift;; + -*) + ;; + *) + set fnord "$@" "$arg"; shift;; + esac + done + obj_suffix="`echo $object | sed 's/^.*\././'`" + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} 2>/dev/null -o"$obj_suffix" -f"$tmpdepfile" "$@" + ) & + proc=$! + "$@" + stat=$? + wait "$proc" + if test "$stat" != 0; then exit $stat; fi + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + tail +3 "$tmpdepfile" | tr ' ' ' +' | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the proprocessed file to stdout, regardless of -o, + # because we must use -o when running libtool. + ( IFS=" " + case " $* " in + *" --mode=compile "*) + for arg + do # cycle over the arguments + case $arg in + "--mode=compile") + # insert --quiet before "--mode=compile" + set fnord "$@" --quiet + shift # fnord + ;; + esac + set fnord "$@" "$arg" + shift # fnord + shift # "$arg" + done + ;; + esac + "$@" -E | + sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | + sed '$ s: \\$::' > "$tmpdepfile" + ) & + proc=$! + "$@" + stat=$? + wait "$proc" + if test "$stat" != 0; then exit $stat; fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the proprocessed file to stdout, regardless of -o, + # because we must use -o when running libtool. + ( IFS=" " + case " $* " in + *" --mode=compile "*) + for arg + do # cycle over the arguments + case $arg in + "--mode=compile") + # insert --quiet before "--mode=compile" + set fnord "$@" --quiet + shift # fnord + ;; + esac + set fnord "$@" "$arg" + shift # fnord + shift # "$arg" + done + ;; + esac + "$@" -E | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" + ) & + proc=$! + "$@" + stat=$? + wait "$proc" + if test "$stat" != 0; then exit $stat; fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" + echo " " >> "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 diff --git a/Cpp/TP4_ComptesBancaires/install-sh b/Cpp/TP4_ComptesBancaires/install-sh new file mode 100755 index 0000000..36f96f3 --- /dev/null +++ b/Cpp/TP4_ComptesBancaires/install-sh @@ -0,0 +1,276 @@ +#!/bin/sh +# +# install - install a program, script, or datafile +# This comes from X11R5 (mit/util/scripts/install.sh). +# +# Copyright 1991 by the Massachusetts Institute of Technology +# +# Permission to use, copy, modify, distribute, and sell this software and its +# documentation for any purpose is hereby granted without fee, provided that +# the above copyright notice appear in all copies and that both that +# copyright notice and this permission notice appear in supporting +# documentation, and that the name of M.I.T. not be used in advertising or +# publicity pertaining to distribution of the software without specific, +# written prior permission. M.I.T. makes no representations about the +# suitability of this software for any purpose. It is provided "as is" +# without express or implied warranty. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. It can only install one file at a time, a restriction +# shared with many OS's install programs. + + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" + + +# put in absolute paths if you don't have them in your path; or use env. vars. + +mvprog="${MVPROG-mv}" +cpprog="${CPPROG-cp}" +chmodprog="${CHMODPROG-chmod}" +chownprog="${CHOWNPROG-chown}" +chgrpprog="${CHGRPPROG-chgrp}" +stripprog="${STRIPPROG-strip}" +rmprog="${RMPROG-rm}" +mkdirprog="${MKDIRPROG-mkdir}" + +transformbasename="" +transform_arg="" +instcmd="$mvprog" +chmodcmd="$chmodprog 0755" +chowncmd="" +chgrpcmd="" +stripcmd="" +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src="" +dst="" +dir_arg="" + +while [ x"$1" != x ]; do + case $1 in + -c) instcmd=$cpprog + shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -m) chmodcmd="$chmodprog $2" + shift + shift + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + -s) stripcmd=$stripprog + shift + continue;; + + -t=*) transformarg=`echo $1 | sed 's/-t=//'` + shift + continue;; + + -b=*) transformbasename=`echo $1 | sed 's/-b=//'` + shift + continue;; + + *) if [ x"$src" = x ] + then + src=$1 + else + # this colon is to work around a 386BSD /bin/sh bug + : + dst=$1 + fi + shift + continue;; + esac +done + +if [ x"$src" = x ] +then + echo "$0: no input file specified" >&2 + exit 1 +else + : +fi + +if [ x"$dir_arg" != x ]; then + dst=$src + src="" + + if [ -d "$dst" ]; then + instcmd=: + chmodcmd="" + else + instcmd=$mkdirprog + fi +else + +# Waiting for this to be detected by the "$instcmd $src $dsttmp" command +# might cause directories to be created, which would be especially bad +# if $src (and thus $dsttmp) contains '*'. + + if [ -f "$src" ] || [ -d "$src" ] + then + : + else + echo "$0: $src does not exist" >&2 + exit 1 + fi + + if [ x"$dst" = x ] + then + echo "$0: no destination specified" >&2 + exit 1 + else + : + fi + +# If destination is a directory, append the input filename; if your system +# does not like double slashes in filenames, you may need to add some logic + + if [ -d "$dst" ] + then + dst=$dst/`basename "$src"` + else + : + fi +fi + +## this sed command emulates the dirname command +dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` + +# Make sure that the destination directory exists. +# this part is taken from Noah Friedman's mkinstalldirs script + +# Skip lots of stat calls in the usual case. +if [ ! -d "$dstdir" ]; then +defaultIFS=' + ' +IFS="${IFS-$defaultIFS}" + +oIFS=$IFS +# Some sh's can't handle IFS=/ for some reason. +IFS='%' +set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'` +IFS=$oIFS + +pathcomp='' + +while [ $# -ne 0 ] ; do + pathcomp=$pathcomp$1 + shift + + if [ ! -d "$pathcomp" ] ; + then + $mkdirprog "$pathcomp" + else + : + fi + + pathcomp=$pathcomp/ +done +fi + +if [ x"$dir_arg" != x ] +then + $doit $instcmd "$dst" && + + if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dst"; else : ; fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dst"; else : ; fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dst"; else : ; fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dst"; else : ; fi +else + +# If we're going to rename the final executable, determine the name now. + + if [ x"$transformarg" = x ] + then + dstfile=`basename "$dst"` + else + dstfile=`basename "$dst" $transformbasename | + sed $transformarg`$transformbasename + fi + +# don't allow the sed command to completely eliminate the filename + + if [ x"$dstfile" = x ] + then + dstfile=`basename "$dst"` + else + : + fi + +# Make a couple of temp file names in the proper directory. + + dsttmp=$dstdir/#inst.$$# + rmtmp=$dstdir/#rm.$$# + +# Trap to clean up temp files at exit. + + trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0 + trap '(exit $?); exit' 1 2 13 15 + +# Move or copy the file name to the temp name + + $doit $instcmd "$src" "$dsttmp" && + +# and set any options; do chmod last to preserve setuid bits + +# If any of these fail, we abort the whole thing. If we want to +# ignore errors from any of these, just make sure not to ignore +# errors from the above "$doit $instcmd $src $dsttmp" command. + + if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dsttmp"; else :;fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dsttmp"; else :;fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dsttmp"; else :;fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dsttmp"; else :;fi && + +# Now remove or move aside any old file at destination location. We try this +# two ways since rm can't unlink itself on some systems and the destination +# file might be busy for other reasons. In this case, the final cleanup +# might fail but the new file should still install successfully. + +{ + if [ -f "$dstdir/$dstfile" ] + then + $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null || + $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null || + { + echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2 + (exit 1); exit + } + else + : + fi +} && + +# Now rename the file to the real destination. + + $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" + +fi && + +# The final little trick to "correctly" pass the exit status to the exit trap. + +{ + (exit 0); exit +} diff --git a/Cpp/TP4_ComptesBancaires/ltmain.sh b/Cpp/TP4_ComptesBancaires/ltmain.sh new file mode 100755 index 0000000..decca9d --- /dev/null +++ b/Cpp/TP4_ComptesBancaires/ltmain.sh @@ -0,0 +1,6643 @@ +# ltmain.sh - Provide generalized library-building support services. +# NOTE: Changing this file will not affect anything until you rerun configure. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# Originally by Gordon Matzigkeit , 1996 +# +# 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. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +basename="s,^.*/,,g" + +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +# is ksh but when the shell is invoked as "sh" and the current value of +# the _XPG environment variable is not equal to 1 (one), the special +# positional parameter $0, within a function call, is the name of the +# function. +progpath="$0" + +# define SED for historic ltconfig's generated by Libtool 1.3 +test -z "$SED" && SED=sed + +# The name of this program: +progname=`echo "$progpath" | $SED $basename` +modename="$progname" + +# Global variables: +EXIT_SUCCESS=0 +EXIT_FAILURE=1 + +PROGRAM=ltmain.sh +PACKAGE=libtool +VERSION=1.5.20 +TIMESTAMP=" (1.1220.2.287 2005/08/31 18:54:15)" + +# See if we are running on zsh, and set the options which allow our +# commands through without removal of \ escapes. +if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi +# Same for EGREP, and just to be sure, do LTCC as well +if test "X$EGREP" = X ; then + EGREP=egrep +fi +if test "X$LTCC" = X ; then + LTCC=${CC-gcc} +fi + +# Check that we have a working $echo. +if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then + # Yippee, $echo works! + : +else + # Restart under the correct shell, and then maybe $echo will work. + exec $SHELL "$progpath" --no-reexec ${1+"$@"} +fi + +if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift + cat <&2 + $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 + exit $EXIT_FAILURE +fi + +# Global variables. +mode=$default_mode +nonopt= +prev= +prevopt= +run= +show="$echo" +show_help= +execute_dlfiles= +lo2o="s/\\.lo\$/.${objext}/" +o2lo="s/\\.${objext}\$/.lo/" + +if test -z "$max_cmd_len"; then + i=0 + testring="ABCD" + new_result= + + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while (test "X"`$SHELL $0 --fallback-echo "X$testring" 2>/dev/null` \ + = "XX$testring") >/dev/null 2>&1 && + new_result=`expr "X$testring" : ".*" 2>&1` && + max_cmd_len="$new_result" && + test "$i" != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + testring="$testring$testring" + done + testring= + # Add a significant safety factor because C++ compilers can tack on massive + # amounts of additional arguments before passing them to the linker. + # It appears as though 1/2 is a usable value. + max_cmd_len=`expr $max_cmd_len \/ 2` +fi + +##################################### +# Shell function definitions: +# This seems to be the best place for them + +# func_win32_libid arg +# return the library type of file 'arg' +# +# Need a lot of goo to handle *both* DLLs and import libs +# Has to be a shell function in order to 'eat' the argument +# that is supplied when $file_magic_command is called. +func_win32_libid () +{ + win32_libid_type="unknown" + win32_fileres=`file -L $1 2>/dev/null` + case $win32_fileres in + *ar\ archive\ import\ library*) # definitely import + win32_libid_type="x86 archive import" + ;; + *ar\ archive*) # could be an import, or static + if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \ + $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then + win32_nmres=`eval $NM -f posix -A $1 | \ + sed -n -e '1,100{/ I /{x;/import/!{s/^/import/;h;p;};x;};}'` + if test "X$win32_nmres" = "Ximport" ; then + win32_libid_type="x86 archive import" + else + win32_libid_type="x86 archive static" + fi + fi + ;; + *DLL*) + win32_libid_type="x86 DLL" + ;; + *executable*) # but shell scripts are "executable" too... + case $win32_fileres in + *MS\ Windows\ PE\ Intel*) + win32_libid_type="x86 DLL" + ;; + esac + ;; + esac + $echo $win32_libid_type +} + + +# func_infer_tag arg +# Infer tagged configuration to use if any are available and +# if one wasn't chosen via the "--tag" command line option. +# Only attempt this if the compiler in the base compile +# command doesn't match the default compiler. +# arg is usually of the form 'gcc ...' +func_infer_tag () +{ + if test -n "$available_tags" && test -z "$tagname"; then + CC_quoted= + for arg in $CC; do + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + CC_quoted="$CC_quoted $arg" + done + case $@ in + # Blanks in the command may have been stripped by the calling shell, + # but not from the CC environment variable when configure was run. + " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;; + # Blanks at the start of $base_compile will cause this to fail + # if we don't check for them as well. + *) + for z in $available_tags; do + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then + # Evaluate the configuration. + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" + CC_quoted= + for arg in $CC; do + # Double-quote args containing other shell metacharacters. + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + CC_quoted="$CC_quoted $arg" + done + # user sometimes does CC=-gcc so we need to match that to 'gcc' + trimedcc=`echo ${CC} | $SED -e "s/${host}-//g"` + # and sometimes libtool has CC=-gcc but user does CC=gcc + extendcc=${host}-${CC} + # and sometimes libtool has CC=-gcc but user has CC=-gcc + # (Gentoo-specific hack because we always export $CHOST) + mungedcc=${CHOST-${host}}-${trimedcc} + case "$@ " in + "cc "* | " cc "* | "${host}-cc "* | " ${host}-cc "*|\ + "gcc "* | " gcc "* | "${host}-gcc "* | " ${host}-gcc "*) + tagname=CC + break ;; + "$trimedcc "* | " $trimedcc "* | "`$echo $trimedcc` "* | " `$echo $trimedcc` "*|\ + "$extendcc "* | " $extendcc "* | "`$echo $extendcc` "* | " `$echo $extendcc` "*|\ + "$mungedcc "* | " $mungedcc "* | "`$echo $mungedcc` "* | " `$echo $mungedcc` "*|\ + " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) + # The compiler in the base compile command matches + # the one in the tagged configuration. + # Assume this is the tagged configuration we want. + tagname=$z + break + ;; + esac + fi + done + # If $tagname still isn't set, then no tagged configuration + # was found and let the user know that the "--tag" command + # line option must be used. + if test -z "$tagname"; then + $echo "$modename: unable to infer tagged configuration" + $echo "$modename: specify a tag with \`--tag'" 1>&2 + exit $EXIT_FAILURE +# else +# $echo "$modename: using $tagname tagged configuration" + fi + ;; + esac + fi +} + + +# func_extract_an_archive dir oldlib +func_extract_an_archive () +{ + f_ex_an_ar_dir="$1"; shift + f_ex_an_ar_oldlib="$1" + + $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)" + $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $? + if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then + : + else + $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2 + exit $EXIT_FAILURE + fi +} + +# func_extract_archives gentop oldlib ... +func_extract_archives () +{ + my_gentop="$1"; shift + my_oldlibs=${1+"$@"} + my_oldobjs="" + my_xlib="" + my_xabs="" + my_xdir="" + my_status="" + + $show "${rm}r $my_gentop" + $run ${rm}r "$my_gentop" + $show "$mkdir $my_gentop" + $run $mkdir "$my_gentop" + my_status=$? + if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then + exit $my_status + fi + + for my_xlib in $my_oldlibs; do + # Extract the objects. + case $my_xlib in + [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; + *) my_xabs=`pwd`"/$my_xlib" ;; + esac + my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'` + my_xdir="$my_gentop/$my_xlib" + + $show "${rm}r $my_xdir" + $run ${rm}r "$my_xdir" + $show "$mkdir $my_xdir" + $run $mkdir "$my_xdir" + status=$? + if test "$status" -ne 0 && test ! -d "$my_xdir"; then + exit $status + fi + case $host in + *-darwin*) + $show "Extracting $my_xabs" + # Do not bother doing anything if just a dry run + if test -z "$run"; then + darwin_orig_dir=`pwd` + cd $my_xdir || exit $? + darwin_archive=$my_xabs + darwin_curdir=`pwd` + darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'` + darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null` + if test -n "$darwin_arches"; then + darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'` + darwin_arch= + $show "$darwin_base_archive has multiple architectures $darwin_arches" + for darwin_arch in $darwin_arches ; do + mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}" + lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" + cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" + func_extract_an_archive "`pwd`" "${darwin_base_archive}" + cd "$darwin_curdir" + $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" + done # $darwin_arches + ## Okay now we have a bunch of thin objects, gotta fatten them up :) + darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP` + darwin_file= + darwin_files= + for darwin_file in $darwin_filelist; do + darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` + lipo -create -output "$darwin_file" $darwin_files + done # $darwin_filelist + ${rm}r unfat-$$ + cd "$darwin_orig_dir" + else + cd "$darwin_orig_dir" + func_extract_an_archive "$my_xdir" "$my_xabs" + fi # $darwin_arches + fi # $run + ;; + *) + func_extract_an_archive "$my_xdir" "$my_xabs" + ;; + esac + my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` + done + func_extract_archives_result="$my_oldobjs" +} +# End of Shell function definitions +##################################### + +# Darwin sucks +eval std_shrext=\"$shrext_cmds\" + +# Parse our command line options once, thoroughly. +while test "$#" -gt 0 +do + arg="$1" + shift + + case $arg in + -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; + *) optarg= ;; + esac + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + execute_dlfiles) + execute_dlfiles="$execute_dlfiles $arg" + ;; + tag) + tagname="$arg" + preserve_args="${preserve_args}=$arg" + + # Check whether tagname contains only valid characters + case $tagname in + *[!-_A-Za-z0-9,/]*) + $echo "$progname: invalid tag name: $tagname" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + case $tagname in + CC) + # Don't test for the "default" C tag, as we know, it's there, but + # not specially marked. + ;; + *) + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then + taglist="$taglist $tagname" + # Evaluate the configuration. + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`" + else + $echo "$progname: ignoring unknown tag $tagname" 1>&2 + fi + ;; + esac + ;; + *) + eval "$prev=\$arg" + ;; + esac + + prev= + prevopt= + continue + fi + + # Have we seen a non-optional argument yet? + case $arg in + --help) + show_help=yes + ;; + + --version) + $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP" + $echo + $echo "Copyright (C) 2005 Free Software Foundation, Inc." + $echo "This is free software; see the source for copying conditions. There is NO" + $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + exit $? + ;; + + --config) + ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath + # Now print the configurations for the tags. + for tagname in $taglist; do + ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath" + done + exit $? + ;; + + --debug) + $echo "$progname: enabling shell trace mode" + set -x + preserve_args="$preserve_args $arg" + ;; + + --dry-run | -n) + run=: + ;; + + --features) + $echo "host: $host" + if test "$build_libtool_libs" = yes; then + $echo "enable shared libraries" + else + $echo "disable shared libraries" + fi + if test "$build_old_libs" = yes; then + $echo "enable static libraries" + else + $echo "disable static libraries" + fi + exit $? + ;; + + --finish) mode="finish" ;; + + --mode) prevopt="--mode" prev=mode ;; + --mode=*) mode="$optarg" ;; + + --preserve-dup-deps) duplicate_deps="yes" ;; + + --quiet | --silent) + show=: + preserve_args="$preserve_args $arg" + ;; + + --tag) prevopt="--tag" prev=tag ;; + --tag=*) + set tag "$optarg" ${1+"$@"} + shift + prev=tag + preserve_args="$preserve_args --tag" + ;; + + -dlopen) + prevopt="-dlopen" + prev=execute_dlfiles + ;; + + -*) + $echo "$modename: unrecognized option \`$arg'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + + *) + nonopt="$arg" + break + ;; + esac +done + +if test -n "$prevopt"; then + $echo "$modename: option \`$prevopt' requires an argument" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE +fi + +# If this variable is set in any of the actions, the command in it +# will be execed at the end. This prevents here-documents from being +# left over by shells. +exec_cmd= + +if test -z "$show_help"; then + + # Infer the operation mode. + if test -z "$mode"; then + $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2 + $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2 + case $nonopt in + *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*) + mode=link + for arg + do + case $arg in + -c) + mode=compile + break + ;; + esac + done + ;; + *db | *dbx | *strace | *truss) + mode=execute + ;; + *install*|cp|mv) + mode=install + ;; + *rm) + mode=uninstall + ;; + *) + # If we have no mode, but dlfiles were specified, then do execute mode. + test -n "$execute_dlfiles" && mode=execute + + # Just use the default operation mode. + if test -z "$mode"; then + if test -n "$nonopt"; then + $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 + else + $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 + fi + fi + ;; + esac + fi + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$execute_dlfiles" && test "$mode" != execute; then + $echo "$modename: unrecognized option \`-dlopen'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Change the help message to a mode-specific one. + generic_help="$help" + help="Try \`$modename --help --mode=$mode' for more information." + + # These modes are in order of execution frequency so that they run quickly. + case $mode in + # libtool compile mode + compile) + modename="$modename: compile" + # Get the compilation command and the source file. + base_compile= + srcfile="$nonopt" # always keep a non-empty value in "srcfile" + suppress_opt=yes + suppress_output= + arg_mode=normal + libobj= + later= + + for arg + do + case $arg_mode in + arg ) + # do not "continue". Instead, add this to base_compile + lastarg="$arg" + arg_mode=normal + ;; + + target ) + libobj="$arg" + arg_mode=normal + continue + ;; + + normal ) + # Accept any command-line options. + case $arg in + -o) + if test -n "$libobj" ; then + $echo "$modename: you cannot specify \`-o' more than once" 1>&2 + exit $EXIT_FAILURE + fi + arg_mode=target + continue + ;; + + -static | -prefer-pic | -prefer-non-pic) + later="$later $arg" + continue + ;; + + -no-suppress) + suppress_opt=no + continue + ;; + + -Xcompiler) + arg_mode=arg # the next one goes into the "base_compile" arg list + continue # The current "srcfile" will either be retained or + ;; # replaced later. I would guess that would be a bug. + + -Wc,*) + args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` + lastarg= + save_ifs="$IFS"; IFS=',' + for arg in $args; do + IFS="$save_ifs" + + # Double-quote args containing other shell metacharacters. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + lastarg="$lastarg $arg" + done + IFS="$save_ifs" + lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` + + # Add the arguments to base_compile. + base_compile="$base_compile $lastarg" + continue + ;; + + * ) + # Accept the current argument as the source file. + # The previous "srcfile" becomes the current argument. + # + lastarg="$srcfile" + srcfile="$arg" + ;; + esac # case $arg + ;; + esac # case $arg_mode + + # Aesthetically quote the previous argument. + lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` + + case $lastarg in + # Double-quote args containing other shell metacharacters. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, and some SunOS ksh mistreat backslash-escaping + # in scan sets (worked around with variable expansion), + # and furthermore cannot handle '|' '&' '(' ')' in scan sets + # at all, so we specify them separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + lastarg="\"$lastarg\"" + ;; + esac + + base_compile="$base_compile $lastarg" + done # for arg + + case $arg_mode in + arg) + $echo "$modename: you must specify an argument for -Xcompile" + exit $EXIT_FAILURE + ;; + target) + $echo "$modename: you must specify a target with \`-o'" 1>&2 + exit $EXIT_FAILURE + ;; + *) + # Get the name of the library object. + [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` + ;; + esac + + # Recognize several different file suffixes. + # If the user specifies -o file.o, it is replaced with file.lo + xform='[cCFSifmso]' + case $libobj in + *.ada) xform=ada ;; + *.adb) xform=adb ;; + *.ads) xform=ads ;; + *.asm) xform=asm ;; + *.c++) xform=c++ ;; + *.cc) xform=cc ;; + *.ii) xform=ii ;; + *.class) xform=class ;; + *.cpp) xform=cpp ;; + *.cxx) xform=cxx ;; + *.f90) xform=f90 ;; + *.for) xform=for ;; + *.java) xform=java ;; + esac + + libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` + + case $libobj in + *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; + *) + $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + func_infer_tag $base_compile + + for arg in $later; do + case $arg in + -static) + build_old_libs=yes + continue + ;; + + -prefer-pic) + pic_mode=yes + continue + ;; + + -prefer-non-pic) + pic_mode=no + continue + ;; + esac + done + + qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"` + case $qlibobj in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + qlibobj="\"$qlibobj\"" ;; + esac + test "X$libobj" != "X$qlibobj" \ + && $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' &()|`$[]' \ + && $echo "$modename: libobj name \`$libobj' may not contain shell special characters." + objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` + xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$obj"; then + xdir= + else + xdir=$xdir/ + fi + lobj=${xdir}$objdir/$objname + + if test -z "$base_compile"; then + $echo "$modename: you must specify a compilation command" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Delete any leftover library objects. + if test "$build_old_libs" = yes; then + removelist="$obj $lobj $libobj ${libobj}T" + else + removelist="$lobj $libobj ${libobj}T" + fi + + $run $rm $removelist + trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 + + # On Cygwin there's no "real" PIC flag so we must build both object types + case $host_os in + cygwin* | mingw* | pw32* | os2*) + pic_mode=default + ;; + esac + if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then + # non-PIC code in shared libraries is not supported + pic_mode=default + fi + + # Calculate the filename of the output object if compiler does + # not support -o with -c + if test "$compiler_c_o" = no; then + output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} + lockfile="$output_obj.lock" + removelist="$removelist $output_obj $lockfile" + trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 + else + output_obj= + need_locks=no + lockfile= + fi + + # Lock this critical section if it is needed + # We use this script file to make the link, it avoids creating a new file + if test "$need_locks" = yes; then + until $run ln "$srcfile" "$lockfile" 2>/dev/null; do + $show "Waiting for $lockfile to be removed" + sleep 2 + done + elif test "$need_locks" = warn; then + if test -f "$lockfile"; then + $echo "\ +*** ERROR, $lockfile exists and contains: +`cat $lockfile 2>/dev/null` + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit $EXIT_FAILURE + fi + $echo "$srcfile" > "$lockfile" + fi + + if test -n "$fix_srcfile_path"; then + eval srcfile=\"$fix_srcfile_path\" + fi + qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"` + case $qsrcfile in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + qsrcfile="\"$qsrcfile\"" ;; + esac + + $run $rm "$libobj" "${libobj}T" + + # Create a libtool object file (analogous to a ".la" file), + # but don't create it if we're doing a dry run. + test -z "$run" && cat > ${libobj}T </dev/null`" != "X$srcfile"; then + $echo "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed, then go on to compile the next one + if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then + $show "$mv $output_obj $lobj" + if $run $mv $output_obj $lobj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + fi + + # Append the name of the PIC object to the libtool object file. + test -z "$run" && cat >> ${libobj}T <> ${libobj}T </dev/null`" != "X$srcfile"; then + $echo "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed + if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then + $show "$mv $output_obj $obj" + if $run $mv $output_obj $obj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + fi + + # Append the name of the non-PIC object the libtool object file. + # Only append if the libtool object file exists. + test -z "$run" && cat >> ${libobj}T <> ${libobj}T <&2 + fi + if test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + else + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + fi + build_libtool_libs=no + build_old_libs=yes + prefer_static_libs=yes + break + ;; + esac + done + + # See if our shared archives depend on static archives. + test -n "$old_archive_from_new_cmds" && build_old_libs=yes + + # Go through the arguments, transforming them on the way. + while test "$#" -gt 0; do + arg="$1" + shift + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test + ;; + *) qarg=$arg ;; + esac + libtool_args="$libtool_args $qarg" + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + output) + compile_command="$compile_command @OUTPUT@" + finalize_command="$finalize_command @OUTPUT@" + ;; + esac + + case $prev in + dlfiles|dlprefiles) + if test "$preload" = no; then + # Add the symbol object into the linking commands. + compile_command="$compile_command @SYMFILE@" + finalize_command="$finalize_command @SYMFILE@" + preload=yes + fi + case $arg in + *.la | *.lo) ;; # We handle these cases below. + force) + if test "$dlself" = no; then + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + self) + if test "$prev" = dlprefiles; then + dlself=yes + elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then + dlself=yes + else + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + *) + if test "$prev" = dlfiles; then + dlfiles="$dlfiles $arg" + else + dlprefiles="$dlprefiles $arg" + fi + prev= + continue + ;; + esac + ;; + expsyms) + export_symbols="$arg" + if test ! -f "$arg"; then + $echo "$modename: symbol file \`$arg' does not exist" + exit $EXIT_FAILURE + fi + prev= + continue + ;; + expsyms_regex) + export_symbols_regex="$arg" + prev= + continue + ;; + inst_prefix) + inst_prefix_dir="$arg" + prev= + continue + ;; + precious_regex) + precious_files_regex="$arg" + prev= + continue + ;; + release) + release="-$arg" + prev= + continue + ;; + objectlist) + if test -f "$arg"; then + save_arg=$arg + moreargs= + for fil in `cat $save_arg` + do +# moreargs="$moreargs $fil" + arg=$fil + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + pic_object= + non_pic_object= + + # Read the .lo file + # If there is no directory component, then add one. + case $arg in + */* | *\\*) . $arg ;; + *) . ./$arg ;; + esac + + if test -z "$pic_object" || \ + test -z "$non_pic_object" || + test "$pic_object" = none && \ + test "$non_pic_object" = none; then + $echo "$modename: cannot find name of object for \`$arg'" 1>&2 + exit $EXIT_FAILURE + fi + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + dlfiles="$dlfiles $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles="$dlprefiles $pic_object" + prev= + fi + + # A PIC object. + libobjs="$libobjs $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + non_pic_objects="$non_pic_objects $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + fi + else + # Only an error if not doing a dry-run. + if test -z "$run"; then + $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 + exit $EXIT_FAILURE + else + # Dry-run case. + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` + non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` + libobjs="$libobjs $pic_object" + non_pic_objects="$non_pic_objects $non_pic_object" + fi + fi + done + else + $echo "$modename: link input file \`$save_arg' does not exist" + exit $EXIT_FAILURE + fi + arg=$save_arg + prev= + continue + ;; + rpath | xrpath) + # We need an absolute path. + case $arg in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + $echo "$modename: only absolute run-paths are allowed" 1>&2 + exit $EXIT_FAILURE + ;; + esac + if test "$prev" = rpath; then + case "$rpath " in + *" $arg "*) ;; + *) rpath="$rpath $arg" ;; + esac + else + case "$xrpath " in + *" $arg "*) ;; + *) xrpath="$xrpath $arg" ;; + esac + fi + prev= + continue + ;; + xcompiler) + compiler_flags="$compiler_flags $qarg" + prev= + compile_command="$compile_command $qarg" + finalize_command="$finalize_command $qarg" + continue + ;; + xlinker) + linker_flags="$linker_flags $qarg" + compiler_flags="$compiler_flags $wl$qarg" + prev= + compile_command="$compile_command $wl$qarg" + finalize_command="$finalize_command $wl$qarg" + continue + ;; + xcclinker) + linker_flags="$linker_flags $qarg" + compiler_flags="$compiler_flags $qarg" + prev= + compile_command="$compile_command $qarg" + finalize_command="$finalize_command $qarg" + continue + ;; + shrext) + shrext_cmds="$arg" + prev= + continue + ;; + darwin_framework) + compiler_flags="$compiler_flags $arg" + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + prev= + continue + ;; + *) + eval "$prev=\"\$arg\"" + prev= + continue + ;; + esac + fi # test -n "$prev" + + prevarg="$arg" + + case $arg in + -all-static) + if test -n "$link_static_flag"; then + compile_command="$compile_command $link_static_flag" + finalize_command="$finalize_command $link_static_flag" + fi + continue + ;; + + -allow-undefined) + # FIXME: remove this flag sometime in the future. + $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 + continue + ;; + + -avoid-version) + avoid_version=yes + continue + ;; + + -dlopen) + prev=dlfiles + continue + ;; + + -dlpreopen) + prev=dlprefiles + continue + ;; + + -export-dynamic) + export_dynamic=yes + continue + ;; + + -export-symbols | -export-symbols-regex) + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + $echo "$modename: more than one -exported-symbols argument is not allowed" + exit $EXIT_FAILURE + fi + if test "X$arg" = "X-export-symbols"; then + prev=expsyms + else + prev=expsyms_regex + fi + continue + ;; + + -framework|-arch) + prev=darwin_framework + compiler_flags="$compiler_flags $arg" + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + continue + ;; + + -inst-prefix-dir) + prev=inst_prefix + continue + ;; + + # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* + # so, if we see these flags be careful not to treat them like -L + -L[A-Z][A-Z]*:*) + case $with_gcc/$host in + no/*-*-irix* | /*-*-irix*) + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + ;; + esac + continue + ;; + + -L*) + dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 + exit $EXIT_FAILURE + fi + dir="$absdir" + ;; + esac + case "$deplibs " in + *" -L$dir "*) ;; + *) + deplibs="$deplibs -L$dir" + lib_search_path="$lib_search_path $dir" + ;; + esac + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + case :$dllsearchpath: in + *":$dir:"*) ;; + *) dllsearchpath="$dllsearchpath:$dir";; + esac + ;; + esac + continue + ;; + + -l*) + if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then + case $host in + *-*-cygwin* | *-*-pw32* | *-*-beos*) + # These systems don't actually have a C or math library (as such) + continue + ;; + *-*-mingw* | *-*-os2*) + # These systems don't actually have a C library (as such) + test "X$arg" = "X-lc" && continue + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + test "X$arg" = "X-lc" && continue + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C and math libraries are in the System framework + deplibs="$deplibs -framework System" + continue + esac + elif test "X$arg" = "X-lc_r"; then + case $host in + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc_r directly, use -pthread flag. + continue + ;; + esac + fi + deplibs="$deplibs $arg" + continue + ;; + + # Tru64 UNIX uses -model [arg] to determine the layout of C++ + # classes, name mangling, and exception handling. + -model) + compile_command="$compile_command $arg" + compiler_flags="$compiler_flags $arg" + finalize_command="$finalize_command $arg" + prev=xcompiler + continue + ;; + + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) + compiler_flags="$compiler_flags $arg" + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + continue + ;; + + -module) + module=yes + continue + ;; + + # -64, -mips[0-9] enable 64-bit mode on the SGI compiler + # -r[0-9][0-9]* specifies the processor on the SGI compiler + # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler + # +DA*, +DD* enable 64-bit mode on the HP compiler + # -q* pass through compiler args for the IBM compiler + # -m* pass through architecture-specific compiler args for GCC + -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*) + + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + if test "$with_gcc" = "yes" ; then + compiler_flags="$compiler_flags $arg" + fi + continue + ;; + + -shrext) + prev=shrext + continue + ;; + + -no-fast-install) + fast_install=no + continue + ;; + + -no-install) + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + # The PATH hackery in wrapper scripts is required on Windows + # in order for the loader to find any dlls it needs. + $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 + $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 + fast_install=no + ;; + *) no_install=yes ;; + esac + continue + ;; + + -no-undefined) + allow_undefined=no + continue + ;; + + -objectlist) + prev=objectlist + continue + ;; + + -o) prev=output ;; + + -precious-files-regex) + prev=precious_regex + continue + ;; + + -release) + prev=release + continue + ;; + + -rpath) + prev=rpath + continue + ;; + + -R) + prev=xrpath + continue + ;; + + -R*) + dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + $echo "$modename: only absolute run-paths are allowed" 1>&2 + exit $EXIT_FAILURE + ;; + esac + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + continue + ;; + + -static) + # The effects of -static are defined in a previous loop. + # We used to do the same as -all-static on platforms that + # didn't have a PIC flag, but the assumption that the effects + # would be equivalent was wrong. It would break on at least + # Digital Unix and AIX. + continue + ;; + + -thread-safe) + thread_safe=yes + continue + ;; + + -version-info) + prev=vinfo + continue + ;; + -version-number) + prev=vinfo + vinfo_number=yes + continue + ;; + + -Wc,*) + args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + case $flag in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + flag="\"$flag\"" + ;; + esac + arg="$arg $wl$flag" + compiler_flags="$compiler_flags $flag" + done + IFS="$save_ifs" + arg=`$echo "X$arg" | $Xsed -e "s/^ //"` + ;; + + -Wl,*) + args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + case $flag in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + flag="\"$flag\"" + ;; + esac + arg="$arg $wl$flag" + compiler_flags="$compiler_flags $wl$flag" + linker_flags="$linker_flags $flag" + done + IFS="$save_ifs" + arg=`$echo "X$arg" | $Xsed -e "s/^ //"` + ;; + + -Xcompiler) + prev=xcompiler + continue + ;; + + -Xlinker) + prev=xlinker + continue + ;; + + -XCClinker) + prev=xcclinker + continue + ;; + + -Kthread | -mthreads | -mt | -pthread | -pthreads | -threads | -qthreaded | -kthread ) + compiler_flags="$compiler_flags $arg" + continue + ;; + + # Some other compiler flag. + -* | +*) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + ;; + + *.$objext) + # A standard object. + objs="$objs $arg" + ;; + + *.lo) + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + pic_object= + non_pic_object= + + # Read the .lo file + # If there is no directory component, then add one. + case $arg in + */* | *\\*) . $arg ;; + *) . ./$arg ;; + esac + + if test -z "$pic_object" || \ + test -z "$non_pic_object" || + test "$pic_object" = none && \ + test "$non_pic_object" = none; then + $echo "$modename: cannot find name of object for \`$arg'" 1>&2 + exit $EXIT_FAILURE + fi + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + dlfiles="$dlfiles $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles="$dlprefiles $pic_object" + prev= + fi + + # A PIC object. + libobjs="$libobjs $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + non_pic_objects="$non_pic_objects $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + fi + else + # Only an error if not doing a dry-run. + if test -z "$run"; then + $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 + exit $EXIT_FAILURE + else + # Dry-run case. + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` + non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` + libobjs="$libobjs $pic_object" + non_pic_objects="$non_pic_objects $non_pic_object" + fi + fi + ;; + + *.$libext) + # An archive. + deplibs="$deplibs $arg" + old_deplibs="$old_deplibs $arg" + continue + ;; + + *.la) + # A libtool-controlled library. + + if test "$prev" = dlfiles; then + # This library was specified with -dlopen. + dlfiles="$dlfiles $arg" + prev= + elif test "$prev" = dlprefiles; then + # The library was specified with -dlpreopen. + dlprefiles="$dlprefiles $arg" + prev= + else + deplibs="$deplibs $arg" + fi + continue + ;; + + # Some other compiler argument. + *) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + ;; + esac # arg + + # Now actually substitute the argument into the commands. + if test -n "$arg"; then + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + fi + done # argument parsing loop + + if test -n "$prev"; then + $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then + eval arg=\"$export_dynamic_flag_spec\" + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + fi + + oldlibs= + # calculate the name of the file, without its directory + outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` + libobjs_save="$libobjs" + + if test -n "$shlibpath_var"; then + # get the directories listed in $shlibpath_var + eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` + else + shlib_search_path= + fi + eval sys_lib_search_path=\"$sys_lib_search_path_spec\" + eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" + + output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` + if test "X$output_objdir" = "X$output"; then + output_objdir="$objdir" + else + output_objdir="$output_objdir/$objdir" + fi + # Create the object directory. + if test ! -d "$output_objdir"; then + $show "$mkdir $output_objdir" + $run $mkdir $output_objdir + status=$? + if test "$status" -ne 0 && test ! -d "$output_objdir"; then + exit $status + fi + fi + + # Determine the type of output + case $output in + "") + $echo "$modename: you must specify an output file" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + *.$libext) linkmode=oldlib ;; + *.lo | *.$objext) linkmode=obj ;; + *.la) linkmode=lib ;; + *) linkmode=prog ;; # Anything else should be a program. + esac + + case $host in + *cygwin* | *mingw* | *pw32*) + # don't eliminate duplications in $postdeps and $predeps + duplicate_compiler_generated_deps=yes + ;; + *) + duplicate_compiler_generated_deps=$duplicate_deps + ;; + esac + specialdeplibs= + + libs= + # Find all interdependent deplibs by searching for libraries + # that are linked more than once (e.g. -la -lb -la) + for deplib in $deplibs; do + if test "X$duplicate_deps" = "Xyes" ; then + case "$libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + libs="$libs $deplib" + done + + if test "$linkmode" = lib; then + libs="$predeps $libs $compiler_lib_search_path $postdeps" + + # Compute libraries that are listed more than once in $predeps + # $postdeps and mark them as special (i.e., whose duplicates are + # not to be eliminated). + pre_post_deps= + if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then + for pre_post_dep in $predeps $postdeps; do + case "$pre_post_deps " in + *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; + esac + pre_post_deps="$pre_post_deps $pre_post_dep" + done + fi + pre_post_deps= + fi + + deplibs= + newdependency_libs= + newlib_search_path= + need_relink=no # whether we're linking any uninstalled libtool libraries + notinst_deplibs= # not-installed libtool libraries + notinst_path= # paths that contain not-installed libtool libraries + case $linkmode in + lib) + passes="conv link" + for file in $dlfiles $dlprefiles; do + case $file in + *.la) ;; + *) + $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 + exit $EXIT_FAILURE + ;; + esac + done + ;; + prog) + compile_deplibs= + finalize_deplibs= + alldeplibs=no + newdlfiles= + newdlprefiles= + passes="conv scan dlopen dlpreopen link" + ;; + *) passes="conv" + ;; + esac + for pass in $passes; do + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan"; then + libs="$deplibs" + deplibs= + fi + if test "$linkmode" = prog; then + case $pass in + dlopen) libs="$dlfiles" ;; + dlpreopen) libs="$dlprefiles" ;; + link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; + esac + fi + if test "$pass" = dlopen; then + # Collect dlpreopened libraries + save_deplibs="$deplibs" + deplibs= + fi + for deplib in $libs; do + lib= + found=no + case $deplib in + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + compiler_flags="$compiler_flags $deplib" + fi + continue + ;; + -l*) + if test "$linkmode" != lib && test "$linkmode" != prog; then + $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2 + continue + fi + name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` + for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do + for search_ext in .la $std_shrext .so .a; do + # Search the libtool library + lib="$searchdir/lib${name}${search_ext}" + if test -f "$lib"; then + if test "$search_ext" = ".la"; then + found=yes + else + found=no + fi + break 2 + fi + done + done + if test "$found" != yes; then + # deplib doesn't seem to be a libtool library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + else # deplib is a libtool library + # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, + # We need to do some special things here, and not later. + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $deplib "*) + if (${SED} -e '2q' $lib | + grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + library_names= + old_library= + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + for l in $old_library $library_names; do + ll="$l" + done + if test "X$ll" = "X$old_library" ; then # only static version available + found=no + ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` + test "X$ladir" = "X$lib" && ladir="." + lib=$ladir/$old_library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + fi + ;; + *) ;; + esac + fi + fi + ;; # -l + -L*) + case $linkmode in + lib) + deplibs="$deplib $deplibs" + test "$pass" = conv && continue + newdependency_libs="$deplib $newdependency_libs" + newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` + ;; + prog) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + if test "$pass" = scan; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` + ;; + *) + $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2 + ;; + esac # linkmode + continue + ;; # -L + -R*) + if test "$pass" = link; then + dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` + # Make sure the xrpath contains only unique directories. + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + fi + deplibs="$deplib $deplibs" + continue + ;; + *.la) lib="$deplib" ;; + *.$libext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + case $linkmode in + lib) + valid_a_lib=no + case $deplibs_check_method in + match_pattern*) + set dummy $deplibs_check_method + match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` + if eval $echo \"$deplib\" 2>/dev/null \ + | $SED 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + valid_a_lib=yes + fi + ;; + pass_all) + valid_a_lib=yes + ;; + esac + if test "$valid_a_lib" != yes; then + $echo + $echo "*** Warning: Trying to link with static lib archive $deplib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have" + $echo "*** because the file extensions .$libext of this argument makes me believe" + $echo "*** that it is just a static archive that I should not used here." + else + $echo + $echo "*** Warning: Linking the shared library $output against the" + $echo "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" + fi + continue + ;; + prog) + if test "$pass" != link; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + continue + ;; + esac # linkmode + ;; # *.$libext + *.lo | *.$objext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + elif test "$linkmode" = prog; then + if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then + # If there is no dlopen support or we're linking statically, + # we need to preload. + newdlprefiles="$newdlprefiles $deplib" + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + newdlfiles="$newdlfiles $deplib" + fi + fi + continue + ;; + %DEPLIBS%) + alldeplibs=yes + continue + ;; + esac # case $deplib + if test "$found" = yes || test -f "$lib"; then : + else + $echo "$modename: cannot find the library \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + + ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` + test "X$ladir" = "X$lib" && ladir="." + + dlname= + dlopen= + dlpreopen= + libdir= + library_names= + old_library= + # If the library was installed with an old release of libtool, + # it will not redefine variables installed, or shouldnotlink + installed=yes + shouldnotlink=no + avoidtemprpath= + + + # Read the .la file + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan" || + { test "$linkmode" != prog && test "$linkmode" != lib; }; then + test -n "$dlopen" && dlfiles="$dlfiles $dlopen" + test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" + fi + + if test "$pass" = conv; then + # Only check for convenience libraries + deplibs="$lib $deplibs" + if test -z "$libdir"; then + if test -z "$old_library"; then + $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + # It is a libtool convenience library, so add in its objects. + convenience="$convenience $ladir/$objdir/$old_library" + old_convenience="$old_convenience $ladir/$objdir/$old_library" + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done + elif test "$linkmode" != prog && test "$linkmode" != lib; then + $echo "$modename: \`$lib' is not a convenience library" 1>&2 + exit $EXIT_FAILURE + fi + continue + fi # $pass = conv + + + # Get the name of the library we link against. + linklib= + for l in $old_library $library_names; do + linklib="$l" + done + if test -z "$linklib"; then + $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + + # This library was specified with -dlopen. + if test "$pass" = dlopen; then + if test -z "$libdir"; then + $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + if test -z "$dlname" || + test "$dlopen_support" != yes || + test "$build_libtool_libs" = no; then + # If there is no dlname, no dlopen support or we're linking + # statically, we need to preload. We also need to preload any + # dependent libraries so libltdl's deplib preloader doesn't + # bomb out in the load deplibs phase. + dlprefiles="$dlprefiles $lib $dependency_libs" + else + newdlfiles="$newdlfiles $lib" + fi + continue + fi # $pass = dlopen + + # We need an absolute path. + case $ladir in + [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; + *) + abs_ladir=`cd "$ladir" && pwd` + if test -z "$abs_ladir"; then + $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2 + $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 + abs_ladir="$ladir" + fi + ;; + esac + laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + + # Find the relevant object directory and library name. + if test "X$installed" = Xyes; then + if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then + $echo "$modename: warning: library \`$lib' was moved." 1>&2 + dir="$ladir" + absdir="$abs_ladir" + libdir="$abs_ladir" + else + dir="$libdir" + absdir="$libdir" + fi + test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes + else + if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then + dir="$ladir" + absdir="$abs_ladir" + # Remove this search path later + notinst_path="$notinst_path $abs_ladir" + else + dir="$ladir/$objdir" + absdir="$abs_ladir/$objdir" + # Remove this search path later + notinst_path="$notinst_path $abs_ladir" + fi + fi # $installed = yes + name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` + + # This library was specified with -dlpreopen. + if test "$pass" = dlpreopen; then + if test -z "$libdir"; then + $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). + if test -n "$old_library"; then + newdlprefiles="$newdlprefiles $dir/$old_library" + # Otherwise, use the dlname, so that lt_dlopen finds it. + elif test -n "$dlname"; then + newdlprefiles="$newdlprefiles $dir/$dlname" + else + newdlprefiles="$newdlprefiles $dir/$linklib" + fi + fi # $pass = dlpreopen + + if test -z "$libdir"; then + # Link the convenience library + if test "$linkmode" = lib; then + deplibs="$dir/$old_library $deplibs" + elif test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$dir/$old_library $compile_deplibs" + finalize_deplibs="$dir/$old_library $finalize_deplibs" + else + deplibs="$lib $deplibs" # used for prog,scan pass + fi + continue + fi + + + if test "$linkmode" = prog && test "$pass" != link; then + newlib_search_path="$newlib_search_path $ladir" + deplibs="$lib $deplibs" + + linkalldeplibs=no + if test "$link_all_deplibs" != no || test -z "$library_names" || + test "$build_libtool_libs" = no; then + linkalldeplibs=yes + fi + + tmp_libs= + for deplib in $dependency_libs; do + case $deplib in + -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test + esac + # Need to link against all dependency_libs? + if test "$linkalldeplibs" = yes; then + deplibs="$deplib $deplibs" + else + # Need to hardcode shared library paths + # or/and link against static libraries + newdependency_libs="$deplib $newdependency_libs" + fi + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done # for deplib + continue + fi # $linkmode = prog... + + if test "$linkmode,$pass" = "prog,link"; then + if test -n "$library_names" && + { test "$prefer_static_libs" = no || test -z "$old_library"; }; then + # We need to hardcode the library path + if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then + # Make sure the rpath contains only unique directories. + case "$temp_rpath " in + *" $dir "*) ;; + *" $absdir "*) ;; + *) temp_rpath="$temp_rpath $absdir" ;; + esac + fi + + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) compile_rpath="$compile_rpath $absdir" + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" + esac + ;; + esac + fi # $linkmode,$pass = prog,link... + + if test "$alldeplibs" = yes && + { test "$deplibs_check_method" = pass_all || + { test "$build_libtool_libs" = yes && + test -n "$library_names"; }; }; then + # We only need to search for static libraries + continue + fi + fi + + link_static=no # Whether the deplib will be linked statically + if test -n "$library_names" && + { test "$prefer_static_libs" = no || test -z "$old_library"; }; then + if test "$installed" = no; then + notinst_deplibs="$notinst_deplibs $lib" + need_relink=yes + fi + # This is a shared library + + # Warn about portability, can't link against -module's on + # some systems (darwin) + if test "$shouldnotlink" = yes && test "$pass" = link ; then + $echo + if test "$linkmode" = prog; then + $echo "*** Warning: Linking the executable $output against the loadable module" + else + $echo "*** Warning: Linking the shared library $output against the loadable module" + fi + $echo "*** $linklib is not portable!" + fi + if test "$linkmode" = lib && + test "$hardcode_into_libs" = yes; then + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) compile_rpath="$compile_rpath $absdir" + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" + esac + ;; + esac + fi + + if test -n "$old_archive_from_expsyms_cmds"; then + # figure out the soname + set dummy $library_names + realname="$2" + shift; shift + libname=`eval \\$echo \"$libname_spec\"` + # use dlname if we got it. it's perfectly good, no? + if test -n "$dlname"; then + soname="$dlname" + elif test -n "$soname_spec"; then + # bleh windows + case $host in + *cygwin* | mingw*) + major=`expr $current - $age` + versuffix="-$major" + ;; + esac + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + + # Make a new name for the extract_expsyms_cmds to use + soroot="$soname" + soname=`$echo $soroot | ${SED} -e 's/^.*\///'` + newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a" + + # If the library has no export list, then create one now + if test -f "$output_objdir/$soname-def"; then : + else + $show "extracting exported symbol list from \`$soname'" + save_ifs="$IFS"; IFS='~' + cmds=$extract_expsyms_cmds + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + + # Create $newlib + if test -f "$output_objdir/$newlib"; then :; else + $show "generating import library for \`$soname'" + save_ifs="$IFS"; IFS='~' + cmds=$old_archive_from_expsyms_cmds + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + # make sure the library variables are pointing to the new library + dir=$output_objdir + linklib=$newlib + fi # test -n "$old_archive_from_expsyms_cmds" + + if test "$linkmode" = prog || test "$mode" != relink; then + add_shlibpath= + add_dir= + add= + lib_linked=yes + case $hardcode_action in + immediate | unsupported) + if test "$hardcode_direct" = no; then + add="$dir/$linklib" + case $host in + *-*-sco3.2v5* ) add_dir="-L$dir" ;; + *-*-darwin* ) + # if the lib is a module then we can not link against + # it, someone is ignoring the new warnings I added + if /usr/bin/file -L $add 2> /dev/null | $EGREP "bundle" >/dev/null ; then + $echo "** Warning, lib $linklib is a module, not a shared library" + if test -z "$old_library" ; then + $echo + $echo "** And there doesn't seem to be a static archive available" + $echo "** The link will probably fail, sorry" + else + add="$dir/$old_library" + fi + fi + esac + elif test "$hardcode_minus_L" = no; then + case $host in + *-*-sunos*) add_shlibpath="$dir" ;; + esac + add_dir="-L$dir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = no; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + relink) + if test "$hardcode_direct" = yes; then + add="$dir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$dir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + add_dir="$add_dir -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + *) lib_linked=no ;; + esac + + if test "$lib_linked" != yes; then + $echo "$modename: configuration error: unsupported hardcode properties" + exit $EXIT_FAILURE + fi + + if test -n "$add_shlibpath"; then + case :$compile_shlibpath: in + *":$add_shlibpath:"*) ;; + *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; + esac + fi + if test "$linkmode" = prog; then + test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" + test -n "$add" && compile_deplibs="$add $compile_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + if test "$hardcode_direct" != yes && \ + test "$hardcode_minus_L" != yes && \ + test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + esac + fi + fi + fi + + if test "$linkmode" = prog || test "$mode" = relink; then + add_shlibpath= + add_dir= + add= + # Finalize command for both is simple: just hardcode it. + if test "$hardcode_direct" = yes; then + add="$libdir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$libdir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + esac + add="-l$name" + elif test "$hardcode_automatic" = yes; then + if test -n "$inst_prefix_dir" && + test -f "$inst_prefix_dir$libdir/$linklib" ; then + add="$inst_prefix_dir$libdir/$linklib" + else + add="$libdir/$linklib" + fi + else + # We cannot seem to hardcode it, guess we'll fake it. + add_dir="-L$libdir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + add_dir="$add_dir -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + fi + + if test "$linkmode" = prog; then + test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" + test -n "$add" && finalize_deplibs="$add $finalize_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + fi + fi + elif test "$linkmode" = prog; then + # Here we assume that one of hardcode_direct or hardcode_minus_L + # is not unsupported. This is valid on all known static and + # shared platforms. + if test "$hardcode_direct" != unsupported; then + test -n "$old_library" && linklib="$old_library" + compile_deplibs="$dir/$linklib $compile_deplibs" + finalize_deplibs="$dir/$linklib $finalize_deplibs" + else + compile_deplibs="-l$name -L$dir $compile_deplibs" + finalize_deplibs="-l$name -L$dir $finalize_deplibs" + fi + elif test "$build_libtool_libs" = yes; then + # Not a shared library + if test "$deplibs_check_method" != pass_all; then + # We're trying link a shared library against a static one + # but the system doesn't support it. + + # Just print a warning and add the library to dependency_libs so + # that the program can be linked against the static library. + $echo + $echo "*** Warning: This system can not link to static lib archive $lib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have." + if test "$module" = yes; then + $echo "*** But as you try to build a module library, libtool will still create " + $echo "*** a static module, that should work as long as the dlopening application" + $echo "*** is linked with the -dlopen flag to resolve symbols at runtime." + if test -z "$global_symbol_pipe"; then + $echo + $echo "*** However, this would only work if libtool was able to extract symbol" + $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + $echo "*** not find such a program. So, this module is probably useless." + $echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + else + deplibs="$dir/$old_library $deplibs" + link_static=yes + fi + fi # link shared/static library? + + if test "$linkmode" = lib; then + if test -n "$dependency_libs" && + { test "$hardcode_into_libs" != yes || + test "$build_old_libs" = yes || + test "$link_static" = yes; }; then + # Extract -R from dependency_libs + temp_deplibs= + for libdir in $dependency_libs; do + case $libdir in + -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'` + case " $xrpath " in + *" $temp_xrpath "*) ;; + *) xrpath="$xrpath $temp_xrpath";; + esac;; + *) temp_deplibs="$temp_deplibs $libdir";; + esac + done + dependency_libs="$temp_deplibs" + fi + + newlib_search_path="$newlib_search_path $absdir" + # Link against this library + test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" + # ... and its dependency_libs + tmp_libs= + for deplib in $dependency_libs; do + newdependency_libs="$deplib $newdependency_libs" + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done + + if test "$link_all_deplibs" != no; then + # Add the search paths of all dependency libraries + for deplib in $dependency_libs; do + case $deplib in + -L*) path="$deplib" ;; + *.la) + dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$deplib" && dir="." + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 + absdir="$dir" + fi + ;; + esac + if grep "^installed=no" $deplib > /dev/null; then + path="$absdir/$objdir" + else + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + if test -z "$libdir"; then + $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + if test "$absdir" != "$libdir"; then + $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 + fi + path="$absdir" + fi + depdepl= + case $host in + *-*-darwin*) + # we do not want to link against static libs, + # but need to link against shared + eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` + if test -n "$deplibrary_names" ; then + for tmp in $deplibrary_names ; do + depdepl=$tmp + done + if test -f "$path/$depdepl" ; then + depdepl="$path/$depdepl" + fi + # do not add paths which are already there + case " $newlib_search_path " in + *" $path "*) ;; + *) newlib_search_path="$newlib_search_path $path";; + esac + fi + path="" + ;; + *) + path="-L$path" + ;; + esac + ;; + -l*) + case $host in + *-*-darwin*) + # Again, we only want to link against shared libraries + eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"` + for tmp in $newlib_search_path ; do + if test -f "$tmp/lib$tmp_libs.dylib" ; then + eval depdepl="$tmp/lib$tmp_libs.dylib" + break + fi + done + path="" + ;; + *) continue ;; + esac + ;; + *) continue ;; + esac + case " $deplibs " in + *" $path "*) ;; + *) deplibs="$path $deplibs" ;; + esac + case " $deplibs " in + *" $depdepl "*) ;; + *) deplibs="$depdepl $deplibs" ;; + esac + done + fi # link_all_deplibs != no + fi # linkmode = lib + done # for deplib in $libs + dependency_libs="$newdependency_libs" + if test "$pass" = dlpreopen; then + # Link the dlpreopened libraries before other libraries + for deplib in $save_deplibs; do + deplibs="$deplib $deplibs" + done + fi + if test "$pass" != dlopen; then + if test "$pass" != conv; then + # Make sure lib_search_path contains only unique directories. + lib_search_path= + for dir in $newlib_search_path; do + case "$lib_search_path " in + *" $dir "*) ;; + *) lib_search_path="$lib_search_path $dir" ;; + esac + done + newlib_search_path= + fi + + if test "$linkmode,$pass" != "prog,link"; then + vars="deplibs" + else + vars="compile_deplibs finalize_deplibs" + fi + for var in $vars dependency_libs; do + # Add libraries to $var in reverse order + eval tmp_libs=\"\$$var\" + new_libs= + for deplib in $tmp_libs; do + # FIXME: Pedantically, this is the right thing to do, so + # that some nasty dependency loop isn't accidentally + # broken: + #new_libs="$deplib $new_libs" + # Pragmatically, this seems to cause very few problems in + # practice: + case $deplib in + -L*) new_libs="$deplib $new_libs" ;; + -R*) ;; + *) + # And here is the reason: when a library appears more + # than once as an explicit dependence of a library, or + # is implicitly linked in more than once by the + # compiler, it is considered special, and multiple + # occurrences thereof are not removed. Compare this + # with having the same library being listed as a + # dependency of multiple other libraries: in this case, + # we know (pedantically, we assume) the library does not + # need to be listed more than once, so we keep only the + # last copy. This is not always right, but it is rare + # enough that we require users that really mean to play + # such unportable linking tricks to link the library + # using -Wl,-lname, so that libtool does not consider it + # for duplicate removal. + case " $specialdeplibs " in + *" $deplib "*) new_libs="$deplib $new_libs" ;; + *) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$deplib $new_libs" ;; + esac + ;; + esac + ;; + esac + done + tmp_libs= + for deplib in $new_libs; do + case $deplib in + -L*) + case " $tmp_libs " in + *" $deplib "*) ;; + *) tmp_libs="$tmp_libs $deplib" ;; + esac + ;; + *) tmp_libs="$tmp_libs $deplib" ;; + esac + done + eval $var=\"$tmp_libs\" + done # for var + fi + # Last step: remove runtime libs from dependency_libs + # (they stay in deplibs) + tmp_libs= + for i in $dependency_libs ; do + case " $predeps $postdeps $compiler_lib_search_path " in + *" $i "*) + i="" + ;; + esac + if test -n "$i" ; then + tmp_libs="$tmp_libs $i" + fi + done + dependency_libs=$tmp_libs + done # for pass + if test "$linkmode" = prog; then + dlfiles="$newdlfiles" + dlprefiles="$newdlprefiles" + fi + + case $linkmode in + oldlib) + if test -n "$deplibs"; then + $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 + fi + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 + fi + + if test -n "$rpath"; then + $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 + fi + + if test -n "$xrpath"; then + $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 + fi + + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 + fi + + # Now set the variables for building old libraries. + build_libtool_libs=no + oldlibs="$output" + objs="$objs$old_deplibs" + ;; + + lib) + # Make sure we only generate libraries of the form `libNAME.la'. + case $outputname in + lib*) + name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + ;; + *) + if test "$module" = no; then + $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + if test "$need_lib_prefix" != no; then + # Add the "lib" prefix for modules if required + name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + else + libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` + fi + ;; + esac + + if test -n "$objs"; then + if test "$deplibs_check_method" != pass_all; then + $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 + exit $EXIT_FAILURE + else + $echo + $echo "*** Warning: Linking the shared library $output against the non-libtool" + $echo "*** objects $objs is not portable!" + libobjs="$libobjs $objs" + fi + fi + + if test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2 + fi + + set dummy $rpath + if test "$#" -gt 2; then + $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 + fi + install_libdir="$2" + + oldlibs= + if test -z "$rpath"; then + if test "$build_libtool_libs" = yes; then + # Building a libtool convenience library. + # Some compilers have problems with a `.al' extension so + # convenience libraries should have the same extension an + # archive normally would. + oldlibs="$output_objdir/$libname.$libext $oldlibs" + build_libtool_libs=convenience + build_old_libs=yes + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 + fi + else + + # Parse the version information argument. + save_ifs="$IFS"; IFS=':' + set dummy $vinfo 0 0 0 + IFS="$save_ifs" + + if test -n "$8"; then + $echo "$modename: too many parameters to \`-version-info'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # convert absolute version numbers to libtool ages + # this retains compatibility with .la files and attempts + # to make the code below a bit more comprehensible + + case $vinfo_number in + yes) + number_major="$2" + number_minor="$3" + number_revision="$4" + # + # There are really only two kinds -- those that + # use the current revision as the major version + # and those that subtract age and use age as + # a minor version. But, then there is irix + # which has an extra 1 added just for fun + # + case $version_type in + darwin|linux|osf|windows) + current=`expr $number_major + $number_minor` + age="$number_minor" + revision="$number_revision" + ;; + freebsd-aout|freebsd-elf|sunos) + current="$number_major" + revision="$number_minor" + age="0" + ;; + irix|nonstopux) + current=`expr $number_major + $number_minor - 1` + age="$number_minor" + revision="$number_minor" + ;; + esac + ;; + no) + current="$2" + revision="$3" + age="$4" + ;; + esac + + # Check that each of the things are valid numbers. + case $current in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + case $revision in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + case $age in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + if test "$age" -gt "$current"; then + $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + fi + + # Calculate the version variables. + major= + versuffix= + verstring= + case $version_type in + none) ;; + + darwin) + # Like Linux, but with the current version available in + # verstring for coding it into the library header + major=.`expr $current - $age` + versuffix="$major.$age.$revision" + # Darwin ld doesn't like 0 for these options... + minor_current=`expr $current + 1` + verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" + ;; + + freebsd-aout) + major=".$current" + versuffix=".$current.$revision"; + ;; + + freebsd-elf) + major=".$current" + versuffix=".$current"; + ;; + + irix | nonstopux) + major=`expr $current - $age + 1` + + case $version_type in + nonstopux) verstring_prefix=nonstopux ;; + *) verstring_prefix=sgi ;; + esac + verstring="$verstring_prefix$major.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$revision + while test "$loop" -ne 0; do + iface=`expr $revision - $loop` + loop=`expr $loop - 1` + verstring="$verstring_prefix$major.$iface:$verstring" + done + + # Before this point, $major must not contain `.'. + major=.$major + versuffix="$major.$revision" + ;; + + linux) + major=.`expr $current - $age` + versuffix="$major.$age.$revision" + ;; + + osf) + major=.`expr $current - $age` + versuffix=".$current.$age.$revision" + verstring="$current.$age.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$age + while test "$loop" -ne 0; do + iface=`expr $current - $loop` + loop=`expr $loop - 1` + verstring="$verstring:${iface}.0" + done + + # Make executables depend on our current version. + verstring="$verstring:${current}.0" + ;; + + sunos) + major=".$current" + versuffix=".$current.$revision" + ;; + + windows) + # Use '-' rather than '.', since we only want one + # extension on DOS 8.3 filesystems. + major=`expr $current - $age` + versuffix="-$major" + ;; + + *) + $echo "$modename: unknown library version type \`$version_type'" 1>&2 + $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 + exit $EXIT_FAILURE + ;; + esac + + # Clear the version info if we defaulted, and they specified a release. + if test -z "$vinfo" && test -n "$release"; then + major= + case $version_type in + darwin) + # we can't check for "0.0" in archive_cmds due to quoting + # problems, so we reset it completely + verstring= + ;; + *) + verstring="0.0" + ;; + esac + if test "$need_version" = no; then + versuffix= + else + versuffix=".0.0" + fi + fi + + # Remove version info from name if versioning should be avoided + if test "$avoid_version" = yes && test "$need_version" = no; then + major= + versuffix= + verstring="" + fi + + # Check to see if the archive will have undefined symbols. + if test "$allow_undefined" = yes; then + if test "$allow_undefined_flag" = unsupported; then + $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 + build_libtool_libs=no + build_old_libs=yes + fi + else + # Don't allow undefined symbols. + allow_undefined_flag="$no_undefined_flag" + fi + fi + + if test "$mode" != relink; then + # Remove our outputs, but don't remove object files since they + # may have been created when compiling PIC objects. + removelist= + tempremovelist=`$echo "$output_objdir/*"` + for p in $tempremovelist; do + case $p in + *.$objext) + ;; + $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) + if test "X$precious_files_regex" != "X"; then + if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 + then + continue + fi + fi + removelist="$removelist $p" + ;; + *) ;; + esac + done + if test -n "$removelist"; then + $show "${rm}r $removelist" + $run ${rm}r $removelist + fi + fi + + # Now set the variables for building old libraries. + if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then + oldlibs="$oldlibs $output_objdir/$libname.$libext" + + # Transform .lo files to .o files. + oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` + fi + + # Eliminate all temporary directories. + for path in $notinst_path; do + lib_search_path=`$echo "$lib_search_path " | ${SED} -e 's% $path % %g'` + deplibs=`$echo "$deplibs " | ${SED} -e 's% -L$path % %g'` + dependency_libs=`$echo "$dependency_libs " | ${SED} -e 's% -L$path % %g'` + done + + if test -n "$xrpath"; then + # If the user specified any rpath flags, then add them. + temp_xrpath= + for libdir in $xrpath; do + temp_xrpath="$temp_xrpath -R$libdir" + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done + if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then + dependency_libs="$temp_xrpath $dependency_libs" + fi + fi + + # Make sure dlfiles contains only unique files that won't be dlpreopened + old_dlfiles="$dlfiles" + dlfiles= + for lib in $old_dlfiles; do + case " $dlprefiles $dlfiles " in + *" $lib "*) ;; + *) dlfiles="$dlfiles $lib" ;; + esac + done + + # Make sure dlprefiles contains only unique files + old_dlprefiles="$dlprefiles" + dlprefiles= + for lib in $old_dlprefiles; do + case "$dlprefiles " in + *" $lib "*) ;; + *) dlprefiles="$dlprefiles $lib" ;; + esac + done + + if test "$build_libtool_libs" = yes; then + if test -n "$rpath"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) + # these systems don't actually have a c library (as such)! + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C library is in the System framework + deplibs="$deplibs -framework System" + ;; + *-*-netbsd*) + # Don't link with libc until the a.out ld.so is fixed. + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + test "X$arg" = "X-lc" && continue + ;; + *) + # Add libc to deplibs on all other systems if necessary. + if test "$build_libtool_need_lc" = "yes"; then + deplibs="$deplibs -lc" + fi + ;; + esac + fi + + # Transform deplibs into only deplibs that can be linked in shared. + name_save=$name + libname_save=$libname + release_save=$release + versuffix_save=$versuffix + major_save=$major + # I'm not sure if I'm treating the release correctly. I think + # release should show up in the -l (ie -lgmp5) so we don't want to + # add it in twice. Is that correct? + release="" + versuffix="" + major="" + newdeplibs= + droppeddeps=no + case $deplibs_check_method in + pass_all) + # Don't check for shared/static. Everything works. + # This might be a little naive. We might want to check + # whether the library exists or not. But this is on + # osf3 & osf4 and I'm not really sure... Just + # implementing what was already the behavior. + newdeplibs=$deplibs + ;; + test_compile) + # This code stresses the "libraries are programs" paradigm to its + # limits. Maybe even breaks it. We compile a program, linking it + # against the deplibs as a proxy for the library. Then we can check + # whether they linked in statically or dynamically with ldd. + $rm conftest.c + cat > conftest.c </dev/null` + for potent_lib in $potential_libs; do + # Follow soft links. + if ls -lLd "$potent_lib" 2>/dev/null \ + | grep " -> " >/dev/null; then + continue + fi + # The statement above tries to avoid entering an + # endless loop below, in case of cyclic links. + # We might still enter an endless loop, since a link + # loop can be closed while we follow links, + # but so what? + potlib="$potent_lib" + while test -h "$potlib" 2>/dev/null; do + potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` + case $potliblink in + [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; + *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; + esac + done + # It is ok to link against an archive when + # building a shared library. + if $AR -t $potlib > /dev/null 2>&1; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ + | ${SED} 10q \ + | $EGREP "$file_magic_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + $echo + $echo "*** Warning: linker path does not have real file for library $a_deplib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have" + $echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $echo "*** with $libname but no candidates were found. (...for file magic test)" + else + $echo "*** with $libname and none of the candidates passed a file format test" + $echo "*** using a file magic. Last file checked: $potlib" + fi + fi + else + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + fi + done # Gone through all deplibs. + ;; + match_pattern*) + set dummy $deplibs_check_method + match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` + for a_deplib in $deplibs; do + name=`expr $a_deplib : '-l\(.*\)'` + # If $name is empty we are operating on a -L argument. + if test -n "$name" && test "$name" != "0"; then + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $a_deplib "*) + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + ;; + esac + fi + if test -n "$a_deplib" ; then + libname=`eval \\$echo \"$libname_spec\"` + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do + potential_libs=`ls $i/$libname[.-]* 2>/dev/null` + for potent_lib in $potential_libs; do + potlib="$potent_lib" # see symlink-check above in file_magic test + if eval $echo \"$potent_lib\" 2>/dev/null \ + | ${SED} 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + $echo + $echo "*** Warning: linker path does not have real file for library $a_deplib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have" + $echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $echo "*** with $libname but no candidates were found. (...for regex pattern test)" + else + $echo "*** with $libname and none of the candidates passed a file format test" + $echo "*** using a regex pattern. Last file checked: $potlib" + fi + fi + else + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + fi + done # Gone through all deplibs. + ;; + none | unknown | *) + newdeplibs="" + tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ + -e 's/ -[LR][^ ]*//g'` + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + for i in $predeps $postdeps ; do + # can't use Xsed below, because $i might contain '/' + tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"` + done + fi + if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \ + | grep . >/dev/null; then + $echo + if test "X$deplibs_check_method" = "Xnone"; then + $echo "*** Warning: inter-library dependencies are not supported in this platform." + else + $echo "*** Warning: inter-library dependencies are not known to be supported." + fi + $echo "*** All declared inter-library dependencies are being dropped." + droppeddeps=yes + fi + ;; + esac + versuffix=$versuffix_save + major=$major_save + release=$release_save + libname=$libname_save + name=$name_save + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` + ;; + esac + + if test "$droppeddeps" = yes; then + if test "$module" = yes; then + $echo + $echo "*** Warning: libtool could not satisfy all declared inter-library" + $echo "*** dependencies of module $libname. Therefore, libtool will create" + $echo "*** a static module, that should work as long as the dlopening" + $echo "*** application is linked with the -dlopen flag." + if test -z "$global_symbol_pipe"; then + $echo + $echo "*** However, this would only work if libtool was able to extract symbol" + $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + $echo "*** not find such a program. So, this module is probably useless." + $echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + else + $echo "*** The inter-library dependencies that have been dropped here will be" + $echo "*** automatically added whenever a program is linked with this library" + $echo "*** or is declared to -dlopen it." + + if test "$allow_undefined" = no; then + $echo + $echo "*** Since this library must not contain undefined symbols," + $echo "*** because either the platform does not support them or" + $echo "*** it was explicitly requested with -no-undefined," + $echo "*** libtool will only create a static version of it." + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + fi + fi + # Done checking deplibs! + deplibs=$newdeplibs + fi + + # All the library-specific variables (install_libdir is set above). + library_names= + old_library= + dlname= + + # Test again, we may have decided not to build it any more + if test "$build_libtool_libs" = yes; then + if test "$hardcode_into_libs" = yes; then + # Hardcode the library paths + hardcode_libdirs= + dep_rpath= + rpath="$finalize_rpath" + test "$mode" != relink && rpath="$compile_rpath$rpath" + for libdir in $rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + dep_rpath="$dep_rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + if test -n "$hardcode_libdir_flag_spec_ld"; then + eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" + else + eval dep_rpath=\"$hardcode_libdir_flag_spec\" + fi + fi + if test -n "$runpath_var" && test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath="$rpath$dir:" + done + eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" + fi + test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" + fi + + shlibpath="$finalize_shlibpath" + test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" + if test -n "$shlibpath"; then + eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" + fi + + # Get the real and link names of the library. + eval shared_ext=\"$shrext_cmds\" + eval library_names=\"$library_names_spec\" + set dummy $library_names + realname="$2" + shift; shift + + if test -n "$soname_spec"; then + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + if test -z "$dlname"; then + dlname=$soname + fi + + lib="$output_objdir/$realname" + for link + do + linknames="$linknames $link" + done + + # Use standard objects if they are pic + test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then + $show "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $run $rm $export_symbols + cmds=$export_symbols_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + if len=`expr "X$cmd" : ".*"` && + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then + $show "$cmd" + $run eval "$cmd" || exit $? + skipped_export=false + else + # The command line is too long to execute in one step. + $show "using reloadable object file for export list..." + skipped_export=: + # Break out early, otherwise skipped_export may be + # set to false by a later but shorter cmd. + break + fi + done + IFS="$save_ifs" + if test -n "$export_symbols_regex"; then + $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" + $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + $show "$mv \"${export_symbols}T\" \"$export_symbols\"" + $run eval '$mv "${export_symbols}T" "$export_symbols"' + fi + fi + fi + + if test -n "$export_symbols" && test -n "$include_expsyms"; then + $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' + fi + + tmp_deplibs= + for test_deplib in $deplibs; do + case " $convenience " in + *" $test_deplib "*) ;; + *) + tmp_deplibs="$tmp_deplibs $test_deplib" + ;; + esac + done + deplibs="$tmp_deplibs" + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + else + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + func_extract_archives $gentop $convenience + libobjs="$libobjs $func_extract_archives_result" + fi + fi + + if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then + eval flag=\"$thread_safe_flag_spec\" + linker_flags="$linker_flags $flag" + fi + + # Make a backup of the uninstalled library when relinking + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? + fi + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + eval test_cmds=\"$module_expsym_cmds\" + cmds=$module_expsym_cmds + else + eval test_cmds=\"$module_cmds\" + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + eval test_cmds=\"$archive_expsym_cmds\" + cmds=$archive_expsym_cmds + else + eval test_cmds=\"$archive_cmds\" + cmds=$archive_cmds + fi + fi + + if test "X$skipped_export" != "X:" && + len=`expr "X$test_cmds" : ".*" 2>/dev/null` && + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then + : + else + # The command line is too long to link in one step, link piecewise. + $echo "creating reloadable object files..." + + # Save the value of $output and $libobjs because we want to + # use them later. If we have whole_archive_flag_spec, we + # want to use save_libobjs as it was before + # whole_archive_flag_spec was expanded, because we can't + # assume the linker understands whole_archive_flag_spec. + # This may have to be revisited, in case too many + # convenience libraries get linked in and end up exceeding + # the spec. + if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + fi + save_output=$output + output_la=`$echo "X$output" | $Xsed -e "$basename"` + + # Clear the reloadable object creation command queue and + # initialize k to one. + test_cmds= + concat_cmds= + objlist= + delfiles= + last_robj= + k=1 + output=$output_objdir/$output_la-${k}.$objext + # Loop over the list of objects to be linked. + for obj in $save_libobjs + do + eval test_cmds=\"$reload_cmds $objlist $last_robj\" + if test "X$objlist" = X || + { len=`expr "X$test_cmds" : ".*" 2>/dev/null` && + test "$len" -le "$max_cmd_len"; }; then + objlist="$objlist $obj" + else + # The command $test_cmds is almost too long, add a + # command to the queue. + if test "$k" -eq 1 ; then + # The first file doesn't have a previous command to add. + eval concat_cmds=\"$reload_cmds $objlist $last_robj\" + else + # All subsequent reloadable object files will link in + # the last one created. + eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\" + fi + last_robj=$output_objdir/$output_la-${k}.$objext + k=`expr $k + 1` + output=$output_objdir/$output_la-${k}.$objext + objlist=$obj + len=1 + fi + done + # Handle the remaining objects by creating one last + # reloadable object file. All subsequent reloadable object + # files will link in the last one created. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" + + if ${skipped_export-false}; then + $show "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $run $rm $export_symbols + libobjs=$output + # Append the command to create the export file. + eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\" + fi + + # Set up a command to remove the reloadable object files + # after they are used. + i=0 + while test "$i" -lt "$k" + do + i=`expr $i + 1` + delfiles="$delfiles $output_objdir/$output_la-${i}.$objext" + done + + $echo "creating a temporary reloadable object file: $output" + + # Loop through the commands generated above and execute them. + save_ifs="$IFS"; IFS='~' + for cmd in $concat_cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + + libobjs=$output + # Restore the value of output. + output=$save_output + + if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + fi + # Expand the library linking commands again to reset the + # value of $libobjs for piecewise linking. + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + cmds=$module_expsym_cmds + else + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + cmds=$archive_expsym_cmds + else + cmds=$archive_cmds + fi + fi + + # Append the command to remove the reloadable object files + # to the just-reset $cmds. + eval cmds=\"\$cmds~\$rm $delfiles\" + fi + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' + fi + + exit $lt_exit + } + done + IFS="$save_ifs" + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? + + if test -n "$convenience"; then + if test -z "$whole_archive_flag_spec"; then + $show "${rm}r $gentop" + $run ${rm}r "$gentop" + fi + fi + + exit $EXIT_SUCCESS + fi + + # Create links to the real library. + for linkname in $linknames; do + if test "$realname" != "$linkname"; then + $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" + $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? + fi + done + + # If -module or -export-dynamic was specified, set the dlname. + if test "$module" = yes || test "$export_dynamic" = yes; then + # On all known operating systems, these are identical. + dlname="$soname" + fi + fi + ;; + + obj) + if test -n "$deplibs"; then + $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 + fi + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 + fi + + if test -n "$rpath"; then + $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 + fi + + if test -n "$xrpath"; then + $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 + fi + + case $output in + *.lo) + if test -n "$objs$old_deplibs"; then + $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 + exit $EXIT_FAILURE + fi + libobj="$output" + obj=`$echo "X$output" | $Xsed -e "$lo2o"` + ;; + *) + libobj= + obj="$output" + ;; + esac + + # Delete the old objects. + $run $rm $obj $libobj + + # Objects from convenience libraries. This assumes + # single-version convenience libraries. Whenever we create + # different ones for PIC/non-PIC, this we'll have to duplicate + # the extraction. + reload_conv_objs= + gentop= + # reload_cmds runs $LD directly, so let us get rid of + # -Wl from whole_archive_flag_spec + wl= + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\" + else + gentop="$output_objdir/${obj}x" + generated="$generated $gentop" + + func_extract_archives $gentop $convenience + reload_conv_objs="$reload_objs $func_extract_archives_result" + fi + fi + + # Create the old-style object. + reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test + + output="$obj" + cmds=$reload_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + + # Exit if we aren't doing a library object file. + if test -z "$libobj"; then + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + exit $EXIT_SUCCESS + fi + + if test "$build_libtool_libs" != yes; then + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + # Create an invalid libtool object if no PIC, so that we don't + # accidentally link it into a program. + # $show "echo timestamp > $libobj" + # $run eval "echo timestamp > $libobj" || exit $? + exit $EXIT_SUCCESS + fi + + if test -n "$pic_flag" || test "$pic_mode" != default; then + # Only do commands if we really have different PIC objects. + reload_objs="$libobjs $reload_conv_objs" + output="$libobj" + cmds=$reload_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + exit $EXIT_SUCCESS + ;; + + prog) + case $host in + *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;; + esac + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 + fi + + if test "$preload" = yes; then + if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown && + test "$dlopen_self_static" = unknown; then + $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." + fi + fi + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` + finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` + ;; + esac + + case $host in + *darwin*) + # Don't allow lazy linking, it breaks C++ global constructors + if test "$tagname" = CXX ; then + compile_command="$compile_command ${wl}-bind_at_load" + finalize_command="$finalize_command ${wl}-bind_at_load" + fi + ;; + esac + + compile_command="$compile_command $compile_deplibs" + finalize_command="$finalize_command $finalize_deplibs" + + if test -n "$rpath$xrpath"; then + # If the user specified any rpath flags, then add them. + for libdir in $rpath $xrpath; do + # This is the magic to use -rpath. + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done + fi + + # Now hardcode the library paths + rpath= + hardcode_libdirs= + for libdir in $compile_rpath $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + case :$dllsearchpath: in + *":$libdir:"*) ;; + *) dllsearchpath="$dllsearchpath:$libdir";; + esac + ;; + esac + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + compile_rpath="$rpath" + + rpath= + hardcode_libdirs= + for libdir in $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$finalize_perm_rpath " in + *" $libdir "*) ;; + *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + finalize_rpath="$rpath" + + if test -n "$libobjs" && test "$build_old_libs" = yes; then + # Transform all the library objects into standard objects. + compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + fi + + dlsyms= + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + if test -n "$NM" && test -n "$global_symbol_pipe"; then + dlsyms="${outputname}S.c" + else + $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 + fi + fi + + if test -n "$dlsyms"; then + case $dlsyms in + "") ;; + *.c) + # Discover the nlist of each of the dlfiles. + nlist="$output_objdir/${outputname}.nm" + + $show "$rm $nlist ${nlist}S ${nlist}T" + $run $rm "$nlist" "${nlist}S" "${nlist}T" + + # Parse the name list into a source file. + $show "creating $output_objdir/$dlsyms" + + test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ +/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ +/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ + +#ifdef __cplusplus +extern \"C\" { +#endif + +/* Prevent the only kind of declaration conflicts we can make. */ +#define lt_preloaded_symbols some_other_symbol + +/* External symbol declarations for the compiler. */\ +" + + if test "$dlself" = yes; then + $show "generating symbol list for \`$output'" + + test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" + + # Add our own program objects to the symbol list. + progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + for arg in $progfiles; do + $show "extracting global C symbols from \`$arg'" + $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" + done + + if test -n "$exclude_expsyms"; then + $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' + $run eval '$mv "$nlist"T "$nlist"' + fi + + if test -n "$export_symbols_regex"; then + $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' + $run eval '$mv "$nlist"T "$nlist"' + fi + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + export_symbols="$output_objdir/$outputname.exp" + $run $rm $export_symbols + $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + else + $run eval "${SED} -e 's/\([ ][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' + $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' + $run eval 'mv "$nlist"T "$nlist"' + fi + fi + + for arg in $dlprefiles; do + $show "extracting global C symbols from \`$arg'" + name=`$echo "$arg" | ${SED} -e 's%^.*/%%'` + $run eval '$echo ": $name " >> "$nlist"' + $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" + done + + if test -z "$run"; then + # Make sure we have at least an empty file. + test -f "$nlist" || : > "$nlist" + + if test -n "$exclude_expsyms"; then + $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T + $mv "$nlist"T "$nlist" + fi + + # Try sorting and uniquifying the output. + if grep -v "^: " < "$nlist" | + if sort -k 3 /dev/null 2>&1; then + sort -k 3 + else + sort +2 + fi | + uniq > "$nlist"S; then + : + else + grep -v "^: " < "$nlist" > "$nlist"S + fi + + if test -f "$nlist"S; then + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' + else + $echo '/* NONE */' >> "$output_objdir/$dlsyms" + fi + + $echo >> "$output_objdir/$dlsyms" "\ + +#undef lt_preloaded_symbols + +#if defined (__STDC__) && __STDC__ +# define lt_ptr void * +#else +# define lt_ptr char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +" + + case $host in + *cygwin* | *mingw* ) + $echo >> "$output_objdir/$dlsyms" "\ +/* DATA imports from DLLs on WIN32 can't be const, because + runtime relocations are performed -- see ld's documentation + on pseudo-relocs */ +struct { +" + ;; + * ) + $echo >> "$output_objdir/$dlsyms" "\ +const struct { +" + ;; + esac + + + $echo >> "$output_objdir/$dlsyms" "\ + const char *name; + lt_ptr address; +} +lt_preloaded_symbols[] = +{\ +" + + eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms" + + $echo >> "$output_objdir/$dlsyms" "\ + {0, (lt_ptr) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif\ +" + fi + + pic_flag_for_symtable= + case $host in + # compiling the symbol table file with pic_flag works around + # a FreeBSD bug that causes programs to crash when -lm is + # linked before any other PIC object. But we must not use + # pic_flag when linking with -static. The problem exists in + # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. + *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + case "$compile_command " in + *" -static "*) ;; + *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";; + esac;; + *-*-hpux*) + case "$compile_command " in + *" -static "*) ;; + *) pic_flag_for_symtable=" $pic_flag";; + esac + esac + + # Now compile the dynamic symbol file. + $show "(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" + $run eval '(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? + + # Clean up the generated files. + $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" + $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" + + # Transform the symbol file into the correct name. + compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` + ;; + *) + $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 + exit $EXIT_FAILURE + ;; + esac + else + # We keep going just in case the user didn't refer to + # lt_preloaded_symbols. The linker will fail if global_symbol_pipe + # really was required. + + # Nullify the symbol file. + compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` + fi + + if test "$need_relink" = no || test "$build_libtool_libs" != yes; then + # Replace the output file specification. + compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + link_command="$compile_command$compile_rpath" + + # We have no uninstalled library dependencies, so finalize right now. + $show "$link_command" + $run eval "$link_command" + status=$? + + # Delete the generated files. + if test -n "$dlsyms"; then + $show "$rm $output_objdir/${outputname}S.${objext}" + $run $rm "$output_objdir/${outputname}S.${objext}" + fi + + exit $status + fi + + if test -n "$shlibpath_var"; then + # We should set the shlibpath_var + rpath= + for dir in $temp_rpath; do + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) + # Absolute path. + rpath="$rpath$dir:" + ;; + *) + # Relative path: add a thisdir entry. + rpath="$rpath\$thisdir/$dir:" + ;; + esac + done + temp_rpath="$rpath" + fi + + if test -n "$compile_shlibpath$finalize_shlibpath"; then + compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" + fi + if test -n "$finalize_shlibpath"; then + finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" + fi + + compile_var= + finalize_var= + if test -n "$runpath_var"; then + if test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath="$rpath$dir:" + done + compile_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + if test -n "$finalize_perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $finalize_perm_rpath; do + rpath="$rpath$dir:" + done + finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + fi + + if test "$no_install" = yes; then + # We don't need to create a wrapper script. + link_command="$compile_var$compile_command$compile_rpath" + # Replace the output file specification. + link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + # Delete the old output file. + $run $rm $output + # Link the executable and exit + $show "$link_command" + $run eval "$link_command" || exit $? + exit $EXIT_SUCCESS + fi + + if test "$hardcode_action" = relink; then + # Fast installation is not supported + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + + $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 + $echo "$modename: \`$output' will be relinked during installation" 1>&2 + else + if test "$fast_install" != no; then + link_command="$finalize_var$compile_command$finalize_rpath" + if test "$fast_install" = yes; then + relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` + else + # fast_install is set to needless + relink_command= + fi + else + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + fi + fi + + # Replace the output file specification. + link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` + + # Delete the old output files. + $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname + + $show "$link_command" + $run eval "$link_command" || exit $? + + # Now create the wrapper script. + $show "creating $output" + + # Quote the relink command for shipping. + if test -n "$relink_command"; then + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` + relink_command="$var=\"$var_value\"; export $var; $relink_command" + fi + done + relink_command="(cd `pwd`; $relink_command)" + relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` + fi + + # Quote $echo for shipping. + if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then + case $progpath in + [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; + *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; + esac + qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` + else + qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` + fi + + # Only actually do things if our run command is non-null. + if test -z "$run"; then + # win32 will think the script is a binary if it has + # a .exe suffix, so we strip it off here. + case $output in + *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;; + esac + # test for cygwin because mv fails w/o .exe extensions + case $host in + *cygwin*) + exeext=.exe + outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;; + *) exeext= ;; + esac + case $host in + *cygwin* | *mingw* ) + cwrappersource=`$echo ${objdir}/lt-${outputname}.c` + cwrapper=`$echo ${output}.exe` + $rm $cwrappersource $cwrapper + trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 + + cat > $cwrappersource <> $cwrappersource<<"EOF" +#include +#include +#include +#include +#include +#include + +#if defined(PATH_MAX) +# define LT_PATHMAX PATH_MAX +#elif defined(MAXPATHLEN) +# define LT_PATHMAX MAXPATHLEN +#else +# define LT_PATHMAX 1024 +#endif + +#ifndef DIR_SEPARATOR +#define DIR_SEPARATOR '/' +#endif + +#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ + defined (__OS2__) +#define HAVE_DOS_BASED_FILE_SYSTEM +#ifndef DIR_SEPARATOR_2 +#define DIR_SEPARATOR_2 '\\' +#endif +#endif + +#ifndef DIR_SEPARATOR_2 +# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) +#else /* DIR_SEPARATOR_2 */ +# define IS_DIR_SEPARATOR(ch) \ + (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) +#endif /* DIR_SEPARATOR_2 */ + +#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) +#define XFREE(stale) do { \ + if (stale) { free ((void *) stale); stale = 0; } \ +} while (0) + +const char *program_name = NULL; + +void * xmalloc (size_t num); +char * xstrdup (const char *string); +char * basename (const char *name); +char * fnqualify(const char *path); +char * strendzap(char *str, const char *pat); +void lt_fatal (const char *message, ...); + +int +main (int argc, char *argv[]) +{ + char **newargz; + int i; + + program_name = (char *) xstrdup ((char *) basename (argv[0])); + newargz = XMALLOC(char *, argc+2); +EOF + + cat >> $cwrappersource <> $cwrappersource <<"EOF" + newargz[1] = fnqualify(argv[0]); + /* we know the script has the same name, without the .exe */ + /* so make sure newargz[1] doesn't end in .exe */ + strendzap(newargz[1],".exe"); + for (i = 1; i < argc; i++) + newargz[i+1] = xstrdup(argv[i]); + newargz[argc+1] = NULL; +EOF + + cat >> $cwrappersource <> $cwrappersource <<"EOF" + return 127; +} + +void * +xmalloc (size_t num) +{ + void * p = (void *) malloc (num); + if (!p) + lt_fatal ("Memory exhausted"); + + return p; +} + +char * +xstrdup (const char *string) +{ + return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL +; +} + +char * +basename (const char *name) +{ + const char *base; + +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + /* Skip over the disk name in MSDOS pathnames. */ + if (isalpha (name[0]) && name[1] == ':') + name += 2; +#endif + + for (base = name; *name; name++) + if (IS_DIR_SEPARATOR (*name)) + base = name + 1; + return (char *) base; +} + +char * +fnqualify(const char *path) +{ + size_t size; + char *p; + char tmp[LT_PATHMAX + 1]; + + assert(path != NULL); + + /* Is it qualified already? */ +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + if (isalpha (path[0]) && path[1] == ':') + return xstrdup (path); +#endif + if (IS_DIR_SEPARATOR (path[0])) + return xstrdup (path); + + /* prepend the current directory */ + /* doesn't handle '~' */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal ("getcwd failed"); + size = strlen(tmp) + 1 + strlen(path) + 1; /* +2 for '/' and '\0' */ + p = XMALLOC(char, size); + sprintf(p, "%s%c%s", tmp, DIR_SEPARATOR, path); + return p; +} + +char * +strendzap(char *str, const char *pat) +{ + size_t len, patlen; + + assert(str != NULL); + assert(pat != NULL); + + len = strlen(str); + patlen = strlen(pat); + + if (patlen <= len) + { + str += len - patlen; + if (strcmp(str, pat) == 0) + *str = '\0'; + } + return str; +} + +static void +lt_error_core (int exit_status, const char * mode, + const char * message, va_list ap) +{ + fprintf (stderr, "%s: %s: ", program_name, mode); + vfprintf (stderr, message, ap); + fprintf (stderr, ".\n"); + + if (exit_status >= 0) + exit (exit_status); +} + +void +lt_fatal (const char *message, ...) +{ + va_list ap; + va_start (ap, message); + lt_error_core (EXIT_FAILURE, "FATAL", message, ap); + va_end (ap); +} +EOF + # we should really use a build-platform specific compiler + # here, but OTOH, the wrappers (shell script and this C one) + # are only useful if you want to execute the "real" binary. + # Since the "real" binary is built for $host, then this + # wrapper might as well be built for $host, too. + $run $LTCC -s -o $cwrapper $cwrappersource + ;; + esac + $rm $output + trap "$rm $output; exit $EXIT_FAILURE" 1 2 15 + + $echo > $output "\ +#! $SHELL + +# $output - temporary wrapper script for $objdir/$outputname +# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP +# +# The $output program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='${SED} -e 1s/^X//' +sed_quote_subst='$sed_quote_subst' + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command=\"$relink_command\" + +# This environment variable determines our operation mode. +if test \"\$libtool_install_magic\" = \"$magic\"; then + # install mode needs the following variable: + notinst_deplibs='$notinst_deplibs' +else + # When we are sourced in execute mode, \$file and \$echo are already set. + if test \"\$libtool_execute_magic\" != \"$magic\"; then + echo=\"$qecho\" + file=\"\$0\" + # Make sure echo works. + if test \"X\$1\" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift + elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then + # Yippee, \$echo works! + : + else + # Restart under the correct shell, and then maybe \$echo will work. + exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} + fi + fi\ +" + $echo >> $output "\ + + # Find the directory that this script lives in. + thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` + + # If there was a directory component, then change thisdir. + if test \"x\$destdir\" != \"x\$file\"; then + case \"\$destdir\" in + [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; + *) thisdir=\"\$thisdir/\$destdir\" ;; + esac + fi + + file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` + done + + # Try to get the absolute directory name. + absdir=\`cd \"\$thisdir\" && pwd\` + test -n \"\$absdir\" && thisdir=\"\$absdir\" +" + + if test "$fast_install" = yes; then + $echo >> $output "\ + program=lt-'$outputname'$exeext + progdir=\"\$thisdir/$objdir\" + + if test ! -f \"\$progdir/\$program\" || \\ + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ + test \"X\$file\" != \"X\$progdir/\$program\"; }; then + + file=\"\$\$-\$program\" + + if test ! -d \"\$progdir\"; then + $mkdir \"\$progdir\" + else + $rm \"\$progdir/\$file\" + fi" + + $echo >> $output "\ + + # relink executable if necessary + if test -n \"\$relink_command\"; then + if relink_command_output=\`eval \$relink_command 2>&1\`; then : + else + $echo \"\$relink_command_output\" >&2 + $rm \"\$progdir/\$file\" + exit $EXIT_FAILURE + fi + fi + + $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || + { $rm \"\$progdir/\$program\"; + $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } + $rm \"\$progdir/\$file\" + fi" + else + $echo >> $output "\ + program='$outputname' + progdir=\"\$thisdir/$objdir\" +" + fi + + $echo >> $output "\ + + if test -f \"\$progdir/\$program\"; then" + + # Export our shlibpath_var if we have one. + if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + $echo >> $output "\ + # Add our own library path to $shlibpath_var + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" + + # Some systems cannot cope with colon-terminated $shlibpath_var + # The second colon is a workaround for a bug in BeOS R4 sed + $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` + + export $shlibpath_var +" + fi + + # fixup the dll searchpath if we need to. + if test -n "$dllsearchpath"; then + $echo >> $output "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + + $echo >> $output "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. + + # Make sure env LD_LIBRARY_PATH does not mess us up + if test -n \"\${LD_LIBRARY_PATH+set}\"; then + export LD_LIBRARY_PATH=\$progdir:\$LD_LIBRARY_PATH + fi +" + case $host in + # Backslashes separate directories on plain windows + *-*-mingw | *-*-os2*) + $echo >> $output "\ + exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} +" + ;; + + *) + $echo >> $output "\ + exec \"\$progdir/\$program\" \${1+\"\$@\"} +" + ;; + esac + $echo >> $output "\ + \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" + exit $EXIT_FAILURE + fi + else + # The program doesn't exist. + \$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 + \$echo \"This script is just a wrapper for \$program.\" 1>&2 + $echo \"See the $PACKAGE documentation for more information.\" 1>&2 + exit $EXIT_FAILURE + fi +fi\ +" + chmod +x $output + fi + exit $EXIT_SUCCESS + ;; + esac + + # See if we need to build an old-fashioned archive. + for oldlib in $oldlibs; do + + if test "$build_libtool_libs" = convenience; then + oldobjs="$libobjs_save" + addlibs="$convenience" + build_libtool_libs=no + else + if test "$build_libtool_libs" = module; then + oldobjs="$libobjs_save" + build_libtool_libs=no + else + oldobjs="$old_deplibs $non_pic_objects" + fi + addlibs="$old_convenience" + fi + + if test -n "$addlibs"; then + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + func_extract_archives $gentop $addlibs + oldobjs="$oldobjs $func_extract_archives_result" + fi + + # Do each command in the archive commands. + if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then + cmds=$old_archive_from_new_cmds + else + # POSIX demands no paths to be encoded in archives. We have + # to avoid creating archives with duplicate basenames if we + # might have to extract them afterwards, e.g., when creating a + # static archive out of a convenience library, or when linking + # the entirety of a libtool archive into another (currently + # not supported by libtool). + if (for obj in $oldobjs + do + $echo "X$obj" | $Xsed -e 's%^.*/%%' + done | sort | sort -uc >/dev/null 2>&1); then + : + else + $echo "copying selected object files to avoid basename conflicts..." + + if test -z "$gentop"; then + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + $show "${rm}r $gentop" + $run ${rm}r "$gentop" + $show "$mkdir $gentop" + $run $mkdir "$gentop" + status=$? + if test "$status" -ne 0 && test ! -d "$gentop"; then + exit $status + fi + fi + + save_oldobjs=$oldobjs + oldobjs= + counter=1 + for obj in $save_oldobjs + do + objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` + case " $oldobjs " in + " ") oldobjs=$obj ;; + *[\ /]"$objbase "*) + while :; do + # Make sure we don't pick an alternate name that also + # overlaps. + newobj=lt$counter-$objbase + counter=`expr $counter + 1` + case " $oldobjs " in + *[\ /]"$newobj "*) ;; + *) if test ! -f "$gentop/$newobj"; then break; fi ;; + esac + done + $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" + $run ln "$obj" "$gentop/$newobj" || + $run cp "$obj" "$gentop/$newobj" + oldobjs="$oldobjs $gentop/$newobj" + ;; + *) oldobjs="$oldobjs $obj" ;; + esac + done + fi + + eval cmds=\"$old_archive_cmds\" + + if len=`expr "X$cmds" : ".*"` && + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then + cmds=$old_archive_cmds + else + # the command line is too long to link in one step, link in parts + $echo "using piecewise archive linking..." + save_RANLIB=$RANLIB + RANLIB=: + objlist= + concat_cmds= + save_oldobjs=$oldobjs + + # Is there a better way of finding the last object in the list? + for obj in $save_oldobjs + do + last_oldobj=$obj + done + for obj in $save_oldobjs + do + oldobjs="$objlist $obj" + objlist="$objlist $obj" + eval test_cmds=\"$old_archive_cmds\" + if len=`expr "X$test_cmds" : ".*" 2>/dev/null` && + test "$len" -le "$max_cmd_len"; then + : + else + # the above command should be used before it gets too long + oldobjs=$objlist + if test "$obj" = "$last_oldobj" ; then + RANLIB=$save_RANLIB + fi + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" + objlist= + fi + done + RANLIB=$save_RANLIB + oldobjs=$objlist + if test "X$oldobjs" = "X" ; then + eval cmds=\"\$concat_cmds\" + else + eval cmds=\"\$concat_cmds~\$old_archive_cmds\" + fi + fi + fi + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + eval cmd=\"$cmd\" + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + done + + if test -n "$generated"; then + $show "${rm}r$generated" + $run ${rm}r$generated + fi + + # Now create the libtool archive. + case $output in + *.la) + old_library= + test "$build_old_libs" = yes && old_library="$libname.$libext" + $show "creating $output" + + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` + relink_command="$var=\"$var_value\"; export $var; $relink_command" + fi + done + # Quote the link command for shipping. + relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" + relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` + if test "$hardcode_automatic" = yes ; then + relink_command= + fi + + + # Only create the output if not a dry run. + if test -z "$run"; then + for installed in no yes; do + if test "$installed" = yes; then + if test -z "$install_libdir"; then + break + fi + output="$output_objdir/$outputname"i + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do + case $deplib in + *.la) + name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + if test -z "$libdir"; then + $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + if test "X$EGREP" = X ; then + EGREP=egrep + fi + # We do not want portage's install root ($D) present. Check only for + # this if the .la is being installed. + if test "$installed" = yes && test "$D"; then + eval mynewdependency_lib=`echo "$libdir/$name" |sed -e "s:$D:/:g" -e 's:/\+:/:g'` + else + mynewdependency_lib="$libdir/$name" + fi + # Do not add duplicates + if test "$mynewdependency_lib"; then + my_little_ninja_foo_1=`echo $newdependency_libs |$EGREP -e "$mynewdependency_lib"` + if test -z "$my_little_ninja_foo_1"; then + newdependency_libs="$newdependency_libs $mynewdependency_lib" + fi + fi + ;; + *) + if test "$installed" = yes; then + # Rather use S=WORKDIR if our version of portage supports it. + # This is because some ebuild (gcc) do not use $S as buildroot. + if test "$PWORKDIR"; then + S="$PWORKDIR" + fi + # We do not want portage's build root ($S) present. + my_little_ninja_foo_2=`echo $deplib |$EGREP -e "$S"` + # We do not want portage's install root ($D) present. + my_little_ninja_foo_3=`echo $deplib |$EGREP -e "$D"` + if test -n "$my_little_ninja_foo_2" && test "$S"; then + mynewdependency_lib="" + elif test -n "$my_little_ninja_foo_3" && test "$D"; then + eval mynewdependency_lib=`echo "$deplib" |sed -e "s:$D:/:g" -e 's:/\+:/:g'` + else + mynewdependency_lib="$deplib" + fi + else + mynewdependency_lib="$deplib" + fi + # Do not add duplicates + if test "$mynewdependency_lib"; then + my_little_ninja_foo_4=`echo $newdependency_libs |$EGREP -e "$mynewdependency_lib"` + if test -z "$my_little_ninja_foo_4"; then + newdependency_libs="$newdependency_libs $mynewdependency_lib" + fi + fi + ;; + esac + done + dependency_libs="$newdependency_libs" + newdlfiles= + for lib in $dlfiles; do + name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + if test -z "$libdir"; then + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + newdlfiles="$newdlfiles $libdir/$name" + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + if test -z "$libdir"; then + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + newdlprefiles="$newdlprefiles $libdir/$name" + done + dlprefiles="$newdlprefiles" + else + newdlfiles= + for lib in $dlfiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + newdlfiles="$newdlfiles $abs" + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + newdlprefiles="$newdlprefiles $abs" + done + dlprefiles="$newdlprefiles" + fi + $rm $output + # place dlname in correct position for cygwin + tdlname=$dlname + case $host,$output,$installed,$module,$dlname in + *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; + esac + # Do not add duplicates + if test "$installed" = yes && test "$D"; then + install_libdir=`echo "$install_libdir" |sed -e "s:$D:/:g" -e 's:/\+:/:g'` + fi + $echo > $output "\ +# $outputname - a libtool library file +# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='$tdlname' + +# Names of this library. +library_names='$library_names' + +# The name of the static archive. +old_library='$old_library' + +# Libraries that this one depends upon. +dependency_libs='$dependency_libs' + +# Version information for $libname. +current=$current +age=$age +revision=$revision + +# Is this an already installed library? +installed=$installed + +# Should we warn about portability when linking against -modules? +shouldnotlink=$module + +# Files to dlopen/dlpreopen +dlopen='$dlfiles' +dlpreopen='$dlprefiles' + +# Directory that this library needs to be installed in: +libdir='$install_libdir'" + if test "$installed" = no && test "$need_relink" = yes; then + $echo >> $output "\ +relink_command=\"$relink_command\"" + fi + done + fi + + # Do a symbolic link so that the libtool archive can be found in + # LD_LIBRARY_PATH before the program is installed. + $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" + $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? + ;; + esac + exit $EXIT_SUCCESS + ;; + + # libtool install mode + install) + modename="$modename: install" + + # There may be an optional sh(1) argument at the beginning of + # install_prog (especially on Windows NT). + if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || + # Allow the use of GNU shtool's install command. + $echo "X$nonopt" | grep shtool > /dev/null; then + # Aesthetically quote it. + arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + install_prog="$arg " + arg="$1" + shift + else + install_prog= + arg=$nonopt + fi + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + install_prog="$install_prog$arg" + + # We need to accept at least all the BSD install flags. + dest= + files= + opts= + prev= + install_type= + isdir=no + stripme= + for arg + do + if test -n "$dest"; then + files="$files $dest" + dest=$arg + continue + fi + + case $arg in + -d) isdir=yes ;; + -f) + case " $install_prog " in + *[\\\ /]cp\ *) ;; + *) prev=$arg ;; + esac + ;; + -g | -m | -o) prev=$arg ;; + -s) + stripme=" -s" + continue + ;; + -*) + ;; + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then + prev= + else + dest=$arg + continue + fi + ;; + esac + + # Aesthetically quote the argument. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + install_prog="$install_prog $arg" + done + + if test -z "$install_prog"; then + $echo "$modename: you must specify an install program" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + if test -n "$prev"; then + $echo "$modename: the \`$prev' option requires an argument" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + if test -z "$files"; then + if test -z "$dest"; then + $echo "$modename: no file or destination specified" 1>&2 + else + $echo "$modename: you must specify a destination" 1>&2 + fi + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Strip any trailing slash from the destination. + dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` + + # Check to see that the destination is a directory. + test -d "$dest" && isdir=yes + if test "$isdir" = yes; then + destdir="$dest" + destname= + else + destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` + test "X$destdir" = "X$dest" && destdir=. + destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` + + # Not a directory, so check to see that there is only one file specified. + set dummy $files + if test "$#" -gt 2; then + $echo "$modename: \`$dest' is not a directory" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + fi + case $destdir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + for file in $files; do + case $file in + *.lo) ;; + *) + $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + esac + done + ;; + esac + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + staticlibs= + future_libdirs= + current_libdirs= + for file in $files; do + + # Do each installation. + case $file in + *.$libext) + # Do the static libraries later. + staticlibs="$staticlibs $file" + ;; + + *.la) + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + library_names= + old_library= + relink_command= + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Add the libdir to current_libdirs if it is the destination. + if test "X$destdir" = "X$libdir"; then + case "$current_libdirs " in + *" $libdir "*) ;; + *) current_libdirs="$current_libdirs $libdir" ;; + esac + else + # Note the libdir as a future libdir. + case "$future_libdirs " in + *" $libdir "*) ;; + *) future_libdirs="$future_libdirs $libdir" ;; + esac + fi + + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/ + test "X$dir" = "X$file/" && dir= + dir="$dir$objdir" + + if test -n "$relink_command"; then + # Determine the prefix the user has applied to our future dir. + inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"` + + # Don't allow the user to place us outside of our expected + # location b/c this prevents finding dependent libraries that + # are installed to the same prefix. + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. + if test "$inst_prefix_dir" = "$destdir"; then + $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 + exit $EXIT_FAILURE + fi + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. + relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` + else + relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%%"` + fi + + $echo "$modename: warning: relinking \`$file'" 1>&2 + $show "$relink_command" + if $run eval "$relink_command"; then : + else + $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 + exit $EXIT_FAILURE + fi + fi + + # See the names of the shared library. + set dummy $library_names + if test -n "$2"; then + realname="$2" + shift + shift + + srcname="$realname" + test -n "$relink_command" && srcname="$realname"T + + # Install the shared library and build the symlinks. + $show "$install_prog $dir/$srcname $destdir/$realname" + $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $? + if test -n "$stripme" && test -n "$striplib"; then + $show "$striplib $destdir/$realname" + $run eval "$striplib $destdir/$realname" || exit $? + fi + + if test "$#" -gt 0; then + # Delete the old symlinks, and create new ones. + # Try `ln -sf' first, because the `ln' binary might depend on + # the symlink we replace! Solaris /bin/ln does not understand -f, + # so we also need to try rm && ln -s. + for linkname + do + if test "$linkname" != "$realname"; then + $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" + $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" + fi + done + fi + + # Do each command in the postinstall commands. + lib="$destdir/$realname" + cmds=$postinstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' + fi + + exit $lt_exit + } + done + IFS="$save_ifs" + fi + + # Install the pseudo-library for information purposes. + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + instname="$dir/$name"i + $show "$install_prog $instname $destdir/$name" + $run eval "$install_prog $instname $destdir/$name" || exit $? + + # Maybe install the static library, too. + test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" + ;; + + *.lo) + # Install (i.e. copy) a libtool object. + + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + destfile="$destdir/$destfile" + fi + + # Deduce the name of the destination old-style object file. + case $destfile in + *.lo) + staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` + ;; + *.$objext) + staticdest="$destfile" + destfile= + ;; + *) + $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + # Install the libtool object if requested. + if test -n "$destfile"; then + $show "$install_prog $file $destfile" + $run eval "$install_prog $file $destfile" || exit $? + fi + + # Install the old object if enabled. + if test "$build_old_libs" = yes; then + # Deduce the name of the old-style object file. + staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` + + $show "$install_prog $staticobj $staticdest" + $run eval "$install_prog \$staticobj \$staticdest" || exit $? + fi + exit $EXIT_SUCCESS + ;; + + *) + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + destfile="$destdir/$destfile" + fi + + # If the file is missing, and there is a .exe on the end, strip it + # because it is most likely a libtool script we actually want to + # install + stripped_ext="" + case $file in + *.exe) + if test ! -f "$file"; then + file=`$echo $file|${SED} 's,.exe$,,'` + stripped_ext=".exe" + fi + ;; + esac + + # Do a test to see if this is really a libtool program. + case $host in + *cygwin*|*mingw*) + wrapper=`$echo $file | ${SED} -e 's,.exe$,,'` + ;; + *) + wrapper=$file + ;; + esac + if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then + notinst_deplibs= + relink_command= + + # Note that it is not necessary on cygwin/mingw to append a dot to + # foo even if both foo and FILE.exe exist: automatic-append-.exe + # behavior happens only for exec(3), not for open(2)! Also, sourcing + # `FILE.' does not work on cygwin managed mounts. + # + # If there is no directory component, then add one. + case $wrapper in + */* | *\\*) . ${wrapper} ;; + *) . ./${wrapper} ;; + esac + + # Check the variables that should have been set. + if test -z "$notinst_deplibs"; then + $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 + exit $EXIT_FAILURE + fi + + finalize=yes + for lib in $notinst_deplibs; do + # Check to see that each library is installed. + libdir= + if test -f "$lib"; then + # If there is no directory component, then add one. + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + fi + libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test + if test -n "$libdir" && test ! -f "$libfile"; then + $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 + finalize=no + fi + done + + relink_command= + # Note that it is not necessary on cygwin/mingw to append a dot to + # foo even if both foo and FILE.exe exist: automatic-append-.exe + # behavior happens only for exec(3), not for open(2)! Also, sourcing + # `FILE.' does not work on cygwin managed mounts. + # + # If there is no directory component, then add one. + case $wrapper in + */* | *\\*) . ${wrapper} ;; + *) . ./${wrapper} ;; + esac + + outputname= + if test "$fast_install" = no && test -n "$relink_command"; then + if test "$finalize" = yes && test -z "$run"; then + tmpdir="/tmp" + test -n "$TMPDIR" && tmpdir="$TMPDIR" + tmpdir="$tmpdir/libtool-$$" + save_umask=`umask` + umask 0077 + if $mkdir "$tmpdir"; then + umask $save_umask + else + umask $save_umask + $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2 + continue + fi + file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` + outputname="$tmpdir/$file" + # Replace the output file specification. + relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` + + $show "$relink_command" + if $run eval "$relink_command"; then : + else + $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 + ${rm}r "$tmpdir" + continue + fi + file="$outputname" + else + $echo "$modename: warning: cannot relink \`$file'" 1>&2 + fi + else + # Install the binary that we compiled earlier. + file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + # remove .exe since cygwin /usr/bin/install will append another + # one anyway + case $install_prog,$host in + */usr/bin/install*,*cygwin*) + case $file:$destfile in + *.exe:*.exe) + # this is ok + ;; + *.exe:*) + destfile=$destfile.exe + ;; + *:*.exe) + destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'` + ;; + esac + ;; + esac + $show "$install_prog$stripme $file $destfile" + $run eval "$install_prog\$stripme \$file \$destfile" || exit $? + test -n "$outputname" && ${rm}r "$tmpdir" + ;; + esac + done + + for file in $staticlibs; do + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + + # Set up the ranlib parameters. + oldlib="$destdir/$name" + + $show "$install_prog $file $oldlib" + $run eval "$install_prog \$file \$oldlib" || exit $? + + if test -n "$stripme" && test -n "$old_striplib"; then + $show "$old_striplib $oldlib" + $run eval "$old_striplib $oldlib" || exit $? + fi + + # Do each command in the postinstall commands. + cmds=$old_postinstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + done + + if test -n "$future_libdirs"; then + $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 + fi + + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + test -n "$run" && current_libdirs=" -n$current_libdirs" + exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' + else + exit $EXIT_SUCCESS + fi + ;; + + # libtool finish mode + finish) + modename="$modename: finish" + libdirs="$nonopt" + admincmds= + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + for dir + do + libdirs="$libdirs $dir" + done + + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. + cmds=$finish_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || admincmds="$admincmds + $cmd" + done + IFS="$save_ifs" + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $run eval "$cmds" || admincmds="$admincmds + $cmds" + fi + done + fi + + # Exit here if they wanted silent mode. + test "$show" = : && exit $EXIT_SUCCESS + + $echo "----------------------------------------------------------------------" + $echo "Libraries have been installed in:" + for libdir in $libdirs; do + $echo " $libdir" + done + $echo + $echo "If you ever happen to want to link against installed libraries" + $echo "in a given directory, LIBDIR, you must either use libtool, and" + $echo "specify the full pathname of the library, or use the \`-LLIBDIR'" + $echo "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then + $echo " - add LIBDIR to the \`$shlibpath_var' environment variable" + $echo " during execution" + fi + if test -n "$runpath_var"; then + $echo " - add LIBDIR to the \`$runpath_var' environment variable" + $echo " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" + + $echo " - use the \`$flag' linker flag" + fi + if test -n "$admincmds"; then + $echo " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then + $echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" + fi + $echo + $echo "See any operating system documentation about shared libraries for" + $echo "more information, such as the ld(1) and ld.so(8) manual pages." + $echo "----------------------------------------------------------------------" + exit $EXIT_SUCCESS + ;; + + # libtool execute mode + execute) + modename="$modename: execute" + + # The first argument is the command name. + cmd="$nonopt" + if test -z "$cmd"; then + $echo "$modename: you must specify a COMMAND" 1>&2 + $echo "$help" + exit $EXIT_FAILURE + fi + + # Handle -dlopen flags immediately. + for file in $execute_dlfiles; do + if test ! -f "$file"; then + $echo "$modename: \`$file' is not a file" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + dir= + case $file in + *.la) + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Read the libtool library. + dlname= + library_names= + + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Skip this library if it cannot be dlopened. + if test -z "$dlname"; then + # Warn if it was a shared library. + test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" + continue + fi + + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$file" && dir=. + + if test -f "$dir/$objdir/$dlname"; then + dir="$dir/$objdir" + else + $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 + exit $EXIT_FAILURE + fi + ;; + + *.lo) + # Just add the directory containing the .lo file. + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$file" && dir=. + ;; + + *) + $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 + continue + ;; + esac + + # Get the absolute pathname. + absdir=`cd "$dir" && pwd` + test -n "$absdir" && dir="$absdir" + + # Now add the directory to shlibpath_var. + if eval "test -z \"\$$shlibpath_var\""; then + eval "$shlibpath_var=\"\$dir\"" + else + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" + fi + done + + # This variable tells wrapper scripts just to set shlibpath_var + # rather than running their programs. + libtool_execute_magic="$magic" + + # Check if any of the arguments is a wrapper script. + args= + for file + do + case $file in + -*) ;; + *) + # Do a test to see if this is really a libtool program. + if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Transform arg to wrapped name. + file="$progdir/$program" + fi + ;; + esac + # Quote arguments (to preserve shell metacharacters). + file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` + args="$args \"$file\"" + done + + if test -z "$run"; then + if test -n "$shlibpath_var"; then + # Export the shlibpath_var. + eval "export $shlibpath_var" + fi + + # Restore saved environment variables + if test "${save_LC_ALL+set}" = set; then + LC_ALL="$save_LC_ALL"; export LC_ALL + fi + if test "${save_LANG+set}" = set; then + LANG="$save_LANG"; export LANG + fi + + # Now prepare to actually exec the command. + exec_cmd="\$cmd$args" + else + # Display what would be done. + if test -n "$shlibpath_var"; then + eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" + $echo "export $shlibpath_var" + fi + $echo "$cmd$args" + exit $EXIT_SUCCESS + fi + ;; + + # libtool clean and uninstall mode + clean | uninstall) + modename="$modename: $mode" + rm="$nonopt" + files= + rmforce= + exit_status=0 + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + for arg + do + case $arg in + -f) rm="$rm $arg"; rmforce=yes ;; + -*) rm="$rm $arg" ;; + *) files="$files $arg" ;; + esac + done + + if test -z "$rm"; then + $echo "$modename: you must specify an RM program" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + rmdirs= + + origobjdir="$objdir" + for file in $files; do + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + if test "X$dir" = "X$file"; then + dir=. + objdir="$origobjdir" + else + objdir="$dir/$origobjdir" + fi + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + test "$mode" = uninstall && objdir="$dir" + + # Remember objdir for removal later, being careful to avoid duplicates + if test "$mode" = clean; then + case " $rmdirs " in + *" $objdir "*) ;; + *) rmdirs="$rmdirs $objdir" ;; + esac + fi + + # Don't error if the file doesn't exist and rm -f was used. + if (test -L "$file") >/dev/null 2>&1 \ + || (test -h "$file") >/dev/null 2>&1 \ + || test -f "$file"; then + : + elif test -d "$file"; then + exit_status=1 + continue + elif test "$rmforce" = yes; then + continue + fi + + rmfiles="$file" + + case $name in + *.la) + # Possibly a libtool archive, so verify it. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + . $dir/$name + + # Delete the libtool libraries and symlinks. + for n in $library_names; do + rmfiles="$rmfiles $objdir/$n" + done + test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" + test "$mode" = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" + + if test "$mode" = uninstall; then + if test -n "$library_names"; then + # Do each command in the postuninstall commands. + cmds=$postuninstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" + if test "$?" -ne 0 && test "$rmforce" != yes; then + exit_status=1 + fi + done + IFS="$save_ifs" + fi + + if test -n "$old_library"; then + # Do each command in the old_postuninstall commands. + cmds=$old_postuninstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" + if test "$?" -ne 0 && test "$rmforce" != yes; then + exit_status=1 + fi + done + IFS="$save_ifs" + fi + # FIXME: should reinstall the best remaining shared library. + fi + fi + ;; + + *.lo) + # Possibly a libtool object, so verify it. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + + # Read the .lo file + . $dir/$name + + # Add PIC object to the list of files to remove. + if test -n "$pic_object" \ + && test "$pic_object" != none; then + rmfiles="$rmfiles $dir/$pic_object" + fi + + # Add non-PIC object to the list of files to remove. + if test -n "$non_pic_object" \ + && test "$non_pic_object" != none; then + rmfiles="$rmfiles $dir/$non_pic_object" + fi + fi + ;; + + *) + if test "$mode" = clean ; then + noexename=$name + case $file in + *.exe) + file=`$echo $file|${SED} 's,.exe$,,'` + noexename=`$echo $name|${SED} 's,.exe$,,'` + # $file with .exe has already been added to rmfiles, + # add $file without .exe + rmfiles="$rmfiles $file" + ;; + esac + # Do a test to see if this is a libtool program. + if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + relink_command= + . $dir/$noexename + + # note $name still contains .exe if it was in $file originally + # as does the version of $file that was added into $rmfiles + rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" + if test "$fast_install" = yes && test -n "$relink_command"; then + rmfiles="$rmfiles $objdir/lt-$name" + fi + if test "X$noexename" != "X$name" ; then + rmfiles="$rmfiles $objdir/lt-${noexename}.c" + fi + fi + fi + ;; + esac + $show "$rm $rmfiles" + $run $rm $rmfiles || exit_status=1 + done + objdir="$origobjdir" + + # Try to remove the ${objdir}s in the directories where we deleted files + for dir in $rmdirs; do + if test -d "$dir"; then + $show "rmdir $dir" + $run rmdir $dir >/dev/null 2>&1 + fi + done + + exit $exit_status + ;; + + "") + $echo "$modename: you must specify a MODE" 1>&2 + $echo "$generic_help" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + if test -z "$exec_cmd"; then + $echo "$modename: invalid operation mode \`$mode'" 1>&2 + $echo "$generic_help" 1>&2 + exit $EXIT_FAILURE + fi +fi # test -z "$show_help" + +if test -n "$exec_cmd"; then + eval exec $exec_cmd + exit $EXIT_FAILURE +fi + +# We need to display help for each of the modes. +case $mode in +"") $echo \ +"Usage: $modename [OPTION]... [MODE-ARG]... + +Provide generalized library-building support services. + + --config show all configuration variables + --debug enable verbose shell tracing +-n, --dry-run display commands without modifying any files + --features display basic configuration information and exit + --finish same as \`--mode=finish' + --help display this help message and exit + --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] + --quiet same as \`--silent' + --silent don't print informational messages + --tag=TAG use configuration variables from tag TAG + --version print version information + +MODE must be one of the following: + + clean remove files from the build directory + compile compile a source file into a libtool object + execute automatically set library path, then run a program + finish complete the installation of libtool libraries + install install libraries or executables + link create a library or an executable + uninstall remove libraries from an installed directory + +MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for +a more detailed description of MODE. + +Report bugs to ." + exit $EXIT_SUCCESS + ;; + +clean) + $echo \ +"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE... + +Remove files from the build directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, object or program, all the files associated +with it are deleted. Otherwise, only FILE itself is deleted using RM." + ;; + +compile) + $echo \ +"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE + +Compile a source file into a libtool library object. + +This mode accepts the following additional options: + + -o OUTPUT-FILE set the output file name to OUTPUT-FILE + -prefer-pic try to building PIC objects only + -prefer-non-pic try to building non-PIC objects only + -static always build a \`.o' file suitable for static linking + +COMPILE-COMMAND is a command to be used in creating a \`standard' object file +from the given SOURCEFILE. + +The output file name is determined by removing the directory component from +SOURCEFILE, then substituting the C source code suffix \`.c' with the +library object suffix, \`.lo'." + ;; + +execute) + $echo \ +"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... + +Automatically set library path, then run a program. + +This mode accepts the following additional options: + + -dlopen FILE add the directory containing FILE to the library path + +This mode sets the library path environment variable according to \`-dlopen' +flags. + +If any of the ARGS are libtool executable wrappers, then they are translated +into their corresponding uninstalled binary, and any of their required library +directories are added to the library path. + +Then, COMMAND is executed, with ARGS as arguments." + ;; + +finish) + $echo \ +"Usage: $modename [OPTION]... --mode=finish [LIBDIR]... + +Complete the installation of libtool libraries. + +Each LIBDIR is a directory that contains libtool libraries. + +The commands that this mode executes may require superuser privileges. Use +the \`--dry-run' option if you just want to see what would be executed." + ;; + +install) + $echo \ +"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... + +Install executables or libraries. + +INSTALL-COMMAND is the installation command. The first component should be +either the \`install' or \`cp' program. + +The rest of the components are interpreted as arguments to that command (only +BSD-compatible install options are recognized)." + ;; + +link) + $echo \ +"Usage: $modename [OPTION]... --mode=link LINK-COMMAND... + +Link object files or libraries together to form another library, or to +create an executable program. + +LINK-COMMAND is a command using the C compiler that you would use to create +a program from several object files. + +The following components of LINK-COMMAND are treated specially: + + -all-static do not do any dynamic linking at all + -avoid-version do not add a version suffix if possible + -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) + -export-symbols SYMFILE + try to export only the symbols listed in SYMFILE + -export-symbols-regex REGEX + try to export only the symbols matching REGEX + -LLIBDIR search LIBDIR for required installed libraries + -lNAME OUTPUT-FILE requires the installed library libNAME + -module build a library that can dlopened + -no-fast-install disable the fast-install mode + -no-install link a not-installable executable + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects + -objectlist FILE Use a list of object files found in FILE to specify objects + -precious-files-regex REGEX + don't remove output files matching REGEX + -release RELEASE specify package release information + -rpath LIBDIR the created library will eventually be installed in LIBDIR + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries + -static do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] + specify library version info [each variable defaults to 0] + +All other options (arguments beginning with \`-') are ignored. + +Every other argument is treated as a filename. Files ending in \`.la' are +treated as uninstalled libtool libraries, other files are standard or library +object files. + +If the OUTPUT-FILE ends in \`.la', then a libtool library is created, +only library objects (\`.lo' files) may be specified, and \`-rpath' is +required, except when creating a convenience library. + +If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created +using \`ar' and \`ranlib', or on Windows using \`lib'. + +If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file +is created, otherwise an executable program is created." + ;; + +uninstall) + $echo \ +"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... + +Remove libraries from an installation directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, all the files associated with it are deleted. +Otherwise, only FILE itself is deleted using RM." + ;; + +*) + $echo "$modename: invalid operation mode \`$mode'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; +esac + +$echo +$echo "Try \`$modename --help' for more information about other modes." + +exit $? + +# The TAGs below are defined such that we never get into a situation +# in which we disable both kinds of libraries. Given conflicting +# choices, we go for a static library, that is the most portable, +# since we can't tell whether shared libraries were disabled because +# the user asked for that or because the platform doesn't support +# them. This is particularly important on AIX, because we don't +# support having both static and shared libraries enabled at the same +# time on that platform, so we default to a shared-only configuration. +# If a disable-shared tag is given, we'll fallback to a static-only +# configuration. But we'll never go from static-only to shared-only. + +# ### BEGIN LIBTOOL TAG CONFIG: disable-shared +build_libtool_libs=no +build_old_libs=yes +# ### END LIBTOOL TAG CONFIG: disable-shared + +# ### BEGIN LIBTOOL TAG CONFIG: disable-static +build_old_libs=`case $build_libtool_libs in yes) $echo no;; *) $echo yes;; esac` +# ### END LIBTOOL TAG CONFIG: disable-static + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: diff --git a/Cpp/TP4_ComptesBancaires/missing b/Cpp/TP4_ComptesBancaires/missing new file mode 100755 index 0000000..6a37006 --- /dev/null +++ b/Cpp/TP4_ComptesBancaires/missing @@ -0,0 +1,336 @@ +#! /bin/sh +# Common stub for a few missing GNU programs while installing. +# Copyright (C) 1996, 1997, 1999, 2000, 2002 Free Software Foundation, Inc. +# Originally by Fran,cois Pinard , 1996. + +# 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, 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., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +if test $# -eq 0; then + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 +fi + +run=: + +# In the cases where this matters, `missing' is being run in the +# srcdir already. +if test -f configure.ac; then + configure_ac=configure.ac +else + configure_ac=configure.in +fi + +case "$1" in +--run) + # Try to run requested program, and just exit if it succeeds. + run= + shift + "$@" && exit 0 + ;; +esac + +# If it does not exist, or fails to run (possibly an outdated version), +# try to emulate it. +case "$1" in + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an +error status if there is no known handling for PROGRAM. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + --run try to run the given command, and emulate it if it fails + +Supported PROGRAM values: + aclocal touch file \`aclocal.m4' + autoconf touch file \`configure' + autoheader touch file \`config.h.in' + automake touch all \`Makefile.in' files + bison create \`y.tab.[ch]', if possible, from existing .[ch] + flex create \`lex.yy.c', if possible, from existing .c + help2man touch the output file + lex create \`lex.yy.c', if possible, from existing .c + makeinfo touch the output file + tar try tar, gnutar, gtar, then tar without non-portable flags + yacc create \`y.tab.[ch]', if possible, from existing .[ch]" + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing 0.4 - GNU automake" + ;; + + -*) + echo 1>&2 "$0: Unknown \`$1' option" + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 + ;; + + aclocal*) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`acinclude.m4' or \`${configure_ac}'. You might want + to install the \`Automake' and \`Perl' packages. Grab them from + any GNU archive site." + touch aclocal.m4 + ;; + + autoconf) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`${configure_ac}'. You might want to install the + \`Autoconf' and \`GNU m4' packages. Grab them from any GNU + archive site." + touch configure + ;; + + autoheader) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`acconfig.h' or \`${configure_ac}'. You might want + to install the \`Autoconf' and \`GNU m4' packages. Grab them + from any GNU archive site." + files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` + test -z "$files" && files="config.h" + touch_files= + for f in $files; do + case "$f" in + *:*) touch_files="$touch_files "`echo "$f" | + sed -e 's/^[^:]*://' -e 's/:.*//'`;; + *) touch_files="$touch_files $f.in";; + esac + done + touch $touch_files + ;; + + automake*) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. + You might want to install the \`Automake' and \`Perl' packages. + Grab them from any GNU archive site." + find . -type f -name Makefile.am -print | + sed 's/\.am$/.in/' | + while read f; do touch "$f"; done + ;; + + autom4te) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is needed, and you do not seem to have it handy on your + system. You might have modified some files without having the + proper tools for further handling them. + You can get \`$1Help2man' as part of \`Autoconf' from any GNU + archive site." + + file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'` + test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'` + if test -f "$file"; then + touch $file + else + test -z "$file" || exec >$file + echo "#! /bin/sh" + echo "# Created by GNU Automake missing as a replacement of" + echo "# $ $@" + echo "exit 0" + chmod +x $file + exit 1 + fi + ;; + + bison|yacc) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a \`.y' file. You may need the \`Bison' package + in order for those modifications to take effect. You can get + \`Bison' from any GNU archive site." + rm -f y.tab.c y.tab.h + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.y) + SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.c + fi + SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.h + fi + ;; + esac + fi + if [ ! -f y.tab.h ]; then + echo >y.tab.h + fi + if [ ! -f y.tab.c ]; then + echo 'main() { return 0; }' >y.tab.c + fi + ;; + + lex|flex) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a \`.l' file. You may need the \`Flex' package + in order for those modifications to take effect. You can get + \`Flex' from any GNU archive site." + rm -f lex.yy.c + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.l) + SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" lex.yy.c + fi + ;; + esac + fi + if [ ! -f lex.yy.c ]; then + echo 'main() { return 0; }' >lex.yy.c + fi + ;; + + help2man) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a dependency of a manual page. You may need the + \`Help2man' package in order for those modifications to take + effect. You can get \`Help2man' from any GNU archive site." + + file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` + fi + if [ -f "$file" ]; then + touch $file + else + test -z "$file" || exec >$file + echo ".ab help2man is required to generate this page" + exit 1 + fi + ;; + + makeinfo) + if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then + # We have makeinfo, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a \`.texi' or \`.texinfo' file, or any other file + indirectly affecting the aspect of the manual. The spurious + call might also be the consequence of using a buggy \`make' (AIX, + DU, IRIX). You might want to install the \`Texinfo' package or + the \`GNU make' package. Grab either from any GNU archive site." + file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` + file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` + fi + touch $file + ;; + + tar) + shift + if test -n "$run"; then + echo 1>&2 "ERROR: \`tar' requires --run" + exit 1 + fi + + # We have already tried tar in the generic part. + # Look for gnutar/gtar before invocation to avoid ugly error + # messages. + if (gnutar --version > /dev/null 2>&1); then + gnutar "$@" && exit 0 + fi + if (gtar --version > /dev/null 2>&1); then + gtar "$@" && exit 0 + fi + firstarg="$1" + if shift; then + case "$firstarg" in + *o*) + firstarg=`echo "$firstarg" | sed s/o//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + case "$firstarg" in + *h*) + firstarg=`echo "$firstarg" | sed s/h//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + fi + + echo 1>&2 "\ +WARNING: I can't seem to be able to run \`tar' with the given arguments. + You may want to install GNU tar or Free paxutils, or check the + command line arguments." + exit 1 + ;; + + *) + echo 1>&2 "\ +WARNING: \`$1' is needed, and you do not seem to have it handy on your + system. You might have modified some files without having the + proper tools for further handling them. Check the \`README' file, + it often tells you about the needed prerequirements for installing + this package. You may also peek at any GNU archive site, in case + some other package would contain this missing \`$1' program." + exit 1 + ;; +esac + +exit 0 diff --git a/Cpp/TP4_ComptesBancaires/mkinstalldirs b/Cpp/TP4_ComptesBancaires/mkinstalldirs new file mode 100755 index 0000000..d2d5f21 --- /dev/null +++ b/Cpp/TP4_ComptesBancaires/mkinstalldirs @@ -0,0 +1,111 @@ +#! /bin/sh +# mkinstalldirs --- make directory hierarchy +# Author: Noah Friedman +# Created: 1993-05-16 +# Public domain + +errstatus=0 +dirmode="" + +usage="\ +Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..." + +# process command line arguments +while test $# -gt 0 ; do + case $1 in + -h | --help | --h*) # -h for help + echo "$usage" 1>&2 + exit 0 + ;; + -m) # -m PERM arg + shift + test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } + dirmode=$1 + shift + ;; + --) # stop option processing + shift + break + ;; + -*) # unknown option + echo "$usage" 1>&2 + exit 1 + ;; + *) # first non-opt arg + break + ;; + esac +done + +for file +do + if test -d "$file"; then + shift + else + break + fi +done + +case $# in + 0) exit 0 ;; +esac + +case $dirmode in + '') + if mkdir -p -- . 2>/dev/null; then + echo "mkdir -p -- $*" + exec mkdir -p -- "$@" + fi + ;; + *) + if mkdir -m "$dirmode" -p -- . 2>/dev/null; then + echo "mkdir -m $dirmode -p -- $*" + exec mkdir -m "$dirmode" -p -- "$@" + fi + ;; +esac + +for file +do + set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` + shift + + pathcomp= + for d + do + pathcomp="$pathcomp$d" + case $pathcomp in + -*) pathcomp=./$pathcomp ;; + esac + + if test ! -d "$pathcomp"; then + echo "mkdir $pathcomp" + + mkdir "$pathcomp" || lasterr=$? + + if test ! -d "$pathcomp"; then + errstatus=$lasterr + else + if test ! -z "$dirmode"; then + echo "chmod $dirmode $pathcomp" + lasterr="" + chmod "$dirmode" "$pathcomp" || lasterr=$? + + if test ! -z "$lasterr"; then + errstatus=$lasterr + fi + fi + fi + fi + + pathcomp="$pathcomp/" + done +done + +exit $errstatus + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# End: +# mkinstalldirs ends here diff --git a/Cpp/TP4_ComptesBancaires/src/Banque.cpp b/Cpp/TP4_ComptesBancaires/src/Banque.cpp new file mode 100755 index 0000000..07fee48 --- /dev/null +++ b/Cpp/TP4_ComptesBancaires/src/Banque.cpp @@ -0,0 +1,124 @@ +/** + * #(@)nomfichier.cpp ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/** + * Implantation de la classe Banque. + */ + +#include + +/* + * @Fait tout + * + * @Afaire - + */ + + + +#include "Banque.h" + +#include +#include +#include "CompteCheque.h" +#include "Livret.h" +#include "PlanEpargneLogement.h" + +Banque::Banque() { + this->_nbCompte = TAILLE_BANQUE; + + for (int i = 0; i < _nbCompte; i++) { + std::ostringstream oss; + oss << i; + this->_comptes[i] = this->creerNouveauCompte(oss.str()); + } +} + + +Banque::~Banque() { + int nbCompte = this->nbCompte(); + + for (int i = 0; i < nbCompte; i++) { + delete _comptes[i]; + _comptes[i] = 0; + } +} + +int Banque::nbCompte() const { + return this->_nbCompte; +} + + +Compte * Banque::creerNouveauCompte(std::string nom) const { + int type = random(4); + double solde = random(500) * 10.0; + Compte * cpt = 0; + + switch(type) { + case 0: + cpt = new Compte(nom, solde); + break; + case 1: + cpt = new CompteCheque(nom, -500, solde); + break; + case 2: + cpt = new Livret(nom, 0.1, solde); + break; + default: + cpt = new PlanEpargneLogement(nom, 0.1, solde); + break; + } + + return cpt; + +} + +int random(int randMax) { + return (int) (((double)randMax) * (rand() / (RAND_MAX + 1.0))); +} + +Compte * const * Banque::comptes() const { + return this->_comptes; +} + +double Banque::calculeSommeSolde() const { + double somme = 0; + Compte * const * comptes = this->comptes(); + for (int i = this->nbCompte() - 1; i >= 0; i--) { + somme += comptes[i]->solde(); + } + + return somme; +} + +bool Banque::effectueVirements( int nbVirement ) const { + Compte * const * comptes = this->comptes(); + int nbCompte = this->nbCompte(); + double soldeInitial = this->calculeSommeSolde(); + + for (int i = nbVirement -1; i >= 0; i--) { + Compte * src = comptes[random(nbCompte)]; + Compte * dest = 0; + double montant = random(500) * 10; + + do { + dest = comptes[random(nbCompte)]; + } while (src == dest); + + src->virement(dest, montant); + } + + return soldeInitial == this->calculeSommeSolde(); +} + + diff --git a/Cpp/TP4_ComptesBancaires/src/Banque.h b/Cpp/TP4_ComptesBancaires/src/Banque.h new file mode 100755 index 0000000..ecce681 --- /dev/null +++ b/Cpp/TP4_ComptesBancaires/src/Banque.h @@ -0,0 +1,109 @@ +/** + * #(@)nomfichier.h ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +#include + +#ifndef BANQUE_H +#define BANQUE_H + +#include "Compte.h" + +/* Nombre de comptes dans une banque */ +#define TAILLE_BANQUE 10 + +/** + * Définition de la classe Banque. Une banque est un regroupement de comptes. + * + * @author Nicolas MASSE + * @author Thomas LIMIN + */ +class Banque { + +public: + + /** + * Constructeur de Banque + */ + Banque(); + + /** + * Destructeur de Banque + */ + ~Banque(); + + /** + * Calcule la somme des soldes des comptes + * + * @return la somme des solde des comptes + */ + double calculeSommeSolde() const; + + /** + * Effectue le nombre voulue d'opération de virement, + * les comptes sources, destination et le montant étant + * choisis aléatoirement + * + * @param nbVirement le nombre de virement à effectuer (>=0) + * @return true si le solde total reste constant, false sinon + */ + bool effectueVirements(int nbVirement) const; + + private: + + /** + * Retourne le nombre de compte gérés + * + * @return le nb de comptes + */ + int nbCompte() const; + + /** + * Cree un nouveau compte. Le type précis de l'objet retourné + * est choisi aléatoirement dans {Compte, CompteCheque, Livret, + * PlanEpargneLogement} + * + * @param nom le nom du compte à créer + * @return un nouveau compte + */ + Compte * creerNouveauCompte(std::string nom) const; + + /** + * Retoune le tableau de comptes + * + * @return _comptes + */ + Compte * const * comptes() const; + + /** + * Le tableau de comptes gérés par cette banque + */ + Compte * _comptes[TAILLE_BANQUE]; + + /** + * Le nombre de comptes gérés par la banque + */ + int _nbCompte; + +}; + +/** + * Tire un nombre aléatoire compris dans [ 0, randMax [ + * + * @param randMax la limite supérieure (exclue) + * @return un nombre aléatoire; + */ +int random(int randMax); + + +#endif /* BANQUE_H */ diff --git a/Cpp/TP4_ComptesBancaires/src/Compte.cpp b/Cpp/TP4_ComptesBancaires/src/Compte.cpp new file mode 100755 index 0000000..f61605c --- /dev/null +++ b/Cpp/TP4_ComptesBancaires/src/Compte.cpp @@ -0,0 +1,174 @@ +/** + * #(@)Compte.cpp ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/** + * Implémentation de la classe Compte. + */ + +#include "Compte.h" +#include + +using namespace std; + +/* Variable de classe, voir Compte.h */ +long Compte::_prochainNumeroDeCompte = 1; + + +/* + * + * Définition des constructeurs/destructeur + * + */ + +Compte::Compte(string nom, double solde) { + this->setNomProprietaire(nom); + this->setSolde(solde); + this->setNumeroDeCompte(Compte::prochainNumeroDeCompte()); + cout << *this << ": Compte::Compte(\"" << nom << "\")" << endl; +} + + +Compte::~Compte() { + cout << *this << ": Compte::~Compte()" << endl; +} + + +/* + * + * Définition des accesseurs + * + */ + + +string Compte::nomProprietaire() const { + return _nomProprietaire; +} + + +void Compte::setNomProprietaire(string theValue) { + _nomProprietaire = theValue; +} + + +long Compte::numeroDeCompte() const { + return _numeroDeCompte; +} + + +void Compte::setNumeroDeCompte(long theValue) { + _numeroDeCompte = theValue; +} + + +double Compte::solde() const { + return _solde; +} + + +void Compte::setSolde(double theValue) { + _solde = theValue; +} + +long Compte::prochainNumeroDeCompte() { + return Compte::_prochainNumeroDeCompte++; +} + + +/* + * + * Méthodes utilitaires. + * + */ + +string Compte::toString() const { + ostringstream oss; + + oss << "Compte(numeroCompte = "; + oss << this->numeroDeCompte(); + oss << ", nomProprietaire = "; + oss << this->nomProprietaire(); + oss << ", solde = "; + oss << this->solde(); + oss << ")"; + return oss.str(); +} + + + +/* + * + * Fonctions + * + */ +std::ostream & operator<<(std::ostream & st, const Compte & cpt) { + st << cpt.toString(); + return st; +} + + + +/* + * + * Opérations bancaires. + * + */ + + +bool Compte::depose(double montant) { + bool result = false; + + if (montant < 0) { + std::cerr << *this << ": Compte::depose(" << montant << "): ne peut deposer un montant négatif." << std::endl; + } else { + cout << *this << ": Compte::depose(" << montant << ")" << endl; + this->setSolde(this->solde() + montant); + result = true; + + } + + return result; +} + + +bool Compte::retrait(double montant) { + bool result = false; + + if (montant < 0) { + std::cerr << *this << ": Compte::retrait(" << montant << "): ne peut retirer un montant négatif." << std::endl; + } else { + std::cout << *this << ": Compte::retrait(" << montant << ")" << std::endl; + this->setSolde(this->solde() - montant); + result = true; + } + + return result; +} + +bool Compte::virement( Compte * compteDest, double montant ) { + bool result = false; + + if (this->retrait(montant)) { + if (compteDest->depose(montant)) { + std::cout << "Virement réussi: " << montant << " " << *this << " => " << *compteDest << std::endl; + result = true; + } else { + this->depose(montant); + std::cerr << "Erreur lors du virement: depot refusé " << montant << " " << *this << " => " << *compteDest << std::endl; + } + } else { + std::cerr << "Erreur lors du virement: retrait refusé " << montant << " " << *this << " => " << *compteDest << std::endl; + } + + return result; +} diff --git a/Cpp/TP4_ComptesBancaires/src/Compte.h b/Cpp/TP4_ComptesBancaires/src/Compte.h new file mode 100755 index 0000000..a7255aa --- /dev/null +++ b/Cpp/TP4_ComptesBancaires/src/Compte.h @@ -0,0 +1,162 @@ +/** + * #(@)Compte.h ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/** + * TP Compte bancaire + */ + +#ifndef COMPTE_H +#define COMPTE_H + +#include +#include + +/** + * Représente un compte bancaire générique. + */ +class Compte { +public: + /* + * + * Constructeurs/destructeur + * + */ + + + /** + * Construit un compte. + */ + Compte(std::string nom, double solde = 0); + + /** + * Détruit un compte. + */ + virtual ~Compte(); + + /** + * Retourne le nom du propriétaire de ce compte. + */ + std::string nomProprietaire() const; + + + /** + * Retourne le numéro de ce compte. + */ + long numeroDeCompte() const; + + + /** + * Retourne le solde de ce compte. + */ + double solde() const; + + /** + * Retourne un numéro de compte unique. + */ + static long prochainNumeroDeCompte(); + + + /* + * + * Méthodes utilitaires. + * + */ + + + /** + * Retourne une représentation textuelle de ce compte. + */ + virtual std::string toString() const; + + + /* + * + * Opérations bancaires + * + */ + + /** + * Dépose un montant (nécessairement positif) sur ce compte + * + * @param montant le montant à déposer. + * @return true si l'opération s'est bien passée + */ + virtual bool depose(double montant); + + /** + * Retire un montant (nécessairement positif) sur ce compte. + * + * @param montant le montant à retirer. + * @return true si l'opération s'est bien passée + */ + virtual bool retrait(double montant); + + /** + * Effectue un virement. Le montant est transféré depuis + * l'objet compte courant vers l'objet compte fournis en + * paramètre. + * + * @param compteDest la destination du montant viré + * @param montant le montant viré + */ + bool virement(Compte * compteDest, double montant); + +private: + /** + * Definit le solde de ce compte. + */ + void setSolde(double theValue); + + + /** + * Definit le nom du propriétaire de ce compte. + */ + void setNomProprietaire(std::string theValue); + + + /** + * Définit le numéro de compte de ce compte. + */ + void setNumeroDeCompte(long theValue); + + + + + /** + * Le nom du propriétaire, ne peut pas être null. + */ + std::string _nomProprietaire; + + /** + * Le numéro du compte. + */ + long _numeroDeCompte; + + /** + * Le solde du compte, peut être négatif. + */ + double _solde; + + /** + * Le prochain numéro de compte. + */ + static long _prochainNumeroDeCompte; +}; + +/** + * Affiche un compte bancaire sur un flux de sortie + */ +std::ostream & operator<<(std::ostream & st, const Compte & cpt); + +#endif /* COMPTE_H */ diff --git a/Cpp/TP4_ComptesBancaires/src/CompteCheque.cpp b/Cpp/TP4_ComptesBancaires/src/CompteCheque.cpp new file mode 100755 index 0000000..95cb9cf --- /dev/null +++ b/Cpp/TP4_ComptesBancaires/src/CompteCheque.cpp @@ -0,0 +1,83 @@ +/** + * #(@)CompteCheque.cpp ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + + +/* + * @Fait tout + * + * @Afaire - + */ + + + +#include "CompteCheque.h" +#include + +CompteCheque::CompteCheque(std::string nom, double decouvertAutorise, double solde) : Compte(nom, solde) { + if ( ! this->setDecouvertAutorise(decouvertAutorise)) { + this->setDecouvertAutorise(0); + } + std::cout << *this << ": CompteCheque::CompteCheque(\"" << nom << "\")" << std::endl; +} + +CompteCheque::~CompteCheque() { + std::cout << *this << ": CompteCheque::~CompteCheque()" << std::endl; +} + + +bool CompteCheque::retrait(double montant) { + bool result = false; + + if ((this->solde() - montant) >= - this->decouvertAutorise()) { + Compte::retrait(montant); + result = true; + } else { + std::cerr << *this << ": CompteCheque::retrait(" << montant << ") : erreur, le compte chèque n'est pas suffisamment approvisionné" << std::endl; + } + + return result; +} + + +double CompteCheque::decouvertAutorise() const { + return _decouvertAutorise; +} + + +bool CompteCheque::setDecouvertAutorise(double decouvert) { + bool result = false; + + if (decouvert >= 0) { + _decouvertAutorise = decouvert; + result = true; + } + + return result; +} + +std::string CompteCheque::toString( ) const { + std::ostringstream oss; + + oss << "CompteCheque(numeroCompte = "; + oss << this->numeroDeCompte(); + oss << ", nomProprietaire = "; + oss << this->nomProprietaire(); + oss << ", découvertAutorisé = "; + oss << this->decouvertAutorise(); + oss << ", solde = "; + oss << this->solde(); + oss << ")"; + + return oss.str(); +} diff --git a/Cpp/TP4_ComptesBancaires/src/CompteCheque.h b/Cpp/TP4_ComptesBancaires/src/CompteCheque.h new file mode 100755 index 0000000..a85316b --- /dev/null +++ b/Cpp/TP4_ComptesBancaires/src/CompteCheque.h @@ -0,0 +1,90 @@ +/** + * #(@)nomfichier.h ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + + +#ifndef COMPTECHEQUE_H +#define COMPTECHEQUE_H + +#include + +#include + +/** + * Un compte chèque est un compte pour lequel il existe un montant maximum de + * découvertautorisé. Outre cette donnée, on pourra donc ajouter une méthode pemettant + * d'obtenir ou de modifier ce montant. L'opération de retrait devra tenir compte de + * cette nouvelle donnée. + * + * @author Nicolas MASSE + * @author Thomas LIMIN +*/ +class CompteCheque : public Compte { + +public: + /** + * Constructeur de compte cheque + * + * @param nom le nom du titulaire du comte + * @param decouvertAutorisé le montant de découvert autorisé (0 par défaut) + * @param solde le solde du compte (0 par défaut) + */ + CompteCheque(std::string nom, double decouvertAutorise = 0, double solde = 0); + + /** + * Destructeur + */ + ~CompteCheque(); + + /** + * Effectue un retrait si et seulement si le solde après retrait est supérieur + * ou égal au montant de découvert autorisé + * + * @param montant le montant du retrait + **/ + bool retrait(double montant); + + /** + * Renseigne le montant de découvert autorisé. Le montant doit être + * supérieur ou égal à 0, sans quoi le montant reste inchangé et false + * est retourné. + * + * @param decouvert le montant de découvert autorisé + * @return true si le montant est correctement modifié + */ + bool setDecouvertAutorise(double decouvert); + + /** + * Retourne le montant de découvert autorisé + * + * @return decouvert autorisé + */ + double decouvertAutorise() const; + + /** + * Retourne une représentation textuelle de ce compte. + */ + std::string toString() const; + + +private: + + /** + * Le montant de découvert autorisé. Par exemple, la valeur + * 200 indique que le solde minimum du compte est -200 (inclus) + */ + double _decouvertAutorise; + +}; + +#endif diff --git a/Cpp/TP4_ComptesBancaires/src/Livret.cpp b/Cpp/TP4_ComptesBancaires/src/Livret.cpp new file mode 100755 index 0000000..543ecd3 --- /dev/null +++ b/Cpp/TP4_ComptesBancaires/src/Livret.cpp @@ -0,0 +1,109 @@ +/** + * #(@)nomfichier.cpp ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/** + * Implémentation de la classe Livret. + */ + +#include + +#include "Livret.h" +#include + +Livret::Livret(std::string nom, double taux, double solde): Compte(nom, solde) { + if ( ! this->setTaux(taux)) { + this->setTaux(0); + } + this->setSoldeMini(this->solde()); + std::cout << *this << ": Livret::Livret(\"" << nom << "\", taux: " << taux << ", solde: " << solde << ")" << std::endl; +} + + +Livret::~ Livret() { + std::cout << *this << ": Livret::~Livret()" << std::endl; +} + +double Livret::taux() const { + return _taux; +} + + +bool Livret::setTaux(double taux) { + bool result = false; + + if (taux >= 0) { + _taux = taux; + result = true; + } + + return result; +} + + +double Livret::soldeMini() const { + return _soldeMini; +} + + +bool Livret::setSoldeMini(double solde) { + bool result = false; + + if (solde >= 0) { + _soldeMini = solde; + result = true; + } else { + std::cerr << *this << ": Retrait::setSoldeMini(" << solde << ") : erreur, le solde mini ne devrait pas être négatif" << std::endl; + } + + return result; +} + +bool Livret::retrait( double montant ) { + bool result = false; + + if ((this->solde() - montant) >= 0) { + result = Compte::retrait(montant); + if (result && (this->solde() < this->soldeMini())) { + this->setSoldeMini(this->solde()); + } + } else { + std::cerr << *this << ": Livret::retrait(" << montant << ") : erreur, le livret n'est pas suffisamment approvisionné" << std::endl; + } + + return result; +} + +std::string Livret::toString( ) const { + std::ostringstream oss; + + oss << "Livret(numeroCompte = "; + oss << this->numeroDeCompte(); + oss << ", nomProprietaire = "; + oss << this->nomProprietaire(); + oss << ", solde = "; + oss << this->solde(); + oss << ", taux = "; + oss << this->taux(); + oss << ")"; + + return oss.str(); +} + +double Livret::priseDInterets() { + double interet = this->soldeMini() * this->taux(); + std::cout << *this << " : Livret::priseDInterets() => " << interet << std::endl; + this->depose(interet); + this->setSoldeMini(this->solde()); + return interet; +} diff --git a/Cpp/TP4_ComptesBancaires/src/Livret.h b/Cpp/TP4_ComptesBancaires/src/Livret.h new file mode 100755 index 0000000..63abb80 --- /dev/null +++ b/Cpp/TP4_ComptesBancaires/src/Livret.h @@ -0,0 +1,128 @@ +/** + * #(@)nomfichier.h ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +#include + +/* + * @Fait tout + * + * @Afaire - + */ + + + +#ifndef LIVRET_H +#define LIVRET_H + +#include "Compte.h" + +/** + * Un livret est un compte dont le solde ne peut être négatif. Il est rémunéré + * sur la base d'un taux d'intérêts spécifié à l'ouverture que l'on suppose fixe + * + * @author Thomas LIMIN + * @author Nicolas MASSE + */ +class Livret : public Compte { +public: + + /** + * Constructeur de livret. + * + * @param nom le nom du titulaire du compte + * @param taux le taux d'intêret + * @param solde le solde initial du compte + */ + Livret(std::string nom, double taux = 0, double solde = 0); + + /** + * Destructeur + */ + ~Livret(); + + /** + * Retrait. Sur un livret, il est impossible d'avoir un solde négatif. + * La méthode de retrait prend en compte cette restriction et interdit + * les retrait qui mettraient dans cette situation. + * + * @param montant le montant du retrait + * @return true si le retrait a bien été effectué + */ + bool retrait(double montant); + + /** + * Calcule les interêts perçus sur ce compte. + * Cette valeur correspond à la somme mini présente + * sur le compte depuis la dernière prise d'interêts + * par le taux d'interêt. Le montant perçu est immédiatement + * ajouté au compte. + * + * @return le montant des interêts perçus + */ + double priseDInterets(); + + + /** + * Met à jour le taux d'interêt. Doit être >= 0 + * + * @param taux le nouveaux taux d'interêt + * @return true si modification réussie + */ + bool setTaux(double taux); + + /** + * Retourne le taux d'interêt associé à ce livret + * + * @return le taux d'interêt + */ + virtual double taux() const; + + /** + * Retourne le taux d'interêt associé à ce livret + * + * @return le solde minimum + */ + double soldeMini() const; + + /** + * Retourne une représentation textuelle de ce Livret. + */ + std::string toString() const; + + +private: + + /** + * Met à jour le sole minimum. Doit être >= 0 + * + * @param solde le nouveaux solde minimum + * @return true si modification réussie + */ + bool setSoldeMini(double solde); + + + + /** + * Le taux d'interêt appliqué à ce livret + */ + double _taux; + + /** + * Le solde mnimum de ce compte depuis la dernière prise d'interêts + */ + double _soldeMini; + +}; + +#endif diff --git a/Cpp/TP4_ComptesBancaires/src/Makefile.am b/Cpp/TP4_ComptesBancaires/src/Makefile.am new file mode 100755 index 0000000..fcb67c7 --- /dev/null +++ b/Cpp/TP4_ComptesBancaires/src/Makefile.am @@ -0,0 +1,11 @@ +bin_PROGRAMS = tp4_comptesbancaires +tp4_comptesbancaires_SOURCES = tp4_comptesbancaires.cpp Compte.cpp \ + CompteCheque.cpp Livret.cpp PlanEpargneLogement.cpp Moneo.cpp Banque.cpp + +# set the include path found by configure +INCLUDES= $(all_includes) + +# the library search path. +tp4_comptesbancaires_LDFLAGS = $(all_libraries) +noinst_HEADERS = Compte.h CompteCheque.h Livret.h PlanEpargneLogement.h \ + Banque.h diff --git a/Cpp/TP4_ComptesBancaires/src/Makefile.in b/Cpp/TP4_ComptesBancaires/src/Makefile.in new file mode 100755 index 0000000..b1274c0 --- /dev/null +++ b/Cpp/TP4_ComptesBancaires/src/Makefile.in @@ -0,0 +1,464 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +bin_PROGRAMS = tp4_comptesbancaires$(EXEEXT) +subdir = src +DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +am__installdirs = "$(DESTDIR)$(bindir)" +binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) +PROGRAMS = $(bin_PROGRAMS) +am_tp4_comptesbancaires_OBJECTS = tp4_comptesbancaires.$(OBJEXT) \ + Compte.$(OBJEXT) CompteCheque.$(OBJEXT) Livret.$(OBJEXT) \ + PlanEpargneLogement.$(OBJEXT) Moneo.$(OBJEXT) Banque.$(OBJEXT) +tp4_comptesbancaires_OBJECTS = $(am_tp4_comptesbancaires_OBJECTS) +tp4_comptesbancaires_LDADD = $(LDADD) +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CXXFLAGS) $(CXXFLAGS) +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +SOURCES = $(tp4_comptesbancaires_SOURCES) +DIST_SOURCES = $(tp4_comptesbancaires_SOURCES) +HEADERS = $(noinst_HEADERS) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +tp4_comptesbancaires_SOURCES = tp4_comptesbancaires.cpp Compte.cpp \ + CompteCheque.cpp Livret.cpp PlanEpargneLogement.cpp Moneo.cpp Banque.cpp + + +# set the include path found by configure +INCLUDES = $(all_includes) + +# the library search path. +tp4_comptesbancaires_LDFLAGS = $(all_libraries) +noinst_HEADERS = Compte.h CompteCheque.h Livret.h PlanEpargneLogement.h \ + Banque.h + +all: all-am + +.SUFFIXES: +.SUFFIXES: .cpp .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)" + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + if test -f $$p \ + || test -f $$p1 \ + ; then \ + f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \ + else :; fi; \ + done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ + rm -f "$(DESTDIR)$(bindir)/$$f"; \ + done + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f $$p $$f"; \ + rm -f $$p $$f ; \ + done +tp4_comptesbancaires$(EXEEXT): $(tp4_comptesbancaires_OBJECTS) $(tp4_comptesbancaires_DEPENDENCIES) + @rm -f tp4_comptesbancaires$(EXEEXT) + $(CXXLINK) $(tp4_comptesbancaires_LDFLAGS) $(tp4_comptesbancaires_OBJECTS) $(tp4_comptesbancaires_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Banque.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Compte.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CompteCheque.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Livret.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Moneo.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PlanEpargneLogement.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tp4_comptesbancaires.Po@am__quote@ + +.cpp.o: +@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< + +.cpp.obj: +@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.cpp.lo: +@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(PROGRAMS) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(bindir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-libtool distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: install-binPROGRAMS + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binPROGRAMS uninstall-info-am + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ + clean-generic clean-libtool ctags distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-binPROGRAMS install-data install-data-am install-exec \ + install-exec-am install-info install-info-am install-man \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags uninstall uninstall-am \ + uninstall-binPROGRAMS uninstall-info-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/Cpp/TP4_ComptesBancaires/src/Moneo.cpp b/Cpp/TP4_ComptesBancaires/src/Moneo.cpp new file mode 100755 index 0000000..c36f4e6 --- /dev/null +++ b/Cpp/TP4_ComptesBancaires/src/Moneo.cpp @@ -0,0 +1,154 @@ +/** + * #(@)Moneo.cpp ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/** + * Implémentation de la classe Moneo. + */ + +#include "Moneo.h" +#include + +using namespace std; + + +/* + * + * Définition des constructeurs/destructeur + * + */ + +Moneo::Moneo(CompteCheque & cpt, double soldeMax) { + this->setCompte(cpt); + this->setSoldeMax(soldeMax); + this->setSolde(0); + std::cout << *this << ": Moneo::Moneo(" << cpt << ", soldeMax: " << soldeMax << ")" << std::endl; +} + + +Moneo::~Moneo() { + double montant = this->solde(); + this->compte().depose(montant); + std::cout << *this << ": Moneo::~Moneo()" << std::endl; +} + + + +/* + * + * Opérations bancaires. + * + */ + + +bool Moneo::recharge() { + bool ret = false; + double montant = this->soldeMax() - this->solde(); + + if (this->compte().retrait(montant)) { + cout << *this << ": Moneo::recharge() => " << montant << std::endl; + this->setSolde(this->soldeMax()); + ret = true; + } else { + cout << *this << ": Moneo::recharge() opération impossible, solde compte trop faible" << std::endl; + } + + return ret; +} + + +bool Moneo::retrait(double montant) { + bool ret = false; + + if (montant < 0) { + cerr << *this << ": Moneo::retrait(" << montant << "): ne peut retirer un montant négatif." << endl; + } else if (montant > this->solde()) { + cerr << *this << ": Moneo::retrait(" << montant << "): solde trop faible." << endl; + } else { + cout << *this << ": Moneo::retrait(" << montant << ")" << endl; + this->setSolde(this->solde() - montant); + ret = true; + } + + return ret; +} + + +/* + * + * Définition des accesseurs + * + */ + + +CompteCheque & Moneo::compte() const { + return *_compte; +} + + +void Moneo::setCompte(CompteCheque & cpt) { + _compte = &cpt; +} + + +double Moneo::solde() const { + return _solde; +} + + +void Moneo::setSolde(double theValue) { + _solde = theValue; +} + +double Moneo::soldeMax() const { + return _soldeMax; +} + + +void Moneo::setSoldeMax(double theValue) { + _soldeMax = theValue; +} + + + +/* + * + * Méthodes utilitaires. + * + */ + +string Moneo::toString() const { + ostringstream oss; + + oss << "Moneo(soldeMax = "; + oss << this->soldeMax(); + oss << ", solde = "; + oss << this->solde(); + oss << ", compte = "; + oss << this->compte(); + oss << ")"; + + return oss.str(); +} + + + +/* + * + * Fonctions + * + */ +std::ostream & operator<<(std::ostream & st, const Moneo & cpt) { + st << cpt.toString(); + return st; +} diff --git a/Cpp/TP4_ComptesBancaires/src/Moneo.h b/Cpp/TP4_ComptesBancaires/src/Moneo.h new file mode 100755 index 0000000..b2cb82d --- /dev/null +++ b/Cpp/TP4_ComptesBancaires/src/Moneo.h @@ -0,0 +1,148 @@ +/** + * #(@)Moneo.h ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/** + * TP Compte bancaire + */ + +#ifndef MONEO_H +#define MONEO_H + +#include +#include +#include "CompteCheque.h" + +/** + * Représente un porte monnaie monéo. + */ +class Moneo { + +public: + /* + * + * Constructeurs/destructeur + * + */ + + + /** + * Construit un porte monnaie Moneo + */ + Moneo(CompteCheque & cpt, double soldeMax); + + /** + * Détruit un porte monnaie Moneo: le montant contenu dans le + * porte monnaie est reversé sur le compte associé + */ + ~Moneo(); + + + /* + * + * Getteurs + * + */ + + + /** + * Retourne le compte chèque associé. + */ + CompteCheque & compte() const; + + /** + * Retourne le solde de ce porte monnaie. + */ + double solde() const; + + /** + * Retourne une représentation textuelle de ce compte. + */ + std::string toString() const; + + + /* + * + * Opérations bancaires + * + */ + + /** + * Recharge le porte monnaie d'un montant (nécessairement positif). + * + * @param montant le montant à déposer. + */ + bool recharge(double montant); + + /** + * Recharge le porte monnaie à son solde maximum. + * + */ + bool recharge(); + + /** + * Retire un montant (nécessairement positif) de ce porte monnaie. + * + * @param montant le montant à retirer. + */ + bool retrait(double montant); + +private: + + /** + * Definit le solde de ce compte. + */ + void setSolde(double theValue); + + /** + * Definit le solde maximum de ce compte. + */ + void setSoldeMax(double theValue); + + /** + * Retourne le solde maximum de ce porte monnaie. + */ + double soldeMax() const; + + + /** + * Definit le compte chèque associé. + */ + void setCompte(CompteCheque & theValue); + + + + + /** + * Le compte chèque associé, ne peut pas être null. + */ + CompteCheque * _compte; + + /** + * Le solde de ce compte, ne peut pas être négatif. + */ + double _solde; + + /** + * Le solde maximum de ce compte, ne peut pas être négatif. + */ + double _soldeMax; + +}; + +/** + * Affiche un porte monnaie Monéo sur un flux de sortie + */ +std::ostream & operator<<(std::ostream & st, const Moneo & cpt); + +#endif /* MONEO_H */ diff --git a/Cpp/TP4_ComptesBancaires/src/PlanEpargneLogement.cpp b/Cpp/TP4_ComptesBancaires/src/PlanEpargneLogement.cpp new file mode 100755 index 0000000..b56a988 --- /dev/null +++ b/Cpp/TP4_ComptesBancaires/src/PlanEpargneLogement.cpp @@ -0,0 +1,96 @@ +/** + * #(@)PlanEpargneLogement.cpp ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/** + * Implémentation de la classe PlanEpargneLogement. + */ + +/* + * @Fait tout + * + * @Afaire - + */ + + + +#include "PlanEpargneLogement.h" +#include + +double PlanEpargneLogement::_coefficient = 1; + +PlanEpargneLogement::PlanEpargneLogement( std::string nom, double taux, double solde ) : Livret(nom, taux, solde) { + std::cout << *this << ": PlanEpargneLogement::PlanEpargneLogement(\"" << nom << "\", taux: " << taux << ", solde: " << solde << ")" << std::endl; +} + + +PlanEpargneLogement::~PlanEpargneLogement() { + std::cout << *this << ": PlanEpargneLogement::~PlanEpargneLogement()" << std::endl; +} + + +bool PlanEpargneLogement::retrait( double montant ) { + bool result = false; + + if (montant == this->solde()) { + result = Livret::retrait(montant); + } else { + std::cerr << *this << ": PlanEpargneLogement::retrait(" << montant << ") : erreur, le montant du retait doit être égal au solde" << std::endl; + } + + return result; +} + +std::string PlanEpargneLogement::toString( ) const { + std::ostringstream oss; + + oss << "Plan-Epargne-Logement(numeroCompte = "; + oss << this->numeroDeCompte(); + oss << ", nomProprietaire = "; + oss << this->nomProprietaire(); + oss << ", solde = "; + oss << this->solde(); + oss << ", taux: "; + oss << this->taux(); + oss << ")"; + return oss.str(); +} + +double PlanEpargneLogement::coefficient() { + return PlanEpargneLogement::_coefficient; +} + +bool PlanEpargneLogement::setCoefficient(double coef) { + bool result = false; + + if (coef >= 0) { + _coefficient = coef; + result = true; + } else { + std::cerr << "PlanEpargneLogement::setCoefficient(" << coef << ")" << std::endl; + } + + return result; +} + + +double PlanEpargneLogement::taux() const { + return Livret::taux() * PlanEpargneLogement::coefficient(); +} + + + + + + + diff --git a/Cpp/TP4_ComptesBancaires/src/PlanEpargneLogement.h b/Cpp/TP4_ComptesBancaires/src/PlanEpargneLogement.h new file mode 100755 index 0000000..d0b7c49 --- /dev/null +++ b/Cpp/TP4_ComptesBancaires/src/PlanEpargneLogement.h @@ -0,0 +1,102 @@ +/** + * #(@)PlanEpargneLogement.h ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/** + * Déclaration de la classe PlanEpargneLogement. + */ + + +#ifndef PLANEPARGNELOGEMENT_H +#define PLANEPARGNELOGEMENT_H + +#include + +#include "Livret.h" + +/** + * Represente un plan epargne logement. + * + * @author Nicolas MASSE + * @author Thomas LIMIN + */ +class PlanEpargneLogement : public Livret { + + public: + + /** + * Constructeur de plan epargne logement. + * + * @param nom le nom du titulaire du compte + * @param taux le taux d'intêret + * @param solde le solde initial du compte + */ + PlanEpargneLogement(std::string nom, double taux = 0, double solde = 0); + + /** + * Destructeur + */ + ~PlanEpargneLogement(); + + /** + * Retrait. Sur un PEL, il est impossible d'avoir un solde négatif. + * De plus le seul montant de retrait autorisé est le solde du PEL + * La méthode de retrait prend en compte ces restrictions + * + * @param montant le montant du retrait + * @return true si le retrait a bien été effectué + */ + bool retrait(double montant); + + /** + * Retourne le taux d'interêt. Pour un PEL, il correspond + * au taux initial multiplié par le coefficient global + * + * @return le taux; + */ + double taux() const; + + /** + * Retourne une représentation textuelle de ce compte. + */ + std::string toString() const; + + /** + * Permet de modifier le coefficient général + * le coefficient doit être >= 0 + * + * @param coef le nouveau coefficient + * @return true si ok + */ + static bool setCoefficient(double coef); + + + + private: + + /** + * Pour récupérer le coefficient + * + * @return le coefficient actuel + */ + static double coefficient(); + + /** + * le coefficient qui est appliqué au taux de toutes les instance de PlanEpargneLogement + * il est initialisé à 1 lors du chargement de la classe. + */ + static double _coefficient; + +}; + +#endif diff --git a/Cpp/TP4_ComptesBancaires/src/comptes.cpp b/Cpp/TP4_ComptesBancaires/src/comptes.cpp new file mode 100755 index 0000000..fb53e5a --- /dev/null +++ b/Cpp/TP4_ComptesBancaires/src/comptes.cpp @@ -0,0 +1,49 @@ +/** + * #(@)nomfichier.cpp ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/** + * Description des objectifs du programme, le sujet a traiter. + * Pour le programme qui contient le main(), + * la ligne de commande pour executer le programme. + */ + +#include + +/** + * Description succinte de l'algorithme utilise comme solution. + * Eventuellement: Les references (cahier des charges,bibliographiques...). + */ + +/* + * @version 0.0.1 + * + * @Fait Detail de ce qui a ete fait. + * + * @Afaire Detail de ce qui n'a pas ete fait. + */ + + + +#include "comptes.h" + +Comptes::Comptes() +{ +} + + +Comptes::~Comptes() +{ +} + + diff --git a/Cpp/TP4_ComptesBancaires/src/comptes.h b/Cpp/TP4_ComptesBancaires/src/comptes.h new file mode 100755 index 0000000..fa34284 --- /dev/null +++ b/Cpp/TP4_ComptesBancaires/src/comptes.h @@ -0,0 +1,52 @@ +/** + * #(@)nomfichier.h ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/** + * Description des objectifs du programme, le sujet a traiter. + * Pour le programme qui contient le main(), + * la ligne de commande pour executer le programme. + */ + +#include + +/** + * Description succinte de l'algorithme utilise comme solution. + * Eventuellement: Les references (cahier des charges,bibliographiques...). + */ + +/* + * @version 0.0.1 + * + * @Fait Detail de ce qui a ete fait. + * + * @Afaire Detail de ce qui n'a pas ete fait. + */ + + + +#ifndef COMPTES_H +#define COMPTES_H + +/** +@author Nicolas MASSE +*/ +class Comptes{ +public: + Comptes(); + + ~Comptes(); + +}; + +#endif diff --git a/Cpp/TP4_ComptesBancaires/src/tp4_comptesbancaires.cpp b/Cpp/TP4_ComptesBancaires/src/tp4_comptesbancaires.cpp new file mode 100755 index 0000000..0ae25e6 --- /dev/null +++ b/Cpp/TP4_ComptesBancaires/src/tp4_comptesbancaires.cpp @@ -0,0 +1,55 @@ +/** + * #(@)tp4_comptesbancaires.cpp ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/** + * Programme de test du TP4 + */ + +#include + +/* + * @Fait tout + * + * @Afaire - + */ + + + + + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#include +#include + +#include "Banque.h" +#include "PlanEpargneLogement.h" + +using namespace std; + +int main(int argc, char *argv[]) { + + PlanEpargneLogement::setCoefficient(0.5); + srand(time(0)); + + Banque b; + + std::cout << std::endl << std::endl << "Somme des soldes: " << b.calculeSommeSolde() << std::endl << std::endl; + std::cout << std::endl << std::endl << "Constance des soldes: " << b.effectueVirements(50) << std::endl << std::endl; + + return EXIT_SUCCESS; +} diff --git a/Cpp/TP4_ComptesBancaires/templates/cpp b/Cpp/TP4_ComptesBancaires/templates/cpp new file mode 100755 index 0000000..0a6b0d3 --- /dev/null +++ b/Cpp/TP4_ComptesBancaires/templates/cpp @@ -0,0 +1,37 @@ +/** + * #(@)nomfichier.cpp ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/** + * Description des objectifs du programme, le sujet a traiter. + * Pour le programme qui contient le main(), + * la ligne de commande pour executer le programme. + */ + +#include + +/** + * Description succinte de l'algorithme utilise comme solution. + * Eventuellement: Les references (cahier des charges,bibliographiques...). + */ + +/* + * @version 0.0.1 + * + * @Fait Detail de ce qui a ete fait. + * + * @Afaire Detail de ce qui n'a pas ete fait. + */ + + + diff --git a/Cpp/TP4_ComptesBancaires/templates/h b/Cpp/TP4_ComptesBancaires/templates/h new file mode 100755 index 0000000..954a12a --- /dev/null +++ b/Cpp/TP4_ComptesBancaires/templates/h @@ -0,0 +1,37 @@ +/** + * #(@)nomfichier.h ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/** + * Description des objectifs du programme, le sujet a traiter. + * Pour le programme qui contient le main(), + * la ligne de commande pour executer le programme. + */ + +#include + +/** + * Description succinte de l'algorithme utilise comme solution. + * Eventuellement: Les references (cahier des charges,bibliographiques...). + */ + +/* + * @version 0.0.1 + * + * @Fait Detail de ce qui a ete fait. + * + * @Afaire Detail de ce qui n'a pas ete fait. + */ + + + diff --git a/Cpp/TP4_ComptesBancaires/tp4_comptesbancaires.kdevelop b/Cpp/TP4_ComptesBancaires/tp4_comptesbancaires.kdevelop new file mode 100755 index 0000000..ecc8e68 --- /dev/null +++ b/Cpp/TP4_ComptesBancaires/tp4_comptesbancaires.kdevelop @@ -0,0 +1,195 @@ + + + + Nicolas MASSE + nicolas27.masse@laposte.net + 0.1 + KDevAutoProject + C++ + + C++ + Code + + + kdevbookmarks + + . + false + + + + + + src/tp4_comptesbancaires + debug + true + + + src/tp4_comptesbancaires + true + executable + + + + optimized + kdevgccoptions + kdevgppoptions + kdevg77options + -O2 -g0 + + + --enable-debug=full + debug + kdevgccoptions + kdevgppoptions + kdevg77options + -O0 -g3 -Wall + + + + + + + + + + + + + + + + + + + + + ada + ada_bugs_gcc + bash + bash_bugs + clanlib + w3c-dom-level2-html + fortran_bugs_gcc + gnome1 + gnustep + gtk + gtk_bugs + haskell + haskell_bugs_ghc + java_bugs_gcc + java_bugs_sun + kde2book + opengl + pascal_bugs_fp + php + php_bugs + perl + perl_bugs + python + python_bugs + qt-kdev3 + ruby + ruby_bugs + sdl + w3c-svg + sw + w3c-uaag10 + wxwidgets_bugs + + + Guide to the Qt Translation Tools + Qt Assistant Manual + Qt Designer Manual + Qt Reference Documentation + qmake User Guide + + + KDE Libraries (Doxygen) + + + + + + + + + + + + + false + false + + + *.o,*.lo,CVS + false + + + + + Doxygen Documentation Collection + tp4_comptesbancaires.tag + + + + TP4_ComptesBancaires + tp4_comptesbancaires + TP4_ComptesBancaires + TP4_COMPTESBANCAIRES + Nicolas MASSE + nicolas27.masse@laposte.net + GPL + COPYING + 0.1 + 2005 + /home/nicolas/repository/ENSI_2ndY/Cpp/tp4_comptesbancaires + + + + + true + true + true + false + true + true + true + 250 + 400 + 250 + + + + set + m_,_ + theValue + false + true + + + + + .h + .cpp + + + + + + + libtool + + + + true + false + false + + + false + true + 10 + + + diff --git a/Cpp/TP4_ComptesBancaires/tp4_comptesbancaires.kdevelop.pcs b/Cpp/TP4_ComptesBancaires/tp4_comptesbancaires.kdevelop.pcs new file mode 100755 index 0000000000000000000000000000000000000000..d0b002b7a8884e3e76440ac5609dc0e0751f8c91 GIT binary patch literal 45028 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 literal 0 HcmV?d00001 diff --git a/Cpp/TP4_ComptesBancaires/tp4_comptesbancaires.kdevses b/Cpp/TP4_ComptesBancaires/tp4_comptesbancaires.kdevses new file mode 100755 index 0000000..6bc1b5a --- /dev/null +++ b/Cpp/TP4_ComptesBancaires/tp4_comptesbancaires.kdevses @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/Cpp/TP5_ModelesDeClasses/Ensemble.hh b/Cpp/TP5_ModelesDeClasses/Ensemble.hh new file mode 100755 index 0000000..58af4e9 --- /dev/null +++ b/Cpp/TP5_ModelesDeClasses/Ensemble.hh @@ -0,0 +1,619 @@ +/** + * @file Ensemble.hh + * @author Nicolas MASSE & Thomas LIMIN + * @date Thu Nov 18 + * + * @brief Declaration de la classe parametree Ensemble. + * + */ +#ifndef ENSEMBLE_H +#define ENSEMBLE_H + +#include +#include + +/* using namespace std; + * + * NOTE : + * Ce fichier d'en-tete ne comporte pas de directive using, bien que la version + * fournie en comporte. En effet, l'usage de cette directive dans un fichier + * d'en-tete (dont la finalite est d'etre inclus dans un fichier source) peut creer + * des conflits d'espace de noms dans les fichiers l'incluant. On preferera + * l'utilisation des prefixe d'espace de noms + */ + + + + +/** + * Extension (iterateur, foncteur) + * Classe foncteur. Ses instances peuvent etre appelees + * comme des fonctions race à la surcharge de l'opérateur () + * l'implémentation courante retourne le double de l'element + * passé a cette fonction + */ + +template + +class Foncteur { + +public: + + /** + * Constructeur. Permet de definir le coefficient de multiplication + * propre au foncteur + * + * @param coef le coefficient + */ + Foncteur(double coef) : _coef(coef) {} + + /** + * Une methode foncteur, retourne le double de l'elemet + * passe en parametre. Ceci ne fonctionne que pour les + * types de données qpossédant un opérateur * + * + * @param e l'element a traiter + * @return l'element retourne + */ + T operator() (const T & e) { + return e * _coef; + } + +private: + + double _coef; +}; + + + +/** + * Classe permettant de representer un ensemble d'elements + * en utilisant uniquement la notion d'egalite entre elements + * Aucune relation d'ordre n'est utilisee (par exemple + * pour avoir un representation ordonnee en memoire qui accelererait + * les recherches).
+ * Seul l'operateur == est utilise pour tester l'egalite de deux + * elements. + */ + +template + +class Ensemble { + +private: + + /** + * Concept de noeud d'une liste chainée. Cette clase est définnie a l'interieur + * de la classe ensemble, ce qui permet d'en limiter la portée a la classe + * Ensemble + */ + + class Noeud { + + private: + T _valeur; + Noeud * _suivant; + + public: + Noeud(const T & valeur, Noeud * suivant = 0) : _valeur(valeur), _suivant(suivant) { } + + Noeud(const Noeud & n) { + _valeur = n.getValeur(); + + if (n.aUnSuivant()) { + _suivant = new Noeud(*n.getSuivant()); + } else { + _suivant = 0; + } + } + + ~Noeud() { + delete _suivant; + } + + const T & getValeur() const { + return _valeur; + } + + Noeud * getSuivant() const { + return _suivant; + } + + void setSuivant(Noeud * suivant) { + _suivant = suivant; + } + + bool aUnSuivant() const { + return _suivant != 0; + } + + /** + * Methode recursive de suppression d'un element dans + * une liste chainee. + * + * @param liste une liste. + * @param x un element. + * + * @return le liste sans l'element. + */ + Noeud * retire(const T & x) { + + Noeud * ret = this; + + if (this->getValeur() == x) { + // On l'a trouve ! + ret = this->getSuivant(); + this->setSuivant(0); + delete this; + } else if (this->aUnSuivant()) { + // Il y a un suivant. + this->setSuivant(this->getSuivant()->retire(x)); + } + + return ret; + } + }; + + + /** + * Concept d'iterateur d'une liste. + */ + + class Iterateur { + + public: + /** + * Constructeur d'iterateur. L'iterateur retourne permet + * d'acceder au premier element de la l'ensemble. + * + * @param e l'enemble sur lequel l'iterateur s'applique + */ + Iterateur(const Ensemble & e) : _ensemble(e) { + _noeudSuivant = e._liste; + } + + /** + * Test la fin de l'ensemble itere + * + * @return true si il reste des element, false sinon + */ + bool hasNext() const { + return _noeudSuivant != 0; + } + + /** + * @return l'element courant et passe au suivant + */ + const T & next() { + const T & v = _noeudSuivant->getValeur(); + + _noeudSuivant = _noeudSuivant->getSuivant(); + + return v; + } + + private: + /** + * l'enemble itere + */ + const Ensemble & _ensemble; + + /** + * la position courante dans l'ensemble + */ + Noeud * _noeudSuivant; + }; + + Noeud * _liste; + + +public: + + /** + * Construit un ensemble vide. + */ + Ensemble() : _liste(0) { } + + /** + * Construit un singleton. + */ + Ensemble(T x) { + _liste = new Noeud(x); + } + + /** + * Destructeur. + */ + ~Ensemble() { + // delete 0 fonctionne ! + delete _liste; + _liste = 0; + } + + /** + * Test si l'ensemble est vide. + * + * @return true si l'ensemble est vide, sinon false. + */ + bool estVide() const { + return _liste == 0; + } + + /** + * Envoie tous les elements dans un flot de sortie. + * + * @param out un flot de sortie. + * + * @return le flot de sortie donne en parametre. + */ + std::ostream & flush(std::ostream & out) const { + Noeud * courant = _liste; + + out << "[ "; + + while (courant != 0) { + out << courant->getValeur() << " "; + courant = courant->getSuivant(); + } + + out << "]" << std::endl; + + return out; + } + + /** + * Test l'appartenance d'un element a l'ensemble. + * + * @param x un double. + * + * @return true sie est dans l'ensemble, false sinon. + */ + bool contient(const T & x) const { + Noeud * courant = _liste; + bool result = false; + + while (courant != 0) { + if (courant->getValeur() == x) { + result = true; + break; + } + + courant = courant->getSuivant(); + } + + return result; + } + + /** + * Test l'inclusion dans un autre ensemble. + * + * @param e un ensemble + * + * @return true si "je" suis inclus dans e, false sinon. + */ + bool estInclusDans(const Ensemble & autre) const { + Noeud * courant = _liste; + bool result = true; + + while (courant != 0) { + if (!autre.contient(courant->getValeur())) { + result = false; + break; + } + + courant = courant->getSuivant(); + } + + return result; + } + + /** + * Ajoute un "objet" a l'ensemble. + * + * @param x un element a ajouter a l'ensemble. + */ + void ajoute(const T & x) { + if (!this->contient(x)) { + _liste = new Noeud(x, _liste); + } + } + + /** + * Retire un element de l'esemble. + * + * @param e un element a retirer. + */ + void retire(const T & e) { + _liste = _liste->retire(e); + } + + + /** + * Ajoute tous les elements dans un autre ensemble. + * + * @param e un ensemble + */ + void ajouteDans(Ensemble & e) const { + Noeud * courant = _liste; + + while (courant != 0) { + e.ajoute(courant->getValeur()); + + courant = courant->getSuivant(); + } + } + + /** + * Retire tous les elements dans un autre ensemble. + * Apres a.enleveDe(b), b vaut b - a (- ensembliste) + * + * @param e un ensemble dont il faut retirer des elements. + */ + void retireDe(Ensemble & e) const { + Noeud * courant = _liste; + + while (courant != 0) { + e.retire(courant->getValeur()); + courant = courant->getSuivant(); + } + } + + /** + * Constructeur par recopie. + * + * @param e un ensemble + */ + Ensemble(const Ensemble & e) { + if (!e.estVide()) { + this->_liste = new Noeud(*(e._liste)); + } else { + this->_liste = 0; + } + } + + /** + * Operateur d'affectation d'un ensemble. + * + * @param e un ensemble + * + * @return une reference a moi-meme + */ + Ensemble & operator=(const Ensemble & e) { + if (&e != this) { + delete this->_liste; + + // nous nous voyons ici dans l'obligation de recopier + // le contenu du constructeur de recopie, ne pouvant + // l'appeler directement. + this->_liste = new Noeud(*(e._liste)); + } + + } + + + /** + * Creation d'un singleton. + * + * @param x un element + * + * @return le singleton {x} + */ + static Ensemble singleton(T x) { + return Ensemble(x); + } + + /** + * Creation d'un ensemble vide. + * + * @param x un double + * + * @return le singleton {x} + */ + static Ensemble ensembleVide() { + return Ensemble(); + } + + /** + * Retourne un iterateur. + * + * @return un ipointeur sur un iterateur. + */ + Iterateur * getIterateur() const { + return new Iterateur(*this); + } + + + /** + * Application d'une fonction a tous les elements d'un ensemble + * + * @param fct le foncteur + * @return copie le nouvel ensemble contenant les resultat en valeur de retour + */ + Ensemble appliquerAuxElements(Foncteur & fct) const { + Ensemble dest; + Iterateur * it = this->getIterateur(); + + while (it->hasNext()) { + dest.ajoute(fct(it->next())); + } + + delete it; + + return dest; + } + +private: + + /* Noeud * retireRec(Noeud * liste, T x); + * + * NOTE : + * Cette fonction n'utilisant, ni variable d'instance, ni methode de cette + * classe, nous avon juge bon de deplacer cette fonction utilitaire dans la + * classe Noeud ou elle devient une methode d'instance a part entiere. + */ + + +}; + + +/** + * Operateur << pour les ensembles. + * + * @param out un flot de sortie. + * @param e un ensemble. + * + * @return le flot de sortie donne en argument. + */ +template +std::ostream & operator<<(std::ostream & out, const Ensemble & e) { + return e.flush(out); +} + + +/* + * Creation d'un singleton. + * + * Note : + * Cette fonction utilitaire nous semble plus a sa place + * en tant que méthode statique la classe Ensemble + * + * @param x un element + * + * @return le singleton {x} + */ +//template Ensemble singleton(T x); + +/** + * Creation d'un ensemble vide. + * + * Note : + * Cette fonction utilitaire nous semble plus a sa place + * en tant que méthode statique la classe Ensemble + * + * @param x un double + * + * @return le singleton {x} + */ +//template Ensemble ensembleVide(); + +/** + * Teste l'egalite de deux ensembles. Cette fonction (et les suivantes ) + * serait aussi bien implemente en tant que methode membre, mais elle + * restera ici dans un but simplement didactique (syntaxe de la surcharge + * d'operateur hors classe et non acces a la partie privee afin d'utiliser + * les methodes publiques precedemment cites). On a egalite quand E1 + * inclus dans E2 et E2 inclus dans E1 + * + * @param a un ensemble. + * @param b un ensemble. + * + * @return true si a=b (i.e., a est inclus dans b et b est inclus dans a), + * sinon false. + */ +template +bool egale(const Ensemble & a, const Ensemble & b) { + return a.estInclusDans(b) && b.estInclusDans(a); +} + +template +bool operator==(const Ensemble & a, const Ensemble & b) { + return egale(a, b); +} + + +/* ne voyons pas le sens de ces operateurs, dans le cas d'ensemble */ + +//template +//bool operator<(const Ensemble & a, const Ensemble & b) {} + +//template +//bool operator>(const Ensemble & a, const Ensemble & b) {} + + +/** + * Union de deux ensembles de doubles. + * + * @param a un ensemble de doubles. + * @param b un ensemble de doubles. + * + * @return a new Ensemble c = a union b. + */ +template +Ensemble reunion(const Ensemble & a, const Ensemble & b) { + Ensemble c(a); + b.ajouteDans(c); + return c; +} + +template +Ensemble operator+(const Ensemble & a, const Ensemble & b) { + return reunion(a, b); +} + +template +Ensemble operator|(const Ensemble & a, const Ensemble & b) { + return reunion(a, b); +} + + +/** + * Difference de deux ensembles. + * + * @param a un ensemble de doubles. + * @param b un ensemble de doubles. + * + * @return a new Ensemble a prive de b. + */ +template +Ensemble difference(const Ensemble & a, const Ensemble & b) { + Ensemble c(a); + b.retireDe(c); + return c; +} + +template +Ensemble operator-(const Ensemble & a, const Ensemble & b) { + return difference(a, b); +} + + +/** + * Difference symetrique entre deux ensembles. + * + * @param a un ensemble. + * @param b un ensemble. + * + * @return (a prive de b) union (b prive de a) + */ +template +Ensemble diffSymetrique(const Ensemble & a, const Ensemble & b) { + return (a - b) + (b - a); +} + +template +Ensemble operator^(const Ensemble & a, const Ensemble & b) { + return diffSymetrique(a, b); +} + + +/** + * Intersection entre deux ensembles de doubles. + * + * @param a un ensemble de doubles. + * @param b un ensemble de doubles. + * + * @return l'intersection de a et b. + */ +template +Ensemble intersection(const Ensemble & a, const Ensemble & b) { + return (a + b) - (a ^ b); +} + +template +Ensemble operator&(const Ensemble & a, const Ensemble & b) { + return intersection(a, b); +} + + +#endif /* ENSEMBLE_H */ + diff --git a/Cpp/TP5_ModelesDeClasses/EnsembleDouble.h b/Cpp/TP5_ModelesDeClasses/EnsembleDouble.h new file mode 100755 index 0000000..3ffd1bc --- /dev/null +++ b/Cpp/TP5_ModelesDeClasses/EnsembleDouble.h @@ -0,0 +1,244 @@ +/** + * @file EnsembleDouble.h + * @author Sebastien Fourey + * @date Thu Nov 18 + * + * @brief Declaration de la classe EnsembleDouble. + * + */ +#ifndef ENSEMBLEDOUBLE_H +#define ENSEMBLEDOUBLE_H + +#include +#include +using namespace std; + +/** + * Classe permettant de representer un ensemble de + * double en utilisant uniquement la notion d'egalite entre + * double. Aucune relation d'ordre n'est utilisee (par exemple + * pour avoir un representation ordonnee en memoire qui accelererait + * les recherches).
+ * Seul l'operateur == est utilise pour tester l'egalite de deux + * elements. + */ +class EnsembleDouble { + + class Noeud { + double valeur; + Noeud * suivant; + public: + Noeud(double valeur, Noeud * suivant=0):valeur(valeur),suivant(suivant) { } + ~Noeud() { delete suivant; } + double getValeur() { return valeur; } + Noeud * getSuivant() { return suivant; } + void setSuivant(Noeud * suivant) { Noeud::suivant = suivant; } + }; + + Noeud * liste; + +public: + + /** + * Construit un ensemble vide. + */ + EnsembleDouble():liste(0) { } + + /** + * Construit un singleton. + */ + EnsembleDouble(double x) { liste = new Noeud(x); } + + /** + * Destructeur. + */ + ~EnsembleDouble(); + + /** + * Test si l'ensemble est vide. + * + * @return true si l'ensemble est vide, sinon false. + */ + bool estVide() { return liste == 0; } + + /** + * Envoie tous les elements dans un flot de sortie. + * + * @param out un flot de sortie. + * + * @return le flot de sortie donne en parametre. + */ + ostream & flush(ostream & out) const; + + /** + * Test l'appartenance d'un element a l'ensemble. + * + * @param x un double. + * + * @return true sie est dans l'ensemble, false sinon. + */ + bool contient(double x) const; + + /** + * Test l'inclusion dans un autre ensemble. + * + * @param e un ensemble + * + * @return true si "je" suis inclus dans e, false sinon. + */ + bool estInclusDans(const EnsembleDouble & autre) const; + + /** + * Ajoute un "objet" a l'ensemble. + * + * @param e un double a ajouter à l'ensemble. + */ + void ajoute(double x); + + /** + * Retire un double de l'esemble. + * + * @param x un double a retirer. + */ + void retire(double x); + + + /** + * Ajoute tous les elements dans un autre ensemble. + * + * @param e un ensemble + */ + void ajouteDans(EnsembleDouble & e) const; + + /** + * Retire tous les elements dans un autre ensemble. + * Apres a.enleveDe(b), b vaut b - a (- ensembliste) + * + * @param e un ensemble dont il faut retirer des elements. + */ + void retireDe(EnsembleDouble & e) const; + + + /** + * Operateur d'affectation d'un ensemble. + * + * @param e un ensemble + * + * @return une reference a moi-meme + */ + EnsembleDouble & operator=(const EnsembleDouble & e); + + + /** + * Constructeur par recopie. + * + * @param e un ensemble + */ + EnsembleDouble(const EnsembleDouble & e); + +private: + + /** + * Methode recursive de suppression d'un element dans + * une liste chainee. + * + * @param liste une liste. + * @param x un element. + * + * @return le liste sans l'element. + */ + Noeud * retireRec(Noeud * liste, double x); + +}; + +/** + * Operateur << pour les enembles de double. + * + * @param out un flot de sortie. + * @param e un ensemble de doubles. + * + * @return le flot de sortie donne en argument. + */ +ostream & operator<<(ostream & out, const EnsembleDouble & e); + + +/** + * Creation d'un singleton. + * + * @param x un double + * + * @return le singleton {x} + */ +EnsembleDouble singleton(double x); + +/** + * Creation d'un ensemble vide. + * + * @param x un double + * + * @return le singleton {x} + */ +EnsembleDouble ensembleVide(); + +/** + * Teste l'egalite de deux ensembles. + * + * @param a un ensemble. + * @param b un ensemble. + * + * @return true si a=b (i.e., a est inclus dans b et b est inclus dans a), + * sinon false. + */ +bool egale(const EnsembleDouble & a, const EnsembleDouble & b); +bool operator==(const EnsembleDouble & a, const EnsembleDouble & b); +bool operator<(const EnsembleDouble & a, const EnsembleDouble & b); +bool operator>(const EnsembleDouble & a, const EnsembleDouble & b); + + +/** + * Union de deux ensembles de doubles. + * + * @param a un ensemble de doubles. + * @param b un ensemble de doubles. + * + * @return a union b. + */ +EnsembleDouble reunion(const EnsembleDouble & a, const EnsembleDouble & b); +EnsembleDouble operator+(const EnsembleDouble & a, const EnsembleDouble & b); +EnsembleDouble operator|(const EnsembleDouble & a, const EnsembleDouble & b); + +/** + * Difference de deux ensembles. + * + * @param a un ensemble de doubles. + * @param b un ensemble de doubles. + * + * @return a prive de b. + */ +EnsembleDouble difference(const EnsembleDouble & a, const EnsembleDouble & b); +EnsembleDouble operator-(const EnsembleDouble & a, const EnsembleDouble & b); + +/** + * Difference symetrique entre deux ensembles de doubles. + * + * @param a un ensemble de doubles. + * @param b un ensemble de doubles. + * + * @return (a prive de b) union (b prive de a) + */ +EnsembleDouble diffSymetrique(const EnsembleDouble & a, const EnsembleDouble & b); +EnsembleDouble operator^(const EnsembleDouble & a, const EnsembleDouble & b); + + +/** + * Intersection entre deux ensembles de doubles. + * + * @param a un ensemble de doubles. + * @param b un ensemble de doubles. + * + * @return l'intersection de a et b. + */ +EnsembleDouble intersection(const EnsembleDouble & a, const EnsembleDouble & b); +EnsembleDouble operator&(const EnsembleDouble & a, const EnsembleDouble & b); + +#endif diff --git a/Cpp/TP5_ModelesDeClasses/essai_ensemble.cc b/Cpp/TP5_ModelesDeClasses/essai_ensemble.cc new file mode 100755 index 0000000..af4c029 --- /dev/null +++ b/Cpp/TP5_ModelesDeClasses/essai_ensemble.cc @@ -0,0 +1,137 @@ +/** + * @file essai_ensemble.cc + * @author Sebastien Fourey + * @date Thu Nov 18 20:38:47 2004 + * + * @brief Programme de test du modele de classe "Ensemble" + * defini dans Ensemble.hh + */ + +/* + * Ici, toute la definition du modele de classe "Ensemble" + * est dans un unique fichier .hh + * On ne fait plus de compilation separee. + * + */ + +#include +#include +#include + +#include "Ensemble.hh" + +using namespace std; + +/** + * Fonction principale du programme. + * + * @param argc le nombre d'arguments sur la ligne de commande. + * @param argv le tableau des arguments de la ligne de commande. + * + * @return 0 (SUCCESS) + */ +int main(int argc, char * argv[]) { + + typedef Ensemble EnsembleDouble; + EnsembleDouble e; + Ensemble f; + Ensemble g; + + for (int i = 1; i <= 10 ; i++) + e.ajoute(i); + + for (int i = 6; i <= 15 ; i++) + f.ajoute(i); + + for (int i = 11; i < 20 ; i++) + g.ajoute(i); + + cout << setiosflags(ios_base::boolalpha); // + + // Alternative : cout.setf(ios_base::boolalpha); // + + cout << e.contient(5) << endl; + + cout << f.contient(5) << endl; + + cout << g.contient(5) << endl; + + cout << "e = " << e << endl; + + cout << "f = " << f << endl; + + cout << "g = " << g << endl; + + /* + e.retire(0); + cout << "e - 0 = " << e << endl; + e.retire(3); + cout << "e - 3 = " << e << endl; + e.retire(1); + cout << "e - 1 = " << e << endl; + e.retire(10); + cout << "e - 10 = " << e << endl; + e.retire(6); + cout << "e - 6 = " << e << endl; + */ + + cout << " e U f = " << (e + f) << endl; + + cout << " e inter f = " << (e & f) << endl; + + cout << " e - f = " << (e - f) << endl; + + cout << " e inter g = " << (e & g) << endl; + + cout << " e diffSym f = " << (e ^ f) << endl; + + cout << " e diffSym g = " << (e ^ g) << endl; + + cout << " e - e = " << (e - e) << endl; + + cout << " e - {40.0} = " << (e - Ensemble::singleton(40.0)) << endl; + + cout << " e U {40} U {50} = " << e + Ensemble::singleton(40.0) + Ensemble::singleton(50.0) << endl; + + cout << endl; + + cout << " e = " << e << endl; + + cout << " f = " << f << endl; + + cout << " (e U f) - f " << (e + f) - f << endl; + + cout << " (e U f) - f == e ? " << (((e + f) - f) == e) << endl; + + cout << " En effet, car e inter f = " << (e & f) << endl; + + cout << endl; + + cout << " e == e U {} ? " << ((e + Ensemble()) == e) << endl; + + Foncteur fct(3); + + cout << "e.appliquerAuxElements(Foncteur fct(3)) = " << e.appliquerAuxElements(fct) << endl; + + + // cout << " e - {5} < e ? " << ((e - Ensemble(5.0)) < e) << endl; + + Ensemble a, b; + + a.ajoute(true); + + b.ajoute(false); + + cout << endl; + + cout << " a = " << a << endl; + + cout << " b = " << b << endl; + + cout << " a + b = " << (a + b) << endl; + + cout << " a + b - {true} = " << ((a + b) - Ensemble::singleton(true)) << endl; + + return 0; +} + diff --git a/Cpp/TP6_STL/HollowMatrix.cpp b/Cpp/TP6_STL/HollowMatrix.cpp new file mode 100755 index 0000000..83559ab --- /dev/null +++ b/Cpp/TP6_STL/HollowMatrix.cpp @@ -0,0 +1,138 @@ +/** + * #(@)HollowMatrix.cpp ENSICAEN 2006 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/** + * Implements a hollow matrix. + */ + +#include "HollowMatrix.h" + +#include + +using namespace std; + +/* + * @version 2006 + * + * @done - + * + * @todo - + */ + + +double HollowMatrix::operator()(int r, int c) const { + pair p = make_pair(r, c); + double ret = 0; + + /* + * Here, we do not use the operator [] because it inserts a default + * value in the map if the key cannot be found. + * + * The function find() does not modify the object. + */ + ArrayOf2DPoints::const_iterator i = this->find(p); + + if (i != this->end()) { + ret = i->second; + } + + return ret; +} + + +void HollowMatrix::setValue(int r, int c, double v) { + pair p = make_pair(r, c); + + if (v != 0) { + (*this)[p] = v; + } else { + this->erase(p); + } +} + + +int HollowMatrix::width(void) const { + int max = 0; + + for (ArrayOf2DPoints::const_iterator i = this->begin(); + i != this->end(); ++i) { + + /* i->first is the key, i->first.second is the col number */ + int col = i->first.second; + + if (col > max) { + max = col; + } + } + + return max; +} + +int HollowMatrix::height(void) const { + int max = 0; + + for (ArrayOf2DPoints::const_iterator i = this->begin(); + i != this->end(); ++i) { + + /* i->first is the key, i->first.first is the row number */ + int row = i->first.first; + + if (row > max) { + max = row; + } + } + + return max; +} + +ostream & operator<<(ostream & st, const HollowMatrix & m) { + int h = m.height(); + int w = m.width(); + + /* backup stream options */ + ios_base::fmtflags old_options = st.flags(); + + /* left alignment */ + st.setf(ios_base::left, ios_base::adjustfield); + + st << "["; + for (int r = 1; r <= h; r++) { + if (r == 1) { + st << "["; + } else { + st << " ["; + } + + for (int c = 1; c <= w; c++) { + /* the next field is 8 chars wide */ + st << setw(8); + + st << m(r, c); + } + + st << "]"; + + if (r != h) { + st << endl; + } + } + + st << "]" << endl; + + /* restore stream options */ + st.flags(old_options); + + return st; +} + diff --git a/Cpp/TP6_STL/HollowMatrix.h b/Cpp/TP6_STL/HollowMatrix.h new file mode 100755 index 0000000..3e9aa99 --- /dev/null +++ b/Cpp/TP6_STL/HollowMatrix.h @@ -0,0 +1,78 @@ +/** + * #(@)HollowMatrix.h ENSICAEN 2006 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/** + * Defines a hollow matrix. + */ + +#ifndef HOLLOW_MATRIX_H +#define HOLLOW_MATRIX_H + +#include +#include +#include + +/* + * @version 2006 + * + * @done - + * + * @todo - + */ + +typedef std::map, double> ArrayOf2DPoints; + +class HollowMatrix : public ArrayOf2DPoints { +public: + /** + * Returns the number at row r and col c. By default, all values in + * this matrix are zero. + * + * @param r the row number, starting at 1 + * @param c the col number, starting at 1 + * @return the value, 0 if not defined + */ + double operator()(int r, int c) const; + + /** + * Defines the number at row r and col c. If v is equal to zero, the + * number is removed from this matrix. + * + * @param r the row number, starting at 1 + * @param c the col number, starting at 1 + * @param v the value + */ + void setValue(int r, int c, double v); + + /** + * Returns the number of columns in this matrix. + * + * @return the number of columns in this matrix + */ + int width(void) const; + + /** + * Returns the number of rows in this matrix. + * + * @return the number of rows in this matrix + */ + int height(void) const; +private: + +}; + +std::ostream & operator<<(std::ostream & st, const HollowMatrix & m); + +#endif /* HOLLOW_MATRIX_H */ + diff --git a/Cpp/TP6_STL/Makefile b/Cpp/TP6_STL/Makefile new file mode 100755 index 0000000..def3644 --- /dev/null +++ b/Cpp/TP6_STL/Makefile @@ -0,0 +1,12 @@ +CXXFLAGS := -Wall -g +LDFLAGS := -lstdc++ + +all: tp ex3 ex4 ex5 ex6 + +ex6: ex6.o HollowMatrix.o + +clean: + rm -f *.o tp ex3 ex4 ex5 ex6 + +.PHONY: all clean + diff --git a/Cpp/TP6_STL/ex3.cpp b/Cpp/TP6_STL/ex3.cpp new file mode 100755 index 0000000..e8b604a --- /dev/null +++ b/Cpp/TP6_STL/ex3.cpp @@ -0,0 +1,62 @@ +/** + * #(@)ex3.cpp ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/** + * TP7 : Utilisation des conteneurs de la STL. + */ + + +// STL includes +#include +#include +#include +#include + +#include /* for exit() */ + +using namespace std; + +int main(int argc, char ** argv) { + if (argc != 2) { + cout << "Usage : " << argv[0] << " " << endl; + exit(1); + } + + ifstream st(argv[1]); + if (! st.is_open()) { + cout << "Erreur lors de l'ouverture du fichier !" << endl; + exit(2); + } + + set s; + + char c = 0; + while (!st.eof()) { + st >> c; + s.insert(c); + } + + st.close(); + + cout << "Nombre de caracteres differents : " << s.size() << endl; + + for (set::iterator i = s.begin(); i != s.end(); i++) { + cout << *i; + } + + cout << endl; + + return 0; +} + diff --git a/Cpp/TP6_STL/ex4.cpp b/Cpp/TP6_STL/ex4.cpp new file mode 100755 index 0000000..fac5f38 --- /dev/null +++ b/Cpp/TP6_STL/ex4.cpp @@ -0,0 +1,106 @@ +/** + * #(@)ex4.cpp ENSICAEN 2006 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/** + * TP7 : Utilisation des conteneurs de la STL. + * TP7 - EX4 : Utilisation d'un tas pour trier. + */ + + +// STL includes +#include +#include +#include +#include +#include + +#include /* for exit() */ + +using namespace std; + +/** + * Sorts the vector using a heap. + * + * @param v a vector + * @return a sorted copy of the vector + */ +template vector trier(vector & v) { + priority_queue, Cmp> pq; + vector vs; + + for (typename vector::iterator i = v.begin(); i != v.end(); i++) { + pq.push(*i); + } + + while (! pq.empty()) { + vs.push_back(pq.top()); + pq.pop(); + } + + return vs; +} + +/** + * Fill a vector with 20 integers and sort it using a heap. + * + * Trace : + * Unsorted vector : 83 86 77 15 93 35 86 92 49 21 62 27 90 59 63 26 40 26 + * 72 36 + * + * Sorted vector - less : 93 92 90 86 86 83 77 72 63 62 59 49 40 36 35 + * 27 26 26 21 15 + * + * Sorted vector - greater : 15 21 26 26 27 35 36 40 49 59 62 63 72 77 + * 83 86 86 90 92 93 + * + * + * @param argc number of arguments + * @param argv arguments + * @return 0 + */ +int main(int argc, char ** argv) { + vector v; + + for (int i = 0; i < 20; i++) { + /* L'ordre est conservé */ + v.push_back(random() % 100); + } + + cout << "Unsorted vector : "; + for (vector::iterator i = v.begin(); i != v.end(); i++) { + cout << *i << " "; + } + cout << endl; + + /* Remark : notice the space between the two ">" after + * the function name */ + vector vs = trier >(v); + + cout << "Sorted vector - less : "; + for (vector::iterator i = vs.begin(); i != vs.end(); i++) { + cout << *i << " "; + } + cout << endl; + + vs = trier >(v); + + cout << "Sorted vector - greater : "; + for (vector::iterator i = vs.begin(); i != vs.end(); i++) { + cout << *i << " "; + } + cout << endl; + + return 0; +} + diff --git a/Cpp/TP6_STL/ex5.cpp b/Cpp/TP6_STL/ex5.cpp new file mode 100755 index 0000000..a77069b --- /dev/null +++ b/Cpp/TP6_STL/ex5.cpp @@ -0,0 +1,65 @@ +/** + * #(@)ex5.cpp ENSICAEN 2006 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/** + * TP7 : Utilisation des conteneurs de la STL. + * TP7 - EX5 : Tableaux associatifs. + */ + + +// STL includes +#include +#include +#include +#include + +#include /* for exit() */ + +using namespace std; + + +/** + * Tests the implementation of associative arrays. + * + * Trace : + * Liste des personnes : + * JCVD 45 + * Le chat 10 + * Nicolas 21 + * Thomas 21 + * + * We can notice that the keys are sorted. + * + * @param argc number of arguments + * @param argv arguments + * @return 0 + */ +int main(int argc, char ** argv) { + map age; + + age["Nicolas"] = 21; + age["Thomas"] = 21; + age["JCVD"] = 45; + age["Le chat"] = 10; + + cout << "Liste des personnes : " << endl; + for (map::const_iterator i = age.begin(); i != age.end(); ++i) { + /* i->first is the key, i->second is the value */ + cout << i->first << '\t' << i->second << endl; + } + cout << endl; + + return 1; +} + diff --git a/Cpp/TP6_STL/ex6.cpp b/Cpp/TP6_STL/ex6.cpp new file mode 100755 index 0000000..a66b891 --- /dev/null +++ b/Cpp/TP6_STL/ex6.cpp @@ -0,0 +1,169 @@ +/** + * #(@)ex6.cpp ENSICAEN 2006 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/** + * TP7 : Utilisation des conteneurs de la STL. + * TP7 - EX6 : Matrice creuse à l'aide d'une map. + */ + +/* + * @version 2006 + * + * @done - + * + * @todo debug HollowMatrix.h + */ + + +// STL includes +#include +#include +#include +#include +#include + +#include /* for exit() */ + + +#include "HollowMatrix.h" + +using namespace std; + +/** + * Prints the results of the comparison of the two pairs. Example : + * + * code : printPair(make_pair(1, 10), + * make_pair(2, 1), "<"); + * on screen : (1, 10) < (2, 1) = true + * + * @param p1 the first pair. + * @param p2 the second pair. + * @param op the operator (<, >, == or !=) + */ +template +void printPair(pair p1, pair p2, string op) { + cout << "(" << p1.first << ", " << p1.second << ") "; + cout << op; + cout << " (" << p2.first << ", " << p2.second << ") = "; + + if (op == "<") { + cout << (p1 < p2); + } else if (op == ">") { + cout << (p1 > p2); + } else if (op == "!=") { + cout << (p1 != p2); + } else if (op == "==") { + cout << (p1 == p2); + } else { + cout << "not true, not false"; + } + + cout << endl; +} + +/** + * Tests the truth of the order relations on pairs. Results are printed + * on the screen. + */ +void testPairs(void) { + /* true */ + printPair(make_pair(1, 10), make_pair(2, 1), "<"); + + /* true */ + printPair(make_pair(0, 0), make_pair(0, 10), "<"); + + /* false, equal */ + printPair(make_pair(0, 0), make_pair(0, 0), "<"); + + /* true */ + printPair(make_pair(1, 8.5), + make_pair(1, 9), "<"); + + /* true */ + printPair(make_pair(0, 0), make_pair(0, 1), "!="); + + /* false, equal */ + printPair(make_pair(0, 5), make_pair(0, 5), ">"); + + /* false, equal */ + printPair(make_pair(0, 5), make_pair(0, 5), "<"); + + /* true */ + printPair(make_pair(0, 5), make_pair(0, 5), "=="); + + /* false, "debrie" > "clouard" */ + printPair(make_pair("debrie", 10), + make_pair("clouard", 40), "<"); + + cout << endl; +} + +void testMatrix(void) { + HollowMatrix m; + + m.setValue(1, 1, 1); + m.setValue(2, 2, 1); + m.setValue(3, 3, 1); + m.setValue(4, 4, 1); + + m.setValue(2, 3, 23); + if (m(2 ,3) != 23 || m(3, 2) == 23) { + cout << "Erreur: " << __FILE__ << ":" << __LINE__ << endl; + } + + m.setValue(3, 4, -2.3); + m.setValue(2, 4, 1.23456789); + + cout << "check: " << 1 << 1.0 << 2 << -3 << 4 << endl; + cout << endl; + + /* original matrix */ + cout << m; + cout << endl; + + /* add 4 columns */ + m.setValue(1, 8, 1); + cout << m; + cout << endl; + + /* delete 4 columns */ + m.setValue(1, 8, 0); + cout << m; + cout << endl; + + /* We can modify the matrix using the functions of the map class */ + m[make_pair(5, 5)] = 666; + cout << m; + cout << endl; + + cout << "check: " << 1 << 1.0 << 2 << -3 << 4 << endl; +} + +/** + * Tests the order relations on pairs. Tests the implementation of the matrix. + * + * @param argc number of arguments + * @param argv arguments + * @return 0 + */ +int main(int argc, char ** argv) { + /* Displays boolean as "true" or "false" */ + cout << setiosflags(ios_base::boolalpha); + + testPairs(); + testMatrix(); + + return 1; +} + diff --git a/Cpp/TP6_STL/tp.cpp b/Cpp/TP6_STL/tp.cpp new file mode 100755 index 0000000..96777ed --- /dev/null +++ b/Cpp/TP6_STL/tp.cpp @@ -0,0 +1,174 @@ +/** + * #(@)tp.cpp ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/** + * TP7 : Utilisation des conteneurs de la STL. + * + * Implementation des exercices 1 et 2. + */ + + +// STL includes +#include +#include +#include +#include +#include + +#include /* for random() */ + +using namespace std; + +/** + * Question 1A : Remplit un vecteur d'entier avec 20 nombres entre 0 et 100 + * et les affiche. + * + * Trace : + * 83 86 77 15 93 35 86 92 49 21 62 27 90 59 63 26 40 26 72 36 + * + */ +void question_1A(void) { + /* Si on veut utiliser le vector comme une liste "classique", il ne faut + * pas d'éléments initiaux : vector v(0); + * + * Si on ne veut pas préciser le nombre initial d'éléments, il ne faut + * pas utiliser la notation : + * + * vector v(); + * + * sinon on le compilateur émet des erreurs : + * + * tp.cpp:33: error: request for member `push_back' in `v', which is of + * non-aggregate type `std::vector > ()()' + * + * le constructeur par defaut s'appelle de la manière suivante : + * vector v; + */ + vector v; + + for (int i = 0; i < 20; i++) { + /* L'ordre est conservé */ + v.push_back(random() % 100); + } + + + cout << "Question 1A: "; + + for (vector::iterator i = v.begin(); i != v.end(); i++) { + cout << *i << " "; + } + + cout << endl; +} + +/** + * Question 1B : Remplit un set d'entier avec 20 nombres entre 0 et 100, + * deux fois le nombre 0 et les affiche. + * + * Trace : + * 0 2 11 22 23 29 30 35 42 56 58 62 67 68 69 82 93 + * + * Remarque : + * les nombres sont ordonnées par ordre croissant et le numéro 0 + * n'apparait qu'une fois. + * + */ +void question_1B(void) { + set s; + + for (int i = 0; i < 20; i++) { + /* Les éléments sont triés par ordre croissant */ + s.insert(random() % 100); + } + + /* Et on ne peut insérer qu'une seule fois le même élément */ + s.insert(0); + s.insert(0); + + cout << "Question 1B: "; + + for (set::iterator i = s.begin(); i != s.end(); i++) { + cout << *i << " "; + } + + cout << endl; +} + +/** + * Dépose dix éléments sur la pile et les reprend. + * La pile n'est pas une collection. + * + * Trace : + * 9 8 7 6 5 4 3 2 1 0 + */ +void question_1C(void) { + stack s; + + for (int i = 0; i < 10; i++) { + s.push(i); + } + + cout << "Question 1C: "; + for (int i = 0; i < 10; i++) { + cout << s.top() << " "; + + /* pop() renvoie void */ + s.pop(); + } + + cout << endl; +} + +/** + * Insere 5000 éléments dans un vecteur et note les changements de + * capacité du vecteur. + * + * Trace : + * [0] 1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 + * + * Remarque : + * Initialement, le vecteur a une capacite nulle. Puis sa capacité + * augmente de manière exponentielle. Ceci permet de minimiser le + * nombre d'allocations mémoire pour un taux d'inutilisation de la + * mémoire compris entre 0 et 50 %. + */ +void question_2(void) { + vector v; + size_t taille = v.capacity(); + + cout << "Question 2: [" << taille << "] "; + + for (int i = 0; i < 5000; i++) { + v.push_back(i); + + size_t ntaille = v.capacity(); + if (taille != ntaille) { + taille = ntaille; + cout << ntaille << " "; + } + + } + + cout << endl; +} + +int main(int argc, char ** argv) { + question_1A(); + question_1B(); + question_1C(); + question_2(); + + return 0; +} + diff --git a/Cpp/TP7_Rip/AUTHORS b/Cpp/TP7_Rip/AUTHORS new file mode 100755 index 0000000..2ced4fd --- /dev/null +++ b/Cpp/TP7_Rip/AUTHORS @@ -0,0 +1 @@ +Nicolas MASSE & Thomas LIMIN diff --git a/Cpp/TP7_Rip/COPYING b/Cpp/TP7_Rip/COPYING new file mode 100755 index 0000000..5b6e7c6 --- /dev/null +++ b/Cpp/TP7_Rip/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 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 Library 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 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 Library General +Public License instead of this License. diff --git a/Cpp/TP7_Rip/ChangeLog b/Cpp/TP7_Rip/ChangeLog new file mode 100755 index 0000000..e69de29 diff --git a/Cpp/TP7_Rip/Doxyfile b/Cpp/TP7_Rip/Doxyfile new file mode 100755 index 0000000..389da03 --- /dev/null +++ b/Cpp/TP7_Rip/Doxyfile @@ -0,0 +1,275 @@ +# Doxyfile 1.4.1-KDevelop + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +PROJECT_NAME = tp7.kdevelop +PROJECT_NUMBER = 0.1 +OUTPUT_DIRECTORY = +CREATE_SUBDIRS = NO +OUTPUT_LANGUAGE = English +USE_WINDOWS_ENCODING = NO +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the +ALWAYS_DETAILED_SEC = NO +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = YES +STRIP_FROM_PATH = /home/nicolas/tmp_dir/tp5_templates/ +STRIP_FROM_INC_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = NO +MULTILINE_CPP_IS_BRIEF = NO +DETAILS_AT_TOP = NO +INHERIT_DOCS = YES +DISTRIBUTE_GROUP_DOC = NO +TAB_SIZE = 8 +ALIASES = +OPTIMIZE_OUTPUT_FOR_C = NO +OPTIMIZE_OUTPUT_JAVA = NO +SUBGROUPING = YES +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- +EXTRACT_ALL = NO +EXTRACT_PRIVATE = NO +EXTRACT_STATIC = NO +EXTRACT_LOCAL_CLASSES = YES +EXTRACT_LOCAL_METHODS = NO +HIDE_UNDOC_MEMBERS = NO +HIDE_UNDOC_CLASSES = NO +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = NO +CASE_SENSE_NAMES = YES +HIDE_SCOPE_NAMES = NO +SHOW_INCLUDE_FILES = YES +INLINE_INFO = YES +SORT_MEMBER_DOCS = YES +SORT_BRIEF_DOCS = NO +SORT_BY_SCOPE_NAME = NO +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 30 +SHOW_USED_FILES = YES +SHOW_DIRECTORIES = YES +FILE_VERSION_FILTER = +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- +QUIET = NO +WARNINGS = YES +WARN_IF_UNDOCUMENTED = YES +WARN_IF_DOC_ERROR = YES +WARN_NO_PARAMDOC = NO +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- +INPUT = /home/nicolas/tmp_dir/svn/artemis/tp7 +FILE_PATTERNS = *.c \ + *.cc \ + *.cxx \ + *.cpp \ + *.c++ \ + *.java \ + *.ii \ + *.ixx \ + *.ipp \ + *.i++ \ + *.inl \ + *.h \ + *.hh \ + *.hxx \ + *.hpp \ + *.h++ \ + *.idl \ + *.odl \ + *.cs \ + *.php \ + *.php3 \ + *.inc \ + *.m \ + *.mm \ + *.dox \ + *.C \ + *.CC \ + *.C++ \ + *.II \ + *.I++ \ + *.H \ + *.HH \ + *.H++ \ + *.CS \ + *.PHP \ + *.PHP3 \ + *.M \ + *.MM \ + *.C \ + *.H \ + *.tlh \ + *.diff \ + *.patch \ + *.moc \ + *.xpm \ + *.dox +RECURSIVE = yes +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = * +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = +INPUT_FILTER = +FILTER_PATTERNS = +FILTER_SOURCE_FILES = NO +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = NO +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = YES +REFERENCES_RELATION = YES +VERBATIM_HEADERS = YES +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = NO +COLS_IN_ALPHA_INDEX = 5 +IGNORE_PREFIX = +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- +GENERATE_HTML = YES +HTML_OUTPUT = html +HTML_FILE_EXTENSION = .html +HTML_HEADER = +HTML_FOOTER = +HTML_STYLESHEET = +HTML_ALIGN_MEMBERS = YES +GENERATE_HTMLHELP = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +BINARY_TOC = NO +TOC_EXPAND = NO +DISABLE_INDEX = NO +ENUM_VALUES_PER_LINE = 4 +GENERATE_TREEVIEW = NO +TREEVIEW_WIDTH = 250 +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- +GENERATE_LATEX = YES +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4wide +EXTRA_PACKAGES = +LATEX_HEADER = +PDF_HYPERLINKS = NO +USE_PDFLATEX = NO +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- +GENERATE_MAN = NO +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_LINKS = NO +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = yes +XML_OUTPUT = xml +XML_SCHEMA = +XML_DTD = +XML_PROGRAMLISTING = YES +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- +GENERATE_AUTOGEN_DEF = NO +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = NO +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- +TAGFILES = +GENERATE_TAGFILE = tp7.tag +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +PERL_PATH = /usr/bin/perl +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- +CLASS_DIAGRAMS = YES +HIDE_UNDOC_RELATIONS = YES +HAVE_DOT = NO +CLASS_GRAPH = YES +COLLABORATION_GRAPH = YES +GROUP_GRAPHS = YES +UML_LOOK = NO +TEMPLATE_RELATIONS = NO +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = YES +CALL_GRAPH = NO +GRAPHICAL_HIERARCHY = YES +DIRECTORY_GRAPH = YES +DOT_IMAGE_FORMAT = png +DOT_PATH = +DOTFILE_DIRS = +MAX_DOT_GRAPH_WIDTH = 1024 +MAX_DOT_GRAPH_HEIGHT = 1024 +MAX_DOT_GRAPH_DEPTH = 1000 +DOT_TRANSPARENT = NO +DOT_MULTI_TARGETS = NO +GENERATE_LEGEND = YES +DOT_CLEANUP = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- +SEARCHENGINE = NO diff --git a/Cpp/TP7_Rip/INSTALL b/Cpp/TP7_Rip/INSTALL new file mode 100755 index 0000000..02a4a07 --- /dev/null +++ b/Cpp/TP7_Rip/INSTALL @@ -0,0 +1,167 @@ +Basic Installation +================== + + These are generic installation instructions. + + The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions. Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, a file +`config.cache' that saves the results of its tests to speed up +reconfiguring, and a file `config.log' containing compiler output +(useful mainly for debugging `configure'). + + If you need to do unusual things to compile the package, please try +to figure out how `configure' could check whether to do them, and mail +diffs or instructions to the address given in the `README' so they can +be considered for the next release. If at some point `config.cache' +contains results you don't want to keep, you may remove or edit it. + + The file `configure.in' is used to create `configure' by a program +called `autoconf'. You only need `configure.in' if you want to change +it or regenerate `configure' using a newer version of `autoconf'. + +The simplest way to compile this package is: + + 1. `cd' to the directory containing the package's source code and type + `./configure' to configure the package for your system. If you're + using `csh' on an old version of System V, you might need to type + `sh ./configure' instead to prevent `csh' from trying to execute + `configure' itself. + + Running `configure' takes a while. While running, it prints some + messages telling which features it is checking for. + + 2. Type `make' to compile the package. + + 3. Type `make install' to install the programs and any data files and + documentation. + + 4. You can remove the program binaries and object files from the + source code directory by typing `make clean'. + +Compilers and Options +===================== + + Some systems require unusual options for compilation or linking that +the `configure' script does not know about. You can give `configure' +initial values for variables by setting them in the environment. Using +a Bourne-compatible shell, you can do that on the command line like +this: + CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure + +Or on systems that have the `env' program, you can do it like this: + env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure + +Compiling For Multiple Architectures +==================================== + + You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you must use a version of `make' that +supports the `VPATH' variable, such as GNU `make'. `cd' to the +directory where you want the object files and executables to go and run +the `configure' script. `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'. + + If you have to use a `make' that does not supports the `VPATH' +variable, you have to compile the package for one architecture at a time +in the source code directory. After you have installed the package for +one architecture, use `make distclean' before reconfiguring for another +architecture. + +Installation Names +================== + + By default, `make install' will install the package's files in +`/usr/local/bin', `/usr/local/man', etc. You can specify an +installation prefix other than `/usr/local' by giving `configure' the +option `--prefix=PATH'. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +give `configure' the option `--exec-prefix=PATH', the package will use +PATH as the prefix for installing programs and libraries. +Documentation and other data files will still use the regular prefix. + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + +Optional Features +================= + + Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System). The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + + For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + +Specifying the System Type +========================== + + There may be some features `configure' can not figure out +automatically, but needs to determine by the type of host the package +will run on. Usually `configure' can figure that out, but if it prints +a message saying it can not guess the host type, give it the +`--host=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name with three fields: + CPU-COMPANY-SYSTEM + +See the file `config.sub' for the possible values of each field. If +`config.sub' isn't included in this package, then this package doesn't +need to know the host type. + + If you are building compiler tools for cross-compiling, you can also +use the `--target=TYPE' option to select the type of system they will +produce code for and the `--build=TYPE' option to select the type of +system on which you are compiling the package. + +Sharing Defaults +================ + + If you want to set default values for `configure' scripts to share, +you can create a site shell script called `config.site' that gives +default values for variables like `CC', `cache_file', and `prefix'. +`configure' looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists. Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: not all `configure' scripts look for a site script. + +Operation Controls +================== + + `configure' recognizes the following options to control how it +operates. + +`--cache-file=FILE' + Use and save the results of the tests in FILE instead of + `./config.cache'. Set FILE to `/dev/null' to disable caching, for + debugging `configure'. + +`--help' + Print a summary of the options to `configure', and exit. + +`--quiet' +`--silent' +`-q' + Do not print messages saying which checks are being made. + +`--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + `configure' can determine that directory automatically. + +`--version' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`configure' also accepts some other, not widely useful, options. + diff --git a/Cpp/TP7_Rip/Makefile.am b/Cpp/TP7_Rip/Makefile.am new file mode 100755 index 0000000..02520f2 --- /dev/null +++ b/Cpp/TP7_Rip/Makefile.am @@ -0,0 +1,5 @@ +# not a GNU package. You can remove this line, if +# have all needed files, that a GNU package needs +AUTOMAKE_OPTIONS = foreign 1.4 + +SUBDIRS = src diff --git a/Cpp/TP7_Rip/Makefile.cvs b/Cpp/TP7_Rip/Makefile.cvs new file mode 100755 index 0000000..d160702 --- /dev/null +++ b/Cpp/TP7_Rip/Makefile.cvs @@ -0,0 +1,8 @@ +default: all + +all: + aclocal + autoheader + automake + autoconf + diff --git a/Cpp/TP7_Rip/NEWS b/Cpp/TP7_Rip/NEWS new file mode 100755 index 0000000..e69de29 diff --git a/Cpp/TP7_Rip/README b/Cpp/TP7_Rip/README new file mode 100755 index 0000000..f0bfddb --- /dev/null +++ b/Cpp/TP7_Rip/README @@ -0,0 +1,14 @@ +Installation: + +./configure +make + +Remarque: + +Afin de privilégier une conception orientée objet, la classe Host diffère légèrement de la classe Host demandée: les concepts des tables de routages et d'entrée de table de routage ayant été implémenté dans des classes séparées. + +De plus, nous avons préféré nous abstenir d'utiliser la méthode de diffusion de tables pour la recherche de routes, préférant une méthode "incrémentale" de résolution, qui n'implique que les voisins immédiats, puis au besoins les voisins des voisins etc... Nous pensons que cette méthode est plus efficace car elle n'engendre pas un échange de tables généralisé qui pourrait engorger le réseau. + +Afin de coller au plus près à la réalité, nous avons simulé les envoi simultané de message en confiant à la classe Network le soin de gérer une file des messages RIP devant être envoyés, ce qui permet, lors de la mise à jour des tables de routages, un parcours du graphe qui s'apparente plus à un parcours en largeur ("diffusion concentrique de message") qu'à un parcours en profondeur, trop éloigné du fonctionnement d'un algorithme répartis + +Comme on peut le constater en executant le programme (./src/tp7) cela ne nuit en rien à son fonctionnement diff --git a/Cpp/TP7_Rip/TODO b/Cpp/TP7_Rip/TODO new file mode 100755 index 0000000..e69de29 diff --git a/Cpp/TP7_Rip/config.guess b/Cpp/TP7_Rip/config.guess new file mode 100755 index 0000000..01edd7b --- /dev/null +++ b/Cpp/TP7_Rip/config.guess @@ -0,0 +1,1495 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. + +timestamp='2005-12-23' + +# This file 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. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + + +# Originally written by Per Bothner . +# Please send patches to . Submit a context +# diff and a properly formatted ChangeLog entry. +# +# This script attempts to guess a canonical system name similar to +# config.sub. If it succeeds, it prints the system name on stdout, and +# exits with 0. Otherwise, it exits with 1. +# +# The plan is that this can be called by configure scripts if you +# don't specify an explicit build system type. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ; set_cc_for_build= ;' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +if [ "${UNAME_SYSTEM}" = "Linux" ] ; then + eval $set_cc_for_build + cat << EOF > $dummy.c + #include + #ifdef __UCLIBC__ + # ifdef __UCLIBC_CONFIG_VERSION__ + LIBC=uclibc __UCLIBC_CONFIG_VERSION__ + # else + LIBC=uclibc + # endif + #else + LIBC=gnu + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep LIBC= | sed -e 's: ::g'` +fi + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. + case "${UNAME_MACHINE_ARCH}" in + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep __ELF__ >/dev/null + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}" + exit ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} + exit ;; + *:ekkoBSD:*:*) + echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + exit ;; + macppc:MirBSD:*:*) + echo powerppc-unknown-mirbsd${UNAME_RELEASE} + exit ;; + *:MirBSD:*:*) + echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + exit ;; + alpha:OSF1:*:*) + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE="alpha" ;; + "EV4.5 (21064)") + UNAME_MACHINE="alpha" ;; + "LCA4 (21066/21068)") + UNAME_MACHINE="alpha" ;; + "EV5 (21164)") + UNAME_MACHINE="alphaev5" ;; + "EV5.6 (21164A)") + UNAME_MACHINE="alphaev56" ;; + "EV5.6 (21164PC)") + UNAME_MACHINE="alphapca56" ;; + "EV5.7 (21164PC)") + UNAME_MACHINE="alphapca57" ;; + "EV6 (21264)") + UNAME_MACHINE="alphaev6" ;; + "EV6.7 (21264A)") + UNAME_MACHINE="alphaev67" ;; + "EV6.8CB (21264C)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8AL (21264B)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8CX (21264D)") + UNAME_MACHINE="alphaev68" ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE="alphaev69" ;; + "EV7 (21364)") + UNAME_MACHINE="alphaev7" ;; + "EV7.9 (21364A)") + UNAME_MACHINE="alphaev79" ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + exit ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit ;; + *:z/VM:*:*) + echo s390-ibm-zvmoe + exit ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit ;; + arm:riscos:*:*|arm:RISCOS:*:*) + echo arm-unknown-riscos + exit ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7; exit ;; + esac ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + i86pc:SunOS:5.*:*) + echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit ;; + m68k:machten:*:*) + echo m68k-apple-machten${UNAME_RELEASE} + exit ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && + dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`$dummy $dummyarg` && + { echo "$SYSTEM_NAME"; exit; } + echo mips-mips-riscos${UNAME_RELEASE} + exit ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] + then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} + fi + exit ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` + then + echo "$SYSTEM_NAME" + else + echo rs6000-ibm-aix3.2.5 + fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit ;; + *:AIX:*:[45]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ ${HP_ARCH} = "hppa2.0w" ] + then + eval $set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | + grep __LP64__ >/dev/null + then + HP_ARCH="hppa2.0w" + else + HP_ARCH="hppa64" + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + echo unknown-hitachi-hiuxwe2 + exit ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + *:UNICOS/mp:*:*) + echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:FreeBSD:*:*) + case ${UNAME_MACHINE} in + pc98) + echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + *) + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + esac + exit ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit ;; + i*:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit ;; + i*:windows32*:*) + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 + exit ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit ;; + x86:Interix*:[345]*) + echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//' + exit ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i586-pc-interix + exit ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + echo x86_64-unknown-cygwin + exit ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + *:GNU:*:*) + # the GNU system + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu + exit ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit ;; + arm*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + cris:Linux:*:*) + echo cris-axis-linux-${LIBC} + exit ;; + crisv32:Linux:*:*) + echo crisv32-axis-linux-${LIBC} + exit ;; + frv:Linux:*:*) + echo frv-unknown-linux-${LIBC} + exit ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + m32r*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + mips:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips + #undef mipsel + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mipsel + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips + #else + CPU= + #endif + #endif +EOF + eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '/^CPU/{s: ::g;p;}'`" + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } + ;; + mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips64 + #undef mips64el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mips64el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips64 + #else + CPU= + #endif + #endif +EOF + eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '/^CPU/{s: ::g;p;}'`" + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } + ;; + or32:Linux:*:*) + echo or32-unknown-linux-${LIBC} + exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-${LIBC} + exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-${LIBC} + exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null + if test "$?" = 0 ; then LIBC="gnulibc1" ; fi + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; + PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; + *) echo hppa-unknown-linux-${LIBC} ;; + esac + exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-${LIBC} + exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux + exit ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + vax:Linux:*:*) + echo ${UNAME_MACHINE}-dec-linux-${LIBC} + exit ;; + x86_64:Linux:*:*) + echo x86_64-unknown-linux-${LIBC} + exit ;; + i*86:Linux:*:*) + # The BFD linker knows what the default object file format is, so + # first see if it will tell us. cd to the root directory to prevent + # problems with other programs or directories called `ld' in the path. + # Set LC_ALL=C to ensure ld outputs messages in English. + ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ + | sed -ne '/supported targets:/!d + s/[ ][ ]*/ /g + s/.*supported targets: *// + s/ .*// + p'` + case "$ld_supported_targets" in + elf32-i386) + TENTATIVE="${UNAME_MACHINE}-pc-linux-${LIBC}" + ;; + a.out-i386-linux) + echo "${UNAME_MACHINE}-pc-linux-${LIBC}aout" + exit ;; + coff-i386) + echo "${UNAME_MACHINE}-pc-linux-${LIBC}coff" + exit ;; + "") + # Either a pre-BFD a.out linker (linux-gnuoldld) or + # one that does not give us useful --help. + echo "${UNAME_MACHINE}-pc-linux-${LIBC}oldld" + exit ;; + esac + # This should get integrated into the C code below, but now we hack + if [ "$LIBC" != "gnu" ] ; then echo "$TENTATIVE" && exit 0 ; fi + # Determine whether the default compiler is a.out or elf + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + #ifdef __ELF__ + # ifdef __GLIBC__ + # if __GLIBC__ >= 2 + LIBC=gnu + # else + LIBC=gnulibc1 + # endif + # else + LIBC=gnulibc1 + # endif + #else + #if defined(__INTEL_COMPILER) || defined(__PGI) + LIBC=gnu + #else + LIBC=gnuaout + #endif + #endif + #ifdef __dietlibc__ + LIBC=dietlibc + #endif +EOF + eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '/^LIBC/{s: ::g;p;}'`" + test x"${LIBC}" != x && { + echo "${UNAME_MACHINE}-pc-linux-${LIBC}" + exit + } + test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; } + ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit ;; + i*86:syllable:*:*) + echo ${UNAME_MACHINE}-pc-syllable + exit ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i386. + echo i386-pc-msdosdjgpp + exit ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + echo ${UNAME_MACHINE}-stratus-vos + exit ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + case $UNAME_PROCESSOR in + unknown) UNAME_PROCESSOR=powerpc ;; + esac + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit ;; + NSE-?:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk${UNAME_RELEASE} + exit ;; + NSR-?:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = "386"; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit ;; + *:DragonFly:*:*) + echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case "${UNAME_MACHINE}" in + A*) echo alpha-dec-vms ; exit ;; + I*) echo ia64-dec-vms ; exit ;; + V*) echo vax-dec-vms ; exit ;; + esac ;; + *:XENIX:*:SysV) + echo i386-pc-xenix + exit ;; + i*86:skyos:*:*) + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' + exit ;; + i*86:rdos:*:*) + echo ${UNAME_MACHINE}-pc-rdos + exit ;; +esac + +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + +eval $set_cc_for_build +cat >$dummy.c < +# include +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix\n"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); + +#endif + +#if defined (vax) +# if !defined (ultrix) +# include +# if defined (BSD) +# if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +# else +# if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# endif +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# else + printf ("vax-dec-ultrix\n"); exit (0); +# endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + c34*) + echo c34-convex-bsd + exit ;; + c38*) + echo c38-convex-bsd + exit ;; + c4*) + echo c4-convex-bsd + exit ;; + esac +fi + +cat >&2 < in order to provide the needed +information to handle your system. + +config.guess timestamp = $timestamp + +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/Cpp/TP7_Rip/config.sub b/Cpp/TP7_Rip/config.sub new file mode 100755 index 0000000..14332b7 --- /dev/null +++ b/Cpp/TP7_Rip/config.sub @@ -0,0 +1,1627 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. + +timestamp='2005-12-23' + +# This file is (in principle) common to ALL GNU software. +# The presence of a machine in this file suggests that SOME GNU software +# can handle that machine. It does not imply ALL GNU software can. +# +# This file 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. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + + +# Please send patches to . Submit a context +# diff and a properly formatted ChangeLog entry. +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS + $0 [OPTION] ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ + uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ + storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis | -knuth | -cray) + os= + basic_machine=$1 + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco6) + os=-sco5v6 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ + | bfin \ + | c4x | clipper \ + | d10v | d30v | dlx | dsp16xx | dvp \ + | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | i370 | i860 | i960 | ia64 \ + | ip2k | iq2000 \ + | m32r | m32rle | m68000 | m68k | m88k | maxq | mb | microblaze | mcore \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64vr | mips64vrel \ + | mips64orion | mips64orionel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | mt \ + | msp430 \ + | ns16k | ns32k \ + | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | pyramid \ + | sh | sh[1234] | sh[24]a | sh[24]a*eb | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b \ + | strongarm \ + | tahoe | thumb | tic4x | tic80 | tron \ + | v850 | v850e \ + | we32k \ + | x86 | xscale | xscalee[bl] | xstormy16 | xtensa \ + | z8k) + basic_machine=$basic_machine-unknown + ;; + m32c) + basic_machine=$basic_machine-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12) + # Motorola 68HC11/12. + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + ms1) + basic_machine=mt-unknown + ;; + nios2 | nios2-* | nios2 | nios2-*) + basic_machine=nios2-altera + os=-none + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* \ + | bfin-* | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ + | clipper-* | craynv-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | elxsi-* \ + | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* | iq2000-* \ + | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | maxq-* | mcore-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mips64vr5900-* | mips64vr5900el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | mt-* \ + | msp430-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | pyramid-* \ + | romp-* | rs6000-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc86x-* | sparclet-* \ + | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ + | tahoe-* | thumb-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tron-* \ + | v850-* | v850e-* | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \ + | xstormy16-* | xtensa-* \ + | ymp-* \ + | z8k-*) + ;; + m32c-*) + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + abacus) + basic_machine=abacus-unknown + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amd64) + basic_machine=x86_64-pc + ;; + amd64-*) + basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + craynv) + basic_machine=craynv-cray + os=-unicosmp + ;; + cr16c) + basic_machine=cr16c-unknown + os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; + crisv32 | crisv32-* | etraxfs*) + basic_machine=crisv32-axis + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; +# I'm not sure what "Sysv32" means. Should this be sysv3.2? + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + mingw32) + basic_machine=i386-pc + os=-mingw32 + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mipsEE* | ee | ps2) + basic_machine=mips64r5900el-scei + case $os in + -linux*) + ;; + *) + os=-elf + ;; + esac + ;; + iop) + basic_machine=mipsel-scei + os=-irx + ;; + dvp) + basic_machine=dvp-scei + os=-elf + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + ms1-*) + basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + openrisc | openrisc-*) + basic_machine=or32-unknown + ;; + os400) + basic_machine=powerpc-ibm + os=-os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pc98) + basic_machine=i386-pc + ;; + pc98-*) + basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc) basic_machine=powerpc-unknown + ;; + ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little | ppc64-le | powerpc64-little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rdos) + basic_machine=i386-pc + os=-rdos + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tic54x | c54x*) + basic_machine=tic54x-unknown + os=-coff + ;; + tic55x | c55x*) + basic_machine=tic55x-unknown + os=-coff + ;; + tic6x | c6x*) + basic_machine=tic6x-unknown + os=-coff + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + tpf) + basic_machine=s390x-ibm + os=-tpf + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + xbox) + basic_machine=i686-pc + os=-mingw32 + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + mmix) + basic_machine=mmix-knuth + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sparc | sparcv8 | sparcv9 | sparcv9b) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \ + | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ + | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ + | -skyos* | -haiku* | -rdos* | -irx*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux-dietlibc) + os=-linux-dietlibc + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -os400*) + os=-os400 + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -syllable*) + os=-syllable + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -tpf*) + os=-tpf + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -aros*) + os=-aros + ;; + -kaos*) + os=-kaos + ;; + -zvmoe) + os=-zvmoe + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + c4x-* | tic4x-*) + os=-coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + # This also exists in the configure program, but was not the + # default. + # os=-sunos4 + ;; + m68*-cisco) + os=-aout + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-haiku) + os=-haiku + ;; + *-ibm) + os=-aix + ;; + *-knuth) + os=-mmixware + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -os400*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -tpf*) + vendor=ibm + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/Cpp/TP7_Rip/configure.in b/Cpp/TP7_Rip/configure.in new file mode 100755 index 0000000..dd549ce --- /dev/null +++ b/Cpp/TP7_Rip/configure.in @@ -0,0 +1,10 @@ +AC_INIT(configure.in) + +AM_CONFIG_HEADER(config.h) +AM_INIT_AUTOMAKE(tp7, 0.1) + +AC_LANG_CPLUSPLUS +AC_PROG_CXX +AM_PROG_LIBTOOL + +AC_OUTPUT(Makefile src/Makefile) diff --git a/Cpp/TP7_Rip/data/test_network.txt b/Cpp/TP7_Rip/data/test_network.txt new file mode 100755 index 0000000..d194863 --- /dev/null +++ b/Cpp/TP7_Rip/data/test_network.txt @@ -0,0 +1,10 @@ +A B +A C +B D +C D +C E +C F +D E +D H +D F +F G \ No newline at end of file diff --git a/Cpp/TP7_Rip/depcomp b/Cpp/TP7_Rip/depcomp new file mode 100755 index 0000000..4c20c6c --- /dev/null +++ b/Cpp/TP7_Rip/depcomp @@ -0,0 +1,441 @@ +#! /bin/sh + +# depcomp - compile a program generating dependencies as side-effects +# Copyright 1999, 2000 Free Software Foundation, Inc. + +# 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, 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., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Alexandre Oliva . + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +fi +# `libtool' can also be set to `yes' or `no'. + +depfile=${depfile-`echo "$object" | sed 's,\([^/]*\)$,.deps/\1,;s/\.\([^.]*\)$/.P\1/'`} +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. + "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz +## The second -e expression handles DOS-style file names with drive letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the `deleted header file' problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. + tr ' ' ' +' < "$tmpdepfile" | +## Some versions of gcc put a space before the `:'. On the theory +## that the space means something, we add a space to the output as +## well. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like `#:fec' to the end of the + # dependency line. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ + tr ' +' ' ' >> $depfile + echo >> $depfile + + # The second pass generates a dummy entry for each header file. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> $depfile + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. This file always lives in the current directory. + # Also, the AIX compiler puts `$object:' at the start of each line; + # $object doesn't have directory information. + stripped=`echo "$object" | sed -e 's,^.*/,,' -e 's/\(.*\)\..*$/\1/'` + tmpdepfile="$stripped.u" + outname="$stripped.o" + if test "$libtool" = yes; then + "$@" -Wc,-M + else + "$@" -M + fi + + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + + if test -f "$tmpdepfile"; then + # Each line is of the form `foo.o: dependent.h'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" + sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +icc) + # Must come before tru64. + + # Intel's C compiler understands `-MD -MF file'. However + # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c + # will fill foo.d with something like + # foo.o: sub/foo.c + # foo.o: sub/foo.h + # which is wrong. We want: + # sub/foo.o: sub/foo.c + # sub/foo.o: sub/foo.h + # sub/foo.c: + # sub/foo.h: + + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each line is of the form `foo.o: dependent.h'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed -e "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + sed -e "s,^[^:]*: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" + rm -f "$tmpdepfile" + ;; + +tru64) + # The Tru64 AIX compiler uses -MD to generate dependencies as a side + # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in `foo.d' instead, so we check for that too. + # Subdirectories are respected. + + tmpdepfile1="$object.d" + tmpdepfile2=`echo "$object" | sed -e 's/.o$/.d/'` + if test "$libtool" = yes; then + "$@" -Wc,-MD + else + "$@" -MD + fi + + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" + exit $stat + fi + + if test -f "$tmpdepfile1"; then + tmpdepfile="$tmpdepfile1" + else + tmpdepfile="$tmpdepfile2" + fi + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" + # That's a space and a tab in the []. + sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" + else + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the proprocessed file to stdout, regardless of -o, + # because we must use -o when running libtool. + test -z "$dashmflag" && dashmflag=-M + ( IFS=" " + case " $* " in + *" --mode=compile "*) # this is libtool, let us make it quiet + for arg + do # cycle over the arguments + case "$arg" in + "--mode=compile") + # insert --quiet before "--mode=compile" + set fnord "$@" --quiet + shift # fnord + ;; + esac + set fnord "$@" "$arg" + shift # fnord + shift # "$arg" + done + ;; + esac + "$@" $dashmflag | sed 's:^[^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" + ) & + proc=$! + "$@" + stat=$? + wait "$proc" + if test "$stat" != 0; then exit $stat; fi + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + tr ' ' ' +' < "$tmpdepfile" | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + # X makedepend + ( + shift + cleared=no + for arg in "$@"; do + case $cleared in no) + set ""; shift + cleared=yes + esac + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift;; + -*) + ;; + *) + set fnord "$@" "$arg"; shift;; + esac + done + obj_suffix="`echo $object | sed 's/^.*\././'`" + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} 2>/dev/null -o"$obj_suffix" -f"$tmpdepfile" "$@" + ) & + proc=$! + "$@" + stat=$? + wait "$proc" + if test "$stat" != 0; then exit $stat; fi + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + tail +3 "$tmpdepfile" | tr ' ' ' +' | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the proprocessed file to stdout, regardless of -o, + # because we must use -o when running libtool. + ( IFS=" " + case " $* " in + *" --mode=compile "*) + for arg + do # cycle over the arguments + case $arg in + "--mode=compile") + # insert --quiet before "--mode=compile" + set fnord "$@" --quiet + shift # fnord + ;; + esac + set fnord "$@" "$arg" + shift # fnord + shift # "$arg" + done + ;; + esac + "$@" -E | + sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | + sed '$ s: \\$::' > "$tmpdepfile" + ) & + proc=$! + "$@" + stat=$? + wait "$proc" + if test "$stat" != 0; then exit $stat; fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the proprocessed file to stdout, regardless of -o, + # because we must use -o when running libtool. + ( IFS=" " + case " $* " in + *" --mode=compile "*) + for arg + do # cycle over the arguments + case $arg in + "--mode=compile") + # insert --quiet before "--mode=compile" + set fnord "$@" --quiet + shift # fnord + ;; + esac + set fnord "$@" "$arg" + shift # fnord + shift # "$arg" + done + ;; + esac + "$@" -E | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" + ) & + proc=$! + "$@" + stat=$? + wait "$proc" + if test "$stat" != 0; then exit $stat; fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" + echo " " >> "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 diff --git a/Cpp/TP7_Rip/install-sh b/Cpp/TP7_Rip/install-sh new file mode 100755 index 0000000..36f96f3 --- /dev/null +++ b/Cpp/TP7_Rip/install-sh @@ -0,0 +1,276 @@ +#!/bin/sh +# +# install - install a program, script, or datafile +# This comes from X11R5 (mit/util/scripts/install.sh). +# +# Copyright 1991 by the Massachusetts Institute of Technology +# +# Permission to use, copy, modify, distribute, and sell this software and its +# documentation for any purpose is hereby granted without fee, provided that +# the above copyright notice appear in all copies and that both that +# copyright notice and this permission notice appear in supporting +# documentation, and that the name of M.I.T. not be used in advertising or +# publicity pertaining to distribution of the software without specific, +# written prior permission. M.I.T. makes no representations about the +# suitability of this software for any purpose. It is provided "as is" +# without express or implied warranty. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. It can only install one file at a time, a restriction +# shared with many OS's install programs. + + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" + + +# put in absolute paths if you don't have them in your path; or use env. vars. + +mvprog="${MVPROG-mv}" +cpprog="${CPPROG-cp}" +chmodprog="${CHMODPROG-chmod}" +chownprog="${CHOWNPROG-chown}" +chgrpprog="${CHGRPPROG-chgrp}" +stripprog="${STRIPPROG-strip}" +rmprog="${RMPROG-rm}" +mkdirprog="${MKDIRPROG-mkdir}" + +transformbasename="" +transform_arg="" +instcmd="$mvprog" +chmodcmd="$chmodprog 0755" +chowncmd="" +chgrpcmd="" +stripcmd="" +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src="" +dst="" +dir_arg="" + +while [ x"$1" != x ]; do + case $1 in + -c) instcmd=$cpprog + shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -m) chmodcmd="$chmodprog $2" + shift + shift + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + -s) stripcmd=$stripprog + shift + continue;; + + -t=*) transformarg=`echo $1 | sed 's/-t=//'` + shift + continue;; + + -b=*) transformbasename=`echo $1 | sed 's/-b=//'` + shift + continue;; + + *) if [ x"$src" = x ] + then + src=$1 + else + # this colon is to work around a 386BSD /bin/sh bug + : + dst=$1 + fi + shift + continue;; + esac +done + +if [ x"$src" = x ] +then + echo "$0: no input file specified" >&2 + exit 1 +else + : +fi + +if [ x"$dir_arg" != x ]; then + dst=$src + src="" + + if [ -d "$dst" ]; then + instcmd=: + chmodcmd="" + else + instcmd=$mkdirprog + fi +else + +# Waiting for this to be detected by the "$instcmd $src $dsttmp" command +# might cause directories to be created, which would be especially bad +# if $src (and thus $dsttmp) contains '*'. + + if [ -f "$src" ] || [ -d "$src" ] + then + : + else + echo "$0: $src does not exist" >&2 + exit 1 + fi + + if [ x"$dst" = x ] + then + echo "$0: no destination specified" >&2 + exit 1 + else + : + fi + +# If destination is a directory, append the input filename; if your system +# does not like double slashes in filenames, you may need to add some logic + + if [ -d "$dst" ] + then + dst=$dst/`basename "$src"` + else + : + fi +fi + +## this sed command emulates the dirname command +dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` + +# Make sure that the destination directory exists. +# this part is taken from Noah Friedman's mkinstalldirs script + +# Skip lots of stat calls in the usual case. +if [ ! -d "$dstdir" ]; then +defaultIFS=' + ' +IFS="${IFS-$defaultIFS}" + +oIFS=$IFS +# Some sh's can't handle IFS=/ for some reason. +IFS='%' +set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'` +IFS=$oIFS + +pathcomp='' + +while [ $# -ne 0 ] ; do + pathcomp=$pathcomp$1 + shift + + if [ ! -d "$pathcomp" ] ; + then + $mkdirprog "$pathcomp" + else + : + fi + + pathcomp=$pathcomp/ +done +fi + +if [ x"$dir_arg" != x ] +then + $doit $instcmd "$dst" && + + if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dst"; else : ; fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dst"; else : ; fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dst"; else : ; fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dst"; else : ; fi +else + +# If we're going to rename the final executable, determine the name now. + + if [ x"$transformarg" = x ] + then + dstfile=`basename "$dst"` + else + dstfile=`basename "$dst" $transformbasename | + sed $transformarg`$transformbasename + fi + +# don't allow the sed command to completely eliminate the filename + + if [ x"$dstfile" = x ] + then + dstfile=`basename "$dst"` + else + : + fi + +# Make a couple of temp file names in the proper directory. + + dsttmp=$dstdir/#inst.$$# + rmtmp=$dstdir/#rm.$$# + +# Trap to clean up temp files at exit. + + trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0 + trap '(exit $?); exit' 1 2 13 15 + +# Move or copy the file name to the temp name + + $doit $instcmd "$src" "$dsttmp" && + +# and set any options; do chmod last to preserve setuid bits + +# If any of these fail, we abort the whole thing. If we want to +# ignore errors from any of these, just make sure not to ignore +# errors from the above "$doit $instcmd $src $dsttmp" command. + + if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dsttmp"; else :;fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dsttmp"; else :;fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dsttmp"; else :;fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dsttmp"; else :;fi && + +# Now remove or move aside any old file at destination location. We try this +# two ways since rm can't unlink itself on some systems and the destination +# file might be busy for other reasons. In this case, the final cleanup +# might fail but the new file should still install successfully. + +{ + if [ -f "$dstdir/$dstfile" ] + then + $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null || + $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null || + { + echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2 + (exit 1); exit + } + else + : + fi +} && + +# Now rename the file to the real destination. + + $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" + +fi && + +# The final little trick to "correctly" pass the exit status to the exit trap. + +{ + (exit 0); exit +} diff --git a/Cpp/TP7_Rip/ltmain.sh b/Cpp/TP7_Rip/ltmain.sh new file mode 100755 index 0000000..8f7a6ac --- /dev/null +++ b/Cpp/TP7_Rip/ltmain.sh @@ -0,0 +1,6971 @@ +# ltmain.sh - Provide generalized library-building support services. +# NOTE: Changing this file will not affect anything until you rerun configure. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# Originally by Gordon Matzigkeit , 1996 +# +# 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. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +basename="s,^.*/,,g" + +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +# is ksh but when the shell is invoked as "sh" and the current value of +# the _XPG environment variable is not equal to 1 (one), the special +# positional parameter $0, within a function call, is the name of the +# function. +progpath="$0" + +# define SED for historic ltconfig's generated by Libtool 1.3 +test -z "$SED" && SED=sed + +# The name of this program: +progname=`echo "$progpath" | $SED $basename` +modename="$progname" + +# Global variables: +EXIT_SUCCESS=0 +EXIT_FAILURE=1 + +PROGRAM=ltmain.sh +PACKAGE=libtool +VERSION=1.5.22 +TIMESTAMP=" (1.1220.2.365 2005/12/18 22:14:06)" + +# See if we are running on zsh, and set the options which allow our +# commands through without removal of \ escapes. +if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi +# Same for EGREP, and just to be sure, do LTCC as well +if test "X$EGREP" = X ; then + EGREP=egrep +fi +if test "X$LTCC" = X ; then + LTCC=${CC-gcc} +fi + +# Check that we have a working $echo. +if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then + # Yippee, $echo works! + : +else + # Restart under the correct shell, and then maybe $echo will work. + exec $SHELL "$progpath" --no-reexec ${1+"$@"} +fi + +if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift + cat <&2 + $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 + exit $EXIT_FAILURE +fi + +# Global variables. +mode=$default_mode +nonopt= +prev= +prevopt= +run= +show="$echo" +show_help= +execute_dlfiles= +duplicate_deps=no +preserve_args= +lo2o="s/\\.lo\$/.${objext}/" +o2lo="s/\\.${objext}\$/.lo/" + +if test -z "$max_cmd_len"; then + i=0 + testring="ABCD" + new_result= + + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while (test "X"`$SHELL $0 --fallback-echo "X$testring" 2>/dev/null` \ + = "XX$testring") >/dev/null 2>&1 && + new_result=`expr "X$testring" : ".*" 2>&1` && + max_cmd_len="$new_result" && + test "$i" != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + testring="$testring$testring" + done + testring= + # Add a significant safety factor because C++ compilers can tack on massive + # amounts of additional arguments before passing them to the linker. + # It appears as though 1/2 is a usable value. + max_cmd_len=`expr $max_cmd_len \/ 2` +fi + +##################################### +# Shell function definitions: +# This seems to be the best place for them + +# func_mktempdir [string] +# Make a temporary directory that won't clash with other running +# libtool processes, and avoids race conditions if possible. If +# given, STRING is the basename for that directory. +func_mktempdir () +{ + my_template="${TMPDIR-/tmp}/${1-$progname}" + + if test "$run" = ":"; then + # Return a directory name, but don't create it in dry-run mode + my_tmpdir="${my_template}-$$" + else + + # If mktemp works, use that first and foremost + my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` + + if test ! -d "$my_tmpdir"; then + # Failing that, at least try and use $RANDOM to avoid a race + my_tmpdir="${my_template}-${RANDOM-0}$$" + + save_mktempdir_umask=`umask` + umask 0077 + $mkdir "$my_tmpdir" + umask $save_mktempdir_umask + fi + + # If we're not in dry-run mode, bomb out on failure + test -d "$my_tmpdir" || { + $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2 + exit $EXIT_FAILURE + } + fi + + $echo "X$my_tmpdir" | $Xsed +} + + +# func_win32_libid arg +# return the library type of file 'arg' +# +# Need a lot of goo to handle *both* DLLs and import libs +# Has to be a shell function in order to 'eat' the argument +# that is supplied when $file_magic_command is called. +func_win32_libid () +{ + win32_libid_type="unknown" + win32_fileres=`file -L $1 2>/dev/null` + case $win32_fileres in + *ar\ archive\ import\ library*) # definitely import + win32_libid_type="x86 archive import" + ;; + *ar\ archive*) # could be an import, or static + if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \ + $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then + win32_nmres=`eval $NM -f posix -A $1 | \ + $SED -n -e '1,100{/ I /{s,.*,import,;p;q;};}'` + case $win32_nmres in + import*) win32_libid_type="x86 archive import";; + *) win32_libid_type="x86 archive static";; + esac + fi + ;; + *DLL*) + win32_libid_type="x86 DLL" + ;; + *executable*) # but shell scripts are "executable" too... + case $win32_fileres in + *MS\ Windows\ PE\ Intel*) + win32_libid_type="x86 DLL" + ;; + esac + ;; + esac + $echo $win32_libid_type +} + + +# func_infer_tag arg +# Infer tagged configuration to use if any are available and +# if one wasn't chosen via the "--tag" command line option. +# Only attempt this if the compiler in the base compile +# command doesn't match the default compiler. +# arg is usually of the form 'gcc ...' +func_infer_tag () +{ + if test -n "$available_tags" && test -z "$tagname"; then + CC_quoted= + for arg in $CC; do + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + CC_quoted="$CC_quoted $arg" + done + case $@ in + # Blanks in the command may have been stripped by the calling shell, + # but not from the CC environment variable when configure was run. + " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;; + # Blanks at the start of $base_compile will cause this to fail + # if we don't check for them as well. + *) + for z in $available_tags; do + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then + # Evaluate the configuration. + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" + CC_quoted= + for arg in $CC; do + # Double-quote args containing other shell metacharacters. + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + CC_quoted="$CC_quoted $arg" + done + # user sometimes does CC=-gcc so we need to match that to 'gcc' + trimedcc=`echo ${CC} | $SED -e "s/${host}-//g"` + # and sometimes libtool has CC=-gcc but user does CC=gcc + extendcc=${host}-${CC} + # and sometimes libtool has CC=-gcc but user has CC=-gcc + # (Gentoo-specific hack because we always export $CHOST) + mungedcc=${CHOST-${host}}-${trimedcc} + case "$@ " in + "cc "* | " cc "* | "${host}-cc "* | " ${host}-cc "*|\ + "gcc "* | " gcc "* | "${host}-gcc "* | " ${host}-gcc "*) + tagname=CC + break ;; + "$trimedcc "* | " $trimedcc "* | "`$echo $trimedcc` "* | " `$echo $trimedcc` "*|\ + "$extendcc "* | " $extendcc "* | "`$echo $extendcc` "* | " `$echo $extendcc` "*|\ + "$mungedcc "* | " $mungedcc "* | "`$echo $mungedcc` "* | " `$echo $mungedcc` "*|\ + " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) + # The compiler in the base compile command matches + # the one in the tagged configuration. + # Assume this is the tagged configuration we want. + tagname=$z + break + ;; + esac + fi + done + # If $tagname still isn't set, then no tagged configuration + # was found and let the user know that the "--tag" command + # line option must be used. + if test -z "$tagname"; then + $echo "$modename: unable to infer tagged configuration" + $echo "$modename: specify a tag with \`--tag'" 1>&2 + exit $EXIT_FAILURE +# else +# $echo "$modename: using $tagname tagged configuration" + fi + ;; + esac + fi +} + + +# func_extract_an_archive dir oldlib +func_extract_an_archive () +{ + f_ex_an_ar_dir="$1"; shift + f_ex_an_ar_oldlib="$1" + + $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)" + $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $? + if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then + : + else + $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2 + exit $EXIT_FAILURE + fi +} + +# func_extract_archives gentop oldlib ... +func_extract_archives () +{ + my_gentop="$1"; shift + my_oldlibs=${1+"$@"} + my_oldobjs="" + my_xlib="" + my_xabs="" + my_xdir="" + my_status="" + + $show "${rm}r $my_gentop" + $run ${rm}r "$my_gentop" + $show "$mkdir $my_gentop" + $run $mkdir "$my_gentop" + my_status=$? + if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then + exit $my_status + fi + + for my_xlib in $my_oldlibs; do + # Extract the objects. + case $my_xlib in + [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; + *) my_xabs=`pwd`"/$my_xlib" ;; + esac + my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'` + my_xdir="$my_gentop/$my_xlib" + + $show "${rm}r $my_xdir" + $run ${rm}r "$my_xdir" + $show "$mkdir $my_xdir" + $run $mkdir "$my_xdir" + exit_status=$? + if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then + exit $exit_status + fi + case $host in + *-darwin*) + $show "Extracting $my_xabs" + # Do not bother doing anything if just a dry run + if test -z "$run"; then + darwin_orig_dir=`pwd` + cd $my_xdir || exit $? + darwin_archive=$my_xabs + darwin_curdir=`pwd` + darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'` + darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null` + if test -n "$darwin_arches"; then + darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'` + darwin_arch= + $show "$darwin_base_archive has multiple architectures $darwin_arches" + for darwin_arch in $darwin_arches ; do + mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}" + lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" + cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" + func_extract_an_archive "`pwd`" "${darwin_base_archive}" + cd "$darwin_curdir" + $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" + done # $darwin_arches + ## Okay now we have a bunch of thin objects, gotta fatten them up :) + darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP` + darwin_file= + darwin_files= + for darwin_file in $darwin_filelist; do + darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` + lipo -create -output "$darwin_file" $darwin_files + done # $darwin_filelist + ${rm}r unfat-$$ + cd "$darwin_orig_dir" + else + cd "$darwin_orig_dir" + func_extract_an_archive "$my_xdir" "$my_xabs" + fi # $darwin_arches + fi # $run + ;; + *) + func_extract_an_archive "$my_xdir" "$my_xabs" + ;; + esac + my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` + done + func_extract_archives_result="$my_oldobjs" +} +# End of Shell function definitions +##################################### + +# Darwin sucks +eval std_shrext=\"$shrext_cmds\" + +disable_libs=no + +# Parse our command line options once, thoroughly. +while test "$#" -gt 0 +do + arg="$1" + shift + + case $arg in + -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; + *) optarg= ;; + esac + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + execute_dlfiles) + execute_dlfiles="$execute_dlfiles $arg" + ;; + tag) + tagname="$arg" + preserve_args="${preserve_args}=$arg" + + # Check whether tagname contains only valid characters + case $tagname in + *[!-_A-Za-z0-9,/]*) + $echo "$progname: invalid tag name: $tagname" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + case $tagname in + CC) + # Don't test for the "default" C tag, as we know, it's there, but + # not specially marked. + ;; + *) + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then + taglist="$taglist $tagname" + # Evaluate the configuration. + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`" + else + $echo "$progname: ignoring unknown tag $tagname" 1>&2 + fi + ;; + esac + ;; + *) + eval "$prev=\$arg" + ;; + esac + + prev= + prevopt= + continue + fi + + # Have we seen a non-optional argument yet? + case $arg in + --help) + show_help=yes + ;; + + --version) + $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP" + $echo + $echo "Copyright (C) 2005 Free Software Foundation, Inc." + $echo "This is free software; see the source for copying conditions. There is NO" + $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + exit $? + ;; + + --config) + ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath + # Now print the configurations for the tags. + for tagname in $taglist; do + ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath" + done + exit $? + ;; + + --debug) + $echo "$progname: enabling shell trace mode" + set -x + preserve_args="$preserve_args $arg" + ;; + + --dry-run | -n) + run=: + ;; + + --features) + $echo "host: $host" + if test "$build_libtool_libs" = yes; then + $echo "enable shared libraries" + else + $echo "disable shared libraries" + fi + if test "$build_old_libs" = yes; then + $echo "enable static libraries" + else + $echo "disable static libraries" + fi + exit $? + ;; + + --finish) mode="finish" ;; + + --mode) prevopt="--mode" prev=mode ;; + --mode=*) mode="$optarg" ;; + + --preserve-dup-deps) duplicate_deps="yes" ;; + + --quiet | --silent) + show=: + preserve_args="$preserve_args $arg" + ;; + + --tag) + prevopt="--tag" + prev=tag + preserve_args="$preserve_args --tag" + ;; + --tag=*) + set tag "$optarg" ${1+"$@"} + shift + prev=tag + preserve_args="$preserve_args --tag" + ;; + + -dlopen) + prevopt="-dlopen" + prev=execute_dlfiles + ;; + + -*) + $echo "$modename: unrecognized option \`$arg'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + + *) + nonopt="$arg" + break + ;; + esac +done + +if test -n "$prevopt"; then + $echo "$modename: option \`$prevopt' requires an argument" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE +fi + +case $disable_libs in +no) + ;; +shared) + build_libtool_libs=no + build_old_libs=yes + ;; +static) + build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` + ;; +esac + +# If this variable is set in any of the actions, the command in it +# will be execed at the end. This prevents here-documents from being +# left over by shells. +exec_cmd= + +if test -z "$show_help"; then + + # Infer the operation mode. + if test -z "$mode"; then + $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2 + $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2 + case $nonopt in + *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*) + mode=link + for arg + do + case $arg in + -c) + mode=compile + break + ;; + esac + done + ;; + *db | *dbx | *strace | *truss) + mode=execute + ;; + *install*|cp|mv) + mode=install + ;; + *rm) + mode=uninstall + ;; + *) + # If we have no mode, but dlfiles were specified, then do execute mode. + test -n "$execute_dlfiles" && mode=execute + + # Just use the default operation mode. + if test -z "$mode"; then + if test -n "$nonopt"; then + $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 + else + $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 + fi + fi + ;; + esac + fi + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$execute_dlfiles" && test "$mode" != execute; then + $echo "$modename: unrecognized option \`-dlopen'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Change the help message to a mode-specific one. + generic_help="$help" + help="Try \`$modename --help --mode=$mode' for more information." + + # These modes are in order of execution frequency so that they run quickly. + case $mode in + # libtool compile mode + compile) + modename="$modename: compile" + # Get the compilation command and the source file. + base_compile= + srcfile="$nonopt" # always keep a non-empty value in "srcfile" + suppress_opt=yes + suppress_output= + arg_mode=normal + libobj= + later= + + for arg + do + case $arg_mode in + arg ) + # do not "continue". Instead, add this to base_compile + lastarg="$arg" + arg_mode=normal + ;; + + target ) + libobj="$arg" + arg_mode=normal + continue + ;; + + normal ) + # Accept any command-line options. + case $arg in + -o) + if test -n "$libobj" ; then + $echo "$modename: you cannot specify \`-o' more than once" 1>&2 + exit $EXIT_FAILURE + fi + arg_mode=target + continue + ;; + + -static | -prefer-pic | -prefer-non-pic) + later="$later $arg" + continue + ;; + + -no-suppress) + suppress_opt=no + continue + ;; + + -Xcompiler) + arg_mode=arg # the next one goes into the "base_compile" arg list + continue # The current "srcfile" will either be retained or + ;; # replaced later. I would guess that would be a bug. + + -Wc,*) + args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` + lastarg= + save_ifs="$IFS"; IFS=',' + for arg in $args; do + IFS="$save_ifs" + + # Double-quote args containing other shell metacharacters. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + lastarg="$lastarg $arg" + done + IFS="$save_ifs" + lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` + + # Add the arguments to base_compile. + base_compile="$base_compile $lastarg" + continue + ;; + + * ) + # Accept the current argument as the source file. + # The previous "srcfile" becomes the current argument. + # + lastarg="$srcfile" + srcfile="$arg" + ;; + esac # case $arg + ;; + esac # case $arg_mode + + # Aesthetically quote the previous argument. + lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` + + case $lastarg in + # Double-quote args containing other shell metacharacters. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, and some SunOS ksh mistreat backslash-escaping + # in scan sets (worked around with variable expansion), + # and furthermore cannot handle '|' '&' '(' ')' in scan sets + # at all, so we specify them separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + lastarg="\"$lastarg\"" + ;; + esac + + base_compile="$base_compile $lastarg" + done # for arg + + case $arg_mode in + arg) + $echo "$modename: you must specify an argument for -Xcompile" + exit $EXIT_FAILURE + ;; + target) + $echo "$modename: you must specify a target with \`-o'" 1>&2 + exit $EXIT_FAILURE + ;; + *) + # Get the name of the library object. + [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` + ;; + esac + + # Recognize several different file suffixes. + # If the user specifies -o file.o, it is replaced with file.lo + xform='[cCFSifmso]' + case $libobj in + *.ada) xform=ada ;; + *.adb) xform=adb ;; + *.ads) xform=ads ;; + *.asm) xform=asm ;; + *.c++) xform=c++ ;; + *.cc) xform=cc ;; + *.ii) xform=ii ;; + *.class) xform=class ;; + *.cpp) xform=cpp ;; + *.cxx) xform=cxx ;; + *.f90) xform=f90 ;; + *.for) xform=for ;; + *.java) xform=java ;; + esac + + libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` + + case $libobj in + *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; + *) + $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + func_infer_tag $base_compile + + for arg in $later; do + case $arg in + -static) + build_old_libs=yes + continue + ;; + + -prefer-pic) + pic_mode=yes + continue + ;; + + -prefer-non-pic) + pic_mode=no + continue + ;; + esac + done + + qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"` + case $qlibobj in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + qlibobj="\"$qlibobj\"" ;; + esac + test "X$libobj" != "X$qlibobj" \ + && $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' &()|`$[]' \ + && $echo "$modename: libobj name \`$libobj' may not contain shell special characters." + objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` + xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$obj"; then + xdir= + else + xdir=$xdir/ + fi + lobj=${xdir}$objdir/$objname + + if test -z "$base_compile"; then + $echo "$modename: you must specify a compilation command" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Delete any leftover library objects. + if test "$build_old_libs" = yes; then + removelist="$obj $lobj $libobj ${libobj}T" + else + removelist="$lobj $libobj ${libobj}T" + fi + + $run $rm $removelist + trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 + + # On Cygwin there's no "real" PIC flag so we must build both object types + case $host_os in + cygwin* | mingw* | pw32* | os2*) + pic_mode=default + ;; + esac + if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then + # non-PIC code in shared libraries is not supported + pic_mode=default + fi + + # Calculate the filename of the output object if compiler does + # not support -o with -c + if test "$compiler_c_o" = no; then + output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} + lockfile="$output_obj.lock" + removelist="$removelist $output_obj $lockfile" + trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 + else + output_obj= + need_locks=no + lockfile= + fi + + # Lock this critical section if it is needed + # We use this script file to make the link, it avoids creating a new file + if test "$need_locks" = yes; then + until $run ln "$srcfile" "$lockfile" 2>/dev/null; do + $show "Waiting for $lockfile to be removed" + sleep 2 + done + elif test "$need_locks" = warn; then + if test -f "$lockfile"; then + $echo "\ +*** ERROR, $lockfile exists and contains: +`cat $lockfile 2>/dev/null` + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit $EXIT_FAILURE + fi + $echo "$srcfile" > "$lockfile" + fi + + if test -n "$fix_srcfile_path"; then + eval srcfile=\"$fix_srcfile_path\" + fi + qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"` + case $qsrcfile in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + qsrcfile="\"$qsrcfile\"" ;; + esac + + $run $rm "$libobj" "${libobj}T" + + # Create a libtool object file (analogous to a ".la" file), + # but don't create it if we're doing a dry run. + test -z "$run" && cat > ${libobj}T </dev/null`" != "X$srcfile"; then + $echo "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed, then go on to compile the next one + if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then + $show "$mv $output_obj $lobj" + if $run $mv $output_obj $lobj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + fi + + # Append the name of the PIC object to the libtool object file. + test -z "$run" && cat >> ${libobj}T <> ${libobj}T </dev/null`" != "X$srcfile"; then + $echo "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed + if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then + $show "$mv $output_obj $obj" + if $run $mv $output_obj $obj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + fi + + # Append the name of the non-PIC object the libtool object file. + # Only append if the libtool object file exists. + test -z "$run" && cat >> ${libobj}T <> ${libobj}T <&2 + fi + if test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + else + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=built + fi + build_libtool_libs=no + build_old_libs=yes + break + ;; + esac + done + + # See if our shared archives depend on static archives. + test -n "$old_archive_from_new_cmds" && build_old_libs=yes + + # Go through the arguments, transforming them on the way. + while test "$#" -gt 0; do + arg="$1" + shift + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test + ;; + *) qarg=$arg ;; + esac + libtool_args="$libtool_args $qarg" + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + output) + compile_command="$compile_command @OUTPUT@" + finalize_command="$finalize_command @OUTPUT@" + ;; + esac + + case $prev in + dlfiles|dlprefiles) + if test "$preload" = no; then + # Add the symbol object into the linking commands. + compile_command="$compile_command @SYMFILE@" + finalize_command="$finalize_command @SYMFILE@" + preload=yes + fi + case $arg in + *.la | *.lo) ;; # We handle these cases below. + force) + if test "$dlself" = no; then + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + self) + if test "$prev" = dlprefiles; then + dlself=yes + elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then + dlself=yes + else + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + *) + if test "$prev" = dlfiles; then + dlfiles="$dlfiles $arg" + else + dlprefiles="$dlprefiles $arg" + fi + prev= + continue + ;; + esac + ;; + expsyms) + export_symbols="$arg" + if test ! -f "$arg"; then + $echo "$modename: symbol file \`$arg' does not exist" + exit $EXIT_FAILURE + fi + prev= + continue + ;; + expsyms_regex) + export_symbols_regex="$arg" + prev= + continue + ;; + inst_prefix) + inst_prefix_dir="$arg" + prev= + continue + ;; + precious_regex) + precious_files_regex="$arg" + prev= + continue + ;; + release) + release="-$arg" + prev= + continue + ;; + objectlist) + if test -f "$arg"; then + save_arg=$arg + moreargs= + for fil in `cat $save_arg` + do +# moreargs="$moreargs $fil" + arg=$fil + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + pic_object= + non_pic_object= + + # Read the .lo file + # If there is no directory component, then add one. + case $arg in + */* | *\\*) . $arg ;; + *) . ./$arg ;; + esac + + if test -z "$pic_object" || \ + test -z "$non_pic_object" || + test "$pic_object" = none && \ + test "$non_pic_object" = none; then + $echo "$modename: cannot find name of object for \`$arg'" 1>&2 + exit $EXIT_FAILURE + fi + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + dlfiles="$dlfiles $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles="$dlprefiles $pic_object" + prev= + fi + + # A PIC object. + libobjs="$libobjs $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + non_pic_objects="$non_pic_objects $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object="$pic_object" + non_pic_objects="$non_pic_objects $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if test -z "$run"; then + $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 + exit $EXIT_FAILURE + else + # Dry-run case. + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` + non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` + libobjs="$libobjs $pic_object" + non_pic_objects="$non_pic_objects $non_pic_object" + fi + fi + done + else + $echo "$modename: link input file \`$save_arg' does not exist" + exit $EXIT_FAILURE + fi + arg=$save_arg + prev= + continue + ;; + rpath | xrpath) + # We need an absolute path. + case $arg in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + $echo "$modename: only absolute run-paths are allowed" 1>&2 + exit $EXIT_FAILURE + ;; + esac + if test "$prev" = rpath; then + case "$rpath " in + *" $arg "*) ;; + *) rpath="$rpath $arg" ;; + esac + else + case "$xrpath " in + *" $arg "*) ;; + *) xrpath="$xrpath $arg" ;; + esac + fi + prev= + continue + ;; + xcompiler) + compiler_flags="$compiler_flags $qarg" + prev= + compile_command="$compile_command $qarg" + finalize_command="$finalize_command $qarg" + continue + ;; + xlinker) + linker_flags="$linker_flags $qarg" + compiler_flags="$compiler_flags $wl$qarg" + prev= + compile_command="$compile_command $wl$qarg" + finalize_command="$finalize_command $wl$qarg" + continue + ;; + xcclinker) + linker_flags="$linker_flags $qarg" + compiler_flags="$compiler_flags $qarg" + prev= + compile_command="$compile_command $qarg" + finalize_command="$finalize_command $qarg" + continue + ;; + shrext) + shrext_cmds="$arg" + prev= + continue + ;; + darwin_framework|darwin_framework_skip) + test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg" + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + prev= + continue + ;; + *) + eval "$prev=\"\$arg\"" + prev= + continue + ;; + esac + fi # test -n "$prev" + + prevarg="$arg" + + case $arg in + -all-static) + if test -n "$link_static_flag"; then + compile_command="$compile_command $link_static_flag" + finalize_command="$finalize_command $link_static_flag" + fi + continue + ;; + + -allow-undefined) + # FIXME: remove this flag sometime in the future. + $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 + continue + ;; + + -avoid-version) + avoid_version=yes + continue + ;; + + -dlopen) + prev=dlfiles + continue + ;; + + -dlpreopen) + prev=dlprefiles + continue + ;; + + -export-dynamic) + export_dynamic=yes + continue + ;; + + -export-symbols | -export-symbols-regex) + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + $echo "$modename: more than one -exported-symbols argument is not allowed" + exit $EXIT_FAILURE + fi + if test "X$arg" = "X-export-symbols"; then + prev=expsyms + else + prev=expsyms_regex + fi + continue + ;; + + -framework|-arch|-isysroot) + case " $CC " in + *" ${arg} ${1} "* | *" ${arg} ${1} "*) + prev=darwin_framework_skip ;; + *) compiler_flags="$compiler_flags $arg" + prev=darwin_framework ;; + esac + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + continue + ;; + + -inst-prefix-dir) + prev=inst_prefix + continue + ;; + + # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* + # so, if we see these flags be careful not to treat them like -L + -L[A-Z][A-Z]*:*) + case $with_gcc/$host in + no/*-*-irix* | /*-*-irix*) + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + ;; + esac + continue + ;; + + -L*) + dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 + absdir="$dir" + notinst_path="$notinst_path $dir" + fi + dir="$absdir" + ;; + esac + case "$deplibs " in + *" -L$dir "*) ;; + *) + deplibs="$deplibs -L$dir" + lib_search_path="$lib_search_path $dir" + ;; + esac + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$dir:"*) ;; + *) dllsearchpath="$dllsearchpath:$dir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + *) dllsearchpath="$dllsearchpath:$testbindir";; + esac + ;; + esac + continue + ;; + + -l*) + if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*) + # These systems don't actually have a C or math library (as such) + continue + ;; + *-*-os2*) + # These systems don't actually have a C library (as such) + test "X$arg" = "X-lc" && continue + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + test "X$arg" = "X-lc" && continue + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C and math libraries are in the System framework + deplibs="$deplibs -framework System" + continue + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + test "X$arg" = "X-lc" && continue + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + test "X$arg" = "X-lc" && continue + ;; + esac + elif test "X$arg" = "X-lc_r"; then + case $host in + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc_r directly, use -pthread flag. + continue + ;; + esac + fi + deplibs="$deplibs $arg" + continue + ;; + + # Tru64 UNIX uses -model [arg] to determine the layout of C++ + # classes, name mangling, and exception handling. + -model) + compile_command="$compile_command $arg" + compiler_flags="$compiler_flags $arg" + finalize_command="$finalize_command $arg" + prev=xcompiler + continue + ;; + + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) + compiler_flags="$compiler_flags $arg" + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + continue + ;; + + -module) + module=yes + continue + ;; + + # -64, -mips[0-9] enable 64-bit mode on the SGI compiler + # -r[0-9][0-9]* specifies the processor on the SGI compiler + # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler + # +DA*, +DD* enable 64-bit mode on the HP compiler + # -q* pass through compiler args for the IBM compiler + # -m* pass through architecture-specific compiler args for GCC + # -m*, -t[45]*, -txscale* pass through architecture-specific + # compiler args for GCC + # -pg pass through profiling flag for GCC + # @file GCC response files + -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*|-pg| \ + -t[45]*|-txscale*|@*) + + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + compiler_flags="$compiler_flags $arg" + continue + ;; + + -shrext) + prev=shrext + continue + ;; + + -no-fast-install) + fast_install=no + continue + ;; + + -no-install) + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + # The PATH hackery in wrapper scripts is required on Windows + # in order for the loader to find any dlls it needs. + $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 + $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 + fast_install=no + ;; + *) no_install=yes ;; + esac + continue + ;; + + -no-undefined) + allow_undefined=no + continue + ;; + + -objectlist) + prev=objectlist + continue + ;; + + -o) prev=output ;; + + -precious-files-regex) + prev=precious_regex + continue + ;; + + -release) + prev=release + continue + ;; + + -rpath) + prev=rpath + continue + ;; + + -R) + prev=xrpath + continue + ;; + + -R*) + dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + $echo "$modename: only absolute run-paths are allowed" 1>&2 + exit $EXIT_FAILURE + ;; + esac + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + continue + ;; + + -static) + # The effects of -static are defined in a previous loop. + # We used to do the same as -all-static on platforms that + # didn't have a PIC flag, but the assumption that the effects + # would be equivalent was wrong. It would break on at least + # Digital Unix and AIX. + continue + ;; + + -thread-safe) + thread_safe=yes + continue + ;; + + -version-info) + prev=vinfo + continue + ;; + -version-number) + prev=vinfo + vinfo_number=yes + continue + ;; + + -Wc,*) + args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + case $flag in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + flag="\"$flag\"" + ;; + esac + arg="$arg $wl$flag" + compiler_flags="$compiler_flags $flag" + done + IFS="$save_ifs" + arg=`$echo "X$arg" | $Xsed -e "s/^ //"` + ;; + + -Wl,*) + args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + case $flag in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + flag="\"$flag\"" + ;; + esac + arg="$arg $wl$flag" + compiler_flags="$compiler_flags $wl$flag" + linker_flags="$linker_flags $flag" + done + IFS="$save_ifs" + arg=`$echo "X$arg" | $Xsed -e "s/^ //"` + ;; + + -Xcompiler) + prev=xcompiler + continue + ;; + + -Xlinker) + prev=xlinker + continue + ;; + + -XCClinker) + prev=xcclinker + continue + ;; + + # Some other compiler flag. + -* | +*) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + ;; + + *.$objext) + # A standard object. + objs="$objs $arg" + ;; + + *.lo) + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + pic_object= + non_pic_object= + + # Read the .lo file + # If there is no directory component, then add one. + case $arg in + */* | *\\*) . $arg ;; + *) . ./$arg ;; + esac + + if test -z "$pic_object" || \ + test -z "$non_pic_object" || + test "$pic_object" = none && \ + test "$non_pic_object" = none; then + $echo "$modename: cannot find name of object for \`$arg'" 1>&2 + exit $EXIT_FAILURE + fi + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + dlfiles="$dlfiles $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles="$dlprefiles $pic_object" + prev= + fi + + # A PIC object. + libobjs="$libobjs $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + non_pic_objects="$non_pic_objects $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object="$pic_object" + non_pic_objects="$non_pic_objects $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if test -z "$run"; then + $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 + exit $EXIT_FAILURE + else + # Dry-run case. + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` + non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` + libobjs="$libobjs $pic_object" + non_pic_objects="$non_pic_objects $non_pic_object" + fi + fi + ;; + + *.$libext) + # An archive. + deplibs="$deplibs $arg" + old_deplibs="$old_deplibs $arg" + continue + ;; + + *.la) + # A libtool-controlled library. + + if test "$prev" = dlfiles; then + # This library was specified with -dlopen. + dlfiles="$dlfiles $arg" + prev= + elif test "$prev" = dlprefiles; then + # The library was specified with -dlpreopen. + dlprefiles="$dlprefiles $arg" + prev= + else + deplibs="$deplibs $arg" + fi + continue + ;; + + # Some other compiler argument. + *) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + ;; + esac # arg + + # Now actually substitute the argument into the commands. + if test -n "$arg"; then + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + fi + done # argument parsing loop + + if test -n "$prev"; then + $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then + eval arg=\"$export_dynamic_flag_spec\" + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + fi + + oldlibs= + # calculate the name of the file, without its directory + outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` + libobjs_save="$libobjs" + + if test -n "$shlibpath_var"; then + # get the directories listed in $shlibpath_var + eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` + else + shlib_search_path= + fi + eval sys_lib_search_path=\"$sys_lib_search_path_spec\" + eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" + + output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` + if test "X$output_objdir" = "X$output"; then + output_objdir="$objdir" + else + output_objdir="$output_objdir/$objdir" + fi + # Create the object directory. + if test ! -d "$output_objdir"; then + $show "$mkdir $output_objdir" + $run $mkdir $output_objdir + exit_status=$? + if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then + exit $exit_status + fi + fi + + # Determine the type of output + case $output in + "") + $echo "$modename: you must specify an output file" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + *.$libext) linkmode=oldlib ;; + *.lo | *.$objext) linkmode=obj ;; + *.la) linkmode=lib ;; + *) linkmode=prog ;; # Anything else should be a program. + esac + + case $host in + *cygwin* | *mingw* | *pw32*) + # don't eliminate duplications in $postdeps and $predeps + duplicate_compiler_generated_deps=yes + ;; + *) + duplicate_compiler_generated_deps=$duplicate_deps + ;; + esac + specialdeplibs= + + libs= + # Find all interdependent deplibs by searching for libraries + # that are linked more than once (e.g. -la -lb -la) + for deplib in $deplibs; do + if test "X$duplicate_deps" = "Xyes" ; then + case "$libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + libs="$libs $deplib" + done + + if test "$linkmode" = lib; then + libs="$predeps $libs $compiler_lib_search_path $postdeps" + + # Compute libraries that are listed more than once in $predeps + # $postdeps and mark them as special (i.e., whose duplicates are + # not to be eliminated). + pre_post_deps= + if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then + for pre_post_dep in $predeps $postdeps; do + case "$pre_post_deps " in + *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; + esac + pre_post_deps="$pre_post_deps $pre_post_dep" + done + fi + pre_post_deps= + fi + + deplibs= + newdependency_libs= + newlib_search_path= + need_relink=no # whether we're linking any uninstalled libtool libraries + notinst_deplibs= # not-installed libtool libraries + case $linkmode in + lib) + passes="conv link" + for file in $dlfiles $dlprefiles; do + case $file in + *.la) ;; + *) + $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 + exit $EXIT_FAILURE + ;; + esac + done + ;; + prog) + compile_deplibs= + finalize_deplibs= + alldeplibs=no + newdlfiles= + newdlprefiles= + passes="conv scan dlopen dlpreopen link" + ;; + *) passes="conv" + ;; + esac + for pass in $passes; do + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan"; then + libs="$deplibs" + deplibs= + fi + if test "$linkmode" = prog; then + case $pass in + dlopen) libs="$dlfiles" ;; + dlpreopen) libs="$dlprefiles" ;; + link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; + esac + fi + if test "$pass" = dlopen; then + # Collect dlpreopened libraries + save_deplibs="$deplibs" + deplibs= + fi + for deplib in $libs; do + lib= + found=no + case $deplib in + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + compiler_flags="$compiler_flags $deplib" + fi + continue + ;; + -l*) + if test "$linkmode" != lib && test "$linkmode" != prog; then + $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2 + continue + fi + name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` + for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do + for search_ext in .la $std_shrext .so .a; do + # Search the libtool library + lib="$searchdir/lib${name}${search_ext}" + if test -f "$lib"; then + if test "$search_ext" = ".la"; then + found=yes + else + found=no + fi + break 2 + fi + done + done + if test "$found" != yes; then + # deplib doesn't seem to be a libtool library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + else # deplib is a libtool library + # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, + # We need to do some special things here, and not later. + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $deplib "*) + if (${SED} -e '2q' $lib | + grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + library_names= + old_library= + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + for l in $old_library $library_names; do + ll="$l" + done + if test "X$ll" = "X$old_library" ; then # only static version available + found=no + ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` + test "X$ladir" = "X$lib" && ladir="." + lib=$ladir/$old_library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + fi + ;; + *) ;; + esac + fi + fi + ;; # -l + -L*) + case $linkmode in + lib) + deplibs="$deplib $deplibs" + test "$pass" = conv && continue + newdependency_libs="$deplib $newdependency_libs" + newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` + ;; + prog) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + if test "$pass" = scan; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` + ;; + *) + $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2 + ;; + esac # linkmode + continue + ;; # -L + -R*) + if test "$pass" = link; then + dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` + # Make sure the xrpath contains only unique directories. + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + fi + deplibs="$deplib $deplibs" + continue + ;; + *.la) lib="$deplib" ;; + *.$libext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + case $linkmode in + lib) + valid_a_lib=no + case $deplibs_check_method in + match_pattern*) + set dummy $deplibs_check_method + match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` + if eval $echo \"$deplib\" 2>/dev/null \ + | $SED 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + valid_a_lib=yes + fi + ;; + pass_all) + valid_a_lib=yes + ;; + esac + if test "$valid_a_lib" != yes; then + $echo + $echo "*** Warning: Trying to link with static lib archive $deplib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have" + $echo "*** because the file extensions .$libext of this argument makes me believe" + $echo "*** that it is just a static archive that I should not used here." + else + $echo + $echo "*** Warning: Linking the shared library $output against the" + $echo "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" + fi + continue + ;; + prog) + if test "$pass" != link; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + continue + ;; + esac # linkmode + ;; # *.$libext + *.lo | *.$objext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + elif test "$linkmode" = prog; then + if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then + # If there is no dlopen support or we're linking statically, + # we need to preload. + newdlprefiles="$newdlprefiles $deplib" + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + newdlfiles="$newdlfiles $deplib" + fi + fi + continue + ;; + %DEPLIBS%) + alldeplibs=yes + continue + ;; + esac # case $deplib + if test "$found" = yes || test -f "$lib"; then : + else + $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2 + exit $EXIT_FAILURE + fi + + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + + ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` + test "X$ladir" = "X$lib" && ladir="." + + dlname= + dlopen= + dlpreopen= + libdir= + library_names= + old_library= + # If the library was installed with an old release of libtool, + # it will not redefine variables installed, or shouldnotlink + installed=yes + shouldnotlink=no + avoidtemprpath= + + + # Read the .la file + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan" || + { test "$linkmode" != prog && test "$linkmode" != lib; }; then + test -n "$dlopen" && dlfiles="$dlfiles $dlopen" + test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" + fi + + if test "$pass" = conv; then + # Only check for convenience libraries + deplibs="$lib $deplibs" + if test -z "$libdir"; then + if test -z "$old_library"; then + $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + # It is a libtool convenience library, so add in its objects. + convenience="$convenience $ladir/$objdir/$old_library" + old_convenience="$old_convenience $ladir/$objdir/$old_library" + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done + elif test "$linkmode" != prog && test "$linkmode" != lib; then + $echo "$modename: \`$lib' is not a convenience library" 1>&2 + exit $EXIT_FAILURE + fi + continue + fi # $pass = conv + + + # Get the name of the library we link against. + linklib= + for l in $old_library $library_names; do + linklib="$l" + done + if test -z "$linklib"; then + $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + + # This library was specified with -dlopen. + if test "$pass" = dlopen; then + if test -z "$libdir"; then + $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + if test -z "$dlname" || + test "$dlopen_support" != yes || + test "$build_libtool_libs" = no; then + # If there is no dlname, no dlopen support or we're linking + # statically, we need to preload. We also need to preload any + # dependent libraries so libltdl's deplib preloader doesn't + # bomb out in the load deplibs phase. + dlprefiles="$dlprefiles $lib $dependency_libs" + else + newdlfiles="$newdlfiles $lib" + fi + continue + fi # $pass = dlopen + + # We need an absolute path. + case $ladir in + [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; + *) + abs_ladir=`cd "$ladir" && pwd` + if test -z "$abs_ladir"; then + $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2 + $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 + abs_ladir="$ladir" + fi + ;; + esac + laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + + # Find the relevant object directory and library name. + if test "X$installed" = Xyes; then + if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then + $echo "$modename: warning: library \`$lib' was moved." 1>&2 + dir="$ladir" + absdir="$abs_ladir" + libdir="$abs_ladir" + else + dir="$libdir" + absdir="$libdir" + fi + test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes + else + if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then + dir="$ladir" + absdir="$abs_ladir" + # Remove this search path later + notinst_path="$notinst_path $abs_ladir" + else + dir="$ladir/$objdir" + absdir="$abs_ladir/$objdir" + # Remove this search path later + notinst_path="$notinst_path $abs_ladir" + fi + fi # $installed = yes + name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` + + # This library was specified with -dlpreopen. + if test "$pass" = dlpreopen; then + if test -z "$libdir"; then + $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). + if test -n "$old_library"; then + newdlprefiles="$newdlprefiles $dir/$old_library" + # Otherwise, use the dlname, so that lt_dlopen finds it. + elif test -n "$dlname"; then + newdlprefiles="$newdlprefiles $dir/$dlname" + else + newdlprefiles="$newdlprefiles $dir/$linklib" + fi + fi # $pass = dlpreopen + + if test -z "$libdir"; then + # Link the convenience library + if test "$linkmode" = lib; then + deplibs="$dir/$old_library $deplibs" + elif test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$dir/$old_library $compile_deplibs" + finalize_deplibs="$dir/$old_library $finalize_deplibs" + else + deplibs="$lib $deplibs" # used for prog,scan pass + fi + continue + fi + + + if test "$linkmode" = prog && test "$pass" != link; then + newlib_search_path="$newlib_search_path $ladir" + deplibs="$lib $deplibs" + + linkalldeplibs=no + if test "$link_all_deplibs" != no || test -z "$library_names" || + test "$build_libtool_libs" = no; then + linkalldeplibs=yes + fi + + tmp_libs= + for deplib in $dependency_libs; do + case $deplib in + -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test + esac + # Need to link against all dependency_libs? + if test "$linkalldeplibs" = yes; then + deplibs="$deplib $deplibs" + else + # Need to hardcode shared library paths + # or/and link against static libraries + newdependency_libs="$deplib $newdependency_libs" + fi + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done # for deplib + continue + fi # $linkmode = prog... + + if test "$linkmode,$pass" = "prog,link"; then + if test -n "$library_names" && + { test "$prefer_static_libs" = no || test -z "$old_library"; }; then + # We need to hardcode the library path + if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then + # Make sure the rpath contains only unique directories. + case "$temp_rpath " in + *" $dir "*) ;; + *" $absdir "*) ;; + *) temp_rpath="$temp_rpath $absdir" ;; + esac + fi + + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) compile_rpath="$compile_rpath $absdir" + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" + esac + ;; + esac + fi # $linkmode,$pass = prog,link... + + if test "$alldeplibs" = yes && + { test "$deplibs_check_method" = pass_all || + { test "$build_libtool_libs" = yes && + test -n "$library_names"; }; }; then + # We only need to search for static libraries + continue + fi + fi + + link_static=no # Whether the deplib will be linked statically + use_static_libs=$prefer_static_libs + if test "$use_static_libs" = built && test "$installed" = yes ; then + use_static_libs=no + fi + if test -n "$library_names" && + { test "$use_static_libs" = no || test -z "$old_library"; }; then + if test "$installed" = no; then + notinst_deplibs="$notinst_deplibs $lib" + need_relink=yes + fi + # This is a shared library + + # Warn about portability, can't link against -module's on + # some systems (darwin) + if test "$shouldnotlink" = yes && test "$pass" = link ; then + $echo + if test "$linkmode" = prog; then + $echo "*** Warning: Linking the executable $output against the loadable module" + else + $echo "*** Warning: Linking the shared library $output against the loadable module" + fi + $echo "*** $linklib is not portable!" + fi + if test "$linkmode" = lib && + test "$hardcode_into_libs" = yes; then + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) compile_rpath="$compile_rpath $absdir" + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" + esac + ;; + esac + fi + + if test -n "$old_archive_from_expsyms_cmds"; then + # figure out the soname + set dummy $library_names + realname="$2" + shift; shift + libname=`eval \\$echo \"$libname_spec\"` + # use dlname if we got it. it's perfectly good, no? + if test -n "$dlname"; then + soname="$dlname" + elif test -n "$soname_spec"; then + # bleh windows + case $host in + *cygwin* | mingw*) + major=`expr $current - $age` + versuffix="-$major" + ;; + esac + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + + # Make a new name for the extract_expsyms_cmds to use + soroot="$soname" + soname=`$echo $soroot | ${SED} -e 's/^.*\///'` + newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a" + + # If the library has no export list, then create one now + if test -f "$output_objdir/$soname-def"; then : + else + $show "extracting exported symbol list from \`$soname'" + save_ifs="$IFS"; IFS='~' + cmds=$extract_expsyms_cmds + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + + # Create $newlib + if test -f "$output_objdir/$newlib"; then :; else + $show "generating import library for \`$soname'" + save_ifs="$IFS"; IFS='~' + cmds=$old_archive_from_expsyms_cmds + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + # make sure the library variables are pointing to the new library + dir=$output_objdir + linklib=$newlib + fi # test -n "$old_archive_from_expsyms_cmds" + + if test "$linkmode" = prog || test "$mode" != relink; then + add_shlibpath= + add_dir= + add= + lib_linked=yes + case $hardcode_action in + immediate | unsupported) + if test "$hardcode_direct" = no; then + add="$dir/$linklib" + case $host in + *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; + *-*-sysv4*uw2*) add_dir="-L$dir" ;; + *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ + *-*-unixware7*) add_dir="-L$dir" ;; + *-*-darwin* ) + # if the lib is a module then we can not link against + # it, someone is ignoring the new warnings I added + if /usr/bin/file -L $add 2> /dev/null | + $EGREP ": [^:]* bundle" >/dev/null ; then + $echo "** Warning, lib $linklib is a module, not a shared library" + if test -z "$old_library" ; then + $echo + $echo "** And there doesn't seem to be a static archive available" + $echo "** The link will probably fail, sorry" + else + add="$dir/$old_library" + fi + fi + esac + elif test "$hardcode_minus_L" = no; then + case $host in + *-*-sunos*) add_shlibpath="$dir" ;; + esac + add_dir="-L$dir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = no; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + relink) + if test "$hardcode_direct" = yes; then + add="$dir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$dir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + add_dir="$add_dir -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + *) lib_linked=no ;; + esac + + if test "$lib_linked" != yes; then + $echo "$modename: configuration error: unsupported hardcode properties" + exit $EXIT_FAILURE + fi + + if test -n "$add_shlibpath"; then + case :$compile_shlibpath: in + *":$add_shlibpath:"*) ;; + *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; + esac + fi + if test "$linkmode" = prog; then + test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" + test -n "$add" && compile_deplibs="$add $compile_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + if test "$hardcode_direct" != yes && \ + test "$hardcode_minus_L" != yes && \ + test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + esac + fi + fi + fi + + if test "$linkmode" = prog || test "$mode" = relink; then + add_shlibpath= + add_dir= + add= + # Finalize command for both is simple: just hardcode it. + if test "$hardcode_direct" = yes; then + add="$libdir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$libdir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + esac + add="-l$name" + elif test "$hardcode_automatic" = yes; then + if test -n "$inst_prefix_dir" && + test -f "$inst_prefix_dir$libdir/$linklib" ; then + add="$inst_prefix_dir$libdir/$linklib" + else + add="$libdir/$linklib" + fi + else + # We cannot seem to hardcode it, guess we'll fake it. + add_dir="-L$libdir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + add_dir="$add_dir -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + fi + + if test "$linkmode" = prog; then + test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" + test -n "$add" && finalize_deplibs="$add $finalize_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + fi + fi + elif test "$linkmode" = prog; then + # Here we assume that one of hardcode_direct or hardcode_minus_L + # is not unsupported. This is valid on all known static and + # shared platforms. + if test "$hardcode_direct" != unsupported; then + test -n "$old_library" && linklib="$old_library" + compile_deplibs="$dir/$linklib $compile_deplibs" + finalize_deplibs="$dir/$linklib $finalize_deplibs" + else + compile_deplibs="-l$name -L$dir $compile_deplibs" + finalize_deplibs="-l$name -L$dir $finalize_deplibs" + fi + elif test "$build_libtool_libs" = yes; then + # Not a shared library + if test "$deplibs_check_method" != pass_all; then + # We're trying link a shared library against a static one + # but the system doesn't support it. + + # Just print a warning and add the library to dependency_libs so + # that the program can be linked against the static library. + $echo + $echo "*** Warning: This system can not link to static lib archive $lib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have." + if test "$module" = yes; then + $echo "*** But as you try to build a module library, libtool will still create " + $echo "*** a static module, that should work as long as the dlopening application" + $echo "*** is linked with the -dlopen flag to resolve symbols at runtime." + if test -z "$global_symbol_pipe"; then + $echo + $echo "*** However, this would only work if libtool was able to extract symbol" + $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + $echo "*** not find such a program. So, this module is probably useless." + $echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + else + deplibs="$dir/$old_library $deplibs" + link_static=yes + fi + fi # link shared/static library? + + if test "$linkmode" = lib; then + if test -n "$dependency_libs" && + { test "$hardcode_into_libs" != yes || + test "$build_old_libs" = yes || + test "$link_static" = yes; }; then + # Extract -R from dependency_libs + temp_deplibs= + for libdir in $dependency_libs; do + case $libdir in + -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'` + case " $xrpath " in + *" $temp_xrpath "*) ;; + *) xrpath="$xrpath $temp_xrpath";; + esac;; + *) temp_deplibs="$temp_deplibs $libdir";; + esac + done + dependency_libs="$temp_deplibs" + fi + + newlib_search_path="$newlib_search_path $absdir" + # Link against this library + test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" + # ... and its dependency_libs + tmp_libs= + for deplib in $dependency_libs; do + newdependency_libs="$deplib $newdependency_libs" + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done + + if test "$link_all_deplibs" != no; then + # Add the search paths of all dependency libraries + for deplib in $dependency_libs; do + case $deplib in + -L*) path="$deplib" ;; + *.la) + dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$deplib" && dir="." + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 + absdir="$dir" + fi + ;; + esac + if grep "^installed=no" $deplib > /dev/null; then + path="$absdir/$objdir" + else + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + if test -z "$libdir"; then + $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + if test "$absdir" != "$libdir"; then + $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 + fi + path="$absdir" + fi + depdepl= + case $host in + *-*-darwin*) + # we do not want to link against static libs, + # but need to link against shared + eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` + if test -n "$deplibrary_names" ; then + for tmp in $deplibrary_names ; do + depdepl=$tmp + done + if test -f "$path/$depdepl" ; then + depdepl="$path/$depdepl" + fi + # do not add paths which are already there + case " $newlib_search_path " in + *" $path "*) ;; + *) newlib_search_path="$newlib_search_path $path";; + esac + fi + path="" + ;; + *) + path="-L$path" + ;; + esac + ;; + -l*) + case $host in + *-*-darwin*) + # Again, we only want to link against shared libraries + eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"` + for tmp in $newlib_search_path ; do + if test -f "$tmp/lib$tmp_libs.dylib" ; then + eval depdepl="$tmp/lib$tmp_libs.dylib" + break + fi + done + path="" + ;; + *) continue ;; + esac + ;; + *) continue ;; + esac + case " $deplibs " in + *" $path "*) ;; + *) deplibs="$path $deplibs" ;; + esac + case " $deplibs " in + *" $depdepl "*) ;; + *) deplibs="$depdepl $deplibs" ;; + esac + done + fi # link_all_deplibs != no + fi # linkmode = lib + done # for deplib in $libs + dependency_libs="$newdependency_libs" + if test "$pass" = dlpreopen; then + # Link the dlpreopened libraries before other libraries + for deplib in $save_deplibs; do + deplibs="$deplib $deplibs" + done + fi + if test "$pass" != dlopen; then + if test "$pass" != conv; then + # Make sure lib_search_path contains only unique directories. + lib_search_path= + for dir in $newlib_search_path; do + case "$lib_search_path " in + *" $dir "*) ;; + *) lib_search_path="$lib_search_path $dir" ;; + esac + done + newlib_search_path= + fi + + if test "$linkmode,$pass" != "prog,link"; then + vars="deplibs" + else + vars="compile_deplibs finalize_deplibs" + fi + for var in $vars dependency_libs; do + # Add libraries to $var in reverse order + eval tmp_libs=\"\$$var\" + new_libs= + for deplib in $tmp_libs; do + # FIXME: Pedantically, this is the right thing to do, so + # that some nasty dependency loop isn't accidentally + # broken: + #new_libs="$deplib $new_libs" + # Pragmatically, this seems to cause very few problems in + # practice: + case $deplib in + -L*) new_libs="$deplib $new_libs" ;; + -R*) ;; + *) + # And here is the reason: when a library appears more + # than once as an explicit dependence of a library, or + # is implicitly linked in more than once by the + # compiler, it is considered special, and multiple + # occurrences thereof are not removed. Compare this + # with having the same library being listed as a + # dependency of multiple other libraries: in this case, + # we know (pedantically, we assume) the library does not + # need to be listed more than once, so we keep only the + # last copy. This is not always right, but it is rare + # enough that we require users that really mean to play + # such unportable linking tricks to link the library + # using -Wl,-lname, so that libtool does not consider it + # for duplicate removal. + case " $specialdeplibs " in + *" $deplib "*) new_libs="$deplib $new_libs" ;; + *) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$deplib $new_libs" ;; + esac + ;; + esac + ;; + esac + done + tmp_libs= + for deplib in $new_libs; do + case $deplib in + -L*) + case " $tmp_libs " in + *" $deplib "*) ;; + *) tmp_libs="$tmp_libs $deplib" ;; + esac + ;; + *) tmp_libs="$tmp_libs $deplib" ;; + esac + done + eval $var=\"$tmp_libs\" + done # for var + fi + # Last step: remove runtime libs from dependency_libs + # (they stay in deplibs) + tmp_libs= + for i in $dependency_libs ; do + case " $predeps $postdeps $compiler_lib_search_path " in + *" $i "*) + i="" + ;; + esac + if test -n "$i" ; then + tmp_libs="$tmp_libs $i" + fi + done + dependency_libs=$tmp_libs + done # for pass + if test "$linkmode" = prog; then + dlfiles="$newdlfiles" + dlprefiles="$newdlprefiles" + fi + + case $linkmode in + oldlib) + if test -n "$deplibs"; then + $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 + fi + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 + fi + + if test -n "$rpath"; then + $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 + fi + + if test -n "$xrpath"; then + $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 + fi + + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 + fi + + # Now set the variables for building old libraries. + build_libtool_libs=no + oldlibs="$output" + objs="$objs$old_deplibs" + ;; + + lib) + # Make sure we only generate libraries of the form `libNAME.la'. + case $outputname in + lib*) + name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + ;; + *) + if test "$module" = no; then + $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + if test "$need_lib_prefix" != no; then + # Add the "lib" prefix for modules if required + name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + else + libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` + fi + ;; + esac + + if test -n "$objs"; then + if test "$deplibs_check_method" != pass_all; then + $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 + exit $EXIT_FAILURE + else + $echo + $echo "*** Warning: Linking the shared library $output against the non-libtool" + $echo "*** objects $objs is not portable!" + libobjs="$libobjs $objs" + fi + fi + + if test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2 + fi + + set dummy $rpath + if test "$#" -gt 2; then + $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 + fi + install_libdir="$2" + + oldlibs= + if test -z "$rpath"; then + if test "$build_libtool_libs" = yes; then + # Building a libtool convenience library. + # Some compilers have problems with a `.al' extension so + # convenience libraries should have the same extension an + # archive normally would. + oldlibs="$output_objdir/$libname.$libext $oldlibs" + build_libtool_libs=convenience + build_old_libs=yes + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 + fi + else + + # Parse the version information argument. + save_ifs="$IFS"; IFS=':' + set dummy $vinfo 0 0 0 + IFS="$save_ifs" + + if test -n "$8"; then + $echo "$modename: too many parameters to \`-version-info'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # convert absolute version numbers to libtool ages + # this retains compatibility with .la files and attempts + # to make the code below a bit more comprehensible + + case $vinfo_number in + yes) + number_major="$2" + number_minor="$3" + number_revision="$4" + # + # There are really only two kinds -- those that + # use the current revision as the major version + # and those that subtract age and use age as + # a minor version. But, then there is irix + # which has an extra 1 added just for fun + # + case $version_type in + darwin|linux|osf|windows) + current=`expr $number_major + $number_minor` + age="$number_minor" + revision="$number_revision" + ;; + freebsd-aout|freebsd-elf|sunos) + current="$number_major" + revision="$number_minor" + age="0" + ;; + irix|nonstopux) + current=`expr $number_major + $number_minor - 1` + age="$number_minor" + revision="$number_minor" + ;; + esac + ;; + no) + current="$2" + revision="$3" + age="$4" + ;; + esac + + # Check that each of the things are valid numbers. + case $current in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + case $revision in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + case $age in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + if test "$age" -gt "$current"; then + $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + fi + + # Calculate the version variables. + major= + versuffix= + verstring= + case $version_type in + none) ;; + + darwin) + # Like Linux, but with the current version available in + # verstring for coding it into the library header + major=.`expr $current - $age` + versuffix="$major.$age.$revision" + # Darwin ld doesn't like 0 for these options... + minor_current=`expr $current + 1` + verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" + ;; + + freebsd-aout) + major=".$current" + versuffix=".$current.$revision"; + ;; + + freebsd-elf) + major=".$current" + versuffix=".$current"; + ;; + + irix | nonstopux) + major=`expr $current - $age + 1` + + case $version_type in + nonstopux) verstring_prefix=nonstopux ;; + *) verstring_prefix=sgi ;; + esac + verstring="$verstring_prefix$major.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$revision + while test "$loop" -ne 0; do + iface=`expr $revision - $loop` + loop=`expr $loop - 1` + verstring="$verstring_prefix$major.$iface:$verstring" + done + + # Before this point, $major must not contain `.'. + major=.$major + versuffix="$major.$revision" + ;; + + linux) + major=.`expr $current - $age` + versuffix="$major.$age.$revision" + ;; + + osf) + major=.`expr $current - $age` + versuffix=".$current.$age.$revision" + verstring="$current.$age.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$age + while test "$loop" -ne 0; do + iface=`expr $current - $loop` + loop=`expr $loop - 1` + verstring="$verstring:${iface}.0" + done + + # Make executables depend on our current version. + verstring="$verstring:${current}.0" + ;; + + sunos) + major=".$current" + versuffix=".$current.$revision" + ;; + + windows) + # Use '-' rather than '.', since we only want one + # extension on DOS 8.3 filesystems. + major=`expr $current - $age` + versuffix="-$major" + ;; + + *) + $echo "$modename: unknown library version type \`$version_type'" 1>&2 + $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 + exit $EXIT_FAILURE + ;; + esac + + # Clear the version info if we defaulted, and they specified a release. + if test -z "$vinfo" && test -n "$release"; then + major= + case $version_type in + darwin) + # we can't check for "0.0" in archive_cmds due to quoting + # problems, so we reset it completely + verstring= + ;; + *) + verstring="0.0" + ;; + esac + if test "$need_version" = no; then + versuffix= + else + versuffix=".0.0" + fi + fi + + # Remove version info from name if versioning should be avoided + if test "$avoid_version" = yes && test "$need_version" = no; then + major= + versuffix= + verstring="" + fi + + # Check to see if the archive will have undefined symbols. + if test "$allow_undefined" = yes; then + if test "$allow_undefined_flag" = unsupported; then + $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 + build_libtool_libs=no + build_old_libs=yes + fi + else + # Don't allow undefined symbols. + allow_undefined_flag="$no_undefined_flag" + fi + fi + + if test "$mode" != relink; then + # Remove our outputs, but don't remove object files since they + # may have been created when compiling PIC objects. + removelist= + tempremovelist=`$echo "$output_objdir/*"` + for p in $tempremovelist; do + case $p in + *.$objext) + ;; + $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) + if test "X$precious_files_regex" != "X"; then + if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 + then + continue + fi + fi + removelist="$removelist $p" + ;; + *) ;; + esac + done + if test -n "$removelist"; then + $show "${rm}r $removelist" + $run ${rm}r $removelist + fi + fi + + # Now set the variables for building old libraries. + if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then + oldlibs="$oldlibs $output_objdir/$libname.$libext" + + # Transform .lo files to .o files. + oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` + fi + + # Eliminate all temporary directories. + for path in $notinst_path; do + lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"` + deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"` + dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"` + done + + if test -n "$xrpath"; then + # If the user specified any rpath flags, then add them. + temp_xrpath= + for libdir in $xrpath; do + temp_xrpath="$temp_xrpath -R$libdir" + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done + if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then + dependency_libs="$temp_xrpath $dependency_libs" + fi + fi + + # Make sure dlfiles contains only unique files that won't be dlpreopened + old_dlfiles="$dlfiles" + dlfiles= + for lib in $old_dlfiles; do + case " $dlprefiles $dlfiles " in + *" $lib "*) ;; + *) dlfiles="$dlfiles $lib" ;; + esac + done + + # Make sure dlprefiles contains only unique files + old_dlprefiles="$dlprefiles" + dlprefiles= + for lib in $old_dlprefiles; do + case "$dlprefiles " in + *" $lib "*) ;; + *) dlprefiles="$dlprefiles $lib" ;; + esac + done + + if test "$build_libtool_libs" = yes; then + if test -n "$rpath"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) + # these systems don't actually have a c library (as such)! + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C library is in the System framework + deplibs="$deplibs -framework System" + ;; + *-*-netbsd*) + # Don't link with libc until the a.out ld.so is fixed. + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + ;; + *) + # Add libc to deplibs on all other systems if necessary. + if test "$build_libtool_need_lc" = "yes"; then + deplibs="$deplibs -lc" + fi + ;; + esac + fi + + # Transform deplibs into only deplibs that can be linked in shared. + name_save=$name + libname_save=$libname + release_save=$release + versuffix_save=$versuffix + major_save=$major + # I'm not sure if I'm treating the release correctly. I think + # release should show up in the -l (ie -lgmp5) so we don't want to + # add it in twice. Is that correct? + release="" + versuffix="" + major="" + newdeplibs= + droppeddeps=no + case $deplibs_check_method in + pass_all) + # Don't check for shared/static. Everything works. + # This might be a little naive. We might want to check + # whether the library exists or not. But this is on + # osf3 & osf4 and I'm not really sure... Just + # implementing what was already the behavior. + newdeplibs=$deplibs + ;; + test_compile) + # This code stresses the "libraries are programs" paradigm to its + # limits. Maybe even breaks it. We compile a program, linking it + # against the deplibs as a proxy for the library. Then we can check + # whether they linked in statically or dynamically with ldd. + $rm conftest.c + cat > conftest.c </dev/null` + for potent_lib in $potential_libs; do + # Follow soft links. + if ls -lLd "$potent_lib" 2>/dev/null \ + | grep " -> " >/dev/null; then + continue + fi + # The statement above tries to avoid entering an + # endless loop below, in case of cyclic links. + # We might still enter an endless loop, since a link + # loop can be closed while we follow links, + # but so what? + potlib="$potent_lib" + while test -h "$potlib" 2>/dev/null; do + potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` + case $potliblink in + [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; + *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; + esac + done + # It is ok to link against an archive when + # building a shared library. + if $AR -t $potlib > /dev/null 2>&1; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ + | ${SED} 10q \ + | $EGREP "$file_magic_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + $echo + $echo "*** Warning: linker path does not have real file for library $a_deplib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have" + $echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $echo "*** with $libname but no candidates were found. (...for file magic test)" + else + $echo "*** with $libname and none of the candidates passed a file format test" + $echo "*** using a file magic. Last file checked: $potlib" + fi + fi + else + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + fi + done # Gone through all deplibs. + ;; + match_pattern*) + set dummy $deplibs_check_method + match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` + for a_deplib in $deplibs; do + name=`expr $a_deplib : '-l\(.*\)'` + # If $name is empty we are operating on a -L argument. + if test -n "$name" && test "$name" != "0"; then + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $a_deplib "*) + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + ;; + esac + fi + if test -n "$a_deplib" ; then + libname=`eval \\$echo \"$libname_spec\"` + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do + potential_libs=`ls $i/$libname[.-]* 2>/dev/null` + for potent_lib in $potential_libs; do + potlib="$potent_lib" # see symlink-check above in file_magic test + if eval $echo \"$potent_lib\" 2>/dev/null \ + | ${SED} 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + $echo + $echo "*** Warning: linker path does not have real file for library $a_deplib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have" + $echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $echo "*** with $libname but no candidates were found. (...for regex pattern test)" + else + $echo "*** with $libname and none of the candidates passed a file format test" + $echo "*** using a regex pattern. Last file checked: $potlib" + fi + fi + else + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + fi + done # Gone through all deplibs. + ;; + none | unknown | *) + newdeplibs="" + tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ + -e 's/ -[LR][^ ]*//g'` + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + for i in $predeps $postdeps ; do + # can't use Xsed below, because $i might contain '/' + tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"` + done + fi + if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \ + | grep . >/dev/null; then + $echo + if test "X$deplibs_check_method" = "Xnone"; then + $echo "*** Warning: inter-library dependencies are not supported in this platform." + else + $echo "*** Warning: inter-library dependencies are not known to be supported." + fi + $echo "*** All declared inter-library dependencies are being dropped." + droppeddeps=yes + fi + ;; + esac + versuffix=$versuffix_save + major=$major_save + release=$release_save + libname=$libname_save + name=$name_save + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` + ;; + esac + + if test "$droppeddeps" = yes; then + if test "$module" = yes; then + $echo + $echo "*** Warning: libtool could not satisfy all declared inter-library" + $echo "*** dependencies of module $libname. Therefore, libtool will create" + $echo "*** a static module, that should work as long as the dlopening" + $echo "*** application is linked with the -dlopen flag." + if test -z "$global_symbol_pipe"; then + $echo + $echo "*** However, this would only work if libtool was able to extract symbol" + $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + $echo "*** not find such a program. So, this module is probably useless." + $echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + else + $echo "*** The inter-library dependencies that have been dropped here will be" + $echo "*** automatically added whenever a program is linked with this library" + $echo "*** or is declared to -dlopen it." + + if test "$allow_undefined" = no; then + $echo + $echo "*** Since this library must not contain undefined symbols," + $echo "*** because either the platform does not support them or" + $echo "*** it was explicitly requested with -no-undefined," + $echo "*** libtool will only create a static version of it." + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + fi + fi + # Done checking deplibs! + deplibs=$newdeplibs + fi + + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $deplibs " in + *" -L$path/$objdir "*) + new_libs="$new_libs -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$new_libs $deplib" ;; + esac + ;; + *) new_libs="$new_libs $deplib" ;; + esac + done + deplibs="$new_libs" + + + # All the library-specific variables (install_libdir is set above). + library_names= + old_library= + dlname= + + # Test again, we may have decided not to build it any more + if test "$build_libtool_libs" = yes; then + if test "$hardcode_into_libs" = yes; then + # Hardcode the library paths + hardcode_libdirs= + dep_rpath= + rpath="$finalize_rpath" + test "$mode" != relink && rpath="$compile_rpath$rpath" + for libdir in $rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + dep_rpath="$dep_rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + if test -n "$hardcode_libdir_flag_spec_ld"; then + eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" + else + eval dep_rpath=\"$hardcode_libdir_flag_spec\" + fi + fi + if test -n "$runpath_var" && test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath="$rpath$dir:" + done + eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" + fi + test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" + fi + + shlibpath="$finalize_shlibpath" + test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" + if test -n "$shlibpath"; then + eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" + fi + + # Get the real and link names of the library. + eval shared_ext=\"$shrext_cmds\" + eval library_names=\"$library_names_spec\" + set dummy $library_names + realname="$2" + shift; shift + + if test -n "$soname_spec"; then + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + if test -z "$dlname"; then + dlname=$soname + fi + + lib="$output_objdir/$realname" + linknames= + for link + do + linknames="$linknames $link" + done + + # Use standard objects if they are pic + test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then + $show "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $run $rm $export_symbols + cmds=$export_symbols_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + if len=`expr "X$cmd" : ".*"` && + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then + $show "$cmd" + $run eval "$cmd" || exit $? + skipped_export=false + else + # The command line is too long to execute in one step. + $show "using reloadable object file for export list..." + skipped_export=: + # Break out early, otherwise skipped_export may be + # set to false by a later but shorter cmd. + break + fi + done + IFS="$save_ifs" + if test -n "$export_symbols_regex"; then + $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" + $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + $show "$mv \"${export_symbols}T\" \"$export_symbols\"" + $run eval '$mv "${export_symbols}T" "$export_symbols"' + fi + fi + fi + + if test -n "$export_symbols" && test -n "$include_expsyms"; then + $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' + fi + + tmp_deplibs= + for test_deplib in $deplibs; do + case " $convenience " in + *" $test_deplib "*) ;; + *) + tmp_deplibs="$tmp_deplibs $test_deplib" + ;; + esac + done + deplibs="$tmp_deplibs" + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + else + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + func_extract_archives $gentop $convenience + libobjs="$libobjs $func_extract_archives_result" + fi + fi + + if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then + eval flag=\"$thread_safe_flag_spec\" + linker_flags="$linker_flags $flag" + fi + + # Make a backup of the uninstalled library when relinking + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? + fi + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + eval test_cmds=\"$module_expsym_cmds\" + cmds=$module_expsym_cmds + else + eval test_cmds=\"$module_cmds\" + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + eval test_cmds=\"$archive_expsym_cmds\" + cmds=$archive_expsym_cmds + else + eval test_cmds=\"$archive_cmds\" + cmds=$archive_cmds + fi + fi + + if test "X$skipped_export" != "X:" && + len=`expr "X$test_cmds" : ".*" 2>/dev/null` && + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then + : + else + # The command line is too long to link in one step, link piecewise. + $echo "creating reloadable object files..." + + # Save the value of $output and $libobjs because we want to + # use them later. If we have whole_archive_flag_spec, we + # want to use save_libobjs as it was before + # whole_archive_flag_spec was expanded, because we can't + # assume the linker understands whole_archive_flag_spec. + # This may have to be revisited, in case too many + # convenience libraries get linked in and end up exceeding + # the spec. + if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + fi + save_output=$output + output_la=`$echo "X$output" | $Xsed -e "$basename"` + + # Clear the reloadable object creation command queue and + # initialize k to one. + test_cmds= + concat_cmds= + objlist= + delfiles= + last_robj= + k=1 + output=$output_objdir/$output_la-${k}.$objext + # Loop over the list of objects to be linked. + for obj in $save_libobjs + do + eval test_cmds=\"$reload_cmds $objlist $last_robj\" + if test "X$objlist" = X || + { len=`expr "X$test_cmds" : ".*" 2>/dev/null` && + test "$len" -le "$max_cmd_len"; }; then + objlist="$objlist $obj" + else + # The command $test_cmds is almost too long, add a + # command to the queue. + if test "$k" -eq 1 ; then + # The first file doesn't have a previous command to add. + eval concat_cmds=\"$reload_cmds $objlist $last_robj\" + else + # All subsequent reloadable object files will link in + # the last one created. + eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\" + fi + last_robj=$output_objdir/$output_la-${k}.$objext + k=`expr $k + 1` + output=$output_objdir/$output_la-${k}.$objext + objlist=$obj + len=1 + fi + done + # Handle the remaining objects by creating one last + # reloadable object file. All subsequent reloadable object + # files will link in the last one created. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" + + if ${skipped_export-false}; then + $show "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $run $rm $export_symbols + libobjs=$output + # Append the command to create the export file. + eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\" + fi + + # Set up a command to remove the reloadable object files + # after they are used. + i=0 + while test "$i" -lt "$k" + do + i=`expr $i + 1` + delfiles="$delfiles $output_objdir/$output_la-${i}.$objext" + done + + $echo "creating a temporary reloadable object file: $output" + + # Loop through the commands generated above and execute them. + save_ifs="$IFS"; IFS='~' + for cmd in $concat_cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + + libobjs=$output + # Restore the value of output. + output=$save_output + + if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + fi + # Expand the library linking commands again to reset the + # value of $libobjs for piecewise linking. + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + cmds=$module_expsym_cmds + else + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + cmds=$archive_expsym_cmds + else + cmds=$archive_cmds + fi + fi + + # Append the command to remove the reloadable object files + # to the just-reset $cmds. + eval cmds=\"\$cmds~\$rm $delfiles\" + fi + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' + fi + + exit $lt_exit + } + done + IFS="$save_ifs" + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? + + if test -n "$convenience"; then + if test -z "$whole_archive_flag_spec"; then + $show "${rm}r $gentop" + $run ${rm}r "$gentop" + fi + fi + + exit $EXIT_SUCCESS + fi + + # Create links to the real library. + for linkname in $linknames; do + if test "$realname" != "$linkname"; then + $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" + $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? + fi + done + + # If -module or -export-dynamic was specified, set the dlname. + if test "$module" = yes || test "$export_dynamic" = yes; then + # On all known operating systems, these are identical. + dlname="$soname" + fi + fi + ;; + + obj) + if test -n "$deplibs"; then + $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 + fi + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 + fi + + if test -n "$rpath"; then + $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 + fi + + if test -n "$xrpath"; then + $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 + fi + + case $output in + *.lo) + if test -n "$objs$old_deplibs"; then + $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 + exit $EXIT_FAILURE + fi + libobj="$output" + obj=`$echo "X$output" | $Xsed -e "$lo2o"` + ;; + *) + libobj= + obj="$output" + ;; + esac + + # Delete the old objects. + $run $rm $obj $libobj + + # Objects from convenience libraries. This assumes + # single-version convenience libraries. Whenever we create + # different ones for PIC/non-PIC, this we'll have to duplicate + # the extraction. + reload_conv_objs= + gentop= + # reload_cmds runs $LD directly, so let us get rid of + # -Wl from whole_archive_flag_spec + wl= + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\" + else + gentop="$output_objdir/${obj}x" + generated="$generated $gentop" + + func_extract_archives $gentop $convenience + reload_conv_objs="$reload_objs $func_extract_archives_result" + fi + fi + + # Create the old-style object. + reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test + + output="$obj" + cmds=$reload_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + + # Exit if we aren't doing a library object file. + if test -z "$libobj"; then + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + exit $EXIT_SUCCESS + fi + + if test "$build_libtool_libs" != yes; then + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + # Create an invalid libtool object if no PIC, so that we don't + # accidentally link it into a program. + # $show "echo timestamp > $libobj" + # $run eval "echo timestamp > $libobj" || exit $? + exit $EXIT_SUCCESS + fi + + if test -n "$pic_flag" || test "$pic_mode" != default; then + # Only do commands if we really have different PIC objects. + reload_objs="$libobjs $reload_conv_objs" + output="$libobj" + cmds=$reload_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + exit $EXIT_SUCCESS + ;; + + prog) + case $host in + *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;; + esac + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 + fi + + if test "$preload" = yes; then + if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown && + test "$dlopen_self_static" = unknown; then + $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." + fi + fi + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` + finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` + ;; + esac + + case $host in + *darwin*) + # Don't allow lazy linking, it breaks C++ global constructors + if test "$tagname" = CXX ; then + compile_command="$compile_command ${wl}-bind_at_load" + finalize_command="$finalize_command ${wl}-bind_at_load" + fi + ;; + esac + + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $compile_deplibs " in + *" -L$path/$objdir "*) + new_libs="$new_libs -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $compile_deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$new_libs $deplib" ;; + esac + ;; + *) new_libs="$new_libs $deplib" ;; + esac + done + compile_deplibs="$new_libs" + + + compile_command="$compile_command $compile_deplibs" + finalize_command="$finalize_command $finalize_deplibs" + + if test -n "$rpath$xrpath"; then + # If the user specified any rpath flags, then add them. + for libdir in $rpath $xrpath; do + # This is the magic to use -rpath. + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done + fi + + # Now hardcode the library paths + rpath= + hardcode_libdirs= + for libdir in $compile_rpath $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$libdir:"*) ;; + *) dllsearchpath="$dllsearchpath:$libdir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + *) dllsearchpath="$dllsearchpath:$testbindir";; + esac + ;; + esac + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + compile_rpath="$rpath" + + rpath= + hardcode_libdirs= + for libdir in $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$finalize_perm_rpath " in + *" $libdir "*) ;; + *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + finalize_rpath="$rpath" + + if test -n "$libobjs" && test "$build_old_libs" = yes; then + # Transform all the library objects into standard objects. + compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + fi + + dlsyms= + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + if test -n "$NM" && test -n "$global_symbol_pipe"; then + dlsyms="${outputname}S.c" + else + $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 + fi + fi + + if test -n "$dlsyms"; then + case $dlsyms in + "") ;; + *.c) + # Discover the nlist of each of the dlfiles. + nlist="$output_objdir/${outputname}.nm" + + $show "$rm $nlist ${nlist}S ${nlist}T" + $run $rm "$nlist" "${nlist}S" "${nlist}T" + + # Parse the name list into a source file. + $show "creating $output_objdir/$dlsyms" + + test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ +/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ +/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ + +#ifdef __cplusplus +extern \"C\" { +#endif + +/* Prevent the only kind of declaration conflicts we can make. */ +#define lt_preloaded_symbols some_other_symbol + +/* External symbol declarations for the compiler. */\ +" + + if test "$dlself" = yes; then + $show "generating symbol list for \`$output'" + + test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" + + # Add our own program objects to the symbol list. + progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + for arg in $progfiles; do + $show "extracting global C symbols from \`$arg'" + $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" + done + + if test -n "$exclude_expsyms"; then + $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' + $run eval '$mv "$nlist"T "$nlist"' + fi + + if test -n "$export_symbols_regex"; then + $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' + $run eval '$mv "$nlist"T "$nlist"' + fi + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + export_symbols="$output_objdir/$outputname.exp" + $run $rm $export_symbols + $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + case $host in + *cygwin* | *mingw* ) + $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + $run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' + ;; + esac + else + $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' + $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' + $run eval 'mv "$nlist"T "$nlist"' + case $host in + *cygwin* | *mingw* ) + $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + $run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' + ;; + esac + fi + fi + + for arg in $dlprefiles; do + $show "extracting global C symbols from \`$arg'" + name=`$echo "$arg" | ${SED} -e 's%^.*/%%'` + $run eval '$echo ": $name " >> "$nlist"' + $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" + done + + if test -z "$run"; then + # Make sure we have at least an empty file. + test -f "$nlist" || : > "$nlist" + + if test -n "$exclude_expsyms"; then + $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T + $mv "$nlist"T "$nlist" + fi + + # Try sorting and uniquifying the output. + if grep -v "^: " < "$nlist" | + if sort -k 3 /dev/null 2>&1; then + sort -k 3 + else + sort +2 + fi | + uniq > "$nlist"S; then + : + else + grep -v "^: " < "$nlist" > "$nlist"S + fi + + if test -f "$nlist"S; then + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' + else + $echo '/* NONE */' >> "$output_objdir/$dlsyms" + fi + + $echo >> "$output_objdir/$dlsyms" "\ + +#undef lt_preloaded_symbols + +#if defined (__STDC__) && __STDC__ +# define lt_ptr void * +#else +# define lt_ptr char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +" + + case $host in + *cygwin* | *mingw* ) + $echo >> "$output_objdir/$dlsyms" "\ +/* DATA imports from DLLs on WIN32 can't be const, because + runtime relocations are performed -- see ld's documentation + on pseudo-relocs */ +struct { +" + ;; + * ) + $echo >> "$output_objdir/$dlsyms" "\ +const struct { +" + ;; + esac + + + $echo >> "$output_objdir/$dlsyms" "\ + const char *name; + lt_ptr address; +} +lt_preloaded_symbols[] = +{\ +" + + eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms" + + $echo >> "$output_objdir/$dlsyms" "\ + {0, (lt_ptr) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif\ +" + fi + + pic_flag_for_symtable= + case $host in + # compiling the symbol table file with pic_flag works around + # a FreeBSD bug that causes programs to crash when -lm is + # linked before any other PIC object. But we must not use + # pic_flag when linking with -static. The problem exists in + # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. + *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + case "$compile_command " in + *" -static "*) ;; + *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";; + esac;; + *-*-hpux*) + case "$compile_command " in + *" -static "*) ;; + *) pic_flag_for_symtable=" $pic_flag";; + esac + esac + + # Now compile the dynamic symbol file. + $show "(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" + $run eval '(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? + + # Clean up the generated files. + $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" + $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" + + # Transform the symbol file into the correct name. + case $host in + *cygwin* | *mingw* ) + if test -f "$output_objdir/${outputname}.def" ; then + compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"` + else + compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` + fi + ;; + * ) + compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` + ;; + esac + ;; + *) + $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 + exit $EXIT_FAILURE + ;; + esac + else + # We keep going just in case the user didn't refer to + # lt_preloaded_symbols. The linker will fail if global_symbol_pipe + # really was required. + + # Nullify the symbol file. + compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` + fi + + if test "$need_relink" = no || test "$build_libtool_libs" != yes; then + # Replace the output file specification. + compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + link_command="$compile_command$compile_rpath" + + # We have no uninstalled library dependencies, so finalize right now. + $show "$link_command" + $run eval "$link_command" + exit_status=$? + + # Delete the generated files. + if test -n "$dlsyms"; then + $show "$rm $output_objdir/${outputname}S.${objext}" + $run $rm "$output_objdir/${outputname}S.${objext}" + fi + + exit $exit_status + fi + + if test -n "$shlibpath_var"; then + # We should set the shlibpath_var + rpath= + for dir in $temp_rpath; do + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) + # Absolute path. + rpath="$rpath$dir:" + ;; + *) + # Relative path: add a thisdir entry. + rpath="$rpath\$thisdir/$dir:" + ;; + esac + done + temp_rpath="$rpath" + fi + + if test -n "$compile_shlibpath$finalize_shlibpath"; then + compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" + fi + if test -n "$finalize_shlibpath"; then + finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" + fi + + compile_var= + finalize_var= + if test -n "$runpath_var"; then + if test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath="$rpath$dir:" + done + compile_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + if test -n "$finalize_perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $finalize_perm_rpath; do + rpath="$rpath$dir:" + done + finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + fi + + if test "$no_install" = yes; then + # We don't need to create a wrapper script. + link_command="$compile_var$compile_command$compile_rpath" + # Replace the output file specification. + link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + # Delete the old output file. + $run $rm $output + # Link the executable and exit + $show "$link_command" + $run eval "$link_command" || exit $? + exit $EXIT_SUCCESS + fi + + if test "$hardcode_action" = relink; then + # Fast installation is not supported + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + + $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 + $echo "$modename: \`$output' will be relinked during installation" 1>&2 + else + if test "$fast_install" != no; then + link_command="$finalize_var$compile_command$finalize_rpath" + if test "$fast_install" = yes; then + relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` + else + # fast_install is set to needless + relink_command= + fi + else + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + fi + fi + + # Replace the output file specification. + link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` + + # Delete the old output files. + $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname + + $show "$link_command" + $run eval "$link_command" || exit $? + + # Now create the wrapper script. + $show "creating $output" + + # Quote the relink command for shipping. + if test -n "$relink_command"; then + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` + relink_command="$var=\"$var_value\"; export $var; $relink_command" + fi + done + relink_command="(cd `pwd`; $relink_command)" + relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` + fi + + # Quote $echo for shipping. + if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then + case $progpath in + [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; + *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; + esac + qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` + else + qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` + fi + + # Only actually do things if our run command is non-null. + if test -z "$run"; then + # win32 will think the script is a binary if it has + # a .exe suffix, so we strip it off here. + case $output in + *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;; + esac + # test for cygwin because mv fails w/o .exe extensions + case $host in + *cygwin*) + exeext=.exe + outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;; + *) exeext= ;; + esac + case $host in + *cygwin* | *mingw* ) + output_name=`basename $output` + output_path=`dirname $output` + cwrappersource="$output_path/$objdir/lt-$output_name.c" + cwrapper="$output_path/$output_name.exe" + $rm $cwrappersource $cwrapper + trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 + + cat > $cwrappersource <> $cwrappersource<<"EOF" +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined(PATH_MAX) +# define LT_PATHMAX PATH_MAX +#elif defined(MAXPATHLEN) +# define LT_PATHMAX MAXPATHLEN +#else +# define LT_PATHMAX 1024 +#endif + +#ifndef DIR_SEPARATOR +# define DIR_SEPARATOR '/' +# define PATH_SEPARATOR ':' +#endif + +#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ + defined (__OS2__) +# define HAVE_DOS_BASED_FILE_SYSTEM +# ifndef DIR_SEPARATOR_2 +# define DIR_SEPARATOR_2 '\\' +# endif +# ifndef PATH_SEPARATOR_2 +# define PATH_SEPARATOR_2 ';' +# endif +#endif + +#ifndef DIR_SEPARATOR_2 +# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) +#else /* DIR_SEPARATOR_2 */ +# define IS_DIR_SEPARATOR(ch) \ + (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) +#endif /* DIR_SEPARATOR_2 */ + +#ifndef PATH_SEPARATOR_2 +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) +#else /* PATH_SEPARATOR_2 */ +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) +#endif /* PATH_SEPARATOR_2 */ + +#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) +#define XFREE(stale) do { \ + if (stale) { free ((void *) stale); stale = 0; } \ +} while (0) + +/* -DDEBUG is fairly common in CFLAGS. */ +#undef DEBUG +#if defined DEBUGWRAPPER +# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__) +#else +# define DEBUG(format, ...) +#endif + +const char *program_name = NULL; + +void * xmalloc (size_t num); +char * xstrdup (const char *string); +const char * base_name (const char *name); +char * find_executable(const char *wrapper); +int check_executable(const char *path); +char * strendzap(char *str, const char *pat); +void lt_fatal (const char *message, ...); + +int +main (int argc, char *argv[]) +{ + char **newargz; + int i; + + program_name = (char *) xstrdup (base_name (argv[0])); + DEBUG("(main) argv[0] : %s\n",argv[0]); + DEBUG("(main) program_name : %s\n",program_name); + newargz = XMALLOC(char *, argc+2); +EOF + + cat >> $cwrappersource <> $cwrappersource <<"EOF" + newargz[1] = find_executable(argv[0]); + if (newargz[1] == NULL) + lt_fatal("Couldn't find %s", argv[0]); + DEBUG("(main) found exe at : %s\n",newargz[1]); + /* we know the script has the same name, without the .exe */ + /* so make sure newargz[1] doesn't end in .exe */ + strendzap(newargz[1],".exe"); + for (i = 1; i < argc; i++) + newargz[i+1] = xstrdup(argv[i]); + newargz[argc+1] = NULL; + + for (i=0; i> $cwrappersource <> $cwrappersource <> $cwrappersource <<"EOF" + return 127; +} + +void * +xmalloc (size_t num) +{ + void * p = (void *) malloc (num); + if (!p) + lt_fatal ("Memory exhausted"); + + return p; +} + +char * +xstrdup (const char *string) +{ + return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL +; +} + +const char * +base_name (const char *name) +{ + const char *base; + +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + /* Skip over the disk name in MSDOS pathnames. */ + if (isalpha ((unsigned char)name[0]) && name[1] == ':') + name += 2; +#endif + + for (base = name; *name; name++) + if (IS_DIR_SEPARATOR (*name)) + base = name + 1; + return base; +} + +int +check_executable(const char * path) +{ + struct stat st; + + DEBUG("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!"); + if ((!path) || (!*path)) + return 0; + + if ((stat (path, &st) >= 0) && + ( + /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */ +#if defined (S_IXOTH) + ((st.st_mode & S_IXOTH) == S_IXOTH) || +#endif +#if defined (S_IXGRP) + ((st.st_mode & S_IXGRP) == S_IXGRP) || +#endif + ((st.st_mode & S_IXUSR) == S_IXUSR)) + ) + return 1; + else + return 0; +} + +/* Searches for the full path of the wrapper. Returns + newly allocated full path name if found, NULL otherwise */ +char * +find_executable (const char* wrapper) +{ + int has_slash = 0; + const char* p; + const char* p_next; + /* static buffer for getcwd */ + char tmp[LT_PATHMAX + 1]; + int tmp_len; + char* concat_name; + + DEBUG("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"); + + if ((wrapper == NULL) || (*wrapper == '\0')) + return NULL; + + /* Absolute path? */ +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':') + { + concat_name = xstrdup (wrapper); + if (check_executable(concat_name)) + return concat_name; + XFREE(concat_name); + } + else + { +#endif + if (IS_DIR_SEPARATOR (wrapper[0])) + { + concat_name = xstrdup (wrapper); + if (check_executable(concat_name)) + return concat_name; + XFREE(concat_name); + } +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + } +#endif + + for (p = wrapper; *p; p++) + if (*p == '/') + { + has_slash = 1; + break; + } + if (!has_slash) + { + /* no slashes; search PATH */ + const char* path = getenv ("PATH"); + if (path != NULL) + { + for (p = path; *p; p = p_next) + { + const char* q; + size_t p_len; + for (q = p; *q; q++) + if (IS_PATH_SEPARATOR(*q)) + break; + p_len = q - p; + p_next = (*q == '\0' ? q : q + 1); + if (p_len == 0) + { + /* empty path: current directory */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal ("getcwd failed"); + tmp_len = strlen(tmp); + concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + } + else + { + concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1); + memcpy (concat_name, p, p_len); + concat_name[p_len] = '/'; + strcpy (concat_name + p_len + 1, wrapper); + } + if (check_executable(concat_name)) + return concat_name; + XFREE(concat_name); + } + } + /* not found in PATH; assume curdir */ + } + /* Relative path | not found in path: prepend cwd */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal ("getcwd failed"); + tmp_len = strlen(tmp); + concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + + if (check_executable(concat_name)) + return concat_name; + XFREE(concat_name); + return NULL; +} + +char * +strendzap(char *str, const char *pat) +{ + size_t len, patlen; + + assert(str != NULL); + assert(pat != NULL); + + len = strlen(str); + patlen = strlen(pat); + + if (patlen <= len) + { + str += len - patlen; + if (strcmp(str, pat) == 0) + *str = '\0'; + } + return str; +} + +static void +lt_error_core (int exit_status, const char * mode, + const char * message, va_list ap) +{ + fprintf (stderr, "%s: %s: ", program_name, mode); + vfprintf (stderr, message, ap); + fprintf (stderr, ".\n"); + + if (exit_status >= 0) + exit (exit_status); +} + +void +lt_fatal (const char *message, ...) +{ + va_list ap; + va_start (ap, message); + lt_error_core (EXIT_FAILURE, "FATAL", message, ap); + va_end (ap); +} +EOF + # we should really use a build-platform specific compiler + # here, but OTOH, the wrappers (shell script and this C one) + # are only useful if you want to execute the "real" binary. + # Since the "real" binary is built for $host, then this + # wrapper might as well be built for $host, too. + $run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource + ;; + esac + $rm $output + trap "$rm $output; exit $EXIT_FAILURE" 1 2 15 + + $echo > $output "\ +#! $SHELL + +# $output - temporary wrapper script for $objdir/$outputname +# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP +# +# The $output program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='${SED} -e 1s/^X//' +sed_quote_subst='$sed_quote_subst' + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command=\"$relink_command\" + +# This environment variable determines our operation mode. +if test \"\$libtool_install_magic\" = \"$magic\"; then + # install mode needs the following variable: + notinst_deplibs='$notinst_deplibs' +else + # When we are sourced in execute mode, \$file and \$echo are already set. + if test \"\$libtool_execute_magic\" != \"$magic\"; then + echo=\"$qecho\" + file=\"\$0\" + # Make sure echo works. + if test \"X\$1\" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift + elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then + # Yippee, \$echo works! + : + else + # Restart under the correct shell, and then maybe \$echo will work. + exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} + fi + fi\ +" + $echo >> $output "\ + + # Find the directory that this script lives in. + thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` + + # If there was a directory component, then change thisdir. + if test \"x\$destdir\" != \"x\$file\"; then + case \"\$destdir\" in + [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; + *) thisdir=\"\$thisdir/\$destdir\" ;; + esac + fi + + file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` + done + + # Try to get the absolute directory name. + absdir=\`cd \"\$thisdir\" && pwd\` + test -n \"\$absdir\" && thisdir=\"\$absdir\" +" + + if test "$fast_install" = yes; then + $echo >> $output "\ + program=lt-'$outputname'$exeext + progdir=\"\$thisdir/$objdir\" + + if test ! -f \"\$progdir/\$program\" || \\ + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ + test \"X\$file\" != \"X\$progdir/\$program\"; }; then + + file=\"\$\$-\$program\" + + if test ! -d \"\$progdir\"; then + $mkdir \"\$progdir\" + else + $rm \"\$progdir/\$file\" + fi" + + $echo >> $output "\ + + # relink executable if necessary + if test -n \"\$relink_command\"; then + if relink_command_output=\`eval \$relink_command 2>&1\`; then : + else + $echo \"\$relink_command_output\" >&2 + $rm \"\$progdir/\$file\" + exit $EXIT_FAILURE + fi + fi + + $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || + { $rm \"\$progdir/\$program\"; + $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } + $rm \"\$progdir/\$file\" + fi" + else + $echo >> $output "\ + program='$outputname' + progdir=\"\$thisdir/$objdir\" +" + fi + + $echo >> $output "\ + + if test -f \"\$progdir/\$program\"; then" + + # Export our shlibpath_var if we have one. + if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + $echo >> $output "\ + # Add our own library path to $shlibpath_var + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" + + # Some systems cannot cope with colon-terminated $shlibpath_var + # The second colon is a workaround for a bug in BeOS R4 sed + $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` + + export $shlibpath_var +" + fi + + # fixup the dll searchpath if we need to. + if test -n "$dllsearchpath"; then + $echo >> $output "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + + $echo >> $output "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. + + # Make sure env LD_LIBRARY_PATH does not mess us up + if test -n \"\${LD_LIBRARY_PATH+set}\"; then + export LD_LIBRARY_PATH=\$progdir:\$LD_LIBRARY_PATH + fi +" + case $host in + # Backslashes separate directories on plain windows + *-*-mingw | *-*-os2*) + $echo >> $output "\ + exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} +" + ;; + + *) + $echo >> $output "\ + exec \"\$progdir/\$program\" \${1+\"\$@\"} +" + ;; + esac + $echo >> $output "\ + \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" + exit $EXIT_FAILURE + fi + else + # The program doesn't exist. + \$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 + \$echo \"This script is just a wrapper for \$program.\" 1>&2 + $echo \"See the $PACKAGE documentation for more information.\" 1>&2 + exit $EXIT_FAILURE + fi +fi\ +" + chmod +x $output + fi + exit $EXIT_SUCCESS + ;; + esac + + # See if we need to build an old-fashioned archive. + for oldlib in $oldlibs; do + + if test "$build_libtool_libs" = convenience; then + oldobjs="$libobjs_save" + addlibs="$convenience" + build_libtool_libs=no + else + if test "$build_libtool_libs" = module; then + oldobjs="$libobjs_save" + build_libtool_libs=no + else + oldobjs="$old_deplibs $non_pic_objects" + fi + addlibs="$old_convenience" + fi + + if test -n "$addlibs"; then + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + func_extract_archives $gentop $addlibs + oldobjs="$oldobjs $func_extract_archives_result" + fi + + # Do each command in the archive commands. + if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then + cmds=$old_archive_from_new_cmds + else + # POSIX demands no paths to be encoded in archives. We have + # to avoid creating archives with duplicate basenames if we + # might have to extract them afterwards, e.g., when creating a + # static archive out of a convenience library, or when linking + # the entirety of a libtool archive into another (currently + # not supported by libtool). + if (for obj in $oldobjs + do + $echo "X$obj" | $Xsed -e 's%^.*/%%' + done | sort | sort -uc >/dev/null 2>&1); then + : + else + $echo "copying selected object files to avoid basename conflicts..." + + if test -z "$gentop"; then + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + $show "${rm}r $gentop" + $run ${rm}r "$gentop" + $show "$mkdir $gentop" + $run $mkdir "$gentop" + exit_status=$? + if test "$exit_status" -ne 0 && test ! -d "$gentop"; then + exit $exit_status + fi + fi + + save_oldobjs=$oldobjs + oldobjs= + counter=1 + for obj in $save_oldobjs + do + objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` + case " $oldobjs " in + " ") oldobjs=$obj ;; + *[\ /]"$objbase "*) + while :; do + # Make sure we don't pick an alternate name that also + # overlaps. + newobj=lt$counter-$objbase + counter=`expr $counter + 1` + case " $oldobjs " in + *[\ /]"$newobj "*) ;; + *) if test ! -f "$gentop/$newobj"; then break; fi ;; + esac + done + $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" + $run ln "$obj" "$gentop/$newobj" || + $run cp "$obj" "$gentop/$newobj" + oldobjs="$oldobjs $gentop/$newobj" + ;; + *) oldobjs="$oldobjs $obj" ;; + esac + done + fi + + eval cmds=\"$old_archive_cmds\" + + if len=`expr "X$cmds" : ".*"` && + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then + cmds=$old_archive_cmds + else + # the command line is too long to link in one step, link in parts + $echo "using piecewise archive linking..." + save_RANLIB=$RANLIB + RANLIB=: + objlist= + concat_cmds= + save_oldobjs=$oldobjs + + # Is there a better way of finding the last object in the list? + for obj in $save_oldobjs + do + last_oldobj=$obj + done + for obj in $save_oldobjs + do + oldobjs="$objlist $obj" + objlist="$objlist $obj" + eval test_cmds=\"$old_archive_cmds\" + if len=`expr "X$test_cmds" : ".*" 2>/dev/null` && + test "$len" -le "$max_cmd_len"; then + : + else + # the above command should be used before it gets too long + oldobjs=$objlist + if test "$obj" = "$last_oldobj" ; then + RANLIB=$save_RANLIB + fi + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" + objlist= + fi + done + RANLIB=$save_RANLIB + oldobjs=$objlist + if test "X$oldobjs" = "X" ; then + eval cmds=\"\$concat_cmds\" + else + eval cmds=\"\$concat_cmds~\$old_archive_cmds\" + fi + fi + fi + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + eval cmd=\"$cmd\" + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + done + + if test -n "$generated"; then + $show "${rm}r$generated" + $run ${rm}r$generated + fi + + # Now create the libtool archive. + case $output in + *.la) + old_library= + test "$build_old_libs" = yes && old_library="$libname.$libext" + $show "creating $output" + + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` + relink_command="$var=\"$var_value\"; export $var; $relink_command" + fi + done + # Quote the link command for shipping. + relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" + relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` + if test "$hardcode_automatic" = yes ; then + relink_command= + fi + + + # Only create the output if not a dry run. + if test -z "$run"; then + for installed in no yes; do + if test "$installed" = yes; then + if test -z "$install_libdir"; then + break + fi + output="$output_objdir/$outputname"i + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do + case $deplib in + *.la) + name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + if test -z "$libdir"; then + $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + if test "X$EGREP" = X ; then + EGREP=egrep + fi + # We do not want portage's install root ($D) present. Check only for + # this if the .la is being installed. + if test "$installed" = yes && test "$D"; then + eval mynewdependency_lib=`echo "$libdir/$name" |sed -e "s:$D:/:g" -e 's:/\+:/:g'` + else + mynewdependency_lib="$libdir/$name" + fi + # Do not add duplicates + if test "$mynewdependency_lib"; then + my_little_ninja_foo_1=`echo $newdependency_libs |$EGREP -e "$mynewdependency_lib"` + if test -z "$my_little_ninja_foo_1"; then + newdependency_libs="$newdependency_libs $mynewdependency_lib" + fi + fi + ;; + *) + if test "$installed" = yes; then + # Rather use S=WORKDIR if our version of portage supports it. + # This is because some ebuild (gcc) do not use $S as buildroot. + if test "$PWORKDIR"; then + S="$PWORKDIR" + fi + # We do not want portage's build root ($S) present. + my_little_ninja_foo_2=`echo $deplib |$EGREP -e "$S"` + # We do not want portage's install root ($D) present. + my_little_ninja_foo_3=`echo $deplib |$EGREP -e "$D"` + if test -n "$my_little_ninja_foo_2" && test "$S"; then + mynewdependency_lib="" + elif test -n "$my_little_ninja_foo_3" && test "$D"; then + eval mynewdependency_lib=`echo "$deplib" |sed -e "s:$D:/:g" -e 's:/\+:/:g'` + else + mynewdependency_lib="$deplib" + fi + else + mynewdependency_lib="$deplib" + fi + # Do not add duplicates + if test "$mynewdependency_lib"; then + my_little_ninja_foo_4=`echo $newdependency_libs |$EGREP -e "$mynewdependency_lib"` + if test -z "$my_little_ninja_foo_4"; then + newdependency_libs="$newdependency_libs $mynewdependency_lib" + fi + fi + ;; + esac + done + dependency_libs="$newdependency_libs" + newdlfiles= + for lib in $dlfiles; do + name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + if test -z "$libdir"; then + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + newdlfiles="$newdlfiles $libdir/$name" + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + if test -z "$libdir"; then + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + newdlprefiles="$newdlprefiles $libdir/$name" + done + dlprefiles="$newdlprefiles" + else + newdlfiles= + for lib in $dlfiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + newdlfiles="$newdlfiles $abs" + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + newdlprefiles="$newdlprefiles $abs" + done + dlprefiles="$newdlprefiles" + fi + $rm $output + # place dlname in correct position for cygwin + tdlname=$dlname + case $host,$output,$installed,$module,$dlname in + *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; + esac + # Do not add duplicates + if test "$installed" = yes && test "$D"; then + install_libdir=`echo "$install_libdir" |sed -e "s:$D:/:g" -e 's:/\+:/:g'` + fi + $echo > $output "\ +# $outputname - a libtool library file +# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='$tdlname' + +# Names of this library. +library_names='$library_names' + +# The name of the static archive. +old_library='$old_library' + +# Libraries that this one depends upon. +dependency_libs='$dependency_libs' + +# Version information for $libname. +current=$current +age=$age +revision=$revision + +# Is this an already installed library? +installed=$installed + +# Should we warn about portability when linking against -modules? +shouldnotlink=$module + +# Files to dlopen/dlpreopen +dlopen='$dlfiles' +dlpreopen='$dlprefiles' + +# Directory that this library needs to be installed in: +libdir='$install_libdir'" + if test "$installed" = no && test "$need_relink" = yes; then + $echo >> $output "\ +relink_command=\"$relink_command\"" + fi + done + fi + + # Do a symbolic link so that the libtool archive can be found in + # LD_LIBRARY_PATH before the program is installed. + $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" + $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? + ;; + esac + exit $EXIT_SUCCESS + ;; + + # libtool install mode + install) + modename="$modename: install" + + # There may be an optional sh(1) argument at the beginning of + # install_prog (especially on Windows NT). + if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || + # Allow the use of GNU shtool's install command. + $echo "X$nonopt" | grep shtool > /dev/null; then + # Aesthetically quote it. + arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + install_prog="$arg " + arg="$1" + shift + else + install_prog= + arg=$nonopt + fi + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + install_prog="$install_prog$arg" + + # We need to accept at least all the BSD install flags. + dest= + files= + opts= + prev= + install_type= + isdir=no + stripme= + for arg + do + if test -n "$dest"; then + files="$files $dest" + dest=$arg + continue + fi + + case $arg in + -d) isdir=yes ;; + -f) + case " $install_prog " in + *[\\\ /]cp\ *) ;; + *) prev=$arg ;; + esac + ;; + -g | -m | -o) prev=$arg ;; + -s) + stripme=" -s" + continue + ;; + -*) + ;; + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then + prev= + else + dest=$arg + continue + fi + ;; + esac + + # Aesthetically quote the argument. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + install_prog="$install_prog $arg" + done + + if test -z "$install_prog"; then + $echo "$modename: you must specify an install program" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + if test -n "$prev"; then + $echo "$modename: the \`$prev' option requires an argument" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + if test -z "$files"; then + if test -z "$dest"; then + $echo "$modename: no file or destination specified" 1>&2 + else + $echo "$modename: you must specify a destination" 1>&2 + fi + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Strip any trailing slash from the destination. + dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` + + # Check to see that the destination is a directory. + test -d "$dest" && isdir=yes + if test "$isdir" = yes; then + destdir="$dest" + destname= + else + destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` + test "X$destdir" = "X$dest" && destdir=. + destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` + + # Not a directory, so check to see that there is only one file specified. + set dummy $files + if test "$#" -gt 2; then + $echo "$modename: \`$dest' is not a directory" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + fi + case $destdir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + for file in $files; do + case $file in + *.lo) ;; + *) + $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + esac + done + ;; + esac + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + staticlibs= + future_libdirs= + current_libdirs= + for file in $files; do + + # Do each installation. + case $file in + *.$libext) + # Do the static libraries later. + staticlibs="$staticlibs $file" + ;; + + *.la) + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + library_names= + old_library= + relink_command= + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Add the libdir to current_libdirs if it is the destination. + if test "X$destdir" = "X$libdir"; then + case "$current_libdirs " in + *" $libdir "*) ;; + *) current_libdirs="$current_libdirs $libdir" ;; + esac + else + # Note the libdir as a future libdir. + case "$future_libdirs " in + *" $libdir "*) ;; + *) future_libdirs="$future_libdirs $libdir" ;; + esac + fi + + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/ + test "X$dir" = "X$file/" && dir= + dir="$dir$objdir" + + if test -n "$relink_command"; then + # Determine the prefix the user has applied to our future dir. + inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"` + + # Don't allow the user to place us outside of our expected + # location b/c this prevents finding dependent libraries that + # are installed to the same prefix. + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. + if test "$inst_prefix_dir" = "$destdir"; then + $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 + exit $EXIT_FAILURE + fi + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. + relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` + else + relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%%"` + fi + + $echo "$modename: warning: relinking \`$file'" 1>&2 + $show "$relink_command" + if $run eval "$relink_command"; then : + else + $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 + exit $EXIT_FAILURE + fi + fi + + # See the names of the shared library. + set dummy $library_names + if test -n "$2"; then + realname="$2" + shift + shift + + srcname="$realname" + test -n "$relink_command" && srcname="$realname"T + + # Install the shared library and build the symlinks. + $show "$install_prog $dir/$srcname $destdir/$realname" + $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $? + if test -n "$stripme" && test -n "$striplib"; then + $show "$striplib $destdir/$realname" + $run eval "$striplib $destdir/$realname" || exit $? + fi + + if test "$#" -gt 0; then + # Delete the old symlinks, and create new ones. + # Try `ln -sf' first, because the `ln' binary might depend on + # the symlink we replace! Solaris /bin/ln does not understand -f, + # so we also need to try rm && ln -s. + for linkname + do + if test "$linkname" != "$realname"; then + $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" + $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" + fi + done + fi + + # Do each command in the postinstall commands. + lib="$destdir/$realname" + cmds=$postinstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' + fi + + exit $lt_exit + } + done + IFS="$save_ifs" + fi + + # Install the pseudo-library for information purposes. + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + instname="$dir/$name"i + $show "$install_prog $instname $destdir/$name" + $run eval "$install_prog $instname $destdir/$name" || exit $? + + # Maybe install the static library, too. + test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" + ;; + + *.lo) + # Install (i.e. copy) a libtool object. + + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + destfile="$destdir/$destfile" + fi + + # Deduce the name of the destination old-style object file. + case $destfile in + *.lo) + staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` + ;; + *.$objext) + staticdest="$destfile" + destfile= + ;; + *) + $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + # Install the libtool object if requested. + if test -n "$destfile"; then + $show "$install_prog $file $destfile" + $run eval "$install_prog $file $destfile" || exit $? + fi + + # Install the old object if enabled. + if test "$build_old_libs" = yes; then + # Deduce the name of the old-style object file. + staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` + + $show "$install_prog $staticobj $staticdest" + $run eval "$install_prog \$staticobj \$staticdest" || exit $? + fi + exit $EXIT_SUCCESS + ;; + + *) + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + destfile="$destdir/$destfile" + fi + + # If the file is missing, and there is a .exe on the end, strip it + # because it is most likely a libtool script we actually want to + # install + stripped_ext="" + case $file in + *.exe) + if test ! -f "$file"; then + file=`$echo $file|${SED} 's,.exe$,,'` + stripped_ext=".exe" + fi + ;; + esac + + # Do a test to see if this is really a libtool program. + case $host in + *cygwin*|*mingw*) + wrapper=`$echo $file | ${SED} -e 's,.exe$,,'` + ;; + *) + wrapper=$file + ;; + esac + if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then + notinst_deplibs= + relink_command= + + # Note that it is not necessary on cygwin/mingw to append a dot to + # foo even if both foo and FILE.exe exist: automatic-append-.exe + # behavior happens only for exec(3), not for open(2)! Also, sourcing + # `FILE.' does not work on cygwin managed mounts. + # + # If there is no directory component, then add one. + case $wrapper in + */* | *\\*) . ${wrapper} ;; + *) . ./${wrapper} ;; + esac + + # Check the variables that should have been set. + if test -z "$notinst_deplibs"; then + $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 + exit $EXIT_FAILURE + fi + + finalize=yes + for lib in $notinst_deplibs; do + # Check to see that each library is installed. + libdir= + if test -f "$lib"; then + # If there is no directory component, then add one. + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + fi + libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test + if test -n "$libdir" && test ! -f "$libfile"; then + $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 + finalize=no + fi + done + + relink_command= + # Note that it is not necessary on cygwin/mingw to append a dot to + # foo even if both foo and FILE.exe exist: automatic-append-.exe + # behavior happens only for exec(3), not for open(2)! Also, sourcing + # `FILE.' does not work on cygwin managed mounts. + # + # If there is no directory component, then add one. + case $wrapper in + */* | *\\*) . ${wrapper} ;; + *) . ./${wrapper} ;; + esac + + outputname= + if test "$fast_install" = no && test -n "$relink_command"; then + if test "$finalize" = yes && test -z "$run"; then + tmpdir=`func_mktempdir` + file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` + outputname="$tmpdir/$file" + # Replace the output file specification. + relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` + + $show "$relink_command" + if $run eval "$relink_command"; then : + else + $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 + ${rm}r "$tmpdir" + continue + fi + file="$outputname" + else + $echo "$modename: warning: cannot relink \`$file'" 1>&2 + fi + else + # Install the binary that we compiled earlier. + file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + # remove .exe since cygwin /usr/bin/install will append another + # one anyway + case $install_prog,$host in + */usr/bin/install*,*cygwin*) + case $file:$destfile in + *.exe:*.exe) + # this is ok + ;; + *.exe:*) + destfile=$destfile.exe + ;; + *:*.exe) + destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'` + ;; + esac + ;; + esac + $show "$install_prog$stripme $file $destfile" + $run eval "$install_prog\$stripme \$file \$destfile" || exit $? + test -n "$outputname" && ${rm}r "$tmpdir" + ;; + esac + done + + for file in $staticlibs; do + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + + # Set up the ranlib parameters. + oldlib="$destdir/$name" + + $show "$install_prog $file $oldlib" + $run eval "$install_prog \$file \$oldlib" || exit $? + + if test -n "$stripme" && test -n "$old_striplib"; then + $show "$old_striplib $oldlib" + $run eval "$old_striplib $oldlib" || exit $? + fi + + # Do each command in the postinstall commands. + cmds=$old_postinstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + done + + if test -n "$future_libdirs"; then + $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 + fi + + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + test -n "$run" && current_libdirs=" -n$current_libdirs" + exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' + else + exit $EXIT_SUCCESS + fi + ;; + + # libtool finish mode + finish) + modename="$modename: finish" + libdirs="$nonopt" + admincmds= + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + for dir + do + libdirs="$libdirs $dir" + done + + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. + cmds=$finish_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || admincmds="$admincmds + $cmd" + done + IFS="$save_ifs" + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $run eval "$cmds" || admincmds="$admincmds + $cmds" + fi + done + fi + + # Exit here if they wanted silent mode. + test "$show" = : && exit $EXIT_SUCCESS + + $echo "X----------------------------------------------------------------------" | $Xsed + $echo "Libraries have been installed in:" + for libdir in $libdirs; do + $echo " $libdir" + done + $echo + $echo "If you ever happen to want to link against installed libraries" + $echo "in a given directory, LIBDIR, you must either use libtool, and" + $echo "specify the full pathname of the library, or use the \`-LLIBDIR'" + $echo "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then + $echo " - add LIBDIR to the \`$shlibpath_var' environment variable" + $echo " during execution" + fi + if test -n "$runpath_var"; then + $echo " - add LIBDIR to the \`$runpath_var' environment variable" + $echo " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" + + $echo " - use the \`$flag' linker flag" + fi + if test -n "$admincmds"; then + $echo " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then + $echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" + fi + $echo + $echo "See any operating system documentation about shared libraries for" + $echo "more information, such as the ld(1) and ld.so(8) manual pages." + $echo "X----------------------------------------------------------------------" | $Xsed + exit $EXIT_SUCCESS + ;; + + # libtool execute mode + execute) + modename="$modename: execute" + + # The first argument is the command name. + cmd="$nonopt" + if test -z "$cmd"; then + $echo "$modename: you must specify a COMMAND" 1>&2 + $echo "$help" + exit $EXIT_FAILURE + fi + + # Handle -dlopen flags immediately. + for file in $execute_dlfiles; do + if test ! -f "$file"; then + $echo "$modename: \`$file' is not a file" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + dir= + case $file in + *.la) + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Read the libtool library. + dlname= + library_names= + + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Skip this library if it cannot be dlopened. + if test -z "$dlname"; then + # Warn if it was a shared library. + test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" + continue + fi + + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$file" && dir=. + + if test -f "$dir/$objdir/$dlname"; then + dir="$dir/$objdir" + else + $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 + exit $EXIT_FAILURE + fi + ;; + + *.lo) + # Just add the directory containing the .lo file. + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$file" && dir=. + ;; + + *) + $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 + continue + ;; + esac + + # Get the absolute pathname. + absdir=`cd "$dir" && pwd` + test -n "$absdir" && dir="$absdir" + + # Now add the directory to shlibpath_var. + if eval "test -z \"\$$shlibpath_var\""; then + eval "$shlibpath_var=\"\$dir\"" + else + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" + fi + done + + # This variable tells wrapper scripts just to set shlibpath_var + # rather than running their programs. + libtool_execute_magic="$magic" + + # Check if any of the arguments is a wrapper script. + args= + for file + do + case $file in + -*) ;; + *) + # Do a test to see if this is really a libtool program. + if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Transform arg to wrapped name. + file="$progdir/$program" + fi + ;; + esac + # Quote arguments (to preserve shell metacharacters). + file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` + args="$args \"$file\"" + done + + if test -z "$run"; then + if test -n "$shlibpath_var"; then + # Export the shlibpath_var. + eval "export $shlibpath_var" + fi + + # Restore saved environment variables + if test "${save_LC_ALL+set}" = set; then + LC_ALL="$save_LC_ALL"; export LC_ALL + fi + if test "${save_LANG+set}" = set; then + LANG="$save_LANG"; export LANG + fi + + # Now prepare to actually exec the command. + exec_cmd="\$cmd$args" + else + # Display what would be done. + if test -n "$shlibpath_var"; then + eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" + $echo "export $shlibpath_var" + fi + $echo "$cmd$args" + exit $EXIT_SUCCESS + fi + ;; + + # libtool clean and uninstall mode + clean | uninstall) + modename="$modename: $mode" + rm="$nonopt" + files= + rmforce= + exit_status=0 + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + for arg + do + case $arg in + -f) rm="$rm $arg"; rmforce=yes ;; + -*) rm="$rm $arg" ;; + *) files="$files $arg" ;; + esac + done + + if test -z "$rm"; then + $echo "$modename: you must specify an RM program" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + rmdirs= + + origobjdir="$objdir" + for file in $files; do + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + if test "X$dir" = "X$file"; then + dir=. + objdir="$origobjdir" + else + objdir="$dir/$origobjdir" + fi + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + test "$mode" = uninstall && objdir="$dir" + + # Remember objdir for removal later, being careful to avoid duplicates + if test "$mode" = clean; then + case " $rmdirs " in + *" $objdir "*) ;; + *) rmdirs="$rmdirs $objdir" ;; + esac + fi + + # Don't error if the file doesn't exist and rm -f was used. + if (test -L "$file") >/dev/null 2>&1 \ + || (test -h "$file") >/dev/null 2>&1 \ + || test -f "$file"; then + : + elif test -d "$file"; then + exit_status=1 + continue + elif test "$rmforce" = yes; then + continue + fi + + rmfiles="$file" + + case $name in + *.la) + # Possibly a libtool archive, so verify it. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + . $dir/$name + + # Delete the libtool libraries and symlinks. + for n in $library_names; do + rmfiles="$rmfiles $objdir/$n" + done + test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" + + case "$mode" in + clean) + case " $library_names " in + # " " in the beginning catches empty $dlname + *" $dlname "*) ;; + *) rmfiles="$rmfiles $objdir/$dlname" ;; + esac + test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" + ;; + uninstall) + if test -n "$library_names"; then + # Do each command in the postuninstall commands. + cmds=$postuninstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" + if test "$?" -ne 0 && test "$rmforce" != yes; then + exit_status=1 + fi + done + IFS="$save_ifs" + fi + + if test -n "$old_library"; then + # Do each command in the old_postuninstall commands. + cmds=$old_postuninstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" + if test "$?" -ne 0 && test "$rmforce" != yes; then + exit_status=1 + fi + done + IFS="$save_ifs" + fi + # FIXME: should reinstall the best remaining shared library. + ;; + esac + fi + ;; + + *.lo) + # Possibly a libtool object, so verify it. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + + # Read the .lo file + . $dir/$name + + # Add PIC object to the list of files to remove. + if test -n "$pic_object" \ + && test "$pic_object" != none; then + rmfiles="$rmfiles $dir/$pic_object" + fi + + # Add non-PIC object to the list of files to remove. + if test -n "$non_pic_object" \ + && test "$non_pic_object" != none; then + rmfiles="$rmfiles $dir/$non_pic_object" + fi + fi + ;; + + *) + if test "$mode" = clean ; then + noexename=$name + case $file in + *.exe) + file=`$echo $file|${SED} 's,.exe$,,'` + noexename=`$echo $name|${SED} 's,.exe$,,'` + # $file with .exe has already been added to rmfiles, + # add $file without .exe + rmfiles="$rmfiles $file" + ;; + esac + # Do a test to see if this is a libtool program. + if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + relink_command= + . $dir/$noexename + + # note $name still contains .exe if it was in $file originally + # as does the version of $file that was added into $rmfiles + rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" + if test "$fast_install" = yes && test -n "$relink_command"; then + rmfiles="$rmfiles $objdir/lt-$name" + fi + if test "X$noexename" != "X$name" ; then + rmfiles="$rmfiles $objdir/lt-${noexename}.c" + fi + fi + fi + ;; + esac + $show "$rm $rmfiles" + $run $rm $rmfiles || exit_status=1 + done + objdir="$origobjdir" + + # Try to remove the ${objdir}s in the directories where we deleted files + for dir in $rmdirs; do + if test -d "$dir"; then + $show "rmdir $dir" + $run rmdir $dir >/dev/null 2>&1 + fi + done + + exit $exit_status + ;; + + "") + $echo "$modename: you must specify a MODE" 1>&2 + $echo "$generic_help" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + if test -z "$exec_cmd"; then + $echo "$modename: invalid operation mode \`$mode'" 1>&2 + $echo "$generic_help" 1>&2 + exit $EXIT_FAILURE + fi +fi # test -z "$show_help" + +if test -n "$exec_cmd"; then + eval exec $exec_cmd + exit $EXIT_FAILURE +fi + +# We need to display help for each of the modes. +case $mode in +"") $echo \ +"Usage: $modename [OPTION]... [MODE-ARG]... + +Provide generalized library-building support services. + + --config show all configuration variables + --debug enable verbose shell tracing +-n, --dry-run display commands without modifying any files + --features display basic configuration information and exit + --finish same as \`--mode=finish' + --help display this help message and exit + --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] + --quiet same as \`--silent' + --silent don't print informational messages + --tag=TAG use configuration variables from tag TAG + --version print version information + +MODE must be one of the following: + + clean remove files from the build directory + compile compile a source file into a libtool object + execute automatically set library path, then run a program + finish complete the installation of libtool libraries + install install libraries or executables + link create a library or an executable + uninstall remove libraries from an installed directory + +MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for +a more detailed description of MODE. + +Report bugs to ." + exit $EXIT_SUCCESS + ;; + +clean) + $echo \ +"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE... + +Remove files from the build directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, object or program, all the files associated +with it are deleted. Otherwise, only FILE itself is deleted using RM." + ;; + +compile) + $echo \ +"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE + +Compile a source file into a libtool library object. + +This mode accepts the following additional options: + + -o OUTPUT-FILE set the output file name to OUTPUT-FILE + -prefer-pic try to building PIC objects only + -prefer-non-pic try to building non-PIC objects only + -static always build a \`.o' file suitable for static linking + +COMPILE-COMMAND is a command to be used in creating a \`standard' object file +from the given SOURCEFILE. + +The output file name is determined by removing the directory component from +SOURCEFILE, then substituting the C source code suffix \`.c' with the +library object suffix, \`.lo'." + ;; + +execute) + $echo \ +"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... + +Automatically set library path, then run a program. + +This mode accepts the following additional options: + + -dlopen FILE add the directory containing FILE to the library path + +This mode sets the library path environment variable according to \`-dlopen' +flags. + +If any of the ARGS are libtool executable wrappers, then they are translated +into their corresponding uninstalled binary, and any of their required library +directories are added to the library path. + +Then, COMMAND is executed, with ARGS as arguments." + ;; + +finish) + $echo \ +"Usage: $modename [OPTION]... --mode=finish [LIBDIR]... + +Complete the installation of libtool libraries. + +Each LIBDIR is a directory that contains libtool libraries. + +The commands that this mode executes may require superuser privileges. Use +the \`--dry-run' option if you just want to see what would be executed." + ;; + +install) + $echo \ +"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... + +Install executables or libraries. + +INSTALL-COMMAND is the installation command. The first component should be +either the \`install' or \`cp' program. + +The rest of the components are interpreted as arguments to that command (only +BSD-compatible install options are recognized)." + ;; + +link) + $echo \ +"Usage: $modename [OPTION]... --mode=link LINK-COMMAND... + +Link object files or libraries together to form another library, or to +create an executable program. + +LINK-COMMAND is a command using the C compiler that you would use to create +a program from several object files. + +The following components of LINK-COMMAND are treated specially: + + -all-static do not do any dynamic linking at all + -avoid-version do not add a version suffix if possible + -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) + -export-symbols SYMFILE + try to export only the symbols listed in SYMFILE + -export-symbols-regex REGEX + try to export only the symbols matching REGEX + -LLIBDIR search LIBDIR for required installed libraries + -lNAME OUTPUT-FILE requires the installed library libNAME + -module build a library that can dlopened + -no-fast-install disable the fast-install mode + -no-install link a not-installable executable + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects + -objectlist FILE Use a list of object files found in FILE to specify objects + -precious-files-regex REGEX + don't remove output files matching REGEX + -release RELEASE specify package release information + -rpath LIBDIR the created library will eventually be installed in LIBDIR + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries + -static do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] + specify library version info [each variable defaults to 0] + +All other options (arguments beginning with \`-') are ignored. + +Every other argument is treated as a filename. Files ending in \`.la' are +treated as uninstalled libtool libraries, other files are standard or library +object files. + +If the OUTPUT-FILE ends in \`.la', then a libtool library is created, +only library objects (\`.lo' files) may be specified, and \`-rpath' is +required, except when creating a convenience library. + +If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created +using \`ar' and \`ranlib', or on Windows using \`lib'. + +If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file +is created, otherwise an executable program is created." + ;; + +uninstall) + $echo \ +"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... + +Remove libraries from an installation directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, all the files associated with it are deleted. +Otherwise, only FILE itself is deleted using RM." + ;; + +*) + $echo "$modename: invalid operation mode \`$mode'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; +esac + +$echo +$echo "Try \`$modename --help' for more information about other modes." + +exit $? + +# The TAGs below are defined such that we never get into a situation +# in which we disable both kinds of libraries. Given conflicting +# choices, we go for a static library, that is the most portable, +# since we can't tell whether shared libraries were disabled because +# the user asked for that or because the platform doesn't support +# them. This is particularly important on AIX, because we don't +# support having both static and shared libraries enabled at the same +# time on that platform, so we default to a shared-only configuration. +# If a disable-shared tag is given, we'll fallback to a static-only +# configuration. But we'll never go from static-only to shared-only. + +# ### BEGIN LIBTOOL TAG CONFIG: disable-shared +disable_libs=shared +# ### END LIBTOOL TAG CONFIG: disable-shared + +# ### BEGIN LIBTOOL TAG CONFIG: disable-static +disable_libs=static +# ### END LIBTOOL TAG CONFIG: disable-static + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: diff --git a/Cpp/TP7_Rip/missing b/Cpp/TP7_Rip/missing new file mode 100755 index 0000000..6a37006 --- /dev/null +++ b/Cpp/TP7_Rip/missing @@ -0,0 +1,336 @@ +#! /bin/sh +# Common stub for a few missing GNU programs while installing. +# Copyright (C) 1996, 1997, 1999, 2000, 2002 Free Software Foundation, Inc. +# Originally by Fran,cois Pinard , 1996. + +# 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, 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., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +if test $# -eq 0; then + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 +fi + +run=: + +# In the cases where this matters, `missing' is being run in the +# srcdir already. +if test -f configure.ac; then + configure_ac=configure.ac +else + configure_ac=configure.in +fi + +case "$1" in +--run) + # Try to run requested program, and just exit if it succeeds. + run= + shift + "$@" && exit 0 + ;; +esac + +# If it does not exist, or fails to run (possibly an outdated version), +# try to emulate it. +case "$1" in + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an +error status if there is no known handling for PROGRAM. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + --run try to run the given command, and emulate it if it fails + +Supported PROGRAM values: + aclocal touch file \`aclocal.m4' + autoconf touch file \`configure' + autoheader touch file \`config.h.in' + automake touch all \`Makefile.in' files + bison create \`y.tab.[ch]', if possible, from existing .[ch] + flex create \`lex.yy.c', if possible, from existing .c + help2man touch the output file + lex create \`lex.yy.c', if possible, from existing .c + makeinfo touch the output file + tar try tar, gnutar, gtar, then tar without non-portable flags + yacc create \`y.tab.[ch]', if possible, from existing .[ch]" + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing 0.4 - GNU automake" + ;; + + -*) + echo 1>&2 "$0: Unknown \`$1' option" + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 + ;; + + aclocal*) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`acinclude.m4' or \`${configure_ac}'. You might want + to install the \`Automake' and \`Perl' packages. Grab them from + any GNU archive site." + touch aclocal.m4 + ;; + + autoconf) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`${configure_ac}'. You might want to install the + \`Autoconf' and \`GNU m4' packages. Grab them from any GNU + archive site." + touch configure + ;; + + autoheader) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`acconfig.h' or \`${configure_ac}'. You might want + to install the \`Autoconf' and \`GNU m4' packages. Grab them + from any GNU archive site." + files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` + test -z "$files" && files="config.h" + touch_files= + for f in $files; do + case "$f" in + *:*) touch_files="$touch_files "`echo "$f" | + sed -e 's/^[^:]*://' -e 's/:.*//'`;; + *) touch_files="$touch_files $f.in";; + esac + done + touch $touch_files + ;; + + automake*) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. + You might want to install the \`Automake' and \`Perl' packages. + Grab them from any GNU archive site." + find . -type f -name Makefile.am -print | + sed 's/\.am$/.in/' | + while read f; do touch "$f"; done + ;; + + autom4te) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is needed, and you do not seem to have it handy on your + system. You might have modified some files without having the + proper tools for further handling them. + You can get \`$1Help2man' as part of \`Autoconf' from any GNU + archive site." + + file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'` + test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'` + if test -f "$file"; then + touch $file + else + test -z "$file" || exec >$file + echo "#! /bin/sh" + echo "# Created by GNU Automake missing as a replacement of" + echo "# $ $@" + echo "exit 0" + chmod +x $file + exit 1 + fi + ;; + + bison|yacc) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a \`.y' file. You may need the \`Bison' package + in order for those modifications to take effect. You can get + \`Bison' from any GNU archive site." + rm -f y.tab.c y.tab.h + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.y) + SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.c + fi + SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.h + fi + ;; + esac + fi + if [ ! -f y.tab.h ]; then + echo >y.tab.h + fi + if [ ! -f y.tab.c ]; then + echo 'main() { return 0; }' >y.tab.c + fi + ;; + + lex|flex) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a \`.l' file. You may need the \`Flex' package + in order for those modifications to take effect. You can get + \`Flex' from any GNU archive site." + rm -f lex.yy.c + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.l) + SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" lex.yy.c + fi + ;; + esac + fi + if [ ! -f lex.yy.c ]; then + echo 'main() { return 0; }' >lex.yy.c + fi + ;; + + help2man) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a dependency of a manual page. You may need the + \`Help2man' package in order for those modifications to take + effect. You can get \`Help2man' from any GNU archive site." + + file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` + fi + if [ -f "$file" ]; then + touch $file + else + test -z "$file" || exec >$file + echo ".ab help2man is required to generate this page" + exit 1 + fi + ;; + + makeinfo) + if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then + # We have makeinfo, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a \`.texi' or \`.texinfo' file, or any other file + indirectly affecting the aspect of the manual. The spurious + call might also be the consequence of using a buggy \`make' (AIX, + DU, IRIX). You might want to install the \`Texinfo' package or + the \`GNU make' package. Grab either from any GNU archive site." + file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` + file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` + fi + touch $file + ;; + + tar) + shift + if test -n "$run"; then + echo 1>&2 "ERROR: \`tar' requires --run" + exit 1 + fi + + # We have already tried tar in the generic part. + # Look for gnutar/gtar before invocation to avoid ugly error + # messages. + if (gnutar --version > /dev/null 2>&1); then + gnutar "$@" && exit 0 + fi + if (gtar --version > /dev/null 2>&1); then + gtar "$@" && exit 0 + fi + firstarg="$1" + if shift; then + case "$firstarg" in + *o*) + firstarg=`echo "$firstarg" | sed s/o//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + case "$firstarg" in + *h*) + firstarg=`echo "$firstarg" | sed s/h//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + fi + + echo 1>&2 "\ +WARNING: I can't seem to be able to run \`tar' with the given arguments. + You may want to install GNU tar or Free paxutils, or check the + command line arguments." + exit 1 + ;; + + *) + echo 1>&2 "\ +WARNING: \`$1' is needed, and you do not seem to have it handy on your + system. You might have modified some files without having the + proper tools for further handling them. Check the \`README' file, + it often tells you about the needed prerequirements for installing + this package. You may also peek at any GNU archive site, in case + some other package would contain this missing \`$1' program." + exit 1 + ;; +esac + +exit 0 diff --git a/Cpp/TP7_Rip/mkinstalldirs b/Cpp/TP7_Rip/mkinstalldirs new file mode 100755 index 0000000..d2d5f21 --- /dev/null +++ b/Cpp/TP7_Rip/mkinstalldirs @@ -0,0 +1,111 @@ +#! /bin/sh +# mkinstalldirs --- make directory hierarchy +# Author: Noah Friedman +# Created: 1993-05-16 +# Public domain + +errstatus=0 +dirmode="" + +usage="\ +Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..." + +# process command line arguments +while test $# -gt 0 ; do + case $1 in + -h | --help | --h*) # -h for help + echo "$usage" 1>&2 + exit 0 + ;; + -m) # -m PERM arg + shift + test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } + dirmode=$1 + shift + ;; + --) # stop option processing + shift + break + ;; + -*) # unknown option + echo "$usage" 1>&2 + exit 1 + ;; + *) # first non-opt arg + break + ;; + esac +done + +for file +do + if test -d "$file"; then + shift + else + break + fi +done + +case $# in + 0) exit 0 ;; +esac + +case $dirmode in + '') + if mkdir -p -- . 2>/dev/null; then + echo "mkdir -p -- $*" + exec mkdir -p -- "$@" + fi + ;; + *) + if mkdir -m "$dirmode" -p -- . 2>/dev/null; then + echo "mkdir -m $dirmode -p -- $*" + exec mkdir -m "$dirmode" -p -- "$@" + fi + ;; +esac + +for file +do + set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` + shift + + pathcomp= + for d + do + pathcomp="$pathcomp$d" + case $pathcomp in + -*) pathcomp=./$pathcomp ;; + esac + + if test ! -d "$pathcomp"; then + echo "mkdir $pathcomp" + + mkdir "$pathcomp" || lasterr=$? + + if test ! -d "$pathcomp"; then + errstatus=$lasterr + else + if test ! -z "$dirmode"; then + echo "chmod $dirmode $pathcomp" + lasterr="" + chmod "$dirmode" "$pathcomp" || lasterr=$? + + if test ! -z "$lasterr"; then + errstatus=$lasterr + fi + fi + fi + fi + + pathcomp="$pathcomp/" + done +done + +exit $errstatus + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# End: +# mkinstalldirs ends here diff --git a/Cpp/TP7_Rip/src/Host.cpp b/Cpp/TP7_Rip/src/Host.cpp new file mode 100755 index 0000000..1666c83 --- /dev/null +++ b/Cpp/TP7_Rip/src/Host.cpp @@ -0,0 +1,183 @@ +/** + * #(@)Host.cpp ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/** + * Implementation of the Host class. + */ + +#include + +#include "Host.h" + +using namespace std; + +Host::Host(string hostname) : +_hostname(hostname),_routingTable(new RoutingTable()) { + + initRoutingTable(); + std::cout << "New Host: " << hostname << std::endl; +} + + +Host::~Host() { + delete _routingTable; +} + +ostream & operator<<(ostream & st, const Host & host) { + host.printOn(st); + + return st; +} + + +std::string Host::hostname() const { + return _hostname; +} + +bool Host::addNeighbor(Host & neighbor) { + // check if the host is already in the neighbors collection + bool result = false; + std::pair< std::set::iterator, bool> place; + place = _neighbors.insert(&neighbor); + + if (place.second == true) { + RoutingTable::const_iterator it, end; + end = _routingTable->end(); + + // dumping routing table to new neighbor via RipMessage + for (it = _routingTable->begin(); it != end; ++it) { + RoutingTableEntry * rte = (*it).second; + RipMessage rip(*this, (*it).first, rte->cost()); + this->sendRipMessage(neighbor, rip); + } + result = true; + } + + return result; +} + + +bool Host::removeNeighbor(Host & neighbor) { + + // remove the neighbor from neighbors list + _neighbors.erase(&neighbor); + + // broadcast an infinite route towards all destination who used to + // use the removed neighbor as getaway + RoutingTable::iterator rtEnd = _routingTable->end(); + + for (RoutingTable::iterator it = _routingTable->begin(); it != rtEnd; ++it) { + RoutingTableEntry * rte = it->second; + if (&(rte->gateway()) == &neighbor) { + int updatedCost; + _routingTable->update(it->first, rte->gateway(), INFINITE, &updatedCost); + RipMessage msg(*this, it->first, INFINITE); + this->broadcastRipMessage(msg); + } + } + + return true; +} + + + +void Host::broadcastRipMessage(const RipMessage & msg) const { + for (std::set + ::const_iterator i = _neighbors.begin(); + i != _neighbors.end(); + ++i) { + + this->sendRipMessage( *(*i), msg); + } +} + + +void Host::broadcastRoutingTable(void) { + for (BasicRoutingTable::const_iterator i = _routingTable->begin(); + i != _routingTable->end(); + ++i) { + RipMessage m(i->second->gateway(), i->first, i->second->cost()); + this->broadcastRipMessage(m); + } +} + + +void Host::initRoutingTable(void) { + int cost; + _routingTable->update + (_hostname, *this, 0, &cost); +} + +void Host::printOn(ostream & st) const { + st << "Host: " << _hostname << "\nNeighbors:"; + set + ::const_iterator it, end; + + end = _neighbors.end(); + + for (it = _neighbors.begin(); it != end; ++it) { + st << " " << (*it)->hostname(); + } + + st << "\nRoutingTable: " << endl << *_routingTable << endl; +} + +void Host::handleRipMessage(const RipMessage & msg) { + cout << _hostname << ": Received RIP message: " << msg << endl; + + int cost = msg.cost() + 1; + + int newCost; + + if (_routingTable->update(msg.dstHost(), msg.srcHost(), cost, &newCost)) { + // routing table has been updated + RipMessage newMsg(*this, msg.dstHost(), newCost); + this->broadcastRipMessage(newMsg); + + } +} + + + +bool operator ==(const Host & h1, const Host & h2) { + return h1.hostname() == h2.hostname(); +} + +void Host::sendRipMessage( Host & dest, const RipMessage & msg ) const { + // dont send to the dest if rip message + // indicate a route to reach it + if (dest.hostname() != msg.dstHost()) { + // dont send rip message if the dst is the gateway to reach the dstHost + // => split horizon + RoutingTableEntry * rte = (*_routingTable)[msg.dstHost()]; + if (&(rte->gateway()) != &dest) { + std::cout << _hostname << " sending Rip message to " << dest.hostname() << std::endl; + Network::addToQueue(&dest, msg); + } + } + +} + +void Host::handleIpMessage(const IpMessage & msg) { + cout << _hostname << " received a message : " << msg << endl; + + if (msg.dstHost() == _hostname) { + cout << _hostname << ": It's for me !" << endl; + } else { + Host & h = (*_routingTable)[msg.dstHost()]->gateway(); + h.handleIpMessage(msg); + } + +} + diff --git a/Cpp/TP7_Rip/src/Host.h b/Cpp/TP7_Rip/src/Host.h new file mode 100755 index 0000000..83de4cd --- /dev/null +++ b/Cpp/TP7_Rip/src/Host.h @@ -0,0 +1,179 @@ +/** + * #(@)Host.h ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/** + * Represents a host in a network. + */ + +#include +#include + +/** + * See the description of the Bellman-Ford algorithm. + */ + +/* + * @version 2006-01-03 + * + * @done - + * + * @todo - + */ + + + +#ifndef HOST_H +#define HOST_H + +#include + +#define INFINITE 100 + +#include "RoutingTable.h" +class RoutingTable; // fallback + +#include "RipMessage.h" +class RipMessage; // fallback + +#include "IpMessage.h" +class IpMessage; // fallback + +#include "Network.h" +class Network; // fallback + +/** + * Represents a host of a network. + * + * @author Nicolas MASSE + * @author Thomas LIMIN + */ +class Host { +public: + /** + * Constructs a new host with the specified name and no friend. + * + * @param hostname the hostname. + */ + Host(std::string hostname); + + /** + * Destructs this host. + */ + ~Host(); + + /** + * Returns the hostname. + * + * @return the hostname. + */ + std::string hostname() const; + + /** + * Adds a neighbor. + * + * @param neighbor the neighbor. + */ + bool addNeighbor(Host & neighbor); + + /** + * Remove a neighbor + * + * @param neighbor the neighbor + */ + bool removeNeighbor(Host & neighbor); + + /** + * Broadcasts the RIP message to all neighbors, + * except if the neighbor is the dstHost of the rip mesg + * + * @param msg the RIP message. + */ + void broadcastRipMessage(const RipMessage & msg) const; + + /** + * Broadcasts the routing table of this host to its neighbors. + * + */ + void broadcastRoutingTable(void); + + /** + * Prints details about the host on the stream. + * + * @param st the stream. + */ + void printOn(std::ostream & st) const; + + + /** + * Asks this host to handle a RIP message. + * + * @param message the RIP message to handle. + */ + void handleRipMessage(const RipMessage & msg); + + /** + * Asks this host to handle an IP message. + * + * @param message the IP message to handle. + */ + void handleIpMessage(const IpMessage & msg); + + /** + * Send the rip message to destination if it is usefull: + * - if rip message indicate a route to reach destination + * - if the destination is the gateway to reach the dstHost of the rip message + */ + void sendRipMessage(Host & dest, const RipMessage & msg) const; + + +private: + /** + * Initializes the routing table of this host. + */ + void initRoutingTable(void); + + /** + * The hostname. + */ + std::string _hostname; + + /** + * The routing table. + */ + RoutingTable * _routingTable; + + /** + * A Collection of neighbors. A set is use because hosts must + * appears only one time in this collection + */ + std::set _neighbors; + +}; + +/** + * Prints the details about the host on the output stream. + */ +std::ostream & operator<<(std::ostream & st, const Host & host); + +/** + * Compares two host, using their name. + * + * @param h1 the first host. + * @param h2 the second host. + * @return true if h1.hostname() == h2.hostname() + */ +bool operator==(const Host & h1, const Host & h2); + +#endif /* HOST_H */ + diff --git a/Cpp/TP7_Rip/src/IpMessage.cpp b/Cpp/TP7_Rip/src/IpMessage.cpp new file mode 100755 index 0000000..5f41952 --- /dev/null +++ b/Cpp/TP7_Rip/src/IpMessage.cpp @@ -0,0 +1,68 @@ +/** + * #(@)IpMessage.cpp ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/** + * Implementation of the class IpMessage. + */ + +/* + * @version 0.0.1 + * + * @done - + * + * @todo - + */ + + +#include + +#include "IpMessage.h" + +using namespace std; + + +IpMessage::IpMessage(const std::string & srcHost, const std::string & dstHost, + const std::string & message) : _message(message), _srcHost(srcHost), + _dstHost(dstHost) {} + + +IpMessage::~IpMessage() {} + + +std::ostream & operator<<(std::ostream & st, const IpMessage & msg) { + msg.printOn(st); + + return st; +} + +void IpMessage::printOn(std::ostream & st) const { + st << ""; +} + + +const std::string & IpMessage::srcHost() const { + return _srcHost; +} + + +const std::string & IpMessage::dstHost() const { + return _dstHost; +} + + +const std::string & IpMessage::message() const { + return _message; +} diff --git a/Cpp/TP7_Rip/src/IpMessage.h b/Cpp/TP7_Rip/src/IpMessage.h new file mode 100755 index 0000000..181e6d0 --- /dev/null +++ b/Cpp/TP7_Rip/src/IpMessage.h @@ -0,0 +1,92 @@ +/** + * #(@)IpMessage.h ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/** + * Defines an IP message. + */ + +/* + * @version 0.0.1 + * + * @done - + * + * @todo - + */ + + + +#ifndef IPMESSAGE_H +#define IPMESSAGE_H + +#include + +/** + * Represents an IP message. + * + * @author Nicolas MASSE + * @author Thomas LIMIN + */ +class IpMessage { +public: + /** + * Constructs an IP message. + * + * @param srcHost the source host. + * @param dslHost the hostname of the destination host. + * @param cost the number of hops needed to reach the destination + * host. + */ + IpMessage(const std::string & srcHost, const std::string & dstHost, + const std::string & message); + + /** + * Destructs this IP message. + */ + ~IpMessage(); + + /** + * Prints the details about this RIP message on the output stream. + * + * @param st the output stream. + */ + void printOn(std::ostream & st) const; + + /** + * Returns the name of the host who sent this message. + */ + const std::string & srcHost() const; + + /** + * Returns the name of the destination host. + */ + const std::string & dstHost() const; + + /** + * Returns the number of hops needed to reach the destination host. + */ + const std::string & message() const; + +private: + std::string _srcHost; + std::string _dstHost; + std::string _message; +}; + +/** + * Prints the details about the IP message on the output stream. + */ +std::ostream & operator<<(std::ostream & st, const IpMessage & msg); + + +#endif /* RIPMESSAGE_H */ diff --git a/Cpp/TP7_Rip/src/Makefile.am b/Cpp/TP7_Rip/src/Makefile.am new file mode 100755 index 0000000..930bec2 --- /dev/null +++ b/Cpp/TP7_Rip/src/Makefile.am @@ -0,0 +1,13 @@ +bin_PROGRAMS = tp7 +tp7_SOURCES = tp7.cpp Network.cpp RoutingTable.cpp RipMessage.cpp Host.cpp \ + RoutingTableEntry.cpp IpMessage.cpp + +# set the include path found by configure +INCLUDES= $(all_includes) + +# the library search path. +tp7_LDFLAGS = $(all_libraries) + +noinst_HEADERS = Host.h RoutingTableEntry.h Network.h RoutingTable.h \ + RipMessage.h IpMessage.h + diff --git a/Cpp/TP7_Rip/src/Network.cpp b/Cpp/TP7_Rip/src/Network.cpp new file mode 100755 index 0000000..bb3ffba --- /dev/null +++ b/Cpp/TP7_Rip/src/Network.cpp @@ -0,0 +1,214 @@ +/** + * #(@)Network.cpp ENSICAEN 2006-01-03 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/** + * Implementation of the Network class + */ + +#include "Network.h" +#include "IpMessage.h" + +/* + * @version 2006-01-03 + * + * @done - + * + * @todo - + */ + + +std::deque > Network::_queue; + + +Network::Network() : _hosts() {} + + +Network::~Network( ) { + std::map::const_iterator i; + + // destroy Host dynamic object + for (i = _hosts.begin(); i != _hosts.end(); ++i) { + delete i->second; + } +} + + +bool Network::growNetwork( std::istream & data ) { + std::string line; + const std::string delims = " \t"; + + int wordNbr; + std::string words[2]; + + // loop until end of stream is reached + while (std::getline(data, line)) { + // cut the line into wordsHostHost + std::string::size_type idBegin, idEnd; + wordNbr = 0; + + // search beginning of the first word + idBegin = line.find_first_not_of(delims); + + // while beginning of a word found + while ((idBegin != std::string::npos) && (wordNbr < 2)) { + // search end of the actual word + idEnd = line.find_first_of(delims, idBegin); + + if (idEnd == std::string::npos) { + // end of word is end of line + idEnd = line.length(); + } + + words[wordNbr] = line.substr(idBegin, idEnd - idBegin); + ++ wordNbr; + // search beginning of an other word + idBegin = line.find_first_not_of(delims, idEnd); + } + + if (wordNbr >= 2) { + // we have enough information to create a new Link + this->addLinkBetween(words[0], words[1]); + } + } +} + + +bool Network::addLinkBetween(const std::string & nameHostA, const std::string & nameHostB) { + std::map::const_iterator it; + Host * hostA; + Host * hostB; + bool result = false; + + it = _hosts.find(nameHostA); + + if (it == _hosts.end()) { + // host not found in network, we need to crete a new Host and insert it + hostA = new Host(nameHostA); + _hosts.insert(std::make_pair(nameHostA, hostA)); + } else { + // host found + hostA = it->second; + } + + it = _hosts.find(nameHostB); + + if (it == _hosts.end()) { + // host not found in network, we need to crete a new Host + hostB = new Host(nameHostB); + _hosts.insert(std::make_pair(nameHostB, hostB)); + } else { + // host found + hostB = it->second; + } + + hostA->addNeighbor(*hostB); + hostB->addNeighbor(*hostA); + + Network::processQueue(); + + return result; +} + +bool Network::removeLinkBetween( const std::string & nameHostA, const std::string & nameHostB ) { + bool result = false; + std::map::const_iterator it; + Host * hostA; + Host * hostB; + + it = _hosts.find(nameHostA); + + if (it != _hosts.end()) { + // host found + hostA = it->second; + result = true; + } + + it = _hosts.find(nameHostB); + + if (it != _hosts.end()) { + // host found + hostB = it->second; + result = result && true; + } + + if (result) { + result = hostA->removeNeighbor(*hostB) && hostB->removeNeighbor(*hostA); + } + + Network::processQueue(); + + return result; +} + + + +void Network::printOn(std::ostream & st) const { + st << "Network: " << std::endl << "Hosts:" << std::endl; + + std::map::const_iterator i; + for (i = _hosts.begin(); i != _hosts.end(); ++i) { + st << *((*i).second); + } +} + +void Network::broadcastTables(void) { + std::map::const_iterator i; + for (i = _hosts.begin(); i != _hosts.end(); ++i) { + i->second->broadcastRoutingTable(); + } + + Network::processQueue(); +} + + +std::ostream & operator <<( std::ostream & st, const Network & n ) { + n.printOn(st); + return st; +} + +Host * Network::getHost(std::string hostname ) const { + Host * h = 0; + std::map::const_iterator it; + it = _hosts.find(hostname); + + if (it != _hosts.end()) { + h = (*it).second; + } + return h; +} + + +void Network::processQueue(void) { + while (! _queue.empty()) { + std::pair p = _queue.front(); + _queue.pop_front(); + + p.first->handleRipMessage(p.second); + } +} + +void Network::addToQueue(Host * h, const RipMessage & m) { + _queue.push_back(std::make_pair(h, m)); +} + +void Network::sendMessage(const std::string & nameHostA, + const std::string & nameHostB, + const std::string & message) { + + Host * h = getHost(nameHostA); + IpMessage m(nameHostA, nameHostB, message); + + h->handleIpMessage(m); +} + diff --git a/Cpp/TP7_Rip/src/Network.h b/Cpp/TP7_Rip/src/Network.h new file mode 100755 index 0000000..93f6f05 --- /dev/null +++ b/Cpp/TP7_Rip/src/Network.h @@ -0,0 +1,147 @@ +/** + * #(@)Network.h ENSICAEN 2006-01-03 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/* + * @version 2006-01-03 + * + * @done - + * + * @todo - + */ + +#ifndef NETWORK_H +#define NETWORK_H + +#include +#include +#include +#include + +#include "Host.h" +class Host; // fallback + + +/** + * The Network class is in charge of building a Network, providing a data file + * the network is the owner of the hosts + */ +class Network { + +public: + + /** + * Network default constructor + */ + Network(); + + /** + * Network default destructor + */ + ~Network(); + + /** + * Add the new hosts and links present in the data stream. + * + * @param data the stream from wich network data will be read + * @return bool + */ + bool growNetwork(std::istream & data); + + /** + * Add a link in the network. + * A link is only a pair of hosts who are linked. If the hosts + * doesn't appear in the network, they are added + * + * @param nameHostA the first host + * @param nameHostB the second host + * @return state of the operation + */ + bool addLinkBetween(const std::string & nameHostA, const std::string & nameHostB); + + /** + * Sends a message m from A to B + * + * @param nameHostA the first host + * @param nameHostB the second host + * @param message the message + */ + void sendMessage(const std::string & nameHostA, const std::string & nameHostB, + const std::string & message); + + /** + * Remove a link between two hosts in the network + * + * @param nameHostA the first host + * @param nameHostB the second host + * @return state of the operation + */ + bool removeLinkBetween(const std::string & nameHostA, const std::string & nameHostB); + + /** + * Write a representation of the network into a stream + * + * @param st output stream + */ + void printOn(std::ostream & st) const; + + /** + * Broadcast the routing table of each host to its neighbors. + */ + void broadcastTables(); + + /** + * Retrieve an host thanks to its hostname + * + * @param hostname the hostname + * @return the host + */ + Host * getHost(std::string hostname) const; + + + /** + * Process the queue. + */ + static void processQueue(void); + + /** + * Add a message to the queue. + * + * @param h the destination host + * @param m the message + */ + static void addToQueue(Host * h, const RipMessage & m); + + + private: + + /** + * the collection of Hosts in the network + */ + std::map _hosts; + + /** + * The double ended queue. + */ + static std::deque > _queue; +}; + + +/** + * Prints the details about the network on the output stream. + */ +std::ostream & operator<<(std::ostream & st, const Network & n); + + +#endif /* NETWORK_H */ + diff --git a/Cpp/TP7_Rip/src/RipMessage.cpp b/Cpp/TP7_Rip/src/RipMessage.cpp new file mode 100755 index 0000000..8e804cc --- /dev/null +++ b/Cpp/TP7_Rip/src/RipMessage.cpp @@ -0,0 +1,67 @@ +/** + * #(@)RipMessage.cpp ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/** + * Implementation of the class RipMessage. + */ + +/* + * @version 0.0.1 + * + * @done - + * + * @todo - + */ + + +#include + +#include "RipMessage.h" + +using namespace std; + + +RipMessage::RipMessage(Host & srcHost, const std::string & dstHost, int cost) + : _cost(cost), _srcHost(srcHost), _dstHost(dstHost) {} + + +RipMessage::~RipMessage() {} + + +std::ostream & operator<<(std::ostream & st, const RipMessage & msg) { + msg.printOn(st); + + return st; +} + +void RipMessage::printOn(std::ostream & st) const { + st << ""; +} + + +Host& RipMessage::srcHost() const { + return _srcHost; +} + + +std::string RipMessage::dstHost() const { + return _dstHost; +} + + +int RipMessage::cost() const { + return _cost; +} diff --git a/Cpp/TP7_Rip/src/RipMessage.h b/Cpp/TP7_Rip/src/RipMessage.h new file mode 100755 index 0000000..fdd0048 --- /dev/null +++ b/Cpp/TP7_Rip/src/RipMessage.h @@ -0,0 +1,93 @@ +/** + * #(@)RipMessage.h ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/** + * Defines a RIP message. + */ + +/* + * @version 0.0.1 + * + * @done - + * + * @todo - + */ + + + +#ifndef RIPMESSAGE_H +#define RIPMESSAGE_H + +#include + +#include "Host.h" +class Host; // fallback + +/** + * Represents a RIP message. + * + * @author Nicolas MASSE + * @author Thomas LIMIN +*/ +class RipMessage { +public: + /** + * Constructs a RIP message. + * + * @param srcHost the source host. + * @param dslHost the hostname of the destination host. + * @param cost the number of hops needed to reach the destination host. + */ + RipMessage(Host & srcHost, const std::string & dstHost, int cost); + + /** + * Destructs this RIP message. + */ + ~RipMessage(); + + /** + * Prints the details about this RIP message on the output stream. + * + * @param st the output stream. + */ + void printOn(std::ostream & st) const; + + /** + * Returns the host who sent this message. + */ + Host& srcHost() const; + + /** + * Returns the name of the destination host. + */ + std::string dstHost() const; + + /** + * Returns the number of hops needed to reach the destination host. + */ + int cost() const; + +private: + Host & _srcHost; + std::string _dstHost; + int _cost; +}; + +/** + * Prints the details about the RIP message on the output stream. + */ +std::ostream & operator<<(std::ostream & st, const RipMessage & msg); + + +#endif /* RIPMESSAGE_H */ diff --git a/Cpp/TP7_Rip/src/RoutingTable.cpp b/Cpp/TP7_Rip/src/RoutingTable.cpp new file mode 100755 index 0000000..d7e2fca --- /dev/null +++ b/Cpp/TP7_Rip/src/RoutingTable.cpp @@ -0,0 +1,143 @@ +/** + * #(@)RoutingTable.cpp ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/** + * Implementation of the RoutingTable. + */ + +/* + * @version 0.0.1 + * + * @done - + * + * @todo - + */ + +#include "RoutingTable.h" + + +using namespace std; + + +RoutingTable::RoutingTable() + : BasicRoutingTable() {} + + +RoutingTable::~RoutingTable() { + for (BasicRoutingTable::const_iterator i = this->begin(); + i != this->end(); + ++i) { + + delete i->second; + + } +} + +bool RoutingTable::contains(const string & host) const { + BasicRoutingTable::const_iterator it = this->find(host); + + return it != this->end(); +} + +bool RoutingTable::update(const string & dstHost, Host & gateway, int cost, int * updatedCost) { + + bool updated = false; + + RoutingTable::iterator it = this->find(dstHost); + + if (it != this->end()) { + // dstHost is already present in the routing table... + // check if the new cost is lower than the older + RoutingTableEntry * rte = (*it).second; + + if (cost < rte->cost()) { + // a shorter way to reach dstHost has been found, table entry + // must be updated + rte->cost(cost); + rte->gateway(gateway); + *updatedCost = cost; + updated = true; + } else if ((&gateway == &rte->gateway())) { + // change must be apply because it come from the current gateway to reach + // the wanted host + cout << "Modification from GW: route to " << dstHost << " through " << gateway.hostname() << " with " << cost << " hops" << std::endl; + + rte->cost(cost); + *updatedCost = cost; + updated = true; + } else if (cost >= INFINITE) { + std::cout << "Host receive broken route to " << dstHost << " from a neighbor which is not the gateway" << std::endl; + *updatedCost = rte->cost(); + + updated = true; + } else { + std::cout << "Default case: route to " << dstHost << " through " << gateway.hostname() << " with " << cost << " hops" << std::endl; + } + } else { + // dstHost is not in the routing table, it must be added + (*this)[dstHost] = new RoutingTableEntry(gateway, cost); + *updatedCost = cost; + updated = true; + } + + return updated; + +} + +// bool RoutingTable::remove(const std::string & dstHost) { +// bool result = false; +// RoutingTable::iterator it = this->find(dstHost); +// +// if (it != this->end()) { +// // the matching table entry has been found +// RoutingTableEntry * rte = it->second; +// delete rte; +// this->erase(it); +// result = true; +// } +// +// return result; +// +// } + + +std::ostream & operator <<(std::ostream & st, const RoutingTable & rt) { + rt.printOn(st); + + return st; +} + +void RoutingTable::printOn(std::ostream & st) const { + for (BasicRoutingTable::const_iterator i = this->begin(); + i != this->end(); + ++i) { + + st << "[route to \"" << i->first + << "\" through \"" << i->second->gateway().hostname() + << "\" with " << i->second->cost() << " hops]" << endl; + } +} + +RoutingTableEntry & RoutingTable::routingTableEntry(const std::string & host) const { + BasicRoutingTable::const_iterator it = this->find(host); + RoutingTableEntry * rte = 0; + + if (it != this->end()) { + rte = it->second; + } + + return *rte; +} + + diff --git a/Cpp/TP7_Rip/src/RoutingTable.h b/Cpp/TP7_Rip/src/RoutingTable.h new file mode 100755 index 0000000..48bcac1 --- /dev/null +++ b/Cpp/TP7_Rip/src/RoutingTable.h @@ -0,0 +1,105 @@ +/** + * #(@)RoutingTable.h ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/** + * + */ + +/* + * @version 0.0.1 + * + * @done - + * + * @todo - + */ + +#ifndef ROUTINGTABLE_H +#define ROUTINGTABLE_H + +#include + +#include "Host.h" +class Host; // fallback + +#include "RoutingTableEntry.h" +class RoutingTableEntry; // fallback + +#include "RipMessage.h" +class RipMessage; // fallback + +/** The parent class of the class RoutingTable */ +typedef std::map BasicRoutingTable; + +/** + * Represents a routing table. + * + * @author Nicolas MASSE + * @author Thomas LIMIN +*/ +class RoutingTable : public BasicRoutingTable { +public: + /** + * Constructs a new empty routing table. + */ + RoutingTable(); + + + /** + * Destructs this routing table. + */ + ~RoutingTable(); + + /** + * Tests if this routing table contains the specified host. + * + * @param host the host. + * @return true if this routing table contains the host, + * else false. + */ + bool contains(const std::string & host) const; + + /** + * Returns the routing table entry of the specified host. + * + * @param host the host. + * @return the routing table entry of the host. + */ + RoutingTableEntry & routingTableEntry(const std::string & host) const; + + /** + * Adds a routing entry to this routing table. If an entry already exists + * for this host, this function checks wether the newcost is lower in order to + * update the routing table only when necessary. + * + * @return true if the routing table has been updated, false otherwise + */ + bool update(const std::string & dstHost, Host & host, int cost, int * updatedCost); + + /** + * Prints details about the routing table on the stream. + * + * @param st the stream. + */ + void printOn(std::ostream & st) const; + +private: + +}; + +/** + * Prints the details about the routing table on the output stream. + */ +std::ostream & operator<<(std::ostream & st, const RoutingTable & rt); + +#endif /* ROUTING_TABLE_H */ diff --git a/Cpp/TP7_Rip/src/RoutingTableEntry.cpp b/Cpp/TP7_Rip/src/RoutingTableEntry.cpp new file mode 100755 index 0000000..640412d --- /dev/null +++ b/Cpp/TP7_Rip/src/RoutingTableEntry.cpp @@ -0,0 +1,53 @@ +/** + * #(@)RoutingTableEntry.cpp ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/** + * Implementation of the RoutingTableEntry class. + */ + +/* + * @version 2006-01-03 + * + * @done - + * + * @todo - + */ + + +#include + +#include "RoutingTableEntry.h" + +using namespace std; + +RoutingTableEntry::RoutingTableEntry(Host & gateway, int cost) : _gateway(&gateway), _cost(cost) { } + +Host& RoutingTableEntry::gateway() const { + return (* _gateway); +} + + + + +int RoutingTableEntry::cost() const { + return _cost; +} + +void RoutingTableEntry::cost(int cost) { + _cost = cost; +} + +void RoutingTableEntry::gateway(Host & gateway) { + _gateway = &gateway; +} diff --git a/Cpp/TP7_Rip/src/RoutingTableEntry.h b/Cpp/TP7_Rip/src/RoutingTableEntry.h new file mode 100755 index 0000000..84ad19e --- /dev/null +++ b/Cpp/TP7_Rip/src/RoutingTableEntry.h @@ -0,0 +1,88 @@ +/** + * #(@)RoutingTableEntry.h ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/** + * Represents an entry of a routing table. + */ + +/* + * @version 2006-01-03 + * + * @done - + * + * @todo - + */ + + + +#ifndef ROUTINGTABLEENTRY_H +#define ROUTINGTABLEENTRY_H + +#include "Host.h" +class Host; // fallback + +/** + * @author Nicolas MASSE + * @author Thomas LIMIN + */ +class RoutingTableEntry { +public: + /** + * Creates a new routing table entry with the gateway and the cost specified. + */ + RoutingTableEntry(Host& gateway, int cost = 0); + + + /** + * Returns the gateway host of this routing table entry. + * + * @return the neighbour host. + */ + Host& gateway() const; + + /** + * Set the gateway + * + * @param gateway the new gateway + */ + void gateway(Host & gateway); + + + /** + * Returns the number of hops to reach the destination host. + * + * @return the number of hops needed to reach the destination host. + */ + int cost() const; + + /** + * Set the cost + * + * @param cost the new cost + */ + void cost(int cost); + +private: + /** + * The gateway. + */ + Host * _gateway; + + /** + * The number of hops to reach the destination host. + */ + int _cost; +}; + +#endif /* ROUTINGTABLEENTRY_H */ diff --git a/Cpp/TP7_Rip/src/tp7.cpp b/Cpp/TP7_Rip/src/tp7.cpp new file mode 100755 index 0000000..dcb9c90 --- /dev/null +++ b/Cpp/TP7_Rip/src/tp7.cpp @@ -0,0 +1,72 @@ +/** + * #(@)tp7.cpp ENSICAEN 2006 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/** + * Entry point of the project. + */ + +/* + * @version 2006-01-03 + * + * @done - + * + * @todo - + */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#include +#include + +#include "Network.h" +#include "Host.h" + +using namespace std; + +int main(int argc, char *argv[]) { + + // build a network + Network n; + if (argc > 1) { + ifstream istr(argv[1]); + n.growNetwork(istr); + } else { + n.growNetwork(cin); + } + + + cout << n << endl; + + n.sendMessage("A", "G", "Titi"); + + n.removeLinkBetween("A", "C"); + + // unused because useless + //n.broadcastTables(); + + cout << n << endl; + + n.sendMessage("A", "G", "Titi"); + + n.removeLinkBetween("F", "D"); + + cout << n << endl; + + n.sendMessage("A", "G", "Titi"); + + return 0; +} diff --git a/Cpp/TP7_Rip/templates/cpp b/Cpp/TP7_Rip/templates/cpp new file mode 100755 index 0000000..102ff47 --- /dev/null +++ b/Cpp/TP7_Rip/templates/cpp @@ -0,0 +1,37 @@ +/** + * #(@)nomfichier.cpp ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/** + * Description des objectifs du programme, le sujet a traiter. + * Pour le programme qui contient le main(), + * la ligne de commande pour executer le programme. + */ + +#include + +/** + * Description succinte de l'algorithme utilise comme solution. + * Eventuellement: Les references (cahier des charges,bibliographiques...). + */ + +/* + * @version 0.0.1 + * + * @done - + * + * @todo - + */ + + + diff --git a/Cpp/TP7_Rip/templates/h b/Cpp/TP7_Rip/templates/h new file mode 100755 index 0000000..3e1bb3d --- /dev/null +++ b/Cpp/TP7_Rip/templates/h @@ -0,0 +1,37 @@ +/** + * #(@)nomfichier.h ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/** + * Description des objectifs du programme, le sujet a traiter. + * Pour le programme qui contient le main(), + * la ligne de commande pour executer le programme. + */ + +#include + +/** + * Description succinte de l'algorithme utilise comme solution. + * Eventuellement: Les references (cahier des charges,bibliographiques...). + */ + +/* + * @version 0.0.1 + * + * @done - + * + * @todo - + */ + + + diff --git a/Cpp/TP7_Rip/tp7.kdevelop b/Cpp/TP7_Rip/tp7.kdevelop new file mode 100755 index 0000000..7544b51 --- /dev/null +++ b/Cpp/TP7_Rip/tp7.kdevelop @@ -0,0 +1,209 @@ + + + + Nicolas MASSE & Thomas LIMIN + nicolas27.masse@laposte.net & thomas.limin@laposte.net + 0.1 + KDevAutoProject + C++ + + C++ + Code + + + . + false + + kdevsubversion + + + + src/tp7 + debug + true + + + src/tp7 + true + build + / + ../data/test_network.txt + true + + + + + optimized + kdevgccoptions + kdevgppoptions + kdevg77options + -O2 -g0 + + + --enable-debug=full + debug + kdevgccoptions + kdevgppoptions + kdevg77options + -O0 -g3 + + + + + + + + + + + + + + + + + true + 1 + false + + 0 + + + + + ada + ada_bugs_gcc + bash + bash_bugs + clanlib + w3c-dom-level2-html + fortran_bugs_gcc + gnome1 + gnustep + gtk + gtk_bugs + haskell + haskell_bugs_ghc + java_bugs_gcc + java_bugs_sun + kde2book + opengl + pascal_bugs_fp + php + php_bugs + perl + perl_bugs + python + python_bugs + qt-kdev3 + ruby + ruby_bugs + sdl + w3c-svg + sw + w3c-uaag10 + wxwidgets_bugs + + + Guide to the Qt Translation Tools + Qt Assistant Manual + Qt Designer Manual + Qt Reference Documentation + qmake User Guide + + + KDE Libraries (Doxygen) + + + + + + + + + + + + + false + false + + + *.o,*.lo,CVS + false + false + + + + + Doxygen Documentation Collection + tp7.tag + + + + + tp7 + tp7 + Tp7 + TP7 + Nicolas MASSE & Thomas LIMIN + nicolas27.masse@laposte.net & thomas.limin@laposte.net + GPL + COPYING + 0.1 + 2006 + /home/nicolas/tmp_dir/svn/artemis/tp7 + + + + + true + true + true + false + true + true + true + 250 + 400 + 250 + + + + set + m_,_ + theValue + false + true + + + false + 3 + /usr/qt/3 + + + + + .h + .cpp + + + + + + + libtool + + + + true + false + false + + + false + true + 10 + + + diff --git a/Cpp/TP7_Rip/tp7.kdevses b/Cpp/TP7_Rip/tp7.kdevses new file mode 100755 index 0000000..2c12aa0 --- /dev/null +++ b/Cpp/TP7_Rip/tp7.kdevses @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/DB/TD1/create.sql b/DB/TD1/create.sql new file mode 100755 index 0000000..fadc55f --- /dev/null +++ b/DB/TD1/create.sql @@ -0,0 +1,29 @@ +-- categ(_codecat_, libcat) +CREATE TABLE categ ( + codecat SERIAL PRIMARY KEY, + libcat VARCHAR(50) NOT NULL +); + +-- auteur(_numaut_, identaut) +CREATE TABLE auteur ( + numaut SERIAL PRIMARY KEY, + identaut VARCHAR(50) +); + +-- livre(_numliv_, titre, codecat*, annee, nbexe) +CREATE TABLE livre ( + numliv SERIAL PRIMARY KEY, + titre VARCHAR(100) NOT NULL, + codecat INTEGER REFERENCES categ, + annee INTEGER NOT NULL, + nbexe INTEGER NOT NULL DEFAULT 1 +); + +-- ecritpar(_numliv*, numaut*_) +CREATE TABLE ecritpar ( + numliv INTEGER NOT NULL REFERENCES livre, + numaut INTEGER NOT NULL REFERENCES auteur, + PRIMARY KEY (numliv, numaut) +); + + diff --git a/DB/TD1/insert.sql b/DB/TD1/insert.sql new file mode 100755 index 0000000..a4bcbce --- /dev/null +++ b/DB/TD1/insert.sql @@ -0,0 +1,124 @@ +-- Auteurs : V.Hugo, Jean d'Ormesson, Balzac, Stendhal, Flaubert, Verlaine +INSERT INTO auteur (identaut) VALUES ('V. Hugo'); +INSERT INTO auteur (identaut) VALUES ('Jean d''Ormesson'); +INSERT INTO auteur (identaut) VALUES ('Balzac'); +INSERT INTO auteur (identaut) VALUES ('Stendhal'); +INSERT INTO auteur (identaut) VALUES ('Flaubert'); +INSERT INTO auteur (identaut) VALUES ('Verlaine'); + +-- Catégories : théatre, poésie, roman +INSERT INTO categ (libcat) VALUES ('théatre'); +INSERT INTO categ (libcat) VALUES ('poésie'); +INSERT INTO categ (libcat) VALUES ('roman'); + +-- ---------------------------------------------------------------------------- +-- Livres +-- ---------------------------------------------------------------------------- + +-- "Hernani" de V.Hugo, théatre, 1830 +INSERT INTO livre (titre, codecat, annee) +SELECT 'Hernani', codecat, 1830 +FROM categ +WHERE libcat = 'théatre'; + +INSERT INTO ecritpar (numliv, numaut) VALUES ( + (SELECT numliv + FROM livre + WHERE titre = 'Hernani'), + (SELECT numaut + FROM auteur + WHERE identaut = 'V. Hugo') +); + + +-- "Les contemplations" de V.Hugo, poésie, 1856 +INSERT INTO livre (titre, codecat, annee) +SELECT 'Les contemplations', codecat, 1856 +FROM categ +WHERE libcat = 'poésie'; + +INSERT INTO ecritpar (numliv, numaut) VALUES ( + (SELECT numliv + FROM livre + WHERE titre = 'Les contemplations'), + (SELECT numaut + FROM auteur + WHERE identaut = 'V. Hugo') +); + +-- "Les misérables" de V.Hugo, roman, 1860 +INSERT INTO livre (titre, codecat, annee) +SELECT 'Les misérables', codecat, 1860 +FROM categ +WHERE libcat = 'roman'; + +INSERT INTO ecritpar (numliv, numaut) VALUES ( + (SELECT numliv + FROM livre + WHERE titre = 'Les misérables'), + (SELECT numaut + FROM auteur + WHERE identaut = 'V. Hugo') +); + +-- "Eugènie grandet" de Balzac, roman, 1833 +INSERT INTO livre (titre, codecat, annee) +SELECT 'Eugénie grandet', codecat, 1833 +FROM categ +WHERE libcat = 'roman'; + +INSERT INTO ecritpar (numliv, numaut) VALUES ( + (SELECT numliv + FROM livre + WHERE titre = 'Eugénie grandet'), + (SELECT numaut + FROM auteur + WHERE identaut = 'Balzac') +); + +-- "Le rouge et le noir" de Stendhal, roman, 1831 +INSERT INTO livre (titre, codecat, annee) +SELECT 'Le rouge et le noir', codecat, 1831 +FROM categ +WHERE libcat = 'roman'; + +INSERT INTO ecritpar (numliv, numaut) VALUES ( + (SELECT numliv + FROM livre + WHERE titre = 'Le rouge et le noir'), + (SELECT numaut + FROM auteur + WHERE identaut = 'Stendhal') +); + +-- "Madame Bovary" de Flaubert, roman, 1857 +INSERT INTO livre (titre, codecat, annee) +SELECT 'Madame Bovary', codecat, 1857 +FROM categ +WHERE libcat = 'roman'; + +INSERT INTO ecritpar (numliv, numaut) VALUES ( + (SELECT numliv + FROM livre + WHERE titre = 'Madame Bovary'), + (SELECT numaut + FROM auteur + WHERE identaut = 'Flaubert') +); + +-- "Poèmes saturniens" de Verlaine, poésie, 1866 +INSERT INTO livre (titre, codecat, annee) +SELECT 'Poèmes saturniens', codecat, 1866 +FROM categ +WHERE libcat = 'poésie'; + +INSERT INTO ecritpar (numliv, numaut) VALUES ( + (SELECT numliv + FROM livre + WHERE titre = 'Poèmes saturniens'), + (SELECT numaut + FROM auteur + WHERE identaut = 'Verlaine') +); + + diff --git a/DB/TP1_OrdresSQL/create.sql b/DB/TP1_OrdresSQL/create.sql new file mode 100755 index 0000000..93fc566 --- /dev/null +++ b/DB/TP1_OrdresSQL/create.sql @@ -0,0 +1,80 @@ +-- +-- create.sql ENSICAEN 2005 +-- +-- MASSE Nicolas (2005-Groupe3-LIMIN) +-- LIMIN Thomas (2005-Groupe3-MASSE) +-- +-- ENSICAEN +-- 6 Boulevard Marechal Juin +-- F-14050 Caen Cedex +-- +-- Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre +-- reproduit, utilise ou modifie sans l'avis express de ses auteurs. +-- + +-- +-- Creation des tables +-- + +-- +-- Version : 0.0.1 +-- +-- Fait : - +-- +-- A faire : - +-- + + +-- genre(_numg_, nomg) +-- numg : identifiant de genre +-- nomg : nom du genre +CREATE TABLE genre ( + numg INTEGER PRIMARY KEY, + nomg VARCHAR(80) NOT NULL +); + +-- com(_numc_, identc) +-- numc : identifiant de comedien +-- identc : nom et prenom du comedien +CREATE TABLE com ( + numc INTEGER PRIMARY KEY, + identc VARCHAR(30) NOT NULL +); + +-- realis(_numr_, identr) +-- numr : identifiant du realisateur +-- identr : nom et prenom du realisateur +CREATE TABLE realis ( + numr INTEGER PRIMARY KEY, + identr VARCHAR(30) NOT NULL +); + +-- film(_numf_, titre, numg*, annee, numr*, resume) +-- numf : identifiant du film +-- titre : titre du film +-- numg : identifiant du genre, reference la table genre +-- annee : annee de sortie du film +-- numr : identifiant du realisateur du film, reference la table realis +-- resume : resume du film +CREATE TABLE film ( + numf INTEGER PRIMARY KEY, + titre VARCHAR(80) NOT NULL, + numg INTEGER NOT NULL REFERENCES genre, + annee INTEGER NOT NULL DEFAULT date_part('year', now()) + CHECK (annee > 1850 + AND annee <= date_part('year', now()) + ), + numr INTEGER NOT NULL REFERENCES realis, + resume TEXT +); + +-- role(_numc*, numf*_) +-- numc : identifiant du comedien, reference la table com +-- numf : identifiant du film, reference la table film +CREATE TABLE role ( + numc INTEGER NOT NULL REFERENCES com, + numf INTEGER NOT NULL REFERENCES film, + PRIMARY KEY (numc, numf) +); + + diff --git a/DB/TP1_OrdresSQL/delete_data.sql b/DB/TP1_OrdresSQL/delete_data.sql new file mode 100755 index 0000000..4593923 --- /dev/null +++ b/DB/TP1_OrdresSQL/delete_data.sql @@ -0,0 +1,32 @@ +-- +-- delete_data.sql ENSICAEN 2005 +-- +-- MASSE Nicolas (2005-Groupe3-LIMIN) +-- LIMIN Thomas (2005-Groupe3-MASSE) +-- +-- ENSICAEN +-- 6 Boulevard Marechal Juin +-- F-14050 Caen Cedex +-- +-- Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre +-- reproduit, utilise ou modifie sans l'avis express de ses auteurs. +-- + +-- +-- Supprime toutes les donnees des tables +-- + +-- +-- Version : 1.0 +-- +-- Fait : - +-- +-- A faire : - +-- + +DELETE FROM role; +DELETE FROM film; +DELETE FROM com; +DELETE FROM realis; +DELETE FROM genre; + diff --git a/DB/TP1_OrdresSQL/drop_table.sql b/DB/TP1_OrdresSQL/drop_table.sql new file mode 100755 index 0000000..57f2c2f --- /dev/null +++ b/DB/TP1_OrdresSQL/drop_table.sql @@ -0,0 +1,32 @@ +-- +-- drop_table.sql ENSICAEN 2005 +-- +-- MASSE Nicolas (2005-Groupe3-LIMIN) +-- LIMIN Thomas (2005-Groupe3-MASSE) +-- +-- ENSICAEN +-- 6 Boulevard Marechal Juin +-- F-14050 Caen Cedex +-- +-- Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre +-- reproduit, utilise ou modifie sans l'avis express de ses auteurs. +-- + +-- +-- Supprime les tables +-- + +-- +-- Version : 1.0 +-- +-- Fait : - +-- +-- A faire : - +-- + +DROP TABLE role; +DROP TABLE film; +DROP TABLE realis; +DROP TABLE com; +DROP TABLE genre; + diff --git a/DB/TP1_OrdresSQL/dump/cinema.com b/DB/TP1_OrdresSQL/dump/cinema.com new file mode 100755 index 0000000..c077bb2 --- /dev/null +++ b/DB/TP1_OrdresSQL/dump/cinema.com @@ -0,0 +1,1410 @@ +-- +-- PostgreSQL database dump +-- + +SET client_encoding = 'SQL_ASCII'; +SET check_function_bodies = false; +SET client_min_messages = warning; + + + +-- +-- Data for Name: com; Type: TABLE DATA; Schema: limin; Owner: limin +-- + +COPY com (numc, identc) FROM stdin; +1 CELLIER Caroline +2 LANGLET Daniel +3 ARDITI Pierre +4 MARION Madeleine +5 ECOFFEY Jean-Philippe +6 BAYE Nathalie +7 MALAVOY Christophe +8 MNICH Genevieve +9 HARRIS Julie +10 BLOOM Claire +11 JOHNSON Richard +12 TAMBLYN Rus +13 MAXWELL Lois +14 BREL Jacques +15 HARDEN Jacques +16 RIVA Emmanuelle +17 NEIL Nathalie +18 DONAT Robert +19 CAROLL Madeleine +20 MANNHEIM Lucy +21 ASHCROFT Peggy +22 BRIALY Jean-Claude +23 CASSEL Jean-Pierre +24 DORLEAC Francoise +25 GARCIN Henri +26 GRAD Genevieve +27 LE POULAIN Jean +28 PROSLIER Jean-Marie +29 MONTAND Yves +30 SIGNORET Simone +31 PERIER Francois +32 SANDRELLI Stefania +33 CARRIERE Mathieu +34 GLOWNA Vadim +35 BONNAIRE Sandrine +36 DE LA BROSSE Simon +37 KECHICHE Abdel +38 ONFROY Stephane +39 PHILIPE Gerard +40 LOLLOBRIGIDA Gina +41 ROQUEVERT Noel +42 HUSSENOT Olivier +43 HERRAND Marcel +44 TENNBERG Jean-Marc +45 PAREDES Jean +46 ROLLAN Henri +47 PAGE Genevieve +48 BERNARDI Nerio +49 PELAYO Sylvie +50 ANYS Georgette +51 CUSHING Peter +52 LEE Christopher +53 GOUGH Michael +54 STRIBLING Melissa +55 MARSH Carol +56 VAN EYSSEN John +57 DICKIE Olga +58 GAUNT Valerie +59 MURPHY Audie +60 MAULDIN Bill +61 DICK Douglas +62 DANO Royal +63 DIERKES John +64 HUNNICUTT Arthur +65 DEVINE Andy +66 DURANT Tim +67 STRANGE Glenn +68 BALLEW Smith +69 JOLLEY Stanford +70 WHITE Dan +71 NOLTE Nick +72 BOOTHE Powers +73 IRONSIDE Michael +74 ALSONSO Maria +75 BERRY Richard +76 YANNE Jean +77 DELUC Xavier +78 BRUNAUX Olivia +79 HACKMAN Gene +80 STREISAND Barbra +81 LADD Diane +82 QUAID Dennis +83 DOBSON Kevin +84 BELVAUX Lucas +85 AUMONT Jean-Pierre +86 CARMET Jean +87 COTTON Eve +88 DREYFUS Jean-Claude +89 DUBOIS Jean-Paul +90 DENIS Jacques +91 KALFON Jean-Pierre +92 MESGUICH Daniel +93 STEVENIN Jean-Francois +94 THIBAULT Jean-Marc +95 BLOCH Bernard +96 BOUILLETTE Christian +97 BUKOWSKI Julien +98 DRAY Albert +99 IBANEZ Roger +100 LAUGHTON Charles +101 O'HARA Maureen +102 HARDWICKE Cedric +103 MITCHELL Thomas +104 O'BRIEN Edmond +105 HAMPDEN Walter +106 MARSHALL Alan +107 DAVENPORT Harry +108 ZUCCO George +109 WHITNEY Helen +110 GOMBELL Minna +111 LA ROCQUE Rod +112 HOHL Arthur +113 TOBIAS George +114 NEWMAN Paul +115 CRUISE Tom +116 MASTRANTONIO Mary-Elisabeth +117 SHAVER Helen +118 TURTURRO John +119 BRENNAN Eileen +120 KAHN Madeline +121 LLOYD Christopher +122 MC KEAN Michael +123 MULL Martin +124 WARREN Lesley Ann +125 VING Lee +126 CONNERY Sean +127 ST JOHN Jill +128 GRAY Charles +129 LEE Bernard +130 MORIN Michel +131 GIRAUD Roland +132 PASCAL Christine +133 LEGROS Stephane +134 CORNILLAC Clovis +135 THUILLIER Luc +136 MARECHAL Marcel +137 MARTIAL Jacques +138 ROSSELI Bernard +139 GABAY Nathalie +140 DOUGLAS Kirk +141 LANCASTER Burt +142 DURNING Charles +143 SMITH Alexis +144 CARVEY Dana +145 SCHWARZENEGGER Arnold +146 NIELSEN Brigitte +147 BERGMAN Sandahl +148 SMITH Paul +149 REYES Ernie +150 REYNOLDS Burt +151 BERGEN Candice +152 SEGAL George +153 PEREZ Jose +154 BRASSEUR Claude +155 ZABOU +156 GELIN Daniel +157 BORGEAUD Nelly +158 ADELIN Jean-Claude +159 ALLEN Woody +160 CARRADINE John +161 JACOBI Lou +162 LASSER Louise +163 QUAYLE Anthony +164 ENGLUND Robert +165 YORRENS Tania +166 DESMOUCEAUX Georgy +167 MERCIER Chantal +168 GOLDMAN Philippe +169 STALLONE Sylvester +170 SHIRE Talia +171 YOUNG Burt +172 WEATHERS Carl +173 MISTER T +174 EASTWOOD Clint +175 ALEXANDER Jane +542 KINSKI Klaus +177 TORN Rip +178 CARA Irene +179 DETMERS Maruschka +180 PLACIDO Michele +181 DIEGO Juan +182 PICCOLI Michel +183 SERRAULT Michel +184 DUNOYER Francois +185 FLON Suzanne +186 FRESSON Bernard +187 DAVIS Bette +188 RICHARDS Kim +189 EISENMANN Ike +190 CLAYBURGH Jill +191 STERNHAGEN Frances +192 PENDLETON Austin +193 BOUYX Evelyne +194 BOISSON Christine +195 COX Ronny +196 BESCH Bibi +197 CLEMENS Paul +198 LANVIN Gerard +199 BUSIA Akosua +200 BROOKS Richard +201 KILLING Laure +202 BLANCHE Roland +203 HARARI Clement +204 NORRIS Chuck +205 SOON-TECK Oh +206 WILLIAMS Steven +207 OHTA Bennett +208 COSTA Cosie +209 TERRY Joe Michael +210 HALL Anthony Michael +211 LE BROCK Kelly +212 SMITH Llan Mitchell +213 PAXTON Bill +214 SNYDER Suzanne +215 DUNNE Griffin +216 ARQUETTE Rosanna +217 BLOOM Verna +218 CHONG Thomas +219 BALASKO Josiane +220 DE BANKOLE Isaach +221 HOLGADO Ticky +222 OLIVIER Patrick +223 LEAUD Jean-Pierre +224 BRODERICK Matthew +225 RUCK Alan +226 SARA Mia +227 JONES Jeffrey +228 GREY Jennifer +229 PICKET Cindy +230 WARD Lyman +231 VANEL Charles +232 GREY Denise +233 MAILLAN Jacqueline +234 LAFONT Bernadette +235 HUPPERT Isabelle +236 WILSON Lambert +237 RADZIWILOWICZ Jerzy +238 SHARIF Omar +239 LEMMON Jack +240 MATTHAU Walter +241 EVANS Monica +242 SHELLEY Carole +243 DELON Alain +244 BOURVIL Andre +245 MICHEL Dominique +246 BERRYMAN Dorothee +247 PORTAL Louise +248 RIOUX Genevieve +249 CURZI Pierre +250 GIRARD Remy +251 JACQUES Yves +252 BRIERE Daniel +253 CRAIN Jeanne +254 BRICE Pierre +255 BARRYMORE John Drew +256 MITCHELL Gordon +257 DE VITO Danny +258 MIDLER Bette +259 REINHOLD Judge +260 SLATER Helen +261 MORRIS Anita +262 DEWAERE Patrick +263 GOLDSMITH Clio +264 MOREAU Jeanne +265 MARCHAND Guy +266 DUX Pierre +267 MODINE Matthew +268 CAGE Nicolas +269 HARKINS John +270 BARON Sandy +271 YOUNG Karen +272 VALLI Alida +273 DUFILHO Jacques +274 TORNADE Pierre +275 LUNDGREN Dolph +276 DUEZ Sophie +277 MAUREL Julien +278 CAROIT Philippe +279 GERE Richard +280 EICHHORN Lisa +281 REDGRAVE Vanessa +282 DEVANE William +283 VENNERA Chick +284 MORGAN Wendy +285 BRUEL Patrick +286 BROCHET Anne +287 BLANCHOT Agnes +288 HELD Ingrid +289 COLLETTE Yann +290 SENTIER Jean-Pierre +291 FONTES Guiherme +292 GONCALVES Milton +293 FERREIRA Taumaturgo +294 WILTGEN Ana Beatriz +295 TRINDADE Ze +296 PIRES Miriam +297 HOGAN Paul +298 KOZLOWSKI Linda +299 STEEBURGER Mary +300 NICHOLSON Jack +301 D'ANGELO Beverly +302 FELL Norman +303 DOOLEY Paul +304 WAKABAYASHI Akiko +305 TMABA Tetsuro +306 HAMA Mie +307 SHIMADA Teru +308 MURPHY Eddie +309 DANCE Charles +310 LEWIS Charlotte +311 PERKINS Anthony +312 SCARWID Diana +313 FAHEY Jeff +314 MAXWELL Roberta +315 GILLIN Hugh +316 BAYER Gary +317 LAUTERBACH Heiner +318 OSCHSENKNECHT Uwe +319 KRIENER Ulrike +320 MAGIMEL Benoit +321 VINCENT Helene +322 WILMS Andre +323 GARNER James +324 SPRADLIN G.D. +325 JONES Shirley +326 HOWELL C. Thomas +327 CRENNA Richard +328 NIKSON Julie +329 NAPIER Charles +330 BERKOFF Steven +331 PENN Sean +332 SANTONI Reni +333 MORALES Esai +334 DREYFUSS Richard +335 ANSPACH Susan +336 HOFFMANN Dustin +337 GOLINO Valeria +338 DENEUVE Catherine +339 DUSSOLIER Andre +340 LAMOTTE Martin +341 CHAPLIN Charlie +342 CHERRILL Virginia +343 MYERS Harry +344 BRONSON Charles +345 RAFFIN Deborah +346 LAUTER Ed +347 RENUCCI Robin +348 TRAN Marguerite +349 ANDREWS Harry +350 BANNEN Ian +351 LYNCH Alfred +352 MANESSE Gaspard +353 FETJO Raphael +354 MORIER-GENOUD Philippe +355 CHAULET Emmanuelle +356 RENOIR Sophie +357 VIELLARD Eric +358 GENDRON Francois-Eric +361 WATERSTON Sam +359 CLUZET Francois +360 SCOTT-THOMAS Kristin +362 NGOR Haing S. +363 BARRAULT Marie-Christine +364 CREMER Bruno +365 BONNET Stephane +366 PRADAL Bruno +367 DAFOE Willem +368 FONDA Jane +369 VOIGHT Jon +370 DERN Bruce +371 GODDARD Paulette +372 BERGMAN Henry +373 BERENGER Tom +374 PARE Michael +375 FERREOL Andrea +376 BRENER Muriel +377 CHESNAY Patrick +378 TILLY Meg +379 DERRICKS Cleavant +380 OLIVIER Laurence +381 NIVEN David +382 BOHRINGER Richard +383 HUBERT Antoine +384 HUBERT Julien +385 PACINO Al +386 SUTHERLAND Donald +387 KINSKI Nastassja +388 LANGMANN Thomas +389 PSZONIAK Wojtek +390 GIRAUDI Nicolas +391 MORIARTY Michael +392 SNODGRESS Carrie +393 DE NIRO Robert +394 KEITEL Harvey +395 PROVAL David +396 BEALS Jennifer +397 NOURI Michael +398 BAUER Belinda +399 BILLINGSLEY Jennifer +400 BEATTY Ned +401 HOPKINS Bob +402 LLOYD Emily +403 BELL Tom +404 DURHAM Geoffrey +405 HEYWOOD Pat +406 CAAN James +407 SORVINO Paul +408 HUTTON Lauren +409 CARNOVSKY Morris +410 BROOKES Jacqueline +411 ROURKE Mickey +412 RAMPLING Charlotte +413 DICKSON Neil +414 HYDE-WHITE Alex +415 HUTCHINSON Fiona +416 GASPERITSCH Vincent +417 NEGRET Francois +418 HEREDIA Lisa +419 REED Oliver +420 OAKLAND Simon +421 DE MORNAY Rebecca +422 ARMSTRONG Curtis +423 LEROY-BEAULIEU Philippine +424 MARTIN Remi +425 CHAUMETTE Monique +426 SAINT-JEAN Guy +427 BLANC Michel +428 BATES Alan +429 DAVIS Sammi +430 FULFORD Christopher +431 CODURI Camille +432 CLEES John +433 LEE CURTIS Jamie +434 KLINE Kevin +435 PALIN Michael +436 ANTONUTTI Omero +437 ROEL Gabriela +438 HAGERTY Julie +439 HAYS Robert +440 GRAVES Peter +441 STACK Robert +442 DARMON Gerard +443 JEANNERET Anais +444 COMBENEGRE Philippe +445 SAVAGE John +446 WILLIAMS Treat +447 DE BAYSER Clotilde +448 GOLDEN Annie +449 KHORSAND Philippe +450 AUDRAN Stephane +451 MOEST Veronique +452 PECK Gregory +453 FLANDERS Ed +454 O'HERLIHY Dan +455 POIRET Jean +456 GALIENA Anna +457 STEFFEN Valerie +458 AFONSO Yves +459 SCHMIDT Odile +460 GARY Lorraine +461 GUEST Lance +462 VAN PEEBLES Mario +463 CAINE Michael +464 DANGERFIELD Rodney +465 KELLERMAN Sally +466 GORDON Keith +467 WHITEHEAD Paxton +468 DOWNEY Robert Jr +469 WALKEN Christopher +470 MASTERSON Mary Stuart +471 PENN Christopher +472 PERKINS Millie +473 RYAN Eileen +474 DE LUISE Dom +475 WOODWARD Joanne +476 FIELD Sally +477 LAMBERT Christophe +478 STAMP Terence +479 BOSCHI Giula +480 ACKLAND Joss +481 CALHOUN Rory +482 MASSARI Lea +483 MARCHAL Georges +484 KARR Mabel +485 JONES Tommy Lee +486 HAMILTON Linda +487 VAUGHN Robert +488 PIGNET Christine +489 MONS Maurice +490 BOUCHITEY Patrick +820 SMITH Kurtwood +492 DUCASSE Cecile +493 BACRI Jean-Pierre +494 ALDA Alan +495 HARRIS Barbara +496 STREEP Meryl +497 STAPEL Huub +498 VAN AMMELROOY Willeke +499 VAN DALSUM Josine +500 ROMER Piet +501 VEERMAN Hans +502 BOMPOIL Michel +503 PHILIPE Anne-Marie +504 CARRILLO Elpidia +505 DUKE Bill +506 BIRKIN Jane +507 DEMY Mathieu +508 GAINSBOURG Charlotte +509 ANGLADE Jean-Hugues +510 CELARIE Clementine +511 TAUSIG Otto +512 KEATON Michael +513 BASSINGER Kim +514 VOLONTE Gian-Maria +515 ABATANLUONO Diego +516 LIOTARD Therese +517 POLIMENO Santo +518 KEITH David +519 PROSKY Robert +520 BABCOCK Barbara +521 LONE John +522 O'TOOLE Peter +523 CHEN Joan +524 RUOCHENG Ying +525 STOLZ Eric +526 CARRICO Monica +527 MARGOLIN Stuart +528 BRADFORD Richard +529 HARRIS Ed +530 WHALLEY Joanne +578 BRAUNDAUER Klaus Maria +532 SUCHET David +533 McGILLIS Kelly +534 KILMER Val +535 EDWARDS Anthony +536 SKERRITT Tom +828 HEARD John +538 AUTEUIL Daniel +539 MARIELLE Jean-Pierre +540 LAVANANT Dominique +541 LINDON Vincent +176 VOYAGIS Yorgo +543 WINGER Debra +544 RUSSEL Theresa +545 FREY Sami +546 HOPPER Dennis +547 WILLIAMSON Nicol +548 NOIRET Philippe +549 AZEMA Sabine +550 BROOKS Mel +551 CANDY John +552 MORANIS Rick +553 PULLMAN Bill +554 WINSLOW Michael +555 ZUNIGA Daphne +556 VAN PATTEN Dick +557 ASTIN Sean +558 BROLIN Josh +559 COHEN Jeff +560 FELDMAN Corey +561 BIEHN Michael +562 DEPARDIEU Gerard +563 CARDONE Nathalie +564 LAZENBY George +565 RIGG Diana +566 SAVALAS Telly +567 BORIENKO Yuri +568 JOBERT Marlene +569 DUTRONC Jacques +570 FOSSEY Brigitte +571 GALLIGAN Zach +572 CATES Phoebe +573 AXTON Hoyt +574 HOLLIDAY Polly +575 LEE McCAIN Frances +576 BRADY Scott +577 FORD Harrison +531 KEATON Diane +579 VILLERET Jacques +580 DARLAN Eva +581 SEREYS Jacques +582 HIEGEL Catherine +583 BOUDET Jacques +584 HURT William +585 MATLIN Marlee +586 LAURIE Piper +587 BOSCO Philip +588 GOMPF Allison +589 CLEARY John F. +590 SEYMOUR Jane +591 BALMER Jean-Francois +592 SEWERIN Andrzej +593 BASLER Marianne +594 USTINOV Peter +595 MILES Sarah +596 RICE-EDWARDS Sebastien +597 HAYMAN David +598 O'CONNOR Derrick +599 WOOLRIDGE Susan +600 WASSON Craig +601 GRIFFITH Melanie +602 HENRY Gregg +603 SHELTON Deborah +604 BOYD Guy +605 FRANZ Dennis +606 BARKIN Ellen +607 SMITH Ebbe Roe +608 GLENN Scott +609 COSTNER Kevin +610 GLOVER Danny +611 SAGERBRECHT Mariane +612 POUNDER C.C.H. +613 PALANCE Jack +614 KAUFMANN Christine +615 CALHOUN Monica +616 FLAGG Darron +617 AQUILAR George +618 BISSET Jacqueline +619 PEREZ Vincent +620 SILVER Veronique +621 LAMBRECHT Yves +622 PERRIN Jacques +623 CASCIO Salvatore +624 BOURGINE Elisabeth +625 LEOTARD Philippe +626 LUCCHINI Fabrice +629 MAC Lachlan Kyle +630 CHRISTIAN Claudia +631 FELDER Clarence +632 GULAGER Clu +633 MULKEY Chris +634 FREMONT Thierry +635 KAPRISKY Valerie +636 KALFA Steve +637 KERBOUL Yves +638 ROBERTSON Cliff +639 McMILLAN Kenneth +640 GIBB Cynthia +641 DANIELS Jeff +642 STAPLETON Maureen +643 CHANNING Stockard +644 MASUR Richard +793 WEBER Jacques +646 BONO Sonny +647 BURR Raymond +648 CONNORS Chuck +649 SHATNER William +650 GOLDBERG Whoopi +651 COLLINS Stephen +652 WOOD John +653 KANE Carol +654 POTTS Annie +655 GOETZ Peter Michael +656 GARCIA Nicole +657 STANCZAK Wadeck +658 PRANDI F. Romana +659 BARRAULT Jean-Louis +660 RENAUD Madeleine +661 BRANDAUER Klaus-Maria +662 LOGGIA Robert +663 BLAKELY Susan +664 ZUMWALT Rick +665 MENDENHALL D. +666 McCARTY Chris +667 TOGNAZZI Ugo +668 GALABRU Michel +669 LUKE Benny +670 WILBY James +671 GRANT Hugh +672 GRAVES Rupert +673 ELLIOTT Denholm +674 TANDY Mark +675 THOMAS-HOWELL C. +676 TAYLOR Elizabeth +677 WARD Sophie +678 RHYS-DAVIES John +679 SHEEN Martin +680 NIMOY Leonard +681 KELLEY DeForest +682 DOOHAN James +683 NICHOLS Michelle +684 MACCHIO Ralph +685 MASON Marsha +686 YOUNG Sean +687 PATTON Will +688 ROBARDS Jason +689 GOODMAN Dody +690 TRINTIGNANT Marie +691 TAVERNIER Nils +692 BUNEL Marie +693 ADJANI Isabelle +694 GREVILLE Laurent +695 CUNY Alain +696 ROBINSON Madeleine +697 LEBRUN Daniele +698 HUSTON Angelica +699 JONES James Earl +700 JUGNOT Gerard +701 GLASS Ann-Gisel +702 FULLER Samuel +703 REED Ricky Addison +704 PHILLIPS Lou Diamond +705 DE SOTTO Rosana +706 PENA Elizabeth +707 VON ZERNECK Danielle +708 CHER +709 GARDENIA Vincent +710 DUKAKIS Olympia +711 AIELLO Danny +712 MAAS Hidde +713 VAN DE VEN Monique +714 VALCKE Serge-Henri +715 HARRIS Richard +716 EGGAR Samantha +717 BANCROFT Anne +718 GELINAS Gratien +719 ARCAND Gabriel +720 FABIAN Francoise +721 BRIDGES Jess +722 GLOSE Glenn +723 COYOTE Peter +725 TAYLOR-YOUNG Leigh +726 DENNER John +727 LEE Tommy +728 PLIMTON Martha +729 DENNEHY Brian +730 SMITH Shawn +731 ATKINS Tom +732 CAMPBELL Bruce +733 Z'DAR Robert +734 LANDON Laurence +735 FEUER Debra +736 HUTTON Thimothy +737 CROUSE Lindsay +738 HASSET Marilyn +739 BRIDGES Beau +740 MONTGOMERY Belinda J. +741 BRYANT William +742 GOLDBLUM Jeff +743 DAVIS Geena +744 GETZ John +745 BOUSHEL Joy +746 CARLSON Les +747 CRONENBERG David +748 DORF Stephen +749 DENTON Christa +750 TRIPP Louis +751 DELEMARE Lise +752 MERCURE Jean +753 FERRAN Catherine +754 WEAVER Fritz +755 CORBETT Gretchen +756 KORKES Jon +757 LAFONT Jean-Philippe +758 FEDERSPIEL Brigitte +759 KJER Bodil +760 KULLE Jarl +761 ANDERSON Bibi +762 RICH Claude +763 DEMIANS Virginie +764 LORENT Ariane +765 BAUER Steven +766 WILLIAMS Barbara +767 CARUSO David +768 EBERSOLE Christine +769 WENDT George +770 MIOU-MIOU +771 CASARES Maria +772 ROYER Regis +773 HUNT Helen +774 SADLER Bill +775 BRIDGES Jeff +776 ALLEN Karen +777 SMITH Charles M. +778 JAECKEL Richard +779 BISSON Jean-Pierre +780 GOSSETT Loui Jr +781 WIDMARK Richard +782 HUNTER Holly +783 SENECA Joe +784 FOSTER Eric +785 VALENTINE Kim +786 LEE Ida +787 ROCHEFORT Jean +788 BLANC Dominique +789 ARPIN Regis +790 BEHAR David +791 CALFA Don +792 BATEMAN Suzanne +645 BERTIN Roland +794 CASSEL Jacqueline +795 SCIALLA Freel +796 SHORT Martin +797 RYAN Meg +798 McCARTHY Kevin +799 LEWIS Fiona +800 WELLS Vernon +801 BARYSHNIKOV Mikhael +802 HINES Gregory +803 SKOLIMOWSKI Jerzy +804 ROSSELLINI Isabella +805 MIRREN Helen +806 STEENBURGEN Mary +807 McDOWALL Roddy +808 RUBES Jan +809 RUSS William +810 LYNCH Richard +811 PROPHET Melissa +812 ZALE Alexander +813 BEZACE Didier +814 O'NEAL Tatum +815 MACNICHOL Kristy +816 DILLON Matt +817 AVERY Margaret +818 WINFREY Oprah +819 PUGH Willard +491 WELLER Peter +821 WELD Tuesday +822 NELSON Willie +823 BELUSHI James +824 SIGNORELLI Tom +825 FARROW Mia +826 WIEST Dianne +827 STRITCH Elaine +537 BLAIR Betsy +829 ALLEN Nancy +830 O'ROURKE Heather +831 RUBINSTEIN Zelda +832 RICHARD Firmine +833 VERNIER Pierre +834 LEOUX Maxime +835 PRIVAT Gilles +836 COMBEAU Muriel +837 SCOTT George C. +838 VAN DEVERE Trish +839 DOUGLAS Melvyn +840 BELMONDO Jean-Paul +841 ANCONINA Richard +842 LIO +843 STANTON Harry Dean +844 ESTEVEZ Emilio +845 WALTER Tracey +846 BARASH Olivia +847 O'NEAL Ryan +848 BERENSON Marisa +849 MAGEE Patrick +850 KRUGER Hardy +851 ROGERS Mimi +852 BRACCO Lorraine +853 ORBACH Jerry +854 WILLIAMS Robin +855 WHITAKER Forest +856 TRAN Tung Thanh +857 SUKAPATANA Chintara +858 ADDAMS Dawn +859 JOHNSTON Oliver +860 CHAPLIN Michael +861 AUDLEY Maxime +862 GREEN Harry +863 AYKROYD Dan +864 HANKS Tom +865 PLUMMER Christopher +866 MORGAN Harry +867 GARFUNKEL Art +868 REGGIANI Serge +869 CATALIFO Patrick +870 SINGER Marc +871 UNGER Joe +872 BROOKS Albert +873 DE ALMEIDA Joachim +874 KINGSLEY Ben +875 SARANDON Susan +876 STAPLETON Jean +877 VAN DAM Jose +878 ROUSSEL Anne +879 VOLTER Philippe +880 ANHOLT Christian +881 WEST Samuel +882 BUCKLEY Betty +883 SEIGNER Emmanuelle +884 MAHONEY John +885 KLEIN Gerard +886 PINON Dominique +887 DHARKER Ayesha +888 SANDS Julian +889 LONG Shelley +893 GOSSET Louis Jr. +894 GEDRICK Jason +895 THOMERSON Tim +896 CARTER Helena Bonham +897 ELWES Cary +898 BALE Christian +899 MALKOVITCH John +900 RICHARDSON Miranda +901 HAVERS Nigel +902 PANTOLIANO Joe +903 DALLE Beatrice +904 FREISS Stephane +906 TWOMEY Anne +907 HARPER Jessica +908 MADONNA +909 MORRIS Haviland +910 HUTTON Timothy +911 GIBSON Mel +912 BUSEY Gary +913 RYAN Mitchell +914 LOVE Darlene +915 LANOUX Victor +916 BLANC Eric +917 FRANCOIS Jacques +918 GUTTENBERG Steve +919 McGOVERN Elizabeth +920 SHENAR Paul +921 POITIER Sidney +922 BROWN Clancy +923 ALLEY Kirstie +924 JOUVET Louis +925 SIMON Michel +926 FRANCEN Victor +927 OZERAY Madeleine +928 STROH Valerie +929 BERTELOOT Jean-Yves +930 BONNAFFE Jacques +931 CHAPUIS Pierre-Alain +932 SCOB Edith +933 HARRISON Gregory +934 WHITELEY Arkie +935 KERR Bill +936 HAYWOOD Chris +937 ARGUE David +938 MORRIS Judy +939 SMITH Charles Martin +940 GARCIA Andy +941 SORIANO Pepe +942 SAZATORNIL Jose +943 LAMPREAVE Chus +944 CODESCO Manolo +945 PRICE Jonathan +946 PALIN Michel +947 GREIST Kim +948 BALDWIN Alec +949 NEILL Sam +950 PORTER Eric +951 REES Angharad +952 MERROW Jane +953 BELUSHI Jim +954 BOYLE Peter +955 O'ROSS Ed +956 BRIGHT Richard +957 HAUER Rutger +958 KRABBE Jeroen +959 DE LINT Derek +960 LOCKE Sondra +961 BAIRD Sharon +962 TOWSEND Robert +963 GRAHAM Guerrit +964 TOMITA Tamlyn +965 BASINGER Kim +966 DZUNDZA George +967 BASABARA Gary +968 OLIVER David +969 URSITTI Susan +970 MARKHAM Monte +971 PFEIFFER Michelle +972 LIOTTA Ray +973 PESCI Joe +974 WARD Fred +975 THURMAN Una +976 DE MEDEIROS Maria +977 DE CAPITANI Grace +978 ABASCAL Margot +979 LHERMITTE Thierry +980 SARDOU Michel +982 DOUGLAS Michael +983 SHEEN Charlie +984 HANNAH Daryl +985 BLACK Karen +986 NESBITT Cathleen +987 HAWKINS Jack +988 COLLINS Joan +989 HEMIGWAY Mariel +990 McGILL Everett +991 GUNN Moses +992 HECKART Eileen +993 SVENSON Bo +994 OLBRYCHSKI Daniel +995 LABOURIER Dominique +996 CHICOT Etienne +997 HANIN Roger +998 VAN UCHELEN Marc +999 VAN DER LUBBE Huub +1000 BAKER Carrol +1001 O'KEEFE Michael +1002 VENORA Diane +1003 WAITS Tom +1004 GIRARDOT Annie +1005 CLEMENT Aurore +1006 BAUCHAU Patrick +1007 CAREL Roger +1008 SOMMER Josef +1009 THOMPSON Brian +1010 ROBINSON Andrew +1011 HERZFELD John +1012 CLARKSON Patricia +1013 NEESON Liam +1014 KIM Evan C. +1015 HUNT David +1016 BEART Emmanuelle +1017 HOSSEIN Robert +1018 BAUSSON Mona +1019 TURNER Kathleen +1020 WRIGHT Amy +1021 DUDIKOFF Michael +1022 JAMES Steve +1023 CONWAY Gary +1024 BOTES Michelles +1025 PARADIS Vanessa +1026 MIKAEL Ludmilla +1027 MOORE Roger +1028 BOUQUET Carole +1029 TOPOL +1030 JOHNSON Lynn-Holly +1031 GLOVER Julian +1032 DE CAUNES Antoine +1033 DINEV Patricia +1034 NOEL Magali +1035 GIRARDOT Hippolyte +1036 PERRIER Mireille +1037 ATTAL Yvan +1038 CARRADINE David +1039 ROUNDTREE Richard +1040 MAURIER Claire +1041 AUFFAY Patrick +1042 REMY Albert +1043 WILLIS Bruce +1044 RICKMAN Alan +1045 BEDELIA Bonnie +1046 GODOUNOV Alexander +1047 MUTI Ornella +1048 MANTEGNA Joe +1049 DUNAWAY Faye +1050 BACALL Michael +1051 HALLYDAY David +1052 CARTER T.K. +1053 TILLY Jennifer +1054 MISHA McK +1055 CLENNON David +1056 PHOENIX River +1057 STEELE Jadrien +1058 DONNADIEU Bernard-Pierre +1059 BERVOETS Gene +1060 TER STEEGE Johanna +1061 ECKHAUS Gwen +1063 HENRY Judith +1064 GARREL Maurice +1065 LANDGREBE Gudrun +1066 LYNCH Kelly +1067 HOPKINS Anthony +1068 McRAE Frank +1069 FOX James +1070 TOKUDA Marilyn +1071 WEYERS Marius +1072 OBERON Elan +1073 ALEONG Aki +1074 WISE William +1075 LOPEZ Gerry +1076 MOSCOW David +1077 PERKINS Elizabeth +1078 HUSHTON Jared +1079 LOVITZ Jon +1080 ALONSO Maria-Conchita +1081 KOTTO Yaphet +1082 VENTURA Jesse +1083 SPADER James +1084 STUBBS Neil +1085 COLLIN Melodie +1086 MAGNET Cecile +1087 BERMAN Marc +1088 FROT Catherine +1089 IRONS Jeremy +1090 BUJOLD Genevieve +1091 VON PALLESKE Heidi +1092 GORDON Barbara +1093 DOUGLAS Shirley +1094 BROWN Bryan +1095 SHUE Elizabeth +1096 BANES Lisa +1097 LUCKINBILL Laurence +1098 MUSY Alain +1099 DUCREUX Louis +1100 FLOERSHEIM Patrick +1101 THOMPSON Lea +1102 DILLON Melinda +1103 STERN Daniel +1104 WEAVER Sigourney +1105 MILUWI John Omirah +1106 CUTHBERTSON Iain +1107 HERSHEY Barbara +1108 KAZAN Lainie +1109 HALLIER Lori +1110 DAVID Lolita +1111 IVEY Judith +1112 SALENGER Meredith +1113 CUSACK John +1114 WISE Ray +1115 BOTTOMS Timothy +1116 FOX Edward +1117 NAKADAI Tatsuya +1118 TATE Nick +1119 Mc DONNEL Mary +1120 GREEN Graham +1121 O'NEAL Tricia +1122 MARACHUK Steve +1123 HENRIKSEN Lance +1124 PAULL Ricky G. +1125 GRIMES Scott +1126 OPPER Don +1127 CURTIS Liane +1128 CORBIN Barry +1129 BATAILLE Julie +1130 PAGNY Florent +1131 KARYO Tcheky +1132 LANE Diane +1133 WOODS Michael +1134 SMITH Cotter +1135 NEVARGIC Peter +1136 PENN Edward +1137 LANG Stephen +1138 LEIGH Jennifer Jason +1139 ARQUETTE Alexis +1140 DOBSON Peter +1141 BALDWIN Stephen +1142 LORING James +1143 HARMON Mark +1144 THOMAS Robin +1145 LABORTEAUX Patrick +1146 NORTON Terry +1147 LEPLAT Ted +1148 ROWLANDS Gena +1149 HOLM Ian +1150 DANNER Blythe +1151 YULIN Harris +1152 CONROY Frances +1153 PARILLAUD Anne +1154 KARIO Tcheky +1155 CLAVIER Christian +1156 RENO Jean +1157 DAVIS Brad +1158 NERO Franco +1159 MALLET Laurent +1160 DEMPSEY Patrick +1161 PETERSON Amanda +1162 GAINS Courtney +1163 CASPARY Tina +1164 GREEN Seth +1165 THOMAS Henry +1166 WALLACE Dee +1167 BARRYMORE Drew +1168 MARTEL K.C. +1169 FRYE Sean +1170 MOLINA Angela +1171 EZRALOW Daniel +1172 SQUILLANTE Vittorio +1173 BONACELLI Paolo +1174 DOUGNAC Marie-Laure +1175 RUFUS +1176 STOCKWELL Dean +1177 RUEHL Mercedes +1178 FOSTER Jodie +1179 COULSON Bernie +1180 ROSSI Leo +1181 HEARN Ann +1182 MOCKY Jean-Pierre +1183 GRANDT Laura +1184 GODIN Marjorie +1185 LIGER Pascal +1186 McCOMB Heather +1187 QUESTEL Mae +1188 CURRIE Cherie +1189 KAGAN Marilyn +1190 STROH Kandice +1191 QUAID Randy +1192 VIEIRA Asia +1193 BELLAMY Ralph +1195 CLOSE Glenn +1196 ARCHER Anne +1197 LATZEN Ellen Hamilton +1198 PANKIN Stuart +1199 MASTROIANNI Marcello +1200 TROISI Massimo +1201 BACON Kevin +1202 FIRTH Colin +1203 BENING Annette +1204 BALK Fairuza +1205 JULIA Raul +1206 JENKINS Daniel +1207 FARGAS Antonio +1208 RUSSELL Kurt +1209 WALSH J.T. +1210 HOWARD Arliss +1211 MAGNUSSON Ann +1212 McDOWELL Andie +1213 GALLAGHER Peter +1214 SAN GIACOMA Laura +1215 WAWIER Ron +1216 BRAGA Sonia +1217 JONES Grace +1218 ROBERTS Tanya +1219 MACNEE Patrick +1220 BELUSHI John +1221 WALKER Kathryn +1222 MORIARTY Cathy +1223 GAVON Igor +1224 CUSAK Joan +1225 DAVIS Ossie +1226 DEE Ruby +1227 EDSON Richard +1228 ESPOSITO Giancarlo +1229 LEE Joie +1230 LEE Sipke +1231 HURT John +1232 WHALLEY-KILMER Joanne +1233 FONDA Bridget +1234 SUE Elisabeth +1235 BREWTON Maia +1236 COOGAN Keith +1237 RAPP Anthony +1238 HUSTER Francis +1239 LELOUCH Salome +1240 PREBOIST Paul +1241 CRETON Michel +1242 YORK Susannah +1243 MILLAND Ray +1244 DILLMAN Bradford +1245 GIELGUD John +1246 PORTAL Jean-Michel +1247 GASSMAN Vittorio +1248 ZETA-JONES Catherine +1249 MONTILLIER Georges +1250 PATINKIN Mandy +1251 QUINN Anthony +1252 STEIGER Rod +1253 VALLONE Raf +1254 PAPAS Irene +1255 RICHARD Pierre +1256 BOUIX Evelyne +1257 MUEL Jean-Paul +1258 CHELTON Tsilla +1259 JACOB Catherine +1260 PRAT Eric +1261 FOULON Mathieu +1262 LEDOUX Gary +1263 FEVRIER Laurence +1264 NANTY Isabelle +1265 KELLEY Deforest +1266 HUFFMAN Dustin +1267 DESOTO Rosana +1268 CAROLL Janet +1269 JACKSON Victoria +1270 ABRIL Victoria +1271 RENAUD Line +1272 COBURN James +1273 BROWN Reb +1274 HUNTER Bill +1275 FIELDS Maurie +1276 ZOUC +1277 WINLING Jean-Marie +1278 KOSTNER Kevin +1279 FREEMAN Morgan +1280 FERRER Mel +1281 DUPEREY Anny +1282 LEDOUX Fernand +1283 DENNER Charles +1284 AUCLAIR Michel +1285 HISKINS Bob +1286 FLEISCHER Charles +1287 KAYE Stubby +1288 LAW John Phillip +1289 CLEEF Lee Van +1290 PISTILLI Luigi +1291 DAWSON Anthony +1292 TORRES Jose +1293 BREGA Mario +1294 CASSOLA Carla +1295 SAVAGE Archie +1296 RUSSEL Kurt +1297 BALDWIN William +1298 JASON Jennifer +1299 SERREAU Joachim +1300 PASOTTI Felicie +1301 MANOJLOVIC Miki +1302 TRETON Gilles +1303 DAVIDOVITCH Lolita +1304 HARDIN Jerry +1305 SARTAIN Gailard +1306 JENKINS Richard +1307 HARPER James +1308 DEMUNN Jeffrey +1309 BUNTING Garland +1310 SMITH Brandon +1311 BROCKMAN Michael +1312 ROMANS Pierre +1313 HOROKS Zbigniew +1314 BONVOISIN Berangere +1315 PRIETO Aurore +1316 SUTHERLAND Kiefer +1317 ANDREWS Julie +1318 KEDROVA Lila +1319 FELMY Hansjorg +1320 TOUMANOVA Tamara +1321 KIELING Wolfgang +1322 DONATH Ludwig +1323 OPATOSHU David +1324 FISHER Gisela +1325 DALTON Timothy +1326 D'ABO Maryam +1327 BAKER Joe Don +1328 MALIK Art +1329 ASSANTE Armand +1330 O'NEAL Patrick +1331 RICHARDSON Lee +1332 CHEVIT Maurice +1333 MARTIN Steve +1334 HEADLY Glenne +1335 CURTIS Jamie Lee +1336 GODRECHE Judith +1337 BOZONNET Marcel +1338 DESNY Yvan +1339 CONRADT Malcom +1340 SALSMAN Thomas +1341 KENSIT Patsy +1342 WOLFE Traci +1343 KAHAN Steve +1344 ROLSTON Mark +1345 MORANTE Laura +1346 DELON Anthony +1347 NOSBUSCH Desiree +1348 FABBRI Jacques +1349 ROSSELINI Isabella +1350 BASIER Marianne +1351 BETTI Laura +1352 RENUCCI Roobin +1353 LOWELL Carey +1354 DAVI Robert +1355 SOTO Talisa +1356 ZERBE Anthony +1357 HARRIS Mel +1358 O'NEILL Ed +1359 LEE Jerry +1360 HANDY James +1361 DAVIS Daniel +1362 WINN Kitty +1363 VINT Alan +1364 FINNERTY Warren +1365 KURTZ Jean +1366 MAGE Paul +1367 SWAYZE Patrick +1368 MOORE Demi +1369 GOLDWYN Tony\n +1370 WASHINGTON Denzel +1371 CROWE Russell +1372 SPINELLA Stephen\n +1373 SMITH Will +1374 FIORENTINO Linda\n +1375 VAN DAMME Jean-Claude +1376 SORVINO Paul\n +1377 WAYNE John +1378 ATTENBOROUGH Richard +1379 GEESON Judy\n +1380 POSEY Parker\n +1381 MAY Mathilda\n +1382 ROYER Régis +1383 CHESNAIS Patrick\n +1384 TIMSIT Patrick +1385 FROT Catherine\n +1386 SHUE Elisabeth\n +1387 MCDONNEL Mary\n +1388 SINISE Gary +1389 GUGINO Carla\n +1390 DARY René +1391 GABIN Jean +1392 VENTURA Lino\n +1393 BROSNAN Pierce +1394 HALLAHAN Charles\n +1395 KENNEDY George +1396 LEWIS Geoffrey\n +1397 MILLER Jonny Lee +1398 BRACCO Lorraine\n +\. + + +-- +-- PostgreSQL database dump complete +-- + diff --git a/DB/TP1_OrdresSQL/dump/cinema.film b/DB/TP1_OrdresSQL/dump/cinema.film new file mode 100755 index 0000000..1d3c295 --- /dev/null +++ b/DB/TP1_OrdresSQL/dump/cinema.film @@ -0,0 +1,432 @@ +-- +-- PostgreSQL database dump +-- + +SET client_encoding = 'SQL_ASCII'; +SET check_function_bodies = false; +SET client_min_messages = warning; + + + +-- +-- Data for Name: film; Type: TABLE DATA; Schema: limin; Owner: limin +-- + +COPY film (numf, titre, numg, annee, numr, resume) FROM stdin; +1 Poker 1 1987 1 Helene mene une double vie: hotesse guide de jour et joueuse de poker la nuit dans des cercles clandestins. +2 De guerre lasse 1 1987 2 Juin 1942, Jerome et Alice se refugient chez Charles, un industriel de Romans. +3 La maison du diable 3 1963 3 Le docteur John Markway loue Hill House une maison hantee qui symbolise le malheur et la mort. +4 Les risques du metier 1 1967 4 Jacques Doucet, instituteur d'une petite ville de normandie, est accuse par la fille du garagiste, Catherine Roussel, d'avoir tente de la violer. +5 Les trente-neuf marches 4 1936 5 +6 Arsene Lupin contre Arsene Lupin 5 1962 6 Aux funerailles d'Andre Laroche, Francois de Vierne apprend par sa mere, femme d'un magistrat, qu'il est en realite le fils du defunt. +7 Police python 357 4 1975 7 A Orleans, une nuit, l'inspecteur Ferrot est photographie par une mysterieuse jeune femme apres qu'il ait arrete deux malfaiteurs. +8 Les innocents 1 1987 53 Jeanne descend a Toulon pour assister au mariage de sa soeur avec un Nord-Africain. Elle y retrouve son frere Alain, un sour muet qu'elle affectionne particulierement et rencontre Said qui lui fait des avances. +9 Extreme prejudice 4 1986 54 Bensey est la plaque tournante d'un important trafic de drogue entre le Mexique et les Etats-Unis. Jack Benteen, le chef des Texas Rangers, cherche a demanteler le reseau qui est dirige par son ami d'enfance : Cash Bailey +10 Fanfan la tulipe 6 1952 9 Louis XV regne sur la France. Ardent coureur de jupons, Fanfan se laisse entrainer par les predictions de la bohemienne Adeline qui n'est autre que la fille du sergent recruteur La Franchise. +11 Le cauchemar de Dracula 7 1958 10 Mai 1885. Jonathan Harker arrive au chateau de Dracula dans les carpathes. Il a ete engage comme bibliothecaire, mais il nourrit le dessein d'exterminer le comte Dracula qu'il soupconne de vampirisme. +12 La charge victorieuse 1 1952 11 Septembre 1862. La guerre de Secession fait rage. Jeune Idealiste, Henry Fleming rejoint un camp d'entrainement nordiste. +13 Cayenne palace 6 1987 55 Parti en Guyane a la recherche de son pere, un bagnard evade, qu'il n'a jamais connu. Noel erre dans les ruines d'un penitencier. Recu a coups de fusils dans certains villages, il doit en plus faire face aux elements dechaines. +14 La vie en mauve 5 1980 56 Cadre moyen, George Dopler mene une vie tranquille et sans souci. Jusqu'au jour ou il envoie un fauteuil a la figure de son patron qui lui refusait une augmentation, et retrouve un poste de gerant de nuit dans un supermarche. +15 Allons z'enfants 8 1980 12 A 15 ans, Simon Chalumot, engage volontaire par son pere (ancien combattant de 14-18), est enfant de troupe de l'Ecole militaire des Andelys. Il est traite en brebis galeuse parce qu'il refuse de perdre son individualite, discute et raisonne. +16 Quasimodo 16 1939 13 Poursuivie par les gardes, Esmeralda, qui est bohemienne, trouve asile dans Notre-Dame. Frollo, epris de la jeune femme, charge Quasimodo, le bossu de Notre-Dame, de l'enlever. +17 La couleur de l'argent 5 1986 57 Mythe vivant, champion de billard a la retraite, Eddie Felson erre dans les salles de jeux. Un soir, il decouvre un jeune virtuose, Vincent, qu'il prend sous son aile et a qui il apprend l'art de l'arnaque. +18 Cluedo 5 1985 58 Nouvelle Angleterre. 1954. Six mysterieux invites sont accueillis par un majordome dans un manoir battu par les vents. Chacun d'eux se voit attribuer une nouvelle identite par leur hote, M Mort, qui les fait chanter. +19 Les diamants sont eternels 6 1971 59 Depuis quelque temps, le marche du diamant est destabilise et l'agent James Bond part en mission a Amsterdan. Prenant l'identite d'un trafiquant, il se charge de faire rentrer aux Etats Unis un important lot de pierres precieuses. +20 Promis...Jure! 5 1987 60 Affuble d'un nez que ne renierait pas Cyrano et qui le complexe, le jeune Pierre-Marie s'efforce en vain de seduire Jocelyne la plus belle fille du village. En cette periode troublee de l'occupation, il multiplie les exploits pour qu'elle le remarque. +21 Il y a maldonne 4 1987 61 Apres avoir vole un sac a main, Luc offre une montre a son ami Marco. Mais Marco se fait arreter par un flic vereux qui lui confisque ses biens. En se battant avec le policier, Luc le tue, mais c'est Marco qui est soupconne du crime. +22 Coup double 5 1986 62 Apres 30 ans de prisons, Harry Doyle et Archie Long sont liberes sur parole. Ils decouvrent avec stupeur et angoisse le monde actuel. Ritchie Evans, leur agent de tutelle, tente de les aider a se reinserer dans la vie sociale. +23 Kalidor, la legende du talisman 2 1985 63 La reine Gedren et son eminence grise, le cruel Ikol, font regner la terreur dans leur pays. Ils brulent et pillent tout sur leur passage. Ils egorgent les parents de Sonja sous les yeux de la jeune fille qui fait serment de les venger. +24 Stick, le justicier de Miami 4 1985 64 Cambrioleur hors pair, Stick retourne a Miami apres avoir purge une peine de 7 ans de prisons. Il est decide a s'acheter une conduite afin que sa fille Katie puisse etre fiere de lui. Mais des son arrivee, il tombe ds les mains de truands portoricain +25 Dandin 5 1987 65 Georges Dandin, riche paysan, s'est marie avec Angelique de Sottenville pour acquerir un vernis mondain. De son cote, Angelique n'a accepte ce mariage que pour renflouer les finances de ses parents. +26 Tout ce que vous avez toujours voulu savoir sur le sexe... 5 1972 30 Amoureux de la reine, le bouffon du roi lui fait boire une decoction aphrodisiaque qui produit immediatement son effet. Mais comment lui enlever sa ceinture de chastete ? +28 L'argent de poche 1 1976 66 Le mois de juin dans une petite ville du centre de la France. De l'ecole en passant par la rue, a la maison ou au cinema, les aventures et les emotions d'une dizaine d'enfants et d'adolescents. +29 Rocky III, l'oeil du tigre 6 1982 67 Champion du monde de boxe, categorie poids lourds, Rocky Balboa est defie par un jeune boxeur noir, Clubber Lang, qui l'accuse de n'effectuer que des matchs truques. Malgre l'avis contraire de Mickey, son vieux manager, Rocky releve le defi. +30 Haut les flingues 4 1985 68 New York annees 30. Mike et Speer ont ete collegues dans la police. Aujourd'hui, Mike est devenu prive et Speer, qui le soupconne d'etre lie avec le milieu, le suit comme son ombre. +31 Y'a bon les blancs 5 1987 69 Cinq Europeens doivent vehiculer en camion de la nourriture pour les defavorises du Sahel. Nadia, une jolie Hollandaise, se joint a cette mission humanitaire. +32 En toute innocence 1 1987 70 Dans leur maison du Bordelais, Paul, un architecte, surprend sa belle-fille, Catherine, trompant son fils Thomas.Furieux, il prend la route et fonce.C'est l'accident.Il rentre de l'hopital muet et a demi paralyse. Entre lui et Catherine c'est la guerr +33 Les visiteurs d'un autre monde 2 1979 71 Sur la pelouse d'un stade, une soucoupe volante atterrit. Tony et Tia en descendent. Extraterrestres aux superpouvoirs, ils sont venus sur Terre en touristes. +34 Merci d'avoir ete ma femme 5 1979 72 Jessica souhaite divorcer de Phil. Elle reclame sa liberte pour ecrire des chansons. Reste seul, Phil decouvre qu'elle entretenait une liaison avec son propre editeur. Decu, il part vivre a Boston ou il retrouve son frere Mickey. +35 Radio corbeau 4 1989 12 Par la voix des ondes, un commentateur fielleux deblatere sur les petites et grandes turpitudes des habitants d'une bourgade de province. Qui est ce mysterieux corbeau ? +36 Les entrailles de l'enfer 7 1981 73 En panne sur une route du Mississippi, une jeune femme est violee par une creature surgie des marais pendant que son mari est parti chercher de l'aide. 17 ans plus tard leur fils est atteint d'une maladie mysterieuse. +37 Saxo 1 1987 74 Sam Friedman, producteur musical malchanceux, decouvre, dans une boite miteuse, un couple de musiciens noirs americains prodigieux. Puppet chante d'une voix rauque, et son frere Joe joue du saxophone. Sam veut leur faire enregistrer un disque. +38 Portes disparus II 6 1985 75 En 1972, le colonel Braddock et ses hommes effectuent une mission en helicoptere au-dessus de la jungle vietnamienne. Le commando se fait prendre. 10 ans plus tard, la guerre est finie. Mais Braddock est toujours prisonnier dans le camp du colonel Yin +39 Une creature de reve 5 1985 76 Deshabilles, Gary et Wyatt sont ridiculises devant les filles de l'ecole par leurs camarades. Ils decident de se venger et programme sur leur ordinateur le portrait de la femme ideale. Un orage eclate, l'ordinateur explose et Lisa apparait. +40 After hours 5 1985 57 Paul, jeune informaticien, passe toutes ses soirees a lire dans les fast foods. Un soir, il rencontre Marcy. Elle engage la conversation puis s'eclipse mysterieusement. Paul la rappelle et va la rejoindre dans le loft qu'elle partage avec Kiki,une ami +41 Les keufs 5 1987 77 Mireille Molyneux, inspecteur de police rousse et rondelette, traque les proxenetes. A peine est-elle parvenue a mettre la main sur Charlie, un souteneur, que deux inspecteurs de l'IGS l'arretent. +42 La folle journee de Ferris Bueller 5 1986 76 Ferris Bueller joue les malades. Sa mere lui interdit d'aller au lycee. Mais sitot qu'elle a le dos tourne, Ferris se sauve. Il fait sortir sa petite amie du college et emprunte la Ferrari du pere de son copain Cameron. Le proviseur Rooney le poursui +43 Les saisons du plaisir 5 1988 78 Comme chaque annee, Charles et Emmanuelle Van Bert organisent dans leur chateau le congres des parfumeurs. A cette occasion, Charles annonce qu'il va prendre sa retraite et qu'il designera son remplacant a l'issue du symposium. +44 Les possedes 1 1987 79 Vers 1870, cinq jeunes activistes d'une ville de province russe preconisent une revolution rapide et violente. Leur meneur, Pierre, personnage froid et exalte, annonce que les indecis seront elimines. +45 Drole de couple 5 1968 80 Felix Ungar, quadragenaire popote, ne supporte pas que sa femme demande le divorce. Il tente de se suicider. Emu par son sort, son ami Oscar Maddi, journaliste sportif divorce, l'invite a venir habiter chez lui. Felix devient alors une fee du logis. +46 Le cercle rouge 4 1970 81 A Marseille, un gardien de prison propose une affaire a Corey, un truand sur le point d'etre libere. Au meme moment, dans le train qui l'emmene vers Paris, Vogel, un repris de justice, fausse compagnie au commissaire Mattei charge de l'escorter. +47 Le declin de l'empire americain 5 1986 82 Dans une maison de campagne, 4 hommes sont en train de preparer a diner. Ils parlent d'amour et de sexe. Pendant ce temps, leurs femmes discutent du meme sujet. Dominique ecrit une these sur la question. Diane raconte ses aventures sexuelles. +48 Par le fer et par le feu 6 1962 83 Aux prises avec la Prusse, la Russie et l'Autriche, et soucieuse de preserver son independance, la Pologne du XVIIe siecle n'a qu'une alliee: la France. Au sein des familles polonaises, les dissensions sont vives. +49 Y a t-il quelqu'un pour tuer ma femme ? 5 1986 84 Sam Stone s'apprete a tuer sa femme quand celle-ci est enlevee par Sandy et Ken. Trop content d'etre debarassee d'elle, Sam rechigne a payer les 500 000 dollars que reclament les ravisseurs. Il espere que ceux-ci tueront Barbara. +50 Plein sud 1 1980 85 Au moment de partir a Barcelone pour une conference, Serge Laine, jeune professeur de fac, est aborde par l'envoutante Caraol. Il quitte sa femme et part en Espagne avec cette inconnue. +51 Un poisson nomme Wanda 5 1988 130 A la suite d'un vol de diamants, George Thomason est denonce par ses complices, Wanda et son amant Otto; mais George a mis le butin a l'abri. Persuadee que l'avocat de George, Archie Leach, est au courant, Wanda decide de le seduire. +52 Birdy 1 1984 86 Dans la banlieue grise de Philadelphie, Al rencontre Birdy, un garcon timide et renferme. Al ne s'interesse qu'aux filles, Birdy reve d'etre un oiseau. Une etrange amitie nait entre les deux. Birdy essaie d'initier Al a l'elevage des pigeons. +53 A notre regrettable epoux 5 1987 87 Dix ans apres la disparition de son epoux, Hermione apprend que son mari etait un escroc de haut vol. Dans le chateau en ruines ou elle vit, il aurait cache une fortune en lingots d'or que la seconde femme de son mari vient reclamer. +54 Rocky IV 6 1985 67 Rocky Balboa mene une retraite paisible jusqu'au jour ou un boxeur sovietique, Ivan Drago, tue Appolo, son ami et ancien adversaire. Il decide de le venger, se rend en URSS, et reprend l'entrainement sous l'oeil vigilant du KGB. +55 In extremis 1 1987 88 Par amour pour Alice, Tango reussit un hold-up en se faisant passer pour un bandit en cavale, Rock. Celui-ci se lance a la poursuite de l'usurpateur et sequestre Alice. Oblige de travailler pour Rock, Tango ne tarde pas a se rebiffer et se lie d'amiti +56 Yanks 1 1979 89 En 1943, un petit village britannique vit deja a l'heure du debarquement americain. Les derniers mois de la guerre sont vus a travers les destins de 3 couples americano-anglais. +57 La maison assassinee 1 1987 90 1896, toute la famille Monge est egorgee dans un relais de poste. Seul survivant, Seraphin, nourisson de 3 semaines. 24 ans plus tard, apres avoir connu les horreurs de la guerre, Seraphin revient sur les lieux du massacre pour se venger. +58 Rio zone 1 1986 91 Fils d'une strip-teaseuse, Vinicius vit chez son oncle dans une banlieue pauvre de Rio. Saxophoniste tres doue, il reve d'enregistrer un disque. Il est amoureux de Nicinha, mais la jeune fille disparait brusquement. +59 Crocodile Dundee 6 1986 92 Une journaliste americaine s'entiche d'un bushman australien grand chasseur de crocodiles. Elle le ramene a New York. Crocodile Dundee est completement dephase et a bien du mal a s'integrer dans la vie mondaine. +60 En route pour le sud 17 1979 93 Au lendemain de la guerre de secession, Henry Moon, voleur de chevaux, est condamne a la potence a moins qu'une femme veuille bien l'epouser. Une septuagenaire, plus de premiere beaute, se devoue pour sauver le truand. +61 Paternity 5 1981 94 Lors de son 47eme anniversaire, Buddy Evans, grand financier dans le domaine sportif, constate, malgre une vie de garcon pleinement satisfaisante, que la presence d'un enfant lui manque. Il decide donc de trouver une mere porteuse. +62 On ne vit que deux fois 6 1967 33 En plein vol, la fusee americaine, Jupiter 16, disparait sans laisser de trace. Puis c'est au tour d'un vaisseau sovietique. Au sol, les radars ont enregistre la presence d'un engin non identiie. Pendant ce temps, James Bond coule des nuits paisibles. +63 Golden child: l'enfant sacre du tibet 6 1986 95 Sardo Numspa et sa bande d'illumines, fanatiques de Satan, enlevent un enfant considere comme un dieu par les Tibetains. Un detective prive de Brooklyn, Chandler, qui n'est guere porte sur le mysticisme, va se prendre au jeu. +64 Phychose III 4 1985 96 Apres un internement de 22 ans, Norman Bates, considere comme gueri, a repris la direction de son motel de sinistre reputation. En fait, Norman est toujours sujet a des nevroses obsessionnelles et sanguinaires des qu'une jeune fille l'approche +65 Mes deux hommes 5 1985 97 Julius Armbrust, cadre superieur, est un homme comble qui trompe sa femme. Mais son bonheur s'effondre quand il decouvre que sa femme Paula le trompe aussi. Il fait mine de partir en voyage pour decouvrir son rival Stephan, un peintre boheme. +66 La vie est un long fleuve tranquille 5 1988 98 Il etait une fois, dans une ville du nord, deux familles, les Le Cattaux et les Groseilles, que rien ne disposait a se rencontrer. +67 Tank 5 1983 99 Le sergent major Zack Carey arrive en Georgie avec sa femme Donna, son fils Billy et un char Sherman. Une querelle l'oppose au sherif local. Pour se venger, ce dernier fait emprisonner Billy. Zack Carey part a l'assaut du penitencier. +68 Rambo II. La mission 6 1985 67 John Rambo a ete condamne aux travaux forces. Le colonel Trautman, son ancien officier, lui propose d'accomplir une mission en echange de sa liberte et de sa reinsertion dans l'armee. Il doit se rendre au Vietnam pour retrouver des prisonniers. +69 Les mauvais garcons 1 1983 100 Mick O'Brien, jeune voyou des bas quartiers de Chicago, tue accidentellement le frere de Paco, un dealer portoricain, chef d'une bande rivale. La police reussit a mettre la main sur les 2 loubards et les emprisonnent dans la meme maison de correction. +70 La grande triche 4 1978 101 Moses Wine est detective prive. Il est engage par une ancienne amie, Lila Shea, qui soutient la candidature comme gouverneur de Miles Hawthorne. Celui-ci est attaque par un groupe de contestaires qui publi des tracts diffamatoires. +71 Rain man 12 1988 102 Charlie, homme d'affaires presse, decouvre a l'age adulte, qu'il a un frere interne dans une institution psychiatrique. Raymond, Rain man, incapable de communiquer avec autrui, a neanmoins des capacites intellectuelles surprenantes. +72 Frequence meutre 4 1988 103 Animatrice de radio la nuit, Jeanne est persecutee par une voix doucereuse et menacante a l'antenne. Certaine d'avoir affaire au meurtrier psychopathe de ses parents, elle fait appel a son frere, commissaire a la PJ. +73 Les lumieres de la ville 1 1931 26 Un vagabond rencontre une jeune aveugle qui, pour survivre, est vendeuse ambulante de fleurs. Emu par sa detresse, le clochard lui donne ses derniers dollars. +74 Le justicier de New York III 4 1985 104 Un soir, Paul Kersey retrouve le cadavre de son ami Charlie. Bien connu des services de la police new yorkaise pour avoir joue les justiciers, Kersey va etre utilise par le lieutenant Striker. +75 Blanc de Chine 4 1988 105 Saigon, avril 1975. Dans la ville en flammes, les Americains evacuent les derniers occidentaux. Parmi eux, Mathieu, 20 ans et une petite Eurasienne de 8 ans, Jay. 13 ans plus tard, les services speciaux francais le contactent. +76 La colline des hommes perdus 1 1965 106 Pendant la seconde guerre debarque, dans un camp disciplinaire anglais en Afrique, 5 hommes : 4 blancs et un noir. Charges d'un sac a dos, ils doivebt gravir la +78 Au revoir les enfants 1 1987 107 Janvier 1944. Sur le quai de la gare, Julien Quentin, 11 ans, a du mal a quitter sa mere; il retourne au college St Jean de la Croix. Un nouvel eleve arrive dans sa classe: Jean Bonnet, un garcon etrange et renferme qui ne communie jamais a l'eglise. +79 L'ami de mon amie 1 1987 108 Blanche, reveuse et prude, aime le tenebreux Alexandre. Lea, dynamique et charmeuse, vit avec Fabien, mais lui prefere Alexandre, tandis que le delaisse craque lentement pour Blanche, amie de Lea. Mais peut-on desirer l'ami de son amie. +80 Force majeure 1 1988 109 Copains de rencontre sur les routes d'Asie, Philippe et Daniel laissent a Hans le haschich qu'ils n'ont pas fume avant de repartir pour la France. 18 mois apres, un avocat d'Amnesty International leur apprend qu'il est condamne a mort comme dealer. +81 La dechirure 1 1984 110 Correspondant du New York Times au Cambodge, Sydney Schanberg suit au jour le jour le deroulement de la guerre. Tres au fait des habitudes locales, Dith Pran lui permet de reussir certains scoops. En 1975, les Kmers rouges succedent aux americains. +82 Adieu, je t'aime 1 1987 111 Michel et Nicole forment un couple ideal. Lui, la quarantaine, a un poste de PDG dans une societe d'informatique. Elle s'epanouit totalement sans l'amour de son mari. Mais Michel est attire par Philippe, un jeune informaticien. +83 Mississippi burning 1 1988 86 Ete 1964. L'Amerique est secouee par la violence et la contestation sociales. Trois jeunes militants sont venus etablir un centre d'inscription electoral pour les noirs dans une ville du Mississippi. Mais ils disparaissent mysterieusement. +84 Retour 1 1976 112 1968. La flamme au fusil, les marines americains saccagent le Viet Nam. Sally Hyde se fait engager comme benevole dans un hopital. Elle y retrouve Luke, un de ses anciens amis, infirme a vie. Au milieu des blesses, Sally prend conscience des horreurs. +85 Les temps modernes 1 1936 26 Charlot peine en usine pour un salaire de misere. Abruti, depersonnalise par le travail a la chaine, il devient un robot hagard. Ne pouvant plus supporter ces cadences, il est renvoye et echoit a l'hopital. A sa sortie, il recueille une jeune fille. +86 Eddie and the Cruisers 1 1983 113 Maggie Foley, une journaliste de television, est chargee de raconter la dramatique histoire d'Eddie and the Cruisers, un groupe rock du debut des annees 60. Son leader, Eddie Wilson, a disparu en 1964 dans un accident de voiture. +87 Corentin ou l'infortune conjugale 5 1988 114 Au XVIIe siecle, un riche boucher, Corentin, epouse la jolie mais pauvre Clemence. Terrorise par la beaute et l'innocence de sa jeune femme, il n'ose la toucher et passe ses nuits dans le lit de la servante. +88 Le flic etait presque parfait 5 1986 115 Joe Gower est un magasinier blanc de la bibliotheque municipale de New York. Il accepte de se rendre a une qudition pour le gala de la police a la place de son ami Abe Washington, un policier noir. Il doit tout faire pour ne pas etre pris au spectacle +89 Les hauts de Hurlevent 1 1939 116 La vie passionnee et dechirante d'un jeune orphelin amoureux fou de la fille de son pere adopte. D'apres le roman d'Emily Bronte. +90 Apres la guerre 1 1989 117 1944, quelque part dans la campagne francaise, deux jeunes enfants s'enfuient de chez eux apres avoir commis une betise. Au cours de leur fugue, ils rencontrent un soldat allemand deserteur. +91 Revolution 18 1986 118 1776, la nation americaine est en train de naitre. Les Americains tentent de se separer du pouvoir colonial britannique et se lancent dans une guerre qui va durer 7 ans. +92 Les annees sandwiches 1 1988 119 Victor, un adolescent candide, debarque dans les rues de Paris au cours de l'ete 1947. Perdu, il rencontre Felix dans les couloirs du metro a qui il demande son chemin. Felix et Victor se lient d'amitie. +93 Pale Rider, le cavalier solitaire 17 1985 120 Au fin fond de la Californie, eldorado des chercheurs d'or du XIXe siecle, de pauvres heres s'evertuent a creuser le sol pour quelques pepites. Un homme d'affaires sans scrupule s'installe a proximite. +94 Mean Streets 4 1973 57 Au coeur de New-York, le quartier italien vit suivant des regles a moitie americaines. Michael et Tony font partie de la botte americaine. Tous deux brassent de grandes quantites d'argent et escroquent les touristes de tous leurs dollars. +95 Flashdance 14 1983 121 Alex a la danse a fleur de peau. Le jour, elle travaille comme soudeuse, la nuit elle fait eclater sa passion dans une boite de nuit. Elle reve d'entrer a l'opera mais elle est paralysee de trac a l'idee de passer le concours d'entree. +96 Bootleggers 6 1973 122 Gator McKlusky, un conducteur casse-cou, purge une peine de prison en Arkansas pour avoir vendu du whisky de contrebande. Pendant son incarceration, il apprend que son frere a ete assassine par Connors, un sherif vereux. +97 Too much 5 1986 123 A 16 ans, lorsqu'on s'ennuie ferme dans une station balneaire anglaise, il reste une occupation qui decoit rarement : parfaire sa vie amoureuse. Lynda apprend ainsi que les bebes ne naissent pas dans les choux. +98 Le flambeur 1 1974 124 Alex Freed, enseignant americain, a deux passions dans la vie : sa maitresse Billie et le jeu. Un soir, il gagne une fortune a Las Vegas. Son engouement le pousse a miser des sommes de plus en plus forte et a emprunter a sa famille. +99 Angel heart 2 1987 86 Detective prive assez miteux, Harry Angel traine une nonchalance oisive entre deux affaires douteuses. Un soir, un homme au facies enigmatique lui propose de retrouver un ancien crooner disparu apres la seconde guerre mondiale. +100 Biggles 2 1986 71 En rentrant chez lui, Jim Ferguson est victime d'un etrange phenomene : il tombe dans des trous intertemporels. Projete en 1917, il fait connaissance de James Bigglesworth, Biggles pour les fans, un virtuose de l'aviation anglaise. +101 De bruit et de fureur 1 1988 125 Seul dans son HLM et frustre par les absences repetees de sa mere, Bruno cristallise son desespoir dans d'etranges hallucinations et se laisse entrainer par les bandes de voyous du quartier. Son existence s'embrase puis se consume. +102 Les charognards 17 1971 126 Parce qu'il veut apprendre a lire, Frank Calder, chef d'une bande de desesperados, enleve Melissa, une jeune femme qu'il croit etre une institutrice. Elle est en fait l'epouse de l'homme le plus riche du comte, Ruger. +103 Risky business 5 1983 127 BCBG, la tete bien pleine ainsi que les poches, Joel est l'archetype du bon eleve sportif, serviable, bourre d'ambition. Mais on a beau etre riche et intelligent, on n'en est pas moins titille par la bagatelle, surtout a 18 ans. +104 Camomille 1 1987 128 Un mitron, surprotege par sa mere, s'eprend d'une droguee errante surnommee Camomille. Resolu a la sortir de cette impasse, il apprend qu'elle est en fait une starlette BCBG. Enceinte et recherchee par les medias, elle doit reintegrer son milieu. +105 Monsieur Hire 1 1989 16 Un petit employe de bureau maniaque et solitaire est eperdument amoureux de sa voisine. Un crime va les rapprocher. +106 L'irlandais 1 1986 129 Lasse des nombreux carnages qu'il provoque pour le compte de l'IRA, Martin Fallon s'exile a Londres en pre-retraite. Mais ses employeurs, peu disposes a le laisser filer, decident de l'eliminer. +107 El Dorado 1 1987 131 En 1560 le roi d'Espagne envoie une expedition a la conquete de l'El Dorado, mythique royaume de l'or. Pousses par une formidable fievre, 400 hommes et femmes s'enfoncent dans la foret tropicale. +108 Y a-t'il un pilote dans l'avion 5 1980 84 Aeroport de Los Angeles. Les passagers du vol de 209 a destination de Chicago prennent progressivement place. Elaine, une des hotesses, annonce a Ted, ex pilote de chasse qu'une tragique operation de commando a traumatise, qu'elle le quitte. +109 Preuve d'amour 4 1988 132 Martin rencontre Lou, une jeune fille aux charmes tentateurs. Journaliste vivant a 400 a l'heure, Martin sent son coeur flancher devant la trop belle Lou. Mais Martin est accuse de meurtre. +110 Hair 14 1979 133 Claude, jeune americain natif de l'Oklahoma, doit passer 3 jours a New York avant de partir pour le Vietnam. Dans Central Park, il rencontre un groupe de Hippies parmi lesquels Berger qui l'incite a ne pas partir et Sheila qui le seduit. +111 Corps z'a corps 5 1987 134 Tres serieux redacteur en chef d'une revue economique et financiere, Jean Chabert se retrouve catapulte par le patron du groupe de presse aux commandes d'un journal erotique. L'ambiance aidant, le digne de Chabert se devergonde. +112 Mac Arthur, le general rebelle 10 1978 122 1942. La flotte americaine est en pleine debandade, frappee au coeur par les bombes japonaises lors de l'offensive de Peral Harbor. Mute en Australie, le general Mac Arthur doit abandonner son QG aux philippines. +113 Une nuit a l'assemblee nationale 5 1988 78 Naturiste convaincu et fondateur de nombreux camps de nudistes, Walter Arbeit est catapulte a l'Assemblee Nationale pour recevoir la legion d'honneur. Des magouilleurs sans scrupule en font l'effigie de leur campagne electorale. +114 La travestie 1 1987 12 Avocate en province, Nicole Armingault extorque de l'argent a ses amants pretextant un faux avortement, devalise le coffre de son patron et monte a Paris habillee en homme. La, elle parvient a seduire une prostituee, Myriam. +115 Les dents de la mer IV 6 1987 122 La petite station balneaire d'Amity prepare les fetes de Noel. Sean Brody est devenu sherif a la place de son pere, victime du grand requin blanc. Mais Sean est devore a son tour par un squale. +116 A fond la fac 5 1986 135 Thornton Melon n'a jamais fait d'etudes. Homme d'affaire avise, il a cree une prospere chaine de magasins. Lors d'une visite surprise a l'universite, il decouvre que son fils est un cancre. Pour l'aider a poursuivre ses etudes, il s'inscrit a la fac. +117 L'ours 6 1989 136 +118 Comme un chien enrage 1 1986 137 Dans une triste bourgade de Pennsylvanie, Brad Jr, adolescent desoeuvre, vit avec sa mere et un beau pere qu'il deteste. Un soir, il vient en aide a son demi-frere Tommy, jeune delinquant aux prises avec un arnaqueur sous le regard de Terry. +119 Suicidez-moi docteur! 5 1978 64 Sonny Lawson, agent immobilier, s'entend dire par un medecin indifferent qu'il ne lui reste qu'un an a vivre. Fou de desespoir, il ne trouve de reconfort ni aupres de l'eglise, ni aupres de sa maitresse ou de son ex-femme. Il avale des somniferes. +120 Le sicilien 1 1987 138 Alors qu'il ravitaille clandestinement un village, Salvatore Giulano abat froidement deux carabiniers venus controler le chargement. Il est blesse dans la bagarre et se refugie dans un monastere. +121 Le colosse de Rhodes 15 1960 139 Darios, jeune general athenien en visite a Rhodes, apprend l'existence d'un complot contre les Grecs. Il decide de rentrer chez lui, mais le roi a fait fermer le port, surplombe par le colosse, une gigantesque statue d'airain. +122 Sans issue 4 1985 140 Sam Quint est un voleur particulierement doue. Le gouverneur americain le sort de prison et lui promet la liberte s'il recupere dans une societe vereuse de Las Vegas une disquette qui interesse le Fisc. +124 Chocolat 1 1988 141 Le Cameroun, a la fin des annees 50, fait encore partie de l'empire colonial francais qui peu a peu se desagrege. France, petite fille silencieuse et sauvage vit avec ses parents a des kilometres de toute habitation blanche. +125 Bonjour l'angoisse 5 1988 142 Cadre dans une entreprise specialisee dans les dispositifs de securite, Michaud est un etre terne afflige d'une timidite maladive. Sur le point d'etre mis a la retraite, il se retrouve mele au hold-up d'une banque qui a loue les services de la societ +126 La vie privee d'un senateur 1 1978 143 Joe Tynan, senateur liberal de New York, marie et pere de 2 enfants, reve de faire carriere. L'occasion se presente quand le congres doit se prononcer sur la nomination a la Cour Supreme d'un candidat au passe compromettant. +127 L'ascenseur 7 1983 144 Dans un immeuble, 2 couples prennent l'ascenseur au sortir d'un restaurant. L'appareil tombe en panne entre 2 etages. Les victimes asphyxiees sont sauvees in extremis. Le lendemain, Felix Adelaar, le reparateur, ne decouvre rien d'anormal. +128 L'enfance de l'art 1 1988 145 Veilleur de nuit pour subvenir a ses etudes, Simon est eleve au Conservatoire d'art dramatique. Il quitte Martine apprentie comedienne elle aussi pour Marie, l'un des plus brillants elements de sa promotion. Elle part tourner au Maroc avec Luc Ferrand +129 Predator 2 1987 146 Leader d'une patrouille de choc, Le major Dutch Schaeffer est envoye en Amerique centrale pour delivrer des americains prisonniers des guerilleros. Ils decouvrent trois cadavres pendus par les pieds et ecorches vifs. +130 Kung-Fu master 1 1987 147 Mary-Jane, 40 ans, vit seule avec ses 2 filles, Lucy et Lou. Lors d'une boum organisee par Lucy, elle fait la connaissance de Julien, un adolescent de 15 ans. Attire par le lyceen, Mary-Jane s'arrange pour le revoir. Julien l'initie aux jeux video. +131 Nocturne indien 1 1989 7 Un homme arrive a Bombay a la recherche d'un ami disparu qui y a vecu. A travers des villes et des rencontres, le parcours interieur d'un homme. +133 Un enfant de Calabre 1 1987 148 1960, Mimi a 12 ans et habite dans un petit village de Calabre. Toutes les nuits, il court pieds nus dans la campagne, au desespoir de son pere, modeste gardien dans un hopital psychiatrique, qui reve de le voir faire des etudes. +134 La loi des seigneurs 1 1982 149 1964. C'est la rentree des classes dans une ecole militaire du sud des Etats-Unis. Les nouveaux eleves subissent un bizutage sadique. Poteete, obese, et Pearce, noir, sont victimes de cruelles brimades. Le colonel charge Will de les proteger. +135 Le dernier empereur 18 1987 150 Hiver 1950. Accuse de complicite avec les Japonais durant la guerre, Pu Yi est remis au Chinois. Soumis aux questions du commissaire du peuple, il redige son autocritique et raconte sa destinee. +136 Lucky 13 4 1983 151 Danny 17 ans, a assassine son pere. Emprisonne, il attend son verdict. Charlene, la trentaine, danseuse entretenue par Tom, un journaliste, est fascinee par Danny. Elle lui envoie des lettres d'amour. Comdamne a mort, Danny reussit a s'echapper. +137 Le complot 1 1988 152 13 decembre 1981, l'etat de guerre est decrete en Pologne. Dans les rues de Varsovie, les miliciens traquent les membres de Solidarite. En Chaire, le pere Alec appelle a la resistance. Dans l'assistance, Stefan, capitaine de la milice est fascine. +138 Top Gun 6 1986 153 +139 Quelques jours avec moi 1 1988 154 Depressif convalescent, Martial Pasquier est charge par sa famille, proprietaire d'une chaine d'hypermarches, de verifier les comptes de 5 succursales de province. Des sa premiere etape a Limoges, il decouvre les irregularites commises par Fonfrin. +140 La veuve noire 19 1986 155 New York,Dallas, Seattle : de riches industriels meurent juste apres leur mariage. A Washington, derriere son ordinateur, Alexandra Barnes est persuadee que la meme femme est coupable. A force d'obstination, elle retrouve sa trace. +141 La vie et rien d'autre 1 1989 156 1920. Une jeune bourgeoise recherche son mari disparu a Verdun. Une jeune provinciale n'a plus de nouvelles de son fiance. Leur enquete les conduit vers le commandant Dellaplane, charge d'identifier les soldats absents. +142 La folle histoire de l'espace 5 1987 157 Le vaisseau spatial de Casque noir, ame damnee du cruel president Esbroug, arrive en vue de la planete Druida. Il compte enlever la princesse Vespa, sur le point d'epouser le prince Valium et qui s'enfuit au milieu de la ceremonie. +143 Les goonies 6 1985 46 La maison des freres Walsh va etre saisie par des promoteurs. Pour empecher le drame, il faut de l'argent. Les gooners, bande d'adolescents delures, decouvrent dans le grenier une carte au tresor dessinee par le celebre pirate Willy-le-Borgne. +144 Abyss 2 1989 41 Un sous-marin nucleaire, le USS Montana, est bloque au coeur de l'ocean. +145 Drole d'endroit pour une rencontre 1 1988 158 Une nuit d'hiver sur une aire d'autoroute deserte. Une voiture s'arrete puis repart en laissant une femme blonde desemparee. Sur l'aire, France rencontre Charles, qui demonte le moteur de sa voiture. Il l'insulte et lui demande de le laisser seul. +146 Au service de sa Majeste 9 1969 159 Au volant de sa voiture, James Bond apercoit une jeune femme, Tracy, sur le point de se jeter a l'eau et la sauve du suicide. Le lendemain, il lui vient encore en aide en reglant ses dettes de jeu. A la sortie, il est entraine aupres de Draco. +147 Le bon et les mechants 1 1975 38 Mecano desoeuvre et boxeur rate, Jacques se reconvertit dans le hold-up en compagnie de Lola, prostituee, et de Simon, un copain juif. La guerre de 39-45 eclate et le trio est epingle par la police. Ils sont liberes par un ancien truand devenu flic. +148 Gremlins 2 1984 160 Un soir de decembre, l'inventeur Rand Peltzer trouve un cadeau de Noel original pour son fils dans la boutique d'un vieux chinois. C'est un +149 Indiana Jones et la derniere croisade 6 1989 36 Pour retrouver son pere disparu, Indiana Jones se lance dans la quete du Saint Graal. Elle va l'emmener des egouts de Venise jusqu'au fin fond des deserts bibliques par tous les moyens de transports imaginables en 1938. +150 La petite amie 5 1988 85 Guillaume Bertin, architecte fauche, invite a dejeuner le riche promoteur Martin Morel a qui il veut vendre un projet. Morel en profite pour inviter Bertin a la montagne pour servir de mari a sa derniere conquete, Agnes. +151 Les enfants du silence 1 1986 160 James Leed, jeune professeur brillant, vient enseigner dans une ecole de sourds et malentendants. Ses methodes peu academiques etonnent mais donnent d'excellents resultats. Un jour, il remarque Sarah Norman, une jeune sourde muette. +152 La petite fille au tambour 9 1984 162 Charlie, jeune comedienne americaine, assiste a une conference donnee par Michel, terroriste palestinien dont le visage est masque. Peu de temps apres, elle s'eprend d'un espion israelien, Joseph, en qui elle croit reconnaitre Michel. +153 La revolution francaise 1ere epoque 18 1989 2 De 1789 au 10 aout 1792, date de la destitution de Louis XVI. La prise de la Bastille, le massacre du Champ-de Mars, la fuite du roi, la victoire des armees republicaines a Valmy. +154 Hope and glory 1 1987 163 Le 3 septembre 1939, la radio annonce que l'Angleterre est entree en guerre avec l'Allemagne. Chez les Rohan, gens ordinaires, la nouvelle suscite des sentiments divers. Le pere s'engage. Entre sa mere et ses soeurs, Bill, 9 ans, joue a la guerre +155 Body double 4 1984 164 Los Angeles. Jack Scully, comedien rate, vient d'etre congedie par un realisateur. En rentrant chez lui, il decouvre sa compagne au bras d'un rival. Il part habiter chez son ami Sam Bouchard qui lui prete un luxueux appartement pour un mois. +156 The big easy 4 1986 165 Nouvelle-Orleans : le lieutenant McSwain est charge d'enqueter sur le meurtre d'un truand local. Peu scrupuleux, il touche des dessous de table.Mais l'arrivee d'Anne Osborne,jeune assistante du procureur venue enqueter sur la corruption va tout change +157 Silverado 17 1985 166 Emmet est attaque durant son sommeil par des inconnus. Il disperse la bande et reprend sa route. Dans le desert, il rencontre Paden qui vient de se faire depouiller par des hors la lois. Emmet le sauve et l'emmene a Turley ou Jacke doit y etre pendu. +158 Bagdad cafe 5 1987 167 Un couple de touristes allemands se dispute sur le bord d'une autoroute entre Disneyland et Las Vegas. Abandonne par son mari en plein desert, Jasmin echoue dans un motel tenu par Brenda, une noire acariatre : le Bagdad cafe. +159 La maison de Jade 1 1988 168 Dans sa maison, Jane Lambert, ecrivain de 40 ans assume tant bien que mal sa sterilite. Elle tombe amoureuse de Bernard qui lui fait croire a l'amour eternel. Mais comme les autres, il la quittera faute d'enfants. +160 Cinema Paradiso 1 1989 269 Rome, dans les annees 80. Salvator Di Vita, cineaste, apprend la mort d'Alfredo. Ce prenom fait resurgir l'enfanc, le village de Sicile, et surtout la salle paroissiale ou regne la haute stature d'Alfredo, le projectionniste qui a eveille sa vocation +161 La couleur du vent 1 1988 169 Louise Riviere, conseiller litteraire dans une maison d'edition, est bouleversee par le manuscrit de Paul Madison : +162 Hidden 2 1987 48 Los Angeles. Un paisible homme d'affaires attaque une banque puis vole une Ferrari pour s'enfuir. Apres une poursuite, il est abattu. Tom Beck est charge d'enqueter sur ces citoyens ordinaires qui deviennent des meurtriers avec le FBI Lloyd Gallagher. +163 Mon ami le traitre 1 1988 170 Anciens voyous, deux freres, Bosco et Georges, sont enroles dans la Gestapo pour echapper a la prison. A la liberation, ils tentent de fuir; Bosco meurt. Georges decide de se racheter avec le commandant Rove du contre espionnage. +164 Malone 4 1987 140 Malone, tueur au service de la CIA, decide de se retirer. Sous une nouvelle identite, il prend la route mais sa Mustang tombe en panne a Comestock. +165 La brulure 1 1986 171 Rachel Samstat et Mark Forman ont deja tate du mariage et jure qu'on ne les y reprendrait plus. C'est pourtant au cours d'une ceremonie de ce genre qu'ils lient connaissance. Ils ont le meme sens de l'humour, c'est le coup de foudre. +166 Y a-t'il enfin un pilote dans l'avion ? 5 1982 172 La premiere navette spatiale est sur le point de decoller. A bord, le commandant Over, obsede par les petits garcons, Elaine, responsable de l'ordinateur de bord, son ami Ted Crochet, echappe d'un asile psychiatrique, et Simon qui est amoureux d'elle +167 Jumpin'Jack Flash 5 1986 173 Terry Doolittle travaille dans une banque new-yorkaise. Un soir, sur son ecran d'ordinateur, s'inscrit un curieux SOS signe Jumpin'Jack Flash. Il provient d'un espion anglais bloque dans un pays de l'Est. +168 La lumiere du lac 1 1987 174 Marco, un jeune gigolo, se trouve mele a l'arrestation d'un truand, Pallacci. Il panique et se refugie dans un village de montagne, chez Miranda. Par son intermediaire il fait la connaissance de Carlotta, ecrivain vivant isolee au bord du lac. +169 La revolution francaise. 2eme epoque : les annees terribles 18 1989 175 Les annees terribles debutent le 13 aout 1792 avec l'incarceration de la famille royale au Temple sous la surveillance de la Commune de Paris. Ces annees verront l'affrontement de Danton, Robespierre et Camille Desmoulins. +170 Over the top 1 1987 176 Lincoln Hawk est camionneur. Divorce de Christina Cutler, fille d'une riche famille, il n'a jamais pu revoir son fils Michael qui a maintenant 12 ans. Eleve par son grand-pere, l'enfant a ete inscrit dans une academie militaire. +171 La cage aux folles III 5 1985 90 Renato et Zaza, couple d'homosexuels, ont d'enormes problemes d'argent. La mort d'un oncle de Zaza leur apporte une solution inesperee. Mais Zaza devra d'abord se marier et avoir un enfant. +172 Maurice 1 1986 177 Sur la plage, un professeur explique les choses de la vie au jeune Maurice. en 1910 a Cambridge, Maurice est devenu etudiant et se lie d'une amitie exaltee avec Clive Durham. Attire l'un vers l'autre, Clive ose le premier parler d'amour. +173 Toscanini 20 1988 178 Fils d'ouvrier, Arturo Toscanini decouvre l'opera a 8 ans en entendant la diva Nadina Bulichoff chanter Aida. A 18 ans, il est devenu violoncelliste virtuose. Refuse au concours d'entree de la Scala, il s'embarque avec une troupe d'opera pour le Bresi +174 Les envoutes 2 1982 89 Psychiatre de la brigade criminelle de New York, Cal Jamison vient de perdre accidentellement sa femme. Pour oublier le drame, il decide de demenager et s'installe avec son fils Chris. Il enquete sur le meutre d'enfants. +175 Star Trek IV : retour sur Terre 2 1986 179 XXIII eme siecle : une sonde extra-terrestre emettant un son plaintif detruit un vaisseau terrien avant de se diriger vers la Terre. Pendant ce temps, l'amiral Kirk s'apprete a affronter la cour martiale pour repondre du sabordage de l'Enterprise. +176 Ras les profs 5 1984 180 Alex Jurel est professeur depuis 15 ans au college Kennedy. Perfectionniste et passione a ses debuts, il ne croit plus a sa mission pedagogique, tout comme ses collegues. +177 Sens unique 9 1987 181 Le lieutenant Tom Farrel est acueilli en heros a Washington apres un sauvetage audacieux en mer. Il rencontre Susan Atweil qui devient sa maitresse. Affecte aupres du secretaire d'etat a la defense David Brice, il decouvre qu'il est l'amant de Susan. +178 Le retour de Max Dugan 5 1983 182 Nora McPhee est veuve. Avec son maigre salaire de professeur, elle tente d'elever Michael, son fils de 15 ans. Son pere, qui l'a abandonnee lorqu'elle etait enfant lui rend une visite surprise. Ancien gangster, il est gravement malade. +179 Une affaire de femmes 1 1988 183 Sous l'occupation, Marie, la trentaine, vit modestement avec ses deux enfants, Pierrot et Mouche. Paul, son mari, est prisonnier en Allemagne. Pour rendre service a une voisine, Marie l'aide a avorter. Peu a peu, sa reputation s'etend. +180 Camille Claudel 1 1988 184 Paris, 1885. Un jeune homme court dans la nuit. C'est Paul Claudel dont la soeur vient encore de fuguer. Passionnee de sculpture, elle s'est faufilee dans un chantier pour extraire de la terre a modeler. Elle recoit Auguste Rodin, celebre sculpteur. +181 Jardins de pierre 1 1987 185 +182 Sans peur et sans reproche 5 1988 186 A la fin du XVeme siecle, les armees du roi de France traverse l'Italie pour aller reconquerir le royaume de Naples. Bellabre, capitaine Francais plutot teigneux, decide de se venger de Terrail de Bayard qui l'a ridiculise lors d'un tournoi. +183 Les enfants de Salem 7 1987 187 Revenu d'amazonie pour s'occuper de son fils Jeremy qui souffre de problemes psychologiques, Joe Weber l'emmene a Salem dans une maison leguee par sa tante. La ville est en fait peuplee de vampires. +184 La bamba 1 1987 188 Californie, ete 1957. Ricardo Valenzuela trie des oranges pour quelques dollars. Il reve de rock and roll, de cadillac et de grand amour. Premarque par un producteur, il triomphe grace au ramake d'un folklore mexicain : la Bamba. +185 Eclair de lune 5 1987 189 Loretta a perdu son mari, ecrase sous un bus. Persuadee d'etre abonnee a la malchance, elle a decide de ne plus se marier. Elle cede pourtant aux avances d'un homme serieux au compte en banque confortable. +186 Amsterdamned 4 1987 144 L'eau glauque des canaux d'Amsterdam. Une prostituee est sauvagement assassinee sous les yeux d'une clocharde. L'inspecteur Erik Visser est charge de mener l'enquete. Il s'engage dans le labyrinthe tortueux des canaux a la recherche du meurtrier. +187 Traitre sur commande 1 1969 190 1876, Pennsylvanie. Cruellement exploites dans les mines de charbon, des immigrants irlandais fondent une organisation de sabotage pour vaincre l'oppression. James McKenna, agent secret charge de demasquer les rebelles, s'infiltre dans le groupe. +188 Agnes de Dieu 1 1985 189 Soeur Agnes est-elle une folle criminelle ou une sainte possedee de Dieu ? Soupconnee d'infanticide, la jeune novice se mure dans un silence devot. Chargee de l'enquete, le Dr Martha Livingston se heurte a la mere superieure qui protege Agnes. +189 A double tranchant 4 1986 28 L'heritiere d'une des plus grosses fortunes de Los Angeles est ferocement assassinee par un homme masque. Les soupcons se portent sur son mari Jack Forrester. Le procureur Krasny est convaincu de sa culpabilite. +190 La rancon de la liberte 6 1984 191 Josny est un garcon manque qui mene une vie d'ecoliere classique, va a la peche et vend des hamecons. Son pere Billy etant au bagne, elle vit seule avec sa grand-mere sur les bords du Mississipi. Un jour, Billy est libere. +191 Maniac cop 2 1988 192 New York baigne dans la terreur : un maniaque sanguinaire soupconne d'etre un agent de police massacre sans raison les flaneurs. Le detective Frank McRae parvient a l'identifier mais decouvre avec horreur que le meurtrier est mort depuis des annees. +192 Homeboy 1 1988 193 Johnny Walker est un loser de la boxe. Il est de ceux qui encaisse tous les coups et quolibets. Solitaire, farouche, paume, defigure il echoue dans une ville minable. Il tente de faire le point mais se laisse entrainer par un gangster miteux. +193 Iceman 2 1984 194 Une expedition scientifique au pole nord decouvre un homme de Neanderthal dans la glace depuis 20000 ans. +194 Un jour, une vie 1 1975 195 A 18 ans, Jill Kinmont accumule des victoires en ski. Toute l'equipe olympique a les yeux fixes sur elle et sur son amie Audra-Jo, grande skieuse aussi. Mais Audra-Jo est terrassee par la polio, Jill est victime d'une chute qui la laisse brisee. +195 La mouche 2 1987 196 Seth Bundle, physique de play boy, travaille en solitaire dans son labo. Expert en manipulations genetiques, il a mis au point un systeme qui permet de transferer la matiere d'un point a un autre. +196 La fissure 7 1987 197 Alors que leurs parents sont partis pour le week-end, trois adolescents decouvrent un arbre abattu par la foudre qui presente une cavite bizarre. Une succession d'etranges incidents va rendre la vie a une multitude de petits monstres tres agressifs. +197 Baxter 5 1989 198 On a beau etre chien, on n'est pas des betes pense Baxter qui en a par dessus la truffe des faceties cruelles de sa maitresse. Courtaud mais muscle, Baxter, le bull-terrier, a la langue bien pendue et la cervelle en ebullition. Il moralise sur le mond +198 La malediction du cobra 7 1979 199 Un cobra vient semer la terreur dans une petite ville. Le maire et un promoteur immobilier tentent de minimiser l'affaire. Pour le pere Farrow, le cobra est l'incarnation de Satan venu venger un druide brule vif quelques siecles plus tot. +199 Le festin de Babette 5 1987 200 Par un soir de tempete, Babette debarque sur la cote danoise avec pour seul viatique une lettre de recommandation qui lui permet de se faire engager comme gouvernante chez deux vieilles demoiselles. +200 Les cigognes n'en font qu'a leur tete 5 1989 201 40 ans, amoureux et fortunes, Marie et Jeremie vivent pourtant un drame : impossible pour eux d'avoir un enfant, et impossible de savoir pourquoi. Leur medecin leur conseille l'adoption, mais cela s'avere difficile tout comme pour une mere porteuse. +201 Voleur de desirs 1 1984 202 Lorsque Scott Muller cambriole l'appartement des Davis, il empoche machinalement le journal intime de Mickey. Il prend plus tard beaucoup de plaisirs a le lire et decouvre ses desirs, ses fantasmes, sa quete de l'homme ideal. +202 La lectrice 5 1988 203 Constance lit un roman qui raconte l'histoire de son etat. Par voie de petites annonces, Marie propose de faire des lectures a domicile. Les clients ne manquent pas. L'adolescent handicape qui admire ses jambes et les contes de Maupassant... +203 Projet X 2 1988 204 Mis a pied pour avoir emprunte un avion de chasse, Jimmy Garrett est affecte dans un centre de recherche. Ses competences techniques l'amenent a travailler dans un laboratoire qui utilise des chimpazes sur simulateur de vol. +204 Starman 2 1985 205 Une creature etrange, arrivee en pleine nuit, s'installe chez une jeune veuve en pleine nuit. Elle se transforme en humain sous les traits de son ex mari. Elle comprend qu'elle doit obeir a la copie de son mari. +205 Colere en Louisiane 1 1987 23 1972. En louisiane, un vieil ouvrier agricole noir, Mathu, tue le fils d'un metayer qui pourchassait un frere de race. Afin de le proteger, la jeune proprietaire de la plantation, Candy, alerte les amis du vieil homme qui avec le sherif s'accusent. +206 La maison de grand-mere 2 1988 206 A la mort de leur pere, 2 enfants, David et Lynn, s'installent chez leurs grands-parents dans une ferme isolee. Lors de la 1ere nuit, David reve d'un double assassinat perpetre par son grand-pere. Une inconnue rode dans la maison. +207 Je suis le seigneur du chateau 1 1989 207 Un chateau en Bretagne dans les annees 50. Au moment de mourir, Mme Breaud demande a son fils Thomas de veiller sur son pere Jean. Quand Jean engage une gouvernante, Thomas declare la guerre a son fils Charles pour les faire partir. +209 L'aventure interieure 2 1987 160 Pendleton, pilote d'essai bagarreur et alcoolique, delaisse par l'armee et par sa petite amie, sombre dans la deprime. Il accepte de commander un vaisseau miniaturise injecte dans le corps d'un lapin. Mais il est injecte dans la fesse de Jack Putter. +210 La soule 1 1989 208 1813. Ecrasees par les Anglais, les troupes de Napoleon sont expediees au bagne. Le lieutenant Pierre Cursley est resolu a punir le traitre : Francois Lemercier. 2 ans plus tard, Lemrecier est devenu coordonnier estime et champion de la soule. +211 Soleil de nuit 9 1986 209 Danseur etoile du Kirov a Leningrad, Nikolai Rodchenko est passe a l'ouest il y a 8 ans. Victime d'une grave avarie, l'avion qui l'emporte vers le Japon se pose sur une base militaire siberienne. Il est reconnu par Chaiko, colonel au KGB. +212 Froid comme la mort 4 1986 210 Katie McGovern, actrice au chomage, est appelee par le docteur Lewis, psychiatre reconverti dans la production cinematographique, pour remplacer la comedienne Julie Rose a qui elle ressemble. Mais Katie decouvre qu'elle est prisonniere du docteur. +213 Invasion USA 6 1985 211 Matt Hunter vit tranquillement en Floride loin de la civilisation. Il apprend qu'en ville des terrorristes commettent des attentats dans le but d'envahir des Etats Unis. Hunter refuse de reprendre du service jusqu'a l'assassinat de son meilleur ami. +214 La petite voleuse 1 1988 212 Abandonnee par sa mere, Janine vit en province chez son oncle et sa tante. A 16 ans, elle ne peut s'empecher de chaparder : des chaussures, de la lingerie... Le cure la mene chez les gendarmes. Elle trouve une place de bonne chez un jeune couple. +215 Les petites cheries 5 1980 213 Aux abords d'un lac, filles et garcons s'installent dans leurs camps d'ete respectifs. Tres vite, Angel, jeune sauvageonne, s'oppose a Ferry, une fille a papa. Un concours est organise pour les departager : la premiere qui perdra sa virginite. +216 La couleur pourpre 1 1985 36 1908. Celie et Nettie, 2 soeurs noires, vivent dans le sud des Etats Unis. Celie, 14 ans, a 2 enfants de son pere. A leur naissance, il les vend a un pasteur puis oblige Celie a epouser Albert, un veuf brutal. +217 Le solitaire 4 1980 214 Apres 11 annees de prison, Frank veut rattraper le temps perdu. Le jour, il dirige un garage de voitures d'occasion,; la nuit, il vole des diamants en percant des coffres forts. Il reve de se retirer. +218 September 1 1987 30 Apres une tentative de suicide, Lane passe la fin de l'ete dans sa maison du Vermont. Elle y heberge Stephanie, sa meilleure amie. Ignorant les vacances d'Howard, un voisin professeur, Lane s'est eprise de Peter, un ecrivain divorce. +219 Saigon, l'enfer pour deux flics 4 1987 215 AB. Saison 1968. Buck McGriff et Albaby Perkins, policiers militaires en civil, sont charges de retrouver l'assassin, qui semble etre un officier americain, d'une prostituee. Le seul temoin, un GI noir, est abattu avant d'avoir pu dire ce qu'il savait. +220 Poltergeist III 2 1988 216 Chicago. Bruce et Patricia Gardner recueillent leur niece Carol Anne pour lui faire oublier les cauchemars qui la hantent. Bientot d'etranges phenomenes se produisent. +221 Romuald et Juliette 5 1989 45 Depuis 10 ans, Juliette, antillaise, fais le menage dans les locaux de l'entreprise Blanlait dirige par Romuald, jeune PDG. Celui-ci est victime d'un complot organise par ses collaborateurs : il est accuse de delit d'initie par la COB. Juliette veille +208 Histoires fantastiques II 2 1986 36 +222 L'enfant du diable 2 1980 217 A la suite d'un accident qui a coute la vie a sa femme et a sa fille, John Russel s'installe dans une vieille batisse de Seattle. La nuit, des bruits etranges se font entendre. Persuade qu'il a affaire a un fantome,il organise des seances de spiritism +223 Itineraire d'un enfant gate 5 1988 38 Enfant abandonne, Sam Lion a ete recueilli et eleve dans un cirque. Une chute de trapeze l'ecarte des chapiteaux. A 16 ans, il fait fortune dans l'industrie du nettoyage. A 50 ans, riche et entoure, il decide de tout plaquer et de partir en bateau. +224 La mort en prime 2 1984 218 Otto, un jeune punk qui travaille dans un super-marche, vient de perdre son emploi. Errant dans Los Angeles, il accepte l'offre d'un inconnu qui lui propose 25 dollars pour convoyer la voiture de sa femme. En fait,l'homme est un +225 Barry Lyndon 18 1975 52 L'Irlande au XVIIIe siecle. Redmond Barry, jeune homme naif et desargente, doit prendre la suite apres avoir battu en duel le soupirant de sa cousine. Depouille par des brigands, il s'engage dans l'armee anglaise et deserte apres la 1ere bataille. +226 Traquee 4 1988 219 Unique temoin de l'assassinat de l'un de ses amis par le gangster psychopathe Joey Venza, Claire Gregory, une riche celibataire, voit sa vie menacee. Mike Keegan, policier issu d'un milieu modeste est charge de sa protection. Ils deviennent amant. +227 Good morning Vietnam 1 1988 102 1965. Adrian Cronauer est affecte a la radio des forces armees de Saigon. Excellent disc-jockey, il refuse la musique lenifiante, l'information censuree et impose le rock et des sketches delirants. Ses chefs tentent de l'interdire d'antenne. +228 Un roi a New York 5 1957 26 Chasse d'Estrovie, le roi Shadow se refugie a New York. Les services de l'immigration ne lui reservent pas l'accueil escompte. Ses deboires commencent. +229 Dragnet 5 1987 220 Flic aussi rigoureux que sinistre, Joe Friday applique la loi consciencieusement, au grand desespoir de ses coequipiers qui ne supportent pas sa morosite. Son nouveau collegue, Pep Streebek, est un jeune surexcite bagarreur. +230 Enquete sur une passion 4 1980 221 Vienne. Le psychanalyste americain Alex Linden appelle l'hopital en pleine nuit. Sa maitresse, Milena Flaherty vient de tenter de se suicider. En attendant qu'elle sorte de son coma, l'inspecteur Netrusil l'interroge. +231 Ne reveillez pas un flic qui dort 4 1988 222 Au cours d'un meme nuit, 3 caids de la pegre sont sauvagement assassines. Les tueurs sont des policiers appartenant au groupe secret +232 Le merdier 10 1977 223 Sud-Vietnam, 1964. Le major Asa Barker, un veteran, accueille de nouvelles recrues dans son detachement de Penang. Il recoit l'ordre d'occuper Muc Wa, un avant poste francais abandonne. Barker n'y voit aucun interet mais obeit et y envoie les +234 Broadcast news 5 1987 224 Tom Grunick poosede le look ideal pour une star des medias. Presentateur impeccable du JT, propulse par une jeune productrice, Jane Craig, il comprend a peine ce qu'il raconte. Aaron Altman est un journaliste talentueux mais qui passe mal a l'ecran. +235 Le deux Fragonard 1 1989 225 Honore Fragonard est un peintre sensuel et charmeur. Son cousin, Cyprien Fragonard, est un anatomiste qui disseque les corps avec maestria et delices. Honore s'eprend de Marianne, un petite lavandiere. Cyprien, lui, aimerait la decouper. +236 L'ile de Pascali 1 1987 226 1908. Depuis 20 ans, l'espion Basil Pascali envoie des rapports depuis l'ile de Nisi au sultan de Constantinople. Il loue ses services d'interpret a l'archeologue Anthony Bowles. Bowles loue bientot une idylle avec Lydia dont Pascali est amoureux. +237 Copain, copine 5 1984 227 Romantique incurable et ecrivain a ses heures, Joe travaille comme agent de securite dans un college. Il y rencontre Emily, mere celibataire d'un gamin de 10 ans brillants mais desespere. Ils se lient d'amitie. +238 Robocop 2 1987 228 XXIe siecle. Le crime regne en maitre sur la cite de Detroit. Une puissante multinationale controle la police. Elle decide d'endiguer ses pertes en creant Robocop, un androide de chair et d'acier. Murphy, policier dans le coma sert de cobaye. +239 Cyrano 1 1989 229 Cyrano est un vrai heros selon la tradition, mais aussi le premier des anti-heros. Cyrano connait l'echec, le malheur. Il est passe a cote du succes et du grand amour. +240 La main droite du diable 1 1988 19 Jeune recrue du FBI, Cathy Weaver est charge par son amant, Michael Carnes, d'infiltrer un groupe d'extreme droite. Elle se fait embaucher comme saisonniere aupres du fermier Gary Simmons. +241 Le maitre de musique 21 1987 230 Au debut du siecle, Joachim Dallayrac, chanteur lyrique adule, annonce brusquement qu'il abandonne la scene. Il se retire dans son chateau avec sa compagne Estelle pour se consacrer a la formation de son unique eleve, Sophie. +242 L'ami retrouve 1 1989 143 55 ans apres avoir quitte l'Allemagne, Henry Strauss, avocat juif new-yorkais, decide d'y retourner en quete d'un ancien camarade de classe. Exile dans sa ville natale, il se rememore cette belle amitie detruite par l'horreur nazie. +243 Frantic 4 1987 232 Apres 17 ans de mariage, Richard et Sondra Walker s'offrent une seconde lune de miel a Paris a l'occasion d'un congres de cardiologie.Des leur arrivee, une de leurs valises est echangee. Puis Sondra disparait mysterieusement. +244 Manika une vie plus tard 1 1988 233 Dans un village de pecheurs situe au sud de l'Inde, une fillette de 10 ans, Manika, elevee chez les jesuites, est persuadee d'etre la reincarnation de l'epouse d'un riche Brahmane, morte en couche. +245 Une chance pas croyable 5 1987 180 Venues a la morgue identifier le corps de Michael, victime d'un attentat, Lauren et Sandy, eleves du professeur d'art dramatique Korzenowski decouvrent qu'elles sont les maitresses du meme homme. +246 Aigle de fer 6 1985 234 Au cours d'un exercice de routine en Mediterranee, l'avion du colonel Ted Masters est abattu. Capture par un pay arabe hostile, il doit etre pendu. Son fils Doug decide d'organiser une mission de sauvetage avec ses amis les Aigles. +247 Lady Jane 16 1985 235 1552. LE monarque anglais Edouard IV est moribond. Le duc de Nothemberland complote pour que lui succede Jeanne Grey, une cousine eloignee. Il la marie de force a son fils Guilford Dudley. +248 L'empire du soleil 1 1987 36 1941, Shangai. La seconde guerre mondiale a gagne l'orient. L'occupation d'une partie de la Chine par le Japon n'affecte pas les zones libres. Enfant choye, insouciant et passionne d'aviation, Jim decouvre peu a peu la violence et la mort. +250 Les bois noirs 1 1989 236 Violette est accusee de la mort de son mari. Gustave, un perigourdain, l'avait demande en mariage apres la lecture de son journal intime oublie dans un taxi. Accueillie au domaine par la mere de Gustave, Violette supporte mal l'atmosphere du chateau. +251 Imagemaker 22 1986 237 Apres le suicide de sa femme, Roger Blackwell quitte son poste de conseiller aupres du president de la republique, gurge par une journaliste sans scrupule. Il decide de preparer un film pour denoncer la corruption politique. +252 Who's that girl 5 1987 137 Nikki a paye 4 ans de prison a la place d'un criminel dont elle est decidee a se venger. Surveillee par l'avocat d'un riche homme d'affaires, Nikki le persuade de l'aider. +253 Les eaux printanieres 1 1989 238 Jeune aristocrate russe, Dimitri Sanine entreprend de parcourir l'Europe avant de regagner ses terres. De passage en Allemagne, il tombe amoureux de Gemma, une jolie patissiere, puis de Maria, noble et sophistiquee. +254 L'arme fatale 4 1986 46 Martin Riggs, policier a Los Angeles, a perdu gout a la vie depuis la mort de sa femme. Ses tendances suicidaires lui ont valu le surnom d"Arme fatale". Il devient le partenaire de Roger Murtaugh, flic noir quinquagenaire et paisible. +255 L'invite surprise 5 1989 90 Martin, jeune homme noir sans histoire, est temoin d'un attentat. Il photographie par hasard le terroriste qui est en fait un agent de la DGSE. Il alerte la presse avec l'aide de son pere adoptif, Charles Mazenna, ancien chef de l'anti gang. +256 Faux temoin 19 1987 239 De la fenetre de son amant, Terry, Sylvia a assiste a une tentative de viol. Apprenant que la meme nuit l'agresseur a tue une autre femme et craignant la jalousie de son mari, Sylvia demande a Terry de temoigner a sa place +257 Randonnee pour un tueur 4 1988 240 Warren Stantin, un veteran du FBI, poursuit l'auteur d'un hold-up sanglant. Le meurtre d'un pecheur le met sur la piste d'un groupe de randonneurs, escorte d'une jeune uide, Sarah. Il oblige son compagnon, Knox, a l'accompagner sur les traces du tueur +258 La fin du jour 1 1939 241 Fini le temps du succes pour Saint-Clair. Il echoue a l'hospice pour comediens. Son arrivee reveille de vieilles rancoueurs tandis que l'etablissement risque de fermer faute d'argent. +259 Bapteme 1 1989 242 De 1935 a nos jours, la vie de Aline, la fille d'un cafetier de Douchy-les-Mines et de Pierre, vendeur ambulant sur les marches. Un couple ordinaire qui s'est aime follement, qui a souffert tragiquement, qui s'est dechire. +260 Razorback 2 1984 243 Au coeur de l'outback australien, une enorme bete aneantit la ferme du vieux Jake Cullen, tuant son petit fils. Deux ans plus tard, une journaliste de New York, Beth Winters, qui enquete sur le massacre des kangourous disparait. +261 Les incorruptibles 4 1987 164 Chicago 1930. Al Capone controle le jeu, la prostitution, le racket, la contrebande d'alcool. Jeune agent federal, Eliot Ness est charge de faire tomber le caid. Apres un premier echec, Ness recrute Malone, un vieux flic, Stone, tireur redoutable. +262 Attends-moi au ciel 5 1987 244 Responsable de la securite du general Franco vieillissant, Alberto decide de trouver un sosie au Caudillo. Il fait enlever Paulino, un tranquille orthopediste qui devra imiter le dictateur. +263 Brazil 2 1985 25 Brazil, cite futuriste ou tout est regle. L'etat, big brother omnipotent, controle les faits et gestes des habitants par le biais d'un systeme informatique monstrueux. Sam Lowry en est un rouage, il pianote le jour et reve d'amour la nuit. +264 A la poursuite d'Octobre rouge 0 1990 146 Sans raisons apparentes, un sous-marin nucleaire sovietique s'approche dangereusement des cotes americaines. Quelles sont ses intentions : revanche, provocation, acte de demence ou geste de paix ? +265 La fille de Jack l'eventreur 7 1971 245 Jack l'eventreur embrasse une derniere fois sa fille, Anna, et tue sa femme sous ses yeux. Des annees plus tard, le docteur Pritchard veut guerir Anna de sess pulsions criminelles. +266 Double detente 4 1988 54 Le trafiquant de drogue Viktor Rostavili abat le coequipier du capitaine de la milice moscovite Ivan Danko avant de s'enfuir a Chicago. La, il met en place un nouveau reseau en eliminant le partenaire du sergent Art Ridzik. Danko arrive a Chicago. +267 Le choix du destin 10 1977 228 1940. La Hague. un groupe d'etudiants joue au tennis quand la radio annonce que la guerre est declaree. Pour le jeune Erik, c'est la fin de la vie facile. Il devient un farouche resistant et multiplie les actions contre les nazis. +268 Ratboy 1 1986 246 Eugene, l'enfant rat, vit dans une decharge pres de Los Angeles. Il est kidnappe par deux malfrats qui alertent les medias et veulent le vendre au plus offrant. Nikki, jeune femme en quete de scoop leur ravit le monstre avec l'aide de ses 2 freres. +269 Bienvenue au paradis 10 1990 86 Pendant la deuxieme guerre mondiale, plus de 110 000 Americains d'origine japonaise ont ete internes dans des camps de concentration aux USA. +270 Sans pitie 19 1986 247 Un dealer met les policiers Eddie Jillette et Joey Collins sur la piste de Deneveux, un gros bonnet de la drogue. Ils se font passer pour des tueurs a gages pour l'approcher mais il se fait descendre par un caid adverse et Joey se fait poignarde. +271 Defense play 19 1988 248 Scott Denton est un etudiant feru d'informatique. Il rencontre Karen dont le pere, un important scientifique, travaille sur des helicopteres miniatures destines a l'armee. +272 Les sorcieres d'Eastwick 5 1987 249 Alexandra, Jane et Sukie, 3 amies celibbataires, vivent et s'ennuient a Eastwick, une petite ville puritaine. Elles se retrouvent une fois par semaine. Elles definissent l'homme ideal. Dans le meme temps, Daryl Van Horne emmenage a Eastwick. +274 Henry et June 1 1990 250 Paris 1931. La passion d'une femme pour Henry Miller et sa femme June. +275 Promotion canape 5 1990 201 Dans l'administration des Postes, la "promotion canape" est le moyen le plus radical et le moins orthodoxe de grimper les echelons de la hierarchie. +276 Wall Street 1 1987 251 Employe dans une banque de Wall Street, Bud Fox est devore par l'ambition. Il vend une information confidentielle concernant une compagnie aerienne ou travaille son pere a Gordon Gekko. Reconnaissant, Gekko prend Bud sous son aile. +277 Complot de famille 12 1976 5 Sentant sa mort prochaine, Julia Rainbird desire leguer toute sa fortune a son neveu Edward. Enfant illegitime de sa soeur, sa famille l'avait confie 40 ans plus tot aux Shoebridge. Julia engage une medium pour retrouver sa trace. +278 La terre des pharaons 16 1955 252 Egypte, 2800 avant Jesus Christ. De retour dans son pays, le pharaon Cheops offre a Vashtar, architecte esclave, de le liberer ainsi que son peuple s'il lui construit un tombeau inviolable. +279 Manhattan 1 1979 30 Isaac, 42 ans et divorce, est auteur de sketches comiques pour la television. Parrallelement, il tente d'ecrire un roman sur New York qu'il adore, sans jamais parvenir a depasser le premier chapitre. +280 Le maitre de guerre 10 1986 120 Buveur et bagarreur, le sergent en retraite Highway, decore pour ses faits d'armes en Coree et au Viet Nam, se montre peu doue pour la vie civile. Reintegre dans l'armee, il se heurte a ses superieurs qui lui confient l'instruction d'indisciplines. +281 L'orchestre rouge 9 1989 253 1937. Peu avant son execution par Staline, le general Berzine, chef des renseignements sovietiques, demande a Leopold Trepper, militant revolutionnaire juif polonais, de monter un reseau d'espionnage anti nazi a Paris, Berlin et Bruxelles. +282 The assault 1 1986 254 Les Pays Bas debut 1945. La guerre touche a sa fin. Un soir, un policier collaborateur est abattu et son corps depose devant la maison des Steenwijk. La gestapo intervient, execute la famille et brule la maison sous les yeux du cadet Anton, survivant. +283 Ironweed 1 1987 255 Octobre 1938. Apres 22 annees d'errance, Francis Phelan est de retour a Albany. Il y avait connu autrefois le bonheur aupres de sa femme Annie. Se sentant responsable de la mort de l'un de ses enfants, il avait tout plaque. +284 Comedie d'amour 1 1989 256 Paris 1933. Depuis 20 ans, l'ecrivain Paul Leautaud entretient une relation purement physique avec Anne qu'il appelel "le Fleau", epouse de son ami Henri. Anne se montre jalouse de Marie D., une bibliothecaire qui s'interesse a l'oeuvre de Leautaud. +285 Confession criminelle 4 1987 257 Vicaire d'une modeste paroisse de Detroit, le Pere Koesler est mele a une affaire de meurtre. Un maniaque assassine systematiquement des religieuses. Inconscient ou pervers, il ne craint pas venir se confesser aupres du pere Koesler. +286 Cobra 4 1986 258 Marion Cobretti, dit Cobra, appartient aux Zombies, un corps de police tres special. Il n'intervient que dans les situations d'exception. Apres avoir abattu un preneur d'otages, Cobra enquete sur l'equarisseur, un fou qui a deja fait 15 victimes. +287 Chambre a part 5 1989 259 Gert et Martin vivaient gentiment a Londres une petite vie reglee sur l'horloge de Big Ben. Bien malgre eux, ils rencontrent un couple tornade irresistible. Martin tombe amoureux fou de Marie pendant que Francis s'occupe avec Gert. +288 La derniere cible 4 1988 260 Plusieurs personnalites du show-business sont assassinees. Leurs noms figurent tous sur une liste noire etablie pour plaisanter par le realisateur Peter Swan. Charge de l'enquete, l'inspecteur Harry Callahan decouvre qu'il est egalement sur la liste. +289 Les enfants du desordre 1 1989 261 En prison, Marie, une jeune droguee, decouvre l'existence d'une compagnie theatrale qui reinsere les delinquants. A sa liberation, elle est prise en charge par les educateurs. +290 Voyageur malgre lui 1 1988 166 Auteur de guides de voyage pour ceux qui detestent les deplacements, Macon Leary est un homme desabuse et comateux depuis la mort de son fils. Sa femme va le quitter et son chien Edward deprime. Il rencontre une jeune dresseuse d'animaux, Muriel. +291 Nadine 5 1987 262 Nadine, en instance de divorce, accepte de poser nue pour un photographe. Prise de remords, elle retourne le voir et assiste a son assassinat. Paniquee, elle demande l'aide de son mari, Vernon, et s'empare par erreur de dossiers ultra secrets. +292 Le ninja blanc 6 1987 263 Dans une petite ile des caraibes, des Marines disparaissent mysterieusement. Le colonel Woodward envoie sur place deux Rangers: Joe Armstrong et Curtis Jackson. Ceux-ci ne tardent pas a decouvrir qu'ils ont ete enleves par le Lion, un trafiquant. +293 Noce blanche 1 1989 125 Professeur de philosophie a St Etienne, Franccois, la cinquantaine, marie, se prend d'amitie pour Mathilde, une de ses eleves. Il decide d'aider dans ses etudes l'adolescente perturbee et aparemment droguee. Leur complicite se transforme en passion. +294 Rien que pour vos yeux 6 1981 264 Havelock, un agent anglais, est tue alors qu'il cherche a recuperer l'ATAC, un emetteur de mise a feu des missiles nucleaires englouti dans l'epave d'un chalutier. James Bond localise son assassin en Espagne, mais celui-ci est execute a son tour. +295 Pentimento 5 1989 265 Lucie apprend de sa mere, une alcoolique extravagante, le deces de son pere qu'elle n'a jamais connu. Bouleversee, elle se rend au cimetiere mais se trompe de cortege et Charles, ke fils de l'homonyme defunt, est ravi de decouvrir une demi-soeur. +296 Un monde sans pitie 1 1989 266 Completement paume ou simplement desinvolte, Hippo passe son temps a ne rien faire a part la nouba et des parties de poker. Un jour il tombe amoureux de Nathalie, "grosse tete" BCBG et serieuse qui fuit les bohemes. +297 Epouvante sur New York 3 1982 187 Blesse au cours du hold-up d'une bijouterie, Jimmy Quinn se refugie au sommet d'un building. Il y decouvre un nid gigantesque contenant un oeuf enorme et des ossements humains. +298 Les 400 coups 1 1959 66 Antoine Doinel et son copain Rene, cancres patentes, hantent les petits cinemas de la place Clichy. Antoine decide un matin de faire l'ecole buissonniere avec Rene. Le lendemain, pour s'excuser, il affirme a son maitre que sa mere est morte. +299 Piege de cristal 6 1988 146 Un 24 decembre, le policier new-yorkais John McClane arrive a Los Angeles pour passer Noel avec ses enfants. Il rejoint son epouse Holly. Un groupe d'hommes armes fait irruption. Ls convives sont pris en otages. Seul McClane echappe aux assaillants. +300 Bandini 1 1989 268 Arturo, fils d'emigres italiens, ne reve que de base-ball et de la jolie Rosa. Mais en cet hiver 1928, Arturo perd de son insouciance lorsque son pere, macon, abandonne sa famille pour une riche veuve mal vieillie. +301 He's my girl 5 1987 270 Bryan, futur chanteur, gagne dans un concours televise un sejour a Hollywood, avec en prime la promesse d'un lancement professionnel. Seule condition a l'attribution de son prix : une presence feminine a ses cotes. Reggie, son manager, se travestit. +302 Mosquito coast 6 1986 271 Decu du monde dont il voudrait gommer les imperfections, Allie Fox, scientifique genial et marginal, part avec toute sa famille au Honduras et s'y amenage une thebaide elaboree. +303 L'homme qui voulait savoir 19 1988 272 En vacances dans le midi de la France, Saskia et Rex, des Hollandais, s'arretent dans une station-service. La jeune femme s'absente un moment sans jamais reapparaitre. +304 La discrete 5 1990 273 Pour se venger d'une femme, Antoine suit le conseil d'un de ses amis et par le biais d'un journal intime qu'il veut publier decide de seduire une jeune fille et de l'abandonner. +305 Milena 1 1991 274 La vie passionnee d'une jeune femme intelligente et brillante qui a sacrifie sa vie a ses convictions. Milena Jesenska a ete la traductrice et le grand amour epistolaire de Franz Kafka. +306 Desperate hours 1 1990 138 Michael Bosworth est un tueur dangereux. Il s'evade grace a la complicite de son avocate Nancy Breyers. Il investit le domicile de Tim et Nora Cornell qu'il prend en otage avec leur deux enfants pour attendre Nancy et fuir avec elle. +307 L'adieu au roi 10 1988 276 Le capitaine Fairbourne est parachute en fevrier 1945 au-dessus de la jungle de Borneo pour enroler les Dayaks chasseurs de tetes et en faire des combattants contre les Japonais. Leur chef est Learoyd, un ancien soldat americain deserteur. +308 Big 5 1988 173 Josh a 12 ans. Il a tour pour etre heureux sauf qu'il n'est pas assez grand pour courtiser la fille de 15 ans qu'il aime. Un magicien de carton-pate exauce son voeux d'etre grand. Contraint de quitter sa famille, il reussit dans une fabrique de jouets +309 Running man 2 1987 277 En 2019, les Etats-Unis vivent sous la dictature. Pour avoir refuse de tirer sur une foule de manifestants, le policier Ben Richards est condamne a participer au jeu televise "Running man". Il doit affronter des gladiateurs dans les rues de L.A. +310 Sur le fil du scalpel 7 1987 278 A Los Angeles, un psychopathe assassine des prostituees de facon bien specifiques et a des dates bien precises. La police est persuadee d'avoir affaire a un homme qui fete le centenaire de Jack l'eventreur. +311 Tom et Lola 2 1989 279 Depourvus de defenses immunitaires, Tom et Lola, vivent depuis leur naissance sous une bulle de plastique a l'abri des microbes. Les 2 enfants communiquent par gestes et partagent le reve de s'evader vers un pays ou l'air est pur, l'Alaska. +312 Faux-semblants 1 1988 196 Les jumeaux Beverly et Elliot Mantle, deux gynecologues de renom, partagent tout : appartement, cabinet medical et petites amies. Mais la rencontre d'une actrice, Claire Niveau, va bouleverser leur vie quotidienne et leur equilibre mental. +313 Cocktail 5 1988 181 Brian, jeune homme ambitieux, se lance a l'assaut de New-York. Apres une experience ratee dans le milieu de la finance, il accepte un emploi de barman a Manhattan. Doug, un homme solitaire et cynique, lui apprend toutes les ficelles du metier. +314 3615 code pere Noel 19 1989 280 Thomas, un gamin surdoue feru d'informatique, passe sa commande au Pere Noel par minitel. Il decide ensuite de l'attendre dans l'espoir de le capturer. Mais son message a ete intercepte par un fou dangereux qui s'introduit chez lui. +315 Objectif nucleaire 1 1989 281 Alors qu'il s'apprete a etre decore, l'eminent neurologue Alexander Brown est hante par ses souvenirs du passe. 30 ans plus tot, en 1956, il avait affecte dans l'armee pour tester la resistance d'un groupe de cobayes humains aux radiations nucleaires. +316 Mort a l'arrivee 19 1988 282 Professeur de lettres a l'universite et ecrivain repute, Dexter Cornell entre en titubant dans un commissariat pour faire une deposition sur son propre meurtre. Empoisonne a son insu, il n'a plus que 24 heures a vivre. +317 Gorilles dans la brume 6 1988 283 1966. L'Americaine Dian Fossey arrive au Zaire pour recenser et etudier les gorilles de montagne menaces de disparition par le braconnage. Chassee par la guerre civile, elle part s'installer au Rwanda. Elle fonde un centre de recherches. +318 Au fil de la vie 1 1988 284 En 1957, 2 fillettes se rencontrent sur une plage d'Atlantic City. Issue d'un milieu populaire, la deluree C.C. Bloom reve d'etre chanteuse. Hilary, plus reservee, appartient a la haute bourgeoisie. Separees, elles se retrouvent a l'age adulte. +319 Blindside 19 1987 285 Penfield Gruber, gerant d'un motel, est contacte par des truands pour espionner un de ses locataires. Il decouvre alors un complot contre une femme dont il tombe amoureux. +320 Chacun sa chance 19 1990 124 Angela Crispini, une femme mysterieuse, demande au detective prive Tom O'Toole d'enqueter sur l'assassinat d'un de ses amis. Le neveu de la victime, Felix Daniels, a ete inculpe du meurtre mais Angela est persudaee de son innocence. +321 Natty Gan 1 1986 286 Chicago 1935. Sol Gann et sa fille Natty de 13 ans vivent dans un modeste hotel. Chomeur et sans ressource, Sol part travailler comme bucheron a l'autre bout du pays en confiant Natty a la gerante de l'hotel. Mais celle-ci s'enfuit retrouver son pere. +322 Retour de la riviere Kwai 10 1988 287 En fevrier 1945, l'aviation americaine bombarde un pont sur la riviere Kwai en Thailande. les Japonais exercent aussitot des represailles sur leurs prisonniers. Ils evacuent les hommes valides vers le Japon prive de main-d'oeuvre. +323 Danse avec les loups 6 1991 288 Grande fresque sur les terres vierges de l'Amerique, ce document passionnant sur le peuple Sioux fait connaitre ces indiens victimes d'un des plus grands genocides de l'Humanite. +325 L'eveil 1 1990 173 New-York 1969. Le docteur Malcolm Sayer est un jeune et brillant neurologue que son temperament farouche et une timidite maladive ont oriente vers la recherche. Il postule un emploi et se voit confier un groupe de malades psychiques. +326 Oublier Palerme 1 1989 290 Carmine Bonavia, un jeune americain d'origine sicilienne, brigue la mairie de New York. Interviewe par une journaliste italienne, il se prononce pour une legalisation reglementee de la drogue. Il se rend a Palerme.La mafia ne tarde pas a se manifester +327 Criters II 7 1988 291 Brad Brown revient passer ses vacances a Grovers Bend, une petite ville ammericaine qui fut un an auparavant envahie par de feroces creatures cannibales, les critters. Le jour de paque, des oeufs eclosent liberant de nouveaux monstres. +328 La Baule Les-Pins 1 1989 292 1958. Frederique 13 ans et Sophie 8 ans partent en vacances a la Baule comme tous les ans. L'oncle Leon et la tante Bella les attendent comme tous les ans, mais leur mere Lena reste a Lyon pour de mysterieuses raisons et confie la garde a la Bonne. +329 La fille des collines 1 1989 293 Tom revient de la guerre d'Algerie. Son pere est mort et l'a desherite. Tous les biens sont revenus a son frere aine, Vincent, un reveur, buveur et joueur. Tom rencontre Angelina, une adolescente deluree courtisee par Vincent. +330 Lady Beware 1 1987 294 Katya Yarno est decoratrice. Sa specialite consiste a rendre attrayante des vitrines de magasins en utilisant des mannequins. Elle attire l'attention de Jack Price, un psychopathe, qui denotent une frustation sexuelle de Katya et la poursuit. +331 Derniere sortie pour Brooklyn 1 1988 295 New York, 1952. Alors que le pays ressent les contrecoups de la guerre de Coree, une greve difficile se durcit dans le quartier de Brooklyn. Autour de Harry, responsable syndical, Georgette, un jeune travesti et Tralala,une prostituee vivent ss espoir +332 Prof d'enfer pour un ete 5 1987 296 Victime d'un chantage de son proviseur, Freddy Shoop, prof de gym trop insouciant, doit sacrifier ses vacances d'ete a Hawaii pour donner des cours d'anglais a une classe d'eleves inadaptes. Il decide de se consoler en seduisant une collegue. +333 L'emissaire 9 1988 297 Le KGB met au point une operation pour compromettre en cas de besoin Jack Cavannagh, jeune politicien americain en pleine ascension. Profitant d'un voyage en Afrique du sud, ils kidnappent sa femme Caroline et la photographient ds des poses erotiques +334 Une autre femme 12 1988 30 Marion, une New-Yorkaise de 50 ans, loue un studio pour ecrire au calme son nouveau livre. Par les conduits d'aeration de l'immeuble, elle surprend les confidences d'une jeune femme a son psychiatre. Bouleversee, elle s'interroge sur elle-meme. +335 Nikita 9 1990 298 +336 L'operation corned beef 9 1990 37 L'operation corned beef est le nom de code de l'operation la plus explosive effectuee par le contre-espionnage francais depuis le Rainbow Warrior. Elle est menee par le capitaine de la DGSE Philippe Boulier, surnomme le Squale. +338 Can't buy me love 8 1987 300 Tucson, Arizona. Les eleves d'une ecoole sont divises en 2 clans: les cools et les bons eleves. Ronald Miller, qui appartient au 2eme groupe, va acheter les services de l'aguichante Cindy Mancini pour jouer le role de sa petite amie; +339 E.T. 2 1982 36 Dans une petite ville de l'Amerique, un vaisseau spatial fait un aterrissage furtif et s'esquive. Il a laisse un de ses passagers. Une famille composes d'une jeune femme et de 3 enfants est la communaute d'accueil de E.T. +340 CAMORRA 1 1985 301 Un trafiquant de la Camorra est assassine, une seringue plantee dans les testicules. Il etait avec une femme dans un hotel louche. Elle n'a rien vu. Les meutres se multiplient, signes de la meme maniere. La police ne voit rien non plus. +341 Delicatessen 2 1991 302 Dans un terrain vague noye de brume, un vieil immeuble delabre. Au rez de chaussee, l'enseigne d'une boucherie : Delicatessen. Louison, ancien clown, loue une chambre qui sert de garde manger pour le boucher. La viande, c'est le locataire. +342 Veuve mais pas trop 5 1988 303 Angela De Marco, mariee a Frank, un tueur de la mafia et mere d'un petit garcon, vit dans un monde opressant et violent. Frank ests tue par un parrain qui le surprend dans les bras de sa maitresse. Angela se croit libre et decide de refaire sa vie. +343 Les accuses 1 1988 204 Sarah Tobias est violee dans un bar par 3 hommes. L'assistance du procureur, Kathryn Murphy, est chargee de l'affaire. Les tests sanguins de la victime revelent des traces d'alcool et de marijuana qui ne plaide pas en sa faveur. +344 Il gele en enfer 4 1990 78 Tim s'evade de prison avec le projet d'attaquer un convoyeur de fonds dans une bourgade du Jura. Sur son chemin, il croise Georgia, une prostituee recherchee par la police. Ils restent ensemble, semant desordre et scandale partout ou ils passent. +345 New York stories 5 1989 57 Apprentissages: Le peintre Lionel Dobie tente de renouer avec Paulette, son assistance et sa maitresse. La vie sans Zoe; Zoe, 12 ans, vit seule dans un hotel de luxe. Le complot d'Oedipe: Sheldon, avocat juif, est tyrannise par une mere possessive. +346 Ca plane les filles 1 1980 121 Dans les faubourgs de Los Angeles, Madge, Annie et Deirdre passent la nuit chez Jeanie, sans prevenir leurs parents. Le lendemain, Annie, battue par son pere, decide de quitter le domicile familial. Les 4 filles decident de trouver un appartement. +347 Le prix de la passion 1 1988 179 Anna Dunlap, divorcee, eleve seule Molly, sa fille de 6 ans. Elle fait la connaissance de Leo dont elle tombe amoureuse. Le couple vit tres librement sa sexualite, trop librement pour Brian, l'ex epoux, qui demande la garde de l'enfant. +348 Liaison fatale 1 1987 121 Dan Gallagher, un avocat d'affaires, mene une existence sans proobleme avec sa femme et sa fille. Un week-end, il passe une nuit avec Alex Forrest. Pour Dan, il s'agit d'une aventure sans lendemain, mais Alex commence a le harceler. +349 Quelle heure est-il 5 1989 305 Marcello, riche avocat romain, rend une visite surprise a son fils Michele dans le port de Civitavecchia. Age de 30 ans, celui-ci vient de terminer ses etudes et effectue son service militaire. Les 2 hommes vont se decouvrir. +350 La vie en plus 5 1987 76 Jaake et Kristy, 2 jeunes americains, viennent de se marier. Mais Jake ne se sent pas a l'aise dans son role de mari. Pour assurer le confort de son epouse, il doit accepter du travail dans une agence publicitaire alors qu'il est encore etudiant. +351 Le silence des agneaux 0 1991 303 +352 Valmont 1 1989 133 Madame de Volanges fait sortir sa fille Cecile du couvent afin qu'elle epouse Mr de Gercourt. Pour se venger, la marquise de Merteuil, maitresse de ce dernier, fait un pacte avec le vicomte de Valmont: deflorer Cecile. +353 Deux millions de dollars aux Caraibes 6 1986 129 Apres 20 ans passes sans less prisons cubaines, Carlos se retrouve aux Etats-Unis. Il ne desire que retourner a Cuba pour retrouver sa femme. Il s'associe a Lucky Boone et a Mac, qui possedent un bateau de peche, en leur faisant miroiter un tresor. +354 Tequila sunrise 4 1988 306 Dale McKussic, ex trafiquant de drogue, tente de se ranger alors que Nick Frescia, un ami d'enfance devenu lieutenant de police ignore s'il a vraiment renonce a ses activites. En le filant, Nick rencontre Jo-Ann, directrice d'un restaurant. +356 Sexe, mensonges et video 8 1988 307 Graham Dalton revient a Baton Rouge apres une longue absence. Il est recu chez un ami, John Millaney, qui trompe sa femme Ann avec sa soeur Cynthia Bishop. Sexuellement impuissant, Graham collectionne les temoignages intimes de femmes sur cassettes. +357 Hors la vie 0 1991 308 Patrick Perrault est un photographe free-lance parti a Beyrouth couvrir l'interminable guerre. Il est pris en otage et sa vie bascule dans une longue nuit sauvage. +358 Milagro 1 1987 309 Milagro, un village du Nouveau-Mexique, est deserte par ses plus jeunes habitants. Ladd Devine, promoteur, decide d'implanter un parc touristique. Les expropriations commencent mais Joe Mondragon, un paysan, detourne l'eau du chantier pour irriguer. +359 Dangereusement votre 9 1985 264 L'agent 003 est tue apres avoir vole une puce electronique dans un centre de recherche sovietique. James Bond parvient cependant a ramener l'objet a Londres. La puce russe est identique a un prototype ultra secret mis au point par l'Angleterre. +360 Les voisins 5 1981 310 Earl et Enid Keese menent une existence routiniere dans leur petit pavillon de banlieue. L'arrivee de nouveaux voisins, Vic et Ramona, bouleversent leur vie. Vic emprunte de l'argent et les cles de voiture de Earl pendant que Ramona le seduit. +361 Working girl 5 1988 171 Tess McGill, secretaire dans une societe de courtage, reve de promotion. Mais sans diplomes et rebelle aux avances de ses superieurs, elle est mutee aux Fusions et Acquisitions, service dirige par l'elegante et cultivee Katharine Parker. +362 Do the right thing 1 1989 311 Dans un sous quartier noir de Brooklyn, La pizzeria de Sal, un Italo-Americain, est le lieu de toutes les rencontres. La vie est pittoresque, mais la canicule exacerbe les passions. +363 Scenes de menage (dans un centre commercial) 5 1991 312 Nick et Deborah fetent leur 16eme anniversaire de mariage. Les enfants sont absents; ils vont recevoir leurs meilleurs amis ett ensemble font les dernieres courses en se rememorant les instants de leur bonheur. Mais un incident enclenche la crise. +364 Scandal 1 1989 313 Au debut des annees 60, la haute societe anglaise est eclaboussee par les menees conjuguees d'une call-girl, d'un attache naval sovietique, d'un medecin mondain et d'un ministre anglais: le scandale Profumo-Keeler. +365 Nuit de folie 5 1988 314 Chris Parker, 17 ans, se resout a une triste soiree de baby-sitting apres un rendez-vous annule avec son petit ami. Elle doit garder Brad, un adolescent amoureux d'elle et sa soeur Sara. Chris recoit un appel au secours d'une amie. +366 Il y a des jours et des lunes 8 1990 38 Un soir de pleine lune, l'heure d'ete succede a l'heure d'hiver. Ca perturbe. La lune ronde attise les sentiments, exaspere la nervosite, favorise les elans passionnels. Ce jour la, une femme quitte un homme, un camionneur perd son emploi, etc. +367 GOLD 6 1974 159 Un accident survenu dans une mine pres de Johannesburg provoque la mort de Lemmer, le responsable de l'exploitation. Rod Slater se voit offrir par Manfred Steyner, le proprietaire de la mine, le poste du disparu. +368 Veraz 1 1991 315 L'amitie unit Theo, un adolescent fugueur passionne d'informatique, et Quentin, un Americain qui vit depuis la guerre dans les montagnes pyreneennes. Grace a lui, Theo apprend les vraies valeurs de la vie. +369 Les mille et une nuits 5 1989 316 An 1000. Trompe par la reine, le calife de Bagdad decide d'epouser une femme chaque soir et de l'executer a l'aube. C'est le sort reserve a Scheherazade; mais au moment d'etre decapitee, elle rencontre Jimmy Genious, exile a Londres au XXe siecle. +370 Une femme en peril 4 1987 317 New York 1951. Emily Craane, journaliste a Life, refuse de livrer des noms a la comission des affaires anti americaines. Elle perd son emploi et devient lectrice chez une personne agee. Elle decouvre de mysterieux agissements dans la maison voisine. +371 Le lion du desert 16 1979 318 En 1929, Mussolini veut mettre fin a la rebellion des bedouins de Libye menee par Omar Mukhtar, un maitre d'ecole coranique. Le general Graziani, repute pour sa cruaute, est designe pour cette mission. +372 Bienvenue a bord 5 1989 319 Martin est representant dans une petite societe d'edition dirigee par sa femme. Coince dans un embouteillage au retour d'une tournee en province, un auto-stoppeur sans gene et cynique s'invite a bord. Il provoque Martin et le remet en question. +373 Tatie Danielle 5 1990 98 Danielle Billard, vieille femme sournoise et mechante, vit dans un pavillon d'Auxerre et martyrise sa bonne de 75 ans. A sa mort, elle va s'installer a Paris chez son petit-neveu Jean-Pierre. Bien installee et choyee, elle les prend comme victime. +374 Star Trek V : l'ultime retour 2 1989 321 XXIIIe siecle. Le capitaine Kirk et son equipage doivent interrompre des vacances sur Terre pour s'embarquer sur l'Entreprise afin de sauver un groupe de diplomates retenus prisonniers par le vulcain Sybok, le demi-frere de Spock. +375 Family business 1 1989 106 Les McMullen forment une famille particuliere. Jessie, le grand-pere est un cambrioleur sur le retour. Vito, le fis, mene desormais une existence rangee. Mais Adam, le petit-fils, etudiant surdoue, est fascine par Jessie. +376 Une epoque formidable 5 1990 186 Michel, cadre superieur, perd tout : travail, femme, voiture et se retrouve a la rue. Pas facile d'etre un pauvre bien dans sa peau. +377 Faux et usage de faux 1 1990 323 Anatole Hirsch, romancier celebre, cynique et vulnerable, ne supporte plus d'etre un auteur que l'on achete mais que l'on ne lit pas. Il ecrit un nouveau roman sous le nom d'Arthus et demande a son cousin Martin d'incarner cet auteur imaginaire. +378 Ripoux contre ripoux 5 1989 324 Rene et Francois, 2 policiers, arrondissent leurs dins de mois en magouillant a Montmartre. Francois veut passer le concours de comissaire et decide de devenir honnete. Il rend le butin d'un hold-up a une commercante qui l'accuse de l'avoir garde. +379 Mort d'un soldat 1 1986 73 1942 en Australie ou l'armee de MacArthur s'est repliee. La tension regne entre les militaires et les civils apres une succession de meurtres commis par un militaire americain. +380 Trois annees 1 1990 325 Les annees 1880 a Aix-les-Bains. Fils d'un riche industriel, Alexandre fait la fete avec ses amis Constantin et Pilou. Il s'eprend de Julia, une jolie femme obsedee par le souvenir d'un soupirant disparu. Un jour, il ose lui demander sa main. +381 Robin des bois prince des voleurs 6 1991 326 Issu d'une famille riche, il perd tous ses biens mais conquiert le pouvoir. Epris de liberte, il met son existence au service d'une seule femme. Il vit en vagabond mais se comporte en seigneur. Il vole les riches pour mieux donner aux pauvres. +382 Mille milliards de dollars 4 1981 327 Un coup de telephone anonyme informe le journaliste Paul Kerjean q'un homme politique, Jean Benoit-Lambert, a recu une somme d'argent pour ceder une usine francaise au groupe etranger GTI. Kerjean publie un article qui provoque un scandale. +383 Qui veut la peau de Roger Rabbit 5 1988 328 Les toons sont des creatures fictives appartenant a l'univers du dessin anime. L'une d'elle, le lapin Roger Rabbit, engage un detective prive en chair et en os, Eddie Valiant, pour enqueter sur le comportement de sa femme, la volage Jessica. +384 La mort etait au rendez-vous 17 1967 329 Temoin et unique survivant du massacre de sa famille, le jeune Bill est resolu a retrouver les bandits et a venger les siens. Bill devient un excellent tireur. Ryan, l'un des assassins, sort de prison pret a regler leur compte a ses anciens complices +385 Backdraft 0 1991 330 Backdraft est le nom d'un feu particulierement dangereux : enferme danns une piece et prive d'oxygene, il couve en attendant d'etre libere. Au contact de l'air, il provoque une explosion. +386 Un week-end sur deux 12 1989 331 Camille Valmont, comedienne ratee, a 2 enfants, Vincent et Gaelle, qui ont ete confies a la garde de leur pere Adrian. Elle les voit un week-end sur 2. +387 Blaze 8 1989 332 1950. Fannie Belle Fleming quitte sa pauvre famille de Virginie, decidee a devenir chanteuse. De serveuse, elle devient chanteuse exotique sous le nom de Blaze Starr. Elle fait la connaissance d'Earl Long, le gouverneur de la Louisiane. +388 Docteur Petiot 1 1990 333 En 1942, dans Paris occupe, Le Dr Petiot soigne gratuitement les pauvres et vient au secours des plus demunis. Sous le nom de Dr Eugene, il pretend aider les juifs a passer en Argentine et les emmenent dans un hotel d'ou ils ne sortent jamais. +389 Young guns 17 1988 334 Au Nouveau Mexique, en 1878, Tunstall, marchand de betail philantrope, engage 6 jeunes marginaux pour proteger ses terres contre Murphy, un riche proprietaire qui veut eliminer toute concurrence. Murphy fait abattre Tunstall. +390 Le rideau dechire 9 1966 5 En congres a Copenhague, le physicien nucleaire Michael Armstrong annonce son intention de se rendre a Stockholm. Sa fiancee et assistante, Sarah Sherman? decouvre qu'il va se rendre a Berlin Est. Elle decide de le suivre. +391 Tuer n'est pas jouer 9 1987 264 A Gibraltar, au cours d'un entrainement, 3 agents secrets britanniques sont tues par un espion de l'est. Apres avoir elimine leur assassin, James Bond, se rend en Tchecoslovaquie pour organiser le passage a l'ouest du general sovietique Koskov. +392 Contre-enquete 4 1990 106 Al Reilly, jeune juge d'instruction, est charge par le Dsitrict Attorney Kevin Quinn d'enqueter sur Mike Brennan, un policier qui a abattu en etat de legitime defense un truand portoricain. Mais Reilly entend des temoignages accablant Brennan. +393 Le mari de la coiffeuse 8 1990 16 A 12 ans, Antoine eprouve ses premiers emois amoureux dans un salon de coiffure. Les charmes de madame Sheaffer le decident a devenir un jour le mari d'une coiffeuse. Approchant la cinquantaine, il realise son reve en epousant la belle Mathilde. +394 Le plus escroc des deux 5 1988 335 Lawrence Jamieson, un escroc de grande classe, exerce ses talents dans une station balneaire de la cote d'azur. Il rencontre Freddy, un arnaqueur minable, decide a s'installer dans la region. Pour s'en debarrasser, ils se lancent un defi. +395 Grandview USA 8 1984 336 Tim Pearson, lyceen a Grandview, une petite ville du Middle West, reve d'aller etudier a Miami. Apres une sortie nocturne, il embourbe la Cadillac de son pere. Il est depanne par Sam Webster, pilote de stock car, et Michelle Coddy, Mike. +396 La desenchantee 12 1990 337 Beth, une lyceenne de 17 ans, vit avec son jeune frere et sa mere malade et sans ressources. Mise au defi par son petit ami de coucher avec un homme laid et vieux, elle le quitte et seduit un garcon rencontre dans une discotheque. +397 L'arme fatale 2 4 1989 46 Martin Riggs et Roger Murtaugh ont pour mission de proteger Leo Getz, le comptable d'une organisation regnant sur le trafic de drogue. Getz a accepte de parler. Le patron du trafic est Arjen Rudd, un Sud-Africain protege par l'immunite diplomatique. +398 La femme fardee 8 1990 222 Des passagers s'embarquent sur le Narcissus pour une croisiere de luxe autour du monde. A son bord, la celebre cantatrice La Doria, son ancien amant, le chef d'orchestre Kreuze et des personnalites dont la richissime Clarisse Lethuiller. +399 Dames galantes 20 1990 338 La France est dechiree par les guerres de religion. Pierre de Bourdeille, seigneur de Brantome, s'ennuie sur les champs de bataille et decide de retourner a la cour d'Henri III pour retrouver les dames qui sont sa raison de vivre. +400 Permis de tuer 9 1989 264 James Bond assiste au mariage de son ami Felix. Mais les jeunes epoux sont elimines par un trafiquant de drogue. Bond, buleverse et furieux, decide de venger son camarade contre l'avis de ses superieurs qu'il ose affronter. +401 Chien de flic 4 1989 339 L'officier de police Dooley mene une lutte sans merci contre le trafiquant de drogue Lyman qui cherche a l'eliminer. Dooley s'adjoint la collaboration de K-9, un berger allemand. Mais individualiste, il supporte mal la presence de ce nouveau collegue +402 Panique a Needle Park 1 1967 143 Une jeune fille qui a deja eu des malheurs rencontre un garcon qui a l'air brave. Il l'amuse, il est gentil. Mais le garcon se drogue u peu, puis beaucoup. Peu a peu, l'idylle devient un enfer. Prison, prostitution, ... +324 Piranha II, les tueurs volants 2 1982 41 Dans une ile des Caraibes, le club de vacances Elysium se prepare a celebrer la grande fete du poisson. Malgre la decouverte du corps a moitie devore d'une cliente, les preparatifs se poursuivent. +403 Ghost 2 1990 342 Sam, cadre dans une banque d'affaires, vit heureux avec Molly, sa compagne. Un soir, en rentrant d'un spectacle, Sam est victime des balles d'un malfrat et meurt dans les bras de Molly. Son fantôme va rapidement s'apercevoir qui a commandité le meurtre. +404 Programmé pour tuer 23 1997 343 A, Los Angeles, en 1999, Sid 6.7 a été créée pour entraîner les forces de police. Cette image de synthèse représente tous les êtres dangereux de la planète, mais son créateur lui a donné les capacités de s'échapper de son environnement. +405 Men in black 2 1997 344 Deux agents de l'organisation secrète Men in Black, chargés de surveiller les extraterrestres présents sur Terre, luttent contre un envahisseur. +406 Piège à Hong-Kong 6 1998 345 Alors que la chine s'apprête à récuperer Hong-Kong, un agent de la CIA, officiellement patron d'une fabrique de jeans, se retrouve confronté à la maffia russe. +407 Brannighan 9 1975 346 Jim, un flic aux méthodes expéditives, se rend à Londres pour mettre la main sur Larkin et le ramener aux Etats-Unis. +408 Vous avez un message 5 1998 347 Joe Fox est propriétaire de la plus grande chaîne de librairies de Manhattan. Kathleen Kelly, elle, tient une toute petite librairie. Chacun d'eux pense avoir une vie idéale jusqu'au jour où, suite à une annonce passée sur Internet, ils font connaissance. +409 Toutes peines confondues 4 1992 203 Turston, habile agent d'Interpol, charge l'inspecteur Vade d'enquêter sur Antoine Gardella, un homme d'affaires corrompu dont les parents viennent d'être assassinés. Le jeune inspecteur se sent vite mal à l'aise dans cette mission, compliquée, dangereuse, +410 La lectrice 5 1988 203 Marie, passionnée de lecture, se propose comme lectrice à domicile. Elle va chez ses clients : un jeune garçon, la veuve d'un général hongrois et un PDG. +411 Paparazzi 5 1998 348 Après avoir assisté à un match de football au lieu d'être à son travail, Franck paraît en couverture d'un magazine et perd son emploi. Il part à la recherche du photographe responsable du cliché. +412 Le Saint 4 1997 349 Interne dans un collège anglais d'Extrême-Orient, Jean Rossi assiste à la mort d'Agnès, jeune pensionnaire dont il est épris. Plusieurs années après, à Moscou, un mystérieux individu pénêtre par effraction dans une salle des coffres. +413 Independance Day 2 1996 350 Un pilote noir et un génie de l'informatique viennent à bout d'extraterrestres s'apprêtant à exterminer la race humaine. +414 Snake Eyes 4 1998 164 A Atlantic City, le secrétaire d'Etat est victime d'un assassinat. L'inspecteur Santoro, policier corrompu, commence son enquête. +415 Touchez pas au grisbi 4 1953 351 "Max et Riton ont dérobé des lingots d'or à Orly. Max a caché le "grisbi" mais Riton dévoile le secret à sa maîtresse Josy." +416 Le Pic de Dante 24 1997 181 Rachel Wando, maire du Pic de Dante, petite ville surplombée d'un volcan, signe un contrat avec une grosse société afin de développer le tourisme. Mais le volcanologue Harry la met en garde car il craint une prochaine éruption. +417 La canardeur 6 1974 138 Poursuivi par d'anciens complices et se dissimulant sous une fausse identité de pasteur, John Thunderbolt, dit le canardeur, échappe à la mort grâce à l'intervention d'un petit truand Lightfoot. Les deux hommes sont pourchassés à travers le pays. +418 Hackers 23 1995 352 Dade Murphy a été fiché au FBI à onze ans pour avoir piraté plus de 1500 systèmes informatiques. Il continue néanmoins, avec d'autres étudiants, de s'introduire sur tous les réseaux. Un jour, le FBI les accuse d'avoir implanté un virus caable désastreux. +273 Les affranchis 0 1990 57 +\. + + +-- +-- PostgreSQL database dump complete +-- + diff --git a/DB/TP1_OrdresSQL/dump/cinema.genre b/DB/TP1_OrdresSQL/dump/cinema.genre new file mode 100755 index 0000000..317b983 --- /dev/null +++ b/DB/TP1_OrdresSQL/dump/cinema.genre @@ -0,0 +1,47 @@ +-- +-- PostgreSQL database dump +-- + +SET client_encoding = 'SQL_ASCII'; +SET check_function_bodies = false; +SET client_min_messages = warning; + + + +-- +-- Data for Name: genre; Type: TABLE DATA; Schema: limin; Owner: limin +-- + +COPY genre (numg, nomg) FROM stdin; +1 Drame +2 Fantastique +3 Epouvante +4 Policier +5 Comedie +6 Aventure +7 Horreur +8 Etude de moeurs +9 Espionnage +10 Guerre +11 Politique +12 Psychologique +13 Dessin anime +14 Comedie musicale +15 Peplum +16 Drame historique +17 Western +18 Historique +19 Thriller +20 Chronique +21 Musical +22 Politique fiction +0 Non renseigné +23 Suspense +24 Catastrophe +\. + + +-- +-- PostgreSQL database dump complete +-- + diff --git a/DB/TP1_OrdresSQL/dump/cinema.numero b/DB/TP1_OrdresSQL/dump/cinema.numero new file mode 100755 index 0000000..567a811 --- /dev/null +++ b/DB/TP1_OrdresSQL/dump/cinema.numero @@ -0,0 +1,26 @@ +-- +-- PostgreSQL database dump +-- + +SET client_encoding = 'SQL_ASCII'; +SET check_function_bodies = false; +SET client_min_messages = warning; + + + +-- +-- Data for Name: numero; Type: TABLE DATA; Schema: limin; Owner: limin +-- + +COPY numero (nom_table, numero) FROM stdin; +genre 25 +realis 354 +com 1399 +film 419 +\. + + +-- +-- PostgreSQL database dump complete +-- + diff --git a/DB/TP1_OrdresSQL/dump/cinema.realis b/DB/TP1_OrdresSQL/dump/cinema.realis new file mode 100755 index 0000000..ec3eb11 --- /dev/null +++ b/DB/TP1_OrdresSQL/dump/cinema.realis @@ -0,0 +1,366 @@ +-- +-- PostgreSQL database dump +-- + +SET client_encoding = 'SQL_ASCII'; +SET check_function_bodies = false; +SET client_min_messages = warning; + + + +-- +-- Data for Name: realis; Type: TABLE DATA; Schema: limin; Owner: limin +-- + +COPY realis (numr, identr) FROM stdin; +84 ABBRAHAMS Jim +167 ADLON Percy +30 ALLEN Woody +136 ANNAUT Jean-Jacques +82 ARCAND Denys +112 ASHBY Hal +111 AUBERT Claude-Bernard +200 AXEL Gabriel +77 BALASKO Josiane +68 BENJAMIN Richard +85 BERAUD Luc +49 BERRI Claude +61 BERRY John +150 BERTOLUCCI Bernardo +31 BLIER Bertrand +12 BOISSET Yves +198 BOIVIN Jerome +163 BOORMAN John +119 BOUTRON Pierre +127 BRICKMAN Paul +125 BRISSEAU Jean-Claude +224 BROOKS James L. +157 BROOKS Mel +41 CAMERON James F. +205 CARPENTER John +4 CAYATTE Andre +83 CERCHIO Fernando +183 CHABROL Claude +47 CHAFFEY Don +26 CHAPLIN Charlie +128 CHAREF Mehdi +98 CHATILLIER Etienne +34 CHEREAU Patrice +99 CHOMSKY Marvin J. +138 CIMINO Michael +199 CLAVER Bob +187 COHEN Larry +140 COKLISS Harley +174 COMENCINI Francesca +148 COMENCINI Luigi +230 CORBIAU Gerard +7 CORNEAU Alain +1 CORSINI Catherine +132 COURTOIS Miguel +218 COX Alex +130 CRICHTON Charles +196 CRONENBERG David +215 CROWE Christopher +160 DANTE Joe +113 DAVIDSON Martin +164 DE PALMA Brian +226 DEARDEN James +141 DENIS Claire +203 DEVILLE Michel +91 DIEGUES Carlos +13 DIETERLE William +115 DINNER Michael +181 DONALDSON Roger +46 DONNER Richard +97 DORRIE Dorris +158 DUPEYRON Francois +120 EASTWOOD Clint +2 ENRICO Robert +92 FAIMAN Peter +69 FERRERI Marco +172 FINKLEMAN Ken +10 FISHER Terence +63 FLEISCHER Richard +18 FLEMING Victor +137 FOLEY James +185 FORD COPPOLA Francis +133 FORMAN Milos +19 GAVRAS Costa +33 GILBERT Lewis +25 GILLIAM Terry +170 GIOVANNI Jose +145 GIROD Francis +176 GOLAN Menahem +169 GRANIER DEFERRE Pierre +105 GRANIER-DEFERRE Denys +151 GRIFFITHS Mark +29 GUILLERMIN John +209 HACKFORD Taylor +161 HAINES Randa +134 HALIMI Andre +59 HAMILTON Guy +175 HEFFRON Richard +162 HILL George Roy +54 HILL Walter +180 HILLER Arthur +5 HITCHCOCK Alfred +129 HODGES Mike +152 HOLLAND Agnieszka +75 HOOL Lance +44 HOOPER Tobe +71 HOUGH John +117 HUBERT Jean-Loup +118 HUDSON Hugh +76 HUGUES John +159 HUNT Peter +11 HUSTON John +194 HUTTON Thimothy +177 IVORY James +9 JAQUE Christian +70 JESSUA Alain +189 JEWISON Norman +110 JOFFE Roland +109 JOLIVET Pierre +24 JONES Terry +227 JORDAN Glenn +186 JUGNOT Gerard +101 KAGAN Jeremy Paul +201 KAMINKA Didier +62 KANEW Jeff +204 KAPLAN Jonathan +166 KASDAN Lawrence +27 KERSHNER Irvin +87 KORBER Serge +15 KOTCHEFF Ted +52 KUBRICK Stanley +90 LAUTNER Georges +225 LE GUAY Philippe +16 LECONTE Patrice +123 LELAND David +38 LELOUCH Claude +139 LEONE Sergio +102 LEVINSON Barry +88 LORSAC Olivier +106 LUMET Sydney +192 LUSTIG William +121 LYNE Adrian +58 LYNN Jonathan +144 MAAS Dick +165 MACBRIDE Jim +55 MALINE Alain +107 MALLE Louis +220 MANKIEWICZ Tom +214 MANN Michael +114 MARBOEUF Jean +28 MARQUAND Richard +173 MARSHALL Penny +14 MARTIN Gene +213 MAXWELL Ronald F. +146 MC TIERNAN John +217 MEDAK Peter +126 MEDFORD Don +81 MELVILLE Jean-Pierre +135 METTER Alan +212 MILLER Claude +78 MOCKY Jean-Pierre +6 MOLINARO Edouard +60 MONNET Jacques +73 MORA Philippe +50 NEUMANN Kurt +171 NICHOLS Mike +93 NICHOLSON Jack +179 NIMOY Leonard +184 NUYTTEN Bruno +72 PAKULA Alan J. +86 PARKER Alan +195 PEERCE Larry +210 PENN Arthur +96 PERKINS Anthony +222 PINHEIRO Jose +8 PINOTEAU Claude +65 PLANCHON Roger +37 POIRE Jean-Marie +223 POST Ted +206 RADER Peter +40 RADFORD Michael +155 RAFELSON Bob +43 RAFFILL Stewart +103 RAPPENEAU Elisabeth +229 RAPPENEAU Jean-Paul +124 REISZ Karel +51 REITHERMAN Wolfgang +64 REYNOLDS Burt +191 RICKMAN Tom +95 RITCHIE Michael +190 RITT Martin +39 ROBERT Yves +149 RODDAM Frank +221 ROEG Nicholas +108 ROHMER Eric +100 ROSENTHAL Rick +182 ROSS Herbert +80 SAKS Gene +122 SARGENT Joseph +131 SAURA Carlos +154 SAUTET Claude +143 SCHATZBERG Jerry +89 SCHELSINGER John +23 SCHLONDORFF Volker +17 SCHOENDOERFFER Pierre +57 SCORSESE Martin +219 SCOTT Ridley +153 SCOTT Tony +193 SERESIN Michael +45 SERREAU Coline +216 SHERMAN Gary +48 SHOLDER Jack +208 SIBRA Michel +22 SIEGEL Don +36 SPIELBERG Steven +67 STALLONE Sylvester +94 STEINBERG David +202 STEWART Douglas Day +197 TAKACS Tibor +156 TAVERNIER Bertrand +142 TCHERNIA Pierre +53 TECHINE Andre +35 TOURNEUR Maurice +56 TRAMONT Jean-Claude +168 TRINTIGNANT Nadine +66 TRUFFAUT Francois +21 UYS Jamie +188 VALDEZ Luis +147 VARDA Agnès +32 VEBER Francis +20 VERGES Gerard +42 VERGNE Jean-Pierre +228 VERHOEVEN Paul +79 WAJDA Andrezj +207 WARGNIER Regis +104 WINNER Michael +3 WISE Robert +116 WYLER William +178 ZEFFIRELLI Franco +74 ZEITOUN Ariel +211 ZITO Joseph +232 POLANSKI Roman +233 VILLIERS Francois +234 FURIE Sidney J. +235 NUNN Trevor +236 DERAY Jacques +237 WEINER Hal +238 SKOLIMOWSKI Jerzy +239 HANSON Curtis +240 SPOTTISWOODE Roger +241 DUVIVIER Julien +242 FERET Rene +243 MULCAHY Russel +244 MERCERO Antonio +245 SASDY Peter +246 LOCKE Sondra +247 PEARCE Richard +248 MARKHAM Monte +249 MILLER George +250 KAUFMAN Philip +251 STONE Oliver +252 HAWKS Howard +253 ROUFFIO Jacques +254 RADEMAKERS Fons +255 BABENCO Hector +256 RAWSON Jean-Pierre +257 WALTON Fred +258 COSMATOS George Pan +259 CUKIER Jacky +260 VAN HORN Buddy +261 BELLON Yannick +262 BENTON Robert +263 FIRSTENBERG Sam +264 GLEN John +265 MARSHALL Tonie +266 ROCHANT Eric +268 DERUDDERE Dominique +269 TORNATORE Giuseppe +270 BEAUMONT Gabrielle +271 WEIR Peter +272 SLUIZER George +273 VINCENT Christian +274 BELMONT Vera +276 MILIUS John +277 GLASER Paul-Michael +278 HERRINGTON Rowdy +279 ARTHUYS Bertrand +280 MANZOR Rene +281 MARKLE Peter +282 MORTON Rocky +283 APTED Michael +284 MARSHALL Garry +285 LYNCH Paul +286 KAGAN Jeremy +287 McLAGLEN Andrew V. +288 COSTNER Kevin +290 ROSI Francesco +291 GARRIS Mick +292 KURYS Diane +293 DAVIS Robin +294 ARTHUR Karen +295 EDEL Uli +296 REINER Carl +297 SCHOLTZ Jan +298 BESSON Luc +299 FASSBINDER +300 RASH Steve +301 WERTMULLER Lina +302 CARO Marc +303 DEMME Jonathan +305 SCOLA Ettore +306 TOWNE Robert +307 SODERBERGH Steven +308 BAGDADI Maroun +309 REDFORD Robert +310 AVILDSEN John G. +311 LEE Spike +312 MAZURSKY Paul +313 CATON-JONES Michael +314 COLUMBUS Chris +315 CASTANO Xavier +316 DE BROCA Philippe +317 YATES Peter +318 AKKAD Mustapha +319 LECONTE Jean-Louis +321 SHATNER William +323 HEYNEMANN Laurent +324 ZIDI Claude +325 CAZENEUVE Fabrice +326 REYNOLDS Kevin +327 VERNEUIL Henri +328 ZEMECKIS Robert +329 PETRONI Giulo +330 HOWARD Ron +331 GARCIA Nicole +332 SHELTON Ron +333 DE CHALONGE Christian +334 CAIN Christopher +335 OZ Frank +336 KLEISER Randal +337 JACQUOT Benoit +338 TACCHELLA Jean-Charles +339 DANIEL Rod +342 ZUCKER Jerry +343 LEONARD Brett +344 SONNENFELD Barry +345 HARK Tsui +346 HICKOX David +347 EPHRON Nora +348 BERBERIAN Alain +349 NOYCE Phillip +350 EMMERICH Roland +351 BECKER Jacques +352 SOFTLEY Iain +353 +\. + + +-- +-- PostgreSQL database dump complete +-- + diff --git a/DB/TP1_OrdresSQL/dump/cinema.role b/DB/TP1_OrdresSQL/dump/cinema.role new file mode 100755 index 0000000..26511af --- /dev/null +++ b/DB/TP1_OrdresSQL/dump/cinema.role @@ -0,0 +1,1876 @@ +-- +-- PostgreSQL database dump +-- + +SET client_encoding = 'SQL_ASCII'; +SET check_function_bodies = false; +SET client_min_messages = warning; + + + +-- +-- Data for Name: role; Type: TABLE DATA; Schema: limin; Owner: limin +-- + +COPY role (numc, numf) FROM stdin; +1 1 +2 1 +3 1 +4 1 +5 1 +6 2 +7 2 +3 2 +8 2 +9 3 +10 3 +11 3 +12 3 +13 3 +14 4 +15 4 +16 4 +17 4 +18 5 +19 5 +20 5 +21 5 +22 6 +23 6 +24 6 +25 6 +26 6 +27 6 +28 6 +29 7 +30 7 +31 7 +32 7 +33 7 +34 7 +35 8 +36 8 +37 8 +38 8 +22 8 +71 9 +72 9 +73 9 +74 9 +39 10 +40 10 +41 10 +42 10 +43 10 +44 10 +45 10 +46 10 +47 10 +48 10 +49 10 +50 10 +51 11 +52 11 +53 11 +54 11 +55 11 +56 11 +57 11 +58 11 +59 12 +60 12 +61 12 +62 12 +63 12 +64 12 +65 12 +66 12 +67 12 +68 12 +69 12 +70 12 +75 13 +76 13 +77 13 +78 13 +79 14 +80 14 +81 14 +82 14 +83 14 +84 15 +85 15 +86 15 +87 15 +88 15 +89 15 +90 15 +91 15 +92 15 +93 15 +94 15 +95 15 +96 15 +97 15 +98 15 +99 15 +100 16 +101 16 +102 16 +103 16 +104 16 +105 16 +106 16 +107 16 +108 16 +109 16 +110 16 +111 16 +112 16 +113 16 +114 17 +115 17 +116 17 +117 17 +118 17 +119 18 +120 18 +121 18 +122 18 +123 18 +124 18 +125 18 +126 19 +127 19 +128 19 +129 19 +130 20 +131 20 +132 20 +133 20 +134 21 +135 21 +136 21 +137 21 +138 21 +139 21 +140 22 +141 22 +142 22 +143 22 +144 22 +145 23 +146 23 +147 23 +148 23 +149 23 +150 24 +151 24 +152 24 +142 24 +153 24 +154 25 +155 25 +156 25 +157 25 +158 25 +159 26 +160 26 +161 26 +162 26 +163 26 +93 28 +165 28 +167 28 +168 28 +166 28 +169 29 +170 29 +171 29 +172 29 +173 29 +174 30 +150 30 +175 30 +120 30 +177 30 +178 30 +179 31 +180 31 +181 31 +182 31 +93 31 +183 32 +6 32 +184 32 +185 32 +186 32 +187 33 +52 33 +188 33 +189 33 +150 34 +190 34 +151 34 +142 34 +191 34 +192 34 +3 35 +154 35 +193 35 +194 35 +195 36 +196 36 +197 36 +198 37 +199 37 +200 37 +201 37 +202 37 +203 37 +204 38 +205 38 +206 38 +207 38 +208 38 +209 38 +210 39 +211 39 +212 39 +213 39 +214 39 +215 40 +216 40 +217 40 +218 40 +219 41 +220 41 +221 41 +222 41 +223 41 +224 42 +225 42 +226 42 +227 42 +228 42 +229 42 +230 42 +194 43 +231 43 +232 43 +233 43 +234 43 +235 44 +236 44 +237 44 +238 44 +239 45 +240 45 +241 45 +242 45 +243 46 +244 46 +29 46 +31 46 +245 47 +246 47 +247 47 +248 47 +249 47 +250 47 +251 47 +252 47 +253 48 +254 48 +255 48 +256 48 +257 49 +258 49 +259 49 +260 49 +261 49 +262 50 +263 50 +264 50 +265 50 +266 50 +267 52 +268 52 +269 52 +270 52 +271 52 +233 53 +272 53 +273 53 +274 53 +85 53 +169 54 +170 54 +171 54 +172 54 +275 54 +276 55 +277 55 +278 55 +279 56 +280 56 +281 56 +282 56 +283 56 +284 56 +285 57 +286 57 +287 57 +288 57 +289 57 +290 57 +291 58 +292 58 +293 58 +294 58 +295 58 +296 58 +297 59 +298 59 +299 60 +300 60 +150 61 +301 61 +302 61 +303 61 +126 62 +304 62 +305 62 +306 62 +307 62 +308 63 +309 63 +310 63 +311 64 +312 64 +313 64 +314 64 +315 64 +316 64 +317 65 +318 65 +319 65 +320 66 +321 66 +322 66 +323 67 +324 67 +325 67 +326 67 +169 68 +327 68 +328 68 +329 68 +330 68 +331 69 +332 69 +333 69 +334 70 +335 70 +336 71 +115 71 +337 71 +338 72 +339 72 +340 72 +341 73 +342 73 +343 73 +344 74 +345 74 +346 74 +347 75 +348 75 +182 75 +126 76 +349 76 +350 76 +351 76 +352 78 +353 78 +354 78 +355 79 +356 79 +357 79 +358 79 +285 80 +359 80 +360 80 +361 81 +362 81 +363 82 +364 82 +365 82 +366 82 +79 83 +367 83 +368 84 +369 84 +370 84 +341 85 +371 85 +372 85 +373 86 +374 86 +131 87 +375 87 +376 87 +377 87 +259 88 +378 88 +379 88 +380 89 +381 89 +382 90 +383 90 +384 90 +340 90 +385 91 +386 91 +387 91 +388 92 +389 92 +390 92 +174 93 +391 93 +392 93 +393 94 +394 94 +395 94 +396 95 +397 95 +398 95 +150 96 +399 96 +400 96 +401 96 +402 97 +403 97 +404 97 +405 97 +406 98 +407 98 +408 98 +409 98 +410 98 +171 98 +411 99 +393 99 +412 99 +413 100 +414 100 +415 100 +51 100 +416 101 +417 101 +418 101 +364 101 +419 102 +151 102 +79 102 +420 102 +115 103 +421 103 +422 103 +423 104 +424 104 +425 104 +426 104 +427 105 +35 105 +411 106 +401 106 +428 106 +429 106 +430 106 +431 106 +432 51 +433 51 +434 51 +435 51 +436 107 +236 107 +437 107 +438 108 +439 108 +440 108 +441 108 +442 109 +443 109 +444 109 +445 110 +446 110 +447 128 +448 110 +449 111 +450 111 +91 111 +451 111 +452 112 +453 112 +454 112 +427 113 +455 113 +233 113 +155 114 +456 114 +457 114 +458 114 +132 114 +459 114 +460 115 +461 115 +462 115 +271 115 +463 115 +464 116 +465 116 +171 116 +466 116 +467 116 +468 116 +331 118 +469 118 +470 118 +471 118 +472 118 +473 118 +150 119 +474 119 +475 119 +476 119 +477 120 +478 120 +479 120 +480 120 +481 121 +482 121 +483 121 +484 121 +485 122 +486 122 +487 122 +488 66 +489 66 +490 66 +156 66 +220 124 +479 124 +359 124 +492 124 +183 125 +265 125 +3 125 +493 125 +494 126 +495 126 +496 126 +497 127 +498 127 +499 127 +500 127 +501 127 +301 110 +502 128 +503 128 +339 128 +145 129 +172 129 +504 129 +505 129 +506 130 +507 130 +508 130 +509 131 +510 131 +511 131 +514 133 +515 133 +516 133 +517 133 +518 134 +519 134 +324 134 +520 134 +521 135 +522 135 +523 135 +524 135 +525 136 +526 136 +527 136 +528 136 +477 137 +529 137 +530 137 +480 137 +532 137 +115 138 +533 138 +534 138 +535 138 +536 138 +73 138 +538 139 +35 139 +539 139 +540 139 +541 139 +516 139 +543 140 +544 140 +545 140 +546 140 +547 140 +548 141 +549 141 +550 142 +551 142 +552 142 +553 142 +554 142 +555 142 +556 142 +557 143 +558 143 +559 143 +560 143 +529 144 +46 144 +561 144 +338 145 +562 145 +322 145 +563 145 +290 145 +564 146 +565 146 +566 146 +567 146 +568 147 +569 147 +364 147 +570 147 +571 148 +572 148 +573 148 +574 148 +575 148 +576 148 +259 148 +577 149 +126 149 +455 150 +579 150 +287 150 +580 150 +581 150 +582 150 +583 150 +584 151 +585 151 +586 151 +587 151 +588 151 +589 151 +531 152 +176 152 +542 152 +545 152 +578 153 +590 153 +359 153 +591 153 +592 153 +593 153 +594 153 +595 154 +596 154 +597 154 +598 154 +599 154 +600 155 +601 155 +602 155 +603 155 +604 155 +605 155 +82 156 +606 156 +607 156 +400 156 +434 157 +608 157 +609 157 +610 157 +216 157 +611 158 +612 158 +613 158 +614 158 +615 158 +616 158 +617 158 +618 159 +619 159 +620 159 +621 159 +548 160 +622 160 +623 160 +624 161 +625 161 +626 161 +223 161 +397 162 +629 162 +630 162 +631 162 +632 162 +633 162 +634 163 +339 163 +635 163 +636 163 +637 163 +150 164 +638 164 +639 164 +640 164 +496 165 +300 165 +641 165 +642 165 +643 165 +644 165 +439 166 +438 166 +646 166 +647 166 +440 166 +648 166 +649 166 +650 167 +651 167 +652 167 +653 167 +654 167 +655 167 +656 168 +657 168 +658 168 +659 168 +660 168 +661 169 +590 169 +359 169 +591 169 +592 169 +593 169 +169 170 +662 170 +663 170 +664 170 +665 170 +666 170 +183 171 +667 171 +668 171 +669 171 +450 171 +670 172 +671 172 +672 172 +673 172 +674 172 +675 173 +676 173 +548 173 +677 173 +678 173 +679 174 +117 174 +649 175 +680 175 +681 175 +682 175 +683 175 +71 176 +684 176 +609 177 +79 177 +686 177 +687 177 +685 178 +688 178 +386 178 +224 178 +689 178 +235 179 +359 179 +690 179 +691 179 +692 179 +693 180 +562 180 +694 180 +695 180 +696 180 +697 180 +406 181 +698 181 +699 181 +700 182 +424 182 +701 182 +391 183 +702 183 +703 183 +704 184 +333 184 +705 184 +706 184 +707 184 +708 185 +268 185 +709 185 +710 185 +711 185 +497 186 +712 186 +713 186 +714 186 +715 187 +126 187 +716 187 +368 188 +717 188 +378 188 +718 188 +719 188 +720 188 +721 189 +722 189 +723 189 +662 189 +725 189 +726 189 +727 190 +728 190 +729 190 +730 190 +731 191 +732 191 +733 191 +734 191 +411 192 +469 192 +735 192 +736 193 +737 193 +738 194 +739 194 +740 194 +741 194 +742 195 +743 195 +744 195 +745 195 +746 195 +747 195 +748 196 +749 196 +750 196 +751 197 +752 197 +753 197 +754 198 +755 198 +756 198 +450 199 +757 199 +758 199 +759 199 +760 199 +761 199 +568 200 +377 200 +762 200 +763 200 +764 200 +155 200 +765 201 +766 201 +744 201 +767 201 +768 201 +769 201 +770 202 +377 202 +771 202 +266 202 +772 202 +224 203 +773 203 +774 203 +775 204 +776 204 +777 204 +778 204 +97 35 +779 35 +780 205 +781 205 +782 205 +783 205 +784 206 +785 206 +786 206 +787 207 +788 207 +789 207 +790 207 +791 208 +792 208 +315 208 +794 208 +795 208 +82 209 +796 209 +797 209 +798 209 +799 209 +800 209 +382 210 +7 210 +593 210 +202 210 +801 211 +802 211 +803 211 +804 211 +805 211 +806 212 +807 212 +808 212 +809 212 +204 213 +810 213 +811 213 +812 213 +508 214 +813 214 +36 214 +814 215 +815 215 +816 215 +650 216 +610 216 +817 216 +818 216 +819 216 +199 216 +406 217 +821 217 +822 217 +823 217 +519 217 +824 217 +825 218 +673 218 +826 218 +827 218 +361 218 +367 219 +802 219 +608 219 +536 220 +829 220 +830 220 +831 220 +538 221 +832 221 +833 221 +834 221 +835 221 +836 221 +837 222 +838 222 +839 222 +840 223 +841 223 +842 223 +156 223 +843 224 +844 224 +845 224 +846 224 +847 225 +848 225 +849 225 +850 225 +373 226 +851 226 +852 226 +853 226 +854 227 +855 227 +856 227 +857 227 +341 228 +858 228 +859 228 +860 228 +861 228 +862 228 +863 229 +864 229 +865 229 +866 229 +867 230 +544 230 +394 230 +673 230 +243 231 +183 231 +77 231 +868 231 +869 231 +141 232 +600 232 +870 232 +871 232 +584 234 +872 234 +782 234 +873 235 +347 235 +423 235 +874 236 +309 236 +805 236 +334 237 +875 237 +829 237 +876 237 +491 238 +829 238 +454 238 +195 238 +820 238 +562 239 +286 239 +619 239 +793 239 +645 239 +543 240 +373 240 +828 240 +537 240 +877 241 +878 241 +879 241 +428 80 +688 242 +880 242 +881 242 +577 243 +882 243 +883 243 +884 243 +885 243 +886 243 +887 244 +888 244 +450 244 +258 245 +889 245 +723 245 +519 245 +893 246 +894 246 +532 246 +895 246 +896 247 +897 247 +652 247 +898 248 +899 248 +900 248 +901 248 +902 248 +903 250 +879 250 +904 250 +47 250 +397 251 +906 251 +853 251 +907 251 +908 252 +215 252 +909 252 +196 252 +910 253 +387 253 +337 253 +911 254 +610 254 +912 254 +913 254 +731 254 +914 254 +915 255 +916 255 +86 255 +668 255 +917 255 +918 256 +235 256 +919 256 +920 256 +921 257 +373 257 +922 257 +923 257 +924 258 +925 258 +926 258 +927 258 +928 259 +929 259 +930 259 +931 259 +932 259 +933 260 +934 260 +935 260 +936 260 +937 260 +938 260 +609 261 +126 261 +393 261 +939 261 +940 261 +528 261 +941 262 +942 262 +943 262 +944 262 +945 263 +393 263 +946 263 +947 263 +126 264 +948 264 +608 264 +949 264 +699 264 +950 265 +951 265 +952 265 +145 266 +953 266 +954 266 +955 266 +956 266 +957 267 +958 267 +959 267 +960 268 +961 268 +962 268 +963 268 +82 269 +964 269 +279 270 +965 270 +958 270 +966 270 +967 270 +968 271 +969 271 +970 271 +300 272 +708 272 +875 272 +971 272 +393 273 +972 273 +852 273 +973 273 +407 273 +974 274 +975 274 +976 274 +977 275 +978 275 +979 275 +980 275 +377 275 +762 275 +155 275 +982 276 +983 276 +984 276 +679 276 +686 276 +985 277 +370 277 +495 277 +282 277 +346 277 +986 277 +987 278 +988 278 +159 279 +531 279 +989 279 +174 280 +685 280 +990 280 +991 280 +992 280 +993 280 +154 281 +994 281 +995 281 +996 281 +340 281 +997 281 +959 282 +998 282 +713 282 +999 282 +300 283 +496 283 +1000 283 +1001 283 +1002 283 +1003 283 +183 284 +1004 284 +1005 284 +1006 284 +1007 284 +386 285 +142 285 +1008 285 +169 286 +146 286 +332 286 +1009 286 +1010 286 +1011 286 +427 287 +569 287 +842 287 +174 288 +1012 288 +1013 288 +1014 288 +1015 288 +1016 289 +1017 289 +869 289 +1018 289 +584 290 +1019 290 +743 290 +1020 290 +965 291 +775 291 +177 291 +1021 292 +1022 292 +1023 292 +1024 292 +1025 293 +364 293 +1026 293 +1027 294 +1028 294 +1029 294 +1030 294 +1031 294 +1032 295 +1033 295 +1034 295 +1035 296 +1036 296 +1037 296 +391 297 +1038 297 +1039 297 +223 298 +1040 298 +1041 298 +1042 298 +1043 299 +1044 299 +1045 299 +1046 299 +1047 300 +1048 300 +1049 300 +1050 300 +1051 301 +1052 301 +1053 301 +1054 301 +1055 301 +577 302 +805 302 +1056 302 +1057 302 +1058 303 +1059 303 +1060 303 +1061 303 +626 304 +1063 304 +1064 304 +635 305 +1065 305 +411 306 +1066 306 +1067 306 +851 306 +737 306 +71 307 +901 307 +1068 307 +1069 307 +1070 307 +1071 307 +1072 307 +1073 307 +1074 307 +1075 307 +864 308 +1076 308 +1077 308 +1078 308 +662 308 +1079 308 +145 309 +1080 309 +1081 309 +1082 309 +1083 310 +640 310 +633 310 +1084 311 +1085 311 +1086 311 +1087 311 +1088 311 +1089 312 +1090 312 +1091 312 +1092 312 +1093 312 +115 313 +1094 313 +1095 313 +1096 313 +1097 313 +1098 314 +1099 314 +570 314 +1100 314 +679 315 +844 315 +1101 315 +1102 315 +82 316 +797 316 +412 316 +1103 316 +1104 317 +1094 317 +9 317 +1105 317 +1106 317 +258 318 +1107 318 +828 318 +1108 318 +394 319 +1109 319 +1110 319 +543 320 +71 320 +687 320 +1111 320 +1112 321 +1113 321 +1114 321 +1108 321 +1115 322 +1116 322 +1117 322 +1118 322 +609 323 +1119 323 +1120 323 +1121 324 +1122 324 +1123 324 +1124 324 +393 325 +854 325 +823 326 +851 326 +480 326 +548 326 +1125 327 +1126 327 +1127 327 +1128 327 +6 328 +75 328 +493 328 +155 328 +541 328 +1129 328 +1130 329 +563 329 +1131 329 +201 329 +1132 330 +1133 330 +1134 330 +1135 330 +1136 330 +1137 331 +1138 331 +1139 331 +171 331 +1140 331 +1141 331 +853 331 +1142 331 +1143 332 +923 332 +1144 332 +1145 332 +1146 333 +1147 333 +487 333 +1148 334 +825 334 +79 334 +1149 334 +1150 334 +1151 334 +1152 334 +1153 335 +509 335 +1154 335 +1155 336 +1156 336 +1160 338 +1161 338 +1162 338 +1163 338 +1164 338 +1165 339 +1166 339 +1167 339 +1168 339 +1169 339 +723 339 +1170 340 +394 340 +1171 340 +1172 340 +1173 340 +886 341 +1174 341 +88 341 +221 341 +1175 341 +971 342 +267 342 +1176 342 +948 342 +1177 342 +1178 343 +533 343 +1179 343 +1180 343 +1181 343 +1182 344 +1183 344 +1184 344 +1185 344 +71 345 +216 345 +1186 345 +170 345 +159 345 +825 345 +1187 345 +1178 346 +1188 346 +1189 346 +1190 346 +1191 346 +531 347 +1013 347 +1192 347 +688 347 +1193 347 +982 348 +1195 348 +1196 348 +1197 348 +1198 348 +1199 349 +1200 349 +1153 349 +1201 350 +919 350 +948 350 +1178 351 +1067 351 +608 351 +1202 352 +1203 352 +378 352 +1204 352 +227 352 +1165 352 +1205 353 +974 353 +1206 353 +1207 353 +911 354 +971 354 +1208 354 +1205 354 +1209 354 +1210 354 +1211 354 +1083 356 +1212 356 +1213 356 +1214 356 +1215 356 +1035 357 +283 358 +1216 358 +469 358 +828 358 +601 358 +1027 359 +1217 359 +469 359 +1218 359 +1219 359 +1220 360 +1221 360 +1222 360 +863 360 +1223 360 +601 361 +577 361 +1104 361 +1224 361 +948 361 +587 361 +711 362 +1225 362 +1226 362 +1227 362 +1228 362 +1229 362 +1230 362 +258 363 +159 363 +1231 364 +1232 364 +1233 364 +1234 365 +1235 365 +1236 365 +1237 365 +198 366 +377 366 +1004 366 +1238 366 +541 366 +625 366 +1239 366 +442 366 +1240 366 +868 366 +1241 366 +1027 367 +1242 367 +1243 367 +1244 367 +1245 367 +140 368 +1246 368 +382 368 +979 369 +700 369 +904 369 +1247 369 +1248 369 +1007 369 +1249 369 +533 370 +641 370 +1250 370 +1251 371 +419 371 +1252 371 +1253 371 +1254 371 +1255 372 +340 372 +1256 372 +1257 372 +1088 372 +1258 373 +1259 373 +1260 373 +1261 373 +1262 373 +1263 373 +1264 373 +649 374 +680 374 +1265 374 +1097 374 +682 374 +126 375 +1266 375 +224 375 +1267 375 +1268 375 +1269 375 +700 376 +382 376 +1270 376 +548 377 +347 377 +201 377 +22 377 +548 378 +979 378 +265 378 +1271 378 +977 378 +1272 379 +1273 379 +1274 379 +1275 379 +549 380 +579 380 +879 380 +84 380 +1276 380 +1277 380 +1278 381 +1279 381 +262 382 +1 382 +1280 382 +1281 382 +264 382 +1282 382 +1283 382 +752 382 +1284 382 +1285 383 +121 383 +1286 383 +1287 383 +1288 384 +1289 384 +1290 384 +1291 384 +1292 384 +1293 384 +1294 384 +1295 384 +1296 385 +1297 385 +608 385 +1298 385 +393 385 +386 385 +6 386 +1299 386 +1300 386 +1301 386 +25 386 +1302 386 +114 387 +1303 387 +1304 387 +1305 387 +1306 387 +1307 387 +1308 387 +1309 387 +1310 387 +1311 387 +183 388 +1312 388 +1313 388 +1314 388 +1315 388 +844 389 +1316 389 +704 389 +983 389 +478 389 +114 390 +1317 390 +1318 390 +1319 390 +1320 390 +1321 390 +1322 390 +1323 390 +1324 390 +1325 391 +1326 391 +1327 391 +1328 391 +958 391 +71 392 +910 392 +1329 392 +1330 392 +1331 392 +787 393 +456 393 +645 393 +1332 393 +1333 394 +463 394 +1334 394 +495 394 +1335 395 +326 395 +1336 396 +1337 396 +1338 396 +1339 396 +1340 396 +911 397 +610 397 +973 397 +480 397 +598 397 +1341 397 +914 397 +1342 397 +1343 397 +1344 397 +264 398 +233 398 +339 398 +1345 398 +1346 398 +94 398 +92 398 +449 398 +1347 398 +1348 398 +382 399 +1349 399 +1350 399 +1351 399 +363 399 +1352 399 +1325 400 +1353 400 +1354 400 +1355 400 +1356 400 +823 401 +1357 401 +1358 401 +1359 401 +1360 401 +1361 401 +1134 401 +385 402 +1362 402 +1363 402 +956 402 +1364 402 +1365 402 +1366 402 +1367 403 +1368 403 +650 403 +1369 403 +1370 404 +1066 404 +1371 404 +1372 404 +485 405 +1373 405 +1374 405 +1375 406 +1376 406 +1377 407 +1378 407 +1379 407 +864 408 +797 408 +1380 408 +569 409 +285 409 +1381 409 +770 410 +1382 410 +771 410 +1383 410 +1384 411 +541 411 +6 411 +1385 411 +534 412 +1386 412 +1373 413 +742 413 +553 413 +1387 413 +268 414 +1388 414 +828 414 +1389 414 +1390 415 +1391 415 +1392 415 +1393 416 +486 416 +1394 416 +174 417 +1395 417 +775 417 +1396 417 +1397 418 +1398 418 +\. + + +-- +-- PostgreSQL database dump complete +-- + diff --git a/DB/TP1_OrdresSQL/indexes.sql b/DB/TP1_OrdresSQL/indexes.sql new file mode 100755 index 0000000..78e741f --- /dev/null +++ b/DB/TP1_OrdresSQL/indexes.sql @@ -0,0 +1,55 @@ +-- +-- indexes.sql ENSICAEN 2005 +-- +-- MASSE Nicolas (2005-Groupe3-LIMIN) +-- LIMIN Thomas (2005-Groupe3-MASSE) +-- +-- ENSICAEN +-- 6 Boulevard Marechal Juin +-- F-14050 Caen Cedex +-- +-- Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre +-- reproduit, utilise ou modifie sans l'avis express de ses auteurs. +-- + +-- +-- Crée les index qui vont permettre d'accélérer les requètes +-- +-- Pour plus de détails concernant les indexes sous PostgreSQL, voir +-- la documentation (indexes.html). +-- + +-- +-- Version : 1.0 +-- +-- Fait : - +-- +-- A faire : - +-- + +-- Index pour les noms de genre +CREATE INDEX genre_nomg_idx +ON genre +USING BTREE(nomg); + +-- Index pour les noms de comédiens +CREATE INDEX com_identc_idx +ON com +USING BTREE(identc); + +-- Index pour les titres de films +CREATE INDEX film_titre_idx +ON film +USING BTREE(titre); + +-- Index pour les annees de sortie des films +CREATE INDEX film_annee_idx +ON film +USING BTREE(annee); + +-- Index pour les noms de réalisateurs +CREATE INDEX realis_identr_idx +ON realis +USING BTREE(identr); + + diff --git a/DB/TP1_OrdresSQL/insert_data.sql b/DB/TP1_OrdresSQL/insert_data.sql new file mode 100755 index 0000000..99a85fb --- /dev/null +++ b/DB/TP1_OrdresSQL/insert_data.sql @@ -0,0 +1,92 @@ +-- +-- insert_data.sql ENSICAEN 2005 +-- +-- MASSE Nicolas (2005-Groupe3-LIMIN) +-- LIMIN Thomas (2005-Groupe3-MASSE) +-- +-- ENSICAEN +-- 6 Boulevard Marechal Juin +-- F-14050 Caen Cedex +-- +-- Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre +-- reproduit, utilise ou modifie sans l'avis express de ses auteurs. +-- + +-- +-- Insere les donnees de la base de donnees dp +-- +-- Pour obtenir la liste des champs d'une table, on utilise la commande +-- \d du client psql +-- +-- Par exemple, \dt films donne : +-- +-- Table "public.films" +-- Column | Type | Modifiers +-- -------------+------------------------+----------- +-- numerofilm | integer | not null +-- titre | character varying(80) | +-- genre | integer | +-- anneesortie | integer | +-- realisateur | integer | +-- resume | character varying(255) | +-- Indexes: +-- "films_pkey" PRIMARY KEY, btree (numerofilm) +-- +-- + +-- +-- Version : 1.0 +-- +-- Fait : - +-- +-- A faire : - +-- + + +-- comediens => com +-- numerocomedien -> numc +-- nomcomedien -> identc +INSERT INTO com (numc, identc) +SELECT numerocomedien, nomcomedien +FROM public.comediens; + +-- genre => genre +-- numerogenre -> numg +-- nomgenre -> nomg +INSERT INTO genre (numg, nomg) +SELECT numerogenre, nomgenre +FROM public.genre; + +-- Des enregistrements de la table film font reference a un genre 0 manquant. +INSERT INTO genre (numg, nomg) +VALUES (0, 'Inconnu'); + +-- realisateurs => realis +-- numerorealisateur -> numr +-- nomrealisateur -> identr +INSERT INTO realis (numr, identr) +SELECT numerorealisateur, nomrealisateur +FROM public.realisateurs; + +-- films => film +-- numerofilm -> numf +-- titre -> titre +-- genre -> numg +-- anneesortie -> annee +-- realisateur -> numr +-- resume -> resume +INSERT INTO film (numf, titre, numg, annee, numr, resume) +SELECT numerofilm, titre, genre, anneesortie, realisateur, resume +FROM public.films; + +-- com_film => role +-- numerofilm -> numf +-- numerocomedien -> numc +-- +-- NOTE : Le film 337 n'existe pas dans la table role +INSERT INTO role (numf, numc) +SELECT numerofilm, numerocomedien +FROM public.com_film +WHERE numerofilm != 337; + + diff --git a/DB/TP1_OrdresSQL/queries.sql b/DB/TP1_OrdresSQL/queries.sql new file mode 100755 index 0000000..75b838d --- /dev/null +++ b/DB/TP1_OrdresSQL/queries.sql @@ -0,0 +1,90 @@ +-- +-- queries.sql ENSICAEN 2005 +-- +-- MASSE Nicolas (2005-Groupe3-LIMIN) +-- LIMIN Thomas (2005-Groupe3-MASSE) +-- +-- ENSICAEN +-- 6 Boulevard Marechal Juin +-- F-14050 Caen Cedex +-- +-- Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre +-- reproduit, utilise ou modifie sans l'avis express de ses auteurs. +-- + +-- +-- Exécute les requetes demandées dans l'énoncé +-- + +-- +-- Version : 0.0.1 +-- +-- Fait : Detail de ce qui a ete fait. +-- +-- A faire : Detail de ce qui n'a pas ete fait. +-- + +-- On ecrit dans le fichier queries.html +\o queries.html + +-- On active le mode HTML +\pset format html +\T 'width="100%"' + +-- En-tête +\qecho '' +\qecho '' +\qecho '' +\qecho 'Résultat des requètes' +\qecho '' +\qecho '' +\qecho '' + +\C '4.a - Titres des films réalisés par Woody ALLEN' +SELECT numf AS "Numéro", titre AS "Titre", annee AS "Année", nomg AS "Genre", identr AS "Réalisateur" +FROM film NATURAL JOIN genre NATURAL JOIN realis +WHERE identr = 'ALLEN Woody'; + +\C '4.b - Titres et années de sortie des films réalisés par Charlie CHAPLIN entre 1930 et 1940' +SELECT numf AS "Numéro", titre AS "Titre", annee AS "Année", nomg AS "Genre", identr AS "Réalisateur" +FROM film NATURAL JOIN genre NATURAL JOIN realis +WHERE identr = 'CHAPLIN Charlie' +AND annee BETWEEN 1930 AND 1940; + +\C '4.c - Noms des acteurs, triés par ordre alphabétique, du film "Les lumières de la ville"' +SELECT identc AS "Comédien", titre AS "Film" +FROM film NATURAL JOIN role NATURAL JOIN com +WHERE titre = 'Les lumieres de la ville' +ORDER BY identc ASC; + +\C '4.d - Titre des films d\'espionnage sortis en 1987' +SELECT numf AS "Numéro", titre AS "Titre", annee AS "Année", nomg AS "Genre", identr AS "Réalisateur" +FROM film NATURAL JOIN genre NATURAL JOIN realis +WHERE nomg = 'Espionnage' +AND annee = 1987; + +\C '4.e - Nombre de films joués par Gérard DEPARDIEU' +SELECT count(*) AS "Nombre" +FROM role +WHERE numc = (SELECT numc FROM com WHERE identc = 'DEPARDIEU Gerard'); + +\C '4.f - Noms des réalisateurs, triés par ordre alphabétique, qui sont également comédiens' +SELECT identr AS "Réalisateur" +FROM realis, com +WHERE identc = identr +ORDER BY identr ASC; + +\C '4.g - Titres des films et nom des réalisateurs des films de la série Star Trek' +SELECT numf AS "Numéro", titre AS "Titre", annee AS "Année", nomg AS "Genre", identr AS "Réalisateur" +FROM film NATURAL JOIN genre NATURAL JOIN realis +WHERE titre LIKE 'Star Trek%'; + +\C '4.h - Nom des comédiens ayant joué dans au moins 5 films' +SELECT identc AS "Nom du comédien", count(*) AS "Nombre de films" +FROM role NATURAL JOIN com +GROUP BY identc +HAVING count(*) >= 5 +ORDER BY count(*) DESC; + +\qecho '' +\qecho '' diff --git a/DB/TP1_OrdresSQL/update_data.sql b/DB/TP1_OrdresSQL/update_data.sql new file mode 100755 index 0000000..c30a590 --- /dev/null +++ b/DB/TP1_OrdresSQL/update_data.sql @@ -0,0 +1,41 @@ +-- +-- update_data.sql ENSICAEN 2005 +-- +-- MASSE Nicolas (2005-Groupe3-LIMIN) +-- LIMIN Thomas (2005-Groupe3-MASSE) +-- +-- ENSICAEN +-- 6 Boulevard Marechal Juin +-- F-14050 Caen Cedex +-- +-- Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre +-- reproduit, utilise ou modifie sans l'avis express de ses auteurs. +-- + +-- +-- Corrige les enregistrements relatifs au réalisateur James CAMERON : +-- suppression de 'CAMERON James' +-- + +-- +-- Version : 1.0 +-- +-- Fait : - +-- +-- A faire : - +-- + +-- Les films de 'CAMERON James' sont désormais réalisés par 'CAMERON James F.' +UPDATE film +SET numr = 41 +WHERE numr = 289; + +-- 'CAMERON James' n'a plus lieu d'exister, on le supprime +DELETE FROM realis +WHERE numr = 289; + +-- Liste des films réalisés par 'CAMERON James F.' +SELECT numf, titre, annee, identr +FROM film INNER JOIN realis USING (numr) +WHERE numr = 41; + diff --git a/DB/TP2_ServeurWeb/actorDetails.php b/DB/TP2_ServeurWeb/actorDetails.php new file mode 100755 index 0000000..3565f4a --- /dev/null +++ b/DB/TP2_ServeurWeb/actorDetails.php @@ -0,0 +1,61 @@ + + + + + + + + + + Détails d'un comédien + + + + getName()); + } + } + ?> + +

+ +

+ +

Filmographie:

+ +
    + getMoviesList(); + + if (count($movies) > 0) { + foreach ($movies as $movie) { + movieToLink($movie, TRUE); + } + } else { + echo('
  • Aucun film trouvé
  • '); + } + ?> +
+ + + + + + diff --git a/DB/TP2_ServeurWeb/chooseActor.php b/DB/TP2_ServeurWeb/chooseActor.php new file mode 100755 index 0000000..8bd9e6d --- /dev/null +++ b/DB/TP2_ServeurWeb/chooseActor.php @@ -0,0 +1,54 @@ + + + + + + + + + + + Choix d'un comédien + + + + + +

Choix d'un comédien

+ +
+
+

+ +

+ +

+ +
+ + + + + diff --git a/DB/TP2_ServeurWeb/chooseDirector.php b/DB/TP2_ServeurWeb/chooseDirector.php new file mode 100755 index 0000000..4da60fc --- /dev/null +++ b/DB/TP2_ServeurWeb/chooseDirector.php @@ -0,0 +1,64 @@ + + + + + + + + + + + Choix d'un réalisateur + + + + + +

Choix d'un réalisateur

+ +

Formulaire pour obtenir la liste des films d'un réalisateur donné

+ +
+
+

+ +

+ +
+ + + + + diff --git a/DB/TP2_ServeurWeb/directorDetails.php b/DB/TP2_ServeurWeb/directorDetails.php new file mode 100755 index 0000000..0f880ae --- /dev/null +++ b/DB/TP2_ServeurWeb/directorDetails.php @@ -0,0 +1,62 @@ + + + + + + + + + + Détails d'un réalisateur + + + + getName()); + } + } + ?> + +

+ +

+ +

Filmographie:

+ +
    + getMoviesList(); + + if (count($movies) > 0) { + foreach ($movies as $movie) { + movieToLink($movie, TRUE); + } + } else { + echo('
  • Aucun film trouvé
  • '); + } + + ?> +
+ + + + + + diff --git a/DB/TP2_ServeurWeb/film.txt b/DB/TP2_ServeurWeb/film.txt new file mode 100755 index 0000000..84b98f1 --- /dev/null +++ b/DB/TP2_ServeurWeb/film.txt @@ -0,0 +1,16 @@ +Ghost|Fantastique|1990|ZUCKER Jerry|Sam, cadre dans une banque d'affaires, vit heureux avec Molly, sa compagne. Un soir, en rentrant d'un spectacle, Sam est victime des balles d'un malfrat et meurt dans les bras de Molly. Son fantôme va rapidement s'apercevoir qui a commandité le meurtre.|SWAYZE Patrick|MOORE Demi|GOLDBERG Whoopi|GOLDWYN Tony +Programmé pour tuer|Suspense|1997|LEONARD Brett|A, Los Angeles, en 1999, Sid 6.7 a été créée pour entraîner les forces de police. Cette image de synthèse représente tous les êtres dangereux de la planète, mais son créateur lui a donné les capacités de s'échapper de son environnement.|WASHINGTON Denzel|LYNCH Kelly|CROWE Russell|SPINELLA Stephen +Men in black|Fantastique|1997|SONNENFELD Barry|Deux agents de l'organisation secrète Men in Black, chargés de surveiller les extraterrestres présents sur Terre, luttent contre un envahisseur.|JONES Tommy Lee|SMITH Will|FIORENTINO Linda +Piège à Hong-Kong|Aventure|1998|HARK Tsui|Alors que la chine s'apprête à récuperer Hong-Kong, un agent de la CIA, officiellement patron d'une fabrique de jeans, se retrouve confronté à la maffia russe.|VAN DAMME Jean-Claude|SORVINO Paul +Brannighan|Espionnage|1975|HICKOX David|Jim, un flic aux méthodes expéditives, se rend à Londres pour mettre la main sur Larkin et le ramener aux Etats-Unis.|WAYNE John|ATTENBOROUGH Richard|GEESON Judy +Vous avez un message|Comedie|1998|EPHRON Nora|Joe Fox est propriétaire de la plus grande chaîne de librairies de Manhattan. Kathleen Kelly, elle, tient une toute petite librairie. Chacun d'eux pense avoir une vie idéale jusqu'au jour où, suite à une annonce passée sur Internet, ils font connaissance.|HANKS Tom|RYAN Meg|POSEY Parker +Toutes peines confondues|Policier|1992|DEVILLE Michel|Turston, habile agent d'Interpol, charge l'inspecteur Vade d'enquêter sur Antoine Gardella, un homme d'affaires corrompu dont les parents viennent d'être assassinés. Le jeune inspecteur se sent vite mal à l'aise dans cette mission, compliquée, dangereuse,|DUTRONC Jacques|BRUEL Patrick|MAY Mathilda +La lectrice|Comedie|1988|DEVILLE Michel|Marie, passionnée de lecture, se propose comme lectrice à domicile. Elle va chez ses clients : un jeune garçon, la veuve d'un général hongrois et un PDG.|MIOU-MIOU|ROYER Régis|CASARES Maria|CHESNAIS Patrick +Paparazzi|Comedie|1998|BERBERIAN Alain|Après avoir assisté à un match de football au lieu d'être à son travail, Franck paraît en couverture d'un magazine et perd son emploi. Il part à la recherche du photographe responsable du cliché.|TIMSIT Patrick|LINDON Vincent|BAYE Nathalie|FROT Catherine +Le Saint|Policier|1997|NOYCE Phillip|Interne dans un collège anglais d'Extrême-Orient, Jean Rossi assiste à la mort d'Agnès, jeune pensionnaire dont il est épris. Plusieurs années après, à Moscou, un mystérieux individu pénêtre par effraction dans une salle des coffres.|KILMER Val|SHUE Elisabeth +Independance Day|Fantastique|1996|EMMERICH Roland|Un pilote noir et un génie de l'informatique viennent à bout d'extraterrestres s'apprêtant à exterminer la race humaine.|SMITH Will|GOLDBLUM Jeff|PULLMAN Bill|MCDONNEL Mary +Snake Eyes|Policier|1998|DE PALMA Brian|A Atlantic City, le secrétaire d'Etat est victime d'un assassinat. L'inspecteur Santoro, policier corrompu, commence son enquête.|CAGE Nicolas|SINISE Gary|HEARD John|GUGINO Carla +Touchez pas au grisbi|Policier|1953|BECKER Jacques|"Max et Riton ont dérobé des lingots d'or à Orly. Max a caché le "grisbi" mais Riton dévoile le secret à sa maîtresse Josy."|DARY René|GABIN Jean|VENTURA Lino +Le Pic de Dante|Catastrophe|1997|DONALDSON Roger|Rachel Wando, maire du Pic de Dante, petite ville surplombée d'un volcan, signe un contrat avec une grosse société afin de développer le tourisme. Mais le volcanologue Harry la met en garde car il craint une prochaine éruption.|BROSNAN Pierce|HAMILTON Linda|HALLAHAN Charles +La canardeur|Aventure|1974|CIMINO Michael|Poursuivi par d'anciens complices et se dissimulant sous une fausse identité de pasteur, John Thunderbolt, dit le canardeur, échappe à la mort grâce à l'intervention d'un petit truand Lightfoot. Les deux hommes sont pourchassés à travers le pays.|EASTWOOD Clint|KENNEDY George|BRIDGES Jeff|LEWIS Geoffrey +Hackers|Suspense|1995|SOFTLEY Iain|Dade Murphy a été fiché au FBI à onze ans pour avoir piraté plus de 1500 systèmes informatiques. Il continue néanmoins, avec d'autres étudiants, de s'introduire sur tous les réseaux. Un jour, le FBI les accuse d'avoir implanté un virus caable désastreux.|MILLER Jonny Lee|BRACCO Lorraine diff --git a/DB/TP2_ServeurWeb/findMovieFromTitle.php b/DB/TP2_ServeurWeb/findMovieFromTitle.php new file mode 100755 index 0000000..6108fe3 --- /dev/null +++ b/DB/TP2_ServeurWeb/findMovieFromTitle.php @@ -0,0 +1,65 @@ + + + + + + + + + + Rechercher d'un film à partir de son titre + + + + + +

Recherche d'un film à partir de son titre

+ +
+
+


+ />
+

+ +
Films dont le titre contient \"$title_part_xhtml\":

    "); + + if (count($movies) > 0) { + foreach ($movies as $movie) { + movieToLink($movie, TRUE); + } + } else { + echo('
  • Aucun film ne correspond au critère de recherche
  • '); + } + + echo("
"); + } + ?> + + + + + diff --git a/DB/TP2_ServeurWeb/inc/Actor.inc.php b/DB/TP2_ServeurWeb/inc/Actor.inc.php new file mode 100755 index 0000000..8b04e6a --- /dev/null +++ b/DB/TP2_ServeurWeb/inc/Actor.inc.php @@ -0,0 +1,226 @@ + + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * @version 1.0 + * @access public + */ +class Actor { + /** + * The id of this actor in the database. + * + * @var integer + * @access private + */ + var $id; + + /** + * The identity of this actor in the database. + * + * @var string + * @access private + */ + var $name; + + /** + * The list of movies in which this actor appears + */ + var $movies; + + /** + * Constructs an actor using his data. + * + * @param integer $id the id of the actor. + * @param string $name the name of the actor. + * @access private + */ + function Actor($id, $name) { + $this->id = $id; + $this->name = $name; + $this->movies = NULL; + } + + /** + * Constructs an actor using its id in the database, if it doesn't exist + * it is inserted and the given number is returned. + * + * @param string $name the name of the actor + * @access public + * @static + * @returns a new actor. + */ + function newActor($name) { + $id = 0; + + // Doubles the quotes + $name_esc = pg_escape_string($name); + + $query = "SELECT numc FROM com WHERE identc = '$name_esc'"; + $res = pg_query($GLOBALS[PG_CONNECTION], $query); + + // Does the director exist in the database ? + $num = pg_num_rows($res); + if ($num == 1) { + // Yes + $row = pg_fetch_row($res); + $id = $row[0]; + } else if ($num == 0) { + // No, insert it + $id = getNextKey('com'); + $insert = "INSERT INTO com (numc, identc) VALUES (" . $id . ", '$name_esc')"; + + if (pg_query($GLOBALS[PG_CONNECTION], $insert) === FALSE) { + die("Unable to insert new actor."); + } + + trigger_error("New actor inserted", E_USER_NOTICE); + } else { + die("'$query' returned $num lines."); + } + + // creates the object + $act = new Actor($id, $name); + + return $act; + } + + + /** + * Constructs an actor using his id in the database, if it doesn't exist + * NULL is returned + * + * @param string $id the id of the actor + * @access public + * @static + * @returns a new actor or NULL. + */ + function getActorById($id) { + + $query = "SELECT identc FROM com WHERE numc = $id"; + $res = pg_query($GLOBALS[PG_CONNECTION], $query); + + // Does the actor exist in the database ? + $num = pg_num_rows($res); + if ($num == 1) { + // Yes + $row = pg_fetch_row($res); + $name = $row[0]; + // creates the object + $actor = new Actor($id, $name); + + } else if ($num == 0) { + // No, return NULL + $actor = NULL; + } + + return $actor; + } + + /** + * Returns the list of movies in which this actor appears. + * This method is a lazy initialization of the movies field + * + * @return movies list + */ + function getMoviesList() { + if ($this->movies == NULL) { + $this->movies = Movie::getMoviesWithActor($this->id); + } + + return $this->movies; + } + + + /** + * Returns the list of all the actors in the database and the number + * of movies associated. + * + * @return array an array of two columns, the actor and + * the number of movies. + * @static + */ + function getActors() { + $query = "SELECT numc, identc, count(numf) AS num + FROM com NATURAL JOIN role + GROUP BY numc, identc + ORDER BY identc"; + + $res = pg_query($GLOBALS[PG_CONNECTION], $query); + if ($res === FALSE) { + die("Can't list actors."); + } + + $arr = Array(); + + while (($row = pg_fetch_row($res)) !== FALSE) { + $arr[] = Array(new Actor($row[0], $row[1]), $row[2]); + } + + return $arr; + } + + + /** + * Register the role of this actor in the film. + * + * @param Movie $movie the movie the actor played in. + * @access public + */ + function playIn($movie) { + $query = "INSERT INTO role (numc, numf) VALUES (" . + $this->getId() . ", " . + $movie->getId() . ")"; + + if (pg_query($GLOBALS[PG_CONNECTION], $query) === FALSE) { + die("Unable to insert new role."); + } + + trigger_error("New role inserted: " . $this->toString() . + " + " . $movie->toString(), E_USER_NOTICE); + } + + /** + * Returns the ID of this actor. + * + * @return integer the id of this actor. + * @access public + */ + function getId() { + return $this->id; + } + + /** + * Returns the identity of this actor. + * + * @return string the identity of this actor. + * @access public + */ + function getName() { + return $this->name; + } + + /** + * Returns the string representation of this actor. + * + * @return string the string representation of this actor. + * @access public + */ + function toString() { + return "Actor(" . $this->getId() . ", " . $this->getName() . ")"; + } +} +?> diff --git a/DB/TP2_ServeurWeb/inc/Connection.inc.php b/DB/TP2_ServeurWeb/inc/Connection.inc.php new file mode 100755 index 0000000..c1e7341 --- /dev/null +++ b/DB/TP2_ServeurWeb/inc/Connection.inc.php @@ -0,0 +1,37 @@ + + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/** + * Connection to the database. + */ + + +define("PG_USER", "limint"); +define("PG_SCHEMA", PG_USER); +define("PG_PASSWD", "vilest"); +define("PG_DATABASE", "cinema"); + +// Useful alias, permit : $GLOBALS[PG_CONNECTION] +define("PG_CONNECTION", "PG_CONNECTION"); + +error_reporting(E_ALL); + +$con = pg_connect('dbname=' . PG_DATABASE . ' user=' . PG_USER . ' password=' . PG_PASSWD); +if ($con === FALSE) { + die("Unable to connect to the database."); +} + +$GLOBALS[PG_CONNECTION] = $con; + diff --git a/DB/TP2_ServeurWeb/inc/Director.inc.php b/DB/TP2_ServeurWeb/inc/Director.inc.php new file mode 100755 index 0000000..b3df60a --- /dev/null +++ b/DB/TP2_ServeurWeb/inc/Director.inc.php @@ -0,0 +1,206 @@ + + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * @version 1.0 + * @access public + */ +class Director { + /** + * The id of this director in the database. + * + * @var integer + * @access private + */ + var $id; + + /** + * The identity of this director in the database. + * + * @var string + * @access private + */ + var $name; + + /** + * The movies the director shot + */ + var $movies; + + /** + * Constructs a director using his data. + * + * @param integer $id the id of the director. + * @param string $name the name of the director. + * @access private + */ + function Director($id, $name) { + $this->id = $id; + $this->name = $name; + $this->movies = NULL; + } + + /** + * Constructs a director using its id in the database, if it doesn't exist + * it is inserted and the given number is returned. + * + * @param string $name the name of the director + * @access public + * @static + * @returns a new director. + */ + function newDirector($name) { + $id = 0; + + // Doubles the quotes + $name_esc = pg_escape_string($name); + + $query = "SELECT numr FROM realis WHERE identr = '$name_esc'"; + $res = pg_query($GLOBALS[PG_CONNECTION], $query); + + // Does the director exist in the database ? + $num = pg_num_rows($res); + if ($num == 1) { + // Yes + $row = pg_fetch_row($res); + $id = $row[0]; + } else if ($num == 0) { + // No, insert it + $id = getNextKey('realis'); + $insert = "INSERT INTO realis (numr, identr) VALUES (" . $id . ", '$name_esc')"; + + if (pg_query($GLOBALS[PG_CONNECTION], $insert) === FALSE) { + die("Unable to insert new director."); + } + + trigger_error("New director inserted", E_USER_NOTICE); + } else { + die("'$query' returned $num lines."); + } + + // creates the object + $dir = new Director($id, $name); + + return $dir; + } + + /** + * Constructs a director using his id in the database, if it doesn't exist + * NULL is returned + * + * @param string $id the id of the director. + * @access public + * @static + * @returns a new director or NULL. + */ + function getDirectorById($id) { + + $query = "SELECT identr FROM realis WHERE numr = $id"; + $res = pg_query($GLOBALS[PG_CONNECTION], $query); + + // Does the director exist in the database ? + $num = pg_num_rows($res); + if ($num == 1) { + // Yes + $row = pg_fetch_row($res); + $name = $row[0]; + // creates the object + $director = new Director($id, $name); + + } else if ($num == 0) { + // No, return NULL + $director = NULL; + } + + return $director; + } + + + /** + * Returns the list of all the directors in the database and the number + * of movies associated. + * + * @return array an array of two columns, the director and + * the number of movies. + * @static + */ + function getDirectors() { + $query = "SELECT numr, identr, count(numf) AS num + FROM realis NATURAL JOIN film + GROUP BY numr, identr + ORDER BY identr"; + + $res = pg_query($GLOBALS[PG_CONNECTION], $query); + if ($res === FALSE) { + die("Can't list directors."); + } + + $arr = Array(); + + while (($row = pg_fetch_row($res)) !== FALSE) { + $arr[] = Array(new Director($row[0], $row[1]), $row[2]); + } + + return $arr; + } + + /** + * Returns the ID of this director. + * + * @return integer the id of this director. + * @access public + */ + function getId() { + return $this->id; + } + + /** + * Returns the identity of this director. + * + * @return string the identity of this director. + * @access public + */ + function getName() { + return $this->name; + } + + /** + * Returns the string representation of this director. + * + * @return string the string representation of this director. + * @access public + */ + function toString() { + return "Director(" . $this->getId() . ", " . $this->getName() . ")"; + } + + /** + * Returns the list of movies shot by this director + * This method is a lazy initialization of the movies field + * + * @return movies list + */ + function getMoviesList() { + if ($this->movies == NULL) { + $this->movies = Movie::getMoviesOfDirector($this->id); + } + + return $this->movies; + } + +} +?> diff --git a/DB/TP2_ServeurWeb/inc/Kind.inc.php b/DB/TP2_ServeurWeb/inc/Kind.inc.php new file mode 100755 index 0000000..cc5778c --- /dev/null +++ b/DB/TP2_ServeurWeb/inc/Kind.inc.php @@ -0,0 +1,209 @@ + + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * @version 1.0 + * @access public + */ +class Kind { + /** + * The id of this kind in the database. + * + * @var integer + * @access private + */ + var $id; + + /** + * The name of this kind in the database. + * + * @var string + * @access private + */ + var $name; + + /** + * The movies of this kind + */ + var $movies; + + /** + * Constructs a kind using its data. + * + * @param integer $id the id of the kind. + * @param string $name the name of the kind. + * @access private + */ + function Kind($id, $name) { + $this->id = $id; + $this->name = $name; + $this->movies = NULL; + } + + /** + * Constructs a kind using his name in the database, if it doesn't exist + * it is inserted and the given number is returned. + * + * @param string $name the name of the kind. + * @access public + * @static + * @returns a new kind. + */ + function newKind($name) { + $id = 0; + + // Doubles the quotes + $name_esc = pg_escape_string($name); + + $query = "SELECT numg FROM genre WHERE nomg = '$name_esc'"; + $res = pg_query($GLOBALS[PG_CONNECTION], $query); + + // Does the kind exist in the database ? + $num = pg_num_rows($res); + if ($num == 1) { + // Yes + $row = pg_fetch_row($res); + $id = $row[0]; + } else if ($num == 0) { + // No, insert it + $id = getNextKey('genre'); + $insert = "INSERT INTO genre (numg, nomg) VALUES (" . $id . ", '$name_esc')"; + + if (pg_query($GLOBALS[PG_CONNECTION], $insert) === FALSE) { + die("Unable to insert new kind."); + } + + trigger_error("New kind inserted", E_USER_NOTICE); + } else { + die("'$query' returned $num lines."); + } + + // creates the object + $kind = new Kind($id, $name); + + return $kind; + } + + + /** + * Constructs a kind using his id in the database, if it doesn't exist + * NULL is returned + * + * @param string $id the id of the kind. + * @access public + * @static + * @returns a new kind or NULL. + */ + function getKindById($id) { + + $query = "SELECT nomg FROM genre WHERE numg = $id"; + $res = pg_query($GLOBALS[PG_CONNECTION], $query); + + // Does the kind exist in the database ? + $num = pg_num_rows($res); + if ($num == 1) { + // Yes + $row = pg_fetch_row($res); + $name = $row[0]; + // creates the object + $kind = new Kind($id, $name); + + } else if ($num == 0) { + // No, return NULL + $kind = NULL; + } + + return $kind; + } + + + /** + * Returns the list of movies of this kind + * This method is a lazy initialization of the movies field + * + * @param sort_type how to sort: 0 => ASC title, 1 => DSC year + * + * @return movies list + */ + function getMoviesList($sort_type = 0) { + if ($this->movies == NULL) { + $this->movies = Movie::getMoviesOfKind($this->id, $sort_type); + } + + return $this->movies; + } + + + /** + * Returns the list of all the kinds in the database and the number + * of movies associated. + * + * @return array an array, each element is a two columns array containing + * the kind and the number of movies. + * @static + */ + function getKinds() { + $query = "SELECT numg, nomg, count(numf) AS num + FROM genre NATURAL JOIN film + GROUP BY numg, nomg + ORDER BY nomg"; + + $res = pg_query($GLOBALS[PG_CONNECTION], $query); + if ($res === FALSE) { + die("Can't list kinds."); + } + + $arr = Array(); + + while (($row = pg_fetch_row($res)) !== FALSE) { + $arr[] = Array(new Kind($row[0], $row[1]), $row[2]); + } + + return $arr; + } + + /** + * Returns the ID of this kind. + * + * @return integer the id of this kind. + * @access public + */ + function getId() { + return $this->id; + } + + /** + * Returns the identity of this kind. + * + * @return string the identity of this kind. + * @access public + */ + function getName() { + return $this->name; + } + + /** + * Returns the string representation of this kind. + * + * @return string the string representation of this kind. + * @access public + */ + function toString() { + return "Kind(" . $this->getId() . ", " . $this->getName() . ")"; + } +} +?> diff --git a/DB/TP2_ServeurWeb/inc/Movie.inc.php b/DB/TP2_ServeurWeb/inc/Movie.inc.php new file mode 100755 index 0000000..43f3f58 --- /dev/null +++ b/DB/TP2_ServeurWeb/inc/Movie.inc.php @@ -0,0 +1,441 @@ + + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * @version 1.0 + * @access public + */ +class Movie { + /** + * The id of this movie in the database. + * + * @var integer + * @access private + */ + var $id; + + /** + * The title of this movie in the database. + * + * @var string + * @access private + */ + var $title; + + /** + * The id of the kind related to this movie. + * + * @var integer + * @access private + */ + var $kind_id; + + /** + * On screen date. + * + * @var integer + * @access private + */ + var $year; + + /** + * The id of the director related to this movie. + * + * @var integer + * @access private + */ + var $dir_id; + + /** + * The text preview. + * + * @var string + * @access private + */ + var $text_preview; + + /** + * The list of actors who appears in this movie + */ + var $actors; + + /** + * Insert a new movie in the database. + * + * @param string $title the title of the movie. + * @param Kind $kind the kind of the movie. + * @param integer $year the year of the movie. + * @param Director $dir the director of the movie. + * @param string $tp the text preview of the movie. + * @param Array $actors the list of the actors of the movie. + * @return Movie the new movie. + * @access public + * @static + */ + function newMovie($title, $kind, $year, $dir, $tp, $actors) { + // Doubles the quotes + $title_esc = pg_escape_string($title); + $tp_esc = pg_escape_string($tp); + + // Insertion of the movie in the database + $id = getNextKey('film'); + $insert = "INSERT INTO film + (numf, titre, numg, annee, numr, resume) + VALUES (" . + $id . ", " . + "'$title_esc', " . + $kind->getId() . ', ' . + "$year, " . + $dir->getId() . ", " . + "'$tp_esc')"; + + if (pg_query($GLOBALS[PG_CONNECTION], $insert) === FALSE) { + die("Unable to insert new movie."); + } + + // Constructs the newly added movie. + $newMovie = new Movie($id, $title, $kind->getId(), $year, $dir->getId(), $tp); + + // Quick notice for debug + trigger_error("New movie inserted: " . $newMovie->toString(), E_USER_NOTICE); + + // Inserts the roles + foreach($actors as $actor) { + $actor->playIn($newMovie); + } + + return $newMovie; + } + + /** + * Constructs a movie from its data. + * + * @param integer $id the identifier of the movie. + * @param string $title the title of the movie. + * @param integer $kind_id the kind identifier of the movie. + * @param integer $year the year of the movie. + * @param integer $dir_id the director of the movie. + * @param string $tp the text preview of the movie. + * @access private + */ + function Movie($id, $title, $kind_id, $year, $dir_id, $tp) { + $this->id = $id; + $this->title = $title; + $this->kind_id = $kind_id; + $this->year = $year; + $this->dir_id = $dir_id; + $this->text_preview = $tp; + $this->actors = NULL; + } + + + /** + * Returns the movie having the wanted identifier. + * + * @param Director $dir the wanted identifier. + * @return the wanted movie + * @access public + * @static + */ + function getMovieById($movie_id) { + $query = "SELECT numf, titre, numg, annee, numr, resume + FROM film WHERE numf = " . $movie_id; + + $res = pg_query($GLOBALS[PG_CONNECTION], $query); + if ($res === FALSE) { + die("Unable to list movies."); + } + + // Does the movie exist in the database ? + $num = pg_num_rows($res); + if ($num == 1) { + // Yes + $row = pg_fetch_row($res); + $name = $row[0]; + // creates the object + $movie = new Movie($row[0], $row[1], $row[2], $row[3], $row[4], $row[5]); + } else if ($num == 0) { + // No, return NULL + $movie = NULL; + } + + return $movie; + } + + /** + * Returns the movies having the wanted relase date. + * + * @param year. th ewanted year + * @return array an array of movies. + * @access public + * @static + */ + function getMoviesOfYear($year) { + $arr = array(); + + $query = "SELECT numf, titre, numg, annee, numr, resume + FROM film WHERE annee = $year ORDER BY titre ASC"; + + $res = pg_query($GLOBALS[PG_CONNECTION], $query); + if ($res === FALSE) { + die("Unable to list movies."); + } + + // fetch rows + while (($row = pg_fetch_row($res)) !== FALSE) { + // populate array + $arr[] = new Movie($row[0], $row[1], $row[2], $row[3], + $row[4], $row[5]); + } + + return $arr; + } + + /** + * Returns the movies having the wanted kind identifier. + * + * @param kind_id the wanted kind identifier + * @param sort_type how to sort: 0 => ASC title, 1 => DSC year + * @return array an array of movies. + * @access public + * @static + */ + function getMoviesOfKind($kind_id, $sort_type = 0) { + $arr = array(); + + $query = "SELECT numf, titre, numg, annee, numr, resume + FROM film WHERE numg = $kind_id ORDER BY "; + + + switch ($sort_type) { + case 1: + $query = $query . "annee DESC;"; + break; + default: + $query = $query . "titre ASC;"; + break; + } + + + $res = pg_query($GLOBALS[PG_CONNECTION], $query); + if ($res === FALSE) { + die("Unable to list movies."); + } + + // fetch rows + while (($row = pg_fetch_row($res)) !== FALSE) { + // populate array + $arr[] = new Movie($row[0], $row[1], $row[2], $row[3], + $row[4], $row[5]); + } + + return $arr; + } + + /** + * Returns the movies having the wanted director. + * + * @param director_id the director identifier + * @return array an array of movies. + * @access public + * @static + */ + function getMoviesOfDirector($director_id) { + $arr = array(); + + $query = "SELECT numf, titre, numg, annee, numr, resume + FROM film WHERE numr = $director_id ORDER BY titre ASC"; + + $res = pg_query($GLOBALS[PG_CONNECTION], $query); + if ($res === FALSE) { + die("Unable to list movies."); + } + + // fetch rows + while (($row = pg_fetch_row($res)) !== FALSE) { + // populate array + $arr[] = new Movie($row[0], $row[1], $row[2], $row[3], + $row[4], $row[5]); + } + + return $arr; + } + + /** + * Returns the movies in which the wanted actor play. + * + * @param actor_id the wanted actor identifier + * @return array an array of movies. + * @access public + * @static + */ + function getMoviesWithActor($actor_id) { + $arr = array(); + + $query = "SELECT f.numf, f.titre, f.numg, f.annee, f.numr, f.resume + FROM film f INNER JOIN role r ON f.numf = r.numf WHERE numc = $actor_id ORDER BY titre ASC"; + + $res = pg_query($GLOBALS[PG_CONNECTION], $query); + if ($res === FALSE) { + die("Unable to list movies."); + } + + // fetch rows + while (($row = pg_fetch_row($res)) !== FALSE) { + // populate array + $arr[] = new Movie($row[0], $row[1], $row[2], $row[3], + $row[4], $row[5]); + } + + return $arr; + } + + /** + * Returns the movies with title matching the given parameter + * + * @param title_part a search criteria based on a part of the title + * @return array an array of movies. + * @access public + * @static + */ + function getMoviesWithTitleMatching($title_part) { + $arr = array(); + + $query = "SELECT numf, titre, numg, annee, numr, resume + FROM film WHERE upper(titre) LIKE upper('%" . pg_escape_string($title_part) . "%') ORDER BY titre ASC"; + + + $res = pg_query($GLOBALS[PG_CONNECTION], $query); + if ($res === FALSE) { + die("Unable to list movies."); + } + + // fetch rows + while (($row = pg_fetch_row($res)) !== FALSE) { + // populate array + $arr[] = new Movie($row[0], $row[1], $row[2], $row[3], + $row[4], $row[5]); + } + + return $arr; + } + + + /** + * Returns the list of actors who appears in this movie + * This method is a lazy initialization of the actors field + * + * @return actors list + */ + function getActorsList() { + if ($this->actors == NULL) { + $this->actors = array(); + + $query = "SELECT c.numc, c.identc + FROM com c INNER JOIN role r ON c.numc = r.numc WHERE r.numf = $this->id ORDER BY c.identc ASC"; + + + $res = pg_query($GLOBALS[PG_CONNECTION], $query); + if ($res === FALSE) { + die("Unable to list actors."); + } + + // fetch rows + while (($row = pg_fetch_row($res)) !== FALSE) { + // populate array + $this->actors[] = new Actor($row[0], $row[1]); + } + } + + return $this->actors; + } + + /** + * Returns the ID of this movie. + * + * @return integer the id of this movie. + * @access public + */ + function getId() { + return $this->id; + } + + /** + * Returns the title of the movie. + * + * @return string the title of the movie. + * @access public + */ + function getTitle() { + return $this->title; + } + + /** + * Returns the identifier of the kind related to this movie. + * + * @return integer the identifier of kind related to this movie. + * @access public + */ + function getKindId() { + return $this->kind_id; + } + + /** + * Returns the year of the movie. + * + * @return integer the year of the movie. + * @access public + */ + function getYear() { + return $this->year; + } + + /** + * Returns the identifier of the director related to this movie. + * + * @return integer the id of the director related to this movie. + * @access public + */ + function getDirId() { + return $this->dir_id; + } + + /** + * Returns the text preview of this movie. + * + * @return integer the text preview of this movie. + * @access public + */ + function getTextPreview() { + return $this->text_preview; + } + + /** + * Returns the string representation of this movie. + * + * @return string the string representation of this movie. + * @access public + */ + function toString() { + return "Movie(" . $this->getId() . ", " . + $this->getTitle() . ', ' . + $this->getKindId() . ', ' . + $this->getYear() . ', ' . + $this->getDirId() . ')'; + } +} +?> diff --git a/DB/TP2_ServeurWeb/inc/footer.inc.xhtml b/DB/TP2_ServeurWeb/inc/footer.inc.xhtml new file mode 100755 index 0000000..b4d7653 --- /dev/null +++ b/DB/TP2_ServeurWeb/inc/footer.inc.xhtml @@ -0,0 +1,5 @@ +

+ + Valid XHTML 1.1 + +

\ No newline at end of file diff --git a/DB/TP2_ServeurWeb/inc/util.inc.php b/DB/TP2_ServeurWeb/inc/util.inc.php new file mode 100755 index 0000000..d415f0c --- /dev/null +++ b/DB/TP2_ServeurWeb/inc/util.inc.php @@ -0,0 +1,149 @@ + + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + + /** + * Creates and fill the table "numero" with pairs of table name and + * first identifier available. + * + */ +function createTableNum() { + if (!tableExists($GLOBALS[PG_CONNECTION], 'numero', PG_SCHEMA)) { + $query = 'CREATE TABLE numero ( + nom_table VARCHAR(255) PRIMARY KEY, + numero INTEGER NOT NULL DEFAULT 0);'; + + $res = pg_query($GLOBALS[PG_CONNECTION], $query); + if ($res === FALSE) { + // filling of the table "numero" + $liste_table = array("com" => "numc", "film" => "numf", "genre" => "numg", "realis" => "numr"); + foreach($liste_table as $key_lt => $value_lt) { + $res2 = pg_query($con, "SELECT max($value_lt) + 1 FROM $key_lt;"); + $row = pg_fetch_row($res2); + pg_query($GLOBALS[PG_CONNECTION], "INSERT INTO numero VALUES('$key_lt', $row[0]);"); + } + } else { + echo(pg_last_error($con)); + } + } +} + + +/** + * Tests if the given table name match an existant exists + * + * @param table checked table + * @param schema the schema in wich is search the table + * @return bool + */ +function tableExists($table, $schema) { + $query = "SELECT table_name + FROM information_schema.tables + WHERE table_type = 'BASE TABLE' + AND table_name = '$table' + AND table_schema = '$schema';"; + + $res = pg_query($GLOBALS[PG_CONNECTION], $query); + $num = pg_num_rows($res); + + return $num > 0; +} + + +/** + * Return the next availlable key for the given table then + * increment the numero table, so the next call will + * return a different key (atomic transaction) + * + * @param table the table you want a key for + * @return + */ +function getNextKey($table) { + + // begin the transaction + $query = "BEGIN;"; + pg_query($GLOBALS[PG_CONNECTION], $query); + + // retrieve the key and get a lock on the concerned row + $query = "SELECT numero FROM " . PG_SCHEMA . ".numero WHERE nom_table = '$table' FOR UPDATE;"; + $res = pg_query($GLOBALS[PG_CONNECTION], $query); + if($row = pg_fetch_row($res)) { + $key = $row[0]; + } else { + echo(pg_last_error($GLOBALS[PG_CONNECTION])); + // cancel the transaction + $query = "ROLLBACK;"; + pg_query($GLOBALS[PG_CONNECTION], $query); + return 0; + } + + $new_key = $key + 1; + + // update the key + $query = "UPDATE " . PG_SCHEMA . ".numero SET numero = $new_key WHERE nom_table = '$table';"; + pg_query($GLOBALS[PG_CONNECTION], $query); + + // end the transaction and released + $query = "commit;"; + pg_query($GLOBALS[PG_CONNECTION], $query); + + return $key; +} + + +/** + * This aim to import new movies entries from a text file (utf8) + * The layout of the text file is as follow: + * title | kind | date | director | text preview (| actors)* + * + * @param fileName the name of the file to import data from + */ +function importNewMovies($fileName) { + // opening the file + $filedes = fopen($fileName, 'r') + or die("Unable to open file '$fileName'"); + + // read each line of the file + while (! feof($filedes)) { + $buffer = fgets($filedes, 2048); + + // retrieve all tokens + $data = explode('|', $buffer); + + // partial record ? skip ! + if (sizeof($data) < 5) + continue; + + // get actors + $nb_actors = sizeof($data) - 5; + $actors = array(); + + for ($i = 0; $i < $nb_actors; $i++) { + $actors[$i] = Actor::newActor($data[$i + 5]); + } + + $kind = Kind::newKind($data[1]); + $director = Director::newDirector($data[3]); + + // Movie ($conection, $title, $kind, $annee, $director, $text_preview, actors_array) + // Create a new Movie, object. If the movie doesn't exist in the database, it is inserted + Movie::newMovie($data[0], $kind, $data[2], $director, $data[4], $actors); + + } + + // close the file + fclose($filedes); +} + +?> diff --git a/DB/TP2_ServeurWeb/inc/util_xhtml.inc.php b/DB/TP2_ServeurWeb/inc/util_xhtml.inc.php new file mode 100755 index 0000000..0c2da67 --- /dev/null +++ b/DB/TP2_ServeurWeb/inc/util_xhtml.inc.php @@ -0,0 +1,103 @@ + + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/** + * Write a link pointing towards the actor details page + * + * @param actor the actor + * @param listElement if true, write the link as a list element + */ +function actorToLink($actor, $listElement = FALSE) { + $actor_name = $actor->getName(); + $actor_name_xhtml = htmlspecialchars($actor_name); + $actor_id = $actor->getId(); + + if ($listElement) { + echo("
  • $actor_name_xhtml
  • "); + } else { + echo("$actor_name_xhtml"); + } +} + +/** + * Write a link pointing towards the movie details page + * + * @param movie the movie + * @param listElement if true, write the link as a list element + */ +function movieToLink($movie, $listElement = FALSE) { + $movie_title = $movie->getTitle(); + $movie_title_xhtml = htmlspecialchars($movie_title); + $movie_id = $movie->getId(); + + if ($listElement) { + echo("
  • $movie_title_xhtml
  • "); + } else { + echo("$movie_title_xhtml"); + } +} + +/** + * Write a link pointing towards the director details page + * + * @param director the director + * @param listElement if true, write the link as a list element + */ +function directorToLink($director, $listElement = FALSE) { + $director_name = $director->getName(); + $director_name_xhtml = htmlspecialchars($director_name); + $director_id = $director->getId(); + + if ($listElement) { + echo("
  • $director_name_xhtml
  • "); + } else { + echo("$director_name_xhtml"); + } +} + +/** + * Write a link pointing towards the kind details page + * + * @param kind the kind + * @param listElement if true, write the link as a list element + */ +function kindToLink($kind, $listElement = FALSE) { + $kind_name = $kind->getName(); + $kind_name_xhtml = htmlspecialchars($kind_name); + $kind_id = $kind->getId(); + + if ($listElement) { + echo("
  • $kind_name_xhtml
  • "); + } else { + echo("$kind_name_xhtml"); + } +} + +/** + * Write a link pointing towards the year details page + * + * @param year the year + * @param listElement if true, write the link as a list element + */ +function yearToLink($year, $listElement = FALSE) { + + if ($listElement) { + echo("
  • $year
  • "); + } else { + echo("$year"); + } +} + +?> diff --git a/DB/TP2_ServeurWeb/index.php b/DB/TP2_ServeurWeb/index.php new file mode 100755 index 0000000..96a12b8 --- /dev/null +++ b/DB/TP2_ServeurWeb/index.php @@ -0,0 +1,97 @@ + + + + + + + + + TP2 de Base de données: base de données cinéma + + + + +

    +TP2: Serveur Web +

    + +

    +Introduction +

    + +

    +Ces quelques pages sont écrites en PHP 4, version qui bénéficie d'une approche que l'on peut qualifier "d'orientée objet", dans notre cas largement utilisée. Elle permettent la consultation de la base de données cinéma qui elle est prise en charge par un serveur PostgreSQL. Veuillez s'il vous plait excuser la présentation particulièrement spartiate de l'ensemble, les auteurs désirant respecter la norme XHTML 1.1 dans un but purement pédagogique, choix qui implique de faire la mise en forme à l'aide de feuille de style externes répondant au doux nom de CSS, ce qui ne fait pas partie (pour l'instant) de leurs compétences. +

    + +

    +Importation de données +

    + +

    +TODO +

    + +

    +Consultation de données +

    + + + +

    +Catalogue des films +

    + + + + + + + + diff --git a/DB/TP2_ServeurWeb/kindDetails.php b/DB/TP2_ServeurWeb/kindDetails.php new file mode 100755 index 0000000..d15dcd9 --- /dev/null +++ b/DB/TP2_ServeurWeb/kindDetails.php @@ -0,0 +1,59 @@ + + + + + + + + + + Détail d'un genre + + + + getName()); + } + } + ?> + +

    + +

    + +

    Films de ce genre:

    + +
      + getMoviesList(); + + foreach ($movies as $movie) { + movieToLink($movie, TRUE); + } + + + ?> +
    + + + + + + diff --git a/DB/TP2_ServeurWeb/listMovieByDirector.php b/DB/TP2_ServeurWeb/listMovieByDirector.php new file mode 100755 index 0000000..d2cc73b --- /dev/null +++ b/DB/TP2_ServeurWeb/listMovieByDirector.php @@ -0,0 +1,87 @@ + + + + + + + + + + + Liste par réalisateur + + + + + +

    Liste par réalisateur

    + +

    Formulaire pour obtenir la liste des films d'un réalisateur donné

    + +
    +
    +

    + +

    + +
    + +getMoviesList(); + echo("

    Films réalisés par: "); + directorToLink($director); + echo("

      "); + + if (count($movies) > 0) { + foreach ($movies as $movie) { + movieToLink($movie, TRUE); + } + } else { + echo('
    • Aucun film trouvé
    • '); + } + + echo("
    "); + } + } +?> + + + + + diff --git a/DB/TP2_ServeurWeb/listMovieByKind.php b/DB/TP2_ServeurWeb/listMovieByKind.php new file mode 100755 index 0000000..14943d2 --- /dev/null +++ b/DB/TP2_ServeurWeb/listMovieByKind.php @@ -0,0 +1,87 @@ + + + + + + + + + + + Liste par genre + + + + + +

    Liste par genre

    + +

    Formulaire pour obtenir la liste des films d'un genre donné

    + +
    +
    +

    + +

    + +
    + +getMoviesList(); + echo("

    Films trouvés pour le genre: "); + kindToLink($kind); + echo("

      "); + + if (count($movies) > 0) { + foreach ($movies as $movie) { + movieToLink($movie, TRUE); + } + } else { + echo('
    • Aucun film trouvé
    • '); + } + + echo("
    "); + } + } +?> + + + + + diff --git a/DB/TP2_ServeurWeb/listMovieWithActor.php b/DB/TP2_ServeurWeb/listMovieWithActor.php new file mode 100755 index 0000000..7806acd --- /dev/null +++ b/DB/TP2_ServeurWeb/listMovieWithActor.php @@ -0,0 +1,87 @@ + + + + + + + + + + + Liste par acteur + + + + + +

    Liste des films ou l'acteur précisé tient un role

    + +

    Formulaire pour obtenir la liste des films dans lequel joue le comédien donné

    + +
    +
    +

    + +

    + +
    + +getMoviesList(); + echo("

    Films dans lesquels à joué : "); + actorToLink($actor); + echo("

      "); + + if (count($movies) > 0) { + foreach ($movies as $movie) { + movieToLink($movie, TRUE); + } + } else { + echo('
    • Aucun film trouvé
    • '); +k } + + echo("
    "); + } + } +?> + + + + + diff --git a/DB/TP2_ServeurWeb/movieDetails.php b/DB/TP2_ServeurWeb/movieDetails.php new file mode 100755 index 0000000..613e5b1 --- /dev/null +++ b/DB/TP2_ServeurWeb/movieDetails.php @@ -0,0 +1,111 @@ + + + + + + + + + + Détails d'un film + + + + getTitle()); + } + } + ?> + +

    + +

    + +

    Année de sortie:

    +

    + getYear(); + yearToLink($year); + ?> +

    + +

    Genre:

    +

    + getKindId(); + $kind = Kind::getKindById($kindId); + kindToLink($kind); + ?> +

    + +

    Réalisateur:

    +

    + getDirId(); + $director = Director::getDirectorById($dir_id); + if ($director == NULL) { + echo(" Réalisateur non trouvé!!"); + } else { + directorToLink($director); + } + ?> +

    + +

    Résumé:

    +

    + getTextPreview(); + + if ($resume <> NULL) { + $resume_xhtml = htmlspecialchars($resume); + echo($resume_xhtml); + } else { + echo('résumé non disponible'); + } + + ?> +

    + +

    Liste des acteurs:

    + +
      + getActorsList(); + + if (count($actors) > 0) { + foreach ($actors as $actor) { + actorToLink($actor, TRUE); + } + } else { + echo('
    • Aucun acteur trouvé
    • '); + } + + + ?> +
    + + + + + + diff --git a/DB/TP2_ServeurWeb/movie_catalog.php b/DB/TP2_ServeurWeb/movie_catalog.php new file mode 100755 index 0000000..59ee2f9 --- /dev/null +++ b/DB/TP2_ServeurWeb/movie_catalog.php @@ -0,0 +1,49 @@ + + + + + + + + + + + Catalogue des films + + + + + +

    Catalogue des films

    + +

    Catalogue de l'ensemble des films présents dant la base de données Cinéma, classés par genre, et listés par année de sortie décroissante

    + + getName()); + echo("

    $kind_name

      "); + $kind_id = $kind->getId(); + $movies = $kind->getMoviesList(1); + foreach ($movies as $movie) { + movieToLink($movie, TRUE); + } + echo("
    "); + } + ?> + + + + + diff --git a/DB/TP2_ServeurWeb/yearDetails.php b/DB/TP2_ServeurWeb/yearDetails.php new file mode 100755 index 0000000..52df02b --- /dev/null +++ b/DB/TP2_ServeurWeb/yearDetails.php @@ -0,0 +1,63 @@ + + + + + + + + + + Liste des films par année de sortie + + + + + +

    + +

    + +

    Films de ce genre:

    + +
      + 0) { + foreach ($movies as $movie) { + movieToLink($movie, TRUE); + } + } else { + echo("
    • Aucun film sorti en $year n'est diponible
    • "); + } + } + + ?> +
    + + + + + + diff --git a/GL/BarrierePeage/BornePéagepasser.eps b/GL/BarrierePeage/BornePéagepasser.eps new file mode 100755 index 0000000..75c6507 --- /dev/null +++ b/GL/BarrierePeage/BornePéagepasser.eps @@ -0,0 +1,1669 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%BoundingBox: 52 20 543 822 +%%Creator: FreeHEP Graphics2D Driver +%%Producer: org.freehep.graphicsio.ps.PSGraphics2D Revision: 1.20 +%%For: +%%Title: +%%CreationDate: lundi 2 janvier 2006 16 h 22 CET +%%LanguageLevel: 3 +%%EndComments +%%BeginProlog +100 dict dup begin + +% +% File: org/freehep/graphicsio.ps/PSProlog.txt +% Author: Charles Loomis +% + +% Redefinitions which save some space in the output file. These are also +% the same as the PDF operators. +/q {gsave} def +/Q {grestore} def + +/n {newpath} def +/m {moveto} def +/l {lineto} def +/c {curveto} def +/h {closepath} def + +/re {4 -2 roll moveto + dup 0 exch rlineto exch 0 rlineto + neg 0 exch rlineto closepath} def + +/f {fill} def +/f* {eofill} def +/F {gsave vg&FC fill grestore} def +/F* {gsave vg&FC eofill grestore} def + +/s {closepath stroke} def +/S {stroke} def + +/b {closepath gsave vg&FC fill grestore + gsave stroke grestore newpath} def +/B {gsave vg&FC fill grestore gsave stroke grestore newpath} def +/b* {closepath gsave vg&FC eofill grestore + gsave stroke grestore newpath} def +/B* {gsave vg&FC eofill grestore gsave stroke grestore newpath} def + +/g {1 array astore /vg&fcolor exch def} def +/G {setgray} def +/k {4 array astore /vg&fcolor exch def} def +/K {setcmykcolor} def +/rg {3 array astore /vg&fcolor exch def} def +/RG {setrgbcolor} def + +% Initialize the fill color. +0 0 0 rg + +/vg&FC {mark vg&fcolor aload pop + counttomark 1 eq {G} if + counttomark 3 eq {RG} if + counttomark 4 eq {K} if + cleartomark } def + +/vg&DFC {/vg&fcolor exch def} def + +/vg&C {mark exch aload pop + counttomark 1 eq {G} if + counttomark 3 eq {RG} if + counttomark 4 eq {K} if + cleartomark } def + +/w {setlinewidth} def +/j {setlinejoin} def +/J {setlinecap} def +/M {setmiterlimit} def +/d {setdash} def +/i {setflat} def + +/W {clip} def +/W* {eoclip} def + +% Setup the default graphics state. +% (black; 1 pt. linewidth; miter join; butt-ends; solid) +/defaultGraphicsState {0 g 1 w 0 j 0 J [] 0 d} def + +% Emulation of the rectangle operators for PostScript implementations +% which do not implement all Level 2 features. This is an INCOMPLETE +% emulation; only the "x y width height rect..." form is emulated. +/*rf {gsave newpath re fill grestore} def +/*rs {gsave newpath re stroke grestore} def +/*rc {newpath re clip} def +/rf /rectfill where {pop /rectfill}{/*rf} ifelse load def +/rs /rectstroke where {pop /rectstroke}{/*rs} ifelse load def +/rc /rectclip where {pop /rectclip}{/*rc} ifelse load def + +% Emulation of the selectfont operator. This includes a 20% increase in +% the fontsize which is necessary to get sizes similar to the Java fonts. +/*sf {exch findfont exch + dup type /arraytype eq {makefont}{scalefont} ifelse setfont} bind def +/sf /selectfont where {pop {1.2 mul selectfont}}{{1.2 mul *sf}} ifelse def + +% Special version of stroke which allows the dash pattern to continue +% across path segments. (This may be needed for PostScript although +% modern printers seem to do this correctly.) +/vg&stroke { + currentdash pop length 0 eq + {stroke} + { + currentdash /vg&doffset exch def pop + flattenpath + {m vg&resetdash} + {2 copy + currentpoint + 3 -1 roll sub dup mul + 3 1 roll sub dup mul + add sqrt + 3 1 roll l + currentdash 3 -1 roll add setdash} + {} + {h vg&resetdash} + pathforall + stroke + vg&resetdash + } ifelse +} def +/vg&resetdash {currentdash pop vg&doffset setdash} def + +% Initialize variables for safety. +/delta 0 def +/xv 0 def /yv 0 def /width 0 def /height 0 def + +% Initialize to portrait INTERNATIONAL (Letter-height, A4-width) page. +/pw 595 def /ph 791 def /po true def /ftp false def + +% Initialize margins to 20 points. +/ml 20 def /mr 20 def /mt 20 def /mb 20 def + +% Temporary matrices. +/smatrix 0 def /nmatrix 0 def + +% set page size (usage: setpagesize) +/setpagesize {/ph exch def /pw exch def} def + +% set page orientation (usage: portrait or landscape) +/portrait {/po true def} def +/landscape {/po false def} def + +% force natural size for image (usage: naturalsize) +/naturalsize {/ftp false def} def + +% resize image to fill page (usage: fittopage) +/fittopage {/ftp true def} def + +% set margins of the page (usage: setmargins) +/setmargins {/mr exch def /mt exch def /mb exch def /ml exch def} def + +% set the graphic's size (usage: setsize) +/setsize {/gh exch def /gw exch def} def + +% set the graphic's origin (usage: setorigin) +/setorigin {/gy exch def /gx exch def} def + +% calculate image center +/imagecenter {pw ml sub mr sub 2 div ml add + ph mt sub mb sub 2 div mb add} def + +% calculate the necessary scaling +/imagescale {po {gw}{gh} ifelse pw ml sub mr sub div + po {gh}{gw} ifelse ph mt sub mb sub div + 2 copy lt {exch} if pop + ftp not {1 2 copy lt {exch} if pop} if + 1 exch div /sfactor exch def + /gw gw sfactor mul def /gh gh sfactor mul def} def + +% calculate image origin +/imageorigin {pw ml sub mr sub 2 div ml add + po {gw}{gh} ifelse 2 div sub + ph mt sub mb sub 2 div mb add + po {gh}{gw} ifelse 2 div po {add}{sub} ifelse} def + +% calculate the clipping origin +/cliporigin {pw ml sub mr sub 2 div ml add + po {gw}{gh} ifelse 2 div sub floor + ph mt sub mb sub 2 div mb add + po {gh}{gw} ifelse 2 div sub floor} def + +% Set the clipping region to the bounding box. +/cliptobounds {cliporigin po {gw}{gh} ifelse 1 add + po {gh}{gw} ifelse 1 add rc} def + +% set the base transformation matrix (usage: setbasematrix) +/setbasematrix {imageorigin translate + po {0}{90} ifelse rotate + sfactor sfactor neg scale + /defaultmatrix matrix currentmatrix def} def + +% The lower-right bias in drawing 1 pt. wide lines. +/bias {q 0.5 0.5 translate} def +/unbias {Q} def + +% Draw a line. (x0 y0 x1 y1 line) +/L {bias n m l S unbias} def + +% Polyline primitive. +/polyline {n m 1 exch 1 exch + {pop currentfile token pop currentfile token pop l} for + } def + +% Draw a polyline (n x0 y0 OPL x1 y1 x2 y2 ... ... xn yn) +/OPL {bias polyline S unbias} def + +% Draw a closed polyline (n x0 y0 CPL x1 y1 x2 y2 ... ... xn yn) +/CPL {bias polyline s unbias} def + +% Draw a filled polyline (n x0 y0 FPL x1 y1 x2 y2 ... ... xn yn) +/FPL {polyline h f*} def + +% Draw an oval. (x y w h OVL) +/OVL {matrix currentmatrix /smatrix exch def + /height exch def /width exch def + /yv exch def /xv exch def + width 2 div xv add height 2 div yv add translate + width currentlinewidth sub 2 div + height currentlinewidth sub 2 div neg + scale n 0 0 1 5 -2 roll arc + smatrix setmatrix S} def + +% Draw a filled oval. (x y w h FOVL) +/FOVL {matrix currentmatrix /smatrix exch def + /height exch def /width exch def + /yv exch def /xv exch def + width 2 div xv add height 2 div yv add translate + width 2 div + height 2 div neg + scale n 0 0 m 0 0 1 5 -2 roll arc + h smatrix setmatrix f} def + +% Draw a rounded rectangle. (x y w h arcwidth archeight RREC) +/RREC {matrix currentmatrix /smatrix exch def + 2 div /ah exch def + 2 div /aw exch def + /height exch def /width exch def + /yv exch def /xv exch def + aw ah scale matrix + currentmatrix /nmatrix exch def + smatrix setmatrix + n xv width add aw sub yv m + nmatrix setmatrix + currentpoint exch 1 add exch + currentpoint 1 add exch 1 add exch + 1 arct smatrix setmatrix + xv width add yv height add ah sub l + nmatrix setmatrix + currentpoint 1 add + currentpoint exch 1 sub exch 1 add + 1 arct smatrix setmatrix + xv aw add yv height add l + nmatrix setmatrix + currentpoint exch 1 sub exch + currentpoint exch 1 sub exch 1 sub + 1 arct smatrix setmatrix + xv yv ah add l + nmatrix setmatrix + currentpoint 1 sub + currentpoint exch 1 add exch 1 sub + 1 arct smatrix setmatrix + s} def + +% Draw a filled rounded rectangle. (x y w h arcwidth archeight FRREC) +/FRREC{matrix currentmatrix /smatrix exch def + 2 div /ah exch def + 2 div /aw exch def + /height exch def /width exch def + /yv exch def /xv exch def + aw ah scale matrix + currentmatrix /nmatrix exch def + smatrix setmatrix + n xv width add aw sub yv m + nmatrix setmatrix + currentpoint exch 1 add exch + currentpoint 1 add exch 1 add exch + 1 arct smatrix setmatrix + xv width add yv height add ah sub l + nmatrix setmatrix + currentpoint 1 add + currentpoint exch 1 sub exch 1 add + 1 arct smatrix setmatrix + xv aw add yv height add l + nmatrix setmatrix + currentpoint exch 1 sub exch + currentpoint exch 1 sub exch 1 sub + 1 arct smatrix setmatrix + xv yv ah add l + nmatrix setmatrix + currentpoint 1 sub + currentpoint exch 1 add exch 1 sub + 1 arct smatrix setmatrix + h f} def + +% Draw a string. (string x y STR) +/STR {q m 1 -1 scale recshow Q} def + +% Define basic plot symbols. +/xys {/siz exch def /yv exch def /xv exch def} def +/hline {xys n xv siz 2. div sub yv m siz 0 rlineto S} def +/vline {xys n xv yv siz 2. div sub m 0 siz rlineto S} def +/plus {xys n xv yv siz 2. div sub m 0 siz rlineto + xv siz 2. div sub yv m siz 0 rlineto S} def +/dot {n 2. div 0 360 arc s} def +/fdot {n 2. div 0 360 arc h f} def +/box {xys n xv siz 2 sqrt div 2 div sub yv siz 2 sqrt div 2 div sub + siz 2 sqrt div dup rs} def +/fbox {xys n xv siz 2 sqrt div 2 div sub yv siz 2 sqrt div 2 div sub + siz 2 sqrt div dup rf} def +/tridn{xys n xv yv siz 3 sqrt div add m + siz 2. div neg 3 sqrt 2. div siz mul neg rlineto + siz 0 rlineto s} def +/ftridn{xys n xv yv siz 3 sqrt div add m + siz 2. div neg 3 sqrt 2. div siz mul neg rlineto + siz 0 rlineto h f} def + +% Symbols defined in terms of the others. +/star {3 copy cross plus} def +/cross {xys q xv yv translate 45 rotate 0 0 siz plus Q} def +/diamond {xys q xv yv translate 45 rotate 0 0 siz box Q} def +/fdiamond {xys q xv yv translate 45 rotate 0 0 siz fbox Q} def +/triup {xys q xv yv translate 180 rotate 0 0 siz tridn Q} def +/ftriup {xys q xv yv translate 180 rotate 0 0 siz ftridn Q} def + +% Define the composite fonts used to print Unicode strings. +% Undefine particular values in an encoding array. +/vg&undef { {exch dup 3 -1 roll /.notdef put} forall } def +/vg&redef { {3 -1 roll dup 4 2 roll put} forall } def + +% usage: key encoding basefontname vg&newbasefont font +/vg&newbasefont { +findfont dup length dict copy + begin + currentdict /FID undef + /Encoding exch def + dup /FontName exch def + currentdict + end +definefont +} def + +% usage: key encoding basefontname vg&newskewedbasefont font +/vg&newskewedbasefont { +findfont dup length dict copy + begin + currentdict /FID undef + /Encoding exch def + dup /FontName exch def + exch FontMatrix exch matrix concatmatrix /FontMatrix exch def + currentdict + end +definefont +} def + +% usage: basekey suffix vg&nconcat name +/vg&nconcat { + 2 {dup length string cvs exch} repeat + dup length 3 -1 roll dup length 3 -1 roll add string + dup 0 4 -1 roll dup length 5 1 roll putinterval + dup 4 -2 roll exch putinterval cvn +} def + +%usage: fontname vg&skewmatrix matrix +/vg&skewmatrix { +findfont dup /FontInfo known + { + /FontInfo get dup /ItalicAngle known + { + [ 1 0 4 -1 roll /ItalicAngle get neg dup sin exch cos div 1 0 0 ] + } + {pop matrix} ifelse + } + {pop matrix} ifelse +} def + +% usage: newfontname basefontname vg&newcompositefont -- +/vg&newcompositefont { +/vg&fstyle exch def +/vg&bfont exch def +/vg&fname exch def +<< +/FontStyleBits vg&fstyle +/FontType 0 +/FontMatrix matrix +/FontName vg&fname +/FMapType 2 +/Encoding [ 0 1 255 {pop 6} for ] + dup 16#00 0 put % Latin + dup 16#03 1 put % Greek + dup 16#20 2 put % Punctuation + dup 16#21 3 put % Arrows + dup 16#22 4 put % MathOps + dup 16#27 5 put % Dingbats + +/FDepVector [ +vg&bfont /-UC-Latin vg&nconcat UCLatinEncoding +vg&bfont vg&newbasefont + +vg&bfont vg&skewmatrix +vg&bfont /-UC-Greek vg&nconcat UCGreekEncoding +/Symbol vg&newskewedbasefont + +vg&bfont /-UC-Punctuation vg&nconcat UCPunctuationEncoding +vg&bfont vg&newbasefont + +/Arrows-UC findfont +/MathOps-UC findfont +/Dingbats-UC findfont +/Undefined-UC findfont ] +>> +vg&fname exch definefont pop +} def + +% Null encoding vector (all elements set to .notdef) +/NullEncoding [ 256 {/.notdef} repeat ] def + +% Unicode Latin encoding (unicode codes \u0000-\u00ff) +/UCLatinEncoding + ISOLatin1Encoding dup length array copy + dup 16#60 /grave put + [ 16#90 16#91 16#92 16#93 16#94 16#95 16#96 + 16#97 16#98 16#9a 16#9b 16#9d 16#9e 16#9f + ] vg&undef + def + +% Unicode Greek encoding (unicode codes \u0370-\u03ff) +/UCGreekEncoding + NullEncoding dup length array copy + << 16#91 /Alpha 16#92 /Beta 16#93 /Gamma 16#94 /Delta + 16#95 /Epsilon 16#96 /Zeta 16#97 /Eta 16#98 /Theta + 16#99 /Iota 16#9a /Kappa 16#9b /Lambda 16#9c /Mu + 16#9d /Nu 16#9e /Xi 16#9f /Omicron 16#a0 /Pi + 16#a1 /Rho 16#a3 /Sigma 16#a4 /Tau 16#a5 /Upsilon + 16#a6 /Phi 16#a7 /Chi 16#a8 /Psi 16#a9 /Omega + 16#b1 /alpha 16#b2 /beta 16#b3 /gamma 16#b4 /delta + 16#b5 /epsilon 16#b6 /zeta 16#b7 /eta 16#b8 /theta + 16#b9 /iota 16#ba /kappa 16#bb /lambda 16#bc /mu + 16#bd /nu 16#be /xi 16#bf /omicron 16#c0 /pi + 16#c1 /rho 16#c2 /sigma1 16#c3 /sigma 16#c4 /tau + 16#c5 /upsilon 16#c6 /phi1 16#c7 /chi 16#c8 /psi + 16#c9 /omega 16#7e /semicolon 16#87 /dotmath 16#d1 /theta1 + 16#d2 /Upsilon1 16#d5 /phi 16#d6 /omega1 + >> vg&redef + def + +% Unicode punctuation encoding (unicode codes \u2000-\u206f) +/UCPunctuationEncoding + NullEncoding dup length array copy + << 16#10 /hyphen 16#11 /hyphen 16#12 /endash + 16#13 /emdash 16#18 /quoteleft 16#19 /quoteright + 16#1a /quotesinglbase 16#1b /quotesingle 16#1c /quotedblleft + 16#1d /quotedblright 16#1e /quotedblbase 16#1f /quotedbl + 16#20 /dagger 16#21 /daggerdbl 16#22 /bullet + 16#24 /period 16#26 /ellipsis 16#27 /periodcentered + 16#30 /perthousand 16#44 /fraction + 16#70 /zerosuperior 16#74 /foursuperior 16#75 /fivesuperior + 16#76 /sixsuperior 16#77 /sevensuperior 16#78 /eightsuperior + 16#79 /ninesuperior 16#7b /hyphensuperior 16#7d /parenleftsuperior + 16#7e /parenrightsuperior + 16#80 /zeroinferior 16#84 /fourinferior 16#85 /fiveinferior + 16#81 /oneinferior 16#82 /twoinferior 16#83 /threeinferior + 16#86 /sixinferior 16#87 /seveninferior 16#88 /eightinferior + 16#89 /nineinferior 16#8b /hypheninferior 16#8d /parenleftinferior + 16#8e /parenrightinferior + >> vg&redef + def + +% Unicode mathematical operators encoding (unicode codes \u2200-\u22ff) +/UCMathOpsEncoding + NullEncoding dup length array copy + << 16#00 /universal 16#02 /partialdiff 16#03 /existential + 16#05 /emptyset 16#06 /Delta 16#07 /gradient + 16#08 /element 16#09 /notelement 16#0b /suchthat + 16#0f /product 16#11 /summation 16#12 /minus + 16#15 /fraction 16#17 /asteriskmath 16#19 /bullet + 16#1a /radical 16#1d /proportional 16#1e /infinity + 16#20 /angle 16#23 /bar 16#27 /logicaland + 16#28 /logicalor 16#29 /intersection 16#2a /union + 16#2b /integral 16#34 /therefore 16#36 /colon + 16#3c /similar 16#45 /congruent 16#48 /approxequal + 16#60 /notequal 16#61 /equivalence 16#64 /lessequal + 16#65 /greaterequal 16#82 /propersubset 16#83 /propersuperset + 16#86 /reflexsubset 16#87 /reflexsuperset 16#95 /circleplus + 16#97 /circlemultiply 16#a5 /perpendicular 16#03 /existential + 16#c0 /logicaland 16#c1 /logicalor 16#c2 /intersection + 16#c3 /union 16#c4 /diamond 16#c5 /dotmath + >> vg&redef + def + +% Unicode arrows encoding (unicode codes \u2190-\u21ff) +% Also includes those "Letterlike" unicode characters +% which are available in the symbol font. (unicode codes \u2100-\u214f) +/UCArrowsEncoding + NullEncoding dup length array copy + << 16#11 /Ifraktur 16#1c /Rfraktur 16#22 /trademarkserif + 16#35 /aleph + 16#90 /arrowleft 16#91 /arrowup 16#92 /arrowright + 16#93 /arrowdown 16#94 /arrowboth 16#d0 /arrowdblleft + 16#d1 /arrowdblup 16#d2 /arrowdblright 16#d3 /arrowdbldown + 16#d4 /arrowdblboth + >> vg&redef + def + +/ZapfDingbats findfont /Encoding get +dup length array copy /UCDingbatsEncoding exch def +16#20 1 16#7f { + dup 16#20 sub exch + UCDingbatsEncoding exch get + UCDingbatsEncoding 3 1 roll put +} for +16#a0 1 16#ff { + dup 16#40 sub exch + UCDingbatsEncoding exch get + UCDingbatsEncoding 3 1 roll put +} for +UCDingbatsEncoding [ 16#c0 1 16#ff {} for ] vg&undef +[ 16#00 16#05 16#0a 16#0b 16#28 16#4c 16#4e 16#53 16#54 16#55 16#57 16#5f + 16#60 16#68 16#69 16#6a 16#6b 16#6c 16#6d 16#6e 16#6f 16#70 16#71 16#72 + 16#73 16#74 16#75 16#95 16#96 16#97 16#b0 16#bf +] vg&undef pop + +% Define the base fonts which don't change. +/Undefined-UC NullEncoding /Helvetica vg&newbasefont pop +/MathOps-UC UCMathOpsEncoding /Symbol vg&newbasefont pop +/Arrows-UC UCArrowsEncoding /Symbol vg&newbasefont pop +/Dingbats-UC UCDingbatsEncoding /ZapfDingbats vg&newbasefont pop + +% Make the SansSerif composite fonts. +/SansSerif /Helvetica 16#00 vg&newcompositefont +/SansSerif-Bold /Helvetica-Bold 16#01 vg&newcompositefont +/SansSerif-Italic /Helvetica-Oblique 16#02 vg&newcompositefont +/SansSerif-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont + +% Make the Serif composite fonts. +/Serif /Times-Roman 16#00 vg&newcompositefont +/Serif-Bold /Times-Bold 16#01 vg&newcompositefont +/Serif-Italic /Times-Italic 16#02 vg&newcompositefont +/Serif-BoldItalic /Times-BoldItalic 16#03 vg&newcompositefont + +% Make the Monospaced composite fonts. +/Monospaced /Courier 16#00 vg&newcompositefont +/Monospaced-Bold /Courier-Bold 16#01 vg&newcompositefont +/Monospaced-Italic /Courier-Oblique 16#02 vg&newcompositefont +/Monospaced-BoldItalic /Courier-BoldOblique 16#03 vg&newcompositefont + +% Make the Dialog composite fonts. +/Dialog /Helvetica 16#00 vg&newcompositefont +/Dialog-Bold /Helvetica-Bold 16#01 vg&newcompositefont +/Dialog-Italic /Helvetica-Oblique 16#02 vg&newcompositefont +/Dialog-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont + +% Make the DialogInput composite fonts. +/DialogInput /Helvetica 16#00 vg&newcompositefont +/DialogInput-Bold /Helvetica-Bold 16#01 vg&newcompositefont +/DialogInput-Italic /Helvetica-Oblique 16#02 vg&newcompositefont +/DialogInput-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont + +% Make the Typewriter composite fonts (JDK 1.1 only). +/Typewriter /Courier 16#00 vg&newcompositefont +/Typewriter-Bold /Courier-Bold 16#01 vg&newcompositefont +/Typewriter-Italic /Courier-Oblique 16#02 vg&newcompositefont +/Typewriter-BoldItalic /Courier-BoldOblique 16#03 vg&newcompositefont + + +/cfontH { + dup /fontsize exch def /SansSerif exch sf + /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def +} def +/cfontHB { + dup /fontsize exch def /SansSerif-Bold exch sf + /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def +} def +/cfontHI { + dup /fontsize exch def /SansSerif-Italic exch sf + /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def +} def +/cfontHBI { + dup /fontsize exch def /SansSerif-BoldItalic exch sf + /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def +} def + +/cfontT { + dup /fontsize exch def /Serif exch sf + /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def +} def +/cfontTB { + dup /fontsize exch def /Serif-Bold exch sf + /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def +} def +/cfontTI { + dup /fontsize exch def /Serif-Italic exch sf + /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def +} def +/cfontTBI { + dup /fontsize exch def /Serif-BoldItalic exch sf + /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def +} def + +/cfontC { + dup /fontsize exch def /Typewriter exch sf + /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def +} def +/cfontCB { + dup /fontsize exch def /Typewriter-Bold exch sf + /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def +} def +/cfontCI { + dup /fontsize exch def /Typewriter-Italic exch sf + /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def +} def +/cfontCBI { + dup /fontsize exch def /Typewriter-BoldItalic exch sf + /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def +} def + +% Darken or lighten the current color. +/darken {0.7 exch exp 3 copy + q 4 -1 roll vg&C + currentrgbcolor 3 {4 -2 roll mul} repeat + 3 array astore Q} def + +/displayColorMap +<< /Cr [1.00 0.00 0.00] /Cg [0.00 1.00 0.00] + /Cb [0.00 0.00 1.00] /Cc [1.00 0.00 0.00 0.00] + /Cm [0.00 1.00 0.00 0.00] /Cy [0.00 0.00 1.00 0.00] + /Co [1.00 0.78 0.00] /Cp [1.00 0.67 0.67] + /Cw [1 ] /Cgrl [0.75] + /Cgr [0.50] /Cgrd [0.25] + /Ck [0 ] + /CGr [1.00 0.00 0.00] /CGg [0.00 1.00 0.00] + /CGb [0.00 0.00 1.00] /CGc [1.00 0.00 0.00 0.00] + /CGm [0.00 1.00 0.00 0.00] /CGy [0.00 0.00 1.00 0.00] + /CGo [1.00 0.78 0.00] /CGp [1.00 0.67 0.67] + /CGw [1 ] /CGgrl [0.75] + /CGgr [0.50] /CGgrd [0.25] + /CGk [0 ] + /CIr [1.00 0.00 0.00] /CIg [0.00 1.00 0.00] + /CIb [0.00 0.00 1.00] /CIc [1.00 0.00 0.00 0.00] + /CIm [0.00 1.00 0.00 0.00] /CIy [0.00 0.00 1.00 0.00] + /CIo [1.00 0.78 0.00] /CIp [1.00 0.67 0.67] + /CIw [1 ] /CIgrl [0.75] + /CIgr [0.50] /CIgrd [0.25] + /CIk [0 ] +>> def + +/printColorMap +<< /Cr [1.00 0.33 0.33] /Cg [0.33 1.00 0.33] + /Cb [0.33 0.33 1.00] /Cc [1.00 0.00 0.00 0.00] + /Cm [0.00 1.00 0.00 0.00] /Cy [0.00 0.00 1.00 0.00] + /Co [1.00 0.78 0.00] /Cp [1.00 0.67 0.67] + /Cw [1 ] /Cgrl [0.75] + /Cgr [0.50] /Cgrd [0.25] + /Ck [0 ] + /CGr [1.00 0.33 0.33] /CGg [0.33 1.00 0.33] + /CGb [0.33 0.33 1.00] /CGc [1.00 0.00 0.00 0.00] + /CGm [0.00 1.00 0.00 0.00] /CGy [0.00 0.00 1.00 0.00] + /CGo [1.00 0.78 0.00] /CGp [1.00 0.67 0.67] + /CGw [1 ] /CGgrl [0.75] + /CGgr [0.50] /CGgrd [0.25] + /CGk [0 ] + /CIr [1.00 0.33 0.33] /CIg [0.33 1.00 0.33] + /CIb [0.33 0.33 1.00] /CIc [1.00 0.00 0.00 0.00] + /CIm [0.00 1.00 0.00 0.00] /CIy [0.00 0.00 1.00 0.00] + /CIo [1.00 0.78 0.00] /CIp [1.00 0.67 0.67] + /CIw [1 ] /CIgrl [0.75] + /CIgr [0.50] /CIgrd [0.25] + /CIk [0 ] +>> def + +/grayColorMap +<< /Cr [0 ] /Cg [0 ] + /Cb [0 ] /Cc [0 ] + /Cm [0 ] /Cy [0 ] + /Co [0 ] /Cp [0 ] + /Cw [0 ] /Cgrl [0 ] + /Cgr [0 ] /Cgrd [0 ] + /Ck [0 ] + /CGr [0.75] /CGg [1 ] + /CGb [0.50] /CGc [0.75] + /CGm [0.50] /CGy [1 ] + /CGo [0.75] /CGp [1 ] + /CGw [0 ] /CGgrl [0.25] + /CGgr [0.50] /CGgrd [0.75] + /CGk [1 ] + /CIr [1 ] /CIg [1 ] + /CIb [1 ] /CIc [1 ] + /CIm [1 ] /CIy [1 ] + /CIo [1 ] /CIp [1 ] + /CIw [1 ] /CIgrl [1 ] + /CIgr [1 ] /CIgrd [1 ] + /CIk [1 ] +>> def + +/bwColorMap +<< /Cr [0 ] /Cg [0 ] + /Cb [0 ] /Cc [0 ] + /Cm [0 ] /Cy [0 ] + /Co [0 ] /Cp [0 ] + /Cw [0 ] /Cgrl [0 ] + /Cgr [0 ] /Cgrd [0 ] + /Ck [0 ] + /CGr [1 ] /CGg [1 ] + /CGb [1 ] /CGc [1 ] + /CGm [1 ] /CGy [1 ] + /CGo [1 ] /CGp [1 ] + /CGw [0 ] /CGgrl [1 ] + /CGgr [1 ] /CGgrd [1 ] + /CGk [1 ] + /CIr [1 ] /CIg [1 ] + /CIb [1 ] /CIc [1 ] + /CIm [1 ] /CIy [1 ] + /CIo [1 ] /CIp [1 ] + /CIw [1 ] /CIgrl [1 ] + /CIgr [1 ] /CIgrd [1 ] + /CIk [1 ] +>> def + +% +% The following routines handle the alignment of and printing of +% tagged strings. +% + +% Predefine the bounding box values. +/bbllx 0 def /bblly 0 def /bburx 0 def /bbury 0 def + +% This routine pops the first unicode character off of a string and returns +% the remainder of the string, the character code of first character, +% and a "true" if the string was non-zero length. +% popfirst +% popfirst +/popfirst { + dup length 1 gt + {dup 0 get /vg&fbyte exch def + dup 1 get /vg&cbyte exch def + dup length 2 sub 2 exch getinterval true} + {pop false} ifelse +} def + +% This routine shows a single unicode character given the font and +% character codes. +% unicharshow -- +/unicharshow { + 2 string + dup 0 5 -1 roll put + dup 1 4 -1 roll put + internalshow +} def + +% This is an internal routine to alternate between determining the +% bounding box for stringsize and showing the string for recshow. +% internalshow -- +/internalshow {show} def + +% This is an internal routine to alternate between determining the +% bounding box for stringsize and stroking various ornaments. +% internalstroke -- +/internalstroke {S} def + +% Sets up internalshow to use the null device to determine string size. +% -- nullinternalshow -- +/nullinternalshow {/internalshow {false charpath flattenpath + pathbbox updatebbox} def} def + +% Sets up internalstroke to use the null device to determine string size. +% -- nullinternalstroke -- +/nullinternalstroke { + /internalstroke {flattenpath pathbbox updatebbox} def} def + +% This routine tests to see if the character code matches the first +% character of a string. +% testchar +/testchar {exch dup 3 -1 roll 0 get eq} def + +% Raise the text baseline for superscripts. +% -- raise -- +/raise { + 0 fontsize 2 div rmoveto + /fontsize fontsize 2 mul 3 div def + currentfont /FontName get fontsize sf +} def + +% Un-raise the text baseline for superscripts. +% -- unraise -- +/unraise { + /fontsize fontsize 1.5 mul def + 0 fontsize 2 div neg rmoveto +} def + +% Lower the text baseline for subscripts. +% -- lower -- +/lower { + 0 fontsize 3 div neg rmoveto + /fontsize fontsize 2 mul 3 div def + currentfont /FontName get fontsize sf +} def + +% Un-lower the text baseline for subscripts. +% -- unlower -- +/unlower { + /fontsize fontsize 1.5 mul def + 0 fontsize 3 div rmoveto +} def + +% Compare the top two elements on the stack and leave only the +% larger one. +/maxval {2 copy gt {pop} {exch pop} ifelse} def + +% Tokenize a string. Do not use the usual PostScript token because +% parentheses will not be interpreted correctly because of rescanning +% of the string. +/vg&token {/vg&string exch def /vg&index -1 def /vg&level 0 def +0 2 vg&string length 2 sub { + dup dup 1 add exch vg&string exch get 8 bitshift vg&string 3 -1 roll get or + dup 16#f0fe eq {pop 1}{16#f0ff eq {-1}{0} ifelse} ifelse + /vg&level exch vg&level add def + vg&level 0 eq {/vg&index exch def exit} if pop +} for +vg&index 0 ge { + vg&string vg&index 2 add dup vg&string length exch sub getinterval + vg&index 2 gt {vg&string 2 vg&index 2 sub getinterval}{()} ifelse + true} +{false} ifelse +} bind def + +% Recursively show an unicode string. +% recshow -- +/recshow { + popfirst + { + % Test to see if this is a string attribute. + vg&fbyte 16#f0 and 16#e0 eq + { + q + + % Font style. + currentfont dup /FontStyleBits known {/FontStyleBits get}{pop 0} ifelse + vg&cbyte or vg&fontstyles exch get fontsize exch exec + + vg&token pop recshow currentpoint Q m recshow + } + { + vg&fbyte 16#F8 and 16#F0 eq { + + % Superscript and/or subscript. + vg&cbyte 16#00 eq { + vg&token pop exch vg&token pop 3 -1 roll + q raise recshow unraise currentpoint pop Q exch + q lower recshow unlower currentpoint pop Q + maxval currentpoint exch pop m recshow } if + + % Strikeout. + vg&cbyte 16#01 eq { + vg&token pop currentpoint 3 -1 roll recshow + q 0 J vg&underline vg&uthick w + currentpoint 4 -2 roll fontsize 3 div add moveto + fontsize 3 div add lineto internalstroke Q + recshow} if + + % Underline. + vg&cbyte 16#02 eq { + vg&token pop currentpoint 3 -1 roll recshow + q 0 J vg&underline vg&uthick w + currentpoint 4 -2 roll vg&uoffset add moveto + vg&uoffset add lineto internalstroke Q + recshow} if + + % Dashed underline. + vg&cbyte 16#03 eq { + vg&token pop currentpoint 3 -1 roll recshow + q 0 J [ vg&uthick 5 mul vg&uthick 2 mul] 0 d + vg&underline vg&uthick w + currentpoint 4 -2 roll vg&uoffset add moveto + vg&uoffset add lineto internalstroke Q + recshow} if + + % Dotted underline. + vg&cbyte 16#04 eq { + vg&token pop currentpoint 3 -1 roll recshow + q 1 J [ 0 vg&uthick 3 mul] 0 d + vg&underline vg&uthick w + currentpoint 4 -2 roll vg&uoffset add moveto + vg&uoffset add lineto internalstroke Q + recshow} if + + % Thick underline. + vg&cbyte 16#05 eq { + vg&token pop currentpoint 3 -1 roll recshow + q 0 J vg&underline vg&uthick 2 mul w + currentpoint 4 -2 roll vg&uoffset vg&uthick 2 div sub add moveto + vg&uoffset vg&uthick 2 div sub add lineto internalstroke Q + recshow} if + + % Gray thick underline. + vg&cbyte 16#06 eq { + vg&token pop currentpoint 3 -1 roll recshow + q 0 J vg&underline vg&uthick 2 mul w 0.5 setgray + currentpoint 4 -2 roll vg&uoffset vg&uthick 2 div sub add moveto + vg&uoffset vg&uthick 2 div sub add lineto internalstroke Q + recshow} if + + % Overbar. + vg&cbyte 16#07 eq { + vg&token pop dup stringsize relative 4 1 roll pop pop exch + 3 -1 roll recshow + q 0 J vg&underline vg&uthick w + vg&uoffset neg add dup currentpoint pop exch m l internalstroke Q + recshow} if + } + { + vg&fbyte vg&cbyte unicharshow recshow + } ifelse + } ifelse + } if +} def + +% Get the underline position and thickness from the current font. +/vg&underline { + +currentfont dup /FontType get 0 eq {/FDepVector get 0 get} if +dup dup /FontInfo known { + /FontInfo get dup + dup /UnderlinePosition known { + /UnderlinePosition get /vg&uoffset exch def + } + { + pop /vg&uoffset 0 def + } ifelse + dup /UnderlineThickness known { + /UnderlineThickness get /vg&uthick exch def + } + { + pop /vg&uthick 0 def + } ifelse +} +{ + pop /vg&uoffset 0 def /vg&uthick 0 def +} ifelse +/FontMatrix get +currentfont dup /FontType get 0 eq +{/FontMatrix get matrix concatmatrix}{pop} ifelse +dup 0 vg&uoffset 3 -1 roll transform /vg&uoffset exch def pop +0 vg&uthick 3 -1 roll transform /vg&uthick exch def pop +} def + +% Make a frame with the coordinates on the stack. +% frame -- +/frame {4 copy m 3 1 roll exch l 4 -2 roll l l h} def + +% Resets the accumulated bounding box to a degenerate box at the +% current point. +% -- resetbbox -- +/resetbbox { + currentpoint 2 copy + /bbury exch def + /bburx exch def + /bblly exch def + /bbllx exch def +} def + +% Update the accumulated bounding box. +% updatebbox -- +/updatebbox { + dup bbury gt {/bbury exch def} {pop} ifelse + dup bburx gt {/bburx exch def} {pop} ifelse + dup bblly lt {/bblly exch def} {pop} ifelse + dup bbllx lt {/bbllx exch def} {pop} ifelse +} def + +% Set the bounding box to the values on the stack. +% updatebbox -- +/restorebbox { + /bbury exch def /bburx exch def /bblly exch def /bbllx exch def +} def + +% Push the accumulated bounding box onto the stack. +% -- pushbbox +/pushbbox {bbllx bblly bburx bbury} def + +% Make the relative bounding box relative to the currentpoint. +% inflate +/inflate { + 2 {fontsize 0.2 mul add 4 1 roll} repeat + 2 {fontsize 0.2 mul sub 4 1 roll} repeat +} def + +% Make the relative bounding box relative to the currentpoint. +% relative +/relative { + currentpoint 3 -1 roll add 3 1 roll add exch 4 2 roll + currentpoint 3 -1 roll add 3 1 roll add exch 4 2 roll +} def + +% Returns the size of a string appropriate for recshow. +% stringsize +/stringsize { + pushbbox /internalshow load /internalstroke load 7 -1 roll + q + nulldevice 0 0 m + nullinternalshow nullinternalstroke + resetbbox + recshow + /internalstroke exch def /internalshow exch def + pushbbox 8 -4 roll restorebbox + Q +} def + +% Calculate values for string positioning. +/calcval {4 copy + 3 -1 roll sub /widy exch def sub neg /widx exch def + pop pop /dy exch def /dx exch def} def + +% Utilities to position a string. +% First letter (U=upper, C=center, B=baseline, L=lower) +% Second letter (L=left, C=center, R=right) +/align [ +{calcval dx neg widy dy add neg rmoveto} % UL +{calcval dx neg widy 2 div dy add neg rmoveto} % CL +{calcval dx neg 0 rmoveto} % BL +{calcval dx neg dy neg rmoveto} % LL +{calcval widx dx add neg widy dy add neg rmoveto} % UR +{calcval widx dx add neg widy 2 div dy add neg rmoveto} % CR +{calcval widx dx add neg 0 rmoveto} % BR +{calcval widx dx add neg dy neg rmoveto} % LR +{calcval widx 2 div dx add neg widy dy add neg rmoveto} % UC +{calcval widx 2 div dx add neg widy 2 div dy add neg rmoveto} % CC +{calcval widx 2 div dx add neg 0 rmoveto} % BC +{calcval widx 2 div dx add neg dy neg rmoveto} % LC +] def + +/vg&str {m q 1 -1 scale dup stringsize 4 copy align 11 -1 roll get exec + q inflate relative frame exch exec Q recshow Q} def + +end /procDict exch def +%%EndProlog + +%%BeginSetup +save +procDict begin +printColorMap begin +595 842 setpagesize +20 20 20 20 setmargins +0 0 setorigin +623 380 setsize +fittopage +landscape +imagescale +cliptobounds +setbasematrix +/Helvetica 10 sf +defaultGraphicsState +%%EndSetup + +0.0 0.0 0.0 RG +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] defaultmatrix matrix concatmatrix setmatrix +1.0 w +2 J +0 j +10.0 M +[ ] 0.0 d +1.0 1.0 1.0 RG +0.0 0.0 623.0 380.0 rf +0.0 0.0 0.0 RG +q +0 0 623 380 rc +q +1.0 1.0 1.0 RG +0.0 0.0 623.0 380.0 rf +0.0 0.0 623.0 380.0 rc +[ 1.0 0.0 0.0 1.0 -30.0 59.0 ] concat +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +newpath +30.0 -59.0 m +653.0 -59.0 l +653.0 321.0 l +30.0 321.0 l +30.0 -59.0 l +h +f +0.501961 0.501961 0.501961 RG +newpath +40.0 -49.0 m +643.0 -49.0 l +643.0 290.0 l +40.0 290.0 l +40.0 -49.0 l +h +S +[ 1.0 0.0 0.0 1.0 40.0 -48.0 ] concat +1.0 1.0 1.0 RG +newpath +126.5332 0.5 m +126.5332 10.5 l +118.5332 18.5 l +0.5 18.5 l +0.5 0.5 l +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +126.5332 0.5 m +126.5332 10.5 l +118.5332 18.5 l +0.5 18.5 l +0.5 0.5 l +h +S +0.501961 0.501961 0.501961 RG +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 4.0 2.0 ] concat +0.0 0.0 0.0 RG +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000B\000o\000r\000n\000e\000P\000\351\000a\000g\000e\000:\000:\000p\000a\000s\000s\000e\000r) show +Q +[ 1.0 0.0 0.0 1.0 10.0 11.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -30.0 59.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 70.0 40.0 ] concat +1.0 1.0 0.0 RG +newpath +0.0 0.0 m +90.0 0.0 l +100.0 10.0 l +90.0 10.0 l +90.0 0.0 l +100.0 10.0 l +100.0 70.0 l +0.0 70.0 l +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +0.0 0.0 m +90.0 0.0 l +100.0 10.0 l +90.0 10.0 l +90.0 0.0 l +100.0 10.0 l +100.0 70.0 l +0.0 70.0 l +h +S +2 J +10.0 M +10.0 21.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000M\000A\000S\000S\000E\000 \000N\000i\000c\000o\000l\000a\000s) show +Q +10.0 35.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000L\000I\000M\000I\000N\000 \000T\000h\000o\000m\000a\000s) show +Q +10.0 49.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\0002\000A\000 \000i\000n\000f\000o\000 \000T\000P\0003) show +Q +[ 1.0 0.0 0.0 1.0 -30.0 59.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 70.0 130.0 ] concat +1.0 1.0 0.0 RG +newpath +0.0 0.0 m +175.5425 0.0 l +185.5425 10.0 l +175.5425 10.0 l +175.5425 0.0 l +185.5425 10.0 l +185.5425 132.0 l +0.0 132.0 l +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +0.0 0.0 m +175.5425 0.0 l +185.5425 10.0 l +175.5425 10.0 l +175.5425 0.0 l +185.5425 10.0 l +185.5425 132.0 l +0.0 132.0 l +h +S +2 J +10.0 M +10.0 21.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000-\000 \000V\000e\000r\000s\000i\000o\000n\000 \0000\000.\0001) show +Q +10.0 35.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000-\000 \0000\0004\000/\0001\0001\000/\0002\0000\0000\0005) show +Q +10.0 49.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000-\000 \000\351\000b\000a\000u\000c\000h\000e) show +Q +10.0 63.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000-\000 \000i\000l\000l\000u\000s\000t\000r\000e\000 \000u\000n\000 \000p\000a\000s\000s\000a\000g\000e\000 \000d\000e) show +Q +10.0 77.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000b\000o\000r\000n\000e\000 \000p\000a\000r\000 \000u\000n\000 \000u\000s\000a\000g\000e\000r) show +Q +10.0 91.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000-\000 \000T\000o\000u\000t\000e\000 \000m\000\351\000t\000h\000o\000d\000e\000 \000a\000j\000o\000u\000t\000\351\000e\000 \000i\000c\000i) show +Q +10.0 105.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000d\000o\000i\000t\000 \000\352\000t\000r\000e\000 \000a\000j\000o\000u\000t\000\351\000e\000 \000d\000a\000n\000s\000 \000l\000a\000 \000c\000l\000a\000s\000s\000e) show +Q +10.0 119.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000B\000o\000r\000n\000e\000P\000\351\000a\000g\000e) show +Q +[ 1.0 0.0 0.0 1.0 -30.0 59.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 330.0 60.0 ] concat +1.0 1.0 1.0 RG +newpath +0.0 19.5 m +0.0 19.5 l +0.0 30.269552 5.102573 39.0 11.396917 39.0 c +139.561982 39.0 l +145.856326 39.0 150.9589 30.269552 150.9589 19.5 c +150.9589 19.5 l +150.9589 8.730447 145.856326 0.0 139.561982 0.0 c +11.396917 0.0 l +5.102573 0.0 0.0 8.730447 0.0 19.5 c +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +0.0 19.5 m +0.0 19.5 l +0.0 30.269552 5.102573 39.0 11.396917 39.0 c +139.561982 39.0 l +145.856326 39.0 150.9589 30.269552 150.9589 19.5 c +150.9589 19.5 l +150.9589 8.730447 145.856326 0.0 139.561982 0.0 c +11.396917 0.0 l +5.102573 0.0 0.0 8.730447 0.0 19.5 c +h +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 26.2539 9.0 ] concat +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000A\000t\000t\000e\000n\000d\000r\000e\000 \000p\000a\000i\000e\000m\000e\000n\000t) show +Q +[ 1.0 0.0 0.0 1.0 326.2539 128.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 300.0 119.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -30.0 59.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 320.0 160.0 ] concat +1.0 1.0 1.0 RG +newpath +0.0 19.5 m +0.0 19.5 l +0.0 30.269552 7.841909 39.0 17.515394 39.0 c +215.023205 39.0 l +224.696690 39.0 232.5386 30.269552 232.5386 19.5 c +232.5386 19.5 l +232.5386 8.730447 224.696690 0.0 215.023205 0.0 c +17.515394 0.0 l +7.841909 0.0 0.0 8.730447 0.0 19.5 c +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +0.0 19.5 m +0.0 19.5 l +0.0 30.269552 7.841909 39.0 17.515394 39.0 c +215.023205 39.0 l +224.696690 39.0 232.5386 30.269552 232.5386 19.5 c +232.5386 19.5 l +232.5386 8.730447 224.696690 0.0 215.023205 0.0 c +17.515394 0.0 l +7.841909 0.0 0.0 8.730447 0.0 19.5 c +h +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 38.2009 9.0 ] concat +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000A\000t\000t\000e\000n\000d\000r\000e\000 \000l\000a\000 \000s\000o\000r\000t\000i\000e\000 \000d\000u\000 \000v\000\351\000h\000i\000c\000u\000l\000e) show +Q +[ 1.0 0.0 0.0 1.0 328.2009 228.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 290.0 219.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -30.0 59.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 380.0 0.0 ] concat +newpath +20.0 10.0 m +20.0 15.522847 15.522847 20.0 10.0 20.0 c +4.477152 20.0 0.0 15.522847 0.0 10.0 c +0.0 4.477152 4.477152 0.0 10.0 0.0 c +15.522847 0.0 20.0 4.477152 20.0 10.0 c +h +f +0 J +1.0 M +newpath +20.0 10.0 m +20.0 15.522847 15.522847 20.0 10.0 20.0 c +4.477152 20.0 0.0 15.522847 0.0 10.0 c +0.0 4.477152 4.477152 0.0 10.0 0.0 c +15.522847 0.0 20.0 4.477152 20.0 10.0 c +h +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 -30.0 59.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0 J +1.0 M +newpath +390.0 100.0 m +390.0 160.0 l +S +2 J +10.0 M +[ -0.0 -1.0 1.0 0.0 390.0 160.0 ] concat +newpath +10.0 5.0 m +0.0 0.0 l +10.0 -5.0 l +S +[ 1.0 0.0 0.0 1.0 -30.0 59.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 410.0 123.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 4.0 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000/) show +Q +[ 1.0 0.0 0.0 1.0 380.0 182.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 9.7686 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000/) show +Q +[ 1.0 0.0 0.0 1.0 380.0 182.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 15.5371 0.0 ] concat +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000o\000u\000v\000r\000i\000r\000B\000a\000r\000r\000i\000\350\000r\000e\000A\000v\000a\000l\000\050\000\051) show +Q +[ 1.0 0.0 0.0 1.0 395.5371 182.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 380.0 182.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -30.0 59.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 289.0303 120.7322 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000p\000a\000i\000e\000m\000e\000n\000t\000P\000e\000r\000c\000u\000\050\000\051) show +Q +[ 1.0 0.0 0.0 1.0 -30.0 59.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -30.0 59.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0 J +1.0 M +newpath +390.0 20.0 m +390.0 60.0 l +S +2 J +10.0 M +[ -0.0 -1.0 1.0 0.0 390.0 60.0 ] concat +newpath +10.0 5.0 m +0.0 0.0 l +10.0 -5.0 l +S +[ 1.0 0.0 0.0 1.0 -30.0 59.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 400.0 33.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 4.0 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000[) show +Q +[ 1.0 0.0 0.0 1.0 370.0 92.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 7.5771 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000]) show +Q +[ 1.0 0.0 0.0 1.0 370.0 92.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 11.1543 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000[) show +Q +[ 1.0 0.0 0.0 1.0 370.0 92.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 14.7314 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000 ) show +Q +[ 1.0 0.0 0.0 1.0 370.0 92.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 18.2119 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000]) show +Q +[ 1.0 0.0 0.0 1.0 370.0 92.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 21.7891 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000/) show +Q +[ 1.0 0.0 0.0 1.0 370.0 92.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 27.5576 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000/) show +Q +[ 1.0 0.0 0.0 1.0 370.0 92.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 33.3262 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000/) show +Q +[ 1.0 0.0 0.0 1.0 370.0 92.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 39.0947 0.0 ] concat +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000B\000o\000u\000c\000l\000e\000A\000m\000o\000n\000t\000:\000:\000t\000y\000p\000e\000V\000\351\000h\000i\000c\000u\000l\000e\000\050\000\051) show +Q +[ 1.0 0.0 0.0 1.0 409.0947 92.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 370.0 92.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -30.0 59.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 189.4331 33.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000B\000o\000r\000n\000e\000P\000\351\000a\000g\000e\000:\000:\000v\000\351\000h\000i\000c\000u\000l\000e\000D\000\351\000t\000e\000c\000t\000\351\000A\000m\000o\000n\000t\000\050\000\051) show +Q +[ 1.0 0.0 0.0 1.0 -30.0 59.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -30.0 59.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 410.0 240.0 ] concat +1.0 1.0 1.0 RG +newpath +20.0 10.0 m +20.0 15.522847 15.522847 20.0 10.0 20.0 c +4.477152 20.0 0.0 15.522847 0.0 10.0 c +0.0 4.477152 4.477152 0.0 10.0 0.0 c +15.522847 0.0 20.0 4.477152 20.0 10.0 c +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +20.0 10.0 m +20.0 15.522847 15.522847 20.0 10.0 20.0 c +4.477152 20.0 0.0 15.522847 0.0 10.0 c +0.0 4.477152 4.477152 0.0 10.0 0.0 c +15.522847 0.0 20.0 4.477152 20.0 10.0 c +h +S +2 J +10.0 M +newpath +18.0 10.5 m +18.0 14.642135 14.642135 18.0 10.5 18.0 c +6.357864 18.0 3.0 14.642135 3.0 10.5 c +3.0 6.357864 6.357864 3.0 10.5 3.0 c +14.642135 3.0 18.0 6.357864 18.0 10.5 c +h +f +[ 1.0 0.0 0.0 1.0 2.0481 25.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000F\000i\000n) show +Q +[ 1.0 0.0 0.0 1.0 380.0 299.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -30.0 59.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0 J +1.0 M +newpath +420.0 200.0 m +420.0 240.0 l +S +2 J +10.0 M +[ -0.0 -1.0 1.0 0.0 420.0 240.0 ] concat +newpath +10.0 5.0 m +0.0 0.0 l +10.0 -5.0 l +S +[ 1.0 0.0 0.0 1.0 -30.0 59.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 430.0 213.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 4.0 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000/) show +Q +[ 1.0 0.0 0.0 1.0 400.0 272.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 9.7686 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000/) show +Q +[ 1.0 0.0 0.0 1.0 400.0 272.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 15.5371 0.0 ] concat +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000f\000e\000r\000m\000e\000r\000B\000a\000r\000r\000i\000\350\000r\000e\000A\000v\000a\000l\000\050\000\051) show +Q +[ 1.0 0.0 0.0 1.0 415.5371 272.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 400.0 272.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -30.0 59.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 301.2241 213.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000v\000\351\000h\000i\000c\000u\000l\000e\000D\000\351\000t\000e\000c\000t\000\351\000A\000v\000a\000l\000\050\000\051) show +Q +[ 1.0 0.0 0.0 1.0 -30.0 59.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -30.0 59.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 40.0 120.5 ] concat +[ 1.0 0.0 0.0 1.0 -30.0 59.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 643.0 120.5 ] concat +[ 1.0 0.0 0.0 1.0 -30.0 59.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 341.5 -49.0 ] concat +[ 1.0 0.0 0.0 1.0 -30.0 59.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 341.5 290.0 ] concat +[ 1.0 0.0 0.0 1.0 -30.0 59.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 40.0 -49.0 ] concat +[ 1.0 0.0 0.0 1.0 -30.0 59.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 643.0 -49.0 ] concat +[ 1.0 0.0 0.0 1.0 -30.0 59.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 40.0 290.0 ] concat +[ 1.0 0.0 0.0 1.0 -30.0 59.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 643.0 290.0 ] concat +[ 1.0 0.0 0.0 1.0 -30.0 59.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -30.0 59.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 118.861328 290.0 ] concat +0.0 12.0 moveto +q 1 -1 scale +/Helvetica findfont 12.0 scalefont setfont +(Created with Poseidon for UML Community Edition. Not for Commercial Use.) show +Q +[ 1.0 0.0 0.0 1.0 -30.0 59.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] defaultmatrix matrix concatmatrix setmatrix +newpath +0.0 0.0 m +0.0 380.0 l +623.0 380.0 l +623.0 0.0 l +h +W +Q +end end restore showpage + +%%Trailer +%%EOF diff --git a/GL/BarrierePeage/Casdutilisation.eps b/GL/BarrierePeage/Casdutilisation.eps new file mode 100755 index 0000000..f30010a --- /dev/null +++ b/GL/BarrierePeage/Casdutilisation.eps @@ -0,0 +1,2634 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%BoundingBox: 20 112 575 730 +%%Creator: FreeHEP Graphics2D Driver +%%Producer: org.freehep.graphicsio.ps.PSGraphics2D Revision: 1.20 +%%For: +%%Title: +%%CreationDate: lundi 2 janvier 2006 16 h 09 CET +%%LanguageLevel: 3 +%%EndComments +%%BeginProlog +100 dict dup begin + +% +% File: org/freehep/graphicsio.ps/PSProlog.txt +% Author: Charles Loomis +% + +% Redefinitions which save some space in the output file. These are also +% the same as the PDF operators. +/q {gsave} def +/Q {grestore} def + +/n {newpath} def +/m {moveto} def +/l {lineto} def +/c {curveto} def +/h {closepath} def + +/re {4 -2 roll moveto + dup 0 exch rlineto exch 0 rlineto + neg 0 exch rlineto closepath} def + +/f {fill} def +/f* {eofill} def +/F {gsave vg&FC fill grestore} def +/F* {gsave vg&FC eofill grestore} def + +/s {closepath stroke} def +/S {stroke} def + +/b {closepath gsave vg&FC fill grestore + gsave stroke grestore newpath} def +/B {gsave vg&FC fill grestore gsave stroke grestore newpath} def +/b* {closepath gsave vg&FC eofill grestore + gsave stroke grestore newpath} def +/B* {gsave vg&FC eofill grestore gsave stroke grestore newpath} def + +/g {1 array astore /vg&fcolor exch def} def +/G {setgray} def +/k {4 array astore /vg&fcolor exch def} def +/K {setcmykcolor} def +/rg {3 array astore /vg&fcolor exch def} def +/RG {setrgbcolor} def + +% Initialize the fill color. +0 0 0 rg + +/vg&FC {mark vg&fcolor aload pop + counttomark 1 eq {G} if + counttomark 3 eq {RG} if + counttomark 4 eq {K} if + cleartomark } def + +/vg&DFC {/vg&fcolor exch def} def + +/vg&C {mark exch aload pop + counttomark 1 eq {G} if + counttomark 3 eq {RG} if + counttomark 4 eq {K} if + cleartomark } def + +/w {setlinewidth} def +/j {setlinejoin} def +/J {setlinecap} def +/M {setmiterlimit} def +/d {setdash} def +/i {setflat} def + +/W {clip} def +/W* {eoclip} def + +% Setup the default graphics state. +% (black; 1 pt. linewidth; miter join; butt-ends; solid) +/defaultGraphicsState {0 g 1 w 0 j 0 J [] 0 d} def + +% Emulation of the rectangle operators for PostScript implementations +% which do not implement all Level 2 features. This is an INCOMPLETE +% emulation; only the "x y width height rect..." form is emulated. +/*rf {gsave newpath re fill grestore} def +/*rs {gsave newpath re stroke grestore} def +/*rc {newpath re clip} def +/rf /rectfill where {pop /rectfill}{/*rf} ifelse load def +/rs /rectstroke where {pop /rectstroke}{/*rs} ifelse load def +/rc /rectclip where {pop /rectclip}{/*rc} ifelse load def + +% Emulation of the selectfont operator. This includes a 20% increase in +% the fontsize which is necessary to get sizes similar to the Java fonts. +/*sf {exch findfont exch + dup type /arraytype eq {makefont}{scalefont} ifelse setfont} bind def +/sf /selectfont where {pop {1.2 mul selectfont}}{{1.2 mul *sf}} ifelse def + +% Special version of stroke which allows the dash pattern to continue +% across path segments. (This may be needed for PostScript although +% modern printers seem to do this correctly.) +/vg&stroke { + currentdash pop length 0 eq + {stroke} + { + currentdash /vg&doffset exch def pop + flattenpath + {m vg&resetdash} + {2 copy + currentpoint + 3 -1 roll sub dup mul + 3 1 roll sub dup mul + add sqrt + 3 1 roll l + currentdash 3 -1 roll add setdash} + {} + {h vg&resetdash} + pathforall + stroke + vg&resetdash + } ifelse +} def +/vg&resetdash {currentdash pop vg&doffset setdash} def + +% Initialize variables for safety. +/delta 0 def +/xv 0 def /yv 0 def /width 0 def /height 0 def + +% Initialize to portrait INTERNATIONAL (Letter-height, A4-width) page. +/pw 595 def /ph 791 def /po true def /ftp false def + +% Initialize margins to 20 points. +/ml 20 def /mr 20 def /mt 20 def /mb 20 def + +% Temporary matrices. +/smatrix 0 def /nmatrix 0 def + +% set page size (usage: setpagesize) +/setpagesize {/ph exch def /pw exch def} def + +% set page orientation (usage: portrait or landscape) +/portrait {/po true def} def +/landscape {/po false def} def + +% force natural size for image (usage: naturalsize) +/naturalsize {/ftp false def} def + +% resize image to fill page (usage: fittopage) +/fittopage {/ftp true def} def + +% set margins of the page (usage: setmargins) +/setmargins {/mr exch def /mt exch def /mb exch def /ml exch def} def + +% set the graphic's size (usage: setsize) +/setsize {/gh exch def /gw exch def} def + +% set the graphic's origin (usage: setorigin) +/setorigin {/gy exch def /gx exch def} def + +% calculate image center +/imagecenter {pw ml sub mr sub 2 div ml add + ph mt sub mb sub 2 div mb add} def + +% calculate the necessary scaling +/imagescale {po {gw}{gh} ifelse pw ml sub mr sub div + po {gh}{gw} ifelse ph mt sub mb sub div + 2 copy lt {exch} if pop + ftp not {1 2 copy lt {exch} if pop} if + 1 exch div /sfactor exch def + /gw gw sfactor mul def /gh gh sfactor mul def} def + +% calculate image origin +/imageorigin {pw ml sub mr sub 2 div ml add + po {gw}{gh} ifelse 2 div sub + ph mt sub mb sub 2 div mb add + po {gh}{gw} ifelse 2 div po {add}{sub} ifelse} def + +% calculate the clipping origin +/cliporigin {pw ml sub mr sub 2 div ml add + po {gw}{gh} ifelse 2 div sub floor + ph mt sub mb sub 2 div mb add + po {gh}{gw} ifelse 2 div sub floor} def + +% Set the clipping region to the bounding box. +/cliptobounds {cliporigin po {gw}{gh} ifelse 1 add + po {gh}{gw} ifelse 1 add rc} def + +% set the base transformation matrix (usage: setbasematrix) +/setbasematrix {imageorigin translate + po {0}{90} ifelse rotate + sfactor sfactor neg scale + /defaultmatrix matrix currentmatrix def} def + +% The lower-right bias in drawing 1 pt. wide lines. +/bias {q 0.5 0.5 translate} def +/unbias {Q} def + +% Draw a line. (x0 y0 x1 y1 line) +/L {bias n m l S unbias} def + +% Polyline primitive. +/polyline {n m 1 exch 1 exch + {pop currentfile token pop currentfile token pop l} for + } def + +% Draw a polyline (n x0 y0 OPL x1 y1 x2 y2 ... ... xn yn) +/OPL {bias polyline S unbias} def + +% Draw a closed polyline (n x0 y0 CPL x1 y1 x2 y2 ... ... xn yn) +/CPL {bias polyline s unbias} def + +% Draw a filled polyline (n x0 y0 FPL x1 y1 x2 y2 ... ... xn yn) +/FPL {polyline h f*} def + +% Draw an oval. (x y w h OVL) +/OVL {matrix currentmatrix /smatrix exch def + /height exch def /width exch def + /yv exch def /xv exch def + width 2 div xv add height 2 div yv add translate + width currentlinewidth sub 2 div + height currentlinewidth sub 2 div neg + scale n 0 0 1 5 -2 roll arc + smatrix setmatrix S} def + +% Draw a filled oval. (x y w h FOVL) +/FOVL {matrix currentmatrix /smatrix exch def + /height exch def /width exch def + /yv exch def /xv exch def + width 2 div xv add height 2 div yv add translate + width 2 div + height 2 div neg + scale n 0 0 m 0 0 1 5 -2 roll arc + h smatrix setmatrix f} def + +% Draw a rounded rectangle. (x y w h arcwidth archeight RREC) +/RREC {matrix currentmatrix /smatrix exch def + 2 div /ah exch def + 2 div /aw exch def + /height exch def /width exch def + /yv exch def /xv exch def + aw ah scale matrix + currentmatrix /nmatrix exch def + smatrix setmatrix + n xv width add aw sub yv m + nmatrix setmatrix + currentpoint exch 1 add exch + currentpoint 1 add exch 1 add exch + 1 arct smatrix setmatrix + xv width add yv height add ah sub l + nmatrix setmatrix + currentpoint 1 add + currentpoint exch 1 sub exch 1 add + 1 arct smatrix setmatrix + xv aw add yv height add l + nmatrix setmatrix + currentpoint exch 1 sub exch + currentpoint exch 1 sub exch 1 sub + 1 arct smatrix setmatrix + xv yv ah add l + nmatrix setmatrix + currentpoint 1 sub + currentpoint exch 1 add exch 1 sub + 1 arct smatrix setmatrix + s} def + +% Draw a filled rounded rectangle. (x y w h arcwidth archeight FRREC) +/FRREC{matrix currentmatrix /smatrix exch def + 2 div /ah exch def + 2 div /aw exch def + /height exch def /width exch def + /yv exch def /xv exch def + aw ah scale matrix + currentmatrix /nmatrix exch def + smatrix setmatrix + n xv width add aw sub yv m + nmatrix setmatrix + currentpoint exch 1 add exch + currentpoint 1 add exch 1 add exch + 1 arct smatrix setmatrix + xv width add yv height add ah sub l + nmatrix setmatrix + currentpoint 1 add + currentpoint exch 1 sub exch 1 add + 1 arct smatrix setmatrix + xv aw add yv height add l + nmatrix setmatrix + currentpoint exch 1 sub exch + currentpoint exch 1 sub exch 1 sub + 1 arct smatrix setmatrix + xv yv ah add l + nmatrix setmatrix + currentpoint 1 sub + currentpoint exch 1 add exch 1 sub + 1 arct smatrix setmatrix + h f} def + +% Draw a string. (string x y STR) +/STR {q m 1 -1 scale recshow Q} def + +% Define basic plot symbols. +/xys {/siz exch def /yv exch def /xv exch def} def +/hline {xys n xv siz 2. div sub yv m siz 0 rlineto S} def +/vline {xys n xv yv siz 2. div sub m 0 siz rlineto S} def +/plus {xys n xv yv siz 2. div sub m 0 siz rlineto + xv siz 2. div sub yv m siz 0 rlineto S} def +/dot {n 2. div 0 360 arc s} def +/fdot {n 2. div 0 360 arc h f} def +/box {xys n xv siz 2 sqrt div 2 div sub yv siz 2 sqrt div 2 div sub + siz 2 sqrt div dup rs} def +/fbox {xys n xv siz 2 sqrt div 2 div sub yv siz 2 sqrt div 2 div sub + siz 2 sqrt div dup rf} def +/tridn{xys n xv yv siz 3 sqrt div add m + siz 2. div neg 3 sqrt 2. div siz mul neg rlineto + siz 0 rlineto s} def +/ftridn{xys n xv yv siz 3 sqrt div add m + siz 2. div neg 3 sqrt 2. div siz mul neg rlineto + siz 0 rlineto h f} def + +% Symbols defined in terms of the others. +/star {3 copy cross plus} def +/cross {xys q xv yv translate 45 rotate 0 0 siz plus Q} def +/diamond {xys q xv yv translate 45 rotate 0 0 siz box Q} def +/fdiamond {xys q xv yv translate 45 rotate 0 0 siz fbox Q} def +/triup {xys q xv yv translate 180 rotate 0 0 siz tridn Q} def +/ftriup {xys q xv yv translate 180 rotate 0 0 siz ftridn Q} def + +% Define the composite fonts used to print Unicode strings. +% Undefine particular values in an encoding array. +/vg&undef { {exch dup 3 -1 roll /.notdef put} forall } def +/vg&redef { {3 -1 roll dup 4 2 roll put} forall } def + +% usage: key encoding basefontname vg&newbasefont font +/vg&newbasefont { +findfont dup length dict copy + begin + currentdict /FID undef + /Encoding exch def + dup /FontName exch def + currentdict + end +definefont +} def + +% usage: key encoding basefontname vg&newskewedbasefont font +/vg&newskewedbasefont { +findfont dup length dict copy + begin + currentdict /FID undef + /Encoding exch def + dup /FontName exch def + exch FontMatrix exch matrix concatmatrix /FontMatrix exch def + currentdict + end +definefont +} def + +% usage: basekey suffix vg&nconcat name +/vg&nconcat { + 2 {dup length string cvs exch} repeat + dup length 3 -1 roll dup length 3 -1 roll add string + dup 0 4 -1 roll dup length 5 1 roll putinterval + dup 4 -2 roll exch putinterval cvn +} def + +%usage: fontname vg&skewmatrix matrix +/vg&skewmatrix { +findfont dup /FontInfo known + { + /FontInfo get dup /ItalicAngle known + { + [ 1 0 4 -1 roll /ItalicAngle get neg dup sin exch cos div 1 0 0 ] + } + {pop matrix} ifelse + } + {pop matrix} ifelse +} def + +% usage: newfontname basefontname vg&newcompositefont -- +/vg&newcompositefont { +/vg&fstyle exch def +/vg&bfont exch def +/vg&fname exch def +<< +/FontStyleBits vg&fstyle +/FontType 0 +/FontMatrix matrix +/FontName vg&fname +/FMapType 2 +/Encoding [ 0 1 255 {pop 6} for ] + dup 16#00 0 put % Latin + dup 16#03 1 put % Greek + dup 16#20 2 put % Punctuation + dup 16#21 3 put % Arrows + dup 16#22 4 put % MathOps + dup 16#27 5 put % Dingbats + +/FDepVector [ +vg&bfont /-UC-Latin vg&nconcat UCLatinEncoding +vg&bfont vg&newbasefont + +vg&bfont vg&skewmatrix +vg&bfont /-UC-Greek vg&nconcat UCGreekEncoding +/Symbol vg&newskewedbasefont + +vg&bfont /-UC-Punctuation vg&nconcat UCPunctuationEncoding +vg&bfont vg&newbasefont + +/Arrows-UC findfont +/MathOps-UC findfont +/Dingbats-UC findfont +/Undefined-UC findfont ] +>> +vg&fname exch definefont pop +} def + +% Null encoding vector (all elements set to .notdef) +/NullEncoding [ 256 {/.notdef} repeat ] def + +% Unicode Latin encoding (unicode codes \u0000-\u00ff) +/UCLatinEncoding + ISOLatin1Encoding dup length array copy + dup 16#60 /grave put + [ 16#90 16#91 16#92 16#93 16#94 16#95 16#96 + 16#97 16#98 16#9a 16#9b 16#9d 16#9e 16#9f + ] vg&undef + def + +% Unicode Greek encoding (unicode codes \u0370-\u03ff) +/UCGreekEncoding + NullEncoding dup length array copy + << 16#91 /Alpha 16#92 /Beta 16#93 /Gamma 16#94 /Delta + 16#95 /Epsilon 16#96 /Zeta 16#97 /Eta 16#98 /Theta + 16#99 /Iota 16#9a /Kappa 16#9b /Lambda 16#9c /Mu + 16#9d /Nu 16#9e /Xi 16#9f /Omicron 16#a0 /Pi + 16#a1 /Rho 16#a3 /Sigma 16#a4 /Tau 16#a5 /Upsilon + 16#a6 /Phi 16#a7 /Chi 16#a8 /Psi 16#a9 /Omega + 16#b1 /alpha 16#b2 /beta 16#b3 /gamma 16#b4 /delta + 16#b5 /epsilon 16#b6 /zeta 16#b7 /eta 16#b8 /theta + 16#b9 /iota 16#ba /kappa 16#bb /lambda 16#bc /mu + 16#bd /nu 16#be /xi 16#bf /omicron 16#c0 /pi + 16#c1 /rho 16#c2 /sigma1 16#c3 /sigma 16#c4 /tau + 16#c5 /upsilon 16#c6 /phi1 16#c7 /chi 16#c8 /psi + 16#c9 /omega 16#7e /semicolon 16#87 /dotmath 16#d1 /theta1 + 16#d2 /Upsilon1 16#d5 /phi 16#d6 /omega1 + >> vg&redef + def + +% Unicode punctuation encoding (unicode codes \u2000-\u206f) +/UCPunctuationEncoding + NullEncoding dup length array copy + << 16#10 /hyphen 16#11 /hyphen 16#12 /endash + 16#13 /emdash 16#18 /quoteleft 16#19 /quoteright + 16#1a /quotesinglbase 16#1b /quotesingle 16#1c /quotedblleft + 16#1d /quotedblright 16#1e /quotedblbase 16#1f /quotedbl + 16#20 /dagger 16#21 /daggerdbl 16#22 /bullet + 16#24 /period 16#26 /ellipsis 16#27 /periodcentered + 16#30 /perthousand 16#44 /fraction + 16#70 /zerosuperior 16#74 /foursuperior 16#75 /fivesuperior + 16#76 /sixsuperior 16#77 /sevensuperior 16#78 /eightsuperior + 16#79 /ninesuperior 16#7b /hyphensuperior 16#7d /parenleftsuperior + 16#7e /parenrightsuperior + 16#80 /zeroinferior 16#84 /fourinferior 16#85 /fiveinferior + 16#81 /oneinferior 16#82 /twoinferior 16#83 /threeinferior + 16#86 /sixinferior 16#87 /seveninferior 16#88 /eightinferior + 16#89 /nineinferior 16#8b /hypheninferior 16#8d /parenleftinferior + 16#8e /parenrightinferior + >> vg&redef + def + +% Unicode mathematical operators encoding (unicode codes \u2200-\u22ff) +/UCMathOpsEncoding + NullEncoding dup length array copy + << 16#00 /universal 16#02 /partialdiff 16#03 /existential + 16#05 /emptyset 16#06 /Delta 16#07 /gradient + 16#08 /element 16#09 /notelement 16#0b /suchthat + 16#0f /product 16#11 /summation 16#12 /minus + 16#15 /fraction 16#17 /asteriskmath 16#19 /bullet + 16#1a /radical 16#1d /proportional 16#1e /infinity + 16#20 /angle 16#23 /bar 16#27 /logicaland + 16#28 /logicalor 16#29 /intersection 16#2a /union + 16#2b /integral 16#34 /therefore 16#36 /colon + 16#3c /similar 16#45 /congruent 16#48 /approxequal + 16#60 /notequal 16#61 /equivalence 16#64 /lessequal + 16#65 /greaterequal 16#82 /propersubset 16#83 /propersuperset + 16#86 /reflexsubset 16#87 /reflexsuperset 16#95 /circleplus + 16#97 /circlemultiply 16#a5 /perpendicular 16#03 /existential + 16#c0 /logicaland 16#c1 /logicalor 16#c2 /intersection + 16#c3 /union 16#c4 /diamond 16#c5 /dotmath + >> vg&redef + def + +% Unicode arrows encoding (unicode codes \u2190-\u21ff) +% Also includes those "Letterlike" unicode characters +% which are available in the symbol font. (unicode codes \u2100-\u214f) +/UCArrowsEncoding + NullEncoding dup length array copy + << 16#11 /Ifraktur 16#1c /Rfraktur 16#22 /trademarkserif + 16#35 /aleph + 16#90 /arrowleft 16#91 /arrowup 16#92 /arrowright + 16#93 /arrowdown 16#94 /arrowboth 16#d0 /arrowdblleft + 16#d1 /arrowdblup 16#d2 /arrowdblright 16#d3 /arrowdbldown + 16#d4 /arrowdblboth + >> vg&redef + def + +/ZapfDingbats findfont /Encoding get +dup length array copy /UCDingbatsEncoding exch def +16#20 1 16#7f { + dup 16#20 sub exch + UCDingbatsEncoding exch get + UCDingbatsEncoding 3 1 roll put +} for +16#a0 1 16#ff { + dup 16#40 sub exch + UCDingbatsEncoding exch get + UCDingbatsEncoding 3 1 roll put +} for +UCDingbatsEncoding [ 16#c0 1 16#ff {} for ] vg&undef +[ 16#00 16#05 16#0a 16#0b 16#28 16#4c 16#4e 16#53 16#54 16#55 16#57 16#5f + 16#60 16#68 16#69 16#6a 16#6b 16#6c 16#6d 16#6e 16#6f 16#70 16#71 16#72 + 16#73 16#74 16#75 16#95 16#96 16#97 16#b0 16#bf +] vg&undef pop + +% Define the base fonts which don't change. +/Undefined-UC NullEncoding /Helvetica vg&newbasefont pop +/MathOps-UC UCMathOpsEncoding /Symbol vg&newbasefont pop +/Arrows-UC UCArrowsEncoding /Symbol vg&newbasefont pop +/Dingbats-UC UCDingbatsEncoding /ZapfDingbats vg&newbasefont pop + +% Make the SansSerif composite fonts. +/SansSerif /Helvetica 16#00 vg&newcompositefont +/SansSerif-Bold /Helvetica-Bold 16#01 vg&newcompositefont +/SansSerif-Italic /Helvetica-Oblique 16#02 vg&newcompositefont +/SansSerif-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont + +% Make the Serif composite fonts. +/Serif /Times-Roman 16#00 vg&newcompositefont +/Serif-Bold /Times-Bold 16#01 vg&newcompositefont +/Serif-Italic /Times-Italic 16#02 vg&newcompositefont +/Serif-BoldItalic /Times-BoldItalic 16#03 vg&newcompositefont + +% Make the Monospaced composite fonts. +/Monospaced /Courier 16#00 vg&newcompositefont +/Monospaced-Bold /Courier-Bold 16#01 vg&newcompositefont +/Monospaced-Italic /Courier-Oblique 16#02 vg&newcompositefont +/Monospaced-BoldItalic /Courier-BoldOblique 16#03 vg&newcompositefont + +% Make the Dialog composite fonts. +/Dialog /Helvetica 16#00 vg&newcompositefont +/Dialog-Bold /Helvetica-Bold 16#01 vg&newcompositefont +/Dialog-Italic /Helvetica-Oblique 16#02 vg&newcompositefont +/Dialog-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont + +% Make the DialogInput composite fonts. +/DialogInput /Helvetica 16#00 vg&newcompositefont +/DialogInput-Bold /Helvetica-Bold 16#01 vg&newcompositefont +/DialogInput-Italic /Helvetica-Oblique 16#02 vg&newcompositefont +/DialogInput-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont + +% Make the Typewriter composite fonts (JDK 1.1 only). +/Typewriter /Courier 16#00 vg&newcompositefont +/Typewriter-Bold /Courier-Bold 16#01 vg&newcompositefont +/Typewriter-Italic /Courier-Oblique 16#02 vg&newcompositefont +/Typewriter-BoldItalic /Courier-BoldOblique 16#03 vg&newcompositefont + + +/cfontH { + dup /fontsize exch def /SansSerif exch sf + /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def +} def +/cfontHB { + dup /fontsize exch def /SansSerif-Bold exch sf + /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def +} def +/cfontHI { + dup /fontsize exch def /SansSerif-Italic exch sf + /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def +} def +/cfontHBI { + dup /fontsize exch def /SansSerif-BoldItalic exch sf + /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def +} def + +/cfontT { + dup /fontsize exch def /Serif exch sf + /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def +} def +/cfontTB { + dup /fontsize exch def /Serif-Bold exch sf + /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def +} def +/cfontTI { + dup /fontsize exch def /Serif-Italic exch sf + /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def +} def +/cfontTBI { + dup /fontsize exch def /Serif-BoldItalic exch sf + /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def +} def + +/cfontC { + dup /fontsize exch def /Typewriter exch sf + /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def +} def +/cfontCB { + dup /fontsize exch def /Typewriter-Bold exch sf + /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def +} def +/cfontCI { + dup /fontsize exch def /Typewriter-Italic exch sf + /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def +} def +/cfontCBI { + dup /fontsize exch def /Typewriter-BoldItalic exch sf + /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def +} def + +% Darken or lighten the current color. +/darken {0.7 exch exp 3 copy + q 4 -1 roll vg&C + currentrgbcolor 3 {4 -2 roll mul} repeat + 3 array astore Q} def + +/displayColorMap +<< /Cr [1.00 0.00 0.00] /Cg [0.00 1.00 0.00] + /Cb [0.00 0.00 1.00] /Cc [1.00 0.00 0.00 0.00] + /Cm [0.00 1.00 0.00 0.00] /Cy [0.00 0.00 1.00 0.00] + /Co [1.00 0.78 0.00] /Cp [1.00 0.67 0.67] + /Cw [1 ] /Cgrl [0.75] + /Cgr [0.50] /Cgrd [0.25] + /Ck [0 ] + /CGr [1.00 0.00 0.00] /CGg [0.00 1.00 0.00] + /CGb [0.00 0.00 1.00] /CGc [1.00 0.00 0.00 0.00] + /CGm [0.00 1.00 0.00 0.00] /CGy [0.00 0.00 1.00 0.00] + /CGo [1.00 0.78 0.00] /CGp [1.00 0.67 0.67] + /CGw [1 ] /CGgrl [0.75] + /CGgr [0.50] /CGgrd [0.25] + /CGk [0 ] + /CIr [1.00 0.00 0.00] /CIg [0.00 1.00 0.00] + /CIb [0.00 0.00 1.00] /CIc [1.00 0.00 0.00 0.00] + /CIm [0.00 1.00 0.00 0.00] /CIy [0.00 0.00 1.00 0.00] + /CIo [1.00 0.78 0.00] /CIp [1.00 0.67 0.67] + /CIw [1 ] /CIgrl [0.75] + /CIgr [0.50] /CIgrd [0.25] + /CIk [0 ] +>> def + +/printColorMap +<< /Cr [1.00 0.33 0.33] /Cg [0.33 1.00 0.33] + /Cb [0.33 0.33 1.00] /Cc [1.00 0.00 0.00 0.00] + /Cm [0.00 1.00 0.00 0.00] /Cy [0.00 0.00 1.00 0.00] + /Co [1.00 0.78 0.00] /Cp [1.00 0.67 0.67] + /Cw [1 ] /Cgrl [0.75] + /Cgr [0.50] /Cgrd [0.25] + /Ck [0 ] + /CGr [1.00 0.33 0.33] /CGg [0.33 1.00 0.33] + /CGb [0.33 0.33 1.00] /CGc [1.00 0.00 0.00 0.00] + /CGm [0.00 1.00 0.00 0.00] /CGy [0.00 0.00 1.00 0.00] + /CGo [1.00 0.78 0.00] /CGp [1.00 0.67 0.67] + /CGw [1 ] /CGgrl [0.75] + /CGgr [0.50] /CGgrd [0.25] + /CGk [0 ] + /CIr [1.00 0.33 0.33] /CIg [0.33 1.00 0.33] + /CIb [0.33 0.33 1.00] /CIc [1.00 0.00 0.00 0.00] + /CIm [0.00 1.00 0.00 0.00] /CIy [0.00 0.00 1.00 0.00] + /CIo [1.00 0.78 0.00] /CIp [1.00 0.67 0.67] + /CIw [1 ] /CIgrl [0.75] + /CIgr [0.50] /CIgrd [0.25] + /CIk [0 ] +>> def + +/grayColorMap +<< /Cr [0 ] /Cg [0 ] + /Cb [0 ] /Cc [0 ] + /Cm [0 ] /Cy [0 ] + /Co [0 ] /Cp [0 ] + /Cw [0 ] /Cgrl [0 ] + /Cgr [0 ] /Cgrd [0 ] + /Ck [0 ] + /CGr [0.75] /CGg [1 ] + /CGb [0.50] /CGc [0.75] + /CGm [0.50] /CGy [1 ] + /CGo [0.75] /CGp [1 ] + /CGw [0 ] /CGgrl [0.25] + /CGgr [0.50] /CGgrd [0.75] + /CGk [1 ] + /CIr [1 ] /CIg [1 ] + /CIb [1 ] /CIc [1 ] + /CIm [1 ] /CIy [1 ] + /CIo [1 ] /CIp [1 ] + /CIw [1 ] /CIgrl [1 ] + /CIgr [1 ] /CIgrd [1 ] + /CIk [1 ] +>> def + +/bwColorMap +<< /Cr [0 ] /Cg [0 ] + /Cb [0 ] /Cc [0 ] + /Cm [0 ] /Cy [0 ] + /Co [0 ] /Cp [0 ] + /Cw [0 ] /Cgrl [0 ] + /Cgr [0 ] /Cgrd [0 ] + /Ck [0 ] + /CGr [1 ] /CGg [1 ] + /CGb [1 ] /CGc [1 ] + /CGm [1 ] /CGy [1 ] + /CGo [1 ] /CGp [1 ] + /CGw [0 ] /CGgrl [1 ] + /CGgr [1 ] /CGgrd [1 ] + /CGk [1 ] + /CIr [1 ] /CIg [1 ] + /CIb [1 ] /CIc [1 ] + /CIm [1 ] /CIy [1 ] + /CIo [1 ] /CIp [1 ] + /CIw [1 ] /CIgrl [1 ] + /CIgr [1 ] /CIgrd [1 ] + /CIk [1 ] +>> def + +% +% The following routines handle the alignment of and printing of +% tagged strings. +% + +% Predefine the bounding box values. +/bbllx 0 def /bblly 0 def /bburx 0 def /bbury 0 def + +% This routine pops the first unicode character off of a string and returns +% the remainder of the string, the character code of first character, +% and a "true" if the string was non-zero length. +% popfirst +% popfirst +/popfirst { + dup length 1 gt + {dup 0 get /vg&fbyte exch def + dup 1 get /vg&cbyte exch def + dup length 2 sub 2 exch getinterval true} + {pop false} ifelse +} def + +% This routine shows a single unicode character given the font and +% character codes. +% unicharshow -- +/unicharshow { + 2 string + dup 0 5 -1 roll put + dup 1 4 -1 roll put + internalshow +} def + +% This is an internal routine to alternate between determining the +% bounding box for stringsize and showing the string for recshow. +% internalshow -- +/internalshow {show} def + +% This is an internal routine to alternate between determining the +% bounding box for stringsize and stroking various ornaments. +% internalstroke -- +/internalstroke {S} def + +% Sets up internalshow to use the null device to determine string size. +% -- nullinternalshow -- +/nullinternalshow {/internalshow {false charpath flattenpath + pathbbox updatebbox} def} def + +% Sets up internalstroke to use the null device to determine string size. +% -- nullinternalstroke -- +/nullinternalstroke { + /internalstroke {flattenpath pathbbox updatebbox} def} def + +% This routine tests to see if the character code matches the first +% character of a string. +% testchar +/testchar {exch dup 3 -1 roll 0 get eq} def + +% Raise the text baseline for superscripts. +% -- raise -- +/raise { + 0 fontsize 2 div rmoveto + /fontsize fontsize 2 mul 3 div def + currentfont /FontName get fontsize sf +} def + +% Un-raise the text baseline for superscripts. +% -- unraise -- +/unraise { + /fontsize fontsize 1.5 mul def + 0 fontsize 2 div neg rmoveto +} def + +% Lower the text baseline for subscripts. +% -- lower -- +/lower { + 0 fontsize 3 div neg rmoveto + /fontsize fontsize 2 mul 3 div def + currentfont /FontName get fontsize sf +} def + +% Un-lower the text baseline for subscripts. +% -- unlower -- +/unlower { + /fontsize fontsize 1.5 mul def + 0 fontsize 3 div rmoveto +} def + +% Compare the top two elements on the stack and leave only the +% larger one. +/maxval {2 copy gt {pop} {exch pop} ifelse} def + +% Tokenize a string. Do not use the usual PostScript token because +% parentheses will not be interpreted correctly because of rescanning +% of the string. +/vg&token {/vg&string exch def /vg&index -1 def /vg&level 0 def +0 2 vg&string length 2 sub { + dup dup 1 add exch vg&string exch get 8 bitshift vg&string 3 -1 roll get or + dup 16#f0fe eq {pop 1}{16#f0ff eq {-1}{0} ifelse} ifelse + /vg&level exch vg&level add def + vg&level 0 eq {/vg&index exch def exit} if pop +} for +vg&index 0 ge { + vg&string vg&index 2 add dup vg&string length exch sub getinterval + vg&index 2 gt {vg&string 2 vg&index 2 sub getinterval}{()} ifelse + true} +{false} ifelse +} bind def + +% Recursively show an unicode string. +% recshow -- +/recshow { + popfirst + { + % Test to see if this is a string attribute. + vg&fbyte 16#f0 and 16#e0 eq + { + q + + % Font style. + currentfont dup /FontStyleBits known {/FontStyleBits get}{pop 0} ifelse + vg&cbyte or vg&fontstyles exch get fontsize exch exec + + vg&token pop recshow currentpoint Q m recshow + } + { + vg&fbyte 16#F8 and 16#F0 eq { + + % Superscript and/or subscript. + vg&cbyte 16#00 eq { + vg&token pop exch vg&token pop 3 -1 roll + q raise recshow unraise currentpoint pop Q exch + q lower recshow unlower currentpoint pop Q + maxval currentpoint exch pop m recshow } if + + % Strikeout. + vg&cbyte 16#01 eq { + vg&token pop currentpoint 3 -1 roll recshow + q 0 J vg&underline vg&uthick w + currentpoint 4 -2 roll fontsize 3 div add moveto + fontsize 3 div add lineto internalstroke Q + recshow} if + + % Underline. + vg&cbyte 16#02 eq { + vg&token pop currentpoint 3 -1 roll recshow + q 0 J vg&underline vg&uthick w + currentpoint 4 -2 roll vg&uoffset add moveto + vg&uoffset add lineto internalstroke Q + recshow} if + + % Dashed underline. + vg&cbyte 16#03 eq { + vg&token pop currentpoint 3 -1 roll recshow + q 0 J [ vg&uthick 5 mul vg&uthick 2 mul] 0 d + vg&underline vg&uthick w + currentpoint 4 -2 roll vg&uoffset add moveto + vg&uoffset add lineto internalstroke Q + recshow} if + + % Dotted underline. + vg&cbyte 16#04 eq { + vg&token pop currentpoint 3 -1 roll recshow + q 1 J [ 0 vg&uthick 3 mul] 0 d + vg&underline vg&uthick w + currentpoint 4 -2 roll vg&uoffset add moveto + vg&uoffset add lineto internalstroke Q + recshow} if + + % Thick underline. + vg&cbyte 16#05 eq { + vg&token pop currentpoint 3 -1 roll recshow + q 0 J vg&underline vg&uthick 2 mul w + currentpoint 4 -2 roll vg&uoffset vg&uthick 2 div sub add moveto + vg&uoffset vg&uthick 2 div sub add lineto internalstroke Q + recshow} if + + % Gray thick underline. + vg&cbyte 16#06 eq { + vg&token pop currentpoint 3 -1 roll recshow + q 0 J vg&underline vg&uthick 2 mul w 0.5 setgray + currentpoint 4 -2 roll vg&uoffset vg&uthick 2 div sub add moveto + vg&uoffset vg&uthick 2 div sub add lineto internalstroke Q + recshow} if + + % Overbar. + vg&cbyte 16#07 eq { + vg&token pop dup stringsize relative 4 1 roll pop pop exch + 3 -1 roll recshow + q 0 J vg&underline vg&uthick w + vg&uoffset neg add dup currentpoint pop exch m l internalstroke Q + recshow} if + } + { + vg&fbyte vg&cbyte unicharshow recshow + } ifelse + } ifelse + } if +} def + +% Get the underline position and thickness from the current font. +/vg&underline { + +currentfont dup /FontType get 0 eq {/FDepVector get 0 get} if +dup dup /FontInfo known { + /FontInfo get dup + dup /UnderlinePosition known { + /UnderlinePosition get /vg&uoffset exch def + } + { + pop /vg&uoffset 0 def + } ifelse + dup /UnderlineThickness known { + /UnderlineThickness get /vg&uthick exch def + } + { + pop /vg&uthick 0 def + } ifelse +} +{ + pop /vg&uoffset 0 def /vg&uthick 0 def +} ifelse +/FontMatrix get +currentfont dup /FontType get 0 eq +{/FontMatrix get matrix concatmatrix}{pop} ifelse +dup 0 vg&uoffset 3 -1 roll transform /vg&uoffset exch def pop +0 vg&uthick 3 -1 roll transform /vg&uthick exch def pop +} def + +% Make a frame with the coordinates on the stack. +% frame -- +/frame {4 copy m 3 1 roll exch l 4 -2 roll l l h} def + +% Resets the accumulated bounding box to a degenerate box at the +% current point. +% -- resetbbox -- +/resetbbox { + currentpoint 2 copy + /bbury exch def + /bburx exch def + /bblly exch def + /bbllx exch def +} def + +% Update the accumulated bounding box. +% updatebbox -- +/updatebbox { + dup bbury gt {/bbury exch def} {pop} ifelse + dup bburx gt {/bburx exch def} {pop} ifelse + dup bblly lt {/bblly exch def} {pop} ifelse + dup bbllx lt {/bbllx exch def} {pop} ifelse +} def + +% Set the bounding box to the values on the stack. +% updatebbox -- +/restorebbox { + /bbury exch def /bburx exch def /bblly exch def /bbllx exch def +} def + +% Push the accumulated bounding box onto the stack. +% -- pushbbox +/pushbbox {bbllx bblly bburx bbury} def + +% Make the relative bounding box relative to the currentpoint. +% inflate +/inflate { + 2 {fontsize 0.2 mul add 4 1 roll} repeat + 2 {fontsize 0.2 mul sub 4 1 roll} repeat +} def + +% Make the relative bounding box relative to the currentpoint. +% relative +/relative { + currentpoint 3 -1 roll add 3 1 roll add exch 4 2 roll + currentpoint 3 -1 roll add 3 1 roll add exch 4 2 roll +} def + +% Returns the size of a string appropriate for recshow. +% stringsize +/stringsize { + pushbbox /internalshow load /internalstroke load 7 -1 roll + q + nulldevice 0 0 m + nullinternalshow nullinternalstroke + resetbbox + recshow + /internalstroke exch def /internalshow exch def + pushbbox 8 -4 roll restorebbox + Q +} def + +% Calculate values for string positioning. +/calcval {4 copy + 3 -1 roll sub /widy exch def sub neg /widx exch def + pop pop /dy exch def /dx exch def} def + +% Utilities to position a string. +% First letter (U=upper, C=center, B=baseline, L=lower) +% Second letter (L=left, C=center, R=right) +/align [ +{calcval dx neg widy dy add neg rmoveto} % UL +{calcval dx neg widy 2 div dy add neg rmoveto} % CL +{calcval dx neg 0 rmoveto} % BL +{calcval dx neg dy neg rmoveto} % LL +{calcval widx dx add neg widy dy add neg rmoveto} % UR +{calcval widx dx add neg widy 2 div dy add neg rmoveto} % CR +{calcval widx dx add neg 0 rmoveto} % BR +{calcval widx dx add neg dy neg rmoveto} % LR +{calcval widx 2 div dx add neg widy dy add neg rmoveto} % UC +{calcval widx 2 div dx add neg widy 2 div dy add neg rmoveto} % CC +{calcval widx 2 div dx add neg 0 rmoveto} % BC +{calcval widx 2 div dx add neg dy neg rmoveto} % LC +] def + +/vg&str {m q 1 -1 scale dup stringsize 4 copy align 11 -1 roll get exec + q inflate relative frame exch exec Q recshow Q} def + +end /procDict exch def +%%EndProlog + +%%BeginSetup +save +procDict begin +printColorMap begin +595 842 setpagesize +20 20 20 20 setmargins +0 0 setorigin +1099 989 setsize +fittopage +landscape +imagescale +cliptobounds +setbasematrix +/Helvetica 10 sf +defaultGraphicsState +%%EndSetup + +0.0 0.0 0.0 RG +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] defaultmatrix matrix concatmatrix setmatrix +1.0 w +2 J +0 j +10.0 M +[ ] 0.0 d +1.0 1.0 1.0 RG +0.0 0.0 1099.0 989.0 rf +0.0 0.0 0.0 RG +q +0 0 1099 989 rc +q +1.0 1.0 1.0 RG +0.0 0.0 1099.0 989.0 rf +0.0 0.0 1099.0 989.0 rc +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] concat +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +newpath +80.0 -188.0 m +1179.0 -188.0 l +1179.0 801.0 l +80.0 801.0 l +80.0 -188.0 l +h +f +0.501961 0.501961 0.501961 RG +newpath +90.0 -178.0 m +1169.0 -178.0 l +1169.0 770.0 l +90.0 770.0 l +90.0 -178.0 l +h +S +[ 1.0 0.0 0.0 1.0 90.0 -178.0 ] concat +1.0 1.0 1.0 RG +newpath +98.7554 0.5 m +98.7554 9.5 l +90.7554 17.5 l +0.5 17.5 l +0.5 0.5 l +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +98.7554 0.5 m +98.7554 9.5 l +90.7554 17.5 l +0.5 17.5 l +0.5 0.5 l +h +S +0.501961 0.501961 0.501961 RG +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 4.0 2.0 ] concat +0.0 0.0 0.0 RG +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000C\000a\000s\000 \000d\000'\000u\000t\000i\000l\000i\000s\000a\000t\000i\000o\000n) show +Q +[ 1.0 0.0 0.0 1.0 10.0 10.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 340.0 60.0 ] concat +1.0 1.0 1.0 RG +newpath +25.0 20.0 m +12.5 20.0 12.5 0.0 25.0 0.0 c +37.5 0.0 37.5 20.0 25.0 20.0 c +25.0 20.0 m +25.0 25.0 l +0.0 25.0 m +50.0 25.0 l +25.0 25.0 m +25.0 50.0 l +25.0 50.0 m +0.0 75.0 l +25.0 50.0 m +50.0 75.0 l +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +25.0 20.0 m +12.5 20.0 12.5 0.0 25.0 0.0 c +37.5 0.0 37.5 20.0 25.0 20.0 c +25.0 20.0 m +25.0 25.0 l +0.0 25.0 m +50.0 25.0 l +25.0 25.0 m +25.0 50.0 l +25.0 50.0 m +0.0 75.0 l +25.0 50.0 m +50.0 75.0 l +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 6.604 85.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000U\000s\000a\000g\000e\000r) show +Q +[ 1.0 0.0 0.0 1.0 260.0 248.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 120.0 -110.0 ] concat +1.0 1.0 0.0 RG +newpath +0.0 0.0 m +90.0 0.0 l +100.0 10.0 l +90.0 10.0 l +90.0 0.0 l +100.0 10.0 l +100.0 70.0 l +0.0 70.0 l +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +0.0 0.0 m +90.0 0.0 l +100.0 10.0 l +90.0 10.0 l +90.0 0.0 l +100.0 10.0 l +100.0 70.0 l +0.0 70.0 l +h +S +2 J +10.0 M +10.0 21.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000M\000A\000S\000S\000E\000 \000N\000i\000c\000o\000l\000a\000s) show +Q +10.0 35.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000L\000I\000M\000I\000N\000 \000T\000h\000o\000m\000a\000s) show +Q +10.0 49.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\0002\000A\000 \000i\000n\000f\000o\000 \000T\000P\0003) show +Q +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 120.0 -20.0 ] concat +1.0 1.0 0.0 RG +newpath +0.0 0.0 m +150.1802 0.0 l +160.1802 10.0 l +150.1802 10.0 l +150.1802 0.0 l +160.1802 10.0 l +160.1802 104.0 l +0.0 104.0 l +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +0.0 0.0 m +150.1802 0.0 l +160.1802 10.0 l +150.1802 10.0 l +150.1802 0.0 l +160.1802 10.0 l +160.1802 104.0 l +0.0 104.0 l +h +S +2 J +10.0 M +10.0 21.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000-\000 \000V\000e\000r\000s\000i\000o\000n\000 \0000\000.\0001) show +Q +10.0 35.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000-\000 \0002\0006\000/\0001\0000\000/\0002\0000\0000\0005) show +Q +10.0 49.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000-\000 \000\351\000b\000a\000u\000c\000h\000e) show +Q +10.0 63.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000-\000 \000P\000r\000\351\000s\000e\000n\000t\000e\000 \000l\000e\000s\000 \000i\000n\000t\000\351\000r\000a\000c\000t\000i\000o\000n\000s) show +Q +10.0 77.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000e\000n\000t\000r\000e\000 \000l\000e\000s\000 \000u\000t\000i\000l\000i\000s\000a\000t\000e\000u\000r\000 \000e\000t\000 \000l\000e) show +Q +10.0 91.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000s\000y\000s\000t\000\350\000m\000e) show +Q +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 300.0 370.0 ] concat +1.0 1.0 1.0 RG +newpath +25.0 20.0 m +12.5 20.0 12.5 0.0 25.0 0.0 c +37.5 0.0 37.5 20.0 25.0 20.0 c +25.0 20.0 m +25.0 25.0 l +0.0 25.0 m +50.0 25.0 l +25.0 25.0 m +25.0 50.0 l +25.0 50.0 m +0.0 75.0 l +25.0 50.0 m +50.0 75.0 l +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +25.0 20.0 m +12.5 20.0 12.5 0.0 25.0 0.0 c +37.5 0.0 37.5 20.0 25.0 20.0 c +25.0 20.0 m +25.0 25.0 l +0.0 25.0 m +50.0 25.0 l +25.0 25.0 m +25.0 50.0 l +25.0 50.0 m +0.0 75.0 l +25.0 50.0 m +50.0 75.0 l +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 -2.2341 85.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000G\000u\000i\000c\000h\000e\000t\000i\000e\000r) show +Q +[ 1.0 0.0 0.0 1.0 220.0 558.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 460.0 80.0 ] concat +1.0 1.0 1.0 RG +newpath +141.2487 25.0 m +141.2487 38.807118 109.629101 50.0 70.62435 50.0 c +31.619598 50.0 0.0 38.807118 0.0 25.0 c +0.0 11.192881 31.619598 0.0 70.62435 0.0 c +109.629101 0.0 141.2487 11.192881 141.2487 25.0 c +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +141.2487 25.0 m +141.2487 38.807118 109.629101 50.0 70.62435 50.0 c +31.619598 50.0 0.0 38.807118 0.0 25.0 c +0.0 11.192881 31.619598 0.0 70.62435 0.0 c +109.629101 0.0 141.2487 11.192881 141.2487 25.0 c +h +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 22.6854 14.0 ] concat +[ 1.0 0.0 0.0 1.0 2.0 2.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000P\000a\000s\000s\000e\000r\000 \000u\000n\000e\000 \000b\000o\000r\000n\000e) show +Q +[ 1.0 0.0 0.0 1.0 402.6854 282.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 380.0 268.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 640.0 80.0 ] concat +1.0 1.0 1.0 RG +newpath +130.1822 25.0 m +130.1822 38.807118 101.039921 50.0 65.0911 50.0 c +29.142278 50.0 0.0 38.807118 0.0 25.0 c +0.0 11.192881 29.142278 0.0 65.0911 0.0 c +101.039921 0.0 130.1822 11.192881 130.1822 25.0 c +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +130.1822 25.0 m +130.1822 38.807118 101.039921 50.0 65.0911 50.0 c +29.142278 50.0 0.0 38.807118 0.0 25.0 c +0.0 11.192881 29.142278 0.0 65.0911 0.0 c +101.039921 0.0 130.1822 11.192881 130.1822 25.0 c +h +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 21.0647 13.5 ] concat +[ 1.0 0.0 0.0 1.0 2.0 2.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000P\000a\000s\000s\000e\000r\000 \000g\000u\000i\000c\000h\000e\000t) show +Q +[ 1.0 0.0 0.0 1.0 581.0647 281.5 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 560.0 268.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 640.0 190.0 ] concat +1.0 1.0 1.0 RG +newpath +148.8432 25.0 m +148.8432 38.807118 115.523514 50.0 74.4216 50.0 c +33.319685 50.0 0.0 38.807118 0.0 25.0 c +0.0 11.192881 33.319685 0.0 74.4216 0.0 c +115.523514 0.0 148.8432 11.192881 148.8432 25.0 c +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +148.8432 25.0 m +148.8432 38.807118 115.523514 50.0 74.4216 50.0 c +33.319685 50.0 0.0 38.807118 0.0 25.0 c +0.0 11.192881 33.319685 0.0 74.4216 0.0 c +115.523514 0.0 148.8432 11.192881 148.8432 25.0 c +h +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 23.7976 13.5 ] concat +[ 1.0 0.0 0.0 1.0 2.0 2.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000P\000a\000s\000s\000e\000r\000 \000t\000\351\000l\000\351\000p\000\351\000a\000g\000e) show +Q +[ 1.0 0.0 0.0 1.0 583.7976 391.5 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 560.0 378.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 640.0 -40.0 ] concat +1.0 1.0 1.0 RG +newpath +120.2765 25.45585 m +120.2765 39.514727 93.351688 50.9117 60.13825 50.9117 c +26.924811 50.9117 0.0 39.514727 0.0 25.45585 c +0.0 11.396972 26.924811 0.0 60.13825 0.0 c +93.351688 0.0 120.2765 11.396972 120.2765 25.45585 c +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +120.2765 25.45585 m +120.2765 39.514727 93.351688 50.9117 60.13825 50.9117 c +26.924811 50.9117 0.0 39.514727 0.0 25.45585 c +0.0 11.396972 26.924811 0.0 60.13825 0.0 c +93.351688 0.0 120.2765 11.396972 120.2765 25.45585 c +h +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 19.6141 7.4559 ] concat +[ 1.0 0.0 0.0 1.0 2.0 2.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000P\000a\000s\000s\000a\000g\000e\000 \000b\000o\000r\000n\000e) show +Q +0.0 25.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000a\000u\000t\000o\000m\000a\000t\000i\000q\000u\000e) show +Q +[ 1.0 0.0 0.0 1.0 579.6141 155.4559 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 560.0 148.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0 J +1.0 M +newpath +650.3242 -0.2826 m +592.1044 92.6967 l +S +2 J +10.0 M +[ 0.530705 -0.847557 0.847557 0.530705 592.1044 92.6967 ] concat +1.0 1.0 1.0 RG +newpath +12.0 -6.0 m +0.0 0.0 l +12.0 6.0 l +h +f +0.0 0.0 0.0 RG +newpath +12.0 -6.0 m +0.0 0.0 l +12.0 6.0 l +h +S +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0 J +1.0 M +newpath +648.3967 203.4641 m +592.5578 117.0149 l +S +2 J +10.0 M +[ 0.542574 0.840008 -0.840008 0.542574 592.5578 117.0149 ] concat +1.0 1.0 1.0 RG +newpath +12.0 -6.0 m +0.0 0.0 l +12.0 6.0 l +h +f +0.0 0.0 0.0 RG +newpath +12.0 -6.0 m +0.0 0.0 l +12.0 6.0 l +h +S +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0 J +1.0 M +newpath +640.0 105.0 m +601.2487 105.0 l +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 601.2487 105.0 ] concat +1.0 1.0 1.0 RG +newpath +12.0 -6.0 m +0.0 0.0 l +12.0 6.0 l +h +f +0.0 0.0 0.0 RG +newpath +12.0 -6.0 m +0.0 0.0 l +12.0 6.0 l +h +S +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0 J +1.0 M +newpath +390.0 105.0 m +460.0 105.0 l +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 390.0 105.0 ] concat +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 460.0 105.0 ] concat +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 830.0 60.0 ] concat +1.0 1.0 1.0 RG +newpath +100.0 25.0 m +100.0 38.807118 77.614237 50.0 50.0 50.0 c +22.385762 50.0 0.0 38.807118 0.0 25.0 c +0.0 11.192881 22.385762 0.0 50.0 0.0 c +77.614237 0.0 100.0 11.192881 100.0 25.0 c +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +100.0 25.0 m +100.0 38.807118 77.614237 50.0 50.0 50.0 c +22.385762 50.0 0.0 38.807118 0.0 25.0 c +0.0 11.192881 22.385762 0.0 50.0 0.0 c +77.614237 0.0 100.0 11.192881 100.0 25.0 c +h +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 21.3809 13.5 ] concat +[ 1.0 0.0 0.0 1.0 2.0 2.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000P\000a\000i\000e\000m\000e\000n\000t) show +Q +[ 1.0 0.0 0.0 1.0 771.3809 261.5 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 750.0 248.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 980.0 -40.0 ] concat +1.0 1.0 1.0 RG +newpath +100.0 25.0 m +100.0 38.807118 77.614237 50.0 50.0 50.0 c +22.385762 50.0 0.0 38.807118 0.0 25.0 c +0.0 11.192881 22.385762 0.0 50.0 0.0 c +77.614237 0.0 100.0 11.192881 100.0 25.0 c +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +100.0 25.0 m +100.0 38.807118 77.614237 50.0 50.0 50.0 c +22.385762 50.0 0.0 38.807118 0.0 25.0 c +0.0 11.192881 22.385762 0.0 50.0 0.0 c +77.614237 0.0 100.0 11.192881 100.0 25.0 c +h +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 27.0044 14.0 ] concat +[ 1.0 0.0 0.0 1.0 2.0 2.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000E\000s\000p\000e\000c\000e\000s) show +Q +[ 1.0 0.0 0.0 1.0 927.0044 162.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 900.0 148.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0 J +1.0 M +newpath +986.8647 -2.3573 m +923.1353 72.3573 l +S +2 J +10.0 M +[ 0.64896 -0.760823 0.760823 0.64896 923.1353 72.3573 ] concat +1.0 1.0 1.0 RG +newpath +12.0 -6.0 m +0.0 0.0 l +12.0 6.0 l +h +f +0.0 0.0 0.0 RG +newpath +12.0 -6.0 m +0.0 0.0 l +12.0 6.0 l +h +S +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 960.0 60.0 ] concat +1.0 1.0 1.0 RG +newpath +119.722 25.0 m +119.722 38.807118 92.921317 50.0 59.861 50.0 c +26.800682 50.0 0.0 38.807118 0.0 25.0 c +0.0 11.192881 26.800682 0.0 59.861 0.0 c +92.921317 0.0 119.722 11.192881 119.722 25.0 c +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +119.722 25.0 m +119.722 38.807118 92.921317 50.0 59.861 50.0 c +26.800682 50.0 0.0 38.807118 0.0 25.0 c +0.0 11.192881 26.800682 0.0 59.861 0.0 c +92.921317 0.0 119.722 11.192881 119.722 25.0 c +h +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 19.5329 14.0 ] concat +[ 1.0 0.0 0.0 1.0 2.0 2.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000C\000a\000r\000t\000e\000 \000B\000a\000n\000c\000a\000i\000r\000e) show +Q +[ 1.0 0.0 0.0 1.0 899.5329 262.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 880.0 248.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0 J +1.0 M +newpath +960.0 85.0016 m +930.0 85.0035 l +S +2 J +10.0 M +[ 1.0 -0.000063 0.000063 1.0 930.0 85.0035 ] concat +1.0 1.0 1.0 RG +newpath +12.0 -6.0 m +0.0 0.0 l +12.0 6.0 l +h +f +0.0 0.0 0.0 RG +newpath +12.0 -6.0 m +0.0 0.0 l +12.0 6.0 l +h +S +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 960.0 150.0 ] concat +1.0 1.0 1.0 RG +newpath +164.3706 25.0 m +164.3706 38.807118 127.574987 50.0 82.1853 50.0 c +36.795612 50.0 0.0 38.807118 0.0 25.0 c +0.0 11.192881 36.795612 0.0 82.1853 0.0 c +127.574987 0.0 164.3706 11.192881 164.3706 25.0 c +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +164.3706 25.0 m +164.3706 38.807118 127.574987 50.0 82.1853 50.0 c +36.795612 50.0 0.0 38.807118 0.0 25.0 c +0.0 11.192881 36.795612 0.0 82.1853 0.0 c +127.574987 0.0 164.3706 11.192881 164.3706 25.0 c +h +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 26.0715 14.0 ] concat +[ 1.0 0.0 0.0 1.0 2.0 2.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000C\000a\000r\000t\000e\000 \000d\000'\000a\000b\000o\000n\000n\000e\000m\000e\000n\000t) show +Q +[ 1.0 0.0 0.0 1.0 906.0715 352.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 880.0 338.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0 J +1.0 M +newpath +966.7706 165.0634 m +920.7282 99.5018 l +S +2 J +10.0 M +[ 0.574712 0.818356 -0.818356 0.574712 920.7282 99.5018 ] concat +1.0 1.0 1.0 RG +newpath +12.0 -6.0 m +0.0 0.0 l +12.0 6.0 l +h +f +0.0 0.0 0.0 RG +newpath +12.0 -6.0 m +0.0 0.0 l +12.0 6.0 l +h +S +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0 J +1.0 M +[ 5.0 5.0 ] 0.0 d +newpath +755.6161 -4.7186 m +835.1756 73.9233 l +S +2 J +10.0 M +[ ] 0.0 d +[ -0.711196 -0.702994 0.702994 -0.711196 835.1756 73.9233 ] concat +newpath +10.0 5.0 m +0.0 0.0 l +10.0 -5.0 l +S +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 798.9108 20.5812 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +[ 5.0 5.0 ] 0.0 d +newpath +S +2 J +10.0 M +[ ] 0.0 d +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000<\000<) show +Q +[ 1.0 0.0 0.0 1.0 718.9108 208.5812 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 20.4883 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000i\000n\000c\000l\000u\000d\000e) show +Q +[ 1.0 0.0 0.0 1.0 718.9108 208.5812 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 62.187 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000>\000>) show +Q +[ 1.0 0.0 0.0 1.0 718.9108 208.5812 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0 J +1.0 M +[ 5.0 5.0 ] 0.0 d +newpath +769.9014 102.6804 m +830.3639 88.0109 l +S +2 J +10.0 M +[ ] 0.0 d +[ -0.971806 0.235781 -0.235781 -0.971806 830.3639 88.0109 ] concat +newpath +10.0 5.0 m +0.0 0.0 l +10.0 -5.0 l +S +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 719.2784 76.4866 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +[ 5.0 5.0 ] 0.0 d +newpath +S +2 J +10.0 M +[ ] 0.0 d +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000<\000<) show +Q +[ 1.0 0.0 0.0 1.0 639.2784 264.4866 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 20.4883 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000i\000n\000c\000l\000u\000d\000e) show +Q +[ 1.0 0.0 0.0 1.0 639.2784 264.4866 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 62.187 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000>\000>) show +Q +[ 1.0 0.0 0.0 1.0 639.2784 264.4866 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0 J +1.0 M +[ 5.0 5.0 ] 0.0 d +newpath +788.6528 213.2128 m +960.1725 176.6191 l +S +2 J +10.0 M +[ ] 0.0 d +[ -0.97799 0.208654 -0.208654 -0.97799 960.1725 176.6191 ] concat +newpath +10.0 5.0 m +0.0 0.0 l +10.0 -5.0 l +S +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 793.6937 176.0235 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +[ 5.0 5.0 ] 0.0 d +newpath +S +2 J +10.0 M +[ ] 0.0 d +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000<\000<) show +Q +[ 1.0 0.0 0.0 1.0 713.6937 364.0235 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 20.4883 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000i\000n\000c\000l\000u\000d\000e) show +Q +[ 1.0 0.0 0.0 1.0 713.6937 364.0235 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 62.187 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000>\000>) show +Q +[ 1.0 0.0 0.0 1.0 713.6937 364.0235 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 873.9757 199.8035 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000 ) show +Q +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 450.0 370.0 ] concat +1.0 1.0 1.0 RG +newpath +147.0216 25.0 m +147.0216 38.807118 114.109693 50.0 73.5108 50.0 c +32.911906 50.0 0.0 38.807118 0.0 25.0 c +0.0 11.192881 32.911906 0.0 73.5108 0.0 c +114.109693 0.0 147.0216 11.192881 147.0216 25.0 c +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +147.0216 25.0 m +147.0216 38.807118 114.109693 50.0 73.5108 50.0 c +32.911906 50.0 0.0 38.807118 0.0 25.0 c +0.0 11.192881 32.911906 0.0 73.5108 0.0 c +114.109693 0.0 147.0216 11.192881 147.0216 25.0 c +h +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 23.5308 14.0 ] concat +[ 1.0 0.0 0.0 1.0 2.0 2.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000A\000u\000t\000o\000r\000i\000s\000e\000r\000 \000p\000a\000s\000s\000a\000g\000e) show +Q +[ 1.0 0.0 0.0 1.0 393.5308 572.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 370.0 558.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -40.0 90.0 ] concat +0 J +1.0 M +newpath +390.0 305.0 m +490.0 305.0 l +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 390.0 305.0 ] concat +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 -120.0 278.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 490.0 305.0 ] concat +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 -120.0 278.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 460.0 430.0 ] concat +1.0 1.0 1.0 RG +newpath +131.207 25.0 m +131.207 38.807118 101.835312 50.0 65.6035 50.0 c +29.371687 50.0 0.0 38.807118 0.0 25.0 c +0.0 11.192881 29.371687 0.0 65.6035 0.0 c +101.835312 0.0 131.207 11.192881 131.207 25.0 c +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +131.207 25.0 m +131.207 38.807118 101.835312 50.0 65.6035 50.0 c +29.371687 50.0 0.0 38.807118 0.0 25.0 c +0.0 11.192881 29.371687 0.0 65.6035 0.0 c +101.835312 0.0 131.207 11.192881 131.207 25.0 c +h +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 21.2148 14.0 ] concat +[ 1.0 0.0 0.0 1.0 2.0 2.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000F\000e\000r\000m\000e\000r\000 \000l\000a\000 \000b\000o\000r\000n\000e) show +Q +[ 1.0 0.0 0.0 1.0 401.2148 632.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 380.0 618.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -40.0 90.0 ] concat +0 J +1.0 M +newpath +390.0 360.0 m +500.0083 364.6015 l +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 390.0 360.0 ] concat +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 -120.0 278.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 500.0083 364.6015 ] concat +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 -120.0 278.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 460.0 -130.0 ] concat +1.0 1.0 1.0 RG +newpath +240.0 25.0 m +240.0 38.807118 186.274169 50.0 120.0 50.0 c +53.725830 50.0 0.0 38.807118 0.0 25.0 c +0.0 11.192881 53.725830 0.0 120.0 0.0 c +186.274169 0.0 240.0 11.192881 240.0 25.0 c +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +240.0 25.0 m +240.0 38.807118 186.274169 50.0 120.0 50.0 c +53.725830 50.0 0.0 38.807118 0.0 25.0 c +0.0 11.192881 53.725830 0.0 120.0 0.0 c +186.274169 0.0 240.0 11.192881 240.0 25.0 c +h +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 66.4456 14.0 ] concat +[ 1.0 0.0 0.0 1.0 2.0 2.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000D\000e\000m\000a\000n\000d\000e\000r\000 \000d\000e\000 \000l\000'\000a\000i\000d\000e) show +Q +[ 1.0 0.0 0.0 1.0 446.4456 72.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 380.0 58.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0 J +1.0 M +newpath +390.0 60.0 m +468.9783 -95.5119 l +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 390.0 60.0 ] concat +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 468.9783 -95.5119 ] concat +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 450.0 310.0 ] concat +1.0 1.0 1.0 RG +newpath +161.5525 25.45585 m +161.5525 39.514727 125.387741 50.9117 80.77625 50.9117 c +36.164758 50.9117 0.0 39.514727 0.0 25.45585 c +0.0 11.396972 36.164758 0.0 80.77625 0.0 c +125.387741 0.0 161.5525 11.396972 161.5525 25.45585 c +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +161.5525 25.45585 m +161.5525 39.514727 125.387741 50.9117 80.77625 50.9117 c +36.164758 50.9117 0.0 39.514727 0.0 25.45585 c +0.0 11.396972 36.164758 0.0 80.77625 0.0 c +125.387741 0.0 161.5525 11.396972 161.5525 25.45585 c +h +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 25.6588 7.4559 ] concat +[ 1.0 0.0 0.0 1.0 2.0 2.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000M\000o\000d\000i\000f\000i\000e\000r\000 \000l\000e\000 \000b\000a\000n\000d\000e\000a\000u) show +Q +0.0 25.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000a\000m\000o\000n\000t) show +Q +[ 1.0 0.0 0.0 1.0 395.6588 505.4559 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 370.0 498.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -40.0 90.0 ] concat +0 J +1.0 M +newpath +390.0 280.0 m +490.4044 247.9998 l +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 390.0 280.0 ] concat +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 -120.0 278.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 490.4044 247.9998 ] concat +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 -120.0 278.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 540.0 480.0 ] concat +1.0 1.0 1.0 RG +newpath +184.1274 25.0 m +184.1274 38.807118 142.909077 50.0 92.0637 50.0 c +41.218322 50.0 0.0 38.807118 0.0 25.0 c +0.0 11.192881 41.218322 0.0 92.0637 0.0 c +142.909077 0.0 184.1274 11.192881 184.1274 25.0 c +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +184.1274 25.0 m +184.1274 38.807118 142.909077 50.0 92.0637 50.0 c +41.218322 50.0 0.0 38.807118 0.0 25.0 c +0.0 11.192881 41.218322 0.0 92.0637 0.0 c +142.909077 0.0 184.1274 11.192881 184.1274 25.0 c +h +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 28.9648 14.0 ] concat +[ 1.0 0.0 0.0 1.0 2.0 2.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000D\000\351\000c\000l\000e\000n\000c\000h\000e\000r\000 \000u\000n\000e\000 \000a\000l\000a\000r\000m\000e) show +Q +[ 1.0 0.0 0.0 1.0 488.9648 682.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 460.0 668.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -40.0 90.0 ] concat +0 J +1.0 M +newpath +390.0 360.0 m +580.2634 413.1104 l +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 390.0 360.0 ] concat +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 -120.0 278.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 580.2634 413.1104 ] concat +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 -120.0 278.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 630.0 400.0 ] concat +1.0 1.0 1.0 RG +newpath +100.0 25.0 m +100.0 38.807118 77.614237 50.0 50.0 50.0 c +22.385762 50.0 0.0 38.807118 0.0 25.0 c +0.0 11.192881 22.385762 0.0 50.0 0.0 c +77.614237 0.0 100.0 11.192881 100.0 25.0 c +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +100.0 25.0 m +100.0 38.807118 77.614237 50.0 50.0 50.0 c +22.385762 50.0 0.0 38.807118 0.0 25.0 c +0.0 11.192881 22.385762 0.0 50.0 0.0 c +77.614237 0.0 100.0 11.192881 100.0 25.0 c +h +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 23.2393 14.0 ] concat +[ 1.0 0.0 0.0 1.0 2.0 2.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000E\000n\000c\000a\000i\000s\000s\000e\000r) show +Q +[ 1.0 0.0 0.0 1.0 573.2393 602.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 550.0 588.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -40.0 90.0 ] concat +0 J +1.0 M +newpath +390.0 335.0 m +670.0 335.0 l +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 390.0 335.0 ] concat +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 -120.0 278.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 670.0 335.0 ] concat +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 -120.0 278.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 590.0 550.0 ] concat +1.0 1.0 1.0 RG +newpath +154.6554 25.45585 m +154.6554 39.514727 120.034609 50.9117 77.3277 50.9117 c +34.620790 50.9117 0.0 39.514727 0.0 25.45585 c +0.0 11.396972 34.620790 0.0 77.3277 0.0 c +120.034609 0.0 154.6554 11.396972 154.6554 25.45585 c +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +154.6554 25.45585 m +154.6554 39.514727 120.034609 50.9117 77.3277 50.9117 c +34.620790 50.9117 0.0 39.514727 0.0 25.45585 c +0.0 11.396972 34.620790 0.0 77.3277 0.0 c +120.034609 0.0 154.6554 11.396972 154.6554 25.45585 c +h +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 24.6487 7.4559 ] concat +[ 1.0 0.0 0.0 1.0 2.0 2.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000I\000n\000i\000t\000i\000e\000r\000 \000u\000n\000 \000p\000a\000i\000e\000m\000e\000n\000t) show +Q +0.0 25.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000p\000a\000r\000 \000C\000B) show +Q +[ 1.0 0.0 0.0 1.0 534.6487 745.4559 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 510.0 738.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -40.0 90.0 ] concat +0 J +1.0 M +newpath +395.2342 362.6339 m +631.0397 481.2956 l +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 395.2342 362.6339 ] concat +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 -120.0 278.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 631.0397 481.2956 ] concat +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 -120.0 278.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -50.0 180.0 ] concat +0 J +1.0 M +newpath +246.25 535.0022 m +660.0 535.0 l +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 246.25 535.0022 ] concat +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 12.9904 1.964 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000s\000y\000s\000t\000\350\000m\000e\000 \000s\000u\000p\000e\000r\000v\000i\000s\000e\000u\000r) show +Q +[ 1.0 0.0 0.0 1.0 116.25 903.0022 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 2.2463 1.964 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000+) show +Q +[ 1.0 0.0 0.0 1.0 116.25 903.0022 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 12.9903 -21.5001 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\0001) show +Q +[ 1.0 0.0 0.0 1.0 116.25 903.0022 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -130.0 368.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 660.0 535.0 ] concat +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 -102.3278 -16.284 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000o\000u\000v\000r\000i\000r\000 \000u\000n\000e\000 \000b\000o\000r\000n\000e) show +Q +[ 1.0 0.0 0.0 1.0 530.0 903.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -113.0719 -16.284 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000+) show +Q +[ 1.0 0.0 0.0 1.0 530.0 903.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -19.9459 7.5001 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\0001) show +Q +[ 1.0 0.0 0.0 1.0 530.0 903.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -130.0 368.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 337.5222 545.0011 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000S\000y\000s\000t\000\350\000m\000e\000 \000s\000u\000p\000e\000r\000v\000i\000s\000e\000u\000r\000 \000<\000-\000>\000 \000O\000u\000v\000r\000i\000r\000 \000u\000n\000e\000 \000b\000o\000r\000n\000e) show +Q +[ 1.0 0.0 0.0 1.0 207.5222 913.0011 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -130.0 368.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 610.0 690.0 ] concat +1.0 1.0 1.0 RG +newpath +140.1853 25.0 m +140.1853 38.807118 108.803751 50.0 70.09265 50.0 c +31.381548 50.0 0.0 38.807118 0.0 25.0 c +0.0 11.192881 31.381548 0.0 70.09265 0.0 c +108.803751 0.0 140.1853 11.192881 140.1853 25.0 c +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +140.1853 25.0 m +140.1853 38.807118 108.803751 50.0 70.09265 50.0 c +31.381548 50.0 0.0 38.807118 0.0 25.0 c +0.0 11.192881 31.381548 0.0 70.09265 0.0 c +108.803751 0.0 140.1853 11.192881 140.1853 25.0 c +h +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 22.5297 14.0 ] concat +[ 1.0 0.0 0.0 1.0 2.0 2.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000O\000u\000v\000r\000i\000r\000 \000u\000n\000e\000 \000b\000o\000r\000n\000e) show +Q +[ 1.0 0.0 0.0 1.0 552.5297 892.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 530.0 878.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 0.0 25.0 ] concat +[ 1.0 0.0 0.0 1.0 530.0 878.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 140.1853 25.0 ] concat +[ 1.0 0.0 0.0 1.0 530.0 878.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 70.09265 0.0 ] concat +[ 1.0 0.0 0.0 1.0 530.0 878.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 70.09265 50.0 ] concat +[ 1.0 0.0 0.0 1.0 530.0 878.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 140.1853 0.0 ] concat +[ 1.0 0.0 0.0 1.0 530.0 878.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +[ 1.0 0.0 0.0 1.0 530.0 878.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 140.1853 50.0 ] concat +[ 1.0 0.0 0.0 1.0 530.0 878.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 0.0 50.0 ] concat +[ 1.0 0.0 0.0 1.0 530.0 878.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 590.0 630.0 ] concat +1.0 1.0 1.0 RG +newpath +194.078 25.0 m +194.078 38.807118 150.632159 50.0 97.039 50.0 c +43.445840 50.0 0.0 38.807118 0.0 25.0 c +0.0 11.192881 43.445840 0.0 97.039 0.0 c +150.632159 0.0 194.078 11.192881 194.078 25.0 c +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +194.078 25.0 m +194.078 38.807118 150.632159 50.0 97.039 50.0 c +43.445840 50.0 0.0 38.807118 0.0 25.0 c +0.0 11.192881 43.445840 0.0 97.039 0.0 c +150.632159 0.0 194.078 11.192881 194.078 25.0 c +h +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 30.4221 14.0 ] concat +[ 1.0 0.0 0.0 1.0 2.0 2.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000L\000i\000r\000e\000 \000u\000n\000 \000r\000a\000p\000p\000o\000r\000t\000 \000d\000'\000a\000l\000a\000r\000m\000e) show +Q +[ 1.0 0.0 0.0 1.0 540.4221 832.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 510.0 818.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -50.0 180.0 ] concat +0 J +1.0 M +newpath +246.25 474.8417 m +640.0 474.9975 l +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 246.25 474.8417 ] concat +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 -130.0 368.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 640.0 474.9975 ] concat +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 -130.0 368.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 140.0 630.0 ] concat +1.0 1.0 1.0 RG +newpath +28.125 22.5 m +14.0625 22.5 14.0625 0.0 28.125 0.0 c +42.1875 0.0 42.1875 22.5 28.125 22.5 c +28.125 22.5 m +28.125 28.125 l +0.0 28.125 m +56.25 28.125 l +28.125 28.125 m +28.125 56.25 l +28.125 56.25 m +0.0 84.375 l +28.125 56.25 m +56.25 84.375 l +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +28.125 22.5 m +14.0625 22.5 14.0625 0.0 28.125 0.0 c +42.1875 0.0 42.1875 22.5 28.125 22.5 c +28.125 22.5 m +28.125 28.125 l +0.0 28.125 m +56.25 28.125 l +28.125 28.125 m +28.125 56.25 l +28.125 56.25 m +0.0 84.375 l +28.125 56.25 m +56.25 84.375 l +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 -26.5366 95.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000S\000y\000s\000t\000\350\000m\000e\000 \000s\000u\000p\000e\000r\000v\000i\000s\000e\000u\000r) show +Q +[ 1.0 0.0 0.0 1.0 60.0 818.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 0.0 45.0 ] concat +[ 1.0 0.0 0.0 1.0 60.0 818.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 56.25 45.0 ] concat +[ 1.0 0.0 0.0 1.0 60.0 818.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 28.125 90.0 ] concat +[ 1.0 0.0 0.0 1.0 60.0 818.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 28.125 90.0 ] concat +[ 1.0 0.0 0.0 1.0 60.0 818.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 28.125 0.0 ] concat +[ 1.0 0.0 0.0 1.0 60.0 818.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 406.861328 770.0 ] concat +0.0 12.0 moveto +q 1 -1 scale +/Helvetica findfont 12.0 scalefont setfont +(Created with Poseidon for UML Community Edition. Not for Commercial Use.) show +Q +[ 1.0 0.0 0.0 1.0 -80.0 188.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] defaultmatrix matrix concatmatrix setmatrix +newpath +0.0 0.0 m +0.0 989.0 l +1099.0 989.0 l +1099.0 0.0 l +h +W +Q +end end restore showpage + +%%Trailer +%%EOF diff --git a/GL/BarrierePeage/Domainebarrièredepéage.eps b/GL/BarrierePeage/Domainebarrièredepéage.eps new file mode 100755 index 0000000..764c71b --- /dev/null +++ b/GL/BarrierePeage/Domainebarrièredepéage.eps @@ -0,0 +1,3570 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%BoundingBox: 71 20 524 822 +%%Creator: FreeHEP Graphics2D Driver +%%Producer: org.freehep.graphicsio.ps.PSGraphics2D Revision: 1.20 +%%For: +%%Title: +%%CreationDate: lundi 2 janvier 2006 16 h 10 CET +%%LanguageLevel: 3 +%%EndComments +%%BeginProlog +100 dict dup begin + +% +% File: org/freehep/graphicsio.ps/PSProlog.txt +% Author: Charles Loomis +% + +% Redefinitions which save some space in the output file. These are also +% the same as the PDF operators. +/q {gsave} def +/Q {grestore} def + +/n {newpath} def +/m {moveto} def +/l {lineto} def +/c {curveto} def +/h {closepath} def + +/re {4 -2 roll moveto + dup 0 exch rlineto exch 0 rlineto + neg 0 exch rlineto closepath} def + +/f {fill} def +/f* {eofill} def +/F {gsave vg&FC fill grestore} def +/F* {gsave vg&FC eofill grestore} def + +/s {closepath stroke} def +/S {stroke} def + +/b {closepath gsave vg&FC fill grestore + gsave stroke grestore newpath} def +/B {gsave vg&FC fill grestore gsave stroke grestore newpath} def +/b* {closepath gsave vg&FC eofill grestore + gsave stroke grestore newpath} def +/B* {gsave vg&FC eofill grestore gsave stroke grestore newpath} def + +/g {1 array astore /vg&fcolor exch def} def +/G {setgray} def +/k {4 array astore /vg&fcolor exch def} def +/K {setcmykcolor} def +/rg {3 array astore /vg&fcolor exch def} def +/RG {setrgbcolor} def + +% Initialize the fill color. +0 0 0 rg + +/vg&FC {mark vg&fcolor aload pop + counttomark 1 eq {G} if + counttomark 3 eq {RG} if + counttomark 4 eq {K} if + cleartomark } def + +/vg&DFC {/vg&fcolor exch def} def + +/vg&C {mark exch aload pop + counttomark 1 eq {G} if + counttomark 3 eq {RG} if + counttomark 4 eq {K} if + cleartomark } def + +/w {setlinewidth} def +/j {setlinejoin} def +/J {setlinecap} def +/M {setmiterlimit} def +/d {setdash} def +/i {setflat} def + +/W {clip} def +/W* {eoclip} def + +% Setup the default graphics state. +% (black; 1 pt. linewidth; miter join; butt-ends; solid) +/defaultGraphicsState {0 g 1 w 0 j 0 J [] 0 d} def + +% Emulation of the rectangle operators for PostScript implementations +% which do not implement all Level 2 features. This is an INCOMPLETE +% emulation; only the "x y width height rect..." form is emulated. +/*rf {gsave newpath re fill grestore} def +/*rs {gsave newpath re stroke grestore} def +/*rc {newpath re clip} def +/rf /rectfill where {pop /rectfill}{/*rf} ifelse load def +/rs /rectstroke where {pop /rectstroke}{/*rs} ifelse load def +/rc /rectclip where {pop /rectclip}{/*rc} ifelse load def + +% Emulation of the selectfont operator. This includes a 20% increase in +% the fontsize which is necessary to get sizes similar to the Java fonts. +/*sf {exch findfont exch + dup type /arraytype eq {makefont}{scalefont} ifelse setfont} bind def +/sf /selectfont where {pop {1.2 mul selectfont}}{{1.2 mul *sf}} ifelse def + +% Special version of stroke which allows the dash pattern to continue +% across path segments. (This may be needed for PostScript although +% modern printers seem to do this correctly.) +/vg&stroke { + currentdash pop length 0 eq + {stroke} + { + currentdash /vg&doffset exch def pop + flattenpath + {m vg&resetdash} + {2 copy + currentpoint + 3 -1 roll sub dup mul + 3 1 roll sub dup mul + add sqrt + 3 1 roll l + currentdash 3 -1 roll add setdash} + {} + {h vg&resetdash} + pathforall + stroke + vg&resetdash + } ifelse +} def +/vg&resetdash {currentdash pop vg&doffset setdash} def + +% Initialize variables for safety. +/delta 0 def +/xv 0 def /yv 0 def /width 0 def /height 0 def + +% Initialize to portrait INTERNATIONAL (Letter-height, A4-width) page. +/pw 595 def /ph 791 def /po true def /ftp false def + +% Initialize margins to 20 points. +/ml 20 def /mr 20 def /mt 20 def /mb 20 def + +% Temporary matrices. +/smatrix 0 def /nmatrix 0 def + +% set page size (usage: setpagesize) +/setpagesize {/ph exch def /pw exch def} def + +% set page orientation (usage: portrait or landscape) +/portrait {/po true def} def +/landscape {/po false def} def + +% force natural size for image (usage: naturalsize) +/naturalsize {/ftp false def} def + +% resize image to fill page (usage: fittopage) +/fittopage {/ftp true def} def + +% set margins of the page (usage: setmargins) +/setmargins {/mr exch def /mt exch def /mb exch def /ml exch def} def + +% set the graphic's size (usage: setsize) +/setsize {/gh exch def /gw exch def} def + +% set the graphic's origin (usage: setorigin) +/setorigin {/gy exch def /gx exch def} def + +% calculate image center +/imagecenter {pw ml sub mr sub 2 div ml add + ph mt sub mb sub 2 div mb add} def + +% calculate the necessary scaling +/imagescale {po {gw}{gh} ifelse pw ml sub mr sub div + po {gh}{gw} ifelse ph mt sub mb sub div + 2 copy lt {exch} if pop + ftp not {1 2 copy lt {exch} if pop} if + 1 exch div /sfactor exch def + /gw gw sfactor mul def /gh gh sfactor mul def} def + +% calculate image origin +/imageorigin {pw ml sub mr sub 2 div ml add + po {gw}{gh} ifelse 2 div sub + ph mt sub mb sub 2 div mb add + po {gh}{gw} ifelse 2 div po {add}{sub} ifelse} def + +% calculate the clipping origin +/cliporigin {pw ml sub mr sub 2 div ml add + po {gw}{gh} ifelse 2 div sub floor + ph mt sub mb sub 2 div mb add + po {gh}{gw} ifelse 2 div sub floor} def + +% Set the clipping region to the bounding box. +/cliptobounds {cliporigin po {gw}{gh} ifelse 1 add + po {gh}{gw} ifelse 1 add rc} def + +% set the base transformation matrix (usage: setbasematrix) +/setbasematrix {imageorigin translate + po {0}{90} ifelse rotate + sfactor sfactor neg scale + /defaultmatrix matrix currentmatrix def} def + +% The lower-right bias in drawing 1 pt. wide lines. +/bias {q 0.5 0.5 translate} def +/unbias {Q} def + +% Draw a line. (x0 y0 x1 y1 line) +/L {bias n m l S unbias} def + +% Polyline primitive. +/polyline {n m 1 exch 1 exch + {pop currentfile token pop currentfile token pop l} for + } def + +% Draw a polyline (n x0 y0 OPL x1 y1 x2 y2 ... ... xn yn) +/OPL {bias polyline S unbias} def + +% Draw a closed polyline (n x0 y0 CPL x1 y1 x2 y2 ... ... xn yn) +/CPL {bias polyline s unbias} def + +% Draw a filled polyline (n x0 y0 FPL x1 y1 x2 y2 ... ... xn yn) +/FPL {polyline h f*} def + +% Draw an oval. (x y w h OVL) +/OVL {matrix currentmatrix /smatrix exch def + /height exch def /width exch def + /yv exch def /xv exch def + width 2 div xv add height 2 div yv add translate + width currentlinewidth sub 2 div + height currentlinewidth sub 2 div neg + scale n 0 0 1 5 -2 roll arc + smatrix setmatrix S} def + +% Draw a filled oval. (x y w h FOVL) +/FOVL {matrix currentmatrix /smatrix exch def + /height exch def /width exch def + /yv exch def /xv exch def + width 2 div xv add height 2 div yv add translate + width 2 div + height 2 div neg + scale n 0 0 m 0 0 1 5 -2 roll arc + h smatrix setmatrix f} def + +% Draw a rounded rectangle. (x y w h arcwidth archeight RREC) +/RREC {matrix currentmatrix /smatrix exch def + 2 div /ah exch def + 2 div /aw exch def + /height exch def /width exch def + /yv exch def /xv exch def + aw ah scale matrix + currentmatrix /nmatrix exch def + smatrix setmatrix + n xv width add aw sub yv m + nmatrix setmatrix + currentpoint exch 1 add exch + currentpoint 1 add exch 1 add exch + 1 arct smatrix setmatrix + xv width add yv height add ah sub l + nmatrix setmatrix + currentpoint 1 add + currentpoint exch 1 sub exch 1 add + 1 arct smatrix setmatrix + xv aw add yv height add l + nmatrix setmatrix + currentpoint exch 1 sub exch + currentpoint exch 1 sub exch 1 sub + 1 arct smatrix setmatrix + xv yv ah add l + nmatrix setmatrix + currentpoint 1 sub + currentpoint exch 1 add exch 1 sub + 1 arct smatrix setmatrix + s} def + +% Draw a filled rounded rectangle. (x y w h arcwidth archeight FRREC) +/FRREC{matrix currentmatrix /smatrix exch def + 2 div /ah exch def + 2 div /aw exch def + /height exch def /width exch def + /yv exch def /xv exch def + aw ah scale matrix + currentmatrix /nmatrix exch def + smatrix setmatrix + n xv width add aw sub yv m + nmatrix setmatrix + currentpoint exch 1 add exch + currentpoint 1 add exch 1 add exch + 1 arct smatrix setmatrix + xv width add yv height add ah sub l + nmatrix setmatrix + currentpoint 1 add + currentpoint exch 1 sub exch 1 add + 1 arct smatrix setmatrix + xv aw add yv height add l + nmatrix setmatrix + currentpoint exch 1 sub exch + currentpoint exch 1 sub exch 1 sub + 1 arct smatrix setmatrix + xv yv ah add l + nmatrix setmatrix + currentpoint 1 sub + currentpoint exch 1 add exch 1 sub + 1 arct smatrix setmatrix + h f} def + +% Draw a string. (string x y STR) +/STR {q m 1 -1 scale recshow Q} def + +% Define basic plot symbols. +/xys {/siz exch def /yv exch def /xv exch def} def +/hline {xys n xv siz 2. div sub yv m siz 0 rlineto S} def +/vline {xys n xv yv siz 2. div sub m 0 siz rlineto S} def +/plus {xys n xv yv siz 2. div sub m 0 siz rlineto + xv siz 2. div sub yv m siz 0 rlineto S} def +/dot {n 2. div 0 360 arc s} def +/fdot {n 2. div 0 360 arc h f} def +/box {xys n xv siz 2 sqrt div 2 div sub yv siz 2 sqrt div 2 div sub + siz 2 sqrt div dup rs} def +/fbox {xys n xv siz 2 sqrt div 2 div sub yv siz 2 sqrt div 2 div sub + siz 2 sqrt div dup rf} def +/tridn{xys n xv yv siz 3 sqrt div add m + siz 2. div neg 3 sqrt 2. div siz mul neg rlineto + siz 0 rlineto s} def +/ftridn{xys n xv yv siz 3 sqrt div add m + siz 2. div neg 3 sqrt 2. div siz mul neg rlineto + siz 0 rlineto h f} def + +% Symbols defined in terms of the others. +/star {3 copy cross plus} def +/cross {xys q xv yv translate 45 rotate 0 0 siz plus Q} def +/diamond {xys q xv yv translate 45 rotate 0 0 siz box Q} def +/fdiamond {xys q xv yv translate 45 rotate 0 0 siz fbox Q} def +/triup {xys q xv yv translate 180 rotate 0 0 siz tridn Q} def +/ftriup {xys q xv yv translate 180 rotate 0 0 siz ftridn Q} def + +% Define the composite fonts used to print Unicode strings. +% Undefine particular values in an encoding array. +/vg&undef { {exch dup 3 -1 roll /.notdef put} forall } def +/vg&redef { {3 -1 roll dup 4 2 roll put} forall } def + +% usage: key encoding basefontname vg&newbasefont font +/vg&newbasefont { +findfont dup length dict copy + begin + currentdict /FID undef + /Encoding exch def + dup /FontName exch def + currentdict + end +definefont +} def + +% usage: key encoding basefontname vg&newskewedbasefont font +/vg&newskewedbasefont { +findfont dup length dict copy + begin + currentdict /FID undef + /Encoding exch def + dup /FontName exch def + exch FontMatrix exch matrix concatmatrix /FontMatrix exch def + currentdict + end +definefont +} def + +% usage: basekey suffix vg&nconcat name +/vg&nconcat { + 2 {dup length string cvs exch} repeat + dup length 3 -1 roll dup length 3 -1 roll add string + dup 0 4 -1 roll dup length 5 1 roll putinterval + dup 4 -2 roll exch putinterval cvn +} def + +%usage: fontname vg&skewmatrix matrix +/vg&skewmatrix { +findfont dup /FontInfo known + { + /FontInfo get dup /ItalicAngle known + { + [ 1 0 4 -1 roll /ItalicAngle get neg dup sin exch cos div 1 0 0 ] + } + {pop matrix} ifelse + } + {pop matrix} ifelse +} def + +% usage: newfontname basefontname vg&newcompositefont -- +/vg&newcompositefont { +/vg&fstyle exch def +/vg&bfont exch def +/vg&fname exch def +<< +/FontStyleBits vg&fstyle +/FontType 0 +/FontMatrix matrix +/FontName vg&fname +/FMapType 2 +/Encoding [ 0 1 255 {pop 6} for ] + dup 16#00 0 put % Latin + dup 16#03 1 put % Greek + dup 16#20 2 put % Punctuation + dup 16#21 3 put % Arrows + dup 16#22 4 put % MathOps + dup 16#27 5 put % Dingbats + +/FDepVector [ +vg&bfont /-UC-Latin vg&nconcat UCLatinEncoding +vg&bfont vg&newbasefont + +vg&bfont vg&skewmatrix +vg&bfont /-UC-Greek vg&nconcat UCGreekEncoding +/Symbol vg&newskewedbasefont + +vg&bfont /-UC-Punctuation vg&nconcat UCPunctuationEncoding +vg&bfont vg&newbasefont + +/Arrows-UC findfont +/MathOps-UC findfont +/Dingbats-UC findfont +/Undefined-UC findfont ] +>> +vg&fname exch definefont pop +} def + +% Null encoding vector (all elements set to .notdef) +/NullEncoding [ 256 {/.notdef} repeat ] def + +% Unicode Latin encoding (unicode codes \u0000-\u00ff) +/UCLatinEncoding + ISOLatin1Encoding dup length array copy + dup 16#60 /grave put + [ 16#90 16#91 16#92 16#93 16#94 16#95 16#96 + 16#97 16#98 16#9a 16#9b 16#9d 16#9e 16#9f + ] vg&undef + def + +% Unicode Greek encoding (unicode codes \u0370-\u03ff) +/UCGreekEncoding + NullEncoding dup length array copy + << 16#91 /Alpha 16#92 /Beta 16#93 /Gamma 16#94 /Delta + 16#95 /Epsilon 16#96 /Zeta 16#97 /Eta 16#98 /Theta + 16#99 /Iota 16#9a /Kappa 16#9b /Lambda 16#9c /Mu + 16#9d /Nu 16#9e /Xi 16#9f /Omicron 16#a0 /Pi + 16#a1 /Rho 16#a3 /Sigma 16#a4 /Tau 16#a5 /Upsilon + 16#a6 /Phi 16#a7 /Chi 16#a8 /Psi 16#a9 /Omega + 16#b1 /alpha 16#b2 /beta 16#b3 /gamma 16#b4 /delta + 16#b5 /epsilon 16#b6 /zeta 16#b7 /eta 16#b8 /theta + 16#b9 /iota 16#ba /kappa 16#bb /lambda 16#bc /mu + 16#bd /nu 16#be /xi 16#bf /omicron 16#c0 /pi + 16#c1 /rho 16#c2 /sigma1 16#c3 /sigma 16#c4 /tau + 16#c5 /upsilon 16#c6 /phi1 16#c7 /chi 16#c8 /psi + 16#c9 /omega 16#7e /semicolon 16#87 /dotmath 16#d1 /theta1 + 16#d2 /Upsilon1 16#d5 /phi 16#d6 /omega1 + >> vg&redef + def + +% Unicode punctuation encoding (unicode codes \u2000-\u206f) +/UCPunctuationEncoding + NullEncoding dup length array copy + << 16#10 /hyphen 16#11 /hyphen 16#12 /endash + 16#13 /emdash 16#18 /quoteleft 16#19 /quoteright + 16#1a /quotesinglbase 16#1b /quotesingle 16#1c /quotedblleft + 16#1d /quotedblright 16#1e /quotedblbase 16#1f /quotedbl + 16#20 /dagger 16#21 /daggerdbl 16#22 /bullet + 16#24 /period 16#26 /ellipsis 16#27 /periodcentered + 16#30 /perthousand 16#44 /fraction + 16#70 /zerosuperior 16#74 /foursuperior 16#75 /fivesuperior + 16#76 /sixsuperior 16#77 /sevensuperior 16#78 /eightsuperior + 16#79 /ninesuperior 16#7b /hyphensuperior 16#7d /parenleftsuperior + 16#7e /parenrightsuperior + 16#80 /zeroinferior 16#84 /fourinferior 16#85 /fiveinferior + 16#81 /oneinferior 16#82 /twoinferior 16#83 /threeinferior + 16#86 /sixinferior 16#87 /seveninferior 16#88 /eightinferior + 16#89 /nineinferior 16#8b /hypheninferior 16#8d /parenleftinferior + 16#8e /parenrightinferior + >> vg&redef + def + +% Unicode mathematical operators encoding (unicode codes \u2200-\u22ff) +/UCMathOpsEncoding + NullEncoding dup length array copy + << 16#00 /universal 16#02 /partialdiff 16#03 /existential + 16#05 /emptyset 16#06 /Delta 16#07 /gradient + 16#08 /element 16#09 /notelement 16#0b /suchthat + 16#0f /product 16#11 /summation 16#12 /minus + 16#15 /fraction 16#17 /asteriskmath 16#19 /bullet + 16#1a /radical 16#1d /proportional 16#1e /infinity + 16#20 /angle 16#23 /bar 16#27 /logicaland + 16#28 /logicalor 16#29 /intersection 16#2a /union + 16#2b /integral 16#34 /therefore 16#36 /colon + 16#3c /similar 16#45 /congruent 16#48 /approxequal + 16#60 /notequal 16#61 /equivalence 16#64 /lessequal + 16#65 /greaterequal 16#82 /propersubset 16#83 /propersuperset + 16#86 /reflexsubset 16#87 /reflexsuperset 16#95 /circleplus + 16#97 /circlemultiply 16#a5 /perpendicular 16#03 /existential + 16#c0 /logicaland 16#c1 /logicalor 16#c2 /intersection + 16#c3 /union 16#c4 /diamond 16#c5 /dotmath + >> vg&redef + def + +% Unicode arrows encoding (unicode codes \u2190-\u21ff) +% Also includes those "Letterlike" unicode characters +% which are available in the symbol font. (unicode codes \u2100-\u214f) +/UCArrowsEncoding + NullEncoding dup length array copy + << 16#11 /Ifraktur 16#1c /Rfraktur 16#22 /trademarkserif + 16#35 /aleph + 16#90 /arrowleft 16#91 /arrowup 16#92 /arrowright + 16#93 /arrowdown 16#94 /arrowboth 16#d0 /arrowdblleft + 16#d1 /arrowdblup 16#d2 /arrowdblright 16#d3 /arrowdbldown + 16#d4 /arrowdblboth + >> vg&redef + def + +/ZapfDingbats findfont /Encoding get +dup length array copy /UCDingbatsEncoding exch def +16#20 1 16#7f { + dup 16#20 sub exch + UCDingbatsEncoding exch get + UCDingbatsEncoding 3 1 roll put +} for +16#a0 1 16#ff { + dup 16#40 sub exch + UCDingbatsEncoding exch get + UCDingbatsEncoding 3 1 roll put +} for +UCDingbatsEncoding [ 16#c0 1 16#ff {} for ] vg&undef +[ 16#00 16#05 16#0a 16#0b 16#28 16#4c 16#4e 16#53 16#54 16#55 16#57 16#5f + 16#60 16#68 16#69 16#6a 16#6b 16#6c 16#6d 16#6e 16#6f 16#70 16#71 16#72 + 16#73 16#74 16#75 16#95 16#96 16#97 16#b0 16#bf +] vg&undef pop + +% Define the base fonts which don't change. +/Undefined-UC NullEncoding /Helvetica vg&newbasefont pop +/MathOps-UC UCMathOpsEncoding /Symbol vg&newbasefont pop +/Arrows-UC UCArrowsEncoding /Symbol vg&newbasefont pop +/Dingbats-UC UCDingbatsEncoding /ZapfDingbats vg&newbasefont pop + +% Make the SansSerif composite fonts. +/SansSerif /Helvetica 16#00 vg&newcompositefont +/SansSerif-Bold /Helvetica-Bold 16#01 vg&newcompositefont +/SansSerif-Italic /Helvetica-Oblique 16#02 vg&newcompositefont +/SansSerif-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont + +% Make the Serif composite fonts. +/Serif /Times-Roman 16#00 vg&newcompositefont +/Serif-Bold /Times-Bold 16#01 vg&newcompositefont +/Serif-Italic /Times-Italic 16#02 vg&newcompositefont +/Serif-BoldItalic /Times-BoldItalic 16#03 vg&newcompositefont + +% Make the Monospaced composite fonts. +/Monospaced /Courier 16#00 vg&newcompositefont +/Monospaced-Bold /Courier-Bold 16#01 vg&newcompositefont +/Monospaced-Italic /Courier-Oblique 16#02 vg&newcompositefont +/Monospaced-BoldItalic /Courier-BoldOblique 16#03 vg&newcompositefont + +% Make the Dialog composite fonts. +/Dialog /Helvetica 16#00 vg&newcompositefont +/Dialog-Bold /Helvetica-Bold 16#01 vg&newcompositefont +/Dialog-Italic /Helvetica-Oblique 16#02 vg&newcompositefont +/Dialog-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont + +% Make the DialogInput composite fonts. +/DialogInput /Helvetica 16#00 vg&newcompositefont +/DialogInput-Bold /Helvetica-Bold 16#01 vg&newcompositefont +/DialogInput-Italic /Helvetica-Oblique 16#02 vg&newcompositefont +/DialogInput-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont + +% Make the Typewriter composite fonts (JDK 1.1 only). +/Typewriter /Courier 16#00 vg&newcompositefont +/Typewriter-Bold /Courier-Bold 16#01 vg&newcompositefont +/Typewriter-Italic /Courier-Oblique 16#02 vg&newcompositefont +/Typewriter-BoldItalic /Courier-BoldOblique 16#03 vg&newcompositefont + + +/cfontH { + dup /fontsize exch def /SansSerif exch sf + /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def +} def +/cfontHB { + dup /fontsize exch def /SansSerif-Bold exch sf + /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def +} def +/cfontHI { + dup /fontsize exch def /SansSerif-Italic exch sf + /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def +} def +/cfontHBI { + dup /fontsize exch def /SansSerif-BoldItalic exch sf + /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def +} def + +/cfontT { + dup /fontsize exch def /Serif exch sf + /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def +} def +/cfontTB { + dup /fontsize exch def /Serif-Bold exch sf + /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def +} def +/cfontTI { + dup /fontsize exch def /Serif-Italic exch sf + /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def +} def +/cfontTBI { + dup /fontsize exch def /Serif-BoldItalic exch sf + /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def +} def + +/cfontC { + dup /fontsize exch def /Typewriter exch sf + /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def +} def +/cfontCB { + dup /fontsize exch def /Typewriter-Bold exch sf + /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def +} def +/cfontCI { + dup /fontsize exch def /Typewriter-Italic exch sf + /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def +} def +/cfontCBI { + dup /fontsize exch def /Typewriter-BoldItalic exch sf + /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def +} def + +% Darken or lighten the current color. +/darken {0.7 exch exp 3 copy + q 4 -1 roll vg&C + currentrgbcolor 3 {4 -2 roll mul} repeat + 3 array astore Q} def + +/displayColorMap +<< /Cr [1.00 0.00 0.00] /Cg [0.00 1.00 0.00] + /Cb [0.00 0.00 1.00] /Cc [1.00 0.00 0.00 0.00] + /Cm [0.00 1.00 0.00 0.00] /Cy [0.00 0.00 1.00 0.00] + /Co [1.00 0.78 0.00] /Cp [1.00 0.67 0.67] + /Cw [1 ] /Cgrl [0.75] + /Cgr [0.50] /Cgrd [0.25] + /Ck [0 ] + /CGr [1.00 0.00 0.00] /CGg [0.00 1.00 0.00] + /CGb [0.00 0.00 1.00] /CGc [1.00 0.00 0.00 0.00] + /CGm [0.00 1.00 0.00 0.00] /CGy [0.00 0.00 1.00 0.00] + /CGo [1.00 0.78 0.00] /CGp [1.00 0.67 0.67] + /CGw [1 ] /CGgrl [0.75] + /CGgr [0.50] /CGgrd [0.25] + /CGk [0 ] + /CIr [1.00 0.00 0.00] /CIg [0.00 1.00 0.00] + /CIb [0.00 0.00 1.00] /CIc [1.00 0.00 0.00 0.00] + /CIm [0.00 1.00 0.00 0.00] /CIy [0.00 0.00 1.00 0.00] + /CIo [1.00 0.78 0.00] /CIp [1.00 0.67 0.67] + /CIw [1 ] /CIgrl [0.75] + /CIgr [0.50] /CIgrd [0.25] + /CIk [0 ] +>> def + +/printColorMap +<< /Cr [1.00 0.33 0.33] /Cg [0.33 1.00 0.33] + /Cb [0.33 0.33 1.00] /Cc [1.00 0.00 0.00 0.00] + /Cm [0.00 1.00 0.00 0.00] /Cy [0.00 0.00 1.00 0.00] + /Co [1.00 0.78 0.00] /Cp [1.00 0.67 0.67] + /Cw [1 ] /Cgrl [0.75] + /Cgr [0.50] /Cgrd [0.25] + /Ck [0 ] + /CGr [1.00 0.33 0.33] /CGg [0.33 1.00 0.33] + /CGb [0.33 0.33 1.00] /CGc [1.00 0.00 0.00 0.00] + /CGm [0.00 1.00 0.00 0.00] /CGy [0.00 0.00 1.00 0.00] + /CGo [1.00 0.78 0.00] /CGp [1.00 0.67 0.67] + /CGw [1 ] /CGgrl [0.75] + /CGgr [0.50] /CGgrd [0.25] + /CGk [0 ] + /CIr [1.00 0.33 0.33] /CIg [0.33 1.00 0.33] + /CIb [0.33 0.33 1.00] /CIc [1.00 0.00 0.00 0.00] + /CIm [0.00 1.00 0.00 0.00] /CIy [0.00 0.00 1.00 0.00] + /CIo [1.00 0.78 0.00] /CIp [1.00 0.67 0.67] + /CIw [1 ] /CIgrl [0.75] + /CIgr [0.50] /CIgrd [0.25] + /CIk [0 ] +>> def + +/grayColorMap +<< /Cr [0 ] /Cg [0 ] + /Cb [0 ] /Cc [0 ] + /Cm [0 ] /Cy [0 ] + /Co [0 ] /Cp [0 ] + /Cw [0 ] /Cgrl [0 ] + /Cgr [0 ] /Cgrd [0 ] + /Ck [0 ] + /CGr [0.75] /CGg [1 ] + /CGb [0.50] /CGc [0.75] + /CGm [0.50] /CGy [1 ] + /CGo [0.75] /CGp [1 ] + /CGw [0 ] /CGgrl [0.25] + /CGgr [0.50] /CGgrd [0.75] + /CGk [1 ] + /CIr [1 ] /CIg [1 ] + /CIb [1 ] /CIc [1 ] + /CIm [1 ] /CIy [1 ] + /CIo [1 ] /CIp [1 ] + /CIw [1 ] /CIgrl [1 ] + /CIgr [1 ] /CIgrd [1 ] + /CIk [1 ] +>> def + +/bwColorMap +<< /Cr [0 ] /Cg [0 ] + /Cb [0 ] /Cc [0 ] + /Cm [0 ] /Cy [0 ] + /Co [0 ] /Cp [0 ] + /Cw [0 ] /Cgrl [0 ] + /Cgr [0 ] /Cgrd [0 ] + /Ck [0 ] + /CGr [1 ] /CGg [1 ] + /CGb [1 ] /CGc [1 ] + /CGm [1 ] /CGy [1 ] + /CGo [1 ] /CGp [1 ] + /CGw [0 ] /CGgrl [1 ] + /CGgr [1 ] /CGgrd [1 ] + /CGk [1 ] + /CIr [1 ] /CIg [1 ] + /CIb [1 ] /CIc [1 ] + /CIm [1 ] /CIy [1 ] + /CIo [1 ] /CIp [1 ] + /CIw [1 ] /CIgrl [1 ] + /CIgr [1 ] /CIgrd [1 ] + /CIk [1 ] +>> def + +% +% The following routines handle the alignment of and printing of +% tagged strings. +% + +% Predefine the bounding box values. +/bbllx 0 def /bblly 0 def /bburx 0 def /bbury 0 def + +% This routine pops the first unicode character off of a string and returns +% the remainder of the string, the character code of first character, +% and a "true" if the string was non-zero length. +% popfirst +% popfirst +/popfirst { + dup length 1 gt + {dup 0 get /vg&fbyte exch def + dup 1 get /vg&cbyte exch def + dup length 2 sub 2 exch getinterval true} + {pop false} ifelse +} def + +% This routine shows a single unicode character given the font and +% character codes. +% unicharshow -- +/unicharshow { + 2 string + dup 0 5 -1 roll put + dup 1 4 -1 roll put + internalshow +} def + +% This is an internal routine to alternate between determining the +% bounding box for stringsize and showing the string for recshow. +% internalshow -- +/internalshow {show} def + +% This is an internal routine to alternate between determining the +% bounding box for stringsize and stroking various ornaments. +% internalstroke -- +/internalstroke {S} def + +% Sets up internalshow to use the null device to determine string size. +% -- nullinternalshow -- +/nullinternalshow {/internalshow {false charpath flattenpath + pathbbox updatebbox} def} def + +% Sets up internalstroke to use the null device to determine string size. +% -- nullinternalstroke -- +/nullinternalstroke { + /internalstroke {flattenpath pathbbox updatebbox} def} def + +% This routine tests to see if the character code matches the first +% character of a string. +% testchar +/testchar {exch dup 3 -1 roll 0 get eq} def + +% Raise the text baseline for superscripts. +% -- raise -- +/raise { + 0 fontsize 2 div rmoveto + /fontsize fontsize 2 mul 3 div def + currentfont /FontName get fontsize sf +} def + +% Un-raise the text baseline for superscripts. +% -- unraise -- +/unraise { + /fontsize fontsize 1.5 mul def + 0 fontsize 2 div neg rmoveto +} def + +% Lower the text baseline for subscripts. +% -- lower -- +/lower { + 0 fontsize 3 div neg rmoveto + /fontsize fontsize 2 mul 3 div def + currentfont /FontName get fontsize sf +} def + +% Un-lower the text baseline for subscripts. +% -- unlower -- +/unlower { + /fontsize fontsize 1.5 mul def + 0 fontsize 3 div rmoveto +} def + +% Compare the top two elements on the stack and leave only the +% larger one. +/maxval {2 copy gt {pop} {exch pop} ifelse} def + +% Tokenize a string. Do not use the usual PostScript token because +% parentheses will not be interpreted correctly because of rescanning +% of the string. +/vg&token {/vg&string exch def /vg&index -1 def /vg&level 0 def +0 2 vg&string length 2 sub { + dup dup 1 add exch vg&string exch get 8 bitshift vg&string 3 -1 roll get or + dup 16#f0fe eq {pop 1}{16#f0ff eq {-1}{0} ifelse} ifelse + /vg&level exch vg&level add def + vg&level 0 eq {/vg&index exch def exit} if pop +} for +vg&index 0 ge { + vg&string vg&index 2 add dup vg&string length exch sub getinterval + vg&index 2 gt {vg&string 2 vg&index 2 sub getinterval}{()} ifelse + true} +{false} ifelse +} bind def + +% Recursively show an unicode string. +% recshow -- +/recshow { + popfirst + { + % Test to see if this is a string attribute. + vg&fbyte 16#f0 and 16#e0 eq + { + q + + % Font style. + currentfont dup /FontStyleBits known {/FontStyleBits get}{pop 0} ifelse + vg&cbyte or vg&fontstyles exch get fontsize exch exec + + vg&token pop recshow currentpoint Q m recshow + } + { + vg&fbyte 16#F8 and 16#F0 eq { + + % Superscript and/or subscript. + vg&cbyte 16#00 eq { + vg&token pop exch vg&token pop 3 -1 roll + q raise recshow unraise currentpoint pop Q exch + q lower recshow unlower currentpoint pop Q + maxval currentpoint exch pop m recshow } if + + % Strikeout. + vg&cbyte 16#01 eq { + vg&token pop currentpoint 3 -1 roll recshow + q 0 J vg&underline vg&uthick w + currentpoint 4 -2 roll fontsize 3 div add moveto + fontsize 3 div add lineto internalstroke Q + recshow} if + + % Underline. + vg&cbyte 16#02 eq { + vg&token pop currentpoint 3 -1 roll recshow + q 0 J vg&underline vg&uthick w + currentpoint 4 -2 roll vg&uoffset add moveto + vg&uoffset add lineto internalstroke Q + recshow} if + + % Dashed underline. + vg&cbyte 16#03 eq { + vg&token pop currentpoint 3 -1 roll recshow + q 0 J [ vg&uthick 5 mul vg&uthick 2 mul] 0 d + vg&underline vg&uthick w + currentpoint 4 -2 roll vg&uoffset add moveto + vg&uoffset add lineto internalstroke Q + recshow} if + + % Dotted underline. + vg&cbyte 16#04 eq { + vg&token pop currentpoint 3 -1 roll recshow + q 1 J [ 0 vg&uthick 3 mul] 0 d + vg&underline vg&uthick w + currentpoint 4 -2 roll vg&uoffset add moveto + vg&uoffset add lineto internalstroke Q + recshow} if + + % Thick underline. + vg&cbyte 16#05 eq { + vg&token pop currentpoint 3 -1 roll recshow + q 0 J vg&underline vg&uthick 2 mul w + currentpoint 4 -2 roll vg&uoffset vg&uthick 2 div sub add moveto + vg&uoffset vg&uthick 2 div sub add lineto internalstroke Q + recshow} if + + % Gray thick underline. + vg&cbyte 16#06 eq { + vg&token pop currentpoint 3 -1 roll recshow + q 0 J vg&underline vg&uthick 2 mul w 0.5 setgray + currentpoint 4 -2 roll vg&uoffset vg&uthick 2 div sub add moveto + vg&uoffset vg&uthick 2 div sub add lineto internalstroke Q + recshow} if + + % Overbar. + vg&cbyte 16#07 eq { + vg&token pop dup stringsize relative 4 1 roll pop pop exch + 3 -1 roll recshow + q 0 J vg&underline vg&uthick w + vg&uoffset neg add dup currentpoint pop exch m l internalstroke Q + recshow} if + } + { + vg&fbyte vg&cbyte unicharshow recshow + } ifelse + } ifelse + } if +} def + +% Get the underline position and thickness from the current font. +/vg&underline { + +currentfont dup /FontType get 0 eq {/FDepVector get 0 get} if +dup dup /FontInfo known { + /FontInfo get dup + dup /UnderlinePosition known { + /UnderlinePosition get /vg&uoffset exch def + } + { + pop /vg&uoffset 0 def + } ifelse + dup /UnderlineThickness known { + /UnderlineThickness get /vg&uthick exch def + } + { + pop /vg&uthick 0 def + } ifelse +} +{ + pop /vg&uoffset 0 def /vg&uthick 0 def +} ifelse +/FontMatrix get +currentfont dup /FontType get 0 eq +{/FontMatrix get matrix concatmatrix}{pop} ifelse +dup 0 vg&uoffset 3 -1 roll transform /vg&uoffset exch def pop +0 vg&uthick 3 -1 roll transform /vg&uthick exch def pop +} def + +% Make a frame with the coordinates on the stack. +% frame -- +/frame {4 copy m 3 1 roll exch l 4 -2 roll l l h} def + +% Resets the accumulated bounding box to a degenerate box at the +% current point. +% -- resetbbox -- +/resetbbox { + currentpoint 2 copy + /bbury exch def + /bburx exch def + /bblly exch def + /bbllx exch def +} def + +% Update the accumulated bounding box. +% updatebbox -- +/updatebbox { + dup bbury gt {/bbury exch def} {pop} ifelse + dup bburx gt {/bburx exch def} {pop} ifelse + dup bblly lt {/bblly exch def} {pop} ifelse + dup bbllx lt {/bbllx exch def} {pop} ifelse +} def + +% Set the bounding box to the values on the stack. +% updatebbox -- +/restorebbox { + /bbury exch def /bburx exch def /bblly exch def /bbllx exch def +} def + +% Push the accumulated bounding box onto the stack. +% -- pushbbox +/pushbbox {bbllx bblly bburx bbury} def + +% Make the relative bounding box relative to the currentpoint. +% inflate +/inflate { + 2 {fontsize 0.2 mul add 4 1 roll} repeat + 2 {fontsize 0.2 mul sub 4 1 roll} repeat +} def + +% Make the relative bounding box relative to the currentpoint. +% relative +/relative { + currentpoint 3 -1 roll add 3 1 roll add exch 4 2 roll + currentpoint 3 -1 roll add 3 1 roll add exch 4 2 roll +} def + +% Returns the size of a string appropriate for recshow. +% stringsize +/stringsize { + pushbbox /internalshow load /internalstroke load 7 -1 roll + q + nulldevice 0 0 m + nullinternalshow nullinternalstroke + resetbbox + recshow + /internalstroke exch def /internalshow exch def + pushbbox 8 -4 roll restorebbox + Q +} def + +% Calculate values for string positioning. +/calcval {4 copy + 3 -1 roll sub /widy exch def sub neg /widx exch def + pop pop /dy exch def /dx exch def} def + +% Utilities to position a string. +% First letter (U=upper, C=center, B=baseline, L=lower) +% Second letter (L=left, C=center, R=right) +/align [ +{calcval dx neg widy dy add neg rmoveto} % UL +{calcval dx neg widy 2 div dy add neg rmoveto} % CL +{calcval dx neg 0 rmoveto} % BL +{calcval dx neg dy neg rmoveto} % LL +{calcval widx dx add neg widy dy add neg rmoveto} % UR +{calcval widx dx add neg widy 2 div dy add neg rmoveto} % CR +{calcval widx dx add neg 0 rmoveto} % BR +{calcval widx dx add neg dy neg rmoveto} % LR +{calcval widx 2 div dx add neg widy dy add neg rmoveto} % UC +{calcval widx 2 div dx add neg widy 2 div dy add neg rmoveto} % CC +{calcval widx 2 div dx add neg 0 rmoveto} % BC +{calcval widx 2 div dx add neg dy neg rmoveto} % LC +] def + +/vg&str {m q 1 -1 scale dup stringsize 4 copy align 11 -1 roll get exec + q inflate relative frame exch exec Q recshow Q} def + +end /procDict exch def +%%EndProlog + +%%BeginSetup +save +procDict begin +printColorMap begin +595 842 setpagesize +20 20 20 20 setmargins +0 0 setorigin +1064 599 setsize +fittopage +landscape +imagescale +cliptobounds +setbasematrix +/Helvetica 10 sf +defaultGraphicsState +%%EndSetup + +0.0 0.0 0.0 RG +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] defaultmatrix matrix concatmatrix setmatrix +1.0 w +2 J +0 j +10.0 M +[ ] 0.0 d +1.0 1.0 1.0 RG +0.0 0.0 1064.0 599.0 rf +0.0 0.0 0.0 RG +q +0 0 1064 599 rc +q +1.0 1.0 1.0 RG +0.0 0.0 1064.0 599.0 rf +0.0 0.0 1064.0 599.0 rc +[ 1.0 0.0 0.0 1.0 -10.0 239.0 ] concat +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +newpath +10.0 -239.0 m +1074.0 -239.0 l +1074.0 360.0 l +10.0 360.0 l +10.0 -239.0 l +h +f +0.501961 0.501961 0.501961 RG +newpath +20.0 -229.0 m +1064.0 -229.0 l +1064.0 329.0 l +20.0 329.0 l +20.0 -229.0 l +h +S +[ 1.0 0.0 0.0 1.0 20.0 -228.0 ] concat +1.0 1.0 1.0 RG +newpath +171.7031 0.5 m +171.7031 10.5 l +163.7031 18.5 l +0.5 18.5 l +0.5 0.5 l +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +171.7031 0.5 m +171.7031 10.5 l +163.7031 18.5 l +0.5 18.5 l +0.5 0.5 l +h +S +0.501961 0.501961 0.501961 RG +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 4.0 2.0 ] concat +0.0 0.0 0.0 RG +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000D\000o\000m\000a\000i\000n\000e\000 \000b\000a\000r\000r\000i\000\350\000r\000e\000 \000d\000e\000 \000p\000\351\000a\000g\000e) show +Q +[ 1.0 0.0 0.0 1.0 10.0 11.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -10.0 239.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 50.0 88.4211 ] concat +1.0 1.0 0.0 RG +newpath +0.0 0.0 m +90.0 0.0 l +100.0 10.0 l +90.0 10.0 l +90.0 0.0 l +100.0 10.0 l +100.0 70.0 l +0.0 70.0 l +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +0.0 0.0 m +90.0 0.0 l +100.0 10.0 l +90.0 10.0 l +90.0 0.0 l +100.0 10.0 l +100.0 70.0 l +0.0 70.0 l +h +S +2 J +10.0 M +10.0 21.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000M\000A\000S\000S\000E\000 \000N\000i\000c\000o\000l\000a\000s) show +Q +10.0 35.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000L\000I\000M\000I\000N\000 \000T\000h\000o\000m\000a\000s) show +Q +10.0 49.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\0002\000A\000 \000i\000n\000f\000o\000 \000T\000P\0003) show +Q +[ 1.0 0.0 0.0 1.0 -10.0 239.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 512.5581 66.9474 ] concat +1.0 1.0 1.0 RG +newpath +0.5 0.5 m +271.835 0.5 l +271.835 82.5 l +0.5 82.5 l +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +0.5 0.5 m +271.835 0.5 l +271.835 82.5 l +0.5 82.5 l +h +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 1.0 1.0 ] concat +[ 1.0 0.0 0.0 1.0 102.1756 2.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif-BoldItalic findfont 11.0 scalefont setfont +(\000B\000o\000r\000n\000e\000P\000\351\000a\000g\000e) show +Q +[ 1.0 0.0 0.0 1.0 503.5581 306.9474 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 502.5581 305.9474 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 1.0 19.0 ] concat +1.0 1.0 1.0 RG +newpath +0.5 0.5 m +269.835 0.5 l +269.835 0.5 l +0.5 0.5 l +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +0.5 0.5 m +269.835 0.5 l +269.835 0.5 l +0.5 0.5 l +h +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 502.5581 305.9474 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 1.0 20.0 ] concat +[ 1.0 0.0 0.0 1.0 2.0 2.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 503.5581 325.9474 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 502.5581 305.9474 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 1.0 44.0 ] concat +1.0 1.0 1.0 RG +newpath +0.5 0.5 m +269.835 0.5 l +269.835 0.5 l +0.5 0.5 l +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +0.5 0.5 m +269.835 0.5 l +269.835 0.5 l +0.5 0.5 l +h +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 502.5581 305.9474 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 1.0 45.0 ] concat +[ 1.0 0.0 0.0 1.0 2.0 2.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 2.0 2.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +newpath +S +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000+) show +Q +[ 1.0 0.0 0.0 1.0 507.5581 354.9474 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 8.7441 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000v\000e\000h\000i\000c\000u\000l\000e\000D\000e\000t\000e\000c\000t\000\351) show +Q +[ 1.0 0.0 0.0 1.0 507.5581 354.9474 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 92.8286 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000\050) show +Q +[ 1.0 0.0 0.0 1.0 507.5581 354.9474 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 96.4058 0.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000b\000o\000u\000c\000l\000e) show +Q +[ 1.0 0.0 0.0 1.0 603.9639 354.9474 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 35.4492 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000:) show +Q +[ 1.0 0.0 0.0 1.0 603.9639 354.9474 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 38.9297 0.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000B\000o\000u\000c\000l\000e\000M\000a\000g\000n\000e\000t\000i\000q\000u\000e) show +Q +[ 1.0 0.0 0.0 1.0 642.8936 354.9474 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 603.9639 354.9474 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 507.5581 354.9474 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 232.7241 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000\051) show +Q +[ 1.0 0.0 0.0 1.0 507.5581 354.9474 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 236.3013 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000:) show +Q +[ 1.0 0.0 0.0 1.0 507.5581 354.9474 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 239.7817 0.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000v\000o\000i\000d) show +Q +[ 1.0 0.0 0.0 1.0 747.3398 354.9474 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 747.3398 354.9474 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 507.5581 354.9474 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 505.5581 352.9474 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 2.0 17.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +newpath +S +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000+) show +Q +[ 1.0 0.0 0.0 1.0 507.5581 369.9474 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 8.7441 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000p\000a\000i\000e\000m\000e\000n\000t\000P\000e\000r\000c\000u) show +Q +[ 1.0 0.0 0.0 1.0 507.5581 369.9474 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 87.5596 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000\050) show +Q +[ 1.0 0.0 0.0 1.0 507.5581 369.9474 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 91.1367 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000\051) show +Q +[ 1.0 0.0 0.0 1.0 507.5581 369.9474 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 94.7139 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000:) show +Q +[ 1.0 0.0 0.0 1.0 507.5581 369.9474 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 98.1943 0.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000v\000o\000i\000d) show +Q +[ 1.0 0.0 0.0 1.0 605.7524 369.9474 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 605.7524 369.9474 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 507.5581 369.9474 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 505.5581 352.9474 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 503.5581 350.9474 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 502.5581 305.9474 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -10.0 239.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 450.8837 228.0 ] concat +1.0 1.0 1.0 RG +newpath +0.5 0.5 m +99.5 0.5 l +99.5 69.5 l +0.5 69.5 l +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +0.5 0.5 m +99.5 0.5 l +99.5 69.5 l +0.5 69.5 l +h +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 1.0 1.0 ] concat +[ 1.0 0.0 0.0 1.0 7.2156 2.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif-Bold findfont 11.0 scalefont setfont +(\000B\000o\000r\000n\000e\000M\000a\000n\000u\000e\000l\000l\000e) show +Q +[ 1.0 0.0 0.0 1.0 441.8837 468.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 440.8837 467.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 1.0 19.0 ] concat +1.0 1.0 1.0 RG +newpath +0.5 0.5 m +97.5 0.5 l +97.5 0.5 l +0.5 0.5 l +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +0.5 0.5 m +97.5 0.5 l +97.5 0.5 l +0.5 0.5 l +h +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 440.8837 467.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 1.0 20.0 ] concat +[ 1.0 0.0 0.0 1.0 2.0 2.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 441.8837 487.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 440.8837 467.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 1.0 44.0 ] concat +1.0 1.0 1.0 RG +newpath +0.5 0.5 m +97.5 0.5 l +97.5 0.5 l +0.5 0.5 l +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +0.5 0.5 m +97.5 0.5 l +97.5 0.5 l +0.5 0.5 l +h +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 440.8837 467.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 1.0 45.0 ] concat +[ 1.0 0.0 0.0 1.0 2.0 2.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 441.8837 512.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 440.8837 467.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -10.0 239.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 200.0 0.0 ] concat +0 J +1.0 M +newpath +350.8837 228.0 m +350.8837 149.9474 l +S +2 J +10.0 M +[ 0.0 1.0 -1.0 -0.0 350.8837 149.9474 ] concat +1.0 1.0 1.0 RG +newpath +12.0 -6.0 m +0.0 0.0 l +12.0 6.0 l +h +f +0.0 0.0 0.0 RG +newpath +12.0 -6.0 m +0.0 0.0 l +12.0 6.0 l +h +S +[ 1.0 0.0 0.0 1.0 190.0 239.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -10.0 239.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 563.9535 228.0 ] concat +1.0 1.0 1.0 RG +newpath +0.5 0.5 m +111.0581 0.5 l +111.0581 69.5 l +0.5 69.5 l +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +0.5 0.5 m +111.0581 0.5 l +111.0581 69.5 l +0.5 69.5 l +h +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 1.0 1.0 ] concat +[ 1.0 0.0 0.0 1.0 2.0 2.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif-Bold findfont 11.0 scalefont setfont +(\000B\000o\000r\000n\000e\000A\000u\000t\000o\000m\000a\000t\000i\000q\000u\000e) show +Q +[ 1.0 0.0 0.0 1.0 554.9535 468.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 553.9535 467.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 1.0 19.0 ] concat +1.0 1.0 1.0 RG +newpath +0.5 0.5 m +109.0581 0.5 l +109.0581 0.5 l +0.5 0.5 l +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +0.5 0.5 m +109.0581 0.5 l +109.0581 0.5 l +0.5 0.5 l +h +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 553.9535 467.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 1.0 20.0 ] concat +[ 1.0 0.0 0.0 1.0 2.0 2.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 554.9535 487.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 553.9535 467.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 1.0 44.0 ] concat +1.0 1.0 1.0 RG +newpath +0.5 0.5 m +109.0581 0.5 l +109.0581 0.5 l +0.5 0.5 l +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +0.5 0.5 m +109.0581 0.5 l +109.0581 0.5 l +0.5 0.5 l +h +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 553.9535 467.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 1.0 45.0 ] concat +[ 1.0 0.0 0.0 1.0 2.0 2.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 554.9535 512.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 553.9535 467.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -10.0 239.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 697.5814 228.0 ] concat +1.0 1.0 1.0 RG +newpath +0.5 0.5 m +99.5 0.5 l +99.5 69.5 l +0.5 69.5 l +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +0.5 0.5 m +99.5 0.5 l +99.5 69.5 l +0.5 69.5 l +h +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 1.0 1.0 ] concat +[ 1.0 0.0 0.0 1.0 3.7083 2.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif-Bold findfont 11.0 scalefont setfont +(\000B\000o\000r\000n\000e\000T\000\351\000l\000\351\000p\000\351\000a\000g\000e) show +Q +[ 1.0 0.0 0.0 1.0 688.5814 468.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 687.5814 467.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 1.0 19.0 ] concat +1.0 1.0 1.0 RG +newpath +0.5 0.5 m +97.5 0.5 l +97.5 0.5 l +0.5 0.5 l +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +0.5 0.5 m +97.5 0.5 l +97.5 0.5 l +0.5 0.5 l +h +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 687.5814 467.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 1.0 20.0 ] concat +[ 1.0 0.0 0.0 1.0 2.0 2.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 688.5814 487.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 687.5814 467.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 1.0 44.0 ] concat +1.0 1.0 1.0 RG +newpath +0.5 0.5 m +97.5 0.5 l +97.5 0.5 l +0.5 0.5 l +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +0.5 0.5 m +97.5 0.5 l +97.5 0.5 l +0.5 0.5 l +h +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 687.5814 467.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 1.0 45.0 ] concat +[ 1.0 0.0 0.0 1.0 2.0 2.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 688.5814 512.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 687.5814 467.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -10.0 239.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 200.0 0.0 ] concat +0 J +1.0 M +newpath +497.5814 228.0 m +497.5814 149.9474 l +S +2 J +10.0 M +[ 0.0 1.0 -1.0 -0.0 497.5814 149.9474 ] concat +1.0 1.0 1.0 RG +newpath +12.0 -6.0 m +0.0 0.0 l +12.0 6.0 l +h +f +0.0 0.0 0.0 RG +newpath +12.0 -6.0 m +0.0 0.0 l +12.0 6.0 l +h +S +[ 1.0 0.0 0.0 1.0 190.0 239.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -10.0 239.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 934.0 77.6842 ] concat +1.0 1.0 1.0 RG +newpath +0.5 0.5 m +99.5 0.5 l +99.5 82.5 l +0.5 82.5 l +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +0.5 0.5 m +99.5 0.5 l +99.5 82.5 l +0.5 82.5 l +h +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 1.0 1.0 ] concat +[ 1.0 0.0 0.0 1.0 14.2329 2.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif-Bold findfont 11.0 scalefont setfont +(\000B\000a\000r\000r\000i\000\350\000r\000e\000A\000v\000a\000l) show +Q +[ 1.0 0.0 0.0 1.0 925.0 317.6842 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 924.0 316.6842 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 1.0 19.0 ] concat +1.0 1.0 1.0 RG +newpath +0.5 0.5 m +97.5 0.5 l +97.5 0.5 l +0.5 0.5 l +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +0.5 0.5 m +97.5 0.5 l +97.5 0.5 l +0.5 0.5 l +h +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 924.0 316.6842 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 1.0 20.0 ] concat +[ 1.0 0.0 0.0 1.0 2.0 2.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 925.0 336.6842 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 924.0 316.6842 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 1.0 44.0 ] concat +1.0 1.0 1.0 RG +newpath +0.5 0.5 m +97.5 0.5 l +97.5 0.5 l +0.5 0.5 l +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +0.5 0.5 m +97.5 0.5 l +97.5 0.5 l +0.5 0.5 l +h +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 924.0 316.6842 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 1.0 45.0 ] concat +[ 1.0 0.0 0.0 1.0 2.0 2.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 2.0 2.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +newpath +S +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000+) show +Q +[ 1.0 0.0 0.0 1.0 929.0 365.6842 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 8.7441 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000o\000u\000v\000r\000i\000r) show +Q +[ 1.0 0.0 0.0 1.0 929.0 365.6842 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 40.2026 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000\050) show +Q +[ 1.0 0.0 0.0 1.0 929.0 365.6842 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 43.7798 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000\051) show +Q +[ 1.0 0.0 0.0 1.0 929.0 365.6842 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 47.3569 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000:) show +Q +[ 1.0 0.0 0.0 1.0 929.0 365.6842 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 50.8374 0.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000v\000o\000i\000d) show +Q +[ 1.0 0.0 0.0 1.0 979.8374 365.6842 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 979.8374 365.6842 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 929.0 365.6842 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 927.0 363.6842 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 2.0 17.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +newpath +S +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000+) show +Q +[ 1.0 0.0 0.0 1.0 929.0 380.6842 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 8.7441 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000f\000e\000r\000m\000e\000r) show +Q +[ 1.0 0.0 0.0 1.0 929.0 380.6842 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 44.3169 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000\050) show +Q +[ 1.0 0.0 0.0 1.0 929.0 380.6842 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 47.894 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000\051) show +Q +[ 1.0 0.0 0.0 1.0 929.0 380.6842 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 51.4712 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000:) show +Q +[ 1.0 0.0 0.0 1.0 929.0 380.6842 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 54.9517 0.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000v\000o\000i\000d) show +Q +[ 1.0 0.0 0.0 1.0 983.9517 380.6842 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 983.9517 380.6842 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 929.0 380.6842 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 927.0 363.6842 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 925.0 361.6842 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 924.0 316.6842 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -10.0 239.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 200.0 0.0 ] concat +0 J +1.0 M +newpath +584.8931 109.8947 m +734.0 109.8947 l +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 584.8931 109.8947 ] concat +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 -0.0 -0.0 ] concat +newpath +0.0 0.0 m +10.0 -5.0 l +20.0 0.0 l +10.0 5.0 l +h +f +newpath +0.0 0.0 m +10.0 -5.0 l +20.0 0.0 l +10.0 5.0 l +h +S +[ 1.0 0.0 0.0 1.0 774.8931 348.8947 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 190.0 239.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 734.0 109.8947 ] concat +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 -77.465 -16.9628 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000b\000a\000r\000r\000i\000e\000r\000e\000A\000v\000a\000l) show +Q +[ 1.0 0.0 0.0 1.0 924.0 348.8947 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -85.8297 -16.9628 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000-) show +Q +[ 1.0 0.0 0.0 1.0 924.0 348.8947 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 190.0 239.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -10.0 239.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 553.6744 -169.2632 ] concat +1.0 1.0 1.0 RG +newpath +0.5 0.5 m +99.5 0.5 l +99.5 82.5 l +0.5 82.5 l +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +0.5 0.5 m +99.5 0.5 l +99.5 82.5 l +0.5 82.5 l +h +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 1.0 1.0 ] concat +[ 1.0 0.0 0.0 1.0 6.2407 2.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif-Bold findfont 11.0 scalefont setfont +(\000B\000a\000n\000d\000e\000a\000u\000A\000m\000o\000n\000t) show +Q +[ 1.0 0.0 0.0 1.0 544.6744 70.7368 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 543.6744 69.7368 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 1.0 19.0 ] concat +1.0 1.0 1.0 RG +newpath +0.5 0.5 m +97.5 0.5 l +97.5 0.5 l +0.5 0.5 l +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +0.5 0.5 m +97.5 0.5 l +97.5 0.5 l +0.5 0.5 l +h +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 543.6744 69.7368 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 1.0 20.0 ] concat +[ 1.0 0.0 0.0 1.0 2.0 2.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 544.6744 89.7368 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 543.6744 69.7368 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 1.0 44.0 ] concat +1.0 1.0 1.0 RG +newpath +0.5 0.5 m +97.5 0.5 l +97.5 0.5 l +0.5 0.5 l +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +0.5 0.5 m +97.5 0.5 l +97.5 0.5 l +0.5 0.5 l +h +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 543.6744 69.7368 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 1.0 45.0 ] concat +[ 1.0 0.0 0.0 1.0 2.0 2.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 2.0 2.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +newpath +S +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000+) show +Q +[ 1.0 0.0 0.0 1.0 548.6744 118.7368 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 8.7441 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000o\000u\000v\000r\000i\000r) show +Q +[ 1.0 0.0 0.0 1.0 548.6744 118.7368 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 40.2026 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000\050) show +Q +[ 1.0 0.0 0.0 1.0 548.6744 118.7368 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 43.7798 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000\051) show +Q +[ 1.0 0.0 0.0 1.0 548.6744 118.7368 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 47.3569 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000:) show +Q +[ 1.0 0.0 0.0 1.0 548.6744 118.7368 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 50.8374 0.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000v\000o\000i\000d) show +Q +[ 1.0 0.0 0.0 1.0 599.5118 118.7368 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 599.5118 118.7368 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 548.6744 118.7368 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 546.6744 116.7368 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 2.0 17.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +newpath +S +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000+) show +Q +[ 1.0 0.0 0.0 1.0 548.6744 133.7368 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 8.7441 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000f\000e\000r\000m\000e\000r) show +Q +[ 1.0 0.0 0.0 1.0 548.6744 133.7368 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 44.3169 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000\050) show +Q +[ 1.0 0.0 0.0 1.0 548.6744 133.7368 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 47.894 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000\051) show +Q +[ 1.0 0.0 0.0 1.0 548.6744 133.7368 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 51.4712 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000:) show +Q +[ 1.0 0.0 0.0 1.0 548.6744 133.7368 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 54.9517 0.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000v\000o\000i\000d) show +Q +[ 1.0 0.0 0.0 1.0 603.6261 133.7368 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 603.6261 133.7368 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 548.6744 133.7368 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 546.6744 116.7368 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 544.6744 114.7368 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 543.6744 69.7368 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -10.0 239.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 200.0 0.0 ] concat +0 J +1.0 M +newpath +363.9535 66.9474 m +363.9535 -86.2632 l +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 363.9535 66.9474 ] concat +0 J +1.0 M +newpath +S +2 J +10.0 M +[ -0.0 -1.0 1.0 0.0 -0.0 0.0 ] concat +newpath +0.0 0.0 m +10.0 -5.0 l +20.0 0.0 l +10.0 5.0 l +h +f +newpath +0.0 0.0 m +10.0 -5.0 l +20.0 0.0 l +10.0 5.0 l +h +S +[ 1.0 0.0 0.0 1.0 553.9535 305.9474 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 190.0 239.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 363.9535 -86.2632 ] concat +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 -88.8345 11.6471 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000b\000a\000n\000d\000e\000a\000u\000A\000m\000o\000n\000t) show +Q +[ 1.0 0.0 0.0 1.0 553.9535 152.7368 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -97.1992 11.6471 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000-) show +Q +[ 1.0 0.0 0.0 1.0 553.9535 152.7368 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 6.7344 12.9904 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\0001) show +Q +[ 1.0 0.0 0.0 1.0 553.9535 152.7368 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 190.0 239.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 373.9535 -16.6579 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000B\000o\000r\000n\000e\000P\000\351\000a\000g\000e\000 \000<\000-\000>\000 \000B\000a\000n\000d\000e\000a\000u\000A\000m\000o\000n\000t) show +Q +[ 1.0 0.0 0.0 1.0 563.9535 222.3421 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 190.0 239.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -10.0 239.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 913.4419 206.5263 ] concat +1.0 1.0 1.0 RG +newpath +0.5 0.5 m +113.5879 0.5 l +113.5879 82.5 l +0.5 82.5 l +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +0.5 0.5 m +113.5879 0.5 l +113.5879 82.5 l +0.5 82.5 l +h +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 1.0 1.0 ] concat +[ 1.0 0.0 0.0 1.0 2.0 2.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif-Bold findfont 11.0 scalefont setfont +(\000F\000e\000u\000D\000e\000S\000i\000g\000n\000a\000l\000i\000s\000a\000t\000i\000o\000n) show +Q +[ 1.0 0.0 0.0 1.0 904.4419 446.5263 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 903.4419 445.5263 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 1.0 19.0 ] concat +1.0 1.0 1.0 RG +newpath +0.5 0.5 m +111.5879 0.5 l +111.5879 0.5 l +0.5 0.5 l +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +0.5 0.5 m +111.5879 0.5 l +111.5879 0.5 l +0.5 0.5 l +h +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 903.4419 445.5263 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 1.0 20.0 ] concat +[ 1.0 0.0 0.0 1.0 2.0 2.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 904.4419 465.5263 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 903.4419 445.5263 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 1.0 44.0 ] concat +1.0 1.0 1.0 RG +newpath +0.5 0.5 m +111.5879 0.5 l +111.5879 0.5 l +0.5 0.5 l +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +0.5 0.5 m +111.5879 0.5 l +111.5879 0.5 l +0.5 0.5 l +h +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 903.4419 445.5263 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 1.0 45.0 ] concat +[ 1.0 0.0 0.0 1.0 2.0 2.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 2.0 2.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +newpath +S +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000+) show +Q +[ 1.0 0.0 0.0 1.0 908.4419 494.5263 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 8.7441 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000a\000u\000t\000o\000r\000i\000s\000e\000r) show +Q +[ 1.0 0.0 0.0 1.0 908.4419 494.5263 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 56.4341 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000\050) show +Q +[ 1.0 0.0 0.0 1.0 908.4419 494.5263 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 60.0112 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000\051) show +Q +[ 1.0 0.0 0.0 1.0 908.4419 494.5263 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 63.5884 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000:) show +Q +[ 1.0 0.0 0.0 1.0 908.4419 494.5263 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 67.0688 0.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000v\000o\000i\000d) show +Q +[ 1.0 0.0 0.0 1.0 975.5107 494.5263 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 975.5107 494.5263 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 908.4419 494.5263 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 906.4419 492.5263 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 2.0 17.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +newpath +S +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000+) show +Q +[ 1.0 0.0 0.0 1.0 908.4419 509.5263 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 8.7441 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000r\000e\000f\000u\000s\000e\000r) show +Q +[ 1.0 0.0 0.0 1.0 908.4419 509.5263 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 46.4814 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000\050) show +Q +[ 1.0 0.0 0.0 1.0 908.4419 509.5263 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 50.0586 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000\051) show +Q +[ 1.0 0.0 0.0 1.0 908.4419 509.5263 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 53.6357 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000:) show +Q +[ 1.0 0.0 0.0 1.0 908.4419 509.5263 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 57.1162 0.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000v\000o\000i\000d) show +Q +[ 1.0 0.0 0.0 1.0 965.5581 509.5263 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 965.5581 509.5263 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 908.4419 509.5263 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 906.4419 492.5263 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 904.4419 490.5263 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 903.4419 445.5263 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -10.0 239.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0 J +1.0 M +newpath +784.8931 149.9474 m +913.4419 206.5263 l +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 784.8931 149.9474 ] concat +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 0.915269 0.402843 -0.402843 0.915269 0.0 -0.0 ] concat +newpath +0.0 0.0 m +10.0 -5.0 l +20.0 0.0 l +10.0 5.0 l +h +f +newpath +0.0 0.0 m +10.0 -5.0 l +20.0 0.0 l +10.0 5.0 l +h +S +[ 1.0 0.0 0.0 1.0 774.8931 388.9474 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -10.0 239.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 913.4419 206.5263 ] concat +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 -10.0 239.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -10.0 239.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 255.5814 66.9474 ] concat +1.0 1.0 1.0 RG +newpath +0.5 0.5 m +119.4409 0.5 l +119.4409 69.5 l +0.5 69.5 l +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +0.5 0.5 m +119.4409 0.5 l +119.4409 69.5 l +0.5 69.5 l +h +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 1.0 1.0 ] concat +[ 1.0 0.0 0.0 1.0 7.2576 2.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif-Bold findfont 11.0 scalefont setfont +(\000B\000o\000u\000c\000l\000e\000M\000a\000g\000n\000\351\000t\000i\000q\000u\000e) show +Q +[ 1.0 0.0 0.0 1.0 246.5814 306.9474 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 245.5814 305.9474 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 1.0 19.0 ] concat +1.0 1.0 1.0 RG +newpath +0.5 0.5 m +117.4409 0.5 l +117.4409 0.5 l +0.5 0.5 l +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +0.5 0.5 m +117.4409 0.5 l +117.4409 0.5 l +0.5 0.5 l +h +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 245.5814 305.9474 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 1.0 20.0 ] concat +[ 1.0 0.0 0.0 1.0 2.0 2.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 246.5814 325.9474 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 245.5814 305.9474 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 1.0 44.0 ] concat +1.0 1.0 1.0 RG +newpath +0.5 0.5 m +117.4409 0.5 l +117.4409 0.5 l +0.5 0.5 l +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +0.5 0.5 m +117.4409 0.5 l +117.4409 0.5 l +0.5 0.5 l +h +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 245.5814 305.9474 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 1.0 45.0 ] concat +[ 1.0 0.0 0.0 1.0 2.0 2.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 2.0 2.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +newpath +S +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000+) show +Q +[ 1.0 0.0 0.0 1.0 250.5814 354.9474 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 8.7441 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000t\000y\000p\000e\000V\000\351\000h\000i\000c\000u\000l\000e) show +Q +[ 1.0 0.0 0.0 1.0 250.5814 354.9474 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 76.7529 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000\050) show +Q +[ 1.0 0.0 0.0 1.0 250.5814 354.9474 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 80.3301 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000\051) show +Q +[ 1.0 0.0 0.0 1.0 250.5814 354.9474 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 83.9072 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000:) show +Q +[ 1.0 0.0 0.0 1.0 250.5814 354.9474 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 87.3877 0.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000v\000o\000i\000d) show +Q +[ 1.0 0.0 0.0 1.0 337.9691 354.9474 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 337.9691 354.9474 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 250.5814 354.9474 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 248.5814 352.9474 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 246.5814 350.9474 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 245.5814 305.9474 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -10.0 239.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0 J +1.0 M +newpath +512.5581 88.4211 m +375.5223 88.4211 l +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 512.5581 88.4211 ] concat +0 J +1.0 M +newpath +S +2 J +10.0 M +[ -1.0 0.0 0.0 -1.0 0.0 0.0 ] concat +newpath +0.0 0.0 m +10.0 -5.0 l +20.0 0.0 l +10.0 5.0 l +h +f +newpath +0.0 0.0 m +10.0 -5.0 l +20.0 0.0 l +10.0 5.0 l +h +S +[ 1.0 0.0 0.0 1.0 502.5581 327.4211 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -10.0 239.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 375.5223 88.4211 ] concat +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 -10.0 239.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 415.047 64.4211 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000b\000o\000u\000c\000l\000e\000A\000v\000a\000l) show +Q +[ 1.0 0.0 0.0 1.0 405.047 303.4211 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -10.0 239.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -10.0 239.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 0.0 0.0001 ] concat +0 J +1.0 M +newpath +512.5581 131.3684 m +375.5223 131.3684 l +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 512.5581 131.3684 ] concat +0 J +1.0 M +newpath +S +2 J +10.0 M +[ -1.0 0.0 0.0 -1.0 0.0 0.0 ] concat +newpath +0.0 0.0 m +10.0 -5.0 l +20.0 0.0 l +10.0 5.0 l +h +f +newpath +0.0 0.0 m +10.0 -5.0 l +20.0 0.0 l +10.0 5.0 l +h +S +[ 1.0 0.0 0.0 1.0 502.5581 370.3685 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -10.0 239.0001 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 375.5223 131.3684 ] concat +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 -10.0 239.0001 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 408.5372 107.3684 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000b\000o\000u\000c\000l\000e\000A\000m\000o\000n\000t) show +Q +[ 1.0 0.0 0.0 1.0 398.5372 346.3685 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -10.0 239.0001 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -10.0 239.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 841.4884 -51.1579 ] concat +1.0 1.0 1.0 RG +newpath +0.5 0.5 m +104.4624 0.5 l +104.4624 60.5 l +0.5 60.5 l +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +0.5 0.5 m +104.4624 0.5 l +104.4624 60.5 l +0.5 60.5 l +h +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 1.0 1.0 ] concat +[ 1.0 0.0 0.0 1.0 7.677 2.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000<\000<) show +Q +[ 1.0 0.0 0.0 1.0 840.1654 190.8421 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 20.4883 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000i\000n\000t\000e\000r\000f\000a\000c\000e) show +Q +[ 1.0 0.0 0.0 1.0 840.1654 190.8421 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 70.1201 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000>\000>) show +Q +[ 1.0 0.0 0.0 1.0 840.1654 190.8421 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 832.4884 188.8421 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 2.0 18.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif-Bold findfont 11.0 scalefont setfont +(\000S\000y\000s\000t\000\350\000m\000e\000P\000a\000i\000e\000m\000e\000n\000t) show +Q +[ 1.0 0.0 0.0 1.0 832.4884 188.8421 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 831.4884 187.8421 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 1.0 35.0 ] concat +1.0 1.0 1.0 RG +newpath +0.5 0.5 m +102.4624 0.5 l +102.4624 0.5 l +0.5 0.5 l +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +0.5 0.5 m +102.4624 0.5 l +102.4624 0.5 l +0.5 0.5 l +h +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 831.4884 187.8421 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 1.0 36.0 ] concat +[ 1.0 0.0 0.0 1.0 2.0 2.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 832.4884 223.8421 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 831.4884 187.8421 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -10.0 239.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0 J +1.0 M +newpath +784.8931 66.9474 m +841.4884 9.8421 l +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 784.8931 66.9474 ] concat +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 0.703928 -0.710271 0.710271 0.703928 -0.0 0.0 ] concat +newpath +0.0 0.0 m +10.0 -5.0 l +20.0 0.0 l +10.0 5.0 l +h +f +newpath +0.0 0.0 m +10.0 -5.0 l +20.0 0.0 l +10.0 5.0 l +h +S +[ 1.0 0.0 0.0 1.0 774.8931 305.9474 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -10.0 239.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 841.4884 9.8421 ] concat +0 J +1.0 M +newpath +S +2 J +10.0 M +[ -0.703928 0.710271 -0.710271 -0.703928 0.0 0.0 ] concat +1.0 1.0 1.0 RG +newpath +10.0 -5.0 m +0.0 0.0 l +h +10.0 5.0 m +0.0 0.0 l +h +f +0.0 0.0 0.0 RG +newpath +10.0 -5.0 m +0.0 0.0 l +h +10.0 5.0 m +0.0 0.0 l +h +S +[ 1.0 0.0 0.0 1.0 831.4884 248.8421 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -10.0 239.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -10.0 239.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 748.9767 -180.0 ] concat +1.0 1.0 1.0 RG +newpath +0.5 0.5 m +116.5083 0.5 l +116.5083 85.5 l +0.5 85.5 l +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +0.5 0.5 m +116.5083 0.5 l +116.5083 85.5 l +0.5 85.5 l +h +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 1.0 1.0 ] concat +[ 1.0 0.0 0.0 1.0 23.4753 2.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000<\000<) show +Q +[ 1.0 0.0 0.0 1.0 763.452 62.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 20.4883 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000a\000c\000t\000o\000r) show +Q +[ 1.0 0.0 0.0 1.0 763.452 62.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 50.5693 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000>\000>) show +Q +[ 1.0 0.0 0.0 1.0 763.452 62.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 739.9767 60.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 8.8608 18.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif-Bold findfont 11.0 scalefont setfont +(\000P\000o\000s\000t\000e\000S\000u\000p\000e\000r\000v\000i\000s\000i\000o\000n) show +Q +[ 1.0 0.0 0.0 1.0 739.9767 60.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 738.9767 59.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 1.0 35.0 ] concat +1.0 1.0 1.0 RG +newpath +0.5 0.5 m +114.5083 0.5 l +114.5083 0.5 l +0.5 0.5 l +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +0.5 0.5 m +114.5083 0.5 l +114.5083 0.5 l +0.5 0.5 l +h +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 738.9767 59.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 1.0 36.0 ] concat +[ 1.0 0.0 0.0 1.0 2.0 2.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 739.9767 95.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 738.9767 59.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 1.0 60.0 ] concat +1.0 1.0 1.0 RG +newpath +0.5 0.5 m +114.5083 0.5 l +114.5083 0.5 l +0.5 0.5 l +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +0.5 0.5 m +114.5083 0.5 l +114.5083 0.5 l +0.5 0.5 l +h +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 738.9767 59.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 1.0 61.0 ] concat +[ 1.0 0.0 0.0 1.0 2.0 2.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 2.0 2.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +newpath +S +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000+) show +Q +[ 1.0 0.0 0.0 1.0 743.9767 124.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 8.7441 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000a\000u\000t\000o\000r\000i\000s\000a\000t\000i\000o\000n) show +Q +[ 1.0 0.0 0.0 1.0 743.9767 124.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 72.7568 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000\050) show +Q +[ 1.0 0.0 0.0 1.0 743.9767 124.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 76.334 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000\051) show +Q +[ 1.0 0.0 0.0 1.0 743.9767 124.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 79.9111 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000:) show +Q +[ 1.0 0.0 0.0 1.0 743.9767 124.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 83.3916 0.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000b\000o\000o\000l) show +Q +[ 1.0 0.0 0.0 1.0 827.3683 124.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 827.3683 124.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 743.9767 124.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 741.9767 122.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 739.9767 120.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 738.9767 59.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -10.0 239.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0 J +1.0 M +newpath +748.9767 66.9474 m +748.9767 -94.0 l +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 748.9767 66.9474 ] concat +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 -10.0 239.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 748.9767 -94.0 ] concat +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 -10.0 239.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -10.0 239.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 50.0 174.3158 ] concat +1.0 1.0 0.0 RG +newpath +0.0 0.0 m +90.0 0.0 l +100.0 10.0 l +90.0 10.0 l +90.0 0.0 l +100.0 10.0 l +100.0 100.0 l +0.0 100.0 l +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +0.0 0.0 m +90.0 0.0 l +100.0 10.0 l +90.0 10.0 l +90.0 0.0 l +100.0 10.0 l +100.0 100.0 l +0.0 100.0 l +h +S +2 J +10.0 M +10.0 21.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000-\000 \000V\000e\000r\000s\000i\000o\000n\000 \0000\000.\0001) show +Q +10.0 35.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000-\000 \0000\0004\000/\0001\0001\000/\0002\0000\0000\0005) show +Q +10.0 49.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000-\000 \000\351\000b\000a\000u\000c\000h\000e) show +Q +10.0 63.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000-\000 ) show +Q +[ 1.0 0.0 0.0 1.0 -10.0 239.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0 J +1.0 M +newpath +621.2892 228.0 m +621.2892 149.9474 l +S +2 J +10.0 M +[ 0.0 1.0 -1.0 -0.0 621.2892 149.9474 ] concat +1.0 1.0 1.0 RG +newpath +12.0 -6.0 m +0.0 0.0 l +12.0 6.0 l +h +f +0.0 0.0 0.0 RG +newpath +12.0 -6.0 m +0.0 0.0 l +12.0 6.0 l +h +S +[ 1.0 0.0 0.0 1.0 -10.0 239.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -10.0 239.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 20.0 50.0 ] concat +[ 1.0 0.0 0.0 1.0 -10.0 239.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 1064.0 50.0 ] concat +[ 1.0 0.0 0.0 1.0 -10.0 239.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 542.0 -229.0 ] concat +[ 1.0 0.0 0.0 1.0 -10.0 239.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 542.0 329.0 ] concat +[ 1.0 0.0 0.0 1.0 -10.0 239.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 20.0 -229.0 ] concat +[ 1.0 0.0 0.0 1.0 -10.0 239.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 1064.0 -229.0 ] concat +[ 1.0 0.0 0.0 1.0 -10.0 239.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 20.0 329.0 ] concat +[ 1.0 0.0 0.0 1.0 -10.0 239.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 1064.0 329.0 ] concat +[ 1.0 0.0 0.0 1.0 -10.0 239.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -10.0 239.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 319.361328 329.0 ] concat +0.0 12.0 moveto +q 1 -1 scale +/Helvetica findfont 12.0 scalefont setfont +(Created with Poseidon for UML Community Edition. Not for Commercial Use.) show +Q +[ 1.0 0.0 0.0 1.0 -10.0 239.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] defaultmatrix matrix concatmatrix setmatrix +newpath +0.0 0.0 m +0.0 599.0 l +1064.0 599.0 l +1064.0 0.0 l +h +W +Q +end end restore showpage + +%%Trailer +%%EOF diff --git a/GL/BarrierePeage/Passagedusager.eps b/GL/BarrierePeage/Passagedusager.eps new file mode 100755 index 0000000..15e116e --- /dev/null +++ b/GL/BarrierePeage/Passagedusager.eps @@ -0,0 +1,1703 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%BoundingBox: 20 50 575 792 +%%Creator: FreeHEP Graphics2D Driver +%%Producer: org.freehep.graphicsio.ps.PSGraphics2D Revision: 1.20 +%%For: +%%Title: +%%CreationDate: lundi 2 janvier 2006 16 h 11 CET +%%LanguageLevel: 3 +%%EndComments +%%BeginProlog +100 dict dup begin + +% +% File: org/freehep/graphicsio.ps/PSProlog.txt +% Author: Charles Loomis +% + +% Redefinitions which save some space in the output file. These are also +% the same as the PDF operators. +/q {gsave} def +/Q {grestore} def + +/n {newpath} def +/m {moveto} def +/l {lineto} def +/c {curveto} def +/h {closepath} def + +/re {4 -2 roll moveto + dup 0 exch rlineto exch 0 rlineto + neg 0 exch rlineto closepath} def + +/f {fill} def +/f* {eofill} def +/F {gsave vg&FC fill grestore} def +/F* {gsave vg&FC eofill grestore} def + +/s {closepath stroke} def +/S {stroke} def + +/b {closepath gsave vg&FC fill grestore + gsave stroke grestore newpath} def +/B {gsave vg&FC fill grestore gsave stroke grestore newpath} def +/b* {closepath gsave vg&FC eofill grestore + gsave stroke grestore newpath} def +/B* {gsave vg&FC eofill grestore gsave stroke grestore newpath} def + +/g {1 array astore /vg&fcolor exch def} def +/G {setgray} def +/k {4 array astore /vg&fcolor exch def} def +/K {setcmykcolor} def +/rg {3 array astore /vg&fcolor exch def} def +/RG {setrgbcolor} def + +% Initialize the fill color. +0 0 0 rg + +/vg&FC {mark vg&fcolor aload pop + counttomark 1 eq {G} if + counttomark 3 eq {RG} if + counttomark 4 eq {K} if + cleartomark } def + +/vg&DFC {/vg&fcolor exch def} def + +/vg&C {mark exch aload pop + counttomark 1 eq {G} if + counttomark 3 eq {RG} if + counttomark 4 eq {K} if + cleartomark } def + +/w {setlinewidth} def +/j {setlinejoin} def +/J {setlinecap} def +/M {setmiterlimit} def +/d {setdash} def +/i {setflat} def + +/W {clip} def +/W* {eoclip} def + +% Setup the default graphics state. +% (black; 1 pt. linewidth; miter join; butt-ends; solid) +/defaultGraphicsState {0 g 1 w 0 j 0 J [] 0 d} def + +% Emulation of the rectangle operators for PostScript implementations +% which do not implement all Level 2 features. This is an INCOMPLETE +% emulation; only the "x y width height rect..." form is emulated. +/*rf {gsave newpath re fill grestore} def +/*rs {gsave newpath re stroke grestore} def +/*rc {newpath re clip} def +/rf /rectfill where {pop /rectfill}{/*rf} ifelse load def +/rs /rectstroke where {pop /rectstroke}{/*rs} ifelse load def +/rc /rectclip where {pop /rectclip}{/*rc} ifelse load def + +% Emulation of the selectfont operator. This includes a 20% increase in +% the fontsize which is necessary to get sizes similar to the Java fonts. +/*sf {exch findfont exch + dup type /arraytype eq {makefont}{scalefont} ifelse setfont} bind def +/sf /selectfont where {pop {1.2 mul selectfont}}{{1.2 mul *sf}} ifelse def + +% Special version of stroke which allows the dash pattern to continue +% across path segments. (This may be needed for PostScript although +% modern printers seem to do this correctly.) +/vg&stroke { + currentdash pop length 0 eq + {stroke} + { + currentdash /vg&doffset exch def pop + flattenpath + {m vg&resetdash} + {2 copy + currentpoint + 3 -1 roll sub dup mul + 3 1 roll sub dup mul + add sqrt + 3 1 roll l + currentdash 3 -1 roll add setdash} + {} + {h vg&resetdash} + pathforall + stroke + vg&resetdash + } ifelse +} def +/vg&resetdash {currentdash pop vg&doffset setdash} def + +% Initialize variables for safety. +/delta 0 def +/xv 0 def /yv 0 def /width 0 def /height 0 def + +% Initialize to portrait INTERNATIONAL (Letter-height, A4-width) page. +/pw 595 def /ph 791 def /po true def /ftp false def + +% Initialize margins to 20 points. +/ml 20 def /mr 20 def /mt 20 def /mb 20 def + +% Temporary matrices. +/smatrix 0 def /nmatrix 0 def + +% set page size (usage: setpagesize) +/setpagesize {/ph exch def /pw exch def} def + +% set page orientation (usage: portrait or landscape) +/portrait {/po true def} def +/landscape {/po false def} def + +% force natural size for image (usage: naturalsize) +/naturalsize {/ftp false def} def + +% resize image to fill page (usage: fittopage) +/fittopage {/ftp true def} def + +% set margins of the page (usage: setmargins) +/setmargins {/mr exch def /mt exch def /mb exch def /ml exch def} def + +% set the graphic's size (usage: setsize) +/setsize {/gh exch def /gw exch def} def + +% set the graphic's origin (usage: setorigin) +/setorigin {/gy exch def /gx exch def} def + +% calculate image center +/imagecenter {pw ml sub mr sub 2 div ml add + ph mt sub mb sub 2 div mb add} def + +% calculate the necessary scaling +/imagescale {po {gw}{gh} ifelse pw ml sub mr sub div + po {gh}{gw} ifelse ph mt sub mb sub div + 2 copy lt {exch} if pop + ftp not {1 2 copy lt {exch} if pop} if + 1 exch div /sfactor exch def + /gw gw sfactor mul def /gh gh sfactor mul def} def + +% calculate image origin +/imageorigin {pw ml sub mr sub 2 div ml add + po {gw}{gh} ifelse 2 div sub + ph mt sub mb sub 2 div mb add + po {gh}{gw} ifelse 2 div po {add}{sub} ifelse} def + +% calculate the clipping origin +/cliporigin {pw ml sub mr sub 2 div ml add + po {gw}{gh} ifelse 2 div sub floor + ph mt sub mb sub 2 div mb add + po {gh}{gw} ifelse 2 div sub floor} def + +% Set the clipping region to the bounding box. +/cliptobounds {cliporigin po {gw}{gh} ifelse 1 add + po {gh}{gw} ifelse 1 add rc} def + +% set the base transformation matrix (usage: setbasematrix) +/setbasematrix {imageorigin translate + po {0}{90} ifelse rotate + sfactor sfactor neg scale + /defaultmatrix matrix currentmatrix def} def + +% The lower-right bias in drawing 1 pt. wide lines. +/bias {q 0.5 0.5 translate} def +/unbias {Q} def + +% Draw a line. (x0 y0 x1 y1 line) +/L {bias n m l S unbias} def + +% Polyline primitive. +/polyline {n m 1 exch 1 exch + {pop currentfile token pop currentfile token pop l} for + } def + +% Draw a polyline (n x0 y0 OPL x1 y1 x2 y2 ... ... xn yn) +/OPL {bias polyline S unbias} def + +% Draw a closed polyline (n x0 y0 CPL x1 y1 x2 y2 ... ... xn yn) +/CPL {bias polyline s unbias} def + +% Draw a filled polyline (n x0 y0 FPL x1 y1 x2 y2 ... ... xn yn) +/FPL {polyline h f*} def + +% Draw an oval. (x y w h OVL) +/OVL {matrix currentmatrix /smatrix exch def + /height exch def /width exch def + /yv exch def /xv exch def + width 2 div xv add height 2 div yv add translate + width currentlinewidth sub 2 div + height currentlinewidth sub 2 div neg + scale n 0 0 1 5 -2 roll arc + smatrix setmatrix S} def + +% Draw a filled oval. (x y w h FOVL) +/FOVL {matrix currentmatrix /smatrix exch def + /height exch def /width exch def + /yv exch def /xv exch def + width 2 div xv add height 2 div yv add translate + width 2 div + height 2 div neg + scale n 0 0 m 0 0 1 5 -2 roll arc + h smatrix setmatrix f} def + +% Draw a rounded rectangle. (x y w h arcwidth archeight RREC) +/RREC {matrix currentmatrix /smatrix exch def + 2 div /ah exch def + 2 div /aw exch def + /height exch def /width exch def + /yv exch def /xv exch def + aw ah scale matrix + currentmatrix /nmatrix exch def + smatrix setmatrix + n xv width add aw sub yv m + nmatrix setmatrix + currentpoint exch 1 add exch + currentpoint 1 add exch 1 add exch + 1 arct smatrix setmatrix + xv width add yv height add ah sub l + nmatrix setmatrix + currentpoint 1 add + currentpoint exch 1 sub exch 1 add + 1 arct smatrix setmatrix + xv aw add yv height add l + nmatrix setmatrix + currentpoint exch 1 sub exch + currentpoint exch 1 sub exch 1 sub + 1 arct smatrix setmatrix + xv yv ah add l + nmatrix setmatrix + currentpoint 1 sub + currentpoint exch 1 add exch 1 sub + 1 arct smatrix setmatrix + s} def + +% Draw a filled rounded rectangle. (x y w h arcwidth archeight FRREC) +/FRREC{matrix currentmatrix /smatrix exch def + 2 div /ah exch def + 2 div /aw exch def + /height exch def /width exch def + /yv exch def /xv exch def + aw ah scale matrix + currentmatrix /nmatrix exch def + smatrix setmatrix + n xv width add aw sub yv m + nmatrix setmatrix + currentpoint exch 1 add exch + currentpoint 1 add exch 1 add exch + 1 arct smatrix setmatrix + xv width add yv height add ah sub l + nmatrix setmatrix + currentpoint 1 add + currentpoint exch 1 sub exch 1 add + 1 arct smatrix setmatrix + xv aw add yv height add l + nmatrix setmatrix + currentpoint exch 1 sub exch + currentpoint exch 1 sub exch 1 sub + 1 arct smatrix setmatrix + xv yv ah add l + nmatrix setmatrix + currentpoint 1 sub + currentpoint exch 1 add exch 1 sub + 1 arct smatrix setmatrix + h f} def + +% Draw a string. (string x y STR) +/STR {q m 1 -1 scale recshow Q} def + +% Define basic plot symbols. +/xys {/siz exch def /yv exch def /xv exch def} def +/hline {xys n xv siz 2. div sub yv m siz 0 rlineto S} def +/vline {xys n xv yv siz 2. div sub m 0 siz rlineto S} def +/plus {xys n xv yv siz 2. div sub m 0 siz rlineto + xv siz 2. div sub yv m siz 0 rlineto S} def +/dot {n 2. div 0 360 arc s} def +/fdot {n 2. div 0 360 arc h f} def +/box {xys n xv siz 2 sqrt div 2 div sub yv siz 2 sqrt div 2 div sub + siz 2 sqrt div dup rs} def +/fbox {xys n xv siz 2 sqrt div 2 div sub yv siz 2 sqrt div 2 div sub + siz 2 sqrt div dup rf} def +/tridn{xys n xv yv siz 3 sqrt div add m + siz 2. div neg 3 sqrt 2. div siz mul neg rlineto + siz 0 rlineto s} def +/ftridn{xys n xv yv siz 3 sqrt div add m + siz 2. div neg 3 sqrt 2. div siz mul neg rlineto + siz 0 rlineto h f} def + +% Symbols defined in terms of the others. +/star {3 copy cross plus} def +/cross {xys q xv yv translate 45 rotate 0 0 siz plus Q} def +/diamond {xys q xv yv translate 45 rotate 0 0 siz box Q} def +/fdiamond {xys q xv yv translate 45 rotate 0 0 siz fbox Q} def +/triup {xys q xv yv translate 180 rotate 0 0 siz tridn Q} def +/ftriup {xys q xv yv translate 180 rotate 0 0 siz ftridn Q} def + +% Define the composite fonts used to print Unicode strings. +% Undefine particular values in an encoding array. +/vg&undef { {exch dup 3 -1 roll /.notdef put} forall } def +/vg&redef { {3 -1 roll dup 4 2 roll put} forall } def + +% usage: key encoding basefontname vg&newbasefont font +/vg&newbasefont { +findfont dup length dict copy + begin + currentdict /FID undef + /Encoding exch def + dup /FontName exch def + currentdict + end +definefont +} def + +% usage: key encoding basefontname vg&newskewedbasefont font +/vg&newskewedbasefont { +findfont dup length dict copy + begin + currentdict /FID undef + /Encoding exch def + dup /FontName exch def + exch FontMatrix exch matrix concatmatrix /FontMatrix exch def + currentdict + end +definefont +} def + +% usage: basekey suffix vg&nconcat name +/vg&nconcat { + 2 {dup length string cvs exch} repeat + dup length 3 -1 roll dup length 3 -1 roll add string + dup 0 4 -1 roll dup length 5 1 roll putinterval + dup 4 -2 roll exch putinterval cvn +} def + +%usage: fontname vg&skewmatrix matrix +/vg&skewmatrix { +findfont dup /FontInfo known + { + /FontInfo get dup /ItalicAngle known + { + [ 1 0 4 -1 roll /ItalicAngle get neg dup sin exch cos div 1 0 0 ] + } + {pop matrix} ifelse + } + {pop matrix} ifelse +} def + +% usage: newfontname basefontname vg&newcompositefont -- +/vg&newcompositefont { +/vg&fstyle exch def +/vg&bfont exch def +/vg&fname exch def +<< +/FontStyleBits vg&fstyle +/FontType 0 +/FontMatrix matrix +/FontName vg&fname +/FMapType 2 +/Encoding [ 0 1 255 {pop 6} for ] + dup 16#00 0 put % Latin + dup 16#03 1 put % Greek + dup 16#20 2 put % Punctuation + dup 16#21 3 put % Arrows + dup 16#22 4 put % MathOps + dup 16#27 5 put % Dingbats + +/FDepVector [ +vg&bfont /-UC-Latin vg&nconcat UCLatinEncoding +vg&bfont vg&newbasefont + +vg&bfont vg&skewmatrix +vg&bfont /-UC-Greek vg&nconcat UCGreekEncoding +/Symbol vg&newskewedbasefont + +vg&bfont /-UC-Punctuation vg&nconcat UCPunctuationEncoding +vg&bfont vg&newbasefont + +/Arrows-UC findfont +/MathOps-UC findfont +/Dingbats-UC findfont +/Undefined-UC findfont ] +>> +vg&fname exch definefont pop +} def + +% Null encoding vector (all elements set to .notdef) +/NullEncoding [ 256 {/.notdef} repeat ] def + +% Unicode Latin encoding (unicode codes \u0000-\u00ff) +/UCLatinEncoding + ISOLatin1Encoding dup length array copy + dup 16#60 /grave put + [ 16#90 16#91 16#92 16#93 16#94 16#95 16#96 + 16#97 16#98 16#9a 16#9b 16#9d 16#9e 16#9f + ] vg&undef + def + +% Unicode Greek encoding (unicode codes \u0370-\u03ff) +/UCGreekEncoding + NullEncoding dup length array copy + << 16#91 /Alpha 16#92 /Beta 16#93 /Gamma 16#94 /Delta + 16#95 /Epsilon 16#96 /Zeta 16#97 /Eta 16#98 /Theta + 16#99 /Iota 16#9a /Kappa 16#9b /Lambda 16#9c /Mu + 16#9d /Nu 16#9e /Xi 16#9f /Omicron 16#a0 /Pi + 16#a1 /Rho 16#a3 /Sigma 16#a4 /Tau 16#a5 /Upsilon + 16#a6 /Phi 16#a7 /Chi 16#a8 /Psi 16#a9 /Omega + 16#b1 /alpha 16#b2 /beta 16#b3 /gamma 16#b4 /delta + 16#b5 /epsilon 16#b6 /zeta 16#b7 /eta 16#b8 /theta + 16#b9 /iota 16#ba /kappa 16#bb /lambda 16#bc /mu + 16#bd /nu 16#be /xi 16#bf /omicron 16#c0 /pi + 16#c1 /rho 16#c2 /sigma1 16#c3 /sigma 16#c4 /tau + 16#c5 /upsilon 16#c6 /phi1 16#c7 /chi 16#c8 /psi + 16#c9 /omega 16#7e /semicolon 16#87 /dotmath 16#d1 /theta1 + 16#d2 /Upsilon1 16#d5 /phi 16#d6 /omega1 + >> vg&redef + def + +% Unicode punctuation encoding (unicode codes \u2000-\u206f) +/UCPunctuationEncoding + NullEncoding dup length array copy + << 16#10 /hyphen 16#11 /hyphen 16#12 /endash + 16#13 /emdash 16#18 /quoteleft 16#19 /quoteright + 16#1a /quotesinglbase 16#1b /quotesingle 16#1c /quotedblleft + 16#1d /quotedblright 16#1e /quotedblbase 16#1f /quotedbl + 16#20 /dagger 16#21 /daggerdbl 16#22 /bullet + 16#24 /period 16#26 /ellipsis 16#27 /periodcentered + 16#30 /perthousand 16#44 /fraction + 16#70 /zerosuperior 16#74 /foursuperior 16#75 /fivesuperior + 16#76 /sixsuperior 16#77 /sevensuperior 16#78 /eightsuperior + 16#79 /ninesuperior 16#7b /hyphensuperior 16#7d /parenleftsuperior + 16#7e /parenrightsuperior + 16#80 /zeroinferior 16#84 /fourinferior 16#85 /fiveinferior + 16#81 /oneinferior 16#82 /twoinferior 16#83 /threeinferior + 16#86 /sixinferior 16#87 /seveninferior 16#88 /eightinferior + 16#89 /nineinferior 16#8b /hypheninferior 16#8d /parenleftinferior + 16#8e /parenrightinferior + >> vg&redef + def + +% Unicode mathematical operators encoding (unicode codes \u2200-\u22ff) +/UCMathOpsEncoding + NullEncoding dup length array copy + << 16#00 /universal 16#02 /partialdiff 16#03 /existential + 16#05 /emptyset 16#06 /Delta 16#07 /gradient + 16#08 /element 16#09 /notelement 16#0b /suchthat + 16#0f /product 16#11 /summation 16#12 /minus + 16#15 /fraction 16#17 /asteriskmath 16#19 /bullet + 16#1a /radical 16#1d /proportional 16#1e /infinity + 16#20 /angle 16#23 /bar 16#27 /logicaland + 16#28 /logicalor 16#29 /intersection 16#2a /union + 16#2b /integral 16#34 /therefore 16#36 /colon + 16#3c /similar 16#45 /congruent 16#48 /approxequal + 16#60 /notequal 16#61 /equivalence 16#64 /lessequal + 16#65 /greaterequal 16#82 /propersubset 16#83 /propersuperset + 16#86 /reflexsubset 16#87 /reflexsuperset 16#95 /circleplus + 16#97 /circlemultiply 16#a5 /perpendicular 16#03 /existential + 16#c0 /logicaland 16#c1 /logicalor 16#c2 /intersection + 16#c3 /union 16#c4 /diamond 16#c5 /dotmath + >> vg&redef + def + +% Unicode arrows encoding (unicode codes \u2190-\u21ff) +% Also includes those "Letterlike" unicode characters +% which are available in the symbol font. (unicode codes \u2100-\u214f) +/UCArrowsEncoding + NullEncoding dup length array copy + << 16#11 /Ifraktur 16#1c /Rfraktur 16#22 /trademarkserif + 16#35 /aleph + 16#90 /arrowleft 16#91 /arrowup 16#92 /arrowright + 16#93 /arrowdown 16#94 /arrowboth 16#d0 /arrowdblleft + 16#d1 /arrowdblup 16#d2 /arrowdblright 16#d3 /arrowdbldown + 16#d4 /arrowdblboth + >> vg&redef + def + +/ZapfDingbats findfont /Encoding get +dup length array copy /UCDingbatsEncoding exch def +16#20 1 16#7f { + dup 16#20 sub exch + UCDingbatsEncoding exch get + UCDingbatsEncoding 3 1 roll put +} for +16#a0 1 16#ff { + dup 16#40 sub exch + UCDingbatsEncoding exch get + UCDingbatsEncoding 3 1 roll put +} for +UCDingbatsEncoding [ 16#c0 1 16#ff {} for ] vg&undef +[ 16#00 16#05 16#0a 16#0b 16#28 16#4c 16#4e 16#53 16#54 16#55 16#57 16#5f + 16#60 16#68 16#69 16#6a 16#6b 16#6c 16#6d 16#6e 16#6f 16#70 16#71 16#72 + 16#73 16#74 16#75 16#95 16#96 16#97 16#b0 16#bf +] vg&undef pop + +% Define the base fonts which don't change. +/Undefined-UC NullEncoding /Helvetica vg&newbasefont pop +/MathOps-UC UCMathOpsEncoding /Symbol vg&newbasefont pop +/Arrows-UC UCArrowsEncoding /Symbol vg&newbasefont pop +/Dingbats-UC UCDingbatsEncoding /ZapfDingbats vg&newbasefont pop + +% Make the SansSerif composite fonts. +/SansSerif /Helvetica 16#00 vg&newcompositefont +/SansSerif-Bold /Helvetica-Bold 16#01 vg&newcompositefont +/SansSerif-Italic /Helvetica-Oblique 16#02 vg&newcompositefont +/SansSerif-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont + +% Make the Serif composite fonts. +/Serif /Times-Roman 16#00 vg&newcompositefont +/Serif-Bold /Times-Bold 16#01 vg&newcompositefont +/Serif-Italic /Times-Italic 16#02 vg&newcompositefont +/Serif-BoldItalic /Times-BoldItalic 16#03 vg&newcompositefont + +% Make the Monospaced composite fonts. +/Monospaced /Courier 16#00 vg&newcompositefont +/Monospaced-Bold /Courier-Bold 16#01 vg&newcompositefont +/Monospaced-Italic /Courier-Oblique 16#02 vg&newcompositefont +/Monospaced-BoldItalic /Courier-BoldOblique 16#03 vg&newcompositefont + +% Make the Dialog composite fonts. +/Dialog /Helvetica 16#00 vg&newcompositefont +/Dialog-Bold /Helvetica-Bold 16#01 vg&newcompositefont +/Dialog-Italic /Helvetica-Oblique 16#02 vg&newcompositefont +/Dialog-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont + +% Make the DialogInput composite fonts. +/DialogInput /Helvetica 16#00 vg&newcompositefont +/DialogInput-Bold /Helvetica-Bold 16#01 vg&newcompositefont +/DialogInput-Italic /Helvetica-Oblique 16#02 vg&newcompositefont +/DialogInput-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont + +% Make the Typewriter composite fonts (JDK 1.1 only). +/Typewriter /Courier 16#00 vg&newcompositefont +/Typewriter-Bold /Courier-Bold 16#01 vg&newcompositefont +/Typewriter-Italic /Courier-Oblique 16#02 vg&newcompositefont +/Typewriter-BoldItalic /Courier-BoldOblique 16#03 vg&newcompositefont + + +/cfontH { + dup /fontsize exch def /SansSerif exch sf + /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def +} def +/cfontHB { + dup /fontsize exch def /SansSerif-Bold exch sf + /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def +} def +/cfontHI { + dup /fontsize exch def /SansSerif-Italic exch sf + /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def +} def +/cfontHBI { + dup /fontsize exch def /SansSerif-BoldItalic exch sf + /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def +} def + +/cfontT { + dup /fontsize exch def /Serif exch sf + /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def +} def +/cfontTB { + dup /fontsize exch def /Serif-Bold exch sf + /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def +} def +/cfontTI { + dup /fontsize exch def /Serif-Italic exch sf + /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def +} def +/cfontTBI { + dup /fontsize exch def /Serif-BoldItalic exch sf + /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def +} def + +/cfontC { + dup /fontsize exch def /Typewriter exch sf + /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def +} def +/cfontCB { + dup /fontsize exch def /Typewriter-Bold exch sf + /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def +} def +/cfontCI { + dup /fontsize exch def /Typewriter-Italic exch sf + /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def +} def +/cfontCBI { + dup /fontsize exch def /Typewriter-BoldItalic exch sf + /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def +} def + +% Darken or lighten the current color. +/darken {0.7 exch exp 3 copy + q 4 -1 roll vg&C + currentrgbcolor 3 {4 -2 roll mul} repeat + 3 array astore Q} def + +/displayColorMap +<< /Cr [1.00 0.00 0.00] /Cg [0.00 1.00 0.00] + /Cb [0.00 0.00 1.00] /Cc [1.00 0.00 0.00 0.00] + /Cm [0.00 1.00 0.00 0.00] /Cy [0.00 0.00 1.00 0.00] + /Co [1.00 0.78 0.00] /Cp [1.00 0.67 0.67] + /Cw [1 ] /Cgrl [0.75] + /Cgr [0.50] /Cgrd [0.25] + /Ck [0 ] + /CGr [1.00 0.00 0.00] /CGg [0.00 1.00 0.00] + /CGb [0.00 0.00 1.00] /CGc [1.00 0.00 0.00 0.00] + /CGm [0.00 1.00 0.00 0.00] /CGy [0.00 0.00 1.00 0.00] + /CGo [1.00 0.78 0.00] /CGp [1.00 0.67 0.67] + /CGw [1 ] /CGgrl [0.75] + /CGgr [0.50] /CGgrd [0.25] + /CGk [0 ] + /CIr [1.00 0.00 0.00] /CIg [0.00 1.00 0.00] + /CIb [0.00 0.00 1.00] /CIc [1.00 0.00 0.00 0.00] + /CIm [0.00 1.00 0.00 0.00] /CIy [0.00 0.00 1.00 0.00] + /CIo [1.00 0.78 0.00] /CIp [1.00 0.67 0.67] + /CIw [1 ] /CIgrl [0.75] + /CIgr [0.50] /CIgrd [0.25] + /CIk [0 ] +>> def + +/printColorMap +<< /Cr [1.00 0.33 0.33] /Cg [0.33 1.00 0.33] + /Cb [0.33 0.33 1.00] /Cc [1.00 0.00 0.00 0.00] + /Cm [0.00 1.00 0.00 0.00] /Cy [0.00 0.00 1.00 0.00] + /Co [1.00 0.78 0.00] /Cp [1.00 0.67 0.67] + /Cw [1 ] /Cgrl [0.75] + /Cgr [0.50] /Cgrd [0.25] + /Ck [0 ] + /CGr [1.00 0.33 0.33] /CGg [0.33 1.00 0.33] + /CGb [0.33 0.33 1.00] /CGc [1.00 0.00 0.00 0.00] + /CGm [0.00 1.00 0.00 0.00] /CGy [0.00 0.00 1.00 0.00] + /CGo [1.00 0.78 0.00] /CGp [1.00 0.67 0.67] + /CGw [1 ] /CGgrl [0.75] + /CGgr [0.50] /CGgrd [0.25] + /CGk [0 ] + /CIr [1.00 0.33 0.33] /CIg [0.33 1.00 0.33] + /CIb [0.33 0.33 1.00] /CIc [1.00 0.00 0.00 0.00] + /CIm [0.00 1.00 0.00 0.00] /CIy [0.00 0.00 1.00 0.00] + /CIo [1.00 0.78 0.00] /CIp [1.00 0.67 0.67] + /CIw [1 ] /CIgrl [0.75] + /CIgr [0.50] /CIgrd [0.25] + /CIk [0 ] +>> def + +/grayColorMap +<< /Cr [0 ] /Cg [0 ] + /Cb [0 ] /Cc [0 ] + /Cm [0 ] /Cy [0 ] + /Co [0 ] /Cp [0 ] + /Cw [0 ] /Cgrl [0 ] + /Cgr [0 ] /Cgrd [0 ] + /Ck [0 ] + /CGr [0.75] /CGg [1 ] + /CGb [0.50] /CGc [0.75] + /CGm [0.50] /CGy [1 ] + /CGo [0.75] /CGp [1 ] + /CGw [0 ] /CGgrl [0.25] + /CGgr [0.50] /CGgrd [0.75] + /CGk [1 ] + /CIr [1 ] /CIg [1 ] + /CIb [1 ] /CIc [1 ] + /CIm [1 ] /CIy [1 ] + /CIo [1 ] /CIp [1 ] + /CIw [1 ] /CIgrl [1 ] + /CIgr [1 ] /CIgrd [1 ] + /CIk [1 ] +>> def + +/bwColorMap +<< /Cr [0 ] /Cg [0 ] + /Cb [0 ] /Cc [0 ] + /Cm [0 ] /Cy [0 ] + /Co [0 ] /Cp [0 ] + /Cw [0 ] /Cgrl [0 ] + /Cgr [0 ] /Cgrd [0 ] + /Ck [0 ] + /CGr [1 ] /CGg [1 ] + /CGb [1 ] /CGc [1 ] + /CGm [1 ] /CGy [1 ] + /CGo [1 ] /CGp [1 ] + /CGw [0 ] /CGgrl [1 ] + /CGgr [1 ] /CGgrd [1 ] + /CGk [1 ] + /CIr [1 ] /CIg [1 ] + /CIb [1 ] /CIc [1 ] + /CIm [1 ] /CIy [1 ] + /CIo [1 ] /CIp [1 ] + /CIw [1 ] /CIgrl [1 ] + /CIgr [1 ] /CIgrd [1 ] + /CIk [1 ] +>> def + +% +% The following routines handle the alignment of and printing of +% tagged strings. +% + +% Predefine the bounding box values. +/bbllx 0 def /bblly 0 def /bburx 0 def /bbury 0 def + +% This routine pops the first unicode character off of a string and returns +% the remainder of the string, the character code of first character, +% and a "true" if the string was non-zero length. +% popfirst +% popfirst +/popfirst { + dup length 1 gt + {dup 0 get /vg&fbyte exch def + dup 1 get /vg&cbyte exch def + dup length 2 sub 2 exch getinterval true} + {pop false} ifelse +} def + +% This routine shows a single unicode character given the font and +% character codes. +% unicharshow -- +/unicharshow { + 2 string + dup 0 5 -1 roll put + dup 1 4 -1 roll put + internalshow +} def + +% This is an internal routine to alternate between determining the +% bounding box for stringsize and showing the string for recshow. +% internalshow -- +/internalshow {show} def + +% This is an internal routine to alternate between determining the +% bounding box for stringsize and stroking various ornaments. +% internalstroke -- +/internalstroke {S} def + +% Sets up internalshow to use the null device to determine string size. +% -- nullinternalshow -- +/nullinternalshow {/internalshow {false charpath flattenpath + pathbbox updatebbox} def} def + +% Sets up internalstroke to use the null device to determine string size. +% -- nullinternalstroke -- +/nullinternalstroke { + /internalstroke {flattenpath pathbbox updatebbox} def} def + +% This routine tests to see if the character code matches the first +% character of a string. +% testchar +/testchar {exch dup 3 -1 roll 0 get eq} def + +% Raise the text baseline for superscripts. +% -- raise -- +/raise { + 0 fontsize 2 div rmoveto + /fontsize fontsize 2 mul 3 div def + currentfont /FontName get fontsize sf +} def + +% Un-raise the text baseline for superscripts. +% -- unraise -- +/unraise { + /fontsize fontsize 1.5 mul def + 0 fontsize 2 div neg rmoveto +} def + +% Lower the text baseline for subscripts. +% -- lower -- +/lower { + 0 fontsize 3 div neg rmoveto + /fontsize fontsize 2 mul 3 div def + currentfont /FontName get fontsize sf +} def + +% Un-lower the text baseline for subscripts. +% -- unlower -- +/unlower { + /fontsize fontsize 1.5 mul def + 0 fontsize 3 div rmoveto +} def + +% Compare the top two elements on the stack and leave only the +% larger one. +/maxval {2 copy gt {pop} {exch pop} ifelse} def + +% Tokenize a string. Do not use the usual PostScript token because +% parentheses will not be interpreted correctly because of rescanning +% of the string. +/vg&token {/vg&string exch def /vg&index -1 def /vg&level 0 def +0 2 vg&string length 2 sub { + dup dup 1 add exch vg&string exch get 8 bitshift vg&string 3 -1 roll get or + dup 16#f0fe eq {pop 1}{16#f0ff eq {-1}{0} ifelse} ifelse + /vg&level exch vg&level add def + vg&level 0 eq {/vg&index exch def exit} if pop +} for +vg&index 0 ge { + vg&string vg&index 2 add dup vg&string length exch sub getinterval + vg&index 2 gt {vg&string 2 vg&index 2 sub getinterval}{()} ifelse + true} +{false} ifelse +} bind def + +% Recursively show an unicode string. +% recshow -- +/recshow { + popfirst + { + % Test to see if this is a string attribute. + vg&fbyte 16#f0 and 16#e0 eq + { + q + + % Font style. + currentfont dup /FontStyleBits known {/FontStyleBits get}{pop 0} ifelse + vg&cbyte or vg&fontstyles exch get fontsize exch exec + + vg&token pop recshow currentpoint Q m recshow + } + { + vg&fbyte 16#F8 and 16#F0 eq { + + % Superscript and/or subscript. + vg&cbyte 16#00 eq { + vg&token pop exch vg&token pop 3 -1 roll + q raise recshow unraise currentpoint pop Q exch + q lower recshow unlower currentpoint pop Q + maxval currentpoint exch pop m recshow } if + + % Strikeout. + vg&cbyte 16#01 eq { + vg&token pop currentpoint 3 -1 roll recshow + q 0 J vg&underline vg&uthick w + currentpoint 4 -2 roll fontsize 3 div add moveto + fontsize 3 div add lineto internalstroke Q + recshow} if + + % Underline. + vg&cbyte 16#02 eq { + vg&token pop currentpoint 3 -1 roll recshow + q 0 J vg&underline vg&uthick w + currentpoint 4 -2 roll vg&uoffset add moveto + vg&uoffset add lineto internalstroke Q + recshow} if + + % Dashed underline. + vg&cbyte 16#03 eq { + vg&token pop currentpoint 3 -1 roll recshow + q 0 J [ vg&uthick 5 mul vg&uthick 2 mul] 0 d + vg&underline vg&uthick w + currentpoint 4 -2 roll vg&uoffset add moveto + vg&uoffset add lineto internalstroke Q + recshow} if + + % Dotted underline. + vg&cbyte 16#04 eq { + vg&token pop currentpoint 3 -1 roll recshow + q 1 J [ 0 vg&uthick 3 mul] 0 d + vg&underline vg&uthick w + currentpoint 4 -2 roll vg&uoffset add moveto + vg&uoffset add lineto internalstroke Q + recshow} if + + % Thick underline. + vg&cbyte 16#05 eq { + vg&token pop currentpoint 3 -1 roll recshow + q 0 J vg&underline vg&uthick 2 mul w + currentpoint 4 -2 roll vg&uoffset vg&uthick 2 div sub add moveto + vg&uoffset vg&uthick 2 div sub add lineto internalstroke Q + recshow} if + + % Gray thick underline. + vg&cbyte 16#06 eq { + vg&token pop currentpoint 3 -1 roll recshow + q 0 J vg&underline vg&uthick 2 mul w 0.5 setgray + currentpoint 4 -2 roll vg&uoffset vg&uthick 2 div sub add moveto + vg&uoffset vg&uthick 2 div sub add lineto internalstroke Q + recshow} if + + % Overbar. + vg&cbyte 16#07 eq { + vg&token pop dup stringsize relative 4 1 roll pop pop exch + 3 -1 roll recshow + q 0 J vg&underline vg&uthick w + vg&uoffset neg add dup currentpoint pop exch m l internalstroke Q + recshow} if + } + { + vg&fbyte vg&cbyte unicharshow recshow + } ifelse + } ifelse + } if +} def + +% Get the underline position and thickness from the current font. +/vg&underline { + +currentfont dup /FontType get 0 eq {/FDepVector get 0 get} if +dup dup /FontInfo known { + /FontInfo get dup + dup /UnderlinePosition known { + /UnderlinePosition get /vg&uoffset exch def + } + { + pop /vg&uoffset 0 def + } ifelse + dup /UnderlineThickness known { + /UnderlineThickness get /vg&uthick exch def + } + { + pop /vg&uthick 0 def + } ifelse +} +{ + pop /vg&uoffset 0 def /vg&uthick 0 def +} ifelse +/FontMatrix get +currentfont dup /FontType get 0 eq +{/FontMatrix get matrix concatmatrix}{pop} ifelse +dup 0 vg&uoffset 3 -1 roll transform /vg&uoffset exch def pop +0 vg&uthick 3 -1 roll transform /vg&uthick exch def pop +} def + +% Make a frame with the coordinates on the stack. +% frame -- +/frame {4 copy m 3 1 roll exch l 4 -2 roll l l h} def + +% Resets the accumulated bounding box to a degenerate box at the +% current point. +% -- resetbbox -- +/resetbbox { + currentpoint 2 copy + /bbury exch def + /bburx exch def + /bblly exch def + /bbllx exch def +} def + +% Update the accumulated bounding box. +% updatebbox -- +/updatebbox { + dup bbury gt {/bbury exch def} {pop} ifelse + dup bburx gt {/bburx exch def} {pop} ifelse + dup bblly lt {/bblly exch def} {pop} ifelse + dup bbllx lt {/bbllx exch def} {pop} ifelse +} def + +% Set the bounding box to the values on the stack. +% updatebbox -- +/restorebbox { + /bbury exch def /bburx exch def /bblly exch def /bbllx exch def +} def + +% Push the accumulated bounding box onto the stack. +% -- pushbbox +/pushbbox {bbllx bblly bburx bbury} def + +% Make the relative bounding box relative to the currentpoint. +% inflate +/inflate { + 2 {fontsize 0.2 mul add 4 1 roll} repeat + 2 {fontsize 0.2 mul sub 4 1 roll} repeat +} def + +% Make the relative bounding box relative to the currentpoint. +% relative +/relative { + currentpoint 3 -1 roll add 3 1 roll add exch 4 2 roll + currentpoint 3 -1 roll add 3 1 roll add exch 4 2 roll +} def + +% Returns the size of a string appropriate for recshow. +% stringsize +/stringsize { + pushbbox /internalshow load /internalstroke load 7 -1 roll + q + nulldevice 0 0 m + nullinternalshow nullinternalstroke + resetbbox + recshow + /internalstroke exch def /internalshow exch def + pushbbox 8 -4 roll restorebbox + Q +} def + +% Calculate values for string positioning. +/calcval {4 copy + 3 -1 roll sub /widy exch def sub neg /widx exch def + pop pop /dy exch def /dx exch def} def + +% Utilities to position a string. +% First letter (U=upper, C=center, B=baseline, L=lower) +% Second letter (L=left, C=center, R=right) +/align [ +{calcval dx neg widy dy add neg rmoveto} % UL +{calcval dx neg widy 2 div dy add neg rmoveto} % CL +{calcval dx neg 0 rmoveto} % BL +{calcval dx neg dy neg rmoveto} % LL +{calcval widx dx add neg widy dy add neg rmoveto} % UR +{calcval widx dx add neg widy 2 div dy add neg rmoveto} % CR +{calcval widx dx add neg 0 rmoveto} % BR +{calcval widx dx add neg dy neg rmoveto} % LR +{calcval widx 2 div dx add neg widy dy add neg rmoveto} % UC +{calcval widx 2 div dx add neg widy 2 div dy add neg rmoveto} % CC +{calcval widx 2 div dx add neg 0 rmoveto} % BC +{calcval widx 2 div dx add neg dy neg rmoveto} % LC +] def + +/vg&str {m q 1 -1 scale dup stringsize 4 copy align 11 -1 roll get exec + q inflate relative frame exch exec Q recshow Q} def + +end /procDict exch def +%%EndProlog + +%%BeginSetup +save +procDict begin +printColorMap begin +595 842 setpagesize +20 20 20 20 setmargins +0 0 setorigin +567 425 setsize +fittopage +landscape +imagescale +cliptobounds +setbasematrix +/Helvetica 10 sf +defaultGraphicsState +%%EndSetup + +0.0 0.0 0.0 RG +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] defaultmatrix matrix concatmatrix setmatrix +1.0 w +2 J +0 j +10.0 M +[ ] 0.0 d +1.0 1.0 1.0 RG +0.0 0.0 567.0 425.0 rf +0.0 0.0 0.0 RG +q +0 0 567 425 rc +q +1.0 1.0 1.0 RG +0.0 0.0 567.0 425.0 rf +0.0 0.0 567.0 425.0 rc +[ 1.0 0.0 0.0 1.0 -260.0 39.0 ] concat +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +newpath +260.0 -39.0 m +827.0 -39.0 l +827.0 386.0 l +260.0 386.0 l +260.0 -39.0 l +h +f +0.501961 0.501961 0.501961 RG +newpath +270.0 -29.0 m +817.0 -29.0 l +817.0 355.0 l +270.0 355.0 l +270.0 -29.0 l +h +S +[ 1.0 0.0 0.0 1.0 510.0 20.0 ] concat +1.0 1.0 1.0 RG +newpath +69.9248 0.5 m +69.9248 305.5 l +f +0.0 0.0 0.0 RG +0 J +1.0 M +[ 5.0 5.0 ] 0.0 d +newpath +69.9248 0.5 m +69.9248 305.5 l +S +0.501961 0.501961 0.501961 RG +2 J +10.0 M +[ ] 0.0 d +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +1.0 1.0 1.0 RG +newpath +0.5 0.5 m +127.778799 0.5 l +127.778799 25.5 l +0.5 25.5 l +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +0.5 0.5 m +127.778799 0.5 l +127.778799 25.5 l +0.5 25.5 l +h +S +0.501961 0.501961 0.501961 RG +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 4.0 4.0 ] concat +[ 1.0 0.0 0.0 1.0 2.0 2.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +0.501961 0.501961 0.501961 RG +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0.0 0.0 0.0 RG +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000L\000i\000f\000e\000l\000i\000n\000e\000_\0006) show +Q +newpath +0.0 12.5 m +50.987792 12.5 l +S +[ 1.0 0.0 0.0 1.0 256.0 65.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 50.9878 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000:) show +Q +newpath +0.0 12.5 m +3.480468 12.5 l +S +[ 1.0 0.0 0.0 1.0 256.0 65.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 54.4683 0.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif-Italic findfont 11.0 scalefont setfont +(\000B\000o\000r\000n\000e\000P\000\351\000a\000g\000e) show +Q +newpath +0.0 12.5 m +61.810546 12.5 l +S +[ 1.0 0.0 0.0 1.0 310.4683 65.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 256.0 65.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 254.0 63.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 250.0 59.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 250.0 59.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 59.1394 183.5237 ] concat +1.0 1.0 1.0 RG +newpath +0.5 0.5 m +9.5 0.5 l +9.5 100.9763 l +0.5 100.9763 l +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +0.5 0.5 m +9.5 0.5 l +9.5 100.9763 l +0.5 100.9763 l +h +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 250.0 59.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -260.0 39.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 300.0 20.0 ] concat +1.0 1.0 1.0 RG +newpath +91.3203 0.5 m +91.3203 305.5 l +f +0.0 0.0 0.0 RG +0 J +1.0 M +[ 5.0 5.0 ] 0.0 d +newpath +91.3203 0.5 m +91.3203 305.5 l +S +2 J +10.0 M +[ ] 0.0 d +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +1.0 1.0 1.0 RG +newpath +0.5 0.5 m +167.0039 0.5 l +167.0039 25.5 l +0.5 25.5 l +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +0.5 0.5 m +167.0039 0.5 l +167.0039 25.5 l +0.5 25.5 l +h +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 4.0 4.0 ] concat +[ 1.0 0.0 0.0 1.0 2.0 2.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000u\000n\000e\000B\000o\000u\000c\000l\000e) show +Q +newpath +0.0 12.5 m +54.634765 12.5 l +S +[ 1.0 0.0 0.0 1.0 46.0 65.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 54.6348 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000:) show +Q +newpath +0.0 12.5 m +3.480468 12.5 l +S +[ 1.0 0.0 0.0 1.0 46.0 65.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 58.1152 0.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000B\000o\000u\000c\000l\000e\000M\000a\000g\000n\000\351\000t\000i\000q\000u\000e) show +Q +newpath +0.0 12.5 m +97.388671 12.5 l +S +[ 1.0 0.0 0.0 1.0 104.1152 65.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 46.0 65.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 44.0 63.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 40.0 59.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 40.0 59.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -260.0 39.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 660.0 20.0 ] concat +1.0 1.0 1.0 RG +newpath +63.9824 0.5 m +63.9824 305.5 l +f +0.0 0.0 0.0 RG +0 J +1.0 M +[ 5.0 5.0 ] 0.0 d +newpath +63.9824 0.5 m +63.9824 305.5 l +S +2 J +10.0 M +[ ] 0.0 d +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +1.0 1.0 1.0 RG +newpath +0.5 0.5 m +118.2178 0.5 l +118.2178 25.5 l +0.5 25.5 l +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +0.5 0.5 m +118.2178 0.5 l +118.2178 25.5 l +0.5 25.5 l +h +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 4.0 5.5 ] concat +1.0 1.0 1.0 RG +newpath +7.5 4.0 m +5.0 4.0 5.0 0.0 7.5 0.0 c +10.0 0.0 10.0 4.0 7.5 4.0 c +7.5 4.0 m +7.5 5.0 l +2.5 5.0 m +12.5 5.0 l +7.5 5.0 m +7.5 10.0 l +7.5 10.0 m +2.5 15.0 l +7.5 10.0 m +12.5 15.0 l +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +7.5 4.0 m +5.0 4.0 5.0 0.0 7.5 0.0 c +10.0 0.0 10.0 4.0 7.5 4.0 c +7.5 4.0 m +7.5 5.0 l +2.5 5.0 m +12.5 5.0 l +7.5 5.0 m +7.5 10.0 l +7.5 10.0 m +2.5 15.0 l +7.5 10.0 m +12.5 15.0 l +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 400.0 59.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 20.0 4.0 ] concat +[ 1.0 0.0 0.0 1.0 2.0 2.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000u\000n\000U\000s\000a\000g\000e\000r) show +Q +newpath +0.0 12.5 m +50.445312 12.5 l +S +[ 1.0 0.0 0.0 1.0 422.0 65.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 50.4453 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000:) show +Q +newpath +0.0 12.5 m +3.480468 12.5 l +S +[ 1.0 0.0 0.0 1.0 422.0 65.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 53.9258 0.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000U\000s\000a\000g\000e\000r) show +Q +newpath +0.0 12.5 m +36.791992 12.5 l +S +[ 1.0 0.0 0.0 1.0 475.9258 65.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 422.0 65.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 420.0 63.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 400.0 59.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 400.0 59.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -260.0 39.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 270.0 -29.0 ] concat +1.0 1.0 1.0 RG +newpath +113.1563 0.5 m +113.1563 10.5 l +105.1563 18.5 l +0.5 18.5 l +0.5 0.5 l +h +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +113.1563 0.5 m +113.1563 10.5 l +105.1563 18.5 l +0.5 18.5 l +0.5 0.5 l +h +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 4.0 2.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000P\000a\000s\000s\000a\000g\000e\000 \000d\000'\000u\000s\000a\000g\000e\000r) show +Q +[ 1.0 0.0 0.0 1.0 10.0 10.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -260.0 39.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 421.0 203.5237 ] concat +0 J +1.0 M +newpath +-37.2481 0.0 m +148.1394 0.0 l +S +2 J +10.0 M +[ -1.0 0.0 0.0 -1.0 148.1394 0.0 ] concat +newpath +12.0 -6.0 m +0.0 0.0 l +12.0 6.0 l +h +f +newpath +12.0 -6.0 m +0.0 0.0 l +12.0 6.0 l +h +S +[ 1.0 0.0 0.0 1.0 161.0 242.5237 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 3.7205 -23.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\0001\000\051\000 ) show +Q +[ 1.0 0.0 0.0 1.0 164.7205 219.5237 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 14.0132 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif-Bold findfont 11.0 scalefont setfont +(\000.) show +Q +[ 1.0 0.0 0.0 1.0 164.7205 219.5237 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 16.731 0.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +newpath +S +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000v\000e\000h\000i\000c\000u\000l\000e\000D\000e\000t\000e\000c\000t\000\351) show +Q +[ 1.0 0.0 0.0 1.0 181.4515 219.5237 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 84.0845 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000\050) show +Q +[ 1.0 0.0 0.0 1.0 181.4515 219.5237 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 87.6616 0.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000 ) show +Q +[ 1.0 0.0 0.0 1.0 269.1131 219.5237 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 181.4515 219.5237 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 91.1421 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000\051) show +Q +[ 1.0 0.0 0.0 1.0 181.4515 219.5237 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 181.4515 219.5237 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 164.7205 219.5237 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 161.0 242.5237 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -260.0 39.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 421.0 305.0 ] concat +0 J +1.0 M +[ 10.0 10.0 ] 0.0 d +newpath +148.1394 0.0 m +-37.2481 0.0 l +S +2 J +10.0 M +[ ] 0.0 d +[ 1.0 0.0 0.0 1.0 -37.2481 0.0 ] concat +newpath +12.0 -6.0 m +0.0 0.0 l +12.0 6.0 l +h +f +newpath +12.0 -6.0 m +0.0 0.0 l +12.0 6.0 l +h +S +[ 1.0 0.0 0.0 1.0 161.0 344.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 6.3968 -15.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\0002\000\051\000 ) show +Q +[ 1.0 0.0 0.0 1.0 167.3968 329.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 14.0132 0.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +0 J +1.0 M +newpath +S +2 J +10.0 M +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +1.0 1.0 1.0 RG +newpath +f +0.0 0.0 0.0 RG +newpath +S +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] concat +0.0 11.0 moveto +q 1 -1 scale +/SansSerif findfont 11.0 scalefont setfont +(\000v\000e\000h\000i\000c\000u\000l\000e\000D\000e\000t\000e\000c\000t\000\351) show +Q +[ 1.0 0.0 0.0 1.0 181.41 329.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 181.41 329.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 167.3968 329.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 161.0 344.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -260.0 39.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 270.0 163.0 ] concat +[ 1.0 0.0 0.0 1.0 -260.0 39.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 817.0 163.0 ] concat +[ 1.0 0.0 0.0 1.0 -260.0 39.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 543.5 -29.0 ] concat +[ 1.0 0.0 0.0 1.0 -260.0 39.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 543.5 355.0 ] concat +[ 1.0 0.0 0.0 1.0 -260.0 39.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 270.0 -29.0 ] concat +[ 1.0 0.0 0.0 1.0 -260.0 39.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 817.0 -29.0 ] concat +[ 1.0 0.0 0.0 1.0 -260.0 39.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 270.0 355.0 ] concat +[ 1.0 0.0 0.0 1.0 -260.0 39.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 817.0 355.0 ] concat +[ 1.0 0.0 0.0 1.0 -260.0 39.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 -260.0 39.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 320.861328 355.0 ] concat +0.0 12.0 moveto +q 1 -1 scale +/Helvetica findfont 12.0 scalefont setfont +(Created with Poseidon for UML Community Edition. Not for Commercial Use.) show +Q +[ 1.0 0.0 0.0 1.0 -260.0 39.0 ] defaultmatrix matrix concatmatrix setmatrix +[ 1.0 0.0 0.0 1.0 0.0 0.0 ] defaultmatrix matrix concatmatrix setmatrix +newpath +0.0 0.0 m +0.0 425.0 l +567.0 425.0 l +567.0 0.0 l +h +W +Q +end end restore showpage + +%%Trailer +%%EOF diff --git a/GL/BarrierePeage/barrierePeage.zuml b/GL/BarrierePeage/barrierePeage.zuml new file mode 100755 index 0000000000000000000000000000000000000000..8ce5db9a231c671d343020aca8d229dcb5236d19 GIT binary patch literal 11197 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

    Lorem ipsum dolor sit amet

    + +

    consectetuer adipiscing elit

    +

    Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Pellentesque tempor massa eget nibh. Etiam non nisl. Nullam lectus purus, blandit id, tincidunt id, iaculis in, mi. In fermentum euismod dolor. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Etiam sit amet pede in nisi ullamcorper pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin ut eros et lacus tempor rhoncus. Praesent eu arcu a mauris lacinia condimentum. Integer rhoncus.

    + +

    Suspendisse eu magna

    +

    Suspendisse eu magna. Curabitur vestibulum. Suspendisse potenti. Sed pede. Nunc ante. In fermentum, nisi mattis aliquam facilisis, ipsum quam adipiscing enim, vel hendrerit massa leo id tortor. Integer bibendum laoreet nunc. Etiam mollis, urna quis mattis accumsan, sapien tellus convallis justo, aliquet gravida nisi nulla vitae arcu. Sed mauris urna, eleifend ut, suscipit sit amet, cursus vel, leo. Pellentesque ante mi, ornare eu, blandit id, consectetuer sed, massa. Nulla a sapien. Vivamus rhoncus mauris. Proin vel nisl ac urna mollis consequat. Vestibulum bibendum. Donec malesuada scelerisque nisl. Integer ut nunc ac massa posuere eleifend. Integer ultrices.

    + +

    Praesent vulputate placerat lacus

    +

    Praesent vulputate placerat lacus. Nam rutrum, dui id tristique mattis, enim ligula dapibus ante, vel bibendum dui est in urna. Etiam elementum. Etiam aliquam, odio sit amet sagittis posuere, orci leo lobortis odio, sed consequat urna diam quis augue. Etiam diam. Duis eu mauris et felis lobortis dignissim. Phasellus iaculis mauris in dui. Cras quis libero et nunc consequat condimentum. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Mauris iaculis eros eu lacus. Vivamus egestas porttitor urna. Morbi vehicula iaculis magna. Curabitur sodales, ante ut porta pharetra, est eros vestibulum magna, at suscipit nunc est nec urna. Ut pede ante, lobortis id, condimentum ac, mattis et, augue. Pellentesque sed enim. Vestibulum neque. Maecenas laoreet dolor at enim.

    + +

    Curabitur sodales

    +
      +
    • Lorem ipsum dolor sit amet, consectetuer adipiscing elit. +
    • Duis dictum rhoncus libero. +
    • Integer mattis dapibus eros. +
    • Donec vestibulum sollicitudin lorem. +
    • Vestibulum nonummy arcu id pede. +
    • Maecenas sed lorem vel mi pretium ultricies. +
    • Aenean aliquam orci eget odio. +
    + +

    Mauris iaculis eros eu lacus

    +

    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 literal 0 HcmV?d00001 diff --git a/GL/BarrierePeage/barrierePeage4.zuml b/GL/BarrierePeage/barrierePeage4.zuml new file mode 100755 index 0000000000000000000000000000000000000000..2c469e54f34c8c9951a697648ba6deb0e09177c3 GIT binary patch literal 42312 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 Vpr?tA^Uq@#s1$~})_?vd_g@re=w<)_ literal 0 HcmV?d00001 diff --git a/GL/BarrierePeage/barrierePeage5.zuml b/GL/BarrierePeage/barrierePeage5.zuml new file mode 100755 index 0000000000000000000000000000000000000000..9ed4d490951d32ba89f94700da6e4961482c4b6d GIT binary patch literal 46868 zcmZ^K18`(b6mGoH#@^V@#@JwEb7FgA+Z)@qZ95xlW81bd$>e4Khk8}7-c0q}K6mat z)z#hS`@X)XuYxor6b2aV=Qm&1pB3!?`e1z44GkO|%uO6j6if_$nXoh3IoMjTPH0Hl zu5(~?AE~wS!-P^OdiHXCkB70F5k^MxfQ9fE<}*LGpcCbG_Vq4HQ+bZ6SAk<{Xi3SrENI{&ZJV6XGB)GBkU{?ihcE&ig7^T6kLrbKxR>Gk5evWOHf5FFn(j!h~1RG*Tg1 ztOVa}PC+eXmb(3b-cH6&uv(Fsys~hXFin!$Z`Qvb4v5@p_Cnbh6$EO2mtAd=U zZ>bOU*I|{7_kegLnX?`(2Jg&z2aKHGztHY{x#|8hzCvbiHnT875(2{`H>#T^{ZsYrLsUM|&1DmR{&2ENU;2GK4<2rTp zq~`#h6GFDcO2lIzk}U|cE-T$W2wlATf@kEM4(9q$4|T{$@4EW=fS81vDv3(Ne)aH$ z?4_dU1w=!^kPJTvWb6$yBC_OSI6ha0-=ns}@2_L~UUTb@?BlPE;bKg`?B>&G5Ka%f zn{pJirsOX{1G&qaL#9wkzxNW2oqZC@j-^X2JEE-=LRhcUUj$brbs8!s1M}g^b&;^@ zyP2ul(`~s5*Y1o>YsoWt;)tGa>7dAE&_+})b3#mF%F~WqUFW3`waW3s7IB)vt&f$( z)~Sd_DDUE1bP0H8P$3dxl#d+#k2-9;Y)+VKEHBiqKXR_AoY{2~4|g!>srEk9$@$LK zjGH(SMZ~Ini+1!U*N2t>vuchu4xwLi_?DkOA!5szoM7FXf32eP@mfuIpA9`_l#jJ; zqFeS#bNkm_SdmE}m30m!`{2!*G*X7FiSb9P;Rm?NE7zJ_5<&&oGe|HU+hrEMnbz#QEZcX@-r;jjZ9sC1#Q4nS zt0Vld`kG(AmcIcxR|X7x4j8|X&_JH+60$wtfwxV!Ol>$Tny58c9kZrz>4MQ(-3i;R zozbZ|4F%^^p~IPXdVE=Iru{SKo>yrxnokIyX*gUd_q$L1F$Z@UuKoIm4h85s|fSRfi1H zwN0XtMHBEyHPQVmz)KT?UmYS;K~jj2%Zs9@e%h6qn*p2^oItS8oYJh$=T2Ze= zB?}piNqN)X!6pHgVW@<$86!Pc#r%(eJv{~KFR(vflaOB^!N9O_!N3&$ztDm9|3ZhG zwfTA1M*JREJfoZM-^m|=E9tTqZLk>ND8!1aYs05h9aUEC9uD#@PuU$DAQ}K5Tp_Y> zlpC*Vvw?|uB#arudQ(Ny(ACI;lz?2+YkWUMA*4Yf_!oyCh7v^z~idd{f5c zL~Z|l{lmW}Vq_x57UUI>AL@12ad<1nb)7dhc6!}$_mKkJy{T>&Fe%ZT-&#=P)dRf0 z8~Ac9sJ)l*9H_YXcAD#+eQ;Zy^}MgOWYIC&zMjoxd{h$_UpDFWxOE*=^O*FUk6S!> z$RkeA>0od1y}t-ER1Vm0f7MTg%{+9oKsZbC2+U#y_L@!)KB91Y?obNy%M=L z<;o?e7?Fq%MJ(Zy1h>EB@>TTyd!&Wcnrs|d?#W3>`*&EeoeT(lr=7Bz& zX&x_NKO;lzCOv|@;N~?m<29e?>1l9pMf2VFAfHu=+5J;La*G>#Pap=Y1MEpv1t(0%4c(T zQJoDs+(M3dvC;CH^B#+O-Z-`OdDZ?{Zbs>pb$$Er@PVuKd*Z9l>vsnrQ zoS#)_x&?f?nfUP^pMb*!#vnao&v*pwjNv5ed3!X_;=L?~ zrvGReKCN3PYDy895Z4Cv*j!D;tZgnukgQGAK03=Q^*ZJ-T1AoAhWhq&O}Vrm@<#71 zfmdI3xWR>$Sz6!hvAGZ;NDiakXvpbKlvnc=ivbP`=b5+AM1>|k=$;CZPVT*;W!3is z!z+wn&?vkc4u$d~h97FCwPSZLK1Anymx(SbTJ(G>*!MfGbSJNKy5C&Nf1QlmZf#v$ z$;&a!O%yY{8P!!xviLl0oZJaNEY&d84lJ~nsWxjeP0$~#mb%gpt5$e?)OKio8{ZY( z;YPT>HA{E(&R=A1FGF%&xQ$W7h*pdeJ}VD$-(f60zu+RY)wq?}L)cS81?LJ0TpbH6 zXeD;9Glvp~7HM41)x7>{-p2DFs|RYUu!)wXK5OJ#;Ai(zq+h9j)&stm-GvCKt`v9J z-5R|kK_in2i~~zjN;g1r-YVTISyi_nIhCGEQ0|>7v%7ai5B{06!}RsekWarYaCfO% z;Z9YP3FWK9&0xOo2BgmmXrqIZ({~jMsN?dM@&PIK@j9I2`|={s=?kju@dQD>f=oSo zR<_<=7`mlgv?J+(7ZZ+lca#v<^rshJ^SAnr*C@?^Zy`)Q2P;N5c^;snwf>Z?=%zml z6V*J6S1LKO6X$Gn$6lh4i@e@XZskQk79%ch>;PG(0$Du*KK$9;Z+FqG5vx+6T7ta- zyf&6Aa$1}iiXWJo7SEUNA~w-6$P0NsVIF^Y3>~-5(o;^N!-hPa`=e($g{x9m*3R83 zkvLh1I=1Q;QMT_BL>YJ0yOw|M(zxszvnOYM4YrBp zOb79I`D)%po6ouWmR_EvZCHQA9dw+&PqlI#oJVeMEG=DawL2VHMEku*A?ej=)%)dQC(_fck|`s! zy@E-SC8c{n$J>0p`;Ob0L%Dt!VBMS5{PA$ya(J!QfS%qT&deV2gSWg6*T2t+2+RW6 zN$qyXFK3@(#_$CSj&KP5gye@)m#}ae3Xu$eFUoZRwn0QEm4bg8*R;%J=C6QsQ{BlN zy|*v#Wkl5@24;QW{w0kIrrlsdjigFfjawV(JKffLiY5~vDt7y!WcAE_E7Na6Pd;Q- zsda_ulWa0mKiqslYAQtNE5N6a)Aww(^&b`Obqv*F6)#q|1;&SNo3uKNBOXYw;Pyv`cXg>i~h@ zen_Vf0`hYm;oB)?jhc5e-!meZ@?Qurh4**m4bI;sEkK4XF`v0Mpjs@ppgYdv}3 z!^1WouO&4fzI9Sx2lF+=>CeN}Yspm4L)FPILPdu#D-e+3lI*k-OErErcs5UL9;W|V z!^dsrT?6mnFJMUevDlzY@QbVEaAR+dxlfXeDPtb|XQ?96R7w<>$JAVR)qQ|?bG(_t zYxYFoxCH&IQ-wq&odN0%4CVN1MCn_~xq(HP`9-3@i7%U=L^iYDAM%n2jd2Nzr1c0{W1`*1=ch^|!*)NInD zKEq74YfVMEzd#`CMGFn`K3K;Qk5LJ|iDdpbi_2I&Y=_lRvO$NHhNOri}Xb6+UtE=7ajE zY#GXpzQ}C+pp9n7@jn|JF{T^V8C*@n9T&ItFQQswl=S_R43H@Xs*~-A4P$2}Tm#4E zl>zK{e2q!aA4Es5rPUaAZL_N+_0%VQl>|z`*8kjCC+|1dG!$NYWDr2zgj%Lf*Oc%z8n=r*fh@5Tq~!DtFBkQC z|Ky^<>UJi6-juTmmz5ox89Vuzz%4byI}DSb3mq+pYgQ2ss>)r|?_vu}pC?J`s$D;Q zaakJb?6@0lpk$OVBQ2WU?N?#p*`|9y%O=@jk12m`ux8P)jtpAi;D*bvI7O;756VRqB-w|Rxo3~#+(~G&a7LbEK%b%TlNoi6$(L>l}?<|S+p4l4yI;v=H^o% zXmNe{jKR7``#r}3JQ`U;kt?UlTbZj4^X=Z(j^V?M{ySOU zO@Zw4j1H!rEdKNHQ%c~}>(-|Vu{niy=+0lamFLt0^&I}v>!xb}8Ue7&&0Yfq__jk1 z!EJN!nD5G+XdlEiN8P8LrUmB=RC2NdZN(&|@6GOLJv@JwAnNB#J!Kcnoe}yjTwc#= zf{uW$CFg}r&`QaTv}I4e2C)o|4>r_3=ytDffA|!EQr8c}2`9ggspmY(x0Mo1+;8gj z0VXBGkS*C)zVoIdK@FZEdl;B6FBGi*Dg0N8y+##_OQVPXq+(7vz&qLJ<-$-Zr2Tec z4WH5aue9t-4^c(`(PGqty)G{y(t@`==&bIwX4vCr^NI~I@Adszd;7icLtb;;Q;5|Q zuw=&CD$&DAZb7h6!L~MDjFy(8lF%|fcd2gjDQ2*GRs^rx$7f?R zMV^eNE<{fRttzmZ=Rq|<;c=Yo^(Ccy!NcsT-hQZILHA5y0o}!xD|?DFhPn82WpqCE z!2T{P*7)Y8IExzcaN_Ab=+h1|`Lbip)T0~~mEY8IOc}zN6Cvx@BbJkmgjeyiR5-+2 zG3i08`vusa$3y7s+E;vOaS_eO0i)%;<7-O9TD|DiBoSB=AT#tRjlV`l=8*xish+2{ zPx>A;+|1PZXw|DRPX2*M?5jl(K5SQ;N$x>s5m44CN*YjQ%!sr zc{b#V9iKs3K9Z_%=aQH&<*~kVmhc4TXzA}HPzGczJR#H`G7Pu$Rp&=kIyy?@6od zuAw!$vJS{=T*zMsjPkRx%Tb|0H}R0$PF@7}CA+$h=Q1GY*B-QW9+I8D_Xiz1gkz-=GWujVo&TM$`QoQ)VNuuPxlGiOd5+3?2N>LwC>d42 zM2L0ED&SEyoC<8)-7T|X@0k1+(z*M*H&N1JhrAXeOSmW@-SqKYSLtO}^+ZI4cL3s9 zXV?fucQ|?eQijN;pzv!;)|sBKfbYp!+jKKNOry2&QbOIfNBg;lMGB@Re?v#Mdn5c3 z>rqzWU9Pn`>U48lOD8#!R`$4-Zh~eg?v8ZjelsMw*`=^*a&t-XZQ^#Px!7XP zW1EA^gNj)oVQpK4VDPh3HUL(#Zfnn&VPC37*|)6$m=stD+pZeBf^Of^4Y}o_TPVIQ zQW|p>{q-5$-12>~reS-%p*z`eDLERld_GIr${ss`956Z$b;q%ae(bN|Q#k%t52N>ylCpi>g`BIU2u7J9RY=Jb zziHVDsMWRi8|5y~$|V=p8pmJAF?by)Dz8;z5z0H`1Lg@!Pi#&kct^8>`KNx2KU??f zzD)Ks=C%geq3$ydF$B(HMTBcfxMXYWVI7g}N|ok;uEJ*z&Ef)W2D7w+dA>Ii-+lh% z_WsuRlKnG+t8!?Pp$wG=;M}ZW@^ENOzQJH9#`(HyIY-AkKD=VWARS?Yqt^4lZCNv&5%#4 z8t&idL3Z?wJAU8wD;JIKqwk3lqEdm1vz@wvcd3Q$Gh9m-elABgC44iB2Lyv-`j06O^l2YV^2h$*cQmw+?P{+& z@PNDFi}#xRCG+k%Z(Ot7Mq0uB7RLmpRrK7<;hAk#5R_LECI-{aG>HO3^sfK@U@nmSXCAo2UQ)zsbRZs0{im^GW+Xo1^5RiwF2N({9}o&E$OO zr_2*a!Z12lZDpRuz33#%AHZa~=1L5CjLCCigEW!QtFPZ(b<7ifU znuny3Oz475L+MOvYSvQqg7#%|-V-YfRdW^8OVM^Y>_Xnc({P}$P!RJ$Z3lolR70b5kImCyWUyFs$OfKa!yJIIT7NFTa1=G-tUN_Bsmm5EdrT}gL_B7-Ts&r8>+eWqZY8?;@>G*6}BF!vr zHQr7-GZ(iH>g!fLCQwYsc@LqeiLz)yV#T^m0{7>WB|W7qQD(*my3lqklaV0KW7%q_ zzII1o=k?T?2NIpKR`lj-8M2ipi!=hm8Qe^lQzAiCB}@o$MoiYkc=KkW67j5JmtrbB z+40vSFHC~;l;N|>m3veRqbUw0JTa!zXE!}Q%=;FrdvDC^il7Hbri<5CcZ@3Eah|Fd zm##c6X>+YR(5%^qNyO}-k>Cw|luLXo&uW%w zsGjZHH=SW2Y+Nc19oO-YNa+j-bjz%tRoo%@+oc_yw=C{v`Zkerl!`sV(IaVQ*q9#% zJ@2a|B@PXOlhD@MK)!@Y&*}&EjJ{u0hO@v86+~ZFG}$X}m72$p({5dyjthat2r$$7 z*I(G~zq-Eo?e@D2n-C&dq^LY3_~a}W-fHlM5!MHU0-RI`q16f_LT;)(UNp&?ZqmeC zm?}1wdf0rQ%`>_Lj9o8YFer7hmX`Fs@mbF?>CNIb?8&|`t@MMQYaZHK&(yr$hJAdO zw6T6;^h|>0xQOaQkf&z-S#8@}0H7;9AD9O@ttmyQd|%+>LymB@JK@ih2Hn9I0H4Bk z>$|uKAbLEc@d(OmT{VaBF{^Yfl@yl9k(*}tl(9p=I->ctQ~Sln^QpFCvx&*QTVA^2 zRA=|a&v%8C#}kksc7OM7y5)7Ft$LtwyU4RE!>D&S?n?LgkYMSV+qrzxEf=?F`F(SD z`BNO%YFf&Em%<*%>OBqDX48mx4SG$mjvnfxbuvQ))%+uj$#l zz3yGwjZ6F2*>87dC8Pg3zHMv0(Lx_~%gI*{rl^khX+85$^599G>WdPI3kLEjn|p_f{tGb3dQe>j zfe?6utKXc;djw;A)Aixeg71;h2Wd_&4g8%e^AGp-4f?({o_9aj3TOw9=+?a5gaxl! z1Br2R%eS4Bj@}Xv(PFQ*x+09;F>^`2$R9r){XV-A$0pO#B`1Lsm+thm;7@nGsZEm^ zXBp*KNicKkSBRg_Pr@xZUlBnsYjqiN$B0Tw72#cEb5P~7J%~1E+>OF?L?!hOA(XTJ z-Y22fx^EG2gWKnh3aa%jMZ!*MpG@iY2FY2jj@jDyR86A10$*KS7fQ|*Hn3ub=RlW_ z!cE>EJ1lKiM$MkQ^7ePC+EY5>%jOsQ+AGZg9Yx_u$={jok0U8~PlsZsx|m0*8ylGB ztLbFO!ot>8M93ejj5f(9*EL1eweJnBD?(QVjT+^@SGos6bBXap4N!2w+_4m8YVarT z;22{@w~2!7;4nhQk}!vwhkO4t*8gct-fbRq2x%PK;TLIEyFO?nB?s9UcBtrr_k%lz zg0o>Z$~}^+ssW;!5{Ir%n(vMci=qU{TRl3zH-B={h_VT#YLZN2^+w&;@W|`ZoqVPA zP6AI$Parpq^e1z&>0B#k2Dy&WJj6>m#!)AaVwtS*5X`nn za{7&Bs!}8C=r>jd7{4)R5(xY4vdzTH70*^{M1@&b)UD-cn{bla8!o?Ih&g*@F!^ta zMOdW#pm=?mfkb3Ru=)luOOE@eSrXfl{kCt1N3|f8hccDmW&GIk@gUHmt0Y~T3`;bB zhfh>NVL+yuDE~Och)n4*8z0ev+UtsN0saDxDaEw)wrAb>0AhQ_@mYS(A#wJNUI01nQFFP;3mULXb1%>sdPc`jf&X6t^&5!ZW=!{A-oke!(kpyMYFT(8@`+_ zN^~mZ4sKp?loXYDGF9X*_@bUQ0}E}I_Y=qZ#MD8#H40^ zwee^__zVd8Wr>+KyM)&F%Q#*B$U-?3)&=)HT`DFWp1@sE+sv|kAhnL(Lx1Bap!`|A z9_`xOkEMV;YpDF?8}lF1(kuO(e&$;T_Q{}ziurC|z5p$lhO`Y9E_WF6NI>jRePgA` zt4VCzL5iTRq?_Iwi*qup9+YekVn86pt9fk0tI2nsf)oB{lg`L^_E!^+6+AD+#jBJ$ zk*cdME!ExRlS4`B6;%M6IhP@jjXCMvfC z0OAENq-HklhzeY}Z}Jd^q%}3RoDML87|7IMfn>47?tR7ma(GN$T|!h0vj|`BL^XO6 zlF9LSwo-KB%(u`t6`2@jqX;>3wu_>UilV+bg@K7dmdokGpry9rIoflVDQ-K|+9xQJ zl*z)B+p_3GDA2~VwH+1Li7xQ_7ML%KyBM0a%dM6&YTiw510G)tdb-YufwpKmmTf5_ zUF=QXe^+;;$%5H4t+H+5_EM1X#3A=IpPn_s@rXi{aKYsz4;xsDrtmzo5x~rjK%{p_oPQ! z>$vb%)e^i^nKe&7Ot>hrwxi<=8P9B|^Qp|qo!u&83cS*>%UUq|vaVOTfK#y-ZB0$7 z6huJK0*gf{X2em>HA&#ADr&Dg+WKt9sTpIGwi315-h0;a4Y*TTcQF(Qk&akuyeyLF zzhJgy!4_uXZpN<5QeN|1=dZmDuEGDICwJF7%a@*IDr~&th$;t3n>R-e+}5$zNQwa7k2J73fFCOdX~~PpC=}27LE?npB`+l z%H>z`+8GFAO5QgvO03;q|1=?d<|T(4DCe(6CZGu!CCE|t|HE@*($P8MGo;)+W}gYw z5=>D=KFRuxuJzT`+s*Zq_Ks}cxi$T#h0S-}8kZ1R#RG4Spg-n^ez4yunW7x+ zD6*=Z;Q!sezT8SQfwzS2k-Vjk4E zj!Us^HR5b(6f}2SoHXpcZrNHKPjC801&K~)#_^sbR z4*un3&YK4d>Ga8Uvu1=0RW~Fl0x{MlEia9;xpw6a=cQd)xq); zjFr|oI{Uplu z(jm*s+g2G`WN<NSmd-^v=M@RH#)JF!QkIriALXPd^D$e(A-7-|F~<86{9o&jv~@ zA~Mp9)(A*60At3jH6ZhoB<}HQGtIE4gF?2h#Wm2e?2YrNPlM=9b7b5p zm2N0&%|R-Elp$@crDROwx-q<5FOLU1}lb~ zek=|FOYE?_ls%;N+*19E#GYP+)S{+I1~ydLAQl3y|94Bu3A14wM^w_fXe=TH8U9`! z`p<4KV$qnkB|?Q6(;g$(kQ2Ze3(1eUtJ&ZaYLWd06@+&@pDM{P#$_6uA;1=U9B{xW z`Lu%5Z!rql7O%V_(0>{gY7uOay;+KA>9+h;#5*-~@kVK4bX5<8CtteJtOy)!;z2#GOV(-dM&rcjPQgvwMGITIUFinSBF4!M>;oc@DEt;2z-Xg8!KxR z7)3dnScH(5XhOBLtS;;}ori3f8H`^1!(NxH8gWtk)1?O1CfzIoz{0`L6R3tHxjs^0 zkIo5WIy_oo)|%49Ea;LcTB!D>1b)2W!rQ(WCKX2TheTE_^-|twmHD#FbDen9wMgc}n<| zY3KFW>-B~VlS^-k@%uAlq|#UKtF1;DKTa*NlZ7VmPFy_BEY3Jhv99q9B}5GAHVP!e z&PxYVbQVTUWb{Jc+eH`XAQ{bunXXZpU3Q2^MX>W9lZ75yr_ZkCI-~XyE(V6*3#%Ka zyR}t*8Bp}^64^{~Fz!C$K4OLHzyGoQbD3QsiPs|{U#@t3sKe66|M}|0!4m&pAm9%El>IVZDLl0i5nH23a?tEnjS0@VrmG2FeC2UKrMu_v3u>R^>ms zAduGjt}aq`p!*wK#ATRULbe?;dJc2i`#e>L!<^-#%E#qAars8Hjc}^YXbdbOmp7u! z`ArmdnhpL0I^p;5sl(01xXR$J8Vfz>_wafj;O_S@HhY?Gi1o#`y+wCm-OvKDw|eWu}Kc3t#d}pkmOQ4306~G8a{e z1#g?{7(B5J{c_J8hV6TU!e-|46yx-NU`2&PcEsD?AoIz&$&Gs*+sC^_5K?(WC%K<8 zSHC+{ZY5M|+@sE3?h$SqIU*=7*=j<1WtK|58A?KU{q6eobsK!aIU#*YX~(FXk((hq z1dJ%+Qezlm+Ju%fXRvQrc|!-liwe$Pz~d9n@%mM`i3+ z@drnuNc4!I1HM(4B`#?;$HpCgzHl^`N!>wcxIZ49#puS|>Wg%=iD*X0I89pTvs0!Y ztmKdIPM^BW-MM9+c8=0#woA*0v(PF6oqm@Y_CWAnNVoR}tek3jOOD*s6D2x%BXo6Z z_oR{=How(Ri#1>Qag(6Jt~iz^6KhQFsRm!E3}=QL2ybCC7d=lcW@ssLH;S}KEp|Ff zOW6#xuC(l6T~ZRPmB|M+#VJP+AYU=bL~_aeZ8YRc1^srz^c8bf=n)`%8g%(-V3_D} zR!G`4D^e_1?m$IYzs~?HZ7_!UXq>PB>|GvMBLPEB?Oy4XE?TCx&i-0mM1VBCZ5ZA4 zKJKeu6A8-Kc5mEPw>ErMlS`1b_ul@k?dXKw!?g>%YVqSlqLCLK-$N3@h~w_fI5Te2RqhZ`tcxEX%Gi&6W-#*% zf9AXng;`}9yAW6TbJn9RJPk@OezC7!HkVA zoJs*gE)Xz2-<2Mb(F*2mldayO8tewgz?Q}Elg^*^=6b}k6W!F07%ll29m z5Damnl4TpakP*IEBd^+Mmif@|8}^8KPru~e6%U?x-=P*LWccuZvEQX%8Y$#>mtPZB z$t-ukw+MB16gUmo|IK;{)Idoy+~3@9iI%SwN*UDn>sukem>#c>xpH!k0@xs*z>$}$ z?L*0x5IWH&@1d>N1^S@$(C+3r`4m=*x>#-%XnGoSqWGw!`;$w;U@&UZ_S3SIdG_!I ztFXxq0*hEGXVrx_J_*g=2s2H!^JxgCske@H+|4*zrLeqtR@aF+7j?eMX$NMmoc`uD zRdqrdx>)6?LQsY-sAiWV!PLMoR-$X%=}@d`w9;6+b5AR&2n*dns#`@vH+kY_z??z4 zOKcharfUC3y-ALJ5G zfx5zvFY<3HrQI|PCb;GmlW}pxU z(%7aCRf^>{U%w+{r3BG<4|=CKknWB#R6lSP^~)%=ByOqY%q9-iqvWvUl==Z0-l?FF ztS~XP$E5R07CzP+Qxj|%O{&BGexq8Te6YxkgP5@aCYnRo(JyIK@KadfCB%|UAYiSY zl>BvOema?M%r9YeJpQ(fNyH9r@X>%3fH@W6zIb74^l= z;KbhgW?7B#dS)6+8vW5&8NXI@YDVbQje<%O!|{K}p|r^2e4&fJB(n6V$D+qDy-L?1_A6Y`x@`U)-q-EPhV-t{?PZ&y=(?(+_|Y2e^C5_UNvIU;;Q$i?5|C#IhxXG!s%@C;z;g5 z=F6D;K&533!vD>9G!@6PKh>ntm|n_`2oWhd#v#7p3081AJA=LuZ$KPg8p6K5=YYB# z9CnI5SIQ4TO<2x-Y1Uoyu(s#5VeV{ycsaB+@8w$H`MYLe%?Jza{60CZ9f`r0ko}u~ znL@#~$f^UW(P=0;4c)hTO)8c}+PsQS7^SMuX_zNaxyl^z!5>m(!oeZ&Q;bJypd^N- zb{@<$1=};uCF+EaFvMk-lx^&ZA=8@k2^CBnF<;E=(4O_t%aSA{Z>Rjll5PR_{m-re zNF7akG<$mPlz$USP013~K$d!wi#W{44-T+QXdPw3tpD(fBL>X?7G*G8%*V8?+vZ@( zP$$v5cb#E0KUmHf&T}8K*aP7j&|XevXvB!TA|!1r=gwsk)I*1 zh-FBxC<(F1B5K$8wxPm0{}Kb5+JJQ7Q4RnQ+nS5RrQ_+KZQL?|PwE%1{Cm$ivo$sL z1yNDG#y)TloX?3YHdjPVzr|{1q>$#~wpDwE&D%U>?7$y&LE)wQ8XjaQ@4-1SLw#SA z6)=I>Yrmpxk8vhUKy4n2bmG2GSVD)EL6t7=5<7?akhdSlrL)@QXkreW1hmIS#=7kB znEWy@9FXZ6Z#<$@wPvBi#l8yF84SkW!&$H;kU0;pt?9O`JNcq?NbW-8Vmuyw*6wf{ zF1sTlr&||?X{KlSdE9|68>n6z;C4r?NjX3J#Oee!E6TAeJ&V?fex%s6rt*Zi*bo|Iu5quH!p`D<#*)dYbOkZ&L`9$UW?}GS-)Tyf8kyL{(c^b zIIrk&QAw%FvBU$hW%jPgCEy>2Vo*tKBD+Az+i+flj!yT-8OGWjZ8#!ai}voox^IU;eqiv0;%ZSssz zMX8&P%FFN^)OkhzZm*M%ajnW}vy&Gb+lrbwKuRw`W;D@oa4>?+=-Y?Y7zL?uTUZWC0ql-bV{7OgQPbz0D3pL$V<0y(SOj13A_Fe z90?4hwq3RWpGsK!e-8UHscdMjXR^|I%&t8*mhMCczzJw(5i8MXO>(pRL^k3l$Gm@=c|i= zWD0gpx?7F9o+_qMSK~%5xFhps_~oLZhC}@Knnhg=3erC}-|-etLe2dY`h-><;zWv6 z{4d*lm+KTQmm2q1tYgH?ic0(xNA_GI=$XyW_G_6KM*QQd`YIM@*7HBjXnGMvn&(_G zpM5?}F7vn0kZYu2%O=~(>{i}+_@YB*vk zX*hB~t3O&zz^p$qO@Bh#{e)W-VHP_))_|3CFC{#W&gz&_s389svvG0b zq;LGBbl&%W)hz?kviLLi<5cjiU1~S2t8TZ-r*So^ojt_7W8_W#ELVS6?WY3|bl3hQ1UO8hOvA z23_K<=HIf)>4UneQr!=Z?oSD!)eCD;>ZRuf-Cs-9m2pVDV12Xb)yXDaHC+Y!Ex`s_ zFfa}D;!pfDa@r)WI&_(L#;ZP{kS^cG`-0#k94yeNQ2HtlRw0t&Tg%>jdQg~Pokxv% zLn>fFwc&I57UL)C#vG;CwbTnmAMbhAi{@M-(hb!PMgLIEYp2(IK2S|R7(HN9xQu#k z6izT>aa!ULTZQohUN~ImQ(MG?{>6s_${e}(5#U_H?2@Bk-NwSxYIWV3gvQ0*?B>&s zKJ7H$(cDrxH+0UT`UJ7rS~jr!-zbXL7$I(E_J_eGIIKi`gX$IZai@aKyrQHnCZB+` z7h5jydFv`_aoOvq%&@1HXZ(Grh9n$PY+@v4LcMnxqv8V z@LTAFI>RmqHZRFO4ZEy$n{4Q144NlOptBbX*60wK5h@26E`m)Zx$V&EXhvA&ei8u- zR)k<;VY_x^5L>5z52cZ(5@C`Zu$u%YiZ^V?fw-z0MjBP0NTLJy=c7K-!S99K&i>aL-}r~H%h;? z8FoSVE|oJXWMEdsmWE@Wnrc317wdp&uJW3d=m1^U(rqz6C6v{0lw>%n<)WgNEQF0| zQ#dW!7DMBN%9NmXUL%_+^aU8|=&I~3ofjb#bo5W#O@_+Q@&3pW!VU_Y`8TiEWIy*r z#DAKN|CvX!b7KFlzCRVncny_OpneWr^b*+*je+gDM|J1!ynGI2dk(!Ag{Of33_(c* z(k*(j8;92BqYQ;ieX-9aoy*)V)c7^(o$Rp%*Z&+(HQ_0*0j~nMyf5khFltq1$*TY% z>N7i)WINAZH5eb*u+7s(z=x2msBECZM(4KTw)WQYiYXRluBvG?7kv5W^Zk*97Zcfi zSaEy7Tf@71#(&#ePF+_9I*rf9&2dw^=GPs%D>-vXX(av;1f z9!ee+Hhary;mXGj86=XEL$PXSBFb&sGh1G3kb7#dZSRJO{!5x`bR~h#_R3sLqmS%A z4iAZd?;Ge4X}h-V2{o$$&X3{`>^#6OuNWeo&!o5$R{yZ|!^!7sY#L~S&p7V^Mt=-Q zROuGE@flSuk3!vw7x^MKHC0x>1ZMM*HwO${8I)+{xHNQYrPh|gFM4r||ORZT7d zbI8;uc`%5*57bg%)y$#3>sw9dkVTT`PAV1lt}xCKUpsyT+)Mq? z622JhV~byI&+-;AJZ?W!Pu3(LDAp2hz5YdD-!Hu+%(^;^lim4em$oh~KIMVs8%F?o z3U;iCRq?#^B=exDjp7`ode5KT%45VZK^ed~BrkvxJUcE1CEC>SgrFLRim-b8ob=ar zS~1I%wj<4tWSy*WI16B!u(bwSE{At1!=6fsy$LM!DL*;V^c z86P>@mvK+=Y!;XHw}@={H~6U(7^624QiFFv{^bj=C8!M6Y3#TrSzhLdRN)bT?Xe0zvU6;uqN& z5e{-RVJ*VtSdS`cS!)Sp;5N;Se0g>g6CN3{Y&?6DD7u_y9djcwfpsLMk7AcDyqCt} z7G9L#*QBeBhRR7Z!wKr3Aks+uvQ5jHT&KVyKR14h?XQMVrwv{|&t##{a3m90@f*(~ z-s;=xSQ$0rV&LyN0a7r3spWn`#TB~N7O<|?%5^5U@*iKk^pBnHf56QwI^ifGIRr2#uk>HiR#G@9p?0kmR?uMO>XAj-OTSqI>ejK04U-oehl9NQl|&GE#$<- z_T1J-%;2fxzSICIVKnt?e;hh9>ijM!mdj~8E8Q5YZrm%)gUt<;I$x|V7$U~l&98p3 z;I45$&g@QiBh&7wNj@vGNq@Cy`XRjI7cL~}oj7Lsy!N$R5M>b30)7XUTq1krq_#i# zE`fFFsP^F03$c#=%yl_lMEDF?Pd9t(+1GJeci?`#e0Z}wtN8V;)MX_ee6$jgJduI% zZsz3Pn8yN+16IalccJE>t;WUx8vMd6eu0pIpHZuKe2+5c%|XZv`Q6I5N*~uwYlc--s^OW9 z@Fvy}x9narCgTl&lq8QV2~%ds>)6%Vm;~`-(r(Ohs6vdJmfWp*%%0)qzlV@ZAQ^Cd z$Bu*qffnJ001Ui z$D1h_+4%eP>dw2X!(y8Goq_lB15Q_JAaMPpCLb0eb?aqI2&u=Sn0TJR%f z+ejZw0!cUparx<~>ixOdT)70rBAzA)udGR>VS+S)7Y8NXHB4ic%qzCY<* z=G#1;V^U^f8*fF_$MuArm6=7qkdfP;Sr_Dg!K z+$9#GvE;!yqFvtsg>y#^Ae?wR-F|ZktGZwX#!Nug8-|ghSOcg5^JU zXi4gC(2;iU>HVQ3!}1f9{{*YoL&=A`_3)o5u7s{Nr#ioj67OZ#mUXQlqTedq)L3?6 zz;ha`Gbzi7p`7WP`V?D#pmB)+-;G@92mFJ{*Yn^hZU)lrHmxmzx>AxRe?pW(e&xHZAjfryjv2&HbWj2b! zp)^AEGlD$jolb~z`t5+Mz0v(mA_2N5!bXn;;jlRVBgSMrm*o`-=GD#?i6TNl)|NA#@HqP-81i(W2IubDmTx8vdUhyUyqvFVR3Ir_;YDa z1GU2nyPZAd#Y&{o2;NwgdjHB!zDAW1D;f5no2J@Jy^+I%K~03r;DSn}h_oV0h%oL> zpKR8M=L*=F$0b_r!Z^l%H!)_u?Wl??E2*2OaQgD8#~#tlU)66c&9(95(c1u=+@c1o657F4g@Nl- z(PBI3U2UGCbyk%zYi3osG370M;^b|>VEbLQ{HeLQHX@so3EH^(dR{@yPB)E!b@t=K zx_}k@T*!VqJEZaSm1(Jhl8CIagsjENu_8otyltJ2x%DHweI1&O=P9~OS(aj@9Ao@| zN)wlxdniKG!UZqSU-k>LF|qWQ{VHP1$yT-yaM9JKJ?a>+Pnm>ewAZ_~=F@LADxURH zd3U>&mU>uN$EM<^UH=YI$iPoq{0TL(8+D_pO8yFfC4Y&sZVq_r^9#ac{&mWhe8sTC zl}*^++`aC&JlvcG6S50%TfL*g)y(UO@^ddn%bhk;_c2UCgrt5NsJ#*C4d=C|0hvCd z+RxZamtA&wsX;+fgAHzKP@yDuid~S#3KDU)?9u*Yk;K{}KXJoXeSqa5)0LAb`X006 z3H)D1embS7l7r`TM^fFxpC(okRd;)CS9ZH%a$sL7_B=5l?_EZ0it<>e zgEgAz{*7V|by!xC49f!9h~%R{+wGLa(fJb87g&dnymIU(6Cy0EHU z0xsTyb7#9eCLJuSxGD?QU-YZX7i$v?FVGfB=2te-Hy`nC@iKp$$f4Rlf8KngiZVfQ z@Zq(r(zYy`uj+0qH8cNh!bBA`JAstU$6lkqHbfF&Aq|-(9feteC<+MHKO z_aL#iarMu!%=v!zZ4PRbxnqXY*T3Z$A%dHAlj zl1XtiMFc}51Sywdt|mJB$8tqpdl4d3t#@!0ZblqZ3L?XBUS5+ta_m;nVq?xtz5kwj z`gd6fP*ERW2b_EXJt8z{$D)rOQUe74>x7IYy4oF%VfYzN0Rp6s#4ubO%<&8X8YvBy z4oeoLSnhSSE`i@N3fOCGMu1P?uCrO{L4|%}n!*=@$0Q$B+#MYuzfx!WNoP4ZDl+!F zqjlHuK8eW(8GcESaaVEBJ}tQQcCOA>wb5)#O1h)N+aFX@hy7p!s}5+w-zwkNzxk5p zHOUL{b}Y7zBZpH2?4G_T>;La3-JwVP3cBEc1VJ!@gWO!vbSCvKV6=ujS@BgDNNqI0 z@OYcNEHEk-bzb0V=;{;&lcIrAt8D0fDFdj9rxOdEX6d&5g~w#KVn+Aq(^=(6)8PCL zFkM>brpsRloDM+X!oY<^Pm3~1tuyWr#0Dq@d*&#q1RSfy7GZ25Lf>%3jCZOOl{ z3|!?Jt&k=p2fb38eoF>~{#-SlGM)FYm?j>Lr)A4=>ZEpCeQwt>tH!j3$-I5nQ+Wjw z?=)I6)KAye)K+B1d=h82#=6?sZ6K~dQ}mmf=)&|9ce>ubfw2AodHRsVGO|TamyTbt z!#;I{AK~!Ae-l@3SV*|iuhP2hkb>9iCwb*0FO*g)xp>a>*7sj!z9o}nd%nM)y4F`g zKnIvt66~q}=l=gB!86aVB)CHKIY9?{O*lc6Y$Vk3_e=kXcv6YsJfWzV|7Q9c@*ZzT z){$}o;jg{<`RcpBKRy~*7tXidN&_{AGi0gpQJ;=N&x75cT{p%0{j4Asj+^hXRMZWjWv2eOoU<2?AP z-ICKhI>pZ)kh@Hvu80+9I4CpW`P;GtFyvXC?JkXMP@B$6v#8>d6)_%vM`Q&Wu+Ax* zMP2NQGa^AoP+(34UpD66Ajo`m*Fr=2c15}OZuy;VuGUuo31_SQgM_8Dm{buj!|9HV zEk(Kz41jaksmSleCi1Mkm;umlK9?pthgY~0MZtR3_`;XAr$v#Df}|{ z0qs_VrB{Z`2F9EA4{vSk7rYA|_UD|i@qZ~WpOf^TzZ4i2Ug;^hw1>9Il(o!5S*X(3 z0&Nx{o`qLF+?EtlrVAlc;|(T@XlLbT?6i5hD`q9;`V~n@SS@@wrnk&axpuHw7i{Fr zU1Qz_!DVGcrsH6fZ{QQ)^JJ!IzY)O)^Bp_biu$7#cUs`HzYkd6zGEH8wv(r2IqOJ! zFeAGJGgiBN066fc7Ht0-U$bu3qCSSf$uVvWtZ>VifS}%hs*1o258CTptKLR~BsW{L z?z+`+BFdWx00dvy{!aS~g0(ArsjSlr01%9Uz2ZW%k?P!{k1xQmad`7~3taE(nVQ{q zXQwqHV;C{&l^AFBl>%EAd5yDY{ueS2tqj9P=@Nshj1fSCLAcY3u3g#W#i7K=FalTO z=VaQ^RW31r{_)QfLEvX@P04N3f=c~&NtR_W#!4=l>m)Zy#Y!r4RwpuxIdG4?y zb{>OPAG+NywXd|eGO={+3`WLUguOEqqf*P=(wbq%;7Cwq73Y9V8#>U^Nta39ZOZ== z%FJXvNI=&8c6}ubFWe)UHz7V%Jv;|59LwbcIqSjAxeuZGA2xJ)^m4RGAQpwCI^lBr z<#!x@+&}EPs_jfICn8t)Zc-ik{P^9u9qN*vsy zL5vCaCoQ*MV;j($cY)-*(%zog5!jyKq>d`&bQZC=m&w;hZ+y;M{j#@;g>j)y@=Ab< z<^B@j{5g!dvR49}g0&lI8nih!>qmx<_zHjp&c5{Y%Q(qs2`VEe(X7w%#x>!Rszm!>4{*cOcXl_p-b<%3&W zBUGmgi<9aE*pXl?+){K+6h?!8OiC`$YYD^C@tM2o-Cmwo8T{OPSSAM~7DEKS!m1_) zn97&2eN!?d$b5|{K;0*`*wnd_8QWJA1r0jBfqsoT|jOSJQE& z1}1n~GtD3^z0PRh&CCShARF8QGDeiBa9E|AR|@=4ZtJ%iE0fwv#|R{t!P=w8#3Qzj zIuvmT$}*^(V;)yl(kr~;TD=3fVd(ZJNfMFp>fY+5V!Rx*20=xQVk+V=Q%xaiB*{-= zr@#B?TjKT)VIm?qI`6Vo#k?9}&d)69nof1D;EnRXhHu+^YC`|vvZZH8&>SdnPl z@*N#D3^yAdmbeLME4Df%FAVZgsby~Ix2psHrezTZxh(Q9iA8h$X5zZcM3UmgWJbRF z3h)ltNd5Aj?Zli&KSXC@C(<2saoqZtGMo}D$qeu(hUK~_gUtA$hHzX~ksS}mj`EAK zB-n;jae;Z1tv6jLo;mC@mgX;%hpb(Pab+8&(0K3OLhn^YvU5m~bqqwPt*FyK9$plVOPS-C3NV)*;dCtcnF0`% z`AH;WAcHRJ2bj=XRUDvk#?AR;fHzfXLIucqSLKt}t;}Wu>`LWEamE!l&$2)hFak(# z%9dHZsm{k__ZF}>{$2O|1H4Xz?ovHYM>}RGW?MpFil~t4`SkZK%+CDPAk5AQXUc#H zwu05_e8Lg7KzlQM;xGnaS}KP!&^56W15>UGxJ7<_T|Wr7Fl76qa*qDL&w`wadgn03 z#f+DHV=a&aD?MT*&WSo^unzy;MZr+kTr=^1H2sg=@-ydiu{-!PRg%ztH;tmoJkwhjM21Iz`<%tj*ZLjK-;}OtaI+F>!U`%4~6tFUbkd>|*Dw!A$xPvWjSVVa zukh_gH8i6(a6=;$fpIQhA1=nqdb)aVtPm!^(!{_Mop>-jvZvAk zmO=AC+K@8^y~=mR*n`GwO<#x)Q$b}|6*81mBU$3vi8I|QiO8H}s*wZ!==p1wks_%K z!8KSViWf~^jvSV?t+~AeEE!`|^UU;ga{NYEqAVZ-2r zd+eg>FJ(klAPs@;q<5RELf4IRTVLmbE0}iB6mp#$VHX7Cq0c+u>1d zX8gUIa~H-Da4URNzsaGPEf{$Z@i;22D_v9YpJxWx2+UW$Q&IQETkHl-aGO(&g-nHJ z*{KvhL(4Kb;gyXbLKU39#5S{fkYiJHmR1x8y&(Ts$xqA`8kYx(RrKRZdqxu^&VWJ( zi^q}fUC5s6rl>a&__0+-S^*msybYOx$oeh|5C+Cz>wLir9-1HC3!KKFYTP_3qh%Iy zd0=2FJj*p2*iO*w>zY{+z)uk*59#}HWWmO|&B8hpu?1A{TrqVEY(-f6-JZMYPlkyP zPQDds+=6r$=8D$7^(8m*rT$KHg=J5fIU_-|a9jI{fcZKkSlj+!xXv^SZ<5!*0G?f0 zJx%##!jn+zz;)QJ$-LLJGkun;C;ffa?o*(|H@n6|ZZaSe4*ypq6atYTua5bh{`G0+ zL`zFh2Tn$k0nI>G1CC&{Hm0n;#+akL1cgnC$~gBGE6!GSY89wF8Pp%dzo z3lZ1&p690U=6!$;&xQ1d|7D{ zV=hu{;T7Wn*wZ-TZ~H)xz8I4HJ(xKaYXH!y0D#s|f-tCt9rO>NrS2LWH+}NCA1s$8#yAp(I-}Fa&zL3{msq&XYtps?A{SfznLtbIkn0Lh4PxIrQ1F2=R-#w z!NLZ7LE8!?l;8a$32=SGhdIOrnRsjWiBFmC`v?DU*pi@ZLlYxZQhJM@%U#fRhJD5R zX_D|^WSYcH$h0n6`9GU1;hE*rtaxnCD0(F0*GTqJRmP*bY5Ec7PIZMymXA`!(rvgx zlE#k-r_jdC3D4rHFU>PXN2#KlA|Zd2SwVhjNav7IV8Vp@&Q;_h`gYh9J?)P5B1JCV z2B9N33No5vJlspY#Hn}ya0C}`)R+qoLLDF{d5^#%*v(2((V4#`NGxU8==Z`I1{>3v z2S58J?mOX4E$yoa!EKLylH6uGFjm+LD|C7`W@<3v5iPXJ-WrLNmRNpUUENG@Q;!Z? zqGI-*i$D32GMcSztYCIBFLRkhZF{wRxD;ud_|A>-x3C2|pDw=DYSuSJpAXMjBA!KA zRe85YhWIkpYZHQGtj<|Z3{~o>@0(-nwb@YUr z>+m|fi?nB*Y36IDc<6b>j8JDVy&xyg!832&_f3Pgy}43+1A=$!Tb*&UMXa0Kk_f@o z6O^NCS#oN*5KR_Jl=P1lrc4T^*ukbB44Bw=&vmE@K)Qq+DJCAnlyZZc3jlqMP(DcD zVDk6}m^Y9mzSWAys@aU9SEHEt2e>BCtS5{Q z%j!z540uPGewe1>S`G{Ng$spQ5)N`kJgNkJ9^}uO13>HcXN%jRkdp;%yoC_)CX{US z=fWdR?Fv@FqFL15aXdyQxiTJ( zg8z-K?j}X(!owCj&(b_BU&T@7hK~mpEE=MIv{8Ay25d5LZ=_>|YiS5fi;-_c2_!Pr zwjpDTS|kJlN%HGn9^hF?8n$RG5Xb^y;ONWdXD|T8!eAoujV2cFEO=M?Z%Lw{{Bj0k z9k8Wwl;)J3iLsRk5Hq5PIxO=Q?3E&O8~ICo6gqcAp8a02(aKXaD;UBSnPNt*sj?yW zHIZ7bkLRrg19(HLJi|=D&@nXwX0R|5pru7?Nisnqedy0oBbsX*xLG2a#H)?d9EOe- zfM8!S5gl0exT7g8qkpZ{qcc}=oDyJlHohc7cQq=XK4K0i^BRDMNT{4WV$#9!%Jq2M zZ0S(4yWftx!vnB!Pm1l6V}P6d4^-83KedL+Y|U%4;^+TAQmyYdn_jSuM_%EmIt3lo zQig}j-=pPG#-4He+uE1%X=LMLeANz-WS>=(@Z92qI4TqL1r+GC** zN`pumHFjW9v@q&HUkPJcd2jQ6L-AByH`L~n+vzI#)jzIUA;LkFuGB$Lh0N^xPb(Xh zSwaLO?X^FV0(T+HJ+<1&yOCMpR2#IH@0%l5>Jtp>7$m(&Bh(jX7lUrJhJi+(6=KaR zFFQZ)Zb%}ey=DKea4H@i38s)u?4Y4nOV^~O-1jacer)^@?)6#scm40r4yE7qM_Uhz zW(jU5p8~GhcpC%2RZC9Tg81sH<)?FRBy3TWD9|0Lz5l|Got!aL(0aD`7(JX%%ty51 zE>Dv?;vW&F5JsCCbE`1iS9l*2T5Rm_Q%mp4>bcJyBO~VMOS67)!3!%AIo8H^heQKl zyC|(&wd3eX;kqw7G$_|U<=LQw(OBzbTVVipU5O8;EUdnZQQtiyQ+FKn ztwV96nh1|;zNN013edOgkRGqs7kw#FDCm=Z`lpcwvz^nT(5KKD^LW=DpBFtl+ltqI z2!h-=T{V8*>OP~$fRN6e|MZuwkPUbSwz}({bwwcibDpn^ZGCM3MUi;Izn&QyrT$93 zpb*Ii&K2G2xk=$0ni0^Qqm|W)my`a{nfIlM{Z~Q_FIexcWy(>BYCN|s#DdATzpmP{ z|8UiYDTsCfu3G)%)^)!LT7R zc9=4@+bv^nRjRD4-Ci%y!Cb*LbKgG{FN}R2^19lmhl_*~TOE6!*NfM7*GMYt(L*$B;pr zh8fC_b7>FTObDnZvR)?XqSkN}aC9mdfWKw1a}z@ZAik1l#ByVT08~vUt4Y2ZZ;UO)n;qJE56!l#YC01fMVHhD%^AUf%N;X zN>#7%nj41_x5z|bq!P5J3CBqEPo=GDjwIQQ`c~b@@9=OabA!C#quGAl8@lQosY((p& z(A2>|qvBHG$g!y-v(bvuHg>naQ>?V&;9<`x11lI#f0@Nvo;_2#L2NOAk$!`-fI-#8 z@a|wDifZZq#HnAd;EM`u+t7NQAy7B2Df}I4CI;bkExgvo6uopoysJ$XS-q*+T`u(d zP6B*pZ7sGc8C7+@Qdf|5lNSMXt)xn2mn+MCbe{7(NKvf%p2zh+wAHDkkT^ee1CD3W zCI*g$EO=aFLaSDo)ZBIU<_GRi>=n16;v5K^_fy3SOz{IJ&PKYH;S`|qrnY{* zPX?Va3*Uev1X3C6z3YT+Y8LB&eZ2;H!@A>QX>aixo4ek`x&Mq)fAwBItmozL7u5+E zSyCM1m}GEqCM^9QG}XYYiZN|k1W>w$bkkenM zT%b&HKz&+1DQ7+jBsK6gT0|f@j2E*0E;irZ4O>l17vz$nhu*6R`^;~^8G+`P%l2gaJjadrMcJUMLxr*PtDW=bh z%z%^j^(cXS&b_w~@J0-##r6#@)$V*J}NFlSF@0U|5fPR!F8l3|- zRV_W7-)`71>UwFoC#}|ug49eO3!LYYrv8)|MM711&ySvvoPed6RV*=l^9(xQ_Grk z->+tp7QBtDaxkGw;ZE4nxxg4I%=sMz_Ov)G_yU*agNY|X$Pb6W=~V8 zs(?k*zgSsXEEP#Z4X4;nznV_2=aoup6wd?n$=?(?{5!EhT6tvRrRk41AW~==nH#GD z>c(5kQrn+_5DfZ;^ePw$TaE#y`1o4j-E&;U+~ViTl(!5s7G$sd6yYC!%7CO%JQJi2 zRm*^}z9eCQuX};2QT!i3Rdq%*-4_Dv49GraWl7O}43-oz`UauE7B*Pu6m~`{^?sx< zaHC9a1nfGgxC%b+vC^82*GgL(fs;LRyy>wnH!LYwW}CHM{yH5!y@X+BS$+6XVJbbC znDq4Q5>l(XPmAKI`KwhhC|nOUm|4yr)OJ@1{gLDeSMEv^qfx#%yz0#tO}fs8$X<@_ zdX_I~@)!p2KkDV(&2hfnoM74In&#sau(}XVhcsozK~_T>lO$tzw4Cs6dM=5p$wu)W zd^jg(fi(9e$_8W80%9k>SpcUhocy;qb>JVI%6ft4F?0OZ+|!#336AI^y}^9o!p+Dy z45p&4ZIhMJ=#wV?B6fuZvytY!{%JZ|5zq)mBm67Yl~o02&c~y6pS8uJ>K*F|!O--T zCU(wvW7ZY%t0l#G@t9N0wvK2Q8;^ahWjK(`Y!6q0W&KVW1R@4GG6s7Uu3~Y-z`VvfY<^X-FISDV8B zD7Gs8{r`%sVA=yH!vFWZ0mQe@9fWgBr=MaIPTZMWnq9lN?~3+^sPB4^ZuL*!o!?lN zu*CR6$oE!lA~w84k##uoMcOkIq@|<{S=EQ%v!imn@V?f@W<>4GCH@*}tBO3NB+GDhAEzN!O?USTV+cx+1v{Db6Rh~(? zl;+iYX7Gn*pn*mY+Fdx!w{*C9@eljc`dKNji5LF@tlxq_Cj#&1~?z9?G) z|LilUC{mkxMCCT*?wF4q0wIAOaVYAcwdfgKD8gSA7P|S6a2awE!t}A~8;c&C61{>* z0tIvgIb%v$@Vz)dYntNp-m-Kv9GhDf)%{(h;nfi@j=yr|7$i2=yw9izo{n$RiZ4%> z^V%Bpm;Bfg5yBqDXq)8l5XD%?q=kd4y={fn9k~+qS|=t0>cna9=OkY(4)HC)Yzyw% zrZPURMmG`b3Ii(%zeYhmi*tJ$q(`zZgk-+^8+nUcPaX9qcV&k$6@CwHU&ye*jQJ3K zaPRt&$%JuL8n-jyfR0|96!Bcp-AR6wi^FW&4rY%+Xc>Fhs&NVKB(D2$FC~CGP6h=% z`<`CePt_8jI9CS$14e~Wuu6VNDSkI$R+|oL~mxRo& zyru=Q{+RY7388^N$SI#pd7L#4m8aI_vpqX=aJKimRP3nBALEVxBR~bMxWJ_Y{FFcd z>FB@1ry)%7(XZM{K~Jp&jY6}AMauBCz7b6$X}+Z!&zMvqUmk+%s1Teb&u@H_zb5B+ z2`#862%=+u9;lBa{-wJ(jNJIYd zJBG9e>@d5Ta5U8$rkPuRJjgeqBW3Nc&%!-6?C4IIZ0JB)KiF~rz?w8azHwzpKoC;lPjY?!7n_2UsR`>9gzR4{*a9o( z{k-GU6!^Cxvdk!6-)CkGG+NM$TYOxRC5sa$AW~M@n>RLl*UGTs!zqz z?c6f;TyPdsrj*B4zR_bc(#FaE4Kvled|%;M(yGmI%Y703*_9ku;elWPb52rc%a#?2 z1Ru~~GB`zk_MRU-O4Y7ZQH36;ugqy1%+=Zf?6Y562Foc@3!ToJHG-vVwTip+$@9DP zJNg!ll3U+L?>Fe0Saa5x7U`yqA)IBcMVi?ZseE?LjB8+Fg+sz%FT-U*Z`P2=B)5(q zFz;z1_RdVMrPRL#tlP0N3$%b60^eymz6q_a1-*+)cJKJ{@Z!WJ2AIj+5*|h#X+FK!tLZ|niw%yVO59q z=ok3)`55yei)6Mx374{6Vew_gW#Wl}#uk%x3>fMJV3qkOuko0of1xQGVvMOh(c zrIydk@>XIG2YT4)AG;hj(T5>0ifhG|wZKNbN0ZiiRDGx<5m={h#~p)o!5xhEG*6>E z2Elqls6h5R@c&8c{j0bs6SMeZC$~ilcB(;TyGg6gm6f|1l}4UfB`)i?MklE{q`s#9 zHwCDuWXEgkrh%+9w&%zAc$Ef<@!xWB)pY$-bPc(01K@HgJ{x!w4l_}i2=-&n9}{f3 z3#V+rQP50bEq+)@nheteK9z(XHTuiBs>k1i1Ins3f;ivdAMrj8FCX7bsnUA%g*@p=?JMMEdJ&}Qh7eS@t7 z4JnC>Q{hHar=j^eFbwMZCzm2#dgr!znw-vhK`8ZNGq^C*3;*8WxWDO7$|t}Yujo4f zQjIbk;B~^bAz2-fNRm=0UE_O`b+xXbL?k9%6MB=&v>V<)rQB;tNEx-1y~>FS0Xfkr zi|D@-(VHx?0H-4{vcr16Jyh?@;HU_d@;VQL)l6?=ldB6i>-r`!`9XY{f$B*aae+WA z3Y(`X+p13?H%F0VrVYW8y$)Z+MX@*#Z<}?#*RRSEuOWHF#D|o?;p==cfZ-vVaG-J^ ztnUctyyM#uAXDm+Vyu+Ep|M&wM(Z2~@DuMVezH_8EOrLHb&s_mssERSm}o}brT$l5 zD$fbPqRqdsh%Mt1@;VuMT*NIt|v;`KAJY3r@Y9 zDm|6LQ>9X2GlGiRek6NwFdS!KT{c|xq$)FX<00V|wERw=1PRs59q)uO5K`ph)S3t3 zZdHJnOUjxv=aj;V{_~w2 zd?n*WlScVS%#{PsGC-kkK%Oon(YwlIhd`fxXA0ZfK_}7o&_S&m>74p13@oLzK4k_0=oPVGAfkxys zKRmZ^J>maEiA2qxhQ2HH#9RKm^Yg$u*L&Uh#lx(RzK*uSM}WFQJxSu@{(Db0HS8Vk z>5o$uuSnKwCPERA(0#%%LXl@gRNUEps7pf0s);I-xY2U^ub^mmaM{3;GDXa7ye7GU zt*JEqlTpH|%|_<292oPYhm&YE|fE}`pvADuARRvZ{kr5 zPWN!|fieu{~g6pM-NBHrsRUBwCbgbJf`;e4;Q`cOYPDlbMEGrptMcy_2LaZ^M zzb$l|NStR1V%zCl5bcaA{bHRL9s9fbI~p_8>>TCX z;lf7z69@yvm?=OYIFPjb8wj>QAmE19|0^5-`2fO!sMkRFmzuu60s9c2{hg#ee;t zlk`@2;cwm{jlBQyFnXvZU6c2pAvGW$Fsgjljy*9{Xtm|*znWTI#3^WFfN~eO*S~C-6Urv08B;)4p-(o^s(@p6cAUKObZpb?vrJw7JLBm7d@o1BrSswP&pQA5 zMyKB@HgUQ7k4wPXs_TUKW{O)^;G@kb@B89M{48kU?w_$t!+T=9$J;y2kJq(AnGE41 z-cc_yY`fQ}w7AT6rCpZGutRr)7QgFUNwOvEs+do&L?^`)QYG{6detsx;%z;712JY4 z(5xfg8OfAAB6GWFb^lD}4aekNT9ErNWAliqG36!F5kE#cmi{3;gF*R=?H`!u)MFjn zvM)pA?-XnW@y#BD6TRQO*9sLbtoU8oIJ5V;gQ$0R4>1+K<1~p!`ADd#V*$ zRk!PT0(I4N|2`w-BdX}_AAx zqvvdgt8b~3VaibS31lIDRV3$kl0r?p1K}hH2e-Ee1BiLkmL9k zzlqko*EBQI(_w%;=PTHi-7}XRcuT^OGv498se?dPRyVs@$D52iS@@-P0AfM|V?=YW zn6k5Ja!EYP*K*gy@<6(Oq)R@Cm4qjmLqoqbCG8wt?%z{W3dZTn40L=j;|}Ph%gR<#~#o$WVxGnOqk? zXy#^wUzFMwlf5f&YXZjwd}+m=qnG_tc#1VFVHK004@Lh-yO+YFBMo(w>RJF-y!Q0x)MurBg*RcZ zCbOiPnmmke>DhT`Sapq6Rh7E$20BUlfyUFzuBBOrX#r>4Tk6kZSUqDT2^0J|8EOz& zd&Ou5NrH(PS$tcZ)v`f9Y*1IbhOw!P4Gps?&bvu8D}IV;jnu^HV8;;tp1s?ZT*1t} z{>5Xf@Xq*mjw%u01WqUU=N8rHr|}X0D|qed<=V6niOzfk`9tywuAtn&q-)5}8MHK# zNVM4BoQDmL_V=z=$8YvSwcVY(ZI}IcXaxD&B<0DJbETO>`>l=(3AZq0Bu-T3CW*7P zIvDI&w(H}PbH%?$Bq#rvak~eHoYr#=FI-VhJBLXTNl&pkGJg+&wd%<6VZL{wy|40F z%ZbUEc;uDvF5+!Q1;gih?xnb&J5BYsKv&L9MP|u#4$2ZDn({te9X!r<3N29I#I@~j zm6Xp0|9lbkrk>Uh-B$Kf!ve2i~JnHNC`Ppr9%Bn|JlMO}OqRJ3OYVBfFfzFqP^}eG&Z!O0-!b@J8pWCeW32(Dp z|DodJyzl43w#JP@d|r~k5rX-$r!y}6{hCd*Yx{wpvc|qTr~~E6L|>8YzRSEVrH3`) zf*pI}T1DdI4lfm}yV18Jxm-hZcyS6kkh+vJzmf81TwOa@WJ>5Ct@+wn$>khX(}c2- zGQN$Kwy9Qw{ARF~Xnw;Fi5SKH{Rc-ZXSAkLA(EMtOYBbX3@6&z_2qO1J(wq=X1XU^6Yc!e~bG(g@vTaY4a@(UKC;ZSzm@eggU{& z`@z2WXv_3DHQ#fwiA~q)#(u6!-pkGghHAKae9&1wX3elTJe6P$7S_<{Aa7|2ieTCy zjNGDfe8=kgI-iAR_$-^K(hSgcXOJStGRN1r`_LH`?*~c`xVb^5h zzUHSL9M;mIb9YSag+n2c+lO>gi&BB$5WzLOXu+JmGoA2dCNNBv#Fv&v`g%&-wDJr#QBBcvn*AAALh824e`q*{F#2l%Ai$WVl7|+Uf|2 zSp_!ONKu&3zAa8gs^ekAp4rV^ln`FAxH-99QTta2ev<~x@%BGgK^@}Fa7KofzGy*Q zS89ZahUsv1SP5{pYMwHSUS(KK`Fd&;H+(1xL*H_PBDdxA%7)VJ;$>;; zSB1@~w7Ua`mRPqSNGtWq^I+A96xD1%8CQXxY%YPSx1uD<=Poc$#04qjwEmBbA4GCx!Q_Dbm}Av&wJ*g{$Tn zEKq)cQx2Nl%)jiKeaY{!bIG{fO1WV8>?YQJe)4PhYTo_&kYW?LL(Y+C*fj?)v=J&sjO}`K^1)R{+K5wiwfoo{viuM7XNih$>DRN^GF< z_yk2oNmkz|T<*mRdi(TT3fRf*%H+I$lIOGZVm&PU@!@Y&!l_bCK`oH(cn47(g(774 zB!uGch1{471|~&ZocR8|P#e-_=Hp$n?efe@N^H*2Oj`yWU1{=#@)mqKC4HUO)y+{ZTg>&92K{D0=jj^JqAl#`d-snM^Y@!{2v+NbjPTOSP{Rxvje}5M=#P4D zsBEI?#H&7NwLCvPu0EY!D$P*aiCLElA=paM<%4adJeMGvoe6P2zJVvkF;eeOIjm=t z5Y)>pPZGXT84^{H_uxrQ+A4N^FEGDaJGa`dk7`)D)#UDlDf~^`C)u9X~iRRU2Qjkd~O8+xMsk57(TWrLitnhQK)@<|Y*Fyo7hjEV-Iw#5}} z<=JYdwz3HmVW?r7T0DM#>gk5EQuu6W1?S#z3ik!|kjUvn@{b>FLg;5^PdKh!QNrp@ zgao*fvG3m>IX=cBy6{C*u2)Op{o3(O3JsRypLn-+#^QLh(V_n5jGK2>O;0uM;4Lh~ za+xrn(IzHjixQ@x>9sS2cBC@?@2Zi$Y5 z5vcWJj$VS(VQMJEa=U(!sXQDJ_f+w+l&a(#E%bb(<+f1|)+Y=c@Q^bKpw2me{ z!lXCl;gOyhrBqBH%6u7^xq%Nq)Mf)l^3q#r*n#)+NVRD;M_IO4SR#(HmCKY^7&QPd z-LyXJ*OWA52y9|?l>?Vj71Y;7S#EdwL=7gx86%VI&qYPAZPSH+(S-Vdlw4Prv6^Z^ zVmBXTnGi}>kgh|%Wjmzc3zf)PkZxV?*+FFb`QF|*+`ufH?`20*=>F!Js!lGK)&2XqNu7xq07Vs^oc0k@w?eTn&Rhd;mv`*+F?gjFv0Poo0<<(i0C|jGyP7B3`Z0fS3%|SNAxF zTZgUhY4&<>7n_kBZ;>=0mqkKu?H^q1CQM+hjn=e#P-BtFaToj`TPHd+KEgs91w4F0 z+WeW!8lLMtYE(c&{BuZt#dMi!w1m#TI6q1bb(eev>2eDlCbk(25)o`+sTGd8sGY~E z!x0@$&mcf!4dzoMOl7k>oY$&O_aKq*F41uevg2sa!QS^b?PTpJ_vrs zgtxWYbns)9ZyzatHeLz};pt;-+y6p$kniu{9I7^vb&SgI#&5OPSx!)1q4SH5bV!>A zM*{03Pi)8|>UQCVh;~xb*-kd8Vmca9h{+OZ%8T#gXz6{?%j3_zdv9OPN&fo;H+tCQ zu-fTSErfR!B6g(L`xzL}4bw}f_Qo|PW~^uLepqXQ^HDVE&7_E5ik>B#;e!npR^AfV zyRIXbV9IQdKHhD=468^R54dlA*Ks$Y+YFd>JDXTx&(afYD!Ecu#k~1_*R$bgzp8`izD}xCo z4O+dCDWx;Z0qRt%ZsY#FXLZgU@=vA=je?!8M>}G!kd<@9kuATVeEG7MpWAGTm)_l* zRg3AcBjHr1P=bb<*~!eACva4S)0fzr2!z7onmq5_?;2Km@4g?_loSgP<_HbED=_ua z@Ra()xCw)rFI|TV2@f${YzXb;Lsj}az`FNsYS<8*0mI~D?3UphC>hJ~bfl00BWQJw z4~0PIRJ6l~+>V?zxOHM7{)K}{YSk?kErJg#%-{gT>W<&Bn%Gjvoam-HQ9PHdKTEo} zAI+h5CvUL*x=wPt70PytXy`|L-E7WO6FsFOo6jg16;AJe*YN*8g}qfkn_aiIi(8RG zaV=il-QA_QTY%zL+}*86ai_RD1S#I)?(Xiv1ApFkeS7_DuYItSgCsN0Gjn#2>mFld z4ub~P0Ts@VUb6=}j}O;>k-Qpx_XnX<>_&eZ78Raz)(i-rvM|8@AtEE`<{(nWasU8a z+1v$+A{CI4esf8D;%T%g&H(!_ANtu%o*#qTg)`8VZ8lUi5D+)v(P;@xov@IDqzVzz z&VsN-1MM_8pG;f@+u=q)0e%jf;G$2vnx9y*#9!8hCH4&|d*2W?n){i}q(@fGK_Ib_ ztGmP-X}>*aG0_Jg2He}Q!mXRS=+o!XfHAR76v{DKomZlO;vW(|T{Xu^&SC{%;Nih_ zke_hc&XM41n9io2X2qxVny*AD9n(Jjq(^`YEj@Grt3hq%ws(a~jJoj3i*DFkvyOr| z#xz*hZ%a;9X69w!88b=bBZreEsP#C4%{1YBU{F0>I7|n8VQS!mmEW%Of?arsGc`T^ z@m6L!{A3p|Rm(KTXBvbk`z`DU0;~_oLYPz!eONm5%&gq4z!Bd-G~q&cdL z;@Y!NLXnxx0yieX(C&9P`|aoJUVA7^D74g$zoTE7svpTF4@U_*7n%BKtn0kZS3Ks! zsvEi_mbyGvUPcoFfG?#l9yTX*Bh8300bbpYdA3?d`+$d_faUqp+3TM7%X093!;Js) z<-5l+_2%och_R8dzreQ9Yk4hF4G5`Wp}jV!%J1II!G$k8`3`mWa`=97~o2E{sj zb?_kTG46%Gm0i9sRHy|ej|iu*c9svB(F68cL3;>v{i0{Au>r&#nVrwy3lp1zomRQC zn-9ZysnqkI8VRb zo<8mGW{IrqMu>!u=Q@C+JBDYx0g+7{K@_nV{5-=KJw`vv1cseg+wkF|Gfh3z4prN< zhdv($BJZprcyvU_A!)E#!&Q&(e2%1wRMSD#)_Xo1$Lx=*r}jYj%@sHMvm*y-E-6}K z>?fzvl(oO-()ROI*({1W28=`!RN5-9S=@0lTPZq(%E_@`u zK7b+y`%7XCbC(`NdwDh}8RtHM6nbogHMa+U^O9ejS& z+T))q=$?#oqMT|Y`^3{3!RTF5Ax8kAa{}Xs5C;mL+0)mHQH#tBLFkSNg0!db;DP;&y* zu-7KT6V7ktgS|}|=QASl$#8Ag76Xh4o5f1PtaFcz_J^}?h|xPb97$$yoYkRQozsc5 ze1p{y>5r;57mV#zQE1+MWENCtQp9;`wNoe{48>=g_gxwn@@C zc`8m7NLb6@zhq0(M_&JRFB41>C*qiB1UXy6BstY(06*nSg~Okt6DB(>@q?Slq^!P| zf>WbyPd+) zEOxn@YmPNe&e6h}Za@uK;37ClPdAd8fKB&kXnS*KSQirp7^pyZZ+RagoB1629o)+U zc3$7C>hf-AvDjlywkvCR@G)-_$V7&|84e>pF-cu~-u$)JzZhT`5%E}e`g_{{%suUg zm<$rbbb|5k?k)Ozozwd`fhP4}o;Ol;cx4XTj$1Y+F=T4lB*_n6?Y~XbTI%h^c6WF` zH1OaT8i@SG_xTiwn@(fn__qNsp^*pW_@U%Yd=~x(A+et#bj}pYUo4-2YzB7T8MpT! zRWqxhAqQv5`#0>l?BQ<<%cowvi?;@pz41e2y!m)+i?;7;7cXpwV>dw)y;DmZ9z_%B)81zUjj3cu#q;E3N3NaHD*DOP^lU1(OQXDi%9T9~ zS3)u{8~m0U#YClVzB)l>OGYZ-w8xfz%GwthgI_ETvxH*&*^!$!xkkx7nBO}v`5H&? z=#^6fOJWJ16R^wE8n>Gj+fl;c@|?aJeWf(yv1L4&1u2|{GW?{;b=tk6DJnTeajJX1 zAG@O2HDc(`%BJk~Kd6@}Ie_M3o*&n{j%fuzG*%M5M;L_ov9qa1BbEKXU zJ6EoGo$it^WFRhhiC7a`A(0`-L}zq+YTN|Z=2LxMYRhYXrFs?`aHhuRaKkf{%C~H@ z(or#{S3WdaWMC1#x`RLrmYj`8o^4b}tYcL+*w&^&vE%Fq-&c!r9DF`zj|nsAwl7mf zCrqlkD}6;qL!F$Ju$-lr6YCGy3nwZU&}TnCrk-T#6;kR8aN zULDUwq>OfEsMzfRj5N{K6^9Uo={zXnhWUp8Ikz8n+S~+ur>N7(@~vi8G~)D5{*Gjs0vnMzI6Z- z>%0|*Ch7JuUeMh&a<%-hcUhhh?b?Jp`ftkJUIz0p_lb_8R4h&SAhJvs zOTw5CMwp$@(i_1%ZD-$QD3 z^Pr=oa@h+mj9&e`oG|!k8q3SVls}i+_o`=@bs)E>&XR6yD;%Hk#=bJ3zUfIdhJlyb zzc2@V8urXZ&K1uk4kpy;m0(eLrZY8g3Y@46nSpxddR~!z7!~cgtVPmNl_Nbm?BT5P zu$aPANGkK^xz7IP`DJNRKS$dD+EE;xs|xpOk@0(jsrt4uh2|B_ok9Oe<(BDB>`8)% zh~T#t>}M+9iGrxZ?0$)$fGiY0@d^Ga+}FjuMs#jIZjxua`_BFwC{e)a5APZD(1z2Z zJ(GPsco-)@wch;&nvE=hwg#4Ab{3isXo}q-39?90L3puY$9BBv^l)vb{k`(%lf;YP zA1${y(5jH#WAX5s4A$>pTvHQcoV3)*d37~{WLbER+RZKZ9)n)+TeJyqXOE$c zh!5Dgc?Ij9uLFJZF)PGYG3QTCInx zLxF`*dA?^AD^-pUuxxL3oX{NN{ zkvKhXw#3H1wScL$G7CO7!5$@tIrcdGuiQ4v+q^{0XOH32$Uw6VX(l{?w1%guG(d}D z%)()@;rCFB@SZ!g}D@pFq6jNd)QEnTZ5r+_ND=W%O z{O29|KUix@Cu2{r_B^Fc$UDFtXt%%gWm*K4hOm6aE-2Qskk`?ORKE?j^xnX3=);-h z6Jxu-b_)@as416`(Z2e-dAyBB&~Ci&A=5pA9DeREfAjRYm>nGy$?I7eI0*;8f%y{)H3FXZMOJIqxyYEm3pN{{sJ~dgKY?Cv zuE)~=-{1PJ#MUn_L9>UI{)R@`z0%_F3{1h`X;P6_=UnjyN3y{OsR*y8Raw!Dxko)4 z*;H))qF-kGZG%kQfo`~FXC|6RGN#y{2|DZeiE*yZU)S9Ou$SEW6ByH_VB0QFMOh;q zqn*iXd>_#bFARRvN~UR}Sjm(UptzllH1>v~dXTqH*KPeN`_|DSf3F*GJSeM;BP2{R zX)G2_dcaKbmwf#Nj)<@-?T3GolLS#gV*M)NVB|H{6s0r=w=)1h88@zGw$PcHJ{H@@ zhSx9GHy(=EgFX?$WS zH7yJ7Hscm^Cs+CqpNF-oxiu4BEHD-2m=eVZJQSdefT*XvzTuB)vGk&A>4fjtxntV9 zL!}y_k&4DWf=ml4EpjW5QGU`2`gc7D7CDA~o}h!ett21<_Qw5bP6~0Xndf3)-Sh^I z+q=OX7?jKBR(IY0>8!jZ{qB`IMQj&9H8=SY|9+T>VrtO<5%B;p9ES$t0}qEilSpYf zZWhHpT#JnK_feA`MmTuj@5W?)G~UZx?k8J!0R6*Mtl~nlGP-j2KwIQ)8c;m0{W`MI z1vK-q_bu{T(ycIg%hp4AzoA9|=aN#dlOgL@A%l4k0_EEL<27Jy!Ob`ERBi8H{PHzi za`TKN0-_V2k2rV`w5E{*1G~l&^1j);()#rLyhs8qB)1t%cOwN^^I%lQ(KEYP09ZHOEG>0)?qgrmipmGi!7{m+t% zU9Ru>63tCImDk7;O?(@b>Hc|B9NOv3p72nMk=>{8WHAg{g0C+YkvrzLJp?udi_H{( zEFEad!xw-s7O0dQ!ktJ$OHuQ9W%O;U!*I;S&Ns(w2 z)qZ4(CdceCFO(-Hvp}ia<(rlIl@ZOJ6*$2-oLh-wJfuJga)e{q2bxE23H{8>H^>Ps zQtz_J6id0G?LI2gs-p6S5+v36CGBo_z&U_BitMrSaftSn&?eZK||p}wr>Jj z*-7-LpLa@oul@|5Bv#rBZdxAQNEH<@P)Wy{ z{T~i)O5c`QJ?~F*A7VdiA&Fvg3T<%c)&xH=D!$AU-zcuAd^GLrZLC6#l6@*@JBM>K zhCAuL4Hf0Y&2Qn0`}5vIj?dStI@%VX;f#KSn~@J+C;H)W^sw~ydUn>irwk&=NEjT{ z{HJd-8M-4`qh35|yqV(`_0!|jQNG{*-X1hOh{L@K4y7;c#HB_45~;n38gl`8&j{*erMQ+WCf&U_ z6@q?cW2*{MM}wfAiB*L%a%c`vFKDz-Uplg%!drh#25S})N=Af=4Ow`)roL^F5T_2S z14UZn$d#j=8li^2C+O0OdfN7!;^|U~J`3X~4^d!dh8epjT#0^kNRxg<804(spnqM+ z8UG!k&2!*jGb9IZk2dgc<|^>JbK^$nZ&|)lSy@Xu+q+f+9Ev_)%RVv{n+BandOzcX z#yWn1u7SQI{sO?y=~~^OqmEV;&?$okFpT-O6~`bau=)H$oI<_I{B965Wat6XNgMBh z6*i(|(YpNW{r+z0v+D(oo{T8UWfBj~XPn5oK9(o=BmPcQ)=qM{< zzSIcCsd#f{m}&DVj3dlK7?7)XA!m4&y+qprKW+%CLXkAX^;XTIVI!7k6aMI?_VD(& z?Zwx~Fu(s)3WnsPws`1QW%v`dt^Yu$=KqGyA5NvQmj5A6)zd`e2mw~C94U>ATB+3X zkOf*x!vp9JUx1V@B*4|cr(68po-l!Goa;sH>pLu;&2iy`% z4MXFQtz!{dA@S~%Xu_YhdADp-$JZN) zwZ>;NvaI?ogUSD|M*oV$ zUe&mXwV&z2H3SWHk@-Tk{3V#Pv`c>L5~9)0tyc;us4qR29{LHm-LoC$PEC+YDvh<@ ziB#}#G(2A#h*L_Vd0=Y+nPmmueS`$jIe&se-sKg?aJ?fprQwt1s12%|c?))8a)T<~&Xi8Cvlaa(_|bxm%P zL_F#?71s8?bff?V&5m9_z1rluUXfh7ghG6Vy6w-aTs!gn=w;=SAfsRl7;O)it<0>7ETdjp zUn1)b_DnL;g}J}B0Y}!a{u9fNjfksDPjpEA_tMmqIWY#kyxcZ>bO*KJ7I?1DybRIa8Dt;-8>!pLi&}~SZv@wS@ieEA|uS` z*+m>Hv+gsMY!1bTJ5!9+4HgGcA=z%4sj&*4v*|0k|Ir_NLkyANl7`2(h>{<9ZOOo= z>|K)~{u$N4R=5F4jhUq!U$E0<%bTP;Yh!I!z=*m~Xa)owN&Qr^>5=tM{)<-+9Ykdj zSmgOYFL{Ie{mb1B?(ZAiPd4&(fc;*5#be;$01Ps7bw-YEYx*Mv8&1u|2U2d>O{-@| z-=UQ#VWP{eO2L22MyT~_p+pFeVi#-vI3*KRUtyJ<)Yb0{3K0t z=5<};8-s``EvbZ&LGI5{VL#j@7n!tr?BFTRH-zVFYgNHC9dKJ(tnTI_ww}>KC&=-( zhiLLFFY>_Za@di1gkR=(A5+{d<)d zaMt;hHjbhSPRMM+QPox=|cpbvqPsrqbEK!kcT| zcDXv#DDD$boVTJR>zDTKQUakmi(ZK~aGR37D^qOJRWj~gH@Q%I7hem1N(IZo3VF7Y zElN^1?5iHNgPm{XolR#TStTK)OlE2DS^86RqvC`4440uc0~v=xpivy&6^8-DSD+~y zR3XqRJf@&2*V@{hzS?wpqWYD!9hvKv$bU+5Jz* zH<=}r7;a;Ha@`Zr0qx zeY&sL5D!}TP;LhifpPqJYAx~R0D6L43T>=oA(k9{+<1N!;1dtGVa3|;l2(kP8PnNV z8N`cm0AT8|O7-5yoj!EcY{&kyu2Jcqgc;ZuGk=9O1=8iLg~?Ai02>WXM`w! z#SlF!HyhFzZ_#(KqduGUcW}zcdcdy?aq-LA7HqtvLglvKZhyr zVJtqB7$;vEolQRe`Kul51|<6r!D~o7{2gEU<;Q*q81KCWfPdGW<}*0G7fh!;pO&WW z-agF>9&a(cy(Tjf&@4^&`oLQhT}Utm-)Z$eNL1==o(`j z>Y~fEA7gn8xzHWYRX}8$VL=b_)$$m--_jJfOP@#SXH_v0kWkq?JI(>$d({c8pOOD4 zI%XqwunScp>Tz;Lf^ikto`FtkGDUKT_~IXF|9*bqS&Jx)D@4In`X9j0WOpeb;O&Xk z_f=~60E*ly@b}IsP`D?OR}Ev!w+y&c`|){>&-{nOaxet$MXo;;NHN@3=1YB0e_t0r znf!v4{W2{iQ~aj7sk`Y*@d6pxHtA7CAz|N9v`>?8!h z(#q}k31^ubM}QEiS0Cm59=5!glK&R7d2}B^&uw6X_Pl$%Ua8KZL4tTtj`b z(Lxu$uTRC#Ozj=bkt1fHHN$0!!?}eEiV}st-aWvK`;t9EoW&0IX6nF@W-dL@`en+V zh6Nc*bNi3>M&)M~mY116biefPSy8|nTR9;rBc`w}!6S|v^pla@^7Xvcp^wZ`t=5T% zTs$He0Srif|H%F6f609nc7fcJ#RCe)z@Gb4sN<31u31r`^SU*fu%{c~VkiYz&RP@n zI0F9=fPBS#(MU=DN3D-{)DgB%3O4cL1W~ftaUGYNX!}Nb3gSTV zy37ASf1MFrWCdypgXdq+Q0I|pQHmd;@vq^4#aJ0LOj0GL2ynL1t$%h@t8LtLE_VW9 zaU+0Xy$dbFv-~C6-*iUXspm3&Uw^_Z7?VheQD*C*owD5#_|sc8qsFro)805vIx5SW*161y1B_w(Rj1#d2FPxoL`H{v-VK zoe<#<0*se24uV`bQ@x-sOfv>c4ZRtz)f=e8 znb$aF=U%w%Jkb^6C4ZlqyyCfvYEoCXbvU|VbzsRL$)qzS3cV3dJ~W<*ddoRZCnBPw zDs|^70_yO@xY%*vKLto_^vGZYELRXM=mkA05)-nhsFn)@rL^ z8O{W@2C@g53>0?_KCO>NhuJA{cW4y;7tzu_7mEwuB}dz)ISNSVhURIcXZ$F6E+%Zu z%Mz)bog2%0xK$zc*w#SapJY&oV3tviZDD6C+l%~U=BSz5GcjORW}jweGMOA#GgV_u zhzpoZu5Q=$erEC`)R`B#tHK-Lc+u_IMA)3#|sXeg&B;7U|#m(zn?KKhOR>}T&u zukPmWqz7v)xfW5P1y(D+&Ox`EQ@b``s%8notQOSQ>*>Y985@*2$vZ&h|I%joEVvx0 z=^Bc{0o5GNmj<1JEf)mlj~=vuibQEq0)H##AmUW0Up4sd>@NgO9UZa^09GL=eW@M4 z*FnqlB3L1R`qep{{XL;QAuQkUqE&8+IjaqM#X{khw6V7A17;H-xMC#PEB>?MTH?Oc zPKQ#MpGWSSli}3BgOva#eqv6zW|V!_&xg1yN8C4m(Mbu zxATWTb7v;%nQ56hrtv6gMCj7;N^NPz1^INu z84n9Z`WQ(obpO;UD)Pq@g2x;4@9BvwwIMc>zta$k__8yYD z?i|<4%XeOU9$*#j4rpAh1R54B@>1&JN!+E zP@AYO*&Ci8+9pupPXqwrMQUhMPW{`rN;@mOo{l@OAwxa+Ks3p#@hHq4fA?InvJ{P^ zy8m*5B34gmk}JcqBcY@)O;5N{zw8Tclayq7Oa!XMeIeQ~oZ0h8qxbtJ`6dD@50PvK zXx>Yff|BBcQ(A-+TOICQdaU?kijM5>QQi^snu!2F_gSaEQNUY<69<*6uorF z_EA@F4IND^>pe^3VqO?mhqoLtZ%A#{k8F3|S;KCLhZjtCv9$%L#_2Kb2S!g8cswxZ zNEN$*uly$c$0A_~*K5-8T%W%ihg~3YQQ(cbB_fO6?0|WYc!))6*6YJ1qFKXYrajX| zgT+6ljsxgoz%2yY{JpL@BoWt{qvtJWt5bD>;hG&Mk zd#cS_nFXoXD!>DDG9*|=eYcevqqY*QA|AyU&Enkax(R2%#IiZ}$B);Z4p|T9-9R(9 zA1X*@+b?eF$*2HfYRc+K0vi2u124I0)@ie!RG*mKd3=$feX3HUw0@$drh-|Yx+p$q zuw`VaGf{;TiO(6EeElm+Q%FK5os!efS{5;ZFR3ni$Xc~?@88{h$EKts)Wd%6j=Pf% zHn<&IUD=y(-KF@+u^tvz^JSZ39e>!bgeVI#l2K^Zka3O&nM1>{<-7m4XI}bs&6PDS zyA4U%`uJT!)0H089;$GpdX~Eoa!k5_C@O$I)4SR*%u zyU7PPCGYR&Cgknk02^4#)^n&VZsGDit-a=1#p(3oM6}hWA?>Q8#XR^P6$VdSDUmW@ zp3Xs3`^=_XrUSJ#IJ~$oy4$TVu68V53FRnVb(oP7UpRUX?$dXm6qgXS*{Eegzj~gs z>V1|bZ5th+mPu)cOn{r_S0uh`e{9l=hziL}oviME#ep;`{}IQ`Of=pnDAw_gFlDp2 zWE~@07EmN!qXkK96(^;ZCADBVvuH5UhNX)0N4OD7hMnhMf!)VkR%jX~Om|e#)q@>@ zx0k~)XQfe?9;DvP=p6=I(sk~If5H9Tx+EStIqW7~;C{)*A8)3Gx+MYl1(9+WX;|_5 zTj^iE_U_YsCm1ggh>W7~_y|i7L!s`ld!ru0y)354*&d=(cAYr7P~xiHfUv8^nQQO< z@zZz%$$)22TiHxqZs*2&o)KGdaTsG)&(M^Pi#@LbS>=yBT56=wO@EJ zKaA#7w?w5|&Dc}WWUfgvD&{P%N-A=aD-HMy<*5v>AKsqa^uDY~j?o|v;pabAT*q$NbPprDI_c)hzy7g-WVUtBU7t`E-<8E>ze@hshk%%}5i+cd%g6$hb?kF`#0p zKL(fYZdvCDP$MZwe|OCl`Gz$AWhn?r{?`#{XLVM~5?RG)$gKOexREG4F|Xw^yW}>^ zmrR5St%$%p>PxiQoIP&(7*u|>x7|ZQ$Qjk?=T*S{(DqVuf7%Hjl}|?0Fu#@JYNbNB zxmH_jrH94tHkcgPf`di4P7mAZbx%!Scr3H~p9{9QEZa zl7_O*ob;;kqDSFu^U!9^vOd*6?d;tC-vJiTR`b=6=AHKQ)gK4g}yEm zyb6X`aTc zL%R@UKR@XlHZY>*gkL3tm{0#h*>MUOzi~Gw6Mpx#CDpvy0E4p4ujZh8p%G8A_aZ?? zgB@r8Blifl?lSaishSL-*XeVu#RVGGfMWL*whb?syuD79Nb*O&L#OvSGPL`z{;B@J zGE)B&?-0yxo7YD+;ZuI$KaO-Rh)>M>q}^|){DK1!hKTX^fL37a+MgrHaIodB*&Uwx zVZGML?jc@kUX$x|dMCmo$Ui6oe(O#nwsgMuuMh0ant6C)KQ&c@GjEd2$n$UoWE`j6 zl2kkrQva4-&g4!oM}UJ}Y4VKJP$z3|OBxVFqB>L1TvTEVKaoA$?Y}#=ksY8f%<|uT z`8aR`7Hr%koqUm1wOKPU)0XK&qj8_7Y406yz~kacUm6`lTX;92H{3B;n}tga_EMuX zjru}65xmR3uE8@Z%;fHZ0}k%HGiEG$hcn$-re~lBZ8GwuFI^A(g=|6RFB?4)>{A21 zhozyd+^=hiyu`?}#GFFv;>-R;Y-9h>`fx2`49PmLo2N@=a>6;m-;qN%Ovs`@YoXA%$Tg(rgbr}-)@auS$K zk*T%b8wcUkV$>`o<UN zV!*7roI4J{eu~%GlvMK`;Dph?4cy&h6BS-ZrF__5qp2mZzXSdpV=#mzs^FPGnlt!G z1{7HZW=r8fFvKAZJ})=d6I|<@t5hm;p|j+5cC$~ZV%Qz_8ZDpke>5}<|MsxPGo$W{ zCUyd{LwY38EH%T&R6Y+;nl4M%QXd+zysZhhmOdXps^m%6gP0F2`oHxY1_XQ5&1doF zh^;Tw+SRaDP&Jcnr*q_xQ&*tu^a^76arZx-^Id(k6Un&l5FrsE%{we5*7ba_@Kx$B za~T+~D8Dz#Z~cz(SCqw=dEzUY0Q5yRuHB@^i^Kz?c|w#G`rZvA;sqQmT-(iQ;;F?5 z5tn?y&sRSoo-x~pe1b0R<(E;=W_NqYg{^Pa@pBK$`_ntLssbWX6Z@4FbORI=3-BY9 zssc0&HWW4#669HE6wD#|oQm-T3k8Ko00mk7-w!iW7Z+;_7YkJj({C1B%uX(jHXQ$Z nhyS@d*8gh*0XQhA|Fwgsy|t8N92lVe;K));``0tzHXkG{XGcH4^TE0Nz7Dc|AN4yxz`Eyk72bB+OmsAAM|+FMT3Ib1y3qx;k0=xOgIY zAl49j*cFT`7_QgQLLGbz4D3toPc9yMw9E0)fqL_qJ1<`~`-_~pGU4R)e9}ktv(E|FAwVhSbLNk}pYS)a zezfEFxo~5|8JQC$Ir@0I$+Q$P@_qD`uds2LPKFj61;Xj`N*2(vIlW^(ct41Q>M^ErCWX>7OU-UdP)HtxY)uA2Uxa}Mj8xA=4 zKM><_k=dF%UL9`VZ7^oL@JYhX-7bE=8K-suI_AP z*7Xvxj`9rW*d6gL2A)J+Ejv3b$^n0WDA7rPwShc2J5WfPFQ-6w8K0oTe($ z(C+(C8EJ*KsmSeyJL2`O)uzIP-m?D5fl-TQS;5%Tw6*Imy5vB2hh?b>ST$*T%LhcFCFDXH%vBOsKaHDPRzHv<1RTDo-3PtjkhePG84A(yk}ysR42`+JibrRlJs4; zu34wi@zJ@i8a2*aHU6a1ETTc6Q>6I2ki>4sD%ZMlaCNf=PKkdol2&e&CS4mFSO9w?^D{|^Du9)_(x5`XDcK`lTTUt`;qU@Qy5$4$5d#dFwo8pkF<^HPZZ$A7~ z^W9y!BAj-Sz$afjqw7m5e7+VWl80rzAC;^94~&oM!a6KVOp!$-EoJAMrNuzJSQW? z_vo#sO{$LaSUSx`J}s%^Z}TFH6xQlOP`ZI~_;9x@wnR?`=YFw5&%hMf_-rr1zXndC3YH~Z@45?P+#@iC@qOVq|y@Sd~ zJ0QRiClH)2^(PhuPYyT(H;JT@bV|jL7Mot`3$LQ?Z#+W8w4{Ga6FLg#v#qtOj7ZYF zFJNNVr|PV^S)RXORl^IWNEf1pVhT;N<)|7m#}L-@@evgf7MDu4DsL7anO|kYPLi$) z+8R>C)XaDkS%w|MgYSTA#tEVCzVlgJF*qfG1f=v`*E*E1x;8JpKkkM-PNWmiW|xh? z48tT6lRJm_p|Im{E4LL(_HCVHE4rfs{`@D-ayug`VU16k>H$WDv>%^h*CkTpAq^hy z^|yrq`-Vf63f#hGD2asCnzrHNb-kvv!w;muicwGHOL^Id`|_tind0{12C8=ytn!7) z20%(e5}ZPgg1Lu%yX_cLOYn5Fs1yks zvdA8bT;$CeO%(!70;khsWNj34m?YF1;yndlSz&!?{}fd_5-U=xe&e8nOwQPmCS%@R z;mXMaqU#Sndg*DA>*2`eBN}RVXUN+CDt6u&q2F(oW8%k;)QAg*=DV`MX(I`B6|_dI zY)Dw*C%7J9p|+$-?5 zCxD*Axp4wCcB<8+;+v~H9f=})xTI|3FN8+4hia#K93JPCf^LbqD}fDIDu<|P5wFP{ zP@C)FqF^nGY5n(HM@=@Hiirh{&ovAm(8{ZG=?nve!Y8rQq%bgds;`p)AyO=yW)7qG zCTS56!PPV(AFd5dn^FQd=XhXrDG`M7>uCn>dl3O#_Q_HYB_2QSIhvL3xDCDF?0anW zTJR~Rg~C83&TnIEt2{lT)TU248uSao^SO5;Og-tYUAN{ghgNl{<~d}o;6l_Y$NfW} zyw~W)Q)RXv`Mx=xxFSi9RK?QaVjF$BVd~bYBVXt%8TjVQK0QX#Qx>(4HD(mNf&gza zfzXv8IRK^xK)a|jab%E8^8Tm|mS0P5>eL~432r&9A$4^!r*HO!=503dLMH7=s)KB` zyG*0|lLieN5rvCx5*HG8w0U~pa~10eblsQDRRv@w0M^@G);(D^76RIX4f}5_pI;S% zRP;62=cSB9kvrnAh3inR(PRQAEhp)@R=Bg>#_+{)uH0nZYYJm|k+O%oR9N_`q9BrT zFWkE-JNI$3^%u~g8**k1iz9F?zlupv-yv&2;&U|zrD&pHOyoe8q%n&zAIl?30W-T@ z)sT|KV4^lp{+v9kz&-91zxfh^f^2@4Rn@V91IozR=*|5{`H~D|Kzrl--DL6k1kDI$$(v%Q55+~}PuUXh^ zA!48=;hn$E5IAX$d*p;MZfHf~PocT5Xs*7R(2;O_E2u_y{rO=F)BgRtBjzI-i}tR9AvDcQW4^Kyk45KpXORq-mJ|=0q`q1M=le@- zctwt^9O`NTx0}`Gi(Uhnk+%s-**M0kz7ON58nI@Gwj~WW*4sXobmz_Q!+k0sE2rQ1 zrG~;|wrNpevkxvquap0Dv!P66Cik5nez`;D{E-?f19)t>V14&E|H5A^0G2`f{i6DF z;1wNpT)ZRFbgMW53=C}FSu_B{1L@-g^SJb5H%-(%riDqH4~;4}UKHrDz+PAB z^`)>4dVFHJF`e-ZFFrdW3|ka~;p!5+znMlLBWZ z&GL*UiaYZ}I+&w0lAk!JRitIMSJo_cQK-G0wK*xz{%T>HeSOzUWn=ID5nJ*y3>~+} z+Q!jyPQnQTk;-8;ANnuWZ5LXsB~?6m4{zmI;_jL{=Dg@nN{+P)Vwoy_Y+P}io`zYz zo|s3zyL${*)Q?Z_)>hK8Aq;!_9E(u$utKirqQOFNdFiOo<7(jqrJG)q9fGlZ`TRY+ z$Rv%=$|)*O!`$KvrZ8F8>2nU;LGIp&4pl}@`3bdTIaUt#4+>_h$4dwcvfC_O9A4)g zv|=K?`Ab`rV7^^Hk}(eRf}1&v{6U-**V$7W{1#jM*3EBFqxwza3^+4L6hCvp?jK{G$w3mW zo9qT>Pw412z$-Jln48oR6C%^53aH+9R@@&cP~0kA8v&0CAhgnecAlP`gTM}&&xD`u zgiqFDtuNHJ`EhB0*hglTJ7-4)Mq%44`jIMt$HdqD92XB?B;0|PE2No6-2mH;v%)hB z>q|vBAKYoL{TQTRx%5P~Y|H?wJe$(bRme)4oFk~DOZ^u6JR?W%3W6^sGfQz85Z>yz z%)KTLiY7Ujdid?TU{4aJpQ}Wt)6#0OA~(b}Qq5wq%wdZuhH+k&PRoED*Cgyqu_6~K zt2rUSP_HM)*QFUbhH*mmN)R$bb9Fj?_XMGjtReaT*fNaBJ zMFeD8&+V*7hwEaMuDnH_xplrwLD>6Xl|wopUU3)qRQOr2E6tiLPOSr9W_vy34wzgg z#XeZ-U)O$4SM!;wJ#0BbK}d?@#tT1#6y-XoUbXo=<^nlb6aFpn6P>b~V|a`Sh5Y+p2W~#w(ddN=nBWZDYYRT=`ju8S;=aybi=Z3uFk7SaEdQjCfAeQ zf1^%pL0=eQH`LPAT>F?V^K8bc6{jS3aF(@iaiQHI;n_Q56VDcB{dZT^sk1jpcsDV{ zhxLoa!L=GkG>t|oKIHV72VCI7<`X)a>)hda!7*@83YD1EYYIVYL{uqXNxTT6Ub9d? zSFQB;)=$9c9J}kPsggX#kpF&~Z;cT=AG$BfyS8rPxG!WULvuBJd%=%->16v=u;Pgy z=RwR}6i$_1>fxPO?l+F<2786Oh1ivZo)AtC;7HcyO8M8oxPyI;^@O}q?bvE*iQeOv zd8Ju&F#mwWgAI;#J}Ul0+*`?fY_}7PG4|l{hO83`jC6&j0IC&%4NWIKxf=2tXHjO zhKRlTT^rHWitD9wBzBvz{8MIoa>`Q7t?ZGKC6&&^nJQvrWP4@LjXy24vgY#$vl!0T z7c6{oGMp7O%{27r+W!E(C;p0K{h2H~G+p*<;goXc!Z+r3vrU^ghz7bUPIZ;;lBlpb z!IdIQ5xX}$96kO`R6_eA^B*`Lw1#@xIb7EW+G)hMu>{YNz3COQux@AEXv@Z4nKMpts3|Z4cz{4{R~SP32ZqNB zY%BhvFro(m0+qA?jDVk=@j{VMfVAX)>=`{fgopS~l@!1piF6eQ0$tE!{Gwit!OzFX z2mILvF#aTXJHZi-fAC&jUc6ocKjs4x6B7ge(Ef%(A%AeLp6*URP*4aE<^;Q3p9c`c z3j+SeUM}_z`ajL$5&-yZqkmZS&-yMQ(vp`~aXT0S=5CF2ahLw5)zB6K@d`3>XuuJk z-nS)z{{l-g@$d)>3USDL!kwVvqN4nQw|RJebqR5Y{RqYJK&_E5X|!d8dH6s)eEeXL zkhq|jxRCI#-u{V`ghIss7eVxr0OFGb{#IV1oU9Rcp4N6SXPO+o#CvHk#l@;p6Y?mSSKEgS)Z zGX5|R!rB=o1yDoSx-fzOz+cw*KVkg;KbXM(4<`5r_UF~`K%&>=frLYT&JbyB;{@Y@ zxOgIvQULU8_G8*`XS6Z@Ep)MQfI-k<(SJf+|AyrMMR&D!x3+V)cD4Tv1_}Psc)7Sk ze+z|$K)<9Ado%%pj?4a534-{4Eb!O+BYrt4Y02NMKTG)`{_k$=Wwh1`770;vjZ<(_rAw*Dg9P_Vz_*Kkm`?hpA3(z_W&#$%S_vT#{%<7Q@P#; zq0c-m#HSHAByFpzQ4x|jcS!M3=Vzv85j#F(xL;ZBwK;UPX<=z|-&`Upef9@!Q({ zS3j-sZHPe@sN&{MJ_Nbddxi&_PTq{#4r>x0Cf$T8a=2aH<-SI84R48#Brvwe|C46& zw(SG5qxzr*`g~eKj)4nQHDG8R64OQ1XhjZrnNIW}d<+n#NKe;&(zti?JBe#&5pDIe3nSV$}O8N=VC)s{HV_oS2w1u`#0bd+JUJH+HBG0`khuk3_ z!vqgf?;*m3vZq~L;NGU{Cw04v%5Uxqqf&3(vz%c=ZD|v`HVoCQKKj=6(ggRd%{On# zD_icu(L*z9I{k9Wfl*IlQeY&+NSRT`Nc|?WK?Y)Ckr$1R7yHMJ#t1jDzX#+EEu}~o zU0Jbmmv9no81rPi4|SCc7hcq~YqQJ><7RIk)uWn0kMUpn;U`u!}+E-~Mo=(0wQwF!LL%q_c7 z3n8a@84o1a>gOlr>b@d;A7B>4L#Tk@pskiI6{EoliuH$QG#Y}dgb8WPdKixYY>)Q( z&r<`e>XqCy_SEFPu?SBOZuJx39rX6MGM~zC95^OhK=qy_>h`1J*kIS5Pfr+qO*Bxh zcV<5fQQ^RM9n)qu%70s)wP)3qXMirya$h0|3!GD3|`mhT%*YzuyFg;j+#)BZ&=G6x~sBIpTsDi?TAD)Y-?v6&tJNeSp}Id-(1DO@TdOmPX4E4+)ebK zzorscjz>*P8R%?{fZM`6ex&8f5~>jGe57HA(xHBS?!!g$*!g6f1`g^tRN@VTp~mhT z-OV~*zj=nsvQ{hF)Rev6zPMkVwC(}vh`c{MXv?Q<$Jotjmehc$F7&jbWLSm5BP55a4J zDc`2yohEWvx%co3VE*orcFhOc@LW7HBRv!`EA+$RMO4uk|3Wj02s%w&#?ocB)bkAf z#fe&Bl%XO;(mbtrFggFJx!r>Y3H+V6Lk(wq2=w72-lXU64UYq8U7*|IT8UsGO${q? zflj8V;HNdTX&29tMu?AdI + * @author LIMIN Thomas (2004-Groupe4-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/** + * Description des objectifs du programme, le sujet a traiter. + * Pour le programme qui contient le main(), + * la ligne de commande pour executer le programme. + */ + + +/** + * Description succinte de l'algorithme utilise comme solution. + * Eventuellement: Les references (cahier des charges,bibliographiques...). + */ + +/* + * @version 0.0.1 + * + * @Fait: Detail de ce qui a ete fait. + * + * @Afaire: Detail de ce qui n'a pas ete fait. + */ + + +#include "MyPainter.h" +#include +#include + + +MyPainter::MyPainter() { + QMenuBar * menu = new QMenuBar(this); + QPopupMenu * file = new QPopupMenu( menu ); + menu->insertItem( "&File", file ); +} + + +void MyPainter::paintEvent (QPaintEvent * e) { + + QPainter paint(this); + paint.fillRect(this->rect(), Qt::black); + + + if(!_points.empty()) { + + paint.setPen(Qt::green); + + std::list::iterator it = _points.begin(); + std::list::iterator end = _points.end(); + + + QPoint a = *it; + QPoint b; + + + for (++it; it != end; ++it) { + QPoint b = *it; + paint.drawLine(a, b); + a = b; + } + + } + +} + +void MyPainter::mousePressEvent ( QMouseEvent * e ) { + QPoint o(e->pos()); + _points.push_back(o); + update(); +} + diff --git a/GUI/TP-Painter/MyPainter.h b/GUI/TP-Painter/MyPainter.h new file mode 100755 index 0000000..7adf4cd --- /dev/null +++ b/GUI/TP-Painter/MyPainter.h @@ -0,0 +1,66 @@ + /** + * #(@)MyPainter.h ENSICAEN 2006-02-22 + * + * @author MASSE Nicolas (2004-Groupe4-LIMIN) + * @author LIMIN Thomas (2004-Groupe4-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/** + * Description des objectifs du programme, le sujet a traiter. + * Pour le programme qui contient le main(), + * la ligne de commande pour executer le programme. + */ + + +/** + * Description succinte de l'algorithme utilise comme solution. + * Eventuellement: Les references (cahier des charges,bibliographiques...). + */ + +/* + * @version 0.0.1 + * + * @Fait: Detail de ce qui a ete fait. + * + * @Afaire: Detail de ce qui n'a pas ete fait. + */ + +#ifndef _MYPAINTER_H_ +#define _MYPAINTER_H_ + +#include +#include + +class MyPainter : public QWidget { + + // Pour indiquer a "moc" que cette classe + // possede des signaux et des slots. + Q_OBJECT + + public: + + MyPainter(); + + + protected: + + virtual void paintEvent (QPaintEvent * e); + + void mousePressEvent ( QMouseEvent * e ); + + + private: + std::list _points; + + +}; + + +#endif /* _MYPAINTER_H_ */ diff --git a/GUI/TP-Painter/myPainter.cpp b/GUI/TP-Painter/myPainter.cpp new file mode 100755 index 0000000..cf0f34d --- /dev/null +++ b/GUI/TP-Painter/myPainter.cpp @@ -0,0 +1,57 @@ + /** + * #(@)myPainter.cpp ENSICAEN 2006-02-22 + * + * @author MASSE Nicolas (2004-Groupe4-LIMIN) + * @author LIMIN Thomas (2004-Groupe4-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/** + * Description des objectifs du programme, le sujet a traiter. + * Pour le programme qui contient le main(), + * la ligne de commande pour executer le programme. + */ + + +/** + * Description succinte de l'algorithme utilise comme solution. + * Eventuellement: Les references (cahier des charges,bibliographiques...). + */ + +/* + * @version 0.0.1 + * + * @Fait: Detail de ce qui a ete fait. + * + * @Afaire: Detail de ce qui n'a pas ete fait. + */ + + +#include +#include "MyPainter.h" + +int main(int argc, char * argv[]) { + QApplication app(argc,argv); + QWidget * mainWidget = new MyPainter(); + + // Connecte le signal askForQuit() émit par + // le Widget principal au slot quit() de l'objet + // application. + QObject::connect(mainWidget,SIGNAL(askForQuit()), + &app,SLOT(quit())); + + // Precise a l'objet application quel est le widget de + // la fenetre principale. + app.setMainWidget(mainWidget); + // Provoque l'affichage de la fenetre principale. + mainWidget->show(); + + // Passe la main a la boucle d'evenements. + return app.exec(); +} diff --git a/GUI/TP-Painter/myPainter.pro b/GUI/TP-Painter/myPainter.pro new file mode 100755 index 0000000..3fdef47 --- /dev/null +++ b/GUI/TP-Painter/myPainter.pro @@ -0,0 +1,5 @@ +TEMPLATE = app +CONFIG += qt warn_on release +SOURCES = myPainter.cpp MyPainter.cpp +HEADERS = MyPainter.h +TARGET = myPainter \ No newline at end of file diff --git a/GUI/TP1/ColorWidget.cpp b/GUI/TP1/ColorWidget.cpp new file mode 100755 index 0000000..7a3a0cf --- /dev/null +++ b/GUI/TP1/ColorWidget.cpp @@ -0,0 +1,27 @@ +#include "ColorWidget.h" + + + +ColorWidget::ColorWidget(QWidget * parent):QWidget(parent) +{ + setBackgroundMode(NoBackground); + theColor = new QColor(10,20,30); +} + +void ColorWidget::paintEvent(QPaintEvent * ) +{ + QPainter painter(this); + // painter.fillRect(2,2,10,10,QBrush(QColor(10,20,30))); + painter.fillRect(rect(),QBrush(*theColor)); +} + +void ColorWidget::changeColor() +{ + int r = rand()%255; + int g = rand()%255; + int b = rand()%255; + + theColor->setRgb(r,g,b); + paintEvent(0); + emit colorChanged(r,g,b); +} diff --git a/GUI/TP1/ColorWidget.h b/GUI/TP1/ColorWidget.h new file mode 100755 index 0000000..d5e79b2 --- /dev/null +++ b/GUI/TP1/ColorWidget.h @@ -0,0 +1,67 @@ +/** + * @file ColorWidget.h + * @author Sebastien Fourey + * @date Mon Jan 3 2005 + * + * @brief Classe implementant un Widget qui se remplit + * avec une couleur de fond et change celle-ci de maniere + * aleatoire lorsque qu'un slot (une methode) est appelee. + * + */ + +#ifndef COLORWIDGET_H +#define COLORWIDGET_H +#include +#include +#include +#include + +/** + * Widget personnalise qui se remplit d'une couleur + * et change celle-ci aleatoirement sur demande. + * + */ +class ColorWidget : public QWidget { + // Pour indiquer a "moc" que cette classe + // possede des signaux et des slots. + Q_OBJECT + +public: + + ColorWidget():theColor(0) { } + ColorWidget(QWidget *); + ~ColorWidget() { delete theColor; } + +protected: + /** + * Implemente la reponse du Widget aux + * evenement de rafraichissement. + * @param e L'evenement recu. + */ + void paintEvent(QPaintEvent*); + +public slots: + + /** + * Slot declanchant le changement de la couleur + * par tirage aleatoire. + */ + void changeColor(); + +signals: + + /** + * Signal emit lorsque la couleur a ete changee. + * + * @param int Composante rouge. + * @param int Composant verte. + * @param int Composante bleue. + */ + void colorChanged(int r, int g, int b); +private: + QColor * theColor; +}; + +#endif + + diff --git a/GUI/TP1/MainWidget.cpp b/GUI/TP1/MainWidget.cpp new file mode 100755 index 0000000..d5268d5 --- /dev/null +++ b/GUI/TP1/MainWidget.cpp @@ -0,0 +1,89 @@ +#include "MainWidget.h" + +MainWidget::MainWidget() { + + setGeometry(100,100,300,300); + + label = new QLabel("Colors, signals, and slots",this); + label->setGeometry(10,10,290,30); + label->setFont(QFont("Arial",14,QFont::Bold)); + + lineDisplay = new QLineEdit("",this); + lineDisplay->setGeometry(50,110,200,30); + lineDisplay->setAlignment(Qt::AlignHCenter); + lineDisplay->setReadOnly(true); + + lineDisplay2 = new QLineEdit("Mon Super Widget",this); + lineDisplay2->setGeometry(50,70,200,30); + lineDisplay2->setAlignment(Qt::AlignHCenter); + lineDisplay2->setReadOnly(true); + + colorWidget = new ColorWidget(this); + colorWidget->setGeometry(100,160,80,30); + + pushButtonRandomColor = new QPushButton("Random color",this); + pushButtonRandomColor->setGeometry(60,200,160,30); + + pushButtonQuit = new QPushButton("Quitter",this); + pushButtonQuit->setGeometry(100,250,80,30); + + QObject::connect(pushButtonQuit,SIGNAL(clicked()), + this,SLOT(quitPressed())); + + QObject::connect(pushButtonRandomColor,SIGNAL(clicked()), + colorWidget,SLOT(changeColor())); + + QObject::connect(colorWidget,SIGNAL(colorChanged(int,int,int)), + this,SLOT(colorChanged(int,int,int))); + + + +// setMouseTracking(true); + setCaption("pouet"); + + displayPosition = false; +} + +void MainWidget::quitPressed() +{ + emit askForQuit(); +} + +void MainWidget::colorChanged(int r, int g, int b) +{ + char texte[255]; + sprintf(texte,"Color: R(%d) G(%d) B(%d)",r,g,b); + lineDisplay->setText(texte); +} + +void MainWidget::mouseMoveEvent(QMouseEvent * e) { + if (displayPosition) { + char texte[255]; + sprintf(texte,"(%d, %d)",e->x(), e->y()); + lineDisplay2->setText(texte); + } +} + + +void MainWidget::mousePressEvent(QMouseEvent * e) { + displayPosition = true; + + switch (e->button()) { + case Qt::LeftButton: + lineDisplay2->setAlignment(Qt::AlignLeft); + break; + case Qt::RightButton: + lineDisplay2->setAlignment(Qt::AlignRight); + break; + case Qt::MidButton: + lineDisplay2->setAlignment(Qt::AlignHCenter); + break; + default: + break; + } +} + +void MainWidget::mouseReleaseEvent(QMouseEvent * e) { + displayPosition = false; +} + diff --git a/GUI/TP1/MainWidget.h b/GUI/TP1/MainWidget.h new file mode 100755 index 0000000..5c5eab9 --- /dev/null +++ b/GUI/TP1/MainWidget.h @@ -0,0 +1,55 @@ +/** + * @file MainWidget.h + * @author Sebastien Fourey + * @date Jan 3 2005 + * + * @brief Classe Widget principal de l'application + * + */ + +#ifndef MAINWIDGET_H +#define MAINWIDGET_H +#include +#include +#include +#include +using namespace std; + +#include "ColorWidget.h" + +/** + * Classe du widget de la fenetre principale + * de l'application. + */ +class MainWidget : public QWidget { + + // Pour indiquer a "moc" que cette classe + // possede des signaux et des slots. + Q_OBJECT + + +public: + MainWidget(); + +signals: + void askForQuit(); + +public slots: + void quitPressed(); + void colorChanged(int r, int g, int b); + +protected: + void mouseMoveEvent(QMouseEvent * e); + void mousePressEvent(QMouseEvent * e); + void mouseReleaseEvent(QMouseEvent * e); + +private: + QLabel *label; + QPushButton *pushButtonQuit, *pushButtonRandomColor; + QLineEdit *lineDisplay; + QLineEdit *lineDisplay2; + ColorWidget * colorWidget; + bool displayPosition; +}; + +#endif diff --git a/GUI/TP1/main.cpp b/GUI/TP1/main.cpp new file mode 100755 index 0000000..de7b2ae --- /dev/null +++ b/GUI/TP1/main.cpp @@ -0,0 +1,35 @@ +/** + * @file main.cc + * @author Sebastien Fourey + * @date Mon Jan 3 2005 + * + * @brief Programme principale d'un exemple + * d'application Qt. + * + */ + +#include +#include "MainWidget.h" +#include "ColorWidget.h" + +int +main(int argc, char * argv[]) +{ + QApplication app(argc,argv); + QWidget * mainWidget = new MainWidget(); + + // Connecte le signal askForQuit() émit par + // le Widget principal au slot quit() de l'objet + // application. + QObject::connect(mainWidget,SIGNAL(askForQuit()), + &app,SLOT(quit())); + + // Precise a l'objet application quel est le widget de + // la fenetre principale. + app.setMainWidget(mainWidget); + // Provoque l'affichage de la fenetre principale. + mainWidget->show(); + + // Passe la main a la boucle d'evenements. + return app.exec(); +} diff --git a/GUI/TP1/main.pro b/GUI/TP1/main.pro new file mode 100755 index 0000000..aa794e3 --- /dev/null +++ b/GUI/TP1/main.pro @@ -0,0 +1,5 @@ +TEMPLATE = app +CONFIG += qt warn_on release +SOURCES = MainWidget.cpp ColorWidget.cpp main.cpp +HEADERS = MainWidget.h ColorWidget.h +TARGET = main diff --git a/GUI/TP2/CodeValidator.cpp b/GUI/TP2/CodeValidator.cpp new file mode 100755 index 0000000..30d24af --- /dev/null +++ b/GUI/TP2/CodeValidator.cpp @@ -0,0 +1,19 @@ + +#include "CodeValidator.h" + + +CodeValidator::CodeValidator(QObject * parent, const char * name) + : QRegExpValidator(QRegExp("\\d{1,10}[A-Za-z]"), parent, name) { +}; + +QValidator::State CodeValidator::validate(QString & input, int & pos) { + QValidator::State st = QRegExpValidator::validate(input, pos); + + if (st != QValidator::Invalid) { + unsigned int sl = input.length(); + + } + + return st; + +} diff --git a/GUI/TP2/CodeValidator.h b/GUI/TP2/CodeValidator.h new file mode 100755 index 0000000..d87f651 --- /dev/null +++ b/GUI/TP2/CodeValidator.h @@ -0,0 +1,18 @@ +#ifndef CODEVALIDATOR_H +#define CODEVALIDATOR_H + +#include + +class CodeValidator : public QRegExpValidator { + + public: + + CodeValidator(QObject * parent, const char * name = 0); + + QValidator::State validate(QString & input, int & pos); + +}; + + + +#endif /* CODEVALIDATOR_H */ diff --git a/GUI/TP2/MainWidget.cpp b/GUI/TP2/MainWidget.cpp new file mode 100755 index 0000000..54fa8bb --- /dev/null +++ b/GUI/TP2/MainWidget.cpp @@ -0,0 +1,125 @@ +#include "MainWidget.h" + +#include +#include +#include +#include "CodeValidator.h" + +MainWidget::MainWidget() { + + this->setGeometry(10,10,300,350); + + int initialFontSize = 12; + + _label = new QLabel("Widgets, signaux, slots, couleurs, fontes", this); + _label->setGeometry(10,10,280,40); + _label->setFont(QFont("Arial", initialFontSize, QFont::Normal)); + + + _rwTextInput = new QLineEdit("",this); + _rwTextInput->setGeometry(50,70,200,30); + _rwTextInput->setAlignment(Qt::AlignLeft); + + // expression régulière correspondant à la validation simple + //QRegExp rx("\\d|\\w*"); + QValidator * vd = new CodeValidator(this); + _rwTextInput->setValidator(vd); + + _roTextInput = new QLineEdit("",this); + _roTextInput->setGeometry(50,110,200,30); + _roTextInput->setAlignment(Qt::AlignLeft); + _roTextInput->setReadOnly(true); + + QObject::connect(_rwTextInput, SIGNAL(textChanged(const QString &)), + this, SLOT(setText(const QString &))); + + _pushButtonColor = new QPushButton("Couleur",this); + _pushButtonColor->setGeometry(70,150,160,30); + QObject::connect(_pushButtonColor, SIGNAL(clicked()), this, SLOT(btColorPressed())); + + _chooseColor = new QComboBox(false, this); + _chooseColor->setGeometry(90,190,120,30); + _chooseColor->insertItem(QString("Black")); + _chooseColor->insertItem(QString("Blue")); + _chooseColor->insertItem(QString("Green")); + _chooseColor->insertItem(QString("Red")); + _chooseColor->insertItem(QString("Yellow")); + + QObject::connect(_chooseColor, SIGNAL(activated(int)), this, SLOT(colorChanged(int))); + + _slider = new QSlider(6, 20, 1, initialFontSize, Qt::Horizontal, this); + _slider->setGeometry(60,260,170,20); + + _lcd = new QLCDNumber(2, this); + _lcd->setGeometry(230, 245, 40, 40); + _lcd->display(initialFontSize); + QObject::connect(_slider, SIGNAL(valueChanged(int)), + _lcd, SLOT(display(int))); + + + QObject::connect(_slider, SIGNAL(valueChanged(int)), + this, SLOT(fontSizeChanged(int))); + + + _pushButtonQuit = new QPushButton("Quitter",this); + _pushButtonQuit->setGeometry(100,290,80,30); + + QObject::connect(_pushButtonQuit,SIGNAL(clicked()), + this,SLOT(quitPressed())); + + // QObject::connect(_pushButtonColor,SIGNAL(clicked()), + // colorWidget,SLOT(changeColor())); + + //QObject::connect(colorWidget,SIGNAL(colorChanged(int,int,int)), + // this,SLOT(colorChanged(int,int,int))); + + +} + +void MainWidget::quitPressed() { + emit askForQuit(); +} + + + +void MainWidget::setText(const QString & s) { + _roTextInput->setText(s.upper()); +} + +void MainWidget::fontSizeChanged(int fontSize) { + _roTextInput->setFont(QFont("Arial", fontSize ,QFont::Normal)); +} + +void MainWidget::colorChanged(int colorIndex) { + QColor c; + switch(colorIndex) { + case 0: + c = Qt::black; + break; + case 1: + c = Qt::blue; + break; + case 2: + c = Qt::green; + break; + case 3: + c = Qt::red; + break; + case 4: + c = Qt::yellow; + break; + default: + c = Qt::black; + } + + _currentColor = c; + _roTextInput->setPaletteForegroundColor(c); +} + +void MainWidget::btColorPressed() { + QColor c = QColorDialog::getColor(_currentColor); + if (c.isValid()) { + _currentColor = c; + _roTextInput->setPaletteForegroundColor(c); + } +} diff --git a/GUI/TP2/MainWidget.h b/GUI/TP2/MainWidget.h new file mode 100755 index 0000000..b6f73c1 --- /dev/null +++ b/GUI/TP2/MainWidget.h @@ -0,0 +1,51 @@ + +#ifndef MAINWIDGET_H +#define MAINWIDGET_H +#include +#include +#include +#include +#include +#include +#include + +/** + * Classe du widget de la fenetre principale + * de l'application. + */ +class MainWidget : public QWidget { + + // Pour indiquer a "moc" que cette classe + // possede des signaux et des slots. + Q_OBJECT + + +public: + MainWidget(); + +signals: + void askForQuit(); + +public slots: + + void quitPressed(); + void setText(const QString & s); + void fontSizeChanged(int fontSize); + void colorChanged(int colorIndex); + void btColorPressed(); + + +private: + + QLabel * _label; + QLineEdit * _rwTextInput; + QLineEdit * _roTextInput; + QPushButton * _pushButtonColor; + QPushButton * _pushButtonQuit; + QComboBox * _chooseColor; + QSlider * _slider; + QLCDNumber * _lcd; + QColor _currentColor; +}; + +#endif diff --git a/GUI/TP2/main.cpp b/GUI/TP2/main.cpp new file mode 100755 index 0000000..9a79e6e --- /dev/null +++ b/GUI/TP2/main.cpp @@ -0,0 +1,34 @@ +/** + * @file main.cc + * @author Sebastien Fourey + * @date Mon Jan 3 2005 + * + * @brief Programme principale d'un exemple + * d'application Qt. + * + */ + +#include +#include "MainWidget.h" + +int +main(int argc, char * argv[]) +{ + QApplication app(argc,argv); + QWidget * mainWidget = new MainWidget(); + + // Connecte le signal askForQuit() émis par + // le Widget principal au slot quit() de l'objet + // application. + QObject::connect(mainWidget,SIGNAL(askForQuit()), + &app,SLOT(quit())); + + // Precise a l'objet application quel est le widget de + // la fenetre principale. + app.setMainWidget(mainWidget); + // Provoque l'affichage de la fenetre principale. + mainWidget->show(); + + // Passe la main a la boucle d'evenements. + return app.exec(); +} diff --git a/GUI/TP2/main.pro b/GUI/TP2/main.pro new file mode 100755 index 0000000..1202c9b --- /dev/null +++ b/GUI/TP2/main.pro @@ -0,0 +1,5 @@ +TEMPLATE = app +CONFIG += qt warn_on release +SOURCES = MainWidget.cpp CodeValidator.cpp main.cpp +HEADERS = CodeValidator.h MainWidget.h +TARGET = main diff --git a/GUI/TP3/calc/COPYING b/GUI/TP3/calc/COPYING new file mode 100755 index 0000000..5b6e7c6 --- /dev/null +++ b/GUI/TP3/calc/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 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 Library 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 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 Library General +Public License instead of this License. diff --git a/GUI/TP3/calc/Doxyfile b/GUI/TP3/calc/Doxyfile new file mode 100755 index 0000000..0de97f9 --- /dev/null +++ b/GUI/TP3/calc/Doxyfile @@ -0,0 +1,275 @@ +# Doxyfile 1.4.1-KDevelop + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +PROJECT_NAME = calc.kdevelop +PROJECT_NUMBER = 0.1 +OUTPUT_DIRECTORY = +CREATE_SUBDIRS = NO +OUTPUT_LANGUAGE = English +USE_WINDOWS_ENCODING = NO +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the +ALWAYS_DETAILED_SEC = NO +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = YES +STRIP_FROM_PATH = /home/nicolas/svn_mirror/tp7/ +STRIP_FROM_INC_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = NO +MULTILINE_CPP_IS_BRIEF = NO +DETAILS_AT_TOP = NO +INHERIT_DOCS = YES +DISTRIBUTE_GROUP_DOC = NO +TAB_SIZE = 8 +ALIASES = +OPTIMIZE_OUTPUT_FOR_C = NO +OPTIMIZE_OUTPUT_JAVA = NO +SUBGROUPING = YES +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- +EXTRACT_ALL = NO +EXTRACT_PRIVATE = NO +EXTRACT_STATIC = NO +EXTRACT_LOCAL_CLASSES = YES +EXTRACT_LOCAL_METHODS = NO +HIDE_UNDOC_MEMBERS = NO +HIDE_UNDOC_CLASSES = NO +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = NO +CASE_SENSE_NAMES = YES +HIDE_SCOPE_NAMES = NO +SHOW_INCLUDE_FILES = YES +INLINE_INFO = YES +SORT_MEMBER_DOCS = YES +SORT_BRIEF_DOCS = NO +SORT_BY_SCOPE_NAME = NO +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 30 +SHOW_USED_FILES = YES +SHOW_DIRECTORIES = YES +FILE_VERSION_FILTER = +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- +QUIET = NO +WARNINGS = YES +WARN_IF_UNDOCUMENTED = YES +WARN_IF_DOC_ERROR = YES +WARN_NO_PARAMDOC = NO +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- +INPUT = /home/nicolas/svn_mirror/ENSI_2ndY/GUI/TP3/calc +FILE_PATTERNS = *.c \ + *.cc \ + *.cxx \ + *.cpp \ + *.c++ \ + *.java \ + *.ii \ + *.ixx \ + *.ipp \ + *.i++ \ + *.inl \ + *.h \ + *.hh \ + *.hxx \ + *.hpp \ + *.h++ \ + *.idl \ + *.odl \ + *.cs \ + *.php \ + *.php3 \ + *.inc \ + *.m \ + *.mm \ + *.dox \ + *.C \ + *.CC \ + *.C++ \ + *.II \ + *.I++ \ + *.H \ + *.HH \ + *.H++ \ + *.CS \ + *.PHP \ + *.PHP3 \ + *.M \ + *.MM \ + *.C \ + *.H \ + *.tlh \ + *.diff \ + *.patch \ + *.moc \ + *.xpm \ + *.dox +RECURSIVE = yes +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = * +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = +INPUT_FILTER = +FILTER_PATTERNS = +FILTER_SOURCE_FILES = NO +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = NO +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = YES +REFERENCES_RELATION = YES +VERBATIM_HEADERS = YES +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = NO +COLS_IN_ALPHA_INDEX = 5 +IGNORE_PREFIX = +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- +GENERATE_HTML = YES +HTML_OUTPUT = html +HTML_FILE_EXTENSION = .html +HTML_HEADER = +HTML_FOOTER = +HTML_STYLESHEET = +HTML_ALIGN_MEMBERS = YES +GENERATE_HTMLHELP = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +BINARY_TOC = NO +TOC_EXPAND = NO +DISABLE_INDEX = NO +ENUM_VALUES_PER_LINE = 4 +GENERATE_TREEVIEW = NO +TREEVIEW_WIDTH = 250 +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- +GENERATE_LATEX = YES +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4wide +EXTRA_PACKAGES = +LATEX_HEADER = +PDF_HYPERLINKS = NO +USE_PDFLATEX = NO +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- +GENERATE_MAN = NO +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_LINKS = NO +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = yes +XML_OUTPUT = xml +XML_SCHEMA = +XML_DTD = +XML_PROGRAMLISTING = YES +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- +GENERATE_AUTOGEN_DEF = NO +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = NO +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- +TAGFILES = +GENERATE_TAGFILE = calc.tag +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +PERL_PATH = /usr/bin/perl +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- +CLASS_DIAGRAMS = YES +HIDE_UNDOC_RELATIONS = YES +HAVE_DOT = NO +CLASS_GRAPH = YES +COLLABORATION_GRAPH = YES +GROUP_GRAPHS = YES +UML_LOOK = NO +TEMPLATE_RELATIONS = NO +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = YES +CALL_GRAPH = NO +GRAPHICAL_HIERARCHY = YES +DIRECTORY_GRAPH = YES +DOT_IMAGE_FORMAT = png +DOT_PATH = +DOTFILE_DIRS = +MAX_DOT_GRAPH_WIDTH = 1024 +MAX_DOT_GRAPH_HEIGHT = 1024 +MAX_DOT_GRAPH_DEPTH = 1000 +DOT_TRANSPARENT = NO +DOT_MULTI_TARGETS = NO +GENERATE_LEGEND = YES +DOT_CLEANUP = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- +SEARCHENGINE = NO diff --git a/GUI/TP3/calc/Makefile b/GUI/TP3/calc/Makefile new file mode 100755 index 0000000..7eced60 --- /dev/null +++ b/GUI/TP3/calc/Makefile @@ -0,0 +1,51 @@ +############################################################################# +# Makefile for building: calc +# Generated by qmake (1.07a) (Qt 3.3.4) on: Thu Feb 16 15:05:01 2006 +# Project: calc.pro +# Template: subdirs +# Command: $(QMAKE) -o Makefile calc.pro +############################################################################# + +MAKEFILE = Makefile +QMAKE = qmake +DEL_FILE = rm -f +CHK_DIR_EXISTS= test -d +MKDIR = mkdir -p +INSTALL_FILE= +INSTALL_DIR = +SUBTARGETS = \ + sub-src + +first: all + +all: Makefile $(SUBTARGETS) + +src/$(MAKEFILE): + @$(CHK_DIR_EXISTS) "src" || $(MKDIR) "src" + cd src && $(QMAKE) src.pro -o $(MAKEFILE) +sub-src: src/$(MAKEFILE) FORCE + cd src && $(MAKE) -f $(MAKEFILE) + +Makefile: calc.pro /usr/qt/3/mkspecs/linux-g++/qmake.conf + $(QMAKE) -o Makefile calc.pro +qmake: qmake_all + @$(QMAKE) -o Makefile calc.pro + +all: $(SUBTARGETS) +qmake_all: src/$(MAKEFILE) + ( [ -d src ] && cd src ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true +clean uicables mocables uiclean mocclean lexclean yaccclean : qmake_all FORCE + ( [ -d src ] && cd src ; $(MAKE) -f $(MAKEFILE) $@; ) || true +uninstall_subdirs: qmake_all FORCE + ( [ -d src ] && cd src ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true +install_subdirs: qmake_all FORCE + ( [ -d src ] && cd src ; $(MAKE) -f $(MAKEFILE) install; ) || true +distclean: qmake_all FORCE + ( [ -d src ] && cd src ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true + +install: install_subdirs + +uninstall: uninstall_subdirs + +FORCE: + diff --git a/GUI/TP3/calc/calc.kdevelop b/GUI/TP3/calc/calc.kdevelop new file mode 100755 index 0000000..9fb533c --- /dev/null +++ b/GUI/TP3/calc/calc.kdevelop @@ -0,0 +1,125 @@ + + + + Nicolas MASSE + nicolas27.masse@laposte.net + 0.1 + KDevTrollProject + C++ + + Qt + + + + + + + + + + false + false + + + *.o,*.lo,CVS + false + + + + + ada + ada_bugs_gcc + bash + bash_bugs + clanlib + w3c-dom-level2-html + fortran_bugs_gcc + gnome1 + gnustep + gtk + gtk_bugs + haskell + haskell_bugs_ghc + java_bugs_gcc + java_bugs_sun + kde2book + opengl + pascal_bugs_fp + php + php_bugs + perl + perl_bugs + python + python_bugs + ruby + ruby_bugs + sdl + stl + w3c-svg + sw + w3c-uaag10 + wxwidgets_bugs + + + KDE Libraries (Doxygen) + + + + + + + + + + ./bin/calc + + executable + + + src + + + + + + + + + + + + + + Doxygen Documentation Collection + calc.tag + + + + Calc + calc + Calc + CALC + Nicolas MASSE + nicolas27.masse@laposte.net + GPL + COPYING + 0.1 + 2006 + /home/nicolas/svn_mirror/ENSI_2ndY/GUI/TP3/calc + + + + + true + true + true + false + true + true + true + 250 + 400 + 250 + + + diff --git a/GUI/TP3/calc/calc.kdevses b/GUI/TP3/calc/calc.kdevses new file mode 100755 index 0000000..f513785 --- /dev/null +++ b/GUI/TP3/calc/calc.kdevses @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/GUI/TP3/calc/calc.pro b/GUI/TP3/calc/calc.pro new file mode 100755 index 0000000..8feb4aa --- /dev/null +++ b/GUI/TP3/calc/calc.pro @@ -0,0 +1,2 @@ +TEMPLATE=subdirs +SUBDIRS=src diff --git a/GUI/TP3/calc/src/CalcGUI.cpp b/GUI/TP3/calc/src/CalcGUI.cpp new file mode 100755 index 0000000..8c3fa52 --- /dev/null +++ b/GUI/TP3/calc/src/CalcGUI.cpp @@ -0,0 +1,147 @@ +/** + * #(@)CalcGUI.cpp ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/** + * Implementation of the CalcGUI class. + */ + +/* + * @version 0.0.1 + * + * @done all + * + * @todo none + */ + + +#include "CalcGUI.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace std; + +static char * labels[4][4] = { + {"7", "8", "9", "+"}, + {"4", "5", "6", "-"}, + {"1", "2", "3", "/"}, + {"0", ".", "=", "*"} + }; + +static enum ButtonID ids[4][4] = { + {Button_7, Button_8, Button_9, Button_Plus}, + {Button_4, Button_5, Button_6, Button_Minus}, + {Button_1, Button_2, Button_3, Button_Divide}, + {Button_0, Button_Dot, Button_Equal, Button_Multiply} + }; + +CalcGUI::CalcGUI() + : QMainWindow() { + + // Main widget + QWidget * central = new QWidget(this); + this->setCentralWidget(central); + + // Vertical layout + QVBoxLayout * vbox1 = new QVBoxLayout(central); + + // Display + this->lbl1 = new QLabel(central); + this->lbl1->setText(ctr.getText()); + vbox1->addWidget(lbl1); + + // Button group + QButtonGroup * group = new QButtonGroup(central); + vbox1->addWidget(group); + connect(group, SIGNAL(clicked(int)), this, SLOT(buttonClicked(int))); + + QGridLayout * grid = new QGridLayout(group, 4, 4); + + // Buttons + for (int c = 0; c < 4; c++) { + for (int r = 0; r < 4; r++) { + QPushButton * bt = new QPushButton(tr(labels[r][c]), group); + bt->setAccel(tr(labels[r][c])); + grid->addItem(new QWidgetItem(bt), r, c); + } + } + + // Erase button + QPushButton * btC = new QPushButton(tr("C"), central); + btC->setAccel(tr("C")); + vbox1->addWidget(btC); + connect(btC, SIGNAL(clicked()), this, SLOT(cButtonClicked())); + + // Quit button + QPushButton * btQuit = new QPushButton(tr("Quit"), central); + vbox1->addWidget(btQuit); + connect(btQuit, SIGNAL(clicked()), this, SLOT(quitApp())); + + // File menu + QPopupMenu * fileMenu = new QPopupMenu(); + QAction * quitAction = new QAction(tr("&Quit"), tr("Alt+X"), this); + quitAction->setStatusTip(tr("Exit application")); + quitAction->addTo(fileMenu); + connect(quitAction, SIGNAL(activated()), this, SLOT(quitApp())); + + // Help menu + QPopupMenu * helpMenu = new QPopupMenu(); + QAction * aboutAction = new QAction(tr("&About"), tr("F1"), this); + aboutAction->setStatusTip(tr("Display help")); + aboutAction->addTo(helpMenu); + connect(aboutAction, SIGNAL(activated()), this, SLOT(displayHelp())); + + // Menu bar + QMenuBar * menu = new QMenuBar(this); + menu->insertItem(tr("&File"), fileMenu); + menu->insertSeparator(); + menu->insertItem(tr("&Help"), helpMenu); +} + + +CalcGUI::~CalcGUI() {} + +void CalcGUI::buttonClicked( int n ) { + if (ctr.command(ids[n % 4][n / 4])) { + updateLabel(); + } +} + +void CalcGUI::cButtonClicked( void ) { + if (ctr.command(Button_C)) { + updateLabel(); + } +} + +void CalcGUI::quitApp( void ) { + QApplication::exit(); +} + +void CalcGUI::displayHelp( void ) { + QMessageBox::information(this, "About", "(C) 2006 - Thomas LIMIN & Nicolas MASSE", QMessageBox::Ok); +} + +void CalcGUI::updateLabel( void ) { + this->lbl1->setText(ctr.getText()); +} + + + diff --git a/GUI/TP3/calc/src/CalcGUI.h b/GUI/TP3/calc/src/CalcGUI.h new file mode 100755 index 0000000..6acc8d8 --- /dev/null +++ b/GUI/TP3/calc/src/CalcGUI.h @@ -0,0 +1,90 @@ +/** + * #(@)CalcGUI.h ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/** + * GUI of the calc. + */ + +#include + + +/* + * @version 0.0.1 + * + * @done all + * + * @todo none + */ + + + +#ifndef CALCGUI_H +#define CALCGUI_H + +#include +#include +#include + + +#include "Controller.h" + +/** + * @author Nicolas MASSE + */ +class CalcGUI : public QMainWindow { + Q_OBJECT + +public: + /** + * Constructs a new GUI. + */ + CalcGUI(); + + /** + * Destructs the GUI. + */ + ~CalcGUI(); + +public slots: + /** + * Called when a digit button is pressed. + */ + void buttonClicked(int n); + + /** + * Called when cancel button pressed. + */ + void cButtonClicked(void); + + /** + * Called to quit the app. + */ + void quitApp(void); + + /** + * Called in order to display help. + */ + void displayHelp(void); + + /** + * Updates the label of the calc. + */ + void updateLabel(void); + +private: + Controller ctr; + QLabel * lbl1; +}; + +#endif /* CALCGUI_H */ diff --git a/GUI/TP3/calc/src/Controller.cpp b/GUI/TP3/calc/src/Controller.cpp new file mode 100755 index 0000000..70870d8 --- /dev/null +++ b/GUI/TP3/calc/src/Controller.cpp @@ -0,0 +1,117 @@ +/* -*- c-basic-offset: 3 -*- + * Controller.cpp GREYC Image 2004-3-12 + * + * @author Sebastien Fourey + * + * GREYC Image - ENSICAEN + * 6, Boulevard Marechal Juin + * F-14050 Caen Cedex + * + */ +#include "Controller.h" + + + +Controller::Controller() { + text = "0"; + operation = 0; + newNumber = true; +} + +bool +Controller::command(ButtonID n) +{ + switch (n) { + case Button_0: + case Button_1: + case Button_2: + case Button_3: + case Button_4: + case Button_5: + case Button_6: + case Button_7: + case Button_8: + case Button_9: + return addChar('0' + static_cast( n )); + + case Button_Dot: + return addChar('.'); + + case Button_Plus: + case Button_Minus: + case Button_Multiply: + case Button_Divide: + if (!newNumber) achieveEqual(); + memory = text.toDouble(); + operation = n; + newNumber = true; + return true; + + case Button_C: + text = "0"; + newNumber = true; + operation = 0; + return true; + + case Button_Equal: + return achieveEqual(); + } + return false; +} + +bool +Controller::achieveEqual() +{ + double operande = 0; + double result = 0; + if (!operation) return false; + + operande = text.toDouble(); + + switch (operation) { + case Button_Plus: + result = memory + operande; + break; + case Button_Minus: + result = memory - operande; + break; + case Button_Divide: + result = memory / operande; + break; + case Button_Multiply: + result = memory * operande; + break; + } + + text = QString("%1").arg(result,0,'f'); + newNumber = true; + operation = 0; + return true; +} + +bool +Controller::addChar(char c) +{ + + if (c == '.' && text.contains('.') ) return false; + + if ( text == "0" && c == '0') return false ; + + if ( ((text == "0") || newNumber) && c != '0' && c != '.') { + text = c; + newNumber = false; + return true; + } + + if (newNumber) { + text = ""; + } + text += c; + newNumber = false; + return true; +} + +QString +Controller::getText() const { + return text; +} diff --git a/GUI/TP3/calc/src/Controller.h b/GUI/TP3/calc/src/Controller.h new file mode 100755 index 0000000..74dbe25 --- /dev/null +++ b/GUI/TP3/calc/src/Controller.h @@ -0,0 +1,81 @@ +/* -*- c-basic-offset: 3 -*- + * Controller.h GREYC Image 2004-3-12 + * + * @author Sebastien Fourey + * + * GREYC Image - ENSICAEN + * 6, Boulevard Marechal Juin + * F-14050 Caen Cedex + * + */ +#ifndef CONTROLLER_H +#define CONTROLLER_H + +#include +#include +#include +using namespace std; + +enum ButtonID { Button_0 = 0, + Button_1, + Button_2, + Button_3, + Button_4, + Button_5, + Button_6, + Button_7, + Button_8, + Button_9, + Button_Dot, + Button_Plus, + Button_Minus, + Button_Divide, + Button_Multiply, + Button_Equal, + Button_C }; + +class Controller { + public: + Controller(); + + /** + * Effectue une operation. + * + * @param c Le code de l'operation. (ButtonID) + * @return true si le texte a ete modifie, false sinon. + */ + bool command(ButtonID c); + + /** + * Permet de consulter le texte courant de l'affichage. + * + * @return Le texte courant de l'affichage. + */ + QString getText() const; + + private: + + /** + * Ajoute un caractere a l'affichage. + * + * @param c Le caractere a ajouter. + * @return true si l'affichage a ete modifie, false sinon (par exemple + * si c est un pointet que le texte en contient deja un). + */ + bool addChar(char c); + + /** + * Effectue une operation en attente de la seconde operande. + * + * @return true si une operation etait effectivement en attente, + * false sinon. + */ + bool achieveEqual(); + + QString text; /* Le texte de l'affichage */ + double memory; /* La premiere operande d'une operation en attente */ + char operation; /* Code d'une operation en attente */ + bool newNumber; /* Drapeau marquant le debut de la saisie d'un nouveau nombre */ +}; + +#endif diff --git a/GUI/TP3/calc/src/Makefile b/GUI/TP3/calc/src/Makefile new file mode 100755 index 0000000..3887aba --- /dev/null +++ b/GUI/TP3/calc/src/Makefile @@ -0,0 +1,149 @@ +############################################################################# +# Makefile for building: ../bin/calc +# Generated by qmake (1.07a) (Qt 3.3.4) on: Thu Feb 16 16:42:39 2006 +# Project: src.pro +# Template: app +# Command: $(QMAKE) -o Makefile src.pro +############################################################################# + +####### Compiler, tools and options + +CC = gcc +CXX = g++ +LEX = flex +YACC = yacc +CFLAGS = -pipe -Wall -W -O2 -march=athlon-xp -pipe -DQT_NO_DEBUG -DQT_SHARED -DQT_TABLET_SUPPORT -DQT_THREAD_SUPPORT +CXXFLAGS = -pipe -Wall -W -O2 -march=athlon-xp -pipe -DQT_NO_DEBUG -DQT_SHARED -DQT_TABLET_SUPPORT -DQT_THREAD_SUPPORT +LEXFLAGS = +YACCFLAGS= -d +INCPATH = -I/usr/qt/3/mkspecs/linux-g++ -I. -I$(QTDIR)/include -I/usr/include +LINK = g++ +LFLAGS = +LIBS = $(SUBLIBS) -L$(QTDIR)/lib -L/usr/X11R6/lib -lqt-mt -lXext -lX11 -lm +AR = ar cqs +RANLIB = +MOC = $(QTDIR)/bin/moc +UIC = $(QTDIR)/bin/uic +QMAKE = qmake +TAR = tar -cf +GZIP = gzip -9f +COPY = cp -f +COPY_FILE= $(COPY) +COPY_DIR = $(COPY) -r +INSTALL_FILE= $(COPY_FILE) +INSTALL_DIR = $(COPY_DIR) +DEL_FILE = rm -f +SYMLINK = ln -sf +DEL_DIR = rmdir +MOVE = mv -f +CHK_DIR_EXISTS= test -d +MKDIR = mkdir -p + +####### Output directory + +OBJECTS_DIR = ./ + +####### Files + +HEADERS = CalcGUI.h \ + Controller.h +SOURCES = calc.cpp \ + CalcGUI.cpp \ + Controller.cpp +OBJECTS = calc.o \ + CalcGUI.o \ + Controller.o +FORMS = +UICDECLS = +UICIMPLS = +SRCMOC = moc_CalcGUI.cpp +OBJMOC = moc_CalcGUI.o +DIST = src.pro +QMAKE_TARGET = calc +DESTDIR = ../bin/ +TARGET = ../bin/calc + +first: all +####### Implicit rules + +.SUFFIXES: .c .o .cpp .cc .cxx .C + +.cpp.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< + +.cc.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< + +.cxx.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< + +.C.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< + +.c.o: + $(CC) -c $(CFLAGS) $(INCPATH) -o $@ $< + +####### Build rules + +all: Makefile $(TARGET) + +$(TARGET): $(UICDECLS) $(OBJECTS) $(OBJMOC) + test -d ../bin/ || mkdir -p ../bin/ + $(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJMOC) $(OBJCOMP) $(LIBS) + +mocables: $(SRCMOC) +uicables: $(UICDECLS) $(UICIMPLS) + +$(MOC): + ( cd $(QTDIR)/src/moc && $(MAKE) ) + +Makefile: src.pro /usr/qt/3/mkspecs/linux-g++/qmake.conf /usr/qt/3/lib/libqt-mt.prl + $(QMAKE) -o Makefile src.pro +qmake: + @$(QMAKE) -o Makefile src.pro + +dist: + @mkdir -p .tmp/calc && $(COPY_FILE) --parents $(SOURCES) $(HEADERS) $(FORMS) $(DIST) .tmp/calc/ && ( cd `dirname .tmp/calc` && $(TAR) calc.tar calc && $(GZIP) calc.tar ) && $(MOVE) `dirname .tmp/calc`/calc.tar.gz . && $(DEL_FILE) -r .tmp/calc + +mocclean: + -$(DEL_FILE) $(OBJMOC) + -$(DEL_FILE) $(SRCMOC) + +uiclean: + +yaccclean: +lexclean: +clean: mocclean + -$(DEL_FILE) $(OBJECTS) + -$(DEL_FILE) *~ core *.core + + +####### Sub-libraries + +distclean: clean + -$(DEL_FILE) ../bin/$(TARGET) $(TARGET) + + +FORCE: + +####### Compile + +calc.o: calc.cpp CalcGUI.h \ + Controller.h + +CalcGUI.o: CalcGUI.cpp CalcGUI.h \ + Controller.h + +Controller.o: Controller.cpp Controller.h + +moc_CalcGUI.o: moc_CalcGUI.cpp CalcGUI.h Controller.h + +moc_CalcGUI.cpp: $(MOC) CalcGUI.h + $(MOC) CalcGUI.h -o moc_CalcGUI.cpp + +####### Install + +install: + +uninstall: + diff --git a/GUI/TP3/calc/src/calc.cpp b/GUI/TP3/calc/src/calc.cpp new file mode 100755 index 0000000..2a7fce0 --- /dev/null +++ b/GUI/TP3/calc/src/calc.cpp @@ -0,0 +1,37 @@ +/** + * #(@)calc.cpp ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include "CalcGUI.h" + +#include +#include +#include + + +/** + * Entry point of the app. + */ +int main(int argc, char *argv[]) { + QApplication app( argc, argv ); + CalcGUI gui; + + app.setMainWidget(&gui); + gui.show(); + + return app.exec(); +} diff --git a/GUI/TP3/calc/src/src.pro b/GUI/TP3/calc/src/src.pro new file mode 100755 index 0000000..d9c1022 --- /dev/null +++ b/GUI/TP3/calc/src/src.pro @@ -0,0 +1,16 @@ +# File generated by kdevelop's qmake manager. +# ------------------------------------------- +# Subdir relative project main directory: ./src +# Target is an application: ../bin/calc + +HEADERS += CalcGUI.h \ + Controller.h +SOURCES += calc.cpp \ + CalcGUI.cpp \ + Controller.cpp +TARGET = ../bin/calc +CONFIG += release \ +warn_on \ +qt \ +x11 +TEMPLATE = app diff --git a/GUI/TP3/calc/templates/cpp b/GUI/TP3/calc/templates/cpp new file mode 100755 index 0000000..102ff47 --- /dev/null +++ b/GUI/TP3/calc/templates/cpp @@ -0,0 +1,37 @@ +/** + * #(@)nomfichier.cpp ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/** + * Description des objectifs du programme, le sujet a traiter. + * Pour le programme qui contient le main(), + * la ligne de commande pour executer le programme. + */ + +#include + +/** + * Description succinte de l'algorithme utilise comme solution. + * Eventuellement: Les references (cahier des charges,bibliographiques...). + */ + +/* + * @version 0.0.1 + * + * @done - + * + * @todo - + */ + + + diff --git a/GUI/TP3/calc/templates/h b/GUI/TP3/calc/templates/h new file mode 100755 index 0000000..3e1bb3d --- /dev/null +++ b/GUI/TP3/calc/templates/h @@ -0,0 +1,37 @@ +/** + * #(@)nomfichier.h ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/** + * Description des objectifs du programme, le sujet a traiter. + * Pour le programme qui contient le main(), + * la ligne de commande pour executer le programme. + */ + +#include + +/** + * Description succinte de l'algorithme utilise comme solution. + * Eventuellement: Les references (cahier des charges,bibliographiques...). + */ + +/* + * @version 0.0.1 + * + * @done - + * + * @todo - + */ + + + diff --git a/GUI/TP4/COPYING b/GUI/TP4/COPYING new file mode 100755 index 0000000..5b6e7c6 --- /dev/null +++ b/GUI/TP4/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 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 Library 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 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 Library General +Public License instead of this License. diff --git a/GUI/TP4/Doxyfile b/GUI/TP4/Doxyfile new file mode 100755 index 0000000..bd9f67e --- /dev/null +++ b/GUI/TP4/Doxyfile @@ -0,0 +1,275 @@ +# Doxyfile 1.4.1-KDevelop + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +PROJECT_NAME = tp4.kdevelop +PROJECT_NUMBER = 0.1 +OUTPUT_DIRECTORY = +CREATE_SUBDIRS = NO +OUTPUT_LANGUAGE = English +USE_WINDOWS_ENCODING = NO +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the +ALWAYS_DETAILED_SEC = NO +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = YES +STRIP_FROM_PATH = /home/users/nicolas/ +STRIP_FROM_INC_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = NO +MULTILINE_CPP_IS_BRIEF = NO +DETAILS_AT_TOP = NO +INHERIT_DOCS = YES +DISTRIBUTE_GROUP_DOC = NO +TAB_SIZE = 8 +ALIASES = +OPTIMIZE_OUTPUT_FOR_C = NO +OPTIMIZE_OUTPUT_JAVA = NO +SUBGROUPING = YES +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- +EXTRACT_ALL = NO +EXTRACT_PRIVATE = NO +EXTRACT_STATIC = NO +EXTRACT_LOCAL_CLASSES = YES +EXTRACT_LOCAL_METHODS = NO +HIDE_UNDOC_MEMBERS = NO +HIDE_UNDOC_CLASSES = NO +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = NO +CASE_SENSE_NAMES = YES +HIDE_SCOPE_NAMES = NO +SHOW_INCLUDE_FILES = YES +INLINE_INFO = YES +SORT_MEMBER_DOCS = YES +SORT_BRIEF_DOCS = NO +SORT_BY_SCOPE_NAME = NO +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 30 +SHOW_USED_FILES = YES +SHOW_DIRECTORIES = YES +FILE_VERSION_FILTER = +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- +QUIET = NO +WARNINGS = YES +WARN_IF_UNDOCUMENTED = YES +WARN_IF_DOC_ERROR = YES +WARN_NO_PARAMDOC = NO +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- +INPUT = /home/users/nicolas/svn_mirror/ENSI_2ndY/GUI/tp4 +FILE_PATTERNS = *.c \ + *.cc \ + *.cxx \ + *.cpp \ + *.c++ \ + *.java \ + *.ii \ + *.ixx \ + *.ipp \ + *.i++ \ + *.inl \ + *.h \ + *.hh \ + *.hxx \ + *.hpp \ + *.h++ \ + *.idl \ + *.odl \ + *.cs \ + *.php \ + *.php3 \ + *.inc \ + *.m \ + *.mm \ + *.dox \ + *.C \ + *.CC \ + *.C++ \ + *.II \ + *.I++ \ + *.H \ + *.HH \ + *.H++ \ + *.CS \ + *.PHP \ + *.PHP3 \ + *.M \ + *.MM \ + *.C \ + *.H \ + *.tlh \ + *.diff \ + *.patch \ + *.moc \ + *.xpm \ + *.dox +RECURSIVE = yes +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = * +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = +INPUT_FILTER = +FILTER_PATTERNS = +FILTER_SOURCE_FILES = NO +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = NO +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = YES +REFERENCES_RELATION = YES +VERBATIM_HEADERS = YES +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = NO +COLS_IN_ALPHA_INDEX = 5 +IGNORE_PREFIX = +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- +GENERATE_HTML = YES +HTML_OUTPUT = html +HTML_FILE_EXTENSION = .html +HTML_HEADER = +HTML_FOOTER = +HTML_STYLESHEET = +HTML_ALIGN_MEMBERS = YES +GENERATE_HTMLHELP = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +BINARY_TOC = NO +TOC_EXPAND = NO +DISABLE_INDEX = NO +ENUM_VALUES_PER_LINE = 4 +GENERATE_TREEVIEW = NO +TREEVIEW_WIDTH = 250 +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- +GENERATE_LATEX = YES +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4wide +EXTRA_PACKAGES = +LATEX_HEADER = +PDF_HYPERLINKS = NO +USE_PDFLATEX = NO +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- +GENERATE_MAN = NO +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_LINKS = NO +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = yes +XML_OUTPUT = xml +XML_SCHEMA = +XML_DTD = +XML_PROGRAMLISTING = YES +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- +GENERATE_AUTOGEN_DEF = NO +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = NO +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- +TAGFILES = +GENERATE_TAGFILE = tp4.tag +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +PERL_PATH = /usr/bin/perl +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- +CLASS_DIAGRAMS = YES +HIDE_UNDOC_RELATIONS = YES +HAVE_DOT = NO +CLASS_GRAPH = YES +COLLABORATION_GRAPH = YES +GROUP_GRAPHS = YES +UML_LOOK = NO +TEMPLATE_RELATIONS = NO +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = YES +CALL_GRAPH = NO +GRAPHICAL_HIERARCHY = YES +DIRECTORY_GRAPH = YES +DOT_IMAGE_FORMAT = png +DOT_PATH = +DOTFILE_DIRS = +MAX_DOT_GRAPH_WIDTH = 1024 +MAX_DOT_GRAPH_HEIGHT = 1024 +MAX_DOT_GRAPH_DEPTH = 1000 +DOT_TRANSPARENT = NO +DOT_MULTI_TARGETS = NO +GENERATE_LEGEND = YES +DOT_CLEANUP = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- +SEARCHENGINE = NO diff --git a/GUI/TP4/exemple.html b/GUI/TP4/exemple.html new file mode 100755 index 0000000..41d51d8 --- /dev/null +++ b/GUI/TP4/exemple.html @@ -0,0 +1,33 @@ + + + + +

    + + +
    Loremipsum
    Praesent placerat
    + + \ No newline at end of file diff --git a/GUI/TP4/src/ChildWindow.cpp b/GUI/TP4/src/ChildWindow.cpp new file mode 100755 index 0000000..d870ef9 --- /dev/null +++ b/GUI/TP4/src/ChildWindow.cpp @@ -0,0 +1,154 @@ +/** + * #(@)ChildWindow.cpp ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/* + * @version 0.0.1 + * + * @done - + * + * @todo - + */ + + +#include "ChildWindow.h" + +#include +#include +#include +#include +#include +#include +#include + +#include +using namespace std; + +// Alloue de l'espace pour la variable statique +int ChildWindow::nDocuments = 1; + +ChildWindow::ChildWindow(QWidget * parent) : QMainWindow(parent, 0, WDestructiveClose) { + this->initWidgets(); + + this->setCaption(QString("Nouveau document ").append(QString::number(ChildWindow::nDocuments))); + ChildWindow::nDocuments++; + + this->show(); +} + +ChildWindow::ChildWindow(QWidget * parent, const QString & fileName) : QMainWindow(parent, 0, WDestructiveClose) { + this->initWidgets(); + + if (_docModel->load(fileName)) { + this->setCaption(fileName); + this->show(); + } else { + // Erreur, on ferme la fenêtre + this->close(); + QMessageBox::critical(parent, "Impossible de charger le fichier", "Une erreur est survenue lors de l'ouverture du fichier."); + } +} + +void ChildWindow::initWidgets() { + QSplitter * splitter = new QSplitter(this); + this->setCentralWidget(splitter); + + // Shows the status bar + QStatusBar * statusBar = this->statusBar(); + statusBar->show(); + + QTabWidget * tw = new QTabWidget(splitter); + + _editor = new SourceEditor(tw); + _docModel = new HTMLDocModel(_editor); + _formattedView = new FormattedView(tw); + + _statView = new StatView(_docModel, statusBar); + statusBar->addWidget(_statView, 0, true); + + _overView = new OverView(splitter); + + tw->addTab(_editor, "Code source"); + tw->addTab(_formattedView, "Rendu WYSIWYG"); + + connect(_editor, SIGNAL(textChanged()), + this, SLOT(textWindowViewDataModified())); + + connect(_docModel, SIGNAL(sourceChanged(QString *)), + _formattedView, SLOT(sourceChanged(QString *))); + + connect(_docModel, SIGNAL(sourceChanged(QString *)), + _overView, SLOT(sourceChanged(QString *))); + + connect(_docModel, SIGNAL(sourceChanged(QString *)), + _statView, SLOT(sourceChanged(QString *))); + +} + +void ChildWindow::closeEvent(QCloseEvent * e) { + if (_docModel->isModified()) { // modifié ? + int res = QMessageBox::question(this, "Enregistrement", "Le fichier a été modifié, voulez-vous enregistrer les modifications ?", QMessageBox::Yes | QMessageBox::Default, QMessageBox::No, QMessageBox::Cancel | QMessageBox::Escape); + if (res == QMessageBox::Yes) { + if (this->save()) { // enregistrement ok ? + e->accept(); // on ferme la fenêtre + } else { + e->ignore(); // on refuse la fermeture de fenêtre + } + } else if (res == QMessageBox::No) { + e->accept(); + } else { // cancel + e->ignore(); + } + } else { + e->accept(); + } +} + +bool ChildWindow::save() { + bool ret = false; + + if (_docModel->filename()) { // déjà un nom de fichier ? + ret = _docModel->save(); + } else { + ret = this->saveAs(); + } + + if (ret) { + this->statusBar()->message("Enregistrement... Ok", 5000); + } else { + this->statusBar()->message("Enregistrement... Erreur", 5000); + } + + return ret; +} + +bool ChildWindow::saveAs() { + bool ret = false; + + QString filename = QFileDialog::getSaveFileName(0, "HTML documents (*.htm *.html)", this); + if (filename != "") { + if (_docModel->saveAs(filename)) { + this->setCaption(filename); + ret = true; + } else { + ret = false; + } + } + + return ret; +} + +void ChildWindow::textWindowViewDataModified() { + _docModel->changeSource(_editor->text()); + _docModel->setNumLines(_editor->lines()); +} diff --git a/GUI/TP4/src/ChildWindow.h b/GUI/TP4/src/ChildWindow.h new file mode 100755 index 0000000..40349af --- /dev/null +++ b/GUI/TP4/src/ChildWindow.h @@ -0,0 +1,125 @@ +/** + * #(@)ChildWindow.h ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/* + * @version 0.0.1 + * + * @done - + * + * @todo - + */ + +#ifndef CHILDWINDOW_H +#define CHILDWINDOW_H + +#include +#include + +#include "sourceeditor.h" +#include "htmldocmodel.h" +#include "formattedview.h" +#include "overview.h" +#include "statview.h" + +/** + * Cette classe représentes les fenêtres filles MDI. Elles permettent + * d'éditer du code HTML. + * + * @author Nicolas MASSE + * @author Thomas LIMIN + */ +class ChildWindow : public QMainWindow { + + Q_OBJECT + +public: + /** + * Construit une nouvelle fenêtre avec une page HTML vierge. + */ + ChildWindow(QWidget * parent); + + /** + * Construit une nouvelle fenêtre et charge le fichier spécifié. + */ + ChildWindow(QWidget * parent, const QString & fileName); + + /* + * @see QT's doc + */ + void closeEvent(QCloseEvent *); + + /** + * Enregistre le fichier source. + * + * @return true si le fichier a été enregistré, false sinon + */ + bool save(); + + /** + * Enregistre le fichier source en demandant le nom de fichier + * à l'utilisateur. + * + * @return true si le fichier a été enregistré, false sinon + */ + bool saveAs(); + +protected: + +public slots: + + /** + * Ce slot est déclenché lorsque le champ d'édition du code source + * est modifié. + */ + void textWindowViewDataModified(); + +private: + /** + * Initialise les widgets. + */ + void initWidgets(); + + /** + * Nombre de documents créés depuis le lancement du programme. + */ + static int nDocuments; + + /** + * Champ d'édition du code source. + */ + SourceEditor * _editor; + + /** + * Le modèle. + */ + HTMLDocModel * _docModel; + + /** + * Une vue, affiche la page formatée. + */ + FormattedView * _formattedView; + + /** + * Une vue d'ensemble de la page. + */ + OverView * _overView; + + /** + * Affiche des statistiques concernant le texte. + */ + StatView * _statView; +}; + + +#endif /* CHILDWINDOW_H */ diff --git a/GUI/TP4/src/MainWindow.cpp b/GUI/TP4/src/MainWindow.cpp new file mode 100755 index 0000000..98f2b9c --- /dev/null +++ b/GUI/TP4/src/MainWindow.cpp @@ -0,0 +1,152 @@ +/** + * #(@)MainWindow.cpp ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/* + * @version 0.0.1 + * + * @done - + * + * @todo - + */ + +#include "MainWindow.h" + +#include +#include +#include +#include +#include + +#include +using namespace std; + +MainWindow::MainWindow() { + _workspace = new QWorkspace(this); + this->setCentralWidget(_workspace); + + QPopupMenu * fileMenu = new QPopupMenu(this); + fileMenu->insertItem("&Nouveau", this, SLOT(newDoc()), QKeySequence("CTRL+N")); + fileMenu->insertItem("&Ouvrir...", this, SLOT(load()), QKeySequence("CTRL+O")); + fileMenu->insertItem("&Enregistrer", this, SLOT(save()), QKeySequence("CTRL+S")); + fileMenu->insertItem("Enre&gistrer sous...", this, SLOT(saveAs())); + fileMenu->insertItem("&Fermer", this, SLOT(closeWindow()), QKeySequence("CTRL+W")); + fileMenu->insertItem("&Quitter", this, SLOT(quit()), QKeySequence("CTRL+Q")); + this->menuBar()->insertItem("&Fichier", fileMenu); + + _windowsMenu = new QPopupMenu(this); + _windowsMenu->setCheckable( TRUE ); + connect(_windowsMenu, SIGNAL(aboutToShow()), + this, SLOT(windowsMenuAboutToShow())); + this->menuBar()->insertItem("Fenê&tre", _windowsMenu); + + QPopupMenu * aboutMenu = new QPopupMenu(this); + aboutMenu->insertItem("&A propos", this, SLOT(about())); + this->menuBar()->insertItem("&Aide", aboutMenu); + + // le file dialog de l'application + _fileDialog = new QFileDialog(this); + _fileDialog->addFilter("HTML documents (*.htm *.html)"); + connect(_fileDialog, SIGNAL(fileSelected(const QString &)), + this, SLOT(load(const QString &))); + +} + +void MainWindow::load(const QString & filename) { + ChildWindow * child = new ChildWindow(_workspace, filename); +} + +void MainWindow::closeEvent(QCloseEvent * e) { + // On ferme toutes les fenêtres + QWidgetList windows = _workspace->windowList(); + for (int i = 0; i < int(windows.count()); ++i) { + windows.at(i)->close(); + } + + // TODO : contrôler s'il reste encore des fenêtres ouvertes + e->accept(); +} + +ChildWindow * MainWindow::newDoc() { + ChildWindow * child = new ChildWindow(_workspace); + return child; +} + +void MainWindow::windowsMenuAboutToShow() { + _windowsMenu->clear(); + int cascadeId = _windowsMenu->insertItem("&Cascade", _workspace, SLOT(cascade())); + int tileId = _windowsMenu->insertItem("&Tile", _workspace, SLOT(tile())); + + if (_workspace->windowList().isEmpty()) { + _windowsMenu->setItemEnabled( cascadeId, FALSE ); + _windowsMenu->setItemEnabled( tileId, FALSE ); + } + + _windowsMenu->insertSeparator(); + QWidgetList windows = _workspace->windowList(); + for ( int i = 0; i < int(windows.count()); ++i ) { + int id = _windowsMenu->insertItem(windows.at(i)->caption(), + this, SLOT(windowsMenuActivated( int ) ) ); + _windowsMenu->setItemParameter(id, i ); + _windowsMenu->setItemChecked( id, _workspace->activeWindow() == windows.at(i) ); + } +} + +void MainWindow::load() { + _fileDialog->show(); +} + +void MainWindow::save() { + ChildWindow * win = dynamic_cast(_workspace->activeWindow()); + if (win) { + win->save(); + } +} + +void MainWindow::saveAs() { + ChildWindow * win = dynamic_cast(_workspace->activeWindow()); + if (win) { + win->saveAs(); + } +} + +void MainWindow::closeWindow() { + // TODO Si il n'y a pas de fenetre a fermer, le menu devrait être désactivé. + QWidget * win = _workspace->activeWindow(); + if (win) { + win->close(); + } +} + +void MainWindow::about() { + QMessageBox::about(this, "A propos...", "(C)2006 Thomas LIMIN & Nicolas MASSE"); +} + +void MainWindow::quit() { + // On ferme toutes les fenêtres + QWidgetList windows = _workspace->windowList(); + for (int i = 0; i < int(windows.count()); ++i) { + windows.at(i)->close(); + } + + // TODO : contrôler s'il reste encore des fenêtres ouvertes + emit askForQuit(); +} + +void MainWindow::windowsMenuActivated(int id) { + QWidget* w = _workspace->windowList().at(id); + if (w) { + w->showNormal(); + w->setFocus(); + } +} diff --git a/GUI/TP4/src/MainWindow.h b/GUI/TP4/src/MainWindow.h new file mode 100755 index 0000000..1556c3c --- /dev/null +++ b/GUI/TP4/src/MainWindow.h @@ -0,0 +1,138 @@ +/** + * #(@)MainWindow.h ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/* + * @version 0.0.1 + * + * @done - + * + * @todo - + */ + +#ifndef MAINWINDOW_H +#define MAINWINDOW_H + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "ChildWindow.h" + +/** + * La fenêtre principale du projet. + */ +class MainWindow : public QMainWindow { + + Q_OBJECT + +signals: + /** + * Cette classe émet ce signal lorsqu'elle veut que l'application se termine. + */ + void askForQuit(); + +public: + + /** + * Construit une nouvelle fenêtre. + */ + MainWindow(); + +protected: + + /* + * @see QT's doc + */ + void closeEvent(QCloseEvent *); + +private slots: + + /** + * Ce slot est activé par la fenêtre de sélection de fichiers + * lorsque qu'un fichier est sélectionné. + */ + void load(const QString & filename); + + /** + * Créé un nouveau document vierge. + */ + ChildWindow * newDoc(); + + /** + * Cette slot est activé lorsque le menu "fenêtre" est sur le + * point d'être activé, afin de remettre celui-ci à jour. + */ + void windowsMenuAboutToShow(); + + /** + * Propose à l'utilisateur d'ouvrir un fichier. + */ + void load(); + + /** + * Enregistre le fichier. + */ + void save(); + + /** + * Enregistre le fichier en demandant à l'utilisateur de + * choisir un nom de fichier. + */ + void saveAs(); + + /** + * Quitte l'application. + */ + void quit(); + + /** + * Ferme la fenetre fille active + */ + void closeWindow(); + + /** + * Affiche des information à propos de ce logiciel. + */ + void about(); + + /** + * Lorsqu'un item du menu windows est cliqué, ce slot est activé. + */ + void windowsMenuActivated(int id); + +private: + + /** + * L'espace de travail de l'application. + */ + QWorkspace * _workspace; + + /** + * Le menu "fenêtre" + */ + QPopupMenu * _windowsMenu; + + /** + * La fenêtre de sélection de fichiers. + */ + QFileDialog * _fileDialog; +}; + + +#endif /* MAINWINDOW_H */ diff --git a/GUI/TP4/src/formattedview.cpp b/GUI/TP4/src/formattedview.cpp new file mode 100755 index 0000000..855c194 --- /dev/null +++ b/GUI/TP4/src/formattedview.cpp @@ -0,0 +1,41 @@ +/** + * #(@)formattedview.cpp ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/* + * @version 0.0.1 + * + * @done - + * + * @todo - + */ + + + +#include "formattedview.h" + +FormattedView::FormattedView(QWidget *parent, const char *name) + : QTextEdit(parent, name) { + + this->setTextFormat(Qt::RichText); + this->setReadOnly(true); +} + + +FormattedView::~FormattedView() {} + +void FormattedView::sourceChanged(QString * text) { + this->setText(*text); +} + + diff --git a/GUI/TP4/src/formattedview.h b/GUI/TP4/src/formattedview.h new file mode 100755 index 0000000..3ca5962 --- /dev/null +++ b/GUI/TP4/src/formattedview.h @@ -0,0 +1,56 @@ +/** + * #(@)formattedview.h ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/* + * @version 0.0.1 + * + * @done - + * + * @todo - + */ + + + +#ifndef FORMATEDVIEW_H +#define FORMATEDVIEW_H + +#include + +/** + * Cette classe affiche la page HTML formatée. + * + * @author Nicolas MASSE + * @author Thomas LIMIN + */ +class FormattedView : public QTextEdit { + Q_OBJECT + +public slots: + /** + * Ce slot est déclenché lorsque le code source la page a été + * modifié. + */ + void sourceChanged(QString * text); + +public: + /** + * Construit une nouvelle vue. + */ + FormattedView(QWidget *parent = 0, const char *name = 0); + + ~FormattedView(); + +}; + +#endif diff --git a/GUI/TP4/src/htmldocmodel.cpp b/GUI/TP4/src/htmldocmodel.cpp new file mode 100755 index 0000000..3f06112 --- /dev/null +++ b/GUI/TP4/src/htmldocmodel.cpp @@ -0,0 +1,135 @@ +/** + * #(@)htmldocmodel.cpp ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + + +/* + * @version 0.0.1 + * + * @done - + * + * @todo - + */ + + +#include "htmldocmodel.h" + +#include + +HTMLDocModel::HTMLDocModel(SourceEditor * editor) + : QObject() { + + this->_source = new QString(); + this->_filename = 0; + this->_numLines = 0; + this->_editor = editor; + this->_modified = false; +} + + +HTMLDocModel::~HTMLDocModel() { + delete this->_source; +} + +QString * HTMLDocModel::getSource() const { + return this->_source; +} + +void HTMLDocModel::changeSource(const QString & string) { + delete this->_source; + this->_source = new QString(string); + this->_modified = true; + + this->update(); +} + +void HTMLDocModel::setNumLines( int lines ) { + this->_numLines = lines; +} + +int HTMLDocModel::numLines( ) { + return this->_numLines; +} + +int HTMLDocModel::numChars( ) { + if (_source) { + return this->_source->length(); + } else { + return 0; + } +} + +void HTMLDocModel::setFilename(const QString & name) { + delete this->_filename; + this->_filename = new QString(name); +} + +QString * HTMLDocModel::filename() { + return this->_filename; +} + +bool HTMLDocModel::save() { + bool ret = false; + + QFile file(*_filename); + file.open(IO_WriteOnly); + + if (file.isOpen()) { // ouverture réussie ? + QTextStream stream(&file); + + stream << *_source; + + file.close(); + this->_modified = false; + + ret = true; + } + + return ret; +} + +bool HTMLDocModel::load( const QString & fileName ) { + bool ret = false; + + QFile file(fileName); + file.open(IO_ReadOnly); + + if (file.isOpen()) { // ouverture réussie ? + QByteArray arr = file.readAll(); + QString data(arr.data()); + file.close(); + this->changeSource(data); + _editor->setText(data); + + this->setFilename(fileName); + this->_modified = false; + + ret = true; + } + + return ret; +} + +bool HTMLDocModel::saveAs(const QString & fileName) { + this->setFilename(fileName); + return this->save(); +} + +bool HTMLDocModel::isModified( ) { + return this->_modified; +} + +void HTMLDocModel::update( ) { + emit sourceChanged(this->_source); +} + diff --git a/GUI/TP4/src/htmldocmodel.h b/GUI/TP4/src/htmldocmodel.h new file mode 100755 index 0000000..b9becf5 --- /dev/null +++ b/GUI/TP4/src/htmldocmodel.h @@ -0,0 +1,148 @@ +/** + * #(@)htmldocmodel.h ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/* + * @version 0.0.1 + * + * @done - + * + * @todo - + */ + + + +#ifndef HTMLDOCMODEL_H +#define HTMLDOCMODEL_H + +#include +#include + +#include "sourceeditor.h" + +/** + * Le modèle MVC du projet. + * + * @author Nicolas MASSE + * @author Thomas LIMIN + */ +class HTMLDocModel : public QObject { + Q_OBJECT + +signals: + /** + * Ce slot est déclenché lorsque le code source la page a été + * modifié. + */ + void sourceChanged(QString * source); + +public: + /** + * Construit un nouveau modèle. + */ + HTMLDocModel(SourceEditor * editor); + + /** + * Détruit le modèle. + */ + ~HTMLDocModel(); + + /** + * Retourne le code source de la page. + */ + QString * getSource() const; + + /** + * Définit le nombre de lignes dans la page. + */ + void setNumLines(int lines); + + /** + * Retourne le nombre de lignes dans le code source de la page. + */ + int numLines(); + + /** + * Retourne le nombre de caractères dans le code source de la page. + */ + int numChars(); + + /** + * Définit le nom de fichier de la page HTML. + */ + void setFilename(const QString & name); + + /** + * Retourne le nom de fichier de la page HTML. + */ + QString * filename(); + + /** + * Retourne l'état de modification de la copie du fichier en mémoire. + */ + bool isModified(); + +public slots: + /** + * Change le code source de la page + */ + void changeSource(const QString & string); + + /** + * Enregistre le code source de la page sur le disque. + */ + bool save(); + + /** + * Charge le code source de la page. + */ + bool load(const QString & fileName); + + /** + * Enregistre le code source de la page dans le fichier spécifié. + */ + bool saveAs(const QString & fileName); + + /** + * Prévient les écouteurs que le code source a été modifié. + */ + void update(); + +private: + /** + * L'éditeur de code source. + */ + SourceEditor * _editor; + + /** + * Le code source de la page. + */ + QString * _source; + + /** + * Le nom de fichier. + */ + QString * _filename; + + /** + * Le nombre de lignes dans le code source de la page. + */ + int _numLines; + + /** + * État de modification de la page. + */ + bool _modified; +}; + +#endif diff --git a/GUI/TP4/src/main.cpp b/GUI/TP4/src/main.cpp new file mode 100755 index 0000000..59ec053 --- /dev/null +++ b/GUI/TP4/src/main.cpp @@ -0,0 +1,53 @@ +/** + * #(@)main.cpp ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/* + * @version 0.0.1 + * + * @done - + * + * @todo - + */ + +#include +#include + +#include "MainWindow.h" + + +int main(int argc, char * argv[]) { + + // réglage du charset avec lequel QT lit les chaine de type C dans le code + QTextCodec * codec = QTextCodec::codecForName("utf8"); + QTextCodec::setCodecForCStrings (codec); + + QApplication app(argc, argv); + QWidget * mainWindow = new MainWindow(); + + // Connecte le signal askForQuit() émis par + // le Widget principal au slot quit() de l'objet + // application. + QObject::connect(mainWindow, SIGNAL(askForQuit()), + &app, SLOT(quit())); + + // Precise a l'objet application quel est le widget de + // la fenetre principale. + app.setMainWidget(mainWindow); + + // Provoque l'affichage de la fenetre principale. + mainWindow->show(); + + // Passe la main a la boucle d'evenements. + return app.exec(); +} diff --git a/GUI/TP4/src/overview.cpp b/GUI/TP4/src/overview.cpp new file mode 100755 index 0000000..e051873 --- /dev/null +++ b/GUI/TP4/src/overview.cpp @@ -0,0 +1,41 @@ +/** + * #(@)overview.cpp ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/* + * @version 0.0.1 + * + * @done - + * + * @todo - + */ + + + +#include "overview.h" + +OverView::OverView(QWidget *parent, const char *name) + : QTextEdit(parent, name) { + this->setTextFormat(Qt::RichText); + this->setReadOnly(true); + this->zoomTo(4); +} + + +OverView::~OverView() {} + + +void OverView::sourceChanged(QString * text) { + this->setText(*text); +} + diff --git a/GUI/TP4/src/overview.h b/GUI/TP4/src/overview.h new file mode 100755 index 0000000..cbe150e --- /dev/null +++ b/GUI/TP4/src/overview.h @@ -0,0 +1,54 @@ +/** + * #(@)overview.h ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/* + * @version 0.0.1 + * + * @done - + * + * @todo - + */ + + +#ifndef OVERVIEW_H +#define OVERVIEW_H + +#include + +/** + * Cette classe est une vue d'ensemble de la page HTML. + * + * @author Nicolas MASSE + * @author Thomas LIMIN + */ +class OverView : public QTextEdit { + Q_OBJECT + +public slots: + /** + * Ce slot est activé lorsque le code source de la page HTML a changé. + */ + void sourceChanged(QString * text); + +public: + /** + * Créé une nouvelle vue d'ensemble. + */ + OverView(QWidget *parent = 0, const char *name = 0); + + ~OverView(); + +}; + +#endif diff --git a/GUI/TP4/src/sourceeditor.cpp b/GUI/TP4/src/sourceeditor.cpp new file mode 100755 index 0000000..69f1929 --- /dev/null +++ b/GUI/TP4/src/sourceeditor.cpp @@ -0,0 +1,36 @@ +/** + * #(@)sourceeditor.cpp ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/* + * @version 0.0.1 + * + * @done - + * + * @todo - + */ + + + +#include "sourceeditor.h" + +SourceEditor::SourceEditor(QWidget *parent, const char *name) + : QTextEdit(parent, name) { + + this->setTextFormat(Qt::PlainText); +} + + +SourceEditor::~SourceEditor() {} + + diff --git a/GUI/TP4/src/sourceeditor.h b/GUI/TP4/src/sourceeditor.h new file mode 100755 index 0000000..7d42bff --- /dev/null +++ b/GUI/TP4/src/sourceeditor.h @@ -0,0 +1,46 @@ +/** + * #(@)sourceeditor.h ENSICAEN 2006 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + + +/* + * @version 0.0.1 + * + * @done - + * + * @todo - + */ + + + +#ifndef SOURCEEDITOR_H +#define SOURCEEDITOR_H + +#include + +/** + * Cette classe est l'éditeur de code source de l'application. + * + * @author Nicolas MASSE + * @author Thomas LIMIN + */ +class SourceEditor : public QTextEdit { + Q_OBJECT +public: + SourceEditor(QWidget *parent = 0, const char *name = 0); + + ~SourceEditor(); + +}; + +#endif /* SOURCEEDITOR_H */ diff --git a/GUI/TP4/src/src.pro b/GUI/TP4/src/src.pro new file mode 100755 index 0000000..6579779 --- /dev/null +++ b/GUI/TP4/src/src.pro @@ -0,0 +1,27 @@ +# File generated by kdevelop's qmake manager. +# ------------------------------------------- +# Subdir relative project main directory: ./src +# Target is an application: ../bin/tp4 + +HEADERS += htmldocmodel.h \ + ChildWindow.h \ + MainWindow.h \ + sourceeditor.h \ + formattedview.h \ + overview.h \ + statview.h +SOURCES += main.cpp \ + htmldocmodel.cpp \ + ChildWindow.cpp \ + MainWindow.cpp \ + sourceeditor.cpp \ + formattedview.cpp \ + overview.cpp \ + statview.cpp +QMAKE_CXXFLAGS_RELEASE += -ggdb +TARGET = ../bin/tp4 +CONFIG += release \ +warn_on \ +qt \ +thread +TEMPLATE = app diff --git a/GUI/TP4/src/statview.cpp b/GUI/TP4/src/statview.cpp new file mode 100755 index 0000000..5362e50 --- /dev/null +++ b/GUI/TP4/src/statview.cpp @@ -0,0 +1,43 @@ +/** + * #(@)statview.cpp ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/* + * @version 0.0.1 + * + * @done - + * + * @todo - + */ + + + +#include "statview.h" + +StatView::StatView(HTMLDocModel * model, QWidget *parent, const char *name) + : QLabel(parent, name) { + + this->_docModel = model; +} + + +StatView::~StatView() {} + +void StatView::sourceChanged(QString * /* text */) { + QString lignes = QString::number(this->_docModel->numLines()); + QString cars = QString::number(this->_docModel->numChars()); + + this->setText(QString("Lignes : ") + lignes + QString(" / Caractères : ") + cars); +} + + diff --git a/GUI/TP4/src/statview.h b/GUI/TP4/src/statview.h new file mode 100755 index 0000000..a282dd4 --- /dev/null +++ b/GUI/TP4/src/statview.h @@ -0,0 +1,63 @@ +/** + * #(@)statview.h ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/* + * @version 0.0.1 + * + * @done - + * + * @todo - + */ + + + +#ifndef STATVIEW_H +#define STATVIEW_H + +#include + +#include "htmldocmodel.h" + +/** + * Cette classe est une vue statistique de la page HTML. + * Elle affiche le nombre de caractères et de lignes dans + * le code source de la page. Les objets de cette classe + * sont destinés à être placés dans une barre d'état. + * + * @author Nicolas MASSE + * @author Thomas LIMIN + */ +class StatView : public QLabel { + + Q_OBJECT + +public slots: + /** + * Ce slot est activé lorsque le code source de la page HTML a changé. + */ + void sourceChanged(QString * text); + +public: + StatView(HTMLDocModel * model, QWidget *parent = 0, const char *name = 0); + + ~StatView(); + +private: + /** + * Le modèle. + */ + HTMLDocModel * _docModel; +}; + +#endif diff --git a/GUI/TP4/templates/cpp b/GUI/TP4/templates/cpp new file mode 100755 index 0000000..102ff47 --- /dev/null +++ b/GUI/TP4/templates/cpp @@ -0,0 +1,37 @@ +/** + * #(@)nomfichier.cpp ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/** + * Description des objectifs du programme, le sujet a traiter. + * Pour le programme qui contient le main(), + * la ligne de commande pour executer le programme. + */ + +#include + +/** + * Description succinte de l'algorithme utilise comme solution. + * Eventuellement: Les references (cahier des charges,bibliographiques...). + */ + +/* + * @version 0.0.1 + * + * @done - + * + * @todo - + */ + + + diff --git a/GUI/TP4/templates/h b/GUI/TP4/templates/h new file mode 100755 index 0000000..3e1bb3d --- /dev/null +++ b/GUI/TP4/templates/h @@ -0,0 +1,37 @@ +/** + * #(@)nomfichier.h ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/** + * Description des objectifs du programme, le sujet a traiter. + * Pour le programme qui contient le main(), + * la ligne de commande pour executer le programme. + */ + +#include + +/** + * Description succinte de l'algorithme utilise comme solution. + * Eventuellement: Les references (cahier des charges,bibliographiques...). + */ + +/* + * @version 0.0.1 + * + * @done - + * + * @todo - + */ + + + diff --git a/GUI/TP4/tp4.kdevelop b/GUI/TP4/tp4.kdevelop new file mode 100755 index 0000000..975f97a --- /dev/null +++ b/GUI/TP4/tp4.kdevelop @@ -0,0 +1,189 @@ + + + + Nicolas MASSE and Thomas LIMIN + nicolas27.masse@laposte.net + 0.1 + KDevTrollProject + C++ + + Qt + + . + false + + + kdevsubversion + + + + + + + + false + false + + + false + *.o,*.lo,CVS + false + + + + + bash + bash_bugs + clanlib + fortran_bugs_gcc + gnome1 + gnustep + gtk + gtk_bugs + haskell + haskell_bugs_ghc + java_bugs_gcc + java_bugs_sun + kde2book + opengl + pascal_bugs_fp + php + php_bugs + perl + perl_bugs + python + python_bugs + qt-kdev3 + ruby + ruby_bugs + sdl + stl + sw + w3c-dom-level2-html + w3c-svg + w3c-uaag10 + wxwidgets_bugs + + + KDE Libraries (Doxygen) + + + + + + + + /usr/bin/ + true + false + false + + + + + + false + true + 10 + + + + + + bin/tp4 + + executable + / + false + true + + + + src + + + true + 1 + false + + 0 + + + + + + + + + + + + + + + + + + Doxygen Documentation Collection + tp4.tag + + + + + + true + true + true + false + true + true + true + 250 + 400 + 250 + + + true + 3 + /usr/qt/3 + + + + set + m_,_ + theValue + true + true + + + + + .h + .cpp + + + + false + false + + TP4 + 0.1 + + + + + + + + + false + false + false + 0 + false + false + false + false + + + diff --git a/GUI/TP4/tp4.pro b/GUI/TP4/tp4.pro new file mode 100755 index 0000000..20f1cba --- /dev/null +++ b/GUI/TP4/tp4.pro @@ -0,0 +1,6 @@ +SUBDIRS += src +TEMPLATE = subdirs +CONFIG += release \ + warn_on \ + qt \ + thread diff --git a/GUI/TP5/COPYING b/GUI/TP5/COPYING new file mode 100755 index 0000000..5b6e7c6 --- /dev/null +++ b/GUI/TP5/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 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 Library 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 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 Library General +Public License instead of this License. diff --git a/GUI/TP5/Doxyfile b/GUI/TP5/Doxyfile new file mode 100755 index 0000000..c2f5eea --- /dev/null +++ b/GUI/TP5/Doxyfile @@ -0,0 +1,275 @@ +# Doxyfile 1.4.1-KDevelop + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +PROJECT_NAME = tp5.kdevelop +PROJECT_NUMBER = 0.1 +OUTPUT_DIRECTORY = +CREATE_SUBDIRS = NO +OUTPUT_LANGUAGE = English +USE_WINDOWS_ENCODING = NO +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the +ALWAYS_DETAILED_SEC = NO +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = YES +STRIP_FROM_PATH = /home/users/nicolas/svn_mirror/poubi64.nmasse.homeip.net/studies/ENSI_2ndY/GUI/TP4/ +STRIP_FROM_INC_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = NO +MULTILINE_CPP_IS_BRIEF = NO +DETAILS_AT_TOP = NO +INHERIT_DOCS = YES +DISTRIBUTE_GROUP_DOC = NO +TAB_SIZE = 8 +ALIASES = +OPTIMIZE_OUTPUT_FOR_C = NO +OPTIMIZE_OUTPUT_JAVA = NO +SUBGROUPING = YES +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- +EXTRACT_ALL = NO +EXTRACT_PRIVATE = NO +EXTRACT_STATIC = NO +EXTRACT_LOCAL_CLASSES = YES +EXTRACT_LOCAL_METHODS = NO +HIDE_UNDOC_MEMBERS = NO +HIDE_UNDOC_CLASSES = NO +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = NO +CASE_SENSE_NAMES = YES +HIDE_SCOPE_NAMES = NO +SHOW_INCLUDE_FILES = YES +INLINE_INFO = YES +SORT_MEMBER_DOCS = YES +SORT_BRIEF_DOCS = NO +SORT_BY_SCOPE_NAME = NO +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 30 +SHOW_USED_FILES = YES +SHOW_DIRECTORIES = YES +FILE_VERSION_FILTER = +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- +QUIET = NO +WARNINGS = YES +WARN_IF_UNDOCUMENTED = YES +WARN_IF_DOC_ERROR = YES +WARN_NO_PARAMDOC = NO +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- +INPUT = /home/users/nicolas/svn_mirror/poubi64.nmasse.homeip.net/studies/ENSI_2ndY/GUI/tp5 +FILE_PATTERNS = *.c \ + *.cc \ + *.cxx \ + *.cpp \ + *.c++ \ + *.java \ + *.ii \ + *.ixx \ + *.ipp \ + *.i++ \ + *.inl \ + *.h \ + *.hh \ + *.hxx \ + *.hpp \ + *.h++ \ + *.idl \ + *.odl \ + *.cs \ + *.php \ + *.php3 \ + *.inc \ + *.m \ + *.mm \ + *.dox \ + *.C \ + *.CC \ + *.C++ \ + *.II \ + *.I++ \ + *.H \ + *.HH \ + *.H++ \ + *.CS \ + *.PHP \ + *.PHP3 \ + *.M \ + *.MM \ + *.C \ + *.H \ + *.tlh \ + *.diff \ + *.patch \ + *.moc \ + *.xpm \ + *.dox +RECURSIVE = yes +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = * +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = +INPUT_FILTER = +FILTER_PATTERNS = +FILTER_SOURCE_FILES = NO +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = NO +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = YES +REFERENCES_RELATION = YES +VERBATIM_HEADERS = YES +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = NO +COLS_IN_ALPHA_INDEX = 5 +IGNORE_PREFIX = +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- +GENERATE_HTML = YES +HTML_OUTPUT = html +HTML_FILE_EXTENSION = .html +HTML_HEADER = +HTML_FOOTER = +HTML_STYLESHEET = +HTML_ALIGN_MEMBERS = YES +GENERATE_HTMLHELP = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +BINARY_TOC = NO +TOC_EXPAND = NO +DISABLE_INDEX = NO +ENUM_VALUES_PER_LINE = 4 +GENERATE_TREEVIEW = NO +TREEVIEW_WIDTH = 250 +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- +GENERATE_LATEX = YES +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4wide +EXTRA_PACKAGES = +LATEX_HEADER = +PDF_HYPERLINKS = NO +USE_PDFLATEX = NO +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- +GENERATE_MAN = NO +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_LINKS = NO +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = yes +XML_OUTPUT = xml +XML_SCHEMA = +XML_DTD = +XML_PROGRAMLISTING = YES +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- +GENERATE_AUTOGEN_DEF = NO +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = NO +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- +TAGFILES = +GENERATE_TAGFILE = tp5.tag +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +PERL_PATH = /usr/bin/perl +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- +CLASS_DIAGRAMS = YES +HIDE_UNDOC_RELATIONS = YES +HAVE_DOT = NO +CLASS_GRAPH = YES +COLLABORATION_GRAPH = YES +GROUP_GRAPHS = YES +UML_LOOK = NO +TEMPLATE_RELATIONS = NO +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = YES +CALL_GRAPH = NO +GRAPHICAL_HIERARCHY = YES +DIRECTORY_GRAPH = YES +DOT_IMAGE_FORMAT = png +DOT_PATH = +DOTFILE_DIRS = +MAX_DOT_GRAPH_WIDTH = 1024 +MAX_DOT_GRAPH_HEIGHT = 1024 +MAX_DOT_GRAPH_DEPTH = 1000 +DOT_TRANSPARENT = NO +DOT_MULTI_TARGETS = NO +GENERATE_LEGEND = YES +DOT_CLEANUP = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- +SEARCHENGINE = NO diff --git a/GUI/TP5/snapshot.png b/GUI/TP5/snapshot.png new file mode 100755 index 0000000000000000000000000000000000000000..6dd12d30c61ac224b0b4d49e3c9f1608a4785add GIT binary patch literal 83820 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 literal 0 HcmV?d00001 diff --git a/GUI/TP5/src/facture.ui b/GUI/TP5/src/facture.ui new file mode 100755 index 0000000..1c6c2c5 --- /dev/null +++ b/GUI/TP5/src/facture.ui @@ -0,0 +1,546 @@ + +Facture + + + FactureForm + + + + 0 + 0 + 970 + 725 + + + + Form1 + + + + unnamed + + + + groupBox3 + + + Aperçu facture + + + + unnamed + + + + factureView + + + + 7 + 7 + 0 + 0 + + + + + 360 + 500 + + + + + + + + editionFrame + + + + 4 + 5 + 0 + 0 + + + + NoFrame + + + Plain + + + + unnamed + + + + clientLabel + + + <h1><p align="center">Client</h1></p> + + + + + frame11 + + + NoFrame + + + Raised + + + + unnamed + + + + prenomEdit + + + + + prenomLabel + + + <p align="right">Prénom</p> + + + + + villeLabel + + + <p align="right">Ville</p> + + + + + nomEdit + + + + + adresse1Edit + + + + + adresse2Edit + + + + + cpEdit + + + + + villeEdit + + + + + cpLabel + + + <p align="right">CP</p> + + + + + adresse2Label + + + <p align="right">Adresse 2</p> + + + + + adresse1Label + + + <p align="right">Adresse 1</p> + + + + + nomLabel + + + <p align="right">Nom</p> + + + + + + + ligneEntreClientEtArticles + + + HLine + + + Sunken + + + Horizontal + + + + + articlesLabel + + + <h1><p align="center">Articles</p></h1> + + + + + + Code + + + + + Désignation + + + + + Quantité + + + + + Unité HT + + + + + Total HT + + + + factureTable + + + + 4 + 7 + 1 + 0 + + + + Default + + + 15 + + + 5 + + + SingleRow + + + + + + + + + MenuBar + + + + + + + + + + + + + + + + + + + + + + + FactureView +
    factureview.h
    + + -1 + -1 + + 0 + + 5 + 5 + 0 + 0 + + image0 +
    +
    + + + + fileNewAction + + + New + + + &New + + + Ctrl+N + + + + + fileOpenAction + + + + + + Open + + + &Open... + + + Ctrl+O + + + + + fileSaveAction + + + + + + Save + + + &Save + + + Ctrl+S + + + + + fileSaveAsAction + + + Save As + + + Save &As... + + + + + + + + filePrintAction + + + + + + Print + + + &Print... + + + Ctrl+P + + + + + fileExitAction + + + Exit + + + E&xit + + + Ctrl+Q + + + + + helpAboutAction + + + About + + + &About + + + + + + + + editClearAllAction + + + Clear All + + + Clear &All + + + Ctrl+L + + + + + + 789c534e494dcbcc4b554829cdcdad8c2fcf4c29c95030e0524611cd48cd4ccf28010a1797249664262b2467241641a592324b8aa363156c15aab914146aadb90067111b1f + + + + + fileNewAction + activated() + FactureForm + fileNew() + + + fileOpenAction + activated() + FactureForm + fileOpen() + + + fileSaveAction + activated() + FactureForm + fileSave() + + + fileSaveAsAction + activated() + FactureForm + fileSaveAs() + + + filePrintAction + activated() + FactureForm + filePrint() + + + fileExitAction + activated() + FactureForm + fileExit() + + + helpAboutAction + activated() + FactureForm + helpAbout() + + + nomEdit + textChanged(const QString&) + FactureForm + nomChanged(const QString&) + + + prenomEdit + textChanged(const QString&) + FactureForm + prenomChanged(const QString&) + + + adresse1Edit + textChanged(const QString&) + FactureForm + adresse1Changed(const QString&) + + + adresse2Edit + textChanged(const QString&) + FactureForm + adresse2Changed(const QString&) + + + cpEdit + textChanged(const QString&) + FactureForm + cpChanged(const QString&) + + + villeEdit + textChanged(const QString&) + FactureForm + villeChanged(const QString&) + + + factureTable + valueChanged(int,int) + FactureForm + tableChanged(int,int) + + + editClearAllAction + activated() + FactureForm + editClearAll() + + + + nomEdit + prenomEdit + adresse1Edit + adresse2Edit + cpEdit + villeEdit + factureTable + + + fileNew() + fileOpen() + fileSave() + fileSaveAs() + filePrint() + fileExit() + helpAbout() + editClearAll() + nomChanged(const QString & s) + prenomChanged(const QString & s) + adresse1Changed(const QString & s) + adresse2Changed(const QString & s) + cpChanged(const QString & s) + villeChanged(const QString & s) + tableChanged(int row, int col) + + + + + factureview.h + +
    diff --git a/GUI/TP5/src/factureimpl.cpp b/GUI/TP5/src/factureimpl.cpp new file mode 100755 index 0000000..6e46ab2 --- /dev/null +++ b/GUI/TP5/src/factureimpl.cpp @@ -0,0 +1,123 @@ +/** + * #(@)factureimpl.cpp ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/* + * @version 0.0.1 + * + * @done - + * + * @todo - + */ + + + +#include "factureimpl.h" +#include "factureview.h" + +#include + +#include +using namespace std; + +FactureImpl::FactureImpl(QWidget* parent, const char* name, WFlags fl) + : Facture(parent,name,fl) { + + _model = new FactureModel(this); + this->factureView->setModel(_model); +} + +FactureImpl::~FactureImpl() { + delete _model; +} + +/*$SPECIALIZATION$*/ +void FactureImpl::helpAbout() { + QMessageBox::about(this, "A propos...", "(C)2006 Thomas LIMIN & Nicolas MASSE"); +} + +void FactureImpl::fileExit() { + this->close(); +} + +void FactureImpl::filePrint() { + QMessageBox::warning(this, "Not yet implemented...", "Not yet implemented !"); +} + +void FactureImpl::fileSaveAs() { + QMessageBox::warning(this, "Not yet implemented...", "Not yet implemented !"); +} + +void FactureImpl::fileSave() { + QMessageBox::warning(this, "Not yet implemented...", "Not yet implemented !"); +} + +void FactureImpl::fileOpen() { + QMessageBox::warning(this, "Not yet implemented...", "Not yet implemented !"); +} + +void FactureImpl::fileNew() { + QMessageBox::warning(this, "Not yet implemented...", "Not yet implemented !"); +} + +void FactureImpl::editClearAll() { + QMessageBox::warning(this, "Not yet implemented...", "Not yet implemented !"); +} + +void FactureImpl::nomChanged( const QString & s ) { + _model->setNom(s); +} + +void FactureImpl::villeChanged( const QString & s ) { + _model->setVille(s); +} + +void FactureImpl::prenomChanged( const QString & s ) { + _model->setPrenom(s); +} + +void FactureImpl::adresse1Changed( const QString & s ) { + _model->setAdresse1(s); +} + +void FactureImpl::adresse2Changed( const QString & s ) { + _model->setAdresse2(s); +} + +void FactureImpl::cpChanged( const QString & s ) { + _model->setCodePostal(s); +} + +void FactureImpl::tableChanged(int row, int col) { + + switch (col) { + case 2: + case 3: + case 4: + { // les colonnes 2, 3 et 4 sont liées + QString q = this->factureTable->text(row, 2); + QString p = this->factureTable->text(row, 3); + + double res = p.toDouble() * q.toDouble(); + this->factureTable->setText(row, 4, QString::number(res)); + _model->celluleChangee(row, 4); + _model->celluleChangee(row, col); + } + break; + default: + _model->celluleChangee(row, col); + break; + } + +} + diff --git a/GUI/TP5/src/factureimpl.h b/GUI/TP5/src/factureimpl.h new file mode 100755 index 0000000..63f6595 --- /dev/null +++ b/GUI/TP5/src/factureimpl.h @@ -0,0 +1,79 @@ +/** + * #(@)factureimpl.h ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/* + * @version 0.0.1 + * + * @done - + * + * @todo - + */ + + +#ifndef FACTUREIMPL_H +#define FACTUREIMPL_H + +#include "facture.h" + +#include "facturemodel.h" +class FactureModel; + +/** + * Cette classe dérive de la classe d'interface graphique créée par + * Qt Designer. Elle implémente les actions liées aux évenements de + * l'interface graphique. + */ +class FactureImpl : public Facture { + Q_OBJECT + +public: + FactureImpl(QWidget* parent = 0, const char* name = 0, WFlags fl = 0); + ~FactureImpl(); + /*$PUBLIC_FUNCTIONS$*/ + +public slots: + /*$PUBLIC_SLOTS$*/ + virtual void helpAbout(); + virtual void fileExit(); + virtual void filePrint(); + virtual void fileSaveAs(); + virtual void editClearAll(); + virtual void fileSave(); + virtual void fileOpen(); + virtual void fileNew(); + +protected: + /*$PROTECTED_FUNCTIONS$*/ + +protected slots: + virtual void nomChanged(const QString & s); + virtual void prenomChanged(const QString & s); + virtual void adresse1Changed(const QString & s); + virtual void adresse2Changed(const QString & s); + virtual void cpChanged(const QString & s); + virtual void villeChanged(const QString & s); + virtual void tableChanged(int row, int col); + +protected slots: + /*$PROTECTED_SLOTS$*/ + +private: + /** + * Le modèle du MVC + */ + FactureModel * _model; +}; + +#endif + diff --git a/GUI/TP5/src/facturemodel.cpp b/GUI/TP5/src/facturemodel.cpp new file mode 100755 index 0000000..6500399 --- /dev/null +++ b/GUI/TP5/src/facturemodel.cpp @@ -0,0 +1,113 @@ +/** + * #(@)facturemodel.cpp ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/* + * @version 0.0.1 + * + * @done - + * + * @todo - + */ + +#include "facturemodel.h" + +#include +using namespace std; + +FactureModel::FactureModel(FactureImpl * facture, QObject * parent, const char * name) : QObject(parent, name) { + this->_ui = facture; +} + + +FactureModel::~FactureModel() {} + + + +const QString & FactureModel::nom() const { + return _nom; +} + + +void FactureModel::setNom(const QString& theValue) { + _nom = theValue; + this->notify(); +} + + +const QString & FactureModel::prenom() const { + return _prenom; +} + + +void FactureModel::setPrenom(const QString& theValue) { + _prenom = theValue; + this->notify(); +} + + +const QString & FactureModel::adresse1() const { + return _adresse1; +} + + +void FactureModel::setAdresse1(const QString& theValue) { + _adresse1 = theValue; + this->notify(); +} + + +const QString & FactureModel::adresse2() const { + return _adresse2; +} + + +void FactureModel::setAdresse2(const QString& theValue) { + _adresse2 = theValue; + this->notify(); +} + + +const QString & FactureModel::codePostal() const { + return _codePostal; +} + + +void FactureModel::setCodePostal(const QString& theValue) { + _codePostal = theValue; + this->notify(); +} + + +const QString & FactureModel::ville() const { + return _ville; +} + + +void FactureModel::setVille(const QString& theValue) { + _ville = theValue; + this->notify(); +} + +void FactureModel::celluleChangee(int row, int col) { + _table[row][col] = _ui->factureTable->text(row, col); + this->notify(); +} + +void FactureModel::notify() { + emit factureChanged(); +} + +const QString & FactureModel::cellule(int row, int col) const { + return _table[row][col]; +} diff --git a/GUI/TP5/src/facturemodel.h b/GUI/TP5/src/facturemodel.h new file mode 100755 index 0000000..bb3da61 --- /dev/null +++ b/GUI/TP5/src/facturemodel.h @@ -0,0 +1,84 @@ +/** + * #(@)facturemodel.h ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/* + * @version 0.0.1 + * + * @done - + * + * @todo - + */ + +#ifndef FACTUREMODEL_H +#define FACTUREMODEL_H + +#include +#include +#include + +#include "factureimpl.h" +class FactureImpl; + +#define NUM_LIGNES_DANS_FACTURE 15 + +/** + * Le modèle du MVC. + * + * @author Nicolas MASSÉ + */ +class FactureModel : public QObject { + Q_OBJECT + +signals: + /** + * Emit lorsque le modèle à changé. + */ + void factureChanged(); + +public: + FactureModel(FactureImpl * facture, QObject * parent = 0, const char * name = 0); + + ~FactureModel(); + + const QString & nom() const; + const QString & prenom() const; + const QString & adresse1() const; + const QString & adresse2() const; + const QString & codePostal() const; + const QString & ville() const; + const QString & cellule(int row, int col) const; + +public slots: + void setNom(const QString& theValue); + void setPrenom(const QString& theValue); + void setAdresse1(const QString& theValue); + void setAdresse2(const QString& theValue); + void setCodePostal(const QString& theValue); + void setVille(const QString& theValue); + void celluleChangee(int row, int col); + +private: + void notify(); + + QString _nom; + QString _prenom; + QString _adresse1; + QString _adresse2; + QString _codePostal; + QString _ville; + FactureImpl * _ui; + QString _table[NUM_LIGNES_DANS_FACTURE][5]; +}; + +#endif diff --git a/GUI/TP5/src/factureview.cpp b/GUI/TP5/src/factureview.cpp new file mode 100755 index 0000000..7ab4320 --- /dev/null +++ b/GUI/TP5/src/factureview.cpp @@ -0,0 +1,178 @@ +/** + * #(@)factureview.cpp ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/* + * @version 0.0.1 + * + * @done - + * + * @todo - + */ + +#include "factureview.h" + +FactureView::FactureView(QWidget* parent, const char* name, WFlags fl) + : QWidget(parent, name, fl), _model(0) { +} + + +FactureView::~FactureView() {} + +void FactureView::setModel(FactureModel * model) { + // on déconnecte l'ancien modèle + if (this->_model != 0) { + disconnect(this->_model, SIGNAL(factureChanged()), + this, SLOT(updateFacture())); + this->_model = 0; + } + + // et on connecte le nouveau + this->_model = model; + connect(this->_model, SIGNAL(factureChanged()), + this, SLOT(updateFacture())); + + // on recalcule l'aperçu + this->updateFacture(); +} + +void FactureView::updateFacture() { + this->repaint(); +} + +void FactureView::drawFacture(QPainter & painter) { + QRect bounds = painter.window(); + QFont font(painter.font()); + + painter.fillRect(bounds, QColor(255, 255, 255)); + + if (this->_model) { + this->drawHeader(painter); + painter.setFont(font); + this->drawTable(painter); + } + +} + +void FactureView::drawHeader(QPainter & painter) { + QRect bounds = painter.window(); + QFont font(painter.font()); + int w = bounds.width(); + int h = bounds.height(); + + painter.setBrush(QColor(220, 220, 220)); + font.setPointSize(int(0.02 * h)); + QFontMetrics fm(font); + + QString nom_prenom = _model->nom() + " " + _model->prenom(); + QString cp_ville = _model->codePostal() + " " + _model->ville(); + + int max = 0; + int tmp = 0; + + tmp = fm.width(nom_prenom); + if (tmp > max) { + max = tmp; + } + tmp = fm.width(_model->adresse1()); + if (tmp > max) { + max = tmp; + } + tmp = fm.width(_model->adresse2()); + if (tmp > max) { + max = tmp; + } + tmp = fm.width(cp_ville); + if (tmp > max) { + max = tmp; + } + + painter.drawRoundRect (int(0.05 * w), int(0.02 * h), int(max + 0.08 * w), int(0.15 * h), 15 , 35); + painter.setFont(font); + painter.drawText(int(0.08 * w), int(0.055 * h), nom_prenom); + painter.drawText(int(0.08 * w), int(0.085 * h), _model->adresse1()); + painter.drawText(int(0.08 * w), int(0.115 * h), _model->adresse2()); + painter.drawText(int(0.08 * w), int(0.145 * h), cp_ville); +} + +void FactureView::drawTable(QPainter & painter) { + QRect bounds = painter.window(); + QFont font(painter.font()); + int w = bounds.width(); + int h = bounds.height(); + + int top = int(0.2 * h); + int left = int(0.05 * w); + int right = int(0.95 * w); + int bottom = int(0.8 * h); + int height = bottom - top; + int width = right - left; + int cwidth = int(0.15 * w); + int s3 = right - cwidth; + int s2 = s3 - cwidth; + int s1 = s2 - cwidth; + int lheight = int(0.04 * h); + int hs1 = top + lheight; + + painter.setBrush(QColor(200, 200, 200)); + + painter.drawRect(left, top, width, height); + painter.drawLine(s1, top, s1, bottom); + painter.drawLine(s2, top, s2, bottom); + painter.drawLine(s3, top, s3, bottom); + painter.drawLine(left, hs1, right, hs1); + + painter.drawRect(s3, bottom + lheight, cwidth, lheight); + painter.drawRect(s3, bottom + 3 * lheight, cwidth, lheight); + + + font.setPixelSize(lheight / 3); + painter.setFont(font); + + this->drawTableLine(painter, 0, "Produit", "Quantite", "Unite (H.T.)", "Prix H.T."); + for (int i = 0; i < NUM_LIGNES_DANS_FACTURE; ++i) { + this->drawTableLine(painter, i + 1, _model->cellule(i, 1), + _model->cellule(i, 2), + _model->cellule(i, 3), + _model->cellule(i, 4)); + + } +} + +void FactureView::drawTableLine(QPainter & painter, int n, const QString & p, const QString & q, const QString & u, const QString & m) { + QRect bounds = painter.window(); + QFont font(painter.font()); + int w = bounds.width(); + int h = bounds.height(); + + int top = int(0.2 * h); + int left = int(0.05 * w); + int right = int(0.95 * w); + int cwidth = int(0.15 * w); + int s3 = right - cwidth; + int s2 = s3 - cwidth; + int s1 = s2 - cwidth; + int lheight = int(0.04 * h); + + int y = top + lheight + int((lheight * n) / 1.5); + + painter.drawText(int(left + 0.01 * w), int(y - lheight / 3), p); + painter.drawText(int(s1 + 0.01 * w), int(y - lheight / 3), q); + painter.drawText(int(s2 + 0.01 * w), int(y - lheight / 3), u); + painter.drawText(int(s3 + 0.01 * w), int(y - lheight / 3), m); +} + +void FactureView::paintEvent(QPaintEvent *) { + QPainter painter(this); + this->drawFacture(painter); +} diff --git a/GUI/TP5/src/factureview.h b/GUI/TP5/src/factureview.h new file mode 100755 index 0000000..e7539e4 --- /dev/null +++ b/GUI/TP5/src/factureview.h @@ -0,0 +1,72 @@ +/** + * #(@)factureview.h ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/* + * @version 0.0.1 + * + * @done - + * + * @todo - + */ + +#ifndef FACTUREVIEW_H +#define FACTUREVIEW_H + +#include "facturemodel.h" + +#include +#include +#include + + +/** + * Cette classe est une vue du MVC. + * + * @author Nicolas MASSÉ + */ +class FactureView : public QWidget { + + Q_OBJECT + +public: + FactureView(QWidget* parent = 0, + const char* name = 0, WFlags fl = 0); + + ~FactureView(); + + /** + * Définit le modèle du MVC. + */ + void setModel(FactureModel * model); + + /** + * Méthode appelée par Qt afin de rafraichir. + */ + virtual void paintEvent(QPaintEvent *); + +public slots: + /** + * Mets à jour l'aperçu de la facture. + */ + void updateFacture(); + +private: + void drawFacture(QPainter & painter); + void drawHeader(QPainter & painter); + void drawTable(QPainter & painter); + void drawTableLine(QPainter & painter, int n, const QString & p, const QString & q, const QString & u, const QString & h); + FactureModel * _model; +}; + +#endif diff --git a/GUI/TP5/src/mywidget.h b/GUI/TP5/src/mywidget.h new file mode 100755 index 0000000..8768a0e --- /dev/null +++ b/GUI/TP5/src/mywidget.h @@ -0,0 +1,22 @@ +/** + * #(@)mywidget.h ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/* + * @version 0.0.1 + * + * @done - + * + * @todo - + */ + diff --git a/GUI/TP5/src/src.pro b/GUI/TP5/src/src.pro new file mode 100755 index 0000000..71bab29 --- /dev/null +++ b/GUI/TP5/src/src.pro @@ -0,0 +1,15 @@ +# File generated by kdevelop's qmake manager. +# ------------------------------------------- +# Subdir relative project main directory: ./src +# Target is an application: ../bin/tp5 + +FORMS += facture.ui +HEADERS += facturemodel.h \ + factureimpl.h \ + factureview.h \ + mywidget.h +SOURCES += tp5.cpp \ + facturemodel.cpp \ + factureimpl.cpp \ + factureview.cpp +TARGET=../bin/tp5 diff --git a/GUI/TP5/src/tp5.cpp b/GUI/TP5/src/tp5.cpp new file mode 100755 index 0000000..eee1706 --- /dev/null +++ b/GUI/TP5/src/tp5.cpp @@ -0,0 +1,33 @@ +/** + * #(@)tp5.cpp ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/* + * @version 0.0.1 + * + * @done - + * + * @todo - + */ + +#include +#include "factureimpl.h" + +int main(int argc, char ** argv) { + QApplication a(argc, argv); + FactureImpl w; + w.show(); + a.connect(&a, SIGNAL(lastWindowClosed()), &a, SLOT(quit())); + return a.exec(); +} + diff --git a/GUI/TP5/templates/cpp b/GUI/TP5/templates/cpp new file mode 100755 index 0000000..ad93e2d --- /dev/null +++ b/GUI/TP5/templates/cpp @@ -0,0 +1,22 @@ +/** + * #(@)nomfichier.cpp ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/* + * @version 0.0.1 + * + * @done - + * + * @todo - + */ + diff --git a/GUI/TP5/templates/h b/GUI/TP5/templates/h new file mode 100755 index 0000000..0813a2d --- /dev/null +++ b/GUI/TP5/templates/h @@ -0,0 +1,22 @@ +/** + * #(@)nomfichier.h ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/* + * @version 0.0.1 + * + * @done - + * + * @todo - + */ + diff --git a/GUI/TP5/tp5.kdevelop b/GUI/TP5/tp5.kdevelop new file mode 100755 index 0000000..9b9014c --- /dev/null +++ b/GUI/TP5/tp5.kdevelop @@ -0,0 +1,142 @@ + + + + Nicolas MASSÉ + nicolas27.masse@laposte.net + 0.1 + KDevTrollProject + C++ + + Qt + + kdevsubversion + + + + + + + + + false + false + + + *.o,*.lo,CVS + false + false + + + + + ada + ada_bugs_gcc + bash + bash_bugs + clanlib + w3c-dom-level2-html + fortran_bugs_gcc + gnome1 + gnustep + gtk + gtk_bugs + haskell + haskell_bugs_ghc + java_bugs_gcc + java_bugs_sun + kde2book + opengl + pascal_bugs_fp + php + php_bugs + perl + perl_bugs + python + python_bugs + ruby + ruby_bugs + sdl + stl + w3c-svg + sw + w3c-uaag10 + wxwidgets_bugs + + + KDE Libraries (Doxygen) + + + + + + + + + + ./bin/tp5 + + executable + + + src + + + + + + + + + + + + + + + + Doxygen Documentation Collection + tp5.tag + + + + tp5 + tp5 + Tp5 + TP5 + Nicolas MASSÉ + nicolas27.masse@laposte.net + GPL + COPYING + 0.1 + 2006 + /home/users/nicolas/svn_mirror/poubi64.nmasse.homeip.net/studies/ENSI_2ndY/GUI/tp5 + + + + + true + true + true + false + true + true + true + 250 + 400 + 250 + + + + set + m_,_ + theValue + false + false + + + + + + + + diff --git a/GUI/TP5/tp5.pro b/GUI/TP5/tp5.pro new file mode 100755 index 0000000..8feb4aa --- /dev/null +++ b/GUI/TP5/tp5.pro @@ -0,0 +1,2 @@ +TEMPLATE=subdirs +SUBDIRS=src diff --git a/IntelligentSystem/TP1/examples/banque.txt b/IntelligentSystem/TP1/examples/banque.txt new file mode 100755 index 0000000..bc15595 --- /dev/null +++ b/IntelligentSystem/TP1/examples/banque.txt @@ -0,0 +1,11 @@ +(revenu proprietaire endettement avis-pret) +((bas non important non) + (moyen non important non) + (eleve non important non) + (eleve non faible non) + (bas non faible non) + (moyen non faible non) + (bas oui important non) + (moyen oui important non) + (eleve oui important oui) + (moyen oui faible oui)) diff --git a/IntelligentSystem/TP1/examples/carte-credit.txt b/IntelligentSystem/TP1/examples/carte-credit.txt new file mode 100755 index 0000000..721b512 --- /dev/null +++ b/IntelligentSystem/TP1/examples/carte-credit.txt @@ -0,0 +1,18 @@ +(revenu promo-magazine promo-affiche assurance-vie sexe age assurance-carte-credit) + +((eleve Oui Non Non Homme age-moyen Non) +(moyen Oui Oui Oui Femme age-moyen Non) +(eleve Non Non Non Homme age-moyen Non) +(moyen Oui Oui Oui Homme age-moyen Oui) +(tres-eleve Oui Non Oui Femme assez-jeune Non) +(bas Non Non Non Femme age-mur Non) +(moyen Oui Non Oui Homme assez-jeune Oui) +(bas Non Oui Non Homme jeune Non) +(moyen Oui Non Non Homme age-moyen Non) +(moyen Oui Oui Oui Femme age-moyen Non) +(eleve Non Oui Oui Femme age-moyen Non) +(bas Non Oui Oui Homme jeune Non) +(tres-eleve Oui Oui Oui Femme assez-jeune Non) +(eleve Non Oui Non Homme age-mur Non) +(bas Non Non Oui Femme jeune Oui)) + diff --git a/IntelligentSystem/TP1/examples/meteo-tp.txt b/IntelligentSystem/TP1/examples/meteo-tp.txt new file mode 100755 index 0000000..7556cd9 --- /dev/null +++ b/IntelligentSystem/TP1/examples/meteo-tp.txt @@ -0,0 +1,15 @@ +(aspect-ciel temperature humidite venteux meteo) +((Ensoleille Chaude Forte Faux Desagreable) + (Ensoleille Chaude Forte Vrai Desagreable) + (Ensoleille Douce Forte Faux Desagreable) + (Ensoleille Douce Normale Vrai Agreable) + (Ensoleille Fraiche Normale Faux Agreable) + (Nuageux Chaude Forte Faux Agreable) + (Nuageux Chaude Normale Faux Agreable) + (Nuageux Douce Forte Vrai Agreable) + (Nuageux Fraiche Normale Vrai Agreable) + (Pluvieux Douce Forte Faux Agreable) + (Pluvieux Douce Forte Vrai Desagreable) + (Pluvieux Douce Normale Faux Agreable) + (Pluvieux Fraiche Normale Faux Agreable) + (Pluvieux Fraiche Normale Vrai Desagreable) ) \ No newline at end of file diff --git a/IntelligentSystem/TP1/main.lisp b/IntelligentSystem/TP1/main.lisp new file mode 100755 index 0000000..83b387f --- /dev/null +++ b/IntelligentSystem/TP1/main.lisp @@ -0,0 +1,170 @@ +;;;; +;;;; main.lisp ENSICAEN 2006-02-01 +;;;; +;;;; @author MASSE Nicolas (2005-Groupe4-LIMIN) +;;;; @author LIMIN Thomas (2005-Groupe4-MASSE) +;;;; +;;;; ENSICAEN +;;;; 6 Boulevard Marechal Juin +;;;; F-14050 Caen Cedex +;;;; +;;;; Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre +;;;; reproduit, utilise ou modifie sans l'avis express de ses auteurs. + + +;;; +;;; Main program +;;; + +;; Load package definitions +(load "packages.lisp") + +;; Load MOP stuff +(load "meta/main.lisp") + +;; Load decision tree stuff +(load "tree/main.lisp") + + +;; Imports package +(use-package :net.homeip.nmasse.lisp.tp1.tree) + + + +;;; +;;; Decision trees +;;; + + + +;; +;; Example database "METEO-TP" +;; +(let ((weather-db nil) + (weather-tree nil) + (q1 nil) + (q2 nil)) + + (format t ">>> Example database : METEO-TP~%~%") + (setq weather-db + (load-examples 'meteo-tp "examples/meteo-tp.txt")) + (print weather-db) + + (format t ">>> Decision tree : METEO-TP~%~%") + (setq weather-tree + (build-tree weather-db)) + (print weather-tree) + (format t "~%~%>>> End of decision tree : METEO-TP~%~%") + + (format t ">>> Queries : METEO-TP~%~%") + (setq q1 + '((aspect-ciel "PLUVIEUX") (venteux "VRAI"))) + (setq q2 + '((aspect-ciel "NUAGEUX"))) + + (loop for q + in (list q1 q2) + do (format t ">>> The query : ~s returned : ~s~%" + q + (decide weather-tree q))) + + (format t "~%>>> End of queries : METEO-TP~%~%")) + + + + + +;; +;; Example database "CARD" +;; +(let ((card-db nil) + (card-tree nil)) + + (format t ">>> Example database : CREDIT-CARD~%") + (setq card-db + (load-examples 'credit-card "examples/carte-credit.txt")) + (print card-db) + + (format t "~%>>> Decision tree : CREDIT-CARD~%~%") + (setq card-tree + (build-tree card-db)) + (print card-tree) + (format t "~%~%>>> End of decision tree : CREDIT-CARD~%~%")) + + +;; +;; Example database "BANK" +;; +(let ((bank-db nil) + (bank-tree nil)) + + (format t ">>> Example database : BANK~%") + (setq bank-db + (load-examples 'bank "examples/banque.txt")) + (print bank-db) + + (format t "~%>>> Decision tree : BANK~%~%") + (setq bank-tree + (build-tree bank-db)) + (print bank-tree) + (format t "~%~%>>> End of decision tree : BANK~%~%")) + + + +;;; +;;; Arbre de decision "Voyage" +;;; +(let ((arbre nil) + (client1 nil) + (client2 nil) + (client3 nil) + (client4 nil) + (client5 nil) + (client6 nil)) + + (setq arbre '(preference + ((equal :val-att "sport") (Alpes)) + ((equal :val-att "detente") + (budget ((< :val-att 10000) (Espagne)) + ((and (>= :val-att 10000) + (<= :val-att 20000)) (Antilles)) + (( > :val-att 20000) (Seychelles)))) + ((equal :val-att "culture") + (age ((<= :val-att 30)(Mexique)) + ((> :val-att 30) (Egypte)))))) + + + ; un client pour les Alpes + (setq client1 + '((age 25) (preference "sport"))) + + ; un client pour l'Espagne + (setq client2 + '((age 35) (preference "detente") (budget 9000))) + + ; un client pour les Antilles + (setq client3 + '((age 35) (preference "detente") (budget 20000))) + + ; un client pour les Seychelles + (setq client4 + '((age 35) (preference "detente") (budget 20001))) + + ; un client pour le Mexique + (setq client5 + '((age 23) (preference "culture") (budget 9000))) + + ; un client pour l'Egypte + (setq client6 + '((age 42) (preference "culture") (budget 9000))) + + (loop for client + in (list client1 client2 client3 client4 client5 client6) + do (format t + ">>> Le client dont les preferences sont : ~%~s~%>>> decide d'aller a :~%~s~%~%" + client + (decide arbre client))) + + +) + diff --git a/IntelligentSystem/TP1/meta/classes.lisp b/IntelligentSystem/TP1/meta/classes.lisp new file mode 100755 index 0000000..db34b10 --- /dev/null +++ b/IntelligentSystem/TP1/meta/classes.lisp @@ -0,0 +1,72 @@ +;;;; +;;;; classes.lisp ENSICAEN 2006-02-01 +;;;; +;;;; @author MASSE Nicolas (2005-Groupe4-LIMIN) +;;;; @author LIMIN Thomas (2005-Groupe4-MASSE) +;;;; +;;;; ENSICAEN +;;;; 6 Boulevard Marechal Juin +;;;; F-14050 Caen Cedex +;;;; +;;;; Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre +;;;; reproduit, utilise ou modifie sans l'avis express de ses auteurs. + + +;;;; +;;;; Package definition +;;;; + +(in-package :net.homeip.nmasse.lisp.tp1.meta) + + +;;;; +;;;; Classes definition +;;;; + + +;;; +;;; This slot meta-object implements a reflex in order to keep a set of +;;; all the values of this slot +;;; +(defclass generic-example-direct-slot-definition + (clos:standard-direct-slot-definition) + () + (:documentation "This slot meta-object implements a reflex in order to + keep a set of all the values of this slot") +) + +;;; +;;; This is a class metaobject, it allows reflexes when creating and +;;; initializing the slots of its objects. +;;; +(defclass generic-example-class (standard-class) + ((attributes + :reader read-attributes + :writer write-attributes + :initform nil + :documentation "A map of attribute's names with a set + of their values") + (class-attribute + :reader read-class-attribute + :writer write-class-attribute + :initform nil + :documentation "The name of the attribute which holds the decision.") + (att-names + :reader attribute-names + :writer write-attribute-names + :initform nil + :documentation "The list of all the attribute names.")) + (:documentation "This is a metaclass object.")) + +;;; +;;; Base class of all examples, its purpose is mainly type checking. +;;; +(defclass generic-example () + () + (:documentation "")) + + + + + + diff --git a/IntelligentSystem/TP1/meta/generic-example.lisp b/IntelligentSystem/TP1/meta/generic-example.lisp new file mode 100755 index 0000000..d49ec8c --- /dev/null +++ b/IntelligentSystem/TP1/meta/generic-example.lisp @@ -0,0 +1,160 @@ +;;;; +;;;; generic-example.lisp ENSICAEN 2006-02-01 +;;;; +;;;; @author MASSE Nicolas (2005-Groupe4-LIMIN) +;;;; @author LIMIN Thomas (2005-Groupe4-MASSE) +;;;; +;;;; ENSICAEN +;;;; 6 Boulevard Marechal Juin +;;;; F-14050 Caen Cedex +;;;; +;;;; Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre +;;;; reproduit, utilise ou modifie sans l'avis express de ses auteurs. + + +;;;; +;;;; Package definition +;;;; + +(in-package :net.homeip.nmasse.lisp.tp1.meta) + + + +;;;; +;;;; Exported methods +;;;; + + +;;; +;;; Constructs a new class which represents a specific example. +;;; +(defmethod build-class (name attributes) + (let ((class nil)) + + (setq class + (clos:ensure-class name + ':direct-superclasses '(generic-example) + ':direct-slots (mapcar #'build-slot-definition + attributes) + ':metaclass 'generic-example-class)) + + ;; Sets the attributes list + (write-attribute-names attributes class) + + ;; Sets the class attribute + (write-class-attribute (car (last attributes)) class) + class)) + +;;; +;;; Constructs a new example. +;;; +(defmethod build-example (classname example attributes) + (apply 'make-instance + (cons classname (mapcan + #'(lambda (att val) + (list + (intern (format nil "ATTRIBUTE-~s" att) + "KEYWORD") + val)) + attributes + example)))) + +;;; +;;; Returns the value of the requested attribute. +;;; +(defmethod read-attribute ((name symbol) + (oself generic-example)) + + (loop for slot in (clos:class-direct-slots (class-of oself)) + if (eql (clos:slot-definition-name slot) name) + return (apply (car (clos:slot-definition-readers slot)) + (list oself)))) + +;;; +;;; Returns a set of the values of the requested attribute. +;;; +(defmethod values-of-attribute ((name symbol) + (class generic-example-class)) + (second + (assoc name (read-attributes class)))) + + + +;;;; +;;;; Intern methods +;;;; + + +;;; +;;; This method is part of a reflex, it keeps up to date a set of all the +;;; values of each attribute. +;;; +;;; attribute: the attribute name +;;; value: the value of this attribute +;;; class: the class meta-object of this example +;;; +;;; returns: nothing interesting +;;; +(defmethod new-example ((attribute symbol) + value + (class generic-example-class)) + + (let* ((attributes + (read-attributes class)) + (values + (second (assoc attribute attributes)))) + + (if values + (if (not (member value values)) + (setf (second (assoc attribute attributes)) (cons value values))) + (write-attributes (cons + (cons attribute + (list (list value))) + attributes) + class)))) + +;;; +;;; This method is called when a new value is affected to a slot +;;; +(defmethod (setf clos:slot-value-using-class) :around + (newvalue (class generic-example-class) object slot) + + ;; reflex + (new-example (clos:slot-definition-name slot) newvalue class) + (call-next-method)) + + +;;; +;;; Establishes the class used to represent the slots +;;; of a "generic-example-class" class. +;;; +(defmethod clos:direct-slot-definition-class :around + ((instance generic-example-class) &rest other-args) + + ;; a generic-example-direct-slot-definition is used for direct-slots + (find-class 'generic-example-direct-slot-definition)) + +;;; +;;; Builds a slot definition using its name. +;;; +(defmethod build-slot-definition (name) + (list + ':name name + ':type 'symbol + ;; Upper chars are important + ':readers (list + (make-symbol (format nil "READ-ATTRIBUTE-~s" name))) + ':initargs (list + (intern (format nil "ATTRIBUTE-~s" name) "KEYWORD")))) + +;;; +;;; Prints a generic-example on a stream. +;;; +(defmethod print-object :around ((oself generic-example) fd) + (format fd "[Example ~s: " (class-name (class-of oself))) + (loop for slot in (clos:class-direct-slots (class-of oself)) do + (format fd "~s " + (apply (car (clos:slot-definition-readers slot)) + (list oself)))) + (format fd "]")) + diff --git a/IntelligentSystem/TP1/meta/main.lisp b/IntelligentSystem/TP1/meta/main.lisp new file mode 100755 index 0000000..9e8f49e --- /dev/null +++ b/IntelligentSystem/TP1/meta/main.lisp @@ -0,0 +1,16 @@ +;;;; +;;;; main.lisp ENSICAEN 2006-02-01 +;;;; +;;;; @author MASSE Nicolas (2005-Groupe4-LIMIN) +;;;; @author LIMIN Thomas (2005-Groupe4-MASSE) +;;;; +;;;; ENSICAEN +;;;; 6 Boulevard Marechal Juin +;;;; F-14050 Caen Cedex +;;;; +;;;; Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre +;;;; reproduit, utilise ou modifie sans l'avis express de ses auteurs. + +(load "meta/classes.lisp") +(load "meta/generic-example.lisp") + diff --git a/IntelligentSystem/TP1/packages.lisp b/IntelligentSystem/TP1/packages.lisp new file mode 100755 index 0000000..6235b62 --- /dev/null +++ b/IntelligentSystem/TP1/packages.lisp @@ -0,0 +1,36 @@ +;;;; +;;;; packages.lisp ENSICAEN 2006-02-01 +;;;; +;;;; @author MASSE Nicolas (2005-Groupe4-LIMIN) +;;;; @author LIMIN Thomas (2005-Groupe4-MASSE) +;;;; +;;;; ENSICAEN +;;;; 6 Boulevard Marechal Juin +;;;; F-14050 Caen Cedex +;;;; +;;;; Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre +;;;; reproduit, utilise ou modifie sans l'avis express de ses auteurs. + + +;;; +;;; Packages definitions +;;; + +(defpackage :net.homeip.nmasse.lisp.tp1.meta + (:use :common-lisp) + (:export :build-class + :build-example + :read-attribute + :generic-example + :values-of-attribute + :write-class-attribute + :read-class-attribute + :attribute-names)) + +(defpackage :net.homeip.nmasse.lisp.tp1.tree + (:use :common-lisp + :net.homeip.nmasse.lisp.tp1.meta) + (:export :load-examples + :build-tree + :decide)) + diff --git a/IntelligentSystem/TP1/trace.txt b/IntelligentSystem/TP1/trace.txt new file mode 100755 index 0000000..a4b5ba4 --- /dev/null +++ b/IntelligentSystem/TP1/trace.txt @@ -0,0 +1,187 @@ +>>> Example database : METEO-TP + + +[Example METEO-TP: PLUVIEUX FRAICHE NORMALE VRAI DESAGREABLE ] +[Example METEO-TP: PLUVIEUX FRAICHE NORMALE FAUX AGREABLE ] +[Example METEO-TP: PLUVIEUX DOUCE NORMALE FAUX AGREABLE ] +[Example METEO-TP: PLUVIEUX DOUCE FORTE VRAI DESAGREABLE ] +[Example METEO-TP: PLUVIEUX DOUCE FORTE FAUX AGREABLE ] +[Example METEO-TP: NUAGEUX FRAICHE NORMALE VRAI AGREABLE ] +[Example METEO-TP: NUAGEUX DOUCE FORTE VRAI AGREABLE ] +[Example METEO-TP: NUAGEUX CHAUDE NORMALE FAUX AGREABLE ] +[Example METEO-TP: NUAGEUX CHAUDE FORTE FAUX AGREABLE ] +[Example METEO-TP: ENSOLEILLE FRAICHE NORMALE FAUX AGREABLE ] +[Example METEO-TP: ENSOLEILLE DOUCE NORMALE VRAI AGREABLE ] +[Example METEO-TP: ENSOLEILLE DOUCE FORTE FAUX DESAGREABLE ] +[Example METEO-TP: ENSOLEILLE CHAUDE FORTE VRAI DESAGREABLE ] +[Example METEO-TP: ENSOLEILLE CHAUDE FORTE FAUX DESAGREABLE ] + >>> Decision tree : METEO-TP + + + + + + + + + + + + + + + + + +(ASPECT-CIEL + ((EQUAL :VAL-ATT "PLUVIEUX") + (VENTEUX ((EQUAL :VAL-ATT "VRAI") (DESAGREABLE)) + ((EQUAL :VAL-ATT "FAUX") (AGREABLE)))) + ((EQUAL :VAL-ATT "NUAGEUX") (AGREABLE)) + ((EQUAL :VAL-ATT "ENSOLEILLE") + (HUMIDITE ((EQUAL :VAL-ATT "NORMALE") (AGREABLE)) + ((EQUAL :VAL-ATT "FORTE") (DESAGREABLE))))) + +>>> End of decision tree : METEO-TP + +>>> Queries : METEO-TP + +>>> The query : ((ASPECT-CIEL "PLUVIEUX") (VENTEUX "VRAI")) returned : DESAGREABLE +>>> The query : ((ASPECT-CIEL "NUAGEUX")) returned : AGREABLE + +>>> End of queries : METEO-TP + +>>> Example database : CREDIT-CARD + +[Example CREDIT-CARD: BAS NON NON OUI FEMME JEUNE OUI ] +[Example CREDIT-CARD: ELEVE NON OUI NON HOMME AGE-MUR NON ] +[Example CREDIT-CARD: TRES-ELEVE OUI OUI OUI FEMME ASSEZ-JEUNE NON ] +[Example CREDIT-CARD: BAS NON OUI OUI HOMME JEUNE NON ] +[Example CREDIT-CARD: ELEVE NON OUI OUI FEMME AGE-MOYEN NON ] +[Example CREDIT-CARD: MOYEN OUI OUI OUI FEMME AGE-MOYEN NON ] +[Example CREDIT-CARD: MOYEN OUI NON NON HOMME AGE-MOYEN NON ] +[Example CREDIT-CARD: BAS NON OUI NON HOMME JEUNE NON ] +[Example CREDIT-CARD: MOYEN OUI NON OUI HOMME ASSEZ-JEUNE OUI ] +[Example CREDIT-CARD: BAS NON NON NON FEMME AGE-MUR NON ] +[Example CREDIT-CARD: TRES-ELEVE OUI NON OUI FEMME ASSEZ-JEUNE NON ] +[Example CREDIT-CARD: MOYEN OUI OUI OUI HOMME AGE-MOYEN OUI ] +[Example CREDIT-CARD: ELEVE NON NON NON HOMME AGE-MOYEN NON ] +[Example CREDIT-CARD: MOYEN OUI OUI OUI FEMME AGE-MOYEN NON ] +[Example CREDIT-CARD: ELEVE OUI NON NON HOMME AGE-MOYEN NON ] + +>>> Decision tree : CREDIT-CARD + + + + + + + + + + + + + + + + + + + + + + + + + + + +(REVENU + ((EQUAL :VAL-ATT "BAS") + (PROMO-AFFICHE ((EQUAL :VAL-ATT "OUI") (NON)) + ((EQUAL :VAL-ATT "NON") + (ASSURANCE-VIE ((EQUAL :VAL-ATT "OUI") (OUI)) + ((EQUAL :VAL-ATT "NON") (NON)))))) + ((EQUAL :VAL-ATT "TRES-ELEVE") (NON)) + ((EQUAL :VAL-ATT "MOYEN") + (SEXE ((EQUAL :VAL-ATT "FEMME") (NON)) + ((EQUAL :VAL-ATT "HOMME") + (ASSURANCE-VIE ((EQUAL :VAL-ATT "OUI") (OUI)) + ((EQUAL :VAL-ATT "NON") (NON)))))) + ((EQUAL :VAL-ATT "ELEVE") (NON))) + +>>> End of decision tree : CREDIT-CARD + +>>> Example database : BANK + +[Example BANK: MOYEN OUI FAIBLE OUI ] +[Example BANK: ELEVE OUI IMPORTANT OUI ] +[Example BANK: MOYEN OUI IMPORTANT NON ] +[Example BANK: BAS OUI IMPORTANT NON ] +[Example BANK: MOYEN NON FAIBLE NON ] +[Example BANK: BAS NON FAIBLE NON ] +[Example BANK: ELEVE NON FAIBLE NON ] +[Example BANK: ELEVE NON IMPORTANT NON ] +[Example BANK: MOYEN NON IMPORTANT NON ] +[Example BANK: BAS NON IMPORTANT NON ] + +>>> Decision tree : BANK + + + + + + + + + + + + + + + + + +(PROPRIETAIRE + ((EQUAL :VAL-ATT "OUI") + (REVENU ((EQUAL :VAL-ATT "ELEVE") (OUI)) + ((EQUAL :VAL-ATT "MOYEN") + (ENDETTEMENT ((EQUAL :VAL-ATT "FAIBLE") (OUI)) + ((EQUAL :VAL-ATT "IMPORTANT") (NON)))) + ((EQUAL :VAL-ATT "BAS") (NON)))) + ((EQUAL :VAL-ATT "NON") (NON))) + +>>> End of decision tree : BANK + +>>> Le client dont les preferences sont : +((AGE 25) (PREFERENCE "sport")) +>>> decide d'aller a : +ALPES + +>>> Le client dont les preferences sont : +((AGE 35) (PREFERENCE "detente") (BUDGET 9000)) +>>> decide d'aller a : +ESPAGNE + +>>> Le client dont les preferences sont : +((AGE 35) (PREFERENCE "detente") (BUDGET 20000)) +>>> decide d'aller a : +ANTILLES + +>>> Le client dont les preferences sont : +((AGE 35) (PREFERENCE "detente") (BUDGET 20001)) +>>> decide d'aller a : +SEYCHELLES + +>>> Le client dont les preferences sont : +((AGE 23) (PREFERENCE "culture") (BUDGET 9000)) +>>> decide d'aller a : +MEXIQUE + +>>> Le client dont les preferences sont : +((AGE 42) (PREFERENCE "culture") (BUDGET 9000)) +>>> decide d'aller a : +EGYPTE + diff --git a/IntelligentSystem/TP1/tree/classes.lisp b/IntelligentSystem/TP1/tree/classes.lisp new file mode 100755 index 0000000..35efd00 --- /dev/null +++ b/IntelligentSystem/TP1/tree/classes.lisp @@ -0,0 +1,40 @@ +;;;; +;;;; classes.lisp ENSICAEN 2006-02-01 +;;;; +;;;; @author MASSE Nicolas (2005-Groupe4-LIMIN) +;;;; @author LIMIN Thomas (2005-Groupe4-MASSE) +;;;; +;;;; ENSICAEN +;;;; 6 Boulevard Marechal Juin +;;;; F-14050 Caen Cedex +;;;; +;;;; Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre +;;;; reproduit, utilise ou modifie sans l'avis express de ses auteurs. + + +;;;; +;;;; Packages definitions +;;;; + +(in-package :net.homeip.nmasse.lisp.tp1.tree) + +;;;; +;;;; Class definitions +;;;; + +(defclass example-set () + ((examples + :type list + :initform nil + :reader read-examples + :writer write-examples + :initarg :examples + :documentation "A set of examples.") + (class + :initform nil + :reader read-class + :initarg :class + :documentation "The class metaobject of the examples.")) + (:documentation "Represents a set of examples.")) + + diff --git a/IntelligentSystem/TP1/tree/decision-tree-builder.lisp b/IntelligentSystem/TP1/tree/decision-tree-builder.lisp new file mode 100755 index 0000000..c05e2a1 --- /dev/null +++ b/IntelligentSystem/TP1/tree/decision-tree-builder.lisp @@ -0,0 +1,209 @@ +;;;; +;;;; decision-tree-builder.lisp ENSICAEN 2006-02-01 +;;;; +;;;; @author MASSE Nicolas (2005-Groupe4-LIMIN) +;;;; @author LIMIN Thomas (2005-Groupe4-MASSE) +;;;; +;;;; ENSICAEN +;;;; 6 Boulevard Marechal Juin +;;;; F-14050 Caen Cedex +;;;; +;;;; Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre +;;;; reproduit, utilise ou modifie sans l'avis express de ses auteurs. + +;;;; +;;;; Packages definitions +;;;; + +(in-package :net.homeip.nmasse.lisp.tp1.tree) + +;;;; +;;;; Exported methods +;;;; + +;;; +;;; Loads an examples' database +;;; +(defun load-examples (classname filename) + (with-open-file (fd filename :direction :input) + (let ((attributes + (read fd)) + (examples + (read fd)) + (example-set + nil)) + + ;; Makes a new class + (setq example-set (make-instance 'example-set + :class (build-class classname attributes))) + + ;; Builds examples + (loop for ex in examples do + (add-example (build-example classname ex attributes) + example-set)) + + example-set))) + + +;;; +;;; Builds the decision tree. +;;; +(defmethod build-tree ((examples example-set)) + (build examples (remove (read-class-attribute (read-class examples)) + (attribute-names (read-class examples))))) + + +;;;; +;;;; Hidden methods +;;;; + +;;; +;;; Compute the logarithm in base 2 +;;; +(defun xlog2 (x) + (if (eql x 0) + 0 + (* x + (/ (log x) + (log 2))))) + +;;; +;;; Computes the entropy of a set of examples distributed in +;;; N1, N2 ... examples of each class. +;;; +;;; nb-total: number of examples. +;;; l-repartition: the distribution of the examples in each class +;;; returns: the entropy of the set. +;;; +(defun compute-entropy ((nb-total integer) + (l-repartition list)) + (cond + ((null l-repartition) 0) + ((= 0 nb-total) 1) + (t (+ (- (xlog2 (/ (car l-repartition) + nb-total))) + (compute-entropy nb-total + (cdr l-repartition)))))) + +;;; +;;; Computes the entropy of a list of examples. +;;; +;;; examples: the list of examples +;;; returns: the entropy of the set (between 0 et 1) +;;; +(defun entropy ((examples example-set)) + (if (consp (read-examples examples)) + (compute-entropy + (length (read-examples examples)) + (repartition (read-class-attribute (read-class examples)) examples)) + 0)) + +;;; +;;; Cuts the examples' set on the values of the specified attribute. +;;; +;;; exemples: the example-set +;;; attribute: the attribute on which we cut +;;; returns: a list of sets +;;; +(defun cut ((examples example-set) + (attribute symbol)) + + (loop for val + in (values-of-attribute attribute + (read-class examples)) + collect (let ((tmp + (make-instance 'example-set + :class (read-class examples)))) + + (loop for ex + in (read-examples examples) + do (if (eq val (read-attribute attribute ex)) + (add-example ex tmp))) + tmp))) + + + +;;; +;;; Cuts the examples' set on the values of the specified attribute, +;;; and computes the entropy of the resulting sets. +;;; +;;; exemples: the example-set +;;; attribute: the attribute on which we cut +;;; returns: a list of sets +;;; +(defun entropy-after-cut ((examples example-set) + (attribute symbol)) + + (let ((repartition nil) + (nb-examples 0)) + + (setq nb-examples + (length (read-examples examples))) + + (setq repartition + (loop for a-set + in (cut examples attribute) + collect (repartition (read-class-attribute (read-class a-set)) + a-set))) + + (loop for p + in repartition + sum (* (/ (apply '+ p) + nb-examples) + (apply 'compute-entropy + (cons (apply '+ p) (list p))))))) + +;;; +;;; Builds the decision tree +;;; +(defun build ((examples example-set) + (l-natt list)) + (cond + ; If the entropy is 0, then it's a leaf + ((= 0 (entropy examples)) + (format t "~%" + (read-attribute (read-class-attribute (read-class examples)) + (car (read-examples examples)))) + (list (read-attribute (read-class-attribute (read-class examples)) + (car (read-examples examples))))) + (t + (let ((attMin nil) + (mini 1)) + + (loop for cut + in l-natt + do (let ((entropy nil)) + (setq entropy + (entropy-after-cut examples cut)) + (if (> mini entropy) + (progn + (setq attMin cut) + (setq mini entropy))))) + (let ((tree nil)) + ; Attribute + (format t "~%" + attMin + mini) + (setq tree + (cons attMin + (loop for i + in (cut examples attMin) + collect (progn + (format t "~%" + (read-attribute attMin (car (read-examples i)))) + (list (list 'equal + :val-att + (string (read-attribute attMin (car (read-examples i))))) + (build i (remove attMin l-natt))))))) + tree))))) + +;;; +;;; Saves the tree in a file. +;;; +(defun save-tree ((tree list) + (file string)) + + (with-open-file (fd file :direction :output) + (format fd "~s" tree))) + + diff --git a/IntelligentSystem/TP1/tree/decision-tree.lisp b/IntelligentSystem/TP1/tree/decision-tree.lisp new file mode 100755 index 0000000..54e886f --- /dev/null +++ b/IntelligentSystem/TP1/tree/decision-tree.lisp @@ -0,0 +1,77 @@ +;;;; +;;;; decision-tree.lisp ENSICAEN 2006-02-01 +;;;; +;;;; @author MASSE Nicolas (2005-Groupe4-LIMIN) +;;;; @author LIMIN Thomas (2005-Groupe4-MASSE) +;;;; +;;;; ENSICAEN +;;;; 6 Boulevard Marechal Juin +;;;; F-14050 Caen Cedex +;;;; +;;;; Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre +;;;; reproduit, utilise ou modifie sans l'avis express de ses auteurs. + +;;;; +;;;; Packages definitions +;;;; + +(in-package :net.homeip.nmasse.lisp.tp1.tree) + +;;;; +;;;; Exported methods +;;;; + +;;; +;;; Retourne la meilleure destination pour un client +;;; suivant un arbre de décision donné +;;; +(defmethod decide (arbre client) + (if (null (cdr arbre)) + ;; si la liste ne contient qu'un élement, alors une feuille est atteinte + ;; et la destination toute trouvée => on retourne cette destination + (car arbre) + ;; sinon on lance l'évaluation du test d'un critère sur la liste des + ;; valeurs possibles pour ce critère + (evalueCritere (cdr arbre) client (car arbre)))) + + +;;;; +;;;; Hidden methods +;;;; + +;;; +;;; Pour un critère donné, evalue les clauses +;;; lorsque qu'une clause est vérifiée, la fonction decide +;;; est appelée su rle sous arbre correspondant +;;; +(defmethod evalueCritere (clauses client attribut) + (cond + ; si il ne reste plus de clauses, ben souci... + ((null clauses) + (print "Souci, aucune possibilité ne correspond au client")) + ; on evalue la première clause après substitution de la variable par la + ; valeur fournie par le client, si elle est vraie on prend une décision + ; sur le sous arbre + ((eval (subst (trouveAttribut attribut client) :val-att (caar clauses) )) + (decide (cadar clauses) client)) + (t + (evalueCritere (cdr clauses) client attribut)))) + + +;;; +;;; Trouve pour un critère donné la valeur correspondant au client +;;; +(defmethod trouveAttribut (n l) + (cond + ; si la liste est vide => echec de la recherche, retourne nil + ((null l) + nil) + ; on teste le premier element (nom attribut) du premier + ; couple nom / att de la liste + ((eq (caar l) n) + (cadar l)) + ; si le premier couple de la liste n'est pas le bon, on relance + ; récursivement trouveAttribut sur le reste de la liste + (t + (trouveAttribut n (cdr l))))) + diff --git a/IntelligentSystem/TP1/tree/example-set.lisp b/IntelligentSystem/TP1/tree/example-set.lisp new file mode 100755 index 0000000..9d2fb50 --- /dev/null +++ b/IntelligentSystem/TP1/tree/example-set.lisp @@ -0,0 +1,52 @@ +;;;; +;;;; example-set.lisp ENSICAEN 2006-02-01 +;;;; +;;;; @author MASSE Nicolas (2005-Groupe4-LIMIN) +;;;; @author LIMIN Thomas (2005-Groupe4-MASSE) +;;;; +;;;; ENSICAEN +;;;; 6 Boulevard Marechal Juin +;;;; F-14050 Caen Cedex +;;;; +;;;; Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre +;;;; reproduit, utilise ou modifie sans l'avis express de ses auteurs. + + +;;;; +;;;; Packages definitions +;;;; + +(in-package :net.homeip.nmasse.lisp.tp1.tree) + +;;; +;;; Adds an example to this example-set. +;;; +(defmethod add-example ((example generic-example) + (oself example-set)) + + (write-examples + (cons example (read-examples oself)) + oself)) + +;;; +;;; Prints an example-set on the specified stream. +;;; +(defmethod print-object :around ((oself example-set) + fd) + (loop for ex in (read-examples oself) do + (format fd "~s~%" ex))) + +;;; +;;; Computes the repartition of the examples after +;;; a cut on the specified attribute +;;; +(defmethod repartition ((attribute symbol) + (oself example-set)) + (loop for value + in (values-of-attribute attribute + (read-class oself)) + collect (loop for ex + in (read-examples oself) + count (eql (read-attribute attribute ex) + value)))) + diff --git a/IntelligentSystem/TP1/tree/main.lisp b/IntelligentSystem/TP1/tree/main.lisp new file mode 100755 index 0000000..124577c --- /dev/null +++ b/IntelligentSystem/TP1/tree/main.lisp @@ -0,0 +1,18 @@ +;;;; +;;;; main.lisp ENSICAEN 2006-02-01 +;;;; +;;;; @author MASSE Nicolas (2005-Groupe4-LIMIN) +;;;; @author LIMIN Thomas (2005-Groupe4-MASSE) +;;;; +;;;; ENSICAEN +;;;; 6 Boulevard Marechal Juin +;;;; F-14050 Caen Cedex +;;;; +;;;; Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre +;;;; reproduit, utilise ou modifie sans l'avis express de ses auteurs. + +(load "tree/classes.lisp") +(load "tree/example-set.lisp") +(load "tree/decision-tree-builder.lisp") +(load "tree/decision-tree.lisp") + diff --git a/IntelligentSystem/TP2/bateaux_dico.lsp b/IntelligentSystem/TP2/bateaux_dico.lsp new file mode 100755 index 0000000..4898e8b --- /dev/null +++ b/IntelligentSystem/TP2/bateaux_dico.lsp @@ -0,0 +1,35 @@ +(bateau oui non) +(voiles oui non) +(sport oui non) +(voilier non non) +(plaisance oui non) +(est-habitable oui non) +(de-croisiere non non) +(se-porte non non) +(moteur oui non) +(bateau-a-moteur non non) +(voilier-mixte non non) +(timonerie oui non) +(lourd oui non) +(nombre-de-mats=1 oui non) +(un-mat oui non) +(deux-mats oui non) +(mat-d-artimon-inferieur-a-mat-d-avant oui non) +(goelette non oui) +(artimon-derriere-la-barre oui non) +(yawl non oui) +(ketch non oui) +(foc oui non) +(trinquette oui non) +(cotre non oui) +(sloop non oui) +(ventru oui non) +(large oui non) +(fifty non oui) +(quille oui non) +(quillard non oui) +(deux-coques oui non) +(catamaran non oui) +(trois-coques oui non) +(trimaran non oui) + diff --git a/IntelligentSystem/TP2/bateaux_faits.lsp b/IntelligentSystem/TP2/bateaux_faits.lsp new file mode 100755 index 0000000..2e176c1 --- /dev/null +++ b/IntelligentSystem/TP2/bateaux_faits.lsp @@ -0,0 +1,12 @@ +(bateau vrai) +(voiles vrai) +(de-croisiere vrai) +(nombre-de-mats=1 faux) +(moteur vrai) +(un-mat faux) +;(voilier) +;(mat-d-artimon-inferieur-a-mat-d-avant vrai) +;(trois-coques faux) +;(deux-coques vrai) +;(est-habitable vrai) +;(plaisance vrai) \ No newline at end of file diff --git a/IntelligentSystem/TP2/bateaux_regles b/IntelligentSystem/TP2/bateaux_regles new file mode 100755 index 0000000..1cdb828 --- /dev/null +++ b/IntelligentSystem/TP2/bateaux_regles @@ -0,0 +1,19 @@ +(si bateau et voiles et sport alors voilier) +(si bateau et plaisance et voiles alors voilier) +(si est-habitable alors de-croisiere et non se-porte) +(si bateau et moteur alors bateau-a-moteur) +(si voiles et bateau-a-moteur et de-croisiere alors voilier-mixte) +(si voilier et de-croisiere et timonerie et lourd alors voilier-mixte) +(si voilier et nombre-de-mats=1 alors un-mat) +(si voilier et non nombre-de-mats=1 alors deux-mats) +(si deux-mats et mat-d-artimon-inferieur-a-mat-d-avant alors non goelette) +(si deux-mats et non mat-d-artimon-inferieur-a-mat-d-avant alors goelette) +(si non goelette et artimon-derriere-la-barre alors yawl) +(si non goelette et non artimon-derriere-la-barre alors ketch) +(si un-mat et foc et trinquette alors cotre) +(si un-mat et foc et non trinquette alors sloop) +(si voilier-mixte et ventru et large alors fifty) +(si voilier et quille alors quillard) +(si voilier et deux-coques alors catamaran) +(si voilier et trois-coques alors trimaran) + diff --git a/IntelligentSystem/TP2/bateaux_regles.lsp b/IntelligentSystem/TP2/bateaux_regles.lsp new file mode 100755 index 0000000..f25fb61 --- /dev/null +++ b/IntelligentSystem/TP2/bateaux_regles.lsp @@ -0,0 +1,19 @@ +(R1 ((bateau) (voiles) (sport)) ((voilier))) +(R2 ((bateau) (plaisance) (voiles)) ((voilier))) +(R3 ((est-habitable)) ((de-croisiere) (non se-porte))) +(R4 ((bateau) (moteur)) ((bateau-a-moteur))) +(R5 ((voiles) (bateau-a-moteur) (de-croisiere)) ((voilier-mixte))) +(R6 ((voilier) (de-croisiere) (timonerie) (lourd)) ((voilier-mixte))) +(R7 ((voilier) (nombre-de-mats=1)) ((un-mat))) +(R8 ((voilier) (non nombre-de-mats=1)) ((deux-mats))) +(R9 ((deux-mats) (mat-d-artimon-inferieur-a-mat-d-avant)) ((non goelette))) +(R10 ((deux-mats) (non mat-d-artimon-inferieur-a-mat-d-avant)) ((goelette))) +(R11 ((non goelette) (artimon-derriere-la-barre)) ((yawl))) +(R12 ((non goelette) (non artimon-derriere-la-barre)) ((ketch))) +(R13 ((un-mat) (foc) (trinquette)) ((cotre))) +(R14 ((un-mat) (foc) (non trinquette)) ((sloop))) +(R15 ((voilier-mixte) (ventru) (large)) ((fifty))) +(R16 ((voilier) (quille)) ((quillard))) +(R17 ((voilier) (deux-coques)) ((catamaran))) +(R18 ((voilier) (trois-coques)) ((trimaran))) + diff --git a/IntelligentSystem/TP2/exemple_de_regles b/IntelligentSystem/TP2/exemple_de_regles new file mode 100755 index 0000000..9bbdd62 --- /dev/null +++ b/IntelligentSystem/TP2/exemple_de_regles @@ -0,0 +1,14 @@ +Construction d'une base de règle + +Tarification du transport + +si (age > 60 et retraite) alors carte-vermeil +si (nb-enfant > 5) alors reduction-famille-nombreuse +si (poids-chat < 10 et griffe-limée) alors chat-special +si (carte-vermeil et chat-special) alors chat-demi-tarif +si (age < 10 et ) alors gratuité +si (famille-nombreuse et periode-scolaire) alors reduction-vacances +si (age < 26 et age >= 10 et carte-jeune) alors tarif-bleu +si (tarif-bleu et trajet > 100) alors rafraichissement-offert + +etc... \ No newline at end of file diff --git a/IntelligentSystem/TP2/packages.lsp b/IntelligentSystem/TP2/packages.lsp new file mode 100755 index 0000000..9178a09 --- /dev/null +++ b/IntelligentSystem/TP2/packages.lsp @@ -0,0 +1,2 @@ +;; Définition du package utilisé pour le tp6 +(defpackage :tp6 (:use :common-lisp )) diff --git a/IntelligentSystem/TP2/se.lsp b/IntelligentSystem/TP2/se.lsp new file mode 100755 index 0000000..f684d76 --- /dev/null +++ b/IntelligentSystem/TP2/se.lsp @@ -0,0 +1,240 @@ +#| + | #(@)se.lisp ENSICAEN 2006-02-01 + | + | @author MASSE Nicolas (2005-Groupe4-LIMIN) + | @author LIMIN Thomas (2005-Groupe4-MASSE) + | + | ENSICAEN + | 6 Boulevard Marechal Juin + | F-14050 Caen Cedex + | + | Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + | reproduit, utilise ou modifie sans l'avis express de ses auteurs. + |# + +(in-package :tp6) + +(load "metaclos.lsp") + + +;;;; Définition de la classe attribut +(make-class attribut (unite) ( (demandable symbol ) (demande symbol) (but symbol ) (valeur)) "" ) + + +;;;; Crée une instance d'attribut à partir des données présentes dans la +;;;; liste lst : (nom-attribut, booléen est-demandable?, booléen est-un-but?) +(defun make-attribute-from-list (lst) + (make-instance 'attribut + :nom (car lst) + :demandable (cadr lst) + :but (caddr lst) + ) +) + + +;;;; Charge dans l'environnement tous les attributs présents dans le fichier +;;;; nommé filename. +(defun load-attributes-from-file (filename) + (let ((attribute nil)) + (with-open-file (fd filename :direction :input) + (setq attribute (read fd nil 'eof)) + (loop until (eq attribute 'eof) do + (make-attribute-from-list attribute) + (setq attribute (read fd nil 'eof)))))) + + +;;;; Définition de la classe règle +(make-class regle (unite) ( (declenchable symbol 'faux) (active symbol 'faux) (conditions list) (conclusions list)) "") + + +;;;; Crée une instance de règle à partir des données présentes dans la +;;;; liste lst : (nom-règle, liste-de-conditions, liste-de-conclusions) +(defun make-regle-from-list (lst) + (make-instance 'regle + :nom (car lst) + :conditions (cadr lst) + :conclusions (caddr lst))) + + +;;;; Charge dans l'environnement toute les règles présentes dans le fichier +;;;; nommé filename. +(defun load-regles-from-file (filename) + (let ((regle nil)) + (with-open-file (fd filename :direction :input) + (setq regle (read fd nil 'eof)) + (loop until (eq regle 'eof) do + (make-regle-from-list regle) + (setq regle (read fd nil 'eof)))))) + + +;;;; Associe un fait, c'est à dire une valeur connue d'un attribut à un +;;;; instant donné, a l'attribut correspondant => donne une valeur à un +;;;; attribut. +(defun set-attribut-avec-fait (lst) + (setf (valeur (l-objet (car lst))) + (cadr lst))) + + +;;;; Associe aux attributs correspondants les fait présents dans le +;;;; fichier nommé filename. +(defun load-faits-from-file (filename) + (let ((fait nil)) + (with-open-file (fd filename :direction :input) + (setq fait (read fd nil 'eof)) + (loop until (eq fait 'eof) do + (set-attribut-avec-fait fait) + (setq fait (read fd nil 'eof)))))) + + +;;;; Teste si la règle est déclenchable. C'est le cas si toute +;;;; les conditions de la règle sont vérifiées. +(defmethod regle-declenchablep ((oself regle)) + (if (not (eql (declenchable oself) 'vrai)) + (let + ((res t)) + (loop for x in (conditions oself) do + (setf res + (and (condition-verifp x) + res))) + (if res + (progn + (setf (declenchable oself) + 'vrai) + (format t "Règle ~a déclenchable~%" (nom oself)) + t) + (progn + (setf (declenchable oself) + 'faux) + nil))) + (not (eql 'vrai (active oself))))) + + +;;;; Vérifie si une condition est réalisée. C'est le cas lorsque l'attribut +;;;; cité dans la condition est valué et que sa valeur entraine la réalisation +;;;; de la condition. +(defun condition-verifp (condition) + (if (eql 'non (car condition)) + ; regle négative + (if (eql 'faux (valeur (l-objet (cadr condition)))) + t + nil) + ; règle affirmative + (if (eql 'vrai (valeur (l-objet (car condition)))) + t + nil))) + + +;;;; Ajoute dans la base de fait de l'environnement le fait apporté par le +;;;; parametre conclusion. +(defun appliquer-conclusion (conclusion) + (let ((att nil) (val nil)) + (if (eql 'non (car conclusion)) + ; fait négatif + (progn + (setf att (l-objet (cadr conclusion))) + (setf val 'faux)) + ; fait affirmatif + (progn + (setf att (l-objet (car conclusion))) + (setf val 'vrai))) + (setf (valeur att) val) + (format t " ~a: ~a" (nom att) val) + (and (eql (but att) 'OUI) (eql val 'VRAI)))) + + +;;;; Applique la règle (si elle n'est pas déjà active) => ajoute les faits +;;;; amenés par les conclusions de la règle. +(defmethod appliquer-regle ((oself regle)) + (if (regle-declenchablep oself) + (let ((but nil)) + (format t "application de ~s: ~a =>" (nom oself) (conditions oself)) + (loop for x in (conclusions oself) do + (setf but (or + (appliquer-conclusion x) + but)) + (setf (active oself) + 'vrai)) + (format t "~%") + (if but + (format t "la règle ~a a démontré un but~%" (nom oself))) + but))) + + +;;;; Vérifie si l'attribut est demandable à l'utilisateur +(defmethod demandablep ((oself attribut)) + (and (not (eql 'VRAI (demande oself))) + (eql 'OUI (demandable oself)))) + +;;;; Demande à l'utilisateur de donner une valeur a +;;;; l'attribut et retourne t si l'utilisateur a fourni une valeur +;;;; (par opposition à la valeur "je ne sais pas") +(defmethod demande-a-utilisateur ((oself attribut)) + (let ((rep nil)(rep-donnee nil)) + (loop until rep-donnee do + (format t + "A votre avis l'attribut ~s est il \"vrai\" ou \"faux\" ou \"?\" => je ne sais pas ?~%" + (nom oself)) + (setf rep (read-line)) + (cond + ((equal "vrai" rep) + (setf (valeur oself) 'VRAI) + (setf (demande oself) 'VRAI) + (setf rep-donnee t)) + ((equal "faux" rep) + (setf (valeur oself) 'FAUX) + (setf (demande oself) 'VRAI) + (setf rep-donnee t)) + ((equal "?" rep) + (setf (valeur oself) nil) + (setf (demande oself) 'VRAI) + (setf rep-donnee t)))) + (not (equal "?" rep)))) + + +;;;; Parcours la liste de règle à la recherche de règles applicables, et les +;;;; applique jusqu'à l'obtemption d'un but ou la saturation de la base de +;;;; faits (= plus de nouvelles règles applicables). +(defun moteur-inference () + ; parcours des règles pour voir celle qui sont applicables + (let ((etat nil) (reg-dec nil) (but-demontre nil)) + (loop until etat do + ; premier passage sur toutes les règles + (dolist (re (les-instances 'regle)) + (if (regle-declenchablep re) + (progn + ; ajout de la règle sur la pile des règles déclanchables + (push re reg-dec)))) + + ; application des règles déclenchables et vérification + ; de la déclenchabilité des règle encore inactive + (loop while (and (null etat) (consp reg-dec)) do + ; utilisation & suppression du haut de la pile + (setf but-demontre (or (appliquer-regle (pop reg-dec)) but-demontre)) + (dolist (re (les-instances 'regle)) + (if (regle-declenchablep re) + ; ajout de la regle dans la liste des regle demandables + (push re reg-dec)))) + (if but-demontre + (setf etat 'reussite) + ; demander un fait supplémentaire + (let ((attrs nil) (attr nil) (rep nil)) + (setf attrs (les-instances 'attribut)) + (loop until (or etat rep) do + (setf attr (car attrs)) + (setf attrs (cdr attrs)) + (if (null attr) + (setf etat 'echec) + (progn + ; recherche d'un attribut demandable + (loop until (or etat (and (eql nil (valeur attr)) (demandablep attr))) do + (setf attr (car attrs)) + (setf attrs (cdr attrs)) + (if (null attr) + (setf etat 'echec))) + (if (null etat) + (setf rep (demande-a-utilisateur attr))))))))) + (cond + ((eql 'reussite etat) + (format t "RÉUSSITE: le but a été démontré~%")) + ((eql 'echec etat) + (format t "ÉCHEC: la base de fait est saturée ou les faits sont insuffisants~%"))))) \ No newline at end of file diff --git a/IntelligentSystem/TP2/test-se.lsp b/IntelligentSystem/TP2/test-se.lsp new file mode 100755 index 0000000..567c277 --- /dev/null +++ b/IntelligentSystem/TP2/test-se.lsp @@ -0,0 +1,11 @@ +(load 'packages.lsp) +(load 'se.lsp) + +(in-package :tp6) +(load-attributes-from-file "bateaux_dico.lsp" ) +(load-regles-from-file "bateaux_regles.lsp" ) +(load-faits-from-file "bateaux_faits.lsp" ) + +(format t "~%~%~%~%") + +(moteur-inference) diff --git a/IntelligentSystem/TP2/traces b/IntelligentSystem/TP2/traces new file mode 100755 index 0000000..0cc0cfd --- /dev/null +++ b/IntelligentSystem/TP2/traces @@ -0,0 +1,17 @@ + + + + +Règle R4 déclenchable +application de R4: ((BATEAU) (MOTEUR)) => BATEAU-A-MOTEUR: VRAI +Règle R5 déclenchable +application de R5: ((VOILES) (BATEAU-A-MOTEUR) (DE-CROISIERE)) => VOILIER-MIXTE: VRAI +A votre avis l'attribut TROIS-COQUES est il "vrai" ou "faux" ou "?" => je ne sais pas ? +A votre avis l'attribut DEUX-COQUES est il "vrai" ou "faux" ou "?" => je ne sais pas ? +A votre avis l'attribut QUILLE est il "vrai" ou "faux" ou "?" => je ne sais pas ? +A votre avis l'attribut LARGE est il "vrai" ou "faux" ou "?" => je ne sais pas ? +A votre avis l'attribut VENTRU est il "vrai" ou "faux" ou "?" => je ne sais pas ? +Règle R15 déclenchable +application de R15: ((VOILIER-MIXTE) (VENTRU) (LARGE)) => FIFTY: VRAI +la règle R15 a démontré un but +RÉUSSITE: le but a été démontré diff --git a/Java/Makefile b/Java/Makefile new file mode 100755 index 0000000..0f825d6 --- /dev/null +++ b/Java/Makefile @@ -0,0 +1,18 @@ +all: + @echo "Usage: make javadoc" + +javadoc: + @find . -type d -name 'src' -o -name 'TP1' |while read dir; do \ + dest="javadoc/$$(echo $$dir |sed 's/\/src//')"; \ + mkdir -p "$$dest"; \ + if ls $$dir/*.java &>/dev/null; then \ + javadoc -private -d "$$dest" -sourcepath "$$dir" "$$(cd $$dir && echo *.java)"; \ + else \ + javadoc -private -d "$$dest" -sourcepath "$$dir" -subpackages "$$(cd $$dir && echo * |sed 's/ /:/g')"; \ + fi ; \ + done + +clean: + rm -rf javadoc + +.PHONY: javadoc all clean diff --git a/Java/TP1/ex1/JavaVersC.c b/Java/TP1/ex1/JavaVersC.c new file mode 100755 index 0000000..c13a9a3 --- /dev/null +++ b/Java/TP1/ex1/JavaVersC.c @@ -0,0 +1,29 @@ + /** + * #(@)JavaVersC.c ENSICAEN 2005-02-27 + * + * @author MASSE Nicolas (2005-Groupe4-LIMIN) + * @author LIMIN Thomas (2005-Groupe4-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + + +/** + * Implémentation en C d'une fonction native Java + * (affichage de bonjour) + */ + + +#include +#include "JavaVersC.h" + + + +JNIEXPORT void JNICALL Java_JavaVersC_bonjour(JNIEnv * env, jobject obj) { + fprintf(stdout, "Bonjour\n"); +} diff --git a/Java/TP1/ex1/JavaVersC.h b/Java/TP1/ex1/JavaVersC.h new file mode 100755 index 0000000..4802de6 --- /dev/null +++ b/Java/TP1/ex1/JavaVersC.h @@ -0,0 +1,21 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class JavaVersC */ + +#ifndef _Included_JavaVersC +#define _Included_JavaVersC +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: JavaVersC + * Method: bonjour + * Signature: ()V + */ +JNIEXPORT void JNICALL Java_JavaVersC_bonjour + (JNIEnv *, jobject); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Java/TP1/ex1/JavaVersC.java b/Java/TP1/ex1/JavaVersC.java new file mode 100755 index 0000000..f23c36b --- /dev/null +++ b/Java/TP1/ex1/JavaVersC.java @@ -0,0 +1,45 @@ +/** + * #(@)JavaVersC.java ENSICAEN 2005-02-27 + * + * @author MASSE Nicolas (2005-Groupe4-LIMIN) + * @author LIMIN Thomas (2005-Groupe4-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +package ex1; + +/** + * Exemple du cours: affichage d'une chaine de caractères + */ + +public class JavaVersC { + + public static void main(String[] args) { + new JavaVersC().bonjour(); + } + + public native void bonjour(); + + static { + try { + System.loadLibrary("JavaVersC"); + } catch (SecurityException e) { + System.err.println(e.getMessage()); + System.exit(1); + } catch (UnsatisfiedLinkError e) { + System.err.println(e.getMessage()); + System.exit(1); + } catch (NullPointerException e) { + System.err.println("Error, System.loadLibrary called with null libname"); + System.exit(1); + } + } + +} + diff --git a/Java/TP1/ex1/Makefile b/Java/TP1/ex1/Makefile new file mode 100755 index 0000000..d345b41 --- /dev/null +++ b/Java/TP1/ex1/Makefile @@ -0,0 +1,44 @@ +# +# Makefile ENSICAEN 2005 +# +# MASSE Nicolas (2005-Groupe3-LIMIN) +# LIMIN Thomas (2005-Groupe3-MASSE) +# +# ENSICAEN +# 6 Boulevard Marechal Juin +# F-14050 Caen Cedex +# +# Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre +# reproduit, utilise ou modifie sans l'avis express de ses auteurs. +# + +# +# Description du makefile +# + +CC = gcc +LD = gcc +CFLAGS = -Wall -fpic +CPPFLAGS = -I/opt/jdk1.5.0_01/include/ -I/opt/jdk1.5.0_01/include/linux + + +all : JavaVersC.class libJavaVersC.so + + +JavaVersC.class : %.class : %.java + javac $< + +JavaVersC.o : %.o : %.c %.h + $(CC) -c $(CFLAGS) $(CPPFLAGS) $< + +libJavaVersC.so : JavaVersC.o + $(LD) -shared $^ -o $@ + +clean: + rm -f *.o *.so *.class + +distclean: clean + rm -f *~ + +.PHONY: all clean distclean + diff --git a/Java/TP1/ex2/Login.java b/Java/TP1/ex2/Login.java new file mode 100755 index 0000000..e12a079 --- /dev/null +++ b/Java/TP1/ex2/Login.java @@ -0,0 +1,60 @@ +/* + * #(@)Login.java ENSICAEN 2005 + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +package ex2; + +import java.io.*; + +/** + * Programme d'authentification qui lit sur l'entree standard un couple + * login/mot de passe et qui l'authentifie en utilisant une methode native. + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * @version 0.0.1 + */ +class Login { + + /* Chargement de la librarie partagee */ + static { + System.loadLibrary("login"); + } + + /** La methode est implementee dans la librairie liblogin.so */ + native static boolean validate(String login, String passwd); + + /** Point d'entree du programme */ + public static void main(String[] args) throws Exception { + InputStreamReader isr = new InputStreamReader(System.in); + BufferedReader br = new BufferedReader(isr); + String login = null; + String passwd = null; + + /* Demande du login */ + System.out.print("Login: "); + login = br.readLine(); + + /* Demande du mot de passe */ + System.out.print("Passwd: "); + passwd = br.readLine(); + + System.out.println(); + + /* Validation */ + if (validate(login, passwd)) { + System.out.println("Welcome " + login + " !"); + } else { + Thread.sleep(2000); + System.out.println("Wrong login/passwd !"); + } + } +} + diff --git a/Java/TP1/ex2/Makefile b/Java/TP1/ex2/Makefile new file mode 100755 index 0000000..4ef5ecb --- /dev/null +++ b/Java/TP1/ex2/Makefile @@ -0,0 +1,54 @@ +# +# Makefile ENSICAEN 2005 +# +# MASSE Nicolas (2005-Groupe3-LIMIN) +# LIMIN Thomas (2005-Groupe3-MASSE) +# +# ENSICAEN +# 6 Boulevard Marechal Juin +# F-14050 Caen Cedex +# +# Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre +# reproduit, utilise ou modifie sans l'avis express de ses auteurs. +# + +# +# Construit l'exercice 2 du TP1 sur JNI. Construit la librairie partagee +# et le programme java. +# + +# +# Version : 0.0.1 +# +# Fait : - +# +# A faire : - +# + + +CC = gcc +JAVAC = javac +JAVAH = javah + +CFLAGS = -Wall -I$(JAVA_HOME)/include/ -I$(JAVA_HOME)/include/linux -g +LDFLAGS = -fpic -lpam_misc +JAVACFLAGS = +JAVAHFLAGS = + + +all: Login.class liblogin.so + +liblogin.so: login.c Login.h + $(CC) $(CFLAGS) $(LDFLAGS) -shared -lpam -o $@ $< + +Login.class: Login.java + $(JAVAC) $(JAVACFLAGS) $< + +Login.h: Login.java + $(JAVAH) $(JAVAHFLAGS) -o $@ Login + +clean: + rm -f login.so Login.h Login.class + +.PHONY: all clean + diff --git a/Java/TP1/ex2/login.c b/Java/TP1/ex2/login.c new file mode 100755 index 0000000..9458c46 --- /dev/null +++ b/Java/TP1/ex2/login.c @@ -0,0 +1,102 @@ +/** + * #(@)login.c ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/** + * Definition des methodes natives qui seront inclues dans la librairie + * chargee par le programme Login ecrit en java. + */ + +#include +#include + +#include +#include + +#include "Login.h" + +/* + * @version 0.0.1 + * + * @Fait - + * + * @Afaire Lecture a partir du fichier + */ + +static int conversationFct(int num_msg, const struct pam_message ** msg, + struct pam_response ** resp, void * appdata_ptr) { + char * pass = (char *) appdata_ptr; + size_t len = strlen(pass); + + switch (msg[num_msg - 1]->msg_style) { + case PAM_PROMPT_ECHO_OFF: + (*resp) = malloc(sizeof(struct pam_response)); + (*resp)[num_msg - 1].resp = malloc(len + 1); + strncpy((*resp)[num_msg - 1].resp, pass, len + 1)[len] = '\0'; + (*resp)[num_msg - 1].resp_retcode = 0; + + break; + default: + break; + } + + return PAM_SUCCESS; +} + + +int validate(const char * login, const char * pass) { + int res; + pam_handle_t * pamHandle = NULL; + struct pam_conv pamConversation = {conversationFct, (void *) pass}; + + printf("login: %s\n", login); + res = pam_start("java_login", login, &pamConversation, &pamHandle); + printf("pam_start: %s\n", pam_strerror(pamHandle, res)); + + res = pam_authenticate(pamHandle, 0); + printf("pam_authenticate: %s\n", pam_strerror(pamHandle, res)); + + res = pam_acct_mgmt(pamHandle, 0); + printf("pam_acct_mgmt: %s\n", pam_strerror(pamHandle, res)); + + res = pam_end(pamHandle, res); + printf("pam_end: %s\n", pam_strerror(pamHandle, res)); + + return 0; +} + +/* + * @see Login.h + */ +JNIEXPORT jboolean JNICALL Java_Login_validate + (JNIEnv * env, jclass class, jstring login, jstring passwd) { + /* Copie des chaines passees en parametre */ + const char * l = (*env)->GetStringUTFChars(env, login, 0); + const char * p = (*env)->GetStringUTFChars(env, passwd, 0); + jboolean ret; + + /* Creation du booleen retourne */ + if (validate(l, p)) { + ret = JNI_TRUE; + } else { + ret = JNI_FALSE; + } + + /* On libere les copies des chaine de caracteres */ + (*env)->ReleaseStringUTFChars(env, login, l); + (*env)->ReleaseStringUTFChars(env, passwd, p); + + return ret; +} + + diff --git a/Java/TP1/ex2/test.c b/Java/TP1/ex2/test.c new file mode 100755 index 0000000..5d0b161 --- /dev/null +++ b/Java/TP1/ex2/test.c @@ -0,0 +1,60 @@ +/** + * #(@)nomfichier.c ENSICAEN 2005 + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/** + * Description des objectifs du programme, le sujet a traiter. + * Pour le programme qui contient le main(), + * la ligne de commande pour executer le programme. + */ + +#include +#include +#include + +/** + * Description succinte de l'algorithme utilise comme solution. + * Eventuellement: Les references (cahier des charges,bibliographiques...). + */ + +/* + * @version 0.0.1 + * + * @Fait Detail de ce qui a ete fait. + * + * @Afaire Detail de ce qui n'a pas ete fait. + */ + +int validate(char *, char *); + +void * pam_test(void * arg) { + char ** env = __environ; + + do { + printf("%s\n", *env); + } while (*(env++)); + + if (validate("visiteur", "ok")) { + printf("pouet\n"); + } +} + + +int main() { + pthread_t th; + + pthread_create(&th, NULL, pam_test, NULL); + pthread_join(th, NULL); + + return 0; +} diff --git a/Java/TP1/ex3/Makefile b/Java/TP1/ex3/Makefile new file mode 100755 index 0000000..e04486f --- /dev/null +++ b/Java/TP1/ex3/Makefile @@ -0,0 +1,45 @@ +# +# Makefile ENSICAEN 2005 +# +# MASSE Nicolas (2005-Groupe3-LIMIN) +# LIMIN Thomas (2005-Groupe3-MASSE) +# +# ENSICAEN +# 6 Boulevard Marechal Juin +# F-14050 Caen Cedex +# +# Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre +# reproduit, utilise ou modifie sans l'avis express de ses auteurs. +# + +# +# Description du makefile +# + +CC = gcc +LD = gcc +CFLAGS = -Wall -fpic +CPPFLAGS = -I/opt/jdk1.5.0_01/include/ -I/opt/jdk1.5.0_01/include/linux + + +all : ReadFile.class libReadFile.so + + + +ReadFile.class : %.class : %.java + javac $< + +ReadFile.o : %.o : %.c %.h + $(CC) -c $(CFLAGS) $(CPPFLAGS) $< + +libReadFile.so : ReadFile.o + $(LD) -shared $^ -o $@ + +clean: + rm -f *.o *.so *.class + +distclean: clean + rm -f *~ + +.PHONY: all clean distclean + diff --git a/Java/TP1/ex3/ReadFile.c b/Java/TP1/ex3/ReadFile.c new file mode 100755 index 0000000..745a874 --- /dev/null +++ b/Java/TP1/ex3/ReadFile.c @@ -0,0 +1,62 @@ + /** + * #(@)ReadFile.h ENSICAEN 2005-02-20 + * + * @author MASSE Nicolas (2005-Groupe4-LIMIN) + * @author LIMIN Thomas (2005-Groupe4-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + + +/** + * Implémentation en C d'une fonction native Java + * (lecture d'un fichier) + */ + + +#include +#include "ReadFile.h" + + +#include +#include +#include +#include + +JNIEXPORT jbyteArray JNICALL Java_ReadFile_readFile(JNIEnv * env, jobject obj, jstring filename) { + jbyteArray ba = NULL; + const char * fname = (*env)->GetStringUTFChars(env, filename, JNI_FALSE); + FILE * stream = fopen(fname, "r"); + + if (stream != NULL) { + + // récupération de la taille du fichier + struct stat s; + stat(fname, &s); + + // création d'un noujeau tableau Java d'octet + ba = (*env)->NewByteArray(env, s.st_size); + + // allocation d'un espace temporaire pour stocker le contenu du fichier + unsigned char * buff = (unsigned char *) malloc(sizeof(unsigned char) * s.st_size); + + // lecture du fichier et copie dans le buffer + fread(buff, sizeof(unsigned char), s.st_size, stream); + + // copie du buffer dans le tableau Java + (*env)->SetByteArrayRegion(env, ba, 0, s.st_size, buff); + + // libération du buffer & fermeture du fichier + free(buff); + fclose(stream); + } + + // libération de la chaine nom du fichier + (*env)->ReleaseStringUTFChars(env, filename, JNI_FALSE); + return ba; +} diff --git a/Java/TP1/ex3/ReadFile.h b/Java/TP1/ex3/ReadFile.h new file mode 100755 index 0000000..ad85ce2 --- /dev/null +++ b/Java/TP1/ex3/ReadFile.h @@ -0,0 +1,21 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class ReadFile */ + +#ifndef _Included_ReadFile +#define _Included_ReadFile +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: ReadFile + * Method: readFile + * Signature: (Ljava/lang/String;)[B + */ +JNIEXPORT jbyteArray JNICALL Java_ReadFile_readFile + (JNIEnv *, jobject, jstring); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Java/TP1/ex3/ReadFile.java b/Java/TP1/ex3/ReadFile.java new file mode 100755 index 0000000..926d2e5 --- /dev/null +++ b/Java/TP1/ex3/ReadFile.java @@ -0,0 +1,56 @@ +/** + * #(@)ReadFile.java ENSICAEN 2005-02-20 + * + * @author MASSE Nicolas (2005-Groupe4-LIMIN) + * @author LIMIN Thomas (2005-Groupe4-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +package ex3; + +/** + * Ecriture d'une classe ReadFile capable de lire et d'afficher à l'écran + * le contenu d'un fichier. La lecture du fichier proprement dite sera + * effectuées par uen fonction native et retournera le fichier sous la forme + * d'un tableau de bytes + */ + +public class ReadFile { + + public static void main(String[] args) { + if (args.length < 1) { + System.err.println("Usage : java ReadFile "); + } else { + byte[] tableau = new ReadFile().readFile(args[0]); + if (tableau != null) { + System.out.println(new String(tableau)); + } + } + } + + public native byte[] readFile(String filename); + + + static { + try { + System.loadLibrary("ReadFile"); + } catch (SecurityException e) { + System.err.println(e.getMessage()); + System.exit(1); + } catch (UnsatisfiedLinkError e) { + System.err.println(e.getMessage()); + System.exit(1); + } catch (NullPointerException e) { + System.err.println("Error, System.loadLibrary called with null libname"); + System.exit(1); + } + } + +} + diff --git a/Java/TP2/build.xml b/Java/TP2/build.xml new file mode 100755 index 0000000..66a1c7b --- /dev/null +++ b/Java/TP2/build.xml @@ -0,0 +1,69 @@ + + + + + + Builds, tests, and runs the project BeanTests. + + + diff --git a/Java/TP2/nbproject/build-impl.xml b/Java/TP2/nbproject/build-impl.xml new file mode 100755 index 0000000..c2dd7ae --- /dev/null +++ b/Java/TP2/nbproject/build-impl.xml @@ -0,0 +1,497 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must set src.dir + Must set test.src.dir + Must set build.dir + Must set dist.dir + Must set build.classes.dir + Must set dist.javadoc.dir + Must set build.test.classes.dir + Must set build.test.results.dir + Must set build.classes.excludes + Must set dist.jar + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select some files in the IDE or set javac.includes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select one file in the IDE or set run.class + + + + + + + + + + + + + + + + + + + + Must select one file in the IDE or set debug.class + + + + + Must set fix.includes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select some files in the IDE or set javac.includes + + + + + + + + + + + + + + + + + + + + Some tests failed; see details above. + + + + + + + + + Must select some files in the IDE or set test.includes + + + + Some tests failed; see details above. + + + + + Must select one file in the IDE or set test.class + + + + + + + + + + + + + + + + + Must select one file in the IDE or set applet.url + + + + + + + + + Must select one file in the IDE or set applet.url + + + + + + + + + + + + + + + + + + + diff --git a/Java/TP2/nbproject/genfiles.properties b/Java/TP2/nbproject/genfiles.properties new file mode 100755 index 0000000..ff168d2 --- /dev/null +++ b/Java/TP2/nbproject/genfiles.properties @@ -0,0 +1,8 @@ +build.xml.data.CRC32=8c30d493 +build.xml.script.CRC32=c8de4fa6 +build.xml.stylesheet.CRC32=d5b6853a +# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. +# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. +nbproject/build-impl.xml.data.CRC32=8c30d493 +nbproject/build-impl.xml.script.CRC32=6ec94a64 +nbproject/build-impl.xml.stylesheet.CRC32=d7756595 diff --git a/Java/TP2/nbproject/private/private.properties b/Java/TP2/nbproject/private/private.properties new file mode 100755 index 0000000..dd1e034 --- /dev/null +++ b/Java/TP2/nbproject/private/private.properties @@ -0,0 +1,4 @@ +application.args= +javac.debug=true +javadoc.preview=true +user.properties.file=/home/nicolas/.netbeans/5.0beta/build.properties diff --git a/Java/TP2/nbproject/private/private.xml b/Java/TP2/nbproject/private/private.xml new file mode 100755 index 0000000..241c8c6 --- /dev/null +++ b/Java/TP2/nbproject/private/private.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/Java/TP2/nbproject/project.properties b/Java/TP2/nbproject/project.properties new file mode 100755 index 0000000..3cf1baf --- /dev/null +++ b/Java/TP2/nbproject/project.properties @@ -0,0 +1,56 @@ +application.args= +build.classes.dir=${build.dir}/classes +build.classes.excludes=**/*.java,**/*.form +# This directory is removed when the project is cleaned: +build.dir=build +build.generated.dir=${build.dir}/generated +# Only compile against the classpath explicitly listed here: +build.sysclasspath=ignore +build.test.classes.dir=${build.dir}/test/classes +build.test.results.dir=${build.dir}/test/results +debug.classpath=\ + ${run.classpath} +debug.test.classpath=\ + ${run.test.classpath} +# This directory is removed when the project is cleaned: +dist.dir=dist +dist.jar=${dist.dir}/BeanTests.jar +dist.javadoc.dir=${dist.dir}/javadoc +jar.compress=true +javac.classpath=\ + ${libs.swing-layout.classpath} +# Space-separated list of extra javac options +javac.compilerargs=-Xlint:unchecked +javac.deprecation=false +javac.source=${default.javac.source} +javac.target=${default.javac.target} +javac.test.classpath=\ + ${javac.classpath}:\ + ${build.classes.dir}:\ + ${libs.junit.classpath} +javadoc.additionalparam= +javadoc.author=true +javadoc.encoding= +javadoc.noindex=false +javadoc.nonavbar=false +javadoc.notree=false +javadoc.private=true +javadoc.splitindex=true +javadoc.use=true +javadoc.version=true +javadoc.windowtitle= +main.class=mybeans.Main +meta.inf.dir=${src.dir}/META-INF +platform.active=default_platform +run.classpath=\ + ${javac.classpath}:\ + ${build.classes.dir} +# Space-separated list of JVM arguments used when running the project +# (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value +# or test-sys-prop.name=value to set system properties for unit tests): +run.jvmargs= +run.test.classpath=\ + ${javac.test.classpath}:\ + ${build.test.classes.dir} +src.dir=src +test.src.dir=test diff --git a/Java/TP2/nbproject/project.xml b/Java/TP2/nbproject/project.xml new file mode 100755 index 0000000..f2010b1 --- /dev/null +++ b/Java/TP2/nbproject/project.xml @@ -0,0 +1,22 @@ + + + org.netbeans.modules.java.j2seproject + + + + + BeanTests + 1.6.5 + + + + + + + + + + + + + diff --git a/Java/TP2/src/mybeans/ImageBean.java b/Java/TP2/src/mybeans/ImageBean.java new file mode 100755 index 0000000..dccb0aa --- /dev/null +++ b/Java/TP2/src/mybeans/ImageBean.java @@ -0,0 +1,124 @@ +/* + * #(@)ImageBean.java ENSICAEN 2005 + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +package mybeans; + +import java.beans.*; +import java.awt.*; +import java.awt.image.*; +import java.io.Serializable; +import java.util.*; + +/** + * Cette classe se conforme à la spécification JavaBean. C'est un afficheur + * d'images. Elle génère des évènements ImageChangedEvent reçu par des objets + * de type ImageChangedListener lorsque l'image à afficher change. + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * @version 0.0.1 + */ +public class ImageBean extends Canvas implements Serializable { + /** Le nom de l'image à afficher, valeur implicite : null */ + public static final String PROP_IMAGE_FILENAME = "imageFileName"; + private String imageFileName; + + /** Le contenu de l'image */ + private Image img; + + /** Aide à la propagation d'évènements */ + private PropertyChangeSupport propertySupport; + + /** La liste de tous les écouteurs */ + private java.util.List listenerList; + + /** Construit un nouvel afficheur */ + public ImageBean() { + this.propertySupport = new PropertyChangeSupport(this); + this.listenerList = new ArrayList(); + } + + /** + * Getter pour le nom de fichier. + */ + public String getImageFileName() { + return this.imageFileName; + } + + /** + * Setter pour le nom de fichier. + */ + public void setImageFileName(String value) { + String oldValue = this.imageFileName; + this.imageFileName = value; + + this.img = java.awt.Toolkit.getDefaultToolkit().getImage(this.imageFileName); + + this.repaint(); + + this.propertySupport.firePropertyChange(PROP_IMAGE_FILENAME, oldValue, value); + this.fireImageChangedEvent(); + } + + /** + * Enregistre un nouvel écouteur de changement de propriété. + */ + public void addPropertyChangeListener(PropertyChangeListener listener) { + this.propertySupport.addPropertyChangeListener(listener); + } + + /** + * Enlève un écouteur de changement de propriété précédemment enregistré. + */ + public void removePropertyChangeListener(PropertyChangeListener listener) { + this.propertySupport.removePropertyChangeListener(listener); + } + + /** + * Enregistre un nouvel écouteur de changement d'image. + */ + public void addImageChangedListener(ImageChangedListener ice) { + this.listenerList.add(ice); + } + + /** + * Enlève un écouteur de changement d'image précédemment enregistré. + */ + public void removeImageChangedListener(ImageChangedListener ice) { + this.listenerList.remove(ice); + } + + /** + * Provoque l'émission d'évènements de changement d'image. + */ + private void fireImageChangedEvent() { + ImageChangedEvent evt = new ImageChangedEvent(this, this.imageFileName, this.img); + + ListIterator li = this.listenerList.listIterator(); + ImageChangedListener ice; + + while (li.hasNext()) { + ice = li.next(); + ice.imageChanged(evt); + } + } + + /** + * Affiche le composant à l'écran. + */ + public void paint(Graphics g) { + g.clearRect(0, 0, this.getWidth(), this.getHeight()); + + if (img != null) { + g.drawImage(img, 0, 0, this); + } + } +} diff --git a/Java/TP2/src/mybeans/ImageChangedEvent.java b/Java/TP2/src/mybeans/ImageChangedEvent.java new file mode 100755 index 0000000..22b8346 --- /dev/null +++ b/Java/TP2/src/mybeans/ImageChangedEvent.java @@ -0,0 +1,48 @@ +/* + * #(@)ImageChangedEvent.java ENSICAEN 2005 + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +package mybeans; + +import java.util.*; +import java.awt.*; + +/** + * Représente un changement d'images dans la classe ImageIterator. + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * @version 0.0.1 + */ +public class ImageChangedEvent extends EventObject { + /** Le nom du nouveau fichier image */ + private String fileName; + + /** Le contenu de la nouvelle image */ + private Image image; + + /** Construit un nouvel évènement. */ + public ImageChangedEvent(Object source, String fileName, Image img) { + super(source); + + this.fileName = fileName; + this.image = img; + } + + /** Getter pour le nom de fichier */ + public String getFileName() { + return fileName; + } + + /** Getter pour le contenu de l'image */ + public Image getImage() { + return image; + } +} diff --git a/Java/TP2/src/mybeans/ImageChangedListener.java b/Java/TP2/src/mybeans/ImageChangedListener.java new file mode 100755 index 0000000..3da20b6 --- /dev/null +++ b/Java/TP2/src/mybeans/ImageChangedListener.java @@ -0,0 +1,31 @@ +/* + * #(@)ImageChangedListener.java ENSICAEN 2005 + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +package mybeans; + + +import java.util.*; + +/** + * Spécifie la méthode appelée lors d'un changement d'image dans la classe + * ImageIterator. + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * @version 0.0.1 + */ +public interface ImageChangedListener extends EventListener { + /** + * Cette méthode est appelée lors d'un changement d'image dans + * la classe ImageIterator. + */ + public void imageChanged(ImageChangedEvent evt); +} diff --git a/Java/TP2/src/mybeans/ImageDisplayer.form b/Java/TP2/src/mybeans/ImageDisplayer.form new file mode 100755 index 0000000..f82894d --- /dev/null +++ b/Java/TP2/src/mybeans/ImageDisplayer.form @@ -0,0 +1,240 @@ + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    diff --git a/Java/TP2/src/mybeans/ImageDisplayer.java b/Java/TP2/src/mybeans/ImageDisplayer.java new file mode 100755 index 0000000..c815cd2 --- /dev/null +++ b/Java/TP2/src/mybeans/ImageDisplayer.java @@ -0,0 +1,279 @@ +/* + * #(@)ImageDisplayer.java ENSICAEN 2005 + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +package mybeans; + +import javax.swing.*; +import java.beans.*; + +/** + * Cette classe à été construite à l'aide de l'IDE netbeans, les variables + * membres, la méthode initComponents() et les autres méthodes privées sont + * auto-générés. Cette classe lie les beans développés dans ce TP au sein + * d'un interface graphique. + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * @version 0.0.1 + */ +public class ImageDisplayer extends JPanel { + + /** + * Construit un nouveau composant. + */ + public ImageDisplayer() { + initComponents(); + + // Enregistrement de l'écouteur + this.ibImage.addImageChangedListener(this.lblImage); + } + + /** This method is called from within the constructor to initialize + * the form. + */ + // //GEN-BEGIN:initComponents + private void initComponents() { + itImage = new mybeans.ImageIterator(); + timer = new mybeans.TimerBean(); + btDebut = new javax.swing.JButton(); + btPrec = new javax.swing.JButton(); + btSuiv = new javax.swing.JButton(); + btFin = new javax.swing.JButton(); + lblImage = new mybeans.LabelBean(); + ibImage = new mybeans.ImageBean(); + sldDelai = new javax.swing.JSlider(); + lblDelai = new javax.swing.JLabel(); + lblValeur = new javax.swing.JLabel(); + chkBoucle = new javax.swing.JCheckBox(); + chkDiapo = new javax.swing.JCheckBox(); + + itImage.setDirName("/usr/share/pixmaps"); + itImage.setLoop(chkBoucle.isSelected()); + itImage.addPropertyChangeListener(new java.beans.PropertyChangeListener() { + public void propertyChange(java.beans.PropertyChangeEvent evt) { + itImagePropertyChange(evt); + } + }); + + timer.setDiaporama(chkDiapo.isSelected()); + timer.setMain(new Runnable() {public void run() {itImage.next();}}); + timer.setTime(sldDelai.getValue()); + timer.addPropertyChangeListener(new java.beans.PropertyChangeListener() { + public void propertyChange(java.beans.PropertyChangeEvent evt) { + timerPropertyChange(evt); + } + }); + + btDebut.setText("D\u00e9but"); + btDebut.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btDebutActionPerformed(evt); + } + }); + + btPrec.setText("Pr\u00e9c\u00e9dent"); + btPrec.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btPrecActionPerformed(evt); + } + }); + + btSuiv.setText("Suivant"); + btSuiv.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btSuivActionPerformed(evt); + } + }); + + btFin.setText("Fin"); + btFin.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btFinActionPerformed(evt); + } + }); + + lblImage.setBackground(new java.awt.Color(153, 153, 153)); + lblImage.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(0, 0, 0), 1, true)); + lblImage.setText(" "); + + ibImage.setImageFileName("/usr/share/pixmaps/gaim.png"); + ibImage.addImageChangedListener(new mybeans.ImageChangedListener() { + public void imageChanged(mybeans.ImageChangedEvent evt) { + ibImageImageChanged(evt); + } + }); + + sldDelai.setMaximum(60); + sldDelai.setMinimum(3); + sldDelai.setValue(15); + sldDelai.addChangeListener(new javax.swing.event.ChangeListener() { + public void stateChanged(javax.swing.event.ChangeEvent evt) { + sldDelaiStateChanged(evt); + } + }); + + lblDelai.setText("D\u00e9lai entre les images"); + + lblValeur.setText("15"); + + chkBoucle.setText("Boucle"); + chkBoucle.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0)); + chkBoucle.setMargin(new java.awt.Insets(0, 0, 0, 0)); + chkBoucle.addChangeListener(new javax.swing.event.ChangeListener() { + public void stateChanged(javax.swing.event.ChangeEvent evt) { + chkBoucleStateChanged(evt); + } + }); + + chkDiapo.setText("Diaporama"); + chkDiapo.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0)); + chkDiapo.setMargin(new java.awt.Insets(0, 0, 0, 0)); + chkDiapo.addChangeListener(new javax.swing.event.ChangeListener() { + public void stateChanged(javax.swing.event.ChangeEvent evt) { + chkDiapoStateChanged(evt); + } + }); + + org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(this); + this.setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, layout.createSequentialGroup() + .addContainerGap() + .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, layout.createSequentialGroup() + .add(chkBoucle) + .add(48, 48, 48) + .add(chkDiapo)) + .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup() + .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING) + .add(org.jdesktop.layout.GroupLayout.LEADING, layout.createSequentialGroup() + .add(lblDelai) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 375, Short.MAX_VALUE) + .add(lblValeur) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(sldDelai, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 345, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .add(lblImage, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 887, Short.MAX_VALUE)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)) + .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup() + .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING) + .add(ibImage, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 887, Short.MAX_VALUE) + .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup() + .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(btDebut) + .add(org.jdesktop.layout.GroupLayout.LEADING, layout.createSequentialGroup() + .add(159, 159, 159) + .add(btPrec))) + .add(83, 83, 83) + .add(btSuiv) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 418, Short.MAX_VALUE) + .add(btFin))) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED))) + .add(658, 658, 658) + .addContainerGap()) + ); + layout.setVerticalGroup( + layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, layout.createSequentialGroup() + .addContainerGap() + .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING) + .add(btDebut) + .add(btFin)) + .add(btPrec) + .add(btSuiv)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(ibImage, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 320, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(lblImage, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, layout.createSequentialGroup() + .add(lblValeur) + .addContainerGap()) + .add(org.jdesktop.layout.GroupLayout.LEADING, layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, layout.createSequentialGroup() + .add(sldDelai, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addContainerGap()) + .add(org.jdesktop.layout.GroupLayout.LEADING, layout.createSequentialGroup() + .add(lblDelai) + .add(7, 7, 7) + .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(chkBoucle) + .add(chkDiapo)) + .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))) + ); + } + // //GEN-END:initComponents + + private void chkDiapoStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_chkDiapoStateChanged + timer.setDiaporama(chkDiapo.isSelected()); + }//GEN-LAST:event_chkDiapoStateChanged + + private void chkBoucleStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_chkBoucleStateChanged + itImage.setLoop(chkBoucle.isSelected()); + }//GEN-LAST:event_chkBoucleStateChanged + + private void timerPropertyChange(java.beans.PropertyChangeEvent evt) {//GEN-FIRST:event_timerPropertyChange + if (evt.getPropertyName().equals(TimerBean.PROP_TIME)) { + lblValeur.setText(Integer.toString(timer.getTime())); + } + }//GEN-LAST:event_timerPropertyChange + + private void sldDelaiStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_sldDelaiStateChanged + timer.setTime(sldDelai.getValue()); + }//GEN-LAST:event_sldDelaiStateChanged + + private void ibImageImageChanged(mybeans.ImageChangedEvent evt) {//GEN-FIRST:event_ibImageImageChanged + + }//GEN-LAST:event_ibImageImageChanged + + private void btSuivActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btSuivActionPerformed + itImage.next(); + }//GEN-LAST:event_btSuivActionPerformed + + private void btPrecActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btPrecActionPerformed + itImage.prev(); + }//GEN-LAST:event_btPrecActionPerformed + + private void itImagePropertyChange(java.beans.PropertyChangeEvent evt) {//GEN-FIRST:event_itImagePropertyChange + if (evt.getPropertyName().equals(ImageIterator.PROP_CUR_IMAGE)) { + String file = (String) evt.getNewValue(); + ibImage.setImageFileName(file); + } + }//GEN-LAST:event_itImagePropertyChange + + private void btFinActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btFinActionPerformed + itImage.end(); + }//GEN-LAST:event_btFinActionPerformed + + private void btDebutActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btDebutActionPerformed + itImage.start(); + }//GEN-LAST:event_btDebutActionPerformed + + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton btDebut; + private javax.swing.JButton btFin; + private javax.swing.JButton btPrec; + private javax.swing.JButton btSuiv; + private javax.swing.JCheckBox chkBoucle; + private javax.swing.JCheckBox chkDiapo; + private mybeans.ImageBean ibImage; + private mybeans.ImageIterator itImage; + private javax.swing.JLabel lblDelai; + private mybeans.LabelBean lblImage; + private javax.swing.JLabel lblValeur; + private javax.swing.JSlider sldDelai; + private mybeans.TimerBean timer; + // End of variables declaration//GEN-END:variables + +} diff --git a/Java/TP2/src/mybeans/ImageFileFilter.java b/Java/TP2/src/mybeans/ImageFileFilter.java new file mode 100755 index 0000000..e197098 --- /dev/null +++ b/Java/TP2/src/mybeans/ImageFileFilter.java @@ -0,0 +1,35 @@ +/* + * #(@)ImageFileFilter.java ENSICAEN 2005 + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + + +package mybeans; + +import java.io.*; + +/** + * Filtre les fichiers d'un répertoire, afin de ne laisser passer que les + * fichiers image (*.png, *.jpg, *.gif). + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * @version 0.0.1 + */ +public class ImageFileFilter implements FilenameFilter { + + /** Constructeur implicite */ + public ImageFileFilter() { + } + + /** @see FileNameFilter */ + public boolean accept(File dir, String name) { + return name.endsWith(".png") || name.endsWith(".jpg") || name.endsWith(".gif"); + } +} diff --git a/Java/TP2/src/mybeans/ImageIterator.java b/Java/TP2/src/mybeans/ImageIterator.java new file mode 100755 index 0000000..a64942d --- /dev/null +++ b/Java/TP2/src/mybeans/ImageIterator.java @@ -0,0 +1,192 @@ +/* + * #(@)ImageIterator.java ENSICAEN 2005 + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +package mybeans; + +import java.beans.*; +import java.io.*; + +/** + * Cette classe se conforme à la spécification JavaBean. Il permet de parcourir + * les images présentes dans un répertoire. + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * @version 0.0.1 + */ +public class ImageIterator extends Object implements Serializable { + + /** Le nom du répertoire à parcourir, valeur implicite : null */ + public static final String PROP_DIR_NAME = "dirName"; + private String dirName; + + /** Le nom de l'image courante, valeur implicite : première image du + * répertoire, propriété en lecture seule. */ + public static final String PROP_CUR_IMAGE = "curImage"; + private String curImage; + + /** En fin de liste, retourne au début si vrai. Valeur implicite : faux */ + public static final String PROP_LOOP = "loop"; + private boolean loop; + + /** La liste des images contenues dans le répertoire */ + private File[] imageList; + + /** La position courante dans la liste des répertoires */ + private int imageIdx; + + /** Aide à la propagation d'évènements */ + private PropertyChangeSupport propertySupport; + + /** + * Constructeur par défaut. + */ + public ImageIterator() { + this.propertySupport = new PropertyChangeSupport(this); + this.loop = false; + this.curImage = null; + this.dirName = null; + + this.initialize(); + } + + /** + * Getter pour la propriété "dirName". + */ + public String getDirName() { + return this.dirName; + } + + /** + * Getter pour la propriété "curImage". + */ + public String getCurImage() { + return this.curImage; + } + + /** + * Getter pour la propriété "loop". + */ + public boolean isLoop() { + return this.loop; + } + + /** + * Setter pour la propriété "dirName". + */ + public void setDirName(String value) { + String oldValue = this.dirName; + this.dirName = value; + + this.initialize(); + + this.propertySupport.firePropertyChange(PROP_DIR_NAME, oldValue, value); + } + + /** + * Setter pour la propriété "curImage". + */ + private void setCurImage(String value) { + String oldValue = this.curImage; + this.curImage = value; + + this.propertySupport.firePropertyChange(PROP_CUR_IMAGE, oldValue, value); + } + + /** + * Setter pour la propriété "loop". + */ + public void setLoop(boolean val) { + boolean oldValue = this.loop; + this.loop = val; + + this.propertySupport.firePropertyChange(PROP_LOOP, oldValue, val); + } + + /** + * Place cet iterateur au début de la liste. + */ + public void start() { + if (imageList != null) { + imageIdx = 0; + setCurImage(imageList[imageIdx].getAbsolutePath()); + } + } + + /** + * Place cet itérateur à la fin de la liste. + */ + public void end() { + if (imageList != null) { + imageIdx = imageList.length - 1; + setCurImage(imageList[imageIdx].getAbsolutePath()); + } + } + + /** + * Place cet itérateur sur l'image précédente. + */ + public void prev() { + if (imageList != null) { + if (imageIdx == 0 && isLoop()) { + end(); + } else if (imageIdx != 0) { + setCurImage(imageList[--imageIdx].getAbsolutePath()); + } + } + } + + /** + * Place cet itérateur sur l'image suivante. + */ + public void next() { + if (imageList != null) { + if (imageIdx == imageList.length - 1 && isLoop()) { + start(); + } else if (imageIdx != imageList.length - 1) { + setCurImage(imageList[++imageIdx].getAbsolutePath()); + } + } + } + + /** + * Construit la liste des fichiers images du répertoire. + */ + private void initialize() { + if (dirName == null) { + imageList = null; + imageIdx = 0; + setCurImage(null); + } else { + imageList = new File(dirName).listFiles(new ImageFileFilter()); + imageIdx = 0; + if (imageList.length != 0) { + curImage = null; + } else { + imageList = null; + } + } + } + + /** + * Enregistre un nouvel écouteur d'évènements. + */ + public void addPropertyChangeListener(PropertyChangeListener listener) { + propertySupport.addPropertyChangeListener(listener); + } + + /** + * Enlève un écouteur d'évènements précédemment enregistré. + */ + public void removePropertyChangeListener(PropertyChangeListener listener) { + propertySupport.removePropertyChangeListener(listener); + } +} diff --git a/Java/TP2/src/mybeans/LabelBean.java b/Java/TP2/src/mybeans/LabelBean.java new file mode 100755 index 0000000..416790b --- /dev/null +++ b/Java/TP2/src/mybeans/LabelBean.java @@ -0,0 +1,56 @@ +/* + * #(@)LabelBean.java ENSICAEN 2005 + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +package mybeans; + +import java.beans.*; +import java.util.*; +import javax.swing.*; +import java.io.Serializable; +import java.awt.*; + +/** + * Cette classe est un écouteur d'ImageIterator. Elle réagit aux changements + * d'image en affichant le nom de l'image, sa hauteur et sa largeur. + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * @version 0.0.1 + */ +public class LabelBean extends JLabel implements Serializable, ImageChangedListener { + /** Le nom du fichier à afficher. */ + private String file; + + /** Le constructeur par défaut. */ + public LabelBean() { } + + /** + * Cette méthode est invoquée lorsque l'image courante d'un ImageIterator a + * changé. + */ + public void imageChanged(ImageChangedEvent evt) { + file = evt.getFileName(); + int h = evt.getImage().getHeight(this); + int w = evt.getImage().getWidth(this); + + this.setText(file + "(" + h + "x" + w + ")"); + } + + /** + * Méthode à usage interne, appelée lorsque les dimensions de l'image sont + * disponibles. + */ + public boolean imageUpdate(Image img, int infoflags, int x, int y, int w, int h) { + this.setText(file + "(" + h + "x" + w + ")"); + + return true; + } +} diff --git a/Java/TP2/src/mybeans/Main.java b/Java/TP2/src/mybeans/Main.java new file mode 100755 index 0000000..2c89de0 --- /dev/null +++ b/Java/TP2/src/mybeans/Main.java @@ -0,0 +1,33 @@ +/* + * #(@)Main.java ENSICAEN 2005 + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +package mybeans; + +import javax.swing.*; + +/** + * Point d'entrée du TP, permet de tester l'interface graphique. + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * @version 0.0.1 + */ +public abstract class Main { + public static void main(String[] args) { + ImageDisplayer id = new ImageDisplayer(); + JFrame jf = new JFrame(); + jf.setContentPane(id); + jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); + jf.setSize(640, 480); + jf.setVisible(true); + } + +} diff --git a/Java/TP2/src/mybeans/TimerBean.java b/Java/TP2/src/mybeans/TimerBean.java new file mode 100755 index 0000000..4fc8b44 --- /dev/null +++ b/Java/TP2/src/mybeans/TimerBean.java @@ -0,0 +1,147 @@ +/* + * #(@)TimerBean.java ENSICAEN 2005 + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +package mybeans; + +import java.beans.*; +import java.io.Serializable; + +/** + * Cette classe se conforme à la spécification JavaBean. C'est un déclencheur + * d'évènements, tous les "time" secondes l'objet "main" de type "Runnable" + * est exécuté si la propriété booléenne "diaporama" est vraie. + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * @version 0.0.1 + */ +public class TimerBean extends Object implements Serializable, Runnable { + /** Génère les évènements si vrai, valeur implicite : faux */ + public static final String PROP_DIAPORAMA = "diaporama"; + private boolean diaporama; + + /** Délai en secondes entre chaque évènement, valeur implicite : 1s */ + public static final String PROP_TIME = "time"; + private int time; + + /** Code à executer, valeur implicite : null */ + public static final String PROP_MAIN = "main"; + private Runnable main; + + /** Aide à la propagation d'évènements */ + private PropertyChangeSupport propertySupport; + + /** Thread générateur d'évènements */ + private Thread thread; + + /** + * Construit un nouveau TimerBean. + */ + public TimerBean() { + this.propertySupport = new PropertyChangeSupport(this); + + this.diaporama = false; + this.time = 1; + this.main = null; + + this.thread = new Thread(this); + this.thread.start(); + } + + /** + * Getter pour la propriété "diaporama". + */ + public boolean isDiaporama() { + return diaporama; + } + + /** + * Getter pour la propriété "time". + */ + public int getTime() { + return time; + } + + /** + * Getter pour la propriété "main". + */ + public Runnable getMain() { + return main; + } + + /** + * Setter pour la propriété "diaporama". + */ + public synchronized void setDiaporama(boolean newVal) { + boolean oldValue = this.diaporama; + this.diaporama = newVal; + + this.propertySupport.firePropertyChange(PROP_DIAPORAMA, oldValue, newVal); + + this.notify(); + } + + /** + * Setter pour la propriété "main". + */ + public synchronized void setMain(Runnable newMain) { + Runnable oldValue = this.main; + this.main = newMain; + + this.propertySupport.firePropertyChange(PROP_MAIN, oldValue, newMain); + } + + /** + * Setter pour la propriété "time". + */ + public synchronized void setTime(int newTime) { + int oldValue = this.time; + this.time = newTime; + + propertySupport.firePropertyChange(PROP_TIME, oldValue, newTime); + } + + /** + * Enregistre un nouvel écouteur d'évènements. + */ + public synchronized void addPropertyChangeListener(PropertyChangeListener listener) { + this.propertySupport.addPropertyChangeListener(listener); + } + + /** + * Enlève un écouteur d'évènements précédemment enregistré. + */ + public synchronized void removePropertyChangeListener(PropertyChangeListener listener) { + this.propertySupport.removePropertyChangeListener(listener); + } + + /** + * Cette méthode est à usage interne uniquement. + */ + public void run() { + while (true) { + while (! isDiaporama()) { + synchronized(this) { + try { + wait(); + } catch (InterruptedException ignored) {} + } + } + try { + Thread.sleep(getTime() * 1000); + if (main != null) { + main.run(); + } + } catch (InterruptedException ignored) {} + } + } + +} diff --git a/Java/TP2/src/mybeans/TimerBean.png b/Java/TP2/src/mybeans/TimerBean.png new file mode 100755 index 0000000000000000000000000000000000000000..b7ff7197cad1909b78e93b11ff3e072765ac0c4b GIT binary patch literal 3979 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 literal 0 HcmV?d00001 diff --git a/Java/TP2/src/mybeans/TimerBeanBeanInfo.java b/Java/TP2/src/mybeans/TimerBeanBeanInfo.java new file mode 100755 index 0000000..2a9091d --- /dev/null +++ b/Java/TP2/src/mybeans/TimerBeanBeanInfo.java @@ -0,0 +1,53 @@ +/* + * #(@)TimerBeanBeanInfo.java ENSICAEN 2005 + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +package mybeans; + +import java.awt.Image; +import java.beans.BeanDescriptor; +import java.beans.SimpleBeanInfo; +import java.beans.BeanInfo; +import java.beans.EventSetDescriptor; +import java.beans.MethodDescriptor; +import java.beans.PropertyDescriptor; + +/** + * Décrit le bean TimerBean. + * + * @author MASSE Nicolas (2005-Groupe3-LIMIN) + * @author LIMIN Thomas (2005-Groupe3-MASSE) + * @version 0.0.1 + */ +public class TimerBeanBeanInfo extends SimpleBeanInfo { + private Image icon; + + /** + * Creates a new instance of TimerBeanBeanInfo + */ + public TimerBeanBeanInfo() { + this.icon = loadImage("TimerBean.png"); + } + + public Image getIcon(int iconKind) { + Image ret = null; + + switch (iconKind) { + case ICON_COLOR_32x32: + ret = this.icon; + break; + default: + break; + } + + return ret; + } + +} diff --git a/Java/TP3/CineJava/build.xml b/Java/TP3/CineJava/build.xml new file mode 100755 index 0000000..b351981 --- /dev/null +++ b/Java/TP3/CineJava/build.xml @@ -0,0 +1,69 @@ + + + + + + Builds, tests, and runs the project CineJava. + + + diff --git a/Java/TP3/CineJava/manifest.mf b/Java/TP3/CineJava/manifest.mf new file mode 100755 index 0000000..328e8e5 --- /dev/null +++ b/Java/TP3/CineJava/manifest.mf @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +X-COMMENT: Main-Class will be added automatically by build + diff --git a/Java/TP3/CineJava/nbproject/build-impl.xml b/Java/TP3/CineJava/nbproject/build-impl.xml new file mode 100755 index 0000000..6e6994e --- /dev/null +++ b/Java/TP3/CineJava/nbproject/build-impl.xml @@ -0,0 +1,497 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must set src.dir + Must set test.src.dir + Must set build.dir + Must set dist.dir + Must set build.classes.dir + Must set dist.javadoc.dir + Must set build.test.classes.dir + Must set build.test.results.dir + Must set build.classes.excludes + Must set dist.jar + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select some files in the IDE or set javac.includes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select one file in the IDE or set run.class + + + + + + + + + + + + + + + + + + + + Must select one file in the IDE or set debug.class + + + + + Must set fix.includes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select some files in the IDE or set javac.includes + + + + + + + + + + + + + + + + + + + + Some tests failed; see details above. + + + + + + + + + Must select some files in the IDE or set test.includes + + + + Some tests failed; see details above. + + + + + Must select one file in the IDE or set test.class + + + + + + + + + + + + + + + + + Must select one file in the IDE or set applet.url + + + + + + + + + Must select one file in the IDE or set applet.url + + + + + + + + + + + + + + + + + + + diff --git a/Java/TP3/CineJava/nbproject/genfiles.properties b/Java/TP3/CineJava/nbproject/genfiles.properties new file mode 100755 index 0000000..065cb64 --- /dev/null +++ b/Java/TP3/CineJava/nbproject/genfiles.properties @@ -0,0 +1,8 @@ +build.xml.data.CRC32=aef8cc15 +build.xml.script.CRC32=58841f06 +build.xml.stylesheet.CRC32=d5b6853a +# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. +# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. +nbproject/build-impl.xml.data.CRC32=aef8cc15 +nbproject/build-impl.xml.script.CRC32=0b92f55a +nbproject/build-impl.xml.stylesheet.CRC32=b4de0fc8 diff --git a/Java/TP3/CineJava/nbproject/private/private.properties b/Java/TP3/CineJava/nbproject/private/private.properties new file mode 100755 index 0000000..503f767 --- /dev/null +++ b/Java/TP3/CineJava/nbproject/private/private.properties @@ -0,0 +1,5 @@ +application.args= +file.reference.pg73jdbc3.jar=/usr/share/jdbc3-postgresql-1/lib/pg73jdbc3.jar +javac.debug=true +javadoc.preview=true +user.properties.file=/home/nicolas/.netbeans/5.0beta2/build.properties diff --git a/Java/TP3/CineJava/nbproject/private/private.xml b/Java/TP3/CineJava/nbproject/private/private.xml new file mode 100755 index 0000000..d1dcee0 --- /dev/null +++ b/Java/TP3/CineJava/nbproject/private/private.xml @@ -0,0 +1,12 @@ + + + + + file:/home/limint/ENSI/2A/Java/TP3_JDBC/CineJava/src/cinejava/Actor.java + file:/home/limint/ENSI/2A/Java/TP3_JDBC/CineJava/src/cinejava/CineJavaFrame.java + file:/home/limint/ENSI/2A/Java/TP3_JDBC/CineJava/src/cinejava/GestionBase.java + file:/home/limint/ENSI/2A/Java/TP3_JDBC/CineJava/src/cinejava/Main.java + file:/home/limint/ENSI/2A/Java/TP3_JDBC/CineJava/src/cinejava/Movie.java + file:/home/limint/ENSI/2A/Java/TP3_JDBC/CineJava/src/cinejava/Resultat.java + + diff --git a/Java/TP3/CineJava/nbproject/project.properties b/Java/TP3/CineJava/nbproject/project.properties new file mode 100755 index 0000000..2b1217d --- /dev/null +++ b/Java/TP3/CineJava/nbproject/project.properties @@ -0,0 +1,62 @@ +application.args= +build.classes.dir=${build.dir}/classes +build.classes.excludes=**/*.java,**/*.form +# This directory is removed when the project is cleaned: +build.dir=build +build.generated.dir=${build.dir}/generated +# Only compile against the classpath explicitly listed here: +build.sysclasspath=ignore +build.test.classes.dir=${build.dir}/test/classes +build.test.results.dir=${build.dir}/test/results +debug.classpath=\ + ${run.classpath} +debug.test.classpath=\ + ${run.test.classpath} +# This directory is removed when the project is cleaned: +dist.dir=dist +dist.jar=${dist.dir}/CineJava.jar +dist.javadoc.dir=${dist.dir}/javadoc +file.reference.pg73jdbc3.jar=../../../../../../../usr/share/jdbc3-postgresql-1/lib/pg73jdbc3.jar +jar.compress=false +javac.classpath=\ + ${libs.swing-layout.classpath}:\ + ${libs.PostgreSQL.classpath} +# Space-separated list of extra javac options +javac.compilerargs= +javac.deprecation=false +javac.source=1.5 +javac.target=1.5 +javac.test.classpath=\ + ${javac.classpath}:\ + ${build.classes.dir}:\ + ${libs.junit.classpath} +javadoc.additionalparam= +javadoc.author=false +javadoc.encoding= +javadoc.noindex=false +javadoc.nonavbar=false +javadoc.notree=false +javadoc.private=false +javadoc.splitindex=true +javadoc.use=true +javadoc.version=false +javadoc.windowtitle= +# Property libs.PostgreSQL.classpath is set here just to make sharing of project simpler. +# The library definition has always preference over this property. +libs.PostgreSQL.classpath=../../../../java/postgresql-8.1-404.jdbc3.jar +main.class=cinejava.Main +manifest.file=manifest.mf +meta.inf.dir=${src.dir}/META-INF +platform.active=default_platform +run.classpath=\ + ${javac.classpath}:\ + ${build.classes.dir} +# Space-separated list of JVM arguments used when running the project +# (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value +# or test-sys-prop.name=value to set system properties for unit tests): +run.jvmargs=-Djdbc.drivers=org.postgresql.Driver -Dcinema.db-url=jdbc:postgresql://localhost/cinema?user=limint&password=vilest +run.test.classpath=\ + ${javac.test.classpath}:\ + ${build.test.classes.dir} +src.dir=src +test.src.dir=test diff --git a/Java/TP3/CineJava/nbproject/project.xml b/Java/TP3/CineJava/nbproject/project.xml new file mode 100755 index 0000000..0751364 --- /dev/null +++ b/Java/TP3/CineJava/nbproject/project.xml @@ -0,0 +1,16 @@ + + + org.netbeans.modules.java.j2seproject + + + CineJava + 1.6.5 + + + + + + + + + diff --git a/Java/TP3/CineJava/src/cinejava/Actor.java b/Java/TP3/CineJava/src/cinejava/Actor.java new file mode 100755 index 0000000..fc85043 --- /dev/null +++ b/Java/TP3/CineJava/src/cinejava/Actor.java @@ -0,0 +1,121 @@ +/* + * #(@)Actor.java ENSICAEN 2006 + * + * @author MASSE Nicolas (2005-Groupe4-LIMIN) + * @author LIMIN Thomas (2005-Groupe4-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +package cinejava; + +import java.sql.*; +import java.util.*; + +/** + * Represents an actor. + * + * @author Thomas LIMIN + */ +public class Actor { + + /** + * Creates a new instance of Actor + */ + public Actor(int actorId, String name) { + this.setActorId(actorId); + this.setActorName(name); + } + + /** + * Retrieve the actor with a name matching the given parameter. If more than + * one actor may be returned, an error occur so null is returned + * + * @param actorNamePart a part of the actor name + * @return an actor or null + */ + public static java.util.List getActors(String actorName) { + java.util.List result = new ArrayList(2); + PreparedStatement ppst = Actor.getStActorFromName(); + + try { + ppst.setString(1, "%" + actorName + "%"); + ResultSet rs = ppst.executeQuery(); + + while (rs.next()) { + int tmpId = rs.getInt("numc"); + String tmpName = rs.getString("identc"); + result.add(new Actor(tmpId, tmpName)); + } + + rs.close(); + + } catch (SQLException e) { + e.printStackTrace(System.err); + } + + return result; + } + + + public int getActorId() { + return this.actorId; + } + + public void setActorId(int actorId) { + this.actorId = actorId; + } + + public String getActorName() { + return this.actorName; + } + + public void setActorName(String actorName) { + this.actorName = actorName; + } + + + /** + * Return the instance (singloton) PreparedStatement that + * managed the SQL query used to retrieve actor with a matching + * name. + * + * @return the prepared statement + */ + public static PreparedStatement getStActorFromName() { + + if (Actor.stActorFromName != null) { + return Actor.stActorFromName; + } else { + try { + Actor.stActorFromName = GestionBase.getConnection().prepareStatement( + "SELECT numc, identc FROM com WHERE upper(identc) LIKE upper(?)"); + } catch (SQLException e) { + e.printStackTrace(System.err); + } + } + + return Actor.stActorFromName; + } + + /** + * Identification number of the actor + */ + private int actorId; + + /** + * Last and first name of the actor + */ + private String actorName; + + /** + * the statement needed to retrieve an actor from its name + */ + private static PreparedStatement stActorFromName = null; + +} \ No newline at end of file diff --git a/Java/TP3/CineJava/src/cinejava/CineJavaFrame.form b/Java/TP3/CineJava/src/cinejava/CineJavaFrame.form new file mode 100755 index 0000000..fe19742 --- /dev/null +++ b/Java/TP3/CineJava/src/cinejava/CineJavaFrame.form @@ -0,0 +1,143 @@ + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    diff --git a/Java/TP3/CineJava/src/cinejava/CineJavaFrame.java b/Java/TP3/CineJava/src/cinejava/CineJavaFrame.java new file mode 100755 index 0000000..5d4c118 --- /dev/null +++ b/Java/TP3/CineJava/src/cinejava/CineJavaFrame.java @@ -0,0 +1,242 @@ +/* + * #(@)CineJavaFrame.java ENSICAEN 2006 + * + * @author MASSE Nicolas (2005-Groupe4-LIMIN) + * @author LIMIN Thomas (2005-Groupe4-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +package cinejava; + +import java.sql.SQLException; +import javax.swing.*; +import javax.swing.event.*; +import java.util.*; + +/** + * + * @author limint + */ +public class CineJavaFrame extends javax.swing.JFrame { + + /** Creates new form CineJavaFrame */ + public CineJavaFrame() { + super("CineJava"); + initComponents(); + this.listModel = null; + } + + + private ListModel getListModel() { + if (this.listModel == null) { + this.listModel = new DefaultListModel(); + } + return this.listModel; + } + + private javax.swing.ListModel findMovie() { + java.util.List actors = Actor.getActors(this.jTextField1.getText()); + javax.swing.ListModel result = null; + String message = null; + + switch(actors.size()) { + case 0: + message = "Aucun acteur trouvé"; + //this.jLabel4.repaint(); + break; + case 1: + Actor actor = actors.get(0); + java.util.List list = Movie.getMoviesWith(actor); + result = new CineJavaListModel(list); + message = "Ok: " + actor.getActorName(); + break; + default: + message = "Trop d'acteurs trouvés"; + //this.jLabel4.repaint(); + break; + } + + this.jLabel4.setText(message); + return result; + } + + + + + /** This method is called from within the constructor to + * initialize the form. + * WARNING: Do NOT modify this code. The content of this method is + * always regenerated by the Form Editor. + */ + // //GEN-BEGIN:initComponents + private void initComponents() { + jLabel1 = new javax.swing.JLabel(); + jTextField1 = new javax.swing.JTextField(); + jButton1 = new javax.swing.JButton(); + jButton2 = new javax.swing.JButton(); + jLabel2 = new javax.swing.JLabel(); + jScrollPane1 = new javax.swing.JScrollPane(); + jList1 = new javax.swing.JList(); + jLabel3 = new javax.swing.JLabel(); + jButton3 = new javax.swing.JButton(); + jLabel4 = new javax.swing.JLabel(); + + setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); + jLabel1.setText("Nom com\u00e9dien:"); + + jButton1.setText("Rechercher"); + jButton1.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButton1ActionPerformed(evt); + } + }); + + jButton2.setText("Effacer"); + + jLabel2.setText("Titres films:"); + + jList1.setModel(this.getListModel()); + jScrollPane1.setViewportView(jList1); + + jLabel3.setText("Statut requ\u00eate:"); + + jButton3.setText("Quitter"); + jButton3.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButton3ActionPerformed(evt); + } + }); + + org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, layout.createSequentialGroup() + .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, layout.createSequentialGroup() + .addContainerGap() + .add(jLabel1) + .add(27, 27, 27) + .add(jTextField1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 253, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .add(org.jdesktop.layout.GroupLayout.LEADING, layout.createSequentialGroup() + .add(97, 97, 97) + .add(jButton1) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(jButton2)) + .add(org.jdesktop.layout.GroupLayout.LEADING, layout.createSequentialGroup() + .add(141, 141, 141) + .add(jButton3)) + .add(org.jdesktop.layout.GroupLayout.LEADING, layout.createSequentialGroup() + .addContainerGap() + .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(jLabel2) + .add(jLabel3, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 133, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 12, Short.MAX_VALUE) + .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING, false) + .add(jLabel4, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .add(org.jdesktop.layout.GroupLayout.LEADING, jScrollPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 251, Short.MAX_VALUE)))) + .addContainerGap()) + ); + layout.setVerticalGroup( + layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, layout.createSequentialGroup() + .addContainerGap() + .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(jLabel1) + .add(jTextField1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(jButton2) + .add(jButton1)) + .add(7, 7, 7) + .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(jLabel2) + .add(jScrollPane1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .add(10, 10, 10) + .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING) + .add(jLabel3) + .add(jLabel4, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 16, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 33, Short.MAX_VALUE) + .add(jButton3) + .addContainerGap()) + ); + pack(); + } + // //GEN-END:initComponents + + private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed + javax.swing.ListModel tmpList = this.findMovie(); + if (tmpList != null) { + this.jList1.setModel(tmpList); + this.listModel = tmpList; + } + }//GEN-LAST:event_jButton1ActionPerformed + + private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton3ActionPerformed + this.setVisible(false); + + try { + GestionBase.getConnection().close(); + } catch (SQLException e) { + System.err.println(e); + } + System.exit(0); + }//GEN-LAST:event_jButton3ActionPerformed + + /** + * @param args the command line arguments + */ + public static void main(String args[]) { + java.awt.EventQueue.invokeLater(new Runnable() { + public void run() { + new CineJavaFrame().setVisible(true); + } + }); + } + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton jButton1; + private javax.swing.JButton jButton2; + private javax.swing.JButton jButton3; + private javax.swing.JLabel jLabel1; + private javax.swing.JLabel jLabel2; + private javax.swing.JLabel jLabel3; + private javax.swing.JLabel jLabel4; + private javax.swing.JList jList1; + private javax.swing.JScrollPane jScrollPane1; + private javax.swing.JTextField jTextField1; + // End of variables declaration//GEN-END:variables + + private ListModel listModel; + +} + + +class CineJavaListModel implements ListModel { + + public CineJavaListModel(java.util.List list) { + this.movieList = list; + } + + public void addListDataListener(ListDataListener l) {} + + public void removeListDataListener(ListDataListener l) {} + + public Object getElementAt(int index) { + Movie m = this.movieList.get(index); + return m.getTitle(); + } + + public int getSize() { + return this.movieList.size(); + } + + private java.util.List movieList; + +} diff --git a/Java/TP3/CineJava/src/cinejava/GestionBase.java b/Java/TP3/CineJava/src/cinejava/GestionBase.java new file mode 100755 index 0000000..cf3d0a4 --- /dev/null +++ b/Java/TP3/CineJava/src/cinejava/GestionBase.java @@ -0,0 +1,80 @@ +/* + * #(@)GestionBase.java ENSICAEN 2006 + * + * @author MASSE Nicolas (2005-Groupe4-LIMIN) + * @author LIMIN Thomas (2005-Groupe4-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ +package cinejava; + + +import java.sql.*; + + +/** + * This class allows to connect to the database. + * + * @author Thomas LIMIN + * @author Nicolas MASSE + */ +public class GestionBase { + + /** + * Provide a login and password to the datase + * + * @param dbUrl data to reach the database, url formed + */ + public static void initConnection(String dbUrl) { + if (GestionBase.con == null) { + try { + GestionBase.con = DriverManager.getConnection(dbUrl); + } catch (SQLException e) { + e.printStackTrace(System.err); + throw new IllegalArgumentException(e); + } + } + } + + /** + * To retrieve the current connection + * + * @return the current connection + */ + public static Connection getConnection() { + Connection ret; + + if (GestionBase.con == null) { + throw new IllegalStateException("The database connection has been closed"); + } else { + ret = GestionBase.con; + } + + return ret; + } + + /** + * Close the current connection. + */ + public static void closeConnection() { + try { + GestionBase.getConnection().close(); + } catch (SQLException e) { + e.printStackTrace(System.err); + } + + GestionBase.con = null; + } + + + /** + * the link with the database + */ + private static Connection con = null; + +} diff --git a/Java/TP3/CineJava/src/cinejava/Main.java b/Java/TP3/CineJava/src/cinejava/Main.java new file mode 100755 index 0000000..c6bb427 --- /dev/null +++ b/Java/TP3/CineJava/src/cinejava/Main.java @@ -0,0 +1,41 @@ +/* + * #(@)Main.java ENSICAEN 2006 + * + * @author MASSE Nicolas (2005-Groupe4-LIMIN) + * @author LIMIN Thomas (2005-Groupe4-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +package cinejava; + +import java.sql.*; +import javax.sql.*; +import javax.swing.*; + +/** + * Entry point of the application. + * + * @author Thomas LIMIN + */ +public class Main { + + /** + * Entry point of the application. Starts a GUI. + * + * @param args the command line arguments + */ + public static void main(String[] args) { + GestionBase.initConnection(System.getProperty("cinema.db-url")); + JFrame jf = new CineJavaFrame(); + jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + jf.pack(); + jf.setVisible(true); + } + +} diff --git a/Java/TP3/CineJava/src/cinejava/Movie.java b/Java/TP3/CineJava/src/cinejava/Movie.java new file mode 100755 index 0000000..9e529c8 --- /dev/null +++ b/Java/TP3/CineJava/src/cinejava/Movie.java @@ -0,0 +1,188 @@ +/* + * #(@)Movie.java ENSICAEN 2006 + * + * @author MASSE Nicolas (2005-Groupe4-LIMIN) + * @author LIMIN Thomas (2005-Groupe4-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +package cinejava; + +import java.sql.*; +import java.util.*; + +/** + * This class represents a movie. + * + * @author Thomas LIMIN + */ +public class Movie { + + /** Creates a new instance of Movie */ + public Movie(int movieId, String title, int kindId, int year, int directorId, String synopsis) { + this.setMovieId(movieId); + this.setTitle(title); + this.setKindId(kindId); + this.setYear(year); + this.setDirectorId(directorId); + this.setSynopsis(synopsis); + } + + + /** + * Ask the database for a list of movies in which the actor appear. + * + * @param actorNamePart an actor + * @return a list of movies + */ + public static java.util.List getMoviesWith(Actor actor) { + java.util.List result = new ArrayList(8); + PreparedStatement ppst = Movie.getStMoviesWith(); + + try { + ppst.setInt(1, actor.getActorId()); + ResultSet rs = ppst.executeQuery(); + + while (rs.next()) { + int tmpMovieId = rs.getInt("numf"); + String tmpTitle = rs.getString("titre"); + int tmpKindId = rs.getInt("numg"); + int tmpYear = rs.getInt("annee"); + int tmpDirectorId = rs.getInt("numr"); + String tmpResume = rs.getString("resume"); + + result.add(new Movie(tmpMovieId, tmpTitle, tmpKindId, tmpYear, + tmpDirectorId, tmpResume)); + } + + rs.close(); + + } catch (SQLException e) { + e.printStackTrace(System.err); + } + + return result; + } + + /** + * Return the instance (singloton) PreparedStatement that + * managed the SQL query used to retrieve movies with a + * provide actor. + * + * @return the prepared statement + */ + private static PreparedStatement getStMoviesWith() { + if (Movie.stMoviesWith == null) { + try { + Movie.stMoviesWith = + GestionBase.getConnection().prepareStatement( + "SELECT numf, titre, numg, annee, numr, resume " + + "FROM film NATURAL JOIN role " + + "WHERE numc = ?"); + } catch (SQLException e) { + e.printStackTrace(System.err); + } + } + + return Movie.stMoviesWith; + } + + public int getMovieId() { + return movieId; + } + + public void setMovieId(int movieId) { + this.movieId = movieId; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public int getKindId() { + return kindId; + } + + public void setKindId(int kindId) { + this.kindId = kindId; + } + + public int getYear() { + return year; + } + + public void setYear(int year) { + this.year = year; + } + + public int getDirectorId() { + return directorId; + } + + public void setDirectorId(int directorId) { + this.directorId = directorId; + } + + public String getSynopsis() { + return synopsis; + } + + public void setSynopsis(String synopsis) { + this.synopsis = synopsis; + } + + /** + * Returns the string representation of this movie. + * + * @return the string representation of this movie + */ + public String toString() { + return this.getTitle() + ", " + this.getYear(); + } + + /** + * The identifier of the movie + */ + private int movieId; + + /** + * The title of the movie + */ + private String title; + + /** + * The identifier of this movie's kind + */ + private int kindId; + + /** + * The release year of the movie + */ + private int year; + + /** + * The movie's diretctor's identifier + */ + private int directorId; + + /** + * The synopsis of the movie + */ + private String synopsis; + + /** + * The SQL query that retrieves the movies with + * a provide actor + */ + private static PreparedStatement stMoviesWith; +} diff --git a/Java/TP3/CineServlet/build.xml b/Java/TP3/CineServlet/build.xml new file mode 100755 index 0000000..45981fc --- /dev/null +++ b/Java/TP3/CineServlet/build.xml @@ -0,0 +1,64 @@ + + + + + + Builds, tests, and runs the project CineServlet. + + + diff --git a/Java/TP3/CineServlet/conf/MANIFEST.MF b/Java/TP3/CineServlet/conf/MANIFEST.MF new file mode 100755 index 0000000..59499bc --- /dev/null +++ b/Java/TP3/CineServlet/conf/MANIFEST.MF @@ -0,0 +1,2 @@ +Manifest-Version: 1.0 + diff --git a/Java/TP3/CineServlet/nbproject/build-impl.xml b/Java/TP3/CineServlet/nbproject/build-impl.xml new file mode 100755 index 0000000..c0d0ca9 --- /dev/null +++ b/Java/TP3/CineServlet/nbproject/build-impl.xml @@ -0,0 +1,621 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must set src.dir + Must set test.src.dir + Must set build.dir + Must set build.web.dir + Must set build.generated.dir + Must set dist.dir + Must set build.classes.dir + Must set dist.javadoc.dir + Must set build.test.classes.dir + Must set build.test.results.dir + Must set build.classes.excludes + Must set dist.war + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select some files in the IDE or set javac.includes + + + + + + + + + + + + + + + + + + + + + + + + + + Must select some files in the IDE or set javac.jsp.includes + + + + + + + + + + + + + + + + + + + + Must select a file in the IDE or set jsp.includes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select one file in the IDE or set run.class + + + + + + + + + + + + + + + + + + + + + + + + Must select one file in the IDE or set debug.class + + + + + Must set fix.includes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select some files in the IDE or set javac.includes + + + + + + + + + + + + + + + + + + + + Some tests failed; see details above. + + + + + + + + + Must select some files in the IDE or set test.includes + + + + Some tests failed; see details above. + + + + + Must select one file in the IDE or set test.class + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Java/TP3/CineServlet/nbproject/genfiles.properties b/Java/TP3/CineServlet/nbproject/genfiles.properties new file mode 100755 index 0000000..e89687e --- /dev/null +++ b/Java/TP3/CineServlet/nbproject/genfiles.properties @@ -0,0 +1,8 @@ +build.xml.data.CRC32=fb23a15a +build.xml.script.CRC32=4b868858 +build.xml.stylesheet.CRC32=b4cea8bf +# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. +# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. +nbproject/build-impl.xml.data.CRC32=fb23a15a +nbproject/build-impl.xml.script.CRC32=9dcb0735 +nbproject/build-impl.xml.stylesheet.CRC32=a697e903 diff --git a/Java/TP3/CineServlet/nbproject/private/private.properties b/Java/TP3/CineServlet/nbproject/private/private.properties new file mode 100755 index 0000000..68d7fdb --- /dev/null +++ b/Java/TP3/CineServlet/nbproject/private/private.properties @@ -0,0 +1,6 @@ +j2ee.platform.classpath=/opt/netbeans-5.0beta2/enterprise2/jakarta-tomcat-5.5.9/common/lib/ant.jar:/opt/netbeans-5.0beta2/enterprise2/jakarta-tomcat-5.5.9/common/lib/commons-el.jar:/opt/netbeans-5.0beta2/enterprise2/jakarta-tomcat-5.5.9/common/lib/jasper-compiler.jar:/opt/netbeans-5.0beta2/enterprise2/jakarta-tomcat-5.5.9/common/lib/jasper-runtime.jar:/opt/netbeans-5.0beta2/enterprise2/jakarta-tomcat-5.5.9/common/lib/jsp-api.jar:/opt/netbeans-5.0beta2/enterprise2/jakarta-tomcat-5.5.9/common/lib/naming-factory-dbcp.jar:/opt/netbeans-5.0beta2/enterprise2/jakarta-tomcat-5.5.9/common/lib/naming-factory.jar:/opt/netbeans-5.0beta2/enterprise2/jakarta-tomcat-5.5.9/common/lib/naming-resources.jar:/opt/netbeans-5.0beta2/enterprise2/jakarta-tomcat-5.5.9/common/lib/servlet-api.jar +j2ee.server.instance=tomcat55:home=$bundled_home:base=$bundled_base +javac.debug=true +javadoc.preview=true +project.CineJava=/home/nicolas/svn_mirror/Java/TP3/CineJava +user.properties.file=/home/nicolas/.netbeans/5.0beta2/build.properties diff --git a/Java/TP3/CineServlet/nbproject/private/private.xml b/Java/TP3/CineServlet/nbproject/private/private.xml new file mode 100755 index 0000000..c1f155a --- /dev/null +++ b/Java/TP3/CineServlet/nbproject/private/private.xml @@ -0,0 +1,4 @@ + + + + diff --git a/Java/TP3/CineServlet/nbproject/project.properties b/Java/TP3/CineServlet/nbproject/project.properties new file mode 100755 index 0000000..2389ed3 --- /dev/null +++ b/Java/TP3/CineServlet/nbproject/project.properties @@ -0,0 +1,69 @@ +build.classes.dir=${build.web.dir}/WEB-INF/classes +build.classes.excludes=**/*.java,**/*.form +build.dir=build +build.ear.classes.dir=${build.ear.web.dir}/WEB-INF/classes +build.ear.web.dir=${build.dir}/ear-module +build.generated.dir=${build.dir}/generated +build.test.classes.dir=${build.dir}/test/classes +build.test.results.dir=${build.dir}/test/results +build.web.dir=${build.dir}/web +build.web.excludes=${build.classes.excludes} +client.urlPart= +compile.jsps=false +conf.dir=conf +debug.classpath=${javac.classpath}:${build.classes.dir}:${build.ear.classes.dir} +debug.test.classpath=\ + ${run.test.classpath} +display.browser=true +dist.dir=dist +dist.ear.war=${dist.dir}/${war.ear.name} +dist.javadoc.dir=${dist.dir}/javadoc +dist.war=${dist.dir}/${war.name} +j2ee.platform=1.4 +j2ee.server.type=Tomcat55 +jar.compress=false +javac.classpath=\ + ${reference.CineJava.jar}:\ + ${libs.PostgreSQL.classpath} +# Space-separated list of extra javac options +javac.compilerargs= +javac.debug=true +javac.deprecation=false +javac.source=${default.javac.source} +javac.target=${default.javac.target} +javac.test.classpath=\ + ${javac.classpath}:\ + ${build.classes.dir}:\ + ${libs.junit.classpath} +javadoc.additionalparam= +javadoc.author=false +javadoc.encoding= +javadoc.noindex=false +javadoc.nonavbar=false +javadoc.notree=false +javadoc.preview=true +javadoc.private=false +javadoc.splitindex=true +javadoc.use=true +javadoc.version=false +javadoc.windowtitle= +jspcompilation.classpath=${jspc.classpath}:${javac.classpath} +lib.dir=${web.docbase.dir}/WEB-INF/lib +platform.active=default_platform +project.CineJava=../CineJava +reference.CineJava.jar=${project.CineJava}/dist/CineJava.jar +resource.dir=setup +run.test.classpath=\ + ${javac.test.classpath}:\ + ${build.test.classes.dir} +# Space-separated list of JVM arguments used when running class with main method +# (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value): +runmain.jvmargs= +source.root=. +src.dir=src +test.src.dir=test +war.content.additional= +war.ear.name=CineServlet.war +war.name=CineServlet.war +war.package=true +web.docbase.dir=web diff --git a/Java/TP3/CineServlet/nbproject/project.xml b/Java/TP3/CineServlet/nbproject/project.xml new file mode 100755 index 0000000..7f7071a --- /dev/null +++ b/Java/TP3/CineServlet/nbproject/project.xml @@ -0,0 +1,37 @@ + + + org.netbeans.modules.web.project + + + CineServlet + 1.6.5 + + + ${reference.CineJava.jar} + WEB-INF/lib + + + ${libs.PostgreSQL.classpath} + WEB-INF/lib + + + + + + + + + + + + + CineJava + jar + + jar + clean + jar + + + + diff --git a/Java/TP3/CineServlet/src/cineservlet/Cinema.java b/Java/TP3/CineServlet/src/cineservlet/Cinema.java new file mode 100755 index 0000000..b39267a --- /dev/null +++ b/Java/TP3/CineServlet/src/cineservlet/Cinema.java @@ -0,0 +1,119 @@ +/* + * #(@)CinemaJava.java ENSICAEN 2006 + * + * @author MASSE Nicolas (2005-Groupe4-LIMIN) + * @author LIMIN Thomas (2005-Groupe4-MASSE) + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +package cineservlet; + +import java.io.*; +import java.net.*; +import java.util.*; + +import javax.servlet.*; +import javax.servlet.http.*; + +import cinejava.*; + +/** + * This servlet allows the user to show the movies in which an actor played. + * + * @author Nicolas MASSE + * @version 2006 + */ +public class Cinema extends HttpServlet { + public void init() throws ServletException { + String dburl = getInitParameter("db-url"); + String dbdriver = getInitParameter("db-driver"); + + if (dburl == null || dbdriver == null) { + return; + } + + try { + Class.forName(dbdriver); + } catch (Exception ignored) { } + + GestionBase.initConnection(dburl); + } + + /** Processes requests for both HTTP GET and POST methods. + * @param request servlet request + * @param response servlet response + */ + protected void processRequest(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + response.setContentType("text/html"); + PrintWriter out = response.getWriter(); + + out.println(""); + out.println(""); + out.println("Gestion cinematographique"); + out.println(""); + out.println(""); + out.println("

    Gestion cinematographique

    "); + out.println("
    "); + out.println(""); + out.println(""); + out.println("
    "); + + String acteur = request.getParameter("acteur"); + if (acteur != null && !acteur.equals("")) { + List acteurs = Actor.getActors(acteur); + if (acteurs.size() == 0) { + out.println("

    Acteur inconnu !

    "); + } else if (acteurs.size() == 1) { + out.println("

    Filmographie :

    "); + List films = Movie.getMoviesWith((Actor) acteurs.get(0)); + + out.println("
      "); + Iterator it = films.iterator(); + while (it.hasNext()) { + out.println("
    • " + it.next() + "
    • "); + } + out.println("
    "); + } else { + out.println("

    Trop de resultats

    "); + } + } + + out.println(""); + out.println(""); + + out.close(); + } + + // + /** Handles the HTTP GET method. + * @param request servlet request + * @param response servlet response + */ + protected void doGet(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + processRequest(request, response); + } + + /** Handles the HTTP POST method. + * @param request servlet request + * @param response servlet response + */ + protected void doPost(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + processRequest(request, response); + } + + /** Returns a short description of the servlet. + */ + public String getServletInfo() { + return "Database MMI"; + } + // +} diff --git a/Java/TP3/CineServlet/web/META-INF/context.xml b/Java/TP3/CineServlet/web/META-INF/context.xml new file mode 100755 index 0000000..b645269 --- /dev/null +++ b/Java/TP3/CineServlet/web/META-INF/context.xml @@ -0,0 +1,2 @@ + + diff --git a/Java/TP3/CineServlet/web/WEB-INF/web.xml b/Java/TP3/CineServlet/web/WEB-INF/web.xml new file mode 100755 index 0000000..112dee2 --- /dev/null +++ b/Java/TP3/CineServlet/web/WEB-INF/web.xml @@ -0,0 +1,30 @@ + + + This MMI allows the users to show the movies in which an actor played. + Cinema database + + + This MMI allows the users to show the movies in which an actor played. + Cinema + cineservlet.Cinema + + Database URL + db-url + jdbc:postgresql://localhost/cinema?user=cinema + + + Database driver + db-driver + org.postgresql.Driver + + + + Cinema + /Cinema + + + + 30 + + + diff --git a/Java/TP3/commandRun b/Java/TP3/commandRun new file mode 100755 index 0000000..5541a3b --- /dev/null +++ b/Java/TP3/commandRun @@ -0,0 +1 @@ +java -Djdbc.drivers=org.postgresql.Driver -Dcinema.db-url="jdbc:postgresql://localhost/cinema?user=limint&password=vilest" -cp ./CineJava/build/classes:/opt/netbeans-5.0beta/ide6/modules/ext/swing-layout-0.7.jar:/home/limint/Downloads/postgresql-8.1-404.jdbc3.jar cinejava.Main diff --git a/Java/TP3/install b/Java/TP3/install new file mode 100755 index 0000000..d3c5f11 --- /dev/null +++ b/Java/TP3/install @@ -0,0 +1,9 @@ +Decompresser l'archive de tomcat : unzip ~/downloads/jakarta-tomcat-5.5.9.zip +Aller dans le repertoire de tomcat : cd jakarta-tomcat-5.5.9 +Corriger les permissions : chmod a+x bin/*.sh +Lancer tomcat : sh bin/startup.sh +Verifier que tomcat est lance en allant a l'adresse : http://localhost:8080/ +Creer un repertoire tp3 dans webapps : cp -r webapps/servlets-examples webapps/tp3 + +Compiler avec : -cp $CATALINA_HOME/common/lib/servlet-api.jar + diff --git a/Java/TP4/NombreADeviner/build.xml b/Java/TP4/NombreADeviner/build.xml new file mode 100755 index 0000000..e314393 --- /dev/null +++ b/Java/TP4/NombreADeviner/build.xml @@ -0,0 +1,64 @@ + + + + + + Builds, tests, and runs the project NombreADeviner. + + + diff --git a/Java/TP4/NombreADeviner/conf/MANIFEST.MF b/Java/TP4/NombreADeviner/conf/MANIFEST.MF new file mode 100755 index 0000000..59499bc --- /dev/null +++ b/Java/TP4/NombreADeviner/conf/MANIFEST.MF @@ -0,0 +1,2 @@ +Manifest-Version: 1.0 + diff --git a/Java/TP4/NombreADeviner/nbproject/build-impl.xml b/Java/TP4/NombreADeviner/nbproject/build-impl.xml new file mode 100755 index 0000000..f6839f6 --- /dev/null +++ b/Java/TP4/NombreADeviner/nbproject/build-impl.xml @@ -0,0 +1,603 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must set src.dir + Must set test.src.dir + Must set build.dir + Must set build.web.dir + Must set build.generated.dir + Must set dist.dir + Must set build.classes.dir + Must set dist.javadoc.dir + Must set build.test.classes.dir + Must set build.test.results.dir + Must set build.classes.excludes + Must set dist.war + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select some files in the IDE or set javac.includes + + + + + + + + + + + + + + + + + + + + + + + + + + Must select some files in the IDE or set javac.jsp.includes + + + + + + + + + + + + + + + + + + + + Must select a file in the IDE or set jsp.includes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select one file in the IDE or set run.class + + + + + + + + + + + + + + + + + + + + + + + + Must select one file in the IDE or set debug.class + + + + + Must set fix.includes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select some files in the IDE or set javac.includes + + + + + + + + + + + + + + + + + + + + Some tests failed; see details above. + + + + + + + + + Must select some files in the IDE or set test.includes + + + + Some tests failed; see details above. + + + + + Must select one file in the IDE or set test.class + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Java/TP4/NombreADeviner/nbproject/genfiles.properties b/Java/TP4/NombreADeviner/nbproject/genfiles.properties new file mode 100755 index 0000000..b49a98a --- /dev/null +++ b/Java/TP4/NombreADeviner/nbproject/genfiles.properties @@ -0,0 +1,8 @@ +build.xml.data.CRC32=f279e697 +build.xml.script.CRC32=7b4db3f7 +build.xml.stylesheet.CRC32=b4cea8bf +# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. +# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. +nbproject/build-impl.xml.data.CRC32=f279e697 +nbproject/build-impl.xml.script.CRC32=f851af4f +nbproject/build-impl.xml.stylesheet.CRC32=7ba292d0 diff --git a/Java/TP4/NombreADeviner/nbproject/private/private.properties b/Java/TP4/NombreADeviner/nbproject/private/private.properties new file mode 100755 index 0000000..5ea60fb --- /dev/null +++ b/Java/TP4/NombreADeviner/nbproject/private/private.properties @@ -0,0 +1,5 @@ +j2ee.platform.classpath=/opt/netbeans-5.0beta/enterprise2/jakarta-tomcat-5.5.7/common/lib/naming-factory-dbcp.jar:/opt/netbeans-5.0beta/enterprise2/jakarta-tomcat-5.5.7/common/lib/jasper-compiler.jar:/opt/netbeans-5.0beta/enterprise2/jakarta-tomcat-5.5.7/common/lib/servlet-api.jar:/opt/netbeans-5.0beta/enterprise2/jakarta-tomcat-5.5.7/common/lib/commons-el.jar:/opt/netbeans-5.0beta/enterprise2/jakarta-tomcat-5.5.7/common/lib/naming-factory.jar:/opt/netbeans-5.0beta/enterprise2/jakarta-tomcat-5.5.7/common/lib/jasper-runtime.jar:/opt/netbeans-5.0beta/enterprise2/jakarta-tomcat-5.5.7/common/lib/jsp-api.jar:/opt/netbeans-5.0beta/enterprise2/jakarta-tomcat-5.5.7/common/lib/naming-resources.jar:/opt/netbeans-5.0beta/enterprise2/jakarta-tomcat-5.5.7/common/lib/ant.jar +j2ee.server.instance=tomcat55:home=$bundled_home:base=$bundled_base +javac.debug=true +javadoc.preview=true +user.properties.file=/home/limint/.netbeans/5.0beta/build.properties diff --git a/Java/TP4/NombreADeviner/nbproject/private/private.xml b/Java/TP4/NombreADeviner/nbproject/private/private.xml new file mode 100755 index 0000000..31d1bf0 --- /dev/null +++ b/Java/TP4/NombreADeviner/nbproject/private/private.xml @@ -0,0 +1,10 @@ + + + + + + file:/home/limint/ENSI/2A/Java/TP4_ProgrammationJSP/NombreADeviner/conf/MANIFEST.MF + file:/home/limint/ENSI/2A/Java/TP4_ProgrammationJSP/NombreADeviner/src/NombreADeviner.java + file:/home/limint/ENSI/2A/Java/TP4_ProgrammationJSP/NombreADeviner/web/index.jsp + + diff --git a/Java/TP4/NombreADeviner/nbproject/project.properties b/Java/TP4/NombreADeviner/nbproject/project.properties new file mode 100755 index 0000000..4e3591b --- /dev/null +++ b/Java/TP4/NombreADeviner/nbproject/project.properties @@ -0,0 +1,65 @@ +build.classes.dir=${build.web.dir}/WEB-INF/classes +build.classes.excludes=**/*.java,**/*.form +build.dir=build +build.ear.classes.dir=${build.ear.web.dir}/WEB-INF/classes +build.ear.web.dir=${build.dir}/ear-module +build.generated.dir=${build.dir}/generated +build.test.classes.dir=${build.dir}/test/classes +build.test.results.dir=${build.dir}/test/results +build.web.dir=${build.dir}/web +build.web.excludes=${build.classes.excludes} +client.urlPart= +compile.jsps=false +conf.dir=conf +debug.classpath=${javac.classpath}:${build.classes.dir}:${build.ear.classes.dir} +debug.test.classpath=\ + ${run.test.classpath} +display.browser=true +dist.dir=dist +dist.ear.war=${dist.dir}/${war.ear.name} +dist.javadoc.dir=${dist.dir}/javadoc +dist.war=${dist.dir}/${war.name} +j2ee.platform=1.4 +j2ee.server.type=Tomcat55 +jar.compress=false +javac.classpath= +# Space-separated list of extra javac options +javac.compilerargs= +javac.debug=true +javac.deprecation=false +javac.source=1.4 +javac.target=1.4 +javac.test.classpath=\ + ${javac.classpath}:\ + ${build.classes.dir}:\ + ${libs.junit.classpath} +javadoc.additionalparam= +javadoc.author=false +javadoc.encoding= +javadoc.noindex=false +javadoc.nonavbar=false +javadoc.notree=false +javadoc.preview=true +javadoc.private=false +javadoc.splitindex=true +javadoc.use=true +javadoc.version=false +javadoc.windowtitle= +jspcompilation.classpath=${jspc.classpath}:${javac.classpath} +lib.dir=${web.docbase.dir}/WEB-INF/lib +platform.active=default_platform +resource.dir=setup +run.test.classpath=\ + ${javac.test.classpath}:\ + ${build.test.classes.dir} +# Space-separated list of JVM arguments used when running class with main method +# (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value): +runmain.jvmargs= +source.root=. +src.dir=src +test.src.dir=test +war.content.additional= +war.ear.name=NombreADeviner.war +war.name=NombreADeviner.war +war.package=true +web.docbase.dir=web diff --git a/Java/TP4/NombreADeviner/nbproject/project.xml b/Java/TP4/NombreADeviner/nbproject/project.xml new file mode 100755 index 0000000..3675591 --- /dev/null +++ b/Java/TP4/NombreADeviner/nbproject/project.xml @@ -0,0 +1,21 @@ + + + org.netbeans.modules.web.project + + + + NombreADeviner + 1.6 + + + + + + + + + + + + + diff --git a/Java/TP4/NombreADeviner/src/NombreADeviner.java b/Java/TP4/NombreADeviner/src/NombreADeviner.java new file mode 100755 index 0000000..307d6ab --- /dev/null +++ b/Java/TP4/NombreADeviner/src/NombreADeviner.java @@ -0,0 +1,151 @@ +/* + * #(@)NombreADeviner.java ENSICAEN 2005-12-14 + * + * ENSICAEN + * 6 Boulevard Marechal Juin + * F-14050 Caen Cedex + * + * Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + * reproduit, utilise ou modifie sans l'avis express de ses auteurs. + */ + +/** + * + * @author MASSE Nicolas (2004-Groupe4-LIMIN) + * @author LIMIN Thomas (2004-Groupe4-MASSE) + * @version 1.0 + */ + +package nad; + +import java.beans.*; +import java.io.Serializable; +import java.util.Random; + +/** + * JavaBean choisissant un nombre aléatoire + * et organisant sa decouverte par une succession + * de proposition / indices + */ +public class NombreADeviner extends Object implements Serializable { + + /** + * Constructeur sans arguments du JavaBean + */ + public NombreADeviner() { + this.rand = new Random(); + this.number = rand.nextInt(99) + 1; + this.numGuess = 0; + this.hint = null; + this.success = false; + this.propertySupport = new PropertyChangeSupport(this); + } + + /** + * Le générateur de nombles aléaoires + */ + private Random rand; + + /** + * le nombre à deviner + */ + private int number; + + + + /** + * Nombre saisi par l'utilisateur + */ + private int guess; + + /** + * Nombre d'essais + */ + private int numGuess; + + /** + * Information (nombre trop petit ou trop grand) + */ + private String hint; + + /** + * True si le nombre a été deviné, false sinon + */ + private boolean success; + + private PropertyChangeSupport propertySupport; + + public void setGuess(int guess) { + if (guess >= 1 && guess <= 100) { + // guess est dans la plage de valeur + this.guess = guess; + this.numGuess++ ; + + if (guess > this.number) { + this.hint = "Choisissez un nombre plus petit"; + } else if (guess < this.number) { + this.hint = "Choisissez un nombre plus grand"; + } else { + this.success = true; + this.hint = null; + } + } else if (guess == -1) { + // réinitialisation du bean NombreADeviner + this.success = false; + this.numGuess = 0; + this.number = rand.nextInt(99) + 1; + this.hint = null; + } + + } + + public int getGuess() { + return guess; + } + + public int getNumber() { + return number; + } + + public int getNumGuess() { + return numGuess; + } + + public String getHint() { + return hint; + } + + public boolean isSuccess() { + return success; + } + + + + /* + public static final String PROP_SAMPLE_PROPERTY = "sampleProperty"; + + private String sampleProperty; + + + public String getSampleProperty() { + return sampleProperty; + } + + public void setSampleProperty(String value) { + String oldValue = sampleProperty; + sampleProperty = value; + propertySupport.firePropertyChange(PROP_SAMPLE_PROPERTY, oldValue, sampleProperty); + } + + + public void addPropertyChangeListener(PropertyChangeListener listener) { + propertySupport.addPropertyChangeListener(listener); + } + + public void removePropertyChangeListener(PropertyChangeListener listener) { + propertySupport.removePropertyChangeListener(listener); + } + */ + + +} diff --git a/Java/TP4/NombreADeviner/web/META-INF/context.xml b/Java/TP4/NombreADeviner/web/META-INF/context.xml new file mode 100755 index 0000000..f6ba874 --- /dev/null +++ b/Java/TP4/NombreADeviner/web/META-INF/context.xml @@ -0,0 +1,2 @@ + + diff --git a/Java/TP4/NombreADeviner/web/WEB-INF/web.xml b/Java/TP4/NombreADeviner/web/WEB-INF/web.xml new file mode 100755 index 0000000..9c98471 --- /dev/null +++ b/Java/TP4/NombreADeviner/web/WEB-INF/web.xml @@ -0,0 +1,17 @@ + + + + + + 30 + + + + + index.jsp + + + diff --git a/Java/TP4/NombreADeviner/web/index.jsp b/Java/TP4/NombreADeviner/web/index.jsp new file mode 100755 index 0000000..98736f2 --- /dev/null +++ b/Java/TP4/NombreADeviner/web/index.jsp @@ -0,0 +1,56 @@ +<%@page contentType="text/html"%> +<%@page pageEncoding="UTF-8"%> + + + + + + + Nombre à deviner + + + + <% + int guess = -1; + String param = request.getParameter("guess"); + + if (param != null) { + try { + guess = Integer.parseInt(param); + } catch (NumberFormatException e) { + guess = 0; + } + } + bean1.setGuess(guess); + %> +

    Deviner un nombre

    +

    + Bienvenue au jeu "Deviner un nombre" +

    + <% + if (bean1.getNumGuess() == 0) { + + } + + if (bean1.isSuccess()) { + out.println("

    Félicitations, vous l'avez trouvé en " + bean1.getNumGuess() + " essai(s)!!

    "); + out.println("
    "); + + } else { + if (bean1.getNumGuess() == 0){ + out.println("

    J'ai choisi un nombre entre 1 et 100.

    "); + } else { + + out.println("

    Non, désolé, essayez encore. Conseil: " + bean1.getHint() + "

    "); + out.println("

    Vous en êtes à " + bean1.getNumGuess() + " essai(s)

    "); + } + + out.println("
    " + + "

    Choisissez un nombre:

    " + + "

    " + + "

    "); + } + %> + + diff --git a/Java/TP4/WebChat/activation.jar b/Java/TP4/WebChat/activation.jar new file mode 100755 index 0000000000000000000000000000000000000000..ab80b388e14afa4faec247ce2a356513ce86dd55 GIT binary patch literal 55147 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 H&;R;=`tjoe literal 0 HcmV?d00001 diff --git a/Java/TP4/WebChat/conf/MANIFEST.MF b/Java/TP4/WebChat/conf/MANIFEST.MF new file mode 100755 index 0000000..59499bc --- /dev/null +++ b/Java/TP4/WebChat/conf/MANIFEST.MF @@ -0,0 +1,2 @@ +Manifest-Version: 1.0 + diff --git a/Java/TP4/WebChat/mail.jar b/Java/TP4/WebChat/mail.jar new file mode 100755 index 0000000000000000000000000000000000000000..0c0166d54fe7ce08dc136cf2389476f597fb6296 GIT binary patch literal 355193 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

    u-g6MVho zApK~e1FzgdyDRh1qGtOdBNHHA0Sg|bt0hcIx7Vg<1F^st?LOT{hP(oTG8<+s{e?Ev zf+37pmVq~rdD-HkQAZc&U{bZI&sg(%WZ0|pU|d2JWe4@mX!D3;K|8X^z`GDZf`Ikf zr1Tqgx(S_T9(d9uyW5Nqez%r5meME@Wp$OZo$w;aZGHs%`ObWxQpg`Fusi85P#00|0_Uy$v87MC=KOX;_P z4qJ&mP31O_vLhW;CokM#;K^!v2FU1Ag4SgSZqb&r1t~43S-{!EIF9Y{5qpSwgAke9 z(O(M7HUIc&A@1g1_9}$Hm=i^N@92A;UxNhgx8b{aNzk^n?D5wU=ZD+$GSJ^ke7EIg z{=b)aZu83oe=iB#)|d7ET1v)bFgu3oRI5#|A?ZtDy7_)Bqs!4&*h3eIc#bn5Lef^T zVuuKG!j#HZtZ!Cx@0v~~vx7AtT{+_p#1bzRW$a5`L<`0wvpgE%En8nMie66(#}cwK z3Gw15YqeI)J70A)&F?am)M=fc+etqFM2}?q63!6W;~jsXxoID^B8i4r#Gp5>RalVB zDf~VoR>SfN{ppR}bSIH@l@iyVauBM1?^9@vYn7H&5^%_4w?nsuJ*Bb7;Q=i%VToZk zySI{Zc-}Zl*vM5bPNHQtOavrj1|NR0g467+*|dc1@U4@K8WOZqySuY_cC@$=eC)xV z)%85(r+fkz$?>WOYN)EHqVXNYCv8c}yQF)@Ra;j{qTaf7o$rcYMcx{idWx3dy!67Z zpGcEjlj>2faV6v=hYla&FK6=CX7?FK#DY)2KOB4c4pRa8#jWrl|Ba#G|COQsh^?NE zb;b;rRWB{P_fE=tXdL}Le<;5UMGk&GYzDc5>C-VS8tt>#BS>#oRR#b*i?ZEQI|-YC zOz)81i@vl;i03W-A+1MQQPqRFYP`v_2$f^%PCG!wEN}%>x0){v=e84O_Y@gD23_!( z@CjwyfoYgy1zGCiR*~u!dh$|dAn6Was#VgLW%1xeL_v{|{B*m4r_-Y^=82LUjwbUH z#X&rTGu*WOlWu6}@gjQLaYf)1vCD$K>uApUH)rXa6oCzS$ulznT&z$ry?6_Dme&tL z4JX}TaQ$|T@(loB@_&>7G=Jpy z?>*4}*aP*yd;Vbl*T%mGo&ED>=>NWv?|)Q?p1F>lord(7Xdf>!SCd7oY+gmf0|@o{ z!#AOIMc@)}(HTKgw9CQ?>B4*@3F1yqQFRFFcL1kP?=1Yye(L^#bvsr&wx`Uun~z6W zZCo`Jd?bQ;j1by{#k-!5B8X0Q;5TU# zgGlfJMK=M`hdf@yQlNqZL3Z3RXVO7Dib?s@ojsU3p)#)I5RRRIpHf^~{i0HC{+b#C8*Ys6za$`=Gd#Qa?caoby@bDEwH zjemDIC#lQE937P`$Tgaqpn-Hk2JJM#Kr!d_9g%0Jn{oP>hNX_&QW?1BBE-MJP7JlPlRg1?^sr(gdGH}yZ@cCa@#u(UVP)3G

    b`Gr;2RUa*sIu(I-a%R0kWhf#9VRFV<^_Bra0EUx zM1wrBs6dXmEXvtg9TH#$(rAZrk&rP`C}~{e+vbP!B{wJHI)6a|8~*-BMzr+t0Fp>C zY7M0O&x$s#gkL+A8nx zGsiUaOZrjRIH*ER&)H^=pVEQWy9ieIQ*1fMdARL0I-(7K96Yg_W@Vhxmp+300iV7h z%?s}f_{9GT{vS8uZ^8LXC?vjYrH+w_rO`hSkC2rxo0mrBs=AAL`E^$Bn68>(T9&|w z6hS@zQ*d4;XO^r&P8eRjeNi|(KV&}-Tlz)|{L|O6RazQMJ-8CM>GRuCrAFCPfe!jA zIAZfv=iOw>)B4lx#nX@!z~r7d1c-P-_O}1Hu6VOz0Pi zMzbI#4Ej~|pi-6&Vc(tU*o)8uV>^v!GxrU={8AW3^PtWPRVdl)qV1AJ!WP{S>y+~+ znZQ)$rzjCf0n1xb_%{)=C=V;O)>SMguK@_Ej^99mvTI@QFg9z6NDHd?;LU=8Z~1nz z#ksyRC`EJ>bv7u1@#v?w#b%baYjkjs7_de6`lO>{5`nb!^BA)veT*G0KA&NDufqTa zaishpTn6EhKcv{$3Rs1H`OylQsa*M-oC5`3b`?-z; zZXV+iB&-09nho!;H*_ITl!e^lpX{F;XU;lDrNfizMK-B1mVfoqjE+5e845;NrNo*r z%p7rQd$F3+!=BIChWQx0_eo+D;ttS|La)VWjRfvCX(0LMimjo-Fp zc+1s`Xml|Ic_fjClnYf=n7&r7SsQj)j{AC!JMrLohfK{bn$P{yInJxmC3|JwC4{I# zDGkU8Tsw2^oWoFpn@$zk2TxDr-lV#`2Ko(H=`5%G3v17>x_F$ki3b zO3>{zY@2EQ5n`;-g?Wc9ciKxJ+ACGd*)<$lq=wrk>Jk>Cm>sAFVPCcwqro)e1iHL7 zDLv)&g+r^)L3l&h$@WgTJGU9mNaC#0jrX1NrOB)^7D>cGUNEc-CA2PGC>tUtq&1G# zSg`NeL>6J^j<*urxWLF8sVcgx)6Kw2Et%vmh6W_j8xf;l4EjP32Bh#@y~<4CPw07^ zK9U)t_sIN|_>W9**(2jj^;4->3cnKTQqEzcZusmqB;3veo|= zru<(UV%xQV;|Wa)shYk2q=vvD9C!GCX2E_|My5 z&oa9r{gBL*<|UK+GMC>5RXrDyj<1A8QQb#sDIpg_=3#nGX$LSFa7 zo9{Eu*#b|sJ`*^QGj*r2CU72&Ra{oHg@V4%rKQxu3h@#3(sw+HEQL@!VkLJl`50PB zWp_pQYa=WUgR}nN%&#FB-%BR9>*oPI>kntO>iX%H8HplWBd9!LzVN$A6JBx7irW3J z&{ymSxEkY^$@%y(pcF2W z2#z_GI#Hv%*_e)%B{#ms(AXhpS8|<%Ag6Y}ezZO}WRql<_dpbvep$wSqMJidi{4)& zVXV$He)Lu}AA@X@_cSbIMHTtC(b0xv&BL+P==z=(s=`Vf$*A*EROlyA#w(mFDCu}aP^R1u|?!V?#K{ujQ!<{z?9k_z^6xi2_=QB%ZC!CAnh_; z0r!BblzwW2boR*g44)MOV35{wSuHEXJ-yZpVu@c37*hBml93AQTqAe}NOy z-YBl0uBK~PR<=ea+QIhup4rqgcB**{37Dpwo1VfnFmavThs}J143i=I z!pZX1?N@_ly#nvU`%O2&2#N@bGAoK;lr&m!P}s7L+QHh_9KIsI^&pbpCo-HJ_%Tt; zdMf<8_UIK_M{%~qDXhgI6034`5pe@>mh{SWIPLyx5?u+xL#HOKm^>PRum@a3nZ?0w z$`4(2X8Wz@_E=J^YBE#NF=E(*#uW&Qo}qa(yG52PDCTQL$`oN52;zS`N%RSs>!Q!S>(cq7|?u^~4r_rYKvPSN)tg6umM zS5MA35wSAsf_`)fBYcftEnCrl)jU=c@1#zDLNav0rvf(@v`wV-v3O{dmI%mRY+-1d z0(P=^p9eqxnzjM*4O?euAxK2q=t0?yf|1X=8}pN+oDX7A2dK=fj@-wAUbZN^-Y4!S zXbdI(En(0vO@3w_F}}u~R$pYsN!WApUov~^)2wcoM}>oAJry9a-CUMa)g0AT)t9|o z5e@)BkZ0hR6vIFjTL_%;(ZbS;?J&ipuI16(st=5+s#{3G%{?Ft8r}Sg~JBLbqWvooB|5yA26h-W?1kpVzEGS(l)k3Lu zmth@ya|Z;Hv8~`aU=f^wu)u;G2qPx)DMyGReEIoocEA(708ng)iGrm25s4MLspPj= zc)xjhW3g;M7*l>tw6T+RDtmiy+qyN(fBWtJ#N|CygU}05h|&)43pU4>-W`U`N^z7T zIli0z{czu!yT2oe@YL5=9843IZ-C_5^r`{6*dQ~YIMQORyn4xl+Z(? zC)GC$@YABgToE|;E~$Y+wbc|;?SzTTC~@>Ff@qPQnGZWWU9jkYSeXq?J3*;4M`nS5 zxaLLxL^!i2(U=~t7MFElH9>~4Q|-o*Du;MB6mz+?pTZLKs8Jn0Jy4)(8^}-=WI-!c zE5!3-D@s`vEm57k*|uLFIR#9KZqI4SNbj`3EWk&CusS^~XE@(ij(t%WN z{ES1~%tSBnVniu*qF`Isq*->NgQr~!9b-6+e6x3Le7?XMkYDomaYAV0$Rh_S!CSnF zCdOtX>sC)2`QS|^B#a(;?QqF3zY<+I!s6IO%-cXUz4EB0A=`PdejL3R>_D6_M`~sX zI~i}62*cp*KSxdwfM&!Tnw-P*R}7nwc^cbuoZ?N= zn|j^C0yd=yd^4*XkBRcbUQULIfIn>m>v~F5pPzOqbDbPY?=oLeRhh(M!DBt9hndujUfXMoh(()m ze2Il=js!%edzi-Dh@Pn%C`2!j+OzUarSq!@W*<7W?Odv8cJfmYH*Bl~)r*LiKv}0> zYI-YY>%S8%mhFZkhLs|zoO-Bdt@)|X?d1t_z+^{&FeB_QW%fu?&$*er4B5NtZ+H$g ztN7pjn7%uqJSPBl$!t4uV|!hTJl7FzBROMES)(*j?)TIw!esT`QCpr_IjwDdAEMLY zm%3>k=ZO}-$n8S$e~$v#@zZ*4VHm-NEByS+|1d&tV`m2j04V;-qyJ|OMED;xkbsW8 zj+~W)t)9W(u84({SZFUVyhj1X+SIcOWUkr9@}&_=q;EEx9uWs?>Fl07mvN-8APPbOMR%%T{A_@F$H9K3F)_Abk3N@b^JbSk*? z8$sNaz}EqHgwwh(E6K@0ncV3_7px+qt#J$E{w7g=BdOeXogpd1^dorCfMyo*pCo9< z(RsX8PGEau7#&4H9!3n4N~gIwTH=f%y*?4Xzt6~le~Oe+P9<^r2Ep;Vf{0F+W@p}~ z%5y1Y-+Z9~29EuLzcv2#-T!1|{xdrG|BjB3fxVuww5^rlS1N{3#NNQ-Z)`kdEW~=H z(YcnA)(=OMYHP=98OMLTWdh@2`ik=*yduw8GN&LNLU$?fkm39Ldh+s+yIxY!2EW=) zxj0U-O|3kB-rRz2qrYMH{wlfFqwu!?X%(^;9>)NY@o9t91$_EBOizlECs)FfiW0~> zvBwYEamcz(wRY${J_LR8+TG4nG>~JmGC=<1$|B)pZ?VEju}_ju!xHW|V63$mZt91p zT#=R0L^?qil#WMzA-HD$I*@quHCCDuifF8+T`o}I^XY*vX#8LXC56CYY-dn^`M`4R zeDz*{?BU$1iiaj%)r`@`t=%+aZF$O57++-wGM0T;85VCS`t?e~pE-wLSU_0*JDmV} z?wxPMrS}tOU;~eAbj}oJ;TAlvY(KnMC}9X)2)B%&F0VOIAGribs)xU-4yYold*D?J zv8uokq5+^&epgT^7^!kmJ&l&c=C>B5XPR9f3|}ebXimZw{1);S=BRKv^y#8dJ;*eC zvGpJr6|*>0Sp?bFm_ht`sXr7&Kr#;W{i3Gom(~5x6#Y}f_!pn>Un%-GF(YEtq>%WK zhknmdZ8TC+RiMI4muElb)`!0O&Vb?9i1-nsBOaKnMH-AaiZ!a`d48k8NWBZvpv6jhVQkt}Bf=0@6DnFP4s%&O*tpRE6B^!B3OCFLN&&f|nUx-F#@fPw6M#j!OsB)-> zzi{wvq&hH3#4G_QPBgawKooqhUMRHgFo=5KPjGF*hi{p<;04S(9W6dMeE3qX*qx5c zNT)kwD^teb$`Bokfy7OG$a?1>9@DjHhCM~9m5?z8gQ3Po$AI{AqppHmFN({gJF0dR zHZP;yZGo-yAB=-c3uG$n%RHrA(S_Gf)77x8#0RR}eY_-=&%mQooZKJ^mmFz=2aFmg-n)}k$SR^*Ptro8_ zf%V9u;L+%-&DKBVf63IA;0yAxnji=dDG$V){jyQ@>HlW4-J8Jyw%rTztrQrM#~U{w zSw*G$8}(I3N`?zV+uPpJ(iMRD`Y3-N3ea71X`Z39^ilYLb;b^8A9EipKfjx#N4Yt6 z8(@o}*EKJDEmicT|7DE#N(8>wD&z+1qn?kf)p=&C6y}g6JaaRCCH*GC^ja-R(0Ymq z$HZhbeTJr;R~CbcaHD>f?1@jjN3NfbJ#f7YEfTy2`7%_lwquf{>BcLbjM?oln({eF z%oYzD&dXd52PBzZbLP>I%|fGv&%>%$V@aHW=QU$0*Q1e-@Y3pCufDgUo|hgiTZ*eE ziF9VET~LL1I{!*PJ2|^0B=T>QsUs|6)M|a*6rBK_gq-2(LFwLDUY|Ft94u_6%ZR~F z7BN{bHQgjluS`$8AbPi0^16!M1b-zYYU1`pYZ05!CgR0kGp6vYQZa%uq07~i(Y4H- zyzcqGwBxLOOnsVu?O}g>x}|!2Ln}#rV=fVbH!7ck$MtN|SFjDI;-zwfNYI}aGXQ1X z%H|T!!ux>0NW>tjqjVs0NDN4yWh;OZJxbV=UDfX3EUJGo+JTe+CQj}n)A+=Y@ba-} z@3m+T?8jO!szatO8!FE2UMiG?S*i~HJNo#}OC9+Br3-QYEhG8Q=mYit!$g1cPk@q{ zy!;Z%Co=;rt-1>YX*Q~?sE#4LxUL?)hyXe~;PNefc7^6nXkK4b|1lWONt8c#m(^-BCjB8f077ecgOa9Qpn#p?%3WI*Me8 zvXR9r>4?G}!NoVpsaxun3I1Da~1~`$b94(b@`sP~BjO%XJPurBokb1d^4TUifehMzOmQqF{X@_3{;P(i}#9Wk%{%Fgp5>U`x0 z4D2REu`$l(y4gug(5RA~HXE%?`{QrExs|^tV_kW-O)Sy~A-HZ-#H6{ALsSS(UiuVu z)lvG{)h>Rbu^&n(mKKX%%0rzht)(T@7VbW zI8z!3>5fc6v2+MEpD+>$yrrYh9@Ay;1{_lBS0Y>WRy2tTtkTHrY{TN{%agAPClNMK&n3U^v6K zLD%DH{|Juuu@MJfJThScirP&Z{V4YtvYza2x^DKd+G~fCLU)#>DpL*_>y~p~?FLb2 zoUSrVqAlOB6=S-Fe#AuY(PRnCaE+bbg8-V^t@Sy&Zudc(KNlpbB)y46q@lQhq>f8% zN5*tUslsr^K0ry*}!JINd7n+4^I$hc5-y|)TFS< z>!<)KMG%v_$$2KjabjpO^`n0~Vv8Y;#&&Tfl~Oub)48%Si}{c_3Tz^S9-6&V>=nO} zznllIaOL%;Gs8oPRJ~ISN9QzW+MP5F$Rmt{;NVs&*IR>gF%P09DTnR7Tgg^Zo>gHdk_N_yr@YN%oY;!Qm_|Ls&~3NGuWmaakZ&#DrqoVhyf@+% zu4O;tZ9}a}P2z1T0q>6iz|gb3^^9G-d9RH~vwM5)zL6)Ks`x%JLnaAs0pcD+q#uhF z4@mTS2HAI*8J#YqxbD<2Sg6LBgr@jjWgma1S{ZI|4+3nm!|w_LeIJcPUql#skry=A zK)6ALENW-jk+a){rOrw2iuG7Iejv?#myo=NGkK%x4Bwi`qw!?g;6M8tIc(`)8B!d2R8wt((_RU^_RE8H!nR2+&jHPq}orX+grHC*RJK& z--ZmIV14OQyItxtSv%zUW|hO%3fIpooaP>(w(f>i_A9MwPudRMm4)jD#t;W=zzH@q zKe(Us(a#F{Be!GghSyK`@;Ue;8d=hBoLKS%8edHWipQ5L{C&@wJ(slG-T?c)L_ERGG{f^7+1ATpD7NS|RfT+X>>EK-Cv;@add#99<797gRIwj98cX!QDi*3zCY~_W}=B^ z|K{j7cFltwKS&-wDf5XV3?ynw@$*7!_wu$ZZf(E@RGE~=T}@cXZ5os$8>%MuI#py1yc<^E~0|53IP zvNHc_Z6lO7u(dF;)Umg+6?FV+82Hd+MRvs zY@?L-w-g!3bKeJpWI+jt)il_GUPZ|> z793jQXhyk1pk@hvj)Oa&2I%KR$ahLrC}SQK!Wps6oMI?4c3P=I@l@$=5I?=!-XR@d z{VPcbFV|Y3Rfei7u=C3i4M1t1^HNEyUYDniJq4tSwBZsPq>PI_4rmQmQB>)O=_2<3 zs#Y-KefkD{d1L(lH8Mr}hd1^YZU3fag0hLW{F1}x<+xh@4j!Qop%4KC9&n-|q5rbE zB3l2jA|*sPuyXV=4x`i$H%0HD9y*!P1_<a?!t39ZxT)bp;dC1mx>8Ner~7lp7_(cTqMaunMB5YO-o&*^g!KGaCRooke)*Oo+!?+l>}i-e>~hf zbtj%odc#Zj-1yviNx+EaSA5|Z+}1j3lHBWJ=n z?v%d7?x?!pEK>qebVs^GL5O~jGC2av9Edp+k|8k?hyG)JVeAT^>xRPXj`D3Z22C=8 zFsqtz;XzDV(Kwk&nQJ}|ldF-Whi_S%BTl;?0BeZ_j#Q*kldPFqN!IGqtQ=Qj5$b&u z$wW^{h@YV=t0OI6sORuF>>x3#>inYS4_DGO94VaKV;BA73{gV!LV&Kv^UEe4(+reI z=AcO?pW_=DJK0yNys!X319c|-t3CXu)G`hg$w-ZwdX#TWmWi5Ub+f50hWFi5PP0^_z&+6h$xe*H`o0I&i_b%Qf;P_S`ucY&#~adWqPR{GbL1@=oX@~+2yNns>77$;&Z?=nyk zS`ks{ z?B1MtdDr=K>?9ZW%#Ia`0(~I8W^HYBH|Tb-Cd_6D=B6>?Ks6BZFbZ%Wn`BT&y|26H zJILs11Bw7aRPPp3Ns6o$4Gxai`#kL?!N^dYIv*t^ehX9%=YT76GIC(fXJ`XN;NcC zuiuuJvbI85mnpw$yv+@@9QS1>Vcfg{e&vIMF zCc=j-q_SWid^S-tGr<|J`_OrGT=}`YRtV6X;hL7)VB3>Ze;c{e+Mx&%Z~*=S-#j?@ zm{x!!0)av>2~RP^(&vz+Wxu>Sj$9FoHOdHvGYEg6HIgV~lq^!Slf#031;Oc_bWqUo%jTU*vp=O{1Pw`@!Tx~JRvFIZ5Q2;C`Y?IPO z=*3V+(0sP=wUJG^ywsi)6FVQwQQ$4FZw8x4gi@=)IpNiApThy)a6wmWtCSYc8=y{% zQAd(BDr)vA;lX?K8uaji0;;G}f04Wn&be-~Np3tXY(1-PPOypm&M^uCj)Q8G-RUQ} zb7AxKulSl%=L*Ylha|4=csZR`VwP!Bb>yE4~u+YP;i_|S@Im)3mgT#i{wG3{< z2X2=(6)rom2^WG%gGJ5XheOds&K$zC*6qn)G(d@KcKRcF*!aE!@Z%I|Dp zw+y#i(BX9&KDLcRq;`l0rM{34pp^1gL%I);m<^8gJFM(BKM|UNoMw&jYe6J)PTZ5Cn^-GQllI|Nv?Ilq5<>|E*Cos71{$Ywo0Xu{haSr0f^o~4w*UK2@ z?6b`*49$6xBUeMM+i$_B}`$JW|EOLk1XaVsN(Fdmz)|FCC zEq~li#p9+{6U}r{R?u-h!Y!2as_!j~^3B_zLtgQ!d9sL8CjY3<{AvIUTY4fAY}628 z_merDX4iAM;6^{h$qNLRJl7o^mn`?4+_NJ1_Uzdh;eaK0SVG6ZNarQlpsBw#Gl+jx zehl4Q|NBI)Nxtg{bm|lXx4R1m#W0u_WUCdTLMK7|gUx#)%K1}^M{vQjg{-;M`h;fS z2fJG9satPXN?(Cmd_~bTyk)x3Se!C*#3ERB2J$ZQe8i|om$A9?dxR3dl(agGlom(c z3TO@D9k_1l55uovjEILXnL-6ts7#$k)#FaE6z)eemu|2Kvy0E2=YS6(PN1eBd|c14 zyd6KKs}SeSfFIcTG>D5SfFCq`Uvc<8ytAp1=A+cJxnCxEHSQ)k52^w$wSsNEU=Cl* zWKOF1BY1)hK3&VNgQhR71pMonJ`I(ks~u@pr{7%0mTAF6;%Jo^{dY$%rm`()>owT| zPA4&mkl~g{{n_kg5ttxtJh~XXzMCD8|Gwx)>;wGG=fB+aDjZhNd2HO0vMxJzJKRDA zBOCI&G}by_NF_z-Hd#!BYYOfCsr$+ccl7;AIN&!>u~FB!msLz|(09Qg5xM0mstC_l zPrKk&uzgT@M@DiRGo--$IsT}wo4&~QO;pXEYaVeUFGz(?Vd=Bqj4PBPfiTrTYNokAC*AB4SpNaZ^gaEBD*P<)W3mgy$Lho9ef!;HXw*{v=h;o5jFt z$X+C4*_bWNkQa;~2bxt>6w^yYvy4E@sg;x`rI0DJ$LqgRG?0kt-LgZ*u|97dtS#F) z9ki17D-H74s#RE&iBUViDP0c|JwTl&BQV~6f;`}&-r|XzVkdWsA@6!Lz+vX1!diLF&(U;SJ(x?V03J~UI|`ab3pcBt^U%WT$WnT?-pCV zO5Mg{8|~&z(y(Q-hOA#;_ctVYFYHeh*O;I7W?|_?ihN3CG8NPU9j(E=nZpogjaGxh1Usu9E(nT&vPrT6P~-~+$j@MkLX_((if%3!l$BTzL59^jKi2U?7?#mzaSTxC z{3O0kECH98k=js|&N~1%V2jP;P|7*MujAH^lQ+oQsFeN+O)B6=W)~NGl0MdiFP#hyE{?b>9n^86uNa~>u0IHba|6$JW# zq+ID4tH={jheIu|K^^ZH-hZ_p`}QZ+YTM0d8sFmb>jA=~c$s0aBD;qfTFIB(SRJdxjZ`!Xu@54vXwjP2G&7H zn2_(dh=&oW-fA8nH;4({rBY(tKA84sW{9fv}gK@~XsZ7*mKO`NO;h=zwAl$4W2U~w&V zS8BqxX~KwS!nbMuDs3%zhFkT0JEs(Hq76->GSd-XgB{R3b-gjEmj>etVSgkMNylyvy8 zpN2ba4|zSXwZ&h?M(ok1bG>CgxolnmJ$-&YQhOg=XGRiIi)&-jlpGw8YRs=_&+8GC8~pAzPg$_qX2VI--H?ipj)->~3fdB`z2?kx-d9ffSapjC<5A zUooi-oYhXw#de=;NS5JQM5*c*m@v7O0lt(2H7l5>3C!y^t(_|qRh_RcoF=X$7OXq? zTn|X{$5yS@?<;n75L`S>WS|m-aILfvI!$<%DcP7q=T|w&hYkjyuPYaEAAp0(r4aG_vtWq6D2=nV&q5!|i0jr;h zu9c<3*ixZq61G3qn2ZG`{m@~?WU^`io_z6*ew#f-@gSF+jcYV_dOQGk96Y^GZOd8| zI?bB21b!AtBulM&Ugg!s>+aMV@|kRg4bPRU1WTCNOvP^AmI}jX-xE|%K&_j*2KZpY z-v0WPP_v9qjiiLaQ|^tC-q_i29n`1+T0ePclYI0iI(KM{bR8}sFhRbp&>ai&{%hDx zlwn}BqVh)37R)~4M)XApk?-W1iem{rBSCqE#jI7GCv{J04v}1-4V^k}J2uv24wOX4kJ;CXm60HqyRvmCb7Z(nd_CHBZvhEGGCVabXd7&(9&%P%` zY6*q@K-=c$O<{?@9Q{296Bu;lqD1WS5m;TR>f7e9fZ{%gpqK&ZGxXy44U?xkK8EJ| zPxM_Z|M}dFLg{UY$~j+gRsLH=Hj&h1 zeNd6m!2wr4+AA=?(91lS>M?94x$kt)uEzm5hMM5B^e}7kvZp+!{Nb}gM(zez^gr)Rm;Xxd$7&}BTKR9C6j z5#J^{XTyvceKNw=pVBK$ghmfD1-zKHVaJxpNBFR`t#2)M8d1Lc}aKINvEmuUwQnwqoBCadDHg-|9bllnQ*q8wxa#Egv5{y$Y|e~jASrb=?8 zm>8LWlL{gWAb`j)O2aR;{>bMoU^S4NfBoXVmMm= z?e*L1>9^(Ga~G~VcsImz94O0U;9_yK**OMR7H#di(;eHk zZL?$BPIhc|jE-&Fb~<);Y}>YtPHqmWZr$(JIX}MjZ&$5<@7!z5Sz|uWSTcWRtX^Lu3ab^fsZr#{-vKBBT2 z`p6r9{jm1}-)k~}ht&)JO~p%){!3rT=_NUk5;UMLa_R%3pVVGs!3m|0VV{ucEj*Bg z-4)iZvQD>DfSq2aJ^<3&A})7{*6;=zSvG905!Lw}9=b(;;0N~Nu3#%Z#x)(1dxhJP z+D%WhDsN%l1~C_Ddx*&s9$Jj~GUbphuG)<*uyR5Sz=#Y}v>OKJ8L1JT>pBP!%jd(E zB99^!G)ax@HwtXklm%&T-`&a5 zoHeIppLU#F#FH6MxonKnAZ?6ByhfYrOdTDYqTpQH`wQM)OoPngF&m&A)qgm>NSRaG zv}oNRkJt#85*(!q5K$T^2xRNRrSnh@ld#VHMNR=cd&Zi9Hm!v;J(3ACyO8QvzOmTPte)o7Q9cZX8SuV7iGGEFfz->9=XrsV7f@Q(7-hfG1Vdw9(-$RncpbxI2$j!HT6_dG+7-57x1Ve!_G zh-fqOPa?&l{1h5E2Bb`se=|~`%3|hy?1-+2V4&g8-Eamw^Ac^pJ^Muyj9!XkD%})D z6YNpp$s2_R9(l__B??pCA*=ZZb0q6a3Wx`6CzmoBSz7 zT!TynyOeqC;*m&l6vSmam2lkILonQW{qn8(GBI3CM`U;o=d(Db~ zyKv(lPUc;F<|Q~uBYB>OkEcczZ=CSDdl;Z#WNZLpHr&U;qa9~wpLkBISTT|@C7wB)b8Dqc9fA0}d z%u|=(JKQ~rcnz0Ny;Pnz9qjl!1uq1ZhbMAN)+vdt7%z!d-@Z4_L=vyqgi};{Y+3Bs z>==ZnnT!yt1Pk<<9EEoZ@tCV)9!T#_a!J!^-Z!C$PJ^ry-iF`<>8}`8TLhp}%*h@VDl0kKv`KWBpr90`&O^dArNi~V!v?w9$_4IMm3xaS z4%A(xDJo|uHdB2#Zf0@}PlZ}@&|Bl^esZK~mFTTn{&e~yxjJIt?d$6w5CH>2(g>$b z`C-)F^*g$iLBie`bHvCp`x>ppt0X!-Ze(-6P8W;zbQG(Wt%THe7AJo&cLgM(_&Z6G zrVVEVM-8Oj(LOE`3-p?e%f52dvTcRz?RNU<0sV>2_>a1bPySMSservK<@EekNBw=( zxJC2ob-alr>8w^q_5DVFCI(=;U`uK@vi&uJ#(@Cj?Hnd*w-GEnh}?_w%h1l{UOQ9i zM-L|NhgdI^u>#N>A~hZ*AddjMkN$8Y9Jx}QE9NAL^T&b|-)GEma7?2Oz+2wbCJg6> ztTJZU&H#FMVUHpowt*@d+vpoolQV=+v3Fnq55`(YplZCC@aJm=4*ei8_-aE`uGk0JmTiH4|~jgq7U5x}J1 zp9Ir-e$!%&!+U%eSFrRRKPgwfOnooqY&?NHt@JjDS#k#jIWw}IZY6*@$Soe}n#{EX z^>|!e9fwJF<3l+%{ebh@#TxSRsXc|Z1837i2ng2#$C@{(&8;{|m3YuB#6MIamq3HD zK|ZsJTfbS_4Ig+ilAQ8Ufne*hk2FYDXCMDU7K-w329j@%obGAQ?mWK#+KeZ!xg(68 z>Y+$IZ#lqv4xq2G`Yt>EXZCEAaGIo6@x0oK89^q%%uIem&Y}7c;kuC}pjh?tFC|p6 zhjf5e(i?gu%z8|+!HJKXKR4JwH@=-k){-zTE)A__qr0OcCX{!PddBay3OsCa7SE%8 z;eq)YC2<8li#|@dQx-clQ~UZHt}0~vQ4sj5?md0n<)IlwT~YOdG~3(^i@?vv3_&sM zRn7+d1Hz0RT;AYTUiHbNy87UfQ7~R{_HC-kl#)7shygY?@H02w^B%>_0pSgIH$SIW z(aC@mH%BilPxsfh{V)`7F9}; zB~%N}9&+(qCie{}4Z-p{O3k>grpj}4jsCB9v++mn?a6f8s+M69`a_x$iGc6;alO{I`nPe5l9osW#4LmZSz;L94;Alypk&PL4l7D$yKy+}A((fhXM$d1$lf`rI91Rk+ciQz4Tt{H;ZS*Tw}jtcw(%jx zHEN(+^#*?_1>vxYI)r@^eNXP>1>_ zaCxO<(H2Oz%ggU8O3V|X5^rVBkbf2koG?yBOGMP|doAUYjk%sRb+5|mbQ#24O^3e< zL3d`yd*nuNNLjgNRLd}Frz12e+52{un~(l5UYM<4!B5kcJ(WirR8DJDH`G`0T&u!` zG%+fvQB`To{efXr;Q&@ac~JasLOzrTk?M_=0Cinf|qX{iUcY{ap~1Z%?aYEx9;())ioYUB!pdDe>izHMr-u zO^B{+uWt|jTbWDgaSU-^kk6BmnhUqynv&*pnC*0Q_O^%e6K;TXcNj|p80;sz{|nXG z`fS-y1KyLFasktEg5P)F$f~Evs8JMAVv5g9qA6#+mO{t^QPqXV#m_=oc(mXA^>qUWXW0Lgyf65~-L+i4I8T z!xb?#@~o9q3vshl%4-agIQp~mysBrbTc$x5OQV&u@+FMCfxPLA2}u~Wr#uY;`FZpW z5Tp&4uv}t7DsQw+#IWAlq>%qSZcx?=w^)81H~u>W@E;Om{#Rl)ivIwf5&72U2a9ji zuEMpflC%a?^wIQ1@)T4`pSz+WbR`qwtwjZ-uY(bMehcJ(1ajg?)2#+gz$Q4EPNsRk zdANfq3~FKjNNtD(CI(rIYorcjhPk6ekSAj*l@k>Rr5WaX4Ai_t&F#-RSrUgEZ(lJN zS~YiBLXznMFD3QMy@O8x0@trx!ncGih_EE8ClPxtf9QcMdQYVQyv>&UB1nw1VWer8 zXRy9;c?xlGxdFRIRoNhajy*LsI`fcf&iHg&*I;XlhA6>88{=AQVml)+Fq8`R!B{e! z&mc4x%%61BT@1h@`zE&EAdOEG%XsU^T@P2BRs+y?IDfmR~LO^5e#GI z@V$c$8iAo`gfc~{3?BVceKlW0%MkVzsNa7*KmLb6S^gEMuA;2`KiDOhAR#(`NJWw9 z0Ep@SbhrLg%=|FPzY>I-(klj%E9o{w&&sT)3l)0vZr2dc1(C|7NE^nkE~c9uSsY)^ zst*tY2rKOPVGE6){JiL@s4A$cv=x+0q))gzpl`4@T7UfoEj)B5W7+U}Qw8$0qEUgA)QAJCt?hfvmt6vUw|&}g_vH5L>F zlk(ojrgt9|xO*RVmJiiI&}L8!U94eghuDaVqjbR$Z|V?r*mcLATBl;)wjhOnA>WcH z?dfonSe6a7Lp&yW6&HI`wJw+pBWgGzy+8Ys$rX^+E$<1=p@0xTB*4o|ojQ&vy#C0M zWUGw^mCY6`vJ0IlmW(Z#sS-*iC8~RYevDLD$IT+b9F?U+OM_e`#G%MAIm7`lgl5Dj z$TekC;*#*=NvUL(;3R7IC-M{~c^W4|2#w2cP6EOz#fCwFNw47lpm9V~f0WsO<%aja z$&K~@{tCb)NyFOXFeFS*FFAvEfadp%J`h@Wr_&R`A7#Z}NZOee+C^r>2 zEVVTZul|703Lkq+hbnE@flHAz0-(ew2CdwUp8=(SpNlN5YEJFTl#=9KkYP!ef(6nR zr_nGz{8X7%8C?>m95^46?@?zcaT=#0tkuIHie8B;k&v)=N6nss4mOv{>HyDedmkzM z0Eb1IkGi>R8K3mM;?J2OWUnu4(baB140Tgk{X}#CNQ&ZhjKbgkZ@UCkWV_Dhd01+P zZ!Gh(vFL`#(kxJN0IvK=ZwG#yGs1@Wym;aRM$Xf5#|G_s4HJjh|jPWxO zQ3iXA3{~;QVkJ9~?1Fw}1Npk-d7GvtT>?pg)Y9!*{aJc`rO|+-WrT~x$@DOTYb*2o zDX0DITeT6dKPA1pc1Set>To%!JP==N$V*@KGs?Hjt zG%5}@n@k^`(J=XEfGaaiV^0r7C9$E{T`*N~MG~3el$EpzH`JKtk8YtajWl{8#n5w`#mB`UOzRs=Cx<56cm!jN6>ad zd;oA{l`X<^(MpL}JHwuP;7Nmj1ctb05)j8n-C+~|2vHa&Vd?mIAkh}S!|CU}f!gt6 zR}QETyPhY1c0Qz2g)~41%e*;Y$*g)}k-_F{9BC%HLpa{%3BA)Lea2UMCsC;vf8i&8 zHsjraNIlSJoa)}?`V^DE@c!;`%m6YRi1|PT_4&`w+xRZyec9Jy=l!pg)_*8V?En6} zDgBc)`~U}U(p3vD5~cAE%`Kv%-9+q_h83JMZVe<3du?b)s4v_gYu6U~OU3^@T7eD5 zF!S6WFyj`5{m`qQpRF08Vv>->a+G=Hb;Qo#!|MZXfO*tsJ|KvOEPFQWBYILlxse&8S@sMP!0Kha+hOc*v#_0POnhDk3XTk?deGDDh+;?zsE3C0i> zu(kYx0cvZMg*E4o^;mZgqWlK}o`%6Tikx34aj;3miIlry%iSR$j5f-4z%-N$;&j&( zJwG#f_KXCoCs>Z7DEw^=@`~V(0HI(>h=2oSGB((+>nD%uOwVa zZ0_Xlswzn}EKTN4sv$JCTnrW8ti?-B4$)lW6TyS5B+JD|yx{2lsEyER;VX8b zJ*xr%YIT`b&|6cr-_a4kZoW#tN!$X5{GAn*@tYTp1#-w00M5d07PzwbY03uA6$ zT80I7pg&;)e0ym>!`(lkQsF_pU5QC}$Oab;kn{fOvO=Qf!if7?*hl}B9QzLoo8w;# zTle1^Xzcq3L%mU?iga=#iZd31iybJpOmEm2W^tRk*lBkM4GW!KWvt(9zG7_ zbkE3_y_GC(xPw&l5Ie=!S_i$rhS|eQK*d3ok28sT6RVyJJC#Vm@5yF#unoKY# z`ghu+U=~+k6pr8z(9rnbpuOLSGmKHx*xL z%fUpO-WmRe_$1hsL#6%~)V52xsPf9!xNxT1mT0cm%Xz!4yxAqYFVuQH`8uV$qSSho zf=E-B`wkdWSBK5gse2pLJ|WE;{a>?wJ7fZ=J2C~Tx0`j}UC0Eg0f`kXH`pC&16Q}> zPpI!*{sIa&A=s7uXU{hzXf;PgIL{6w0*~fyC?Bb=Z3?|PrO(R6UwYN%Qa75KPnm$N z-6^zpFyHlJKMdcp?TgCaa%flEBRnrgHR0U=n~kDvez>baPgn_blWzYfOSf-V%GW+{ zO@__keAs2S%H;gN5z3bP<5>f64BZ%6n({RK>G@xUa&E=;3eHH*v7f!rouc@!`IvG@X^( z`YK+c0XR3RJ{^MzH5Jd`F?Qw8=rO*kH#TTnJ4>#rUh)IoWzSvV1dPBf)%RGaj{vw& zq^sLH|Ic{?g0UxG>JRAwd5yB1^5?Yh9Gv9+A)h_jUIx^6r2vTKB9H4L+IQ&Bs@)~( z5Aj|*m3Os(Be2-m@2W&9L^l=VF|ewfZYnBy<;2P;>BCBa)xC2qS}4LIO~j6So=A#(VuikOcfkc~+$LRWur*`*Z!iIrN;M>vlY7ByEt4ola34Tj%IN$jLb#Mj_ zHiwfb$0BTH8Hd8+O&6%V32=gvRhhtM;*HK z?R|^j4m~k1WkUUlX_%pldo4!XxT&@)e#g!h|2A4D$$>Y25tDbHUUW_mlyMO$Qbh_j6#H_HncT zK+d@R3xCe)bI;GI*D!LqW*#HF7Qi5x9+WiCZj)1KL=ZB-vmqsAqJ8AnG<7!iVl>ev zF6>6A;kK%uII~ew5u4p>dR8*rJNU)b5x&;P^GF6u11vPY1 z@!~R2$i}o#N)CYfrMN*!CX(BPh2cLUuB&x!p&*A87l2j`k7<8FOeu(VLcVi{t0YNe zdN{E2S6=LND6PCuhvJpRz|LL?ZAxoSA!K8(Aa*L=zMvZvOzEZym$&;@cqH$Ib-;*3HTxF^yBUQQ3+w@r2FNMYy*Il0`QdBi~ zn0_)*Iw~z}Xa!~HfxS5=(dQl`N&nzfMU4kbl`WB4g$8POAd}^w{zjbl$oTdqDZVv7 z->(P-&$bT(3SgB)o)L3ADrN!eJ&Nxww;S7wN>=XPhk2?Z4`Yt;muZJJ$ z8nS{yh6wKTq#<17juTcgoOpYCJCBNE#R>j!h=>i_{K_s~E1d!azl3D|!M`;gjI zq5WJGS=9$|T^=2zQ5bR40@<5IEM^l*ZRlA`wMj)NBk_Aa7?#j7RVLS-6LoO_lu0o} z-ho~qIRU5Wq~n*{kInfVx@VeJM@xpPzV_>EcweK?ryW@-loQZ}9W(%*Uci#%Pc@mc znb9*&xDpy*RRk}SBt}A6W5|tkIeJ#t_#S`I@H}GS+G)WCiW~-h zbR8(na67nV=Dy#Q^D~cEX@mtQfnntYoLAI^p>IQ9F@?}0iqCFm%OBmeou6vBmLTZ_8$Sj|da7R_x+v9?maV{FEhlH%m7 zqHxe`*p^Bmrw}NPfwn6GSjw5sXeEp8yGdqPYnKdkph9X~#tB=cjom|F4+a`KdNmh~ zfwky}Q@~Taz%~`sRgVmM&`0kMnfpYl_6wQX0caDg)e6jIRV!6r)@P#Gb3*2Qk;hnw zbyLJj@YE`z@9ewiMt9l-i?;z zr%!%^)oml2KUMChYU4!X&$q_D=FnKj?ih@Daz%jppZaPwWH8qS}#(Niuk$NPhUZuk}_I-3a3}hZz0m?FNkur>l2`c(X>dbPn zvi`*ZTpoEq@`NZXAC7ZMsmy@^$sr^iF6kAy4qtNr+%4f$Pp~!00R2}BoPgsW6i-TV zSw86fa<|zc-LOVxz{I_L!Qu^CSQW#zqn5~lbv?c1fRyD1vg!=%BU@gTiu&XMZ4?@; zZgGTaCZzn{`fnKLI<5IM49&qN);h6Fxz!z&+TV@+mJ0(~#o1W0=Kbeh=$IG^y~PTt zn<^EoNKwCZ07F^;`djk*{bEX3*V?0;UY+@fhqh%x_TrfSH0Map@Gb2nlcM0QXadNT z27cm=2Kq^3F*8_XMm06k9>1MkNDhw494;2M>oQ%IioBW;Q+%nVI#t^SYnt%o!iYc1 zE=)_|4LDVTEGA3Qsjh4&$UOdI{!qdBgUEl7wQ=z6Fw|G2LIH-y0G5X!$?d0No*IUd16Wi7Mk{FiEKNLwR5VQn047d!lXRU}qSsPBCN+J+{5A2hWs} zNCAC1=+;Q_#oxJti9_eP@lZM!w&ewZjnpWOsIS3_HWZDG&*{`Sn(|>DWKEF1ueyiV z^k&LfIQ9Su2)@w3yVPMdr7D}M;KdHQLY?-NQf%#%UKMH?$h9o3(HVCQfUP1W>a}|s z(535GcO~-!)r!I>?;5JI*Q@a|^o4m!f#2fSwqoq|AER$fXUm?j1@!j##g#_5?4|bQ zQF%?#rv|JdXr#VL#X5rh zE>f%YWBR!VJLkz?|n?L0y1 zVcjzURf=sj+J78>sgBxFmOV=ug?bbWnmZQYcJqzs{AsIivR(L+`Wk{;F4`&zRY>O1{rr~gBwsv*cm`7Mp(n1{l_L4dF7 zNAaHml5;CKnJO(44Tf(Gx4;0s*hju2aAo?_E#3tI>QX|CTQ67JL zhs(O61#=f!-r~v^*}MMWvJGEgOOE=;?95<7G8x?fjNZJ1A+g}`L-j-Y$D-Yjk1Cq% zDG?1kJd`OFBM?osE8(#$sTw(2PMgF4DN5tBL z0Ph-XW?_x?^X(Czzwox+z64L2%Dex|uq{AMz_X`+0D42^CAO6_x71GPC$nb~w2_Pc zC}ir*VGco5p}-Bv?TwIkbsi9#pn;w4h9_1d=Yi*gSX+Bc7)eRX57{a@8K=uw4k701 zXN7>2ls5Y}_sVZv=qS||Q+pjjb3m7|x+y`;otE|__~t#;p5Yqg0mfqyXz#%-Qh zw*^70M^H&0167D)+z+1<3qOe34OY&NA{YPF5ak`)>zb7684I%ak3Bpu#8KasAq6i& z3J@k1N*}16Je?3)Zt(B`?0*I3+uC2nT%F}2Nu0ob+TrjH?l8fq5o}! zAiRR)+-qNlaL=-5mfe)sYQw|LVjO!vhHzCBh-49vAkk$k8^(n#CF*2s-Q+65DSkwf z09;8LYt8a<)nf2K4Oi% zlk}b#rJ{93dlr1lUrFRh;$a9rFer0WNuMf9_$SNhcm~Xgiqlg1)vy{1B>~3B{tjS& zccKUY#si_OF}<_wF~cn>9ht*5XY)ks(nuKnIHHkmG(=$6Z~2{KZf^Lf&BKJQ`Z*tV z13MxNC_6W0Z#RWEoxh3g2&RVUDhR@NhvF845cm^53SuG%qY?x})Dh74lGwxWLpARy z+hgYR%H;QnQIpwNq?%Yp0F; z0AB~fTE`>?AwJ!$6JFzIs%?~daj%m0SCV#rx6~-j#)dk`Nr^I&KY3-bDBJ-o?Lvxq zO_eH9$6}(1KFN=d%G`*y0giP@D^tAJufHElSHTx^(P{cDi@|Jpw~JF!xp?O? z5VsB^I6}V{*1J`>@w0c!W;uK`vckcz#WxE_mn<}lHFO5^ro0mA@(8~G`x`!vf z8WdbsWpxIE-*miJ97oNVciN|+39u;zFq4mzfnAMy)TGn9+%cz0I+hrqmhS4}*6Jax zRu$e$@qY{d%o&hmitaHlgMT&aTv{MqX547l9QCKoPrZ0lbr2c+Xg_2;e9&SRdB&e^wtrJL2Ij^y_5 zma1H{j9lE+^?(kE4_~x;m!AaLJj{EBSOI!*Py8ssZb8hCZkzdTJfg8S6a6W_yE+34 zwdNcK`zt&{RyZ@Q*x)DcIMt>Yob`J4g4CLwP;@Y^1{nagdX(iQ9@`zut#hqot?fAU zC;nIcW(>ddl1(2SkI*c>d^UP)1}+76mPc$~KYsZvv0E`Vv`oM7B@iiRUL|m@|8?#~ zK;BTWz6m+pRe0O&EL@ji_6Cz_Qt8fK1&vK7REF-6p#r@tVlRzt>IG22o)uk86aMO1 znRQ1@nhd!sgfS>_Mp`Gl@b{i|-DWy*bdzj@=8vx)fISH*l@<^xapp^wSD0R4w&s`S`IJcny&CIJ(yllX#v+cTpEBUX+EXHU)zrC4*ZEK0>?HOoY zZ1*2zA)OD6;$0{5q@grrO~0LC$U?OZL!EKR!q$4pkdRK`QzXBo{uSU;wfoKSA|dgDvBVsJx&B$G(8|MWATIOPY`jFU$-?+7~ds5 zKsSl82_*g|Ze{ly&MIq=@&&*YZS5eRuvf_6uiW|8^~WRES7 zEpEWG@vOGnGRx704RRC}BudZ0OyNo~%aDbRNcMynx@;W(diAmA@O0{JI#T$fO} zubBGQTDKsdj1J>GKi7DLCd4stmw)W-y6^E@t-5#Lozio*ME{rq8{3(8+nzYEkKN4c zc|#1ABuJ>^_Y<8xs?~Y@E|=65$bCWs-SMfg?Jey0M0ZY_R~-jd){qEacOnhh{8LvA zN|2stql`=hAH4oNFz*%;ljJCVchn&`$^ImB)Ek^PXukPg;q3m~&~d=V^jJt;{%$

    iRhk0#_vWq-#xu$U&452T|BK>f@E$^kXPbY}Q4!azYBkiPXx|U)<1!#yjyaR5>Zi^qA*PF6n`;S8LWe zhv|}Cj^d#)Sf182|nn02tzK89%%A!Iua)q4s;^6@vh`p;-D;>dW69#D6p@f7*s zgncOu8V2$#29O*bFpObo$)mAtOLwkya`l8sdB3*<{#{qF0-L~I{HG) zVWQ5f_(P>42aT$0q+!~_%jM(nKV>wReiSW{#ii|1IU?Dz_RjW|S(I*nEx3UU|Q-1QR?Qtc@(V99! zBVXgbuh@kVG`puTx5)KZU^`0_FmU}jqHb))_v2zt207!gH%HF3Q3aiLb^q#d5Bqy@ zzl>vT$1Vvcclh0|iG?q)7*=*b6^~@(X*>d9TR{#-qEMS<6{y|}TGwGS4(O(d--rlv z;1u0yGD#q|g<8=bhi&XDI^aC^Azu_xqlYi9(>w4slc)TAhk2%nTyyDjB1jJI>?^(a z+YVst+tz=x9At5dZwA2}Y_zC#!Ey|z7zKEN*~ZoMXWcIBM>yG6Cv}tzz8P}Q$6ER% zI95>jVyL`$=H7fZ)hiTZLC(iL0p|)A%sjSN`mWa!`L(+I?B#yO{L<4kz>CxEyv}qO zd2Ppk{%h#wBe2EwzQcI`kcJU-{}fbsVMjrC`Dei~%J;1qbENswF60py0X`#uUHMLx zl=LI8@f(Jg##~i`X_~!P2aJeTUy))psqWAc+v;{udL}O zofQ7n+Oqn~XUfVY-FOB9_sV673u{13LbR=dj3w5+x*T@~C!ia38=xb!TsHK5LD3Aa#lBn?l zCj{OqZ!8i>dCj62wDzPIpX(bB*c3<)g%AJb$5Lhp)rkITJA(53x2u@{qo<{+BqL{N z^KW`IOC825aUtn*izmj;^fnIGFAP)yQa&Lq@MkaNjv^!i4s4zf2+F9DL|5Q4Bg!EW zg7#YVO&By-BMdr{!d$gEQo48%nm$<3>VwYHl+8nHo6{ z{SEOQRNUn8OTh;s)928eg?Jsijn959@vXo?;b#g$&eIMI|GVSk&QNd9sw4CWs;pxMwP=y zoZHEk&6!(Svdz`(?II|Yp}Cl8ZEfW=Mhb-lgH^|+R2Pvs-RfcBiQBo+x3H8IqKs#e z<;9AMhRF1ZxL@6DCa$ejmJDVUqHF%I3WMpHRTs@o-nCoXLbh+xj5H!@Zb3cu zy0U8G`BVs~%YkiRtQMeMj8tkDimMy)s)TJbGhwpA9>xteO0g z6DuT}rZg;24Fl;_x)oaJLoPHrA6@5PzB+GTeB#2c7ukzweZ{K=Z39`}Ec1HiQTDP@ z56fR|xa>$nJ}BBV#`##uVK(3S!{Nx;Vcbx^u85UK`&Wk&)yzLa=@GKfl(X>l3)Mft$ zw283${HkG`T$N>6Sc%cZh+wlmd2m|xgZ4;gS}F6qxpL5TbLDqy+ki>1kYZzHw9tZ;+MfC@M7CeFoiEnwW_ z;EE=}*gyD444xUiaoUn>xMCx`vAC(OpR`hKw2e94a@BMt%{tXzP%!O*mza@Y$7U5> zmR8OLzpt9yQaihIEvRK7Ga@(??Nqc6EF5|B`Biah*-NB+=Z&uUYh(!Mq0OaC~C501dD@* zK5>xp@JFrOz)H5v>bqUIPGLO# zuE!rS1J?<;;Bdkfqlkp%sZh%w@0$jzbEx<8cfb>`i^%PeaoiCS`l^mu7KIs$IA~Ui zq2lrRZ6%d?%^#N;bFhG6U2n`Y>z64K#1R6H+Ioc7tY6XI6VKk3Al6$YwxF5MJFSxX>+|LJL zo>}z@vlwQh8DTwq%*%EP{(jS-@6HGgZXLgM|$d$CW zvwx(^d5I7#O2k`W9k$dj;N91?2MNS|IEh)--u~)B2HjDtqObsRU{%_&xFXy%lQ{Ot zBDBJAYwQ^@IrN%^jh4Twz6f>6xM5YtPN9eI7zcVyg1PG=+k)2x+4Ap!$dESU%Rt+@ zA%b<3q<2T{lOW?H3Mv2>AtmQ0PY~uU_4B6q^%3ds9}JlnW<@In_RfFQU0ev&;Z0@+ zhMzwj28&9k9httH1jEWX+TW$e*Afa{T1(ZYRLAlp&}IKtVp%Dn??D}Mz!${YnNp0@ zH(>S&Q+fwadZx=dbd`bd{fYMxs%ou_b7N-O-_6+kH;L#2{ll+nPw%nri4r54l0%LX z0bg0~o=PBF5#-Ax_8iT8gOW7HkTT;IF(H+W-S=5nt`VhdV#!NJRZNRA|6Mgdxtz)} zD!rJ0G>aTfjfs7dqXO#`UkOkB4<%i@4uw3bpoi*o5vDZ7n^6yqgsN-{1ULg&n06(q8q{8e%U=C*TJWpan-1VT(EOZE~@zF6-yzMJvBTVpkF#d+r z^GLT7Yt5(m=5)all27-vqmIWgazCVzRsjRm9NP=6M}ef_NL%mz)g)kitl@+ zJ@We@xDc34Q(^Zg#;FJYZGvjZpc zBXi9odOa$9zAMrhH#N-DZ(kdrN#-Vq@I{dRMwm_`Lc)TNj4A|^@J2-IDgS)w6rhYd zaN(4(sr0Q*6|dLj;afMQoI#EUW{zSEvx;24Hea;UX#{N2oSS4;FNX?(-OA$Cu0X(8 zwf2)D<`dDgG3N^j~7mtCuB|7?e9<7G)R9Web*hpdXxajjK-?g}q`gmfbCv(koyv z5Eki)l(b3cdS&5(bxUS(P-JQGMW`Q-XPD(6w=(n;$Vn0#EjfyEn6e-&NrtfSoG0T8 z4i6ItBAeDyi`QCM!{l~J_v+;t)F{<1Au81rhs;Tuc*b^a2pc_?MH3zc|HlunC2$EG_gg^Lc%?dDYA*9n0R9?n} zKYZFg6UygGgt~Mr+_KvL)#t`mN*`<`@N=ghP zyKobnv7~-svN(g@IdgqsYsqI)It6AsT6{P-4`|Ez71Q}OA{p5cE!ARLQ+-1ZUh72y zp`H)KxHD{S5)8dqov3CH%)BKvK+)OGe5)Jomrs?N!p6tPwR}kYk3TizoIg1~%lW+| z1cv8-QLk~fp*tHorP?xD7|s-sn)n4?G%CMj0QE)M<|JxKjRMo+uHDpZEyTR?8?=Tv zNy<0O>iltQ_?ODq@VJ$Xt>h|huw?O)*lW6oyQ?8+f||PWrZ*x~AFNl?nB{Lq(cYC- zMrrJfD7--lTvS$u7ZKV5E}H``Q+_H?#MR7UR@4lEcA_Xh(9_O(+9!2^(A-BYR|*7G zz0R30aVQ35NgQj}Ml^7obhgND1^s=s#a(=}S0TvF*c=%YK%qg&1U0GkJL_W;F0cK_ zl=W&B#wDveR<)G60p6&}$brSxvXUh%x2z-B4SUzmRS8|@8>MW{Q=C0Wwv)>4eOiXt z)S+T{!{U2q68-Y0zeOB$;1?AD*1qyiw8RjQq@8{ApY6ZXE-Tq?fU`0-z)f;8-y)cyzA_vO|dl3I?A&N=w>_GTd^lVImJ3fkgOqmi-4(_(d0f zJ^$15jP(BsPfY%yb!Pa_1mgb~;`FcA|0zzAv2b!Wu{HVkfLWVpCYZ0;>OorztLDED zG5!x>?-*Z)wsjA;v2EM7ZQDs>+i8Qwwr$&NY}?I_mvkLk)_BUZKM1#e%Q+u!@ThD*APTb#uRP_ky649ZE zfh!uMw;u_xTS4p9k4wyz6t+=ni(4>ONlwG%mU*&_4&Cqj^6ZCZ+*pV z^V@q5${-j8z@s#>zHO^UkI(-;G4VeE^p_m=e;?UNwi)8r?3Y2#F}RO^{-W8=vgTJMpDf)Dl3b!P@LuVQ z6{?p{yb`P7q9*j$`>r+-1J}-=bi$%pMgD;>+ejE^IGOSj|qrQ&TbBg`|6#gVvO1MDwVmRTYj~{sWNCU>R0*jEfM(j z5;FDP@O6?!tE1!g|Jx>7vDUd*~%Fc#4J-!IGu2g#x$gZcahu{8hGIMiz6lKlF zF+u(a1l~UZA^ov3{XZ1Zx#g;5dgzeaP^W>U^c)ixwKSNbv>j9_3rQ$b$rAs78>;_X& zDj&99l6%vDVde^`ikQX*wIzhF9b7I9NZzNyrID47MpZe`B?tQlIb@&j96OSH@CcLO zUgYWH{qBU!+>|F2)z?FqOpKjMN<{T)Km{BXXN^cE;`cNY1@=rJi^rn17ke=X1Qyma zx7jVK>-1lE`d(lJ`=*?K z5X$ERMqZ?udfLS7@10FiY9#hvemJayG8%MFIFSi{BSOSwibi9m=Xpka0epkpS)=xb z@Mv~9TWCHQ9j)xx@ciTo#tI5)p>AkP%Hl%3I?~hI;tvg(3iY#4$DpyNGX<*lmQOf^ za&7NTEYCE9-f)>S-S`K*D2Q+I1~w#!1zAoI?4i-sxi4RA+qKT zWIZCl+mgqyi!XU2UhD6kxgCfS`_)Pcyn422hA&oDgZZ-8{A3NOs_>=S%UZB^W?#Bu zCF(?bGQc?74it^8@fjP&?ykjg;rVScZb9vi3KoWN}wcXS`oAY zuHwx@BTR%ffi-Xjc@`Y2p-SJ^HjJnczB7My3|*%Q7aqlfR6yz=xKRF| zvRzvh(%|8Uy68A15%p3&?6B2AmFr$@d)SF9xCO-2JrCwWJFC#1dqGUd7 zPi3Ql7kg*1XEmcfw4tpLJF;#VdXzs(5H4S&Y8Dnzvp4t{z8vF7xgR5)T>MUHucd7z z{1tgak1ahLGen`yhA4Twj;R#Ur2S`OxjFN^w2fOlvS{EIP4%~1XczTy4K6!r22>RHLr4L8jEZFtzVB&BFTUaEXO>W4vsn?Uajj&f;i zaG7}zv))aJ5MMr>ez}N$ut@B1-hr~acU!wz7-ISg{!GRQ6d%VoJGgKEqZKamF)}xk zPQ-EZ^YX=HA{0=J*>GuHLD&h6fQU7yo`E4~NVJl37RxPpX1zd@L_Jkal}Ijk!N(3- zNb^fHACaJTGRa*`$XNl!5s1Ob5N;iFY!sa)S{{Dtm7 z3Hnt{@!kEp#OsqScMM}yv@I$MPaj%p(B0 z5vf(QS!qx{*MROv(x1~j9iNp1&)ZobB$o@@U37TKz!KF#!(vjuG236rxMF#@e1?v8 zZtDzn0ZyPSCp=iB_aJ3sT6rb>*$^BJ7Fp^a}jR_{whtIP(e5NDhnD|t+b zQt{MDXQ+tGNjnnRt7urg{Re5wdCws7QIbiG5B_L`BZ1#Nk(?u;x@3pI9zYYSjUh1N zAT@?@ls$J(xEg9#O%zxe8zdE@1mO4}Duw}I&r2a=$_YiO=i|j3sG*QC?PGsJ-pt|| zl1a+ZlO7T1VivNA88W(74}d+~;B`t?>=(A3FL+*;VPAw&3JbrXC)z$DeaV3p(CkL8 zQ3WrC?=Kz4te=4EA0{QkeXxnb5{naTReFIJKZV!mzeTr;m+1;e$IWiz%`XCf@H>%+ z=`I#5$)0?SQk)?rn{OvHa_86R;zWZo-q#K2LhwBThhUUbraLze&j70WslH66mpRN; z*!QE;!?DVj#;BY)cm3ga#=^y0W&Y{IrfB}?B>$#qX!JY9SF+c$cCfXvcl__n%}JIU z_E+Y%W6OgW>}M*>Z*Z%j7YE(J(qsDK1&;+W6O+h*q$&}{sh;-nlW$%xJ&p~CF_R37p^y8Wnv$mN znkL7FHnF(&8GM6H7pvDg2~ol@wn?&6vXf(wG$wNHzpt93e`;~p$3-IjW8U$PiT(e< z@*g)XTv75@_;|Co2L8fT=WT92OjySxFNbv~jXf%o%f z=<9E*GJ$jfXB2K`?AoY7(wKr?P7cHkDKfn=L*D|)ok0StJ4VpCh}kO*6}6a)cE8$- z(hSMw0ILs)8Z4FdJEcFFv$9*1Sl6tEnD;~7`D7Rznj=xi2#nhyJUUg7+w=4=Ym=8) zfYXm?A9VHiE?;kSB%o_ChLoT=K>6Dmc-N7XK3U5%79di$KE4~4HV~j=xVIQgR&S)63q12Dy8|!fmZb3tZ zz?Cr=4YbC(&IbL#a{~?r0hXPq*R*9wqjZZKt>oxis&%agQp+<6-W04JpeSlF>WeP$ zPKWYyX88t{0+HsTO<^0O5R%#ckfN@{Oa`+mPEt6RAFHm0vc`C_Z{&R8j!x)&Ty$Yw z5Yc55?eIL*1%S6N9r_YH1Q6N|6|0-!$&*Bjae>DIT7z;))B+5UO??J>y3~000d9-V zNQL~Mz)20`6@mmhPA|59xJr^=6di{AkgA6qSlg(HCv+g3(a*PFnCf zl*~$AOJoqUPpyiF9YgLMxrg_uLAl?E)IQk6mOEt0t0H2(7@D=X6O-aSI3acMxbcyq z0C+BSQHAjlWH%(*$BL09<6I|+usv7U_e0pGd>hl+EkHMMaTD&J@Ix?^7t3-k3_^Y0 ziKac2_7}`f7XeRhq2g_X{Y{SpIe+yHf-xBVjz64AJMf?CLCSv$RMH=UM0zGhf;LXp zfAcFIk*&XqW8w2&QznY#U|c-&kLozs6d4}rWWf*&-0k}kP{&v|>_u*`HnFY|Jrve> z`oOi5*C(}{gRGrSr%B=)MH&cn`)U{f7_g7l{D{Q55Jj$#ZC^6Nb7jrYh?Ety`q+dY ze>#_aiYm!*#?{r)HH}0P-J7(Vd^X$8arY>R)LTW7QTL=PL9{v(7N{}YP;@FgA!{5A+5 z(i1pTa=P%A)Y8?anwpTIryAVzOlIFn(3VN+?TbLQ7g4opPFPwYt3?rEQ=S01Qj!k) zd`S>;L3frmHa9Llx*FD$Dn~}fChM$>8?2lgo}O<2n;h08a03ch24rB0NFu@6aY8@~ ze(Di=#31qbHS)zulu%{;Q4}i)$7Tr&lcPAWilqH;E9KUwOeM(h0cb?$7vB}RG-R3^uLOGu3usFI1JcGSiPc^R(g`|c-Lr4QyE2lO?5TO)C~t1BQstZ!~SK!ipO z$)mDvY8~(+7mSPb1Ji)NE*7|iIx}e5!ZFo3#vghflVN5qEk9%8Y}Yk@5Ga7+kzEDM>)F z^F9xKk+$ceXG2^#*zkSkVw+H%>n5a|;aHPh!eLOq^^7=?SHr*)qtS@(0kVRyL*sg$ zKuTX-AfA#=kg0$sA%el9Gm(Mv5(nej6_!Ya1YLcV;Cclf2rbg)fw}UDc?sD?doS33 zP(78l{55-BVGX@1`f*Q>{}}wK|8!4H^{h>d4F5X=;Jme2-~j;v0R*vj27z$~k#Pp0 z5dmpmo!#EutN4MG^s#hR!VOt?7k$UF{vkdY!GAZA0+*g2Y^bM{hAkCjwHj z`7)ietJFA}rX&Jlrlic1+(%sORxJD#Zw3v0790&iaeNT(lR|MOAky5u?6AbgmOMi^ zP{{a%Pq#kQf#k*phPsBj0Q$yR9cb!k=xS(c{8S(;ctgFNFu!|N>uvYJ*&ipn`uP0s zo)yLa|JncJYKALp$j-=pg!%hiOG-L;I5;^tZOxq9F4iz`a_sRqJpd{m-O)8?Mu`?{ zGtQiT(RZw0Jq9;Cp688+&C<(N2JfE;ZtMr^ANm;2<7VggUq}l-_T7yN_9?)qQ;pb) z_DOs;TUEA`6%N*`JE^caYpcnuP-RVr22sHuJp+;-^=;~Z{dj1EF(BiZOWCpJb$PQT zuAs}?Vb$)6G8d%|5WkPYyjd*Z-tW;8=yaqOL!~Z&N3>OCU(TaZW9$CSYlK%8grK14PZn<%E(K2yVXXW`dt&r zM&A=m`SAhODRLVC<#`riEMJbM%u{grB_zxzH2O;1Eb~fIz?wL8?G5@@n=0@G2IKa_ z!(06EBK@P6|954^Z>VSM`2V`!{!tUZblv(p%x1#-O-p??yL>}Z?l!-w0+D}(_$t?C z6C>P^*GeoNTDd2Fu?hGfw{1xchO^w`d2Qmw*fY9tKS25&@bYjJw%*|nea>aSrdCR@3n_`i8ZmGitmk6kjZJpsH0O<`Ek)+X= zT|t&@+3w4jmf2ZoS_R-h(@Sz!gLcWz1k#!SEbJ=chV(AZ!*J|wjM5}hS@i{Y>PZhz zYT1{8aWz&I18|ErjN@ACao$GH-}e;p`{T{8;5q!q0Q!%Q3V(HR{s!xhUu{+Y$Q35< z$!P@=5I$`@BfJx(c)4svAOt+;!e%_xU|+4q?fRrBG}li!5O&xM_{!MsXOSHal_%$! z6SSXD7h$J_Sovr>b-uTM=T*>Hs^(+F-~o4yWgzsn&S6@k35^@gm2x<9%oyP!WTYpe zHUjV^OCE`L4}~ngN>a(Q;wq2AO#ITKSAUREN0nAsQAu8CF7hBpGZt1bOnvy?T*>fg zK9ttFWmUHciB+zylncNO+S@!!d#TM)n2gM(vm-v+9YeAMJ-L~=33}b=isgoA(K&}N z+Ewjz_xW->xD%!H3$v_RBmDf~=ga`YH-o}5&eZCl`XA_+HO?g?YrmyaT)qq*{epGq zkFfsH{ryVO{u^95ZrKlTx$X(QCu6#S009vuJHIdSizx#uegcPUo#9fhKma9{neFKF z>+OWy6vfYwjD{0LcRzo0cainP&9piHG+u?B6)ugN9qAoO{rOw~(~1^&dFnEj&qOPa z2(Ev5(kh))iKm3fpdeFGxtLrzmnmOK7p;$RuBdr5ew>Keu&nJdAuM!xk#Zodb?{=q zP1bFS&E`UGcF(V(9&-Kh6eIs=Nx|(X=i6a7BAXh!u^Aj1Tk>dJ@^Gu62qL9z(=__= za7=bhZ6wOMU&lD4eS9Iqll#gJMU%6v4!%wkyqduc$}ap4hfls^qU;Fy+i*Y_=KBai z|N3_IUn-n*9~9V6ADEW?5!b)1M*Uko{okNQjs0>2112j>Q)*WAu7_QM!c4c5r`qtn zk%~n=ea{8x!wF*rmJR&4rKDZHu$zLxwZvlZ60pyi>B$@JbQ`>xUp~?K$$&YT0#Cwh z(tRfcd8?nDUZ*P(eN_cn*UljDRiR>zKvDNGra};ob`B86FK~^NNHC={vPJ1*ln-Ie z054`sD5A#2%no(4KJj&^)EbddW*=OM6g8N?ICf&E1 zgWi-aZTfv8tI^Fnq+krYCw@}#EpF6SA3e>QCe%nzKKJsgT(07j@S!!1dWtAUl#4(@ zw3U|UC(Y@=E|}sDh>X}X0kv%Hugsz^12kgy4F>RL4xIC(YhQ?AJ%3l|HVH@5NFN{{ z{SoNDx!m8eTHeXX$%yFpUtvoltN&X<>o33bfix1gqNag`dA-KMe7;J#lX%~r@TD*k zFsjhyP+}bnhPa}5Y*yx;FBs3mXU{lSV>qfN;Qdujm+>D5Qv0W`d&qpqwc==KlG%_S z4N#;o$|N~Dvn*3x4ZO3VXTDA@Xd^Ng?WL%UWgORx8yBtCxfp8i>8*0?rF)egXDtg> z0^u3SQ|Z(+r-KnOJbXfKqK)-@i+Om(HCbm9qGSFU)IswMWRN`V!xRo^>ok>O3c8zG z7V@E5P}-(wZ$(m%k;^n)P2G+c$ah-C4d~G?7aW{pl;lzDj$Ce7Eaua^jTSVN#kIzV z3ws&4EXlOtM$G*}D6b^;WXWRPOwlTnzG1;SH|R<5WN+`Rz+dZ07w#&`W0$G5!5!n` z%U2`Ul6Fg-FZU3&X8oV0Goz0VkUQy1%Bw9Gw3$MVeehq6OYUHjl5oNP@7ox_-UQZU+cEof*?WGD|-6i9NP$;D__2;3T1k~ z!3m%h6^ezRAsrIK3+ls!Heq!mx1n}}RbZeo+e)7trH~KEpAFV1lNI@Zc!;Y*Vzf-(mpNH5R_iZ~1W!4w-^gnRR*SFSxmI+krRvyw zXoW^fQfZFs=WOqkFY~Wd|Gp*xD3h;WBib0OZ8OTMCzrM0o=*ECF$MqnYe%+Xc4Y%H(EipO3R>83ig^8tfeN@hn z+6%Ro(XJ(~EHL-0MOf&?JY<;ijwO-V$_v;(2%VqgkV(wLs`LR)q_@LJC#gxIyX0wM za(w$%0+7aJrwCRkBn9~nN??4E9UMt#p*!9?&}6iUh}dWsh|U$O~a-lGwfhxGL@<8 z!SAL@T_2OkF0|i^Oy!y|vS<*UD9iNtelO%QOG0>5TA^`Z&EYojcEfWDJyO7V2s$DYi+YP2;87=<$`bHrg|^DNxyjoNr)Q2PLV0kEDHN> z1RyX=zcCxoTSbI4_j>XS;tw~Xy}SW5^^mL@|8$vx2rbVfwTU=@K&=Ymr>aKA;~W_J zGQofBMbMDIq1a7_XgV&}76W~AM4WaM9Jq9mz@Q;%iUZaF>?QmFI-4+g8DHUl>xy3a z)^y*RFwdZo5X;Guy1w>J%O}IFlR)#5!^AT#dtfo?!n6B_X&zP7tRQws9gFKV&$;#G zor%V1 zsSKy6-w`6ezP#SL{CPSQqYLb|8(Rno$V?Iuh<1i0E{-XlDWp967rHw4@r+N9wEPW0Cuwoy&^sC_&7VB&x#BUN)zDEjC9 zZlg(ApH664kHQ6qZ%~SbRtLk)ESw+D5pz}F_L$eII`cW9O0+r2H0LD7NVpJORSu;$ zz%>ex{dFb@wDlJt+e|a{+8&<2?uBjkSjTQ|Dbm`GB&N4uF3YSHMj$xx8bTTL#doyD zuLbbhCWfv`*0v<-^>E*@Wj<-Sh39gJM9t8LNg<3tHNR){JE>!1C~!=R(HpjdsvcQ2 z!qbPneKv^pRLj6Ps8a-&X7k?;Ya@Q9@S|M`F%}H7?^3Xvqy(moQ1G>m<=% zB$%)|iZIac98)kv+UW<(TcIVwPx&TC7re^XLTqUoZ8CVUq=tL>jYud1srkx5ADn{) zjCRV{t@;tk$y8Kfh{+A?i1SySr5*Pj%i|*~82&LVp#Sp^`7gCN#a}{}XxuX+)|v^S zz}e+;Gz1MR)7#LrS+Gp>^k#6t!HH@rN(g!GAiOfn>Tddm5OzT`m zCv=oxmWo{459i|EmtuT^%xWdcdUxniM^I930jeZsZl7ze0c9Vn3BAT7rZES-=GocF z_$tf(<^DbHgvE#=S=rpEsSMNo^+GpLQ*&7+9LX(mC7oQ#xaM7gi?2Ui=a7EkB)B}P z*fE7mB67w0A*t5+TGX<(HtYF(~lBzAZ3v$?2j*p!bnHZQDgqWU> z-s(!%^41wmVQqgJ7I1X#WchFl170pGAOt<}4IpVIS`K$#uwB)FCTQ zfUby?`t*@g$Vk-0gH{iF@yuDsz&d+*2X^gEeB@*%oCx1&fXZijoIpexQf(P_D&HwG zQt-kdiVoC3v+j`mPSyTVDNyxrDzRHAd9=HFVu%IBK8vW`h(ec0f{VRm z4To_iN&PI%1@t>AnFPi;oVSz!13wUA2-}I$`qCnq59{0U+ddRO+{%@^-M&~XTFil0 zK4=hE&f#ets&`CH0`z8j@p;<$h;c28NC{aQ;8i%z^XHs#2+j8Esxw_enz^W+g%P?R zMZI9h9J4)}56;;SWUQEF1(76NCY&9DOXbw)Mf2Ln{@@~&!`&VyV zxx*IL{lk0}{@5G;Tiz;Tqv&K{`u{wVu&aTQ?JvsIUl#2o+bSW*kCYa>5O1NwGaZB? z9xpUnKP6Hf3?Ts}z!W}5qP{&mR&nx!b+@sXKz9q2%-Pd76F&o*fI#g8iqm9&^lao{ zhVi?$lDlEmw(eX{N}!VfdyGnO6|GfXSUV3V$s~LBBnwA~f5bC^l;M1v7gsyWx;0p{ zV7{`ukk|sIhd_aqNQ~Uk2M2q|5brb|&96-9D4mlYnV;;2?XXYf=cPB~19$9VHka~v z-4gQ;L)UL+V@lz9+{w^;9-|Yc&89d!3D`*B%%r0}!E$;RvH?}MBaZmFVqwiUCJ_|V zFLvLnys7L*aW)jxwgoFf=_e%Olap%4*bnvK$>^Re0i9iiE%azTS1ig}#VeY*MUN`I zB1`Yo$*D_*e;2#0_;y7&A8sS$kF~-F$?=o9p0l1StYsc3$J;hqQUhqWDZjlu=?ewZ#mJW=uSZwAct5>T^t!!+7#}8j1hZXKg*p zHIOj=+9@Z59%@8^cotGkp%w4APpNQFc~c=*CIHY;^AdX#aDv|F>4>Bzxg{A#+Y?VPIYi-d-}O7J(O6>0+7vFER7U!Wx|et=~U3c zDOu>+1q3SY=j)Jfu3s4|ld~&?DA1=|dR=*bG}p4)IiYLX=7xb-qRURT-{^ zkpwWiAv5K0n&yf+fSVK@N-2@vidhngEEUbyL>!WcO4G+t-wn`=Vb!<_HwPhXeOc#V z5V4c%N9#Aj>Mk^N$ABGtfPxuuh0Bb;WOvu;g-3_oDhi?-miL@7go7Nj{fB!+S8YIK##smC%Q9$=t>B# z<7=l3NaO)J`bIBX&$7k6DCPTzlkA`?3Tg3B!r^}1753S5Y;JW>#>A*o@xZLet(9O3 zeUail(%gl_GpJK3G0sM<9DMATv}K>MZn)7q2f;KvjFvK@KEuXPF}$@M!WV+s*$SoX zSVHigY5f4VM4oo2{j)bfrLp~Gk6rjKx>Y%`mKb4aiLn`sg}|X>3*8tCVM6j47UZb* z2}La9lPGJG(r^IgTESodYNisD6ei3UHtkux0E7^87Y6zq(sHzk=MsOUrSdj1Gaa4b z$5;Tv4sF~?1-sHQI_j~_+ckMbG{Q=2a*H5)#86ZB@p%+ywf%fe%YqlPBuw{He~rj8 z;gV8*x146QU{Wdj(Q*??0dER7?*@!wJ?>)lB?Dhz;90T&9^<``lnv?Tm?pyD=u4KK zoJuL-vA1rg`_z`Xp=uP;iIRNjsGXH`RS|VlMv;0~s^uEG=t1%AJ6oK!FBae(_TC)} zbl1e~_+uwxM7Q%=2t_tvyega9NRInnX$M?aF(-vYiM?AX-E+?!9-L>gKgriJbf7dL z+&^=gT7;&mwu6{|!#X}ht`1%oh5~pWoE(?__Ow6Q68|=r9pw2P3t~aq$A3{0ZhY|x zH)qab#5yokd1@xlf1M3igb?3up8@pIT7l>I3 zC^$TFkOYfZ)2D9!8VthJOJXpDcMfBCEKU3z1h@?7iB4=DPVX4ArYC@HqSb=}`Bhf% zVgn4E9Qy+P=7G#Uofx{sC1 z)9ZvZD31OUJRfPzoDrNUlCOS-U^c2ei(nUmxL}F^d#Zq(6R7ZjxTXB+7J)#CTxk3@ z6h-{D9GkCl;ih!1)(1@`U+h2$Hj%uL+a!qsnfdEs+_4h-ScU3tqI_Q`HjVt?Ev!3k zsdA-4jw_>DZWD4P^jaaxL{3Z5RANA-&LxNkmk%Ki$_=@W{gVU+D%+a|M=Iv@*1=4Y zyhnscB*B<~f_q6E$SLv{khvf3+J#TZ?@%hJ%n8d`Z@R_M8pA&MA(_7R<;S%e79kjb zW)H}q#lV*JpCCaj>qoS#erOcLEt&6WjTOfMk66{)qfn_1H!YLT7FH|Y9%x_Wq~u;BXCE2E=Zu88&S&K#_I=JmERQsr%0iHGQg`y4900UyGSY?vK4b5gJCqRV;;I}`5;XT%ml!4-CUgHYN- z=vW<*jUJf`Et?goqsx)u$1hv%>l%V%Js`%w|DI8Bi|!6dN*8``NzpEyk={LFi(#|P zxw{0}6n4H1q0_6}=GS3>aIOd8;F>J%>K|{AQqZN2(p_rF=-Fva(t^!v$VuO`Oh3|c zNf>f8aH7-JpW~Xo7MRI^$ZHaK0m2#fr7G}3@(yik$2B&+w{r2isZ*y@7=sIS(M?Og z_5u1Ec88J8rpw8K&_@3`Ij2o^=>y<5R4+pZS54b3*|=z4$WnS@%U+{wbXC98CW^Y9 zN&(n6l2uTasG?8j$W!5D`_&nMIaI+MkiVntT_Y`SwrPk zS}k|0MSPmTJ?DkKH^#uKUppV+MIQ!~(MB-NfZh6+932%4r^kYoRzz)Y*FYViz*BDS zri%o%ZW_A?WMh<@U=#gF&jZkS`^}irp#16s4EE_08|Lsqs*4%#qoB0^w00o<{E!fQYILgq+=YLnuf1@1!i?~3fU}RusYxdD!Rr5 zN(`RZ{DVMWtv4u414;~S?~a1E-*B*rL|>qQpavXX{BwrC`e!Exs`5Q1V>ZZ0d#Ud+ z3{b|zPIC>()L9N+rPt(Gchr?nwYKEed}m6TmyBwIhvCa$y;ez)HhWRX7n0>YSDFmw0UogPxwZ^RQlj(6 zgh;UqLrhSa9Okwm_*jGN!numc%$UKzqNF{7jiM*rMR^Vfwb+KXFw_Ys zu6W5q5~ws0FMa8&&fFqJVp#oIykhM(EY;(q2xh1uiO*q436pTEY)I6wkFEU3lN z;oy~jH37QtKS58+H($T^Bk(?vIzi^bKWA~Dz-#~RH4<(yT&)(CZ;!RO?A=!9yPOXY zC%49O^ua7^n3ChW(B3x-ku&@G@BJNQ(2C(YIqAC*_0 zd~2^*$A}e{D0{5ZQjlF8-UaBd`@r@vc zr+ox8-=ep2PY0jCMlR(uSb^cspRxpYs>V|ZY!ZaDE_IgzrPa2sOL;82z7eb+ynniirdEFwf#pFs-mN}tn#J2CT}EkS)J`x?`P7s$VJ~yxPJL`j zk&h64cOOno8t)@Rk`fdN9Z1O%P6egS9#3Jn3Pi%(>H43@}|IXyKp9*P3XD=VX$d$H5sv{qidu+5B`64~i0&LFRrzcjxN z_yme(MyrLF_(xuz1Q)DqVHj7X^6Q5(hp6~M{5(Pk%{HQhVFbM+$dRi@TR3pBGna<2 ztt2-si@|Qnklvw&?C|C#61`1{603-?{Er4xC&=;d@@zVuIJIA28vx^v7ZT_DDQ;za z81pxk=}kHp*YmHw?Fus@T1Ih+jP4N|8G6%%@{(7Sm64*NeWePVMpBoik%PXr){w6i zNpcT%mzSp4F?)j%E7+#7Cc*!n8!yd;2KQrWj92(NUt%S08_?f?wpEcfhJa zZLj)oDXAI!ickGgm(>|E{ZI?5;Z3Fju1#61J`oh`62~~oby#o@$t6WLT>4*7td_!2 zKi|Z1L|Io&5WHgBCr8BdBdHrq6g8Wq-60iiT-I@0+%0~NUe@>JPB4w6lk4T7 z5V5KIzQ?Nv(eni{Ednf@px=~5qQ}&XZTE)r-H++S9;!L`7?zVm%hToI^4xTL?IbGo ze8D=LqOAy;i zIHM&jP1O&v>Q^;g!O6wXT1KFD;m|uQp<6VZmf%p_UmH4mZ3m%7c_i>iZ>e9TE{h0b z!2EM97S(=qsC704c9&`^faRRoRR(**4X zUAYn!%mL$pZ>g8k8~4*FQe9DpV|o7qz*5wx-jcdR=~*aX8S$w(*sjsmEabH~sY#U^D|XXcwrQK*jZkqA!& zgk6&#xxjjNGsv{eiZDbPli-9P_nh86fv8SfIAnO6?cxtL5?U29$MemcQyt@S8|c^J zBu3xn+%oin(4ST39U2D2c;W`1$=h^^>iH^MVt$~K{_Ln_<9PcWRgjfxl;A)WopWJ=d5G0(DU%!h89(2ENeaCYn_9+=FV{5EkYjLXL5n#-!o{pDOcu+o+-hfRkqiv)Gyqw!(_$(Zp!S3(&9v=Qb-l3DyGg~?(RmM1FHw+^n3{Wq~F z%R>|eY8PO^=gC?VfxOD<+Gu9P_7&lYM;D99w%PRxS#^RyFVXS@h`ZvML`HY3yhJZZ z)RPCUw3O|=2!wGa3K?W0DLf!?RKUNz8%vjiz4=+Tn}Y^V)^3t$3^sj?%t;uPm7Xcc z#$z9Uf^JVewLj?&=sCO+#8BJHGDkl^VSEnjHN|cBPSCobW#eRa(}$nmTCi-z*?9Q9 zeHGiv(+BaRy{PfW79-(5Ld@*~zCS#nzHqMg1Jh5&99OC5P7m)w|v zKOeF(d{hawfK{!ow_~gpa|M=YeR_zE-atEKlq(ntS3}t&mLD1?h_d)nn!!XmJLCN- zZU?W|XIsPtX~U{0-+-E6Nj0V_!yF$Yz(ioErPC)0FrWff*xhJ%v-|v=WedWa3_g6h zcEYuUD?pRYQ)XO4#skUfW~=h^6N}StIxV7 ziX_&_(nN~a6@5-vrct#W+2>VvcX!8Gn;lA%yl%CN3WX% z(dNQWQreiBn7o!SpXcl)tRCsy=MDN#sZKG;TfpkTNVnf`j)5n4WK1C-P1r6Y0CK`vkGYvL>TD=*%)I6W-D7%J_uY z76q5$iuaZI@+k9y7j0wBTBuy-F8zM#z~EqsmX}B8Q&S`-4G7)VW(y=_?2vs=ACfgk zl1zdoj5QbWiZ`Yzo{5$Y~Etwae+=Vj?^7gt6iqK$nLHhr{n@Gp;6G=lH) zrTM~Gw5qU!nrV)%XzzPJ=D1M2#lg>p#=9Dp^C#M zCD6R6ISnOXYl~dT^v1i|0)ds@X8U}OHwVv0F6lxTdX#u?V+1$uBYj|E0zycZl^L>9 zzLNDE>epvJXND99D0q260g@capP(Zh-UC3zqWMW)Ls+43?dmFW3JU~)7f)JGIhs4Q zLOQ2Nh#dYbxB#qCC*TKPVCXXFc3>(z&eZ$SBle0|7QVdZu-j6_J9~66NE-Nshgbn{ zVsn$--zF=J`m5lYktfe1vAFORWt%9ED2_H;B8Z@wmM_%ZA<45}L_RC}JNU0!VTYP- zee}abc0cNc|6ObU4=??9+few|z>&$aH%EQ`XCzbji#bpQq+ZlnU~>h)Ae2_TOFK>L zW&D}qaj9@l#GUzG>I$u-Dzh*WpJ2#b&3A9fckd29?ncG@gq9CRvP1iI`gz*7j<=Tw z@J^pN~HF2IE^y(h!N_>&asw@`yc9Vm$?t8 z?1H-MRZy%WbWw{FnN)N|q4m()Ftq3iYQ?Id-8wtMu>`)_5c5XDRaC2Uyd}?wL)I;V zena)*stDo;=au%2N{^8!!=SxA9IWXuo#ERBWX;livi_XNvUK$OVv_ADjgs3b_{f3W zCCqxNg@(-$o>IqbpR`56K$+9#?LZJYjOj+;VxtCxkRk<~;#8rK{9X z6z&*683TKg_y}&m6jCFv=!7$I-Jc?P$cl<=$to=0$Vsa|PDLN}jrw7(pV7b1pwi33 zW(S7^M>pQtEtaI&A8DRW{6HNEjDKR|=svGL!2JmlfObn29bE1dEx9&RF1dQ878o5ed4dtySJ=cs|TR_Gs2 zSKOzo8RB=Q*MV5izj@P@wbbz<%C*;Q4lI2id8f21EGW6BuwzE(**5P7p%F&q1wA{L)Jz ziOBcFzV&0l=327$+``SRr7-JgS&vhz+Biy^k+)13LmlTTi=#vIN`!p9wX`f<6?(wD z`<%VjnmwvhZT}u^Y-IQgEUNpDnelL(DXrr72rieed-{f z(UAwHMkZT%y9P>v@Ja{*npD$ivOFrq%xg?lsHg3zl9x9C#-~cbCj}w!$RuWH0FcXd z*|yzQ;Bq`bIfihEWpNNZ_?TWlQ&D>fY;xz_aEisKz)8|6x=QL%h&Es{EQR{D3r)%c z?1J&`e{OZ(ln#N|tOA{Fzz{OC1hn!&ozW-sH~EY*)1dSE_6UoOuiXhmEE}^-KJ5Z6 zuMudQF5{RxFaSF}Y-$Bx#o@COwejNb*EY$e-eStD7m$MT6+u8CkyKBpl<)?irjFbX z4AtxrXLWVv0AZ<>Xcy-(VKVX=DgW_dwNMBeVrUr#3AVsWFnI(lCD5JRefj}}V4IaE z=F$>dI(!%*^f|ucv?Q${`!lRr5HVA(lptf#HpRB9ACOd`q~PV8)UyFr zlzq;`xM}VbM+)w)GxH;1OXCoR_5?=!H-RMP8@==#(ze9u``@|yy^wWC!H3Dm{?X*| z{?X(GYz*E0ZSziw|4);^S%NcP&h*ox+=Z{_5Ffmdq!ns)Lb>;-6(?Ut9^xm2M7zV+ERhmGd*kDh8OZO6LDC%OoAUJkqU zNI04YTl(*KH0pXvLbDvfk8r5b7rD^llv;OsQhrqWTD^Y2V!=sE&+LP^GW3Rdw<0UEPqx3>Kk}JcI!ZhR>@;c0p%9I5L zZXkN?HACnEk|q6#V^<&x4#OhB3>h{0NDXLTG5ndE%ZiBEM@p6R2WP6C0$4Dsa}GfS z?|I26O$6Isnv3H~NS8NO7We%@Iy*GzZvi^WHK=`ADN|e7D-s8&%KUI{B+z={)(kFE z@CS&sy5juIw1`P%hNCAV$piS7sL+pK=%aReOXI&?^L0a2h&M$r34UwN7MssRHdY|F z-}ZwEsMwK#tOwYjA9M>~q;8^6z3EO^&7<9-8mEU!6JbiyK#QqRsWneNaCUj{>Nj{) z+yxn%-%PQxKdB3a;=we~0CQnVz=tH$voo7K4>#5??=j2Bqv!ws`1+>6I@fON#%^re zwr$%^8rzK;+h$|iXza$eo5oHWC;w{qK4*WY|NeUM-mRPU%<;@QCY~{4Y7_9t!vryO z8(e2oU=Sf2$nPkBD1HcZq|@rS>?d5(E(X3>U50Xx&6D8=$9Yzu-cWsuxSN44IE)NF zGU)1&z3mmQz~Tib7)VlHLI;hs zVVQ>fo?~)>x@_h9RPilC>;`o0uoUgX89aRAA^Zyb1zjYJ-Cc(mXHui>&7EX4y z|J(pm#ZkFlz{K_}8UiRj!65s6WVMDHStna4cmM`Sojv=Oh?EpHEk@Ts5;r@^V1Ivq z&~)Xc*)z~?R(fn%M61(8mXp5IW>>cUy9#4MU^r&NvEW<-x1b) zTBf#5K~f*d^rev~1MA3ZJaxu`9qDXm+K4CGCZ6r%`Pr2HEuzUuh)5UPRf{=lQkrhFbjkMLdN7i|ej@*|E z5sXO4beiGGP z+0roB*D{!6?I6z3K!0{o%%kiUDMcndOe5G-1FJUzGs-r$@{w+|8x14x`op-Z`}oMU zlrE^<+tIV858szjgf`PTShMI{=}}fQ>F=d8Us^?zb|S=NX%@@D3@a~%f@19@IW(Ii z-qU)t#Za{Fk00SR!>(2^f;N~$6Kd?q0b+e=R#~HDM<}_AUM=Q?#~E~W5)*Y0uA;M! zkX731o|tf)YP~J$fUfWlq$J9PKvmo%L#j5$+#N15)l5+c;gd}*sv-tjNoFcrf?T6_ z>MCm@{<-2zpH0g$OPaRSYBM?IDvc1lVPA?d$rlrO?#ftNBrdC0>vfC`ti)7XK()g1 zXeIPY2%2OgrU*7&0}DwGP#b0=EOMii?@VrUkacrPTMj$|hi9W;0&ftQ1T{WQwD^D) z-Qnel%HtDVWD^AI&ESeakV(qt!p(*n2J@ghj7T#G;gKPG1=r>J3TzSki$iu?BM0i- z;T(=0T>G2Uhy8Ng&!hps%Lo!#|D#d--4kHpi&eUp?T@hlZ1 zws{Km`0$Oj_bWDqUx4vuE#hU=3)xr9&3paqZplp$bJ7lfma|=s;nRA%F&X04@pz7#eHZvYF;0Wm_mT|2x6vP++rML6%-Zlj6MGeDJ8V^y*Q)*P zeq3_G5tN;xJ=N~&Id4Ss+2kf$SW4OQuNG*P?lNPf+2%aKX%47?bE2xZwZ@Wdmg>vy zKuXvoXsVk2{ci%Hs8*0(i_E0ec@q10pFJns0BIcegXzl<`MdW!eXzj_C*o+Nre85J zQYCf;z)^8j_}^1HX`~T<#Zmo!%0f2lF5Y@h&!4CJ8NeZS^}ChWHjBR%0_ z);i;;Q>~<2OX-)Z0A95_K1$%c`kIvHRKZCfTiNu&;P`C5amh8KvH1FWJZb0qq}k20 z{b=hfW#HyRzBb?c<&&O`FBup(eM{$;B@5bNg9*(Gj6>~2McN{!bb6i`nP5yOrpTl4 zwq$yWD_U|(7BIcF8C$jB++aCEbya1Wv)9$=0cu|kKSQ6Kg+ePNz1gM-*Fle_OH8a|#Ygmo}dG)!Nt zbgm&djc)1O$#s;7=AVj3AKMK#nu1AH0nz2Ys$z_&F;RUEsL}zl8oV=AxXolp6dB%w zS#&ixQFoQneVt4?GOQg!?fmkMb7}I^4&ssG)+4m>s8~V?RrBYFNa1Ib;Coz)srjpe zL(2pnr& zvb4yqoWUB?OzQIAc3h+A02V&CT)$V}6tz*(ACU0qU4XC7{hXq8mrQ5vy))A1`x=_S zGz4ceqcdRcF;*j6bQ(S@W0+wKe(kf^USCiUN^?0WRWe^fae?^O;Wf5Iu5zUuY3PU5 zR&bR22`xG=O7gK7(EuD*r`JWNkExu?e8(zpod8SUgK1??}DQZ=fU9E}zm1g@%A>dV~t>5Ok* zyw`aYN{bOe-+|_Y&cIUF&s%y^2Slg=sKFKdas2kb+)_t7n|~sai(&GNms)>$0|N6@DP#gjf@r;Fr;iUjo! zT|g1Kp(PLikFTZWdrt7~Pu%U&i@z&t$rbL4j2=y$XCTMF#zHfpHE-!AH@(eD8l$4aByYwW?{DrM9-V4Q*cJZrhKt;kmST zLi%gfj>lTN10I3vHtN*!*>m-7?%-x1%x~wmKC!z*xql(I9KcmVe*tO+34X3d>-%my zxpZ&>#Te=o1bz*})hAx1@dF2qvW{#k& zOui_!uhc?1g>f22L*KN!u?f5OEA(wX4z+i2p7Q1{3-D6T$t2}1jL@~i*&*^zpzO_0 z->(8FOYa{k%fE9~F#u40uhyC>{#C6lT0Py-qDZ6{Er&#Z0xBOo$PMl%U{%wS==Qfy zwp z_1!>SPF=O^YQZ4}f1xfLz@0&Z;5`f8Z&+M;>Wz*Eb0R*F)SkmBWYft}uR8;{Ye8~vkOrwe2z1jdhsnLB<~OpmhhvCL;u_%} zid6W(pAs3w4q1?IfJ%8tOkf{+UV$!WSUN-2L5oYMUxspqOZ@Ww zBbQHktx)0H_MJQ}8Iy!11*7^^A;|=^A*;}5r3$VQe)4?qqN##?{d{w{#9BGnk0X8^ ztf3jyz5%a#%Vle6_xfjub?*Rb+H8$Jk_RR;o=3l`{A5_INZSC=%={5FME{!HOPKx~ z4*SQy*eL&{SJ~Ip-aylUrXX0h1JST5^l*VK99dEuoGg-qY#baa(L*W!qz^xyoQ@mtx=hx@eVaeF~cgV zbC6Y|1n#CcHD-47b>lHOPcA1PJB(6aNXde(pWFGKcH(!A=WMXh&Sscm$l?@ohm*j- z`f++jt%!e@mHuWmuewchIS);^PP)Brhq#m?(UgEu;aIKlfn)lhC9c%5K7IshagUTS z!AmHwe-x{_1@@&f4^3@Rbo!d!Ik{Eac31&vga)(Td@(bx#Y_q}E;y8QTV=?!HJZ=F z**RalFECnChVcgPVq={m938K<&=_GBR+zR-rzgvZ(@CIYJ09R(7Z?LuqNy>a9I(t* z)L6-qRYS-u7@1w?fP<$x<4!k89~!c%ZM0)Gr~4=b;R5POM_v1I+)B+-%qCZ>gNT{y zBns``9|#Dnh_wrfAb|BT;ztomJn`Kq^Td*haxry< zVI;==ydr3i+#~Q3)w^@p0q^Te?edvM1OzPo2K?}yW8fZ?Zq77b9(n}J1QRRG6#WAv zal_;mqblqJRbil)lML}K+!6OO+byako$N=f^afdx0qsk0kdu#hAY{ zcu8AlQ!`V?e@oE5({tI6Z@gVzOpUXazZqP zVJ+6x*i7gCL%GfTT;7>nIJ&I(eA2DDr>N#QraG}d2nVhp7BONVBT=mDw0Ka_T$F!h zfvOeCkCSMEXc17!NSK1x^Fwk^^aAv4E%*g83!hLsX3+7hv1$&YP$7fQA%iW|m(KYj z?~ypA$A(ywSA&O1n-~(MZF}zgV!H{yE6(^~eg_URqjU=9HpV!Ima#|Gd1;NgaQSEh z1kW?+mZ|Ax159=5oB$ge1^C|P|^|b z{n&l}xbw(Vzj0Z;k$T@Pd^3S-mFECD9-^vbaT#Y_r-kWUs36 z@R=P{ulxM?TNjbNOZpXeNZ8)hDkR?~E~~+V4X8s%a`ntr`AHd~WHFy^YvOS6NG&p8{3 zk@za?=NoPty!+XnoBQYZa_`o9T|k6W@p?r;QtUN{WE>}tTjKjQan->Fg`ss0St%gb ztKMpq&=4|!^R0CGBMb0Z3l@oQN6WwO3@236gEc%=or{$NCq&GHJm{=s->m*{MQQQz zG%Y2J)jd9o6R0|RR5^FiLOB^u9tvHFi>s$+aFOC^;GVfX!3xT?p8cwn(0HgR|8X1h zv~mH6Q?aXi>Fft^2-}*-q*Q6r)q8+Tfa>YTaMVfe1kA*9Ri&l&ed+GE8@Lq?$rj_O zf`WkouJ^r%k_4aVd`W2vyG}((#iZfR;x0Ah4^W1JZKnJv;1~n!hyAv)v@3YR-)^(R z#`4N8aAEhpZ;PY18CHfO^ZLLmnwe=xBRF4;0#EqMG4sTw#m#iPfz*OiA1RAy;#R)Cu^XZfz*$Xh>O(t}d7Zq40wO+R!LlrFxs<&)#dn`! z*epAa=#H{#C7f&4?>;UP_Og`x0!t+s38!ufw}dHsn@i^*NagnZkxyF()2d+6IB1QP z{tkjP3X)M$t*jV-{T+JeHmP$VY;w5lRZ^FNZElT1AxPuPW3XT{u+00qQN&IruH--r z-(OOFJ}K|v8v$7G|05Ruy%{NI=lqWc35pk#pHn~>daJi-Zf|UX2_J@rEU8&%RpU*| z!2xB&(154$-1^bfd6MkBy5tJ?If!0Bh{HTD)}G-bvky3bgu|mbOBIyf2fh7q-|y_# zk1zWVX7Au@t$X^dF}c3i&DtPeqoLKLrg4*F79g7mH}bh?wjU-P>FVUHvF@pu;P zXw#`rsDh07M07CBahY%L=9DE+4QXtpm|8$215lWj>hrYq<$hJ9MGTjJnUYtBg1H@) z=Ee=yh}e)2G986Cwc`en{c! zQ~?yq@QP>vPGreR-|en2r7TcMpX3Dwqw>resUpi9!_%>E()>iNz#Pv+3mbK2K<^HTzXwWj(#93@PE!JzGv- zs!h8%7WNh08{(o^klQh47qZFc;`YwP5x!6L+{4; z_+$FHWIux?*fKmwcW(23Z$xWFE2T`TE5VQaVO!f#$i{O0>kSA7j;#3x04f-N3^~6E z3j9rjn9THYtXA z4YZB4)fg5+t_%wUZGHv5vz5_#fS7YCMpl#{NXTS%n&_DH*lfKUt&Y)tC%0|vSwi>o4(<0*xw6E~n>%mKV zsVKNd-N(<&4U=hXU24@d*DLqm+8+it9Cyi|ab^jj-*BS^9e0qKn#7N^F^q%Jqpd;|zh&^B*gRi)9J9c=VC; z<-#hlxZ;dLPm3jmAq`P2;JBEu9_q08p_xxIpbwc zSwAs5n*lpV0mlxQe2fqf#>RN>G4Bd`*nzBz0Cd=!(r*{Hk2=c4C)GIx8eEBysSA zB=QIj^s`_bdk}&m5$$H-xGrA`#ReInTS-$O&{`o~R?MWgluFuF;w$En6U9tXCmic% zL>Bl5p}B%EIFWucFP7Z_aIG%`$AG?dLe~g)!mP7-Hwafhl9pnTFtf!D^p1NdC{3m) z*#5x_ll6)q`hYs~F8*##A~Iilo@_o`!^Y@~@s+r9^9a{Vwkp>;2PupNd5nvX8rRL=zr%(|B^(;;7v($HOI_R0}`bQ73H240>Xz{h((wK z?dyYpABbw6#pYU)bNFCse?C))z1G?*ik@B~tAn7Mc2EBdLZ@4{DN~;4?>D~2ZT73S z?YX~NEzkW<%z-qLtzQ_@h$8a3C5K>}FddjTl0<1k`s*s3XS*R7F>KwFwJ?PQbHgTT zaH}Eos4hvUU{)=Sp*(uaE@X(Iy=xZ#UdAC2JIo>HHiwsN|6QU922pg4teys1lW}rI zVcIe537VvQ3eC`7a{CyJDWb;9>-V6h>uXZsi*$>$Gm<`$9s38dK@~bPWXgQnS;*N! zoQKm)R$4}Vx(`7e!}VZ7L{_~vSX9|l(M;kw!@9(iQ%rGA(GsEH}OF3agkt3|@ z%YFW}+L?Q~UAewT2%$H;%$6nhhfF`<`Px!u9Y%VF`p0R?V27lY@OM~Wwr z$!nCASM9m^2GQ^(Up-j)=H!B3R$)XnFpjVRz4$nY5s=~nz3^&nyi!9wZlUl#d4-G9 zCPc~{Ys~EW1hO){<5WV`GEuCq}bxV8|w+VHA(|K+FG7u14UDO6{mBed_w#z!Ockeyd6WcZ<_T3dX|HeQb2+=AW|R(HKm|GjXgy9Pz26irPJo($E|MNHYH-SzjPtJZFos{>6$p0sBZh2f5JJBI1|Z20S`$V>N@R#v=zy5# zhWl772qg>)bT7S?Nw)U=Bmxml6lSH zh9>4ECEh5M12DkEJZ>{Yp#h_Ohp_~bmrbD&U9N4b#U7#K^>REio-%Id!vt!FoxB~* zxE6{pe=crbWNX^UxyV*wO%+E5f*i!Ew8~|p;nkF?zxU%yrzH~7h-34F5=}No7z|@| zdm4`LkYb)vnCQ$ndqkV0u0_OR$;Xzq3Fa#Nsnppl9nmxdc^SsQeP~hcK5{sDt$m+? z@Hh|K{SY2J%u|eHLSiCAkwJli{)ng*&%x!^7ra^G&?%u!K87Cmp{ifr1=H@uOf49p02~UeqO5?gt zuSX0_R;Z7%+>}RY;jn*AFB9n?Ug4O0uyCe;7}Kom`AX*Yz<56b0mmwT7Fnpao|`D~ zaU_dK1jJ^}g$^z_@SHJ@S( z<>L911S+9g#~hT6-PnN4kw!}zjcwu1 z@W!ul8RVBVZs<9SJPO8em>{71)1#M<^qu3Ko1p6*V9=w_K74YHh0t9L7s;jqZRJsc)&et~a0duL- zOh^rAd#EMl#LkesfULq~;$O3d|*tf=|>>KPKwl6B2T#OnJl@#_W15q9iAbZCx zr@7GSlSaO19S6*eX#*(P(6AfKY?HVyMXma19x^a8JgEdKO!jgoAq_O(j3f#t&g-0@ z;9MyP2No3G5P5|xPj5jSs-?S@;_mMQ_(2Wiop%xQ2P$BAB`!0xFUJ+r46}_`_6NUL z6VN5Z`*fm>cf**}NRY<(t@=05%|-@YsXL!~2^OVWPU`nbH10!6G+Tgpx{-SuDa1i; zp*E_PS!Eg|j(49uxAuACay!>{R? z?tVAN9snHD|CpHmCK>ckATqUZH8uGi7ShUq-er({f(-bOfct>?1yqIr1%z{{X)X^6 z*bYd&!6K$@P%asA)?sel53_rSHIrSjGM$32sH)E(Z;^Xxh)F~lowLOgFK4{GW?h}| z?`VuS{G!4Gj#~`#)Ac^stjQeHVmG6b8HIV_vXF+q*xvhC=?ZqJU}zr)*G}hJ91$QM z?;G5DoGTmWD7c@5bb915D6g*Y%?z!`M&h>|uMFo06$$xNdJ;ev+VCf?7tF?+%Qpj4 zsflBsE95GTu6(o=ueTH5(P&<7lW*{naYmp{eA8GH2(f9N=0ch@0pHhU593+BQPz8? zbl<@r73BITpEvQ+P#nq_x!R)Kue+w4`Z~FM;BnQ%V2qfMs+`(hBTB<{^?rS{pQwm2 zUjf(k)rCR^F2wM$DK&y&#S$h(KVo%0SkE4xy5`>L-NXPzRSnmds4XhT=MP-jq*T{m z_BBoimJ5+fsx?PJXQ&`7Q6Q~@L0;kDZPlDdyP-#;8uI{d z-VyC^#qMW^QuxLZarrekuv?AX zg{XX%Sw*&~9*wbTdj047*VB3Jps&3ASM@Gn^?PlnenPF-{HQ@6Cu0iu--pDX92p7> zz`A@trKV~62=SQ4=PGmxF_BzQiZ`on8PQ?EZ)c;(w1EE=HDsHH`n%uv`FvV@?4hXfi9U zNde-+Jr1TIC>yMB#aAR@l)w_NbU)3Sc4b>B$ztLchG#T3n&q+JC4) z(8~t7L`d7SRnLzb#pfPRyWdCE-%T=@_6m&j3rAv5kf(@)izRS<*s2v^RPm$kXoD7N z-aG%|NldT-b3@bk%n3^vcGS7cJ%m7NWk~-(YAqrfu+NhfM0Snq0@LiulqLZ zK}wgPd2U4+IEZyo9owNk*WYIOqQqPlbNLCla5G9=O}Q<*v8q>r%d)dhx``{Y5dF1p z!y1QzTMF(&B`QRdmIJb0En2Z%lj@XL`qDKZP4~Ox$uP#zRl4MP|IAS%NE|12Lk}A2_XSHU`S-k7=MP!4uc0jf*PioZU=<)FPdQ0p*9EDklhnj@ZqIC}WWiPx+B= zk)W)Z=FzUba<~%7uwH*XMvS|H|JVvZLe?LV@Z0RdUux;X)^<*&CchCjo4E0xbGAW~ z7wQk_hzf}!yWm==$mr?jk>NH0KNuCBZeTr=1<^gnEst*%xai9u*#;M7AM&GG)cs2@BRQd>svT zB)y?uw0ad~g48ZuBs>8HI!V^n<*UnNoSL{tAa`$hw4+&gVb}<&+IU zl`3=mJMEo?{NoCE7smcLtmGgJp(%{y*VdOfMwCH5PV}l#?nG;Ae&x(W?9rRufEz5n zHTal3${5N(K||E2UU?@Rs4__+>V_YRi_QUX-Psle=($*m?h!IgNd&A&82vAE`Hx5M z_}1Nn-qaHnw4V~UKEb{Zn;_stLMvfD5_|!BEykCW=s_;4r!x3!hbY|;^0)=Sc=CTV z-fz+VFXI8K&|&~p_TSCt5NhG&4Fpo5^pIE}0=0*|M&1J+|cRYCz_SJ{vN zkd;XruwQ_?5K%MuEA8gmG&9u-eX&gavVor#1z9ZJYF-0UY(}BHZhCvJ7t1ZrI~eTJ!EU$ z4h#L5qSLCn!C$f#YU6X6^Zj))vP@a5PfR zP(l)jTq3Ftnm!@@4!&5z)r1CeoDeG(dwCw*8oACekB@bbyt)3^%W+>UU1_J<3+*U{)t`#- zycq?O$g>e08uZ?ZS{2ZPcWC-laYBf>RFA1mR=Ue%u|+#}VenvJKP869EvAW}&-ya6 zmYu$jO*{>aVt*o5p*^6$q9``hP*7l@tiaSTQ=sQ2hxJGi4`{z;XhDs4BjWo|!`(UA z*K|XM%xAcCy5R}GkJe*< z8dz&am6ZF@ik0Wx6&$H97t@kw!a=r5m0}xa>wYHlr z;c7}QalMo?!-QR1i@8L6Y3da0U@qXNn5A}Ua*#R+?yR*`-6S+5WTciRNclqfsh@um ztFFpx^)w;)ZCg#ymMYwRS#rjd= zv^F_$!5JK+`uk5`IR}D7@<}#5!Dl}s%~y`UYlHt?=Js%Rr(e1sh@WFZ!;>Sr_@s{j ztt^P27d0%UEvOQu60q1)p3~b@8xlgaKrUjC)TjdgR|AQ|^JQX%8;SaXrSpf6G_fqS zKb#hcQ}h}q%VBY#6E)fi3k$?kb`PsmXKPoyAIQXi2t4}n9%nl>@vD!2OF!gLbL-G! zZh!m1)OAQ!T!~yH$vw^BS~}viwOX?l>5n&13>fmRtFheJ4MnzwV7fV3E#_<0%ITco z(Zs#JlzPv9^L_T~MN8b)<^Z7G2fhgRDn$?h82Lr^AOj<#tP&+7O-va^Yf>McKq@tG zi@SLBoK-H9a2jWnzRD2#@#}$<72}WZY=G0}{p0DQ|6dyO*YMO|M{lF>Gg@I}7Siq& zYY9BJx?hl}7|Zhb>&S#c07Jmufw9R-YR4Cm@+FfYA;a^1f;Y`<3M1<^{ov;Mp>zG^ z@%0|mKB68AwxMjwAyII(zcvgRh&MhL$vjHUk$7D|ESp=_i2v#%@SqqtCH$y2|5but zx2f4;Q@OKQg|`NMT7$Sx!Jq|)`ei~Ugo=zj>8_Va`|LV2@VJb(tMDO&?KZOcbCUdb>P89B206E27{1M|&xym_Z05LOu#uDoA6{ zq;RIoGT48iY_ah|C=>r$a+0cWb`~7?m7p^r@Vf-2N7^JAQ!5hkxKulL8+uIdVz0<6 zhje1tdz)_TArGb`v#;rF!CIpd2N@!!SI&G%@Rq0e31jk z^^;-Jiimc4KXY-WCbKyv0;F@r<|FKxhTgAfa|18tW0aCCSy6VqU;f-Yz z19y;FH?R-`2a1jKku%b3>-1Gpvvh>QCI%q}K?Z?jsAFJaV6OS30b3yuALa)KfC>cU zmCNU*0KoOD0et@*I=}VF|Nb|CZAZ?g?#_Q-RApT|B)|l9-(s&TEv*49)xv_Mp+J-3 zrnOhiG)Cb{K~d?Z=7AL2p^yRNz49}d_dr43WzRu`>@(sk%I#R)0#%^>{zMvJu+h`( z?rBo~Gf;(*YKWf>urfz6GmSY%wV`5Pd^85#fySU{kiHZ_I4VE^2Fy=l^~fE#J}LNi zG#1&5o~v?HZ-PQB6n4nBI7bl=fzq*ip3KAWl3f)9azU&Y$pA zCLI~=p%cTa6;#L)Wh`$jA=NN*PYwy*VSWz+QqwDDiu-exQKnexB{We>IA|53EHU!j zUJG;~89V|OPEx;@eN>z>R7ue$PO8#e3?w|2(bnwFv#7t&dhr^eV+!Yags19r{QlRV zwV}G_@B{7sJ#-NW*jgzENSl1;&=QQq;Ly#4kS?Flt`8(hpKurWjeexczXZO1CWxg(8pk{)%<+W% z6Ki6}#TNL0Krs8qMmx>_4F?26(bnV-=@>igpF{<6YYE$G0o1)Kbp*cYV6E)Z4UiBx( zKNYjlEP)&~9BPh?$HkKrBuy$r=29H;B0F0-NT*11m)N*!g;qO5l@2?+RrJ}u+(8Jv zYFL=cLoN^6evY-uh$BhlmKwF?!W_QWf+bS3jGD-5K{q71;W$~=IJ}I50p(2?6!xgf zv^bVp(PlovT9qzVM%L!!%7ELOyHft4`{mQS(f3k;xa4EKVG4@(^3gR9qp2iDV|)Bg zb8&m{?;wvaV$FU$B=;cUJ9|{o{*ONEw_C30V&`lK(0z2Wb8$5O+iRIBjQ(1yGfO6$ zAf|1FzW||OuSkq>$Hz7uo=c(Sz+Wkx7B52xf7z^q((`LIu$#Za)Oc$(;9jp)pU23* zBVTe-5S$GTlZB&&vw_itS%nSWsWmW<{{9^Fgs9H!n@OrPE{8eBv&W287kec!$YflS zDM?xn6MVMyCWV2=7iUuAUR3!gLFJG!gdE3nB`Jby_GLJs6ys}N%OpA`{{j}B&Phv+ zf{S6FgJOWOVM=asakbBw={NM70Ejp=EZBL~qYVnuc!C`ZDy87TuZ!y@bVc9Vc%}xi zeD|h`)m088O&PqinTl{xYJXr$;#&nCt7IW7U$1U(r@A$WjI8SCow!7jMmGEFk)OoU zAar+=j_6JwA<*jN2ZG;9FA2ot30o($XxI4uI(ZGLhcH^esaO2*epCO|& zIm9g~fa9o<*rT5@w<;6D(Pl~r!moFcmswchQE!Gz7f=*aWIp`%vhQn}i&{?W{ za5iD2c1v*{Gt?U}MTLPiwj#P%@sVY~FkM9T8L9Ob0EN{mKMh()-w%RK065&QR9wm0 z^lHMJuE*3O7a{o~6V_spivvZb+yml{j;{h~C1I;gRv~T}O0926SI4klzS$%MnGCoN zytq0^-^WzahQx*m1VRX*wp%2ml_Fx5D~VK#HF!4R%n>6;#9J63sl!GRTNnTrW6TVF zOq$E|Fnwh+z$d6M#(~@;CalA++ zn6}iGQ>bdsrk7G9h#s*H5Oe_dsF}}~$|69KedI|#*Un0Bo;75Emxh(8N)#8^d*=E; zSdEAPk`Ol?Ju(+OOd_YuE1V_i9jUgy2Eh!&+uw%BF6x5gP=@Wi%9guLnX8lJw{G86q`iHa=+o_@6$KCbvgFaZ2)#vlDG z!M|Yc7e7&Uw)-EFVj9g216b1=Xyz@t3j$*UY9+h7TwFILg$T8zk+lsOmnw1Q^~?t2 z`-xxbi*y{Qu0}HMckJ&k9-Z&Trt7DgrU+R;a$Ofi9C}UK_%5-{5Mw~Tm$F2HEOMHx z1Y~(&)Q%k>o$U3Yqob15HcZVEGQnfYy#bk3Bht4Pb!r5~5x_EeJM5QUsKke-2}0)U z*V!XHiZ-8Kl6Z+?q&#C2lEORhebEXKDCw3d6f4OqdTV!Qgj?Fl|JOXl{Mq;NCptF|BGBt!;EuS9rX zgHd2X`DyRn4D73w@;P(_p6&qBeNdr82Pus+3m-z~$Gz>+jkOMJ0ss>4XyyFHJS+Un-Fmiz!K{ zj@AxPv7-wy0lS}1po+OBvQ(Uu6GE`QcOQk8eg9}i2YS8$_ws7y&2kc|9l~cmt15;d zx<*Tlc#mkHk#X@PJ{+6neju~NcCOeK=B<>Kj9Y$l?d?pA$J0iiPZ@;?D(FWFC!EU} zu35%NbnN^?0sb3|HRul^;&tfx*#1?MI%2TP+8hC$T)YXp$gL6djhyGO4|`=IQ16Gg zVh?zbj17~y^3O)Qggjo8?n!xy+6X|%x_(V>kX?=?*Z~Zv{Kqu%w>~PMfodWKSpM+; zF@`85fFj#ZrGfkD7CICuy+qKND+yf!8jVlTC91hfimS5bY%~T)F?ppr5X*A&aP2-Y zRp%uqeykt&*8ZeHh{cdXafcg^ST@V2u9Jl0g~r3HE6vCE+sP}Z6p zh6Z)PwS$X!V)=x(PhT1N_sqtT=>ontor@DivtwRyZ6F!;*5piz8&(U7!UAc;CIR9*LzTW8Zh8Z$d%D!_=a_C18!V=4ih~3#Do$O zkPscZaUmy=EhOwV1M9wI)f6ug+#ySP!SqZySzcdtAFDu~PD3v>f%CK@r&>ORY`Juq zOa_F=oQQS&rfGRtZS-X{@k1Js=PtLTN0yo|g3Caa$`hqBrf&)ov@h47uD&0YfZTK<90iMw{6^W`lG)L;;ziRf9nyl?R;t{}@>3U@9i#)L zL!J=Q9p-uDZPu%~5vIB#cHk!=2rb-PVU;bYLhrJ}0VwaJXDTBPY~r!;t7Zcu?Q3b| zS1iXHpr&RA-@vtst#@ee8*_LNtr6FWwDDlRKnP>#4PYn*pgKVw>jx8|f@~l@@yd=l zfZhB7li6N;d82f{sF&v7+21`m51L#B~blx)%vKF%1Fjja2>HqBx z8ZR9pn~4?utxSZFE4DaM&9SPwOT3fH;zo!{ro z?569Lwp(Wy4x%Lw-WJtZkF#JEhrpgh5^Ax+t!@X;e*36Tfxnm%HTfu<-P4tinO;8{ zOZVJN&4%fvS}zpmh!0(Q`Z9V0J``!fm4-2P8zo? z!@Ha|nst$b*g}=vW||YLVW3i&UDHh!Q6$cO)Ckn41a>q*51A@>Z3%t9x5*<#De5$) ziZ>3^<8d3h!yn@AOp?VEAXR~)I>YdVMI137i@Z+A3f`qr<%4hyIo2U_YM2c zECPO%D9sXJyq~+Se`c)zu9u1Mf1{g=GhhkKf6s4!dlT^M*Fql7rh<-+h8}=!yP@)b za9|t2CPHL&3?H`T8beJ*U_pRdw-zbBz?_ygG9OEh4GoE!LWUBzZanG&AvRg2M%sq+ z$Hn7~1uMH#8N#fY(v*pN<45EbJ~QMiLhdw=$q|pwfGvbiwfm=CzOQgwOnAqkTb2m; zx5luGEM67D1F9BP$M>M0zpld_N=qk9GZY)YyB4Gwc2Vq;#chtAuMISXYYu41Cl2(0 z`+Nwwdrjbob!K@l)E5riXbr9GXGc8Rv9#HU5~!A)J~=iQeP~^{ATsXS#B{^?A*i#H zbG3HB-(RF6tggH?vtAn=RO)IjQ-FN+Qgl+aI$PyRTWf0{^2?9w_(tlJ zvijmJYir_TTz*t;kFzM8wK|a$JV~rO6e-p~w4*#2?uDS!A13Kvq*cW=qBYziSR5ly zX%obBHYyXF+`hngmZWIiHd=P5)txQXAsH`w8?KklkG+_(6&$7|8G`3&sJ;V1cGvH@ zukB{*)GqbofyO$+yhpl&t1w*e=FDVgpfe^nIk{FDXmC?vb1LObmT)m8t(H>suvo27 z?C^ug8I!Co@kE-o%?=g^@9b>|&hx9T%{6Gzy%xe2{ZNc$GqL)BY~jo*esmwqN}m?3 zj5_VeO4VfZei%Ym>d1dE{{!@dbGYu3mt|6*ztgxtJ;{k#QDXej`->qHcHqrLYr>~N z%CWs~BQ-;7_Q|b@P~CNsg=cu+D@ftKW zZGjmw(QC_(Jw~@kpD5KU^GdQWqkuvs&1keJ(gP`#WDE%FY;hy``QL4Y$iIi(B>bF- z>6T@`NbsUaC5J?)6XZT72MrtYTS(qLb*h?vZ)#Y{tNj*&_ekhR z$VzwKi=8fCB<2uEyc~W;?{_ckN;TCDPzMc|Ges>K3Gis7v`SxPb-sNJl3#%{sqI!j z6(&+04APNAw^ASS8LkeWUd>Z@IYj>I#(MW$V*PR2jMl;MeyAAHqW=!|Bwma>QUHNDU zsj`pKsX~~NJUy(|jMJytB*h3;lo`cLeBc=J&(W{!94>(hj4W&2!^gyd5mz;S)9R-t z5bNP5f&twKN4y0N3tuF;mWk$do9g2$$EWr``kaKx7`3ThJ5h+BlmGP(lD76P&VTKM_&aA)QnW%AM0jOOxrrZTUD3#&pOe-q9})HRMrsr_FGva` z2ntnroRO{@Oc>Q`Ik9*G34Hy;7v?Ldpa6_^vyNXlp=V?xc)ql}oc7R}mbHw}|Nl69 z3!uoFY+bu?cXxMhv~hQLcXw~xy`XTH#@!tnY24l2wQ;wG%QxTrbIzUn&xsqCiX8zJ zK}GD$Rk>HLeBWnv`+?Plseyf?H;)@YDAJOqJE1PAGbIi^n6Ei0!RK_VEd7%r)H~~> zBN0l%o?uUnqZw>u-iMasBRV*$-}#b7^2~MY6b8qja8)vs+t+7dKSTwP2Z;%T9eHS5 zhY`=Y1MSIGE0+t4-ga31x_=R1ls9Xuu2ZwVRJ{iwF9J{Y&8dnN`n{`hQr!2!`@GrKlG8}0 z=d0M`i(SOmk-(%7Q$*a6*E>RdY!75GIF)TaQt8>87Mp3+pFl)LK#sYgxcwQk7;~D)|>*YVeg&1 zv3J)z`w{(V$O{T_8x#ww62C3GZLbSh%ms38u#Ag+NB5L1xK&kCVNc^9xmVDr-~ZuD za^JB#$NqeB(f^OB2giSmI`O|w2mdSJ$p4PTzux^j_L7zDJ~^_;e$5P>4_qJsVp3uz zvC+WBuEYS!Fw5BxNn;oo$}Zg+IK7Sw_U{@(sQ0PI8r{;M36{G^R}wfDHASin#T+LW z>*KsrhMQ*B(3W>(Qh4*J8hkKEk^OIBg&tK zSKrqkT`Xd;CO&&7o`2^_e)c6eZz$%;2p;4(E(^}_6_pZI7mXDEE-i%+2B+A~^#_Vs zat2_^kPkrq75D8sxH%!2v7d;m3qJ;r_!7!46nX)~%nI5ep9ty{%rj`}F`YOI-#*?& zfPzh*1&Tp@oI4y*pIP*D+0!94U}nR{o{$v9+cPA@GveupGDbc$kfFVWB`-&;Al@5c zo4SaKUs-^p>n;hJUr+mD6d1%OyWnb|j2bgQb4Uet; zG~zqc);~1s&=C10(e%||e>ZK7JPKb-{0w_xi2v!B;or{2|B;6MSAhSwu>U*Ov(;f- zRSz)U-$ydXdqo!`<4h$<0V8k}5wNsM|`&13*YrlRO3dUplCm?lSh=ix}xSw(5H7D-!=T#iu&ra+>0!H4m0VNO7wxPlMW*nBlFSO?ptrW0uG%sS2u$w^V zC(#Y6Tcj|!w9tdHGj^7jleYubXJI%NL?dh5zEF!!%^;$v=p)3TA0@Wf0;BXu=v@6V zM-4e~njOUZVsLYzsU4Ow;U3E|so6hP1hDi`%4)o>arIMI0E`_wy|EY_W9oP;tgXc8 z92h=w@ew$gL>#+Ltkulimd!XLj`=Jri{^tVp^Q`jYh}j}Qdl#*Um3$-+}>9X`P{jvon&hDum`mCr5gX06)qz$FT4?Ylfer%F&@c?0z z+bq)|T2}X*I_c=UoVu=sGue=Q6l=A0?31WdXSpXcp|`PFl(}KojfKpheyZ0K!;*(D>P;;y*ixA1n4^mt*zsd- zCnMZh>&S7DBDDz{23W%_7?EVoVUa{9{@^?~Ja0`$(V=xxVD7F!oher|We`EH zOd!A7Au~EhnK9Fvkx7gfE$th3iXSQmQ$yIzr1?m75C!1rJ}rmq$Lsqs=UW+M_TVr2 z#OFbeeNOzc@$J)~xf`#88+|)t_Q9SFVmeUb2L0&mJA)NheMKmR1VFo}D!=%_KY8Oi zoW~^3q|HvD@(|5b$h=H%W*C)Ns3FQFUM#x`p3mT}6d!}5miN1)TEsv!Le8NDA*AOB@w8 zXgd$i?-HXSK@g84Hu8BdHBe~CLe|22k8Ugvy4-3Af#iF<%u{@%>P(#g; zxJ?b}%8T~Q-?yWKsdEO@(Uh_^hd6xMQ@;9*L6dZfA##BZWE91x-1SSknsbKFAzlT+ z52jKAl-wX|>2aa;+eA=3$}`m}GodDwh$UymM=!~+&-5D5TR#EBVqvuS%zGtXe1Hc` zhWPsZ;2r(+{x~YvuzXjvz`dar+YVrxM=tTuCRId#PY>D|k8*#rWFw**?tK8k77ZWBqRZ@ubFW&9Q zte0*`Q}9=c(z(! zbF}#b=H#oE!%#be#@gsqxcGkmX^Q@~Os407H%kI$8`pFe%X)<2=;+nky-}d{@(ty2N5KQ!-yHKJ^xM70;JJebn*Y%m(P+4T z`Iq;i@@ogRa0Qq8iVV9)bDkdv=7IA$X!kuVKiL3)h z77R<4Q(8l@gBBVWs^9T_1wueb2C zik_RQTpe&dNj?B)e7&ztzxW(qoA@mQwd8Z8bf?NHu6QU)=WXh?q&g)Vq~$`x=L%Sa zV}_{NVfN-tRm*A8%7Ftg<&d{(43kP;ffk6g9;sE^u-CF;hALu)2gU8ag*|e7*mYPk z+K^5cj@$BF0QXZjj6flJIUAmpnvpOA9h@s0p%wR+Y#pWba3#MOZCH)m$A*^Sln?R+ z-Iq((rv+YcRkHF0A6aEMX1Q!Bx6D#|R?PBH&GO0K(9<*CCI>U^!iBCF>!0-9%IDHk zm|jy2fG+L956_X!JXCE9R|SOB{vDTr>jf z8C2cBby!3AoEqa-F&539t9r3xAQ}~GixlxND~KKMS?1KYnAO*8mLLDp@1__Y zxJlO9(wva6BVWhxY;*M%A9sb6?oS#`Ogge!zH|xYov0)S$mk`PjJI6b{hXF>DXd?R zW@wkR?jNAhRh|x7KyWO_Q_8pB-QfAk;1jsfOSKxNyK2&Mojf}zhFLLRURkLu4s&Y1 zIzM*T5zf+`da;(XbbQhO-F9M>E6O!o-Eyq2kPnBU`iOeM%Kk+}cx__F8|qUIHVB{F z6#J()1L88g2I&BB5#C_`WUD8Iq%<1U0l^VduN%jxnD=RVi50HhuTJy1Nb%QI;3$a!)T@uOU z4LxzUqLqySu@ho$!qLm6Qv%R#neE54y-U_^0l}&l?|!)}0D@(EU!l$L)_ZDni0~DHztNmH z$u{aYFrUp?(EfY<58+D!>*uEFUq9%dzx}uV&sLvG6=!=h*Z-jg_;1PQzy9Oz1oZz% zKF#DOV1qt|X;ZQ)OxZz%#M3fso!)Wa5d1ynM9uj&wl?>+1YQAzw6pEt6J~~fX`Wpd zNMGPY`9XkHU?o}|WKF^v}IX*P^?zOe{MWtzMS1#b*#6nHKlxQ>cYa&`m6co z*gi$N?AKp$;KIuZQeT9kxnWSCspH8@LD+1+k~57MrbV)%L9AI*$o-Wj$`nQaY{1UVix9Oz3?w6xSOzT&8?^KTh_b zK(@hcorJ&%orL&#%X>|5&s+jOH}?~dF0A7dEuPO#_K1$R;G7EW+r+#@y>qm@1w9Rn zPl!ILnU_v3lA(RHyd}Mldd!o%@4T^oxjk^W9m9P@U#}?a{R(@=*1LCuGf>z>TAZTPx{c?aAYF^Yi;4>})$YT%8N7ORduS0F3s|?DOp7CQ&|z z%DH(ueZquZZ1l6WX{jB!z&Xc`Ff_J1D=wuzRLInF&Eg$$@tjKIwkQ?k`A=WZe8d1U z??h%W7R1pVWZ#C%>h6qU>rX_X->ms{l3dFGMZ*vt(rob~EvpC~b5W6=%>{61vEGV| z6yoi4XwR5NLS;)Gm52|!CKKB_5*=_ULZG{75m{4DJc+pr!ab_cbZMa)fEjX9*| z-)p5L-&q*Xs2pOP0;*INa96viuz%Neh%*)vmzL|=7~5wzP+*^Co5*DQ68XEY7gr7s zbc(m~Y&PWozEfnwbYN|7!QOfDkAzPspbp){AOAIpNh%kuFDPyYbOraGGq0`~PpXPB zL^o?DSSY_A0I?U-*Xh8~MHEI|<~of`c8 zlx~Fu;VqIa1cd1<7&>kxwkx?_!I=x37OrcaPU+I8ziYOaqB`W5g4!cw>^XUNQM90Atcl*>uX}pH4a78 z=vjbPiS1Ku=1TF3$x6{CyKa8(>XKx$cQudLYgBHIQgO=)n=1>;C!L2m}KE&k;yti`NiE(o7TGak0s$%%03J2cX&GPN1-poaNVkWgZ@^1CODw!19H&OtZv< zk8!#Vq?!br)KcBK0@W8*2Khf(~aSnc79=_@n%g zyJ_7|O+Wgx3XK07#tn-J+=e`Q4Ew>3WCt&LGqWpi_J$86V*x2eXl7YpDa>NKd& z9LjxR|Ji|$-sHRRumT7V*?uH*I9M|6p2~DJvR=voE0%UeVTE$e-l$16QXHpprv5rw z6kc7IVR%n(5gk=$eR)@2F=K7D@%c+A&Wr0EctH;$w?}j~jjWV9yp6+G7f2r16mEhC zN6<1{Z_|u%-6bM}nI^7Tq6_?Fv9tlr}y1)t3^eO$~g2}pcn9870z6Xxa z52r{;nZ`81c+T8S{hF^vnu8bVPMY=X&yZZd$e#`AqHkq;kk7olWD#No$k?ORtejWo zlrB*P*>5cWf?G@13aUn%S&mx;tS(I$9sKA~Y^uS7>x`6X^kBw~&BilM(V|0QjFfc8 zqo7*srZES6t*)o>Hri{pt}MQAB)4YENY=LJoyBikj#zEbr!~q@&NsDgitwTmpmj@#V7aTrMh0M#+9K7KhnECu@D!Q7zo>--lT8Q}D_J+Nrc{)|Xs^P}oh_s%W(4Fe$*MW<9HV@{$YE@DSsj^EuxRZn_+ZPj zZ>47;Z(zi0eA4%Rj=Tpo@wbFvNBoZ3WNt*Ii;`p9wyG@BD}ezU09u{M5{?<^k=KStXZMyKaF|9yRG8O-Vw->CQvIBP|Y)M z2`p!jw(fJbMQr|V2p8e&D1?l?Us@A*9n~@xZD#eY<|e76H-{!5uQf71#qB}->cGs> z&h-6O2-t0#0uLoIv)8;&l%9tXtJ9b_?oB3IZlfv^if$aer)cJg3zU!p)e`|a4Ug5q zm}AUDS^q=nU2FK@6RQw|UKximM4cf_`L5S7PAJ6<0o#N6PAD-04=)GYRVX74?0M+|Z)2PD&)r=JWfh(bXH$WQ~e<2v;}A zz!ln6k4^!XK`O_PWPnOqH2ZK(StozYsu7%$T82%Kz{oylm zy?4~Hq#Oke{a_-s;g`*VhpF7Y*Txr+9)9xZ*gRMu>LS7k!s7~_y@`3a6`G3y(q&O` zqecb;OgZAO)`vgLn+Ybus6IK7Qi=T|d#Kh4iro7O!Yl5MO7L>HZ0wGRDl|#b4Z`RtO6?Pblvx5f{`>i++?h7BW z!o^t}@#~P9u!!`*_*vlWTsWYbh$Ti4VhjrpDT>RYPQRWHE8%iVi zVX#C9IE2YChAmWz)_@j*afX>Al1jX2&AZO6P&#Gy)!`((c!Yf}+g7&0sZJF5JqxCb znJVU?5+jva-lTq02K(_!0Paz8&XXK{G>{*IpE6azW@k zpik&%T~JL4!yXKu=q+KOi%p{Qs01yZhiu|1zpEJZ$Mh0lh-gnC>-DsvGubkyz{1Kq zuA@C8_t<}iQvFPisV}bEEvd^?(&!GhZtapLDqN6We84=8lh|`*j`oL)m zut^Ccjj!;xzrV@;f%;D5oo_y0rz^X}x$R5-{3i~8r1-`Mjz-O%qAbLMK@^CS)NNss zVC*E&W`&)y+hT-67=ZBvUP-xrdrcF?>P4`oon?8HMB05+NIu`Z1jyc|UKtZ&Su_o& z+5S;rde6&}%jx#=72`o}0AAkSKoH)QlIh&lHN!`m19)&}vU`W?5r3JqcB0+%RSK@k ziQhkLlapcj^z%EIqY}0=e`o|vo>xr)V)K^sLQZd)?S`%X#D~DPPk)?0o!v__=`w05 z2^70{%o4v!!3|nUyCO9n26BOav%P7@+~rIiHfO;xgXpa+WeKM!10SPtCShk+&#=vQ zgT4cc+u{eD=I4Q`33Wu@tSv!W$!q1-*_xZ-)GYvs$-VnL2W4C+1 zm!UqR$@UAVP(H)S4n5MWykp1@A`J%<38THobUdPXUS1~2y@TjIvFHYTguq>^w5I5O zFF}q&Mhy!AeGLI4#FF=rE;U`vt{v;Tk=V_U8DVi^h+;iuFJ84%kt_Z-6n4s#w>Qm| zQt5@hl4ENsjag5DW6JpcW)xqRSvpKz9I7E&MQhCt%v#0Q`km0!R-Y2x8G>KO7RR(| zlMJc#TXOjEO&`ht&vUcmwG7-lruA@!DSWUdttffnXvMc}LnDsMLD@j68}39y%%$s> zwPZ7s3K4M!`}~s92L$Uckj{Bd#ShS}t`JUxvV}2s!5j^gpMv+?$K@(kNqcV8cs2_l zP_#ZZ+5FOi?;2xG`JF9Wt9bIcTih>lWM8Am+YeCVShsmozDOb0^kp_cvDMr@n8bQ! ze-Bvm`NDkk$8k^v3}~V+cZS+cjM5n5(Wk3x&Xf?nxh|BMKLY8cx0cr$U9(D1yp0Qx zeQ?eES%Xb>ZPna?(L8Pn=7p|#qn?J2)_HNBt9(b-PX^Ma&w0*8`f_0+Vh)9I7(_Fg z-b{UH>Z!e~%V8pnp1FO9LNGd9D_>L4vu?j>38KYl^q6SZ=0i!EF2Kal2QUxcB5dNT z<6u$1FSu3BJmPME2K8cAI`c_6g2Pnk+g~xhHPwQv3Si%33zX@s7RqIwlruCW*M2k8 zja7_jfrRaRaUW(NAyXErUq7?Dpu0PqO?Pnut{~BYLUe%|7@$|Qp+9IARoG+C(Yr&AgkK+JG+;? z-l0V#)fja-DwaDkmJ``e26rvQ@6R*a$+p;&f{VqP%gm4vCBc}b#6}5hZho97Q5<#b zu=-s<$nE^yoIRgsE<$Eb+|_?E!hS7cuO8be`gz^9OPIreBy(!-)@RTs2mTgA`|wsN zX6~JQA8Nf(@MqO^3@^e!QPQPg7MT1DWVK8>6B~>way?m%!QO=is^(^vc zqo!7H3&7Nl&$VYInnAzWF03viKTMG*Duo z(?fQh%Jn*c8W}0d_&N@oi4fCl7llQSmliY1H(!Z-;KW#y4W&blmu4{{IA4dCjstKR z#edCLr-qMefHoDWGw?Xzehuct(}T7v(SL5{B-lZjgINQ(j35iShpg(N@uS{Et%>@9 zdS}7*TJ#k9l>8L))bs?`Br)JnMCwQ7cHMjzwKb-E4a_2aCq4pvHxuljN{x6tfW6l6 z1U?Bi1CS2HuQ_p0iAMOZzk9OuFrj@UqyiN7lXpwsqMlkh^n*H-^55Fgonw=3?8}B< z3q=q|@Y@vH_iM+K6{Pj}nQjjN^@3fb8#nA))c%ZoH!by&e$;@2?tQLjhj02Q&Oy6z zi5PO~)Sk}eyO=h~k@d>yL&zxL)B zO`Z%E7AW!^{suk=3g<}BRQk?$`f{$DDDAm{@714EkL(|%qVY*2h08$Z#ead}>X|BO z?CoT}zqYR0dh-}y68#>K<7t+Kgu2b{-EEPb3a+`e>9|&R`MLp@?k?iphiIAG*EM$N z*fo+j?loT+fXC3RABz17hA2=cBg`!L%^UOp9L^#!6fGAjYwq#{J8Y8RAO@~AV*?V+XHtoak8(1ilkvb?@*yCJWct8-I1y_)W*TbG44u{#-h6~B zi=HXS%abLGk|~6u(Y^T%)iy3wq@)9s)cH&E2%V9jKE%>kg^}VWe9M^5w*EKh$FcLP z+zx_=F`jL$HaPvbpF0s9XqzeDdtPtspF}CY`j9_;ET573R_lE{S7K>^e9u8HbISDn z9;RR!M!Mt9UyMK=6d55c@D(ytNXfdgZE!@+Xqgn2q zS>ztuH{s7QPq%%l=&?JTub{@WDAI3#8wuDH!-`f-WF42jgh0L#Q#_E_P7wf&^}(T3 zPUh6=f>kLc&7zBqj#}-!3aFZujMtWv^8KTk=Wj+TU`YlAlinSy<}}Qn#w`JqCoKbXDAc zUo1KvgfeZzJwbW}MhfOfYEV-0$0!)SnXi3Wq_{pDKTCJ;bD8995b*bZhBQQ1p(%`a z=+i=1#a8|i20H*ArV>F`(|b=Yo8A|3@L$Z=(8Xs6Yiaz3Lv@Rk)ow*28@JH=_|zfieob~f?&os~#k{|z-_ ztJ!w!2T4A2BQ0{a3#~G7r{RioT~`Ci#?Ya7a(Z=d_fa{*bDU3W{guIJeZpW%QFmp= zIX!%6Q^jJc>JWVfAC+%O9eJF#)9FQVR!dOEr8;f(UB~Os%=*JQAj-h36N(lA0apoG z@a<`X#t`ufM7z#ZMwNq|l*SM^<%!W`y^DU_R8!BQA2lJV7q<~63#u}CAqy7rOGXIKdX3YWH3@cK7J*4S%ooC(U-b12 z5+J9}XzU6}-1K;1U%ftP>Ba<5JiLM)qdVAVb5!CB3J{8|RllLL@{`qnZ{#B+mm37p zg^9N&(kaB;+eW#!n`<_EA=FVkCW^p#>>}-Qj}X27G9rr?tgU#9-Ul*Co%hhCR>~Q& z3bI=Ejj=BFJHlD52p%`Sz8(UZN2pY5T9CxT!nU05-!2^4_DSaOPsz*N|47>VH{;2_ zD({L$&MyCM%l>buz3AvabE`4i`FaZ|Sr_OSda4jbQHtmMRYsEO=F*g8zUT&hYCWMy z+nY-$4p9;9!)^QPm-}&#Q=b}hzDCfb+8xt5iMb)nym+Ys(XR=VDrJ7H+*H%-d8-O; z=Aq4G@%#0>2(g$JL{m}Q+0<2MGBBMyxrf=z=^dJ~`|HlHT{5c3h8t2b(@uk=88FGB(mGa+jWb*D zMn_n#WDT-P=+B<+dg5Gwp|fT+ACSsKtbDw#<1Na>?EHp3{bhl~b65tz~0X>#c3 z>ss^J*+dQf_y=iE#XybyZ;PY3)Xnr?w(P*q>p!n1|EB5x*Kq&C%53kd>go7T9bJt2 zl!}T5`a7W~$(2WcfM63f?RyY8w*P{rsXHLV7O6cy`W*v&`UFl#ma1t3J}gnao_Y_Nbqwwul}9ggwqvTP3pAZZ|gn^FYW zkV1;VkF5SAZ5P$WT0@wz$L+`FaD;0S!$Yx~59j%cgY2{v&Vqp9Qub7t?8SBGC~s8? z+-TTrAcYyr0m2unIC;0r1y7AcAEn%ju1kFa!o4OW%&R;|QCsF{%_>|?e@SaKL?vQp zw^lXs*$>Sfv3q1>)VMgXeH%gMF?Q0?n;ZvL%*V0kUHe_?3|Y3_+(;2p#69S>I&8z(ddd~!k=IdRH&e7K zJA2EIOZb*1AY001Hy`c^7uC#UMlJJ6@K+WH!UCt@U>@tDK-qC(V^Uy57?{otIk6Ff zTWHDosH|LBQlxh)6RA1H=J+5$ZM6krigGfr zg{d~m$LuX9V_SYh{T9E2k;gV$e@(s2vey}ZU~Q&eNC1=BYj|Nfbz;r^P^I@_>Yk1$ zRG$O+XsJq+(!ZdZM!b%yNVjNlJ*%FIJ*360$=UU5=1cK0Wd&i7A~&fF+GvjalqAyw zW_Lv>N5*_`bh4vY$+@Yt*fTEkcz<+qJ8|V#*`z5SuEB~C^jpT zQS-?M=Xox#V8C>a;tX;jy<1F)-jd>GQ#Oe!kbM^yo=-%I`3*kDaE$f1g6H>BCP-F^ z1=Q%wh(QqCawH?CavBQxY>h5PO*pC*%;t`w+X<=9pB?&9#uig0{TpZu8Rjr7rE8No z$V5Xrzz;}Ln-tEqy&Yq-iY^@kapG3+k1Km$6drx47Cf~i7Rq@A^Xh!arCO-qecOnW z&0jFQYzqWE$-G69g`~k`6AO~s>BBhfeVEOkpzJFO1_#W? zNAwqexeo_RPdJO)_iR}e)Qv=*sI96y(o;=~M_JpTCG`T;pL}m=;axFAxoucn&YVG$f93jh`+6TEsCY*#J?(4`A`*U>Vg;{!ef@Lav zi2zQN_cd#-D@em2F7!%9!`BF+9mOoE8|CG@@JFEb+X(8Pfs6Od`45racefp$o2wG3 zkY8hRHrR*^#s-+LSTB5V_A;tBCY43Xtcqpn^V}OPC!m+8y0QGqyuh2k+XbQaJd+}Q z>Nh(+9XJ1Zh5fg7LH}A|KObmDc4nW)$+A{1uH@=Qwr>C5N~C6I15}l5 z5mUpeBZ*I8FhK}W)2e#i)XRmpQ)~#=GrTnL!VtcJyi+@&(vcFLGO{{Y98Da(4*kXp zP_cb=oVijG?CZ-2M-X-@-lahcnv|SS#inD0|H(09zD%mRBAN(-C)s0N^$}kZ1a-otS1~Rzk7c2Rpmgt z$|kd<{mbqg?=_X>0?IDl9Lgc6U^(_YIL*&h_(i|634}jihw$89|l2) zM+T!}T`S=Wf|783vc=Gi36LEkgO?t>KAAgjZ#PfihA_8;u-NqZa3U0+J>$ZZu=W^> zb!E};&7gy;Se;0MfJ#QSR;Hw~S@dYIbkcMU(%5Am5SIAJH#XOGR|$vLYzH)+F#e}MCxvwE7g*0o@LPatc{vn?8} zmJ}s#vymw>pXv4WNV}ei$p>f=sU`W&PhT1XYYjnCg~&C_XUAt}!MCKxEn3_*BB2ME zEc{h$(knwr%X%eYcHq0yoMjc|I8DDEB$QsnR*UCRm`{+N^LB$c;uBNnjp)Z9B0#qzadRqcCbnI;* z@j~&rO7O6P!D-mU0g-_?vh~c4U#u8&;mN@0BtbtH4=89^P*?r9&j20$y#DiI@^2jK z|Nqf1vpBEfMbBhM3_s3nUbs^ zcnb;ww0rPWDN-`ceT&vM3RMf%Rn1LJ(~ssUaUo(Omn~bIw}*OL zuicm4mtz$YKe*uyD~A=8!ri`BE5?Vp$H66c5kkjfb9Ddb z^9do&BR32FnyIbD3BkBG5z^!BQTA8D?dKj>*BufJectgcLaCtwkLUwJ3xOQN)kIi# zn&m2Eq=)(!-|>bY257vlw~he<_(|93G6c$3Y~3FL=bwF&S6JWfDua&F-a3M?JpAIr zQ&sVM#@_BkaB51^CTt!}3ZgaC#(Tse1eC8$I*Pa5%wHmdIMF+3_84#klCN2D1h4`E z)Cpj5;!mmqE$1U(xu%drLG4&Yt~o$ndj)OQkw2T#&ZG$rt{()d1txgVFKa8KSu&wb z$0(Y#jxdWwr=gH|I-$g8M!)Y@z85~%N!G?Et!hUj1~v}NLEs`p%IHMyK4=3QA%!O>DnFCULD182pm+fvCVcpCE;>RryR6y*8wZ}L zwJL2}qEtVj*+UTeSs8)?Kf~mFJuqShQ(r8HcHe{nBHZWEL*fyZ-NZ-~w1e?RE;5wC zDv-59rJr7h3(m!^2EiQH`C{$=Qy(RmYu4Hh!XRi=b z;P$hP36u(`Flg>yYr1K>Y;o4Gxf=>LETeJc+RlfT67cd@QrGZ-2ZvTq?3)W$gw$9N zonj~^L>cUFVN&UQvk({%QYe8&G_KXViVxJC=&5mC!U)|1ueg5U2e^K*0+yP=O<&(j zcNCsnhz`sk`0|C!-vc%@1CgwPvnZo*--BY0Rga0F5M&%9!xoOGrw8loEULt|s+*1? zX0J4S==abN{QFAqv!=LYopAgua`~68kbL@$-h}&T8)sQmQe=L52b?Bd7lrxn8sNUi z)UdrleV74j*x!&O*zrXw#92^5$>e?n?0u?3AZyrbiH#OXP)N1GlD6GLMJQo%#Boo~6QBxndNIh5;Ab)Dq6 zLg?Yd(B$*#t6YQLMSZIFoYlEzF(d9r`)B^3lp?a@5Zvz8d5)F$UMs3JVqGFb8p`U_ zPGFmSn@&_v(z49J{&k&Xj1r^)-~Z|hUI~`lxpXb?HcvDpnwU)dGxfW;2`_4N)ycus zm4h6BABV%?#5p**c>UbB!3w{M%+wXRVT1PzcvNSZLaAR#zvOKhJ$Zs!K{OyB`eRl8|6u9wFdGmrXG59Q&zsHvYC4$Zl1Zh zqxhao!3cN4L6y873*=qdW24LJ9(s{fr<;xwBTxF*7t@4vrk-ZM(5K9&^NLEhc4f~a zO{2>6sZcM)AI?&RUDcVq(#(VGZ1_6|59T%Uvr^`@oEX`F#^0u1A2(}z4Jqq2QW5o? zbKM|gMrB`1!kVQBR`L-9Npvvn?RL!zU)VBJT~GIo7YFslcjw_1!N^;{^P9|pDk82* z0`T2Mr;l?r9L?A?(S8@@JM%SG#CR;q#mD(EF>W}UBEkMu9C zTw(TPJG)nGv!tw9784!GC=c{={}D?&+e}qPKva; zPV>gSIG>tXvOU>@=eZfw8%rjIxjII)u_k%18uyRvGLSzRM4 znPp%-B=UoM`^JyWAhZ?3aTtI~+c|+wDvvOn7&uU!+gmm0Hxo#B^J|&4KqROWwg}=yD^#z@LWw#sMUqv^yFVvg9R$6cagSr*jX48UKH;9VEh=$E7JnF!ghN()(23|wP@`@XH)EFL4cyu}LLH=njBc24L1x$NMJx&1X^E zQpB21VkIxRAd5gq5k1Zt`F)e!gKeaIW-648w`4SZ&j$}fF^7uJ3|rkjV(v&x`9mLe zS-?>Y2g?U6y*@vkNfpyVXg5Rbwc$dmnd7@f&_2(+OXhAbd`BIXpPU-kfALk1Rw!iN zdI|i#lOL8E+9$O`99bVZ;>}!-MiJVzYrp?W5$g(`qyNIIjLOyu3!wHCck8j@%VK6p zdIaGw#`Y2BIaD#-WsM#@!j5HvPG*X%$aar0bBAy1Lu`BLFC;!UO^uyhjYTn|$n(%$ zT&>Xx->zz5#%6Ft4h7wyUR}U~%bS+0@>O=HJ~7pj$YTI8@Yhcr!E5mt$TpQI`bL(X z&+cot;J#C^8%&K!JpPuDzMc?Sv9;rrHVnMslC>OqI+r3Kj8xWPlFbddSz~e&GD|^e zG~#`*k1nb@!wrZi6E!fOF2uTxMOm88kyO~saoe#^na@DNkoWnh7D0F*rms_wY3fEh%lyBbj= zmzPpPYuwvb8;yu2oK*4!%)Un~&JHacMovUvYFe=CGja#G6rR@t^u)Tr(vp6e3adQG z7-Q|J`YaEPHFLTad;+p!rwW}BBdX>%LsN`fd_gG=+9!$-TSTTdB4^n2oQQ5LY1hMS zGhmx{;4^Moi~;~@sHMwMKCy*IXzJdIC+@>GRD}NXtc%yI=T)w;{T&p5#kJ5ieIJjZ zIvyk=kIv&k^vSaPKf||N*vCSzEQ5Q?W`uI-u98oQfE=+*h+Si0Qy5hg!D7uQ`WeY# z?5jw#H1Z538f`^}6g1Q-^gqbWXrCq~psz6n333mBR9dLuw{`t5Ur7>~63<;H4QrqM zVQj*is5?+?ZL>)}>?SA`9+t+(Nd6d7_4$hZGurwCN2fSRS_x~(-17O0=B;dL*B7aL z^6ln^#)4rxiya)7$e!EA-Bi2eX5}Kd#3;#E*-1M-f1XL>NPGz}Kq;Zx5|ZKKq4JTJ zPKJa#-EWK?_sw?0PPzTs6oMh(6QYr5r$lobMyx2#OpJ?_r(T-24L4_ccEPFY#O4!4 zV#*X7L{Rt*|QnpXg-{WaA~nz*fxrU2a|4>LG0>GDa*sr>f-;oqoNLeN16zy7vB! z#?%WE@=FTxmL0RY;D=ev4yp^PpFGz^9$yRqP@$xRsO=t_`wyq}BfC9Si4w*mTQT*_o+*LP)G!J;_aE&Mj0g3LNS|f5G*nHp9?`ur@P|+|zdc zy!rWpwf^!8!}g5YK=%#3px}8R3w_$ZlPAH^fKxt}Tb^lTI8xn8Yr~)@8=+UP7ADD5 zv-=~df$#USq&r(>G4_7`Hqw!X55o=H_shV|YT4R7$67+)!2_zVr?IKoajNQvXCzb6 zAF*<{D3@NQkSHM#K+6Q*X;h|lBj+x5;Q`!E%jp{$W30_b>s%nc* z-ySzOFDFcA3E|_!Sq;=_4m^D zW{4JSSKGPiy;gTtc2?;vRXzW>-OL;(hkt*Ldb`LCyl-ixa{8jI$6O&&JNrh6EK(wYTDht0hrWkaWj+@r!)>DD7zIp>%RCvK7rEIEBr zAyAleY=RrS?#CtggIm2&y9uG6Rbm3x4fbZ~+5?_dVU!3*xyy}^si)X`dC!;@^!uqU zaK&;*q5>#HAmU@48CLSs5Hsv~W|9@9c(KP44`;PMb^_PlNPKGhgw^wqeo!DY{OD@W z;%#{}_Q&lW7PtMJ)6cMvqP;do%~9#-ZAyZvy@gv($3Qsw0XRKJT>bt&0DDJ2gj?mY zjAtlUcQh8$_Zr`(2F`gQi9^tH^X+*!X`6~^^j+_&RUwCXC zGY~@R8;pdP=4)p&PBmeiEH@KxtzvyT=|i6M8dOv3gC**>B4wJ2jp+jQU+` z5S%-HgqwY_VBCbRI}TU+2tQrV7VE+#9<4mO!#WvT(_joj+}^nQpTg6(MHpMb{44e@ z)3*EGJVb{i+B=>ar{&U{BiQ6K_IYn4M)&De@#cwy?BjB(7kZYL(si+?ZEw>ySL@`77qNFzc%20 z*BSaaUM_)~hBy^I7M=;64=slaXJpemZg)KGEdr41wYtSu0?_pePf6vlPTHAWSwyi! z+;(OLnDyY72B7s!k4aUqwAzOkMS+y!q|~=`bSSl;ByIHQwy{sa@ri#J2tbNr-$fib z!B0gH0?pzbU3^2XPLY+tgmP$+nnW$;a77pp4i0VmMiu`TXYUv!O04yJk8RuDgFUuw z+qP}nwr$(CZQHZQy!+s-ThFO`o)2$zS63(1l`oxSWhHC<{%!fV{HNu|{?knsOdwca zxHR#|pV(ibM4ddG!W+~{3-D!XLA!LdU+j%&ejB7S(u_?7EnS`-SM9gi4Rf@nUP;l@h8#WVvZDQ zU32*NbkNR0m%xnVBns-|^3T-I;Mf{K`$L&HDe{OXYMqgpg2Sl&Ein-KAfMHYv0IFU zgm?j!UXI>*(XynOoYbRyY3Rh7i-_zj9l!{PG8`sIKd=R~k^GZ1qo=ser+n7gaRB$d z{Udw^w31I~&@8+-41aY~LPwWKxkPOtk~de>;{EKl;}uaM>tcj7=jPYOY@8i>DbQZb zSMrE3V1lku@^W?%Bj(-~W5w%&6vSqTAVyC~^=Ru&T|ug8YEJY7^&F)SKljjfe5G*Y z;HEgqrl3TmHSlw16WHD!W4TaPp^=Tc^W7oaV+8Tz-nVE7eFc+ytE1<{@)`e7T?$qY zU*q;0%t)(X9c4KfUBOMnm9$^1f?lvr+1A?HlprIs^FkJ%RBQCzP7Q_U7sQ}H=~0}u zo{e=yKq?{OsO%Jhy#GK}m^Cb!F1M~xE*KZL3QuPtEFLUaA=)kuQM6)2^90QYmMMi2 zMGD~dhkU~X{bmSJz-5RRt3*>^!-47?#+Y&~RE#PH??4byFJDwLVVXx*M2!Loh(Ffc z0LoySp>Z&e#ULLch6#_4O&JQU8sj;s$_VzjnqToq+R!h+fq z!!O}yqVK2ani`1nVP1V)Tms2f>l;OjAYvsmgra0YtSq5Fbi{#Hy+T7CCTXQWOx(U> zechoc3FD%*7Hyjec$=K?Rz%D2$Bscvi}-yac7&V?$47$f;w1E^+tN|rDla22h)Jai zLujzRh5Za(F=*nvq`={zs0ym7^&@l4|G8;73i;==r2-238| z0msQt*qusD6td5Pd=S2$8_IqR0n1?Ypj{9)BYmV0&b1RMaoD=!b^!`Gkr)kG9wTu6{0h}bmYBaHZo8}a8<$@j0z?u+VeG;Q+@4(g_?mE8c{Rn8m z6b)L0!-)w<=cy2@2RqK%{BQVBMMqbnFB-nF==Y-tJx@_hO$w}!RCsCd+6cakgk zmPE{hB-x;_L#rwKNZ|u=n|h3KV)RI;RyKa>`s*oj>NOfwl#6u!h>W1qJ2!ej--sh%L6 z5wBW@!CiHx_$!A)Hk{emLqsx|5?y_?;TSRLL!g<6Yx|rB+t*mltO>jqMf(iwcQc3| zKVOB~NhCCT_g@vQP>EzJox@nqX;p2&Ku@^(6C3t$30q?9-4t`XyBsC5xg3U1Bs-jB z7vI3pQ{sTWz@dMNgnDpQu^h;cRa~2zhOUcl-or3k*Q3*%3Fc@FULBKHe8D!>#5;d!kC&ftV zoz-a&Rf7v$K1zyM-ZeKU*-b|3s=6>CnjeYB#o7!B;9i)}bOy;P+Zq0Dwomyuhy`ri zihx_pE2tXXL|8OY$Q0USO$fUf*(<+2yal5!M@F~@hTCXnKex0CH>&0S{(!X*+)@h@ zwyEb&Qgkj;Q&Ai%p({GNu(E+yw?PPW-+72maJx!iyJAZ_rMVivUrRi!JJic*tt%Ze zlnoz@`TNB{4puBTGaM(}i97TrdhB)NziZKAxoQ4Y>*>Mu{Fh?=&n7VM*BB4}(M0O? zW#;DFLPt$IeZzYY)PvS=miWOoDYB#ll&qSC^?v_5OV5t;Qf&-SFj*bp5|_908W_|d zi;VZ&NH|a>apqMzMV&`rwAL6OQno?%IA_)nApAtdp(+MlN5c_GL{W?waU_i@weAod z*1|96?p!tMhIW=@%UgZ(geql@m7^Xn;dIKj79;g_rCp&1f#j4|g6_iZxf{Fo)^mIk zD-3Wi%rMDwX3JG@wk$<(<{BqGLkg|y(^yp6i_dBia=WCGPb1DryyHp$0jT(}OZDn- zKzBR0o%xzui%MRF-Wv+?)nV7t`^TmC6a@16EBucKJ_RKFl%#R5-f%$UU9`Abjhu4qFVc#rGX%$OjlxGCXvaryh?n2WB6ta^ z&%|CF8bJLeV;$eI!r?c6M0c-?wsg&r_YT97kDR}ssTQinr8~>P@q{N!d_u@Hh-4YK$9mS0G!#gdcGv6q z$TVx7!+3Gbb=Rl3%DudV4G5=#<3&?={}3DaBH1mpoSN9ba^dyoUq^xhJ;%&@pVo98ZCp3|TYRbek@bO&gLXN>} z5H;egZtw1DrfC2j=|jIG1t1Xw^8(dXB>#r>MGLX*A7&*B(Drg<+2vik?cKD!2%moG zy<&ZuKIxqGip}fk$;DGx;YVauF{3^lp*q{j1}uR4+@;8HEQlNtXPO}7A_A{y#m0F_ z+ilo>bV^Ia?jOeovsz;12aMj)|89n<^yII6+7TVf$IeOyX-BBw;HOIt@$~J9-vXuN zQ77PXAUA73E?NLC=UFb?8JCJ;RR%nvOlRTR5UacaX^oeW4c)JyJp(F4UQ!U<_t9|W zLyHO`F$;i22qI+3CHLc>CtKg%05X6MuYo?5q1K+0*`=HGBh7 z-J!dMTUUlIvP31pYNX@|-ARzRo(f`AKX-UwG*h=PFM@SGWm>f8Sg>DGnkqg99Oq4f z*p8h=#$#Sup~stU2%+vsO=%1^<^RUS0p8Nz{xxCF6zd)h=aD`1mUPEc*i2_Oo7!~w zi(#NuP704T@Y5FVO$YOB8|$InJX6B}=ekT_kCC)Tk|M>mW4^ zjMEN+k`{JxymC$42H-k9@;cJ#$C z=+#^XQ)Q1>#oE6WuUbHIlrN`Kw|{p|q;zihq)H5zx(oytg|HWEgp@e-Z)xNbTR+lb z?AsTyyYh2%C%F1Y>eOt`%^r=_^q1M!>_>Ny|@sS2YpicqbnkImq_LwTk{C(e9ffgSK8@bu1Wx z=j*Q}#Ox(Z{Dft=2giu?4fXm2N7?VyL;40Uk#Adq1O&|IkF*;=i-*w^rm{jdx2yTR zXF!iqgMzn47&3@Q4`hRkX;+#TMAMKTYKDVW2zJK$hvK9P!w8MuaIQt@BuO+wu_|oy z^kBBEg+0^{PKyEF!*dTL_fgDTBT;~~89XJaf?H1fZ8v=vSh?7u|4`4Z$PnH5%z{yH zRS6Y?xnz>Fcy=B#7*wR0S;>v90X^kev_IS^AixYI%Zcp*Cu8++Ol}cP!H?Q9>>y_qsIijP=K&j40XPoU$w$VRU0j#; z!l$U79murT!5j+%6$>OBgx%;e)ze}ZA-O3XoP^crGKKM@^RShY+n6@bm&}++v!7bL ziHr#yde-I)qLR;mWxM?OMVPQx@7ZxedVNtq(T4?b2Smk*0TPp9&qY!_35V96P#y{l z3GmnFA5n4GnCEy418;WBTAXz|5te+&s{#paa9jrD=dWNCB}{cw!GuL5S(_9D5?vsQ9FgPl<xBfuFI53c;$p^peX>nmrj!+PG_JyC!Yi_b?-@wE zNKU(=vIF$04v=jk(iZn15B=Fgq2ud#WrRVb>o>b+0NwZ{N2CLu>jpeAlvyX#1v)vz zS*Oqi4ST>Xk$NjAL$FZbxrqNRt#%MXtR7l)Cl zhR0l~An~s#jOyQtdSuQy(1)4s#Q;GH5VXY*3CRW+`BFjj6C@b5Nqr#33{vtX15(4_ zf08iokc&~MAa7BO(XuM0LKc(Q=gOvnS&Vo5FfgMHuUfu|G76!hu^gE+(+gkEOdgt6 z1$|gjZ^_IJ+wUsOOC9!=s|P9__Pdjw60g-3VKvui7DgNt#_Z(26Iv=za!=xU9uBZ- zMNJ)!($LsTg=fs;9U0oKE|ah37ZO|>4HCmn%F(1A`B$+X zm_6cQ2-N0Y7mrK`R`4FG=1s6~l6sKrr^*>cvtp`9hm0$o_#k!6krgoz+Ez&g5oRj& z;wTlvF&U$le=FTl@CJ)dSfo`~`8y25lT%vi2P?={*!Y2w0%#_awJE8Ct5RI*hc*B{ zQ_$E!SML^s(c!6eX|J}xu)V)g~jdA_&3 zr$2ogfZ~COogw;%-NEa^1(q8Nd1vv3Kz@CC8w33;S;VuLp%M9HPHw-Zdc~qCs_`{@ zmhs3@>uHUM$s~tWWg`7c>xFqOi4A^a`7zteTZI-h)B*EsVp)%3RW9ojiHvG>zz8dq zic>GY0l6Xxn}WqAh{G73>6d4|a66>H#5976jsNsSwOx)tb*Te3=ABC$e>?Dv(oIlj zvbUYz3OuE2KkS2d2GX>y>^l;^(n1u|~|^iAp##!uc>XxUb5gadL31$>^U zdz`I$k`8qtkHlA9;Eo}6p~nmHljP4-&S3v(;wGp9!#ec(j+J<@8?C57Mr!nQ{(hdZ z!=aLGOtToFQ*!u@Rl(A`l%kzeg1!oZLuvc45GG#e!i(ynhBv<5<_K+HXdUjNiLM}_jbRQ=x?RgMt;5=kAFXaYXBGO*kmIg>SJ20zTbfd?fl}u#Z4@S|Er*sv+ zy&LIKf_W~%B9C~9cf`WpB1+^eU&RCU@S&s8$tfjh55Qs)I^|b4jL$J@#IS0Vyazz1U-$!q6QV{7vHPUQwRag0>|SMF zfV)(>3R*tG_HRrjl)DFV$DC72J)`my@JjR}^U0VWns)jvdv8Yor&ri(5|a8v__o9! zkmBM?8$C$5-bcLRXb&A5+ghTwfpQ(k>*cwc}fersh@kpaOpH=O5{h1F7vO+uzf`TiH7#r6TosFXq(V!3&SdoEH}_yfK64A zU-V87eqn1CKwr}gv&K~*z?})?qVO+&Y)Q);?C#J4folhGQU|4Mz=BZ+W_O^Zd=?r@ z{FNtE6I9-S=Jmitk!qQzpa2+Wsb6dblKtZfrx~a5@v+|qY{woPNIAmamIb12Fw=Hk zu>`C-hXUJv#A%g6t-`?0Kc-?pDrD7!h^^mX&lweu=uj*`-4N>@^C+A)w*d)7c{)M$ zeYXN>dA1?k-qF(67NMadflg-k1ec>FrqLeq*j9Mk4s@7$(oooVE8i1^jUw*U7VkNKV8SZZz`&Ku=as&3qK57D(ZZ0VS79={JX&4cHH0liGq@TLU0 zebJPH31#E789iqr^)EG#Jyj>`CPy3tCZnC%k|L@XW8+jSJt(o3;89O)?O5$xlv)uB?oE*y z%#KHKOY6mI-C6AWOxR&gjj&>>JZ*m&nvZsPvGSDlobq>cpII&R`n3U|@P_~b|yzqR0 z<(&yCmHovld<`8aA!XzV)3O1F%f@lFw4v=6P-;~x1C$oHRSK&8<`?C2dGCZpHNlh1 z09wT?19;7l9Lpwcg4*!lOR#pe8&L2S{IAtm0inx_`;g7JISRyg)Ysn1+Yq*8nR~d- z&|YOZfVt(r_9dUJUir7-e&l9@d7g-pE{4zK=!Qw27^GBc`;?xj9?Mh@?ULWozVS7! zdNYN6M%zhP6FE1lrkdtG35gSxxk(Z;yN{$AZyBt4${xx%$J|Q_W_#9>){H0eU?M&! zwW+q=$8F@`HG5s=c)CGd*CUI~mAb-DXZu~_XIN`$VT zu~;*9S!qfjrq_(=iru5PPjFc~lB}=THx#<-U(7&ekEAxBS(i(Wod>7E^)n$mrQ9w7 z+kzc$s=4RXJrQgO@e45zTWH&|&807cIbSocvn9LW`*D>TJoIuwtx3;V2v)H*+_9TS zLf_Eg0^urpwAI2rHPJskz!gx}O|o~!l zhx$IEJ__}0VY~>yc+7Aj0zwV<1nKWuM{W!D2I=qOF<#5=)lj^+z`l9Fc=Wk2L4Oc{ zb0hqHnQ~$RW{3Jr4fh;J{>a~f9u8BymSVh`9u`x)Hrz{~crClpK=s&kA%gBQ?KJdN zTS2mA0~}f((miM0$K2bXc+I-;Lir#7^D^;71mI)m3iY=}$rkRJ(%;p}YuYgLwDx&Y za4qanUkuCy+PH-$z|8Gto_x^V@puWje{sB`@RYV<3Y`^Ca`s`O(3&drb45bUtqbj+ z{)TDc|I7Cix1*&dvPiZAYz{_OpzKboqxG+TuxeAw0bU)qwv$^he*kh5(}9tlnA{U~ zXYZn__3It`weRhY>P21aFMI5K7u*Ht6USOW+PJ~~ACU@uSSOBe6}Sugy}|0%#jN*nKs zvN~QmEd79KpX#NuMV^ZsJ9awE_yBre;U(Wi_e0V{f(w~7)BC*-&jJE96SJk6}JEF5dXiS0Qnsa&CO+^whi(-u8V`4fpbK|t`Gr!={ zvVx|$vA%H)jxwxal}{pF=jo48PT$a(y*K94vOXj5Gyr|SfZeTW6C_6yWTBu~764c% z0_#IEhPqQW&oofX3&3W|F}L9MhwIjT#`EvxJ{#?+S_61CT;^}#Bq|?V3hDu(0MrfS z4fF*B48#fQf(a7{)CtQKXzF}Lk09C_bLs>`SvG}sJ$2v2DQ_og;uurNm#)N@zQ1!^7QeAO53sp0a*_oORbn{HyDz>;nT})eS$}q%b4Qcg)+vvS?%h98b9-Py48S$!TP~ z6lb+DvgW$@^I(D0w&V!+!R=%bdjLPx5`W_G99F#jmrd*OkAkgP40!)8>Sqd!J(BFh zuIis>A;bipSCoVv?;3bF%|2NFUi!Tfzv;f*J9e1h(H9UyXw6bJ)$|wjUvkt>NCH3= zeq?+=`heO5L)Nk|gB<7}?4sQFIBTEP=-swa+> zB`YPa(h|3@r%jelW(IHu?0s>88ptq_$H0+;wU@RfS1p3Ig}g8o%UJSw{`5Y1JvpTI z9D&vLRgHYPhEy4!89V(Ju4u{PU#eo5$upV$gs|U@ zQp1YfM$wscZNvSn|@iuH8ze~xtAm&>j;Csa79sIg!BJzpu{T$9^K|7}5vs#wtp97mL*gDGZ zucm_E{|cC=`!CTs|5BV*vb8j}G50WbAo=Ipzw-*@xBq68V{k88cQ(2v|PhPoM`)F=sKGikRT>Msnn32b+JRDcSI<=7I&liZyxb@9f3$D5!$TUSh<(O>2a z%d6`3FtZ^4ipFizxFzTH*YhNg*qr^iuavnBUX%g(R9U)i@vJZ81?h5WI$yX28YbT` z`%v1G=>BtCGUC^%amf8%W@TRJu{fA7VaP63_DXDgI901^J9m%sw%2;D(QTh|?cmEL z?Ydmza^0LNabv&s%7^(SQw*;q=qJ1dD;I>X2SMZ3GPZnkN!kB}}J=jW^afSQV2yT+kKLz8^ z0@7j|{)Q9{{{PCN`H$}Kua1zcaw)5MiuuF+Tt8dSP8QRzWspF|7ieumqn#b3DX3*; z1`#($0-V4M{s92@Oi%A3(kOi$YKC9(1uWijAXTxY@)g$tSW>*vWLbPYxwPFQv)O91 zK_;E4L<#G;Ggxljx5z-qd;7tYy6gB4NvO|#JLW~p532}|vl3FbA zj0APJO(rKhdW>$ePDKkwJv|_D%r?}?Vo#WsrAne z+m~<-EgZ#9nz#`|{O(lenDT|+gJ$&3ekKOEyRa5h8zE`o4Z{ZRajDPN|8Q(#TM3jk z6S!_CO=%pK%v#u+rlP%tl%zCcm>R-|yqZ*;AdgoaH##JXi2fq_^;KV_tSNG^wWWBj zMOG3^B2;eSTD(Atpd@6M0e~txUqTcX7g4w7Tqr1{H@Sb#n$R@SaJWu7H36^kFE zo=xrdp#)X|TSpXK<5&cbN8^nrizj@d6F}NuAJ9AE!;yrsCkJ%jN7__aMz_7^z_r z7EhuQ=1|xFvw%chw)Na#wy+%jW({$}A!^4$1tMeZuFiT8#P_=c-JuhrV71}g8ZPFp z%yPf}B1D=A@z$y!c8b|5yFGNOc~PUYs(Dij+nuD<|E_9W@oh`d#Rm>th%+5etO;4a-V=-qKPFFO?ev`PF#Qkky&8j?~G^Qo+Q+G_L zS=zJD&e@vK;Y^kb7>?HF1(aLnpRv?ZmA=&)lMLJ3d7q$vb^Rtb|Z z;X?&L9acwP0ta|E_+3HkzK{2pDJXUzY=|x4GU}pOoNk3eBX})@GXGGs475IQ=__y( zi9t?9gFb%byS6eQkF>@RI2mJDQAye?FY9E3O#~aO;V3rz{qi;Y+y_C_CMe&2p3mr? z+jmahW8VklAN1LRS+{Sl1MvD_#;vr|u-}p_TBMvO;sZ$RcG+26AI4sRC|&-euV_4@ zxDJNV6?bs%cDc`ofNyv7%LnjEp}dQLpUFV4;LP+7rbdOtMRJVGiqJpJ3Sl`Vr)Lzn zr7T!Q1j6Zz68aehG95zNPSH8}nM;DZMwy+DT;0OtXT%r9x^nnm5%1@#Onkltgzrf* z^S$P4&nVqSmL-In^jI{W@htbn%{oR4Sgdqt2$a7*oq8$$`1`Fklie&fhFtiqcDHD6 zyih5>pYDj>qF!o@Hli^Ba!MCO&lCo}2r>;5NA*snoXW1%4p^QL!b#g6l-qj_>Bq7G zBewfR>hs2e=?Xna>bT-9`WK7Nh8p0Vg&^VNUQDVuv+qN9Y`S=?s|v>McA`0;!mO`4iT5&lB|WrM-BwsTC~$ zr}K#+r=>?7_A}Tj_>%V@5xJ;NPOe8_006#!W1atRob!M3)v5o>O6uPr4Iy(!J6lI{ zCv#hye=nnyG;NVZQNCGvs=C#24$0=4_z3eyRHY0x2wcSkAkz@UAk>j*(@h7 zmCSd~JS(5;z0VaZRlFgQ))a`FZG|slE8eHqA_A`|<|RyLve+GIci&8YzHVoG0ki~m z`Uo2MyCNqQys8cp0ctSr4k}PqVWJGAM%(-e8XOo2rxQ6!U~mSTP*#h_BOo?@=BM4$M10W4m%enYY@rLjhh^AV%`nq_S3C8Isn7J2{dHPtE#5 z)k#8>&gusz+Zp^Ili6o_o1>Yf(MM%FTyWf9)15Sl89g{mTr97jpA88x&GpJj&xrG1 zAhS8Fi2+4^sVmbz^UKh#XH`UgL1exMkcT~mvz8~rWT_8I3pXxe&N2hP8(C>IEigDB zM3e66LPd_fQ?rP|zeejtMu*EoecHJQQ9A_aidj23P{gon`4dA-#V9=K3~HXv<40`W zmaU4_j>Oy02$r3s^<6=|w0XD)XV+_h+A0)y3=dMs2Fi{C-bQ zMYWn=Vwpn7rS(x{N%V%r9lm7grjbhYi3xO=g#5`bLli`bs+Wdt?1#>EZ=anA=(0ae zPTa%s>8i+l27QhN#LZjiir(*qJF*Lj<&hp3dQ#>(_W?f;u8lJZ?{Nvyoy^jo!YANq z5AIFk#EZ6m;hjaUsYtR0p<);Om@#a)!N(hYd>`s>1`bg>*SH8apf~{?#;h%hQgD@A zlf!yv&Z!{2GPl}+uJGHMZ`6@&qlkHih*QyhL(y813{rK_xh#F6w$A3slHw9t;0>0B zvMBR=QR)|Ru0;}>g55GAnOcPik$ac7+HS+xZJDoZ#Ajb(_#_yb}bxBd04#{Y*>;(yKve|J>=pNb3O|JD%r z*P_~y$&aLXb-dgWs+frCyYD7_D5?FU+&TDDzSy z4(2jQ3#Ut70&^|r$nYc~N*1oQf>b3?T?2QUg%8YD?%OWyZt+?jwrFCZfq+pS_4x*jK~?RP`D76=bz>ljS^Z^%7Tr%IC!1*lPPm0OPiYK1rou=C>Iq3 zO(Z`#Ffye~m~5uZ=OP`$X>4w8jnf-#aG#e~7a}2QK1+<61Ym2XbnfB0=MR8DZ;g9u z!Uk8JB|pCp{>bx6DSTKgT|5>X%tL%J-3mtC!BkU&n1QD)F_+W}zQQ|dZOFR8A?+)UsR^=@UJZj?+hdF^qPHx^VVg~GlhG5J zUWf?N{J|A`R}IR+A(FDl&Jc*p*TvN)Q3$MRL^hyzLf{}#7a(tm4~eu-I)9`-kdBAH zo3Hj0eK#G8zML9)p+K&FKJ;&H$8w@Cg%&VpotM?&l>@Vre3U&R=~w)k#cy6;pQ;bch6W5Z8)#K<$V zP-x)tAHx5KVH{p~Yt8@bPlo&tpx1v6gMX-y{J(@p{%5y$B(c_aGBo?Y+>K;qO+`&* zly4W>EG;B7#=55il#`Fs$rqsZJO|>fO60><(x`;(z9PDQG3dB z)1=ARgafGi?}e6JPo2_a>gj9Ja{iHA=%SDWicgZ})8sJS_RDFoR>zvmJZ>1^(GJy- zL6cf(+1fhVNuBuee4*Z9Fj!Avq(X?iKFDdAn6X1{Shw<0>0?#t67#V(Uzk#Yf^J|k zq&-qL8mE>;m2}{ugI;hMo4}4V-Im!R2t|p!72s*L6FebXVR`p za&Q<>aN>9=hNlq2{SvcGTZr#x$Bo^~ixHhKJVb!IJX0=#7j?!Nh4k;qjyH-}Ox{Y^ z9C~$-={Z#s&g3?Y@CJR}T4gJ181R)Iy>t`Y>#M=T!f}!^6dBE&cr;WQ)Z~~U&exaG zyX)s%iCeY@w7ql#xA#YW36xXaY}2N+JL+7y{)iRIvn=&YEq`wUs=}gdPuBgt`rSuQo4;4L+&!vq`Fxpm3 zcHX`8ut?k))#b%I)f{ch(BG;h8sP|vU-J{q1FN;~0?V~81M8hXuFM}sU^d%jh&3$W zhKYVgHt>#s;1LApArGa)=pDdPO-B{ns{TCy70@%<24)SdAD9dzq`0X$=T&*<-n%Xm z({(1af)Oa zcDLFR^L*hlZTRT|yjy?rQl)+{<}q7UpvrxQNfI5y>{P>NYlI`E#QO}vOu8Fg z>3UnXXZ(u14CayAcij2QAoP)<9H><+fY~mS;Wd5q2Rdd?6=sh$Yv2}R5I=1wSIp5D z&-Hg~uiis8&^Otae+NZ^TNKZPa?+b9MYhd53ee9#89jgV$EK$L8cnGG)oA`Vj>~_{ z7XP-As-8~&K%8uEuWzqU1B?#(s95|BtsQ74Eqh@-JI>bs)( z_iPgA^^007^9coItP~_bWfGxQTj$Ra@kCT>Tq765|6HH5TT9=vcCK@!Ik1tx;k|Ue z_`H1I9AL%VhWA4VylNy#r{Y4`s)N79Xg_umfmPBOM(d z`=%Il-q32lO8`e@Bc|X*OTt6faoMkm^B4|R)qaKS-_FOHzCQLS2+Rv|(vD0PUUJil zL>38g5{x|0sMk=`Y{KYYwxNBc=rl;|P^OW=*cY=GX0xFtV@nNss*{(fJ4IhYDrzu` z6v0qNTxqTl5=}&_l+PrR!pzN0fEA4t^e`PLV=>6ss8<_vn`mXW%obs*_=BoIQqfZ9 zZ4LY~D-kK8)Lor+Jm9f;5YSm$iioCRr!l4x-f_sd84AK@m`#iwt~1_@nq|* zqS819@oc3|($Img=8Rlt$I3SJ*YBNeMJOfazc01-<*z3x|JM7ICp!ju}s{ zJrohgxJJuwkW;_9oy&8lNhzJ{UQrmX*4V;8J-}mP#xQIO&4|jhXESgHn3y_jaN!a! ze{jYO>YAVPTQ$q}*Nt2{VU~&_m(=d#{&+_7U*%4EZnsj4CTQafXkO(z#?LH*+SQEa zJC*3gNyYNvLyJr_nC3Jhdui5yUrK>ADGG|b_Quo`q(sGJD|49ZcvayJJF1o)?)lPJ zTFc=j(i)BZn++ytaOeGiD_Kny{jMF8hV^FDHaWkN^CuqkXgmiI53SXcybZoHuCuMe zcpIb3J-U=5K_{P1%%BTrULJFmYtlsXkZ5;&B!Wv?F|P+?1euZSL8IG3e>byl$m7VK zQOYekS6K#9Dd>$v8HSp!JqZ2Ut=_|#`6KNP<>L?CW%sKsOt)c^m{sCLvOU??#(>^EDo@n` zIA0R8>Nz16@2b5FvGTp?BD0cZsAFH{JJ!!^x!<4P2&IcH&5(xHmk(wFw&Cys#I|{I z6$Q(XDroZ@Y-5;cpqdDTQk{^NA$kog*-Z*QVofFSf}NZ%PB(~y9O@EA_WZ!Az@tT^ z%UmNznk>q)TXKdXU9{8;^9_UzSfv~5o{cyxLWfZf>an;BDT3x5XXC4in0(rsCNQCdu&A!!^EAtFBb1t(339~u za+!G1=EfFUkC|cNd8<&o>7bU&Vgksqby&3wbo#EC%#?ULgkvI0SJ^?IgtG#^Y1C#_ z{>u?=K~>eTndxg85|MF!jPoe6f}AY8C=D>pj8E_BIA|`v+h&q(2Nw2o5z&^{=JY0* zS}W^~&tYf|ZwoBGu|VADav*e~514t$xP0*HXijT!4-O-PyYmJZ>y}MVUj}@j6!yi% zO!vxOILgs$7UQhTCg--$m|{U`CId>;=0yJ98gnA*a}6|R>}X82pw>;G)={9-ru^8J z{Mdh=w)}rI=g8FN$Ta30Xv`A9%(zXOSnt-Lcw>J~#(u!rU+GNt6sZO9so3|Z5Rr@q z@fr>h#Lo!9T}{b%NYQx+)5Eroh~ZJ?&}c}5SLPuW%t)+D<(py~&LNKHC?6I;v8+!P zxj&C*-iGk!kZS$xS5FlQ!pDI}+|v=6V3DLn;imi4GQy*!QeV5$ey~538~l;9ydKst zrOM$SiE1Mx)-KDRx?iQjiPMIfCJG$Y+u;s7ucg7IX@MU8ZXpF zZtqSai+ANoN^C$tLKP@5pgQRLZ^a7k#ND8W1FC86IIqM}P?N=~b_W^y1-)aPh)aju z!G@o9*nLdtY}|`Oqo4H2T?}0|nx8NRP3QtLCGzHwUd=Gc<{YN-9i|GC)g&tIID_jl zR`j@)3t}qf#4P7!F6)9<4s|N};VOn@Dh6#jpkoyV5zJoarIqP)jKXlZM1_g6MzjQq z{kqUwRh$i7=FPW6+)!hXC<(l>QindjFiult4EoulprAGeloozp5)JtGO!hDC*%koX z&4n*L7*o^6r#&&Htf{RkgvfKmhaYHBbS>@Wv$#=C)z}E&S)X_kUm0K!Ml?ibm*r!y zC}ibo4LaqqU-$92OpH4gkHsuh?79CrXk5^5iIxu?~)l_PE4?1lpcN_BMv@y;+oc$lHuqg zjx>3B$_a1KvKud>@~7{{Q6gGAseYSC-xN}H?L<*+E}9Z^#g9#g{z#4L`eaFJQ*MU- zGU2_0gI&(Nc-A4`)(K1M98>6S$_+Z`C|t-=K~pWQzPc zbWkT_KS@LA(LxFx2NNS3kTeA+h~Oh&%tB~YIqbDL3Re47o98~u$AXO%y6Wlkha&1;h*Ri!G>#Df zy3;y^t6WeGj2bh)5s&t9)DJ}AxuH~vrPa2w%$RH%ag_A=rU^ZMc<2WV)kQE>!=|S^ zd))B}{a51XbQla$11uVpn2LZmm&+F4*acbURACO_A)6p!pBbcGW0gimX0|KF&6d@R zq8gDB43sZep;H1lb{n2hL1YaMh7x$sw`+9g*M?HyMMz^qX~ig$Eim|=jHAs!N0Tw* zzRBcBzd1I1?R2cbrqGstW)N)4xLMP2{x}Qjbj$e^?lb^rdNZV6c5u?r`@Rm^!q|hZs62*H8t6`hc~Y){v@@m-4{sowLjvEZ}ZZ9riBLU67w6%uP|o z9E!J`G)Z$B{akyl|Ms99QUs>BBK;JXbA&sSrfpoV>4ya+XqiZTbR#9>#pkdGAC+Lkl8Dn+ipfJZ;4% zF@$KzzRHnBF5B6mTclJmOtrVP?-&c3BK`O_%w0&1m(qv%o zf-uS7Gmo_h%JvG(js8Yzw{$4Fcni!zsc^=gWI@=U?k7jO>W>DJYO_Z|7sQeS7M&xE zbv2svPBom;oq>^hZOzry)${20&aSQ>G7Gb-^Ycvf^GQ4`XF^rl=ip;{*30(E8g&JwVopG#!>KOu!!9BJNmqI)ExUPn&G2ew@QKK^zk_my z)aMkVOm&kUskM{ut2OS5*&S;`52YAjKaT{H%Xy(h)D6mN0QpYQ+zoNT>>a!{ z{sgogdnNuBYECfZVKTR4d@y?LRCeS-yFX5j>YYi&iIu)UEL?evuHdmy(2ll~)iE@i znm=6?)yKQo2HySx`lddlb5j(7U}9%Es<`J9h#oO(z))Y-8rS`i1#4{9NS~C-WkFnB z{*-i;5m$|h%BP~iIy1a;qUp`^Dc5c;{&VgI&Ne<(#%?oRBqK0*C}BWX-uS_JS@vuA z&S2GDuCC@mIq&SAUMyUjzOfBUQ)wE4l$16nBML9HmvIR4;lf{+Qa=K*yi~kR zH`2mfV3O#?VYJL*D(!Eeot%sVsWY+A=|X~bMSgjR`5Vg=X;jdH;6WQ2eqO`;;u{&@ z3dp1ZQtvI!AyIo1!YR$MY3L}k;&tRNeFwz`wGKnD*z7S|$H$_=p^h0I7|Cj$bf)FM z|B*$!#C>so!N6a~VT2@A$v9wEm=v!RL(v^g>=^w25cZB;nnl~PZdKa0ZR<_jwr$(C zZQHi(th8;LmBy)c&T8#`+WY>7+26juRWB z)OC^f7)Pm6mk0Fvm>9K5_hNXt5=)($2ZH+^T7rOtpg1wz{Szd`?0pHN@8zKG&k((bSDM^aSVL$ZGnU1$RNNHvfo*+r z(rO4Vf`P4#wfr~yz=P!0EyZ-Tk z;!#zEBAvGRYdvJ38EmAs0Gn8_9NkmUWMp`U&bBi73ztlRQ25;T9z0!XQ@uDOz;T0Y21-C+zwU6j)#g;bl^E5{J?%>`vV+F2Ry5Lk_-EY zUQ7B#vu)Aih>u-LH>R3pks1*JFNHY+Xigh}0W=gFfmNUt z*yY)RYKh8t#XCp&9ZkY}`C2~sgu^y_dBkRPcG|Knj;%JmQVgyYC_8nIr#XourpUJl zS#pnIS)}=7K@%+Gg|&C5_yur|4(!0%s&Xr;T!Cc{>x_X?P;0!*pxGwUkeZ_>w%M9y zi2}}$Ot2aGtiW9<7v*CYPtdwE7n|(UPt=h`p48|IZcJEelX$%tSl7gX(h7Ha1-jCP z1R#&3@4p#yydj!_KLsCc`~6%fOKu9$KZ>EdMKFDFOsc^$Qvo(p5u9WPa3_Pds)0P! zC^^=!o@<;i^-No1-QkUn7}h+p^;FrWS@xke0~)QUaZQ%lW~}YQSPmgJW2~*fi!}Zo ztx0$%T=xK1^lzCM=cMa_uB)Ny#A}l*^>7=bj|tg#)d}T^q9seBnr&u+RpCHg%VON- z4QeHbxr?=U-I18{WgYF5^>N*}qgXSA>#k^y4dC$1em+ zb$p;|d|K;Y*H;V*F9m!?3#wFFyy(TCTWm)iK5%Z`-OZNkz#!lZ>ha$*Ku?H{_jd=v zmMt4V<;~NDf1Fmi1Dn=b{I`Xe*I2{grwzSq1wAOZ`}_3GaN{+|smy2Xhco?!{)@dj ziWCBY`1LCY?tim`|NoT5|E;rd{C~=#M$OAUc^UO5#|e-%-AI@fY=+k^=pP?Ub1SAU z|4aLJl2>mR6h+L{f*#>^62%(+yhei@T8`LBW!;UeN>k)c9G+#jRI$_>1PM0NMfZeEL$d zaz$MIy3Omyf2iDoJpzMnSIbLS;ZIs%-8|uSu+Q%t)}Ed8E|NBjxb#6qOQwyM(gLmu zEAnXUyHN12qKGTgB@`%8PsnxCdXBkUJ9tpipO+UO zVBj+9b!f1(hZYCw8AC-S>(jF5hq>3utw8K0yRB;Z;Ce9NS%@efo zyhe1HT7ul^ux2<>#40lnSX9OY7tKC-^j%>Q8DnZz8^yEsv&xbCx+-LwGeqwGB{`O! z;OGi>Rqj0tlU_n|KiON`@IGok)!j~Lp_{x^p9roFKXXr<%o90El+K4qxHNKoL*t78 zW<4#|`DCua5*Y#hqJLT@1%Xtt^e~>E=~y1!7fujj>LF+Q-NdC?Vzo?|OlMxdq#yDM zZ%7zjK`vcUK&^hw8QVPH$Rk?@&8U9OZ>Z$63Yhw`_?&)LL-Bf2ag1puUCG}%AwjhU ziAyZ4dz+v_);IFrE|#NHI=Sgx3{aGV%h^P6P zPD=Vy{1P~!063$242;Fm!EuSf`snhkWgIDP5hS^kVbJt}ko1X>^y%8(8lrPJ9 zXvuKecFhV^*h9e!ULW5nIvpa%GV!8u9U>hfV4__l5Ah?1gtDld=N*;Ql%cgUuT;3j zpVAw%;djFAw$XRq?b+zRo6fsvmvxIiW?L31n8Q6MSpr)%!!V78K@%c!1V!wlu|CN; zBu@7=>WMSd1N(9cbU3L)e^Bf1wb#~TtaHOeb^T+y5oo(1YPwN2Juq+fkI#(Zfx3~n zJWvC>v4pf^ygI;k_dLDBR`u!qVBzmLz2mU&AprXdJN`l4h+*!?v3F=NPSm-FY|-{y zvUhCR2VM6>yFpG{0jq0KfDUN82K-xlc)B|{ZxVMpM}#~F2sQTX#@Z&))#U|3qxGN4 zS(*~l{B3yzK940$3)LtX$@MftBjWW2^1re37Q66?KAxhl9%@G)6}*aKe_pHp{Lufz zwBSYMG?Zlw1pyxU?Ok{Q83C&CCcE=NBLPh@4-mcov5 zBaA$0O$jsCFfF1nV?{0;vD8{cH;_mEurHoq*0A|zZh;JIl+o(g$25EtvS*LBuVWA^ zY@JR?qHkGW6;N<4U}(iSsG+dRe$X1swxiNiIc_jRIe?)4uE>|XQjSd zyX(9vlJWD8yW=ii1vH1?7j-@%T<(1@PJmHP#4N(`%eKAa@ec48jJ(5hkB6Rse!^w% z;?7}xQ+Eyx-kE=b>F%ALF!4+1UomtJ(b>cNMnk*_)a~26Eo>4e51d#`H4AyYxnHL_=W59S(n0(KseaV@8VX zAWyf59h47|%Vi10Y%^+k%gWU7fN`a0LgWaX3Q3um<`ajNBODq>IrNW(d;g3mr-WHh z;gebdp_NalSC;0>%7_F}@h4G94se*EkmHB%7e7kcZatNunPk~1zA+(o5Gj&BRE%RK z2ocE;Bj%zu<>|Tq@m4wFNQc@75ZAxvnSMx9rv*No#Z| z|BxN-;*U)IaA?R}7HIu#~pZI>WIu~A*-g26amnSZhV~or8l6)Ng!>F&q5>7{V96SQlCzoX2M2O z`By4W3P%BetMXtkJUOInL71&7VJ}PF@79dvtEBqWsp%Iv9x!nMudT!)QjwBePEcWu z*Qp^5(-h;V%y?J^%PePGKxqkyRHl|uvT^RRBya1?LMy*kuHh`#^{9|>NtAn|DC|7r zJuVAVfyY(uah3)>Yu=DBQ{n5W8TA!CqxVqzeBp24{#)i2TFdl?rampvCZ+kNn#iMb zulFA#KA*%up68z=K|=W7BnjF7V8s8287XLI?D0>M{P(G&hT~s#!1CKa%D<~yqcj{F zh&qq~BuVggFhBcJz5oG1fHi+d^j-srl)8lL;Z3MejaZMCRZC0jT&1#25ULhGWCWss z&A`S=mG0l_nwr0=%{8hCzPnRbS2Ohj-(O!7cDr7WJ0CZPJ-7F-YVh13zmkfn0NhbZ zI_%T1NV3xbdESWu5k^&}P)^ zW3YJDZim|0WqTI3nwfR_z%S748sjp=00Gb}6z$=mk*)07J`p$SmU@ zf=Be>D4kbWqZ7~W;h3}olP&GqJ%EmT2)62;GHBh=Hx+1|>K&GDPikMCQN11ItIf@6 z*PSPz+BCcBo{PIFT?}AfWJ4n3ntp+s;6~++5cI{OEB)=uIyfxjPz=Rec|h;+j~$FBI7^Co3^aVF0XXj{ zeiqoi-Mz#2CvKeYY!M$rBe^tNuJfVNYcq77gAm_$LROFTnFc!VX{b*pG4Jgly7p@! zHs0~S#RDVmj>O+T!vXh50Q$$%$?m(zz`D+RR&SjFKI+%dKtF}MIy&#g5I?8=U7c4n zK?S1hYWO-xmlpE0PypF!HSCB5*zZ|E49Oyn26HAH8M^Hy%v^K}ct8l}AcV)hxl}c) zQ{lhm?Rd>qqGXm_d`~+~F)RJ=_QtfG}5Av;~+JHe5^SA!IO9kf0dFf-WxMo;yo+@%FoZZ*L4iHn~_~ zf-!EOHlqPYV7ky0(GfuOA6%$5c6tAGVeY~;6H_-Kg=DDx)Ycl(tr0EpY%>0)!aXz(-DD zWL}FbyM(wZj)c=F0-{M08FEutRs6saL14zDX(4!~Xh2zr$A^q2uj71K|BK~aR=tns z{I4j{BC6%0dTu>amUgai>a-Ab+hk6RQF`3||Rejs@P_ZYtqWQ$rqMhcft!?Y5aVL*)!aFraa zn==9AObA*mrhC)1jOYOlnf&bM?akS^QL9Ki0+KulGxFRON^1ylBtue0Cv+<>g|)@3 z7)~3C0;$_O>pa)PhmXGX+e~1dw1zwN{Wok@K0VcHzT|!tGf`3dIU0ST&A>i$01b(Bz{CRxA_oi?q$%JUFIDnJ-N{#Z! zn_(r1nt7|~sma@#vB5jNB&w-*45#2t7n+P}veG|=NAm~u_GN+_#vC-O?!Z1l4U8l2 zu4E?es@=JpClW`ZrjKh`tp@Myt4vyGuyaVA%NnnYN_Q0R@n2gbZ}+;Wy5am>_r0ik z4yCGi=g2o8M2V+J{JC1rxh@b_4uN;5hQc?>fC{VE4v}k!W-Io`(q!hlP{D!A zD`!WEjSng*JtxW^JXJ3kL}wQW8H&E3W*3BwRXg|9C?!HNbuN?=fiy9_LnyF`e2cas zsEU|_()GgBWt3)~YY3J1r7=6o>8xTX_yq{o8o)uNX5Y#5CrmcoY)z-XEd5gX1b80}&MJT6{1hFa-~ASmR4b%PHjfad*xekGebG-8 zYwC*BJ1|)IfzgZ71E~ui@_UJfWoW4H2QjGpJCRA{CQa-*lXq zvV<}+8x?(E5CjR^OOh5opUkFGn5dFW42C#VL~NkRJiEAx9!c6?Q6`hB;!h+kkc69% zcqv?}q@Pj{=u{VyAd+n3QgLJyEr{7Cbq|1B;3znIEtaD<@;(uLMegorpWiA_<2`|6 zwsWZ;l7!-Vjf$=(AeDWW&0>W-pD?qq)?t?<70mX@)vhM+*`qJpRHvzxP>h3U{TXqU{JxL^Uzs>( z)W+3YbTpKKHKC0toSJ>R^k|Jxa&qQd&FPFb*F6OSiK%qia5KR4YLu z{HR}^Sxyj@+|cEO&?H+hV`?rV2hwm~i7IWhN-=~*AmwuyOV-f3NTWUiw|FX|I9c_J z)!)UWe1a5Ixgs&BzkzHimmuy=gCN>_8ck|!MW@(I*=GATG} zh4_-}3c;~Uij-#-g2GO^)}J?xK7a2jBZUQeb=b$uLq{ z+>^m_YKl6?1Jc>qo{@io&|3iAgI`FC1?`_x&_Hd>)2H523baLQHAH)9dR`{KavBEK zlgPMJz%G$~D?cM|X2!npCuROV+0v6cUIRxHi};${=pCxyBCwyb!Lksn{Z5aO@$mPzK4o*G4i;%nz>etrL)9ZA$e= zvsJ0n062qcUXOdjg4fT604j=8Ww*W|U`@cQ&G@hg#tG z&0IQRDTNOUi+Sq4<={9uN?B~`Ge(%tNs19N?l`U}TFe;d(ESk^2C!eS+3$T0`TprK z`d@$PvA*)6ze#J*y?a(YD}9=Cp@?eABBS5egTwx?TmFpxG=MP0{DS)Q`t|iizP#4Q}S7 z4^I(;Ws7x;;HbL^LmKe42lY-({n0N|87$xvf9by+zY0tI8K6793k$j(kADR&*Hl*T z2oJN~mQ+q3%4|Ri!`7Y!5mde{xb=n6ZI7KisG8XYTsn{=5A8O8W4qB8LvRzy){g#N zU;#8xG;!ZbIEHee5$i1j{o8O}Phx3N@(ux^A9(3m2##A^a@|VcFI=}(zGVr0#5>f_ zm%RNi$96Ast`-mQ{O~S33eJvKHhUDiTd;Ww8}QT~lt0o5k`v><G5_}-=F~=p#&5UJRb5}=!JZa?dvuL83(p_J@42I#b=hUGQ zQrN)cEyyYknsc_eqml*!SkcDini8=s$lWSI&+^FPXTy<3ZZStJ8;4jm_rCun^Aihp zh!m?XUXq{s&ur}%3Fd%#v)uNn5Zu|04mub>W}65;-PlA&jg5?RKyR3n5*)yYVa!Tu ztgM0C?TbL4onGb8Vp29BbuE6s2Y!-71&nS?_@u!&7lA(5s{+R~C3Ot}J*80YstfU^ z@$p+yHZ5*~%Wl~L^CbSJy39}Mk+%i+iQ(6q1tDc?Y~b9Px!|MaPv3T-wmvE+aFOT9 zgrqF6#=?g^eCZFyyW6CYEWyf7a)mcdJ7~iLez3MTk6(P^W(nq!?B%E^?h=wyef!!o zKiS8FxSCs_Guf{6Ar4~THpm23LNF>mr~ zngwaa+_31K0H(yqNYRN;+O~8`y9vDXD%4U}qG&Oe{2b=M0x~*2RdbFiJxRw!>G~?$ zP67AfBl-6^VCwk9s2~%DXWErTGHcuzT`<-;A*40311!{Y0gEd=F1F`9i*Q!%bms|= zy&wxtCzXz0lD7d|w(%JFoGkI&YcIi;jAz$yAP3;TySmY1!Np$UWs^_YM_X;!JuE3#G7um-TGTntn3U5BHrQR zYQqNntS0Rdk0Gw%d%^mJp87e+*;vSVH64pe4Q=Tg#Kupm}YJWEHu|Btd`&m676iiv@LmkxTXzQ zEr>|2@t2pwumYiQKM%ty-5n%ayCDvTf9&b{Z`v@rzFW9o?wPpt13>Cb`RR|>hIC|% za&5oj@WiLUxaLivv+ek8(bs-!(fAvIfoPk9Uyc7l`Ft`1`p01w?Fx6+ORJmyrTqFs z0Mq{#iv0FYxOR0LL>A0bPoXX`jBW?NFpLSoqT8q=#25T6I}0Q6_7P9M3nO$iRa|@r z+#BGB3(8I&mXQK}ezFKHHFEtA8fr3N+o?qd{|@|BANVJlnP-~EUKRC=o4TUnsrn+M z$zl%p^l6}jsaOO{AoJH7Imtpz{+~91f^O8%KW>6KpUhF=|7735Ah*ykQr{`}RZu*P zcasZ2j%8H`lm(>XRdXq8O^)>goBd=T!TwDE(3|evpT1^&zTji9XZC&5-&T-jcnW7h z^};TqDH1g59=}4FC?&6HWmJl%SV_#Zh;1OA1~#PE|5W7udgD#J_8m|23ctX^AiWK7 zd?SPy|IknTWXLArv)n(br#uxDnlbDnH%v%c^7W;!-b5_U;$BW;$o}4-9mFFs@RJ(k zl^y*49XcteDefI|2#aJT@kVn+@&$)|9s~#Jx{#kwAumA**nn=}JxiAO{U)=PAB5E#bLFopD)}UZ1&~3 z#}lvLGtnMR=L&7`TZ|QHCSC{DiBYy^y$<}FRlv?)Rb1#2L$-*`QYxW^v?L$Ho#yS! zNK>@IIPzt^Ks1ix{jeMU(I#$Xm(;LB2)PsF@Bq%B@Qq-36lW0X4PiQ&*U$Z?SFipJ zlRA+%l=0w~ufl7cfFR@M8Fn&GWdE0LE&aqssYv5fw;Z+4;+%B?KJcI;oJ6w1Kl{pX zW6*a6d^g?zUAr-Z&N~ANGfz>x<_=0Ok$|qmg}$U?@_o;-HNPm8$}hrEocDeWj<6l3 zmZ3;*(LY~>kU)>UpEz5d2uvVEzCiV8fF=Q6KmkN*Se{)ACMf=HkdqMzsStw>nRuUy zapS-!&nToIK+HVW8+hi$tJea0l{ynRSH){j66u{v5=#x>5+vQ=1sgR7yejL4!U5I0 z1vO(!LFFi}75CW_d0KZFVCRDG5s`d(2;DIZBd2WH}*ZSwE#A)fD2QenNT3u_0JCr7R)kWxmW*v-mTp zECUJG>fH`y_9GCJj)5ISWT!1fH4On}FE)mX5T@No3R5f;_tPTrZPI6o=6Bb9`6u~> zL43N@)pU@;Qd-nvzUWk2{MQmprXDt3%9EFE<4FkKtFBT1qmSgRmcDntQxh8nq`PlE zY$Q;wR&xN>-Df;l)&Sx-OJKogDV1su1ybn6VZ;6PBh3bVVa7r!d9=ks%~{A12-LXiVJ2Sr$ds zH-(bY#y)vrJh36#nIg>D+$-v|!srMY=P6rJDOy8Pb0aCmssh8)KpZJM1f4(vsT{g# zKYKUatlXLR7K}_`Y^z+2i)Rk}P>plm3+KyF4UfGRVCu+R2G_RjF=I4rQ`K_q(su*c z?d~P#9dj%Nm9R%j=mNo|sFfdEVhNnj2n@`@<@Hhbj1DQwV4iNR6%)(+Wqac$gXJBR zv^fZ6*T)`Sux9eIuyN*c0j3LcEBCm?7%c=&=OBrV`Aez?4(f@3xEkOD8RhT`C|jXh z_76$4gj88eq#DOBJRn(5ROECP<#q7Q7UR0pQm^SS4%AEg)VD|%Xq_ScVTmNjhfR`l zLtq#*>;ie~Kqd!7<*2BA5(mgBgfzv2b{MSTV`qhSpjs5QA=m?~b_H#CK-6vj^#Rx! z8es6Z12(q+dW71Ds=LzGZ@Vb2{rGlhUgVd4g9d0+2mF)BZFcRaJ&XqMNfCP0DBf(c zXTzMeu%=;Om`E`iU4@JXsB~!_Jy$R*x;rUI7O783AT16eIDaCzL}ETu0TzrZ7-6@0 zI=F6?HR0o(*lC9F${yV0<|W^?0YF@ijPJr8UBrU~0H)M<8T^ItD(up0&-Z&Rrv7-m z3q^wG_jYSfeOZEN&qhvloG*N_N2V+}O*lC}l3d~>p9qvMm}vMZrCSd_*>Go`a|XGFO;D}1*u*Fh7Cp>s`9*xJHeVFj0;?1gI*&P7EZ}M=P>wGj#2)mB9s}Y=%%Q5R?d$c z9kV2Hvm^;KRy1KKS+=~lJm$|2M+bcCqFqww!!7Z?zqz|FgZOCg@OR5MkhG7N6>+T| zxj5$MNV7_#iUB?rMW^QhsVhot_GPZvJs5N$W-y4B5)l4i3x5SU2Ltnga8c~RwiVL^ zf2As!=SrA8X%xSxIOB7GZ|rdgo@Pk^i>nLOBgrO!Sxn&HpW25Ug=YW1WQ*PpMK1Nf z5-h;KsN4S>5GVRyp5On!r}vmd8M#4zgitfY3U5CM2q@odnurEnX_nk*eU<{t!21IW z8$e63wM-Z5Cma0tFTZ351k|%y$gpYGT%XgNjB8)--X7q7#4C%r6@9HBTp)|E2x?Iq zGz9kf521HS*f_^AjPU;BnG9)8CZhQB7}{qd?YuCoE2MFy&D@P=of(KFl$9KCAQKwD z8xLj+@%)OP{^|DycB&bVFShPgAr!hY*l~1P@4`!Oy~(kK7ARp*4munJx&@&ZUTkO} z&uJfi=}w)=iaA-BuL}ANQmaF?52aj&ZY&64$g}|~#@N`zk${^6kl$v5ugeG&(>Qi{ zp;Lm&*^}v!8&1Q<2I9ChUoX9iAP^+>HG5igB#8dp7?e`QLA`Gi(_^WuzfL6Ta_DZU(%A#Uy+uk$rz?Or~ zg*tX32xIl4#wGcPR4#B=v*Wk@Y ztAe^M)ed#?VX7TA;Fww}wOY4L*mJwc(4h=Oy~yiI7;dw)q6R^Sa=)Sm;w-{AK-x=Y zBQn!`KYv8Lwk0QUzqvphz)E-3?$3v0+!TyWXMULmdl)0MQ+tI={A^I_tqT{o<<20G zHFVLqX1jkB7#if`kH}6x?ckC8q+S&SvXAB;?07?qVsrd?!+=3wjpt@>=`-V4(6rgk zK}cB$UWDq`Mo3B*yd#U7-drWFQ>_W$M3((MV$Ys0snjJ)5YAhE-l`8v|%4YjNl3Y z0U-hb>3}5r$DZ+D&7?7KXu@^_5Jaj_?`YlvSA**|tZ4GD3o9&b7+zcSwEVO3TApjw zcwYMe%w6jlQ&88pb$q>6y>5NCKDRzudft!Yzkj7u*g6bZVN3?0*GFY7c0^F8+Xn?p z*tjV{Ta=pJ#A$MrGMRI}lI9t*(g zlHf3Z?yo$-dIn+u2QqY9`-3^%x2EX6d0vUmggbwVHeq&d2R1!ACqvvAnB5+ZYPsEU zZ(a9!=&ttPdTc*`?~E1UGu6F3o{2&6?v3If+J3i&sXa5r!8479xp&TnP~LcXl*DE6 z(0Q-L#O?Xo;;Gy*etY|q$2mO)L+3f~%l&iFx9*U>l?U=1{N`fh4rg^$lVYckpKg0NZ2Pd=9mqvJBA%O3ctiF!B+wME5Yrd*JpV)Mp^}G}h1li4cAY6fn{diA@%Nj9i#`MQ<$`twU6LTOCR4QXAH1HaX_J_DGi^v zBAnpn7LhigGs?87p*o44T+G&~N5Jik#(_-!PmfDail2JVlZ<+Q^I!3(SEi!SdE& zS6#)pzFMOX+GuMc|mYJ8zTVtqfm zh;9i31Pfh5w8uV^1!j40hXWA%3PKv(&Enm0jHIg9o1^9?B8<7WL_e1GSsF-D;9Hmp zHS;iILz9{i{#Z34wuB-rL^$z6}m4wqg>eJ(-;)n%V$PrIQ zBv297P!O*|swGbP{T)jaVd%WmqtsGdqC^ zqU#z2GNnKxe(&*O-(?e_Ar_&zpR}}mEXfeMb|Vc{lUa8{Wbl-@ej?pCuw6cLJ-UcV zI)W73C6}(}kl1>}P@IrAw!zdk+~~7}bb5shqI5j@c;jdenT0kZFNqI?pWvvTjC6AB zz!jcz^K4w)Z{o_@3(t|aI@T-}oP;6kGzg~$LDQ1ZK-0_ynqz}5nTN?P5OPdJQbb{gd0*WaK6%uxSnIGfDO9+NwrPX{>*$v3+N| z8?~W_66B@onTxZE{YD+n=!$1Az@(tAsv+X3X?#8M{T}IFhml7N9wX}hNU#Ao>CuW3uq#K#U zjaacsx{+X(a*YbczR))pZi?Sbp^siuhnyanZp`t+ujIy>iJ>)I^Sx(FAWsyOW#X3I z%b8m_l5^3{+*S^pZ%$Z2yFlk}X5_VC&LPo?3#x2zs;eT zXdJnhW@SR@bqje+fX}e;yIsX&?C4?OB+LlYy-^Ofb~ps20DuCRw{ z&}?-gUvrv8Feisbp?GdAXPyK^= z5(m$V^)n0kRt$RG@fNgHs)oSt388)uarFk)sW1vnDc=ioON>zAL@?0QRCZ`36>!|U z+gm*kkSrZwpvDc6sZ0gZQ_@ci)^S)~juNDRV(!s|R2jCiry@=jwXFG%y+&9Q+} zJPcLe5;wW3*{q9uR#`^5*p$eq3xV7$b8^v>^w2T4(03GDN1A zMZOvSMwcHDCn}B%QIBD8_J1vvG7~>>dI^Qq{z>mu-NY1A6K}-}@2OMS3O7)pL5fnD zr${Zo6LVKX9IGglU`aa7S~@t&))_H;k}oMS+oozQR70gzuRUF7v{T&shrw2v)Fx)OzaCd%L_C6Zkp znKTTfl09{SpQL(TXMU5sGy0K`XDhf%ZTAy4No=+uSqDyfe!dIF_Y%ub8G0E~)XO9I%Yni*WLT&tFG$c-F3z(GB2IwzHJVL{YF zaR`kpnh+ULbtsL@idR0>Mzkzf9MLeuo-pdUe-bK*Y#MP>rZL8!5?c;8SkDNjnn65G zEVDA>!Y~Nsure6R%QqyZlki(i%+n_s+;Ad0+%B#Xh;GpPx%OTwZ29_r2SmoMg6b zw|Y{)M#)69izA~PTs2uWsFX)YaWLpm)8-+1m4}Zj+XcPlP}L%<+*!m>)tKkev?~uJ zwMz~xwTlk!x2liX8)8>i7L~P!$a>M_R7PA5JXN;%VO{N~#xf$?6;J^YxGcFMQGt5F znb=wAOSPq!Vo@5g63Aqg?E!6Z>{BJ;j`-jA5~y4w(^p=*fU#nj*n-`YA&8bR1HADMh6SxxW*7cawC30ud(@hfU;1RrmDyt%R~Nq( zNwRW_^9C~lj-GBUv^bZL0|`OC6*{ZdN$)7ZGPlK^wKc?;5uwLGtfFX2B{-#PnNu2i ztc}Fp?`~G9)FY~kP4G@z@;bm1a842Iu8Q)!@#d635g+Kv>qJN|r(0cfB0Ht3C5nnYR@Y=Ead= z@ODTOepDRBU(=%L#1of8r|!@7H-8*R5w1jRW_Vk%!8iV%6D#=ab480#*h&|%XlgT> ziPwZJ+--!YyPhq)LKwp0wACB=X1~TGznYe7=cA>Hm?{fyL4U>$IsNCw^lrj07QQ=` zDY$F>EaD;C#th{WzGk)Kh3zf%4^Smz+NbX1|QIPqQI zr>CRDLvB=2Xrcnym^j6(wTd2=kSAQHW}cW<`jAFnkrRGF98Tm7>c5G^icg5V0Vx~3 zkP68$iq@0iC4Idj<~{aC4D-@z?e~-gI$M`8*cuUvI|aXyfd243K@UmbZ^Q%_D|~b` za5X5*>b^!yj2wfRd`73EWGRH6bA;WGzb9$LV)RmB@%C^vb7GvA;vPFUT|#H9;vGs& zw{6{}4qap}E_9j>M1m@(q@22kzqbM^ml=?B{a1hOzwCjLuPXdn>Vv&C=UKkg{K4z4 z`-|TnrujquDt`G>{nwUGyaN5xQ^<#O6@96Wu-h-pPyRzLQ>0&j>sRUPXOBPc7%##W zyZ4OG-jV3*b5L_D`jJom+?>czx6j`5U%_v@K%rOk79+yA4K9JesPG#Xc?hlokQ*TS zEm)&Hyz(HtbeI>*vu9(nWp%;{l1(3Y7uO{L<9cKo@e$lx9$hKLU8 zlRv8?yQ?#~t-0q7H1n`Ma|M&Lm(brni+lDljh>C3?%axnB7wHf`~{sgU%vgxps5bT#fP$GMkC7~dO=je4Vqtw zdWx3lJ15QhAt?8mNkdh-1s+`eCa0XRIQC|r#}r_x)W?Y}OsU(m3fcu1m#RL6{U$fK zk}WT`-IB$S)|r--e;I0TIeI(H^1ia-MGE1&^56d^&o5m^hv0_sjZESH0)c!M(1BNe z|MX!&{vFqi*?+qL_ z-QR!Y2iTPs+(HQ!Bh8>lUk3nT#iLy)**B~78Q33?QS?J38(FCQhYpXN zx)O$ZCV?)6#{Fy<7t~UhR|M^!;I4teU0<<9)ll6z4A+4~-9aesWspVLQUOW}P}zw> z0Y^>gM4-ZOafGy6UfD|Sfx#KT>FlHt!w3;>PNzqwsX?gOLcEAV6IFj=h` z)z=T4m#3XMRqXD&q)L7R`_zYbDP53mXkyK&0>4}OtM$zIo?z)CZ2Qs03*(`LdsCoM z!Jq}{cTzAXGGKeJ)8Y;la6auY4&}Wl`rU#FUEh8KV3&|xp^TaHyZ%??U z*Q^&Lf)!Vd7=yD#mNIY_#e9iY7}JJx$`1=uASLxvlMSgeqLM{=LeB#QolStvPjJpB z2rtPnI!B~bi#CntuY-@R$J-D!PVXVoG6>TISvCYZ&sh?2Q4n7`5<9D18c(WMr)~tv z%Qjmo%_YjWRhUTKB-i81PzVKI66_$~@e!plQAJr68wqZ#w;A-!bA!_wWZuB98MP2lvCbpKIu+fxlxPZg<3w)4QeIC4~D{BHq+^jYFThD@s zpEBWA$!P|GR?~i4I96wr~CODvrLQeey7ielrCb-IZ z^_=qQiSUBp9;Kt`NhAsZg%PeuF{QM;tENpXP^?IC_=x3td9M>O>r^(wZbBFCgSFYsi*K`!lTQ-7hU{$cjLoxhhPNEpijdNCkSXl-J z=>yG2mqAK3n!ckTEObuAq9#d}P1zJ<)C3&5tO6@*iB@fiA9ElqyuivLmV!Lxq3SZK z?X%MMy)apeuzyo8cDe)}btRPnui&M^vYh9#pitQ!@(0dY2=CVz=k*4|8U}&T#uyWw zsGL*HtT7x_70DP@fi*45YogQx=VbYi9EQ4Ul6I`)GpuNHe`w^x;3NrslTe$p_yJk` zm-dCQRb?6)J^dgoka3NVCE+Pse+fA37zAWnn?%cUSUsifm8@B@T7Y%m*=D6Unz(DwddYxo59VoC_K= zpi}ty%6JQ*W&q>w<<7mp#5sP!4l`~BfsZ`t2cN%8Ii|@iu~0oN{>2PC zQLH5fFjZ;2YX&BoHzz>>KdyNbuB5Pzm3T^0?L`MH^g78mE5LSyd|r3;=zrX-1g%X7 z`;&>qgZLAm3IwSF5fvFQmN(3@#d?g$EvH~AzXDD=_Ko?BNU>==7 zLa$ZlbO@x})cF?!3NlyH*-7Jn&w~2c7ofVsw-@)I?SW=Ml#?UT0oAqy_(V2;D@83q zGh=odCr@TBq43i$fW9O_(zRaPaZn`YhAEzdBDadPtB;Y9#oL^{?vdeZ{3N1iZ&;J$ zYLC5I<-pCFz>$Kc-3C8=*^g}KzUH1bqG(G{-lR~rSCZ~&%$zeT^kzQLbIyOJyG_UA z-o5#@r@HE`5+Lqee&~A!U8Ph|Jxc0wfCBV`1TO)2B%3@S01wwwtX2J>s9rz4UDv2n)t!@vPB_7a)#DCY&}FV@wX%2aP$wpson&=Rk3G3hPZfAESOyUKfv5EltY+wNYG)ibW^rF)nIF{1f|+s6tU>Y<=#tb= zfKhRse(n=1i^Og}(>X$Q3ZiTZsPi~n_#dQfx=H)c>i)MzXu8zLJx`60tRtXy89b1e ziIBVCs{pg3fxB#Npt{MDy8vx4{K@0Hjw_MmuzW4NNYV!e976aptPUvh2^5wig?4_t zAX-P();~rLJ=#Gw5AItO;L-v;h-v=Mg5r>kN?w1v$@5jHV>MzunWTz}bRCx_apt8a z&fNF}cBOK}O7hLXQMfKkuHlL~S{0}3bw(94wBL6Afi0<0Tm^gec0Gn%$x}Ij!Ci4B zVK;wA0m}`-ula(9w(xu+jP;y+P;N5{q9v4v@d6p=ebOmx-EzdEhzVs+M ztt>YL6e5i;Qfz0yHE#W)^8kZMG!ty#hW>NBzL#{$U&D<~_UBQ*k{iEt{@vRHk>yX6 z0mrotJw7=3q?AEWH_X8U6uXpd$n}F{yRlKV9N4z`GI8^afHmhLikD=ozt-mU-GS7&+f5|ir-Pfw6C zY!H1H0^=wSd8<++L|dwJ-zG5Kl)HVJG48C!m`4_v2c_x>5}Ax8I|4A`D)QxzJifK> zMYqgr%e>S@+o9yMCEkI9e=fwh+13nTj5hHL%__x-nP?@_BQ5EAC$8S#CVA?o>%KV) zb||B`560_bkPmS>gKz`w#TDB{*m1{!>Oy4tMMR9Gdy~18CzAX{Kl+y~y}iJA#3J6e zZ@j|)U7MQfzv~ma+PGLc{4dqtrG~eM%FycHZZ@jb$)khTQ5f!ygaDBh9idr>RA~|& zcA)^+LLo80Xi$|T;K~mDOjlS;tm;vu9g>#bNOh(Wq#~duD8=er-Mc`g>QT$qw#LF% zbi8HLogaCZ6BxPDZmP`au;L~zj-$vti)p}kZ5-}@_`#Fci51_ot(v|FD#FX8Gil3 zL-A1@jn=O+tkc$GG!VsOH85}Y`0N~G@jcGU4+TppQoV+0@m0&O{|mtJslt(0add5Ug$FdSD)fLBpxh;v#8p;K#HAcAA3YLkVr@&l7<=1ylQM)GH7rvBWV-N{ ztkP@(aR6iF2QO(HP(eLf{?rHddVrRW0-l+*jU9wq;u#SU$GXGX7VfS5wo$A<5HPJj zOEK-456Hs9kP9r14!5eh#(#L94}4a28T#jYKBL>O@N&-JRzJm1kZTVjfP4GqSCk}} z-k3|z9NSh}AIO&t33Sb_ciB8|IK->c<~n|w`Fns0ry^v@&rm|)rn4KD_O5bPwNy-D zWgoYs$22N;V2Dbt_HsxiaFsIFJ++i${OLov3q5XKn$(^xjMhGalQ(M{NPWc>p_NyG z!c~FyV63Y))6nrsTHfaBvJRajT*~7vD{y@lO+vdh;D4vp_a6? zvU?2l-1}}p>cB1cDZ@>>xp*bxh*iK%LUK+<--TVtpDQ{@mzQL{ps zLiLnA8;A_)sD({vWgAOlgWz0rlSS|lXZtUEYF+rD$ zEW1dTYS}y=Y67M3qo6YxrPaiRXHU72{S#)?8Di~-Kq8nMBK=biC@JlZ%Xleh$In2H zWKSDY;>Z(I2E*eUOo=-8GV)gWg*~LjHxNFkpC!+!v~*H8Fv>crvOhFwBsFZ2Q(hRI zx@4tAKWb8#^R+0OV<*^FbHm~sl0+5n8eHC(k&S#@F(|rs;URizm`ZPto6fL$npPap$}BM^1DvyG9hKL~^7tk(o~+TQ z(3(B1zQ)XLo_=i|5(#2lTwpy*Z?GtS`PVWB|!$1Ic#`a~%dgjZ%h z@2ODiDPVvtd-!lsZ|+v9rIA=xw6P4PJ)pKIoBtID(cR#W6%+QCff;1v-`tcdhK0=i zWF4_&T??K3q|^4j?~bXV=S#b#1I(&&3}Tf&1xJ--oK_Jlx=%d(=*RRph5gp~LGapQ zLI?EbLdIhWUwWDt)U(O>N@88oD#I0}?k z#pX6GL#Ebt&M3~im^`k-@)ab<^zQ4e@Z$p0fRKy(cCv}ap$whjJ1`89aXqFckl{;P zyXuxreuCB1L&DLW|zC@eQ^92*qAG*t?-9N&m3Bo zLiajTwbhj8>!J|p+(ejqi`0JF~JffnBHpfd0-LiI!dhUt1NIN*n z_1h(V4F-*k4-a1Yq}SaIGi(Eb=}PQwxBgb{PX@%EMt0V5|r<-~c?|R{E zNV|HoT=Yjli0Id610S46uf<4D?t2@;S4kaD8XJo6_)Jva6^>{l3lET`_%kcSSVode zC<%aJ8H2fqcA||Hms&Ixsw0%BlgAbLR*P^h666 zBstmc=DqCsz3kwFc4#M!Ya9s0>`})kqY&|Dl`vDMV6r&oM9#*CzL%+-ywxoSPP z+ag-ZoCO`!x(g+_%i($m0taqSDB8Urb%{uM%5jB}Wrf&NPi})jcZk^>(hxh$8F4idU)h3R|tZnNvMpyN7idLQ_ zz_8zNMGR%J>c3-*?qJ86TZ6dYbVM?z8+x%tElKhMq?sczjY)MQEf0p2Du)l7;Tc?T zv_|7pUAWcmJs3FlVPG{JC66rF9ZaSa>JBwb5^edkzm0s@NGstrZ^|3V;9dB*@^xBL zE|#j4MN92**b-q|m^mF`w;{f4#ORwJCcvEMUk`g=)Ywl%6Au`#$4SCvFA}8tC@?h9 zPqCs|?FZ)e2mV*A*|8{6H|HYy$5cv>MF@k3Q!CYeO#mW|kmyHBpX=SRFd zLBVHLE-IhJ-LOPSPOkuJq0eug0=>*e&59k<8gWKZifd)g+2;T*J(i_XWU|_*L-6vI zmV(hTNxbKTh~YbsY^tYutB^l3Dw8?2`#B90Du@Dit6itoqE@A>BdIpI$BU{&9l?ic z+ixR(_AeO!zCVpKQ1BUQiKkgKB7&Vq8REq9P>OSjGr7#gY!Us}`8U8#vm;?Wf575*+jBPU@q%zP}yWj&GpML^sk!Q~ie z(AaLDVF|n%p?A@OBJLUZ0b zyCM9z%HYJ;Fw0A(>C&jaq&q;{_0AL!xa;P4aNtZo>Y$o@M0q(-A{lNJ@uMj1l$C9= znz~DI!P80C%ntn#2wWfCAfS#m2p=}oJY^#w(D0f`Y73qvz0MaO^3epB%zYP^fxB_P z$6y>p&mJDl4+&F*I5Oz$lHM9l^X=>sZ@qu)k+*Al&AD^z$U3emCdH3F$hS5qvNkL` z$1$@DNU}RH@q&ZbiU4Vb4RzrSo3ZNoa5sdl>GO2qggW5Wka*ftdS%2t^#eZvp)Z4S zB;XH$vSa`#;I+;JFG#m&t;CbvcElf`W9Q`Xi^Okv343MZcIzIv1WKr8Bs(P(piZ09 zSS^W6=Rs)m%~!LCngpknAqYyFPQ`FV#VrZDzmr&%ou3}Nz;%mQpQ!%K^OLl7$p*|= zH)rUT)jW8w$=S~sKR~740J?>)XT~2GKf*po(1~uw#2*NKCoZ>7oOy)xXUrEQ{jn+@ zkP>9|!*yPz&|yg+VQHq2X^cW7FzgDVEJGq%{bdk~y*?&**(2YjF zj&dFp-_yD6z^3RyEut92rWyL4K|wi+ugGveXu>TalOQ^%qDfOa+BD?p6vU-3hcSOB zqey2SrRkKL&VUsaWs=jb5jG^^nWRB(U$lInyNBwTr$N6ygxaC(akyV7CqRLFK-eH7 zz`%G8k{!HYAJ5`Z-#un-&CHa267=IQm`wY{UzXk8A#lbc|C1XN33oGaIksRnha(9x zWo=e(Q%al++LzB&3G+yLvdznAgUE!b+mR!$5Sk|O%HIxvXd7`H^KzS-K8Gp2jLizl zHn*NWnvID_By+q~JYM-~7dPCgn4D>5mho9LXRoO6&4baGZQ?|W7!oBp!Elp@@8m^L zqz%e$)8DEllkAj#-g9u4Nv-0g!;VdY%t^%cUjq>4CAMMJ_3>8jLT0!?O~fr)Fv<#{ zohCtm36aXPBhQvJXY7#x7rzmNTvG(#E>AS)eY6kb%SH##4xY;i0~3DMWA&Am{Vu7s zo}NZT@kqlX$wMP_ zb?Q&2t)1Udo(_t z1edLuEQYz52p9F*UfY_Vnvqc3e@5t^Baa)R(HUSZ|01akWvmrVZAXFFql`wTV*yt8 zb2-vYVYL~zYQ%W%$$1RvS|D4`kY526HiCJF+#TxLvCfCURwxPk5gRb$BHdiV8Mw$> z_e^j3yZZNyjqtWm)^7vDcS2SId!wkr2N|XIw5_ld$I#zKkl!ja_(V(gz9C=;7Si4t zSE5YMn;J2M4#G9-yocCf3YIMHQT){Il0pjCpYyt@Axng&)a}sC}mp57AtTEh85n^`Arf2h_JE_zXNH+H1w) zXHL}<@%tvR?_u+6oImJC zw|`YWiT2^I#4N(jnO)M@@Wsw~R-O@RB`F>CTz{5SOjXIZv4?fybZW-MO4oUJ(gYq^=Z_J6FPe?Ff40JEY1!(#l=`cbZGZ7i$7+2? zxnFd9e0tZpU*7Vzb3wSmr!ia%%L#M1$o8v)w6c?KbAxyq5XD&vg@8W%K$g;(ldhnr z+rVf?l3azEfcBf5=)ItzsAuNL@91eEFXF5MYV{bm)QnM&Qt0ZYI!T7q7DMsoqylNt zq!h$+tTGUt4*ZccUu_;S7KZ)O=;-Kbcx|AZ2)R91ZAcE;{O@R%Dsu$7BJEadp4QVd zM>^}=vL5-M>@h_i>G{-p%ME(;Xd35V>T|WLnT^h|I80_b(n3gU6*_B;W#kfRE7WtiU>&X$%L#O|y!IZ01}jqfNpRf78tKn;%DAwV$U0Q;9Aw?si=0 z%6_017r{@JPIOrxUIc~2#A-Sa&|#3et{oSc!+T4WVTJns9k8hZ<4&B_m_<-r!z@H! zdU$#04q3e#)XBZIIjx4Kowr*UnKM9huVP~`6yH&)L7v^Okcq!olS_~@X;aHMa0&kChyU)J5{eN?25xVL6a4b9~1!>|jM*kbEo6 z>9lP-=3f|Srx;LF6zYv^bCiJ$6`PP)(W$-DSk)b}HFQV*vBD~zm`Z1?HiR#*d#>2i zc%GPQ%jHbFCG3y!v+ArtpmU@9XX&1Dpi17O@hk^SCoKpw5d<50Vj7>WMbOG`S@Yjg z86<0YFaU*FINkm~l`ZHm?E?`gm0R@lYv*wq8O1m*P0^jSSGzqSKhJ@szl5|zbWKYm zV-Kf7sjs|M^XeWTj?Ey<=(%l6H@uTx>he=T^O=GM6>=av@Vgs^>ZA-iEi+h{)G!+BCx3HO-;;JA1b}t&~QZ@OU_Eg1X z{!T*sd*r^J(Yn0?&yU%N`NMI$@yvlf@5iqEB!&*#`CE>=ljl4N$yL=uN(-sWjnjz; z0=vuo&+u@|<4ILA+=MDpV1zX~D(|(c!1hiS&^KnrDk{GDYPj5UgcHX8ZdC%^AYMYW zd>BV+yB|dht~ak7ZLRqW!sTD!Mwm5tCBMK(%zF3D+t*W9Q?D(+HJOuMSZ=T|s@$LP zK)yf%Ig3hz=-M;z^(vQ2L3*>~85I|mAI?H&Fzoo9)x%uxK=zDn9vi_SW14Oytf~vX zj^!tLEJ=)EI`)98%$-$NxFvpxX^0;}^HBlX&EMH^F0Xe$aP-Tn4} z)PM)WT$mltGJ~*A&5L7{g-~8{zqI75*;lyiUuo~Q&yjxmN$;GdcceE0_(&sd&KNWi zj0GGG;RMs;6xzq5y$BEt5%Vn6e@JQzR}lQp+@+{vBq*lE0+ps}_i%itAEBh=k~gOz zuWAl6Ia95-C<_TATHY*VtH)TiCdTilzter`>DO<=b6y$cAj^FT74t(i2$)d5;+T%a z0juGSg(sx>AushkXUG3W{uC$c1sxJJKZ2Ofo3z)+*k&5-f?!E69QEqnibi~-K9!bn z0LcJ~D>C)_`(E#&Il6I_UI-(bF&6aQW` z`0rF(a;EOi!X_q8U%J8nAe*UbD&v3A4;h=-;SmhgTk~0Hn?guPfC$J4+UZ=#DYDUU z2=jq`1>P4|EZ?^m4pfVJ$dOXjEEP5Q25H$;LPMl<>c_SXQ;VQ_0fD2 ziYjF{X5rb@kTh;k|J7--7Aq7}qbY zEO?kY)Iy8SXD&0_QjkDma!bvs@j69=3jXhTC2-Z|0^K3u<|a-jaB!Z_VA;Op z$Re&%BV4wxWUDiT2Mx!L@k1cK!$G)BMb1ql(bY+Xl-8`zileg?=LbIby5v3ori5R) zHhh}{=j2)DcP=KBt^Re|t-em$Bl5B^&)Bn1SU7yf6yZ;|HaR4ZKZDY$wc`z91I-V@ zlYR>Ztie*l(OFoobmoW4bC#PD(BGvpu9XjI=g$Q?Rfi{Y_~%h0c9VMw@utXrM=R?M zvEUgy)W%&-;RfHX(G!?E^vUQ);>3=c9hB8Uf0MtXn;EN%fzn&`y6S3t)6t#@q$0Ke zN!~@SY(Gv{5D=B+RqtEGS_^qjz!Q*_>aDtPl;yoIl}G7{u0n;4l1;{l2CMy7j&g#7$-@{{kNKz9X{6{Jh6fpWuTiV z?{`X^;B8ZySQ|(IxyD}!x;r9Ef_=*H{Nk&sxNF+*Iphzl9J7ftTSgX9jcWezJ z*Yb=fSdE`|5kKcK=o9ipmrrL1HD@;l1;j_MhhHiE`};B1&K4d2JB>fZ>}S zA^(eU_tqY3Q{V$k4rSEH-`;e-kEGzH;x25$zVZs*uBYTEBV_`bsfE_ z*ke|+z-g|IG`cXluo7*AoRh_wSj4c;YULUJ?IpM{%hMiW(xi%5+QlMVJ3|p+r2%p~ zw&q+J@d0#F+^e11gON9OGxQ0o6JeFU?673?+%yxyC+xjB;alQLOSr2wos$+8wudDp zfm+lWrBR1zwma~%@*a4CACEd3wTZ2YS)~l;`SGmw@=HB))lMu*t@=B)B#RZs37JR> zc3D_rV|x&GQAwA2TPu5-34AtnVrL9lVQG#!dJSABJH}yVL2TyGWVS2ZQJu*iL&}Pr zjr|)m;`3GPBi7S@w_v1exQ)ua?OwJhL7pm)UFch%>!ikMsjL}5UMQs z*)BwB3UZ$z!#I2W;8US3A||9}POM*pUD0u8RbiWf8rRBGNHBwFnWwG~`!pYBODwVG z$zqt!BP0lVkT{f4&fsk1Wxb%z;c^*3w8dg>Mzr_v)Fjh}kzyg?OXH3|C`3Yk?f;1# z(U_^5tuMhg`q%RR?_=lRE&Zx?mX5BbYKAth|Iax~*;W}<5#5iGn10+$q_jJOvisYe z(ii@?^jQg81EF-E-IPwp(N@!D)%FhRLHjim5G*(O(17$&Uh0e$CPA>4(fzb>+{J&K z?d|{Z`3LNmEnn(vR6WwNX*+VNgXjh42iFg6kw}Sf*r;@_=#g+TlHy_wCDxa1l=1Qq zmR%?Hetx2>H|D9GRaM!jKvNtYt%yF}3Y<)i$(`8m>XQ8G431$<+><-wZl+0DbZ4b< z68ah1ObD0VlWeN%)D=ftm6hwoCo$ihdC#CYN~(a|s`WCH)MYrY+J8Ltswzx#bL@G( zlg54wtB5T=s021^ElT9!e$S*oll5{cu*wqaDTiU@j~S8sReYoD0D={9aEp!OZ5@>b z9|-QNj5l5J2LS@jBY%hQHRK`QOIQInX^;JIpgBl99p#561P=T&bD04l94scwj0{Qo zI)~lV$zoxpy}EU3klzE#bDBgJm2IM7eT~#)eY>Rt-6Al1>{(sM@ zIO;ZuJgQ;#svyq}8JjVIU5K}+o6ZfoRUTATvT7Lw?PfpHm{ewYL^XeZdsj;^@|lnv@ep@FaO2 zb%eol(4mp|$<(kvDRSLB*$2FRIn}aEceX?`1-H!c3qj2`QV%U#-2ohk;~l z53w3g1fnhC00gU4sYx1?1Xd>xaZJ$~OtG9wklw7wV!?L*>O>YJK4C`V5Ituvfp@5X zBEdVg;G*p-5;p%65FGwn;y-2?|Ldau`t-j6!T-apK*`kB-p$lR%){8!!NtzheQLt|c=IOiRU&(44+u=?$y?3Wd7i zA{6rB4~H8PQ@=e^Rowjee0hc3`NjZ+xddOmzVbCNz>bPThazK=T`sY$pNn!5sXzea zkqniiA{{ZYtU5)=b$W6Mn6KG_#5bv=Z#X`A+ z2E~*PjZINbh4z=)l@LJ|1M%b4Y-_^Dz9-}3@ok(jfKVr~AfG?n3;!57)e#g0hRQS? z!#zDuZj>tq5yyOnX16-T8Qy8DanjJ0}S4F_M!21W~Qbvw^5zX zeauy+Xoe`u5E&TBom4<0JG!q&V$9PPBa_SLik`Ty7q(lz<rD~Rvw#1GI%X3i!y5!X=hH`jmdshMOrkZrE^-Er*_FrSA)yVT23;<~CcX=G({Em&FOTvjhQhB<(fap1!R-|# zr+ZS6AWiMQCOLT;ipKE0M0r7U;4@~3i4cMVnFhy!`^ccbkWaALCEcK=mwdpP#Obqp zxRn8%>p8X-+Glycwo3)+?ZkEX_rgeSk~H*ZxObRdT0fwIG_t=4#`1SePwq(^Gbo=! z!8o!WR+AL$@2!e3DV&v)YtU$jirNDU7phi%=$GxW&`J+On?h7`;fB#}PTAxcgQgpU z#CD1c=$kTVQ@?(F88#siUhTsi-3Ia1#rIhs+~ivM{2~Q3gxJ!HQUC(mu|7>!d{`U|_QP+0)VmE#M(fQ0E2g?SB z6lG1=HIktu=_7}4BbNfT2yuV|38v04`6LHR%3#iLu!dOhfWla)q)ywRSS(dV5f#SN ztz9&&V)8vxZb4F8H`ONc(yyv1-p;@Y0|{E2$h^*OnihC-`?Fa^=)Fvc{L=J zUd5<8Obr2#-DbfdEewE=mEF#Zm*p6T_GD%Zw?+VMlC)J&pzI9ZWLPN8)JbsSNSqu) zvvM{F;1A1GN$G5V?Ag!6)8W$;<`C43oQvCCS@ zCMrR=Yv#D9mXF^+Vyfw9W(f>ML-7lSRyN#Y`(miJ!l4LtDUtQY$qfKB~s0KOp zSxEy%cY$70A=!-mt2J#Rry-?Xf8Y-t5A3)bflkm}zxhCMT@Uy;I9Rr7056nL!Sj_% zyiPmXxUR*Z5?1an5Gcf-GsReR^(xHV1ow-lXh9X~;sqoLENclILF;G{y9i=kX5Zg% zAO28f>mJ0Um+CEfxP$i>-d#eg}o;B_XsgdATiy0NuNnU z$SyCgqD5NMb@O_ATy8nA|CA*vtF{(GosYogb1DcYSV^p-WsPQ(46d3|5- z61Flq-_^*s=Vn==cy>w`xX>P4Z});x^9xw)X=M9?C~dtE(hHn>*IU)UIF;!ykaz0g z;Ns(Eduj@bxi!_jiS7K+U@XDInE1e@pN~PPTA64rK%fzQJBbH0AN^%pI40==E3UpF$!fpSuC~~< z;+L;)Q>t1bJc7X_w7btKt(~t&G)$cyju@)k?Z=T>NOjn!zDP|dmfW~$N$^jq$r(S> ziM}L|)K>ZyjD6smPA!7f;$DQ!Pd%Up{8pb}@6;c5D2aCf$@L7Pcl(TEC7)qFL#lqR zA!tF+X|gBD6&V}*anv}3<|A-U=`=e>N@nx$d};T_LjRQFx#7mM!^vk?)LlDb3x2*C zw(f_&QJ*vO=>Q-53}hL#Z$}u1!5&D@p1B4fTBa=AzhHD(a`MK@cg3lFD0tlue9A;e ze!vsl^xD{I{VjdY4f3k1qNu&kmPpKRi+zf^C}4mZcKX*nTUH)M>x6Av-uFc=@u)d* z`>vxC(;T(ldD}LK56!D;GG?34YGK}MC7ezR_Ch;YTX}6iPzp)@$qcVjeY%`0g5E)1 zvZQ5i279HnB`bIM7=pdEjvu2brhobQ=7QR-&8R?|x9Zf-xgzjqIy8Q|8 z!eQ$Td8E|Wdx5NRA6h8e#I7^1kNKghj(2+m>POe+7p1?bCKBW`KzfadKC@%?;bi)+ zcYhNxqv;od`T5M#v8yh+F@|qY36bSIyuPc zJPT3o9kap^NfP=|B;8tP1j!G^_)7#TKHONH8`NJU7cT*O5mLFDj<%NdMaX$TPx9#@$u6>I;q*E+&`-b#8ar7 zJVd(acJ-x};o0FaE$l3_gcxn!n%#`QXO1HB!WXR;-Y+Lyd1cPm@+KynNB|4Z7cnb& z00^#*2k2&4YRi~fv2iizu?nV$7O+da1pil%* zpa>|Eyy}x$4RS^O1w3u<2l*V70epjTHa$+ybDx*G3?B2tkW1m8NDHjunP!PDL2ZtX z$WWKLIr-VaolzRWmTU0AJY}61iJFW5XMLlUGvOJIBG=R+>!mPY+9t8Iw~37+tr)zq zk#)4h@=iCyL_f1@&{lbiWMZfOnjDrjeWO(|nIeNP!+c!X`^C$ChE{CtM?piFOfEOg zi>ZBCQWr?%ylp+JnQ}>5L!3d+gJFctFl_`0mcdV zsLJZF#KtHmFU|{E7ebGU(Y>z2O-=;^Uw^j8`f;ZLoZ7ieIxDrY&T0}}a8>{Pl$mw+ z;xt;z!1Krr-UPZnimpURx0ayl&lzr=jt0T*eY(Qt{d52#)V<3L_S=+C*oW$8wd4AV z$VG*p;qpiS6~JbcV11FdxP%7KQ|Pyz|K4_UveJJyuIQIN3F`C>k$VK*9~JGu@?e|< zeasMjoNeOfm{~mcnCTshSzd1t)DtG^(6lVl&p+Tf^If2Fe@ z@4wCddD+!HS()10x~d{-ou$js+KOXkX`S`OWU+OwJgl)DQ)ojYI72K{=0Is$$QiV0 z2}&fSuw~`tNgw^WT@22L5xb)gtM#MQ0)~v!&R*~8?-J-mdZN@J{U~0t_w-k9kyN=&9t$Q28J%^ z>#K=E(3$JPet(*o8XhEiz+!}Qg!(i-^Evn#T3l3(_u5CH5u8?UOp70~ES)Azgqd>_ z?t|UK3YY}bAl2*SF{d2tcdgrw|`8s4We$5vA|2;n{D*RtI&$dd^_IRq; z{L8twTvuEuhgNt71fVT2KdDMeiN;9V^E0Dsy+0j7$n^t70v zQnt}QB|^JES{Ok?8iDV@u(x2(NXgFT`1`46QrmC2*Dr5^f`1`*H0iBIsECFdt1B8(F6_&xTb7^y8MA>Vh8WdD7J!y&!Zt8Rp9nSY{`h$P6pu&$GZPi=#B* z9=VvrFW%DX%{yof^I?J$!qvChTo;L~%qZ0;wtV{7+ABSJni1Gvp`R$~qc=uR|A0_@0Zx|$MjKjGX9Ds)3{>AeB z*=(SBt>E-A4Zi2vIqO0{U4~6hyOJ#B=!BrDH;uAo0Un7@MIk1ataIq-I99yBa8xcn zB7Wa1lw7vZ8NMOLUiXRH3r0cI4fY7-#cekiJoxRJJ%SI&EVhvJ;K1>nIMrf~iR^Q1 zJIo6V*dtSGgE}zcViDz9fFb)ensLr65w_+0Fo#iArNhp;{`40Ra{vgFC2NRj$FVfl zR~SM>WVW%u>c1fUq9vIPvzx8oSZ)qaH(8R+0{ON>wVpnIi|EwFUo5_xdxjF0Nqi7&xj9@_nypS5EdH6 zwh;pjTzi~1Tw8NOV2i4U;VCIlBI?(G|@ho5m)>7@ieZux}8016-O{a zyTUN-XYlQ!2qK)0sHh1an5P?v&q33p_$mw!QjISt5N$e1B=$?hNpxc{%&L((yLtzT)No$HuqPV8*=WF2YeI7mA89qXSco~O%was2WY z_4rTa>i=(5AXU}>OBBbbSu3cRV*5>9t-_rvV!B8oqcg2ER^@A?QtK(uqas5v{DOnS z-#NKjy}YPR#L3WNlYJauR928ZRgq(xAcu%Doi}B*wX({5-8cD~t{Ru|&pb7keef~I z(qNSR-1(S#^1Z&-%X`um_nk@ z<3XXek1HI;9VP^bW&=w;pkmRfRSRLn@QFM^$jNk%@O;Y(5azyn)S=nI@+a_C?|1X! zmu*%4`Cb8F(E`31!jn{4?D-y(O-Ef-z7sdX(vW}5qMIRQadFSXjoJX;E?k_{kgSw4 z1;-jv*Rrn|Lp%+)ij9tSTANQ@`o&0iyKq^r0FO0yYSa0CB2?1?jf8$oJ(y&yL#I8$>=a}pa`r#iB6+DE*O-HV?HVi(GfN={0ikHXNpP~_h~`-Zoyz^z{{3+X{#o&uVd@z?9{+XtDY0r zKC0A#TQ7HVaIHF`$%?~e7Cqp#MZ_Rk(sQ~m@uCnFI#|#%4h1O59<>dCUUwCbg8adMe(m9;u_ zaF`4rH;cZLyILc@horuJ5hs4B9;k;l#1O&kKk5YcMq?rvaCqII+jd7JGmeLbIj2rz zCUqFJdAKS(mhs9F_wUe%BegNG!B{weo{PG156DDaX5B{4f$wv|B;1D9dCyuz$}%NB z^@Yaip|oNjui2;_?YFr8)jrMF^C?7NW=Qq1NCwr(Ow_3u0Q3T9Bb}A4!=R}H(U6_6 zI@fyPi}Zn^mbJD`Rc9F{dom6b%l3MIA?#Q*=AHM@O67CvTb(^8^z1(s;iAs6D8>7$Wj-S|*UZuBJU4EWC3Qb!JUE!u*sewR+O*RjIcV|$wB<2B zuO3$jhA+FRrr2S(4)a7ihW(T+pl1D%ZF#SzWPpFd-6@5{dj^xlvG9Yx3b<&|*!Qpawi zno)YC9-n0+cQO}(x2a<0bdSiqpL+jUb9#f5G>IU;eS7#%(^3C*&H3+2uVVk2FZfTT z*PIkhnS=oB!S>fAq+4u2z|-1)a$m zYQE*L1e5R*wx^`GYmm^k7`HQOl?y-AGE3NWOBkD6({a*g`C3o^`T@velqxFeKc+g4 zJD)b3r}&>i_zT@r=p~6Zq+Utm1nnZKG`L#X?dLu z>(=VjE$V(QKzMs_*sj_2Q=bptn7gW5;=jCR{M&>%wzs3vH0 z*!uIGHetP@zMRL2{*O>KAfc8&emZC5_@`5bhfRHh@1-s*Q2JG%Hn-^MbOh?1MV51ZhtGpR1_f$jGwXL1|=Ck&X*L^Cd2p3xGePZ*QsPmq+4;wec`h4Ny$ucP57pl0!*wt{=E z)w@*6sv2Dq&iPV9QXn2z$G8P94i^;~>M;?K0;wbTgeucX9wE|DGzmRvB=&5kC-ZCrgQyD9)>~~om zflw`%t(Jo&7A+MvwCA98?p;3xNA+c>GOMEqGAe74<3@ ziYrRaw#_KWyJFWa-`pHGoYm~4T6VAe>`b}I1HQ~%3DAydpikeBC(fpuYqM9N?N;7A zc-%Yc7sTt=?Aef**q-n4Wu&gq*?Z`oL&jfNs4d1wIy;bE2lPHc&o|7}KD!g$dzc?E ztT!%3JGf=Q+a>lN3QD_aWxd^s+@0xboKJIAt`Sbp6@WU!)?gs0P%T%yC5C9?oVahx(nFv}8E$L?h9f6Dp zbL8$ulau#4MqR~M&EW1F}d6wW!5DXWT9JV~)ZN?Iux zQbVdvWwNtkYDLlcH|MT6QXJYn@Ys_GuoBN?>P}c9?SY6KZL|6NNE}Wb;Si`KPL86* z68uowineUVG+=Y9hPv!&s*r|^fpwVVW?~pg31P*~Pz5`>r*urMm5>^&Mh?s#5o1+P zYbHQZSQ0$|=@(H+QY=Q5mhA#g(^ouazBs26yMGcP^xcoEMcTmPb8jeRTHQ`PTM;EHS|JHo`KpjbbMr14J}d zj;!@@yJZjGtbfMb+a{wjfU#~-Nm$d8d?{G&DQtUlwQkv1_H{+0WS4wE;$+XT$eM+c zFvH2fVo-BZOK=EV_E?n2_fVU%ORCN)5y>v^PUJS%Z0;gTVV1=DJz=GtZU!uqT6FTR@SrLsxw7fG?rVB)x!jFQ`EL1Lc z1zNU+x0rCv-U561$$CS7i^AhB4i4)j7i#Pt{+O0tG9o~WdW+a~R9S4_{xnfJVW8u7 zWp%W*nrIQPqfOtOT|U7*pjoZklvAr?Iu{$D&I6y_A3$qbosZ(;Vpnz-Phx`nhplgT8Ij9uWJvfm8nzcT7rG^kf*je~! zHX#$XJp`@YP>l>okw67UM6JA#6O`gGoLPy5fuFVf(1=d(M9Sgtdpz{w58<^pHYJ;< zLuTJl;(+$K&gq2DzhcohODT%=o1dT#_WvJZRZ{wgSQMqC;ez-rBp^vOoO3KN!_!Si zfdnsz|J7p3r=f01t*TztDXI}zWTXyiPbih6uacbH=BeOz2oMycoNRF_zb**kHizmH z)&1*ZD%Ff%Ky5s^b9&3<+D2!3V*BgQAK)JEjho!*7;x#g+3-IYS)jn|#3N>WQ{eW> zDH(_d9e4r$&=3q%)*>ISV5otvxm3~SXbyo5 z*F#Df#@OA|V@zA}dKGsvsU&66*+HsqtwAsf)y`QS#k2j_G+HIMxY8MmE7{G5kV;Mk z!;^dcEW*;mTp506g~1&;D7zPBx|B{J1FYy3R(clu2Zvf28SR-szFOkTNHG33x53V} zifO3CteHDHVyfl$*3{Y%%Gx-}e#m)M#f(xc$ z#MLEx;l<;)Xu@)9tiXg>a^9b{E;96zE|Y3PTWKd+)QloEmD%XILj2j%EOrtlZdp=h zl;|TMmEU@d%Q|e26$b8E+-s`JAbTXHs>#k8Hza@mXEgX-Sv1J=q;+bkN|u?e%{;|*lq8xdjNZ4EwAr=Hk(h2<(J1Q5 zjx3`c0_Pw&z0N$t%H9%Owqduo2MGCz8S}&{gTBPPWRDz3wEzXxa%%#e5gkjRpo#9w z`VdvwWE7@^kK^Smcl~pxHTw%U5Xy=&=z&kD8s7)P$n*ZJxy!&uMD(P+o?J9=Gb=YyrA1O$d(-Ew3r@NlLX1U$+ z0qrN|;e{0rR?fraet6yxIwrKlI|GPv0gsBzKLif z;r)mBhyu?wq}%xMCjKPPdhIoDr(_f9PI1wkFMSfU=ja~JO)t*?if0t|OK^;1*z@*X zqUZ4OJ2x*RuP!+6ozkC3iI*VGwn(=MTLPh`>cIAwMD6a|Cw!b;`ac7>7E2d_A5)#5 ze>JLpLxU3B{)^=W@xMh;l7D7;{X-Dte6(5S0R;sG0_8h;`}+EFps%63sbjpUWxQcz zs97~UGD=#ZXAm`iF(ghRJ~KHwe@{+AN=O1uMk*vZQnv`EXQ*L2E-qkTxOq1`Dtt>k zA}K@(A|g5bA>^uXALl1e&Qt1kN{k)}U4bzxot6~|t=aopC^TAXor)*aCtanhB=i&U z@z>G~T@3>`9RnHB@$ngI^3mxriSf}%a?%e7#lcAEGSvh&(Dt;{oYMHdU2mC5I#3}{ z^dO-8io>*ohx=~%fq^HXEct?d(@kCehjNPa1N{5_JCO6w ze^%}v{;ZR{gu=Wo61PtL1H3vJwGw{G;bySN4L#c$iX54Aqrh)v!ykk41Vd&DMN*0A z$Sj|T(U^AgQJ8#oLm<38QC}nO@yde2^=!``8y?fG$K%i0+tEKF_ZgZss+Waae>(O? z;UKz8oghNI2|?@Dv=Z3rkA%en>46!7nz%_!nyq@K_9lB~dHq(pQ}a>~!z7m4j-+$N zDMB$`n!CR}9jG)+drEzgKN{G=S#+FCF+71}9&5~tD?`&j4p1*yYbG6NOjNuawQcyX5AWN66KcGgWk8IPbsJ*4 zv=c`x?)aJ8_KTl~ID@B~>#dFP$qN`qfZEGy`zZ z!w?L*KL7zAvV>$|FNr6fQ&y)-))?&<8S}?p+xHpwJl7s`ls-PT@I96ds&vRWAW)L7 z1OCtnMpwi%priglWGb?Heh@f_6oVZj{^Y7u$`X<#2s$00@OV6MC~>~Y6spF4;fE-a zJ^A{o_+4*E6%D$Hzm)ZY{LP`TZbJ1M(U!hH#}_|PdL74P(MpKGRXuYaJyz=5i4p8D#|Dx5jua;ihn|7`2gFwqRZ2|%s88aBD&<2iIX8| z$<-20%@sr&@RIUMRnvf{$I;EsCXu(U<~$4?EsUKZZ8A3fqfNXTzVYYhxD$H* z`|sJ<_*Jmie#z#HQ_|>sF}qkdUEi24R;t zrTJ3Dp4v%jL}kVMB&G;+>)cUOUUu6e%0YcL|J$-z5*v1yddK36K7mcDaDVJUs9R?Ury95iTS2$LH@ zAAoAij%Wpf{YD15)4fq;y>|9H@7^UaAojR-QzU96v0yC|n>@RJRAK{U!gTc1v=(2D zNniRN=xk{m9tpZPoO^55oO>IFlrqfD2VdSKXZQBQ6)ns}L0wo08hQj>XLF{Qss?qJ^S`R?I@rJb`_n=~f zveg2g=^(mmUalC|yX9B6cXm4xi0cu2NSv~Vzg{&>dOrUG6dTU2z7D_H6}0~=p!okt zlKz2UVI^-NGp~!ry;-TDqNf?0Opb)KF;qaYH7o>5m_!!@Ee0O87FD-U<9y1I&)e@) zgWH3OSdT9D(9S#N+GdBiRCL_>z;*55@%8cf3f1F9C5|>^3M_yYpQF1mPr`8oBGqTL z0Z&h^FFv3J!4Ricz?GVWr?)oGfRNWhsxKT!fyZQ`Ueu1aqi+A1|3^$kN@KA?y`Q=* zI#;E>)C$1Q$Yc8FOt-cA(7AAvED3s~fUsnf6HN)3^M>C=Luq+@S&Y zvSZFlm8?{aW$9q%{lp*J!M?XR2~kj3*`sND+#()b0gS8y;v9Ocq`D9G{)KyWMV*Dl zZ92e#7HtZwOyh-V8fM^^stJ4^iTmEQ)$GDoiU$Hs9|TJ}!E19=7EyC{+FTGh5r z{iEZO_I*{Gi>n&d^Ud^A=WNi|w|qCwQXS$J{!K9q30c+xFTznOF=S31jNtr*AN5`UNe!!kF8Dy!m6lx~%0OK*0CHke|Q|YH>rcP@;cs zvio<;4<+_?p}a9t50I&&nHt=hRX`~#`B5&4^AZV5PjMJBX3oFsnFP8pX9W+#%+T4b3$B{x{-rWp>pf~ zjk?@YqP8F*`)MmKoMW%03a{J%ksaF&35jc_7DQl}c>oxNq|1QT4>>FgU2FadjoE^Z zZvDcvj7NtZW4k~|4sZUd7lui9I-w8PN2{n+!d z>F_GM9mS-U$wJqju=jg>1(ydVU_`yGUrjee*6L9gmc4bbr_)eD3sJ@Gd+1&L9?yYj zYEX*9MI^))1NaS?p#7^vDAd;|i14HcE`H>&Aj-~F_ zdU57yLT->fI`I0Kkl!5Op>d+ESfH;mC7S7sXkNlxNSt%sE(h(O{3tOl_#!>Aa4h(gV7&LVp&cTe4%st?$1a0n;|>;xB)HyBHUNw1KIUhGaggkxt6JnE#t*p@)G_4uf zWJcq;6oAdlCQd8R)8-bjIW=7f%^?znE=K5OHMiy~O{k!m-!PV4tbiP?E@VpFv)!2Lv3{;oe#PaV(pj|Af@KF$6w2E zpurP8IHgYsDHL@q7|94HPB{%x5kN)YE zI5=ykudk??56aczn|~aN$H#|;8tR%Y8E(jQ`a26}miDd;6&cRk7ngWxAap3Ws#1r# z`h5TX61xXh*)lT6&;a33QBp0XiOxW8s*g+0kXA8wmDF&Vl?I~KeL$SOS{ZVP1+d|t;*BrPVo|t1NpH3(VQ_gnsC{$`juQRg`J5qn5 z&p$wjioHZPwdO^mxR)F#x6Yy+_-BSeq3UwG zHMQk9;4A)1b}@$X?_{H&RI8H0Rh|*9O{&PV{1C5`s56N2_WJ}1bf)Bm;e9{U z5i^msh^~=SO$!`cTN)T!n`GBo(ps|)#+`KO#b)95QVP>*oUF~0q! zyoOnDFLd~Z!05i$^8aJP|9u_*W%=;m_vnADIco zl-M;GtGObNw!-3dGoPl<*?9+dd-rVNIwB2ecj?Fd(@C%A&G${GE6vxNM%Evi5jqm8 z!2$%<2)6ZsTv!OU5x|(Rw};B`0DrazW&9D^av@LPXDRb!1V#Jwu;Ag7WJPRuP~Mv`0C|I{kmfwBp7>gI)**`n|R0 zEC46uj;SswKLH+O@qDu8TZW0xyhfLN`zui_qC~ioyvC1j&7G?R77d>o!N~O8XW%%F z2F!_Bw}kxVz0)iUMIEEP-H91P>U2cjVlLWb!~zx=MhbV#Dg=!gux)mBZAx}G(;@3T zIQ?U-KnVJ=WflomFuzhgM`IBk$wmn@Ba-l{(wVvlZ1LzPTqGle1hcPS^4rfl35fHrO;Ee9p6gbxRaaG~0qUSLS#B`q@fHr%&*+!gs4 zEvYyt<#n#&^b^2({*4 zWAlwwa8SMBBXHkt)vp`yfT$)pC1ETB=qfeKqQK9S1p4S}I#*-2CMm|WM%4lj(8kDR zwrs)P)x0NQeLa3Prt`Q+h>j`Q43g_B4#__VwtPdFEuyB!quA)!FN$MMr}MD$xad_5 zg+?Z_)nW=xjiizk@w7mG?@NB@{RNphC?in@{hnUF^auzD z$h;uEH#t8{c@jSrc^Wf0w-B1XKzqsFJdvD{tS=06JAOs z9Z=2*hX_p6D5Y=K(7CppXJ`_FWsc;*v<)H-XsZyz3j@SVA$lF`cw;IdnZi{85JH=2 z8(j@8ugW%1v1(k=fTfg*SxkOW6QL6n{Hh|0A0#1>0Nbn0IZ_5Nt*HI(Z9@W&ne z1v}6$0dXE&wKPC_oC2!fW<>Y9@%bIijs;s>%Kj37T3edcM|DKZ%j?;1i=GOC`jKal zw**w_j6ek~Z1et_4zRpG<1SO)COZHTB4HsVl$ojSrqZuFyqgu$8R}(s79}ewv_{d3 zj(rmy*6e;WHVe0yw3jlXsmns$*YlMZ-bxXH#w;Q^ORx5_WJe=E*{(s)E$al5%{ zPgf30@jcfqgy+caE<8zHxu4?i0qn6iU1YkDmPoh306`o%#|m&twgF^WTTvOrXA@H2 z8!@pH^-eF`s#+34aqLNkrH^#E%>rwf%EPxq7Jx)0T_vLP=QP_JhRZQ zMTV~?x{o8>hY!>zOunx%(bfvKYLY!V$eZ-O9qAZJ9Eo(fedKyiq%hnfP4ee(ZA!G( zR9y#@D#EZl2U%thL)>&|9aZ#U{LRazb;u$5%J>Sc>AaH zpxf-VJ!)nj{h$*Ba=&U`3yB>3u#)BuaRnBMQDMC5XrdPXA>AFjz~ML3#hK*NPFt$U zHq?J!LV|f)adxk$MUk_5H{<{tSB*1RNt4Q_VzoFyTQShA1z}`t!#Qa{XiDj>mG{o% zL+-#ig9HmAtTEg++TIdoX&-c?C6dw=jG^4XLJjEiTKCeD7OBZEs-|A`_lplaC3RHN zWm4vVjq!DeBkD=+#U-(t7uhdxnl}Q?Ai@V`ERs|BxawJxifHQ4J>vn}43e67w%}ni z7f1oL+?ZvE4PnCb%fLO@K0DG$WtUyn7BJi$?GFIb8{CcIjF#-zn;+%<0+!S`#+bHo zRzvxglsE>QH^3Id@s_;7t5R%(ZMR6A;fxo+!YctU6du6Sb?{swNnA3@9X(UCs6%Yp z`Zjw;&LGt_&o>kv**v5?J#G>HErnPHNst}ZrF|gd9Fpow`*DTv$<*t&Nk*teRIK`I zb79SPglaa#I*KIb&6^ck6i%3OejjHH+hrYgnjY3g8<$}?H`YT!VQ~AS5z})*zyAbu zghC-}U^#JhC$(Jm+eYrU9n^FAos;V+zXzFTE%gB}IVvYd_`D>)ROT|DC)2b0Ml|uV?TNHaLoEGKhLe-1E}p*pLZEKhcr^!;MtK zb3);N`)Uw|Qt1mCkQw6^kUTA0|ZUC0Y&pojd zJn9Ihhp^YN499!@G+t;)PRV52%ikSE2WZz-%^$Ts=xG5*PRccuVYn|QVgrJ~hZvhY z45c?otv&I_L?vngit!M@-@T<8lo~(Ls#O5QmlH$}Bi@7GPa>yN#KfzdMVT!|6*9di zfP2+`2_*ZKi+b5|GDJ)}mg^=5(~XI(tr@JNS{ArOp38!e4nsqf*SlK7jwq>$R18m) zfNj@{Lq+J_r;qDB5tSQE8aG~U--q9l zbM(`3g%*7`9YjATMgDM^c`egZsnZTO?rI}Q0K9ms0qPYDy90L&p@oc-%qetzoYZOX zq~IA^98O}fE@5Y29H4R!fW}bnT;F5;h+;j%`XvNsfrIW+9BK z6L^bo`bg`zdDc+)7&jTVJwk&*V%S=e;3Fre=K9TP6mpqGUM5UMJJDj{m=5e8OG23j z{+NysEF~W6;-sh_dQ}#28G<{*NN0LCE_8#1k`B&{m6iN<9ivS|&7GP%<;uPRi!_tX zPm@_XPcXLn8fGZ@?@NJ(_~f!C&g4AMCC40cqWfuX*cV%049&O zIRd@h56)&uEKS1y>=(kuJLpDxPB|Q~fvMq5qp;S5f>PzejGqiaTJL~>-XIvb3h8U_ zqbsM@3SYu(?NjsYVe{x=YrNR%TQENbE&l=f*YQGJodJXR#&{I}Ltgmz(un*YOQXMz z*M9>&PVyRm*-S~d8=cA<0z~vAwezn65}VHm0t1EP1Heac<@6@Confp6UDBY^nl6ZZ z{ouh*dsq#W*bCt8(b=c{d7NQYD(dxWJmu+Ne3b6s{pZggpdP$E$g&xnKz~@+OsqB} z|9eQ9oOE1|7F6V{NNscufu33gvj9Kp*zPlR*w;h?mVFLr7=>vCi_#Xe!PAyK4v1kE z`BV#N-1<{688L!HBn5;Xfq=R27PGzhu)O}U4H^Q%Xm^si1Ehxp}^5`)(K=o>=?!# z6X;wNFZ@7R>^^i@W?2DKzWB&LKQU&J`hLVP5%kR@HZk00q(_;^AK7m>flDhHnbMdS z4@K)`6P-sK98A=L1{Zx*{HEm4h}OH&s0x6+F#-Fyv4c2xZGqGi17C%tlUEf{l_@?) zdX9%VuN9!%?1sYy>)vXHJH>=wh^_$u=)>pF#26@9Kn~X-W|7QLDT^0>bp_JOrzmU> z4~?GLlnc+G%)b6&_3^*6Q3ynlHp$8+J9s|vxUtGljr74(YI6?#m34tbbm?1m$#>MG zSd+>G#29Or>`X5KL^Korelo;m=PT%zW{OPSFeVoXh4ZKm<6gP;As~-ah7%E3ctCvi z#;31WdU!uu%~j_1u3B*TBk=%)yPAoglmY_PEKr1rKTe+<17B=ia-RWuZ7RN7xO9Je z5;JIYkKB(|ojSTHnE7#11z$_Pn7cM^O$K(5U9B@f7~Vsb$jbiCwXAdumP1;8H7`Fj z!%hk&tL+M$qOA0?J*X){=qxx1>EQNA!u}dUv#8VL1l9QTdk~2Wh*r(4#Cj)q2vK`W z7_+27=9V6i#L56;M-PSe9<%l?_pXTLF5;Fx>a}!-V)@IomCs-Nnft;n*5Pl^;NpJ( zpzjXR_k;X50RF!$+Z?PMZT~OJw!eRm|M%1M*Y|>ECPog9Qi9C?1{o?! zUlOXsMxswlIEiL-z(zQ|7MAhTR=&ppFv|p^YjVT|?Y?~?4mG7uflK?~76A-D$8qp` zNL*C^!V-0tw~i8>W+M%TVxu#4*^7I!9o;i%l5L8StwA_14vcw#l0|~*#BwDQNPA++ zP=RS`Kz}Uc>%tX<{7=R9Fr^(h5M-tGoB;wo<|5k~5dTd+>Y?6-(%;780p_wAy}NO9 z87K)>2fAj^V5SCo7P3lfd!1V14gJf=dC0S<%kCIXpIBA2nXVsS7KN4yK$%NiJ1PX~ zu^XZ|n^l7EiDZ7s`zLkh;5yWv`FWrrBMWt!1Vi$gP{C!&@A}*r_u+W;=DUkyKSJ{6 zq+pC%>5!8UOF%7;mljzFi&;);@# zCNHrQiFRqsVBP`6eTSckIwG$XN)+Tw(H0WkOcz*NSgM5fMqO=F&f%Vw2lvdCs$(XW ztZYhbY^o~Fls}P*O7Mqay@L85Zq4SWK*vC{F~H+VzOnLsFa+;VT(K86o?g8z*ViUn zkBw~w+%wquhGNzzUOopN3Ygo;bTu+8MDBzegO0Hg8KR6Kbl7+Wnx+b=azoJg=Oxu@ zl+rj`ZXPi@70m9S1b?axtT9q^8`-u1a|iSlWyTwMRw>lhj3J=889D2;O0KobK2giH!IgN|ZI7{FuN^F74zS z%ntlrsSoA8YqT$^4q`qb)jpVs{111T;j^Qr=%k^yXk*qxDXtux{J(rOu{kD79~o`Z51N3TBC-S3Z(m63Z9 zsR^r}5p^W{K7k5gNQbqMg`7cJ%w1rAACyZs)D}654pCkS0BjYMP1ekhq)bw4JX?CZ zv)NMh4EePB^|VoB@$s)bmev8iKO$`*X#UPh=ra!+lF@2Bvzz)xUfC}S_I@%Km4T>! z=9^gI!|o3#hz2MqGLqYGPeVy4a8cm8_K8?xIC2S43eKaefTKUwQsCdjxe#t@@2Lvk zxMZM;@3UIObv97LGm{0#Jx^c{#AG6}=+sy}l{-&FC8ug4^%qp``)7a2J_>B$FFS%NtF=I47{k)@F-tnCIUyX1wO&NwhK(}9JcXNYd`L!m zfSVk!mcvM0u`297&6?R}J+b+XOx|g=Qz8!}h@3`E+7-5?FecKIsDc$-x`%Xu4C?@x z1k^C4$2dzc2S?=(5}_vob5{!-FDJ2K{V?M_XUHS5A@-0YqW2ixbJP^&|IA?ps|W1N z$_x2h`F?}HRe;0)qn`{-IBH$n8@xz?%(z-^gou80S5&udKC34IxF`-epX{#gv;khz zp5fbFOny!}t|})a5YC{@AXvk3!tr>Nco?MFkZf5eTCJdL!wj3Rw!O#94Zd&+aJUd6 zfh%P7ir-|HToQc{tGa&1ZWWv-sb@n^m0|-0AuSmNAwwSUK9kEMk>eG3ETai{Y?Hx5 zX@(r+LJZ@GARQ}`jk;8>Q11wSMwbszNo_9JP|rOkgIGQBE^(Ap)(aSF-aZw3ucdQ{ zjFx$>S1rM7OJBY4^}+7g@P$d!P}ERba-98=oSM0zg0pR42k~;k)?$9^*ia{n!4A;G zY%CWdgK|##Sn*W)Jv+XWYTwb??~vWo7(tj|a%yU>%`iz?N=%K6{(?M`;j~ttS4j+B zT#hf>MVOge$Y6(}tiXMbXqZyu-7()Bx5%AWG_G3KD7!GtJG1P~YV8qc@!%bNPav>`p=857uyr%kP9)dPMwgN` z7(js@R7!&0aLqSe@_W#*Bds+(b`Q(EnI&sxzg3aXo^w4i=LEqOo>b17v9|4sKW3Es zFnNj@a!Y%Mf4KSN>*z-}iHdP!<=kP*99b7|)mng?Fp{y6NG^|pG7`W&&v=*PbehNu z;InM^y3qbR`1pIN0?)54u266s0w&xctw5t8PQ-T=OV?p1{yaFhoqjo{8L=pfl3}Js zJ8N^1$t}5x0uyBJ^3FuhLkJ!^|0H-#Zhs5mnX@K#EBi*t(l!!iQ_P{Q(j`){ZNdt| zn5d}Fh%IUNqZx&y3yc}K0*;>= z6uCTSEmRgUG+VRmk^Fn4sGJ<5^hp&sHkFGHC#uC3J{UtR<_|sE;I0{Ke-LBIFU`q< z&Tp6sFTKT=ffAg-Ach2h&-Dgukp$R;<%h%Gsit;`h!5{wlZ|nAf~Z=Ap0;`2U>@f| z`m0hB4@oPyhbt?OIPSysTEI}IUH^=+-%dh*d(-tW|AB9L}g5JB$8q@I*nV` z_8Ui_xV6hWM)n&=Be=D-t8QIE+`@(_*ALY5Iy~9s__W0rXmt1#6TAfP4`}k@E=bd8 z!9r0+AZPjA>W}eQjA@je(Sc~;qs~;EE_nY{NtrLH5LSKz6&C*iRQx^nBmBqQPeDpi z_J53(|DF9M{*Mkw+Ciq+3LHsYpE@DWOdjJP5ASfU2qKCEfWZo1D9DTxCLlgFMKb5b zH|7s8h|a)ad|r}9dELTc{z-n!A3(1MtxXeS(>OB}nl|O<)Xr(1?PiFK%kv1zH)2egGI^{c@w+)6*u z`;=BoR2mtP1!kFNODNRC^v(w_lupwUWQi*iY9fch)t9P9%d~&bD|JeeuD?2(wdGQ6 z*X+24Pu>h@#Wxn#%P-0jB_d=M1I3k{Eyqxi3Dd+&&;y%42G!}K*(Y`#A`2{;ABkPJ zZz%SVTWr?6VH6B04?1zt-*xL?XbR?IB~$>>-_sELl9)z2`!4CUnb zN|>z`h+OEk<{)5cZfrlGyGa=k)(BFM81r*bTvg0p<$??u`RLOE#KZK?4t_j-Q*Ou_$plEs7G5Rm6Emv2l5_tLy5ZQfXa=4w&xh2Rv&b+2JU9 zS%$P)Sx)htD5u;3m4*n#mtJMZFC|~na@I(8)s>?qHFug!n^9jaAxeYnqkG}KmjIW- zN&0P?Huof+2-)bkPt!Q{KoXzGC{?49*cfLQgpVM_(?4l*k_6IzT8NcnQjYoQ3Ll`m zGKkAk_iRuiwk_~x8{d`ukev3AEEdD@A)@}_a<`YZz2N0gXhy#r*f}?mat`3ZZTgPQ zuxu45Bp`gpJVz7T8L+gg>WNMDJsuL4MpLt;^=4p&(6#kub03Z^Iu^@6`+(gwR`937 zgTilu4W>c&w7Tq~5-5^!xxOPRp_U%p$IjZ96ONB*5eIbbyi=mIpR*4LlhS$UL}_}W zu9;uTv0wD@wi_gtVw5+Yo^OnEWeqpj!w~I}0xa3AC_aI@K=h{SHVAuQhU{SqOYg zxk2^1x{hP?eT($*J88RuD>tw(wECOwZ*8yVwRGAyFFlhZIWY=T3ao*2dO~R7d$cTj zRTd(uPt&{vl64b zjabbX&W$ukr#96X^u(S!EQ+!w@SZVK4B?(u)f|ex?lW=0P_y|C^cF!wg0i`rsXvPt z9SS$&GA$>GGgI*zKK1#R;XSCnkf;1N&=m;ve`Cpi57GaHCI3~P|0_iQH`Zk(tM$$G zMDpI6g(JgWsFl{s?D@GFQY9Scj!!cN%#g{Cwi^s}DICVU&atfg3GfFtRYfx$E!lQA zQRNTWV}}!m@JV{cbn&#?)a&c{1*dQO2xTZCHwf}j%P3h(w9u9o7PD&`l9LhD_y~jO zx%Dv281#MX8s>YZRa;goBIqVv2^jaVHSY*69XRs!h+ax%EB3L_iZxrOSNm*U_)FI@ z=s}QX;(o#;oK!Jpi}rAGZ6Dq-ENhvZ2$yxxAB*5H&A@UGz3NlT)(nAa-tBE}-ns#& zl9b+xa7lk2@pBim# z_c~moR;%7Ky1Ghn7eN35XLsjxM6~4wsn%FvU%+%-kZMtNRQeA;N@cNpy>df$A=QY> zwt_=B6?28ik6+$?+Msk16p@pP%G2cz%Fs#q{X8f9y(I2ck`Si;4QmyH#fl6-ApF?) zKZJc#d?(MF?j)Jmb~3STPi)(^ZSx!3wrx#p+qSIBGCecetA=7Ez)hGa&f}!g+#@XL@D(EeE{aZ@@j3NV&yq7dVXxg zbDhRQ5leLsIf}DL?Is)y{{5a|m8Y;YxC0A=(oitVkHRY657EBBMvK*YUka(*9y`c|a= z?!U;yCYE+{u-`jI;{O+K?w=52{4cwJ|A-Y6`F8&Qf6^7A6trcL`M(b?Y&0n}Ny5m@ z_=OBQ5SCq~Q7fWYew_*6htc(46{0(?jcW)r(LH-MLcNsX!rZ7S2 z%;{I4l=4waO!qS{`}NOqS+C0yT>p=yqT*DWt(=fGkgKIAZW24|>E$zNwCvIsx$K`p zXZ_GD{@_(lBq`J5?eZ8Bli1Wz33@Ij>5>;5CUJ2~7TmWLBYQa9M8Vo+a)z*m; zE3**CR2+ZqQ!!a(9Yd>xc4aF(V>-J4_)J|e*@iWwJ@|F&y7L|m^BXn%YRqi)jlr6@ z#d&hI2QM*|_V0f_rasBksoj6?3W7tFG?#M^eAAJB|F;-n`Tt==(b>?@*!Vle=^r5+ zQ3~r8$nq%KWNE~#GK~uw)+`nkgGPxm+flPfbVBJ0nOF#399bMeacNA(w9WX3fuMoE z_BuWzeScM_g(%GZI_%lXXj<0!+xPnM{8#ozhFVQQIG1DTj*ZRLp-EFn6V??p#@xMu z|KnxMT>^K#;3;@>jUuXL(%Of3t#GtNJQ=Vt+rv*ZsAgO-p8722r^m1|g$t;#?jEmv z16?pdR5G8!?MGb%AEKEPVNUTPnNY?NrNil(sTlZBT+!UM+ol{BP_Qa!Y5Q*XFYX0A zhZda!3jd1rZWS)|)|x$@HhhG#7@5VNc+G3*TD)}U!usSawzcdO8SMgrnJtu)2Hta> z8y5G(&SYZ-s$F;YSC&(HwyybSM%5LGC7mgv)tqAPHBnj%1HgExrMvL}jswGj6i(!3!iC zsmAn&fNleC;nQ(*^QIrV^IHRVFc$9V?SdTvnoOlb#}sFtYwLpslmFr%LhpItA8Z@Y|(_2V0d#E0USV1f~gMt3mH}B*+ z2eX=GZDI-wA4InYgbV@r<|O9qgJamD6Gtr!pf`+mv6)WsI8JZAe%_z6{To(#hUV2# zW^qE37&VM58ByFZEJ95G4!<+;*&EUlsZtU(A`Ly-MBwg)F>e~w2Cy5M9aypLS)9Cy zNU{_b1i)dW4&RWYYTT95IZ+}zpLCJ9#pEqXDp|BLdgB@Q$kx|RWEV00Q^nl1F-zW?M}Ii08U5GThtdMZM~uXp?P0E90Tq!iNk5YK)T z-Z|aEHNUYOb}ybPRe_CKv6-i=^iDkQzmjB_R{Zt3Q$VNGD#;dcWAlV=*hYD#R$&0v zpsaM`mxoMTmtk^dGR4eF^i1~wQw1ri2ZBCsQ+COr}~`6Xc*1SHYdYFg9MA z4;B)tgia40amI;-f{$D;t<98}(mtJ)Z^%Vb;sv|3*(#8?-Wl*1Jas}RXBA6$liui3 z>JupZaAE``Ym=lx&NSxoj1(Nv(X0UHfr4Jg9Bh&G#s5gb`C2*t=U;~tGmE4dUEj!% z{cn-+Uw1Q#ic;Svcs7o9whm7JzUqvU>y_yLjo_U@Djii;6<|7>z%clTHyij1qAm>E z^QO5`|_Yz5F#= z6ZMMeqsxiiUB!$1p|ea&^m}H8Z6F}~a_!7wz`Xko3~i?twcd+HN2z0v!fu0G?M%8> z4M3Rt>Ud9z7R_8FOa zo@vX%V$T|r)i1!SihOK;>_Dqxw&%6A4+>|W*D8ig<-RwlrPViBH1v~}w!XO9;dg|Z zHF^q%UIK!a))bHG%3#t)Yj{Kji@h`>H)ZwV9;fv8b6~&Ri|E{vN^evGG+Q^T0nrc} z+ZTH(;M{~Z`vy_kmCj+#23>=p>+X-R>8*hb8)bkF=GihpluO+x?UhSU!=4g2H_=sH z#3Y;>KSZ`OT}BTY?bZCihn8(qEKe=~oTVD+z!Meu^Hl_I**PYvT27|Elbvmu~P zh5C3d9KRE6z_Z2Q!uZ8M0$cGaM+;i<1lCAH*AD4BChYaX`~@7?(eb2@ICnHv_Lb6x z3lA;ped( z98k?^iF;l}D1Bs=g8nI(M0$_i*(;Y+Q#85EIFD`xHxq)W(B@c7x3D&+gj8Ap7y750 zVrGx(86492s8a}7QNkoymLK7sG|tULIa`UtTZV*2RRBY9t9ZuBR*;Iwq7oa~%G!pt zaP3bg>kK>L%9_y~`3i;w9>c2cHFO9iX^cKD1eQ}03rh>u%r369g?8)A@?HfK7$KLW zRM~hvclw>pWVBz zh-0na*b$>e*A_Y@Jk<|@n#^5*kT_RV@Yom!Mp)dcC5W_iw+6^G|AgKTQK8kqqdDb4 z<-=sSdn|@YC#)>Ynngxac6ASrn_M80;T1_nqDV7u2m0ou!M{?uE39W^n}qv?S@=4y zbLpDEdB3f5^N2gg^M87gbG1?dH5_3*uq-MEb*bn~^-lG&(dJq1Rh2iv0+HsZ2~;r` z7{?j6rW^UrSkxoWc}r$=NjocQ0#{8ARHGmvGY}}@VsHU?Mtd>^+ohgNhXPoAXMSEK zATxxjRqW!LLw`sgz)wG|9+D%C5$X#1QEn4fBbCEU@3NFM{uJA5PF^#~2NW;33+m{Y zzvNL*^HaSBMv!9LY0wiIi{`E_8-=G{u*NyT@aPjU+t*>e1@@{K=ok{!g)NMm#jn>y zI2HZ;h?<0zj}7wNbxUNjMOqFqBAOAQt2!%uJo6~WAB`a`T%x^Oq>V;Y3+GeAq<=_~ z&JH8gT{o*;QUDIh1B8hgbzmmD!Y0$gzNQC+c+|28r4t+8ArJ%_>#yuB%@Bq=ernW| z$x;H*k(^rYTVhkAAC*EiHZQytzpNs1R8W?iDz&&}1aNoxjsD`OhdgzovpF<~h(6v2 z<4$)O$IuNXK6W|9Gu9?si`bz@*?>548X$fPqgnV69~Cqm`Yx1yZjZ7k~M6NObR{Zs3(E z!B4pdZpuPq14V6afR1G!$Z6Bp;e4?-NsMkMM1}A&QT<1k4vZs$hi`$a3-n!CUL!i;`Ba|GCK#n)ZDMa?c$Rz{z${I>DBmAvwbcrHPi zF3%RJuw%*ddRt%|0|Oh5SHyvO#mW%8lIyvQI>Se{{eAwz0&V|02Di1~Wh0`qDWVE> zV=41F?c_5~NMC(Kbz^Q%8|_>UAp|EAO^ULbl7_puu`F4@HUe_El4q25+*zG~>e8W| z)^umMoja}dm+2U#&bgqr%DoN~5wC+sWMvM6lZ%KugY9PFoEZWkM}!AyiZo4C`IM>r z-u}x^4i^y8W=}GzCo2xoloEO-#)2bxENSMy1NG#b9U}-%QPE!poM7+b=~7w%VZ}Xb z2k>;P*x3~5W zepkg`2c(faV9uRC=@#u#tCwyaXtVdLp7>VGQi&}K+A|~I8ys^xd1{R=fPG76rvY}d zio1wxr%x;5#*3)Ns70K-F?1&{SlGRMt!}v6Gq<*G6|~2rubkbZlBxrQyQKn^_H3cD zkXOM&482`Fs^`YaaMVtkrckc9tIWZQN4Z=M8nd^ITMMX4BZ`OS5dFy4k?4%FzZeX9 zfN{B2UUh<18z^(C$C*}?VIpVcpW}s@#}N>bEdZf;U7Wn*RthrN$|_a+qOID)vNwtb zHWzU2^qplSJ`Ti{_RtsgD#Il(9rPf%-_DO{E#mpnS*`NJux_Ezu6x>zLWd8hOit>< z<3*y={0$WBU>Z)R3DC~!bfamo5{0xVQzKQvkuq`{$BA`M(|la zDwckPHa<-FfQiht<{s<^RJ?+5Qp}lKVK2yD;k>i}WAg1VI~1Qg*gwB<2o2O}oK~r) z3E{WIjurVNQ&i343M)Y1&5iZtv_n$+R8~V`y<52_Xj4ucC>q{J)RO678smB5C@|j4 z^#)R4MVYD^z1lU0pKovp6R;OlIiuc6N1fT*hj4PqU#s_pa#h`WVA@UCDthZ{rvZHF zXKt`M72^$u9PQky*`Yr+)V2h+$}9d*?jh~w5qk9T)GN7U9o>? z4KT|oyBZPxJsx-eSODG%qD!wK z0Nm!Fm>!~9A$tI=mmCU_lZ0v093cgCi?>x91&t1gj2ge8$Ny+bBVj7vT%3TSFb-ly;BGT^1v(F^!G%YJ5#+V31dmk?1AVNM4SM#wn63Bn%vp@0MG;!b32 zd`F7A&Enu6|Jzb93sJGEA&<)}bBzO?Nk*mLz!lR%eJG=l;k;)$Cle`zCS6ekF3H_y zKRo*3&BQ%|cHKCX_G<`_8cy5#VvlE*MEyh!^r4eI>Nj{m2l1>C(XJkhFe$43PmsNo zrYX(3abpd24{9jwEy@Vb87myjNHrU6r~$&!)3R;oPUovPw4CYG-YsfiPCJXf-Bwtb zC}DK<>D*u0FZ%K(7zOqNgVrakM9o+wC7jyVnQk(fPowJ`eC?_>wR>7t8vxnizqm&_F$^30UVrB!xH~!(Q(Q-7rj&V? zZdtYZJ!}SGh(M}X;7{x;^$!xmD()ppWb+y{MX2}7BG^N7?ALI~c1B=pGGt$<`_xD- zH9bc3sleF^0PZzx!PBpGc}8y2_qOVaS+*2)mT!IHIMRU(wIGIN23d^PWcwqSc5?6K zP_vj+V3HEX3(4dh3D}3Ej7_)gof)pt$jTeV}q6@BcL#nsa?YDBvlm7v?i6p^PW*__0G6D1pkwV;ODQ>;+=CfU-s7+2Qbjgm%$RfP zX5uA0x}yAS-#oImdAjYA+tO|CVW9D|{S@@4kD#$gAC*>QmVM4zlrVi~+~@5cu+*|( zRqLz+?>~5yaFWNFx}Q)~nSi8ncw90x%4~CcsQa~OA#73}!UgCcjojqZ4SF0;^Gx+N zAx#y*W7JR6~((?hQZAg*7Z3m5?SA+3eekI z@85k-oTWnaS$l~``(v+KSDVKoRw)YyN|*xcC1^dN3=q$>rsM$Qf$KgZH^2FtdN+?m z{o=c5NNrPz){PT2-+c-_MQq5I`E+aTW&h$f5vq#>sMGJRndJI8job-!Tm3iH-E08q z6?Sy_z>=VNdXz%a?eJrn3wbmDKL7Z$rsk~R+TkmQ7?bT`vY6G=5*^zgvDeYfUR0G$ zy7+>=PyGCLL7@H?JZjtr%|lz;Jg{a~uC7u@Aji7A3zRQ2lF0@=v^``Oy!%(1bGkOR znT|*S5NoP zsn^jNTcMZW;uLbj;$)H#Vsxg60P%>^hoW0G4p#p#c-vEXJo>{UPr-D8JXT#0P|SP# zAsL<{bigqJ-I4ij%YYa&M#_!1!;9_$9h%lpWu)Qd^0Bnat)X#!c5(VFMbO=F_Z_{W z@^HN1Nebq!IZj|zVxPM+@qXPqOlmcs#L7Yt&kGVO83V`caXu(|ntFDpSS+E!-LHzz z-LD?5Hn`m$cdMRWhWQ6ZMX$Uy;fc=zq|QfDHz-+v35}1gRkZ$2WOO8xF|Ld8Jp5&= zrwliSoeiOYTGAwbTxvC$$Y`S-5<1*HPx5bavG;d(vrqFv%;fRo>4euz<8%qHPx?Is zMt0^S!LEU+=;`qkc_-_GoK8E^zUp?-i#q0NYW|eC!WDLYy5{&~qcGtA8WBIR~hSA2Jq%jto;^g;)`ty-;I1Q6{nd+M@*hxG)2Ut-wF(`ELRVy&-)R zna`5k>g06;Qm`H=wX7FX)E^I3yo2RI{`|&zRCa5c^@Y{3Tv%3jt8Tg3)@!nDJj=K- zDd--=vTZqo3yki5htOMaI$=I*VvcT&*8c_AS=zq@dk5?6FTEbEO3Il-~K^4psTV4ieuB4aL`$-e3ndSvNnD z!d!t}I1E_lzb))&4m^un?;Q%xf}Y%$T7!%3?8-fK=65I}%K>UY0h>_3WNd+cxQvbO zfL5?ylNxOP&Q1x?eQsTeu3Uwsk?A3vHn3)s5UQ|08>zW|@+%s;M-3^aM< za7#X)Hhqk8FeZJ-cR;kShH%0Fm%)G+?J=6mOVIn3*iU~WNSg^sq|XrP4;Ek+WB~CS z^JgBOKrL``k993db3exoR3@};k9*K7kk`y!^^d`wzk=D;Gciw-%IHShVEsG~t9;2G z7F3=7L`2vta34rA*s*5mf9>XnF8urtsdM<3c6c!kAPq64n9NVehZqM21mp(F9YQ+s zV^6lB*7ZsU8-V8s{3HoLRC?>|Fr@;=^B}8=kdReL0HNV176`5x+F&S zhJeyXp9mE-d&nDzw0kfbm=D^;JX;Nh*Sz^K{|-V-N+krwF zGf6D0pkPYCx$GiE>6qbwij!Jb-i&C30bqhAV!Ed7^2GSWPN!Ikcu;p4+us<97+EB) z-b~9rr9PmG<&DWcWNdyJn=YHZSaboRY%_&+o*QNoE!+4IbTS8*Vn}yFI}De~o`>uv z?ksSnV;9R|>gqS??$t(ZbOl?$%b1PKNidp_u?ah<-t6K4UwD(yo>w>%cX;AwRKbz9 zn2W20XKIcvWghC3&dvhE8A^_d7vqQp>nvAjpUe<>BIqb%MFvtd$tjx;>z;YIDK`tG zj`q|4PR@8j&W&;7(q85|1T%P4eH62=4Q?(Hw5nU%j*&snB(58}+(N6pp&i=~RI`JKsz61KGRiS+cB}VcZI3Qaybwc-^x|F{fCB*@wHfp8=*%bX0o1h7qDnfxR zU^1z_ggmOaAKemQxM^3u(Md76&m9F}8+y+(HUE{_EMJYX3TiqaXT}OI45bJ}m!{OC zD10g<{Fa>`iKk@bmZ=jM&Q)f}FD*Z(^O7;Fj(vn*qje!MHt9-1T*t}UL3@LG+8A3G z4(d=yHHxFL0wkVK-qPE_It$yo6QwMCZU*HpL^H z#v?YV#2Oe45BM~opD0Cye*VC?~v3EfaO5m-QvA8z+EGlYmBs9*;N2lm{KTR0TbjxV{# zB@@P0kD@a|aYr!|OxJ+pJrebXN+xvs)=0^Yl+=*LWXI|v%5f&DWCx+L*DEs=*^U=& zADA1_`()5VOUTzW51+1YFp-UQ7t3NZSkexfwg^TKljE=C4P+;ZZa($BbAVe;{g^Cy z!aH2eU=DfUJBTd`))uisEDQvfkZ-3lOz*l7Z8ajYT^0F|b3O`Nm_(=I#E^_Vrwt0M zTMNW)*Phh|A#LB^0gFyutr*QgnpSD69$I^Nmx!uXL2iGpLEgRBhLTPRz&_?U#kF7{^zvy)#rU9edF#alv9_0Yg9Q%5%JmNA(tknZjuqC8+UxI0Ha zk|m`v52KjO-dKUvi7R}z&u<`qdD>zG`duL0@0tav(5)L6kkm_OEF{e_v2@lz$Dxv_ zi$F+c@=eL^l8+zkZZQw`_Hmj7VvnEX9`09osN|n38wKfN9NTuQ<2gtmocp2jkG$Ug z_+=>RzWmTy0Hr!TH#nWO7Qx)W)dla&fT z2`Snz3b{6nFTu84P|U6LHSq|G4_M9szyo}c`Dw~Ho#g{ z$6Qqc<&|oFNllHe0Z_jGp6J~kph$#YgixM9g=3I43R8r&tdr+N`Hj9huK3cJG`c0| z9xm|6z31r({(T-^E45o&kfHU$nv0U_H)MmmO$V~24juRgXbKS)PP}7PkdQcD4$7+8 zf;>gV=AT?w9If9VZkemc%7j2|lmgAPT412)xCzjv{vo}+TfCs(B zvCf~oD^Mz?oGVSw+{muWkH;OXwd?{^6w{e{m!FXPXIVa~2Y}Tsq9~Ruxp#KYiX7#* zhuxl53hB6)xsGs3l?Qv&&X#cKMk2WJLK`KuJeHsXE`zgQM;lD*u5Ls`CP9i&x@g&^SRGz8Vhgfn4$)CM+2C$tc$D2H;4t2S^S}ZAeYf#{QL!teYPK!rAxyL`lo{nd>m2d=X&HL`oia9eEYF#Rr@nSzIoC zGLTtzTGjV?S+x1ZcrKO0}=}z zD(rt)1R95sw)DCqZl*$*52Uh<)O3maT+$c}aTS7J$IE)c%OG6$i|>J?lJF8Y{Dqi8 zz!xN1wBA!>*YpA#A53XnMZYDnY?z**tR#Xi6kkZafMKuo5^(W=GS*%_jdsqp&z&4& zb;<-W4|zX;+y5Qcy$4rIfx^|XQ(`!NXdnl-^snLJN% z)yon;DOUXNOWMzOe7V7z0}&shhc|6bdI9PmVpc=z_&mUkW2fSq&G}DbC_pKFR3XxzR0A6Str z-y9g+cctv1-@CdjDZQuz1;kjdY00P9I)`N^l!aKV$MdM!+~dnq7qXUBftwvWm}9=# zhx;^TdybnoUU33S-M{a3H{j?ff}3U3CPf>GM{~xtDYK3n*ZsRSwaUAob&j-1H#b4Q z6wO?_6$*`4mw)4@q#LVF?eI?)jZp)y+a7?|G-JC96GwLrsdtXG&GNlS?$<2$tIx3q zcmYJWcl_CoTg6Vd%PAC|am{v(dQGl+q_Wh+DR&KDRE5OTbMfnFLx(~H`O=_8$G9=5 z@5L#g#3)4K2_r)!IKX6*gXL&qg0VQzj>h-J2!?tIIq=ZNArTUhceUKPGwEdgB8(Zd zh{*UuGhxn+DY&Uh`ZAcG4b{PN#uN4i?ljc027Knp!kiAUD`Vqmitke5=)1M?cnP*m zv{*Y6$Su9t;#r1%r_e`t4SlC&h+Qu#T@<}LKV#X=Ko->}AoW|{Oyl18kl-FD-j6!E z_JSW~O}Iiu;yYMi>zoql00<9AcX(F$bP9;xRWoSS!!ktAgnVZp_3@ zI2}-81kFtrcoSt6jDIqdNd4Usw*h;O-_O#}^=P>hM8~4$X@Ri10$*CzA>KknLD z=q;kEXj4F;5{v4Z364GN&%55oj~#ev1l|8Zu~1KU&wXP-y!MU2D~;C@_sW&vd^tM* zgQM7JC-s_DNDZA(JA%0Mkbp$}4z6o@$z(GDN36zmA9!g&bFMA2kS$Xh;=+K+c-GcFgz(4Go{#nfA{Hy z*NK+~K5a^Y={D(cGWZCOP2R+KuBb8H_Ob0Rb!q29cf$%JWhx-%m>99~t&tMOk4I?b8-4=tkt+Gxd20TJ-i>TeRb zjtvU!^oQ~b6)MGg$^H%>{xL@S7SwV&Di#>zs0|ADQojOKD}lPw(iPnv*U1~@n!scp z$lsxk6($t2Y6|ODrWz*# z%tPwtb{*6*C#WU0l8R!&-E7t*lWit+e0P*}R)m(&gp=*njI05%P3j{m86zs9aUAdw zR?dV*6_}V2j#ka~H!uJevHcH^&X|8RGGO>ZdN!Wo>GO}e9z*JwuQWFK!Ze*y9kFsNA4}`BV4kx=m8a< z>SF+1qWMMUluq7WGJ{c$lp@f$nNbK%DP#z{y`E8IN)^gD z%OMknLf8SoD3e_hnX)YBUBSq|RV|gcUgo2~q0?QFI0BzEddFm3{w|+J`c;uxxRT^R zBAr(Kplm`en3yKf%_zzt!XZo{Z;=RPT&++vp(voFo10mzRghWjL~crcj#6`nu}DYm zJjN9+`>Lc~>Q%H*Q8p&flrvY_o~x*s=d%Cavk+XjR)7G5%LD{QMv(9#lk($p8VAYZh~CAZCvyD) zIK=3TiJTNz1^A3@?i9CXl~@5Z->todISI&}B8!oM>xpnS;0*WPN9C7*Xpvu8xYr>R z1*P!~BeWpr2lTa56;DSer(|O*5fB2edv@1hZG~&IAv>uQ9A&62pitKyG+O)G1tr~- zn_(T-cU#%l?g$$XMa`(fMCK9W=&>9JvjIdz4bi-A$G9 zGDe#;!+f%Bul+5xS7b_vnW9t&R6CsL;eGv5`5dgcYpoM$;0^w^Lm74%_n+ZOJUfcn zK_bRVJ92R{jnbh><_q^Dg={s+?wzdLxahqqYd$0nC#Ux7IcP93E7&% z#>p}h^Ufl?7>A<2thiuchrYBz?0G@gQM7-CCb-HQ&CP;KhlhJ=$=b)r)~ZytI_?kh z?B*)>1(-4^Gr(r?47^~fZyo1S>I#J4p{AWJ)Bk=2BcdsJOZ48%K?AMa`>sci4$UjW0!!HDtQ(N@crwvZ=%k6u`~5 zk}5I%R?Ld6HW9#Qfd(t@+Er_Ums0#IP_zbbQud*r$N2+GiS6eizg@QnidGq1u;!vZ zBI!iQr=@JXWgQFJLqeio!nlyMk0-X071WFeYGM^iTi@$4Z-@**V*9l;`Y}sOZrY z^D4knJ9aD3lGRp-)tnD0QqHy_uFV9qSlRx~P34v{X?tZt^(395InLof^c-;U0ULC` zovuq`=fhGTK?Y2|4jIp9dd>4q-pZl$DssV9vedftL3UzgiwwWBQ97Y=G*pFRw#5s4`rIG06a_7gy;B4agU*_&R-!WV2DMk&V@LhXkEv>n z9ad)W_g!WR8anf|v6J5blQuCz)?aK(7e@4CV2guF)BZ~Gux>Xp5r zddF)c*@h(&Gvkl72y?1Pvf8mi+H#+f)rPZi28EHI4&{CX#wgQ)FkFbp71M?sJR79f z?fNOBsOm4PEzN3=*;uC9!*P~WtJMWXt6UQTd)8Dd-UZiOy4+9usInru^j6=F_Ed4c z!{W@-S+*r}^$PbQ)P>xgm+<6zCh{WRh3%to?XSBydDGDjYJKK?(B5JY^7i9Np+(>J zE;(?)CNuYHK>SRQJ!!+H(%^&Yog1v6%8Dt0u>22*g6nP?aoynNN^Qw79q=MqPc^T& z=8>+ycSwx}M08ywMaICn!R^{I^0>A3N@_NK*G%-^;PkP&1IPEiKD+whU9)f;X>E)X zKb$v7m&^)?ye;UzW$ls6% zJPM#SpYQ^@pUWPVgSzF>0=l^qI%!?7wwNOiuFC+7XkaqjkY-$qk9gh>i#XH!{v*P1wP;h1BC4S6Hl8j?a4?8f9((q0# z@zq(MCsOy*Hf^`3%uetd9G&C!!>5KAfJ8!i%@4B;78j?(6XmmW-#77=B6J0FS-xZm8gJ?(@zY`X zQ!%+{wK#@ z)!I&J5!1)!Y5z*cCRut1IPNzR!s>+yq>@$~yk%b~tVk`f9*9z>c(pylsuu`_4Yr4-kqx$lbaWsVG&^;@UwH7S9555DJA z+x2()?FaWYhv%-ZZ8k_P4&Op-j|^%Dvy#3mLd31Q`X)g?9_CeIuhMKq9{dMZKrOSw zW|97n56Y`01ObIX9a#Mf75kVF4Hydy0SRG^K>yue9K2)|k>Qo44S_2kUd6%1vC`gu)-a#O0`+d0P*&(&04!VR z9twQ@=JcmX&%~6`*m@N9Q6tT!!8I1;4+pnZ(Hkmtq|;MTs76DZ(s`_SVIjxHS~BJc ztU85f)bELvl)OG#t^_Gqa(Y6Nsz4Kq+$JHX)?}4j)uRR0tz}c#^-(9vioJ?=mz(wH zbu{lgVV5T8c|vsBG@GQXW~rf#KP;y3$5w>uN3ns8xdEqH17oRyQ$92NHVyNF#&i+{ zdTNBYGERgU#^toPZ8Gx^#~lu4HsghtPP!T>r7!8>HB@qwmDrgg8oug?jPS`YO0`!K zv^qfMi^iRQ0!p)+CL=f1n~e?+-!IJY*zO6>Q(LQ@Xy;9>B_w#1Q~Fz^TAeri7NPnS zp_NWDoV8+VZF{*n z-bmTnezE(c#LC8icifdNfdKS;6BT>XfPyWZx& z3<^fQZmsM{>D;G%i4I!2!BS#cb3x?EL_miA(~`hplMZP9A7zt;q+zEAWuAg{M zIV{5}psGz3Rl3J5Nk2`vg6s*hMs9-O0xagJ#(E2IY#`bgvPInb4QgO%INp(p7=@aL zPH&1+S`>CxCf1|`ZguE}?PRr|Pz-%pC^oWm-vWfK-JdKMY6i~Mo}#FY66dV%;Bz|Dj928@J`R;wNcYis}lhyv9j8z^S10}Kd* zGDF$h}r! z!rzoDp7?;dQ$_rdsP<&rk!9GyI@XK8-dt(>8K}NbQjHeXH1nJg@{C!kGs@q0EdIg+ z_zeU<6xq`RxhQvE%C=zl2mvFr1|bll5m?v13r;#(v3mlcVz0p%fSO526y{)o*J~gH zE{YQ-OcJ(ac?1GgNHt@%sv(cqKu;r6S$2CVUTxzn0%?Ie5qQiQe8{mYT@9 z1%F5N9oQECi~bq(wMQp`$}0!_VkgnwK6WZFa5>}ANaA9XSdCWabXN8T!4$@Unzt?- zR*wiFKrRwSNcfW?-<@)ZPcF(=rhnzifZCD40(2iHA1cfNtd3G@@Rg0O^h>IDH)48_ z<1*W&!K;y@g}C$fhJRG~13T$;t`S_&oLyB^kI#R})kT15)}SDM{Md&7KXq^aY%B2o zv$jIY+{xHM-|F9$gFG_hP<_8)GR>U5iQH!S%;>6Jr=bF70{6UWBCO0iiZ;t%%<r1SeNt5&H;`QbaZ3 z-#i-BJorYJ88)*{cKe_vgj(Ed*Xtpbo4!F1VfCFa|d%SIl^&Y!5OP-096u ztrh<4P2n#eMNx`w5-!=%O4%QXf2wx5I8Am+qfgl>hh;l%zisgvB>SJ8ly+=@rXgOs z{qW6R@*?@>ZuaFlc)6-Po{%@2^@J9g{?VJ3sz<6Bz^xZ+?~eyB%EIceOE?#U`y*F*ty2~ z%roTqq=@h}e`$#}QO}HE1MMW)u?D(^c!?=}|C68a1u)-QyvYtQv?NATCAVpv@vZwq zdI0ab#5`QkYjjw`nYSupT3F^=Cn9~w3|-*odTHhmVyyOHBxIQ*VPMHp_k z5v6eH0rI5c+rnccVrUMc!Dht>bR(7s?0%z{f)V-F-WKl5nbc`u*l!V>IqBTtAWn}R zMW@I<&!zSBV6E=VejM{KE7pt=4K}&5yR&bNlCfVW#$~NA0}q`M9bQFa(lFRfGJxZ~ zNCH^TgT=VxFMun3_aK^@Iz`BVXm!vInn1=ILTxNZTgtyzGUWpz}apTPxqfHeyWC zcv(=?HpGL_lU{1|R9(%sPaMDR8Z)P7=%7b8Gc(Ue*2zIdY~n_N5bn_DFVEG;IRp29 z$XzQa_P=S-Km?uVE@lvgoAqenB>Ih+(hm{&itX!_o$7x9ZNk^< z5ef}~gT~GeY60*G7I447rb?QsjV~!m%yUqp-DAU*wmYFuRBVNAfC`M=Ljvvc!-Cd| zwq!2E7>lNY9_T@n{k#q;E9C}Srp%I6%7=C`DDPdrg<;V+U?Ry0gM%{n_s6GIO11ws zy4d6VoC%MD*#b`R`X&aUlGpHALOVOFFEaU<7u8fw2&4_pR2@PH=u58L3dwX=l^3yy zE*Py$5`tMg^kk^EWV7Z#U=Pj0?~YvLqc+8`Af)xBj?}`N;h<8W6>QF&C3_HE2$_w5 z0VRNOr(E<|2y7CkW>Ye15m8ixX_1~zs|V`ZnjXFm!y=hvY0(sA42syIW}+jg9M4y;(G<_o`0o56}QQqNxP`Un97iBho0$4&5#L^ z$>3q(V_Rsne3MZ!jWU|arTzFuvK~k26}0HjL&)xh9~G^&*5uBz)HaM7k>A425>J#R zeq;2?k&iT^7>V^_vX*qf&;&d3N(jbD?3|Mkchj?ZtiQUl7HCXEthO3E(F(f7cqNzu zLzYX__^YEZ7S|#PMx704IA(vd9yV_Q_*!vMesyUocgaVw>-M*gKr|B%PnLK8~Y(Luralpt$VzO}~ z*8LfMx3p~fuvoiUvEH`Wv+yuL0-d=epq01DxEgklQ?fbf9I$r|PGX>`h`^lNE3fGR zdg8dL2QhDMa&yB)vHr0fL5y9>r2wA2L*w*qK~ySr1dpAwpuT3v#nUK3KdZh?lSs0WrS4UOh^mC8j=xsq zk$h={G{CTQ0VT#TFEx^G#|KW;b6Ws+*kuclT-S!q!K)0dwQEd=-OISs?v*=6r^PF& z5Vv?(`6o`$5>)fBdS*(H&e@~;hN%3$JzA_p-wNPlEfy@}DA^)l)ZP9H7-Lw8wm92a`GKQvG00|F<7^;^{@u=qF7jY^4pQ7-?I6VV8QoD5v zMN~w;_I0FoEF>aq%6LeAF%!zzUi3rrXFC8e!Re{cje!wUH8->d&jFK*b5WW#Dw@|i zH>{FsOvq+f7Z1|bQgjRmgL5S;I=UzwMypht(uy!hvf%?kK3J z1HU6CXN9@-pEqL)2d#sy(n)kj^a{#mNPW)`{^U$Uq#=039BT_tW~4Ai`nEEy zlr=_738tfMb@C`;c1{^#k3?EmoI0d>&%_m85u_gX12G7 zb$oMx)Hi4VbNEit*8Y54yA3NksqhZ7JSW7GjhFOIT#3#pk=^CCWxyWX(L#7c3$C+* z)RiD^$Rm@a%3apL=E0Di0!+14DZG5Ze!6zKdQ84BDfEh?$#K{Q*mCn&A;s{70*-|6e2&Q z+loC9Ul^qhM_B~AN|yopHf;#1)8o()rtB6zdS%SKhf>s~nkJ@$b$e(&hhDt!lNglv zWW)H)$M8}hw9L6o!{nljSY?UR)zGq1vEo}tKB@rOJL-Lk$P0KC|O zjSB3_2YR(*gN%jxB%f)^nk*43JeOv*0`87JDzhL zIe{=g?=~z@A(c2tOIA~Vc3j_nR)zRl-zk$M-=bOKCnx?sUZK;N;ISXQNoHYVc`ezl z_gY*G#kshPXXhg7EDi3kK!9!p-dmU>ptkM5U>!GhS;{;vR}yb{Ex5)J!h&j-(yrJ@ z(^Bm%Oub*kbX!;>$Yxjkm_G;5wj`T@=({E#Du6sSc?5=07~XgbE1u01R_Q~#+(WmO zi}t$nh*H6lt6(+gu-M7^-B_=ysUPZ%EBJyv>nOsiU~N}2xp2v0Zhuv9<;C${0V(M_ zaW+M^QP~>&LQ@$d(0PDBji;A5233sUGiZ@^`TD2!rx6N{pTFE~dEfjnP63QL3oXj~sf1V zb3AQ0`W)?TzI+Xx`*`1Yr!%@eR4WO3*510jK)5mT!Xt#U)X%M=2MW)~I=+8F;J~3+?*dG%xNns>Do$ zVl&OvsY3?9PP&{X5DQR74$qpztft8PrF&==Q0ck;M=O5-^2_q`R13n$#M1S>OEY9Vyzkjm&7blS9|Th)4~AY0>VMkV9rHz{5!)iS3*I7q~p1xQ~CBj^W%!A(9J^3w=1}3=teoXP4UA^dM+mo zpsfRvO$~IoZMV5WfzuO5qmtUOtCb4B>rQA)q24*7U+)I^^Fu>mKf|TsFd~Lo0aqdS z%h;~}s&`CLYVD{U6;iO*AfSWF97{2}a#lA}HieBG;@2x~(x>1c?j-Ua-H+U7oa*qa z)tBuHbDT=29IChJwYeTyoepkB>bk=vF1~Oq&TNm@Eaia-eHQJ zIq@rHhwkt3Pm1U8Qq0Z?re3Yr>jln3%%N>N6~b1phR56E#HB*#6nm0ej)kk5Te2Le zZ3c`zq#$GN(bJPhy+y(ekLJW@bIGu=!lfsQGU?IEKHZS5iibG);URO5JXwbDk;>W5 zW`tta9@}Na6i@oGl42#2i?SqbXHRg;>R8uS)MW>RWkMGozR73GfUS|#E)r_n+#C4G zNnvX7&5TP5s+KA<&+8#VZe!rhxuu^_mcBx0E5Mb4su{0J2m9VZocD~}WWUDsO~|Rr zAk#1HLLX}0Xc0}s`07sDuM=qci;0uA_#J@+)w)A};o#c1&p{I;z<3(f>Az2{P1os; zR~%kFBl*^DCGmDvALGB#4|GA-L*-{SFf{CuVE41Pv-PIv#jmA|Y7anLqyFeaoO^~= zy{6IWgEgt~o30r?$5NR)(rhMBKziewAUrh~-4f&Abmh&{-)3%!YQbd!zV zzixooJRs~sbOqRs0incW;C@$P!LirtbE2Rxml-R&S=e^7hBXB z=gZv_nmH5;KVZF?7h9^k?e!~fkia=d;{))IdI$eiahc-RI*S3&{}ih5|0z@nxH}p1 zJ2>dO|5fwxR@M}sMjv<){nx188rik3D{Ka{tmiDf zmE({&_K6VhxQ>H&K!!oZxF*vV=Jhy?tfHLEl0YjPUQ&Hz}3ilVt6{iRUvnRHacrmR=eeZa26=kC7Q%qo1Uia z9^;Zvy7~qi#)Sa4Ela&c1Xg8?q9Q;gYiO zu_H%ozl=@Cb@^w5=j%~UH~>*1G6Pj2ut{PMxKH)!RQn_wxbSuI)$FHxHx7{_G;;); zu@ud6!cAMG)PxB>RhhX9&SS~v4Xt({vTX7grx$WZ$Wb@wm){6GM?}#myFi5#~By5_4&%_ThalT|@1w(2yuhH^~J0uMPGB!cN-U31%KvEnTu3W;Mg-CI|q4=aj_E2Hy(m??-xyGRjuA? zpE#WX>X$yoWNr7EsXmj*9!fSYx?Wh)u-MVm(gmh54OiVJ6`ps}B_F>vOnYn-MB0B< zZVZV_Zq2DpYXcYsjm6x>{PM1SqfO0jq!sTUyI$Mr`;k}iJU|mqrWNi(8MHvEO43C^ zG0k4!Ckgpk(u&ym!(`C&D^B3_INL?flVzY2kcYo6P568XOiKbfyc_7N4~(NCQ=i>8o^h~f|rdYl!y1<%)! zXix%jD5iqOr~Zl;MRXAWrC;Ws{U5t?|K6wm$NK1hQJcTQMWrf)Q{p1ZhmOhQHP{dz z`~+|aIAa=s{;b*(YY?z#ogC5(FeLOSI#_&~y~$5tV|#x22$cp6J8>aM6@Gpaxl&2( zGo6NYj*D7aZJF3dx3&4f`T6<#_Rr60qxgyY`+H=WP0y#UcCV+dx68MqNnf5fZok#% zV5qwqF1$Uv4CveanqbCmLSDEI+wHV&wVLdq#?C?^ zqBzgl6S1w=>@gAB3}D$mUc}e^USyeL#_a^Qc}U8Oaoj}05@7GCR{G)|XHY><YXpiQ{|49Gq+Fxs3D`)=@GimB*KtRaq+G*M81rIKEs%k6;61bBSjfRb58CC=+uMrECk> znToKZSE*&hl@?k5nblTQZX&5ko(#?81t!B`$Jst*oF^1TNT6-HFqAD9kw?#lq`0=$ zSNEwGbc7ByB)qyi&ri%6YA9W+r%B#>9BdY2^R@2KsP%9kDlC-=71CN~ErI#oZD`7k ze8q4W65!1XEh;8#%&()wHN0`nL3+ziyi3 ztkohK@s;uGfg3_dE0(WOCYEae(9G4sgkimO`|H{BcMNta`aQsWa(6hmuX>;`b%Yd} zd`osngqXF$B2$BRLYo)P5szLvgDyG~*B>UT*tFZAIxuyHs9-zF^wFy3t}%5~Q&a0R zLCoqyU=iLCHfQ80Ryg68YWN9Pg4s|uIHN9!omKCUf7-)j2<^~x(DVu^AY$;bbOgHM zxXJd%+N<=xJ@e_`=KhfPYMgabrB55G+97)`4Y9PV3<)yYGtDi=wKDE#wG=0Oet`!T zsU(k*UbM<(xDd=^HkBQPPiGbqi|r^Y<%CxoRAwK2b*ZDDSZCnX)J>q}Wjv#hrPet$ z-M|OYZGuYREX;GYKJ_IUj-g|-s##R`<|GHy!MR9w?Z=H86hP34##kjp?`5>G)u*f$ z)FiEz;6^?(LQ4!%GQCo{oLT(UJ0+A$gcu!K78pQzmfxev-P>$pj{l?c2xNWTl5?`z zHmqxv_}*n5HM&-qB>$VKv`bnPds#K)P@uJVt455SfqDy3W@41`8H}*46yVJvy;J?{JIhz!l2rsZM=at_`g#5tBKzq zpkEmi9VR#X>`^$j@V|x@(>{?Cb+d%Bw;T{r)z#k*iuI9VJ~8%rd=Xv7*kwk@AXOZx zgA)vCkQks|N_xzEm|{qt4Fa+yW_SZoR8!{tTh@S~_SX$O_xxKaX!if8OgM2 z6L@itCJF8H-ohO?TpNP{usb0VKRgqS$g4hYPXlESb>#qeb)d4Dbf!+Yo|=+nHVgy4 zCt|S?gwul2{!+FXsW}s=X&%1!$Fu2o zv4NA{?w(-0n84~I7J$C=>UM0tFc*fxTm4zvpGGaV1v@}W-8ms}GuJ>Ht0Qwv(6UD{ zi67*@ENXp5%#BmJ7ROs-GhI|l@|+l60uDF$0YJl=C zlCOmZMhf_e_MC{m6)4BjMOKoTor$~I1!(zzrZthK`JMYnewP5f^3y)zEguh&UM)5g zb*Rhw5~Y5pw>oWsmvkU*Va3rMH)wu>r{uBGr8Du|Fz&qe+?e-ZSloMjGKe46UWDem@U@5ieaY-Y_@V|b3rpNh7!Mb|zbtgi5a%U8oP#(@c8=R!xNq`^ z2sFx{ooiILC}e<&e@Cb{hdNBkJ-MRLNAnJxY)Ewr3 z>CL`(V$T9zlcXH&8R*@6DE%Yz>K4!aRJSJkbAa{Dv@6$l2k1_<%gc9f{Oe7q*Qm=U zoP}%c5r&&B6BC-4v5kC;QM5Ez{S|W&9{RJ~(qL$mri#`6q-z836*7-9(Dm z>dX9kxL4A&?mBJM5x1y$YPCqdN_4M-ve*f^0ciyfX$8tBoZ5%s!=9WEHCT-}@F7VJ z1+a>Qo+7vvrN1_x-aN!awW`LcN>aM?@IkYhto~tSD(ksPsYHxwy&~o7J2G^Gv#rd4-a}8EtAa^^#*#+?;Y`ROsVtnkXpC+j&Bqb zJeSRCPD+j;>$)(ZZP@t>D5+)pc~?`2aV(-j`XW6!%pqPn6s@oh%P^(aBqWz}yc-<% zVU!P|RdX)Dcaj^HZy`B)ah1#L-GrKJGIx`#EJ9;e^pa*i+pWDg(>_tN%9X;btu>`l z;Mzuuj`F)*RdAY8NlOXeOx+ODnjJN_dQ6igGV*Mb>vCPFYp`$zy8QFP%;%l+P9)g- zJ0s6_->=gkwt>2PL{Q#@G(%FYFwwC*;&gXo?in&seRR_pHR9YYz*2u{fw!{hH?9SvIzz3sq{y|`O8<(%TEIP5 z_M9!g?9q27%T{sC)4k}A%-m9b+OB9r!z+EeE?tY=DhIm`_JG$d)A_CVP%3|#OQ{lD zGJ5(Wy$H74!C6STM08Q>AyuOYSCwi}ez7d3wDDA&a5Mgro+Pudi?|a*Hbq`T)^UH@ zP;tSOSA8y(=J8^Qm)*^12|?pG;h=MCgH>z8lwAjJN-|H%5)^iGVdIz-jX51^vuQg~ z%Gx+~bMfNuB8|M#Lzlxj&#b+e4G#_4&Sv(@iOQp?!YABeEQe$F=DU81(Cm(Gwjxil zLk!K(=2%^a4hkC1bt|?##`Vzq8iMJnkEB9g=hyUYs;3JL@&;{xj90tzbv+7&g>k(jxVyRaMZyJJ^L1e60NXaBd> z`|cd~`^LZo_WQ)ZH}BMnMiX=*AXPgbb9sj{O%qtTMsTSyASXgI2 z{`0o4-~aoTz}?Gzmu)?Uth>rR@$=fD?3F}oG-XR>S)4c3AVXP4gk*(@TGt~ar5*B*2DCQ;ME|&JOeueF+;-aS~bT? zc8{j{LLp3GO}k`j)whUd-RMaIEwX%Y6S6%$<|=$l-Jm?aR#4`VVBRa%Kzl~1=;$q> zF;7_?U3YmRgh<3kHw2SDk&z^FZb22b5Il1$D5Y%<{%gERxlK8Zh*@M0Cd8|Kx*MJf z>9;7L&1xt%$+emvIfq~TFi%IdqwGM_WPPsZ^S$4Xkf=?DQ-Z(N{_;7I$?bfd1O8WL z_y0bre|-1Duju4pZe#k_VbR1)TYMeXPgOKsvZj}-AKVzm_Kq_V;;m@M_A#bCxqbFywDaJWEt z=?3s8bM-K9Yas$>+J@iA^^KJcqu}ous{37wS577 zBSBkh>o0ftTLr}W$K;n{J#w(@i?R>4klbz`@b0%>b`e(tt+4cx0r=U~lsp0!CYm(7 zJ;`VKDlx5R0N%tK7XvMT49E5Pt8CBttDI>%fMGM_AA`wp>2V&o>+a|DN&*OCmmGxP zg(}m{s?g^#c^k`=Q7sYJmxF{{6}U^AS#N}bms*q<+VlnMV6cKk)noy^m|`Tj2ENn* zWW0|frOjY;zmwK+RTVvvK@_Ati}b5`>>6!DYwNsec{Fd+-pTtgqLCov&`;Ry2BVoN zq9u7xEVqs<9NrHj)P=Zk(>4$z$T4c8l+Yhj6jU1+8 zORHvSf}IOaq#VV^_nAu>%T}kb&xy=e@M+*7oyZF^wwLfW3AZ}-Ie&2|ME-_|=9YdQ zqvY)z$wAm6GG$V)e1-bMB-}!!Z(LvIIR1|&q4_62|Cc@faU+8Dk6#i3{K&z}Zue>* z1@CI|@W;|cGvRIH*F%Vq;Ul*`+^~!eQ&E{Y$HpE(0aZb?9)3DSY+;YsKcOB>F49=G zbUc}KzvJZq$kb#Af@X*`MJd&-Oc{jcVMp*e*y0DsSv57r$vj!@E$D}Xd@*qZ+;3*xjK8F*&?g_=^Nb<1l%W2uOXK{Iz$6stQ z#)LiPQGJs^ry4$*b0p5;d?L)8V~+!9?TP_Xbt)8Jy)yeU%L0i~R8_V%L$ukXA(A#9 zE(j3`k#R_W@b z|4uR(%K{Dof6!oNq>lU0MUS1CmGPkzJ=yK7DI1h!$={hrpsBq(Gd* zmw2k)D|Bb{o}Z8!T+6v;6B9#%f|B$Jj?N*t%uouio@`}1%D%hgahJ7yf&)mVM+)?3 zfZ4+&ZG-PMLROR~#!$=BuQTIdnYSdbA1bt#&|!nq9(JW3o?^Op?@QXCg<4LC;avSi zIFBnR+bf?vouqr{A}9o#jb@{Zr(5;)=AyKqyBB_JA_=1p33bB`EKG5L@0_^`oOL_ zpcD@dXQX2R=tMTXJ#a-?Rm4Yxgr8$2B6ZR=SQhB75QfAc4#e4T`#?1A>25p>b*-eF zU1urgFA}+URws@Fp(QS+M;YM8j;`Ro=^lad*;1DGJ)E_I=r$M$7wt9(T{fCgejCKt z5W7)be^!Jm&6qKwzUbrAiCy3N?g~{*!P=qEe-O+sj={A+zHYz>?;du#SaWxG z(oa}Rk_6&}M7J?57_P%5@f^-IlH{zA_2vAKal-TtaZ}BK3dtl&Vuu_C+R3{0mn8l* zpT~y$#wZaH106K{tFt^W71$`xyO*vt90jVJTs>8ERRF{idNJ+DM-sz=iDft&_FnFj zn)3Z5g8<`LXIq@bfP4W6miLr z@W0dBZ;wJH6>NZSO2&H9WoL?XZ2QB|=)r(c8B?JMcvCpk#?Gjjd_%&Re)few6}#I4 z2+}r++iUA9 zic98o@O@K#UpDosMp0Tt^YhPG=mN=U&Gu!7-GABQuMscwzs+p@+xB>K>;Ez1_4m*J zJAM7*^ZbHRe=#y|1^utC95N4`b$Zj1vrXkvYiWk!yiycBif~%YPy9s4O6cF)q0HV( zQKS^+lpoX}M|}K`t9T^YDZ$EXHo%t$S)NxMM_nD?eSJSbuK`pLKsKm*dW!rj2^q;k zH6b@y?KBA{T%k8mMnGfeKvXoqrc8%%IeU99hvLwnvmy2gZLcYCp(+|TW}1f+dLD6X z%{;r9>bS(Eoq3+V(QTrXq~8%gcuO$%^OB6w(EYdw-%6O}DrO@#phIWZ6qm;U!e~b7 zN2%``anPsUlR5S1=gz61PkpRPxXi?Hc0~tuEVK0ln~PSb?RwoElRppcUGW=rWXlw) z^13Lcx$~S{@@Dx0*8?JLF0mY!WJOS<8l^tWvRmGr^gg0mb|Zcb=htZF=_rWpbnXTH zrHn{EeT4DnLLJ{w#g$=#Yyp5r=uj-_OER-@2#07#l<|-xH_yS_Y-;%uLeL_6kjcBi z;X6WI=uCHQ&(T0j0QDa1o*?3P0gzav^uVLq~G<7#CX57^`+fF`katp1tuH{pW_L7M0E3Kd#$>|IwiP zJ8X#mEgb&=8wGPyGbcylKmYuNpWsAu#V`DXY}GJZlOwVQCl^v%@LPeX0;i;dhA*J5 zm-VyfCxoc=6;R9xqaJwXdC8G6m&)GlBbliGt8hygc z=>lL6NeqIGicG!UYYF1a1m_zNCoLArj0;OZoHB^emaac=l$v5{?b#mb~QP&LU}@WZfSifHI$K*m_jTQWmv=PktcGsVF(-FyU0GL{H`3sW&g7IP1hx ze0mzg?<%O&*=*dcIn|0XP62rw7E_S?pv+@)Cd1IxIYwCov(6-kXZ$AF>QHI$)xFqq z^wf!B0kwx`01V_3WL{^DY|AP^wj`OiUwjK`-PJG_<>R`FOtesDQ=lgb&-`g#@#z3B zhz|P`Nt@6FakxJ73`E4~OlrVyI|e^A;z{fY71a6yiE&?rCxe-Q8pmkCp_ z@qF$CSHAC1&(yC6I;w8zm!zVWvUL_F$COFM4@Byr6Wuj_I({T#7mc=4lO>LRTu<&t zkMp~gD~4VBo;`drwV(o+djWZFc)Qd~MDW7`?V+8abj&v}jC-g9!84%0Il7)* zmSJTnf=tZ@9T`6ZD!K}aMd=SO;0fw*e&^%Ow1oG_G{;tVhv11K+?DCxu;5F&@Cs^$ z$~LhPROX9U*?}HVn$~;8I_6l}H;qtb)>+v#jYVc!*G;WT$N;HsyZ{>pQ ze4L{Yq-0sWNs%AlTu=K-Ip>3qx1$PiW;IeOX`MBlu`k%$DyCX$dACNx`5+4;JGMqW zH=o?IpKh}}KYi@6_`V-1EfDPn!VN274@01k*-Hq6WGkL<(R{)_KfBIEGU-5<$|1xZ zx|{1<8>nTQ8e1(yI#QM$oLOY190s7#dECVFjS3lLIk@9fv(B;BPNV=`bSOHNipY_qR;X}D{>BeZy*gb{k zmKg}G!nu{a3tp`L?bL`fB^(P4v2M%Q{hk-2I1i)}6E=4>GBqU9Z8Z`BCLevCK1P+< zDObC{9NZ$cr+{x>M+2nHYBN*#li9hD3A5-rJ;WRsB-`B~8k2U%x%42HPq6l*zI9MI z(2OZ{5njaC-$D}!*rHiWezoGag*8;B)})3=#II#03~!cf9d#7&OUAkt+NxBof-(c` zOm8psY3PJs7qK8e&#B3lhG00>&GbH3J>o-Jjc6Q4(tc+l0xPsO93_a1(O2@I zO6rtY?N0s{sje83qMBTKIdXw}IHsZs8TFhYWVzVf25h*STMnfE-MTMx9jGvBS_N*6 z_4zPM=cWQ|D*#-6vy^g)W#=sdCrbS;XSNlH)lYsz;RwgsdL-9pwLKHFF>_=`(Hqd} z4K;?U0b}n6hur`dejgX@Ho~7tnz0Xc$)_}>B`Qt7&<6NKlW5iBxJaTQh;^;wd4GiJ z!o=Nx$F*X){~Gkc0(@OMIeTdb9nW88v(`({sNi1eS*CUY17;5ttrybq9af<^P^n3? z&Z7G@{RoGvbfzIvCLE`(40N?(X@pCTM5x?ztV*isVl5v`Qw_$7*)HV~7wncs)FXwk zYj1t3^Xr8|_)GQ?oXgyNn0z+*A@4;j@*UFPMsZlqOA}Nm&IatQxJV;DY2Bl5*YIZZ z*2OcC%y0Jm!Wf&<{MOw3z9j^AG?KA3R+{dX<%j|9g7?V1mkg?pAA}z}>o(6g*TMqh z{J1dQKshj|Z9rQkj7~VwJV92Gz}9bFllfsy+1%5%>u#KKW1?ss0{*gzxdLwTR1&iU zUdOwR-QPJQiv_ z76@dQ>XHc>KoAmQlYv+r(D5O;-MFBZkeP0V*n+;2U3{IYji9Ibek}7`F(2F|t)yrX zP1Bf%uUxnQv!Js^dJh=9REgF|EZ{y&e#L%}#fOyxv`ZY9V;lq}I%`DNvd#F~0tEI~ zt#9UbS1t4F#TWb6a{B*woFn*0e!y>M_q9J#SzPF^P{$+NEAvNf6o{s=@Ec)7gjfqd z+!7o;sfeL~;eD>dRufiz0S!zOu}?CX;chS7b^gMt#YVrUE$Q3lgqKgJF919LmVYqK z-P_fwS#G)hy1;ZFY@T|V8x0~#`ED8?VBQptz@CzE89PyG0)FZg#LysPa?oSr*uHdH zh=Vg-Ul7;SuR1N^TZxmO&e=zdk$5I4!%(%TwCO9(wSeovKpFI5$)%r4CO(u(yX8vz zAKig7v$)?8R`Y$aXpNMvSrbmM4L4VIJuUFF1|yub2ED#%4M|s-l=K_ndf4JuhptgY z=`wc4Eg7oNB~=c(_0;wNfIhMt;b~+4j3wAZ_%u@m;`;N!Z!27n9>^ExlKdC7M+N}@ z`uY3a@$YHYA9sh4v5CI3m6M3Am65RnF~h$u5ruV|c|LfaGhi-zsrhs++=%)N5IX#CrP9qLCb2O ziO8ba_!^PB-t*Bf5S0$J%derWf^Etk4|?BGpb8Q-j^Qwe?eV!fr8}_bxw)t`>K8@F zI3v1jb**h+>n^Pik9A#Lg|EO{Hy4YlQ?nY$k9_C9lSjDh?Kg%~ZoxIV_VX|BKF$kA z9d+Q(i5`a5QKg7;M$A4UG)?7^?&Z(WcjlD;Qcpf8@fV+dC`~C$fB^SJW{iu;TcA|3 z`6$+6juko#A+V5+J&OXg$zlr)V{~3@BJDkzK0|@J_r{@D((9#DBI^z@cp1beWs7`- zJ~c8OwT!2Us|2G0)9XD2tk?#V&^-y)kCDlsz7B{7Futvx>58y4d}j2I3~EH_#`X$) zz)9)K{L*9rZM1v;(F?QjecxDqqFcF_F!|zC_Yaa$ZE(c1@CA~D|47dN{{V&YZ$JrR z|L;H<1fl~WM*c#|OvHafN;TF0ij-^1l5H3J4ST&k8c?OS0OIn6%&_r3l>QwpT=jt49$71AWuhS@B79Hb+eZSeYwuY&@#6>n{1N$g!6xKAq?2Z`@qmFzlGwY=g z)NW_LC=3%5iNS4vZ;sb)mM2}OHD`K95xA}>QSd9(G;IXkWLlwSR$nbkMu{HJl*2}E z&e8DH_{8a3A6}?bfgyP#RFdW=1==Lh)GeUk%9j`w2hc{B8EoE!l9t(ht;@!x4yaeN!jR!#}z+7HWd+b zr9N2JmhBCpbxG~wYPxol-fe5T_Qq0}W4(IDSrVaNkv`}OBwltcGW1ssgRkZut{lNaS57WN)Y6M7%G%f?S5~Qfo$3>^&(HPJ|!(P}sy$E*|5tfBF?3y46 zQLzVph841laHnj>GhMr!d^;*UA7J>II6oiRA+1;z4{TGTZ(Eueyiu_L<5hYyJ2HDuLAQ6QC=V2 zg;1&8xqMdstV28mEJAr_E2-6(g2sj+X#c)wdeg9Bja8JenS^x=@ezrL;-**1S!JI*#kyHglqXx}LpO<9YjEeljvA*+fE^*MQN zu|uJX699Cshh2rFVkbFhT0W^Jh7O$;c4{fKi+d0s#W~9rGTlIZ!=Y~@*$zx;FiFFY zc_Kz13r27}spLf1dmP`R7__a29=C$hRZ{@w34Q7_^cI`&NjJ~WeD~xm?Y+lL1$r*f z91|yl4Q@an6EdO-%VjLfYz!*Vqt_f;7x%SA@$ydJZGPPaEVC{eFcvC1lx?XOd{{{c z0hF2Vlv`n_5#RzfhG!6=OB#uYh7q$;&(}6SQ7!JiV{wuB37ITl>RM_BWXCWQj$I;= zeu)`Uq`mT38bNpVq4tnsn2B-2ZFO-kx(V*bcaOn}CA`}Z>HEH9#T}?io#l-(4AekI zXv*i6O_D$xs5;Y6IA5&-EcJjp4nY3}7eHv+nRV(;m{~{W1ikRQaGW5{nsJ(Xo@v)c_p?8r07e)Af|4D+hYLK6O66=2gJ==t!eiv!HO;0 zoe@Xg1H1KC76Qy<}G#~3o)W0yREN)VIa-FjY(6z2kK zBc#FRUjkl^&{x|=4`lu%!K0lyPoLS`6RyFKfQRJs+(~tQ4AcseHi+ZKBjoYUX+A0= za7ygjEB930L91f1tEI(a9fbAs!%UimQq5tjI0h~$sn&?~m<%nV6BYyKU9swz7_qDT zwu0S{4^5YXQut>Cj7s55A3=h4gbYHzMLd5Cyw9)R3a1h?v>?zDEJVU@2|Ezkn}8Ym z-V=1+5PUUx@b^~%3Qh!N^f}>QJOJv>1a*jDa0yodZ?yn!Ly1NRIK z?fZyy9BFeZVa2U<{}EYOA8N+Hz8Ik7e`J76|HuHvrTOLlMO8$Moea&sL=Q~Nt&GK; zjQ`ayPm*8%qid$UccH~;qP{s+^{gkHr6UM2kO&Ml3VwP~l90uo!ftV|IU6W919q>` zJ>#hhf58DMA~(Z5vF16wW;r?G^Wx^!WfS@$B2vqNQ|<^$oTUc8nF>ZLBGUF zuEU&BYU!=dTiH%)O3|RDw+)jS%kYlQDx(L_rs2$)_41M@kZ3c^{G9Z9%dDknp~zw* z=f?Q^IURjadSfJ{V1XH@iEj=;T(vG%bBGOwjH>M;&-@80>r|Mk3s)wA3LB0Oca7!- z7mEg}^1i`3<`d{$Kq>1l|K&qv#mphnOD+M`er5y2WQ?XyXGIuDW*B)hL>2Tpfis(h z*Q|7`cL_7#)oyBZh3+uD=ntKun;GID8exo`b5(&|z+82?CK-1>`npyY;P&D${bZNL z>Mp`4wz+Uan~5z!cmv~Xc=lMZP;egn^I?SV$)t$$yboDY-+z!o>uom6>P66BVik{w z5d;cT^S}Jrk{&3XHMRY^DHQ%k1Lp7S^Pekz|IMENANAC>ou^0Uk&&D;(O(^7i(+Vs zX<8Kual^*Xix5xxCPld$Ovc8NK{i|!?-cL}j3@?8jQb4un|wfebxf@oT=KEA>9X}} zob3H>`3Vo834TF;&%=JhZfDyBrdf-6rzy}Fj0#o-<1|!@CFw9+&rAsH_m9wsv(B2F zVudSfMZV9@sV8AtLr|`*6m`c)eU1oeL=!_CQmryMQZMAk?C-yRF<6i*2&~2yB)=eq zgkIdvtj1?8LoZfgAQF6!*XTee1NstF2NI^ctaq(NKbSk7;7?eAkzOW-SQZQ!K1#wY zBxS3WPe^YcPPv#Wt)l}2Bb*AaUuWB6M&+s_-~T*t>kfO^-uW5IsRehZW{S^q<^IJb zEE1hpyn41D8c@wuZ>W(l`ukRQVL72Q3e{ywWZNH1byPm3`JNMgl$t>&x#ZcNeGmRA zPM&rEE$`_fcNBFgy$Vb?wlHrCBi^aBM5S`vF^E0F&q^EU@_xxAFV#}|$0Cu`@^ ziL?r?z_Y^k2gwkv39v2kDk2LJ=CrQU!y|`~Bl$$U7;kZa)+Mrwv$M&Uhw18hjeyFT z;`^Q*pwYsqZwKQ_+Cd%hQg6``$SOA)S5W6UAXH{^k}@O zs~tu%P1N-J&W96EF4?#D=@eUlTeV1{@HYW&cms(rsc-KiL%Cw9GJFE8G1$0}mLlNF zVP4;2>8S<`A!LcUldhxkuK1egd@A>`vekEuL7V#Fw>X^wcyLoe1!Dnzm|zN4*OYs} z+fD0>p*%eRX*W8Vs{VrHo?oS*7YgK=mp#I;L4#RVc~8$@Ycnq`s#INkV3W+StWrMA z=9|ih!JuZGFm4lcZFm$|eS$`qq;U)}nss^>nWVM9%F?MLk5_v)ySC74i=o>AiB@!B zS#EL;9nw5jsyJ=+w`^H5Uz~I-{$Wk=*3>W^?bjw_)yguxZCON~_Of9Z90!72L8Kuw^ zW8ZmrC)?ztYuY>HW4x1TzpbbRy}h;6NYm){6ZrlEq@dL<#7-o0Qmt77x>jPcj@2o{ z1%0txnYQkT5htdV#;J*kGi)|$>A;-YZkiA}FwF&Ju=RGLociF`;bHi1R5E%ZK& zQ5#Hg=oFk{&p9Y*M+^ty0GKC-V8t!N2st42yItrx_$rdq*5JN-kzhpl#`+k8K+ca0 z8R2e$HD3OxZ|CSYpom7nSjQwN1l53FXDF%){D{MXbt0HLk@I7PZh!SEIYgkvmD2#z zu{bc)Oy6`F;C(k+bkFzCc3S^wE@0?a#6$m&_1gax*i8S*qZI#0xREoR=hzu+1O>+% z@8f|T>`Novpz-rck_gij;>zHz_u1E7s65%~vLJbby8%j(!@+p{Vg;}>n2`ghRWx#V zhPmqN9nY`6cliL-L{}m@Z7|9WSOdA*H3xaBQSAD}SDdQN*XHGq$%V-ZDQ%gkIdh|| z%&M*VQ+a6uUyfXMdewH9|0aOrf-d~<#K^f;a|`mIEC|bCvSO~+uM`aNQib6VTt$e# ziVg&XgWK?zMKL_e8WydUW1N#OMhYn_59mn}3^DyA#0{oY$-bROdL$DsKFDk{t-5Hx zUGZUIKhTk~i0;A+#oa;~V= z&Jr(5&knb5Hs~%>wP}PY6=95Dz%0Vp@B~KQs}t2B^Kl=vqw-@vnhmRep%>vA$+kprLW&ebRLUY!0Ej+0$BN)~QlNIe* zWS3he%J+u&`?DF#g}FZ z_SPH<5qjiT;2*GLkf=y+U;NScOKr`nRYJ&L^>rS%e6Bj)pU+>BzGOk4)jRcY*|$47 zHUV`QQXMx38iO&Qs^EVEa@o*^RR-q55uZqq&}tvP_l_5DY!(K-OPD=`CNKxvJ(%rm znQF!w=K!BIL#flGs8j@Ced=;AZO=`qSU%~pB=INp;GnzLiS76dFVI>8DI%Uoid;W# zF=%Y(R#=4b>JF&^8>d3;DqrdX*jcrhTtzaNbSE9dV&__&BsHCLFsXj5y3QF4hJv?$ z@$j1~YPgjS_BnuCfXbNPv;Cw1adnXIia9>_k-vG4f_;L=R>1h$TRNgT>zWUX``>hl z_dn4k*|TRqa*G9&+sujkBn9&L*8P%?oHAp|??{Z7dPHpN`Z+2x$^gV+Yjlv4woRZ<<2bEtC(!+{Z$>K}MCd7lPN!lyw~jg<^uo){4EV5Z9rtV3y+l$Y)d#rq|73Y6tS7>0=JRX|Zn&XX<_YJpc@PzRUan0bjEJQ&x0r(1g+7%~6}A zI_)-=J!9BMEbZB|u<|OufrEu=!l4ks(llkYD@u{OvR zrTpm6#knc-v=^!I;7%n#ECfvmN1>IvtwM^_w}CS7roiK-0Rggk@1Vxc2~?ISFc zzYt%z!Cqqk7~SiCf{RoSsN2YR;2me=cLEF|D4ReGxwpd!kLdY*F+M|lKdRp>m4Q@} zIBo*ec5ynhKPLyY62(^NT2ZC6#B;tcJue%-35szkoq9rRzw0DeYo8T@1rl1$ca~Z$LhB4PW0XaY@+7 z`{Me}W+qMqD6Pn-rK=o{56F6XZ-ov=v59R`LX~Qf$Yy^}a_X$;uu!$n9bK5FE3r-u zrRkaFyHWcRRuZwgCCn(ZJ3MvJETc)@Bd#9oDlV~+V^Z&agx&oIBV%@MNr%j(c)(zf zbX}{Fah~DecKim!3PIC`C@7#`JB*E2+)!KLt^_l>sfphs@$|QMBlvt$^;gSH+J9DIIQ|VHRh`ca9{F8fTT-Pc88k8y z+PR@Qg_K6W9}lB>0~GcoU!j0sD4mTmshA3hho=bX9sC(g;HeNX4JTusljuz;*5^x< zaw)*PvCG0^_A2ey#dzKBZZFu$AR0mp7p<6VWG+)CvPJ@Q5u_7>RCbbj9Xd7j%XhB0 zcVq@hKczu(c**m|NLmtIgsN#- z$#xzy1DNPxmwFg%Hhim9vyZNlnQam%`EE&P33kz2CHi4W=_ADk8JKi;>uL{R4Gu$F zmJN+9nAei@*ixgD&DQQJZq~(eA7KnVm6Nylh}g~2I`xElSTrQyjC;MsTq1_)X(tUa?NNg06YOC<>Z{YSAH9)KJdI<_LZjFtYO*Ju;SxL)C3jOF zCopdY-A9b(;j)|h<4z&xcOqGQ#1Uj=#?qr~;jJsyOYVqFCpeow?KfEX;?RN;dPJGX zs#2e#Dr9~1LMf4xpw^UY;N{kI#~VkYNu3C$uS%3+qxQIT)n!I#2Kg~+?e?v9$2B{p z*$$)ZkN_stEO9I|gpNRHqn#t5!c*1*fJ$PGg@2#5OTjY_VYX7vA(h7Lf?N0tFJip- zXt$xKsnaSt0|Bd#v?tuwKB~hX`#U2NI{P_Yh%!RCI3_kzTH|2LqC8nN%MBDEReg}g zIDmkX7uLJhJOOnby0?x~rYoM7)PnFr%*_z4X15uF^xG0H=nVpRUwmFcjw!tr6~jzC z0U57|0~C*kwQu1&$b!BvhV=C^Y$s|~dB(aBJ@*>Tl3U0aY&Aef!jm9OVBfwFpNGt2 zx%(v$E}~rjfpCUAppYNu#9%l9gY8%8svRi{TFtJ|{ip_;F9YBLD30uBDGdX2#0{C8 z)?U#qF7FjwHlgEqL=bZOo~NKV*CHmtX>XfQjGVJMt5kU8Ui0wxz-&hXc|?@Y-)sFp zlYgB5^@}N>DIvelSe-U*hKk%UIBRSuYl=dkd?sX4Ne~fY2EN*@P@0Wcja}?7Cq&He z;6u(4O8ZGj?^FkL9yQdq&NJB=tgO4bGZ%Hc21s9`jn&0b+c3&cY)1%i^iI_0g7tCy zPSThIyXM^$3ZjH@a7@V$$qvckS;@Y;(PCqpoh-=B&VQ?{;s%=8q?*`TmxO*_=(f-Z z5gaB?+wI!xgr-lbE~Q_E&11PY$IUV`U>%Cm7h@`Roy3Szvk-fl9QnK@n_cBla{wk? zz+iAmRJ#k0xqv!G>Cbrwa=UQ+i%m!};EktIb%nc;DfvwM#D4{8XlN zP!!MT3KJwX#AuaiHiW$Z-~BL5Jc;)TA|E@1jS|)$k3nOF=W@n()(A zYMc6O_?4ebg@(RXKuFX(x%XPc+Xc2vz6tt`yxw_RCi19p~aXS(0E&r0OUjsNW)dve?J2 zoy#SL?Tx8&ja_`ktvPRZvV8_&P6TxUoNCrWssntnJ)88m@n&$G;;)AeTGB zRfQ9 zXFc7Ir!rU{R`c@uzN`uT$Pce#u+?>OB;eHD8ls1iX}2?3ABl`%0WkB%TbTtLbr587 zNxt%gcc=zMdoiy0zq@)&mP?Y!L6+UgTR@Q}k(lu(YMU!yt5+s1TG!#g(xbsZ_R+Vj zosQ}yT-?+ahIc)4p!dk)=4_NJhK@DM;=2$q^Sxs^GBRht#Neu~5%jXzTmt-uz=nVO zUl;mNeUD!2Bv@1sX&}E7dFL+r{ZG6I+NKBAgYw} zPPLppY9ir{@zrYP*QM|Y?Pgi$+h4&W>OadfB>0*atT0QerMb%l@DF-h2U&SzYGR(c z$NQ~PuOjOwx(A-N6SuJaw)PThbv_CK4F?B?8YPMXZlRR1TO}H>^tp!p?vpd&peZ zEPbJP|IC`H4l+cr>g5i|SU-d24&P&5*1nIoH;8;70tRdQ*VHatRl3UdFmi;)hUz^K zbyYr5{eiC#Vi4rO!-CVpN9>>4P(KU2OxsH@vE_D8Z}VsJTl+lc1>$U@NH8upje1Aw zml}Onp`ms%8ZI;aOwRvo=B&~Fo_M%8K^XLQ>O2j}E}4ao0PY^apQc{kTn26K4b-kX zNfy}=YIPH>_hQkMBX`&CUhA#icf!|E9-Tq?AL{h7%67W=m!|=}5JvC4N5W=6+DJib zTK)(d-jvd#mM{v{!s-yLCaf^S=}ADULBzRLe^*poyaBg?%{|i`Wrdh^>+YA?x76N# zMu22G(a9YR2ATj#kZ?X5*o@2NV^}IFONseQwK{ME-y|rQli;0|;(NL1u?DAh`kh+k z(#FR13hM|UT35fmG@8_yreEHa<8)19$t2;!eXO&4tAjiO6JUpLgbr|(R3AiMXC4Xc zl{+G~vS}IDOjS%DS&t3BVx0rSA-3-C~EK9imV_Et?2a*5XUS|3i*iuyW z6h6Vmzv$j|(YdCrL`P~^vtSPgN2O36QNck%O;kGacgra$c`%<{@cE`8oFI#YKIoDI;2zlQ%?z@8tBEY1GTTjT zOvQH5-&B|@NaoD9)AAsSeiLiS)d1ZgbM5MTAv%lzEWw-W@^L^s58A{m5bbsKrSzXB zmR>AaT{cjA_Aok%gRjt@!-UTO9z^}gT}9o4+Htm$2=FkEvcCZLFE);;wt{NuziU^B z?e3J)<%HkwN8AdU7>pX0_xfB<%PZbQvnb0w!Fc&Olp^HL2qSol@PK7|L6( z3vPuUz5K2-M>PYme#W?3RbR!13#I3MF&mFe$0^iRyCN_!+`FX}^9K1NAFW!&lnUAn z)n5$FTjD}GRwNdt%3dThcJqCM=zj9WSVbzj^5uI){`5M7^Yk2Omg7t0HDI0{m`Ny& z&(AH+eSuB!BSbqzEyqsRFsB?t)x;n33Aq(={gz0;k@HTu-2Cvjkxe6Bq09COL+}3( zhX0N^K4Iv9`UyiYI2}ifp-Q_NJF({aIR;ff5jp6TkdPIM@?T)GryQ@s?rEj(v~rOY z0)Ne_8sSw$4$7Bjaj`I;&EX7^Zco(XKvDeA}kkEwfBF<=eE$&1oa@lS1nJ*h*P zMdsjDc+xI>o;rW^qutOW0VXQ7wy)Tz2#YAAeqH3<9^Gd1@^8~-I`^Q9ZoU{ks+qAm zZgyF`stFoVL%;br9XD&)RlS^hsE)-O>8@O3+GIns>WY})jja{)ab8XzroAQoEcHk zmEe@Ij0-TgCA}vF?hpYe#7voVz|WJ#M2O zy}zH{%Pm+~9Cy6Gg3c=?MK$%mPh7V@{vKp;KY@!@Iyz7slVM5x$w{Ik&BN0|YE!0u z_-cw#*c;h}{%igs&^Tltm`fCR8VVxvvh&5rPY*|EzK`@4XW{&nO`Mukc>s4BBePCr zw?EjXl=MdOs-@c>!abBK6!|xk+Y#K70xRD#buKbT*aRUd=Mr8ap9H;pK&A-W!{6-7 z{A6Ls^$Eq~{}77*geod_pA`|=zcrb`BO7zz5li2?gb^F*k2X7V4B5~($q0kD=AK%! z@ojsTHj8Tmt8bZ414KVQ?}@E}(4|gE>ls;7cT-bIJ$Ze-A7AQYfnipzS30HveLPeCWUC#4vLm@sYYM}vve5UKdqQFtEho<|0Q<=Z48vN ziiHUQ3(X1zAo~sr`erF3&ICcpk$djFX(y#Ov)Nl(SOUJbnd?Y{2*FFKU83lTz+h7V z3X+P6oaw$&Sk6J5dXWpUKsXboH*)V4!PwYBv;XR$6&Yu;jp{q={8tS;LrDEVEmf{7 zsPcV~QR_h5GkBS#hYA7z?_Yq1DmEFdCJAONCh5F_Uj_#w*eILwYIS~zGf#ET9(d}Ikqy1!RCIEvc?&5ozpGek`w(AdZD}^xz+Y-s85G-e;~gQ6 znilP2rk*0CN^;0^{A#BBHJAgsP6v9MMpYT_fz#LV08#yn5IXDVY*6|sA`A*-of7uB z8)=6)#MR>x2DI;>FQ8Qnl-^tsyWAjk`oEXIs%?G!rCG`>ko}%`l=%2}aYD99pY8k9 zW5WNV9{b-p@}D$9`Co{5(016oyRMI{14pLu3-ZJkD5NM&2q~rkKhS9Eu{ZogM9=15 z92rjG|CePL-9*2HC3!&6#mdXcI?FnH8JG8I^Q;L~Mbfrk#`1#rZXq}#J#zo##^fes zQjHVS4iIEh|7`x1`0NNB%22fGJ~q}#uKy6;1X!tk|FH>BTjIpV?2H)SH!dITpg{}v zJU+VHwo7_2lUI93D@pMisb9~|^+sv@om#NP>^F|=mXcZr)Kd8AAj()GdHvad3RV@( zz@;9px9cjK3bSqD>5a2Q%(+5FL11*1tJkXib&U(-h1h?aH!*^IW}p}6XT+8|BGt?E zO~NFC6NXVZY$b`g;;|>TF$Mx~*y>=J$blu0WNTjgXO1d*C>^%>huEx>_Z zy(>xMn+I5>ph8CZh@v%55Z*@xI-n%p-Qi8(XJ*<*&9l`|gQ&wSB?1@UQg+}Wlw;LT zwwx`#4c2yX4$?Z|R#6V?x}0w}k*{YCNa9HKnJ4DNbKgG%Hjf_O6ziu21TZNeQ{p(pW!+4P7z$YeD{zFXs zlQaCcDuItFEC%6K0kL7sC;6n#P7*^#h9PDBwqJJXMlW;aKDoVe()SIV{RT`hkVq{1 zNDh3Vetc_6?x&ae&-Kq8LV}}T)RlfSMUM)=dhQ#+D){jYy2M(=YQ=H`ziq2&d8HV& z;$)Cbz3|9}L;_O6_1k|NnOH0i5oE03bgv-Ud6cN36zovdT<`)zCk!=zvjTdJcoGZN zRJH9NlUij3Bivt9BAev5-c)Fk-CQMUFr?>ENP-;JXH_Q49oOvY@zLn zV#94C2(~_&np$c1nZ10Li4+^vH_myR&oTk7AE=bfr4LDEl3+sJ&q4$568u12SHl`e zvbLaI8l!2NF@-(ifY^U+O+0;cp>dAsU?%;6hWy@mD9sKmh(z-=S7Zbx)cxVw!GwWf zc9N@1l}ouwRGoZ8&#djCy%aB!+ElYgQ|sGuGEvnV<@5Unp&XMW$8|dX>PRWU5gGV~ zEk=IJaIpHhiF4Wis|R%11DH1t-;+Qj`Y|;jrH`cT@z^Z{i)IBu5P{JN)-4og{W`lX zVv@x+(H?}?C`zgw9Ve2>pj(_^({y(*9pf8e1Xtwnum)kVSJG z^rp}^Hi2wvvYD!_QetlkDotL_*)&p=p0MBwpbLUK5OtAU+Gmv>=K?3^ z?~(I|>-nmtHi{_W4X-&`FtsGaycnE;&jDIY%@(EH)P~AUf^JQ>9-xteP8pJ;iq_aE zSQbX}lb)=~);4b}XCKtnR^f_;$mcl>V(g_|KI(l=S-Dh{UNrTJ?6`~Xd{gDP>y(sH zKkkk7sNK-N@R5Ut=(*(-ww^A-gb{c9ljb@ zlhZM;z!h0k4QD93U|}5z5mXTNu>Y5NM11h)0M$QKO(e6TWBC?<1a(eqb)JIAKdy9t zxR4VV_YDsn`Zl(x_y=`ar5`;7SGC>xjB_Jt+Ixl>hEXNX_5S!?=JGB$`()ED5aa}A zgXW04j$eoB*Hvl%ueqFqnsD_ypMd$F6Q}=Ofc)c!|2MM9##9pZ-78VIirTwQBBJ?Q zfsi(g{MtO%E zOHqG77*sZ6tA5EK*<~UaSG1*}Z-bQ5Da{k*Esg%LXH4{~ik{(0EeDLU$tFT?8)^1M zwCCa4kfPL0rKpk`wxef^o^Y!?L&&q$G#Dk-8w8~u z9WTv!JM?Q$`kEyw^p5#&zUd8G_9yoEQubu`7vG@##W%U6T>x8v=`%b|^%CL$BJ%^m zbDc(g0E3ZByU)fS!rXWdx&v%NdBF+e0p7p6V>T-yI(k0wAo?E`kpD81{}H5JmtNXb z#J#FQ)eHJMvHpws6o;fRQeug?eGYZB_#It#SGA%aDHN(`f}i(g9PtmJQ){X=1TN=# z&iZ&x98))yU1jD9BxA~U}&_JmPskSa}9C!}-yM{YuATc&F?6jhOB6GH|- z!5xEioavd*0oEP_{G^>is60z}w&GLJL0I9hi}p)9psx2JWePno1y1)t{{sJ_GN01q z@_8uk?H*_F;LKLzG10JP6<$l@HyNPeQo=a^+1>0-+7+xZeRkKoG4F*&n#)>MLZO2O zUQE=DzlX|DP`%<-l_}Dfsn>ROV{~7XD<~W>CvDs0v?RG>T`71isjC-J^)2bN^r1y@ zC>sJzgI;&g?Q^0m_ZcRxrL(QJqtHe5OlA9m_s|ze8^%b}3rJEa)9*}=4m9vF8B7*x zvapP~P1PR=Lc4h#vQH*ss_e^0S`FB@4v@n2j3R}_Y+~A!F@H|tB{!cGCajoHGn4~x zGMDd!(vZMbENkyXbwF^EUBTEw=ceiED&eWSr+~kp?bqk%8Oz zq$U9(4`8k;n5R<-;2%Kpg{I=&{GRA6lW5F!wln2z0SMk<3{=R=DT%|iSD5gMoF@;u zYa$gPNc)(?&KRg7RRo%|#|1$f_J8NuQpgYXub*gI_#e^4^1pQq|Fa?O-&1$~Fif#(FP0!GG=h)xmd-_5|o&kb3ALv(6 zdsSQe^5*^V#WAWuh{RE3j5fE?WkMsQYqG?ga&SbZ%$nAw40pYGtHGQW3+b_HnKMI| ze)UXEs_HGu*H<5JTMl~oLN2ScY8@(QaV*bs(VDfch9p@^&_XBUfx-$x`up#K-P!fw z89SnSzVv9!oh)~2HE0UtkpLBxnE)Npu1xuBDYI!R%y&kWalxk zxptGs?#Da%Lnl46^2{wS`SW;T(o0^mf7as`?kV)%73D}zwk~aMu>{c{hdkg%nu;?= zj4eOEp0Gh(ahafUV~~DbVV%bLn*vYY2u#PDu5>N?lba|fj}cp+{xK)^n>eNH4+O|Q zspBm8-gOwtxv;DprqD{&YaLhrDzwtO6rSC}yUlE-U`Oghor+baAHHV1uBazO0k>-0; z%aRfqqzMbV!>B*kf!gN?R^E+fD~>+SzxsC#!}<$-!RIc#8_k&;LppnlN1LhF_7^!; z;3>!;T6tEHx7-UTm?}F0KU#8qk4D?5m}!#N9Q?4pJ_fB3P#A|Bf@M5=Bd5$BMcQbw zd7f-c9x#}Hu99yL=@U12H`mbXHz+IX<9!x6>40z>kpg=ijK#G)*yyNTdRKTL4MRFeT)SZ z&I&?}yhIHIqzu9(|B2C$8;ivUZP&npHvoUcLKeY_)H8UvDOS96cxR~4kNS&vPr0`w7LB%pP7$kh4^v|s-b+&VU@9s|*(W=syvK!W$tOaI>N+o| zNUVefmVI4;eG)P|Osq$SW6ab;sgfunRmlM4+7l$5Hug+lh&neeNApLw>ckdDu;BUu zl^`|l=uKeMWhysPD00?!PqWzY`4*Q&t)EmAX9>doEUe0*lyobo}76iELz{ zjZasNIW`kdVH{k>dU%M?&JHcfGBfG)6#RGi9|f#u`BVzn>}ny|0tFT73~}-@6=%}l z%)yBwxbg`M=0LVc0!)>M>baH-yKrtGRRNC+m`u7=xEGKLp*u|}?5ML`DAF4mFY^~N zWduYrd>M(Va!}=UFD9^ie>KVKFzRy;Q32W?Rn_y)%S_V|@slPtG^aiNyvV2{YTf+#l%}s&>+Yk>R`^Z$liG%!DG3*$3 zpAYx;}(Zgfi4U{w>T=QLD(sRgrTH*GW&w`21VV*c+fLd@l`nW1i!N z{ps2uTsQ~VFc+1E*1~dfgYS}fqmHM99)A)zBwyE=@} z*`6TW_gu5X;gHi-G1g_RCg;Kr)>PcFzNo#VdT{6E+u0r=d_kw6qX&kmJHK{FZFN^| zY*=mSU`#jYl1nidY5YWg;7p|utQhSuoEwU@TFw#`O& z&6EC6KBKy|ZDobs?UZ$;*6Cea6Nd+e`SApwZJ9$<8AjNVm3@)PdeqU9iq_Qg62wwm^_Udp+RLo1K1uG(Va`A4RXGKWbo z5q7n?F;Q=3N^W6hC-6t~=4SoQcrH&iYH9=my~W9vGub4}<}Qj;{cx@*jPo?2}1_N!=P9aK@wBkrix6)$aQuDrg$ zJj&`e*es*$TRV{0Y;d+JQT0?Wj`9dCe)0s^Q(Atz)Un4|TnxERhy{nXkR}v3`%OxI*6i2D#o^piMlb3N?$j-jJD921Z zXd4h%BZ^2=J*G~Gi;G#A-Y97^J5{C#{{}YEH2$beJVV-bax^buY%UTIP|zHePBlfT zK_oAj*2fttbpXWFZ8eonDKiMbsaKgmel3z?JA-cVR!ADPc5ev5UxfgvyDfAy6RQw5 zLsw>|YNwTaWyQ|I;PCPhg)mA1T!fh7fKghxq`Y!f%BUwXmAegfjiu9e*SO`9o{LRu z(+Qrr$>nDLe89|BFRBwkWQk3u|E_u;XUMZzd_P#|{!47feSgN&_~OfmyE&;jgYC$0 zInpdq;4>?EItr1c(Oago=L++*jF1LTu!#{9vIZZns41O?8|1igv>?51xkT)Ga_4FS!oKF ziwHK9PDe*dqAH03zFUZkPsL+b>1NtfiRsUAkh@4_!BuUeDTXw6j*#E5t40jd_E$

    oo97FhBVnY@pd+mvSX+-IEAxM06A-Nd=A3Mm&7UqH$?i(QaoBDFlD1lkIUg(oAaH_z_f%HX?_K`B^p2W z9g1^8^YgaR%$aJ`+-b;1&`bs;j)ksdC&h7Ok>XkteWMr>M99ZC0x0cru5x-|=Bq@d z;y(vSnl>$U{89Th$JhJ@H@lvf3JG4vE;M%&4qqyiaW&x7BFIM+mo*eea9hGkU>7j zk&CI~PsM<<%$AXr1_CK@h6p=JrJGGL_B@9~s*t3NdQ& z&Nf*`>Ep#FL9x~5q3*poPn5naDeu{57*JGEJ`Qy&+_`2NIqi!Rd>?*>y)h*sLoiVb z_$D^d(>NzP3tOdVQ`NS7D0RV_)H4ppWaMB%YR|Dgc!84SrgDoVom+Z{^N>HDTXI;J z%qKB^m)tF6U|`CaabfllIj(OO7xEanbL-0pDU`bsZ$z${Bu$A#-!q@K6I~+fF1Tsd z$ZyLi?LdaKaJ|F2F6=&r-WIOo)-a6T)=($gfPwbF6Dz#MaK*H4bK%grRvN`C*P5m6 zlk{g1-D4h^sDB``tHKb0MeE2*V<-k~@1{0- zKZs@KVSZGl8;d370cmnMx!e?Xxgo6FcypI3T*rr#(AEi0RgoZiqxN&Xg9?Sw>`e2Q zt>_pX#GCXTn_`*SMgc|go>6cg%a(iPy1MDwctUu^#m(+h0flpGYx1wAEYrVpTQDx| zFlb?|CVGVc6oR3DCW!Am*~mb5i_#5N0I($wOvljv^#E}1GU_Wcq(XCsN-GMgGhC`` z83W-NroD!I&yguJjH8m}hqv2Bxs~xwS*N^qqJynU$hcVpTodky(z>3K;myc*2k*facJ(&F`j1TGv^Bd(DDa0IXF4@uvxju!x)V_}@92IkoYG?r^wrD< z3SPp(Q+JeE{ty;-*&2aV5XI9lIsJiSR%|C<;j;1f>0XZEuNRamu2B+lH|c8@jlb3& zDSWVw;uuMSBF+aCdSWQzfQ`F{DZT;`hrB&0L=s0x_v+T&<5iaSqYUgp8{XY*%4ii! z!YcU2M33sOi7|oXaH0B)q1L6I-}0qy@A9#@OB!%+Dprhn^2P;-As%8p7Y@JC_PDXE zqlXQvoCp~Qf8AWD(d6hUtzAC9E0M9k`Moj(!&cIlzHfCCJw7?yM6o&gaK2wx>M76X z5Q#MuRq83#9nS2I?vzrRUF{p5$@EP6P(`h8{_AufL!~=1GcD_)#}T3P%iwtA&r-J) zVi9oeb)dL4Ye?zN0bo)muXjS{7xOxxda~{}fP)}HOMqh?1bCk2EvqB%;x~;RfL8aF z&YvH%7xUq&WEMT3Ok9x6pJPZ+_5tQq70V%gU+zY5&!u5gpLqL9(T#hJsI{1LsrsRK z)!R`z)g|`j!|n!g|NCpo-n?f4eSzD04@){>+1^9q7y7}kwVTt&Qj0SaU6r8SCQVKzg#h6-oUO zj-!7Jt2dMp&F@`1jHIfDRGXNO>AYk@9zM9*I0Pvo-cBm)Td2H=jMwoARHh;>cbk+? z?iNEcl0E=rJEuoF9D31inRB|cmw-2gjOGig^ z_|?-$eJJYGU;c@J&K*i<%g{R>B5_{B2Ru=0y%#I+Q7$jp{%H({3sqKvzMw zu=vF+zXD!4QC5E%>+9e(%G%z1E1L+HcRNeEbR4`3IsGg`kN?JSx{@|aQ*k9vc~eh| zvRuf8V|sUT8uOf$N6}L*O=E(KZSP7WiuO%3_FSqIm*g z6hv=@X@S0yI5h+QrW71)rFjT1R}YJE?zqA}9B7#w3NJ;EDg|$C`@H@P70sWVKd}}} zCzg106pV*rJ*`XytEgy7l5rgp3o?G68$AeW-0M;((Kyyi6N{o(Qgl^t0HiFbiG0!{ zN-Vjv94RoSXySx}K1J%mUDRNhq;)fl43#vw5rvxEeTChPT>M00zKTj>Udz#iG~>EU zQxR)BmbO?$OZzI)G*vWmW`!){suW2-a{5)`?;1)%kD8Q%4vW;3U{40oZ{wG=hSkJe zuuTa}G?inXM$H=gngX8WMl5OgwKL(9@-& z8&v_&8by4sf7b5_fs2Ak+|G=!QKlccb{LS{qjWoWZyg4rj&W5%{vmEa^j=;ZK6aN0 z72Ld8Sgk=MsEfC6j!C#wc4Kk@=X9tfX@c3)}7ILEcbM!z`dGV&VD4=iT#P1A1TTEbNql)8y$u`iN#?mC+L$R#lv z&u;EmllfBIFYN9Yp70}H+KpbBZeU!L*wG}<%M_q??B=Y=a>85)g?X+mUXT#7+tkF* z^^PzRpHoRx0uAzhbB*48>hc4S-s5p)>63oUv9SgLQ{Q<7K!g7H$8@a4(3O|N15JAs zo&qI)LZ{mkb1e9U$UC4pQ!Qp1dM~*gb`QIVYOq@Smv+Y`$t+i9{71N55AD&P7?e>B zEdH+@k3ZvlXfNHpk4VndLFIQIE@MfNG^xh5XY-{IwWcEVJD>kRZAkHN>V(IZ^IfxU zcDv)H;>&)|45O`ocO_H_nJ?JWnI3XT?SK`us zjKHh2Q4e2RaZLX{F)xjlONp)y(OjeG;++zbCpl-%`ju7f-BTR9iC@rxd_d}c(w5C! zVH#W8IGln^Vb*7)o*d#}3rtTct{#@?ac6xDD6x(!dAHaWy$y8^aRa zenX@WlE0zZoiML+^ArAjO{FZARFof(eLgQZ;drD*bT`+=*gawsj++%`IDx5lBweo2bTgOnG}2W zlf;1Yh32P}vVIT(`wOhaRI{ZU^V#mT49N<=dh$@{v>H1tIZrGr-+5%wFs?sD>ssf+ z&*QE`roD6}10o7s<}q>ML%0fKrc7Muc3BJJYuu$mlJnpVJ=_i>Jk}1W z*Ax!VcVR7ZiKOi%LJb2Ed7Xx=0c_9BRo)sKJYmkTsj(Y_t?<^7h=-mMNy-3whp8u@ z+Ne1QwOf|C4$Wnew$Gb&YWXH2zpny(daRj|A(g5Sy<=<6WgxoZNh;`4SMKz^!I z!d8t1`4#e00Eb^XKdDul9FbX^RA<~}+Wi+F-G$(b_+o{6%7oJT!8Jk?g+10V$cqog zMuD<(>_maDuSc%bfQ7z|d+sa&hefQ5TgJvTGQW%-($gyU_fKJ+*vqhsuu(qfzZ>6Y z`iKFsgr|z>d1DAe?89twnnDdfYu)?1M=a-?a7({p=`^enB zuRZa}@)+r2Meh<_)G;FD9tjz6;5x5iKM33~w`zu81_btKCQS`0FUjz=Vl+jpIElEu z4KbuI6_rTkH;p5Y!q&fs1u3OYaDcE>yqik`j9;=cWT#yRVU}y3-WaH$t(?9z5YY}{ zMmhSj8X;$a;Z(CRjiA;4j$0dbCsHuU1vXP?b$}Un8o|!^oxPi0RL*iJx__0UpATL|3Pz&QVM*b{&}dvmVCNpHXK{B&}RSaRtxOfyXO79Eyv$ zNKO#OmkisK56;UN#3EG#BO4;{qzOTz6Asr2jk-?F6i6Sc+6oVBIBKtNVTxTIlx+q5 z*#yZI%KqKi-FuDH_q#v~rDmKLS%r!t-|(3oQ}U0dRW5%_hT5Jv=NQV%(YEy~`Shj? zM~3QH#?x;d{QY*qB~BF4hIUM;EdUT5yai5^597Rbctx|voY0yXA6TsTmqfuF#SIv< ziCcN9UAQ|QA?gy+u6hW91>_u&u0Bs?!3z=HsVI^dJs_MHxBoNW9Drtp7*nZYSue=Q zI(fWyq>XVcjRSeo@r2A7Vu`yTAvqdQo;%?XoNQlSUW%Wv0CQ(`B+v5&PLbHd4M6T! zo>&JLOrUwt39@=ZA!(RJoVAS#92mTytmv7i;wYl#;T(V_3+5EoZqHUSr_7G7 zQd|kLMq`~+M8#6;Qe@0tfLVqzbgFn|(mi)J8A-Ha@USMNL0kadT7g%Ht}j%eVN`)F z#p@VynNiS4`%%)BT-2279EsL+KQ9FmiveOpPY5R>EB#KuPV*4^{3Xa6S-(t=$A`yx z?BD+aYOVy$T?lbJv!XX{m$MKBvNS74tr3JiC!7UAseV|cN z+=tTk@&m0V6SZVx)X3!}*3UuX6<@+!5^V!w@}|t36?>n#d|ND=7h%1yb|WS6>Px^H?f${3=0Kqnape#b4*$p+z4gHtO7Gi>xrt-vQYa2TlLT;;!Ly$3`k)W!DF5v zL`EIqO{lI*k`Z8bM9w3#)G%@>u_L|k%_RdUj<$AexzihhZThOInQBTN_c z@WU{8;bt#MXfJ7y<|Epr&C@yRlAZp2H~bAp`7n#e2ty8q-Gp17bq3Q%hQcE9`o!fxl!K= zOGIz{=GPWjOZ>+5!`_mzRfoRBPOd^n9xUc?BWKNo4_=hWxwBZS9sh<22X<`AP+z!R z?zoL~aSN#H$vbq%Yed`!2YJ^;66GKP(gBrrHmf+`G05T%efE^}V=oMV6U{nvnUQOs z)u>hM#aU2B=N4jCznUnFVHma8zP)%O)cSs5EXe3)GFftEh$)Onm>w>kn5h>N zwp|SV5EgADvX@EeJ{S}QkAryoms#X?Rog$SqSDvSD^8`P4&%|3>J=~H**m*r$_Eoa zKHn^GfQlaDYz$U*pKVhHk8p(>j+1mKLTn~()g8~LJU@;zI3oKF&IADpWkH)(e+Wx zu7OlxkMXO5D3k+ng{ZONG%Ff(rc%b#c%ulDYQ8=C*?pd*aeID>WW|WI=S`gS&0nU1_W?`P7IB=N~pMR9v3{7v*@G3{;GjC$W z1p_`$W6lgl$VSxbsv>rk^rG$~IwB5I@fd=sK{Hv!27ExAKoN~}b(yP;7z$9gFT zh=#9VL+Wll8Qzy*vm41ncfn)?ot=9vy*z$eHiU8tS1$sZvQfTaQY6TZ9x6Ds?3=4r zcnmG?Ozrk{ILn8lkc+Znzl24)jWAm1T!Xu;HxMnbK_NNe2%9+I?$qW2&wTz#u@qQ- z76>$hm;4k6`(w-!jMxDr;)|JN#@&*b5_;f&Aq4$I_DN9<#ZU2bVvnR4M_mzmwP6@= z$M*AcLw34_IrFpm756zxtdPIS6D51ceh_XJr}QV7VvjrN^*B$e6XbkQ#?IdjXDPC$ z59*f33jNzJa|q8a)eX-j(iNEFhD3;UJ;1gHp7b8Od%cI|rt<+WfS%L$yeCr}S)+K= zV;VTb36$AJ!ePX&Lm4nhXs}2pmA=aTWnkFDJRIC#FK84h^AW`HW`@3H5O?Yu{I$m! z^((d)`9X{oJ){!{@1{?oWxpTA2T5_yY7LKD8pqvJqU~J~QOagg{@|cH4g?(8m>_`| z@^>+@2aW$1bYf)1$q5=yZVf6pYy>QLayPSTxcD+XqH+2kJXB6e2(NJ=e4_xtVZ)NO z4AYWrgH8HmL^|hde{f!zS-F#-K$BIDhU9|fb{1%c9WfK$LULN(&#m*kESQ-70ELU0 znMLme`dy%xcRBnQ>WxcIv#ds#u`GvO`Mcuyw4djPY^mo*<)Z%;WwqF9OdrU<0BHwg zk0!LDVq9ppqF5bL8gGNJjHna14=sXCdxe<%DwtvCjyH>bXpC<03VB=JDXFYLA^Og zu-)d32SrAq14gj}M)3ni(SvHS1CHDYw;!^~)uE^32+T5Vu;WQ`b{X|J>a?7q4Gwf! z1y%^6mO_ThyMECNcf`uH+y8)D*ZfI?Q|qtmkm+y!-(PUJ*IsGTEU42K<*Kf1x8F`u zSP)0txb~nX(9`#XS;z7x1sB8a0w6SSYjTZK`?JMz6p6)r0Qe-y0o5-dfzdz9gp>2} zOZ&OoshBT;G-Eo2#((Uvq4*$(_EdZo?uzhivNi2swRIrYN;_0Qj8Woqvb-XF2Lp?_zciH~<9lXz!S3Ld3T1DNhv z>TwKTlW)J9v&Ox;z=u`(YVMoJFKO)N?l~W1V@#>MGHngL9*7=fqRIKCE(5N4@;u^w zV;|l&xoXIx`l)&~5-|I^o>bvTFh{<){l-D%p$*oRQK*z3RP@lgLv4h~) z=OEEtHg~vmLc<+uFa>SU=v$T^%$On#wSg256Udlum?W7X0Nok=L1i3s|f_NOl3#anRcOU-mr*=AY&12SJ@d;H{7{e<2Xn-ad_T(x|J{) z6jlz01$Xz>5yx8g!zhoHLoz?1kT4{Q+!^U3VrNLd-JXryl!}&d{Iv=#M%BeHqh<{D za3|>B(?Cnn#W6z=Uw6O9^Ivt0uJTlo_s|9>wj&dIrn+#?qV(N~ z6izE7fb$*#b(daRI7iKV4?F@?=xHRh6+c4gu&+hz72_XJ!8H;I1{U#OOG=i9x8I1O z^_-^xyr>vuDlI6PuJwJ`?KTPD7Vef!-5rFS>K$H}ezmU4=0HppWmpPd^T&p@@Y zWUhaSV(og!EcS&s*8^w}7R0C~IzLBE=?)x-Ik}!XE-t!epm7-PSzg!;#)`)Psb;kD zslTRB%$*fkM@Z2oB|}I&xLM(6Gvk26`S5k%SY`qnR2CeL4YRG}1zLnko;bFCyRA_= zasJH#Wn2D6u2cZ!>j3sg8|>;UKdVPV?24-(*t4!u{p--SGsXo9q+X*(Va-rt-D&{{ zPLgKcg^?YUM`CVPxsh5&BFt5^XKu$$XZ_8Q5P2?MHq}ukcz(wDB)kk8y zqVB1GfN~w$B9d148%l+upeg*K!b;g$3DD|CR%~thEvF7vwxm^XGdFT$jb!u#rql(H z$6kb@sY>>$jp7$oc{MqO62az}g!*_khr7c=IwU7lyVTm(g$ z1tP=THv{x#A|+kl5T!FFW|ULFBPX>=tWYrJ&M&#Zq72ZA#xxjJi8X0k)_jrXcX<(t zf0h1>F1lY#obT9p;#cx1av|x4^DrC>XXagK4yevp1bteyW8j?8h7He=fHfx8r(PobqKFpUFH-z1w>i4a=029s769n_|cNiU*Z(UvRjC|Z#M zZ)V|cSI0qEJx>|Dn?5ADs{52oko8(=xJe?n)-@S3E}cBGl4jWmZ%j8~!AS|*wHiC# zEb0TDMcuUykzyt;Xa1eU$RU5#1wdk*b&Cu)kHn3a91=Zx2q*A(BIMZB528Z+9InGg zLCy|gMlQ;3Y7_|`3{mq7wqBWzCiD18`8)QZZSd{LoO77FF z0xPzFH%w87Ez-uQUmTmMR159f;lTvhD;cJ_sbW(SpoNS{hVBM^>tJ`nh{E^JL@>V~ zhb+Pj;06I1`fCw^TzEh(Bp??NuoVQ@3Il9q2S9QDMf{lxIUqWhl*gkWYOOzg;DcxR zDJ(V@ic33B8bGAvcZT+m* zEQT}ByBb~(t}MZZNm2IXQY9@fx&p;S2f%6}{f4?`#QzSr!wK0ycQK$iC2xh|AT1WV z2K-C|3^Y|J_J0Mf=z-U*IWsGE5VAJm878@qNiS2T6?`WTS8OtXV`Z(Y%y6PIij4;RHmAyzBD@!< z_b*R7Iq^ea!e{0Hs*{{!KK_Bd7*rv zlss&isc-}~rp(VGm7GG?daV?LoI=z>3z!2Udt6^Jm~ccPAzQJZ;Vuxw*})fZYXdMA zoV1ma@d!vl87|1WYiMzyd9%MRnG~z}qZI`LrO&ju@a`Gs|A=DegyJ<}<%)X363*#I z`>`&E+{w_Hi*k_KwoDq0CO3DeF(MfD!rD`nw{d-+dHpI}&FmA#H_72win^t&w>uJJ zQ1WCimd)@3T@B~a1`S9hS)NX3suId~d5>4%?Z>3Y<4>p%rDyS=r+AG>3j@Cche#If?k_UtvY@f^@l|zQBzb?yeJ3N!4qC4p38gmRD&*mgpxp0eqtm3 zsnIG3b=w@0sMIGrwr*FVXoWj>Cp;1HFi|g6f<8=6UutWHm@jN)@y6)VR^Or*7W<_) zdIA!$(mPB-Q!Fs+i6+bMulU-rV!pS3#T$jHg@G{t99vV(F8-xXtKvH%bMC#nX z&S0EV3?o^qu}qIc%OE zSS5Rqm=E|R#mSotRj-P8&^YSvHjt4vsc>RndW5NGrSpJOIbRqC0{Y>_MN&-RcAD6 zF&&H4p---R>yV4M`5B0%kXbGtTO@wish@@ww-zn$Aos~8RJA{{tu86e2h%GvCEja4 zPnsLNN^?rdX`5Fiby$_QvT}KIy^{_jpS72T-^WIL^z5i!#mpHWq$hZZ=Ov!Vl-fQ= z=jZr&D!{jfzot_@n_5dnqpZgrXKbJ|^pyUdb&}DF-RqBB&cMyhVH*CQgw~=W;s*N;1-`^`C=J40ML+)sN6LztO zHcwj|W8?*?(P2D*sJHR$z18CVO*U%eQa{0RHA1=UDn!cR9&E)bG5w3_0pV``o*6M% zA{2eVFJ8g`+xj68R)YQj&tB1RP&6+dL|no*?KgQp9~mqrHqDGtVZYWeGS@mb92Pc? zU2r_C2HwD~gfaQXuc&~k5O|&_{MKb`@V_|5yJ}=eTm8?m(cw3?#;hN|(3yd1YRai%Bz?=)@K2f{1JjdZUVHOP8*?AZreJ6IWcB zRm6Sv<_XPVLYA{tv|+d>4RCNVfzZ^IkqoxWNDLaIe?c!-Nqjte5_4nKok0!gtS1Iy z8>pPq5R2x)*aOhFFIiTNqLiPTEIQ4_EAKi^DAv@QtSNkNl4Dg?;MU*`6{HZ8nn>;T zkb^jQB2P!5vpH7v>$;W(xY?Ej{m~2)@^NQw`J&_W>o*t-lZ&Bz46knfe(|TSHg>pn^-Eeu z;Eg~v_};}nj!QORbA^!`pR52OB8+V9EIT@Mk{tUlD1#iyh zIzpQhN4;h0#Sj4|!JJ-|ka_DY973HZ(Dl2u(Ef>88EhbKWH&~M3&1(ZEg_mfhNX;e zOgs{g#gR1LJBfF>o<4Ay-k^6_jqeEps&MBqkqE%)g_0t80@)*jV#a}vLqZ%;9R%VI z@)nDR7)y+Tpuc&>KY?rs%UZM)kC|lu$&)9DobU6RUTn+`+Rdhtwd4f0vvk zx*B?bqk@=Ss@1cVXEMKqL04kfxsh$0+K5yTkeSYnu8McJjN?FzbmFluCWX-`KY!rq zUpQ}+?nSjhRv=@9Y{3AyfF)AOi;D5Oyht4 z6KTb&zMltukfX)p?O)En&F!_M?STFe5dj>5yNM{yB=lNMRRTNuvtwMzwD^$#k!}n;@wz>Vtb;C~ z0Y9}@cch4U+aAXa|6J4#`mMm3!;)&9Q&D$Jnx9r~&e65--_K!u3UAFjb^IB|xj!j# zp0Sq^Lgx}<=agcWXym*c1xed5S}{7vRTTa@jAYgn(&~0e5ghZ~_4w6+_&R+%C3i){ zqzh_TwJ^?*%MfP9-x9gPzO@tj*?gI3dwNKq+iGhF(m$lxXc4S?77IJw@XEi+FV(pW z80T>%0(oHqSNIkCzACv_x_(}Zj_E=y_3&hJtUUlSIo2D8iZ40%{}!jNJP2}p&XQW? z$yHc;l*^^AH!c+uW^!o$;~sq(w&w8r{g#JH;>aCVU2seC8w4UiW4`}e176dNxtYcR z0`hAApEx(>|0n0B;$-V!LjM0--xY0bt^PMLOznTA1B_Oaa3KI;l;VK#@_KtEA;npm z_A$Am9amnW--F^LsZVv z4VA;p2;ovbH8-@e-lbAoVNQT|WU7lA?5G1^bEsar(scoDc}iQo!hSzpx%iP5a$}`o zOG&-_X_GFb>=sqjNo9G${SmUnM=NAnPFtfXnvzs^57IF(&su$PVT~eW$1dRr!Q=rI z$b+RC&6J)DW=|8$S~Zwt6t7VsdisDp`vbBD87VNSXk#=kg0=)@ZUA1qE1^6?yF7p9 zsT9M6Em^O#-bjJB5sg1lW^VBE^%(b(-P$Sfx2j#!(r<>grNP*yn7@<_@?Y$t5W@-%RvfUo^oOO-wBS>eVWrUXBCc$#gQ6ne?@uUasEUSH0}wG!*4`RS!aMa z*s7!WhzuVkZ`kfGD($X79WWDm;lDMnHWG zi8880JS~YR4L(%x!QW4_1ASr6y2s|<<9~CP<=_HCKqTr-f|ktW{I!-m0BzT|?;g}8 znbTJ}p&u;Z2FBPffIt)?Q>_BgRnmGvOS8jZfvE8m<()D7_3us>p%K` zNdEIo{hz5>6Q{oKWQ&&t;f3mW1qltP~f5horv}Go+n}HJ zp)p8y-*g17j^D&goCz$ zypWQ;CB!hDzeL2;oW1z+bQkZR^K|F!8#sHZjI>}6^qjsl6MSF!LB1gIb{Fgm5-3Jr zJKPg0d`0GbO(|Tj--1KEkst}o-5L{mt`>c+z!WoYKs#=~xL4WsVH^SrpP z9$;t0za4w<(@?J!Cs)`ll4Jw0IAnpyA`57VM6s_N`WZTk;l6QDGW!b)vi*jcCxj6$ z+)imwjs=`(Xv*AXI1M4*l_!TK1*b7EXZX~}izn6m6rzJm6w8dqP|#R{Z%!OGFniQ< zdTxk3anq=tvG~M@7M!tZNp60~Nnfov5~tIo*!c^LMF#8N&qHobM<*5yER6P2SwkLa zEVcHuR87HcQr|Sq-YJp9+Xq#-W@^iXXhuw}>yXHyPD5Buv-A8ERZaS)NRxK15zy=K z!*%bbdB_p zj+{{*C*zlmQ*S6avht|hhHn2<(T47@ruEX$A*G7>5uBdx7_{!t6sDf;)Tg>l^={Mh zUB>xAqMoiT7U#;)--|toAe;Gtytp0#OqkH4&;enHf~?{AQ(;^7vsltn659fzJ}vt{ zu2n5uCkR!v)iL5=d1`1V?Jpk)TStagK3u4xy$%oz$W_(VxyMC~4N~&!=K;U-{Sg3U zxc9>u1@m2x6`w!+C45`c^`CDze!PlyTTCG!eEn?FEvZJ7JdIw%f0RUipzQyp$F(PV zvW5;@V@qQlQ>9OC;QTyi%!RtLWAZRDfn1-zWp0PTn2 zrkwbXY*V=;*4It!XldV1OIvDW>%#qpRFge}nh?9fEy3-4+q@o%C`^asS0HD zv0QvdGh$u7oaQ0(hV6AOrTWyN!!aREcazhPGfl2Nq9vu)#t9d7V)QUM3F^^gyXDOF z^3PdnhKw|x7IPpZo2k*35s#I}ie$p6J_^ihMF!saM?7vZCU9IT@O0Aet_aZXsSCiY zhM{P~S#tSv#+N9meVkU;y|q1vj<(*EOVj(>MujTa@VooRD9Dci?jV=cQo&(u^9)IO zsHFXhBdUj%30hn&Xp$r|kqG;A9K^Se_;7csXf_LK;S^Mb0H#rX43O0=L*~vH`Vmeh zbgQx_=pynYT~mvm#Vzxuo-w@J;g7qxLUodd;zV9ct@N_4F0k2{d$!ELAoXXMz9$J4 zS*U^dIVD}{k1MahYpg3++7Z>7&; zqhYI0^y$X!YaGL+L(e1MVst1hx<8LpHSr?m-NrO z^MtsdoFv5xq>zF}9b1^7PGPWLSe)^x)l|*F8JV(bv}~X4G$2qLpawFG2iEDjzo$lJ zL(MjlQ!{5Le(6pC(ywF127)ZrB6z6~8ULx0D0)rP+qpQ=EYn-q3Mw=_$$SiG{i@kB zd8T>mESzDerp3_9VKYY*tL@ls8SCJH7FYF&ft>WWX=8LIlu}d&SnQ$3Tl=G>1B`8P zoZ@Ji4i3CbhI-c$aN0eT;&tsxjrWkB@UX(Hu%y2g+hl1 z7Mf9UzIS0^n#$Y z!gVB1ksL?5yr)hmuO&@iKfxA2p$@Mm+ZNOSdnmIZGpR>Yiufi!suW;{L>Z6;dYBXy z;5YPJbob>MSqBR$`8FeeQBIvYqL{5h$@hWz68MhQt`2lsCWAi&C|g1o%8syKLx%?Ynd>Z@Ul{UovN$i> zDLaRWNT*2VF>R1)JSLH28$Jn9d)NlA$2h~NUSG%drZhEy(K$cqWiGW`Db zvT5>>@mBl{8H#eox|a)rCjtL^Fa^$LnTBOgyMu{Went{(-s9G#iOkjZPJW=M9G z{HQzn8D`GD88b4Kyh%RJ!Dq8X<#D!WKN4FQzh9}yrHY*|X3v^Rd)J4o5IJzL9nqS_ zK8SJ)Ey_3WcsQCkc>=htd?ABBP>>=@j44$$gXaf7-Uk!?(E1qat;5$FwrA6q&Q;;d zB($+AB<4sQ_A!VkaYvNGaZ~}LT8{Zrj6z7nbkhFrbn9c(XCIU)WI?z5Sr_WULnp6j zgeUdmFi2XOtV?XT9KDuF#%>RzzTXW)OMuCwhmeyTJP==7zlfOXD>idk6KH^Ci@jIF zDo=hnk8B&!QkgC?F-#y8$T_$@XpEk7kXzZ=?xZ~w#kxnM@KghrSxNbutmsjEbM}Zb zrDB_N5ZN}eE98Zjx6M8!O=K5+8^d{Cz$ibHzhXpBp&ZY6@vdF;%lXPK3~WUZa2xYd zGL*6xC#c>@-AIY9kCh=8AP1c2*yHbbNhSH3dV1|{rI;qPNT#{4r&ORqK!nI7`}+0q z(_PXNT-bsrIQYu#<3-5JJS=u_B;+NiAxI&;BBxII_2txYX`g8@RrOo*W=^K{Uw-y3 zjYBW;H?RvYMObd1S-BK%i@0fq06sJK169^zG}q%p4CV_RtJ{dtYf2>B4vabYs@;yf zU!Jq7H>%$DOpTnMb@v2b#TmD$d_Jp{ID-s@mBE!y{N%_*264!~_wa&oShJ!_AR^Yr zb~M{4o;_Yf63jCw+}^iu2TaKo+?^Z=mSWhD{5%$E1bLfz)gCz=Za#-}6L~x08gOfX zSxyC7!qS;S0|T|WwT~|cdgVFI`85J_FtR%M+Ws)K`xCl|^p#UQLo{JW_;#od1hg4$ z=1wun0mU{B>p|f@_bQhY*VvX3TtPo;Y-FFIgiWAj5@UZAiW}ldn~x@$H#tx+Y#X-~ z;x7kt|LL>z11`3aMLU|CGE3%|GQet&0BA$1nX?f;db6oMcFq!*A#3GZc;5w=_5h(mkYa4g&?K{T_Bw)gGc zGmjX|>-lB8Ky64p>c2zUxl#=ys)WAS`?zAXBhk5_$WCa}3lA6?R=~Q8M9ng%cIo6w zWJ^DK)B-XMr32)MpGc zyY#$=Jg(9QHQl5ldb+B#x>{52f`z||Z)pDjlyMFFji5(ouC?m-hYW^I6cS1^ieHT_A?Gd1qk%2nBpMrVA`^-Mzsk!14(XrX#-IdN4zuNuldbAm#Ph?|B z5)5;{cv?THb2-~O^*HXuOHg9LhsO1|ps5wFFNwzINz4;?y*dT2KCuDj)wjmU=`4DO zV6E+>+(~DUG0XW2%5v)r&6T%pW0$J6uMtyfiQCKH-23Am<2~kp;-pvJb*QW*7p8i@ zn;a@V&gkeEyrH|`^aHJd7{!6Y(u4gqyk6kYSom3}QFPDJo3}|It!i}Yrtj{1IZE|n za0->*aru{z2LFBGpeKGBV1$&|!k1>4%OAQ6wF$`mqe#FYNI!j>wYVv*j~OkHAy{@@ z5)2=kq(ng^!XUzl{sD!wE#39c0@hT{OL4-htcc~P0we1q`&ZdugxeTXa@HbMmfXle zuLI7nCQ}**qa3lT4dR(BhB!(Nj$0Cl_190kkyr7_4XJFb$N2ScM1KL6Jlvzl)n%7$KfVhe#h&}FqZ|{SWlEtGV?rN zeQlYyg-=vlEG?Sf1aUmqXt1Y?0T7B4DCD%IyQ(&o*pr;Du5J3%#CBk|c9x*k&tNQU?HiHyXVjPq|u2YHLtEF{Q+XRYFsxF-F((vn-_Vr<>pe3egSlWo>wY|9(0 zx^Kv0j>V&@{rDF>{1V`T z*BJ&o_C^Y=`WDc2sg%ga%I6@$mu!Z;4Y_wM;*Oc!7^)u7%@mDQ1W8_0SI|Flny;Z5 z3|5hvz3PZAUinMHpoV3C0cV4X49mJkHH~B$3!PmyM% zv^{ZoN2LIEN#oM@UUv`=0>7+=d-%27XP=V+@9oc>e2r={h;QJDWI;gSOinI>9immB zaPY%5zN{Qx>$>63@F^2sK$jlJ@eBu-H6BnzaS@!^O6pi|VBQ6xM33yC`b#!OUgzB^ z5W}n0@fY4fbASJ|&>gCfr3_3+{B=En-^ZX0=XH!NsU_5`rY(5vM#4IdE)Z9~VDF}$ zwU>@{*CZQ6|Mqr=o3$6uq~9?MWb1_8t%0KT_6h%89+m5sXT%3&nBD@iYS0GG>4Jlc z;W5tsh~&Za19mz+&PCpRoO^T9kx>xDEXz9}a9S2$bq)$G)^$dU%6X;`jewooekKVG zpZ&*WZf8&oqP*Xa!s_HX9~tWs6UFsY3qLri!uLG-Kt8jyu;ihCK$xW|ZfzcH*!2jp=E7zr~NM|s44U3ih@X=GY?M3Ev$|HCzFyo(b+DJ{YbRB9E% z(PdB=tf?Zc>+!s{kM->nF@5RcIuIECNvyhz3iji&wp7d(GBpz5V=t9LCllb%dhyX1 zWcGK<=c3CiwF|+LD6r@qm>&7VN((P*9;e|Dr>L7WaN+NdqV7EiWrK8-G*0kZ9<;P) zh~6`Wm{)elyZGi2kq`1aNN~XO2IT{%$nfq8`Br2t6-uV?iUn;kb)OX`~lZ^FcwQA=CwiQ1#wW*aHSJu ziWPC$zUqAZj&P7CR1Kq;R;c%|%-Wh(1id}|3o4ggkXvR%bf!JUTkb!U-NUG5n>_8apFpaYV|K*XJl*P^NNg4aM&#C7+`_A{^lk70HCCi= zrPr-G$D2V~RxtO~u|twI#jT14#dKk{veI^JYsKhtHP4li0=sTtWH}!z$<^#X3zP9} zvk~n1^@g6Ld7X|e9ge1jM2eC(!3VRGS^>G0#TdgVN%zXhS;Mr~28qST;fjAHeq*_! zKzPhd)-?=X)e8c7o(%EWV_MoS6q-d+QL{Z#eW*v85eRu;^0Y(rdqGYFWwnr;<*er% zrfm~#MwSp~Q5nF4>k>YdfM448yUJ8=sWUOA*r zqn+8*4ltUBN{-bM1&eO%ueQSdE%@RCI3l?kL1Y30FKVb%j=vaLUD{q6sg-n!CMPECabm6ipe{x!zE=(Q%oOzku9hzt?DXjr#`9o} zd7bE(Qw^5kiXf-YPZwPxI;QasaJM#sM>_Y+s+e1Q-3yum%xo-!tD%7^Rrg0OFRytI zfv8Ob?lZB3g2Yl@FkLssCy_b*h97{97s#kVCLsD3H06#4Ge(d9=?lYT-?bsl7gpyB zf93GEFxnT$@jgpykaXN{h<>IZFeF%vwP2_oG#5AZlbe9ifaPGazDqf$Cy~nLh|E0I zF1t@7V{82!^~EsI+;D$(l|*-MnYTADZ3RdiMpBxL=_6+DO!^FWbUK||U~^P?KYHL6 zBLO6W%_+I-VlHuDVrW`^^ ziiTo*#-p{JWcbk>Vq(-P!1d>TQE0Z9>_#jz{_pwhV!E~oCkj_8Jt>p!(7st;_}4)7 z6SaJ0DN{vKAJCFkTy>9_UUd$G zyz-bgy)Rfx+ePW5a86P4t1tBv4Ws)w6%XPVe*!xAv3uFWF@wXF0h_xAvMD_zLQpC} z`|?FZBmzGJraJvNJ^Ed}7}Tz~&5Glj+1Ee(xhinAA^qPjni9Zo>()@PPv{$#jliZ> ze2sp}%7Gu)`R?Gx2fQH5yWsV{aTgzbK{0%A;)N*2!eOw5R4RSQCd?X>{=r6!^k|WJ z@(caAb?72SIATK%E41qU2>tNuVgwsxxI5glFt!oMoecdqf4GPQkWpS##r_4#V0NRP z@06P7H3GqpA|mZOSHk88i!@0X2ehRzQX(ttidF)g_bhcOn)h&}2{Hzouu+zGd8A1g z(OdQ?>j*d_*Kc|3p|AcGnNnNPp2K0?{FEaLYrwvw{0}P-6KvK?iJ~wj`=u2kENug) zEHK6h)3;re>${2*_^oJHZ4;!`NeDEQ$LcG%bQ9yA>VniNsk!>~O?|5xstDGQFycy) zG>;p|b$||F{)idRqYCC*1%>VyDO!|(hn>~*iRNuezs(Hl^}=p7_doO-D*5hzoGe1a zoZS_X5DH0u69Z7r8frP8D3%_FKsQQw#BQ<6MoC6d6+~=r(OZY+7u}Xzr9J`WPU@d0KD97L3zT(?-x>Wg){0B>j_%*2gYO$FE`#m4vzE zl*}!)z`8T##m<}~`^E@3{%CNq@gBQXj1<>gNevu^FY>~=Cci=H>nYuci5TrGQ@Bv; zeN1ngw95XhuHD+Oj^`@d83XO8fcrzwCx*VZt9vsSu75MOHCV+7Z8rqzQbhEi`ZnNX z!t9nz^56ma=lAZLV1KeKbajgnSli#^!rq>3o43kV5)=*@*<)^o< z@J2B9B2<8hz=JwwFL6;u{VQ%-)q+THeNvc~#8oxoIYW>ESr~nrX8S~ins=fOFzN?o zCbvjTp;!^}29)oK0#24p@~qVH7W%m9;Yu%W41W&DZPZ9o@B^;J)xB1J^w2ysrDz%Y zU!zhAKFc!cDmg_pu+6Y?9#jSX@FGwN+KN0y*k1EPJ}wp5{$EA$53|sYNtC5Z)1k@I z=+i1j$Z8qk(nN1^v@{saQp8Oo# zAmd3k*cB?DzfTH<@dB@|Z*k=JS8Lm8Ny_{E{L4ekJ&h6ZP1OUN5G36Yd4L|uctZa`uCh?_oyH)G(Q z81-RG<35G_WnCyffEY0RV}-nbr)GVO_o5ggl(~`^;(8nMQwR9d#6Nh4ky(2z@EWWt z?q=T>!FHo&E|Sv~ZHI9tlJt%8>|GHG7#Pp#0J^Qw-Gt8mckYm$^!9o%-IpA`+vY<~Ru81SJr21n2E6wk zNd3LRQKT!T#YlU3Bd^_7$_OgQuk&vmf$#pQD226CiZcvd+}`Y)@cVol>N-OJflkdK zLOP?6y0ZhF?$TSa{pZ13NM|ZfTfqmE4Y&>+D=0UET9>jRsBn zV9$wIclxVq#Ya?1nyWyXq(sr3@Gm#@uSqoTg!kXCLE$fpM6-` z8_Ts_p~#1r1UGM#yjTlH{WgpzkSIL#U2;d%4OG9x2ypUERPT$m6&icuJ^mwBT1l}g zl%zbTvII1w0;n7h6Qy3jtQ6fx-h^XX`WxuqPFTK(P)La7XV8VLUV%qaY!eWDW@4A# zj#I796q>ofVAs)(aivt_Z&0?}um9*_uHp*?ZE;Dou)YJC%-7sbu%+hO|E}8QE8_g7 zakhC=;DH20AJP=bLoY+p3x85T>Njgz@a?9OW4NL!@*ox`L&>zSg6tLb37@|wr1X2X zgwHaV*-t%XenO23oj0s(Fhtj3u18~D+YwCf;}bC?yaX}jZ`L#{)=BO+TzkP-28#*s zzIj9$UtHhKw{G z5qY@=UDW0he05OeNJ8Qm3M$kZ5U((a*gh5^)-v(2tZiqSe=FpFdQ&!jOXqHr&)A}@ zl>v>ZznM3{J}IY^T0x1})ZccAVtPsE3s7TyH;@D`0_v)ms~oVk{m+LWR?4 z?c8xD)ex??uIX;oQ*zUum(g`It!Bn#SM5LLP6fu1s@8)R zO{x@OnF*)VAIdQ@%Z`r5M#I0{T70(qxiw>J6H*KIf@!7u-I|oYH-Y7iRXFtu@#!4F zrF4)T90&kw9PiBWn)X#iL$6Yev=I$%++I*SYZ;ltx#lDX|pKA^gpvErB;A zO7jf_*`ag&E$VV33o|H@=1;U6Mxd<=?fcoH^kZ9y-eu=a1Rlz%4cVRIcu!jrTLEtZ zNB7KZKDS6%x~nT1lqx6r9i>At`Kx7E{K4clmTRG$OFq`R13OY*{Yb)iqO>z zr12&wZ69Z_ocFMw(-Im9Sgozf=@(ee253RZEIx|FpC9#rYN{h+ABv-k9 z>W?W-KBuV!uFvRk$B9;+SqzX=^`;?hLh?2rvzv#|9O&6Qcg>zgwUT zOtP38$w5FU<^QKy5$<2J69@8``L|*JUjrHb^T7YIqW*s_g#YQIYVv~iQdL`eX?yPGNW?-#g~GP< z0|6$$iX$*nCj^1?q00tfN3aHwgp;SIr4wt`)-^Y|&S2CHG3Js}D_hmJKh-ZaU1={h zw^uv6-e)^*XO2z&0=#_oeBVuYUZ*%-wUy*}j(8vS#9n~g3f5UF`WVl$;N6Z6!c>J@0H;+paH};hL@{6xp@@an~Pwbof{>IOTK^^S0 zEv)3;Z_n->EA4w_8|(xHcm6!aieT&L=*X@OGY})|DdEQAeWmzNrs|0@kdLJ^KRbMA zO(4{mO{zGxN4R{@eru0OY1co-JME&8UixPkP-0}n`td@9-&&MO?=;KZ*fs^#qjjuv za*r9fE&bV|wC@tQEqsj_xP7|gdfQQE|9=>Jryx+_1f4j~ZrPIQKn!pp zd-kap^!Rbg#E0=I7WiX)n_HOZ$N1Xo@|}B{^n-nCVUm#=Z_^KLQk^%yskU&rsf) ze?Q|EvMu8ff)Fg@6v7~>6)YpsfFa`of<}sgp-~c{D7Ik~4<(lXTnI)a5b~kCvtbvZ z<0(%+0-omy7E$buuFw&-A(4+P(~z;UEo1OsIO4}p>;s5W3IwHcMj7-)m;J?I7$KZ9 zV-at(cOeIq=vn5Wc~;m)8eF7cSyvdnC|~hBE=vL1XaT@j_0j**%pLlHdFf? zLP=Q0UDqb!dBAWZ2(@&&ITrfS;&K6H74|hpg>a`Kpm$EzkXQ&e9$4k#FiQoY*x(R; zBy`fc@&1*>7d`s9)LHcA5cRCGS^3z=eWP%?6f7XzcZ<`jVMy7aJ8Z*X!t<<4sQQH8 z9~PYnhdZiI2_inVIbdFXO{i8*(H-pJ2vbDLmBg7*K+L27j~R1W?1Y>pk!U&~m=ret zEQy$P!!U|pSNkFSQf>7!_;6Lm`YUf*U({HcScB322*7IV65lM};aB@3CE*XB`5|?F zB1-yTz~KHY;OAKOvZ7O2hd?g-`q;9k=uoel=U5TgpEmjY7-lAP^(8ECTIb}dp_^D* z=MEVQ2X=763PZ8w)i(XAK{yzJet@o^8)2+jb9_heEU3?O_|`^odaCHwIT)69>1&sx zZ_(4=E8$_}I91TBGF7r!vEp4WGT-tP*!c~JRGE1VkW^ei$vT?4ZTkM(eIiEUv}E!J zqE8)YLlNTfn$Y+%6D1PsE4~;o;h1^d#xIw_{#>SYjA262v<4tBubB=~;Kg-ij;=N? zGRp%88Nn)~Fe7+K0D)V9GnE-i+%^+Q>%lC+4%k{&)7gthwPG8M@DZj4XVzdF@zJ!= z`{^)f$B!wlH#rN#s(MEDhA?cVB&)&0$T31XRB$!II+D~@){x3gY_$+g%W*AC_9<1> z&`lxOfwbb)e=7DaFv4(vq=jH-V8Ay%Wx}S0wriqj z#`WE2f_Nze|JdG!Mi{XkOAZ)muD3TZDx+Il2>c;Ega*@!&nVINsl(l*@?~ye!0;0X zB4QP1(-#`QSs~-|k>ewQ=?zG%+8FT=ltrq&^IH~*G+6;3Fy2kR+FyAt8-^9N6-%Ob z4U)zU?sCPoc~VP@5|5T&+eNFPtQ6e|0g_2r6(h^sOs%CFtwHT?E~c#vXsg0gzpxYS zCW|ugYr|zR_C<=4Xj?uZT1G-YSUtD*GZ5_k9kj%^0i0yx61<`obg_x1zU3WzHj zZ;UtjY59I0Ztw5>ewK1bTQusw>gtKaz5JBRC>jDJLdUewV$YXMU;dY)FL5 zPoclKaUf_G*qML)e0RTxfbcULkK&HY9WlX1U#h!*(OIt-z(xI`d%FjJ0w_6($Bh@+ z=8lT)FR@Er<31k_0`(Qn1FFs8#lCtOK%%|n?{yBt{sg`G_N_Fh_u8bhM<=x(?~QSG zhl2h4+z_83d^6%`&P9zaAB_k&bo89fimS3*s2Yg85B!izisn6u8L0BUwJJ=4a;4QTxOkiijASj=>p@wtx?Q zSLicjabxDxk)#lDq~oZ7#4+`qmQt6#XqU$}1k{nsTyiOrX}}EQ(9zHpLab!=92nO( zw@pckSAob4SU#~PbRA_%$ADUt4%JrF_xMA74E*@Ko8=R%u+&E8P4W#1b3j#U{3GYs zHID19bTM#n9_D2=xq{H|a2;gw+(q0XHlpa!fX!pK3kw$s3@CasseOjkrqN;Cym z)kxgf2(T$(*Jw(=WPAohn+;DwZLZZsjVlCaz?o~gmwB#+NGGE47w#PAT+1fw%-l9= z@LKmF+ni`gx90MiGyZ@a6G+0BCFdaXO79*Z;BkOW+@8hbzl63rcK>Z|iKdhl*fOl< z7rUUL)0S6P)>PG0vWid|wkToG<_UG(k%A@e3SW0KP547d^cDpH%P1yb&hLYPXG2(U zQldVq%eemM(n2YVa)xPmUHFn?jeG_bTl$XcoGTWWVfc;N-oFi@Rkf|obVs42P5g5Q z1wB$q+M&E{3MG~Ja0vB4Qu^IIxN4nL1p4H?!MuT93SBMz!15W8);@atJLsaGuc4H2 zP+ML_P)XVqy)!X}1xZ7}8g*tYkm8T|=4!z=5x!If)TE=#b3xk-%4%dZnOAZVGk3~g zb)CtE2)p8f21kEN)^Ke3#7U|XRk|w1;phW+XOg5gUjr>4FQ+_G>xfM8QspdNO@A+v z0x2p>$w+7`$p+(6O4i6s;(!FKd7=6>B3s7c>PsFHI>jTjYN6P9x(=F2e6H105!rJ}rAzX0Tm(O1wx+y_ z`&Z2b$P57&83Pp=8I9&~USs@IAlf%fM^;T22@MGcSX0JO*F6EOV6;7cudJ);DheU= zC-S>0${gg`!t@jzJ#}481;d7uaid}hHudhhgSLc<^M#2B;}ESQJq;Xd+vib_8$faE z=>f~8LHiUR7<6@u2=q1J68HG6L8${1BAppShV#5pilZrq(b_OI#3~GnTFU;|^){C` z1rgpQCb-p#W$7o>nW}E>;Foz44M4!=~)!|&3 zyAbz96uac zJGt-->xIS$96lKO+;Ok!-iFhBMV31#xdkWtS$XG& zM*`w?rjNhz%ff- z!A_MQ$1^w@>ta0DyNss|-3op!D?}oycthv2#9xf4kidj2Cinu;r$*2X8Tj*V>C##6 z0nGg-5%j}qWAymn9=G&z=z57epTMAE=gg%=CGNUt4Q$llV&nvB)p&{U#&&bv{QrQG z{$|3b9&2l;1UN-kX^$hloke>$;3#<$_pl7}4QHC;OF?T1mV#`I(Rz#Fjx4M*d5k>w zmQ~YcZy)Og`@VWvC8f#BY1YtJLoJPqe*s6ANmT;-qd8{tWgL*-HI6sFVi>C$Xr$Bm zG7k6tRsiHokBSnpiXJUYV5qV1N>CAPuj5#Q8)k2m=~X5f9v5lyXjGEaQGQdeq!(xb zo|QsZM$E^TYT#=OKR{JhNLj}H`SJ>ovyft!k8Q6UkQYL!flyMQ@a7upRiUS#5jA6= zc+Wlscwbn{;e_#Uy&RBS*dlb2vOF?VF)@*$w?pCzLlN$k5ka-N!=j=lPxSKWDK}4( zr0y_Gix6_ikc==qm#ip%R9cWG%`T8E8A@u)Le!X1evhn`CKVbl%0s`x;m6!9+o5Du z^-KdD8o|@}GyyG>9<#I_Z+JPEC1Jy!RzRa}lb$Wri10AaoKgh(MFpXsAuT(6-K8VU zCHbdWPzEOTD|WFsW(-0}s=~6bUOSUkKV!grH*Z9$x)wqzE>%!vbJc=^c>1aNS&BE~FN`k@_v78aEKr z)3l0>grO*aY-j@QhyRP7_7C14Q^CE4z7X~EQgY{=X||hUWHTSpm|tlV+Q8gKS=Ole zJ^YMAJ?PO=!MRSAGKWwxUQ=@v-=i3~=ahw$k9{XWu+bbQwfdUnOCO3()MvXTRjBxa(Bof1SRZ5J0DKK;)g%4k~k zi!S^+b)=Ve){wZ!znlITh5%nYpW~T+aCFvq}0?+0Vl?x)NSs`wjdvjmo zTBDhv>5{C46%06GnC+x$3Q7sN+IIrdbP`3?D(FY;Wx4QSjHkEmHY__Gi&KyTs~bX& z@!GuNwc{0EiqqG#s+8`Kc6-hCTaq@uktw_ zTIen(VpOt)mOkqCs$3Kx(QYUUu;C=lMKjX&zbQ(ZLP>E8hy{VKTi$rWRZXDMB*V>J zMKe7;ybSP3DN`+V6f#;h^P@k#<@wf9Zcln~(QHo4FxCF<)U&E1xDvL6AtEI-84Im{$7S*d5M zaG^9ojEDCj)Dtm_4(j@}1isn|kayus9 z-dLv>S;HOErNVo0bYF=jVvm9NOX%;-VtW3C%;A}*kxpR?k_l8)4)HACCC>om^}wl- zTl}LsvACSF=sMcu>)~;|lm-tUbmg8kZ>KHa@^&DJbmB8jo;nca4Uu1j9Czpj4jbku zs><|KJd?|_0=*@7Zhb9rl%G!fYtr-aUb)j`5+PkcP)lFNt#HR zV#5yDfmBO0Fs_s1Lkntlfz>Z5dK zZvz5+`7ci6`8sr%C){+d^W6K;cgpqLn8A;|sJ6)Tv^IkO`ygxq-UZW<0WjhMG``qx zTOoF+)^Vs7JJjqv)bu*g^g7i1Fw{(beZugg@0H10eUh59vf{JzsJ4SKS2l z44H?F(f+&uDV4ejK#5%gECFYWlZ^Gv*}{!GcCg|i*nU7L!UNb|g#6;c#LSLsM}&zL zY+T-E&R%qh7|9tbg@507LW~MXXMl?!L^mBIDGMgnXPo+5 zEDtiN50@1dL?4Q!?$6^=hxF4d$m0b?$g(v-gAua!+z9;K;_4sq10a|K!*&rwXwu&9 zm6WW+X>dx0Q3oBeEV?n+sXwGUONXJ6d3_l`v$0Kwpn z=5M6_o{-tui`@d5WV6QBGa$wMPyRve<)}a0$SdseFLExr5STU;@IDg;h}zzO8d1Gk zK66dT;2st`R*guycIXi|GN~E)z0Mxj79gxgHiH2&jPOv-qX`>wYRaLTEx2-=<(@g- zw+H$^N+M#tJl$VxYUrVOFZXB85@h0?*MulWaP1(`h8w$O4v#d}8l>1!3H?P-z{WlB zw%U_CAE>mqt*E5!h>x|ubQ`Ff10PIibz7qi18Pg5C=bNLKB0M^2Vs#`K9`Y}+`yRP z#xS#-ExNQwL1+T^9gmF`on$*Vy-`P!1Ls+z9Go-%IbE896oA;Z%+Vp?v*M$4)L%@m6dp4tXZB|X@5(Xo-EM`Uj7x7wty%JHOEOs> zV7FI6=X3GB2DKMsoZyml_BS5u?lIkl_4zp}rFkw|&}hlT*;#ivVRq`H{y2e=0g!VEKc|ub!s5Z}_X)*JAtJc~-&i6exWg1};$vLZNxl^I zl>kSaHk6c*-v++oI>4Ad9mW{gNWM>Yw?QEf*nC2F%ogZ_LUC;QEzt-Q{e8()qQdo+ z@S*&{GY<#{s5M9de)wr4!k4*yqcukV$O!G7sWId;<#T?dLEv~-XI?|V8_Kbgi2w1p z`d=-Ml~QN^3^}(8uKbNss(vD?W^#(*J9m=r>?OaN8>B)z5+tAG|NGUFZbnNLzkk)-sC7$`} z&UxolrCK^KuKry>C5Xw0Xok2Qm!m&w1@(jqxC~((K=CPqQq$wY9TKOs3pyJk*9;9d z%eG}N>AJ1!kg#~3te)oY5|42!QuvG3JC03*gk>u#r^b3hlVuGaK768>`npFhyhU~4 zbFnf3-Yz(?lIlY-!NXNpDUDd>`jL6*xbW3g zXe)K3burlhCk@E^K*ynzYfx)r=X+!=NZ0y+Ys2UJj4J?gjiT=U)gi0u$X)%Kd%$Qx zy+kv!Yn-ns*-(59i+jD+JW6XCQ^sbEFs^jiL##vNKeW#+v_EXtZ}5%(=!<8)Gbs42 z^rE5Wj+DY9LpBNMEF}R!&rB0Kivi%u0pO$nvvBPjQCg2zirOk|%%nB=MWH#4#zI%` zCn)gDl)q&YnvA$Wxbjh-`V6T55_T2?;fT5y1DO{ASPBC^!eL13_=``Tsg}{Q5DaG{ zG_zDCOs&I7W@_%A(BLYdMFgKC|)47^ie=RW@XkPt&=kcaDNirCsO~ zvu6oQhi*(wZ4FC;(M3?BcgJWoGNsun6g*v|a>+i`tE5=bD<`-}BkoKx0=7Nqo8>t>NQ4fvO02)8?(|j5mapk`p6v zETzw>2j%p}q~0eNbjXfI+(j4j*()+$x|ARpN1Pbni#guQ5#k-mx-oZzDc>aUpgS{%emkxibIRvC}%y2*Z>6T9pl)6`o~3X#3l{e zwm|y%c_WIeBhSc=CRw$@kj+~X56x|Jf5uTE@AxVoAp2PLUYjbxeHARZT{*R-_yb?p zamvk$>AIh1>tYcT40npFh#TkVM*+`QVQ+|T0+(vLV-mBv+;jp>MFr#L&viUz>!=OR z-|x=79?jNu(3g)WxYHZff~)LX0KoclSlMI84#gH{yQetNLuB;LV^&Y~RxntI*SEMC zdchPOAmTR@h8#UOk55VV0KH)APOO-N)dKa}-=;0-$hW7uEV}?vUt;DvzCJA9KUF7M zdxE~u+S7Ky7q3@!!MlJjw{U9{H$gm~w(cpr!1RY%Zm+Dbadu+hxB6KWywRHG@izHF z3FX7C%8}s6NU}ZH!9D1~J@CQb>>Ja_4rzQ`%v11$$GG8Xxgt}u#K-6e4^m-o|JbMe zVoMrWT&Xf?84K6-lyYdwuY~8_o~jHqzBb!Nxb}{24zO814Al zAKQeMavJn%J>+TP@XK9n%ay}OzQ>YiM-RO>kso3jUga7eEJMzE64A9H=Qx!+TOyvF z2As4u;2oF>Vj-zTbL&BT4LLCI5I7q$$f6UJ)%``43r6p3&t}C}Rzi=ckOMt7;j|EayejO-_@HXq*DqiuM8#HUCbq!N~8c%BWfVo!M_ZOeeTz5Jt*q6Az@U! zzh{&hQy(JM57UXGVi-sB(l1+sUK}=Jkm80DIgnVYE;WQa6i=2>Pr1T`ot@)$R>&p6 zT7h=3=cddO2YT_Wx?YG4wQ0+pPoP})HhvXN+sDM(zb{pO!UG^aY=pxwcblMkZ5(Sa zdh(8y)hv1H`}&&OKRUZRQMadX7{4%Y4eOLOexWDX?Tz#Pv80x1#FWd`YZUhK zKu5X5!=dC2N*vzZL%D8>BZ1PrHSDhS8~4W}Aq0IC?`JlT*Pa&%yVTfH=Cpnc-AO@`AWqI=xQ=EgnB%$#h| z=4C93{e>NCo7ia#m%SR7{Rj?+1TY2Z1V4Q}@@F(asNCOo!eLJlt)Jnads_aIV0;6H zDYaC-vId%1#<-Hr!nZX!0(w2v>{vDp>X}l9I$v&p2$m;O#R6J;ycR_$)0?QkS~FU6 z*h|^_IAv;=TzT~x{8u-8eN()eR3Eb{V)gSiiH%{J?wW38;?v9XrL^uTmc~m|BK@!$LqObU}Pm0fMY3VNf3A=qg2N-`Rv_8@~p6>!vUFw5;1l;VOSFn4HJ} zz6~ZUaiYnd(-J^RIJ4nouz^bwOAssaemE8f-m-|lfCb(4gZh*ftnm!aTMUC)hBcy7 zmaSRt)SX3Ik%6noXc9KeF_U%-?ecKFcY-Ogs(A3u?(|E30ra4*9Ep5AMK^^+9;bGzy`>?2*xwvifKfg!MPM6kWvEI zh&5(o$5bRoMu0mPi8qjvlw)>qVBvS&Ah5bo{Bf7I>Q2mT(qQoX&zB6_b~H_zl_){7 zAzsVN)bxqNNf{pZenZv+ka$1R{K`QL(whL^c=68+-9R>)Rp;7i(3H9dG|#~%jLp?mA?u%fx6NRc-;3FBs;; zu0h;AXq0kKRN?k?=$chjE6bp2#lDWUHBtDk{?t1wptt$st_a#WqIeFefO7aP89pq?G_N)Q%ny_nsI$df5I?-kX`N(RnE%0t3*_MBDC z=tP``ZB*`5)bjV8STWC z@f)fnpvW8?`)H)X0#rQm&EF(x*6~n0JHTf0$!8SH*@9<-1|Rlj@?Q?|I$fSCTFXA= zdXD6kGghuEc+`aPqECj@dKjrD;Qc^)YR>YwcjWyTV1ZEy`-RA?H`oI6V9yFhwsS|< z20w&jMcRVxnJ@Wl!>q{BqF2=ePE{1Yi+?^`kh2Rzn=%`WYG@yX3x;v!AfX&CU}z=r zzBmiCX=P!aG%hU5Ifi7b+w4RiS+K~+rX;xZ1q)^za05_g;WbZF&Lcpc>3R*9^C z=klO_r6>EPeC%JHb7gn!Y_M6w-HUS=cR3!UWV*=MhGtXe0(^F+{=)JHVm`LN236t% zF)=wA8c+4W)AwatBzchs{2X7ao~);pt{(N=cI27u3OS#3bgqvpP!Wl|?>-B+l;9LC z{|>^Iiwts!dMRP2^Qf1VCAD7?JTHq0Bm>9Z$zAIUHl$UzhD~pVU7W=Si!9I*GU4B< zNvKg^XSJ!ea*pN@bk@SU6C7M7AJiU^>}Q9+%Vq7(WgpfV zo9V>RsSBNi8xxaP(b!+7w{sDNr^den?`i7$oYP}DDMO`-KMc2%&snw0v#Sj8xk?gM zRBgpgYLrvki$9RlgK6^wV{tE5ypjq*Lx>`4{b8yoz$^X!8l21QDcFT@oYU6vccWG; zbLm4e85Db>gDiLM|E}rmLf!B)YWRPtm#gigJ78^xUx3eDm+m_CYd1hYmb1$a;Rh$r ziEq`s{fe*sZhsnx@kd8DEnn%L6`!2pn0h7g?j8$?bEH*iXWi?N zdGus3sat(ZOjEH&^X^V2pe9qPrKmrmSk=&!jKs-FIgf7mt4NjH>VunYt0QsMa->L= zn|wVd0&PtYmx)J5lVl$Vf!iOLJ>Sjb?{Y+jz3>{A(Dl3CnW%QD8DxA=BbHY4gne+S zme}SNdmty5TJv;$u)7DT>qNf*WR>`W8kgD%eR2lL*Un#wus}`ktdVT%SY1~mk?Hd; zwIZckKrX6_QR6dGeHT`SQ}W3)hi`NW_y-e^vk#wiQ_)PuK$i$YFl>nvvk5RAG0qXV z91tH23^@T%*Xtu`Yh4Pj-_BAknA-|gPT1$ZAO{lCXUXO?Avw1XSv%BmkBcCl5wzCF zfj-t8D-i0~UAXWKE1v`FMky?w=n~jj&8LE|J*3=t96EHt>cJMKMz$ej+8MYcR7r66 z1o>>+o5wT%qU>@Q{F1+uA z)D>gKSpflIC^&Kn1e(Qq?CFy6DkKoNr3=%3RfX(;VEIDXFtRpKZB2s)ZLT0uD9D{_LhJ5+?$l2!#y`Ww*=P2s8KsJsz;JvnM4l(^SYM#Z0=#r@oup#g4r}Q z)484uirvX4#giM-D=|}gLh}TU?-a|AC}#qz&&C=eaWOC&5ilAdFdT@O4LBo~zPFat zd-m0E-W!r>rJ#H4pEZkEc>-LJnDtn)t22R4O%MA(R|##_Q` zi3)~vd$oNl<<1^)IgOa@eX>GySv$isYuI1;$j6$_vHSuSd{NDG@JGmj6YrX>obuRV zqFyDjzLG&EFUD`1OOR}Cd}8Y89@Tn?^-o-DRILXhC3#@($lm#`EM*%kb8?+%OidRC zWg!Mqoq%MPYy&7)WN9Tfzc91ReD%$MXIE&P+HENE1NA^xaOOhan#Jp(?p@S%HZIs; zo_M*2m#>WM;BUBKd)2DCS=q;6*QykB&r6&Rn=9iJ*9KT#7j@5T(+cnOgio?^@_xzO~>06c-oNWv>Zlt(y}M_G&l9w4J89R>j} z6t-?`Q*$r*idwHSwcmr|ah}G_;*LrQWL*q4-lZ=EtRW zQl>DZLq1Y|_?JorUCk8{oXTbjk z3OvzE7=<}i&KdZ}8P4nsXl50)OFKE)@Oo`?e$p z@WvbVxXw|Q+(12Gnom$6Y9_}i_R^9ZkKA^GgC_j zV!@O2-VX4-7VE7Q;mr-_{>DA6Xmxh=<(1=WMtGM-ivU4Mq& zuQ2q--I{Ttr}?K7d&cLULx_gleW*2u7M(mGuy-2ej zMw9>dEQOM@fwPO#|4vavEAQHE8l&*&C9KFEIA>=zxCYJ-fJtPq82tu+E>c>~Qs`tF zIj>S+2|2=5JV;#av&xZgy6%}Eqf-g*=D>3hF39}fa>cklA_yyScg zKIi&<-E;koe5DC!b>N8l(?&F`LRkabjiF{162eny%hB_9p&2`-c`#8OHEhAtn)NE=iZ5Sj^-Mj57~$fzWRam;w7*po z*S|h=^dEjsEAFNq0(&OK%C>6Bq6-u4qOGZQWA=I-r%mcv!#J&K`w=URKeEVXz2vs) z^gWenwFF7RZn>7tZb>QsoHa8DlpUEBqt>RAPwO?Sgzfvb?6Y5+xUNgj4$cyWv^arb zn@+85^;!b=#!FUmwT1XzL5Q2Z>R@Nu0t4-^m%H8|2jz^Bq=3XA=LFWZ7BN(xT@l0@}u~wlU%B@6Y?0T=%mng;m-w`vyS^y0IORm2HH)H2zqfuI_0vZ5Y*4 zTLf)2ZWKrLO^C_dC&t72kdvEck9w*#|O}XHQYZ$H)W!BN6nUA=^pz?VyLGqVk@Jr#qD?RwhF?xZr9AlOo_u{n|xj{Yg03BDP6IQL}JLh8n)6VWIgf**{8d1FInbV z=k+yKv$!^bHoK}ey8;ObzGsDUCxkG)I1Yjs9S*x=s2@ODt3ySQCTeIl+rxC1$DiF9 zFTS6zZ6kovdei|#X>bP&^rEzQL)C~##i`(1GP-i{V1zzrfHQ<=Vq|{SzuEw)q@E%X z9;hCeKPk*L6EdKb5ndu^;kRATgfs^>s8UoDFcIU}0R~NV<9tWsoNTL!CabJdPnaQj z#2H)1H70-RU;u zr>9CK)f_cK_M=QV>DabWb?qSW?*>mV|0&Y*0|BEX)0;RYZz(eBNvb#^Ju+COc66SB&=rHR95~(PU(P`0Yp{K&0;m~2kNP(!A8uMZ44mO0O-bI8IvX>a()LOFB z4MS!r*B9*LY8yd#O}A=SSc;tDrJrlYZ)z2k>~n?B|AFb zh;Fow*@Vja4xk7A=6`tJ_Z9o*l4wk+qSU7 zd2um_sf4;zCznNp(ysjiTDaD~KVt6UZ_kSbWOtm)Zvy9+zp({pQs!yc+Ud-* zfEz9!aoxCtG)su-Y3IA5o;oDkRgF5SLh8+{^pwWUZj)q_os`TXkIFP#8wE=Zipw#p zJg^4CeW&?g=aunF)W9GD#u<~*rDQ8w7wSAO?sg=JFRGcvn(zd(tV19@Ug8M698-NF zE|2Iwm@T4g2Qe4)N=b72!TCJCBlv(K8{xnX_Km@N+7|qYg86vY`uBvZNN6Wtfo8z}_RL%>5nu|qN0_sc|D0>=wBlkh#5=K&3-fI{*o7T!~jZ6juvdz4E& z0n%t>4~-Nzfb;OoN_7aYagVUI!fK7{A01Py!Qm}!qi2Y%rKpImY>NfLD+t4{|EqV( z^Mfk&3XA$Fi}~Hh@+m<-$x*?d?^$xnb@Nrm_6_gGYb?7;$Z9CxbONp#=#b@QO=zjgB>hXvDFvuYf)E`@zF^VHn;jB# z>A}<29i0xh#eTxO=Yg-sLV6pRpw)j|M$pZ&p7qWjw?KhXng$1VcuuyQdLOd!UwVE% zUibjAMiTc$KLWF&Xz0J>C&Xk`7Pqk!Sg7UiuY${EI zx6Jf4?(v#&sJkZSGAB~EGw_yhyG=D)Y}0dk`haI$fOr#nrspzTsI&6_*l~E5=u$iQ z&C{$KD>z!2TnD3hBq-Wn_@>Kg8kRbZR3Qdw9QSkdi-^!SAdx8_F^tD;q1(^63AJ8s zzzT=-SWrWRb+X1`%}vQe3ogR5xM^7FLoZ!W+4jZRD-EOEQ}K?FQX-_p)@RWxf)68CeSq)4+rnwX?*g3hB<9MtO@?cH|!~*<=!mb_8*tKByD4 z`lY&c^>opkXRP_@iU3AZ+4jpjV2gw(!7`n78)HdGv<>F@spny-jBVD$^=NG@!p3iO zimAem?)$E=2L4qtJLq&alcFAqy_X0ddHyup#Wc>%OuiE%jLov>=urA7mHbOF;2>qj zo*~JW+5IDB=3Nzsjh9gpozThJKgn#RJl-Nn!kA@&)}jGJs@~issElrSobPxjX0)h)Lq=k@D_H2?lz#V9omN3=|HYcXa=?yHp-K1%j#_jyOOO6eXRr zwr1q-<&7+3``F7Rq6SZQxx)^uWn+e{`F#Gq9WoXjS*79N!^8WOHpD#ABIKPMuj>k4>L+rq$$rw8e>?L^Cc4%>Pz;U z!CZOhqU8)i2MA1Rrr0l%y>Ra{2I1~|{vu97d>+~ZbXK|}ic{MS&PCI?Iu18_bn0Y$ zq6aqHO-nG8H+u=T7V+vCtncaU)lkMU{?H8Kn_)z;IUxO$fNG(YD?&2E5VYtNS8+Lp zkvgLO2fCkg08K_{XtR6lhW#VQ2Rs8SiV9z9bqq7 zJ60CWzSkHelTn|{LZ=dTsr44{guO}F zpJK%@7alGiuk3*!B8RjGrC$L|Mvuf)N(vU~;y>~d#BX7 zGbvI<$f?Zt$pCn|gd%cE5}70yt2~A9Mw*=cft^WEvHnJm-z#%^WHiuO94|dp7kJTT z)*MVBA3t58^7I|f3sRkv>e?*WtUN88>!ErthWF}H{X$s=*DlSlm49NJ57asxwdsiG zQhtJebofF9w?{v03uV404g_!7g||S(pYQktiODTL(bGM5Wp7(Xgh^0^jGV*nihTY7 z_#eSOPQ=rz{|ffwKLyM5--1;#aIzL~aW*%xb+#}v_^pQeU)@&6$UqG+AO!E4H-FP= zdjP0G8E$nt=2HvgbAb|u$SW-rHI=)wqT}@mg;RzR+2UfD?(})zY~!zD|Hbqq+#uu( z!lU1oz$yiCOR&edT7~3uDrpbbIC3;Oc@j9VOFA?RZr0}3tqlF37z{H2?i(WPU*uhIa1%pRbBqAytDl0Iz>bA?^Hk+EEfTft6HM_*|h*n)HWm_uqQ?D&hyNfnAVUVt1dPKTv zEmPQs^_F3`b4=NBsfr>@Syb&Xt{gj5BWdqFranYyIOk!Hekl5B6C3p+-tv&@qP zR9hpuOfOI<4T7IF8Vyk2vgoq9ACj!6wih$+qP}nwrxA9*tTukwpNTv zQn4yG-#+`CcJ9Oe{`Wqt*4E?iVaz`J7`=}^&(JQUn6jp*+CzhaRJX~j6lKfLad;y- zR6e{?4R1L&vJn>6aY1hmYk_3@GtZhLl7Q&cE-92ZOI*}cmymXq^P`Qh3pLi1oZL8b zrDn;TJ&`Di=w`>3RCZ`-6S-?@6_|UzR+Le8OgO%>PjbBi?1D5znJ2%MA6PvS((v3w z+9FNY9f~h%=wNmd6d0R7wvV4-Y6S)7@Fj3crnb?CQL$c%a^f>_#2e2P*1j-A92gvAmM@zRf2(Ouz}_m3#QL8?B4vEV^P0#5HHp% zF3;B)u4k2hZLM?^E$bsjwmwX55;tF0*XDrFMEj=w($9WUw6YKxhm1R5+{Ljg(l+jI zB;K4t@}~s&4~cGm=#&T?hskY4)GnG_5@1>IVajC*jjPAF*H0hWsf#!gr;PtkePCj^ zK93j9E8K1#qs(Yiyx$~SI{M{zyc1*>t{J?!#dGZaGCd+60jvNuJ|!YSPp4!Raq*Jl z;u*^8Yy#7eM{N33`tW7?D2Iwpf&BwWYGg+&rB_Fp;XW2t1VDIt-?r5T-x0t{F z>l~FaR1Gjz)jy&;fgWednZpEB40UO7S;2$d4bj|Joe=hl#7Iq=>Sq%l~eN zwC$1A5&p`#^|Z2M+t4{;;gGuynKm)nWTudDBnY*uxXsiQNFw?g80Q64^jLFVN?kkq z0nuLzljeSeh>$`kExjd5eUkfL;ZuCharaL`4?T)FWz zHB(lYO`uozllogmGg_RH>`-|JF@mPP&Ewh8FdOX`lzS-}4U92O)I{GLCZIhH|MBAL zwW^g`78B(+maywdzu`hGurdWB>MFs@_auC<=}EtCL`#nvHI|!d-M{|i?=7@cHzjQz z@$2>&K!3JtgSS_ILad19hFFob3?OGoa|%(5)0P|0LPzKmt%G+Fh~yi_{1!URClt$3 zQZPT{1k3(#w(u4VZ@=D`G?z%?#DdJ%txR5 zsyU~fjLmK_)vH37+Xbyd+wJRrL^i#ki8^794b!FVjq?e9_IpN#EWJZA-l=f61q(Vg z)N=AN&1YZHY%$e|Yh|%BiHZ3?FpEK9sW zQ2*X!U7P*^0zgQRj1w%%kVPues0?ZOP|-8TGcaV`@BVP4wL*8dwx*^< znm0mefHFa1%~z#twa|`krPF9pt9f75s%kytv?ogj5k7jSn&o}Y_5RKIrTM#q-n-Z5 zmhi_Ij@S(0NJGSlzFM>9k|)z;COC@ zC^<}iGY^QE@sl1hqjY+oVc|QRuVc=u_CxlXGdD6da94)W@-Qv;#hl+8PMH4V%wOqw zyub23Bh9@{d1wKcvWk`IP$$%C;J}8qwfM2Zu|B z79@0*&hzm)65ODM5P37^iN#0|$sZFLnpk*KqDY!(q-l6``zx@*u(Z&Y4#Cc0XVjIg zVp3!nXKHJsDiSSJN$e~t+Raoly0B=mh&l&220#BW0n1cfo4nkL4hgolA@+ZwBKBEp8|&$RM(`{{x=+=?WxDg16|R3(cN2&@>k{OgxGcD0L&zd1@tQu>llY zh`H91VG2z-+!D!1pcwPJztu6D5t+(po%Mk~EJnoh`W%+sxxNUkqoC;CeNg4~r#Q zQU-$%ttdWWa}`x8iumPE5HdE(L%^BfS=G1A8H@T9FZ6t<<$NIU55-uEJQqrpy#tjf zAMpBA?MQo<@&g3RP^*WhP_-u?D3uc?EJ#XCruig7VP+~9Vp7V+P;>_ddXvK7@b7nV z0xJ;t>rJH6?Z8SZE#;}#)@s7qwiGBo2_3fCbJ^a{_5pDitguaO8_LqcRqd$~mkV%}0SYX*t6_r2ny8Gap5KcmA-Z9z zK+b>rtdP@(e_xt~|AA4*fHN$r`iQ+2M|3+t;9#125Q*f*hz~+}AXH_nv*py44Pp=y zxrC)<`%{CvSYAQiY%SKxo%I=`2UONelmz3@^Cwvp6|MH1fyKE^%%J-D54mUE*19KNeh$Z7oINi zWTwD~14G~Foi5jc~SX{IuqSu-odtI?J1)XaNlAI#ZIxHk|7KXI@fd=d@V@`oqz_4 z{lX%8yMg#*$@3hB^9!8o@daq-cl6`45zfD)oL-i3dZ|TwGl~~~$$E&yD;_gaa-oxz zhzTx^YRwm|ogTE3r9QL}T@y%p*qeJ1>tzFTIO=r{E<x1fi!YMrV)4B*n-j2!S{2oD;c zv&Xqy`ERK&1QWXr<_x?*>9dbM=cn7^W((eMy&sp(zhS6rlA~oIlrf1Q*tA48>Iiz6?A9pRNItu^ZzMfMfZhrl_m&@YlUO{2UqPkM@H$ zOWStg2eMY=goS4{@Tq zq&_&LpqN-2_0&!G9B*;tgC!M~GM2;($)pcvW1btEr&(6%z(#HqRlqE7eT%9QwkEJy z?N_@;`icm(zxoMed!!Us5D#fk8i?!%}o=H)WahiImUYfXy-&lalwIGyji zuaEdk!4sdk@VacFVuea*1!8Cggt#4ZtPziTCW4cd(2r)Nx3k>smh@m}r6;dAG|3R{TF9!0Vm#bSqOT`#8-syz~` z@mu1J+lknrE%nIZ+|KKhraFZhBA!-3AQbvuD0CyEXt`oZ+Kw3iQru-hzv(k~5 zhCjeOH{_wd9&}#BNc$y>Pi*sHs{2~ z*O(m%M?=NeRNFU>4y32Sec5*6^flWR*{D~tGkN>O;4etjBJW-n0#!su9kaLyz}~NS z8?f3~%oDe&0owSo=UcD12+lF`=I33n2n)_hl8pPSG|uL36B7C&kYFW)9LqwN!<-1+ z+zo%NaypfcTG5(WR8zRFC8KW08Lh~B<6i`wOrH5{V)Qq+`fRc#nL^!f#MkqlSwUop zNMpoeJrp|hkO7Bmn*z<4K{94Ug%R%8Aw)LG=n#F>0tH#VstgW_RwVz1bH6%b3qsCB z|2g`U-u0o=#W?kweJtdkWV)ESmSmyB5$$uW2JV{IEf9R(K!jw-O%#*}V+Jjm5e!AC z`EHP^7=u@aoQrNP6}TW`0J=t6^xt2@fG@PJD7W<>G<8|&`HRdoq~?wbtspn`deSoo zP_3ZGst(e##xAt^Gl!OWiY_Zl8irT7WMzxrRCNARZY0%Pind#Eici-T82#LEY*zZE9qit`@cvm_oMw9 z9~c-IFqoSgn3@|Hn;2N_{>NhBkxJWiwu%^-++5PKPEYl4qlg&T>(PhK=iwsH=l1Y4 z&gb;@FwkdE;YZTP(Fcxi0+Sfn&jg{*?BQ+~->>58ilHD#B3g=4 zKU4$Aa4{nZ&2ceZYuC*0)p34CzPl4@kwB5y-q(HkJMnVoRUoj0by@S1>DgoM`x(El z*E{F{Lz=LK5D!``MubsY7$|EAjm(e(1hGMg!#Ixk+=wor7)VCC!kbXW!1uw-l!SzY z6o!#~_D3Z1a!f!t!YI=%rQNu*JLTn^%{E-Dt%)9tFcI1o8NXVmt=22a784F4iJf(gcrn!- z)hdwk?QJAjWhS%4R7Ud78Dqgw;)luhuuCK+CcGl~QB@XZ7k!~%i>drx@$%hSPG>7s6})%$D?+qj%P3dU=Mg?iHRyGErHQk=2Sk3x_N z4Y6UdIOD45g{PYu0}IERXbf?9Uq)Gj_MjhDBe!SXCP9+&OD4QKVQ%v79)A3qIcGw! zo#zi=d|m;^FNhl3?g5!E{e%+llAyZ<4FFoAJcMahNpT2YQgd57Db2ml$KdJur0q~5 zqzekiet!r}93t@Yy=SgUk}*U=PBGtbNB{?6E$m;QnLQ%B=NS@*`|fkMF<4`Q5fJ02?df0 zF|cZZgj5u+kOY)XIVq!e#b4RQeo#jQMKbz51oKaFxLXDgAhB<7I+HV>&SrD>`T4*9 zG=Q|GQkgDKAL)T%YNzi3U!0x*bVr3#NYs_*7w1>+BMJ{5v>HV8R56lV=U=zO*km1o z^Bln>bC+6U3$8KR*tx<)dyn21DX947;oCA4v(b)0wPBz^ts&V?KKQV^$hH|Ti(2&V zp$49E1+G){lD=hn3#^&B(};IpY`zcf0p4+=%IWzt2BB#uRqFfmTSPq^iHB4QJiNt= z)bHDH>#*5`^c}Jc!=&I}#qBg|9hJdQ%h+e+?DIVYTPxVMYwe>tNwuebuUcRJnvA~C zb5%sL#1PUOCk##d^a$u~R%t$`p+6ymBbB?cU`_ zF&k&_l|FZ)u;|?AQ}G=7?04Ek_hLf%`y7eEL;`s25>c8LDjxu!vi8_U`6E>{( zIr{ZU218unoxIzehPkO8#y31c9BC1mk-{jn7|$TMi}0Hu%#ceJ(m14JQN3R26{bOX z7!qkwK9|T9>DMkPcM!=2Dv<{11#6*q3?om$3+Fk-r}22=uVGIiv2+?=!Hbt55>(K< zB-}9(de@FLE(&G;Lis_=6k|6{HUZ$D+6uQZVHHHN6K7!u6qx}ZCy&d|Ce*bzY}$}L zyEdecT1~$e*Rp6u>sYicner0(I##7Ju22kNmi+$<+#P3wZv?&z^B=Fs{|xTm5#j%q z0RBA+{qKrY+_GB|K;XsRax{W*?Fb2xmY$@Qw48a2go12QkwQfku`Z4%i)~`kzS5m? zL+A@t5EP1l-!DRF0t@u0SP$oHYBHbwo$>h>Fvb4Ez2TrBb_%a{-wKLWX4-)ED7%q2>?BpC(QB}tF@2cp+b;>lOt++9 z#shyZq|UW!*-l;gG9#^cqV?RSvYS#d_@p5A*woJ^)|pf~(`!*bia+GRM&|2wnWkc7QQtV7&4z zrkb1wsU;(b7_Cf))Zl3oF`_z575PI9bt2=#mnp&lD7{og62BP+*cUf`m>W^0zHo)? z(s0k8nrV0^yyzqu^q@I%Ez-wxytfBiTLefnuTip3R%YVz#BO9Z3hhzNLFZ;~scA4n z`v**$=D(1!#u^~46FJ5#{L3|`ly3V9-Qd{Ik}p3ac}39U9Re%a9JyRxMJwyIJd&-< zTr>4^Do{lhmf=PhmLc5=;~l;#*&qW6NAy11rTKsU15x^_90%>+id@lmHT=(&@E;&b z*3{YA(A@O@8jLU4eGkTY*}JT{XTi7wgoCdIASjhHA^TNoHN=S;SaenM-f+9D-$P}EhW1*dwx0FbKRAc6BSh^3ykwd?fI@IT5 z9%jGdpDhllmHRQ&Z6m6-zzNR*k`iDQzC4Mllg7=5%RySqdV(M41HI=#0nB(V#n8NS zCQz;tLa}FPZ!zm=DSGpUwR{OF_&?qf2MLSM36FO`%6hDR?7Toj`TLr>K92N~lVf7u zS0*9ar%M;rUJHCaqBa*YZ4JcYzF54Jtst&Mm}-d2=+3w^*bFm^>Cl=luaw=o=G#*d z*C3M zHBU;Y*JTB(FWe8+nh}NlrAFPx79yfVL;z_aLMz=k9BRUD#;&%YX8yLF#^>^li(ENw z9tS_oL9&^yi{L+tHglUoejwtKCp-5}arWJFr`dnKKF{_2blJ}cxsQcOU2-GI0cxT3ov+fdm8((FOG!Zz9SNxw*vt5kZpqAkflE=;opmTIQdxS{YUk_G zqnEBE1w<^BiZ8KN$?vz*Co)12HdTj1MWw=9N-?r%G0_kkA9Z~q1I0xos)E9ivFPHq zA}UR~UK9$NiSBUGhI#}Rpn~F{{zIF?1-4d z+qkXBin({ljVXT@+Q0EUt=EqkT}l+p^tL|p4A+)!W%}Fpm9dH%h}NFP0K0wRqztp* zMS|5l@TslUCOok?1K=e!alBl;ZWaf#VdW7bVQuE`VW3=A1Z0;RQ*Vk=?!RRk zd6}9CxN}7Rl~l3#M7xBx_pW)J={u3V6g5$pq$rz(jJqPAW^RVzzh}blywG$ZEVLPF z?9P-OGYkMUFVc7++fA**&^QdUZ{Ww@yo!*JX2qVY1igV>CZ20%#>}+YS>3BxxsOut z6+XZO4)sp-$nsWx?jCaPP*fm}s5nOPiJhJ=b;kR#^gczAr8Pqbndd&`E&j$l=UNO7 z+~*Q8fPF`s7q7HKOq1k9TM(S=fZ(rq6Kw{U=u$g?1JN7&go3R~csT>+(h34>LJQpp zfH00Xzr`fPD~tRc=B6x-H*(u|b^$r_M1U+wEcwH?7#zX(0Cax+D1IS9c?_|6i39fI zhw#$~R`6cbBeuk}65JipTZEU_Lz+nsBjxFOl}~{(`a?re>v@_1OAR`0I*+^tbBS^) zu!UZEa(yBm@eYelvh7S*<-UoN0%4G0LoK%ZHeB^^`b1}sb%galJb?#TW(GS%97;;x z??LX;SLGdIdXu}zt@?96&%XWvy8%WX$fR$9-WuZHxX6E4g%Fif6P1xy_;2MeR#jX5 zAICBn5*emAu3|$o%AFE+5QeR_?N54yAX(U-g7X1wgqVi{Ow6+~D9gJy?D}15`pv%Q zRjZ)Ys$Sj~!v13Z5?ePgkZL8%;a5F#yXN}6yxw^qcWd7sM~;XsC^!OaQSvYp7(jD^ zSO^Q%I3}hsVhnYHqgwVHq_dnLIGKq|t<@|w33`Z&VuEy#4w?wMiB!VJ#qnUJ2?!;M zOti@ok*1;`bt6+Pg+(ysc+C7Xl(S?)BZn4~%|H%BZ4^f>jQp~QxW1U^C@UnPG(9%b z1z9rEplO}O22wH0Bj`?<-qiHj+JndlyL6?YiDMveS7Kw`J!q;n}P%E9N-gdt{y6Es=f9gT zGuc6BtL@&6lF{Jhm6|y0bUoGFr7a#=dy%f5GK;y?)P(w&a)`G`{#Uu8lC$T~o$Rj3 z9L~;T4Ao%Fc|-jXATs^b@TkmIwU}JLQcVvZ`H`Z?ZDa-;xU}5Rn2I}h5(c&mF2aH; ziKFBY6(`kEcLe7|wL2tDbsOO#tDV$v4Ve_S$-!?#l>w=BC8!lNe-mb{MHlg%7S$er zi`sLhd`GvNT>p5$Pz|PVM-^A@0c?p{ci@Vu8{`7LNIb467zgR3v&|hy%(QC`jt{rP zK|XWha;1GLTmtSLUZsmv;+uac>{EPb>{EECysdPH$)|n?dO~{T86{Wsf~1cqZ}0yl zVde6mcm(b!G5GrnpSe`4>`+VHS|PX=R&~wl)JwrPcnZ~fv*NfH1=inGCAi?gjC!~F zJci3_cfVRpN0|O$CR(+uMSk#UJy{wzCbPZW=|p9Cb4}~hVV<(~K#MWgM^L+3(o zxH0cuM}>-MIGOK3qxA+~K%41=E+L+#UhMhd(e(q*M>wzz9?LS(HDj1NcqV-WP9vKL z{JMRT(utE8b#}mYH;?$ulc-OynB5VxE#m6h{~&5#_DKTDAqU><$JqiAf2i}LmK6>9 zVxw_KJsV%DHG;V2RLn8a=DdcS^?aD5sTDp!ZwwsK-q#Q8-*u}Uk-9)-F9_tdSvp3f z2H@ad|JBR2haiWYf8!@8z5PnD#-j)^IVn0f*63F^p7}3>%ji+F=ComGz z3gvksA4@u{Ffjy^pAk?7Z7z_fFg2}y!v3vcw4UgU5GFOg?W zGq}rmQprhTuz{XEQQOIcl@klTlAEA2?#fH$=q}7Y-mmuJ&>uxWc6bpxo(zzEnVFNR1YpXN z4D@2fiyyr%i0B!+c75D1#(d}U=155Z_HHTK#FIc`sK{;BZU~5O)NDSK?I!irL8`Yz zG)tB_2*8pNJAYqe>e79_$AuTUTBxAx!pbnQ&znc8Y$6vbQwe*46{}HTB&{zRzi0=C zZ+{OD+hGb%3FuiDdUAh?gHl1?dK9elHmPsw>sq=*Th{{FU|qhZ@3lu_yuiKd=}=CGy;N@KHy=*h_R%BO{HURAPwSR02q90B03#CgqSKZH6Gj&IY}`EB zp(d;{S&s&bG%i@Tpg~Zvw4KZ*o`};;(m0MpMIa$kCO`vdE@{-j+xuQFP#TMr-(^dLx2sZ!63d282kR2TSNH*iqtXo&sQ9QMLBFHHU#UF77c z*RosnNQ#hj#_`2LO74y8J)-H2JLrkqxu=N4G42N2GwvRSDBElmmX{QHCXBJi?6jF-D%bnHB39r`H4(+YxGGHXV$3A43I(U=6tX8)1waz z&SXGXMxa!o#$LXlTP;(Cg?@-*&ZXsUFLJ__1rD~jeYdm{kEeLT(1Du`Bu^ZX9 z`cP8FBuBr%8u>lp9xld6axXDxPjkZud&q`A&=Ri)#|LJKX*vttK+4cvY}b0e4NG}l zscoWv+;mh%Y_)4~Fz_H=Cd)TCEhk+U$5SR6n!b>{MI&b#18uC5zbw^%FJC4*S*J9n zFt?a`J7Zke8vept+U(0{_F*`@)fp8X+_Kt`99n<$_IlLamBu)F?xruA`JvL@ObY$3 zKR-MLxRVoGcRKo&sgI}q0lfP?Qjex(=O4OhNdFR-G79HRszl!tR2Y zDb8(LEar;^vs~mz7%XG))L_=6CzMSgDW(L?O37*>o3U(`NY-WP5Ja7qoLTXG)3b`ujq{X+vC#~2W%j(Z?vlWBh5|o^EDQ?hz`#|%ZeB-`1 z?4ppAP{*Q!JSP*;cgIfM>@;oH^n&l(Mbn-c@&6J&d_S5vb6%wzaz>8V2^Q?~p7LOk zhhu-)1jk1JlevqMO}2{rvyC^T7vgzd$kW0YhxEd1c888L#_tG}2f!q}t=0%W72%YN zrs}51bP#I>kS;{0jQ~7EWe%$&4pbeX>LQywbhF1e@6cwWseQ(G`n%g>*@w&83HSh8 zr#Bi1d4NJW1I0El`-{oMMb!gaUF6+`767j<`R>}If#m53c&DRJIrKs0Z%Un|i0OVV zDbKtYkV&LL!d*&9Y}l5z%|~3C_P&*bpyISZrlD-X=InP~Fl%bh0(aW}@;)8ShL@2& z7|%}XwX-8)uMWwJkMxjxNc%_G<%9TohfuO6$2i8;4_+%~f0KtxTUfrnfz{J{Y+Jj$ zJ(J6a*O}JuKSZKg6Ksd?2)3y_i&?^WDH8N$ThN^E3|5kb@fOwIA&qbaUqJtKOJ*uF zR!QJLet5zC+im|Jc0Gjzl||WD{(GxJ#MIc{#Pq+HO>$DUl$T90#`Re{Q2@D0N*Jxw+5Heg5RTx##J7?mG8||5+^>3%#Ln5`;W;P2n;S zg9@hBS^uLdX4i_Df!SC*(XeSW)~MResb)A}E>4Mi5+yr$A&~gMgo&rpfNQxr!B|EF z=?<`9V&zvLIiQ9fJ*ET;b#j>W36**xqOL;N#flc+3JdQdmW+Ea>o>dJS(x~sr08g^ z|KhQ}hadO+vZXws(OuShbWZubq{@Q=t1|anThph!gVZ=JDz5lrrsu$fBPohZ`z2I4 z(!^FWI;e-P?!*Gtw>|^N**j_GTMsrF*FHXHH~d%{g;2>Zm0an&6s398~Dw zD}dRKhtx>poprQBNtllZYqda0@b7uAp_-|9OPCJLGQqgwtvC|!--3g7{{XocW8ee9 zF9W7TDG{X4zviCL!wp^B?}dpdL+kjl&&6I#2PdwN=Ag-z^=@NH!WGS^$>x#wVo+|x zLA0Zdr~HEvLTEy4))OFg2OQpd05ls~1+n_^5ggQdRhyb#ZiT$2qWX~L5^`Uf+LCc^ z8!vpdSzz8?afesCp@*ODJ1lD%m$3uD)?2>m!aSpm6G`SBu-5%tkwiOGqR0r+x*hCu ze^6~6lO58$$7H0wbA743`zy7bagmw%J!=gHd^v=V&2Dhp?cVHWIhTg913FxbfHbGI z*r+^ECC(9ue@o?8`bf_aYniQx)?LfeUEtDP(alkndO)ih<~$kiu8KNaC8nd` z?Wl;`?_G(VwoI|BUgoHoGlKWX##h|8yU{28InXyV{FH0sX8@aFD$QV$SZXj%H8YSP z+X^P^wt)u2Y2wX5!seOVJO#H%NL#F|N1)r7>>^EFF+s;9y*Uorm^GcsTRg7EB>t4x zu_#BE0_T(nBB}e79DV$wLqv}xO)6qKIoPB(L^9qbNiQ-1bWxO#T+u1RC3&hOoF+xj zDRlUItxUW&sp!b+oIKhjK!@0|Q3J^&5+;d{Q!G^~i6)t_QAf!n6eih^Q?B-x`nVJ( z;o1a+CMo&2m8SHn1Sw{M>ycLl5xWFyhoaTEEE0jWDX%6u_PE!E1e*lq28HQ>_W0q_ zXTKwKW``RRRy4=nG9%cpIiPN~`?3x@Bu?c~pVYEV=G_6W$NI0^&FQ*(c_T!8;r&i8 zSoUR3nTq@N61s*@2>tT-yOOtIw?Eeqs zirW2OkXw?nC9k83GTJvZoy`mbOaqnTWPJ__1?-aFuRuo&Dy2=;teSo}U+iXvF{xm1 z#?Xv{C|fit?NctxQWGik9`KgmBN%I2Nv0Ls>k<2y>LJfEI_%&7c5N8Y{510NN87uu z=~>I#-~0OhV9#C;TpRjjNBxQN)7 zrbS`KhSvCRzXJ&d7S@76%`^P4&<2-Kk)gkVw*u+7jn$QfqiU;nFmUg@hII4oE!eL~ zfnZ$ig>ph;LTBeZ_U&>wF8v@}>+b;ZpQ~F9aIaX|f9La^O}&7+j*)4w79VpXvSiY!k)X)h=<`)Cs>N3HNx678I!Im2ZmB=x24LGOs=rz9W2I(GlR1hLnutsRJLVe5T}NPl%-ic-BOaBh`8p+jc~2dvx!!1 zzXf2^=yBw&ytd@BW2tSH4vaZZ%%{{8?(P)#R5NuH7^r6<8059^&2XQ=219@d%yZfh z?;K*)2<4a~iV8;ix=zyMCbkU5nPT-88PSY&WfMI5+F5yDK4AF$5jE+XN6R9H||!O3(xj2?tM_;SC$U$*4_3T;5gp zQbv$=vSOWXo>>5=#6#8YP&_k3o4x^+0X~mJB@COK87th*C|p z$%+jdo%HI;hcJ>GCvc2~lE~qyzF_PsuTv>qMp~(jYhUOYjsD_Hr7z2$MDZ2S59hY? zmNKPAec^MQ%;|30v6r5B4;JUEyU;yu2c9W^r62kQnfOR`@B?o4o!vIkE&9{e1GCm+ z>-I<2&IZ}fhT1$p_6|UO=4w9zV{eIP0p#7mc^wz%AEEl5&V80@AGIY1@Ot@gffg~= z$EYJ%Lfl2QVNW48J!W_5#S7Pr(#c!KiDqr$X|{IpgtT_?s;ynTh2PgfLQb)&)`Z7~ z=;jd~li;RAS95Y?W0p)3uSw$-spxM~vOsFbOn@$$~z66NZBocI}KaaRLWlpAkXc7b;d0`SklZv2C zFq|h4n>2(>AYl?plM2}-C@xZpPcVJo5>pr*igC%POmb>cn3|-=#nNm^D@uZP-&w$7 zmE&5DiLOert5al7P0I<|#pyN)NYA7++7}?aZ%2PgaGM<|{{C0|+O6fwv&A=**Zr&3 z@E^93|9Q$@(8R>)+y3x>bX8|$RgAA3wJbOd<^$A*4;P?gCp;FUa-HEZAn0 zZkMd=FxspgSNEX+`?%gS56l~77qMaKWx*1ur3EiTF_7@P74p0fU>tp4rM@OeT+6DV zt1I{3`yKi|PW7+1H|`%@4nl&|omGnQ@2FQJz(H5Z3&wR>|{VZH8kR*2mnFFA&2=v!s!}`vEYp7c~Ef1 zQloH~;ut`hW0PAjF)vnm>@I7@>wYd4a@++uGDj>s5@)4jxXIp;flN!u6CB&FUA3GU zT5-%QFMN=~%uSIgr)OrVFoSgNE;H%-aaGzU1%ZB2Y~u(QO)_gsGWJ5ue|Q`olM-Kq z7yOLMFIHuDwx;Syxl&r4AldCxqvx-NIoxgk0CXE5!7An^6;?Y5caDf(w_)7jteC+h zQ;sHB+IXc-naVq}SeT2Nz@=i<#Eh3KtGkZ98K!!eu%q!JcQm$`;*?TTez`CD^wBAW zB@rV}6f88Dgx{(s_7hXJ9=Kt~S9-|k;Ek~it+L|ATC$)scPTLrh2{SJduKwmVw4=! z<}lWPgP2e_OHe};oE}AC1S4BDwv&~Yb8IrrNG*|CdXsg;JIOY%lzTjHRaZwSF1j9f ztZ6wV0R!_K^D7I5(!HV`+P#VcOm`$(!Vf1b3a3;xy)fo_yf z(?YX|gmFjYmO28@Eo$V6vE~Xx%oRb>&l~9#f_BRQ`-fiXjo@{M`Fh|6dmt01i%0Rm z18BXA(Ds$)T_04G5p zkRCW6M?mPf4mk{K$xgySNC+4D+@U(P2Pu8ilb7ee_x#sqZf{LHZx4(i6rB_Xzz9k1 zNEJ22F|z>Bk(KrUGH=gJWQbNlvE-pdG>t22>N=~?O@TyEKYg)wdmj3rQ+lT0?j9PC z9FOLpFYG5+_nI;|)0|-n(Y9N1!@zh&T{}zfY_W0CS!$>X^>pH&nNM@ISzEHT*KAvj zbuhV|eYF1df+kF2yIIOUmJoq{DMx)?yETz&rzP1`(w2N32jFxalR`sdiZ&gxU7{1S z^2sChGy6;T~!QWMchX^4_$${jMr zoO6BvQh#f;mlew?0#gT5hd+cEI^&&$X)GZ7<5O#g?3B9ef*H46#hJTcgz-)t3=z$R z8?>`+3o&%}wP6%yv2@$|j`a{Lr{<*3wxy+Ahn+I}H?Dx4rD>%#rtsVg2Ker7g-D*; z^4yKN!V@~U0VO4bFAp*KHI9x)}@ha zPCCMz({=v_mur&McbCm+pw%+8q>FA&ZC<5im_g%XO*O?-!kz^q?C?u)-x!&)O0z}9 z5aD#CP)pIWe(3&KrgqT!%lz0!(!R8~rrcBx^>yM~zpTvE`i@GH8#2HUgiz!|e~4!0 zbN&W-1iaF=q7d&}2uNI}MY4J+W$R?7BDDjX`p3CTY%>d_CeCL~p_fs|^{f~L-}qAfhCVpUwI#5cC6ONG#!x8s!n12BY| zPe>ifF8x?RcnAKcEpB5Ww0-zCsS*5Zu)=>bsmZB`D#;1Td>h^Wk9R{?8Cw;@4=%xG z-Of;2I=Z_4z9fwY@cJsyRln-Ss7?0HdY^jttam5V;6|S zf*Wf97b49vG-G1rtz224F*<`6YJk~*jdB<7z|(2wO!=o&bha(jH(+pu55bTa2exwdG7sQajMWu`iucw3Tg*0K3I%eZf)e?Wg$^BtOl ztsbYB^MKY-QDd_nSp?qd1Yms@W|XMPiSpuT@#tDGJH6$Gg!D_<99@55B3WsS`t%5P z*Kfbggndh*CtO598@C8A?yUd5O^XFTT~T3ZAn9~O9-t?TB#I)SR2z(lz9Cc-7{^q& z^G^nmi}(v7Cs3(ok3BS2C-10HC7tk~ }MO$|FBHx0p<2f^pMIV8lvfJU1fd5~oQ zRPZ8aj|Q9B_yNtNSI!-G)|r;mFxFm6i*Ss#Az=Wfsf1)*X`~)lZ3KS~8%dIMeqwy` z;;6#p+MNjxclq*eM3R8zE7fzAo~}HAMW5P1js+{HMS_-*cZ~+bWB9JzmU4S>hclfJ zW?O>q-rBeG)k9}yMd5s@I$Z?5N!-?1y-uw=4%o}q+tc~gvjB(rPKh$M|F`Vl)@2R# zdF>a9oF1gVoSf{imM>iQ_CwvX?3y3gWd-F4c4>>eZ^`?7dtXnjoPaLXA8z!Oid7EI zd$`n(`H~eL!+E(H8*=*NaFW*(p3q11tP9WgIxWF2C4pgYWs#;ML5D*&z&;KOb^GdV z0j%?khe%QE{wrp9yXGmt;v^JmGH~RbdJi8$bop)Y#8iXK@vm&Z<@*o%c zU>WG#xlwiFgKTCtOZP#$6gZd0inU$R$x-F+v}++_n`>ds+1^zp3c7uuVYOL|vw%`R z#>LJjq9ke>$XXeQIhZ;LeBBZQEw$Kb>IV7fJ>si9*^L3shp=aMm1oFt&tRzM6pig& zNnb_F?OvrOSix3&aOd*74$Ae?A(mAN_ViKj1y_o5b<*_8!YRvo0bc0uDW{)`LBkYA&mt^5$x5t;H)hczaw~AM#(^iXUR7E1D4_ADtuRbYmv|R23(eS}9&BDR;N8v}4znZ-2Ho zl*=}>~V?urgWAJvhO8dY1Up1VJ;vjQ?fML6ZF3}O7Tm!!X?#0fj^bq zfYaO|VctR?OS4lQfw3D(MA7L#!&|@l45fBw7-z)=&Fl;iv3UtX(|4l>b6i6hi-Na2 zQ{+uj2Ez-GxIPo)jYIWWt_(ZYh6`hwFKEZr-{Jnpe~^e3Ok@6^mty6=^-?hY_w%%> zxv{gUm8vzU^hZZO3K1pVp<# zsqSmf_R}O8HU-+tN6P!rmd{k%Huv%8bldUP+rI9#pbKm-=#CkYpf3u?;BE)HyI{AY z++Ta(N$txI{;T}efBxpW++TbEk&o%797=G|Hu9bn{%cp5!C?6&hrsjJu-r>sdTZv! z6!8w7(lEk5Kkch(x1{_lJ@iZYBLnAC^HFg5=I7#<%0P|US4ybix#xP&i|23<-1`uC zi%sm#7vD&K2hP@gE?y1olp}lQ-&_^#F5Di~$!qjCL;^Yx;i8BC+>NDpXX!p;xxXR1 zrE37go^g_}jvgMhpDd_KwiwC+?^vkfxCS|{ew^csN$1EALB%& zQZ@n#!c#w01rauxm994t3FPk?o=(@J)r6R~Td*3kK%QRa%hxE>4B7nTtz}9`_ z`wH#ldBKAM#KTQylv$BZFUlTt z^)s+fb-kJy$>pzPIhpFe!D9WWfN!2 z;QAJ3(Nt9}!I*_y9n;Yg;F}ilr4BMB9jhsvOZxHNPqAAYd!N@f@aQ2VPH}rjA{_RDz$s+~Uakq;M|m7Xfl@^s zSEDzDh9sDM*$#TU(~y83{*5NdTIQ@RoJa;aYc|g=ZV9muv@A(6{yHa9m&anB6vDpF zJ>+D$x@Q2eyhQTFKJ`&tXZ~#bp2?mGd}1ee)x2V^g2yK-@boqeiX_WIbf&!1om~cP zIAkn4KykM;*Jz^ObjQV0gvqUv$7JXJdAJcav)pJW=cdr;wT+`Spu|a!$^PQfY$qzb zB&RRNY%<=KEO*phl&5IC7X}U{a!#@3wndO7gxzFm^*+=inB6|i755n>8+}4>c*7VJ zh}ezgJvLTNMIIe!i{QqXCss>IHIk!NRx z$0`^r3MjdS$o4SJavw!i*=gbyuXAb*huPS+y|U<+jw2RcwccTUt|VTTaa_B=LMBu2 z<)hDC)YnIDw+Jg$6bTJ3+U_lQh7zq#3a<*+|KGu@Uiw>vgAaWXqnP zSDc?wW0_HmGLUbQceG{T;nCon!>y7o<2nazl#a@WZqT)0)hjw2;ukWrVV%Icqm#2} zCauGbCVbFEx;@H2+CRF{tzHUP+Kq^j&sF$+(mz(o99ch+LyJ<-8e8bwx`A)bJtyN} zvw&2VXVkhJvI?fKaarUe>UGX-&;8y97w5#b;6N^K=jVQCO>Y+g&2`LR}*wtIAD;(ALj?RiH*nv8@(6=JW3j-O7HQH+92hd`HvrM9%VUhb;&X|*h zDHFf|d|tWG$E0Uoc?2xymJQPp$pZuQ%OJ2arJy%BU%VWp0#V?GbJu!jTkYRC79%tM_l;_8vwaf?(cHLM)XI7+cbTrweBfP{F4!GfT;Jyp z_8KW`Rl2E>qS6!MAAf}xVdZeH8N9yDVPX0RsJq&zi4&D?L6NUdeTW$4W}Ob2H*UHn zHDG02X~jL#*pRKRqK2!X+Ij#?VV=NbYEznQ z7lG9xB0O!Wdg*nE?j>ZW&9`mb7awSo=~wp-c)1L&kCx)@-T6%mT4^3K_Z2ZDGs_?|Pt| zG$U_BQ<`)GQ0Cya*;^1F`M6*--`HKU9jw19Y9QEp0NC6-n!eS1NMQ-Bcj)CzH1UMm z0bNEWdoYRkRP*SnXj;KY+uvcAm)lNCMU!7)Px+`?H+m>tKFq0?MKiT%ZLM&swb9?T zV;`7|J-v)YoRu-1sKE&#F5?`Qm6J>alEtPVY3r6FIZ6+-N^4) zBDe-ZypH7=xBPZ}6|H!Vx!{f_v|Gi+^Q~al`!b`0>WM+NH)-gza1+DK5`QoiD4(~< z>J&e*+T)1|ddz#q0Y4SZ9)VnzayQ)ILD?3Eni`Edn&{`^R+wehVJ~TSjO7Em>Qc6U@quG5j;9Y?7{^zB zY`fmX{Dj7SIKp5K5)=-3#eQkgx(U;_au<}7n7LiZ(5+D}t^B2Jt!*1kX%$_A#|CG` z5s`O%E#kvl!{LMgXqJP#Ea%Dc=n8=dL=%zM?Nv+k>r~}zE?4=Q_vjnr5zc-NOGliA69B$X(*-Nqz*$%cIJx?Sg3Jou-8h^-Vt#7kp#=K z8rwp%$)kR%C)*IaTL$J~u(Y?Y^@Vjermg7axX*0n%{en^%5?zENf9D1vtkEh8atDU z)=afaA=?T<{zXM?r!LY%uD1)lp4jhBzF`Mr$<uc>KOgagR+JG#zo{^)?uw>2UNqHT;xu%B~1M* zh}<)^=z~Aya=V@2pN>hSK3kkhSeA(6NE7Cy*6xvcpr7#Ysmm zk=mgFvEo<5-YbT}l-Z&%)@nzt}DJ0pM+ImM_R}}7qg@BvxGs#>;2G%!1 zcYMjKqalHV3|8zEp!b3m4STJQk&Rwh(|lrU=PM0G=iMQ`4l`SZlAj+<{_8TFL`gxqAF^xG-%Bb9e6!Oye1=^RwF86Sc`V{bI=<>#)9V_c)J!5{G z2}8#Z)j~G$%X>cNVYQ9{<@GELd-6qw{56o8k96c(%}xdB%!JXk%L0e8;q-QPL`x_qBr1kW%40~P2JVe8A3Te_E#8QxR7D-)6$v7w^Jdl(7 z;72^A{GrB8RQ(&nZZ7ORRz;1%3vAJzmE*=Ur@U>)XqyY8ff-=@SfN9HkVgAp`ORyF z1ZBoakjnqux$!&oK%$e5b6pLba7 zrMj*duE2K(Jl7XfSwQH|HSyRJ%3+Y$3zBko4wazLA40M*MC8M;h&$x`cWC9$AIhI( z%AaV;pAXP~+}>sHCfSVC<#YL$Juy5yT05Vfc{jG=o_Sfio?dzDJE1=CflmVdVORVI z*CUg6Thki%zy4HR`Te$UeiCjbxE@}Ky%#v}#|fgmWlHsUwthhD>2t1J*5KtB;b^Rz z?ro_=xwEHLGl^b96E!e5~54MeCHj{&l`0d*)(f=yO!vB`Y`j24$KNr`( zCsRjzMi(~+M*Dx^;f&Vy#!ie*&W^5*rjB-u|8au<|4LgYWB$+ctSk+AJ6v(JPl~#( zDR=8YT+T^EHfvE^UcfR;q0lRM#600V8$6ew{9KCNQj%xVV|7Od0t`w^B<_>W29gRw zW_);*P~-^&8JWWdlBPm9E$7Z8kM-K1m^}Su2IqbE)6wJvr{nv*;I{pDsl0{XNhhfJ zhT+R0o}v+&*Rr4E>CEoNm9lT7Lbx#)}erasLM88$~p zGoBhQlX)oO^;Cb3RuMo5`fPLq9TT-Eyq#~KW;vE*0w5%*b?&JdE*mZ1N;R#Wso-X# zIVq|dZSK5>!6V;g_QgZ*QRYrJ^@34#ebz|`c|+y-^+-a+sWo!RV@>$oH4WBv7ZPA# zLpb%neG#ky>RvPwKu$VM!wHua)`EH1$=7jdpa>*>#gvIs$J-#fIy;p>JCL*t$?Jh~ z#@5z!a0tbVzR{;od`10?bdO@S1aY$NwfNV(w1VddYY&RSM~?O;tB7`o#NkdT3^3^? zSf8~Kn-nY#Av;3LR68-#G`w2mrz*Gu)LzLlhq#B8V_sbSl03E-^`~h7ql4gxguNP2 z-svX|B}g&e^n)`}Vo3pIHA>U&GKkJ!?QZC39r1`?`7xC1J++CKXc3|oO5=0j@1+-? zZxo%UHa*y{ckTAoSK z^H=NWo9#+N1u5KQ-3ONlUPS^zkQy5Qyh-?yjHQhtaIt`oN`CY(JNJtfZbkYs+_K~z z$a=uF#VI4%8p!a*YB2$M`X*FpRX zS-B+pEX%7{a`8gCCbpXkW#O8*D(6+$W*vn;!zf})et|qOqg1gGk^@QrOBWzl6-_q+{LC@z#5fyUW_5QM=1lITtmN zs&<|s|JB{mn`i#5qVHzEAvK$|6Oz$z$`4$EmwWDQW^wp;WB&dOBbgLzRg-H9{!!S) zf>kO=7!9cl-WXlIB*eDD=!D*>6Pg$e>1Q+$M6~|=^aSNbM%uyKDp$k9^c_3Nm1O>b za-Rc|S=7xxw)_~Mt2HVPfS5BEb%T9$i-glncCI;dn^ykJs5MwKvd>8~=C4%tk#u&v zU8@Dnp{isSLsd&vtj()&s;B*n46ZQcA|L5<`8 z2dMogq*ZDD^hEoQBxJJHbU0KLjvv?ub$s&urr(o?15?O;tl)r=2XH7AC2blv)bci5 zh(e2dh3A7vRCIB5>?@XX1M?Fhejq0YDh1f&NvZoj6lpcCt%Vs1uDMt?7$ zqOuj{g}TeDjLeMfPM10xj!x1|Z%n@38R57^XPg|oxLFHnOTIy3itm69$OwM)_3Q}e zHG>O|Q|u-+rQx_aQo!B@Nnm>zCk1zy+YLRDZ48+E=5PweJJm!J=0|Yqa(%^-y=x8m zwdN=SJ?~K&j!QaU(xYu}zY+3}TzW}K_`hc=5~j>dfb7w4!-FNcS4~lxrB|j-2{3Pe zTzfcKDc&7XBP&L&Q0IpTLx*6?l=E54U`Jq25&fpMJki;NECVaXe*2zEC zKZKrm@{0#VucFT)ZkEQmjI8f)M=+IaO{-}M-NvRZai@l5V5nou2 z&}QiJ7Sy*d=__mKN}q?JcLtNfg<$HZfwhy#+wlJ7kU@B&`X$Yj2vFI=S{&~;t^#P# z;Y2n`L16jL;wQBYg!e2@%^rcx>{^w(6LspFsc3N+9B!>>>T z{QiSEXr03)*ZY})h^>u+`+NiDOQ&%%*`HLuUJFuy#1Mpg1!h_$KPZC+e@;lrkU{wO z4gaZF+Azh5!YXzpxC?f+o={Z6A1r@sWeLM}cM|AH9j?I0C5On_se!Y3<0@gwnYSqj z?AcX?@E;aLdq@2;!TK;)&CgP9IKxzJW{Ex#k%5E>n!6#7@{@TtN52=*Ps@AOBBTJ$ zE*EpTc(qvP#XESyXi)?<7Kx4K0x85N54a!c6iP^8XXo&Ud}SH(QVjMy0_n~+wbS$N zrT!oZl+~(a8=rr@HJGa(rRz{J%lGvaET87_RW0+$W};UGVFP#JPevUjDOO+#lXx!{k~uy3U?)cJIgs!G5rylxwE-aUS!mpTKDZ4$g?6kI|NmXReobLSJ6A3z{U?3HKLo` z=~6J;zmb(F9(TZPj)dFzVH@V18@U5U1D!+jF1ae9sTnKE@H`gPHbq-1oaQt#mVxvC zV&~dGtAbe#mBsy+*|MZOYFF71hYlVR{(om27r@La3=-aXX4HeoZP;@ZOG@h!8muOyQ->Ob z3PsaphPd!mVg*$UG)J$k3>?jc5YMdH>80g<--|}TN}a0XF7e?B`xX3RRvIe4Yg(L@ z)|XUFaH|za>Lyg)T=!0=a0&HO*t7$QpQhB#Ub0Tq8sq_pu%lSCGw^R~W~!cDlY00p zN@wlG!Yo>-ul^M}YbmhweD@r3ZQbV1t5kWpz%CIM7&pA4s`+8jX!8E}Rn z@L)Z;bEaxL9%>aOw&jcS=u2m(0=ADXRUdYH8DTZ5Z}7m$61Rj`KY8-<@*Wj3|}&t%V!^|5Qh5BcCjNsTZgATiglpCM^K(363f)O7{>2f|fi^q52vKYK*~WnD5-~w;9y3nA36lq-T59Uf9qXXIe?a2({0Rk( zN`Dz5^5FIN3UGkPm^iG0DfvC2DoOj^f66J5%RAc1O|?Nk61YFM{?kXlti06ArbVC1 z)s0Xf(aQORa&EfVeLE(bp$(h7`aO8>vrNZ3!7~|6&*JnXt4Tf?v4BdrR0~?&mb;FH zE4c~LGWlu8Ih1T@t1%~Q<9Z#CTWUICYTiOfVn2D4yLGqb)G zX}GDhYJg4LzRa2T4MWb)j`E-b+BPpu&OFTP;W87v{fu~7DxfqRy}ZfAUyr-FV3Y7994bxad2v z-j%&lPYl(F(IIrTJJj7E>!sgJa?@L(baWv5R&a4wYDS}wlW7dtir}V`94SVQVVPA} znW{1+r3hcSApCjiE(@izHs(N;ZTYVTs+VJBT}f(xe)3KU>K-&&slPah-6*(Ds2uwi zcEdJ&0Zl6rx+hi52v7jpuDYdtEQevQjZxUzbR|18@z$tE5CsQ;M?*wwSn|HGJ3fKQ z{VkJjcva>1xLPCvbJ`m$-57g2{^o`l&&(zxDBj;CE69A4v8I%~AsFr$fWHX*##;jp z?gTz7ln;FGXg;ewb&6QgA0pJ*s6#tm#$X0WW4HNC_)sAfI7wJGW2e@}l zeTjTS5gY1nkh@oP-m6RI+`us?U{POZVfleou*7z@6^4 zC1*zqYddpMM+Y-&S8GRy|EcKI*!-twNBgpOn6n>K(ODl0v%i$AwT6|~`92FaR}2GR zEN!1iBVM*{Cf!2O!M=)i#zhlO@?6EI^$wPWYvPrilG+=B{rqXmwz2O!|@ zW7-=e#&h3;&Nky3Ql3t7p<`rM`U_y><*m8vt1L0*4JlCHL?YSg zDF>p?>dz)iCDvpKTuJ#!@~+|?PL_~iF0c0X8@4LTEjxuLWf)uG)tJiPjmM8OV2n^~T8`Y&)WkkJV#c z=qk$z4`a{%ATz?$m?>CrbdPhGTb3Ab@}8g4Xog1iP;JO&e2TrP15j^s)`$toaG5h8 zHLi{?GN)!GS0)Uf_|ZRG_B(h=hnit3*Jj0FpW90s7+Q1&iJ#wLQS@iSsTjZS=A;fQ zYnw1;5Io^oj|wGvOe>|f!-iqe{$K5B-zRNlkv(UXW`s%BQ^;3p7&5jc*~KPT4!dSD zC0N0Jfc08iiv<6&PV653&q7_1H=yq1IYP^qXE%+#~-4U28!{I!HsK7nc`b~;=a@=i53JSTNUeM@SMIWV7|j_2FMu!9Tio7yod zHI3(=qhCOLhd#DvtIXdrr8LdgrBOptr&&;NwGH73=g_dipS4G)@qu(Gh|qWra3{^n zal$|Z+oN9rRX9a1&rlgiMsbDV@A2^r;+`O5&QLO#NOi`5@1ev-jzfogAfaEAFl-G_ z-wGt|ft!KCMk3;FBA>C22Ps?0s%Kyc;QpB2@LnL1F?# zS(oiJkKxsr73*w5x7VyradWeCfm&Z~?ToA%^jN8`6T#~aX#TFU+=95>H{!13Aa?jf{Y?a<{+2V>XN?X(&)Q>kjhJSp>i(_h8^L^wJ_KTyi#m7RsX49P7DC-N zQQqjqzQxzDdM|#?M(Hd`d+vfxdgv84|G_8znu8K7nnPti9^@)bjEB)i&~|;yD(u}Bx3@Odd&TsADK1K_tT1qW z(?rzKn4t()#Or8eGMx~p(Wa1#+?9u#&Vu1hQ1<0GoSaJ2P-+Yf^zlfGc|dH+Q$)i& zyEe?546zMSupOmxzZZ$sn1g=bxOJg|xU*Z>=1)|Z`FWV5IvTtVX&8>2lqW%Y3^uK4 z!$kLOO~0dbQdauOWOI7OvqTr7AWO8!FkGI*t{Cc~Bs#42j#N6dEHEj#2S-iX^ebzl zk`d};GEFdhYNHn20pE_|Ibx+U)pkw8_Xi`uO$ zRHtZ3YW$Qs$V_*)ZyBhq=50y2d_PGZ0!{1wD2_ zI_@-aO0JkuJ`}Iyw|HYO$LvvTtxoD~m|(V)?=@2qVVYFvZ&XL}ssShiwNS;VDs2%O zlOcFN%7?b*2D~)E>Zu4{G?8(sXHD7X$wz->8Ox1#& zz)*8`w`O4w@lDVxElKGsWX} z^${^^k5ZMLcjkeLsgNUKDgIL07%+j!b@JG9u=zZG%!N9KEAb=$t-ROp0WSNTgH4ic z3X3sObc(l^LbFEw#_h6n_5PToC?IntIDb%Wn6f) za!n2lc|9sMY{=`H?}=579Kd01h}o3r}6CM4O=vc?0lo4OALE>Bw*ZL*ye z7u;z{=Ej8Z0L(kJDs*&s!n14EXbrn)WTb3Ro3%`Na2KSkzXMVp?^n-7~9mNhSzQ|dZl1VE%63I~;l zpND@fq7rmV#0?RFBu6ozB$~-+(!dNSRe(V_b0$=h<2hdJ;MPk>66rP=UE+e@*Gf{H zTw8IG3(-11(Ax$fZIu4gplpc{UDw-=d;rDMsG4zw0QwcKB$+@C%ZVIWPfU*e^GN6? zJl1(y@XL+0uq-D%hpwOp(3tJkFDuG(xy%JwFc+lv6ZHUe{G!tZpUqK|7puj{+Kg3q z{)jcauoBFuq;c+e%|=Nxnaoc-4Hnl^l&q*|@DT1b@{)79dpN#FL?eH+2av#gh|AA; zY~b-FW<2lJM>;fDwxk-G7&I?GVVUXxh?8-y9cVE7869Q8CHqO52}9xcN@Y0AHTR}( zNu|1JEw15ob#0^sDT{iPw1{qd7a7ky5;y}JMbPrN%3}UX4~VnjfPEU6&E?bG!LZ=D z{$V5_N!u_u&p^F06Px7bU018H)Mq+UlEW;DLy_e$tewSG0r9&g++g+31R6M*wpC_I z5r^<&k*BTWR;%nkE6Q8k4s+cC~GFLI^_W6q-%$a&sN&buSsBQX9p5T@$_N+V!EH z50*jj`tZ2#%N!rZ+y&l*pGz3nJ6oRoYOQqRH8G)jU?Qi(XK5x#qkp|c2E@Edg z2~zI>_<#0NZG2WZO_YHd$A67gwhJ2P)g1X5FdtA>fI24((kYlmyFz_8jxZkHPG8tJ zkV15?s^)o19s%9oNI?=|GX19PBa5@>EH-Ntkza;O*mYtWNd*$DrS9bLqqS=YO3_2dlP^wirZJcqjM5TLFhSWajYxIM4-Mf$HdbSSLcy%D-ZKwGuL;-G z=J%f)v@N8%<%z@J*@I`;GIIuP@Qi?T_tfj%+#i0y#;M&lQ*7<>({3yd=GM_Ox7e6p z3xhqLG0dY8Y@R`8--?TfSAdjn&P05`=j3+x8|~ z3BYHA_uSnsvrn-%68LMA^A0rsid}Qhwopwc0J%ra-qNDp#w5}5&NX`{hU3g&+#V(T zaIG#ah(-OqGGYKlEdq$9V#5_-U#biSL3n>we#ANVlULEvN@aJpF&LMRf0`wC3{Ac= z-aXPLTGNX_z1-Dmj#~9J)MRH4#LiAx$=2)-3lZlf4LP4OQIRcRE>p(bJFW%ER>s_> z=2Bbd4pEnX2y$aj4;4sc%bHogMF_V3Fu*pYjEg}`IDu{!%NCU$mcC`tPsRpL{NZ*D z8T1`wajp(PfOkv|IyqC=`?bC{Qh2N^IOR`@_TVCUjz@PphdW95U^7SV!p@yGm4`>N z3B((#GInkq756nuSlID_KD|c?BxL-}T1Vt=!#RBm} zKeb{H*Y8pI)RXpC#AAoBA8t;HUedsZ$6+i37D`40J6+s zNFb(cL_6xVbfzRgJ63X{EIgvbs$MPeCY159p)-FFl`S5H+j@18phpmi<#%*6MMoPU z8@IHA#vz(K!9YefP0202R3F+4GL~SimR8c?omTrVlHycMM}4o90lxh0`?cXk?Q7e6 zAX0gz13XJ&aWM%8$SY7BFg%<5ker&f9z|xt{kx@#T|v*iKFn-P2R~6mHc+9(&4&%w zhpla8!))S2d%oE~diB}YosHb~Nn$?xqy2ZQId?4dkF}U!JvD5IQ7-9hiLo;XtIom4 z+`461J;K9@HywU^APSpHcD^+-s9bW255ok1~19{=x-eZp*F;TQv)(Z;{^#Gv;f=<6HLw-(QxghlY*u zudC}w_G;As>Qt>f-*79nsVkWSrvlD6cIBhKxrPzNXQ4)r}tthq_906z_K z$WUe>1$w(6t`%c9X+kQldnXZSj%Fdx`&yFuYwhBlILxpe`VgXNH2Yc7>HM8;If)iB zq3_*k3+qn9&DE1br+=rjRn3G2`WNeYFx+(r(|+kogubL$Wvzdcgx{ZPj@kO`t0~e$ zMs-6a#3bn}Td7pLQgPZi3Th_@VHMUraFH{3bpnVwvJBq-bARk}q8E%9&uu0n!!j?z?#`&0uUJx7!_XJjshD`P7*O5g0SC5;Z<4aGD-R2!#8BkpG)bwmsMCdyfypk> ziotcXQ+M6_$7}(pSe9A~j|p@et-orV?}_^b(n)`O{z+zAochTdbkRMj+;C(C> z_LNYHr;B^XQXpX-2dW@Fe;puNf_!3DRC_)=y}ex?pN05H+RaSR=n5zK6I#631b>fF zcE^>d@Go$06ERemfc!(=)$p^2sAKCoTURxv;(}=AK07?n?d=a4W9I(|rKVBiren#glL{9JE%r zUB-g?BxM5)kut}=qI?N+2Q?qQ%-h#dhZv=w=byoH{~45M`O)A*sC$ni<7y+#ir5v) z8ZE(z0P)*Zi7P~gKIDE-?WaQZ*`w9O@;Nh?M$K^g$1Rs|7-MgQch5{^)I|GArL0`1 z3SGh4C=5fnBFV%k7X(sV-WE!Hu2Pnv7F#FOACX!3d?%!pc47KIn?ye)U4y!iI{NCe za*;|@xKY$-mW5%}glXu0+gSzn)e?jTAxaEb^L$uSd}xaqD)G10mO^EAjSPn$1;&iI z(^T|Ii#3E>F=Pr4j@@dl{Xnf?iHM=v_+I8CwEo@NP5h166tj@ABrlp^WJAA^UWP?? zdzE`|pOF}RD#X}HK*4hK`v{mW*1xYyT=U3-#*)C|D_iRW2BrA}|K& z0+H;ufq3rlz8orBj+RBSDr{H+l_{?KSpnxUz%($uj+iQU8% zRSyvcW*D3nGk6FM@IsOKnVdaDXSW!fG^oUVHpd)*BMo#FGa{#Essj%^gc8d92(aO< z-_g#S`j$MMl-j~9awuB6f^Xr31!W=cB&mXqbMdmn(r*H%9ANEPG&u{`O7){TFG;ev zu<%3Q`I#u-Oi|$v(9h@xQ77aT*hARE-8rjkp@uL~?t<}^X24Nf$e}Of*G7eF2XvJK zUaYzi&gFGpj$i;+f&GW8t_P7Gl$9UV5Dnik;j!*(FeX5r`4QaH2mWS%{Ifn1{o*Z} z5B}I=tw#Xn1Sw>4W)uX9Okc6vV*RyC8M!0z{p|bf29x9_?&Z(32zM(^kg2+GS>$e0 z>O8HjRP3zkx!K4$T;UMwu7Nn~zm3VZ=Mx2IAb*j(eWb&kBh`6h$wU-bhbx85^)HRK z@;Qjs_rT|E2Da@{G0oGZ(Z*Ss%zI~GA&>;Q2jIKVH)_CdC^?lv+@rmRM0h2X#dGsu z^5*&y>eH*)M`2Iaz4e8z%U#88!pwK%b^c^IBOzT_WDa*H_|tF3HKo@U?~AnaZ#;u5 zoa;)B*f&PnOd_rOc2}GBpaPauhZbAXL7m;P=y~?LNY|n7VFw4bL70%Vqn6+|tRG`X zu5;Te;y^S3m%uL3&h6m6T;dbm$k6KGJ>EFYh?dU1?LmX?>xcQlS`1*-A=MpmWc8TF|Yh-vf7!I~L1&m3XWEo>i{$gXDDfWX0hPh@~IGr&0_L_zmYZ0fT) zLM&^Dprat#y@p5M`{57;CYE}YGW|sW>KSZQztS@NJ(fW8j*OgH4#dx+bidbQRQNC7 zy=E*<+5FFR-gbWh=Di%R;C3Df!p|4>y^n9JOSrDjh>0~mQSbNbuAN)tU+)Aj$35}> zpBW(?4YB=#Uju<{yHb)>%*ypSs2+y#W<8BFt5`+z#$%Qg^L_1UYQVpz2@EausiDT$ zf-<4NVS1h>rZ+M_nr0gTam3%-v*m(9u%A+ljXBa3VJG&USYuXs*kJUTnfy-pKXvhn z1CMtY;pO;JHz2BD36a0hRF^T&ncYOCu@tu8R7<<`Hef?Kj6iq&{TIpnwUOzZB;0EQ z)DPK6{5MgsMQQyP_Hv2VE@SdAm`m zKt>k}9Q{yqkYy*Es+uvY=z9}iW31_WBwCl52*g{a?vgDjrE2 z^PW5%O;Bsk)K&%K*BC1@yV%RTR97A|w0Gtxy?UO)HHM+f4{JzUj3>lDNs_8-@tmMB z3#0U~h#?2`nDH>em20J(Drxum^-pgF@uTE)=@G?c-3#jxLn zC4Xk$*RfTp5$+-WW_sPczwH9%+efl6;TDpo5k!qxkyjut z$36P6$0tQsh1KInLcDVuaHlRv>`!Vf?L*Cnf+EqhEKTggO-89DOi2r_p?vhEkp z9M43ZrShSLx-?7|kiZ>3_12^<59dUIvLWt`u;4s>HUyj$0*C9Woxj~wr$(ath8<0wr$(CZQHhOv$E3JdC}cpzrOdK zvCqH#YmFT-#(V(o}FGA(OgPwfE(AzO+yj*vZ-Z11VG zg39g8wOiTQSV8$7rwyoPL-zJV+m40CMVjp+N2G=ZcF_4pJ+9m_ut#_SxgD%6hWV!t zTT~uj2lkvG^*rFy&C2YIIjoCslb6^4!fa2}Hbg_OW)&QNK)axXh8*UppU?&;g9tZ3 zc@OV4%-SZz4VW4!D$ccSmkmDHZ9v9NjT=ZdOzWm|6_PrP>!!>N12(Ml@|zndH{5hz zQa>7-RX)r-s{!K#hHGd}8J$(srK32E)x}W2M7m3$t4E}(N5ACK6k$58^T3@T1_h?HB(4pnx241 zB1o-`B!0p-Y{EBuq7{`=^-1=4MTjyqY(l?IvQF-GyHA(^1?nXEGvc5n=-8N&T%qu| z+C8-LZFlJBHQIs%NhMItGOcaC*dwgzgY-xd)hS{_h(pVujyAq=@kX zQ1O=M1W8%RTxrRjh&#m&kn$WMWm3&@>rt9gl&$BlVtyUKx1%$aW^U*=HvteR5$EY0 zYeYMRo}`&K$z$@{mo39x3Xtx_$ULLzkb+~=(2JJ}JfrHu_OPRzP*0q+S4pFRl%@g| zRRIJJu+WLia+H>ODOqr2V<4zKwoxa6H04+Ch!3L=LUrRLz`jU3S;Ue)x&nwwHN%LEIpihY+JL#z_ccg42v%=e%KfIrT%5?3?l(wJ#m)d!OnY0mjr@udU4z^ zTMtg?6q@=`R)K)$p@CBl3Eic5n(OP{xqJRR?i5NSB2c2M68?E=`fF0vQ{poyjv44|JtfiC^{j#g-~Jh+0s0|Fo7IosAV2Eq}M&m8euFF6s&t`mu^ec-7LAXy~q zvJ7GnbZ0W_5VDT8Xjj@gTR^i)Wz1RH`mUR~v<{VA`|FUQoAr1~t=_jTRrtOQu|v(h zgvz2WNoT8)lj|mT-qB+ zpK%Mpc<0lld&4ww=Q7J&`flY=x(k_}d&3b;0&Eax$Mjta@iWz`lT1eLCDgMQ1D4z7 zHC6N<<%FBrpU7Pz^L9$+F0OArcI3zD+G`gwuBNyCs~!7)Xtk!}z*rXz-u3_(J7~4W z0&T5Aunq5`>AS>9*Mb$@KJ=VE_F&y2s~Vs}A6_=)32hVSUGk&BcGsaB-OjQhN5V}{U8 zENYn>b=5SH?MW(_Q`&x23efhFLY)UJMf59mz6!=fEZXzZ2I+fr1Lmw=F4IGX>c@Ab zZ}BtO%w0x1K&?KQxO1(B4YEDrf8p;5c6p^Wnfz;?_5nXS7F+k*Cu;aXkvcJV-|3ZO zCRKM&;FY8%PIsU3)mDq9x8LQJ#%1DrKBi~%@fgmn{sVz7nQy=O!L&;mcVH96AC4UI znVjOK=*P$>0_ZQ5jF+?LNCc~K7dQpd(5r-h8~@J$9l5bVCZjlaJ~q)a)o6rj^7%oYL)J^D z0zr?Q#gK2Z`vI46k5Uo{qhxuqVUl};kUDWGd8Bdi0(oT;sXO5EByuRXvN}cg1m!wq zZ>lLp>BJ*)Y}apfB0A-aV`YiRE**8UTZNTTZGqPhyz(iuVXQY{urWM;vMV5CuH7u> zaJq2C$z;ORg7+KW)kMMDfXWE%7K-;X0$~*Q)M-1~*0J26eXLXms&-uVZEStIaU0>} z<7Zkk{LYp}Spu*!&xk02)NMD}T%gNuWE3>M@}{`VciWG|Bh8-k@6~tl2knoWlQlQQ?}9H>etH5oM9aYCtFhbT73zpaO%p=_9ZbLuMOdJ&jj zQ)a&M!F-BFH8XZz!?_ZKZgB0P*dwE0$_iG34V_tlu3ZISiRG5ql0A^cV3h7PRw zRjYLMlNWswfQIZl_p*v`<)G zzMPu!(_CjM@Y%)*ner`G8rj1z7n(|3N9$c&N8OG?wvvQB*vAJ9p^#YzeItq;ar2{zM}RaeiMM)bsE}!mp07Kt%gkuwhmt1*=B$ z7Xq)g)y;}BENuu|s!c5gF&G%@!c(i-R+JOcAIK7!7`lEDOE6sv5}HFQekk={HtVl{;D|z8NUq>$}`z>B8O0>O|swQ>8-< z7unLI^c|f3 zy^yB{<))>K@I|(MwY{~|(;}ToLnE!YL7G`)4kd058O$net;a^=tzYJsxxMMM>0KYY zkVme7j36)nn-Cnu|AD+Im{bx%E`I~E?B}-!gjW`}2PDVepYC~U<6+`P=Mu{VhDAE=+GL+BXA>cXUlOj_$lxV>Ha$y2M%(b40>e1 zhX5>yyJ$}z47MW8k2n1D^*uoz53fDD==8A%?t(H`R|GSW<@-|?L1mu zU0yH+d&FE1-;B7?&rLuz8^}gFMuDG#_;8~j==85tw$bJeA!L)lL>54R-!b~d=-Z=y zhIqzc&@1kNJ*&2dNSj4~tQOp4=?h$o2DClA0&A&;Y)48A0CW{}tuaN(s}Wp^HDzny zbV{%uT>>^*7HhGv^iiYHgk>z5QN$5P?weRJ#V_KIKn-^jEiEG5g z3igDBr{%KLm_p*M5qz2Z=%oIn^gJhb`S+K*8Y9gjy*dh7-|(YbIO-^l7gq&G(RqpQTIdqPFB}F@Mmn1o#u{3N%2HcS z?WqwRl#}`>J?gcwAiD=HOi}sG$F|ED3N1Cy&i}gR%cnW4HmauTCkyU zdCO!_S8Sny8|5^&;l|v|F)4CPALq-lVryfdl_Xe+X%eHX9FEAS7bUuP_Z0b3S&ji- zSVolL>4<<#o`s2ogkfZ|$P;GMGpy3O4|6MqoVB8A4F_ph8VY26tFv6ZnNi-Xl0>M5 z5?@D{<(blSdi1DO5yVKc4B3T;Sg+L(1l5I9gFEO?a^&LY+Hx0=VL2|y^?PCx4t((< z(XtH?qdQEB6bbh&tpEU_$%} zi&r%}f@e7vP@2aSR{PO7HfK(;lOTm+6+tXlqsElI@c(g{bT(s-3ENv6m(;8$|qfzxR%X~!-F{ue>cvoSV);s zK1Us0Va}?VK^G2EFH2<7J$o-wGpHgg=#^HTZx+DD(w44h79--gzFy^yo9_{}*R0|` zi@-(1b{=(+eTtu=G{~@sQ2mez_S5BSXQ?QZ7#_S2uWZt4YVol$n zmF-NQGap*^aH+4eX~k_YXDX&2R4r<;nm@#3Su_w>_pGw2MFrm49kYlnvro~K5M`xQIAJ$G0 zFZdvzuvx)^z6_*hA+m;gnUN{#m>LnhXIeuu5uJWUR@AS$5HA-GCr0ac6mbHG`JJQ% z7h|*pY_~%ig&NT2PY$JiOc&?5&-GO0DjBealpF#iJ($F5KPghP+fRJji8+T+YCGrJ z5P5>y85p6>FM)rUqE5C2xj7)5#q`itjRF?D1#nWde7alVS@3loj1%X)m~kygdI{k? z<&?FE!h&HkGJ{1x#g^PZ)X^dh6}@r|_;{j0vfoQM)RHc(tyu5E)M|`<(c{9gS>Gl2 z{oImWuT-Szp%&k*(@Q)&YUZ45a@nS`x(*eC4u?1qbdvFG5b6}Lm(tQdrlmMGg;eJ_ z(s+ZyBkt|aeRDZp{uTI{tR*nao|54mtv*?dRQ(5<;(n?S7MJbRL>eLI;4|s{1tW## z9@J4>j|wdosX0)BULV<(_l|akK)j}7y6`osy{p7bM6y8qTAdS8|9h28e3|~b(j6+j znK+G}4!uz6YEDp|!qzdyR84cVgmpHfxuIX1Eb1ZN){Yo660f^~#nEz_;^H=7GWxpZ z-GG4yF;2&YIC;A3{isn?A#eX+GlQydR302vzNMUvY{-s{he$9(d>d zfmR9E{NOVwjODo7r5&EoIe*l)W?wgGDns-ABjA^}5&Kq~z}6f0mZ*JuaHjtL1bXQ; z-LLFius1bSr93My0vku%o5Qw&0p-G^++WVWkT|oE7VU6pf9qt0ehk@RlA%~Uo$l9Q z!?Lx*uV#mCvS8N~z_;?ixh|8tpic|>Fjm@w#RgdEM=Qo)MwDK$HOumZFmBwokjCaU zz$rfKb&)-Wl!CHNRt{+`IaD2wm;pjs&Z!L|$Bam<@TCHkrUd4N&yucY$nIZcc_-nz z;;9}J@MUj{rZ&f#JfxjSb45U`Bt91TNc~;H8DxGGc6TY?;uuuJe0pSF0ZP#fuv~kd zz00W?=DwMb9dvfjsKp4rt)1oHP&;WRO_(`Mkei{B#bQnUb7*Aysd%zD6%*p4^rv7Z zYv#v#UKyzDCW+$PN+qL&p>tTpcgT3t_95E<)-hvpDzv@Zj#UXg%xB87{_)a{p_>k@!Yps=WkH1v%d{iJcVWeR2kLa_VwL_iCsQ&Z0 znz~C)#)x_7dbDxYedo*X?GZOB%=K{7LxLS6s%MNt!810IMSdKuEtxkK`8$AlweSxj%=4ad*mA?=6yQ2=brZArBZ@k=oKnT z4KZePo$9a$kULt73|f>sm!ghz7F$4STO59iT-A9x1{|%_(J9O+&-+n4YSs<8>ygGQ z`{<&La|5)K*b#k_Xz6gK;aSWxDGwvnRpp zr+2Riq3e$BV{~?F(ahyJbiaMK_OTbtVLN z*&`V59B>~>%(YLoW{dE!+Ri+R8&Y6YR-$Q1GovOf*eI#cHXgNI%Bx^R zjFmBC+L8wUq))u@mskDKD$ul|)!dOxS*3tE0P%$1Kb@X|6K_5r4d&K5>RPiGOGVAj3Y9pgW|kd6Lcw?Y{b> z16#jym98}|4P(ZLT;Ug3V!*9zfSDa+krAVj;m=tifTVmVl@XZC45w2u%<4cS<-8{R zXb(iwXQL6sb*{uMCe1E3%`OyaAC$7kp%If>hEgk!wNs*ORJzRUzfm4BL&D}>7R-4@ zJ#njj>-Th~`;GSxf*`dP12PNs>(?aq|3(o0vj+XYSD2*Cos1pyt^P$3yp_}y7v+$@ zY+CIMla%2>DB9v$e%q@?XvP<7paP`pdqLV!=x-D)lG@0AVd*>ph-xIu<2gAkVfZE- zwnGrAjifp{%zn;%9s7L$xdHOyr!F%S#T#XKl4QukFDDG*2RT&|veOv`(NeO9NG*Pi zKvpHW%V>geZ-rEV3_;OSoe%5b+=_cEL2fN-t1bXA2O)yIAxAd`N1fmZNxAB{A9G8f zMmOQ*pqMZwB2$2d)SgM71qPagcN*6=2IrPy5(<%?bh4qxUW9v?8bU=EAo^h$E2h$t zQtiPc@)>L?4@UB$xzv#bh8rsBa>jH%a1)SE)E;c5j9MwNkQ^r z<9!!d*C{E(X%vCWrlhvBQR}ZL@|bbBm>moy`AB3eS--&qR~xj&QnV*)=cv(#ja1Y) zOs$7pXhf5WezvP-dDAZA(9@@5uBBgx3z|;L zNl~?KvI;)to-i(YR#oS)*s8S?8xzMib#_onKzsjG{IRQL-(~XDke0!;1t7l9f=UC> zHY#eIT#2;oJ1(`MW-2z^SKBXLZwFcc|O3?Il+ z-@tBK|M0nG8@{7b>edb;9GvmLqQMvM*5N>pA_)CvjP*J5E6Oho$0!PP+KtBL%q>_{ z`&Z0a zD`?sxsltCf8`Pc-wX-kz$FURz%Xvy0h#>?BAfO{Glj~LB7oiduA5xEt+;cXpGM@zZ z{;DmykPLhn01^g<&$}A|^7RATkSNv)21cX|)AZ+%tb;nxKjnIyzMArKocY6+iu$W+ z5Y(U42?@9->4eH$1)@qMwhzu8smt>(-D{MzjW2*+X{lxoqyts(~U#fQQycq7(Nx%|(E^&nR zB8cgPtEA3wpT-Qj<41m8TZ)wZF8KR;#;uZ3Vv-eIh{Uo(KZc$0{>oMk&O4|?VxdgC z?EtTVD1x9ZvOKfse839%#++3iT?F(Bh8mtQUypp9M2QKhwJmkxqe%9-*YYghOiIO$ zSuw8+vb__znmRcOQ*uQr#m0@%2+f9KI{zrvet_=4}UWJ$x*i#&U#0mN7GM|C$jHs)EqU5xRokjU{#4awOTBL7nG#^ld-Lck3>nc z0(wdQVnqCnvKg}kV=i-`@KQL|0knepphwvNqK*)-uudGcbRYt5##H5jx3N z*M6MyJw=x^+4P71&6d9i1OMso@`faNP8TzBxjf?#GjpbXns+g{%V4%@H)gbCI!~() zDxEU0d`gf1qp*bf32?D^A{XN<27n<_zo-&TaW^!dZ zo!6^BN7FRNCpKsOG>7vvuWeQAxhDNLz7&jI2#!G}R<3BY{{tuTv3KuvFsgJ4!zukd zco$xF3g3h@{cV`c7G|>cz;PS&2`Az2cSWNR2}e{O3)% zycQ;<)J=>7zJ(L8Xo!;&`1iEBgE!HJMz7{PGWv7fs*+N%1*W1ij+I3ytAf;*936eU z?h)B1Jkm25izn1kU^}g{7v&&&s)2sYln2E)%d>sSq}YI}rW74^IEyAkMtpDtg1RX0 z>{pqultN4UPzaG=c}hjuRo^5W{EYPs{)y7^jdWQBLn~F_TbE<5f22O1K)P?HpD0}V zS$zBNQAqY5qwpUayy7-?&Q6L>4#xV{|BAzCl}$$^^#w! zZon3^HI3j-XQe}2j=vCXs(s#^E&82)?<`N3Y0&^MTuyEbd4~YpYQfo@xC6BEm<`BDtbMTY2|!4Z)&Je<#j`}~L$92$TNn7Au(^Kr^@@l&u=W{{%QM)aAIAc^sA zgy^y&3;lAlZ`C{|tXLSVs#J3gCQC7z6d;WQo`mm&{X)bn*jJ5A_e=D(R12ud6a%{_extga&-fL@pz?Juq?JqeqT2j zFsmTNluqqvIm}IMVPQzc6~Yc9L2UdDPuk%@WLZS~WnF>6gy?89q`Mn4BPT}AM$wPE z5l#jv!9Bli;$)j^&S=*?J7HXKGSa5C6k(aK#A&*S!IYpyx`Uw>z6|;Sj&3%n05plf zTnEh$)8dcK3GD*SkxkeP7mJSGUly<~V`NW-zMWOKygW zCIabzRV_3%v&o-aGZw++2ALd`kZnEc%tvaW6BA)+5?X0e$QL{~ATud%& z#?gAO`!3l(rN6jiwlTk*4H3!W>fy%fF6>_e?ny9(g}S?{u@bEb`qz$?9oU0=Q=2+r zQ5y)dtEb$W>XW?XZ7S5!gi_;517!I~yF51Fm$j5LyLOi=cP}CJA%(4UVh_!0ZY+C@ zIqzAM!BwAf&m7AL)l)65lg;{^>|_oBnQ;uJH=$-?qS6Mk^mo33KR-=&VM{x2Vz}J- z2SxZ^;sOuLitcv`KWg&$+Pg+J4RLuZ5k}{47ZlWmC`MJ$#+LLX9(>9Il?;oIo^lX4 z?ZD$I;#lScCZUC2!PHtTnob@k$R_z=JXd~~ijBmG)~k>- zbzNO+1330AdkT15xi?K2XFPVDg^D!WkFEpW+*gsX;(nP*^$0@svQ>ZJtMrpx#wJO! z<^{HYV|ytg(9s#(K!fdSaM#+^fd)rjvkoY8Z%g+`Y#n?9M)1XjPVT0N2KO?+E$haI zZsMVf8sl!D2P1FEu;)_#mN>q-*JCL$gy}7^WI)3)8{wopk|8YeI7VwbXG{|Qn$7Q! zDacu)d7@YXcSpvAQH`e1&(S)(dusAl%zGkAdq$~vH^tD^+js@E^#H4HQJ|sB)Kx0E zMjR1MqZM;w5DkK}*w_X!7(tjScVv5zBLLKK#%3BcmE#I$i|k5qX&!?!4MOftKx z=zM_A-(`?q;2DW3xo6}Y(Rxo z98cHEFu%1C_H!)=VCTwjoR7`?YKZ)M410*SE0X^rc0nOZCFBmsFP$oS@G^rh39#vrwQ$yukl%=}bcsQGLF(s2*uU%+l_d~JF_(K{=wDnRE z@eiWypx@A@-K5mV=TK>Jo=qO)-KIt~P}%-zb50HG-W+k@WdtakVu!+;YEvZ2%2p+= zsP?=CM{G&A#i6;9`!bUpmTCu%s2iTyT}Q7_<6+_|4X^t)66|X}5^nx}VVb{T+40{- zh|zj*vO07;yDFJ{sM7gJxXCP~vm+c~GR-kZ1kVruh`x6FCMoh-r-kHR%8oz9PPF(b zp54gfN2$80-A?1**$3R4Wp+|E6o0xoRq)Y*)@z`Cp5??evaZ=WGi)|o=MxcFY`Xgz{vVG6B~4i*dH63GTg?>V zJO$u(aGg4uU|}WT2s96Z1V4D25(WmFO~J;ZZR?F{exzNmXTF!ANVp6$OMHT!^q0aV zj?I8%74HXq)0r7Brk_Ra@z>|iJM=!}6r&eA^#K$NSS@Qowiq}Vl6}^|&ODTA#6VkPSmAic%va~Z1K~i;i;A4nOJqFvh6L6}i*l5cdI+W(>xDYq=Z3ZSGOindtpuS2orEd0;lE-5Q z(+*T7DKL@!7~r%_O^E~+COTma=x>0N{UZ~y+)J5RYqF04#hD`F1JIwg8OH`0bmxTE zdD_1@OwR*y+Dyz@Zi~i>^Uz$;J7y3`uNome_Ds=jwim}g5l@h(0w>ORBt@ILIw!BS zpdfDo#!M3dJ$2J?$<>6E_@RLy55(xRZ0B(V@8FVHU5DtOTgO=eL$Um5m|$1{ug>N9 zN|~9Wz6>L;#21IeoWBc<)9uuCiqthtq6tC2$F+Pli9Nx{*9uV}x5ns$fTr_K+At51 zw~@@!pUn68Y+I|08N;z>9qUKFMlx0vJexFF3?$wp589$v{UTM6pq%MN&eiYyRRVcK z)kHlwv+U;IwD2YIKD+Z<`vo~sFlz&XWA?;CVk_-@0wy^Qd4Cf=A=D7HCF=KjdK^%3 ze%P!w&fa0`9f2z}K;8<0So5X}Z3~t{ZoF$NlcP9wxiIx|d3`*O?t^s%=jR>?zmH&e z#F>O1}aVHjuj8VFut{-_!eoUN& zyPt*Fe+7gzC>gW6wEphg^mK1d&+6*-0-+B-!fVhI5~zflL`k&K=t~W>ZT+Z(Qs_$z zGzD=X-n<=orpep!g@F+;8>sXPg2bX%ILf5tQ<;ZpO;K#rXW3{lFqNJfMov0bPHx#h zQRnKHb=z)~a82G3JmA>`UwiSl4Zy2d`5fO*KD}*-czGMr*wZq_Z%7fVs)RQc-kvi^ zwl>x`Y0_U`P3@5i;?pu_csVARM>^=7EFxU}sjI3mR_erU&UhSY|^vN5)e&Hb(! zu`%G&ZEEB`RA)n(QsiBvsPEy7Y3S27^xP>hGJoVrE*cwaQh+xF=M<`Ysv3lkapQcB zrFx8Fsy*5dS}0JXe+i&~Bc_g&vL8Lh=uJU5FFs&Eq#RI_vj?fB%-JiC5T-773n_|# z)l#$v(xzl~syySbjo^K%ME~6yV2nahMgNqGSU0t89WM^Srag5k?EjFBO*Z&jtJQkn zqDaS+D%oOSWy^YT-bywjg=>WrrJC_c#il-i5uJ0^S_t&|=^mVF5XxSXoutD<0`l%- z#ZBfaIgWESt_()@dbRidX2-tESHG9f3v5>gX92a`C>2emS$Gwr`(;lK%g!@alTcRq zS=%fM{Q}!UX`)SRdd1770-X?TTK4eNEqlDIQfO^*Ai_D!dtg*wxJcYD)Lt zCl3@Ar4*fP9scdW6D>C_G58z)>*r1}y1ZEjq(75k_)ks&GC%ncVa@ZNwPtEV!j**2 z(CP!R+ZoUcYEKxuIbApSOdlK5?gyhTUoO?J)3sXzwxCe*-*kPrf~G~$HFW3+iC5}9 z6KpzS*^c=Y5}JuNj&QE)N~o04rqDad-U`s4Qdlh35$%+>$J}J3$So9T7aFbodJarI zD1=DOG|TE-5&f&dUgd-@XH3{MR{fPDR;W!FJ=+6zFQWaVp0Br=tJt%}>JIX$8`O*A zhTMY;S{@=)QA?ts^m*i@vm~2b(jj10dp@3cb~~%a+5_;g`T^jA1}CgV?~$z|{aAg*1fd-Y2ARFqz3X z)}kbJ^f9`3XwiW*bfYXO#35KiK2;<-9jlq>+g~7y%bNQz9>ElUcXO4KMmw{+x7z2*RX{7c3j3(1eL@?F65Imb2!5sri== z*eet%LDSDsy#D{*X@M zz#=Om{{3n9e3g}MYvN_tDsoPWJxzyn4)(ct{!8P41UyCO-hQgqwaN|csy&8Vx2`5IQ0>i^e)H&nP z0Mt3jp|&B13Uie}m3xwuX|_R?LNi;H$~^h7iFT!4J5^|lgxE9n)qx5nS52aGOA$E~ z3T@|%mBrFz+7{2DZ=^MFVjSn8(xkfM)`N%nic`>~IrzSP2y0KQ@;N@Msfl*!)b%L3 z0N1i&`aaV16K2j}T*&EtK!|?V*qpa+w)qc_4q@ntG87n;)FK&HCbicR#KZ^z`rbrK zO+R2%gnsKy*uAROTYFu5IzV(DopZ)R6JCUuxzCrYo>+4zw>X{7Vk0BN*mx}AGVD=g zxwdkY=}JT%ZZio+#D>0gpxYcHX^-eVz%+I+K|W=&R#1)BvZ>NTmCl^%w|mP?CUfUO zTvnvMp9zX^&Y)GA;Ve#0y5@w&nPyl=AXXR-nx=A0P>?CWi=A5?^W}ZZGlT4_%iR%p zGJ1LvUFoY?49QPanP++y><7T!vNNt#ER$N{TbXC1tLjg^A0Fnc5ehiyqk~8E+1~a0 zMjU%)*o_dJ-<`u<{^aAg=r^`;T_KpQKg6%g_i<6m8lPPWl2rhA135TWWrDlHDI;$`BRwByP~s4U0_N5Ww^f zl=sJD6b~_SMC*_ zoFg9M046B-6#k4pc&;8`u0H1JJtTj|s4z8Rnc_>to|m-VjDC8}JGFmh{0fLxf9gw$ zjEX(V?mn28EYp^ByT%jqet(DRL-CvJZ(sun(;oDv;N5v(pr zPLfbaW|6KT;7rFj6&!fz2m220?FVzqw_GpodN0(<;bO98OuSq$IySl)-!aXt&Fua9 z`jq_@=~h7){0@mbR#w3tEsNq+QV?r#K7TJHAQRGN z+^vW(HY5NAWE1jc!i}1sae>Kmry?kzWvAuMc$IC^yW2F$dQykd*4l=Kg?mzeau^5V zJYrcNv1HYgwDSFv=fvvL6V&~P_VL0aH%G>N_|NSV-k*m2%x#B3M-LNM^#KMzCGSCS zenqE^1soF(L=&O`e5Gm)kx-7Iu{!?QKUxqJ)oX<2fij59*4!TUs_4JH>CKonFV#sw z#uE$z*E=@gmxuWY1pvaRB z2q7CRPw`m(hQu+clgl4QLB0TRHrh;}FNGN6KTesRq9?=bH`=V*BL9WM#N*2J@(OHA z;rP}eu3e4kv5GTuKu`Ktfp-x&+M+^@H`kx@NsL`ups?u-jPS%Mvx#%?=Q6*OkXTmA z1Zb0O&`p>i!U!wnwn@EtRF&K}*SqpvWNG&@D{h#Z9J#Ece#J;$#D7D+veue6{@xf> zb}q@zMk?&Yp$U8magtdF8Bn4BkM*Vl_sTwJHMPrqa#U?&TgW9M?I@u8Y?aLR17>Jc zd>GR>?4#Lk+(LJrI>_Qfhy>zH>~6i<{)a%6i>2GENy4QF?Q>u)mQA%KVp+jscN$8y z@ultu*S-TNrr{+b=7-csHBJm{?WXicXGC3Ah^+_>SXC#%d6qfGlAl<~^A4{8qF)oP@X%qxN>Y2hAz zR!qKLc98`K=*oHg9-3TR4 zLs>}lzTph3Zo*|B|7@m!Pp(ie|KJ4vkB;a6TU7i{oFMq0Ma4gHLQYnW>HjQHRUzDz zeuUj^8JTPu-PcKh(WB9+Bp8tpK~U0vQC8}S#nrK!S(1%QGO|xWHG*##Txw{dq*_#) zX?B{)%?Ats3rkaBR#dMPzn9Q#2wQ44w=An%`|fy(gE9j5zMgEo-|(DnHGcfv^2~j` ziysBZ%A4>8Kfr`pwP>3O1+;q3hhO!y4}`0)AQXaDw zXaR569>WpnAw9Yj=-D64eklpDeWeH3eLmn?*f}2FUU+`3L;34wUkmqFKNIb*=e-}= zZu0!KfQ#FG9vqy0DO_h9is8HWT68E2H(|$LxBD`+H#G#@Q9mhP*}=cvZURoXC^2N+ zZWE*9{Q8@v`(T(k&-x+k9+Wk!cTpjD9`{6eCj094e>w0@4n`L|bq1kQLJ$a1yUC&H zAYQ}caw8fpX?)c8O)-6L1{FR82I;)bhHHmjbtj)}jo#cXA?SRlF75y9n!Bm@Cx_KA zA%9F;7NUt@9nK568ftQ4NIJ1mAiH8}&r5N4Pf3-aEE#~fQZKKpOnqTWJZlUtPve|) zj3|-Lx6xuovOQ;XFJh&VOgF9TkCYdRwP~;sM->eec~wk#?>;JL7IlG$*%= zA%XVTu_0Cs(}XPbwqhw{YIBP&qrG%);73DpQYO&K40U~)JB#Nm*>2S{44uy`L4mfl zr#?1gNy{G4(4R{K#A0Z)7?p9`*3Vl+U{egKzDOG^FDSH$++_^ZJ!UrSiQdiMQeIv; z2DL$V5jOg<(nugE_=?7m%D->+!+I#ewG9w=%Fpp5nL=PCN-v^ zmAB7=<2&RNd=JLO&9=B~Ol+JknWh+S7#PF1KP%)AX!Y%4`Cfbayn2szwR+bP!*-{- zG4?t6tGE2n_Jyl{eQznGX(=QEw3Gd=(6o#_iIsghzdxck##gT}ruD96ApQ|;O1qt0 zizvU^zRiNV#x6R<)#(GN*1}D7wD-;y=lf^qc4zfo7s6|u-+vVWOj12KI1+Rc4-1X6 z$FGv*Lv|EQt@KdPt4NN6Fe|Yv&rljIIC>_dNgau;Fxx%aungI$SP39-6+c)>HF%=< zkWj0NentV02@9=>c4}TXGjN@Wk=htyrJ-!k+fzZ!d?u8qa?sSF!Lk|r>1EbCPP z>?#IKs>b1Rtr5$AhcVhf7BB!XmpY{ZkVa*`Bl~-UM7MXA4 z=S$%7seC{IQepi*YY=RbTy`!P4nVxVWS#9m8#=wO{3ONvArzP^t z5D;z(7hi50BvrmZH5(AAKs`*Gin^ngDT=m9cdZVi*4(Q~_B2k{@w_2VynywL=D>e%DKs?Jm4rEV*Xof3GhD(l z1}Uiz6+^WR>*qe4c8|#Lz7$VW$dnY3Lt#Qs3m5dCE^7Z6gQihSzrAQ6rGtE^M5nRQ zPS~XTGroiAs3%H4?_BUO*kJaVhIzCuYIRV?3sh(d1k^qR$pRzeYRaGZU4PW0Y$0S&l$B}am5)nm z=5VFLo(v24;)W3vU;pBXCkQ*EiU#ul%;J9l#QG|ritdU?lAq$y$TPJF9h-$4j-;To zX&fMdiEklH9IS29hfg07oE(lJ-9aAE2X_NVlU@w$@Sg1#_?fb?pZP%d zi|q%3Ukj%9`mmLV;0lz%;l?xxYrz%d(`X?>y8#KSGc$&Hry;I9P$reH zE+H+ zPmOp@^&3zh9R87_Hnn9*fuA%*XqB|5(69r_ZEW4M;vGpnglN*oQ#oL%I-s#)*%1_y z?!#1$c3iG!m!0l^wLsWdMs%uVeVUtS1YTA>Lnw>`PjU+ZFizc4Nv4blh-`j~!G>wc(^oqW7^vgIoxQ6 zK!VO`%0y@8T7r`2?+D+#M@-shj2b+KzCnRLNlpu`#2BMvbX%p@TV)hmwLi2i3Bf8m z6tUfz=uLYIYno)B6Eb*^sxrdQ9G>_L&H#WiW^jp~SV4m#52|MQc zbdfN_f5f1R;>|d+nV8O_no14*ms9d`YW%vYRXVY$s$5tucQ5uckW7q$-_j;M%inn= zwrBUa{V=Uen>YB+v$gcmRwoi%*;x3bq+=Tnctmh@60Nz*D3VaQxru3E8>X&=#(7bT z;*>~Wt#4l*@N4(dYm0OgXwq|`tP|rj)K^Me; zSlwS#qwj`_BeIRydacpiJ8HJ2A*64_k^s4&Qi3lg=yflNj}mH}HoyJZOrLM2Zp8p~ zrU`5aw=p_fBZXo}Rji!&*-O@xUWT?6mZ>4-l{n#It|PX*rS?>Tum=! zd-){QA6xZnB;y-ZVaL42W;aVjS4K3L)&vPqmTVo+=9@FPyd72li+ocTG$ALPX%ug< zKnYyclA)pkhebawaj#iqoA`|rWh!1y`eylBV%hi3(J45eHp^wQZ0|}AK%8p16IhJU zLbD0S`G+@eFBFWtEh)bh1(<`BySOD_MT~wa))>rO&Zg~!n^SJ^I3}b#CL{s@Mm;NA zG(1)!!ZE4sDEN?^Bb?|!lp~qCRj}$_%AAXw-wVB62_zyJ&$z-tZ8dqxVY#lxTt@0+ zso4NZqKdJl0k0BNq$znqnLj#oBtSc#^hE7Axz#SF1W*!bw(i=ghF)M->(dTSjjHXH z%8uEi3SqH5gM5X%eZ}ki`yZ_RuN>+n-_NzC5$gY0jU)dL){g(5tMPvu%Kf{?r{<}b zxa$0kbD8+0{$&N_|H~f+65c@a$8HxI91y@TEU-Qt51wCV;HwVBXndZCdm|){)I7Dx zaw}rpzbMVyX z?~davPwXzo-?7?{lVQhSDdRe5um@5cHzTGfuUUk%TnrZhIHt%Liwrd*jkH~UXwFh? zc04)@_wG2SOKJ7puTeX8`>Z-n{n2a6 zvue0*SjoFC``PCYbI(Z@^tW^Q z6zmZNL6)Y4(iyicJIy%NDW-Ec*>efI>Nnr^J}6Am+n*@pMdV2q(J8kn&Dq#fGX>Zv zwBwbG&l@Mhe7I?&*C?8_n>}J`A5vgCepjtCO;O%yi;2PgqHjFi_U92tDS=WyM(I|p zM&g(q=>jnkVJP^RJl>co4oovYZAxB*Icect#0u)HC2uIy$YH{J0iq|EN$c>yr(`V(m@KUA*uSN z;zv$Sj3*7taucj(@Y{UG_HqpV`WnxVR(-cTpDt-;XWwp2j|Gn%8HCLFEC#Nh$((;> z6K!&F2&rxyoZoiiV5#APl9IVOb)tV)O9nopOln-Jrv3dn`&D~1)QHcv$|i<%JomX5>g)ti^bOz2+!p!AG!kdyl2_ZF& zwho9{`iq8^uy~))lgvH9U5ugK=ISsWc2#>tZBQX`atVV?#^UsJ?JZtV`ot>VoI+x1 z`h?nzBz>fKAYQl~5Sc%cu`am6 zVc)BUUPMC=R=GtaqPvAYwKuzvHD3HWUd3o^Lwb`e{z$qPB~j=Xaue$JcJs#%VfO%u>B1D8a@3-0T!rytyB@BfSzI<$^GMc4RQi5w+^NscP ziJDoK^D9X*Bop1>zwc>!mCdV~$ETDHV+??JMpOoz~>iWYHJp2*HNq)p`F?uFpqYAY?;fZ~N9epAt z%IOXcjv2u$V-_A<$uew}>h%`Z00-wOEa62gH~LM}ZFMh`(J1Szfpu1rag1Ru9)ePf zk(ZI~97fi+g%>ixMP?=kTs-nPxL~Wqvou=8&i1f??i#t=J|7T#W&K~#qHtbX0|Pep zwTm}Xn`;}Z1NOzNj|ab#yJOqA*_~Y-mue+M?N^!%$EZrIn2hQhF#ZZ_z^zcNsUgt> z%$n#X`*5t!$DL0;!r6o)kZ|JSP_0s^Db#kb$4$al@P65i*`YzcYUJ_gw7| z9`+UyC{4Eb{cJC5jw01PyIkqlzf7V6r|vO|nt(bM$74XIiH%gr0KSL{wn}jkblEN? z#O2U{jB!3fS-7~c-uUGdRxI+}W}iuz^)~@qyXx0yf=0}N)?4!8qsmyXwI)g+`|jMj zB66?t+b60J}l5K-6MxtmUspLMRDS_C9dnfseP1yTz>EgxLrDUmE0L%%#LY>Dxh99!XO4WM=$rA4>LuK%2G0Cer>2YB{E1YS!)j$UJ#tiq&*Z7V#hb&Z zTg`M3=e%JOW<%TW?8Vmg8Ve#>4T{4SzHI4)Ug73KrjrfEfvQ(l)YJefF_m`o3wjcI zFu)YPD#Xf1N`ce^%sZ80O(*Lu;UNdY(>4X@lZNFGM>oP1{iN*?{u|+0#zrjbU)J4Y z1q9@ww0BPo{N2}()>eP^Rv=Ccj1W+(0t%R63M)U2hl4qhyq9z2TG7FsYtF&#`(qMA z3j6?StxM|eKbTz(vI7{Adv+GY(^eDJ>3@;!T9B6(@I(t_$M7GOZnfl~N{Pxa1sjJZ z5a^93YWv-Rd$Dphj;^_;3=Szwz{s|vr1V@!u6azN^d~tEqXF#U?(3;jQCOb~hwSKX zXwd+^=!(HQGn5Drrf5=qZ%`NjDrayJxjZYd>oSKpbL8EQgzkWQ&L>Z`JBnnn!#I>G zWpw%7&MA}@?#+Bu!Dq*kGma;UYftAl89FRqe*&kcg<@6ptQgJi@v>ztW7o5Gujp7< z#Wgg`B|ZrROOP=u9O;-+xz0O+J#Rs**;#vU{KV}DYsScIzBaV<61CdZGs98H6A6BP z62BrA>e-sZT4Z!u%7d)rfnj{mmK6bdYZtaBm>*`Z~)o z-<#BbWF^!T@!Ef=60k%c1gQtew*P7S-CMVWHr?poUvls+iQ*Kg=NV^ioK4xipf})) z7V@L0LLby+s(eoP)8sbT2m9-E&Y{h0tC6Ad=Sr$Q-QfI6|~oe$h>R?|AR%9n;%(;bXH!|yUU>b~?$ z__YHkfVvfjw0*sN%+E#5JthOvl6_zfaap?ubE+rtOYd;49I_#CqGNTcNjA2c!3|h{ zXux6*=i9dAqsy9e6C5!ln1#xC&wyuoqu#{_+Y1ew2kTK>QfC6Q>%%W<&nx)39xH1_=6DAmolOnum9uyq-%wgrEc*)F-&62cRhv5d+cC zI5l6SK}Z$n%)ri_j-YS@GH!mU;?Dv_lO; zxa3)cZQTOa!v-r7F+cjaH{-+Al(G}m;ScCm-2nryq)c4^mRA;*Zvf`=YNFih4HQrE z(ietcncf!Gb%Wg7Bb1fCkftlB`G7qQjD}lzPS0ZKE6z|;v>X7#h9ja$ex2i`HEW@f z*eQM2vMw&vVv4#IlI!HmX~tDP>dO8Jj_T37?G|F+6PZ@(rY!t}5^sw7(a$Sd+GH4B z#E93@5&njIlr4}3H-J!bh*V-oPUc%@uxMJ#pN}c64QX6e>?n+0Fkd4*{Rs5=q|7PL zv41+MMCsOh@W}A$HX3+cAU*vRr%EsOFv_6OwlRphj|O zo}Xg^ekfE^WcCo#y_$b~d9owd%i$c>!)BypK zt$lgA-OBG#Y*%wJ59&hw`vPZZ0+;5Vc=>RS=2!ZKPWvOtqT2S@*3?B%~pB?FTfGj zm;`yC_yvmxUK+;vIn5Yvq!RvuwWqf*LQh}mSf^kwkR%GN4GSBkWjIh_<7j5=Xx=Lo zy2(8UK%D@@PlhlVZ~V`P(2ai7h{5tDg1Bk!x~T>i2koL{kA)bJGE3*Z7yY*Tt60mP znf;rnk0}Ax(ngh;&};b2u3bhiW$Ds}$8VC7SGfmo^5u;V%*XWrsv?Z4F2|zjh)o5Z zy>eep_e3(r?P4N&y-uod<#Tz!Q0L7Mnks0Uwe)>7+TaL<@6wbRYNW5%q(%WgUjx3L z2#>$21H#9h9_zqcjr2(`0B3-$6&=?Bw$lOMCgE-6H*Zhy4L?p?h@BMPAjE;7n-Fhg z%-y--En?)b=*gDob-tHXIKA^b=3AcDn0S8=aRU}=_x^_ReILq>2q^R zf6qwwv=(dWNbGCw72$0Xc4+!z=#X^L~&0ztM8M|0^w5bkcWncKi=gPAb!D z(f4hmG>n`{#cKR@UwTpWFiq=*O7Bk~=2?5+6(*@J{?~x**L{r#1sKA|4?c-ZX^8KN z_Px%b%*i3XA5$$*JH(f{VO;_IfAs%Y`rAe&Vfv{Anv`{;N*Z^AKSG6063 z!dE2T)A6$c_&h4-X7xQ{G-b;KgoMg}C=7Zh#j8e1>k9h$ck9)Z#Au#>@Io_E!q80M zPHDX@-+kP@fNjHuShGyq=0)?90whGF&)MyNU!TMHWkWRvImOqqYmTT=BAF)}Tsl}M zqX&B2A1d)(iFQ+ z4v=b&+=ZJz#j2n3hWF_6&n?QdfjxHY??bluUk{q-|N3D5V|x2977ulIJ*9`NFRujl zJF)~(B0o@IP^3wHq|iUP;I%=qzeymF;EC~I(^42X(x4pe%(S)Y78;$Jt5mSH)02D=_=YYZu}C(-FoZ`_||K}A!7V^pKYv$!DpytRY&pHR13&9y zo$&EI%MR@SL+u%`>L{}D$yfO*!sx6D&e50#3;awI__U3P2YzXdc7?vC^Vt~yevfH; z(?$4{-FTnX{|!BPs`}ix`YAGG+o=}(rJC_Hf8FK(MKH1J%H>nDhoDp0r>Wx=8qs#` z%M-6lklxa8f^z$xKJr=tzsX@(4laCX}uHWX6{hYnTJB2XPxi%Fz_-kWF8 zNl}PNEIR-V;+^65QXF+o+aFL#s~kh2Z`uKdD9goRQpS~46f9CL=OCb*b57fdOVc^e zRWwRAMzXvfwld8w*!F50Ul^dDCi25ml$-4!uBDd4h8JqHTtlvtEA*ti@+hba)RS;D zZ75;Oj+}o471&wbG`q@Qb^eYRTE&Dz9!&}*1J?IrK_td&3z%O&%$DOpJX(=n7xJ74 z#YBlbVcfg<-R!Pun(O$+FlFQ~#GaNFW)?Zm(`(khjsYE?>#0tGB%wvFc05MPzt$#v z(a)F?jpltx7OsE~7cXw_NMX=K=Gl~12j^$4pMAVxlE0wf(ed5x*$4wQo%;RP%muz& z1T!!ROr~)D`MB)BA_Cx7gvz?gkQ8oYNJ4w|;sjldN1j@%Etxx)4$Mbf9VIAmsb~KQ zBS#%!(n)(B+}T;&SmL*l#mF4Ht#ZdonJv5qa--tt8ezTCLR&4Z%Rrt&!U<*%F;Q!t z&?z4GAg625O-My?chFNiuk6zZme;DCwPUtU*i*%gVq0H5M0J-|m;F2NyHXLNZ4cmr zpI;_JDa6Q+D|}iYZftvX9i|72X`IiAE`(!SOa}SKeA~pu&|Q79K`zp;B9| z0=?&`XmJ=`r-jWFK+SxZ!Q&z_8?i!$6t>JD>Kp+z|1RuF^3~20Bd|i$@3)>UN@pB! zy6D(=G|g+QR-II#w7yu(@XO88eDraoNvwUMN(z<;(krJgK?s%<7bZ!EbiTla_P>~) zgk@8-LyJv4h$)tQ0j%Lk4{}Wm#u{i=zFWL`cloo|>RQ0A2k|l2%ECRB>Z7~NiAq;d zui3B|WsjpvVbg9<)l74#QI%&y2lm6;poGGTUySG|hfe5WZS|Pn!xYDaI|#5dIs0Q~4mzu|C*`>n?V49e+C;#% zN}ypc2Xwa4Fz#D?TMR7W*8RBQy!->^cVzNQ0EO16oiqbLg2^Ke9%@0t#^}Nf0pT=b z52(arTvPVLJsZ!Cg1m!CURu`O!9Id2(};f+#3>(g>1cx+;&JhYkfRIJl*PnXZS{V`h1mDUvZm^ zRJ8QHsW;RB`xOWDTWOP5lG^TY=0g^N?x+D7hytEwJr)Hr3AeO_DZGbz>SM03G!cA&v~vP7hnuS_E< zETxUu53j;@-i1sM>fyf3sBWP8Rnb6E+!vmk^@swjNqATA%DMI9dO?&JQ3Y+&l*dDu z(Z7nN{o7zdlg8rwdq(ZjV_B)H7Hh6}Ji3QYZob~h$S#U(|VL^i)LR&XQ5UDRT) z1)Zcv@M@nJ52B=t2Hb4}>~`u3Dw&ftc#pynVi(Deps>{Tj1~kTF6jkYTg(aG5@quJ zOZpX>3zYHE76ZgaTT_!qS81sFkU>oEL|axb$8C)|^ zu4OKc#ljN~nzOH$RAWp+B8WF6`H#{0NQvq$obiFSW*hU<>rK^uRa*zGYg@FIYHIW^ z8}Widl}%h( zq-Nd2M7e${zrV`>UlYhSW@{ak9gd~1IH})}XQpM9vtBuxG|4P_#WdzjZuzXk^pdx> zr5(LwdVik!gz|l%+|I|=fKTW;LRY6Fxk7v3^Y}!ikV8^GCkhV%?7_6updW@}475US z)WRI*?`%*HbNynUc6>q}c zhWq4=nBtTo!YfX9_Z9Gm_{)IT zi_Z7A3Bg$ZacA3Xd^b9t`jydz38oYYd3$!SNvHbxu9NthP%LVisc-BrHpl575WxPig(2eOaTfQ<{PV@a)p+YIS zH=Lv-TNFQICk<+KQ81@`mSwOW{U#^{NS2rmnpH1oPKsGou#~K>#8wkclr{sP(fy{b z8jz<$H7)Azi>V<;wHT(gI8)3o;No{QWjD}%Q_-uCCXCA;4FH5+C zOhvZB(5l%3{?W;fshW2*XvMXqF(PCVK~1bd6>Ru}%UlzGS9TqwF)uc~%H&chY20sj z^^#xEo7E0;bdMAcUEvm6L&kj@4SgD)R*WMWPtyx*j5n3d3V^7}dgxR{Sg(q1w_j~6 zH>Vux`K&h|Dz$sC178sbcZVtsY-c)b0WmrG@O;FLISHHGfu1Sw9@vQQ!A`zo-)dZ0 z$CTISAF>bJuE4FkwJU^Y2(9t(C-S+0Baw8K0Z&rYVLr(3-fp^T>AY$Lx{FjkzM!Iz zJXU7Ymr#ZfY8o%nJ*5NakpQ|Eil11l$lQ97*~8ag1IZla$$XT=SiP9&0}_h6s&HkV z6tR_o7R9JXs%rfmjk8p$vjV1^!5?s6J|E!+SIXhZ3AfoH4p&GN9nG3 zhTs$_IZu`vN4Vr6_G&_&l`i{fQNW}1Ki&UA3Ok@$cLm;RMF~5=RmT~tk&VqzEE&JN zQhd^xT3cdiuNg_B9d7NZffpAt)=c@eGLF5Re;-~ef;jom zWUjD!rI!wL6+~W^UR=doI#9o}&i zngt~;+gwg_jg&Typr|Jch4Kl{&yk2NRb^%3D`~VVEM>g%a%waxyVp`9M`(5%l}au) zYE!dva3$oc5b{zlQVY4UM8!L*XoNYIDYck-rd~Fw!tyNG1Omleh@|&FHOV^j!!q*{ zu#zOv%JKakD^b|S2sR0w%Ve$uRIUaHQh~2yGA9}g6{Z`vR&fwX5PeMex;FuRN5H%3BeYX?BVb%Y+sx>CpEUSA zP4Gp+CAU7%y)}JWyD~NR3QvTQ^v={ox+40{WtuR_r`9f;MbiuNC0X4ZZlJ~?$~hLS*4Dh!8`MAXepR?p3*aDayIP;L$Zp*tfkM)qhIIV5oaBec< zfKXT9;qT-&Q!L5Sc(FePKX?>9AFrXj%UD0Xz9IhIwQQlLS4dLbB>ZfTOxGWkja%-VZs?)N)5= z_uyP=+k~z*rA(eP)n%B*lCQ!PRMe$7h4>`$~g=oO!TTY7p-qrdq&-K5{ zBgFqBYyX$k+@$~Gx*mZ^K!@~;4P^D-Hj4jA4LN-1PvB>i`?vpxO7OTO6GIxh2^nIn zMcK4~aa{&&#GeJWT%|lxWJX#jp|D)%GU1BGHzJL))!9XxZQm`=@qJR{E(zXCk4fJ} z&&dpC^c+t3Z4DrDuV)W@r5$XCXA>+IPQJozO^44W92YL}M#)|q@pf{T+gjwZW$Na) zOq|ED1>(W&e%I^L4sR)&?z8@<>B8+lJe;N5_T&!NfynM0h1+k?*-`*S8Cbv$#-Cn$ zp=zIRua1mXR6%m85({e(X0u`(E+@^$*3zr)N+%r$+)vC2)eYsa)uZUL;MFhqpDwI<=e z2Vs9g?wok)IrAHHRK){{IllfPOh>}&KAL)`Rmnm(1t~wMga$0Ue zlYD`KVdCkGw5azL{LJ5lzC>!3JDjZc-s#D* ze^FTGFG?U|;7y@Q?><$u)E~hv_cyOzDXsIdDkba|Da|Wk4P=twwC$Wf8AgupJI10d zL#I!e1K^xBhN%q&i~fpfUPdV`#B&bH?Mvu+USX{CUmy44F<>$-82dopUzMlu#6!&p zb~(qTK+d;GB6wmqVm2ztT&6OxaQ({l^k$ry1oIFqmB=_q8A+u~=+c4->1171GYfe{yqY2KG?9bI$Wb zzY-7lq+uXPKDje^0tU4GPSwffYhO1t&x^$yE$Jri7)H25mFRd<&K%NJ^7?}SCi2)b zZNu(RS3$&YekS@{(G%NWt@U$8u>Uhd2xkFoX37;0+5)jl&QX6rUO?w3Mpmd3e-(S- zOB;_ls_zh=(mOJK#dC_&eRmPpSFdkbw7Gtx$)Q5mJZbl6B^}k}AQtKuKp6E&%#$z1 z^S~}==hMaS;Xy1zxWlr03_=BEa)x1wZxb$;;IK5$gIIV-* zZ=2@P1vXBtz7VEaZcy+HiBXp56E#oHoDfo%QdDR^#4s(T%bGa@6v_n?u*p;PKkn+N z(+4oP$EO;thgE82%EE40(q1_%;q~l&`T}-~I@NDy@m~>}p z{33M<25ixEZ+r>@kL^^Ry2F=6JqTiUG-u|-HxqQcTV5Bp_`PO-@XHowMh_ zjy>R5C?CO9F?AZ99v59F#t!0*V1PBY(+^Qkv6{-*dQhv7L6XpR1_^H+A&m7X&}t1J zP~vxoD8|CTE&MFqp@V||G$mzUto$0pVK5n{>#-*=U%_+JncC1IxkJF%p~G1P-jT5o ziN}fGP>(h#Y=K#eTZKJ<6bDst#2J_6)}tDN5*rdSGC%^?#|k#&66mmxwZZtRS63tA zLD}Bs8T3Xmm%ld;nKKlVJo3}P5gw!~)uMuTMe*K?2cO~4V=GF`=R4G+NWzVB$Vdcd z(NLJYlag5ZUAVs?mM}-?s=g!Mx*RZ)`RXiS-%OA&_E|E$HNi<84#d&~6>uOEW#3nXG%c9j7rooWB%X*PY(srZbQ-%E||E_gqy;2E|PHb?EL6m zKmx8Xu6uOT?d7DYREgw~=Qz89RVN|@z8l?*!^xf&;EMP;#c({qz=wTof>WVevi!;I ziPu*pn|uI*4gb1gaMrQo0Hka^>IU5x*>U?2z&Q4XrF?~i0#pby19!#?bLLUOWrDn& z%&{0Lu((Q9qZ7^pP))6gnY_Z=lO!7B5K zS$r>3Ty?)=VsIpeGr|$awSzsp=e*^lNPhgp#tjUvJ0MtfHTPLOm4L``PtG_}%-xj+ zzmCN~d9AjIr2n?R?hw(^$F*{y9~zO`3h+8wVmAqneFOrPb+^)j)+}0=+m57J*3U*& zw*lVBn#T{bCl_Hhy?d$F9@?0p=4qw2hGd}JUw28MV(eN8($6JUIb^N2re3%^iKyx% z(*R={|4wMeN~n(-POE~f;Q(DZE-KWj&XSCEVYEWG-yboYRf#@FHO9S?k^h_-vIXkO zdeb$0JSncdI_Xe9%MEQ@bW$|yxtHVuh-;;2s0q5MyDf^#(2j#61NDrHC#?*|KEP-kM;g>oR97K-QDqb9!sOTX#)K2{&gkG z2?h~xw4?V#B@u9+obe8&?%DOi`TW@aLY!PkRXZPZd53aMvQT1-ZG1f(oO5KYc-_Qu z2&V8jzea-Yo|e=Qza+n$IDR@#KGp6P76bzzF%f)q7~%jHc(9-9p7|TFXmeBIV4|X^inyO*_&wE_8)QzTmIgcZZ>4>Tqwho2Q0INd*Im8m*+!gt?L`(Fbl{vC`n|6jqlqM5#fv5|nglQF-8 zgTA}0v(vxDAv(*g{UfvER|1Bxp`21FV&lIws^ zq`z-20Se0dKZd@I8bWsXlbLCprY@;ZF)8dnGSr&%^+yF-|KJp}jxRGXSn5yq@enp6 zlg6!+8d>UmBm%lP5TJ@w5(7i1E`v|Pwl3^R>4i0m^YD?W8a>WNyKgqcT6AVr9p;zG zmaX$<33x&q3fwZGDS>C!rVSw6Q6S+aY&Vu;JgVbiFC_WkrZPY`~(!C>Ig z>IyrR`#cB?o-{~_U3Kr9Kigswan_)y`6NH*rkobQdXHJ4ObC>Sp!N|fHA+ry7;8tD z{^sTY&7Lu@W>(qT*p0K63r-_5_kkAh(j3E+Z8#3_-)QQFjKETK_ivQ8>&WXt|b1MWOU=t6UY5M+U)($@h0^5ukhms+P~T1zrFH53~jCH9i46Ht@X{V z=*{$PjI4|u9O?gyT%rEkXa3vb`~Ufjld+qVu9=hde}*|nDQemx@uPeOuhFeFHmKb! z!cZk@YpiJ4N=rydQQ!F83K;e!q|s@r)t|GC2^`bkHa3N^u+4}f`zGGN5>Wk|TiMTK zHtkBg%NqN9emS82Lwio)_9p}hPkfjHlCXjx(ise9cp&Z%89zD~y`dmsC*@vUq(3lb za3C#|ECx~4+y|0i^}C;|`_#6Ho~yf_XZ4MT)#crv6r9b6ckSTBlWP}l;%&^3_9!XV zYwPCTS`N3qpS*^$dXP9Z*=_uD&{heADh=A)ZUa9T?_E*crYbaH!~R}qB*~l&-y*!k z31*uCpg~Es=W3*>*hmIq7d{ObjhZT^2*}W-O@&0uJaD%fB$^<3@zpxFy_wCv2WjGc zP2nYK`eL#j@;CnROZI2B9>vZ?&kU8Heo7rcW?Ni%{$5*m$~*u^RLYK@yG`N3Bw^Q$ z3QG3KlCUtqT0aq?0qaUMFb?*;t3N9-4>$4f66d;O6x~K@O+07|HteI&nsEz8Hrfnd ztPL}%jGyrP!vNN!bd2&pz)zO%s5^v}zw_`QRN5!78`Nj-Pw*Jl(-$z)18}X&f6eu% ztD4^$OWUvf3U;dd9nq$sHp$ z+sBz*0d+|5mz$t0{cSV%g+`P$uIrzbRP(di+DoJ`=D1m(;Z@*keJW~rL=9Jw8cCvZ z9Cd${b9XCFj4CCyLYv?dk@1#fVLyuZke)!ANte8pjY8lR{U2QamDlo~=R1rG{a+GR z|NU|NZ{gzq`Z(HI>6_d9hlM0b^~D!i`R7;H;qrxxIU(shfk1!0_$m^A6~=W>vPBYj zk#Ll-zPQfZz=X~E#=YE47k$5G$CQWW!=3m{`LV3eeT>49@f?{ovBB*K_qVqs<7IN( zliv69VUPX?-C(7^rd>tg8i^4K%Z>{eZzNRNdM1R^;wB4uBna=!H**-=vsL0V4-Ft*#H@RLxH?=-uBs^3TKC(S~{as|H z?8KYI`~>iTqt$P8Mq9_1M9)$)v$odnNu`_4fc?2?D4k+_(>hRv(IJ|> z(XyJMxF%|`5APx4N|SMg8xXmYRsgziz2<<-xyH0-@OJs}5FRT1jxj2`K~12lQU?{v z1wa}$4vYk1LYUymk#z9g#hrUtCGdKh8XO9R}5-R^LjUSz6 z5=bzk1>KS}Fs>4qrA*5P*~1H$`J22gnSYc-1ptGy^fjj_l}bhh;b$~iG5?lQq49R3 z3l7ZxvMtu?0HQ_{%lX6@7hy|OhD^Eccbl0rJ%bCv^BP^M-GPt;+XVEF)oN|c!Q#Tg z)Br()E=wuB4SNo=>y;}_Y*~%rbFA7AA-j4Yvw8=-`Q8qoW>yU`kO2|IKrt#b4hd-O zQ>S|OmdASrEc<;F|0f|+Lk+X7vZeD)H);=n?`P(tS zJu+Ec1=*^q7B)ACO+zrB9n#Q@R)DWfj7M2YDwp*jN0dUa{&B8L=L?I^2fEOo`5561;0NgZtmQ*`Kk(KPv93W$7O>>&DQAF# zf0AI91Kp|3O^C&TdL{Zxf6f|}tbOXcwh|%AEUA#sw zy8YNv4;XA+&}&Fu%YW+U$wTgEfEm)mP@9k7kobA3C<$}SLmFo$_Nv^VI}xz4RiV6D zf?58&oX{k_A#>DdiynMdiTdc2f*+`UvqWwS=^Qd)H=Pui$#gO_wAw(&htpEcu^1RJ z5RhDLWW;EwFtBldca_m7(0UVOk4x#iOq}^#V#5%H`W1O}2*o%8@)mLb3r(v}rj|EQ z0*Bw*wLw;Z^zMz^M3=tOC$`=k4^mn+rxToW2t|^|?5}QOjMel@&Y=DCpBYt!JK(Q6 zTCDoNipY*BXQdFL7TmIk9O6HbJH&Bp72#%Zm4)rNt*3>&DeR%GT&{S$Fo8qg;W8gB z!n&j-+@;vW|#{5Dt9#&>9uG2H)`)cpH}`QJ#*zh0Pb{|CM${1d(neF3afoT+J5 zIvPqOjqKN5vY6aGe#1gHi;B^^=SU+${H*Yl21j|i4RXWcu)q6F& zj;5tLtb>5Xm+q+rNk!yf-7o0F5m%acL8Rz1CNV_KpEr6M%A3S^(KSA<1-G0f459+1 zQDy7KW3!g?FGG~O&l)%HrO)KH87kl7=0EaE4K8AY__rabvUgg;VRaxKB?o|K`#p=G zmDhWS03AP5go0;FSx_Z`WzeR<`4t(jTrF23VlX>MXy#m_WR{q|Cc`TjE;XCNMdhwB@>A^!__`*;5F zKXZxi8Uj;eT~l+D|HN)8nySdED4+1HQWzqBpwmiu*ybb zrTWa6kjar5tS>%ZkylHa=({wusi$X8PbJ$`e3jO`;|bXn8f%x2YNwj7-p-kQKR(8g ze+*qmg;Gkvv=9&w<-?&1b1)DSg_?0k?@9yNhBZuv$1)DN-r=hCkV0hs32nAl?Lrbt1KYr~5EB5l$I(iNVMR@CsVzr4YvXGhSO;cde|dGaWvS4R#>+3lI!5M^$I0Km z_`qMOE>?Y-sfbs=ZWx2@M1EVj6mj^c9|!Vns>+j-_3UCS+f1YxIQ;V}j9f;=;+2jn zi!1Je&ciJR6O&-=wagcG;e-71&|S)6j0}qNj}*(*xrdo?pn{XBeBw%WNO0BJXx4Lc z>&1Zp2G=hR+#h=(5hA@(rG|NJUNn{KD#&Oni1h1{rJV4jM?y?o#>dI!ny^CwU%DB! zHWtZP%ovm4uGvfWXtauRb8Mo_eK26us{hlVX%3M#&L>#^DUk6J&B7rhAOcCuc6F%sAcfHz{{- zwGv<(HO7v|d_R-Wk+HNaw_!FWCe<9sq>_9F)|Ge;r`{m0@aPkZmse+};nW>IfSprF zQ0hl-V@C?UF2_A#5a!Zy5$pq{SM_X-)-NZ%pcf(j>y0tE1Pg&A!j?&Yyi=KP+*grg zce`V8g4ved9=BsR_GlvorQKi5mPaOwdDs!JO#NgmGjTNba10gf;zA{8Tk&}SC)29J z^r8{Kccv3k&3x`TXkAzsM=js!5mJh=c6kk7h8xLRXi%5htOVRlU0jBOEK)tpFui*y zqFI~I1FZ{#%pzf)R}Rx#B3kk z#kz+z787v)4#sZ_-8o2GpgrF(>Wzg z^dze|&Oq>KP40*o5+NfNAfyWjjXEdioJ`8>?nQQmO+0qDO6HKhXPJ!6(Ap)bg4giI z;a2m1rd@>ymN<4Bw(xHsi-kG<4Z4xqd$x|rbvJ`Q!L7M~Zzmu5hx3`4B$#tZs2RE2 zLqr?Fj&Ax)D;x4zTh^zCGN1TTr`dHWW_dv};{fpqBs8;b{Dp+@SsT848`8?4Sr@|@ z?nPURC6*?SnRnOf?K5X6;~2~NZ6gpSaa#M%2}xVXlu!@;;(lOGc#DfyYf$I)yE6@g z^cY(CkgDh$YY>tA-C2Ns2WbbXB}{qUBGd-Q^y2suIfgge&hXmRts9U=`@E}p9A=xl zw5HmJm)(u@I6HZEv`3^Zw}7CWaii6UIs`S~``Sz}guk<$b9|4t+Q0K` zh~xEx-M-^vlNj6WfHCk;=782Wdy!4*6XqX?!CO&w`yW}?S>N)|e>B%eU+6M{T$>*pr=Z9|#mC7@-kr zU|r=lmddUe0XaW1FMUC7tS`l0Tx32lW?P^#R179jR)9m0eo@=lo0slUuRQbTQR{Z2=yVihgozX>5c+eoJ7!F6tXyo`+Tl$uL(7@h6 z*}osJA9GCM+Avhk~48$}&yQHiG)SkU7J$r6_m3{mdf2jTq zj)EhI+=>+(fA*0FRrYRLI42MKVR5)RN!U%%W$7-L0xUDI7RgM6-!au87%M4370m4Y z?c>Md+5Pbyj?PadF!mglpkZxx#_=SHod(r}xBnmx%YC?9Jdt`RXgOFN5lY;+k?qVH zu)7FvIzGW;5^(UEkzub%aF45m{7@_yl|Z_pyq{J<4y_Px8XpjMWj4_| zg_oewpW`WgMh}6n1NxY6&4;Hzg(y)iO>sDixZjsBPD#eD$UgEJz2A(yjI0Kp!4cLx z(>?iIfk5E(TXKYe1o<&_{p%Yxp!~0}f%<=xEv^6Gf&yJ@b2nq7{{#=p)~d*&C_dl< zZ0gNIXi}1zm1grDW@wF7DuEWgC^S%uxonSuQ?alu*+wasGCzI8yL)Qt==+IFl=&Vq zKTESWN5}|CO069xCnp`ZuDneiuY7erq4dD{j$1+{v3QrRgQ5w&$_z15oV_BcvAV(y zkW`6N7tA}+dbL3BxLCZZuFtS+N+;MQT5|ROpUTbzE~fnp;3J|GB~hZ3BBB))37Hzw z-c%A#rI~7~nW%EX&b|JgaM%KvoJZsihw*KeWI=`9Uz0?1`&-KRp zy!*Z9oZmU;p5JnR*Dob)lYuDaS5V=qCJjvip+5Yp|yPPK$*>3)0=7poR z%P(Fpt$bNJ&F~HDKWVy0*6vUIicNiQh}Qm?yFEMW?}U>Z_ZtovG4_gU<=(W}r!C%D zzIRVPu+C@qwM?&AmmcZT!!;MuwH6<~u2~fey8z5guHw8l;vRew)Q%Z85ivf1}j+Mevrk$x}c5nwDhfcYgb% z|E^87zs-K|`n##$I^D5|*4F1U_eOsqk+G8AM{~`&M;F9X?&Wwmi5PoHX?Nn448KF_asUf*xdT?^zPt{3Cvlk>-#ZJ*6dGP zF~!;3sgv#ZA=25G;3FVoKIqI{VfJ5cp;mmB@9ktqulb!tPNi;3c8YAutj`(@oTYE& zcYIqv)|4X$4Y$=5FJNWze3ttyGrqTYUi}Q+w84MOsmc4x!vR(ro^ zNGq&=x1ZZ4G*`oSm|)9@%e`NGJiWoh%w+4T!qei%UypyV|6K8SR9(lgc8{-RoOM=T zt&_tE2oGTmood%7BR#&Lb9mABkNKWIoaPqQ+FCQuFWhQ9K3FGZy6Wczi)J{h1h4yO zWHf$8D63~AXZHL>i`FKNI3Ll&u*UcNSe>kKHNh;c$e+a*&RFcwaR2D);V@Ol-)>Ct zXU?cQW_vvDt_-so61?0wJHc|@o%}(Ys=hzW$=Z#_wHUjX32#&Pj7ji*(Nr<>O1SQO{d@OnNr73 zE6+Lbvd8V_-L(0tYJOltQA9sQ)1UAv{{NyTO=(}FDhO*{@R9T=Hf zeU$TX(Z~Z8t0H#nC>%5Se9l6j(Z@B`@vMVKL=KDGrQI>PlAW$P(0WMrzT;!^`S&`O zUg=*xI44-3bFD65R!2cthRI4jqwZ@R-UenZJgG8qN6I8=0(-Q^&o03o+uKT1>K5Ah zuDr-r-50UB>Y#>ajlc7xt`9bPwdX%Ki&yQOuOIT+-q73MBY*8}zTnk`%Aoy8QJNE$ z?$HnEou4a~R$h6P<*vTPqDFIzMnF&8cxwzky(%en?Y^_^&hhVd4dacBeR(Xh-vEj22P5uKBg=fJ zs^ZNKyyDo&4|g5BzE>lskJP3%YpBMdKMktQxZ5B4^x#DIpM2HDt!g&wa9ofBTlKWq zd}_kyl|4rto!s%F)9lK#ZoN+*Hx1L@syFJw=54pFFLf&kNG%9S+&*#aoBo-RpQDWJ z;#2Q0h!~glp{lN{*MbwKSJHYvdCau*Q~BEFg?6V=+dd9cAN+9pk@S%R7isj~pjCD= zzURIfkxbWak=-6!M~@HC`k8vEX0A(_wALVRUunqNieqjk_gD1cbkK_D=}Fr%J49DT z{oq=e`>hx-#5CDWdiNVm}h6adoOtNnEBs~ zWuuEHis!Fi%uG<5tmkv<>iD)H#Z#&uc}!`ObjR!I&b0L=d)g)VA zD!L3^h8p}c4CZ!IyF^%@ffukVCPLW-=@dV_+yY!I-Mv}XUM}A5EH`$5l^4s`11ESL zec z8VbkyL!AM-HXnXtWe~rwp~p#!{Qclklb)~Lj=}$40@tIZ!!5^h*-K->r-h?Qaw|^5 zChu19BH=V1?DH;`2gbS^Yk?*VO*qjISIe<}oQy0Az;F&n1dlB%et5h*^8L?FdF??y zZRo8Tw(#Ir4G|du>np@u2?=$(`bTv)SQc;-;V_iDhm3Sc)rbZ`Ix@g-;Lwm;3IJox zGRJ05c$*q*Gy^L6HY!cmXv$p!TlC2sXPd97Uw$B~HM-f`P<8DAAZjX{`ZAX>82{oI zx-?oYA}(BvH3y>D9oaO`1PJTkw8ALC-c2Ic-`+(kiRKC%|Mvt8Lyd^iKRJ9jMEc)qfWaggAA%vgntFv~ zQ4DMQJT8Lkk*AqqoT4dYj{N8EWDSp$>(Vtkc_Gk3K*2s3@pULhWN{@C(Y_*KB)FQH zyM){LEm(P8!N^L3*}(c2w8f+UR5&G%tZc8*R>?m>wBF#buqTJik;K7Kap6&7GZy?w z28|fpW1awt^K8g;XdO|@aV1g_L}m;z`Mod&gkgeixPvANa7O(HHOvCIB0f(L4qtY1 zn+AbOhTfk0r?3!&Dl>t#BP~+Fub_AWlnnVDJNCydFi|=97Ovftc^E`y7k~Ly)A+PH zW+`aL0`2-^f+Qs246bMzFM``T_4>C@)tCm-Sjr3q%9yv!)e^YgkP(#6R=)T%Ftv?kFQ6)-vMbLIH?Indk)V<1tIG# zNrNj}H@Q2?2Rk8l`d~QYTLfH#8EJSUM(vMb0M81KmOv&O+x#s|6 z4r=4M*{z(w3=oA2U~?srguYqQ3605hHR$N2pZzO_Z@N|Rn$H$ zn!~S+cL~VG7aW;FsX&RWdj*{yjs;oYfK_n|WZzQ)rV+RD)PHH)KsfZ_K}$^BF%M~| zum&ZH%b_=J%G=HcU%?8oAg~379{ETqnnvWV^J~8#>t2HsH^kD%1a6Caxp2bcB~-a& zdgztch+k%OK$P_aTCQ;2>r!1{zJ?Po!qz?` zaGRZ$78(-JKN9uY^1;J!qyB!5LF*gFPs){Y&FcSji{tVsOFO+^vnQxRR_PCQCtkch zd`UqiKfwN2Gr!jy5RU`m;k_)2Hy8+N^ZGu%S-{MAna7yyb11MNUJDiH{t)zdhv@TL zB8x22Nt1-XjXpL_gp3XVnF;t@m zoB4Aic=0@N3hFlK7H}{?yFK(Ip(w!%lAXUu%oZi73KAVG!+eK_txWnBbHhau(Fzrb zA%E_|uF!lTaQ4Bjw`fPYo?VYYothSTWIfAfCv4vZEKSIGrWkJ-q!vYa8b?8>fzK>$ zDvJR49L$ebBY7QYfY7Eea6ye-q1Au;4nXdK7RB{0hEhsVPG!9RTm?&VfVUcWFoGy^ z6l#)qE&>j(ZLW)3nc{Iw2vQxzoK4S8A7d@%aJrKWv3*v2Fn9A+n^BV6AVdL$a^;ZxII+%Bnk z0Q#N>`Ec4$*ga8EHkL@pr>6BYIIdF#v{D7@O);dRDRUOD%R`x{hvlo_e5-qtnB%x8 zHBrl0UT0@940wCMhIj=d=|keV3nbhquBbH)ZMq>-`(IEWm56wGsMeQ+ZcKpguGG@b zUEf*j2p|^%5|3zCC~XznrxEEb__ode)Tkk|}MXLp8@p#lkg!eD+8=^`S^ zxOn05uLFq)Cgt*`aXIwVPALPPo(HNBsCeRF3@1_9yhNI$mi|dA@i@>jfrdW`wMP(X z(y1}fkEZrXtIJ()@BruoKs=8djKqKqg*h`$D5jkYK(&^Z>e^Z~$M9LfkQJi{Oo$m4 zbkpc&7!b7}?>5^RsH#B4-LudIqXxRWHVA7bJE}}Qs2pqi?WH|{(RwQw$B{WEGRa_a zm2!F6yet#oph^WFZ>?~}I1QPX3|X3;e;vh2GMspOII}Q_dt4khDm-q2h$rDH36)RM zE%`~H)_yqgQS)76F=k^@beRtCB$LHsz4?pR8|+l3kPl~!BcY&^h~9=J!^|zCjv9lW ztKb|YV|J*^#>>GZ(LxUR30oSE1|O7qVDR|bG)thOE+U?`r+8vyKdDd>4u!Q?C>2Fe z=$v?e?ou1jc@yZ24}stHQiPFJEm`3>ssL2%2Lc&ms(Sh=GU^+EW!@QVG1qE#Kwp(SGhlG(+hC{bsyM2qs+J{8qlQ zX|8Ei{CE1G;~+rWV67{fq$rf!EC22Sxi|jhg--h?<<4rLkAXtg9;3hdgNn|Ac{CZY zS;IZieS^aJ`QW;JzBs`?bQjKN>*NcRfRN|lE@Q%X{7}Jp{_gb1fTm+LNU|TfsX%-Y7C#7&x>)-mia{#>v z(6+L!#jyOdHE6I%INwbmr5I=MRFO=9SwF@#IB}0qU)~x##oS=#`}UT9XoA#G72x%6 zb!)I>?>*(!vnz~TF(5TF957RC-$a(xi^t~%LRRESW}4ZWc}wHsl!nN=-4)Y&L09FD zqr7+2Y*u;`vfTX^^Z%R=d2&8D9Ujh6C&@?`aRiU2xG{=+n(V$XW5q!*Mj`lyHD-{} z1!Qnz4_Fw>6+qD~G7CVz$WnKcNTxrBakY8SjJRj`K$n5!({gY{EXs}x+UUPH2FADw z&m+77T5^SqZHzuw9?ZgsdF1sth524Ly`*(z`&BYj0&t{_6l;d0Q!gx<$yt=snYD9|5)(73?6#*yiP z0$zfYOY`{O{@OkPl|YJ9Lx(*uWTR*KbNNCTpdl1iO(kk)FoTRK8Tf36sh0}AEfld+ zQ6XG6ZWk!30gB>|#3o+v$rH%d=8E2ls>sBjPBE{*iLAgw@yDdUFG;8|E^IgZA+B81 zI3gI3gSjU%xNKlnZ32Yp3}|#*+SQXtU_akhKns#qPwWkk$1fl;4xI>V8?l|W>P;9J z*a~RhSyfkE0a^)A+ypncBxr*P-0J<4)&w28-&y7WjTO>CUfP&A64=kT70`6e_I*AA z)K^^|`YoOW4Ge4rbY1s5^V@^NPlprF{UfH4pkrFWtYg|&p+Qr$5({Upn@(c-wSsy0 z_4~RP;851kRA#dA#8{L_V!E)I?(U7XDA`S&cK`JPtrtA5Amz#VB%+@ZheG-8kA%*@ z`U3MLF!ASeU=oRm0+qh*MCl`9VBA?WY`z2CCQ+IGo-F0mPUVT&VrX?V@PtRy z?Nkz#EsTieO6mtZp^_zZM3AU?oO|9p@XtRW&EY9IbBR)@Vml#Z*L%es)WMzs(E7Oc z6W5TCFufi@pZyT^bM_gB%b@vNuqj^l9a~RHB^$LV)5~xFf@k_W5D{3K67wbT*zgg$ zKIYB@(>$R&iG z@im^#8hH))ZonUk@drU%k)>|r!vc^9E*HuX!XsW*h2q=&Hl2oB_`ogjzTw0JRJUl= zC?}HtS^C<6-#~7(Y!?p!@gYh$+mmLY38Jb@>Bj7B1tZQO^08WQn2Jh3Ho3nZAZ2aa zMfNWY+h=k}UO4XkXe$Jkisk)|Y7E9>SVDsjs)vy-cM(NN$t#!;tV`Ze|9p_)8JzfB z=uwyz#u^>T;t8`HqVUEIHD!DLh{fq2yP}8)w%6fcU@9nj0#3Zn z$n8V}8`rS&Dw#Q2V(wc7JY!HDU-!1SGlA(M5fZ9kBwXRV(jkulqyiw^{q|{*Kn+ve zWT8g5=KgR3&MP=^kGZc+V2ugqFok?RsHvni+CTd?bu=*F!-`!f-29UhPeRYjC-Oh@p>1gr=s^D z(Ay(x9=wERP=P`KFP&%gBnjfri;9+r&FcR}CKi8s8oU`Ym?KmwxNjdaq9&4A$FKtpCg%V|k zf{YPEln@DTIw7sqN=_z{wa&CxLL|KNgovYRU+qR2Y`ubvCmfX!36(w~#v6Kf?gF%X z3U;g;u7pT<4+;@qz1Wz$09ppU35mD$)R9Vvgg2rP@ma5wq4z**zJk_6U6c?V$qp|% z^I(wy$Y`J-V;EBjaTu9s!OERH1c-@1#G|qZdJlM|hqAUz2-(_@k+wBaVUB=Yqkv?O zQ--978tvGOTQKFs0JF(SSvg)Ak|J!Zt}Yk{6HN@Z0_-bQQ7qz8js{!MBPl}XL2lY{)ERVD zKqdq#LsGWL8OoZ`y%6<0IDIw;iyv?cd^W(N zrj@rKg9AK==Ab^Rn?j)d{6Pz5hl}H6Hi{r^K7rbCUX0&+b9lJy1(V}bg57`7^3jy@ zRN)M2t1n$sd&LV(!UdDy9eud zaO6dLBodb_Wx~y*4=|<5KyiY5nmTO9NMiwi78ABub9D)DA%jB$9jlIkm+b&JG3J(fA1v#3~qTRfM+&q1JDSRt3;6}`<4p17xk`5R)l{segqs7+Gnb3>8 zb3oE7wBgWA;N$5n(u$VdFeTX-$c-~pWZ$Uf)%+I?x7Y^;$8T|OaO-c;I8{f!#gikt zeRqN3AAuHlBHB5O_7UOPZ0iWR|DPSTBA zV0661SbmzJ#+?@2@Wu<93(Fq_q-E%+W^wzvJV^)!sRD!GE4m^l(!x>mDLku4Q-tU) zk8I|sUxLUS4hv)P#l}uk{{Op>n>J;$=q?8|Ne4}wFn8fblkR~OXiQkJa8dT94k#Tt z6pP@HU-lV4UNhAccK7m=pJ21&E4dL_a?iWVRc~o97}tBrXK)R8sY~(EfF!40C4)rN zs{2>P1VYChVjmBkL760Cqa7&cLlDzB$+~VZFw4QleKGrP+e%`3as^S6==!Y^NN@2Y zq-gaCzc7gI%b+}7YM8_B7G%X~r$i7`XU~)eg%E>i=WTpe?jhtUGPHRME4uYk2p$u* zYmOZl;U-9pKW2XBQNg`owicE)HSCy5_JEUfREB&4o1$<1nPIkFe1Hne#y*lLJ9~u$ zt<~sfau`VP`na5+R}YeiO-p!{_+N1j&c$Z(fS-$FM19XwAc(ELies9(Wtsyh_&J3Gl!nQK`+AKlFhwKVo{eO zh$j2t_db}O|J)7|!vgm5R1{I}{TlKDho;d0G?^-^Hh81Vap{}f4Vu3ZBpbzOx?c7peRza? zr)0=|CsH0M`xztr(U4Y4C00FB=39UAOxe%T;H`6lp^DqGS=D-G^XHIciO6`epH9FP zXSJmw%6-&E9x1!|J+Am$HF{*r7Z~K3vfF6mHQyZAVG?tqX2pq{=*xp;x0J=FQd8i) e8VWFBPi|iiRmjxv)=ZmD@ToR + + org.netbeans.modules.web.project + + + + + + WebChat + 1.6.5 + + + ${libs.PostgreSQL.classpath} + + + ${file.reference.jdbc3-postgresql.jar} + WEB-INF/lib + + + ${libs.MyLibrary.classpath} + WEB-INF/lib + + + + + + + + + + + + + + diff --git a/Java/TP4/WebChat/src/WebChat/JAVChat.java b/Java/TP4/WebChat/src/WebChat/JAVChat.java new file mode 100755 index 0000000..a8d71bf --- /dev/null +++ b/Java/TP4/WebChat/src/WebChat/JAVChat.java @@ -0,0 +1,337 @@ +/* + * JAVChat.java + * + * Created on 11 janvier 2006, 17:07 + */ + +package WebChat; + +import java.beans.*; +import java.util.*; +import java.io.Serializable; +import java.sql.*; +import javax.mail.*; +import javax.mail.internet.*; +import javax.activation.*; + + +/** + * This beans handle user connection, registration and mail sending + * for javchat connection system + * + * @author limint + */ +public class JAVChat extends Object implements Serializable { + + /** + * Constructor + */ + public JAVChat() { + if (JAVChat.con == null) { + try { + Class.forName("org.postgresql.Driver"); + } catch (ClassNotFoundException e) { + System.err.println(e); + } + JAVChat.initConnection("jdbc:postgresql://localhost/javchat?user=limint&password=vilest"); + } + } + + /** + * the user's nickname + */ + private String nickname; + + /** + * The user's password + */ + private String password; + + /** + * The user's first name + */ + private String firstName; + + + /** + * The user's last name + */ + private String lastName; + + /** + * The user's email + */ + private String email; + + /** + * The user's picture's url + */ + private String pictureURL; + + /** + * Use provided login and password to conect the chat user + * + * @return true if the user with given nickname and password + * is registered, false otherwise + */ + public boolean checkAccount(String nickname, String password) { + boolean result = false; + this.nickname = null; + this.password = null; + this.firstName = null; + this.lastName = null; + this.email = null; + this.pictureURL = null; + PreparedStatement ppst = JAVChat.getStCheckAccount(); + + try { + ppst.setString(1, nickname); + ResultSet rs = ppst.executeQuery(); + + if (rs.next()) { + String storedPwd = rs.getString("password"); + if (password.equals(storedPwd)) { + result = true; + this.nickname = nickname; + this.password = password; + this.firstName = rs.getString("first_name"); + this.lastName = rs.getString("last_name"); + this.email = rs.getString("email"); + this.pictureURL = rs.getString("picture_url"); + } + + } + } catch(SQLException e) { + e.printStackTrace(System.err); + } + + return result; + } + + /** + * Check if the specified user already exist in the database + * + * @param nickname the nickname to check + * @return wether the nickname is already in the database + */ + public static boolean checkExists(String nickname) { + boolean result = false; + PreparedStatement ppst = JAVChat.getStCheckAccount(); + + try { + ppst.setString(1, nickname); + ResultSet rs = ppst.executeQuery(); + + if (rs.next()) { + result = true; + } + } catch(SQLException e) { + e.printStackTrace(System.err); + } + + return result; + } + + /** + * Insert a new javchat user in the database + * + * @param nickname + * @param password + * @param first name + * @param lastname + * @param email + * @param picture_url + * @return the insert state + */ + public static boolean insertUser(String nickname, String password, String firstname, + String lastname, String email, String picture_url) { + boolean result = false; + PreparedStatement st = JAVChat.getStInsertUser(); + try { + st.setString(1, nickname); + st.setString(2, password); + st.setString(3, firstname); + st.setString(4, lastname); + st.setString(5, email); + + if (picture_url == null) { + picture_url = ""; + } + st.setString(6, picture_url); + + result = st.executeUpdate() == 1; + } catch (SQLException e) { + e.printStackTrace(); + } + + return result; + } + + + + /** + * If the provided nickname exists in the database + * and the e-mail address is fullfilled so this method + * send the password via an email to the registered + * email address + * + * @param nickname the user's nickname + */ + public static boolean sendPasswordTo(String nickname) { + boolean result = false; + PreparedStatement ppst = JAVChat.getStCheckAccount(); + + try { + ppst.setString(1, nickname); + ResultSet rs = ppst.executeQuery(); + + if (rs.next()) { + String storedPwd = rs.getString("password"); + String storedEmail = rs.getString("email"); + + Properties props = System.getProperties(); + props.put("mail.host", "mailhost.ecole.ensicaen.fr"); + props.put("mail.transport.protocol", "smtp"); + + Session mailSession = Session.getDefaultInstance(props, null); + + Message mesg = new MimeMessage(mailSession); + + mesg.setFrom(new InternetAddress("limin@ecole.ensicaen.fr")); + InternetAddress[] addresses = {new InternetAddress(storedEmail)}; + mesg.setRecipients(Message.RecipientType.TO, addresses); + mesg.setSubject("Sending of javachat password"); + mesg.setSentDate(new java.util.Date()); + mesg.setText("Hello " + nickname +" this is your password to access javchat: " + storedPwd); + Transport.send(mesg); + result = true; + } + } catch(SQLException e) { + e.printStackTrace(System.err); + } catch(MessagingException e) { + e.printStackTrace(System.err); + } + + return result; + } + + /** + * Build the SQL statement who retrieve info thanks to + * a nickname + */ + private static PreparedStatement getStCheckAccount() { + if (JAVChat.stCheckAccount == null) { + try { + JAVChat.stCheckAccount = + JAVChat.getConnection().prepareStatement( + "SELECT nickname, password, first_name, last_name, email, picture_url " + + "FROM javchat_user " + + "WHERE nickname = ?"); + } catch (SQLException e) { + e.printStackTrace(System.err); + } + } + + return JAVChat.stCheckAccount; + } + + private static PreparedStatement stCheckAccount = null; + + /** + * Build the SQL statement who inserts a new user's data; + */ + private static PreparedStatement getStInsertUser() { + if (JAVChat.stInsertUser == null) { + try { + JAVChat.stInsertUser = + JAVChat.getConnection().prepareStatement( + "INSERT INTO javchat_user " + + "(nickname, password, first_name, last_name, email, picture_url) " + + "VALUES (?, ?, ?, ?, ?, ?)"); + } catch (SQLException e) { + e.printStackTrace(System.err); + } + } + + return JAVChat.stInsertUser; + } + + private static PreparedStatement stInsertUser = null; + + + /** + * Provide a login and password to the database + * + * @param dbUrl data to reach the database, url formed + */ + public static void initConnection(String dbUrl) { + if (JAVChat.con == null) { + try { + JAVChat.con = DriverManager.getConnection(dbUrl); + } catch (SQLException e) { + e.printStackTrace(System.err); + throw new IllegalArgumentException(e); + } + } + } + + /** + * To retrieve the current connection + * + * @return the current connection + */ + public static Connection getConnection() { + Connection ret; + + if (JAVChat.con == null) { + throw new IllegalStateException("The database connection has been closed"); + } else { + ret = JAVChat.con; + } + + return ret; + } + + /** + * Close the current connection. + */ + public static void closeConnection() { + try { + JAVChat.getConnection().close(); + } catch (SQLException e) { + e.printStackTrace(System.err); + } + + JAVChat.con = null; + } + + /** + * this Connection instance is a way to reach the database + */ + private static Connection con; + + public String getNickname() { + return nickname; + } + + public String getPassword() { + return password; + } + + public String getFirstName() { + return firstName; + } + + public String getLastName() { + return lastName; + } + + public String getEmail() { + return email; + } + + public String getPictureURL() { + return pictureURL; + } + +} diff --git a/Java/TP4/WebChat/web/ForgotPassword.jsp b/Java/TP4/WebChat/web/ForgotPassword.jsp new file mode 100755 index 0000000..3b2316a --- /dev/null +++ b/Java/TP4/WebChat/web/ForgotPassword.jsp @@ -0,0 +1,22 @@ +<%@page contentType="text/html"%> +<%@page pageEncoding="UTF-8"%> + + + + + + Did you forget your password ? + + + +

    Did you forget your password ?

    + +
    +
    +

    Nickname:

    +

    +
    +
    + + diff --git a/Java/TP4/WebChat/web/JAVirc.jsp b/Java/TP4/WebChat/web/JAVirc.jsp new file mode 100755 index 0000000..d16fd67 --- /dev/null +++ b/Java/TP4/WebChat/web/JAVirc.jsp @@ -0,0 +1,210 @@ +<%@page contentType="text/html"%> +<%@page pageEncoding="UTF-8"%> + + + + + + + + + + + + <% + if (!javchat.checkAccount( + request.getParameter("nickname"), + request.getParameter("password"))) { + // authentification failed, redirect to connect.jsp + out.println(""); + out.println("acces refusé: nickname: " + request.getParameter("nickname")); + } + %> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Java/TP4/WebChat/web/META-INF/context.xml b/Java/TP4/WebChat/web/META-INF/context.xml new file mode 100755 index 0000000..5f1f434 --- /dev/null +++ b/Java/TP4/WebChat/web/META-INF/context.xml @@ -0,0 +1,2 @@ + + diff --git a/Java/TP4/WebChat/web/WEB-INF/web.xml b/Java/TP4/WebChat/web/WEB-INF/web.xml new file mode 100755 index 0000000..9c98471 --- /dev/null +++ b/Java/TP4/WebChat/web/WEB-INF/web.xml @@ -0,0 +1,17 @@ + + + + + + 30 + + + + + index.jsp + + + diff --git a/Java/TP4/WebChat/web/connect.jsp b/Java/TP4/WebChat/web/connect.jsp new file mode 100755 index 0000000..3c15a0c --- /dev/null +++ b/Java/TP4/WebChat/web/connect.jsp @@ -0,0 +1,27 @@ +<%@page contentType="text/html"%> +<%@page pageEncoding="UTF-8"%> + + + + + Welcome on JAVChat + + + +

    Welcome on JAVChat

    + +
    +
    +

    Nickname:

    +

    Password:

    +

    +
    +
    + +

    Don't have an account: please register

    + +

    Forgot your password? retrieve it

    + + + diff --git a/Java/TP4/WebChat/web/register.jsp b/Java/TP4/WebChat/web/register.jsp new file mode 100755 index 0000000..4839c14 --- /dev/null +++ b/Java/TP4/WebChat/web/register.jsp @@ -0,0 +1,82 @@ +<%@page contentType="text/html"%> +<%@page pageEncoding="UTF-8"%> + + + + + + <%! String message="", nickname, password, cpassword, firstname, lastname, email, picture_url; %> + + <% + + nickname = request.getParameter("nickname"); + password = request.getParameter("password"); + cpassword = request.getParameter("cpassword"); + firstname = request.getParameter("firstname"); + + if (nickname == null) { + nickname = ""; + } + if (firstname == null) { + firstname = ""; + } + String lastname = request.getParameter("lastname"); + if (lastname == null) { + lastname = ""; + } + String email = request.getParameter("email"); + if (email == null) { + email = ""; + } + String picture_url = request.getParameter("picture_url"); + if (picture_url == null) { + picture_url = ""; + } + if (!nickname.equals("")) { + + if (password.equals(cpassword)) { + if (!javchat.checkExists(nickname)) { + if (javchat.insertUser(nickname, password, firstname, lastname, email, picture_url)) { + message = "

    User correctly registered

    "; + } else { + message = "Error... no more explanations sorry..."; + } + } else { + message = "

    User already exists, please change your nickname

    "; + } + } else { + message = "

    Please retype your password, they does'nt match"; + } + } else { + nickname = ""; + } + + %> + + + + + + JAVChat user registration + + + +

    JAVChat USER REGISTRATION

    + <%= message %> +
    +
    +

    Nickname*:

    +

    First Name*:

    +

    Last Name*:

    +

    Password*:

    +

    Confirm Password*:

    +

    E-Mail*:

    +

    URL of your picture:

    +

    +
    +
    + + + + diff --git a/Java/TP4/WebChat/web/sendPassword.jsp b/Java/TP4/WebChat/web/sendPassword.jsp new file mode 100755 index 0000000..4d877a7 --- /dev/null +++ b/Java/TP4/WebChat/web/sendPassword.jsp @@ -0,0 +1,46 @@ +<%@page contentType="text/html"%> +<%@page pageEncoding="UTF-8"%> +<%-- +The taglib directive below imports the JSTL library. If you uncomment it, +you must also add the JSTL library to the project. The Add Library... action +on Libraries node in Projects view can be used to add the JSTL 1.1 library. +--%> +<%-- +<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> +--%> + + + + + + + + + + + Send Password + + +

    + <% + if (javchat.sendPasswordTo(request.getParameter("nickname"))) { + out.println("Your password has been sent"); + } else { + out.println("Your nickname doesn't exist in the database"); + } + %> +

    + <%-- + This example uses JSTL, uncomment the taglib directive above. + To test, display the page like this: index.jsp?sayHello=true&name=Murphy + --%> + <%-- + + + Hello ${param.name}! + + --%> + + + diff --git a/Lisp/TP1/ex1.lsp b/Lisp/TP1/ex1.lsp new file mode 100755 index 0000000..033411b --- /dev/null +++ b/Lisp/TP1/ex1.lsp @@ -0,0 +1,355 @@ + #| + | #(@)nomfichier.c ENSICAEN 2005-11-21 + | + | @author MASSE Nicolas (2005-Groupe4-LIMIN) + | @author LIMIN Thomas (2005-Groupe4-MASSE) + | + | ENSICAEN + | 6 Boulevard Marechal Juin + | F-14050 Caen Cedex + | + | Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + | reproduit, utilise ou modifie sans l'avis express de ses auteurs. + |# + +#| + | TP n° 1 de Programation symbolique + |# + +#| + | @version 1.0.0 + | + | @Fait: - + | + | @Afaire: énoncé + |# + + +#| CAR = Content of Address Register + | First element of list + | Also named FIRST + |# +(print (car '(p h w))) ; P + +#| CDR = List minus the first element + | Also named REST + |# +(print (cdr '(b a c d))) ; (A C D) + +(setq x '((anne emma) (marc michel))) +(print (first x)) ; (ANNE EMMA) +(print (rest x)) ; ((MARC MICHEL)) +(print (first (rest x))) ; (MARC MICHEL) +(print (rest (first x))) ; (EMMA) +(print (rest (first (rest x)))) ; (MICHEL) +(print (first (rest (first x)))) ; EMMA + +#| ((a b) (c d) (e f)) => Y |# +(setq y '((a b) (c d) (e f))) + +(print (cadadr y)) ; D +(print (caaddr y)) ; E +#| Doesn't function, because CAR performed on non-list argument, replace by CADR + | (print (caadr '(cdr y))) + |# + +#| CDDR is not a list, so CAAR cannot perform on it, replace by CAR + | (print (caar '(cddr y))) + |# + +; the list following the quote is handled as data +(print (car '(caddr ((a b) (c d) (e f))))) ; CADDR +(print '(car (car (cdr (cdr y))))) ; (CAR (CAR (CDR (CDR Y)))) + +#| + | Ex 2 + |# + +(print (caddr '(a b c d) )) +(print (caadr '((a b) (c d)) )) +; CAADDAR is not defined (too long) +(print (car (caddar '(((a) (b) (c) (d))) ))) +(print (caaddr '((((a))) ((b)) (c) d) )) +(print (cadar '((((a) b) c) d) )) + +#| + | Ex 3 + |# + +; (A B) => L +(print (setq l '(a b))) + +(print (append l l)) ; (A B A B) +;(print (append 'l l)) L is not a list +(print (append l 'l)) ; (A B . L) + +(print (car (cons 'a '(b c)))) ; A +(print (cdr (cons 'a '(b c)))) ; (B C) +(print (cons (car l) (cdr l))) ; (A B) + +(print (cons (car nil) (cdr nil))) ; (NIL) because of (car nil) +(print (cons l l)) ; ((A B) A B) +(print (cons 'l l)) ; (L A B) + +#| + | Ex 4 + |# +(print (cons '(a b x) '())) ; ((A B X)) +(print (append '(a b) '(c d))) ; (A B C D) +(print (list l l)) ; ((A B) (A B)) +(print (cons 'l l)) ; (L A B) +(print (list '(a b c) '())) ; ((A B C) NIL) +(print (append '(a b c) '())) ; (A B C) +(print (cons '(a b) '(c d))) ; ((A B) C D) + + +#| + | Ex 5 + | a) + |# +(defun decale (liste) + (append (cdr liste) + (list (car liste)) + ) +) +(print (decale '(a b c d))) ; (B C D A) + + +#| + | Ex 5 + | b) + |# +(defun inverse (liste) + (if (NULL liste) + NIL + (append + (inverse (cdr liste)) + (list (car liste)) + ) + ) +) + +(print (inverse '(a b c d))) ; (D C B A) +(print (inverse NIL)) ; NIL + + +#| + | Ex 5 + | c) + | Calculer la liste formée par la répétition inverse d'une liste + |# +(defun duplique (liste) + (let ((inv_liste (inverse liste))) + (append inv_liste inv_liste) + ) +) + +(print (duplique '(a b c d))) + + +#| + | Ex 5 + | d) + | the list following "&optional" defines the name of the parameter + | and its default value + |# +(defun nbatome (liste &optional (nb 0)) + (if (null liste) + nb ; terminal recursivity + (nbatome (cdr liste) + (if (atom (car liste)) + (+ 1 nb) + nb + ) + ) + ) +) + +(print (nbatome '(a b c (2) r (3) s))) + + +#| + | Ex 5 + | e) + | Calculer la liste composée du premier et du dernier élément d'une liste + |# +(defun premder (liste) + (let ((fin (cdr (cdr liste)))) + (if (NULL fin) + liste + (premder (cons (car liste) (cdr (cdr liste))))) + ) +) + +(print (premder '(76 45 34 90 2 9 4 8 56 4 2 87))) + + +#| + | Ex 5 + | f) + | Calcul du PGCD + |# +(defun pgcd (p q) + (if (= q 0) + p + (pgcd q (rem p q)) + ) +) + +(print (pgcd 23 21)) +(print (gcd 23 21)) + +(print (pgcd 24 15)) +(print (gcd 24 15)) + + +#| + | Ex 5 + | g) + | Suite de Syracuse + |# +(defun syra (un) + (progn + (print un) + (if (= un 1) + () + (syra + (if (evenp un) + (/ un 2) + (+ 1 (* 3 un)) + ) + ) + ) + ) +) + +;(print "U0 = ") +;(syra (read)) + + +#| + | Ex 5 + | h) + | Vérifier qu'un mot éclaté en liste est un palyndrome + |# +(defun palindromep (liste) (equal liste (inverse liste))) + +(print (palindromep '(e s o p e r e s t e e t s e r e p o s e) )) +(print (palindromep '(b a t e a u) )) + + +#| + | Ex 5 + | i) + | Construire la liste décroissante des n premiers entiers positifs ou nuls + |# +(defun genere (nb &optional(liste NIL)) + ( if (>= nb 0) + (genere (- nb 1) (append liste (list nb))) + liste + ) +) + +(print (genere 10 )) + + +#| + | Ex 5 + | j) + | Determiner le nombre médian de 3 nombres + |# +(defun median (n1 n2 n3) + (max (max (min n1 n2) (min n2 n3)) (min n3 n1)) +) + +(print (median 1 2 3 )) +(print (median 2 3 1 )) +(print (median 3 1 2 )) + +#| + | Ex 5 + | k) + | Returns the list of the different elements + |# +(defun diff (liste) + (if (null liste) + () + (if (member (car liste) (cdr liste)) + (diff (cdr liste)) + (cons (car liste) (diff (cdr liste))) + ) + ) +) + +(print (diff '(6 4 9 10 3 6 2 9 3 3 4))) + + +#| + | Ex 5 + | l) + | Trier une liste dans l'ordre croissant + |# +(defun inserer (liste nb) + (if (null liste) + (list nb) + (if (> (car liste) nb) + (cons nb liste) + (cons (car liste) (inserer (cdr liste) nb)) + ) + ) +) +(defun trier (liste &optional(res NIL)) + (if (null liste) + res + (progn + (trier (cdr liste) (inserer res (car liste))) + ) + ) +) + + +(print (trier '(2 3 10 9 4 6))) + +#| + | Ex 5 + | m) + | Calculer l'histogramme d'une liste de nombre, c'est à dire le nombre d'occurences de chaque nombre + |# +(defun addoccur (dat nb) + (if (null dat) + (list (list nb 1)) + (if (= (caar dat) nb) + (cons (list nb (1+ (cadar dat))) (cdr dat)) + (if (> (caar dat) nb) + (cons (list nb 1) dat) + (cons (car dat) (addoccur (cdr dat) nb)) + ) + ) + ) +) +(defun histo (liste &optional(dat NIL)) + (if (null liste) + dat + (histo (cdr liste) (addoccur dat (car liste))) + ) +) + +(print (histo '(6 4 9 10 3 6 2 9 3 3 4))) + +#| + | Ex 5 + | n) + | Se servir de cet histogramme pour calculer le nombre médian de cette liste. + |# +(defun median (liste &optional(nb NIL)) + (if (null nb) + (median (histo liste) (/ (length liste) 2)) + (if (<= nb (cadar liste)) + (caar liste) + (median (cdr liste) (- nb (cadar liste))) + ) + ) +) + +(print (median '(6 4 9 10 3 6 2 9 3 3 4))) + diff --git a/Lisp/TP2/ex1.lsp b/Lisp/TP2/ex1.lsp new file mode 100755 index 0000000..dde9812 --- /dev/null +++ b/Lisp/TP2/ex1.lsp @@ -0,0 +1,152 @@ +#| + | #(@)ex1.lsp ENSICAEN 2005-11-21 + | + | @author MASSE Nicolas (2005-Groupe4-LIMIN) + | @author LIMIN Thomas (2005-Groupe4-MASSE) + | + | ENSICAEN + | 6 Boulevard Marechal Juin + | F-14050 Caen Cedex + | + | Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + | reproduit, utilise ou modifie sans l'avis express de ses auteurs. + |# + +#| + | Exercices avec parcours de listes, en profondeur et à tous les niveaux + |# + +#| + | @version 21-11-2005 + | + | @Fait: tout + | + | @Afaire: - + |# + + + +#| + | Rappel + | a) + | Parcours d'une liste à un niveau avec affichage des éléments + |# +(defun parcours1N (l) + ( if (null l) + () + (progn + (print (car l)) + (parcours1N (cdr l)) + ) + ) +) + + +(print "Parcours de (8 ((7 6) (5 4)) 3 (2 1))) à 1 niveaux avec affichage des éléments") +(parcours1N '(8 ((7 6) (5 4)) 3 (2 1)) ) + +#| + | Rappel + | b) + | Parcours d'une liste à tous les niveaux avec affichage des atomes + |# +(defun parcours (l) + (cond + ((null l) + () + ) + ((atom (car l)) + (print(car l)) + (parcours (cdr l)) + ) + (t + (parcours (car l)) + (parcours (cdr l)) + ) + ) +) + +(print "Parcours de (8 ((7 6) (5 4)) 3 (2 1))) à tous les niveaux avec affichage des atomes") +(parcours '(8 ((7 6) (5 4)) 3 (2 1)) ) + + +#| + | 1) + | Ecrire une fonction inversant une liste à tous les niveaux + |# +(defun inverse (l) + (cond + ((null l) + () + ) + ((atom (car l)) + (append (inverse (cdr l)) (list (car l))) + ) + (t + (append (inverse (cdr l)) (list (inverse (car l)))) + ) + ) +) + +(print "Inversion de ( 8 ((7 6) (5 4)) 3 (2 1)))") +(print (inverse '(8 ((7 6) (5 4)) 3 (2 1)) ) ) + + +#| + | 2) + | Ecrire une fonction calcul profondeur prenant une expression en argument + | et retournant le nombre de niveaux qu'elle comporte + |# +(defun calcul_profondeur (expr) + (cond + ((null expr) + 0 + ) + ((atom (car expr)) + (max 1 (calcul_profondeur (cdr expr))) + ) + (t + (max (+ 1 (calcul_profondeur (car expr))) (calcul_profondeur (cdr expr))) + ) + ) + +) + +(print "Calcul de profondeur de ( 8 ((7 (6 6)) (5 4)) 3 (2 1)))") +(print (calcul_profondeur '(8 ((7 (6 6)) (5 4)) 3 (2 1)) ) ) + + +#| + | 3) + | Ecrire la fonction oter-pred à 2 arguments: + | une prédicat + | une liste quelconque + | donnant comme résultat la liste de laquelle sont enlevés tous les objets + | satisfaisant au prédicat + |# +(defun oter-pred (pred liste) + (cond + ((null liste) + () + ) + ((atom (car liste)) + ( if (funcall pred (car liste)) + (cons (car liste) (oter-pred pred (cdr liste))) + (oter-pred pred (cdr liste)) + ) + ) + (t + (cons (oter-pred pred (car liste)) (oter-pred pred (cdr liste))) + ) + ) +) + + +(print "Oter de ( 8 ((7 (6 6)) (5 4)) 3 (2 1))) les objets satisfaisant: objet > 3") + +(defun pre1 (o) + (> o 3) +) + +(print (oter-pred 'pre1 '(8 ((7 (6 6)) (5 4)) 3 (2 1)) ) ) + diff --git a/Lisp/TP2/ex2.lsp b/Lisp/TP2/ex2.lsp new file mode 100755 index 0000000..84bbbf1 --- /dev/null +++ b/Lisp/TP2/ex2.lsp @@ -0,0 +1,103 @@ +#| + | #(@)ex2.lsp ENSICAEN 2005-11-21 + | + | @author MASSE Nicolas (2005-Groupe4-LIMIN) + | @author LIMIN Thomas (2005-Groupe4-MASSE) + | + | ENSICAEN + | 6 Boulevard Marechal Juin + | F-14050 Caen Cedex + | + | Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + | reproduit, utilise ou modifie sans l'avis express de ses auteurs. + |# + + +#| + | Exercices d'entrainement sur l'utilisation des fonctions d'ordre superieur. + |# + +#| + | @version 21-11-2005 + | + | @Fait: tout + | + | @Afaire: - + |# + + +#| + | 1) Evaluer en sequence et tester les expressions suivantes : + |# + +; T car (a b) est une liste non vide. +(format t "(consp '(a b)) = ~s~%" (consp '(a b)) ) + +; NIL car () est une liste vide. +(format t "(consp '()) = ~s~%" (consp '()) ) + +; T car NIL est un atome. +(format t "(atom '()) = ~s~%" (atom '()) ) + +; T car NIL est un atome. +(format t "(atom ()) = ~s~%" (atom ()) ) + +; T car (a) n'a qu'un element. +(format t "(null (cdr '(a))) = ~s~%" (null (cdr '(a))) ) + +; ((1 2 A X) (3 4 B Y)) +(format t "(mapcar 'append '((1 2) (3 4)) '((a) (b) (c)) '((x) (y) (z)) = ~s~%" + (mapcar 'append '((1 2) (3 4)) '((a) (b) (c)) '((x) (y) (z)) )) + +; ((1 2 . A) (3 . B)) +(format t "(mapcar #'(lambda (x y) (append x y)) '((1 2) (3) (4 5 6)) '(a b)) = ~s~%" + (mapcar #'(lambda (x y) (append x y)) '((1 2) (3) (4 5 6)) '(a b)) ) + +; l = (A B C) +(setf l '(a b c)) +(format t "~%") ; Saut de ligne +(format t "l = ~s~%" l) + +; ((1 A) (2 B) (3 C) (4 A) (5 B)) +(format t "(mapcar 'list '(1 2 3 4 5) (append l l)) = ~s~%" + (mapcar 'list '(1 2 3 4 5) (append l l)) ) + +; (2 NIL 5) +(format t "(mapcar #'(lambda (u) (if (numberp u) u)) '(2 a 5)) = ~s~%" + (mapcar #'(lambda (u) (if (numberp u) u)) '(2 a 5)) ) + +#| + | 2) Evaluer, puis trouver les formes d'appel equivalentes avec "apply" + | ou avec "funcall" selon les cas. + |# + +(format t "~%") ; Saut de ligne +(setf addition '+) +(format t "addition = ~s~%" addition) +(format t "(funcall addition 2 3 4) = ~s~%" (funcall addition 2 3 4)) +(format t "(apply addition '(2 3 4)) = ~s~%" (apply addition '(2 3 4))) + +(format t "~%") ; Saut de ligne +(setf f #'(lambda (x y) (if (> x y) x y))) +(format t "f = ~s~%" f) +(format t "(funcall f 5 7) = ~s~%" (funcall f 5 7)) +(format t "(funcall f 7 5) = ~s~%" (funcall f 7 5)) +(format t "(apply f '(5 7)) = ~s~%" (apply f '(5 7))) +(format t "(apply f '(7 5)) = ~s~%" (apply f '(7 5))) + + +(format t "~%") ; Saut de ligne +(setf l '(list cons *)) +(format t "l = ~s~%" l) +(format t "(apply (car l) '(a b c)) = ~s~%" (apply (car l) '(a b c))) +(format t "(funcall (car l) 'a 'b 'c) = ~s~%" (funcall (car l) 'a 'b 'c)) + +; ERREUR : cons n'admet que deux parametres +;(format t "(apply (cadr l) '(a b c)) = ~s~%" (apply (cadr l) '(a b c))) + + +(format t "~%") ; Saut de ligne +(setf m (list 'cons '*)) +(format t "m = ~s~%" m) +(format t "(apply (cadr m) '(2 5)) = ~s~%" (apply (cadr m) '(2 5))) +(format t "(funcall (cadr m) 2 5) = ~s~%" (funcall (cadr m) 2 5)) \ No newline at end of file diff --git a/Lisp/TP2/ex3.lsp b/Lisp/TP2/ex3.lsp new file mode 100755 index 0000000..7524b1b --- /dev/null +++ b/Lisp/TP2/ex3.lsp @@ -0,0 +1,258 @@ +#| + | #(@)ex3.lsp ENSICAEN 2005-11-21 + | + | @author MASSE Nicolas (2005-Groupe4-LIMIN) + | @author LIMIN Thomas (2005-Groupe4-MASSE) + | + | ENSICAEN + | 6 Boulevard Marechal Juin + | F-14050 Caen Cedex + | + | Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + | reproduit, utilise ou modifie sans l'avis express de ses auteurs. + |# + + +#| + | Ex 3 : Ecriture de fonctions utilisant les fonctions d'ordre supérieur. + |# + +#| + | @version 21-11-2005 + | + | @Fait: tout + | + | @Afaire: - + |# + + +#| + | Génère la liste des nombres entiers compris entre 0 (inclus) + | et n (inclus) + | + | @param nb la limite supérieure + | @param liste la liste déjà générée (usage interne) + | + | @return la liste des nombres, en ordre + |# +(defun genere (nb &optional(asc t) (liste NIL)) + (if (>= nb 0) + (genere (- nb 1) asc + (if asc + (cons nb liste) + (append liste (list nb)) + ) + ) + liste + ) +) + + +(format t "(genere 5 NIL) = ~s~%" (genere 5 NIL)) +(format t "(genere 5 t) = ~s~%" (genere 5 t)) + +#| + | Génère une liste de nombre entiers entre 0 (inclus) et n (inclus) + | en commençant par les impairs en ordre décroissant et en finissant + | par les pair en ordre croissant. + | + |# +(defun generel (nb) + (append + (mapcan + #'(lambda (v) + (if (oddp v) + (list v) + NIL + ) + ) + (genere nb nil) + ) + (mapcan + #'(lambda (v) + (if (evenp v) + (list v) + NIL + ) + ) + (genere nb t) + ) + ) +) + + +(format t "(generel 5) = ~s~%" (generel 5)) + + +#| + | Effectue la somme S + | + | @param nb la limite supérieure + | + | @return la somme + |# +(defun calcul (nb) + (let ((l (genere nb t))) + (apply '+ (mapcar '* l l l)) + ) +) + + +(format t "(calcul 5) = ~s~%" (calcul 5)) +(format t "(calcul 0) = ~s~%" (calcul 0)) + +#| + | 3) + | Prend 2 parametres : el et l1, où el est un objet Lisp quelconque + | et l1 une liste de N objets, et retourne comme résultat une liste de + | N+1 listes, chacune étant constituée de N+1 objets. Ces objets sont les + | N objets de L plus l'objet X inséré à toutes les positions possibles + | dans L. + | + |# +(defun insert (el l1 &optional (l2 nil)) + (append + (list (append l2 (list el) l1)) + (if (consp l1) + (insert el + (cdr l1) + (append l2 (list (car l1)) ) + ) + ) + ) +) + +(format t "(insert 'u '(a b c)) = ~s~%" (insert 'u '(a b c))) + +#| + | 4) + | La fonction PERMUTE prend en entrée une liste de N objets et renvoie + | la liste de toutes les permutations de ces N objets. + | + |# +(defun permute (l &optional (lorig nil)) + (if (null lorig) + (permute l l) + (if (consp l) + (append (insert (car l) (remove (car l) lorig)) (permute (cdr l) lorig)) + ) + ) +) + + +(format t "(permute '(a b c)) = ~s~%" (permute '(a b c))) + +#| + | + | 6) Cryptarithmetique + | + |# + +(setq les-variables '(A B C D E F)) +(setq variables-libres '(A B C)) + +(format t "les-variables = ~s~%" les-variables) +(format t "variables-libres = ~s~%" variables-libres) + +(setq affect1 + '(if (and B C) + (setf F (mod + (+ B C) + 10 + ) + ) + ) +) + +(setq affect2 + '(if (and A B C) + (setf E (mod + (+ A B (floor + (+ B C) + 10 + ) + ) + 10 + ) + ) + ) +) + +(setq affect3 + '(if (and A B C) + (setf D (floor + (+ A B (floor + (+ B C) + 10 + ) + ) + 10 + ) + ) + ) +) + +(setq affectations (list affect1 affect2 affect3)) +(format t "affectations = ~s~%" affectations) + +(setq contr1 '(if A (/= A 0) t)) +(setq contr2 '(if B (/= B 0) t)) +(setq contr3 '(if D (/= D 0) t)) +(setq contr4 + '(if (and A B C D E F) + (/= A B C D E F) + ) +) + +(setq contraintes (list contr1 contr2 contr3 contr4)) +(format t "contraintes = ~s~%" contraintes) + +(defun initialiser (var) + (mapcar #'(lambda (v) (set v nil)) var) +) + +(defun affecter (varl val aff) + (progn + (mapcar #'(lambda (lv rv) (set lv rv)) varl val) + (mapcar 'eval aff) + ) +) + +(defun verifier (varl aff contr val) + (affecter varl val aff) + (every #'(lambda (v) (eval v)) contr) +) + +(initialiser les-variables) + +(format t "(verifier variables-libres affectations contraintes '(1 2 3)) = ~s~%" + (verifier variables-libres affectations contraintes '(1 2 3)) +) + +(defun possible (n) + (if (= n 1) + (mapcar 'list '(0 1 2 3 4 5 6 7 8 9)) + (mapcan #'(lambda (el) + (mapcar #'(lambda (el2) (cons el2 el)) + '(0 1 2 3 4 5 6 7 8 9) + ) + ) + (possible (- n 1)) + ) + ) +) + +(format t "(possible 1) = ~s~%" (possible 1)) +(format t "(possible 3) = ~s~%" (possible 3)) + +(defun cryptarithmetique (varl aff contr) + (mapcan + #'(lambda (val) (if (verifier varl aff contr val) (list val))) + (possible (length varl)) + ) +) + + +(format t "(cryptarithmetique variables-libres affectations contraintes) = ~s~%" + (cryptarithmetique variables-libres affectations contraintes) +) diff --git a/Lisp/TP3/ex1.lsp b/Lisp/TP3/ex1.lsp new file mode 100755 index 0000000..ea66aa3 --- /dev/null +++ b/Lisp/TP3/ex1.lsp @@ -0,0 +1,188 @@ +#| + | #(@)ex1.lsp ENSICAEN 2005-12-05 + | + | @author MASSE Nicolas (2005-Groupe4-LIMIN) + | @author LIMIN Thomas (2005-Groupe4-MASSE) + | + | ENSICAEN + | 6 Boulevard Marechal Juin + | F-14050 Caen Cedex + | + | Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + | reproduit, utilise ou modifie sans l'avis express de ses auteurs. + |# + +#| + |# + + +#| + | @version 2006 + | + | @Fait - + | + | @Afaire - + |# + + +#| + | b) Passage d'un mot (symbole) à une liste de caractères + | + | @param mot le mot à exploser + | @return une liste de symbole: 1 par caracère du mot + |# +(defun explode (mot) + (loop for x from 0 to (- (length(string mot)) 1) + collect + (read-from-string (string (elt (string mot) x))) + ) +) + +(format t "(explode \'test) = ~s~%" (explode 'test)) + +#| + | a) Représentation pour la grille et les mots: + | + | Les mots disponibles sont dans une liste. La grille est repésentée par + | une liste de noms de liste de caractères, chaque liste de caracteres devant + | correspondre à un mot. + | + | Les contraintes sont exprimées comme suit: + | (equal (nth 2 lig1) (nth 1 col1)) + |# +(setq + lig1 '(()()()()()) + lig2 '(()()()()()()) + col1 '(()()()()()) + col2 '(()()()()()) + l_mots (mapcar 'explode '(arbre simple savante sage vague agile legere varie)) +) + +(setq grille '(lig1 lig2 col1 col2)) + +(format t "grille = ~s~%" grille) +(format t "lig1 = ~s~%" lig1) +(format t "lig2 = ~s~%" lig2) +(format t "col1 = ~s~%" col1) +(format t "col2 = ~s~%" col2) + + +#| + | c) Représenter les contraintes liées à cette grille sous forme de liste + |# +(setf contraintes + '( + (if (and (nth 2 lig1) (nth 1 col1)) (equal (nth 2 lig1) (nth 1 col1)) t) + (if (and (nth 1 lig2) (nth 4 col1)) (equal (nth 1 lig2) (nth 4 col1)) t) + (if (and (nth 4 lig2) (nth 2 col2)) (equal (nth 4 lig2) (nth 2 col2)) t) + ) +) + + + +#| + | d) Fonction permettant de placer un mot dans la grille + | + |# +(defun placer (emplacement mot) + (if (equal (length (eval emplacement)) (length mot)) + (progn + (format t "Mot placé: ~s = ~s~%" emplacement mot) + (set emplacement mot) ; on utilise un set car il faut evaluer "emplacement" + t ; ne pas oublier la valeur de retour + ) + nil + ) +) + +#| + | remplace le mot par une liste de nil + | + | @param emplacement le mot a réinitialisé + | @return nil + |# + +(defun reinit (emplacement) + (format t "Effacement de ~s, ancienne valeur = ~s~%" emplacement (eval emplacement)) + + ; on utilise un set car il faut evaluer "emplacement" + (set emplacement (loop for x in (eval emplacement) collect nil)) + + nil ; la valeur de retour +) + + +#| + | e) Écrire la fonction permettant de vérifier que la grille est correctement remplie + | + | @param c la liste contraintes + | @return validité des contraintes + |# +(defun verifier (c) + (if (consp c) + (and + (eval (eval (car c))) ; TODO : expliquer le double eval + (verifier (cdr c)) + ) + t + ) +) + +; Doit retourner t car la grille est vide +(format t "(verifier contraintes) = ~s~%" (verifier contraintes)) + +#| + | f) Fonction permettant de trouver la solution par un mecanisme de type + | "essai systematique de toutes les configurations" avec backtrack. + | + | @param rangees une liste des noms des rangees de la grille + | @param mots + |# + +(defun chercher (rangees mots) + (cond + ((null mots) ; Plus de mots a essayer ? + (format t "[BACKTRACK]~%") + (reinit (car rangees)) ; On efface la rangee + ) + + ((null rangees) ; Plus de rangees a remplir ? + (progn + (format t "Solution = ~a~%" (mapcar 'eval grille)) ; On a la solution ! + t + ) + ) + + (t ; Cas par defaut + (if (and ; On doit pouvoir placer le mot (verification de la longueur) + (placer (car rangees) (car mots)) + ; ET les contraintes de la grille doivent etre verifiees + (verifier contraintes)) + ;then + (progn + (format t "[FORWARD]~%") + + ; Le mot est place, mais peut on remplir les colonnes suivantes ? + (if (chercher (cdr rangees) l_mots) + ;then + t ; Oui + ;else + (chercher rangees (cdr mots)) + ;endif + ) + + ;endprogn + ) + ;else + (chercher rangees (cdr mots)) + ;endif + ) + ) + + ;endcond + ) +) + + +(chercher grille l_mots) + diff --git a/Lisp/TP4/connexion.lsp b/Lisp/TP4/connexion.lsp new file mode 100755 index 0000000..5729ac1 --- /dev/null +++ b/Lisp/TP4/connexion.lsp @@ -0,0 +1,403 @@ +#| + | #(@)connexion.lsp ENSICAEN 2006-01-09 + | + | @author MASSE Nicolas + | @author LIMIN Thomas + | + | ENSICAEN + | 6 Boulevard Marechal Juin + | F-14050 Caen Cedex + | + | Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + | reproduit, utilise ou modifie sans l'avis express de ses auteurs. + |# + +#| + | Initiation à la programmation avec des agents. + |# + + +#| + | version: 2006-02-07 + | + | done: all + | + | todo: none + |# + + +#| + | Classe Connexion. + | + |# + +(defclass Connexion () + ((nom + :accessor nom + :initarg :nom + :initform nil + :documentation "Le nom de la connexion" + ) + (boitiers + :accessor boitiers + :initarg :boitiers + :initform nil + :documentation "La liste des boitiers reliés à cette connexion" + ) + (provenance + :accessor provenance + :initarg :provenance + :initform nil + :documentation "La référence du boitier qui a mis la valeur de cet objet" + ) + (valeur + :accessor valeur + :initarg :valeur + :initform nil + :documentation "La valeur de cette connexion" + ) + (gestionnaire + :accessor gestionnaire + :initform nil + :documentation "Le gestionnaire de l'application" + )) + (:documentation "Une connexion a un nom et relie des boitiers") +) + +#| + | Mets une valeur dans cette connexion, et propage la valeur aux boitiers + | voisins. + |# +(defmethod mettre-valeur (val demandeur (oself Connexion)) + (cond + ((null (valeur oself)) + (setf (valeur oself) val) + (format t "~s: valeur modifiée~%" oself) + (setf (provenance oself) demandeur) + (mapcar #'(lambda (x) + (if (not (eql demandeur x)) + (attention-une-valeur oself x) + ) + ) + (boitiers oself) + ) + ) + ((= val (valeur oself)) + (format t "~s: valeur non modifiée mais identique~%" oself) + ) + (t + (format t "~s: valeurs differentes, valeur non modifiée !~%" oself) + (il-y-a-incoherence oself (gestionnaire oself)) + ) + ) +) + +#| + | Oublie la valeur de cette connexion et propage l'oubli aux boitiers voisins. + |# +(defmethod oublier-valeur (demandeur (oself Connexion)) + (cond + ((or (null (valeur oself)) (null (provenance oself))) + t + ) + ((eql demandeur (provenance oself)) + (setf (valeur oself) nil) + (format t "~s: valeur oubliée~%" oself) + (mapcar #'(lambda (x) + (if (not (eql demandeur x)) + (plus-de-valeur oself x) + ) + ) + (boitiers oself) + ) + t + ) + (t + (format t "~s: valeur non oubliée~%" oself) + nil + ) + ) +) + +#| + | Modifie la valeur de la connexion après l'avoir oubliée. + |# +(defmethod modifier-valeur (val demandeur (oself Connexion)) + (if (oublier-valeur demandeur oself) + (mettre-valeur val demandeur oself) + ) +) + + + +#| + | Classe Boitier + |# + +(defclass Boitier () + ((borne1 + :accessor borne1 + :initarg :borne1 + :initform nil + :documentation "La borne première borne d'entrée" + ) + (borne2 + :accessor borne2 + :initarg :borne2 + :initform nil + :documentation "La seconde borne d'entrée" + ) + (borneS + :accessor borneS + :initarg :borneS + :initform nil + :documentation "La borne de sortie" + )) + (:documentation "Un boitier a deux connexions d'entrée et une de sortie") +) + +#| + | Surcharge de la méthode initialize-instance, le mot clé after + | indique que la surcharge s'execute après la méthode de base, + | prédéfinie et toujours executée après make-instance (Sorte de + | constructeur automatique). Le oself est un nom choisi pour + | référencer l'objet en cours, correspond au self de Smalltalk + |# +(defmethod initialize-instance :after ((oself Boitier) &rest args) + (declare (ignore args)) + + ; Raccorde les bornes au boitier + (setf (boitiers (borne1 oself)) (cons oself (boitiers (borne1 oself)))) + (setf (boitiers (borne2 oself)) (cons oself (boitiers (borne2 oself)))) + (setf (boitiers (borneS oself)) (cons oself (boitiers (borneS oself)))) +) + +#| + | Méthode appelée par les connexions lorsqu'elles ont reçu une valeur. + |# + +(defmethod attention-une-valeur (cnx (oself Boitier)) + (format t "~s: attention une valeur !~%" oself ) +) + +#| + | Méthode appelée par les connexions lorsqu'elles ont perdu leur valeur. + |# +(defmethod plus-de-valeur (cnx (oself Boitier)) + (format t "~s: attention plus de valeur !~%" oself) + (oublier-valeur oself (borne1 oself)) + (oublier-valeur oself (borne2 oself)) + (oublier-valeur oself (borneS oself)) + (attention-une-valeur oself oself) +) + + +#| + | Définition de la classe Add(itionneur), qui hérite de Boitier + |# +(defclass Add (Boitier) + () +) + +(defmethod attention-une-valeur :after (cnx (oself Add)) + (cond + ((and (not (null (valeur (borne1 oself)))) (not (null (valeur (borne2 oself))))) + (format t "~s: addition: je connais borne1 et borne2 ~%" oself) + (mettre-valeur (+ (valeur (borne1 oself)) (valeur (borne2 oself))) oself (borneS oself)) + ) + ((and (not (null (valeur (borne1 oself)))) (not (null (valeur (borneS oself))))) + (format t "~s: addition: je connais borne1 et borneS ~%" oself) + (mettre-valeur (- (valeur (borneS oself)) (valeur (borne1 oself))) oself (borne2 oself)) + ) + ((and (not (null (valeur (borne2 oself)))) (not (null (valeur (borneS oself))))) + (format t "~s: addition: je connais borne2 et borneS ~%" oself) + (mettre-valeur (- (valeur (borneS oself)) (valeur (borne2 oself))) oself (borne1 oself)) + ) + ) +) + + + +#| + | Définition de la classe Mul(iplieur), qui hérite de Boitier + |# +(defclass Mul (Boitier) + () +) + +(defmethod attention-une-valeur :after (cnx (oself Mul)) + (cond + ((and (not (null (valeur (borne1 oself)))) (not (null (valeur (borne2 oself))))) + (format t "~s: multiplication: je connais borne1 et borne2 ~%" oself) + (mettre-valeur (* (valeur (borne1 oself)) (valeur (borne2 oself))) oself (borneS oself)) + ) + ((and (not (null (valeur (borne1 oself)))) (not (null (valeur (borneS oself))))) + (format t "~s: multiplication: je connais borneS et borne1 ~%" oself) + (mettre-valeur (/ (valeur (borneS oself)) (valeur (borne1 oself))) oself (borne2 oself)) + ) + ((and (not (null (valeur (borne2 oself)))) (not (null (valeur (borneS oself))))) + (format t "~s: multiplication: je connais borneS et borne2 ~%" oself) + (mettre-valeur (/ (valeur (borneS oself)) (valeur (borne2 oself))) oself (borne1 oself)) + ) + ) +) + + + +#| + | Classe Gestionnaire + |# + +(defclass Gestionnaire () + ((historique + :accessor historique + :initform nil + :documentation "La liste des valeurs de toutes les connexions" + ) + (incoherence + :accessor incoherence + :initform nil + :documentation "Permet de savoir s'il y a eu incohérence lors du calcul" + )) + (:documentation "Un gestionnaire gère les opérations de d'annulation") +) + +#| + | Ajoute la connexion à ce gestionnaire, afin qu'il gère les incohérences + | de la connexion. + |# +(defmethod ajouter-au-gestionnaire (cnx (oself Gestionnaire)) + (setf (historique oself) + (cons + (list cnx (valeur cnx) (provenance cnx)) + (historique oself) + ) + ) + (setf (gestionnaire cnx) oself) +) + +#| + | Sauvegarde l'état de toutes les connexions. Méthode à appeler avant toute + | modification de valeur par l'utilisateur. + |# +(defmethod sauvegarde-gestionnaire ((oself Gestionnaire)) + (setf (historique oself) + (loop for x in (historique oself) collect (list (car x) (valeur (car x)) (provenance (car x)))) + ) +) + +#| + | Restauration des anciennes valeurs des connexions. + |# +(defmethod restauration-gestionnaire ((oself Gestionnaire)) + (loop for x in (historique oself) do + (setf (valeur (car x)) (cadr x)) + (setf (provenance (car x)) (caddr x)) + ) + (setf (incoherence oself) nil) +) + +#| + | Méthode appelée par les connexions pour signaler une incohérence. + |# +(defmethod il-y-a-incoherence (cnx (oself Gestionnaire)) + (setf (incoherence oself) t) + (format t "~s: INCOHERENCE DETECTEE !~%" cnx) +) + +#| + | Teste le flag d'incohérence. + |# +(defmethod y-a-t-il-incoherence ((oself Gestionnaire)) + (incoherence oself) +) + +#| + | Créer les instances de Connexion + |# +(setq a (make-instance 'Connexion :nom "a")) +(setq b (make-instance 'Connexion :nom "b")) +(setq c (make-instance 'Connexion :nom "c")) +(setq d (make-instance 'Connexion :nom "d")) +(setq e (make-instance 'Connexion :nom "e")) +(setq f (make-instance 'Connexion :nom "f")) +(setq g (make-instance 'Connexion :nom "g")) +(setq h (make-instance 'Connexion :nom "h")) +(setq i (make-instance 'Connexion :nom "i")) +(setq j (make-instance 'Connexion :nom "j")) + + +#| + | Créer les instances de Boitier + |# +(setq mul1 (make-instance 'Mul :borne1 a :borne2 b :borneS c)) +(setq mul2 (make-instance 'Mul :borne1 c :borne2 e :borneS d)) +(setq mul3 (make-instance 'Mul :borne1 f :borne2 j :borneS h)) +(setq add1 (make-instance 'Add :borne1 e :borne2 f :borneS g)) +(setq add2 (make-instance 'Add :borne1 d :borne2 h :borneS i)) + +#| + | Créer le gestionnaire. + |# +(setq gest (make-instance 'Gestionnaire)) + +#| + | Fonction utilitaire. + |# +(defun affichage () + (format t + "ETAT DES CNX: a = ~s, b = ~s, c = ~s, d = ~s, e = ~s, f = ~s, g = ~s, h = ~s, i = ~s, j = ~s~%" + (valeur a) (valeur b) (valeur c) (valeur d) (valeur e) + (valeur f) (valeur g) (valeur h) (valeur i) (valeur j) + ) +) + +; Ajout des connexions au gestionnaire +(ajouter-au-gestionnaire a gest) +(ajouter-au-gestionnaire b gest) +(ajouter-au-gestionnaire c gest) +(ajouter-au-gestionnaire d gest) +(ajouter-au-gestionnaire e gest) +(ajouter-au-gestionnaire f gest) +(ajouter-au-gestionnaire g gest) +(ajouter-au-gestionnaire h gest) +(ajouter-au-gestionnaire i gest) +(ajouter-au-gestionnaire j gest) + +#| + | Début du test présent dans l'énoncé du TP. + |# + +(mettre-valeur 2 'utilisateur a) +(affichage) + +(sauvegarde-gestionnaire gest) +(mettre-valeur 3 'utilisateur b) +(if (y-a-t-il-incoherence gest) (restauration-gestionnaire gest)) +(affichage) + +(sauvegarde-gestionnaire gest) +(mettre-valeur 3 'utilisateur i) +(if (y-a-t-il-incoherence gest) (restauration-gestionnaire gest)) +(affichage) + +(sauvegarde-gestionnaire gest) +(mettre-valeur 1 'utilisateur j) +(if (y-a-t-il-incoherence gest) (restauration-gestionnaire gest)) +(affichage) + +(sauvegarde-gestionnaire gest) +(mettre-valeur 1 'utilisateur g) +(if (y-a-t-il-incoherence gest) (restauration-gestionnaire gest)) +(affichage) + +(sauvegarde-gestionnaire gest) +(mettre-valeur 1 'utilisateur f) +(if (y-a-t-il-incoherence gest) (restauration-gestionnaire gest)) +(affichage) + +(sauvegarde-gestionnaire gest) +(mettre-valeur (/ 3 5) 'utilisateur f) +(if (y-a-t-il-incoherence gest) (restauration-gestionnaire gest)) +(affichage) + diff --git a/Lisp/TP4/tests.lsp b/Lisp/TP4/tests.lsp new file mode 100755 index 0000000..286eba5 --- /dev/null +++ b/Lisp/TP4/tests.lsp @@ -0,0 +1,80 @@ +#| + | #(@)tests.lsp ENSICAEN 2006-01-09 + | + | @author MASSE Nicolas + | @author LIMIN Thomas + | + | ENSICAEN + | 6 Boulevard Marechal Juin + | F-14050 Caen Cedex + | + | Ce fichier est l'oeuvre d'eleves de l'ENSI de Caen. Il ne peut etre + | reproduit, utilise ou modifie sans l'avis express de ses auteurs. + |# + +#| + | Ce fichier aide à la compréhension du modèle objet de LISP. + |# + + +#| + | version: 0.0.1 + | + | done: - + | + | todo: - + |# + +(defclass plat () ()) + +(defmethod cuisiner ((x plat)) + (format t "Preparer un plat~%") +) + +(defmethod cuisiner :before ((x plat)) + (format t "Un plat va etre cuisine~%") +) + +(defmethod cuisiner :after ((x plat)) + (format t "Un plat a ete cuisine~%") +) + +(defclass tarte (plat) + ((garniture :reader lire-garniture :writer changer-garniture :initarg :garniture :initform '(poire))) +) + +(defmethod cuisiner ((x tarte)) + (format t "Preparer une tarte a ~s~%" (lire-garniture x)) + (changer-garniture (cons 'cuite (lire-garniture x)) x) +) + +(defmethod cuisiner :before ((x tarte)) + (format t "Une tarte a ~s va etre cuisinee~%" (lire-garniture x)) +) + +(defmethod cuisiner :after ((x tarte)) + (format t "Une tarte a ~s a ete cuisinee~%" (lire-garniture x)) +) + +(defclass tarte-tatin (tarte) + () +) + +(defmethod cuisiner :around ((x tarte-tatin)) + (format t "Preparation d'une tarte tatin :~%") + (call-next-method) +) + + +(setq plat-1 (make-instance 'plat)) +(cuisiner plat-1) + +(format t "~%") + +(setq tarte-1 (make-instance 'tarte)) +(cuisiner tarte-1) + +(format t "~%") + +(setq tarte-2 (make-instance 'tarte-tatin :garniture '(pomme))) +(cuisiner tarte-2) diff --git a/Lisp/TP4/trace_complete.txt b/Lisp/TP4/trace_complete.txt new file mode 100755 index 0000000..0954347 --- /dev/null +++ b/Lisp/TP4/trace_complete.txt @@ -0,0 +1,54 @@ +#: valeur modifiée +#: attention une valeur ! +ETAT DES CNX: a = 2, b = NIL, c = NIL, d = NIL, e = NIL, f = NIL, g = NIL, h = NIL, i = NIL, j = NIL +#: valeur modifiée +#: attention une valeur ! +#: multiplication: je connais borne1 et borne2 +#: valeur modifiée +#: attention une valeur ! +ETAT DES CNX: a = 2, b = 3, c = 6, d = NIL, e = NIL, f = NIL, g = NIL, h = NIL, i = NIL, j = NIL +#: valeur modifiée +#: attention une valeur ! +ETAT DES CNX: a = 2, b = 3, c = 6, d = NIL, e = NIL, f = NIL, g = NIL, h = NIL, i = 3, j = NIL +#: valeur modifiée +#: attention une valeur ! +ETAT DES CNX: a = 2, b = 3, c = 6, d = NIL, e = NIL, f = NIL, g = NIL, h = NIL, i = 3, j = 1 +#: valeur modifiée +#: attention une valeur ! +ETAT DES CNX: a = 2, b = 3, c = 6, d = NIL, e = NIL, f = NIL, g = 1, h = NIL, i = 3, j = 1 +#: valeur modifiée +#: attention une valeur ! +#: addition: je connais borne2 et borneS +#: valeur modifiée +#: attention une valeur ! +#: multiplication: je connais borne1 et borne2 +#: valeur modifiée +#: attention une valeur ! +#: addition: je connais borne1 et borneS +#: valeur modifiée +#: attention une valeur ! +#: multiplication: je connais borne1 et borne2 +#: valeurs differentes, valeur non modifiée ! +#: INCOHERENCE DETECTEE ! +#: attention une valeur ! +#: multiplication: je connais borne1 et borne2 +#: valeurs differentes, valeur non modifiée ! +#: INCOHERENCE DETECTEE ! +ETAT DES CNX: a = 2, b = 3, c = 6, d = NIL, e = NIL, f = NIL, g = 1, h = NIL, i = 3, j = 1 +#: valeur modifiée +#: attention une valeur ! +#: addition: je connais borne2 et borneS +#: valeur modifiée +#: attention une valeur ! +#: multiplication: je connais borne1 et borne2 +#: valeur modifiée +#: attention une valeur ! +#: addition: je connais borne1 et borneS +#: valeur modifiée +#: attention une valeur ! +#: multiplication: je connais borne1 et borne2 +#: valeur non modifiée mais identique +#: attention une valeur ! +#: multiplication: je connais borne1 et borne2 +#: valeur non modifiée mais identique +ETAT DES CNX: a = 2, b = 3, c = 6, d = 12/5, e = 2/5, f = 3/5, g = 1, h = 3/5, i = 3, j = 1 diff --git a/Lisp/TP4/trace_simplifiee.txt b/Lisp/TP4/trace_simplifiee.txt new file mode 100755 index 0000000..2c888cf --- /dev/null +++ b/Lisp/TP4/trace_simplifiee.txt @@ -0,0 +1,7 @@ +ETAT DES CNX: a = 2, b = NIL, c = NIL, d = NIL, e = NIL, f = NIL, g = NIL, h = NIL, i = NIL, j = NIL +ETAT DES CNX: a = 2, b = 3, c = 6, d = NIL, e = NIL, f = NIL, g = NIL, h = NIL, i = NIL, j = NIL +ETAT DES CNX: a = 2, b = 3, c = 6, d = NIL, e = NIL, f = NIL, g = NIL, h = NIL, i = 3, j = NIL +ETAT DES CNX: a = 2, b = 3, c = 6, d = NIL, e = NIL, f = NIL, g = NIL, h = NIL, i = 3, j = 1 +ETAT DES CNX: a = 2, b = 3, c = 6, d = NIL, e = NIL, f = NIL, g = 1, h = NIL, i = 3, j = 1 +ETAT DES CNX: a = 2, b = 3, c = 6, d = NIL, e = NIL, f = NIL, g = 1, h = NIL, i = 3, j = 1 +ETAT DES CNX: a = 2, b = 3, c = 6, d = 12/5, e = 2/5, f = 3/5, g = 1, h = 3/5, i = 3, j = 1 diff --git a/PkiAndSmartCards/PkiAndSmartCards.odt b/PkiAndSmartCards/PkiAndSmartCards.odt new file mode 100755 index 0000000000000000000000000000000000000000..40fc88ce0be10d871eb330ecc223777cc2158c59 GIT binary patch literal 191633 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%0DrydzAHjexe)#`O+FTa%ZP3}& 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 z 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 z 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 literal 0 HcmV?d00001 diff --git a/PkiAndSmartCards/PkiAndSmartCards.pdf b/PkiAndSmartCards/PkiAndSmartCards.pdf new file mode 100755 index 0000000000000000000000000000000000000000..49d5256793752e7a9c69254b0eb04df7d55fd01a GIT binary patch literal 359712 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

      7P6%-fKg_U=|@^$6B*&` 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�cV70s6M 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 0 then + ratio(i) = instantEnergy(i) / averageEnergy(i); + end +end + +// Beat detection +beatIdx = 1; +beat = []; +for i = [1 : instantEnergies - 1], + //if (ratio(i) < beatRatio) & (ratio(i+1) > beatRatio) then + //if (filteredDifference(i) < 0) & (filteredDifference(i+1) > 0) then + if (filteredDifference(i) < 0) & (filteredDifference(i+1) > 0) then + //if (difference(i) < 0) & (difference(i+1) > 0) then + // draws a line + beat(beatIdx) = tEnergies(i); + beatIdx = beatIdx + 1; + end +end + +beatIdx2 = 1; +beat2 = []; +for i = [1 : instantEnergies - 1], + //if (ratio(i) < beatRatio) & (ratio(i+1) > beatRatio) then + if (filteredDifference2(i) < 0) & (filteredDifference2(i+1) > 0) then + //if (difference(i) < 0) & (difference(i+1) > 0) then + // draws a line + beat2(beatIdx2) = tEnergies(i); + beatIdx2 = beatIdx2 + 1; + + // put a beep (4000 Hz) in the signal + for j = [0 : sampleFreq / 100], + outSamples(tEnergies(i) + j) = .9 * sin(2 * %pi * (j * sampleFreq / 4000)); + end + end +end + +// Plotting... +scf(1); +subplot(2, 1, 1); +plot2d(t, samples, style=color('grey')); +for i = [1 : beatIdx - 1], + xsegs([beat(i) beat(i)], [.2 -.2], color('red')); +end +xtitle('Echantillons de ' + fileName , 'echantillons', 'amplitude'); + +subplot(2, 1, 2); +plot2d(tEnergies, instantEnergy, style=color('green')); +plot2d(tEnergies, averageEnergy, style=color('blue')); +xtitle('Energies de ' + fileName, 'echantillons', 'energie'); +legend(['Energie instantanee', 'Energie moyenne'], 1, %t); + +scf(2); +subplot(3, 1, 1); +plot2d(tEnergies, instantEnergy, style=color('green')); +plot2d(tEnergies, averageEnergy, style=color('blue')); +xtitle('Energies of ' + fileName, 'samples', 'energy'); +legend(['Instant energy', 'Average energy'], 1, %t); + +subplot(3, 1, 2); +plot2d(tEnergies, energyVariance, style=color('purple')); +xtitle('Energy variance of ' + fileName, 'samples', 'variance'); + +subplot(3, 1, 3); +plot2d(tEnergies, beatConstants, style=color('red')); +xtitle('Evolution of the beat detection constant of ' + fileName, 'samples'); + +scf(3); +subplot(2, 1, 1); +plot2d(tEnergies, difference, style=color('cyan')); +plot2d(tEnergies, filteredDifference, style=color('red')); +plot2d([tEnergies(1) tEnergies(instantEnergies)], [0 0]); +xtitle('Difference between instant and ' + string(beatConstant) + ' * average energies of ' + fileName, 'samples'); +legend(['Difference', 'Average difference'], 1, %t); + +subplot(2, 1, 2); +plot2d(tEnergies, difference2, style=color('cyan')); +plot2d(tEnergies, filteredDifference2, style=color('red')); +plot2d([tEnergies(1) tEnergies(instantEnergies)], [0 0]); +xtitle('Difference between instant and computed constant * average energies of ' + fileName, 'samples'); + + +scf(4); +plot2d(tEnergies, ratio, style=color('orange'), logflag='nl'); +plot2d([tEnergies(1) tEnergies(instantEnergies)], [beatRatio beatRatio]); +xtitle('Ratio between instant and average energies of ' + fileName, 'samples'); +legend(['Ratio', 'Beat detection limit'], 4, %t); + +scf(5); +subplot(3, 1, 1); +plot2d(t, samples, style=color('grey')); +for i = [1 : beatIdx - 1], + xsegs([beat(i) beat(i)], [.2 0], color('blue')); +end +for i = [1 : beatIdx2 - 1], + xsegs([beat2(i) beat2(i)], [-.2 0], color('red')); +end +xtitle('Echantillons de ' + fileName , '', 'amplitude'); + +subplot(3, 1, 2); +plot2d(tEnergies, filteredDifference, style=color('blue')); +plot2d([tEnergies(1) tEnergies(instantEnergies)], [0 0]); +xtitle('Difference lissee entre l`energie instantanee et ' + string(beatConstant) + ' * l`energie moyenne de ' + fileName); + +subplot(3, 1, 3); +plot2d(tEnergies, filteredDifference2, style=color('red')); +plot2d([tEnergies(1) tEnergies(instantEnergies)], [0 0]); +xtitle('Difference lissee entre l`energie instantanee et C(i) * l`energie moyenne de ' + fileName); + diff --git a/amaroK/algo/beatTrackingSEF.sci b/amaroK/algo/beatTrackingSEF.sci new file mode 100755 index 0000000..8d05781 --- /dev/null +++ b/amaroK/algo/beatTrackingSEF.sci @@ -0,0 +1,210 @@ +function outSamples = beatTrackingSEF(fileName) + +// Spectrogramm filename +sgFile = fileName + '.sg'; +if fileinfo(sgFile) == [] then + +// Read samples +[x Fs nBits] = wavread(fileName); + +// We keep only the first channel +x = x(1, :); + +outSamples = x; + +// Computes size +[nChannels nSamples] = size(x); + +wlen = Fs / 100; +FFTSIZE = 512; + + +overlap = 2/3; +filter_order = 10; // must always be even +Nfen = wlen; // temporal analysis window length +Nover = round(Nfen*overlap); // overlap in samples +slen = 25e-3; // length in seconds for the widening +miniv = 1e-100; +minimo = 0.1; +medianSize = 150; + +c = 0; +beatLimit = 0.5; + +// calculate differentiator filter +m = calculate_differentiator(filter_order + 1); + +// hop size in time +Nhop = Nfen - Nover; +Fns = Fs / Nhop; + +// design of the low-pass smoothing IIR filter +alpha = 0.015; +betav = 0.075; +d = 5; +c = 1; +betav = betav * Fns; +alpha = alpha * Fns; + +// SmootingFilter => low-pass smoothing IIR filter definition +s=%s; +num = [ d + c, -(c * exp(-1 / betav) + d * exp(-1 / alpha)) ]; +den = [ 1, -(exp(-1 / alpha) + exp(-1 / betav)), exp(-(1 / alpha + 1 / betav)) ]; + +H_Smoothing = sum(num .* s^[size(num, 'c') - 1: -1 : 0]) / sum(den .* s^[size(den, 'c') - 1: -1 : 0]); + +SmootingFilter = syslin('d', H_Smoothing); + +// X_fm => spectral analysis +X_fm = specgram(Nover, FFTSIZE * 2, 'hn', x); +X_fm = X_fm( : , 1 : FFTSIZE); // we keep only one half of the spectrum + +// G_fm1 => Smooting along the time axis +for i = [1 : FFTSIZE], + G_fm1(:, i) = abs(flts(abs(X_fm(:, i)'), SmootingFilter))'; +end + +// G_fm2 => log compression +G_fm2 = G_fm1; +G_fm2(G_fm2 == 0) = miniv; +G_fm2 = 20 * log10(G_fm2); + +// First derivative +//H_m = [1, -1]; +//for i = [1 : FFTSIZE], +// der1(:, i) = abs(convol(H_m, G_fm2( : , i)'))'; +//end + +H_der = sum(m .* s^[size(m, 'c') - 1: -1 : 0]); +derFilter = syslin('d', s * H_der / s); +for i = [1 : FFTSIZE], + der1( : , i) = abs(flts(G_fm2( : , i)', derFilter))'; +end +ds = size(G_fm2, 'r') - size(der1, 'r'); +der1 = [zeros(ds, FFTSIZE) ; der1]; +der1(der1 < minimo) = 0; // remove small differentiation debris + +// eliminate (?) differentiator filter transient +//der1 = der1($ - size(G_fm2, 'r') + 1 : $, : ); + +// Frequency integration +for i = [1 : size(der1, 'r')], + v_k(1, i) = sum(der1(i, : )); +end + +//H_w = window('hn', 2 * slen * Fs + 1); +H_w = window('hn', 51); +H_w = H_w(26 : $); +wv_k = convol(H_w, v_k); +wv_k = wv_k(1 : size(v_k, 'c')); +bn = (~isinf(wv_k)) | (~isnan(wv_k)); // eliminate NaN and Inf if they exist +index = find(bn == %t); +wv_k2 = zeros(size(wv_k)); +wv_k2(index) = wv_k(index); + +g_k = zeros(1, size(wv_k2, 'c') + medianSize) +g_k(1, medianSize / 2 + 1 : $ - medianSize / 2) = wv_k2; + +t_k = zeros(wv_k2); +for i = [medianSize / 2 + 1 : size(g_k, 'c') - medianSize / 2], + t_k(1, i - medianSize / 2) = c * median(g_k(1, i - medianSize / 2 : i + medianSize / 2)); +end + +p_k = wv_k2 - t_k; +p_k(p_k < 0) = 0; + +// normalization +//E_fk = p_k / max(p_k); + +//win_size = 150; +//E_fk = [p_k zeros(1, win_size)]; +//for i = [1 : size(p_k, 'c')], +// E_fk(1, i) = E_fk(1, i) / max(E_fk(1, i : i + win_size - 1)); +//end +//E_fk = E_fk(1 : size(p_k, 'c')); +E_fk = p_k; + +win_size = 150; +m = [zeros(1, win_size / 2) p_k zeros(1, win_size / 2)]; +for i = [1 : size(p_k, 'c')], + m(1, i) = mean(m(1, i : i + win_size - 1)); +end +m = m(win_size / 2 + 1 : win_size / 2 + size(p_k, 'c')); + +// Scales +ts = [0 : size(x, 'c') - 1] / Fs; +f = [0 : FFTSIZE - 1] / (2 * FFTSIZE); +t = [1 : size(X_fm, 'r')]; +te = [0 : size(E_fk, 'c') - 1] * (size(x, 'c') / Fs) / size(E_fk, 'c'); +tb = round(te * Fs) + 1; + +// Beat detection +beatIdx = 1; +beat = []; +for i = [1 : size(E_fk, 'c') - 1], + if (E_fk(i) < m(i)) & (E_fk(i + 1) > m(i)) then + // draws a line + beat(beatIdx) = te(i); + beatIdx = beatIdx + 1; + + // put a beep (4000 Hz) in the signal + for j = [0 : Fs / 100], + outSamples(tb(i) + j) = .9 * sin(2 * %pi * (j * Fs / 4000)); + end + end +end + +save(sgFile, X_fm, beat, beatIdx, E_fk, m, G_fm2, der1, te, ts, f, outSamples, x); +else +load(sgFile, 'X_fm', 'beat', 'beatIdx', 'E_fk', 'm', 'G_fm2', 'der1', 'te', 'ts', 'f', 'outSamples', 'x'); +end + +if input('graph [y/n]', 'string') <> 'y' then + return; +end + +// Inversed gray colormap +cm = hotcolormap(128); +//cm = cm($:-1:1,:); + +// Graph plotting +scf(0); +subplot(2, 1, 1); +xtitle('Samples of ' + fileName, 'time (s)', 'amplitude'); + +subplot(2, 1, 2); +xtitle('SEF of ' + fileName, 'time (s)', 'magnitude'); + +subplot(2, 1, 1); +plot2d(ts, x, style=color('grey')); + +for i = [1 : beatIdx - 1], + xsegs([beat(i) beat(i)], [.2 -.2], color('red')); +end + +subplot(2, 1, 2); +//plot2d([te(1) te($)], [beatLimit beatLimit], style=color('blue')); +plot2d(te, E_fk, style=color('red')); +plot2d(te, m, style=color('blue')); + +if input('spectrogram [y/n]', 'string') <> 'y' then + return; +end + +scf(1); + +subplot(2, 1, 1); +xtitle('Smoothed & log compressed spectrogram of ' + fileName, 'time (s)', 'frequency'); +xset("colormap", cm); + +subplot(2, 1, 2); +xtitle('Derivated spectrogram of ' + fileName, 'time (s)', 'frequency'); +xset("colormap", cm); + + +subplot(2, 1, 1); +grayplot(te(10 : $ - 10), f, G_fm2(10 : $ - 10, : )); + +subplot(2, 1, 2); +grayplot(te(10 : $ - 10), f, der1(10 : $ - 10, : )); + diff --git a/amaroK/algo/calculate_differentiator.sci b/amaroK/algo/calculate_differentiator.sci new file mode 100755 index 0000000..962b3e9 --- /dev/null +++ b/amaroK/algo/calculate_differentiator.sci @@ -0,0 +1,35 @@ +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +// * * * * * * * * * S U P P O R T F U N C T I O N * * * * * * * * * +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +// calculation of the differentiator filter according to Dvornikov's method +// based on interpolating polynomials +function maximum = calculate_differentiator(filter_order) + +n = fix(filter_order-1)/2; +if ~modulo(n,2) then error('Filter order must be even'); end +N = 21; +alpha = zeros(1,N); +k1 = 2; +k2 = N; +for m = [1 : n], + r1 = 1; + for k = [1: n], + if k == m then + r2 = 1; + else + r2 = 1 - (m/k)^2; + end + r1 = r1 * r2; + end + r1 = 1/(2*r1*m); + alpha(1,k1) = -r1; + alpha(1,k2) = r1; + k2 = k2 - 1; +end +size_alpha = size(alpha); +//disp(size_alpha); +//disp(alpha); +//disp(size_alpha(1) - n+1); +alpha = alpha(size_alpha(2) - n+1 : size_alpha(2)); +maximum = [alpha 0 - alpha(:,$:-1:1)]; + diff --git a/amaroK/algo/essai.m b/amaroK/algo/essai.m new file mode 100755 index 0000000..6ce517c --- /dev/null +++ b/amaroK/algo/essai.m @@ -0,0 +1,25 @@ +close all; + +tStart = 30000 +tEnd = 100000 + +A = [1 -0.9808] +B = [0.0095 0.0095] + +t = [tStart : tEnd]; + +figure(2); + +x = bbenassi_l(tStart : tEnd); +%x = sin(50 * 2 * pi * (t / 44100)) + sin(500 * 2 * pi * (t / 44100)); +y = filter(B, A, x); + +%clearplot; +hold off; + +subplot(2, 1, 1); +plot(t, x, "r"); + +subplot(2, 1, 2); +plot(t, y, "b"); + diff --git a/amaroK/algo/specgram.sci b/amaroK/algo/specgram.sci new file mode 100755 index 0000000..c6c781d --- /dev/null +++ b/amaroK/algo/specgram.sci @@ -0,0 +1,106 @@ +function [sm,cwp]=specgram(sec_step,sec_leng,wtype,x,y,wpar) +//=pspect(sec_step,sec_leng,wtype,x,y,wpar) +//Cross-spectral estimate between x and y if both are given +//and auto-spectral estimate of x otherwise. +//Spectral estimate obtained using the modified periodogram method +// x :data if vector, amount of input data if scalar +// y :data if vector, amount of input data if scalar +// sec_step :offset of each data window +// sec_leng :length of each data window +// wtype :window type (re,tr,hm,hn,kr,ch) +// wpar :optional window parameters +// : for wtype='kr', wpar>0 +// : for wtype='ch', 00 +// sm :power spectral estimate in the interval [0,1] +// cwp :unspecified Chebyshev window parameter +//! +//author: C. Bunks date: 14 Sept 1988 +// Copyright INRIA + + [lhs,rhs]=argn(0); + cross=0; + if sec_step(tS~HujD+^aR)oB~FbuK)J98HcLS|+zR>FT?Fbv|BHZA}s zLI!agBNu=uz{K7Z0K?A@vMMA~~YmF%0ca^yJP zqAaDB4H|Z6p(v6_jgq}KHssIu;R=dkuI~7n8x6+VK6efIvhvZ<<0Bs(E4^Q+_-f|g zQ(=)w*-UlEO|MqK@&05mH|17_ivH1_-NK_Ly7gdsV%H&4gaK*!P{6Ul`qMmsw#H9p z9`0h8lV{!!=`HJ1Fw3#w&mLvM%tk|00Mpnfg`&|lH;~H%hvI!#&c>(r*8q9V9p|rP z<3<%N*)MR|mwIPC(CXfJMX5%g*$qtr~h)KxM?RcR@G$XOokP`J1(d4_18H5He1d z1InAhj}7=(%smtLAf#j-H>afwYpd>Kw+C~it%vKQ+&qDop=U3K=!bAw3<5j9_E)H+ zA54f^#(-Q7;U{D8)>JXJow;8*yFDHSJ0urpnG5y=pgX!Oo%3qC8Wr1z09|!$;d7GH z^kA?!i;s#xhxo4<^)f>FA_>t0C=!Bh5q3F6di}TngwfbYym?Rapz)%G zMJXo)hp77q@lV1Fs25bf)yuAg%!SBD=F3}1;C7|a^<5HaOY`vH?6_dn?A`$c5P|(L zu^`DPh2UUjW}ucdfFTT83I8VFhz_$X-iL_}AOOfHlk8v&sh-|N3Ks7~t7a9UIA!|6 z;uuFWj8eMDm8$rj1u}S`uOAAMi}?e%IUY#&6AC2tb|=C%BBD9t>LdE3#dx{Zl6O}b z^qe^IkCBKonlD)1iUF7S=mch4<*6SIpGwPEU%T4R>Lp!6f7m{ksk>9!$UmZRPY}B| zVfW?-q>OIQbsd~Ah+w z<7`vJ4S4aa&AN<7>?7c1wPx11YT8^L|CmxaiJm{QE0p+ z$YM9|mJq&~4|D1s&I5h35m3 zn^;Lj3x2#=!`E3YL_-gWiX|FYmpN*Kn;F!$VRne8x#d(zG)nTQ=X=vsg^*m@joMU6 zXd>jR0ZUuSQMv*Dhl;#v(xKA;V|y<#8YPzn&j~Es2(lpUEM;}^XWR2iinrgX;-&>9 zde)tBPMcPkE+@an=(7P^Dq5!Agiujjnmv*TMyc}eK2d0q=Qv1p6{ zwL*n+O5N?5qUz$UjG{-+EI>0H{Q?`=%#djluhUZZ!y=55j?5ylR_je@TwpnRaR=ke z+#9ZgGb&Dfmx!ukI5C(3Hj(W0U+}<gHy4IW@l-$dQtfbfK^m+r0Fs3Rin@-2pvjOMCMVFGgwS9I(+y3* zxMR9J3rPJsb^6*o#LOwg1;a--bxC`N7=EFT3@h9Gtf$#;ak-S0^gdY{=$?TD2JsEh zz3P8g)+i{2HM%`G-xTI(yY2`58cL5Uah;_`ZmtY>NIYwxotVxW#fXN-M+pR&Zka`P zN-HZ*3)m-Hu1c+=@^_O_xBw+a+;9l1G8BbFf(}0~{CCb_?gOL`wZ&wsd;72c3L~G(@>G)-{%5I=B|r=miw+4yWZb)6OT+XgSKw5 zO?7}$8z_av3GU63RKen05k*}A2A28bC~ta8g~DtO+qYHR4UlOXjumNqMvP49g@E=x zy|uAeE?ayAtj3f}f2OuyA)5=55a2;T5nMV3Z zA2JUh1xH`P;J{xsnAGLBFQ=uy0e8)ba*q}Rgg5>z3!>FM?dcxRPnmmRl|Ca1xwi(o z0sP@zeK}>ilV~}daU)Z($Hos@1bZEt*7XT^d`g5B`nqG^J$|w3MMG~sBYtk_dE8Ss zRSK5a%Y#l+HHpjDoTHwuYPc%`E$Du4@_#na?LC(O*qQzt|9rQ;*$IaEzc7@lrvreH zLD9$@0K*_+Z|4HAb8#m82V^P3Fen3@?OmNr0M3L=|LTwfm|7YM+j|h|Fn)KiGcgl# za53w_e7ie+`w=p;{nLz}pYY!%`iI-U!n5VVI=$>`B$5ni;#))-}{*fng6+zZ&wx;LT1)~_J8vogQAnYi3-4lQ0M!zh>8<3 zr~*7(2=%_v@86g59sWPp^6%it#mxS{1xH^ksrZd?!uR@8jV2jAgs1%)Bk~HGx~qf^0C49eyKe>}N-G3wO;*-wWX&wI&;RV)Sqp=*8p1`xYfWu38=^6L!(!h8-1-~2xr z{StMLH&|t3>^tU7qb*u#(Ua6Gt8NZ@)~BX&@ugxe4G_<=U3e}Cy@H?RxU5vf1xHN(Y|%z+s>phYbT-2 zNr07f8Xvlh+t>I2)^_+tRh%!)bd{K3K@+W2)5Q23O z9*lw2L@#tpjBh=lni})(3uh4Wu9b&Y=NR&XC(Z-<4djx;o6;T&&n_o@3zz3r?7N@a zVN@%=W7>iBDB(|U&co{B9uEzh1CPAF*+5t1JIEi`WZlGD50> zbNG?A3+vYGos`9SaJ}8}jLxkq+SEidhP`m21IN#}lJ7%yy!b5$gErlpOsuU$py z@Z3_{2LqmaBYYdv14V`L(DW+@5&PqiBBpXnShVWgd$mEjnjvMxonssrsg>Ja`RCEwS z|YS0rnnpdJxzu0CjloaFgP#f0`Ug&yw zvJ)akB6^*P7W1xn-Fw@-Dok5f=kG%K92nAoG!q+k&z?lIs<|CYj6A(V?))XQY4V3IB86;(J@ zTs$t|LC0C4%`{a`8Ns9xn|w!(4dBNuG`>&e6pbL3`ct6@QcN_tiSEP|>fiHDkwSlS zkcI0u^X9qn^|c?J;TbmB0z<+%UDv(x54< zRqV&&b-c+8a8}et&6Ck*K}iZ~>Rs8BF=Z#aGt$-wvF_U!Z6eljox-T(&=nZ@o;+fL zo;Ke(eC%?!`_NvPt#)Eqf=u@JIRJuI@~Z^O|4*xfpwFF}wgEReby#_{9++GYgQArw z5~TG->V2-Md6*(#&9Sy&5l^&tOK|PYm4&BQ(VhBjPXk0jZTIWA==kXNTr-;iH#q}{ zP5GL>l{etu`vnZ(MFlwxvbHwM6uB6k&qqp_F&vtCe zOVF+VnADkNhnl0DPVVI+w=#&1voeM&677N97!9lRQvpj!__$r*MKdO*b#I~fpKgRh z)mw3zyB`B>K(#LhHtSS%Yll60+@q#Z=B@co_ zs^gm6_$ymwR?Kmja_4Co%^2k2`sgC5izY5835kEgF9ccccC~vNIF$Frb zw9{>AV-=JS}<%;*B+JJSEvbZ0c<1t;+64}ZV_b;%wonvag1jlet*_K zMv*8}oZh6L45u5ovg*{W8KU7;=p?GdDSiY*$jKnaao7~$POy*lNnsbg=#rkMBx$GW z6I^annS0KYw)rBz&h=Vo!?FeB(UQF*C0O?K>_&0q-m-7{?!U}DUV71)pU`SbZ~A8* z>C@k7l3jNgX_e@k6Qr8iy@)lB*Ox{3atYF?7hl`(OCupj6Te&{s3JW)Ev;RD!VJCq zi4Ol1W2Y{aFPQFu3V(>dQ;d*7$}St1RTmnM%PEdn5nc(hDdQ;DCs^U^&N(c5wUc5P z9ZLs0DQ^UudPm%it`EMHtRM4;9cDgZD7S_3I>hH|J5u-;S9zhH#Cx;`#1aE2VO z2aQ5d8}np=ev!v`qeh-fm_218XYKVuOs)hhW^q*vgiYjAw%nI0On9<; zW^qKHdO9`RS#yV9BbtmJ6^!l{Q@0_q*yKr(i7_zH`IGENcIp$cxJ`+D94iQ%& z3S{8^MNLrlN|cae?KcWo?8i^ARuTO=14ovxd8+UP(jHxK!RMz(^ffwIj@PwyG}!L+ z=Rqihe;^0nYq&NI4^N27ZWS^g|k;VgS|nYS4+wM#^|kAYYx zXOui*T`Jogt8l*Up^i_nKY2JwKPEZ*4Hp6M@J5r}bpTU0db-B?_oiH7CmwJ%Y}z9? zUcLK6AT#$(G=e+bQo{H6p1Y#gZYaqIJej@81W8IiY)3BO1X5#fv~c3S7Gbx+W(k_$ ziha157icn?@U(N*fWR3JUlF6uoo+ENy&!wSyl2SE;lvG4NPRc5xm(?%qG@kX!Va~S z4SytoKu_u0eh_MnraERiH#Wokei}`g%J9=)=JaTFC4@c7{!VEv4D5I#cD!fTUncR@ zlroVk`g{>!`62bfg{ez!*|~*o8OQY25)&;P8)itr|INt)YE1-h|2<*h_%HDOKV~fd z#QXmvW%)+?e8GyZS0kQz;y z_ycy7@6+eBg?;w;rocP^mstv8BN^VTaX}CvhrgVzjjoB#QS*F0o3_D&5Rvk!2m`FGG=I{!YISRDljwaPRZnOdH=W&+ zS2jHcca+J|Q+Ez+l`uAa*VNwqJTobuGE(h9Eg(+<+zb%AP#Y2{-fU4Ww-PPnR#?z(lc(Og5yMTpk@rINT>ez=p6ER16s=6$ zeB>AD-3Xi!&@v#vRdCyI$pmR@SC<2K-iqYYb~a18M}AGs%%l*0$~Y0U@j06SB=@^& z6#BGNlR-e$wR9naZ++-E{wgg3*NpieNMX=U%j06kAC(O z7dFZm76Z1dy&@rlp9oAd4J+N~a4{xvqF`t1q_?vXV(PY2qlxoe_BJHdIv(*$KVlQ& zM4%FJVS|ii>uycOlVkejz56a?O&f<|Q%d1KjZ?qk0@x+zYF z`rsiG(aznsJ8(bvo?@BcB3E*Ge7Agk}#HyCIvUo)@QJHChjwV;JBj>g?dl*ex@=-5`Fk z#nK^Jcucu?U*kRBR~4&|8$(ELJRwxUw(x^=K)iXn$TsMG0+I*omhyoXk~GW{3eE-} z0}9KX7JidC?VAE`aA-JW;a7EH9m-^tubY{&jlMwG9DC)EGGWam^q}7)Iyo>@^LE3b zak#qjnK_ipE8$!n1_d|idQoBb%lHyyLdp;oLkdFD9Tznc7XI5X6JOS{Kj|7zKZ@V# ze8+cb9N#85V3E7wLTHZ%)px*EZ?-)>xskxnGcDpsZAoju&~UUoR| zj<17JLOJamL?TqbL8#PakRln5VWbR&t*I4r=1)pIBCP$CjTJ>J+esfA9IAB9kqFPP z{9xmP;CNX0feLtijEJgbU{-vLfCzdJD71dRTTdq7`M@Ku@#NVDVfu@vc^o@Z#jz?2 zv}?9gobZ6?pE!n75RW!>+5SJA!U(7nfHe#+!JRy*)FT;I&!MoaSehr7mbHhB(8g2z zR;>L$2AmgX!ckKCgGD41@nxRw!e)BpP>*m|ANON`+T8&9P}0)-N5&uPE4{#lM91Zf zP2H{IxyZY+P{VbR>Y1@c_Ku!~!l-Q=y!;Nj3R?Q!KAT(!M3f>38--cU3YEr1jTH<2 z8IK8Sj!B%ivsu$_@+D>&Pw?55{3VYX7_{z8D)`T8?$ja7=}l$~RzL+Dyqhe+hoZUA z)k>Bq`)!e`rFaBj&aUzUl4SI-dy9kA&V+XyoOEhZcclvuaTioFZtI~}!!=6%s<}vm zVY}aVtN@z_C>e^00zgH_J-{O^Z9TAwxB z1KTQHT-uKM#eFRm4cZj;Iw8795ajBXXwMwF7u!&RCb6LhteJm5s?TPLjNm3+e-_`T zIRj-yhT?ttr~T0U%sCqF`bEbP{Kp7FS{AO&K3|hvN_=I5>tk{|cMSRveuw!h?EXgd(~x zoxF+1(E0Th<6Qg@jN3>|m>Ax4nz4X?+7cH(lOia~tY51Kv6NSc5M8pF6%wh6FI9uv z-|8UKHY=xaYpTx0nG}bw@wWa!4Y1Z{xFrt@Toc@;eqix>IR*jNPu)a>+5XP3FB2W( zn$Vwi(lZRol0Cn1IC&X^KYhU=B_%q&jLSBl4|G^JPYmq82J~QI^XGdJETBtj(41J# z14JF*@$kD8To(MQuo3POT+ZJ^ii_(=kQKe(?{WVtaSzHyI9@zGqZeoe| zV`DGzQi~GJa5ljjo9*}CnOBX4Xbe1OMGhv#hg;{x%#q(y6^I5CN7Q^M$dIolUEzo| ze-UhQ0)I{uotsh1p}I9(+TsQ-iYzV+h&f2{Wp@%i6b z?_YCiDi~V3`rt}gFtYy4f3@b7+7c4qdXmL@KQtp8HDVHo6$T%0Vw zHFYL>#(%pA8UM%T|IOfAi5LEtI{!bqv$AviXFm%U+kd?I_WMt%{~v`F|1UNDdtA)J zMMA~pyQbowg%`@KgslI8}olD!pL^*l8Q6ssV3u$S6k(TOw;IU zim4VT2j^6LrP)&wEQDzO*yp-5#s9p$L6ZMjs~uHH$^P~J*g0|0=l^uQvLo>IKI8u- z@OI(<+2j8i{`a+W{p>`~!2j!k>)D(0@72wHZO3Cb*u4*k(%siz`(Ixt3Z5SfuU}uE zjq;xHpOt0l&)mxPbO&84P?PS4>)A(JidvS=UDmJQ$p#hg zEp1e7UG#S?fl81?VkFYcZoNfPz`-iBY+-Z(^D{I!xN2eXFepR^m*qkb?0K$6VX}QG z@j4@yHio8m;|sOSdS0x#A3P9pV-h7@B`53Y_4-AV?gT3D?Qh^0hTWfFr2>y#)EA7h zI`1F(apcLouHB|ua~7$d69CB=g|}Uxi(gm&-+Hip5k$DPm1h8>wxDJ%YKg!v6-Je3Xd788$uw6F{N9cr zDAcsR@f80LXjuc$2SOKtGBn#BlkpDY&}F}E8FgXCI|u zF!hdY$jt(AWum!JG0yF52AH_s%%SMMFtLh))av9Z%q*bya)a5@z*FYPY47XT;!Lt_ zNsXb|BsFxz;zPh7%1xn$=YiNm7cJLb#Ns?DW$EC_aJK$g$w-t^a5VnXT z6Cdd&7_(#u)#UGbuR6rta84;stGY`vqsc=><5)q3Q_<-m2j@y=!3w0=K=f27MUYG1 zP*rG3CENYTnHq}fJn(4kx`AezUDp9s(6^oLa+(oZEpqALktjM)g@`pm>>p{jY#&`R zYA?c2ZRbu34{G9H%c-g0biZOrq^O-V`GFuQS!7tTJ@%v#t2O$Cy%5RynQA6XyWB9- zc$Li2?^4N4LFFHmI8{&5Qhq8>uq3x(XGGFX#vCApg;V=v%aLDcVbYp@Fd=KE2M5C5 zXR56zjT%n~1mj8=y&A)`O(l{+O#epx>x3wza8QW&rJ==9D$qcxcjh(m#B1Y%kE_x#;RPNdPnS7$@qEh8 zk1xEU4UIWg+oK5 z7{$m~C+(6*ZaL0Uq%0(y)zFmQH8X@Y5-QVD{)D^uQwygE#Y(9P+h z^N>`;inSrA$;bmBGlhozou+7>m>GRlsq^#wFI?unQC4W-N+PH(&cY1F(@iLq;a%_O z`g37MDZupNmJvC|92~_)5_M*~c?vBRiz$5O$5h zD@7;LoaQ3!gY5|%mWwahfYXc>icUEg=|q)C97ATE(q6fgq3vNG_|+WxwV@<~m~y@woZOT{DMl~uRM`T#p% zDCfPzot!R>8A7-*q*IcW%p)K@YWh?ne!hh zkgay3pH4+uFQ7H*HjkLaxlzznM}4Xgx}y9S|G0@lVaeR}-X)k~>Y|6MN}~ljiP)N< z>6taMMZ1Qxf$WzR#0RKS0GH7v=4#@DqCs?x@}LPka!g`)>CuRHc-UszStUb!T{D0c zPMSv8<7hkV#!z$p_#1ajRklx5j!g#EFv&?qK&wPV3cVhd7i>_5KA{!PF^@S&Rw7PN z+z;mNx87Zl``y!Yanr%Ab~4aGFBkU8x+Y>5Pj%z{;nz`Ladzo+nNbj)KDR&Fv__pj zc;5qke78bs5L;#Vy&+@9P@s*-%>?u5*ga>!F*i%3Is%cUQ$7*6R9B9PH6$&A&!KyX z*=NOG2!JkxWv{=&a+vJg;#8uRz#qhYd0UcHX5l<%CV@H1c4UWAvf4 zkGiRr`iOHuc*GL618rbxCE<2O2A-H6!GIYIzW9L6ix;cx`v_YnjKG8N3&kHnk`Xnb z50iWo_5*Gym1RR}AR@pmQ?WR~UNeb+MOD7pH6&;vF9Hhug@Wa?#8?2>ZE)=CCIh)2 z4Y&cXg{z{hAMZUWr)I?d-gt*~!VypCJ=e|z{@t%%S_Mhv+C=u^jr%BTE>(z`)LcO> zI`Z;ry~>W@zop;?T}R^zcp4omN{ja)#=-#5x1HItxR z)fBYKLC{Nqi8`huiy{O{D}V7wc(j{wnO8^BggGY*P2~_e968CVMUv1FVwiice++a> z_UypA1`R?Oa?zu=WWsMji<8)R?iH)*H#tITae}96AcwI7KX>Jl^|ro8aD%3)sFw!* zL>U=81;|@x_Lx*AUF=JzWDse|S0FHgCH@%xP+%jALpIaY3?&lO0RM@y*3)=|fugQ> z-u{FYRu!WS+v+5W{hPXRG%S2vMe$>~{-HBtDWxw;NgOU_^gh11U*;!c^LP#2qtHqk z+OWuJ;dsG5nWS3lFi3-7e+X&k5i5h?ZiAlZEk^C8Cq7JP0Y4J+!%l_tIx(BtsFsqj zytAY?xUyA`;o3!tGHCEnNhKMQCRf|DFp^5^UWy>cJ3e>IRF<=$>6Yqq#KP6zxZ9~V zfPYLTt?(laPbt4q!KK6_N?85E>3jbu0F+x^YfuaUE@x4mEWXb`HLu#M7G;?s&)DiM zTpmjU;(1FcszIw7@4+wy(ScyQb0EDLq}%RQU$}Kh(Zhs+6z<f|f~`;D@X6xd!8% zFJmm9VT=e=-bV|{4^%_8rn`1C2$dTq?{+mtZ{>?gZMC+#aWz;wZ8|`2w5a#y$B{=r zW=YYB(~nfpZZ4rQ={)!|bRK!P$jep|)GuB(!%e!-GDmk!XfE11PibI1GD`1v*=>Dz zqLWtI5Pfy)n~wpbBQ8RMQSq7sYN8^`cKcC}c*R{C@?}+eqFUG@iyx#Ka0f=%TU_Qv z7O=)KMn5Kb$Vt8v>j`hdE(v~56L&hV$JXo`_oAXT;HQE+rFvbgndaej2iC8L zP0%bdvKY#;A#{4CA~9)I%vc2sHZ|`_U@FtIrg$B>1?CFFO5NlG8Ob7;qHZh0un#~D zav-HL*np1%x1}8L3Xpe3SWr0l-xHHsKb@BRRn(bK!)v`0CdhLkIFNbG-AS!Z^cOqiNUITw^NYvWESNX{h7&CuEQw^nsXi#?` zaxylHmP44Uy2YrGl%H5nYUgML zdDI6_=x$6OCK)l!u85IQm@Emfo+gcaq{LH215l}G9SZAk5k;Q@Xw zW0Wa(N(p!cO=BZCBv1+n0Y|~=H(Ca#3FTZBB3f(!GlM@buIA6$-9A*!&}}JHaEZJX zbA%1vVSGbR;hMkAorqmNUaAaUrz;;vV{)*^-rUuTTkjT3jg10i8e0S(S?y=YPZcD& z89=8MC0P-BR3F@r!4O0(t_Ad;hHgSEPopRX8l#mP`Sfm!8a5&BXyC0&Z5I?2Vw()b zy~%tWXwfn51RXt;Ub9WK_wcRLle!;wK&B%4k#>`U-SxkinC-7 zj!K3IdWETrfc?g z*I;S08b!LBip_jovw3@0O>AN1jPIGDFVy+?YS74D9kf~4dQi{BBbj@OQVWjGwW2;D?#jv%Z`F}lYOF1(w?t%WU^Oqdo#52N-#o;m97sWphU8OGKcSKiE|jOFN}uS z5<`$@qRXUcDpq33*|t-vF%Km}?6Xg#Tc}RQBW-v1!c7mvHt=BSpg(vP0}VPVzZ}S< zx)4oT%5co+SvLtdCBeg7Un6or0xKOIrL-C;|90;h7W9}BHH=Cf3uXrMP1Ch#Z7%^! z03HKBe)t+ofXJ|8xe^+-0XyH`mSmfC9OJ;WqdssV_wR$BW)>@Mct_T|$!ZO@q7jp{wS^t(Ncj;*n zrer^)02OpX3eF~^Sa`3VhXZ@Ps+ecT)K2~wYo+on(Lru()|rZl-i*#}u^Rn2(rNz` zyP{dpikq*31KPQ~6f#PqG4dAm{g+|Li(8kx%}S7Zow96wg}$E4dVf0gjK}C2H%SAA z?J)MIuaT}*zYbU~gPv88zQ-TWzGV9$&-);0EW~`JZ{oSXAs6TK?w^JL3BDH}LBZ+@ zHT-);+88*u);TR?!P@s5#rY>AFs*v{T`6gdgyeQFYSD!IO_(oT>V;M^A$zT$si8WE z8!R2RLNy8}A077>iv~jcWdpT8Lkv=F_U}6Tb6$d06?TM5r>o-o8>-=5P$_KlM#iY; z&R*kRz=6P7iD#}y3}wnssOR?Ms+T!dDuEgeA?`?JZ4TQZN31)wCqW3(h|8r4@r!{e zD9WJCq+X9)R(`~P{VB4|@U(;_UFslo^%!14Q05sujE@Gyjl+CEr({C8Lhb^^HRac= zIZ`1{TAc!$MIukEVaU#uq-NDWZqNyt>_|w}#=|-UDXsJ^!v{BNv)37Uf5hGe#5}pa zv^(R9eh|J1;%+W_;I+(vst-paf~XK#=sOf`V=~hXg&O@T3U@0M&tNR=Pfoh9$o;X* zqS3<$m$z0x8_LJmwj4s=wwhVV_&9LYg+g*KJ0NY|3wnhaYkja>^hMDCX;+^PH)p|7B#`-KBk$!vqV4yNbb^|mfG7vigo*ZXMre=84`$6e68Ym|jWMIUI1@2HXS4H-6 z3w~e}ibxc>W@dbfwfQ@=Y8P;zL}&6^`~!;w{C8khloV>E8pi><^c$#o+i6_D_?&}n@Gpkm}_9bN0eja zRO-CeFIk61Z^GDfT#Q1VH#0*lfJk)^c{jbIQsDPtp}b@8K80oU&@`e3lHE+bkkH6( z)QUy-As~`G>na#jSwW`Iwu?D)XN-r-EyevHnmsY zAaSz>m_)=(7J)C;Dgj=OaKCZmxM@^U@u=O=GH|ztRQneeNt;eECubK-=N@GYw{zO? z2xCZjFR>|^I^m%UhEy!3dx#5MeQWT(U#xmxCeL4D z89~3ge6~zi@O_7%Wi9l8A_-a!`NKRl-n;;RBPUh^XZL?sucOP@jpIc3#{o+yi zl^hGgRx@i$(YIRp|=ovKPHe|TJ%YHFpTDrWEJ*lbU4G3!vnNp>3|cP`rK z-qwUWy2_|ibm@FCXkrda+hYQqaaOGtMk)m(D7AYDXl#fi9*}fOgm+lxZ9xwLs#QS; z;#(aTDHx1&Z@-n&$&ccGa>Wmy=r~<5{_xu&#q=o3InTZPck&qUb#{MrXZ@PluJi(g zy8EHFQVqk*6lPF6IkMuxazr|aooPPh18Eg_5-02erNZz?ZzDad`~J#V=A{YfDmxt> z=l!47MF^_zjRD=7~nweo>n-_+9w8YhP8kS$mm#=X!~tjDk@?%2OHDS&eWD|)WT zNIFoKR&~Fj7hW|FttZDN9?$SmH#|3n>Rw%aO>{rkx>P8JYM3&KRbZS_;i=Nglurfd zj_}3My-_VtUZklJ>J0}5+P-pI<&+Gx2)IX&(kbC6*?hJZDtjbl~ zXX>06S2+BwAehxYUT5m3mp&@_U_MD_o|XFT&>iV^#)~q)bHi;j)9v_>(2tKwXnegU z!>2l3X!ccRC$zd;d{d5#f8@WOLR8bY-?4oNZ2|ul&f;D^Dx~qnVl|FNX|*nnuI-(Q zSl4v{AnEidV(KA8(eIxZ(lBBY>bY>iQ#~fLJ8~GRnHi% zBs7t4M=$*~qu0+fJrk`R9hyu(!ndH%g@01)7SY>ydywK76b({GRJB)>Rrh`hG3?`V z!Q^Ko->!V%?0G63ACuP}PQOxE7ET{7ny2nMC%5YBf?D()^RwikRRwbs3&42>6ROyk zMkc->UzKe4XK6wzy(J^&8ptaww~Wuq|J2S2Uf&G|D_;@FE2a*WI2#@#LhWAk4YCheyr=pYYhu(%72uu^64`oMWhW?$_`;7N#VdqS|)E|Qux~Ap^_j^bL z<)NplH67T}eokIHDa?9$m~%2N<9#3+wQ!4eE+;GOl6u6o=inrrR9l}UT~u2jgT4fw zd_MCUNg#jh(m6_KT7RMZUFo9IJImcp@jxPPWVM%WBj_(0LlXJoDR~P5};Q0T?e5HWTZ{;s7mVD!7fYLlxJ56yhsj}URGkR zNiDFn`FKX8Lk`-c$Ms`mL1Y|ue23S@*w&QPd{&Y;V)HgxoD;=kX^P+TMC!bO;AU|6 z`psnk4f8_s{0?E`Ak`+}u@tt0hw?Y$QB|b-%=7hDvn?bhslLqW>g*tA!%QVJSIqNK zp&ne=vSkz%$H2%dpGl3eGtDU($~rOL7rSh^cqzB@kML3H9USDQY~G(ExB0U46`h4s zlx%XH*j6KagkIMCw1aoWz^Uk<0rVeBV?()?96s}G!LJIp(als;Q=SznY7~sLaj8I@ zPNxJqn2$$MYUFjN)Y?F4NLMO)ai`tz9$F`48Mx60r~dJL+p8|AuiDyd%h zbF5^{>oq^0+8{p~_2KlA+&1@K+ODjQRg&XUBD<>hz4qD^bPPEwCK>sc1+CM$5ZQUUIv^RnY)KCCZqIxuuoW7^jbK-$iqP!@u2}9!jHL z;Z15&T-T&m;grDpwA3`dcQuun=^uB&xun_wbn9qcQ1NJ+Ux0bj*k)Zi<9KkDy*lOe z^r$<9xhR@Aze5?KpO1A;z-QU3xrImlmZZnNV1mXtvp_$ap0Me zmDl@6Sy*7KUCt3LH^uQR9wj+l=($*Sm5&Padut*U6{G{R9`#c1A{3j}kEAlOp0lbQ zz)68WqHnvj_6A!Q@N{|!&g;CDA;@{DP>XU?(Cy;mJtt-LF{8P;+9&|JSdAf1 z6J@K{UVBnhE7`(b8J@~8o2e7!d8WGA{mBjZ3pb*X(rl&P%H)^dQ!3eW>X(>#DG#gB z{4Mn`!i!8y%=(q^CaBM1@;&PK{g;z`sdNQ=M#3)7C1V&2OrT`ZcUPe*wX)e9D$kss zXR=fcozlOKsi`!gZ2#CD%TleV!Ka{*$rc!Ir$Be`d_PZo37FeS$e`y+PICUz`o6Cf`^KqUkPPncke)1!LMRi)$x>3_LYrqElFHr`aa zjEFv0x0-a<77m$%$ri({VaeTd{6k2#JPO>OYimu1cv;7W#Cmnv84L0Z>X!)+AY> z{b2+s`3;uplq}e!FpiCFQOl*h+*A%8VFOc}Hla>Db1?2Mni~>*iP-t%xSViu)nl*T zyJE!#;5Jtz2fh#cf88UOsD?q?{rb9|xqmbGVhy!IoH^{cm5?S0VH7TzT>n+eZN@~d zZ)ACYJSiNO!RTBO3|KUH!*4QiSgDC`nNZZbqCdiVMm4Q~IT>_LXNI#2ijC*~3VbKW zALuMn>{dlV4Ous`Pw@cpsIg>+5#WDyfAWjNPaQ8{8X56f3|+}bIr#da5OZ$B_%Y`= z@EhD~v-Vnpz`)l4ztvriuI)eMbskJM8z4);Jo*R(d5dtfA{#R^NP!t z+L8TN##ehP$@{oa2JHiv1Xw9x1wWNKpEldA?d5OO)dy)%kK=pWSpPL`cjxX9B0Nrh z05{^6VIXi|pI-x_F@MiI@Mk_+!{fBcNg-a@mp|pkRt{b=!Ynuw7Jm@nD=6}ppQ;VQ zY<>Z^K|jxn#p^R-u1n>m%?Kd^CpS%#03w0<%?sQ{LK`+`D~qOTfPp`E7o4}@E*`8p zD`>DpSK#!N$N)vBx_#)?7;e-hf=q(v!`zTh4lFth+ukFuSDC^jraD`K|Bplr^vH~$mI!J=><$ z(MEs!eEaiGRw7^>O58$(XgqPt6k#1yk!~|{L4p+vV`@Gvh6BMvL)4-~`aEkRp5@@) zaF3@P49uybBtznxv(j-Ua6ae&l;70bK{^~bP4N?}yJP%sJWx_#1Tn+>=s=I{Ftx$q zkNrU|@VNTWgW|~-n;4|M)-KZwHuu9c$D)HrLe&aWt(SH0VCfFGFtMJ@W}oN*PISUW z?iI)xIYa6_YZP9cPrFVA<67^rCinW=Cs0pTi3)WnP)i7r#w)$w2bHt|r*nYAGpr3{ zB?Luel#g9|bq{D@ULYw~&uBMF&LR&t7+5l`x~2Z1X_CaT;n&cL0e_E{d`#5KDD`xa zV||`4yS8Cd(mmoRcU<;%#2Xmv=Vt-2yis36W-E`KU>kU6(&At88eSHvh{%E@0>Y~H zua*fBT`wJppvQx>oI~>S#}+1hMQwO8go9lR#r?Q~{Bql_sM>31z8O`DN{*BZMrhRy zj_^cBkD{^|sb-jmSa3;CGE-><&h!kcv!))2XCaw^ReqIC^!Q$8ihUy(TtyHsez8q4 za4_Bb8Hwc|(*15ZRT(I>Pk5$DlyRf?_G|+b;XnHCBe_zD5LwJzgABX!uwvY)nWJT4 zb`V%4gs3Gl%{kQ&j|DtOz4&x*TkCfE_gypqwDl|KM+7gYFi78D91XnKVOSmZT%)ED z9u#drO>5 zdI1eqr@4?Mm2pHhL4KPTkB?Qcf(~Q4_0ene8zQZlre84;{`yAvX2NX(Mn;z>d0!A~ z6nPS)2Z+VXoQiC<;=<-r2!z0R(@Zx5(M&FYyH-@22nFNR*}En#l0d|=iHxqdOw!M~ zCSaozBl)Tw@*`jyF0#x7g0I`I&LqpdH#+t?GU&_Ax%98_Sy>plh$nVeU~$&lIn=x8#0!$e zG6~kD-%AJp-F5hl$70|%=diDQHn_Pe->VFgsY8o*3*h0O>fpzU2^V^c|l1@o!0f{jpr8x3Ybu=_38txR0h}SxF8$OKDJ@uCD6SLK=oQ!b zlfC&?xK(k^Gs+N@qlH^Hvvdi?JIYR4d$0p_G(DT-pXE10e#(v42dz(N0)Ydr0r|eH z;Fl~&3F8QUzRZTImB=(`^$7J70|CSuHxogw7z&XZ{9x8NhyZ`6ZI69mj;Je&6JFI2Rz z6Jf4e(;S98ADTNCzPf-U1xEOpDkyC_z0fv*%$%S6-u`-Q;3>{iYuGT zmw6xZ7e(VAz~}NKy?jzy)AnnpKys&!Z5sNm^hMS+k-eu=%YE8%oVk-+NBs-c&3epHE*}g zV?ZWnxIti`0V#TbsKmGU?4HTN8fXhbv+LPQsq2MnT)K^ zVYafvTohV8KQ8&qnRe%+RXNq@ZqVSEPbP5Iy6;saK#y~dDzESAohL@|3cr4H4~BET zaPa6bZ;SOrA+|{!y}WkntRSbbLBKKs(TffysWJo5Z@5pi*U>pU;=xGKaiq8KC zQw3VVJJ-(h4x56>j$8z~0_1VHT(Vxz)a94~3|=verMPS_JCX&$mOQCMC5sq1Fgt|p(y(zO z<4=#lo;=0^ai~{BQOFP#=!%wVW=s|;m(YC$FlgIPSDNY^izXE=N~-`bdPg&_-)f^> zcwd0X_>62s8FFi3S^b&(DTWDNrGCX%XRGD^knj)DH6Y!`Zm+G<${Mq2=TOeWv7(-u z39kDcr)s?2=qhI~MjR;CYDHEDgmHjqKp|7<=YE;JA?9Iifu>96HuiN>-5oNk(DOAQ z3cDGvqw#jz7DZu`tAbv zB3zL)C{QB=D_w;g0hDy~u|`#{F|`Y)Et< z_tH#JCEe4ejHE%VP@=$vSdtPlFI6BEQO9<8;Db}+*a{5c(uR5w+;Xu(qnRI$A+)}s z7J?ZF;!(5v=Ep@pcL3P6+_1`u|HRZi!&Z44rmYr2l#o(5<&KeQ^UIn2h{629)M`t4 zn{MaMGY%PAzG1LnVeEai2C6((Y^;MkjcO0qfx5Gt3%g^$vi^ptgc1_svn`+sK37?p z;dvO)qKgG;)PWGyOe+KSwUQ0gBmVd+W>73QmdpAN%p(IzSi1dW3@B%ON* zxZ)0*r`b$7{h3)EQctQ8f1Lzw4Ks**9QygtnsO^Uz`<>uBOX}G!hLuiG?o57Dcv1< za)=}kt^Ph{e1jlU2FK{az)T3K+No(XwL`P`dmd`dQL`I!|&P@Gw0P~x|GVhQ5?7Vg};nxGk1gy@Veey z7v&%OJ3SOZg;2kCV#`wQn6T@HQxDa{ahFg-%ZE&mc9w~oQ4Ocy?g(A6f&C)v@gFD3 z+bNdnTZtBry)!{<#f-F1O5>DG#ZMEZeNli7{D!&T?(P=Oj6_UV5pJ*B>v5nwkwu@i zR{jx`s3;^4CGABq9G##Tc+K(U2OfwpdNdRXFCd3yDYgNY-8Fu28y-=Q2QKluU9C!^ zhHRXY`bgc3Eu;TTcj3rp7lmns2RYzsC$0TUayVLN%%y}sS`$$*X0=4~9^>2wPEE#G zxU8s6$Jr&J`g2ZlCUm=L&`EJvj9tKX*Ld+H7m$>I%T&>SWp^{q?)uozzmJO5pvnm2 zqGUNA7f}tR-8ix?&0A0VwW@((4yRh$EIJLb^Vc2$a$!I)GPE7s~$c%hQY2ZO`F~_o3YrHtm&MXglf@SV>h`-Clu>pp0klO9VOrQUw zb5PMivVyq83~mfbHpInNA1Q)I&lXt;On2i2>9R3Z{v?S=tql@Z>@$daseth10>I%B zsva1OlJ2fqQ`Ej4vAIH>z-svq3Z!dGt|d}JdWGSjirGelHk#+B6f`DH%x{Q~o@kpPVqFrtopEY_mQ!v>a^GTb1L!OT4KV^at;9MlX;3xzel1G% zx^)N?jaGomX(LFR6ijX$DL>E6ZSZ9@g;|?tDNH=vy|?A8EXc@PNp8%15>d%>$@Q zbPFIf;ls3vw%~{K>&vQrg$g^)gHqcC>utE$=Qf0sH*w?SPYtw-x8MC+Jjhc6Xk5Cs zYi6E2vwt9hMFa}=51_NJ5==98QGC8#7}oWm#vlBor8PDOG)t@q5$Pz_2V}Ak(VqeY(6Rav{d+ROI@RU_Oe5LIS9+Pyvcs8{@e;w^FsU?_<7 zBQ3<+K;vdhTqYLg6_`;10YT!L90Qc)6w^!7LYU4f@fUY!n|gedZU{9Q5JEmUS@c+n zoxMaUP?h}sIJTm<-|4AJ{mWKB_phVQYS8=!saK5SSACTCMM2ZG4|*_^ zTi;45NM~kc#D7i;YHpg9p2L(z3RQ){yhF%gdUxGuDs1yAtm%Nt#re=e%`igv+j(b^ z*4lZ=*1eo7U0V3=N!byfJ0GfIYwNcFBFoR4PkHdH+0E=+gAMeB%1r3wHH*>QzGbF6 zD@NBE!0-rvPyGqG3az$CM+SMbGRKjD)>1c?#cu}H?EWA#Oh>IcS=FVI| zYHUv`f$djpcwJWX7S3*aiQg*TR3d57&5=Ph(`H7ODh9p!=@VQ5M#cv#3ri}2k}mKI zswk;~mHjz1g~^79c_sIBR|iFv^(W4XpJ;(xFIEgB^CXJ6-iVBnyxXjNk{*`W<;+$% z)8+)1r_By%X|-0DGcjF2QO5fl*cwI%%d@5i;bub)YWbO8U-{z=CSw<@6XKp)I8~h??pCIleXRqQk2m>q+aj>9hD!K54Ww@}tDTRV7l#m~}T2h@t36QC)nW7HJ ztL?MDYZu;7=-!>rjhHCN)XoK5VZ1IOqJg(^l$7?Ce-(UzbRpr7)zkziND!+DWE}PQ zG9z&9I+P2?Ms(cX&-WeC>iAF;wm*+th0o&=YBmi-EwmuFbHU6U4e@`Ys!$VYtRZZ$ zR4eV_3(+UWp*IB|WW{3sSR^7It%ef4W!1wTF`@qRn}Ln~03wH%-6&F!zfDem!#PwV zW%?|XQa&bdPQ&y02ro><2F%~4d^AH62_1j%mR{ z`8ClfJdZ`FT;T3+rI%mg)VI5YGV9$~H;8<{$pM>|ROYWh`!;387+Cpp*z2jP5UkWD z`)Jq_S7vbypRzH|@@i>lx;gG5___O!w zlYCuMg*si_3XfUN^rDB!aR-og21WFu@RB`gbqa-~mWI^T4CwUkOp@re3j>}rq2Oce zN9bz$cC1JNo3Isq+|Qh0HMxcL7J+VmtPWFaa5})&2?!YC=p!z827VRab#x?g_NcA^ znyYh?fP?#K6R}#^E&Sfo49mu~(qgG|FqIQa0#RX#QgO^vKJ02WPis4sTTDwJuY9kM zOnx=Fq;u4Xv5yry7bZVD%G&N!IR@Jqb9U;{_}e45twNZ=92k|I+`f~IxS7FjzDgmC z=qxyJa4Zs(=q%$H@+=Lr<(=9yR*K9&)hY%KtcDmAV5$n=-HdQ_e_*FiYKlUAW*?)d z!MAUy6!jJ@R)@Wen2OrFQosLZxWDBn1UsA^#A(nN)R#7tjCywV@wu-tDot%w%Ek$i zH2SOduLcO+qt^wY)oX^Z|)`G*&fnd>BJ_qeO#>bbe%jj`F(#e&)_QQ z(Th1szkwh=vfpB{vE)>+N(>5k`+Pmw5)wM2gJbQU9(*OsmHvA|1ADS@vuGa2h$)0B z2(6@ZUn?ig&wib?{9%c90-r!n3$p=2$+`+H;C(AP?$Y6m7hHDMSrmN-q(fuuLv4OBIE8dVkc?18` zlk@3f{^mTZI>^{=`Eozey(a7;#`-a}r+*A@ z3JLFV(48j}G9}Yd_o&lof&ExspJxW*!h%a`TAL?ROEoKGZ(WV$Of@id!&xXD^+_ll z4Ou_Efkfo7J^UwMLitZ5I^2dUxb_4Oq39r9+|OQdKYP^xJzI$Khh!QlW-I^~OOb=(#nvJD8+T-^vM@UR(74=yGCArnuP33QrSJTGO zSTcc+!86)G^q61wQ$yN2aJtNxj=>e3B_T7UST8?)K!*e5J)+H^CpY$>F;LlG0DuH0 zO0ipOkzn>dbes_%$|6Y_I+$~`^=I_GHdY?zA4?VP@(ntnyo8SW)j`0Va8guePd=)V z@14T;*wpVR4_;%KVtXLY@N%cvsSWVcW9MVb^+BfYw^=|;JZp|&M`km8H91oXx6^m2 z?}1pU8O?nSu&N~<5*U7+2yC}=3;CJsEX!`H0d)Bq1w7=A{W)zEfcOMXrVPdqXTIgr z{JpcOwuH1Ikf+7pdQ5`oqdiMYDmA8jw}U`vPs77r5f3Ekqa@TbXf0kwN4c;=lPQg! z8)h|*%`9$4#~E=l322#plWssGCSpV_4-nLntY>uMJT&mgq#EGpX}WJ>Dp|}oF`*q_ zp1#VEo|+C#o`#~accV%suoM-UlDca2uNo@kdoZaX%M{@t$u#}wCwtm$M^*It==e%?cS6x$|J?PLhPp#YW zPoFu@Ujhhha0gZdH9#2ggM3~F862V4j2wljDV?}nH@T@P1N@};@KrmUN_iU*+s`?r zg7HBhy4a53|4u zxS7E(PB(W*xw72zQ@HhEGBU4B6`GZv` zxgM!)v=eu<{iw7d6GQEBL!J%VU$g+}TUasrdBbw<6G#nHzQggm^Y|!@-s|+iir-9k z;0sZX&aSdd#|gMz-4n?J(nv#Yt;L&CG7{3G4)ZL_%+>oI2;efIBWJ@9N4M_3#`5Nl z;;Y-zP#=B~ri~6|VRZyrflsfEDL&-TY(P#6Dn(^Ts+^rrU|2F7`jKKf8b%@a|2EUk zLX(X1d?kWxJ;;s3LIVHh$aDsy6P^aYqmlOR%2)D&D|ikcjgsa0b+y=&2&=A16yXq@ z_p75m-PeXvq-(edtGs5vXQ?`wyjqkDu{hgMNbS{BURW_xJ)2QXJ&aY*?2M7UyK6EA_ZZUbYBcwp+$p+#&6_Wj$$#cU&> zJ0=HjSJT2ctn0>ZIZ&X4QMv~&&O{GEy@66~MZ#HHb9|*ZnzH>s7vt$T-iBY8PIGw~ z!SnY4tn$4DrT(EVg*H89XE(owm8LwHU~7wU6v$s+7A8Uu(8&99q{oV&f{Ohjo>jx>Q0);pbGS$d&bsd0Ixo#N{~yD=e_ z>kW#x1&Ok3ca|r8BBNPHj@R>PcnBSY4x_YC1(S_R*Y4*yxBJE}iq++(G-;{f#F1M4 zdKpKQ4;hKe4{0meQ0(iKC$`6;r=hfSCeFJEzo zi&?~ox6aBRfuk>#KSALhz#IIp&nMt~JA~VB%DUrw3e+`I_9N3-hoo4$E=1(eA$T9_ zNlESZjHRo~QorlT0ACP(v` z9ZGDzK&nS~{4Y_rG6cWLr4$_&_9qCEI1(8thY$El1UWUn0;VqS98$nP69vQg5*b;1 z+&Y{!Wz4ou(vD`!CMtph%F&}evS}(+Khp$v%OuRlQc+#dRrN`p9SpzsQC$HnNjH@X za+iN_Q!HUThw&w8hKDbT5n#+a{V)$K2dQ{J+znSZd@v`eGPsrm|>NxXLQmX%fUT zxL|kQ4Ms<_>dmxM#O|4=f+nhLI^N8EW2j;1*X!Z(k3n`;Qy77F1WwCC?~!#@6WWdK zH7QmgVlu6LIX2JzGfn<%<~|+{PRgYIj^vf&V}tbezZYQgs>mgjy=pz=*n{%(%0)AS^4z`Ai^XNnTQuB3d?ksh}jt+ zBFy@9TM?VLwyKXY0m%#Q+=z*cRLC2GUGezE*UM>yYI>0i#%%=Eb`#n`Rufw$6NJMZ5-HkTn{N_lFi$`3{@RqJ5^?2Qw64xm) z+iFJErM@p$?_Di@p-`Ru`0xvSJ1Ew;0R~JJ(l%1KI&+9c#TCg8u_9hbw_Y|bKG+{2 z@ZKw&Jmm6i#ifveunpzo#+|g7E&I|SrxGi_p=pn_C)%xJKVTxjyr7aP@f6bbpZ+y9~_Hz*B=; zpTHbhDDu6LIc^BDdyBwukOwwx^e4PR-qdo4;CDSSqX=*<3XxCaoEq02f~V2gr$XAX z9p>pvfVII)TNZN1M0TQOKt>qQ&@)oOHpN?uV*lYk4NH9udE-t*N42L$6-7+fEo1_X zA0QUe%L>mY>-GiKi>VB9LI#Ep-pwtuiYA1?kRK3c1B$7mbx5^T| zf=r$QdFkJvVT458uD=6ahpy$&?F^R%wAz~qpYxnW%0Ry^fFE{JF;$I43G0tJ=8Y9XW`fIGMhkrTwZ|B?i7LwBYiDH-_ub3M+m`VrOq0MRBw!u{w7< zS;-1hHV-T@DKq*`A|z!FED7;?h6N|!g%k6tACHp=F~3^y(g%-~yZ5_R?M!yVH|opm zQ%6WFdJpiwtr?yOojxxg{C@1HzZ!l843l6r?Qf?ZJ3=$)_}pPOSA!yTgDbTA*1JEA zaR`Cx@U)F)Bv>Q0qhJ8OxZP8y*(;+dptVR>S2oc?gP#>eQe4>&Se|)ZQeXOGsLxTE z)(0CVFCUoL2=#{g6PM^aw^d)?Y>YuKWyPW(km%XKZWzTFJdA2-n?GjK8t}EnA`OQe zfu7W`LAXl~p>QD9!VKO>m@D%$(V!psIC+=j)C zpN`O1aC5T162sDl>jL}PSDI3j67J7agKIGl`0MP|kiH-AKJH#lN*K_Z$J91}(GPt= zWhzvyX8k9)557pyH*$Wwzt8MJlr&=6t!oUSKpgS&o)&F?G znUWVWii}8{oN%Z&t_Uw$+&nF9Za`+wULkL`j=yAqiO(N@8tvx77AtoyrqQHfFv(@# z*V9zNzIX1;^oz=fJ}9z(dea;o(p^30W_!|#*IRV>nL_{&_0~tP_1EzU%Ik;V6|xIZma6= z(W#Yq$n|dViHK{eKU?8-@N4!LfxQOEuiT)g5smu*&uNikjRIzDlGePi8+Gak;hY{n z+WUn`OrTc2>WTtsB{bE|DIO zR$=JXQ2_LC49IEj2yvWE$#Lu&!a4F(b%e}0s-QmMwVxs0Nt(|<**tw7`e^z=X zo6_#6^qftW{by~C#cTS+D{UC;79zj4Z02^aV(ZhRt+-b^;MIOanzDK-lKWi)p$nVVamF zJv=rV0psVJ!~BYbR-%B!jX?y3datnW&j0#!zGtZ8i*P^*P0we_5vv<=C|lTLMrl?o zwd^uiuD}x}e|dj{WQmqbTj|1I?F(2kl_qg+B?W)CJ$^fe;H)XhSr=1|dQ`H3k@D@S z=!-OtHb*Kqm&sPzfjeM9))gn3oUP850*aG#=IUA0mrCdBs}S3ar4e@A`i_25C@qJN zWB&uv`P-NI#BE^yA-Whl8+|e~RN`_fMB?VQj!uq74i#aVgC2-{y{gw zFn#;R#`MoY{swzK2l-o*`8OH<-;hOCB9?y=@GRemSpF9Q&rZbpPXeBmnTYkj2>AaU zV*H2V^S3uIY0X6RiOBz@$^S=2Bimn?&_Cz)4=J97iQ_*u8W%Mr8~!RW^l3C=lrtBE z2Wu&Du9(QvNVa9w=Q?6f`^N^59V!+H#j*H&+@HXc73Ys68!?cih=G~k-8i3}l`?jF zRm^28*{7FyJUXo%c%)K_W~pnP=fqr+@T>0WirV-p%x1p#kx4GRwp*K+@SdIPD4gW3$BnO^O zwDB!^zq@RDpJquLyiK>pJUi*;dvd7)&69V?ZJaFUub4L`gPYXH^O+wjGe7gywIx3v!MoW{0a4g(XrkJXQ9 zVKN09$Q>gs-57@c%JO!XD%|qAd~(|~xw6_5zq910(2JbFBK_x#=bwo3LDRzXzxkE7 z-zYohQf+0Mm-LEdv(kCC@SQN$MP_+@<&uzhy;4U^V)pXRsKVhyP>zb3M4p8%Z;xVr zUdjp=+gl{9RgL}$*e43gKRNxuaZ6LNTro$-pj72*l7(K&O-MPbW!7S^LDj%rDeK=sF!_vl(Xp^=Zir zD*$WVup>+K#ta2*0IO=r3`?S2Q)u)YiFB}7pWLV51ua3a`NR2v--ZTzlv(-kj~0wa ze1F$)z~eIYuWwBh@NdB8e!nJ@@rWsmTX>Hr6D12ojNbXRynNNZ(tSoa zINz=^Ei!xI=R^GjJDfg(vchK34|HcBoOK!OvDdmUr?7x3(0$s&c9Zmj0tls`WNtZt z01oA_4Xy$K``iBPRWu~hX{?@LYC!}n`~il`=C`~$2ocDcMR}S1-}F*|Mw0CCsDRc) z|5bwTDUQC<1LIgxjGa@Sd=NS@2wZzOXu%>DMI7zeT8pHS_(Ez{NmIWM>!)xFQ_pH=>|VS{j94%)B}|;dIP|m7nhW|zv^nME*4Q0VdaFXYvuLHd#4as0K5W2 zzR5NFkNhYl9Wt}j0K>+2&Wzg|;DZQbVHHs%bqrSGa@d0qD>cZPUT_;^7xjnP4}M}t zB72&_J6e2_RhQriGQ=-m%O8z`RGVL*iiVwDLN~&;n)Zw0M5gn4U&J4v14A{I|B7=W z8!N$%cX_Ec_b$>_kvb6l=w)!6fEAK;l*8)Psm%-WE5LeyEakBDS_oV>M04wQ*OMdK zku8&>zqEvu3?dLVuH@iXyjsT;{E?asYFf~xTbq%S#%^>RmWJpT6Z_cDbVMSoKVX&4i@5ssXNq&m%>oaajAysT#IbE(wo;#^;%w!=y8S* z5JY~g$>V2?jSBPfldz9r&uMjE?ZTF5tswbxw|zyxmz>N3#P?a=!gif$w4-|_g`BX0 z7yi(ThdG zvji}IyWQt7wtLK`@w?)6O~FI+ywWwa4nj(h;gREgsK>fJzF)M51KEoG^AdAK0DtH3 z5aDj8%LqptXSIQ`4NHuS^eg<_G3b2p_DhIsW;ifqBc3ud5eYeCpI8I4lZREMX#kF3(ojv%WHe?+eI{upUHvv4qPjGZ9{;QQG`O+&)xms2KAKW5QbLG?04%Ok z3O+bL!JieP&7lg{ClY0)s*OGvA!Fqyx`MHw6glhi4M ziy9`LkpqbIlRA#kFJd*BHvBos+*< zvC?TGhx=%MN|Yxe6&}PbCOp5oa}YfLz9Y8+jh5A-^ufES5N}~O{egzL$aZ6lvg&5{ z=P=?fB5M`N7<$TepN=%#$Bv--AYDL7c=aA=qqX2gn^fm)VE;fOx|yt~P@KZpw%|s+ z7H4JRQPu@?X1gU zZc!i8f+U(}<%j#n86;-#mzY~P6sBz4$Fo2ta)Ckmij0c^n#p*-O%TtZw{31x0?}#N*-wt&ZAR?DLG4kzI`JJi`h2d4gXnq`FNjlI zY7lG{z~r=XT@v@)?tC`yk=1m%exOS-(P5qHPk3lU?9^dnCr;9zJ8DJuWtd>WPD);* zSKapA1R1zmP{eZ=Marr6Inr|$R43p2pD(&u<49xRAn+RAF+6*sgyYt{ab8|E_P5#( z_?c|nCC$KWhJEk&ey94LU{u6OcxRnnjjYiW%=-B$bvh1ByuI_g!UgZgc57Ir(!K|m z7Swn~Y}{?-ohy#%`G7*Ubs* zkq45T(gJy{B0u=0MG54o&s(vQzi@FT&V6Pe+G>)C-o3L{rnI*sRxa%(Yxaeh6FTj6 z{QPCM4Vkf(WQ9>t0LOOQF*jE!RBJmQe3N9{321gxs)c@0lNQyZ|HFyxs3tHyj^!Y~ zdK3Y5zSLfYx=JT^Be3G+leErGj5QJ8I(6mthdEq1`8_tGSS|e5=1?1BxA)6#k7I37+W!ps z{-a1v3&{ z5DEMWBya1IV3V)htN45Uq+{3Gg<7$0@(G1x^lGKcWNBGlVpXY&-5JM3v*IHD5)IC< z3)h28K6;`U>P&3P$kde4;&nS%Mu19Jc+PTrP*?9$^m7QdYxZ_($yWT>5-_%u>}(~; zy%E;I6Aj?1?0KrM6Grg-HEr6+x(jOacG<@k_v}Zh%|*A%IF8Dc$njPo)B+V{B_^7;O`dx3oZCzlqsnJZx;CTqLd5z9NV^w zEEBhNRo732$Ge!>=CoPoY4wPwKBDO6(=D{`p&hO+=4B`5f^9OG4wUPIuLfk7d9`&r zL$5iWfsrObu2iI2-bS0sv^3j8Vy1!`a>npe>)~T~ie+D)zfBazF5S!-c@puDvj$2A zEW159Kjv*SoJdtQQYU(uM9Dd1n^v^@s`FOO6@52pBTt!Ns^p{R4!(ML)UENsCg9_# zii~DF=zkc{y3K3_ndKO^Z za!|G%VpPFyrauSaxBHG`Myal$r6l;Cp8=C9ZzawCy7mruGqT*(nF!w=xOnTlDrz6Z z;k2DFfeKx?13Hf1&tud$Pvk58eZxdWl=i@~Sq~YB-@W#7aV3_9UlQSwO{17|=$?u+ z$e)locKn&rX}`dL(D&OWFcMHI5lH|+n}+J6S_87SQ4yNXX;^odDddxuICUtb?J{@u zo)mEs7!MkA_J>~M9r{rVlEkV%K+FVUY(n^oMp7`+;2s3ZZ$0G#_fNQ)5I-~2%L-N! zNG^Hyt>fZO&H0tCu8p~1?nP{@*T}_Mg^D8zaXDtb|GHAqmd>=EHYG@Fz|NAeG`Sq) z>xQUh$R{!_{&F+jriE#~pmuGUP&o=?@D=S)!BP{(t(s2F!{K1}8Xjp2P|rLnNg*4F zYm5&qjZK9(mI;fD4PsFmuLP;u6GDweeFwjOT7AtmjZUK z@7C~Joc|ewf*4V{A`(ebuTxUZZ-elHP+?4;rg$U!D^{)PmmQh8SawL}FOV35DJiYu zP-7s}-=uaZDrap7nQ_%^p^3TBzG30V{Xi^QA7L^_iK73_YeSl6iDsz(`3?pMvTy-9VHT)6jI^jpKVo(Y(vfrEV4oQo{gL;3v{T zu8Rc(o45(KQLj-`g-r(d6Bu+M*AUxEL9-?`1>d?y&jIN=39qPiYbW}cQE zLFi=`uLg~+g#be!BuB6GyBV*M$gthu#OY^XfAN8=a#l93bPw1&Nzj$Er>xvo+1jAuPe{aVHu`4v5{Bk^M)J#nfXnoDPAqa1xCuN2&f5fo^CYqT+UCE#88=D4daj z8Ng`x`e^^ynka@ym2Bx&n|069NnYZ}7R^8UV#&;(&S*D}GEUoQmlK4xfw2{AIRD~7 z@%4G8uC9X&kx?V9Amx?wcl~I4{<<)HdkpM+8#hl+u?VwddGSlMzVlmGsqbDmp zFHTx+Jy=N`$|p79knT>M2Q_t?KqIO?F{{slm{-1*II+8Z@+z#26=s2Es+2>;>D^1`aE^T&fRBqcB+*9E(9(ut-JMU0T zEUVywlw6y>K72Jd&)a`#@Q)+>{2%Z9uSdRrF2$eULf`)Q^0~O{HuNOP3_|U__%I~^*FVRe$klVs!`rYy-!-EyD8T^wUlUR zpFT_H$9iSU0Tpx4mYed5uJ7IXCa_HLXGwgMD~O;5Wg)fEwx(_U{_*D2xcRQ^tlUuaqFgw))P zjAv%4g6{@8eH`-x|7@|mvo`9eiH2K6_r_(%DSap~JWfL!OCmlrw(;ISWjGd+dVoYyvvDCgS*q3BWjaK^f zt_w1Wu+wgg68m_6k&rtQD;NK;Nb4k)rn6lm$x9Scl$nAYgbj=i-UOl^kTxA==mi^>Gi_ZJGvXaJ-{oOrywoZMjVh*_C$|6%FZLMsh%IL}IZ zz;Hs##b4f!xsK|)BJNn$qvoLvz3| zByE=7Q5c@#)knaM!tizQ`&}NBjyf=#-XU2Ofw6wgYK#J#q#!U;pfSGl{Z&|wofE2l zHBLk0;7RMHZwH+**{7NuRC(`G8O=Go^mPz9^l7UOKbWTfiW%K6yOjWte(b;STw)pAel z;PXkjr-CfvX|^0^(IdgT7q{k|nI-(e>`&2HoJJsr>e1RL#Eq9zzBZOFJzZ zdi-P~gGMVR0&|bmk;*SfvL?dq-y#W^i?>_f@owt- zcWCMN&}UKXlIbbX@O4+&M+ol*pZzEU90`aL>b|&AL5ooB4VK4$yrj)NnniB|zpnYc zqLl{EkQDEgt=S$gqJa<{$7d_#$C(ii7TF+OF~jb!Ac$a_L}e85AQH`~z40DOsz}c< z2L%X1luGHDd>WZbpC{C2e<9U#@5@fhb#WSRWl<8JAc-peBscMOn!2lHdvr%NAlMj& zmG+$_>7>@hDO>l5@AWY=3ed=MnP0pP_5m zsVm6{ZWRi$87pYg!S9L$T4yQI?|3nT$3UmO^v(J}PmZ06=r{;Y;Db?N1oRs?yJjki5e=WB;X350&i#`$4GH0MlzlLY^8 zhn+=Eq7^~xk=_uDd}D`Fg8t5B{YK9A68*`}wu^_k68yEHeQkX2^0~@Q_l~5*dlDSfk$e#r!0K)#Hcc zJ=PTx3bjtX?el0tc>=5LYO{t#*&pNR;GBkrh+`66=|-P>wy&sn;8t`($VKE*(?~og z)gOy0sQdO6!nH2Wu+emFl^MCQyz3r zYQz(?c*|=OEi7IHK?k*GP&+};A{D*dt(+65&srld!;=ziUccAT0w2W?6ui}Qfw6i1-C`g=VIHFmeLzJ-!^*{Q78A8y@J6Xk6hz8n{+>P5f z0Op>C>w=oLk|nYuM0=4aI_I_V7Oo{3v1Yw`IY*p+*#umn{jeTFsZU@|KkaAoddS9u z>J2f`$O-k_{TfR0JIm4T%Q*)Vf{tFQthaHlT=#b;$pK()^d4Q8TtJ&i-H*!2colO? zon7B{s8hMRMCb(S)!F+Zbg&83KE-$r!zlcFjSw|&Fw6dvJ02uB{~u}Z9Nf#-t^3C2itS{@=8CgouVBUb#Ymj-YIZf|>>khO8GV&8_(0s|1IrfL_NuK^7(uNF^gp9kRBh+eBc&5x zQDpg#0p3FJ;;@`hT#sd#(?GJ~W5t{cJ;~RzBNXOBeT7+=EcU%nYMCn25wz;Kb3)g+ z>9VTk0@&_3@6;Dz-WuMdFQnDMEZ=12GMQ>`zVQ9%4$2_oRBHQg!u_%*WVH_GfqX( z_%l^&CIS-2^RBUjC`?VuSav>b?LJ|(!0yz*Zz-_ zEpFECPhaq5OwEQ*F9^D+K#8A@Ulq}r1*)F?pojyB`T;uhHw(Q%s9KP6D zIuJSB0UstRuxu|!$Og`@2&r2QS3gBRcQTO~k!(0IXg@H?#RhvK7kZYYG0=Auq>5&= z<9$KQ&uCM1)t!4*#cV-!t^K(CvQQaK?LA*CUG2{0f)pO!ykVpweFKtV=hBUOi?syw zU_)x`PZouYSf`Lw_uy%|(A1~z&`+z+Cq}rf8KzYF^P$zRe_M+b1r{j8#t!m0?+>Ru zfYHk4yPJh!&eJGnJyjFf=_M95{N2DnK$~=*07?|RTsjeVw8OzfKpS)|AgJfwgGMs- zCy^t;^TaM$R?w=`rp+#LZzx3^%sCoh%%;Rv1jX&LfpZOgJ)yq@@Hhr|YLQ7t=4*zL z4rLz=WS_=5?TJCDBBzS#3d-&jw}zu{(gtLLo5of`1!eZ8R3%I+7$*n#&`7$Br|c}( z0fM=U+J$GjLv^PJLHjjvb*Di3o=JVFm+Q|SqiiwTv}m^(Pi=;e`Z-?VWU^&npzhsv zt3ZtGrT=0L6cv?V-8$#VGB!RMEP43pj8VCEb{mPDSIMV>NHN7GdiJ2$TtcX*v48lL zcY01{3wX=?0@VtlRiG%#I}_Cw=;^X6?Gqxyi$sX*-StN*r10_dq2p^3s@~=({xFsQ z$l#v$qhsNE{%x%oFF6MVtq2pTL5L}$ohaM}6InA;iJtq@ndJq?SIcxj8<&Pe9Gly* z+S_xS6nmAj=NqTKPEM&5O_7a{b41_-_0y(lmUik50&* z=@<<_jO0q)e9je*%qDhm>Zy?;!na1!$qX4g=F`$VYB?)E@zDgl&J7#;+3n`5k-2ws z6s~%U8onyoEw0Z}TFYE{HYCq)|CWV^1ugP@VQQMJqruvMoDoDnb?uoU1bBi>1|=LS z^`Oo^VpJ2|#i&c^6?H>#x<#bX4UZxz32=m)RbXe7F^gk32#j$|o-rPIG=Y-|&PD4` z+M`2C`z*IAR0vej-+?qH==)_UrQv`|-pI5nc%WmNpQ3KPwnqUh7vL1>?yt;__f6*M zl#+z}C~`rvBR6x1Hd3sNU!ym7NQ~E&aOT6InsWEcXnVg-LZ@l@_HY+|U1i}KYiEaX2fc$1 znZxTe;~1P#B*J8hu)+Kw%p{!od^W$ky4b0V8`^Q`Jm&A}kyn5Bu-OJ0AR%Mm7s3$k zcp&&@!FlZ}(kN~)BB#g%n?3q}G{AJHPZJ-XuF`RoYTtw!mI}@!O;bc#zs+CLnx!wwI@H4XZT)P}cmGo(IFfxnwq)T97 z6?U6LV=HIOB3QY{F8Dr=s9L|@p$*nZuPh=q6NAbtCQ_K5r4k|0{x&Oy^#dU<)A8U+ z)#y%4(iZhzOh#dC#;O?m|vrINb_3_K?&KA7sSg>xu`JM?UgZ9WW@ANL3|_6SnDA;lS;Ilx^Zq$?EZ z`!T}dXSkfoXnU)$zLT;XL%(#au4O(ML#z0L3OJSH#>Ss)7drV4`31X0v`{Y&nyjsP zKSo@VZG8D?ZE1qR|KfqzUCZ|oH7%^Co?_YDo`K58b5%m%3#|k=Rye5BWt^TFT)AzvAB(TR`& z3H6lnW*71UJ9#nqqPwqyS1;S_CQn=_=E{ui-$b&6_;Qg{VdXiVe)MkXh(7tI07FrY2* z!3R8T;6|f={(93j&k~Ud@ZpO)Osat|>!>DXNne`I7jeEIGu=W2E7uK_h96JFyGPiTk<{D@C&kD8|FjSaN`w2puk1M8x z7gjUkA14IM9-mAt&sdZH)P!2O++EX=bN`7v{;91$@pDHxrvPlEQSqn_K9o zTd%{1j=8cyA{ymlQuD0)SB@bG+ArLg`Gv|P9rQUWhBp5W1;@?|Ut%@_2}l-m2>sK; zCV3(7?`&6-Gn{*FntIU~keIDK{TOv%Sxc8Kw~M7yacAb0#VL;Za5uI1q>c@#p1E{N zKP)PZRfH^{&mN!XbariS(WY(AiXOL+Lj9W1sFp^VO&s2P4|uQqJ1g?G3+FrCK{!qU z$*7Z8?q=(|r(gp^2zW`@i?h?0kS)2{1a&jB(2gTLQm(+qwb#mM={c#7WUI%I?zCv? zpmEh>X@%insvD^8?pstuDd*4O@^|Z8N&P8`sM9}V?bv9hU?p9DUB^d;8d8y!G@XVh zfLD?Ftn=s1!-j*RIch$Tq8@EezD8>l^`I05$djy$l4JF}w40CuD=}Dpfo=rKr~TFNZ->Pp#@x~9T_rMHEj-@s-(jU5ru&xd=gMTF-RBdk9;&JhmsQF zdTi3L6$y-uDU;3~FGM{PeKO2Q-^<14zdmP%*Bc z#fw(yFoQ^=()}Kj8EIi<)NI0aj$peKnFp+#-i4D!0l5xpZ2PBVuOW`wb*Y;l*y1=C z()uMJI_a;|@=!T_8u78rs`g81KlZY?;UX12T6%Y*+jD$4kB*Br!@C?0tU(#)*$BIN zCJ(Q|=1f3_NHNX%HOe0Rk&%G14-;rrkQ9VEGU1oN7vhE-gdo`>g58qkm*~Ygj9Zv9 z>Y{Dcn8n)Wt$gU>JADH&+W_ien2Cwnq!)#1*rx^fmJ*4CD_(hEB{UH7VtFCZ^NpnUa0)IOS_eT64o?+RfQQ;uwHfl4d!t z_Pf8QtQ0{=LlyqM?Na)1%IPIM#>u>?9*5~p+fUAi{QfU8*mc&Vgd0WS8!Y3k_!|O~ zF;2J(7JXJsrwci$icEU%}(oe7WoISHg(sD>mfg<8>QYWrgy3*X#LGt4(+bu-W zf{ckAVDVU)KHF%#6*}xYcXQrv5Hrh8lKrO4)gDIW`Ovm5FA9r^!A>98e>g>{FLmu} zMmZrsM7TX~VUO!e7jqGb`9Wq(RJO>A9h-ui)W>Qe=(*FZUs*|!DS2p`nmchd>XKCd z2xnMk6TQ{Jbs!vPq*=%vRMBalmz)hw0Y=L?G;541`Qi&b0d|ARYKU3B%RIsz{6}zp zbdEC=wINJz%whUM)9Yv%WVd`J&%fBkG$RaqXXGTQn6b+!qUnh~d~=A-No!LZ6nC$_$4Rsm{NAKvZZkb}#neaKH*T zi4_>Ac9lf`0xk7IkI@^Y9SiFx9?_O$?U&Qg)gttN3)=w}ZDjU@X5*UYCQ zL0mR|TiBZTT`!I)46G=Vc5{Rg<=~?y^auZIi4XR3?4f}HM@0IMOo_=HzJQt1?PTbv zc=%&8PGN%no{O}$Vk4rr16~rB02OZa)z871BDwA`OlO@;It4h7oQpacN7g|dLJq{Z zWeh=_o)n-?HKPfW#~U_v@H`^eWi49u?Bg4hLQ#bxq@T&bY6TVddYAC(xgPal8C3m0 z<9SJvDh9J~K*;^}4U;ECz|J+{k?%niIPY@0_^>7RByQf18XIWPk1mksqiXwlOcc~e zt$;SJ%x4;?*0rZo7LTe0SM!*#+jNXSew(R5v=RkJYnVEm)At{%n5reG?S(&yde!55 z5+rPVcB7*8?a52lGjd9jR~9!R9wb>CiG}4BiV4AgiV+CB15b%LZt_jZE+R_+2Nju4;j~rZ5e>86Npw=n^e*(aWJCaID>m3z zAkPJ|2CXmA8C_M%(#}MSR_m{(eih%oLaVLJ?ucD5c{%;_3)c!jT@PkZIceKrLC--)yAILo*b5LDLs17+ zp8;Vv>(2X)QVAJRfQ{3^R`3 zlOyOwWl3t<-dtNCEErjs;FG=Q{un0A%OpYe=Z&TddtOs5XE0cuae0Br``B;z_>9d- zzfcyHRsIzFuuaIL{cxP$s~Y%#>Y{|`T!d2#Yb(iW2cHB%?PGBO1G5-lqgooBd2pr} zf|CS{QWnuJVt(#m4$k)5DX^=NMCvt6JF%xOj`{gv^?sYE)Y>@_F4Du_=|6@p8qX-< zw0%(@M;edsqZC$I*kA1{3ftzD`SqKXw5PQhPy9u1qENg!-Pq!IMa3m1j{_RKH;{VZ z0@{K?eaBTO)0;u=i4jmkL!l~&sAGA2iG0=I0x@a`=JrjTZc;KcAlTTaLx!4RFP9F; z09C8|qcLRW@jxVc#=`UEvs2kXw_0Om9jZLKlTmE?G$YDqhk$6NQFUSyIF)TA_da+N zBq!Id2NDDA?M(OD;?_C@w~#%YijPGP=%X^JDJ1Z-Dio)|k5>}|7ey)sMa-4IUQ==& z%wb{$@?S@+(0&Rf($BB2pt?hz20r=`N)woy}80o(>(UZY>iCd<0jwl^qaeg5yiBRBX~kloi}-@VLg6DsZrfl{*AP z@ZA)Ut+kjoqtoW%P_trLRuZ=Gpfj!0#z|q(v|WrGzz(yHxF+3|oR~J(Nr|B#a#V%e zw6-XRbl|8?Q|U1~GG=L~wQAAB*k%FWQAacg<7u*VQe6)i#Cn^FZpX0{2s%N>W!`l6 z80Qj#!;`P6-o(7>(>e3{OMAYk9)8xixlU}m{qm7h^a0KBCNr5w04CbUylow;lcuwl zCF=LH8Xra~E1Pws#{_;g$+kA2fae*IA!0Q(OA$Wzo$T|~3Ehfv(>~cy@>H0h7%J$S zIk&?7d)9ff*Rd9f@>MxEfwwxykP#YGmz&8tI?Ck3lVbCYeyH@Z;lWNm+zaNyeVPAV!P#5 z1AaMBa0xZ#bNAM)n+T5W=b~qxaS&$l4%OZC9c1F^0(NsU&0d!|PGiF(lktTzRk3u}3I{!qmF~!6yp77D-PXu^|+sAHv%1e9?P& zImBwNm08-*TBw1ArE)aec@X1g&`=hDp2Nw8$W`59_ahB*h>bT7S`H|1q9d)uI(F|= zm_ho+J(rKO(i#Rv=OohJdNQ`vKT)u^%xHSOg#U073UK)l20b3|Z6XSGxWCQ82$-DZ z*O$d&p#Ry_kxpN3tUnU~YB%c`sZ7hxvWhHi4VQeE!8{Rre8lQgP3bir!KnKxM>#)K zmF^7X)R&%e7qps(^<#u<#F6Ok_Ik4!HWed&K;h{Zi%|f@b(w&jve~5nA$US?Gdy9o zi-5^rEZ_-P2_g~Q8{gbAc{+1C-1rPq7N7=I*TtP6TyoF0j}$iZS&r~5P~R%90piF?aGp|E^74y0Gwr;YMJ0EI+nV_P8nMop23hY@ihnQpD1DzB<%zI4LPn6CF}(3y|~B_k&h^9<@F|JFvzFk@qGFFhHa`ua5j#@jh-^x^>e6B($dMx| zGZSvJiJqUvY!`t)MI+1RsL_}ZlAz2fTo*cAFv>QDsqw?teai^X6@!29OzwP*6H?#8 zEKo<#5GeLznF9|UItFu=y5OlCT0HISBV6w(X_HTHY8hoDvZz_!PpxH3CXb<|u~>Rc zi^0e1107U_D#})gHK6pheE3s2Th9i9wW~g7b%7F7=Wi=z+;3ULp&NtLbBQucEYBtQ z@MF-|m=uIon*I!G)f&ak02hV6f(ahUUp7G{2;zFNpZ%{B{UU%&$O-Vby>705b56H0KLP};uK4=KXP$-KE6IV-X@JcOH z;-bS$n6xz?1Mxz$h?wxTj$x9f;vn75J46z( zf_!#RoI8aHnxBk={ClYWd4?G4Wk4{pkLc?vv zW$!q4GkwsiNZAI?;#YrTW%{t;QnU6ca)p;(KP(cOL@M*>EMTH-qjQH() zO;=O_lb(A)YacCnh2J)aTgf+})caZ4jy4SIo3RJp*F0s`3vv&lJLW$UyW7ahc5ZbH z>E`CzQ5C29=Ny+F^AY1Wu#IOg#|*TapVMuWy!!_y%~*=o>EZ89kXvo*glck%Uywxb z>nj`4DNByi-aPGY+?Z0Eg6+MhH!KcFCw9RfH=kK0O39A=Dz?a{EEv=c@_f^LNA?D6Ew0`2zuVN zD$SVl!Y5az(^&X}*)7A4qzuhUmnz>>iu%d8f_gR~Rs_~F!!wII>@J37`{BDfaM`Lv z%sqg-4Wzk6D+R!^?&B;vXwa(E18R%oQl8Lu?cGrC6{Y30qsYGSDm*@JYj#Z`G{*Rv zXt6djAMEJhrMW%^TJ4TwjCH_wZUQTpRPJ1T@)o+4wIw8xfVp_axhtrRA$}y6T%^NO zgXsu$h~fG^XX7`UNSA*;0)aZF@<-_BjJTn&RCsEXg+{XN?<7wmdW zd4vnf1E18nBePT?|M#5OZ4-fCz`FqhsU>pJrufg;)oF6#|bM)*;#4 zu+?X=Adk(GGN*q(75$=RQ22?vE)vt&d-}PpP19@lV~dzyT*{v{ECir?)6XDq&!fTZ z2V-dv_t^%gVnLTPz3J)i7D!;?5rH~94czmbKC)nX)$_d>uV$AKGMP>t_$ zLk48eCfJCXJy01CDEOv-KMHcH5M`}w5tMwl5<{-GSN*QG=SA;Awt9MaM6M6kHo`gj zlizinG7eKAA(zl_5BmtDGhPGqWIK44|1?$tkIqMvC^zCm%D9o!=Q5ApbdqrI;cRgp zP~J;%1qIj?Vyj%-Uqh<$+6;wVhBn(=KQ{sfD(fGlB;;d74XzK1)#aCJ|15y*cxK-7J;q z`O05FI)9=E7%GP)63|`8COUdFrw>`Oz3%1wO5pYK8N*ViXKv#&G`U|I+E&PQBjbfA z8fo#0ptim8Dr2-i&APh9*WMcyNr4f>OzOcjM(xk<_h^D`g-%~ zRD0+7?_$G$ba>yO!2c#V|1SaDzYqJr2j~B#o%<&oCkHF*zq$E;X&V2{F#LZ)7ykv2 zU?ODtH!IKl|9}?%z!LwJk7pwMm*(+*k&kEpC*;5T@NbTSjg{qpm7}Oo*@#2(>YMjga;%TGiJOT^S%CTdPX;-^QQhuAu z{4T>A^4oMwDmTJl7BjB=O!$^=N6PL3u14yp`qh$XcT&vxUZEoPYHi?7`1ZX%5xiza z@p5lrcP4@%1gV@sguHC6fAlx?NP6Rl=^ax?N#l?u<)5zc_)!J$xvHe9zkGbHz>gzr zB*`)DK+?@;CpKNorxp^s7=}A~)y=>7(0OKh^mtxOzW_!jddtmh(t&WnDE5@#a9}y?AOHb1!S8m zau2%a`SVwO<)hz~Yj}Y5iIdLQ_F4CO;1&FJc~B{tQShJ3rt29;H0`1v6Eo&3kj9# zV<$wce8RB1^*886dtzUMl0r}N#7TZog%O+7-!Uh)C9i->{6fZZ(N)!HAlXt#%Z3G6Jsh-A#%oVu%$E914ok+IzdTa5k$Vywv*vVG|TXkkkYa#Fp5hwk(csg zB>4%MS05(j#C++;iTP&&CShzwh_z}`0x2P*#xwS%G?@u4T-}ZUikI3XeegWFPLi3j z!dVP=5b%=1fmv8EgJFXyU5g?Ty?@IH`Q={*AW~&+20`JQ(wwHjxTUd7GZUrC2hh=< zlky;;i&i1&pzW!dib+5wN&4r%TR@U|$uxnqg~e?-)lqTkd%KJAp343TkW$6jMi8M& z<7g>Mod_QCHivg^f~Rg8f}l1;VF!rQ1j$RZ4Y_hYOWJreSQJ<10MWQ=CMW4|$R*&F zKEyl@4FCfEv()3US#oP3;`e#cVOgV zuSjCkYz=RF9(hCtuMn+pslQG1-K62WH=T4skfIHL0)cunVVjqFKT@A=;4bYm)Laoi zv5fAxq2SEI$|7h&Z61n65UB7^^HemU>5RC=LpX5$;CZMztBJyHi>*@wFO3I)z<`we zfolQ(pn680&6h2PG<^jY?ZyfC2|jnu*$E`YWv`P1i3dc3xw|3-uJnVDXNtc10D7Q} zU?RL)Y<5Q2v#O3 zzre%)1EAnP519X#KmpVL4p6}UF9L$_yT>~AwkFPm>Wu#(_y4x(`Jc-_jy?Zg{r}tH z8w?N>wEB+ppN{!Yt4ti6{}GFgQF-wJfH#xZcITx;ES|WVUKey}o{w)jvoa05%~NvLaG&;uck^ z9zcmb?~J;>BfY=!b$&K!cNo-MIHTE>t@N8dw_}!+ySjK2ooITNcJ=6w0(|F|EK^C;TPIiZX+*D;A zQDc1ScAlZlGeqc=au z#u?r%_b1wflpiv4AXMID{_LOc7(6cEanp9Jazm3uhRaoVLtG95m`~l6Ueq^>Oya+i z?{_#n5B4`-wOm!9TeyJc6n5mnmn}H;VKFQ&9Z#y?AF;wZ0kWnXd))jEyXirgkIc?# z*T=XhIztTB^2!lER}^Q$NB?ZtiwnAj!#pPD8v!ZQbbqXTMca;L+O+Ig1`#n}9)6z+ zg*6%;LfUaTHDFq6D~w$xj6=q45IX)yRJrK&ZRzW!>-{vZJu}>rO6HySM2~(7JM!2K zc`+3-J?**H?=8=+{q|ct?-sD=XLZiHLb2EVCWh9?{#$~(_6qjSIQeZKb+$Y1iRx1J zFk{2Jn(rNl^o6chLfS*NOT zajqxZhZjK`(KM7oD(j!ycc54^-6Qi@Snd zAum~wrC8?H+b+k4B`^0VdEwcbG;E?1eSV>bV6zsh66Dh`8|c`3>F4GXoS6F?s$K)G z%rLGlR<&A?qwhXLa-EgfYI*GRBw*a$9>FHoI|I1LDYj3*?2l=@#kp+Y)Zt zT@voZ;bwtSUJ|rOc$nb!Q`H3TqwT}98~$?YGwU*#Tbg6yk)c@v%EX(L*TjU}V7KWN zb2Sdo@*Gd5`Ha!FHY{b0{Eg;y zN+s+AF{)(yLsg^EDeR-+#@gd49oP?V=^2dD>>`ZqM0q3Q&mL{_QIQ7SFLdbVzKttUkqgUxQWjN0+oF`K3t?3T%E<0q73B8vXS99Dg&nT=s~aa9dA0w%0spbH*75*qhuC$qp~&@d#;q3=w%MV`i4me{NXd=CTds;W#F6lWe` zeVcrq;tnzrIZevhjwfj5Qg(8w-9TYdR};RLKo4)Vjz$rFo%$&EMC7_jltmip_6~+I zz@Ie7PxOQM8+SH#7=x>FrvollWE0^1z+UGSdl@c;9Q>7U_Sw5EQU}TVb@B5k{#^Pz zD1(ATleQI4IHU~tiXwjV7Shj%&oGSckT&(J&IZv1UHE<6FX$;@nTRn&Q1r!CNu=Ak zcCkDMOC(lgG++*nYAWqi9R{{A9AN$UMu^Q<@1;zb7cMIWvSuws72z7%%=maGB05Si zUvdsg{A!tu^a`ZM4O8R+gD74ABC}w1OCO~?tgg>ZI@yd!bAn-Zj*0wxw5-Fq=*kPH zvu0{&R_OQrZdP?sUtoiV361%E;FB-N{>^B#N82%?8v>b3g1P1)JjGg6H)fR(qjb0hz&dZ82$bSr%e&w7&x-rc% z$FgwxnqT`VEz{Q=DQ{bhPv?_o8M>hn{7Rdjw8T_P@D~4^GTWeC%}ZFI=0HHI&r<4I z{sR)iegfHu2KY;u>HWki*Xp^A*$KnO%^BQY#hy7c8MclHmuc!&F*s&oh7apwEPkcu3mWBteCQvV@@X-;)wpGmPN zf62rrj;0m2of~8_UdV+5KCjC6NoWVx=%ivr7GI3vk$mw8GY-|A^PTFadgJz(Bm<({ zPD~j3!^|7B22#heLgZ>=A2_>@b^xmpyJZ0_%S z%Npbfowvy2ARNbWf}0-LxMYdeGm%wm3Yl_D4HXi;91wA{^sxX_Vb0^V^-F0kh949G zdY(}f1U_6m`#83|hg2@SW)q~CL~y-)LS|(vIhx<>r8$h6Wq-dS*j{gHm>Hrw4b0tmjBr|r^RP&Kuu;SwEc z+(dKJPlVCX-_*g|Qnw*`g31fuIQOw8Yc^-GOrKjU#K8JZ4C==JZJvcqO)keuCCL^COLzl+2Mo71l96>YjgspL;;b3kA`LOcoE z&|!H`9M_v{${tz3P@=-twM?5X338q{%?4mGfLZqF(EIV&S9dX>vOvyw5*%|*Zso{v zlG<(eZVVvel6asv+J(Wb^H8NS6bGFWYjiqy0`LeFh@wgpDv^42KP%r}1i|OB1^2y2 zrlR!HTP`Xy^*F-c)4ZEKpvqF%yC^^G{1mXw9a%;>s%>Up_&w3lGdqyP0I zqKnh-;iZs1R0xIZbPXxpfX$By)z661)wzeLIRgIl zySB`x&^{gr&Bfr0LJnGA9CJXdeUECedzXz+W^OQH2arCTYgM1mOn({FYSCtpcm5o)n~(PO|TJo z<#M_=un&wcsE-j~6v60(t5)c5^LI~lBP@NmEc6^;xn8=5QcG0jRmV-Lie>44ZJ0#AkAkdS{j^AbD3 z&SEm29I%O)_jqUbqsxsGRHsq$F}O$~wA8^49m^qzr6*+q%xk~B4}~#gm%#OC0aJ;ngEqz32(OY1?E87qN8W}LCZs5GJLrE zxMz#^9p8e6yQC*6()E;&<34V23JA30Y4aFlmTq;CBeIS19o>8^jjzK~^I)lMZLkVU z|6G15z0$lW;GpCQDc$2^a5G{H)ROF1yiSS?TJo**=u7)T!mlPekNft>o{lT>SHG{1 zZYkKa$S~oFIfL!YVSm_UTW7`*qMlxjS}BmXP61^29tHQ+B3E+Cgn77+ChBwHm&>+o z4_!D$_DEuh{Kj1r?4sA2hdm^34&Rp_$VbP`*oXLSvV&)s9kCMG}R_URlp1w|5(LLslLV>m#>@VIC6{OB+_ASxWKq#Cmi8l{`Sxtzbm`(20+%^R=& zV{t_+Ayr6r*amH5KVC^_q9YQ z>zNc=jYVVV`fuJq3j$_ZvOc)2RKhF=+27$lVjew(=T z8*?C3!JiXJNx})fwD{tMeYKnH%S1BGYx33H0aiFDy^t!)osPuh6mt}35_?NF0z>=F z0`bH(**4_)Zjc+#0RA|&?sf!h|C%{nV*<%UT~+`$Q+-O{%wQM&@0>W;w){1~PFS2P z=uI)1LIjb0e2$ycK;)q|<_A%uWat#^ zkY>=k=LE7}6}SADJHwYm8|Q~L{701zgKftRsNa;H=~$)74Jgtt=syfYDTIFM=+i>W z4bpx%;nXT+2W$YLW0=C0ijGT^jAI^Kx=+H1+_O8mx9DB*)D^J3xVf_{SOw=*0FjT` z+-tWO^;I(bQqnV3gB~=(rN_E^W4$R&ozB%(PPrpxKfGfNp>fJlhkkX#xC3npjit>Z z?xcD=QXG6ZhaS~*vo{Vr&o9{ZUYo?$x4vigT9)j}$xYN2{VNyiIFLqRsb}mEQHdpZ zr_G}eEQ0?u*6_eSqKF^o$(94sv+vkY-bNh{@C z?mEWC>r2DQz;o8!YnS!M^;nM1g*(Mb0u$Onff8zyAixN9o9{exEEJPaS1QHCATpoz zFmM4C8wcKm!v;A$;+A{P(aLpcw3@C7g1EE}8BHk3il(*Ie*(+dOoK*LySy}^G!G5i zwhv8-umjF$pPO4K5!*~tX(E|W+ujES9_+=PS#)gFI#OLiR$V+nLAZk(s=Qm4_sA$` z)P|`fi1VRm5KxxmRXLx4NmC|8yQ(j|N7#!%{o3QOdT^P0B1bPn%iWk$*bK-Ic&g$^ z^zgK>MVwU+OF#ZHAO+*SCzOZd(Xh>=|2DP$o|if0g6ngA3YrFb$C*juf$q|>xghQ4 zmNF>MZCfGt#8sl#<~mgm#UsE8#`mcK?&XnwY=U#j#Fsmih$GDlf4ueTe7zn|K?HQNou4`}L_-ABM-(g2J*aG48j)NHrm*Ene;b(;XO z^~fzv)h0gT^|ubv>zkHeyAE9g*)K{t9MVW$A0?N`Pd!p%QuBG|@SE+&R=?j5qbxrR zcpz!cKgt|q2e16Rzuvo*pt3GI|LzP92Q)9=v+|1VYg}g`iWK$VW z8rm4Z19h@VF7P?2m+kV3nBZpr`+_Az>85v0R0#!w*9oCfYI?{)2NbFYfzMHxL{xGD z_yJD=3KsmK2Q~56y}F24@}`Ho&^(ad!}35h+%teIP)|*v>8+J}Eq4kZGqU7FZ;xEN zwk>LTy*t^fUC)>Ml_koGgm5Og;}+&)^vQUH%#&dJXQeG%IPu{zKvK|L(QP`18STQ6 zIY`>sM-Qi%LrOLeIbv=0rCA_a%p8}1IkIM=K+8}21z2xw;>q>u6a$f&Tc5xWg`m;B z*+&2JcNl-H**V}%+D@HaqgQy2A(*p#-m*K3lo+(ggO?Dc znnwzm*3&Je%_9s#hkeey7=_1Sdt@LK6tp0u2Q3~`k7sKyFH>Zl)Z?fzj$)5rE{S280{bxR%GEP z)`NF?@1JpO)5p?sB=c9@F{fu=o^aciNC)3H({P!m^?2+V3{aI2|7|<&()VfCvb}34 zHAEPg#P#eq;@Wctyq`1}_)@r0EgUkPbi;}3!{sBRLdT4BWcGumLmHsFb^ZF${GG<@ z+D!{UFFwY&8md7U0E1JeGEss$mse}FQYzh99juPg)e)qsEJ-TSfYLGq5fn~`)Ti`hJzjH4tq#gKlNowt*C zLaq#BHwcTJ;TOtz`B!4)OUdjhqSG#Ld$S1UpDi~|aI=PToB@ZMn``6l^fT!*22l%1qpXHDQ z2U&N|pJs-iD*k~+7dS24cyj~N^(~}C#|$ zP9s3j`t4d^-3x+zTzf%cJAUAlKwZ+4%lKOeqzTTeaDI#R^BcxJP8vxTI>&6B$85xY zw>3;RBAh%v_yWc;&m(9pVWtHEzdWLE6tESmo&*a zs0s3;qy@kAwT@lGFTR=*UBHoYA;qHS{bgU&$MAfRz*CJu5quHRS-Y(L6{O}^cGRXK zWHNGWvJ)2YB>{h|6f47Wx3VlG)U9*1kF%~E7UY5riM&2c`Sj`qBy4cto6R<(eysJl zRw|rp(a5hjBpfj8pGC;NT1ajyJ-ClQ+7~s{JW2%#n;j|}uTFU1ubI~P9Cd@v^iylb ztY6mdhGdJ+1G^|didMkmQLSG_NVc!Eo3$Rr+tuQej)PYLu1dkisp0KtI>8CF$JX*Y zHuJ1N%}7&2-W#a+93x*4vVtC|m!a0FnWGk+t=Rh{Kd%)H>XsHm;4;xIdF_`Z) zxY4FH5Grg;A{?++Zfp$K>-(Awe-ggp`re56%VvA( z#h2zhu)=$J*pvnVG9hqFQEcIGF)X?Y&>tBHWaNSW171L(zb_w{Tn*dd2zbhYjJ$(= z+(9(^aF5Xf23f)JVV)L<6Kgo7RoW6HKH)FmTG%*o#2Mpk;Q8={b3E8Vt_sfBH*O;T zSTZ5NhqaSi3nOj-@iZCJfF;in8CnRu01x7!JHDk7BB{Z#6bWQLEC_u-N# zIBCGvIkKp0@dt<@#MH=Xpop0%X;AyV7ziECEsn@;kINq-AGC}Z0;G0+;h~rL1>2kc z1M?si4&*toi^U{n=<(qtxt7cnkef%Zfq7q;?3scB^DumDASR_53*l1X!8QU$N)oQB zBPK~Si))pyi6G!E{-Pu)xb$mwX8Zniez2SFs}D8{-WV`Ze4+Q!1BBKbz6UM-Zd*y_ zznSBK%Om%ZgYj7#%^U>i2(AGY-7d;KN_p~dAh@E(o(WENJ22d%54dNB2ug~s)}X+P z5u9=IIe6fqsT@S&)&9OP4}}tRsmVkCPTNPJu=ZrBX#x|x0%>bj%0FT3S8pa~sk$K< z^*mwViY<2t*C5EoVe$KSz>`vvCw9qjXTy+@mmwb*8E9bMuct+fXVK?jLX}1CwjMdg zz+jUowoVG26Yrx*IfI*w?VX&EvIx^z=bfEII^)WU0w@<3!Lz%Ntrm1Gso|--J7pJHU`X7iIDt^Uo>fh zW{w=#s!E)w-@mY|xzsp7xQJ8YnNzA1OCIB}+yI|iuNDs(eqQ|I1!vpCgBg#Mp9iB@ z1rT+9mUa=&j^ zK_CVR8MEsolR>!xEMmFpNA|hk@Fzww-|yZv(Xs zf4A?8BbF|1mWA87pSuPm(#dKbs$1O`m`6d*!wARER|7c{M+cT>>H5S(nc5a7S2 zxaS`1Ic<8Y!i(c9o}SFVZ%q2~#6`~4J%QAD-g>g5jo}**JBl=!JdPl2IAn0O1%oD* zz1yvYC9T@J>N8!bzD50}3uM&`u=b z()8#lil=rL@1Qp?^qL2TuBtE;;Izn;Vlzen*QtOJkvV1bG|c3S&NC+Y>ptO4TXMj( z0oB(mR}1<2x-hgy`G~-m-D>oBr4~*%##`BNboi%?S3?>yyZO${1)KGXy?P5@E#B}4 zoaTUkFpElA_~FhG94*sU;Egn8l%;6^$rmdpNfr(kH9J&56u|eq#UpI^&dz2-^#FQ(S<1x5(ls1ku|YR*xR=w|tn!-C~Ox z-30YXcxu003nf2v{-`m_L6-TS&SnkqtxGm<%R2>(5*qyRD?SxABbjBB%m4H1`TC## zagdf{_Pc+{*C?`1|BZoKf}dsh)BYutTho&qY5a9bm2<{lL1qfhyMOZjmtJQdiM1V5 zDfo38%Cje*{`<*Sc&P2IZPL2~lj!c@80aDpJ+cDx?EgZDHvg-SN2&OVh&BW_7tVev(I&h*(FIg_2?KTnlTa(*^7A+UF-?YDC$nm%UH|$YzdU%Z!LIkv zm1n|H^#BJ}Uc__Qxt09dnMggG->|iRLIJ~OcI4}+e z^vOLi?;De)FUWK|Cgzc}v-uV_muZ0O1?OZYCdVMfG>!d%>1#+kWPKv?mlu$I)pqF` z8C(b$_leO@nWqhGygqO1B2V?-I`hVXy;Zonf|2@eN@bXe#Dp^V%*B`Mh$T#nag z4@o)ZpVQ6EjFSC*VG79#Zt_U1f>nd;i%_n$0tS^S+};}?3=YY7rZRgS_%R2az<`9H z`T(sVg@Tb7I-DXx%V!49=t0sR++3I}Gf%FOZ7jxklr0`gb0&!eZBs|S&pRIW{O+@q ziwudv$%EM|Oh6MEC=7-XtT22wS|G0rIlp?S5CPd^HmCQB#piJ;**r`)`vhFco&ZgEH1( zOeww6`8(tc%oxeTuEEYO^)NhY;OM&tz{uUocQ}6E)+byTjEY}4Mq0g?Fmji}PYW3i zE*MkTbH&gN!}|r9kKx~qoHGihZ%8eWD9oL4c6!%s-Uz!h7%Q}{rMtCq&+CEI3ez0Z zR~rnw%;xGy8EY6=R6DYb7!A6)$v+{AVqzG~ZCZY6w;Z(FI8#_SGbTD^+BDo+m>7PfuW z^Rw0hSyOo_a0db`Qx@nzB&IozpPNX54=k>~VALpS%As$VGeU913tn+f+?W%b7hZ_z z;=JS*7hgpRlK#PYk);GC=4gSy@r(0fIQ4_`cEq4voEPB$_2RryBSV}Q{%7lOUU)^W zi}NB1q$78f(G_MeJ~%H*K$MH~(y4hK)(UZVaex!@} z!alkV?+wsdZy>~ZW5RZrC^|g%af3&(BuZAO%K6zA>G zTprHLgZsgGK@+3a(}LwE4(AL?AZIOHIY(vK$FoYn zu%lQh0B-@umZ#|rk#0Ddy82-HBPsJ>2IJ#qgCZ>jvw(#wksU$LLStKnQegQmLr7}t z@FU2?HO-4kCUwXMgOi;|iO{Fq@UY;tgVCuUQyvqN4Be7xAU^Q$)ny3E?KOTJ;7DeM z3j`11q(cE2E<+qIm@ErFs4tx)It2iHcn$_n?t!PJTe>jxa5vknGh~S8B_NnDVTd@G zx#_>wqJxuecvyt;!88+mCry%M4$S?4wT72KLzGmXTtX5TTtT(QvOgP3<6Ox05*^ns zIN4!$3{E)=#GrPNxt+CGw>XV_F4coUv5VaK2H-mhvltx0WBFnDu))TA3pg`TFt8qw z{<3_013GpjgYp*e_wRN=?_b6_!!dqzO`X+C%;om`#!zUXr8G`~=Rv(eIVV0Sj15=oeanguE>48ZJ zF0!!Xe6Vvu+Uz`j7Ow*<4_}{#c^{0uXg@GWS3<+kq%6T0R~TI82oP~jc(?F6Z8BrY z(A7}81;(2P{zHTxv+9By@B)5@3dta)#?q+v7QmqN6tS75;6jBP@_xz)KSZ_;@?EBt zzF-z)!7m&$ncngP#;(C#g*vNgsaPj-4(GtUFHEv>O@T3~5H_-QZXp;)$I~tv^}woV z0c*AN9^h9f8^UsPq2^e~F2K1zLy4d9lNwh;6c*_`<&5QGwK9XT9mC}wwTLZ$nrwy+ zyLa%x_{A{f#5h7mncVR55u^!fHf}I$KROcIXx@{^7M-cf8&Bsl{$>gQwoH@ z49nh<;DbuBN3See_S%R$m8CeSxAr@h;a(y`Ya#0o6$rUruv8<*KGcwn&cZzn1C2{s zVRbt*k;&;^A;-jeAi4Sa851j%kf5xce$&HD5wSB4gP51hM2_jM{S3@ht_x)Q8Aqsa z``!^M7^`*(r`$OSVO51%D$}I!l2#Jl!1$vl>XF2wXH$`?TS&G!glZ<0L;RKmly)}c zwY}IYv!(QlyE-D6>p_6G62jeK%rr4I;l*1Mva{x3tqGX`#thb)P@C(S7i;x+I%loS zz9P=ql~5LoS)Z^Y$Fx%Dg@0Zc&v)U%WLjC1AUFYsyOSet2t?tT67HkR~i0?#fR*^Wv^4 z=XU+swp*MvKxeFhIMX(Qx!Eeb=;wJ!fr?tUdkz*sEswyUOqvlxKpB=t$G!nAg}gz$o`jvV zRHl+(n`R@?>J%WORaI}r8&o7U;%&q`@W9zx(1;cL3E$#Bt2)Uj~ZOVmMB@S0Z(E875d0e4J!gTuI#YGNr9 z{2f`vQKvg!zlRwu*ZT`dkTu%XV$l0-!TBl29OyhxcNecWx zN+SsrhizSw6p9m*bWF>d=oj$iD$>;GpXwUa1Qj(^9Ij(chw#UvdN3l`n6ryht*L&;5xCkg zj_WNfue+&O6C%JLzARnGdIst`Rz@UCHSFp6A6+O?q3+K%(ODqbbs+=f*{!LBUk)+Z@tf9%9c2=hJ|PzN&~ zZ;VdTg()h@1N#7WXfqFaJn(wsFv<-0`_vUUEqv(e07atCWzDIp*cR;^Lz`Z&vxw-j zC*5b!DKA>AE{-N0&~5pk9W!8pqV(is*H>1TYNSXw*N9Gb^PCD;-_Vy6NVah7Qy{Z0Gw zILm}Po=)x-wZ=d0o33b%zR2<&fbFfB4cvnwmUpU^^ zlRiSXe>Uo*_kOj=O%Vj%gJ%#32W=E2Px&}#&%_|TaL|UOijmgtpgoZSzg`a72pMBk zf*iD=LT~FhXk!wk-45Dxn!P-G5;h`NE^U(H*yZ`m1^V#j8J()w|YJu3+5iZ&jTz-DKXvaXqMH}nC zPLNW93Xie8=7Bv6!(1;PZ9MkN-D2}f#;BQ(_UuV}e*0)6ih!QrRuyc?sgww0JzLUM zahJg27-rA{20KYre)!%(SG)(OA9z?2go8nNCp}sn@$hYy7^Fi^qC>*Sp!RiQFavY= z2t#Uq#6%2cLWKRY7)($-BW%7H>NyUSn&Q_3!MDWwf^~-MJbE3v$-j)V*giiqL! z3w7Yri5Eyn(9l2P2N1!>ut9HuXB0oF>XZSGWUA7@C^YDOVW24I6*FFkEAyj_4vDpN zOsrgf7>NH9Cf1Vf!q3T+kV$p@%OhG3oGr-iV5a5z$f$%dP5^L5wt_xm`WY#0M!gm& zKdSz6TCjYLNA?9cESpOpbVt4qLW`3hl@g3RDUT{Gp4AD=wHA~1qaQHW>Wr$L7o`Ey zhxn!TAtQQ9Ut-+OfyHL zicvFOYzEw-SqoD2B%2Nvi?Gdh$BZV{^|%^fPztk$0JrFQ`*lTu8RkUkrX?fwiPBAr z4&D*Dns9G1myAO558JXr&zqI)UGT$G4p)u8z7boKF;|xNVqKs zrwbU%sL?UFxM;sSn8r&jqofAJxM}fG&!mIMhLbYs9!%xFqmRnsU_W76GXL(BX`~`V`#ym#!Wj=75 zDy?`hy7M!_gw{Odh(M!{8{MaRT9jnLcf9`2JeKFGGRz^Tj1sw5uiTa{c~FvtZ;MBL zU!-Gc-T%2(jDdx}FU0H`3OzQ@X-rBj=`e=YS?2S!7)T@-5Z50Yhwn-!feKpkS$Dx zapy4+1d><4o^9x0bdBabnOM-XHDo5v?*Zc%%rA1aK)Ns9Bp{cJ{QnF`RJ1UD0JitV z97>4$VZ8v%%@QL8+^ckY2Q&4)$S5K(4r~4wVLpFn%KI}CNnt+!=|k8M|4AQ+TY$cO zs*cwQL2}H=uAUJTnZ@U%_4ylfe)VV1{-E{r%NhBG7)#}t1QCy}OOBX}&m-I_Se%4R z6`OtI$+Dm+nkXJZx3j=(l2lR#i!A>MqhBe(GP2`&zX%ym9P(n-)_|9)QNa;Nn2bbV zT;hX4d5!YrNt-i5y^##UBitY6xcj!7qadc&`X%ONtPUOT1I7LnzVG<7hqntQ~K~k;K>3o~|(0akY7$1k`G4|nL zeAV%=tI%Bkfbo5BPe%5;Nri^%X5a1Yz&0|uGCo{GJ&@mY07MOl^BDwP^?N9Eerkp0 zCMKicqaC6qJS-sa(L)4vda6VjIYUv*bNE}?&!L+$45Z|lM)Uy53=ugLmKa^MpycCM zi*gn~7lyv^R6%M5OBj;C#`U_zICCKAft0A^Mff^1y-((^#>=G9S%!I(6COcIw~O>l z9QRT}Udy+haF;UwbfS^WVa|(hYscVmGhyDs1lznujq*11a_gva1&q>Sc_q1ovU4AB zp`7vk>tG&UCNXn33(`&Mp_R$u?{MfjE#%IX;C3h2fc+AVPQ?ZdBO0W`Z7l|t!P(0zreuFaVDiA$UIHVSh5FEUdt37S$#Ohk4l1g z!d3noqhHbGi(X4S#|b`4Rz?KhZ5IsBQE9sa)3aR?2eTA4pXf=&b!I`gByS6Y8JWLq zk*$S|YcUfWV2TV0sVkDzvr|S}qtcWLGc-Wo0&`a?_5vTCv^arvud78h&B7S+rE+*i zLUhNhtYV>MNKIph%|iXJ!-i>)fV@S@qT`j6sNNR_IYrvX;;pWNg$d81^AYa+5R>pT zuQGHb;?9I5PM|h$IxeA1Zi=(<`@&46#9CVksE`QrL-ZQJA*gD z_~<{|4nQA=A0$nl<tcV&=%!jND?(WZ`i0G$Vn*JCSwRCT%*i81=(3e+2xkN_+gMwaAK+ zP4HyGt|Cz}Zq{bGHd$_tEV;4hW= zOMx{wz;Bf;>{WtEW15d7R+BkDOO9gTcO6* zKse5-dqZ@Jc|VcAZa4eC_kkJ19> zDD|0WQRRsM{W_$BfJgFDA&!BG#wJebz3Q^{Wi*)1st=1gdJAQ`Nzmuie8Ap38;c=^ zX=Zo~N}Qv&=DxIfol@rS3*&c-t;J$QnR2>_zdl}E4;GDiT3~}obF-^}B&$~PGLpMS zFhb;joAQSxiD(lq_%SXMn9{{uGA?cEkV-N}+HO83O)};)wBC|&sdjnUEh%@(xK~gEGnM=1u_}zw0*;;Y2*zjB zE*R6DRCZ)zsj6Dyx6^@LFg_Rw#xZjjd#zsHB^bjY>ynGDxSPwx$o#H{PRPY)oGur; zLuy>2d9fO9NWJjjl{n@H(W*I~7OG1Zf-w@PaL;eS7@_Txk5i;MM)I3!de=eOM$84{4Mqv!M<>{V7D(J^p9(?QTc#O@O;x|<*@reCyELoBD z0?}o3;5ytV&@qF$z74aCWKbbywP@inONG}o$tZ?RSJ27iXtB&T4;o*Fr@2D_Hrb5| z%EP@PC%ZQvGpMI5F%lfEKTEQn5pI+2-(f6Q^>;wCaGGXLW42@T#mjoFc4|%bCz4L_ zl<;M6#`{o=ATWjR5qcWZSVbD6YhfJ@(iM*mS@HMEn>fSO09Px@T_mb)ie=twa47;2 zW?4*HPFk%*M~;NF*s!CczP&tDkszE3l(o#!23~Sd-aoPu`%;`8X!Ou>m|k-9rZ_DY zDU+7Id|+CLRIfTPgP|=6nE=FVx@OjObc&@N=D?*HTlQi+7=P{c^vJw@D^K9)L~gvQ zc{~6kA^wp~Bq8RVYK1BB6RuGGJjdvo*ShXMb4FpMetXAP`X~X@bn{> zFnMESEwjP+#ilgg6yBm30~pM^b-^Y!9t>)FezAjkT?y1>FA)We5(z)vPaeNfXh-jleW%?OyhVw^`A$3SvRP?c_Nsq`w0% z^N0>imf(vXvP{pjYvEFW^ls88{qJ}t*26BaH5!2BAx$hKMRR&G5?N-Vry0e!KSRIR z>qR0NmIb*i2V$!7=)ojW20G!WMHrw{Bpf}%1|>@`T;$Y<6+Sm{fc|84gzg9)CHRFI z8^u|p_S@Mk4&xf<@A9;zp882Qd>#L6k^r4OXEB?3G1px33r^rMk5m&5vK?k|r3{7U zNEdvriog^lfTcGgx&6ab#PsLw<=Psg%he}rCpzoW)AfNq(rw9NnN_;1!@AxBK3 zpB}apj&k-}w;Pza+vlT@0 zq2QhiV}Uc2II1C;F!#*#@$Wx>K=B{)5KOME@<~QJ0mPCFb+GCdW~I-}RC9vB81I+p zFaIdc?2le71XenlGrZQxvCnvFXI8~)yq~{OKXhiR@wML(W_U)FQ1J>bT4&VQ9s2b9 zkpArF-=qt6ZwKf{=ttom9gcY)3<6r{HDL}LeUEeG%L_PwmA5Pc}r=_*gCnl(N>OckqQGz z@G%kC3Kq86hlV;ouZs8X=M0|8Zs z9<7d0O*-lW6L*mAFs`L+I&IXxQXPRjlvG<*dX8}?7>M0;6KSW=J`lc{$RdDG{e-dY zMFB%nzI@F$EISReUmmq4Mx|E{N@p@C(T8nHU`%V=u;$HQ2!oPsS<(Gjz6)nuupfMm z^k8hHX|blaA;RqG%j32=oH@xXj$su;%eZeCq}Dl>R8UOsU-8L9h>kgAXZE!04aBhPlEbvq zSHMAEjyd#&-T7o|3gZ3=;pYJA)F7@h^g@oaH<>u(A}+@q;tGt2%i_v|xa@<6whVD7 z2^AxA`3ZA~3-RnTXsbY^t%tY*4(f8uAuj~_)7o>B7n09n1zA<$w<2yCuV35=0U@E( z_a|n+N=S8&eMI~{W9O0vCXiZWhWR=M^tqNLELa{(X8Lj%IT%!{xKmm|z;yynZhi<% zHKm7XUy)W9UsK$+ zn2?d74e6U9#K{VVi~yT(vORGK9#S*G>R>Kmm=VGfoj^~SZ}_f|O1Jm{p~?U8qyN18 z#b1uLfk9v;W!nFso&<&ikIXFj`nc^n=D6*$G><|Hx;F4n#QDvi{kpgbPtd$6axz5% z^XH;W3yR($v%x-02-QS!)X5z~H9{!-Qo!G=Zdl6-3?AQg%DFcqrzY|m!P(bbUzmA+ zuP*c2?e#(QWUq@}xeH@)xPmP(A)#YX3>ISn`4<#et1KVO)I4xH)EB+%VE&?mCi1P~ zGJ#7c6hNEa5bcaY3l1YyY+(Ub$Gk5Lh@9@Mc*~d0Ui(5h%EJ8OknL+ZAbcUIzj6%x zX)3*40>fA~bOC226i$S48T+G;PL>N=*T9f8f2e-tdYEkf2aNq{W1vwRMC`}zS8TI? z)?rpCpR^)74$3&x0Q`Mn1|46aqgu1ad=XXg1gN@~GdD*-)qyF=EE1*drOnA>`>s)Xu35Fy&}(esaS(OgkWlqBfPrn3bNn9pFDLrz<|i=0&hUq!sUp|u#0J4W3IZPB z${Pi(f6 z>IO4T0!w2sGHT+%JOYD&;#KgA#vGSEXvCxEskFvOR)>>2cpj0W7%Ayl8mqQ|naz`W zrNA)iBA=94vj= zIk&`2rL5d~KqT3O=h8Y2kj`%5U%LExjYI!}`vo_sxtI%gnqP2YreYjxy6EnckBrfH zS>ruy`6eC4>ke*xR|Ax|{eliI*BPJ{!De$H7Bk%FsV)SrcRto(dDn>oWiqv5>#FjY z^qfTH9_?~w^2towoKr!fmEs~3ueBM3gs8M4cAZ!i(_oaiP{LBjAa4QP;5RLU6d6ae z$WaFt)!=WIra@xvXaS8Yi!xdd4kNiO?SKbkXVxl&;!>ID2^z?Th3SmBz%L4G!81Z= z?-pQWB=@B{ut-L~5N7}4p%Xi+w=8BIWC#IWlO4w5(*N%?kT*HAz_J5_leU*XAZD_L z9}oUYtOyDBAKZ1&I4+zRqzz<&$9*oIN!Bt{uXD?cD0<`kjY>(JUzVS^v?h}?-uE?bTXVTF$TAfCT5_A67D;Yz}TZbUBIMSgH5W1WP098-;HXG!=Cj|9JT)^>&3yeMDHcYdjKjLhQ9ZA? zl$!$a;uUu={)*e*nw0(Q6~~mZJzgyV#w*S-=M@(idrq-Si2L@6^N*faTwu;2g=TuB zpD^)?+dDfQgJ)dqbbQy~>lx>`^Nc$fJ>xuEuTQu<42C$j1YCXFIDc=kOw+|sP`Ny$UABE+7K;;ADY$ju<|ShaPyV8*{NQ^x!^9i+cW^>9dR9qj*BV@qs{S1n=k}SSzg%;Mkev zc~(|#%jcz6f0jnRQf4LpY7g@QJB*LauGgKlFz<4>fS}9MygepC=+MH+@`B#)Mjc<2)JNjDq`kQLihPcAVU5 ziTfI@{%7eL?;n2`1&m}%iuQ1fi}u!MJRr<+a6K`gjxO!Az~bVu&I}Qxi1BJJ6LFy! znh}q2>eyRINi=5Ti(Rv_kO<{Ry@YgFar!($I&}K$+&8W3rVaMnRA@5(KA1K?gmj0G zkZzbuNOz2#d$TIc(C>4I7q@ZD;VtmOA3q=tujvv6E)l&^SUf^zQzEnw(j7ihx?_%* z4nqyV6$L9mWBECj@m%3F?A65|Kh-?Sgv1F5Cpd1a;VP z(hpFtEd1{8BZV669e1;$Gnzx|dp?&DLpdOeI%XV!Ca9$mt!@LH^*NMs!C|H_VaLmEHOh)SGe{hoIgD106$9 zZ>pDaN$SoAJ|uNydxceRE%L!X>);V$ z4D%txAfRG>NHOLgA5x4t*oPDounQTEa47~Iq$9S(Cyp3np#i6bLI*;QaX3B^h>&Bv ziw{8t*;nxD%TPseGDr;#i5eab*v^3yy$DY^ElXH7nC`+;a;~@NOk3#M&Vb=kCf9hw zK$liTh>mfFJ`kLKQ2@p{KG>pTuKiy0RQ~~UQ2^Y%+tu%U^t{48mjj=R#4xUdX0MDt z2!coc?s5*A``KQK@rg*Ra<$0J*%w^X;YSx9U7LxSEe@t*{DC$V=om9W*`GP@6>`j3 z55y|g^%Lf-5Te8E4w|c$>$R!sm{lh*_?t*o#6-RORZo@RB@nE(C+Vp+4uZZ z^f0oTwfTurS|7tO0uzEVQ(h3xnhlhZ+}~Ay0TO? z1)U7J1|%hc5sVj?!c`noWR#+pf91kV1~e#B^Dz@A7;7QU9pRP99!FRR=@^fPf3;CN z+(J4Dj10SU3r~&v+ZmDhFf;6Al2T1f-s-><5h3FvTCgzIVNlE zgz41}C-~{$w`l$u=kJ9sH*Rh6V}zU_)qa44f|(YpoMS5xXMy632GRm6nseME`fMV(&D;lln$AKx{H<7pgWzf2OUK$Q3}g{3zX|=oF!s@RWFz;p^w#v5$Jg)b z-v^UrDE8$D`Q73d9On7SF2SpXatnt3mK>O3^9L(T_U2lu#NxZ?Fof!*SE*x|y_G2u z7%GkM2A#jm%%cvIkVV?w!X||k7@jo_lLQ-C7Pa#4oU`!mFT5z=b)6la7Gwf%p&1~u zSyo1;7y_>0ZS*huF`Ylb)~s`f`Ltk+e6$$KgA*MXe7@iqAAwB-+xXhq6QEK zfrR>qtxgs-z`{X}VKywJZDm2y5^$!TLdF@xu$CPx9JG&R`jgO&oR6eTbGgh}ohjNf zGY?PZ-NCWhOSa_Tthg@1RDmm@d$gEzd(C*TVXhA2(O}wqVG8po4i#_PLnt6hRut^; zoq)EvEK~o}W&_vqDUp@KudxiOGiQrst$r&N3sNK-X8%fQPm!>Zb>`?b4G(wGHWFz) zSWHXb)3dU3jjG1K14r3VFI?$pi?ofsw0_3&B?bUj$c|#Vj!Z0JgY9D@kHjT!dmQ zPRZc>&@GF<5XMi8dFN+1k#LYrQQ6QB>Xl~&^fJ|nO}^tGiq=#u5aGc4P(szITd*iz zk_5;I3Pelp7H}pR`GPllw+`ffSS)rC`a6q$oUOW=kr+hGUsc%}kbRa$^ln}=-WG7~uLdY93q;WvQYQ|(b z|9z|a89?^^P%~puh?+?MF2|43o1*Sv%rU zlT@dXBC4}AxuahM@cqj%4BuIn`eiY``45Eu<{c&)^vX@JK$T2m=Q=P|F_IgE@uAbG z!;pp>(-3gw2x=UkN!~CRC!@SLupw8;`7i?PX*=ev=z`72nOIBuidwqZ+J#}lgX>pF zx&%&mV>A?{g+u+ua*a$?6CFHps)+QriU5~uK5mz#Fc|aA2c}ndTEBkv|KB%1f;R(` zQ3_*Tp7B3mkTsAYffTVUPyn)BR+5~um`D<7!2!Lad zU|~N0VL*XZyka(|q2OND@^s8QFcqmfRA7S{O!^O)>sOy0ha`%qQB;n=J9~1c1H+4s zbf_FnH%9dn3r#XKT2@xQfR3TcEP6oNX35tK@xBmBOLSu_`3|FYFpSj{%0-@RAdU;l zrw4+gWMx19fht%Qrn0v3i@4wCcswWuhT%YO& zB8KHpZOP-i4i6^KzxR#2UCh$9_FxK~7#wqGBPR>BGwKnAd4W>;vX-g9p5H1<$&SIM zjQts=ctlrIo#Da&5^KZcYs8SPDlqB5EUx7sc3rg+t_D*BQEiw5=dO}-ff;mkl6A>2 z%_?S2)@SmS-h@Qsc!8E*51oVY-GQB}{(oTjt9K;-ihjFFc*J)D*2rK3F$_~csQv?k zzqWK%pniCUiovqhg=6;kdE`ju^?-Q4OWk)cHo>W?d(e9_Ud}#Y@OPAWjTV-ju0X3a zZ_q#C7>(h5dayxSBq4T*+e@rX&urB~Nzd@OPxJ zixyS}w?IGNn7ApC;qZy9O%bAX3m@(SMi%dY)MOV|%T~nGDO5q2hv=JXr7-(TVS0nT z9IR`@s)w}pmC>vk%)xZOte{oSQy5i7>^IPO1Pz9IvvplF-U500x=3zZ;3$@S$T86Q znJJ8UbS-aHBc&mx>k|lbZ%)T1 zSuhkBub`Z#L{gR9a3rp>oPmy;pbZ@Xij--Dky_7A1aMKT}3P>5|eK3RG7atgL z<3&zw^a@K|nm0wm?`B>N7LA@{_TAD?&LqZTE4fs%%nl7c=)W;iq?blMghtn%e3K#q z-|9t*zMuGta-JD1?NDs@nYELRV_0Vo$uswlW>bmwj1Zhgu1OQ5wYd`bQ-!H zW?9A&oR}@FaAEY2^|}L}Nh*ezo9^7j+A&OY%hg{@NkN#Tn6mOua+tixghBblrBa5I zrIesoE>v0IszK#s%wtwbPO8l}jNTg)uw_I$j9`2Dq4M?Oi%jWN^3|ebz2S88#i-%J z`KUl+GKrrLMl{h3-&7!2% z|NJ_`lpKLA&RsWzgvgBexz2Y7>r3(A5n$a)=3lhGbtb%^KugkKNqI!#ht!)>ZZ;rmk%uJq!mI4SF7*ZmyuVvfMZ-t{^&*P}C8{%X zls&u_L$13pCdK8XyuCkSOs>nwhE=Efr7{(%xAj?8>@(2CUPpw~8;GLQgGwA@>Iy-o zYVY5*6B{wm(4UnVW)E^{kzr1w+a2R%3A4vX3#IAgQ9)|ifZ-d*9~c6wX|r^U9&;Ji zoOGmQmOA{9k}r&}9c*#n%s*j#HKB`^8bG^*dN1THonCa$oH6;C82nT0_q z%`vExCH^?{9PUh4xRC55;m1{QD{(#8Y^EROf>!Po-9=9ZEcs59N&!@Kh=(80uV zsHWnNm{_36READ&Z`DUEN8hsHu70H_Ik1=v%hC%oRZlZOJD<6Cy_b#e!8%xv0Lfy8 zRq82kfxu+4)<;?Lo+Zvn<0*gf(Bk7_PEO0Xv-OZvTj=_R)h9hIdKX`5%yz@#nPfgv z>hWY5#vd%3kvLYn$f)1W3LV&4Lh5n$ABFq?A7 z^f(!|gqf}uN{_?ABNcDJd00hG$Bfies_tN5@5DzIMXT|sh%&;Oz&GGX+C^Z2vFarm z_D2XAKVha+Fc}sZT$6q2a)3RMuc}9xsRK?!EtQvl7sVocFz1_^e4fz)Pv|0wMWSe*gB|&6R)?Bk zLb`h8mQ1l06DfR8Ojx}Lr|O>i=jvA~yWbb46kD#my#-Jt&)V*ZySuwPbmMM=y9}<4 zyTjl*z~FtOeRN zI?BeOUrY;~L}-L~WpPSH5n~H+O$KBSwuG3o7SOQCJKw(qFZTuyy zn3z1@?SoeOBnI$*$&Ea^Wbhp)+yY!rI7j;qcdQSix|4iqG>)&tlu zx;u#Bp~X~GIn5?bfp9A#v%JrsL(xq`JoO~8``7aN0watt+#yoor%7b1h%7E_boHxd z08|XSuo1m7;sh`80!q;o}8l$r^g-`mc5>hHJq z&GgH%I-xt{l=AK>{|BbV*xP@ew;#8ua`(NCezFLUE$n-LGo(QM>igdf?EiYZe^6Nd zKSFB$F;)L}vHx>O%|CwZf8UM+z|95t52fa>QT|6RnSj8DRl9?|>qp|ltDT*b>>mgH zkL3T2Qo}_C{5Pcr$Uz4D$Kw5CA0QhUC)dXtseYvY2fgMa%}oa2`FB2$4DgrM^Ups2 zq22s%Xe_yGhyE!Box6l}wk6RaxQ_8LPUPrz@HMhkrcT$EW=FV7UM1_W#Ry zo&(6k^S?{DnbVew-5x;iI{titgJ9tNEK_F(6?h6lBLvU@&{MfR-1UuHi;POG2l>|VmjL7vCJ zD!DTmU*=X0URQlc_9EL?b6D@^3{)ZeGcHzlxwo55z1X4Z{W);@<*%+kK=T8H8y8;J zj9L&UaRjD_s&;g-#YOg{0piBnzJ`KXGfXsd8=t``sW)P=7^TU}jkacJhgqkmxqlR#4!{fJ?WA-kRSOkdS0^tdxju zbg!kFo@RW!zUGlichRY^XrzT2venWt5&zO0cm3mv zDx#B@e{|_s(cB>rOOuMSk}xr@?sL=`dxhc1 zPH}<9pkYcX__q$Q1PW})EX>ulnO&8vHa%&odU{(Lk>eLH!#K;^*zv^a#PJz15sDD+ zRD=!b;fomy^ixfWCpT(UNLWcFM)@>ZethE3G)hV8#%mQqRp#{0CaGgQs$m`TMtL)# za*`-h_q2(>aj64_#=_;(>G3HZ_**@xfy%lyH=#4QWSU(c_7=2G0Gn`4?{xcQ+tE&zpb|3>|j_bF-QDkPM-y^AjJz^%w?kp;FmT*-TuZ~`EG?vq9+zZPDT#Vv6TXs!*0p-kEpA zTm@CXieYt0-H!+7I#s=0Y7Eyx_txMq+7=17Ifn1@cLvzk*h=fuq}$ z8Yk(r%sOT_{OV=wFxQLuxdE$a0kVYt1<yQEc%maEBvRER^OswKxk`o4@R z;cDCH`pp(&TgDTU#9J^(`fc>Xum&X0&SHAr2sM160?6H5$*m zg+_qii=98Sw>mxH`k8l{G~W42bFs-M1{V>BRo62Zhtg54tz zjhLlmI-l97BGYk6Po-@^}^Jwl#e2e)>Oz%BI)9mGSfrP>+vV-sGG(GIV zjf!Oq7n(LMWTfN&GKm|y|0&)nNRHIN0|d8?*q49qD5SZjl3l~#yLZ{u4yJn{u13tN zAkPcUdMkphpWcQK@zhz?9%NKKhWss8O~7#45YnHFeegXj3{rB)&eFK{TziPWTdq{y z9RK>MwC^{t6|s^zs)V{9eBJyEqQlOpGe9%nB*^Zo^~bFbpdVGjK_oJpNOyF;(1_Tc zvm-CgGYIGoqshWV4AQ%WO6L8C%5$%7?cL}LQ`kH|YN5(|jm|^vPCVWDlo_=*$HE|F z`3EsFe2{v7tP84iS~9Lf(ZEE`d`!Qv4;UZ!1b~xxA7`<1s;D0-G&XOPkvxOO=$A)W(exJS83B3kicKypSC>jOoB+Y z)+2SX-(5-4LMmc|H!z6K*#xbIWl$%DG`9nfSyU6?Q3W=SQG&n63J~QHzYV~?wiGNc zeBntMr~des&L1vO33Xm_nFXg2kbyo~PX0u^fRtQ9O0o5#^LNZXim4{d$Pl^TnuXg@@s!V+%y=7_LN$-LVk ze0y;{yKvfcLW)C}j>Jb`S&%cu0S4VeDP6p5TR*Fk=#plhd=WM`{yjuEBT{$2gZ_b*j1EG(xG())zE*?9}af|0*{krT(Ij)MDKLAnQEv_ zi{8B&omehg3qzqD%9O_!u-wzsOX{Z{+_F*1@!gQfS6ekS5`=H#7U2oif<8F0ucr%zw++|I*6;Pe#L)t#q*D_{huT!*MG0; zUyMcsRy8*hS1(7i4;k#>Z1-1CJKO!!8ukw($;{}Ju1;tsYB&T5Xvre^=lHdJ}ZK6LuuE)Wu8mGpF#Qgi(vME%z$AQ{hp z_1DLy{{g^6U{&QIR`=`u*rYoxKKr-Hc%}Z3-Immeb3#P@Y$_^mo{Rd4&_A#0G zJD>R141xE5lTGzYOT|H-6Uk5bCq-;Pzjh{%(@Ug?_?DF&HA#_Rw7csv@ez#J#j%qu zEpKzE*mF?P3L$^f^{?#hoimnxVzHC=m*-Qf_7wv?BhPy;Z|Xigp3EHwSE;*I?FqLJD}6S3wK_LLSeZ#e z?W^KGdxzZ_fX}6KdF3hZ{-MV*gT>5&-^b5{>eJ^{PO&ELd4XAo;Q7a@vh72S@7VNm zvQ|;0lMj&;rtok=pP#rX(x`Ici}g>JRg2~6v}{U71UO~Nr6tVBY%8vjG%O_gxPlhj zqJ;r z*_6Ht^$D+zt=lPt91*f0vmuNh080m~aa^voab`U0wdLyWB98%au|J9-;S_5G_YUVN zH{G~KOO{%J66&K72ppo!zol!jB!8NPYqPEenh?$P&Qa{_p=XW@JepYm8GoMG?&Zz@ z;ZBv{a0n+@JjT?3Oy?>$ylAL$acTw6%Fg_5nQlJq+W`$)MNTVPVlXvSHet^QB#5k5 zmm(IE!5J*YS<1Vp8zO+78RF40sZ9^wpda?okwsNA&73fiK+nW44YOaQ(NGS-EDBzH z1$WFbUIpwRX=W%_iX;Cin>qrIoPhy){63nc`qr0!w=)!QTXu9yPY^xRo)UR5UU9+p z+nz$y5~j8u-fp8(hs>F5fzO;t&r@qLV}VnNTCu$4FmE3%9X zkI{ZWLQ~$7R)90D4L+f_75!6EZ@slN?^wMCxOQaSr2>?D(pVma3F8=c-lH4f+xG{p zj`6mE+6~Mvo8v*a$gJ5RkB*_#60zKx(pp3dBIE@3`=zBg`SXX8?qrrrz&g5`qL?z<2e6 zrJ+q*Qv(M;DYBF{6iLIBucW%ip#p<8Yy466)Z(PLE`czrnMldh1or3ZGxf@_+}&D5 z1$Uuxvtoj;(;Y?MF5x0x+hpcgXu(oN8`NMvwWFx#Kik$P6Q5(H+eMSm>kQEQr?TW<~KaMydL1c=pP`H_*bCiNOhA(a{IKVuYis ztDxBZJf!zrM!ZsFk@YT@^#2y-P_+{ZBXdPsWzXfEC-!sL&42N`)aFrx@8$97Az#Pa z%id`D{i^u%I&nW<-@+@UOOU*(!R2&Xo5t2-$d2ZM3~Y0}M-= z>oxPcokVY|8}Bvf!HumTHtb0eGVUlx8AwPLsF3=FtYjctiw_t(=cFk4X|t;i@vkhJ zm_!%77o}k*B(F`abc+pX)lGGrsHB+wI2v+sJTiF!BfQ9ckvLcyQn;n#elk07TxvCE zEO7(2Ij$V@3#EPw#XG&hjKf-x~;?GD#bU*dx@#)Kd4mr;~SG~M^-&g#h?-{6t zgCSL&n?L8T^yz3^wU=5FoWB`BChr5*+m9N+^bLH+@)ksPWz+0A(*i4LKeff<>It>! z0@;)4e|1IXkYqq4I}8bhy(RMds|B2`Jq6yil9Y0VsVmeC82F0rh-i!Jhv~LF9c+1V zemr-73)-Vl`uq0Y@jL!CZZ2lI=zkmP{}~AXF8%ynvHDma0=b!fjF)s$iW+26mJTki zE~d^_j;>_fENtBLfB)zIYoX|$q2_NfT~--;keR0$h*iSO-OAKVRZ5JE3qU6D4_A?$ z4e$|MY}_AV!e;yt=4@tcX6!)rzYkt^&W|u-=V9mJ0I-{~n{x25o3op9fH(jg000LE z7Y7%Bi^G`17+}I-#$g6z1F!?wft-Mk02%{$06ai*fGNO~69_N|m~-*~0YCsJ2*?HG z;^F`r1C6=3fgm7=%k*z0-0Ym3oF5sSJe(%nJe;N-j9?CkeA1V!-R*|#Dv?#gxB1})WqDFBqjNAXAVDH;4_yW@7r$T%aijhzG=D$_+9BePn>lKjQDff8?5RnQ?(YX1pH(Fav!A zkNMw^)65+B5dd@UkNBwOBmQ{^>Hnvz{k-`SS`))*gs zz{&Ra1pE)_GOF`iG9_;nRf}#Cdcuo>zjWkS#aR}A{rmg3V<;n-e5t#vxwKY&{M@)q zDiWB!;L*CVYv(T6(svIbLpkk*%C32iSl@+M7w!9PPa(tGTOXlV)5*`i**~{_Ms`m4 zpYD^+H4hM8Kz2Ob-zp`05ws2FXD6FD)H_@XuN{$Y)xY>>zeSQR?LRlqn_>AU+QkZY zbsc5kdOz|#!d>!t7#+P6OwiKb{!n}8?N8naoFt9u<6&h?ZmAsg^u7^)e`x3TH@HCK zCwbVoHd$@zyzBA|xz4VAZuM|`J?22pZXSGnKN}cM-apnmx!lTegc#>V@)eG{<(!NC zQCxdWLsaR&`xg53&nx~z5eMokkoB!{AN~g^=a2V&ELhzo^LDj$@W2SAJKFkj!mx)g zFDkF~o&y}Kd(M9C%&QCac0Pkg{2WMkP{p1;cTQBbPm8cC_0;d)1f=&>Cf!Z6`$qX6J$An4*H_!4 zociQv$5qz)Jw6Wfyjw9|{rXXDH8iKxl;HUzmXMIhTU8izwVVA;Cot@i)+E0Dh_@K< z1ml&Xb>qc$zqan{cZ#>Nj(iz+mw1bBu?n+3wvv5&HSE|EtmID?KX< zNL*I&RpG@axe&G3YRhFdyZx*pSN8jIZQEq6?fT>OeJ!_%pbGkc?p!%Z20<9p@zXEBl>@?5Q(%sdEuC@^X56_9em|;-ZCyPKmd!=4H^X+2_iF z1W(V9=D}5DOp!8sUMMV%wgm%olBQ z9;x5)=YlHc)J|@S4n?oxj1G@6Z(~VrU~?itC}r%@pRsp;11J`TU=pTpM>_ z^&kJ=-A77*y^Zwhs=Ezn1dGPM~suX}-R=Y_~Be z6eW5c)LNPPdz`Z>afQ@OcZC}|AKty%ado@hCsv;Im+EI5G_*jWIN4WqhgBhn{NBFy zxk3Ota8YHou=QCWG7~tGrc_(Fg>4}SpZdA)1I725Njb$ltQ0`S(f*we*UH^kCYNUl zgStb9edt!2d05FcJkA}(&?RfdLdiwtXWg03Y7ja4H(ej^TVI4+?>|=Ps6@-3wl%V! z>_;}b?=Tmk7}z6lXr;@7+{&+jz1FvanU_e6pT73^vQisM2vD3tQISfuLhSZ(GvtMv z-ocSiNp^GknBn1+shPyjfghn&*Rog6PG4s?nC-9qsYx<^4=7P=#5;HrLQ3~>H`YXo z`1PqClofbw`8$=E9Gpn2v0YeF|W&wcCi+fXI-!ap^r=6OL`kDpPODe zamE>7`14EnOe6QS9$_9mJguxYR7_em>407||GUa%0dYSNU9o@IPasE{IT30{CPzSn zkt-St=0xJm!r|$Phk3#a!`NT(-~vB)OgW=%<26n;_Q!( zjNT7j^}xP@n%<6~*X`<`e(G%j9JZP`^Xr0GHG_-3e|%lYwctI{YgT&4;=hP&oJ!AF z5e@hv=Df}JO1>w?pmnT1x*YoZ&(B#Ld>XK%-0ZcGFDz6f4+__U)MPT{gA2(}=RfJE zWy}?}V_co5|APV6ZL?!gc&NP#Z3@nNXK_#li-kmtUJ!y>4riJY@VjvV*)ZrUo66~M zNKrPQ-9QQ2#uh4WfcH1pKcGm}3@iT|$gRO7BM`@moz5dK+E6w^%7EijeFUezwJ2mf zMP?6^ik<#zAN8+%$Ql$4Re8}#$Fn=H_I2hx{Dk@(Jy*7he#t83zQt5sUM4!?_?I2S zn7)|t%ul@mzkf|i37Arf9}TDhzvAE;dGr=SW7rDL$t#0f(9!r~V}{W35N+y;7%`>J z;Oqot-lO&OtQY?Qh^a-XRHpJfzxWE}xmX(GW-L0`Difin93hQmN35P|D&3jK2?+G} zL3j;{^{t8*Jq=@L^`*Y9BDY$R$VQ>28rIfr!g~AUd=c<+kVr*Tnxk4}76=WzjK!qe zbP|v_hf^c*7Yrxtsjq;7{kSAu6Yh`Vsq{RfGR113mS$>HL1SBF3r)aKq!i@P#0*=J zhZA|~uaYq61H$hq@sg2n9o`SFCoEg#@GRXwJ6&qP1Bg7!2V0%@>1X<+62#HVTdsg2 zP~CuEJg+F8L2P%ysWQ0J(Z%Uc;hjYox{h~`+HMI@(a#Cw;RKC)625u160qN8m&DG> z0yihJ4CUdWE5X4L59EBnv3YunG5ufW@Tcw$=6uyU_Skf^ES1nhe#zLLfYmkQ-A)CX z*O97A=MKbB;4O2bHd~QHhc+l~gMa<$ZQQ^FozSMmZ0~)79EYIv)wDdLz@?Deh=JuECGrPx$F((mL&J{RIx zbRlVh(vWt&8l&zm-Rjd@+XyBOyy{Xl7Xy9+1S0N!R|BUC5U# z|HkWnMlyB=q{*OF$3g)tV6TL1myxs85n4TO7#}MN?d&)m>xFokat#B4(DW6VL<)HGw&loS?- z5npyqvPHCm{*1S48GpDvA1l#p-{}r7{M{g08q)aUf<2*MA7ThH?o&|$0_SHz=(h%i zwsnTr#{-dZ0ySH`Nw%o(Lf(_MxtPuaq-bSYMdS;NFM@V+I^T&wa)%%*2(*l6zvswf zZmWXSJB`M!MBv3bQX$yoK)Wt}H)Pe0-t#GXx5XTuKx)=d;;}Z0hzj|$>HAW2JyYt` zeQRax5DIjZ-mj$zin(F-s~MErMsH*!7a^;Hu58KYA=vERRTvkdiq#*6v8rKcL!)Rl5aSC)5rD|2hj#sQD0 z9|^%9;FS9wsD2ALs*};>?Hbf4-TF4i#^~rbbJ$}2$jM8uZI70tp(Hkmf;`dK>f)8@ zc1t_ELNP9_ZwqcimKnhU7gfDT4934087WhQ( zAbvXw{!)5LM<2LbGwItp{&1aNWN%|~!WK^5ZgwZ9xh=K=bR8;^5~PTBk|W13`dNOu zy$)M9ba7l_B)RSA*aTEq3&%lrcFu4x+PPF5_|C|Oofld0b`gX1_k&c;A`4u2b=(>u z1xvMFY_ZKmWF!F9{udv)t7v_01G^}R-=c|xhi9T};{BTmVf3wiHqz8WKqEyskW0=R z^)+6jBYH)v%6p423A_XA8XdQBVWseN_R4-{vK@LBhH;_ud!wRFw`jD;+m^nrRH7f* zYkt;XtGDD4dWN%@$p~GBXj#@59b9XtF;e*xrVfG9=!jAm(>3$${#4vJ&}crX)YIbc zbut%998n}a3HLw0CAB4Vrj|zMz!J0&_S*3GHr8rUBwy|%W?*aS?9HV&vrM?SmNIo( z@U8XNm!YYsN-+KHLF!@eHs+kta2W0~&e0iMMGIbPsIgMc zC|*q8W|=``*>C7o-tKv8m@1sP{>8-TbfAMZo6l`s4p&6i_(8Hh^+5ZEI9P_7PK7Cj zi*{5|#I*GL=$3V{YVXvz2695#Kts<>s_UiPNwwu{<#1!HwTh>RpTRSY`7#a_Ld-Fl z{fYy0GTvM-U?X|qI|A!4se04OQWCqhYU}gz1r!Rg1+MjQbU~3iiv4=AZ0|Qz=$9IP z3@!I>Qn=dFM>PDEGL+Umj2@z_J+A zb_Fw>?Rb!mLDVWzAvMTEP?$`|K3Pir9iXz$(XgocV$oeND5Zo#QwtjRczw7zp+;me z`AlGYuDJuTzF|3-v5<=C6p9_0Fs8+d6l&of?vta`Em88D`4k-n{HrZd-G~e{b9~S< z6r^w0g&LZ&!iliAUJ6!kmTsGTb17U*2>)01qF}?;y*&x_L=NP7mYZI0EAaZ~&4fvU`Rr7;iU)$!H`N#u=MM1Dfm&Dk=5zmki zokj90ALF7RoV8bKzJ#VlmU4VRo8K#7P4bw4-9mX)pf=OF(PN>pp=}Mi3P`(4wJ`1? z&dm28B$M<qy?Isb zbNtBB%2Hqa!VOY6axm5?1oD%oXuF`?lc&VoXW0-!uws7@b2jBL-H*5^3}O9zOE!>` z&vBARM!FDe$AW&;*YOGG+FYhfupaABB}^-n%vfKTBTgbLH`#AJOixYUZ}2~XobuU< zqDAJhhB3mN@BC;rlpQhkx>V&u4NoqK9Iv~V&5O~f&ch8DbrxJWiP7_Oqhkq21qF}{ z1G;HcnjMyTxFm8r@ydE}*WJ3O)mIIt7uX zJ-KzpC+79iPfZr%GTFBa63}Tok}7<=IGwQ?!Grx;(eQB>bJ2N2_hZgf#lvFPZ#h4a zzhL#E&E70$W-dqvnx?j^=na7t2L@j*|M6;3(w=Szm^GydR_3xc4g6}gP88;jY3G+L zax46&QO0G1O#XH@(U4Ngm}`0l_V5sYn@Mq>s$usEn&s=fv-l5#-1>|>uey4MWW}^< z?fPSkym^6@-;!W@0P(o8&_cc6W}8gu!8a1hb}rHih3SPoEeG2?Aeko~5LCP5E7Pf| z|9PmZ*5!+_fi-;F#Y+u_BC1R+?Bk11!WfvAlGm&<%ao!9#0>OS8f?-QqpZGi=hee= z;L(fxWod41DH7sLA1h~>6KAb`*t6ve9x~JI28c;BQ0;pV2f<4G%_V`i?)wQl)l$j2 z%(+xXDL$6I%oAxCWj$^VE%oj^E5OoVAUd271B5k}S436zf&-O-eoVDsg1yui*F~Rb zbQUVX8PG%ppRK~sNzvhbnw@>ry80FRB8LL(*qFm{`KuV)osbF}2T+s3cWZ2gmO~5) zzI-tKfh&xGX^g@V-nymI(8BV3Pz|Tqx@(@ISVd$8p7vyM+NQ+i_(+W)Ly>lKsP^^} z+^COu;99W);=72_(?uD23G#?MKLrDMU9Ed2FT#q3=yF>_KQPu5l(Aob#_j+~;KmC>edNQojWX^Iipv67_v zuT{yd-tylBgixPe#ubipTriO#Sg*Dbae_0D6FgeD_F`W5^)nP_F^dVYaHNiMpU;02!96h_Lx;SE;=Ex#V&iVXJJO^|t5zR%?I_jh6kmxu4UEQl%cnPZNW#_36oG(r>#zpl~c#iPLJ+ zJcGo-1{L8>{}IvrMGE#*+|rnLGKH+G^gR ztv?Z^U+;ku4-xJ&$MWCVmS#jsSQ~9I)JMwok=+Xp+7RDovvF>u-3ehTLOd?i^l2>M ze5otg;0}1^*SuUtmyVB<(^icQB*t4&*8H~W0NrbFwdb~i1d&^?RW+}akMqg_5dF~i zA1)pFrtFXOZ`s>dhc4`O0^HZ1uZa|T4%r}9%#F;bJSB*TBGJyjL0y?slGH3FDz{QY?J@%%dp6TFjp@bhqP~jE3}10 zPv~RY7l`khrotM+<7H*eM*N7?X5opA7+gmJDGvFe1MMD~OXRZB6821=JHaGpeHs!I zP1>>R!)3mKO;ky zhw%$^p6BiI?!9DGWU#Gdb)+w@c)b|Q6vJpt2?>xK#9!M5b#)qfddycF!(?M*HV>dp z?ztxJjxUCqthdB21z$^1Z*a784VvV-Y!^(nL~6>oU7_$A;2hdj2E&C4FkVynL%W!O z)-jF{Tj$Oku2}1|!G)D!=_g<-B!<8V=W7Qm8yaqnntpk-fSpVq^7=_j!BU1%n?R{1 z|8Sg#gUG}Xa>Kq`n4KNeN0@^GCLGSIvemHBg|S0aGKQ%iV~NV@q!3#Rl)@3WCY4!j*7GMeX1t7Awx1fhsXK_pH+}=6(?34%MWc zD;Z<>bvMi!a7o1G6Do8Od+H$X8!|9#o}WeRjE_gJI4^qyM1_?b@a!XY^+)8Z66&oh zG7rP9KHCN=H|Csauq_c3?gN{tWrFoi;@6@W%-fQ?TF;s$q0mAQ{23y0LPlsZ)?Hq%!06IJfQS z>*<4}_|FSnVECtzZ!N}4V(C9G-PbquOxWf_Ibpp%9gcVeY?kEDQ)f`1Y6jB_RrceR zQ%L`zyMY?n9)ggU5~x@tpYf0x@*=7HdCarGTYi>u$sU1@Ih=OrQj8uD0gX@?ovJ?~ zXO!*YWtPb_>m*4=4j4+sd8#EmvK1U(1%0C`y2X-OC``Uga%V-%md0Nh6yP)C0R;aU zYIa-aZ)dF1$OJqhraBH{I>2JBB+x+1#2`q35D4RX({;I3_o|tFNTk-z;hL`53lU&0 zMxG!7S!N5KG(R}G-65Q!#s!H05M23TdY!>2$7fAXU?>54Bmm0eFtH!LkUZYo=iQT( zNoY-<^q8`m?r38f;Dk|b8X?Xzw8ek{Y;I53+-x0siw7w^wPHtdSxo8hl2VB+^~uA5 z;LVf{8I@KXCpQPbh1BNSyimt>oWqo|#5 z);yGOlG4Xz2zhxgVKnR|v3y)~z3U(diqcxW67JTP;bcN2g9Mu9`cWtlatJTm)Ik)u3} zUj_GK8&$WsomU&_Q9e(mJN7F^YjT%fX_%uA31Vev;sQSbQ+w5f5w&u7eq&MclDnv2 zyx^5mV9y8>hiMAhc@b7#XZf1tepZu08b>gZ?sJE%|kLKaVsy1@vn>;)ixp}|IQs|3%6 z7*_62u3`vrYouKpg-LhU{LWyvIBmHmccY&!q`ws9GL4qBAd3Z9Po(%SOnWn3S86m6 z7w^-uH_H~J&kti&5AV;))TedrioYHw2~q&Yfz!7-DHEy_I}p z*umYZRsoUWl@IN90Cqq*0H*9u#-$yV6EX+wL%+~LLttS{A9?OC1IkF>0 z2{}D4Kh9XW&P#C|@ICbxb9#zPA@N4_JaaRKcGI%K${%a;&E2ETuGuf)qnNfqSaGw0 zz*5r(xPa48%&uLk>6Wy^GWofaQ?iPjsM3>oyKpT*2(3>AW_4E!yhqyvHIckhHt9Z@ zct1a2*p0%!dQx5hJ{B#b>ivI`>H^TJPQQL$lWea3WE?yAnm?22-OXr|PGqa+;qeo; z26n?wmcoVrL2L%@t`M!73rMLNVQnsZi2x?Frj+B?J3<;;g@Pe*)R8v0%ViYR&mg{= z6l0mSPwio1bpu@_AXpQ&9=c}a^l~wg0)5FZvfc&FPeCWTw-Zx90>>(~3?MK?tYMrlJ5i-eT(m(o^9*Yp%?LA`29$>rP?cmfD(<$| zqHpH5^9{0`!}k+E&5v$8({l-xpl=;o@lQ}*yJ`)GZH;i1-^8fv5g*w0Y@`v$yC(^S zw!#YJLu)A*NDA344_%Y!ssk%$rHx>Q%T(L#30nbZB(;&&i@X9Or|A;1T3y}i4+2iA zqrDWrk!Fg}eZ|v>c>QB@QGhEY4fo4DN=BF99={zX@?`ZgvCUSx&J(6>mQ7?YPKL?H znKHw3U{9VkgHT73_JZU{j*WslLg8d=>!DTvuH2;&F(USD8wxadmew4n2ICj%&i)Jq z%Fe^GhOIT*sMR?*>3$d3Nx133`aiOd&(7A1qYBU_^yM|F^aP_+g|~GCS^s?U36E9i z4E!QE=S<$0isY{#9?(=fqno!Vco^!IOiy|E5L=PR7~f@=_mk~Jxi2C6;L#xHl^4zk z|FBj{K$^sM_krbTvru;5 zRBOIczX?IcZR1<`ly!45w6owQ zM?V29~p@$~H zaw;T5BS&qAq|Mo5mQFIDZ&n*;Q>L+MV{FE6&}l7NR5EyC7Q$scE0vKRN(%LG)Y5Q= z>yI@P4%TEJu9`KeI;V3`g~biOL1|YBcPWZ%j^-uyI1yH*MMDf~naFHqYEBMbQG

      KUFU5nTs2?brrD4a}RLRkU6*Q6E=$4I53x}>`_o>EHC~s-$(b2RoP-{&}trZ7$;qKVdggJYN(aq3DWwJZul2Jr*(|ime%9B39 zc?_k<@*Mn!!}YTFWSXMd*h69IB9!RyaEm_CvB;Y=g(j6TTGgB6$#yD`qFn{~UO8uN zgUZ2JfcxZJ(zqZgA?2!Mj`Km^^zr^vAx=U&hQFBgu+o&QWVTr1a1s=VvbUawn+u%E zwJRxj1a~1WeK{s`z^qJ> zBuLM}bOxZ-Zky}k6?QEA@%bG^_e9^V?YYzrnWtwVlM@eKvS<5}hzMX|v4p{h%pM5a zPztS4t{?orpTlCZNd(igkRVke)%-9Zl7#4jzkjKuY}cKXHHDT^Whpn8!D?T;iL}CP zbCDo)CNxL8rIz%z*&=Vc+TXIZQGK_z9KXa2Qbr|12Q)IlFcHzK=91g6u&QKaN16UA zW+4iR|5GYHWr~`-^gphS#7CTuPvtXXnR{|{^QBKrx)W}w%hwkJjH{C zhkx!9RfYd?9O$>YxA}Xug#(@jQaQ{B7Q|8nJbPbqJ55d*HU)Jxuzb#!F9ox-asT}i zfQS&C&)ZUQI`Of52KCebf>JnX`|0bLJ495oXEK=i+C zYz2X>2=|qRnzKUqYPQm-L9Z#YN_g`9{Wt0OVx~8tL<&F5=*8U_iwzO|C(BA%sqEj$ zKg8px>4b*J{|Y1VUB)|)rX3^fVukc%*Xgis+A}g8M(wHu?EC4+{`8%j>pPSsqMJor zj!@1z3GS_(C8L&|M?@IIZlt$ySaZ#q@v~$qX(d6Ttvd| zz=|p~IRIcr`R34T&R3`of^&7HfS|WEE;%7nz&_D>4vro(TFQbFL2x0UWDawb>?$K~ zYC1WeWo*Q!RJWm5CfSnWhs!!?yO%II)Cl2;&jg{ z5+bdOLIG!wTvz9U?fOez0If7FLtBX$To=~{g$1#F94NarDW&*06$9|!G#*`@N>ZyE zcG;h}2GvMj&@$d{KLjs@JwNss`ISc=tkAE%XJ#J+zmAh;nI$e-Mel$z}kURA|+J#)rEzZ~7YV)l{MRtxJ|Z>jpV zT*i>yHY0n{ZZHk&#YBO{RJ%c(Jt+1Ga(?y_$-@h8zZ}vYPL^pLsK%&7;*M1s&g)+u zU62F8txds_u~)nLp)>ifGAd+L2kB^h^S*LZiqcP6T-ew+EJO3uhhZNW4DKK76H5Bb znd8!xp~UooUwRaf<_Yf571+hc!}jOu0uV-Qgty}pCLuzk6)Qe%`>7nEqRvw)d=t9N(M$TRH921Edm;Uw#e`=P|TvpJo*iEkqX~y2|h*N++9j9#d zDR)^7LwrDx63akM<=faOu={v^U>dT^sJ3Z9xvu11A^BIz*SsgQgQ}ezu)(V^j&aCY zC3>=I7Y!z}_GYNU*?NFtvr+k&zOtRDYK0xcSXMpU!p(idg1E_9-*FN(B)sYE)1LBk zVJ_?HTh?7cGj@X;hwZjgj>x0rJR>yHzHK+Rc0>ugU&UNn& z0K3_XFtg4X4JojdDS{vowWK)$npvndTbOp&b=<*v`NXIalINEs8>iD=?C0rpKhz!J-)ck#3jz!#PFk{s$;(Cxk27n<> zF|Ds|d+As}_Oc5H+v)z!ZVvQ73^WeQ=~R{M!A(`*dFU$yv0s0zxk}sb@$RLDP`GS9 z(7#FMe3|)&1jyuJB%;?XNP8Dpo;=WCm0-ho_Xbqp2CCjz0BDX0$wDLD$5*ye6~*Q6XUgpo!R6Ui$M1s4bub^cz?QO};VM!)jEh%xE!_s{2L${O>` zsF0>Av_6%p?Z+SafN*N6h+nm%&AO1A#DCo7dLfaO2PsfEiT-OcS<{(g)kzPo(kAfg zICL2pUO$R@!dybYRD%y*a(sxBdk@gvPse;v3~yIB*q5UGgm>b}Y)HDzSGfZkKH+&!XZArn@E#sSD*GpOW;mRU*JL|5@h5$F z$gZ69rJRodoW@>VY%zv6C*4)EStuHWTSa`qfg%%!rLOdk<0m%2}-qhY4+Sv&AFj|bP5^lxYt`SB4;ib5RS%|%rrjhEo8lwYnH zK-sFx`Ud)xRyu@@TcDsTpJXb}s9z;xZL}emKoocWR z!XO8XW3XcvMCDZciHAb%W*xC{v+Ub8RI*hoPL`4*H3^zOvar@U9Z+4V`avnDp5)#q zZpoMd9GcfOgFm}5rrDudi}_h@0Tp1u+s9*?jn$<@*R1X4Ao{G=ND zJn}yExg=Onk#C#lr;!f&*Pjj^cQAd;lmGawS_h}g$NapOLUb3>*<60B5gH{*K?H_u zFT{o{Lr0-E*r0&L3_?f~U#M&6pLh4K|qMa9ugZ}*TX#6hp3##dm zd9>SiJ`5GB4Oy#` zPGXNDFA(ohNZQ*0mna6iPM4TcME zJ^?{!bj_|k_O4@Mp*d2|!m9Y!nBntORZF}fj9_N-`@qzSg$*O1LLGJ|){t6HoA*YB z0*?2VNz&VQodizLHw;h>K938(&8d;1HdRY}53vn6?@mwq;0_{)Anbdx<^vTXtA0B3 z1wtW5Ak|&dW4e4^z2^M-7(yNlo3r3b7P`Hea`=n&RmmO8vlpAdEk1Qe0$X8V`VrRKd2+kVLF0c*mmWZ`btTO~%Ap)+G^*X}+a-LWGP z{ZOw4_u*q*3*2Py27W({nG)2+*oH?h)tg22e0(tq$WZ&7!XcljN)8oleK%>~WRjT4*H>+tV|Rqm;AnU-taj`Va3%_C^)? z6OQL6r)&0M_ z>QJ|prB=6{fBQj`X%U>?b4^1McFY6zBN~;4q=mPi<`-LSC&bgU0JaXs0V&*#ArM} z+?3uNzDca<*zUeR3doxHpN0b`xqqBn8;f(22ja(H%TF9=vg#@NIH+XH|^+z(|C9vS=tz@R66nroij?&QdQ@7o>1<{UQ zNhM$)Pi%Gh5v>TSOQ5WJeomiF8|9kfjA%o}XDu);PZ^)eM%;E1r1wo2*ZgTbBAm+t z^(pzioKj)dSIBmUufwfk`x-0fAn57f^I@wX3#HAd`m+_u9aciTdD*3JVT1X?nl!&AbUxQ>MuWx!c9*%)5#6rN8Ju2`$frFv>lBM_K!RZ$Ef z^w~LvCAkiTC>Y`biInhRl5o;X6;d6*)Eqk3cCr!|t{rY;DCXlPpZa%SzG1{PTKRC$ zbZ-QzPB7fn0iHHnBxoR;ket#g5XM*VrkNfNtRLGj<)Y}gt}@IS!KhNPzh+Oiop5!n zA={e{@~)JtyO=oH^!fL~EwIwUK-l^i+tb_0Tirc1ZEq_6kkIf#4SrzYK)WhquKY;` zq*~fZGpe#=-o2{nz1^Er+s@+V{8f4M%WE#F3USI|bPQ#xOxknkO0yd^0+bs9P{U*7 zH#=y$g2C@KYn?}-l{Tdpo=$_C%NRIg4#EM^NYrf6O_H7G;Fxxi1iy)bMXOuEE!G!} zh(b?zakU7t@^lXx^@LD&S@cE*Fl3$i@82n;f%}C~2%^>ET_LSS1G|%gVG7+&YP-O* zvlSC7j~KwUJdh{+WV(}}kOJDOrW+6&X0tl0AwHtWBw=4j3{N8R=K(r)R@l~{n@B?! z8n+ah&&y(i&!4k&Zo9Em*C0CqXE&)|BvG~@iq_>W`n44`rzy$<;r1>Pu?!mWQl_Tv z#mAR}srM9;yt@exqbHJ+@8`2`@tfVfsLN4Tz)8? zt?XDd-%>d=-F}HHUSIVVx)=nlk~g-)0MsyX-dmyJ!^I;>c-fE3np?_F`_`i&_(vru zlULb%Dsfv7u1xHU|D88Oytbd6 z9B-V@5KIK2Zs@uwQ%VfSccvmDwamj-cpX8#Ezi8Ho!YD~>bvgH{5LEYzOd%{Q9yKy z7Nac%s&&jN7oE0_MW#G(R!Y$7^t+KtLL}1I=(Rc46rV6GHnh|ro}VffOcH>FXhjD6Ia3A(z$#)>(ytk&{2inBNXGm8WVE)Y>T!xq5nenqAl82D1lpAo{aBjO zLL3*}=QlkSCz`@Goi;Hh3Kx6pmM2KI@XeSTYSMa3>PiyZk&q{{-u3(Ksyjd_b0FD# zAcXA-BoRxTTk0tS92dF_76$@>ezkl_Gw!r;9#Nb&OB124h!P>B|23CuDj}Z^mV# zG4vASZ{yf?eqqOodozKqYbm+Gj@j*7G%nr#xV3VQu~=~GaZyo5zS!0(E6;q`1e2-r z!xw$+DDMGn);HayJtxm^^{hmHKmDjiX!rcp90ufG;iNt!F&d&4I2Mc20|F5TF8fV| zv5#*H+eNQ23mL_*SW7ISQzxcWS%DlC&q@SbLw2CEigN#j!EF`YgQr0C zL)#|IJ^+?K^M3FAz=>ZNAz1kq#ii$sh*BUaj|c85FrQy6%)fTjDmxo@MEL#p4AH-E z5Hax&3+w;Rw;={rmWP^hTsBG#$0EN%-0Wg446AfId+KpkzVAY+H(Ec8SpTsn zn!a1d`*rig50-vxGlXr3%KxMM2zu{R0bWt+Y!{;B%i`S8W z-1^Olq8GXvTNI6X10sH5a)qU{G+rCf)VsW{D<> zba8NYNYl9P)>BwLxr{j2j@J-A2QUnZ0*B8p%*nZju^U}jc>m_-X`LjF!O%?O;CLBo zN|sC?5u%P19Back4oX}7yO$J1ikHR?T{Bf+x1uGY&I;0j`ad04>ePN(7(WmcKQN3N zU54-tM?55ubal0N=74<&V!D+eC5&y)gAwyJivTS1<>>JKl1H9B%l+2Tx@XZ@|1B6a%F zx{3 z%3bmCv*!G8_4wWb>}nyTH+exL)BgjEXBPv9K4S4h&gKA<%>sIv$;lDKnF)N6=8}xu zbWK0?2kY-YejK>r=%hJN`>H+j^H0tkY@x%3H@l>|4)^x$Zliz@crGmBaGz8rda*J= zIqcUk3z+@Nms@zmCx852#q-3Z#%>6C(UBD{_nt_u5!#CzFFF*UEeFL0yBLrUV)#i~ z^1bh)-XwgESOy6>z|TFtn*TksUHS3Ym~_8@E4s&hiQ_h`Djb(2CWe0QKJ<^z)&5?Q zgpxE#R3M+G>5XA*5Ovnmc|~5_liM*QsV{5966H$FgRyT%5IEcK@brQ| z{;c0Ot4C{=kKa|4S0*-|oOI4)0a_MH(btN2TCwW%k6$eMnQ(M4!QVoNs)?icx`u(u zXZPaK95lRnt#y@h2!H*~Rb?%Vw=X0@l7Ks&C$m_cHpjZAQ0@Q0tjqi`J* ztV~&9G}{z*Qcq@~Z>-+ayELLkei4HVO8K5|DintPxb+aFxNJ8sXnZfNuYa*81MX<2 z0)k`D6knRe7S4!tO~J;Tyltn*DU);!{Y0v`F(rOIQ8U*%MS1B#|_4l4poVD*}l-f{%B_e0DtvW@$NkG*$I(_=sYJ(UVxJpHHwQ` znFc0SMNH1kWi|2ov48nq*#b*k6k(S(D5{9wRN`>{NaQ>8(D_-@_i(~wB3$e(*Z65Fp&+0kHKumO^J42+`Ts9zN}V%90x5W zSDIeh*0iWpSjV?vbe=oXwKg_6k?vqQ;|e12JVI$(#(`p?NLfXYKR3Sk?df|1-DZ*2 z7TdmkiCVNy_pu_O3aOJFsUAE5BGN!OUe*>1;J9FHS>r+ta`W@j!++dB*=2l=bISNt zVd(wLwC8$YBR__4%lv0$HqWFCMrsE66utJP1bZYNY@Ab_9Orv91FsVCv!aLE*CVY+ zNWL=!c3pA?D%%03MtfaDd1fA5CtT#yNpd)%TT@^L*vFSu9G-puI!8o@bwA8_d8xzO zX?&8pmTTo3GgI6qD{y2Y%1&J%BWPgUJI;~Lbb$Y*o$9(8x|l2%BK`%mx$<7lMuTco zxh7(#9fYq8Qnes5Ep?CXTCfGCYVnwN0_D_1K89xbSk8^*RyMYo|K$h71#>og8&28e zwbRNM~|w-`k$L&)m3;`sgS9dlm`OAeBmB_U20;P8`jy_!EC-g_4L(Z=%f2Z4*nDE-8>T9pI=a!>9 z*mhyI3yO#4_2Gt|p!~vS8q&>+{Y_Hr7G|@C|Ljbr(@0fhX;$AoQeET$qW1km`*cQv!5E#F@FI` z@H0kSp^&BTc40uFRFxE+sPxS5es9ZKkH|QjopAMXc`ae5`J6ETHJZ8F1uNw%@hmfQ zlM8r)vkwu^s_p+phH%VsUJcId$x@&mC>$ZW3V+5AN%1#!ZK+tBAJS6A)xPo=^^)|Z zvCICeEN=2A+h1)59sh{-G0S;YE$Fowi;S_PCvaEIdSt(6wyU zj`r!rr0@TyWGC^WDX3gx4x?vL_@_0{SR)8tsCO`%syvb0gE6eUX;QK!hNk5-5+@=< z=PJpi-kNEhCoS9|Kyw{of~X7uE0&rlk0j7B{@rent4!0L{pV>OhG(ykV{F_$KRV5# z+I@|z|G9uhR;9TQm*0?N13MA#_8A!Z!_!f31U*odE31CEyvpHbXw0a?p%?qR*7k3g z<4L=vz=W&2Qk6zSo5D17?K090;BmIB>ldpdp&)J-8yE&)y*_)8bTxy`h%}B$TEJmZ z6c+yI9NH*4U(ca_w3BBad0IqRj@3%YKkok=-YeoDxeA=0Ps!|1&8=;Rx7h|{LztXf z_B$`&D>klHLA)5oPbd&z6b~nYRJ-*-zL2d*=|E+_jleRcO<)->=7BEIz>IdObX0Qk zXB6(p6PmXTyDBYK{aWQ``|{a+j`@FZuoLiDOQ0&;lfF$)-rY~Z^p1Oep}#F)wfy4O z5M!4O-NZG>v`d(YRj`H>UDK^;&`lMVpR$rBD$$!J~-XO$$e7=#nx6mm!~ zClKZX>lk679|cg)z3QGl*MekuPl^PTsP4r@)EFxR*(T@*->J#ogR;P)?|pgGL&mDY zNxPV66vT^w#5|9iOL|z>Qywp$IC()v=0A31XyMsU8hU2$ zA+i#_cksk7A7{>Dx3^o}L}`>`-t_lS-6RZFfPAtKJUnD?fXpV3q_s;gT_0j2zp(9C z;$%gO$dWZau6yy`aGXb#RcW$quj2NMS#!w#ZJpr+P?B+K)B-p93iZiW*dB)*7YJUs z?bzCEs`{R61v)lk^=RQds4Eewie+$SPKB7l!Bc?277k4mZn6vAt!TumUv=>ET;q)2 z9T)2+C^7mbrdd|iFA@BH;BxeTIKRRSVZ zX}Fk;h>wboAIIWn)EjGYV4lFmU73lFi8A$do z!REJ;i1$lDbfm)Z^aF+R-K)vjZP=6Qm1JDW)`xDtGbOGZBY?ADT;td2qM8kz5h?ZQ zB?DVjLz#Qxo?H{YY~l9#F_@E~#FMZwXh4(hR+ieshYFcIZY=~T6bba++jA%CM}}NK z9<4QAA{Z3-qS{v?%*cw(E4X@AUU%JUk;9KGCU|U@7S0QerOQT|W~_6uY7q)VpCbqe zIQA&8rwssky(7}H4Q=K4BO;G6&_KKzbI7jhzQ296xM$b_OtssR1VcC#tLXxD-0ySU zY=9!M(Dz?{mr=8>=xYwLtZNse)GDQo}D4kljA8K9*p0HCluxdif^W$zDhH7{+$cofpI z{@r)x0kY1U5~>u0@?_J-t~Y#?^vj#rx_KxBN;^~K z>#u*YotE!{xJ-J;L8@P~EM`C19)_w&-d_jFHX>AGGA0BGj@m5^FNdZ_|Z!29->EpLN>CvG1}S zruIFTFR))fBV9n{kB8*n!vpNBWbrZR8o%lKnFPeUo?9a2s3ulk)_v)mLQAHW$b)#8@rnC7~6%ZGF?Hlk{q}a+FgWut_hguIP8Xz zEpdi4L)))+QRCLC-ucZqsALKi;}Y5-<2TnXs=r2D!E+Mcid$|67^uTY3r#7suOUq6 zJ3P$!ku6p;h*K#&FcS#4H?sTt5qw5;qvYwzuEfiWxGQwgJXLfZUY|1A4Lcy zqnRnfW*KAtWNkpBxHX1rE#4P|8x6Z=mOuW>q|U2wLpsNw~1y-nzLQCr)*U zuRmp%W@$$?C(Dci2!0(Z$wMnUq~o_=4_oWb`W3M-7h|U|=Yp81S1+%$2+pA~fI3F0 zSqJ^r>+IOCYvcGFTTi=_sYUs0iAK^J4#e2z=9>8W8>XUmTAmy@P?|UuI^!0O{VY(g zYc#Fs3~kPy=RIGzx%x?UOU_>8PsfFt!zkjk(BrR|0NUq#<8|fg#Px<*JvbU4YoO+t z#n30T!)b1mm?X`P zQQ>AkW|?1N9KR#X!p?Soe-9osQcxFAL^4 zCRw`S&)@U&)R2sSrf%U5VpWlzg$GeIDoKHKkFMyj^;CJ+l}2Hz;3ISx`8M=~s>tDg_@!!OR=SL>0I#!Mq3y{5WBke?4XExG)dz#OR^8=+ zswfb!S*59VSqX%eu2rhxY?Z^U$J)bGHIIG>XWPEMghI0|Qay@7Asj8sCVBqn4({su0eDl1dsm>nFR?Ts9&N7QrR3^|+nPU$$b(~)F zK(Fx1+|Z`p$n4T8c6YV8wJd8C;re3vyt-Ci&J5~Ev}M&bg1J2W9fq5yjSvpR@w(}t zs?2}xfcfbEQ=;^5Y)Uv;uyPjnmtEGHSk__Zy%*A+*8X~CbS*sl@WCxPtCoyu7Op7s zat8sk*7wcpE0)7P+N>*qw!Fz^Ya%V|$&W`?2?!KRfcWpz>bY9|F{{F~y`+i_-e#SK z6u+i#wbatwttT-Us|Y(er=0LtNmz5@4sE<0oO{wf5o?|N(w>^{aYR2s6ea$;Rs7T4xhS4AUt&os0-R!@G*LXr+hDTyju zQsQLX4w`Uuq?_!hb+IcFT@@IMfhdKE8H^%E;1B{2ua;chMEv#>8a9w+=EAxv6uL0M zsEEI7yC{p#GAfjNe0flD*A!mUY`2U%X?L(!iwM4$&Dr?X4IUk(jw^A~6cOm-jD104 z0|6Vw?^Z>RLWxGl)$^mN1e+psrT_Yqn>?1`(N&iR8n+y;ALy^{=o%Z7V&^D8C98~a zyFP|c!L_OL!(8xvH4wH@7pHC&Nh1CJ%K#lhZWAQ)l2P4^vK=NbHTH%kKX={eWFeF( z2vmfmtcF@NtcAJx+*!Tk;1{e6)ZK@7`d>QKFYhkb3t2En-rU}D0RH|@Us;dTF@6AU z>Bcrt)P8u!0pUiM5$k)V(SqqmzcxE37phohDC&}SZ~8keFA06o6qtYb<(EcKQau2{ z7f~2_c{|9n{Nu}R-e%2vgz)&THp8o?&iF}LCS9Mus(e3Wo6qPm<_L!bHdrv0+QDcQ zmqmrEt%D&?bOPxOY6eRiNo%5&`ON*E&K@1(a>JE~LX4tf*g8S(nlWS#4^x;r-q;S~ zx>~ddL1Jem?~LS;@coY9F7bA1qC!J~9ZamFf+{K^^KDoO_VRQEOqExJqX@I@cvVY= z?}3=BI$4huMnIrs<~QRK(6kUknr`DnP_?J!Qn?<4ypADu9Th%1wl#)}##bZWWQWmb zM>j6(@i8`$30UF%cn##QDhN~8M+WgJ{ZgUpC`kj2(L;b@;$&Qq-N@!BxZzZ{HWGE` z3*pgrrA>nF`KylCRvMgOb5y3h(}tn1O@6=sA#DR8_VD4=Xok~^%2AhQbGD;k>baV+ z?N+Ngy37ZnHyrlLoS?nYX%LWANa~%kXr@O(b z^jEJXeje8sqDm8mMl@f62Ja zu$P6ql%Mr)nxw%`j8~Xw6`PJQa6J?$rEXUVCCKcmvIRmJ)2|#Lz~_0>mLIeRf-KUy zxTJscwt#Yb=R!5C`7dBy`H-=a^@oFyq{C*m4e^UGIwvcxoVJuv4~O^AMhuII`q zk=ToO*p8zX>n^-${(3cn;md8K?I_BNLq)=MN$BY=Y_?As^Ll$uSK*-b{VJe8cN-B` zjJLh3VqWq<_Zbxx3U}h9*xXke3iTp8sp}3M){>D`nU?9FIB0&_ydX*9K(5}*w?*Hx*_@$s8)pmhJ@VV_+rtGA>9J!_x| zt0H|sQCPwIId8r9$kQ?Rb8_MI>cXNK<$MCa7$k!ru2(F3hqv!Aem~A;Pgjw`A(Ulp z?QHSFpMRO`5cv2WDF6p|$~Er#WaJqv;rC_3XlIDAxmrD8J^sR-@iknDjyqp? zNwLI#=s|zzC<{KHIrx${hkN}r7jAt2CYNihIGhb#)EXxuhpJJcw|y)6&RXJkwKM&j z&6({OQ`1I`l{{81gqn#6AOC0!A#0~?Kp_SQ7lSALbyOSY@Cmk1PdD}JdE^jkWJvA- ze*D2wxY7_QHvuK&aJCuA*x=H$>Fp4DbnH+-9kuO`KkyNLX{T%*q|FhZJZCe>)pQzJ z+)LLb?M#WO^kZDl^hD?9>Bwcb93y&0$TMg}UwHn~A5VY#)&pZOj@fZ+(6YMsABh>3 zidXkGffDq;7C$C91FaTV4h-`@a9G2tD}g$|%FW>mDn@ZU<`3+gWxMZw0+mixswmF} zkVFKNghXv}p*92@;pbc{&*y#irz5?_S*DUI8D<|3+YgHj)LE8^eiCw?>7(34i~_3L znwLseczE=z-Lgz?;3D3ZQ-biEKE8W09v{!it%?{~y$&TsB2sy{-OI-%z1*IJg9tk7 z?=io8^*FqxWlZx~mq=&m;zBh(xia*fRM)A3&EkH=rYUy6B+Xu9^U>a337cW%G#?*^ zvs(!^BBy2zBbM}>5{1&OSDh_u&-qd9n941ztKHN_6|iC+21N(~4ftzWEk1Xcma(>} zSgN;>Q!2Otk33l+j?dFH?iA|r=iiKpXIGrEjv|Ke z7Ax*eJ6t_UDq&?7chI5Zf~O7@TF9!a{+}u|DP3t+{+zAJaLQ=Cd^F^7;A$|{wV&QK zcAP>R6nVWovfA_WHHmh68p>&V>gP?N9*0t3RnCXB@Mc^jXg(C;Md2sA-aV!>@$!;n zRy217$9S}sGR>p4v2m(F1xF!gY-d#vBwOgsa0c3?%>1ogT-->9fBhwAnn`~vosJcL zeWOQkD@~E1sY7HXsx2_MXxIBkL1qxGa>LGqyvT*oE6wMbM@x>*2i7^p;g;znQxfIBsNvBnOi!d1Q4)6u$Lkk5uTb2y z-NfIjnlokidId*K5az|K|21q;J{*)lwdn8ZLF=~1ZH!x=6O+K+4kxx0wp8*;6H6i9>)-nJK>uqm6OF2v|2ZU5?g6t)~#;6(~`Hm=7T#LC{`VR=a6Oyi>}XNdKo%T_}vDV$;HKknAVjYzEaNa zyZ9az+m>1YjdxLtUp8$!c<9-t1kJTOr_@3=JPkRI7TA1M$sN_|XkK;j?yLnn_9Ba8 zD$#RlEUed$#O(sI=d6S$RniR^AkBLw~8 zSD~sHYPaDaVUe$`lT4fL=1;4swws#p{6)}9d@Z8qE-Rw^6UO9u zN;IeyvGReU*Q@IZuiDf>o0Y9t3~zLHT%Gb(wQpVwFl(x+S58QP7 z3olPk0^7C@4YGI3t!x>R9#;Wz$lTSAV-m4Ub458}x_YF@cVNvt$dpAsIPf>ZZuJ}LCEjR3fALlg?YL3xQtq}=X}S!lea93X z43yyAGT!-__}4G&2Mx{YfP^njWBUbH8g4&XonHU0TMJRx!-o?jBSE|@#0~^mlo-j+W zs99#9!hn@fLqoV(-Oh$uY+dyzahk#0DpC1XYHv7;0kKXp48Ji2eL?JdGh z#k4&I5?Lm}8YB5-sli=D)MbphL1a=ad>6T_dtyV~G)(@VlKpQ)7x>194RPtea>-2V zfZ4C*Gy*|`B2P7>4cy!haxb?(A_vqa5_{C&1LJgBkn{$>JQB`|Yj5qA%0JTg3wL8K z#yE}M68tKv?n#07Y`!%n+q+!|jVas<$WjQPovP#TgSA&}d7H+SnrUvmVJ>}Tm7v*>>}gY(c418CT$VcSq`8?Ut) z`euz2w~frUS`OJCC*SZY)Mffa%cF7qVo`A&KLBIRN%Pa<=q?^noNL&yy#HLCBCs4&8>X#`%P`a~L!bRqZh|@`ztDcEf0ei9 zLBk0Apb|{_{khbO4jq~6EL*II*EpVg%LRDT5MBApcAO+i+3>uAw_23gP+86GX{X><;+<6>64vX0X=)vD1Yb0lL=MVq%Ifv!gVk?gioQ^+4R3{zht{;ZRPhX zuBQky&4@B07NCl=h}^i?R#&f^jRiILJjES`NhJmoqY`7E{AB|*##p*mB*ddJA>t(lFjM#q?MUXIBtV0>I zCG`11g{IYM6^Cf%#u!~~6(zwcAx5G=jX%dys_xWkMSB7}sNucSHM=0eK}~uz%q>j( z*DWw3s8LT5Du~GkCK%<@L5F%f3qiDXwHNyO+|ulD#IIuK~d@QlvmMal^UnH+J+-Kv+iIU zxEXo0k9LMnIB)+~j*5~Tc?y(YoW!%u@2q8aKSZyy*j=CXJS`H67e+IAtA>(9gGa1U zE3nh_0Kc`UIISwIAgZ6qwSS*KikL{D-L+GwB0<1DI-5Y~urZSD#v>O`S+v(^P+caR z=~eb2vwalkz8amBnBcJZ>P7!g9V}RRWQI5k1!=6?CECnFy9`BlcG?|%1n--})8)tV z{pkJkFJD=$$ZS!IE)>W%YZDx1>1ER}{ly47UQHMbq{SC60G)7gM!sqyTL^6vy3u~q zlZ^y^ESlO-?n{id%L5B~o`(FgV`E|)`LJ~(@GTN;Ro_%|=eiK6c`;lWa*#gY1C|4w zjeQ}o2DY2WC40_sg3SD-xozmT3o~*(>l>D})a5F!*z~Cx<*|;P4EyG-rQ}sO#0*KOZH7+ z5jrSb{gzMQa=um8rF+6(=Jbeho_5p;jrKSx*B?Wmw0-XQs&^X{BVDmf-E5c)=i@+C-Zu~@W^CoGmaX3?=hGld_wkpV%T{@!rTTn zWz%HK3B=91P6(b`w&jfuvf~ip@z1#Mn9-B~7w;~TJUHxbFe);VerW+Q^>xUNsxvXI zdbA%}gdOP9bb=RCIB!P82jaL2DmL6ti!!r7;?GrDSe_%B47}JPh%GrboyCf-e?7Sx zJB+U}T%`foOQ5;d!YHWc3~Tvbkh92U=34p#RrV(y{=*m42;8h(DAK_>?kCjcjOuxn z-DLv?2gz*o991zlSAeZ4to!nP;bE1Sx(u5m#0K<_EWO6rqCZ#VDlnPR6_9ie8sp^) z3alwggDScpMixsnFAXFHJ4N(@q_vf#mcBDo6NSLSlNdvg^AvcSCMwbf)F-Ln4Qi#( z7x5;g`HZ#;Jg8Petw1FSFuVTDXRSjYTGq93k8Vbn!<5{YpXuMl#p5GR*05cSnOXp+ z*VEWt!HsT+fLaZqKS&ZojSW@LH?_mbxB{D|%5U>Sl6Tvg#JJqxT?`E{98hU^CaTas ze(ubE_p%z1d>!I!f`?f;JC7SF(r8c+}&fVC6`F1Sd7=x2L4$FjWPES*ZZf&Akxwk6_K<)cE$bcE6Fj5)ng`& zj&w`EZJnX>2Dr0+?G7X$yi}mrVLr7)fMXZydSGBae_;eWtCFCjUFTu#cOH5&K2rR* z?@-;2sFdIa>k{c5aPyw+zq?tWz5#Jq1@ryyE4RK36B}(UTN=mhswWdJ2E7e_HLgy! z&b@wYa7D7O4Vi{V<{C|azy791q2+fEYl5{y8QW#vh{NmCGD@wwx;58Dow>;=o@%x&HJLx8y2~^JqE=>vi4Gr**OJdxMbU z;K){k$-ZF5-FeziH|uR8)E+K}6VvZ*l49qWJmB1-KQGN4>MkrA8@GhPpv8v^FPYIS z2+KA#(4Vbv?_*g}ESuxt%$~$<6n8xNpVQt>?c<7Q>Pbf%PwYGoo5fJMPrDVy|4g0uPxeEVTecIu$Q^$AgHB!u5{;Y%|rkz88f1MLnB!;V4OqxvY;O|YQKHc7(j)*H-x zPx3=|ejP|X=+T6TBWWe#mrUDexn~Sz+nJ#wZsjLKxXE$57%1@31wyl-HwW=c04yi= zEcfreka=oC0c!(mV#+v@4#oPe9|PN>6LW}|kNj|{PZ|3do&3M(nnPzo$q&?)Q|yjnr8{i$^fm_ z)s+OPIEq!dv9R8+E%9%q$HK!5ioDKC(hfx|Fg5kTL4Kq57_v`{TT00WD%2){DJQkq zSd|gI0|6P(JuxrVL%14rRa^F;x=)}jTt+Xv?9J16(!dZQWT0e zT<-x5{OBA=qebQlD&%DSCdpT9vGN?slUVB}TzK^&8#QToqpoCB(D!?eJ+N%@)@qgI zZ<+Hn>uWP)J=G=ktzE;N4b5F5Q54e~-S+%R0d{e|GJ4In3P#0LI0P&?yPaDe5}aRu zCK9|jd0cHte>S2t2LTa$?U1xqsz;yrewu}DyYFG#>;nv8;mtOjfFDBd(5X6p_ol~+ z_PtM&IoO38)9p!UFq{4=JX!2)_vIZ1X4t&!009+NJ!(Md?DMv6E%bZsI+@}amBNz0IxjF6`AL_c#JRv&@5E^4H1!vT1f33&bjsPJ}o?1 z`yJX4k}g4}g|w zM}Fclaf)JTi2gaL-j9f= zaCXcLvZGLcKIw1DS2WpGtwBRgabURbf6P;;+E-<)Qp=m)tVzQJin$fOMppG0D45j6 z(-$-gY}2(yjYr5D`yc-{9maNd;9;@k(JQcY-=xCWf0j;1p8)TNb=kQ%_!K_X-$$Fy2E$B{Ga zh6uji@0M!2n%Mz$o`}0UZ^21`jsIx_sEwURNfddT4Z85lm%t_+E}1Dj3b#0}s4<>h zEqj;vvk4%1C}dWK!JK@*-@1kEV9q%H0|$Gr{vBcFM{KjruLnAOUa9)^o0a?)Gvx5b znm4=aT`qZ8n+&ty46v*msiKP zABA>)c~7Ob+{Ud`+DS^usicEdUUOJZXUfC7ap;?Dlyu>T7c6(X5AV~X|M=_ZSY|a_ zSTCPV;>O4#+p^y~$TJ+SF9pTj_NSK_3>1c^?=y$kcbA!fC!GyN1msS?|0Sec!DMN? z-reH3h&?Y@7)F&_Txunhfb`Bn5GRVTa$2H zb&=fdoO?mfah>FkaUocQlXHj+H*s)2xnXgsyBQWs9q>qTPMwFmRNURuPVz7m2|vjd z-q$u$vhblwT&0R<*!7u4lxFM?ddxTux34&k42P=8#@F=;wvP)*n4OzV9^OO#rz$C0 z9<|&Bi6oDx3a~iC5>>ptLYp`m-N9wgINzBAlt3vq=Ao^)*<=Ms>wlQAyn=GC_~K2t zd4h7=NWwS+={dw4Fh*R8Ig$%{5Fi`3jgz=|aH`l9k_6SHo(HEMG7-)3i{EX=VcahJ zu_|`QSR!OQVZeEX>1yXfA(AT2h(1npwOUe`P(Xwa`L(PLZ0%JI802ryw2+3jj_lga z1ckfXkQ-N}Bm^{1RGz`^3{e#9ayY%m6|HTdkdq?;Q~5euBvN*w6(k^Z!qX3S9~Xrz z$J3KhWb8Byk8cLP9G{d(RO}`vE}FD@#)TQyXmz5fCNu29GU+RcNUkt$5j89*?)SP) zCKDw?2}(UoN`c*aM8bo{EVV4Mn+R+j8kS>QtH)P^>Z(fC>^GQ=WVIKcU61+^l^{}| z>e=zJ#6ppYtqz=nj`sfWf+eR#^IFMuyM;gbHUW%nf$jcp4L3mefR!oe0Dz6cFdHpPO>oH zB#iv=yIgLgWEWNK$Kb(S%=0JbY?URSsrX`nWW6^E($%cF?My%6Tsc`T?qNq`-D4|~RY=V02 zO`XxG4Pb(^38!jnucp&3{K7qZ<7Zd%*c&)}n&AmeJC#5po7*_tL&>u;Cp2Kq5Z{BH zl`A#=d`4M)e>tsq8Y~5g;OFuAhbE+5w~MKY9C4<4 zdH3r2RpGnJ(bYD9^bN)gDquSo*(X5G0$l1WOBYtv?>K1P3PhL^o3c%TEBTme+d?}Z z{K+pe0V)^%T3orH*|1QJwduRT%Qrg=i&&2Xee@HovOk|r*|-?{%G^4<_+Do^om`kI zZ#XGZ>u!nrVuw<_TC|ucE-oJnDHi3}CqebBM>u2$R;yPcgpQv`#EsBw^}=gQhoG5H zYE|%D)RMd{JVf?(wK^IMoV6tty|UWhT$V$rkOVd1r(`zC9))_Kn+Ny`V@Z$1fx710 zh;?}+l#g27L{!+-pysINF&rSuHEoU>q=?dQqaU$9c`O#lF`CWl!9>t?zr_xP*)R*>3tP z?{FPR_fc&Uu{@`O{rOjOKRHGr6oIZZACJ&^DwtYFI>*-^tJc{uE{ly{I|8p?xivxoj3$S|Uw`Y8(aYln#%q~)au#^_0=j@( z_F|fQU`7bij7@H^^R`1+FS|@obger-MewsH^0y>^Eabe<`}K4I?!2!urT+X|KeI=j zX1h+=vg2?7FHa+aeoobcT|}3%hltegWE#8?e*%RLTaS>0E~Iw;^g}Rq8~3bUq8HDp zr^Gh_1kf#p$SDLA$gD}#B=epmO$PiTN5#U4zvRYhi8FR-*u>y^ihZp(vL(`9L-FXy zp;lXEg|Urb`0ztBXJD^(Gs`DHw;YGO4l4OSj#TmQaN;q$c2e9mca(0cCyr-M>0zCx zLBv7e`3=hoRU$>Tz6iQ7?>+5yxac?Y_vRQJ7Uh2Z6j;r~fd1ZFcef?EWV5=nEWIIc z1ZOtv{gvn>j;o0XDjvm?Hra+0ea9|t1*bS>bmY}j%hXDdEJ7@L_AlluR>BuI1v#tuq^bGc2_PQvn|kV>}9R*R4qJMh`BRI&}Y8k0BH2_(G2$Z zYoG=jdq~ze@{amx459`4Osi0Qrm69Y2T_-KpMdecE2gDSZ>X<4)A|bci77adBNdpe zIh?xx`T-L0ad5u+Y`cG!193FX_kZ5eZUiMw%}J|5Lv_v#t`bqxkG``9n5rO>D%Vye znx9d-AR-bPTU+xh|NeXa@()iNb^vy7P8wpzac=xTsR#s%i)WQx!EWoSx<_|u_2W0% zME<3_XS*0obz2o=_mv0S^OMOxxo5YfkSTtk*blC~aCf?v1S0)0=^-Nb;Fl$$DP+SD zU-ag3DUU+N2vswvQc%xofEB^XaS(LT4B-2ZJeid6{L2ahz<4N>W1im*c|3u@yclRaqIZTV zoUL3*d=)CHuE%O{28#zCpdh-*_kkWmq7r%vCdZ7m7a^B^@5ZrD?~@`pEa6k3 zQYs)0{^F{$WH`hd{LNM8?yh5tAzT^if$xi>f2zyX- zn=m0H?mqM;dd9>Ax3sI`C}PRz`yZSeM#^X4O5}D5n=qW7g+$t~)|0=yrd8t!@eVUa zy5saS-aV@XMca3iH%fu*u18C$pF$^NMTtS_LmcrR+&+xQW6sSfFHOjCks$ej^4j!q z<+cWu8_9}9WtcJlq4;PFn|WomS_#D9?Gdmbi!2{&fB#$LMaj~$n!t_18kq&92&k%0 zY+kUf%uF?DB>>HyM5^fEf{iUp#P&o>B0eL6GO7$qYdFkHJK>B^fhywB=*1^5X;Y4? zGYkd<-Upb1&eo_T-)M;8`#aq25N~rWI!jhhqsUqupQepTGmg6mQ&u3<4Ru%RB|W-N zGy~erU>U#6OQ3q%DyP>SQ$x2#p&!b!)EA`ChnOuD zR#Yk_Yy4~q|LVh|JB&C6>s3Rc=tWk+WQAmdA9tBkr*%)2K7M-EmKyz^e6Ti8KD}1P zGo-Q?`)*uLy%@TMthG`#+XX5!gJl5F{Cg9|ci0N92`#+ec9sh=lkv~8ff7q<43?s< zlGgp{lj%Zm!{9e&Ev08guP2&qZxgQ=hki+B0(4{Q`(+7oGvTaHQnlEJ^a> zw3R4L@yU8!hOeQ_4o_tW{jfZ%#3ul#vVx1D1KJ4#tu$P2{F)xr?{1_930^k1HKjE7 zQ6XP2MPh)#B<>KD9sx8K^_b*;W3cF@d5t~W7iXn#3*l8~V z=V=2?92IUqrvJrtKg@h3*?1wNpl4O6zS*(cDjRdkK^Y1*2^4E4k|hd;R-Y64#4*T8 zmg+V`5ALknpnNu&rI+I4I8JU_?;TGV2VZi14gc(BAj$FAKH{Aknsb7#u6?nr0I0;* z_!S#7QQj%^=hfXvAw-Ugc+j#)yG5#B(~8GC7H;G6@EJ4SzGu`~*$j3A`-mgZuTKJ8 zjGH7EcF48CT#&Tk+`4tQA<#rE)Hgh4eG!DTod`2R*QA3X^XN2fuM;zCf znph$bG9`zw8irYXR?@gPJn`VSup|oZBrGR*HSX(hxwki=#&KpmR=q-%w|2;-C?Q|g zC2|78hfkbV-Kn`Yre=9bha*9a9UxTEohq$5t+WTL#TCCV$rl5@5&>7}>g$_og;kj) zYMU?A0m#T6OqUzYLyC41KPxdlJAC^)fri)|sF6B)+OL^t39yqK*!WfbFj$DGgu9D>d(adsb$V`-I zX;?#bi!c-I;*p|?F@;1T%yI+y1~@#>_i@mM0>tO9G{mjDzV+G#tiM(&e_=p?TYATO zBNZ7zR6;Y%_HJs!Pk$-}tOqKRo71`v2nbe`}RJaNM)B zlnkS3g9v?v)NEtuGJXZR?P&0W?fu+=P*{S@Pc~)MZxX(H(1`BlDNvZM0FDyRSfgSZ%?-c{NM2%JV{wg%idF{>m;z^{K8D>}WEK$3e#fDAkyjXC)OKS=~nC2QI1 zX)DYKbV{LWY<%=op~=aILFHUGq3hgY|C9rgD0FghH49TT*)@+(>Yu(Vl*+gmV`$WF zE=b3!j;n(Yh^rOJ&4e5Dlq&``c@NXa?_N(<-F3uoq|g>rddNRI5PNl~R@dtCbzURN zB=yP`x>!3@Yyhx2Q#6Tuqr+6yvVz)oXW>epMdmZ!@QxD1fl{Goail;2hygY2_qyBRMr?s&oALd&$S0E2}{hFzb&8JGJ& z6@3mI-g9uIuOH1mJ^0PW^|}r^1%I-bXDof4l@~GT;e%@lm)mTq6qv@$_e~+%q)EBa zMcb{nJboUlZxSb-Z*5pUBu1fCy_IX@#M5T7kgj& zal&>ur{sVd%~s?j$4zm!-;Umc1nLwz88i})qh1N6h0r|RXyZ6+EvGn>!2_BQ;6j4S zDEZWJFf%^>*PlFO1v{L;D+{qXHrmF_O+oKo7a%9=r2?A$^g&T|xA9!HBbUR-?80p` z_p&R$E!Gq*h=Q7qPy=_qT!#h-l;-zrxYK2#!yRS!1dlytjEq!30yMyhiZrD? zmq^kOJaSpZQDb^%r_Vp2^`Y=2GlJX#+z8WLuXJbHwK4nVeM(JgIvb z6`gT<7u|S39C$SrB+t4jzy3PET1O^o?HKywfBIP;=B-wPKYF9z)Id|sk=D)g51dtw zcuABTmL)0cCD5MLX)^7g(H<2_#51<20Kw~*yt*+yrGN8w4Mm(I$ACE4DA1oQ1{5dh z6PM`XXb8>EMUM5sm4$_Xt+|lHM2u-nb z4dO)Bs_>;#V9b&^b8+upW%p2GW3jdlz9j&~sJ{_f)1xzUX2rU_OqR@6@n`B(&Jy+QY;!`u?YA2D5e)7v+@(8Y=BNaOTw zP@1%PUBQ*T0CJE9!HY=$h3BUWF~?Yeq``i4T}PHg)Z4Pzw;swYx|gQOPB#_B<_o$7 zT7t-MW{+$=Q+Kd_Ui$(!3>!tZK-A)1P<~vg$5b;7w4?9sw|}F9XGgr}cYt8*#U8x)WeRM*(m?Ms`%fV%UL?gcl5i zMk6CE{}TMJAy$%$69HO<&O9hbSMUhF!ztRkd;56gIqBYg&>hVRKCz{7*f8S^w^x!< zhp7OE5gv-ADFo_Z1}tVVNUQVOuv>px&kJs>Dpwi&8e#lxndwAbs{LyxHz3$fZ2&fT z!SZV|<{hpsCkYK^dipWnb4-3aLT5yF5hwE3g}(Xi+14flU=hi)w#QkHhLF6RB#|zW z)geKZ%umD|&dk7ZEkv=DF%5=rzRy`S;ILvuvoWFZbsVLoxR7W&i0GEK`Ena+Ygufu zC~7&QVGdSI?c7Y7Wo7&Q8Id~Q3V&uE#<-obIPNYcEJhN}*2k>H|NjuBl)-C?(x+7f zDptFNUB&Gsg)^i4S5H(+q|Ltw0L{qez4>~tS5+oMPNB@s;36-=G>>rxWRW=Wzh)Bp zpLjs#S8ni=GQ4iJ?#Q{Iau0X}xS}E_mh^awG(RFr8c-1qyv@dwJp))-t`?q!Y~*TA zGj1K@@Yjv-Teqo54$%}RDe4SJ#f}bIH5nXUTyVzJHbGRA5O7ulggQTV>Ws|kdPPB# zL?cjOKDG_m3}qGi&UW?|;y4E=%-f5`y~`#aE$`DoTCHTE6*@9u?ij0L3Is9^XevVP74Ulug zry}x{8U^;#^N!+KP#Xns)ER zd}R$Z%cSh6yngj37w1{;xit;@)QOt4;`qAp8OR7_s>ia<-ER5Fr!lsU zBNA;S#Q)p??>o<~d^CoH^%U4qi%<20{!V#{cul%(T3-ht2>xy}F_i!oSVd|iz zTDcwRJKl)riUVm(bju`UA|@QAt$4J4Zu>Dtqd;j{Qk;!l))KhyeWJl(r1-*G9Ku!o zzR z7SQO^8%+~`7@obd=9k~JU*zJMdvB!cVolqvBanllm@{eCg1LDe z|CU^_1H!aJ3c+&>~1XaYU9Wvl5nP#qDk+B-i`%VGCsr z>+!WcP}HXo6K!^SPj_}HVzF!y|A=BZ1pPS%`kZeKha z^LzjP%Q_CH{OfNXVoiaiG(b_#x<_{%2bBnC56eBi(!P1#X@5LhWBl!Dr^8{t|4OI;~EO-lIO2Va-}7-N`y#c7K(8#wgH3$ zUL_dHLGd3{iU2nQT15Qqe$Axb6Vlqa-o_?i(lm#N2$iPh7&5P03&;(J7~@j;y1y^4 zj`nPE$Fyw#i-w$g9`$eG+nb6?RsBw_&>)hprhT==v#VuaoK3rRCeP#Lu|~ z<-uLI2u|k*Wqd~wkB-YTAcPVYVv-zb)0=Kl<)Ec4KVqD4Gz*MLqVtvlhuN;Pf|bjr zYEZW(AMx#bFI|nhO)u@Gy&Nz0qpN!9ictx*gnwrY2Z(A4)mOxRDU;7NG5(tl|M5%R zIoG*q7CIvVWt-FIwzyqsAE{9V6>ac!c8lT7m-Zf#sz*n_SQzoGJu3Z;%@GBVAQBLF#Z3~8scrA^63{6Fkn2YVF9vhAEEZPqFyiHu3M0b`8)|NqtNQ`J2) zyAs^w8^1T$AZ?h?q2j4ijZcEZNb;92EWX|HL^AQDlfl*NFt7}ms!%CMpkqbbfnnjABPNS4SV%?e6-U~ftBVZkyQst>!Y`6{x{3QjU+Qbs%H3K;#9T|$_jmm8&=kOuk7ift4~ByRUU*mBoW$jI!smwU7f6P z91nwM5`^g4Nh6;6JP#K`Cq_SA%$Oxc3ks5XqhhQEO(`y`(=o29@x{r^HQ7Xepuajr z+>|th_p7>1_T~}oe;UVS_o#?N4r!~DttOq7+GcQT8v-J-6LD#ng@c`_)@|{em5mp z(hTt=#L*YZ{HWD3=-RHC#=vMNipGH$Mr*?CXPA?&ov{~@v{Vj29nJML$3s249GgJk zgwEgDy5~rs9y987&Vo2*54byD7JA)hSHM%VK~)exNMdh8O>s?A_kg_rXN=>eWhhH>|07q~AP=i}?RiJI=x>+6Ad8ROu6D&y86s&+Q zI^AVuC({yndcIyGqnVi}<;V`#2TP8YDOHZR0R;Zd9Q!F}>Q7XMs8Z#TksN)?EXw)y zK-KwKp1<5~xFaC`1NRD~)@$#rj-@IHj%j9=( z_^h+8=5+nV&4hq^`^rzJiqDb!(S+y0RfB>uCqQteg^IGRUkD)i zcHj&J8>=0+K>^j_Cl`|&X%p|yHC(VP@UD3Nl03D%Je!iLd;PYU z#2-G6U`*0XBAY2zlDUXSJCdDd}<#+Ek;-znIyV8AKhAfyArm~3&cruPm4I6PUY@6H*ef5i zT{1h<7mcc&XlCd<4RfBk&lpr|py(VwW_rFy;P8BzNfp@Zq)ylKs{ z^sOoKdi<7qcHK~=Lw2IXBXdTI(a5Rz@7N}gv&$X+^Zil${%5}T^-+5ropSyW>*72x zlfUuqsb{3#`L)|$8*+NaO;$i-d1 zD5;Pr@7vmPL=mivd~q_CiH;an8?w^UBE)6Ls6^%{_#wYCVAR9OxqI`(b2^$r`jQwe znr0(*enIr(;De`p165YaCYy))?xF!2pAmL-gdI1|#m&XwMvYbRsQK5PaS{9&1?8s* z&_}UxO_{+hs#}{Ey5vqwwtBOZ7F%RqDafhDB~Zy5kaUQe zt**R|Jrki)sc6NF3A1j~XrxpDEyc)-F63$3+%p>Vd0Z6cs!@b6?n(aeoNG?%dZJZE z2_aJ}dad%l0tb2AkXhx*^-)^U?1Y5@)Lt%#9^Ly^W-*Ns)-TW0FzW?n>S2^Xr zBidMo&n^|N?x@nSq&Aehx_IE*>d7TX%4Ku&a+-MGb+%%n`0PfQn$6FO3Kh}^P&H9` zrwSSuuNmS@k(9J3?;X%@Os4+BkBsOKOcV;Q$?_ibLKxXjq`kgy^Do2Z^|7E64pB(i z;GxsVPoK)k*gD{nh^hhKy$CP>RX|%2^vN8VV)W~Gj!4pk+wQ63qAu}igw}u)S8;cW z%!ad$YJom}3Z!VEZHz7!Q%3B7qtOp^C#iTTZYLP5t`ggFpsa`#L5?>sxX$4d z71-#XKV@HK0Rm?g`_fomnW4~;=x7MI&KNZ*hKpBpUIJfmTFx=w@o&H7moN1RQx4r* zFV+PkYbt;C?i?b*mZ~g#Mbt#Ia4^%_^~e`{5o|hrWb@b=bOA<~kn^{`luq#lFrq1T zraD9}C3U(E$~!kMw>fo2$tF&BCfON;3o2)1dr}_WzmUIwo`M&(2{{`+FzAHeW$Tmo z7I|69UtYPmJ-bHz!Dw2u{i|k6X+A`JKiYJ@s~Jv?Tghing1dRF(Va10;&Pkhk3YeA zR@tm30x)qFPXc1{c5~+R+MU2JUzxZ#F@#UZvzk{OS|+KXS-W=S^Y5uOVqrIuI1fR* z;<82RQq87o%*1$m8dU;t)_d6>h(5`@iDhyjj(}j*%e-%yU!7ST6gB%`C!SGavIgkO zni#3)2hd~F>YQ!+^Ta?22DT4)jE7xHCX>1wX(-?JTB zye689TAV|hP8|f;QGz$NG0$)LAATH@08BN>r*WHev>r9^v@td0Mqy65p^jwetkZre zqD9*}#Duu!m%t8HV~+VyC7rBMW&HW|y`$6&mVe%y+1FDZ4R!N%oCmnYp(UU+c~Evc zw~MV$4QO@DunfbE?(>}IjT+VZ_E~3ob-r)h+N2Pd>gDqghAgHCTbU(22(gfDk=(4< zh$$GaTemC>vVytN;fHG#o2x77UFpG9C-KRpE@Z8;hH7LX3FOVBinY;+r7`w7S&MMeI77LWLk=ck6Fzk zDNQ7FFwv??-#j61u|D~{9jJ<$gPPO%`fRIAOrSnj8iXc^#4rYE-G7ik{ z)zOcFCiL6XPj;)UHwJ%@FV%fGs>Ur$ zb#_fi-txd8qO7b5=<^Jt)M!19f*?jkLicmK?y`3bb#yA>k-RxWCv_e`C&pP3(W$N_ z(l#<|1lP@%%qx>32*Ts!9h7fH15Q9<$x}_eI*Wq=&yFt*3WyVdwrn1SB)Xzp6new+ zwj4{aTwaG|fQ<}fPti_s%6s$b6?avnR`IGTW_^Bc$M7BYbc``X>#=+Nuq1NeZ){0E zqT-cYm)EE>(AqK$MiqI(rY3sD2n6`RgFNj!4vM1+c?NA$hUo=ZkmWP@e&OdgBa4X3 z`YAu_=GkhYE72pj14QM8=zTQh4zpF|Wb14>rz(ZQcHP=GJhP+Y#v)$UeZdmYD71(* zla)!%g1fpw76IDW$Axy3k76aiP%R8J4IFBRW9jvhBcE&CsUjKn>^iZbOl%=rJDGpN!Zvd$5H4v?dWy9BApJaK*a!` zj=W-{o7fH!y|J)gT?`9J7*q%Px9p91r1u@Q8#S7lZ3XpE98G?x{1|;8d8-)8>WvYj z*elPK&)`9U0Lur|tB!io>$K3PPaj=+hXghf(6D!O0xbpIp9H53Lpo+<3e`(s=Ufxj z$~eiROD?8{evs-9f2Uj*mQM)MRdcWKC5ePW$8XAU0o7%U3m_mF) z>p9;~c>OcDU3vJd>^6|d&Sop#!TK|09*kb6#!=qE5(}*H%T37ssI^1;$k|ms2V9%1 zt&uS@=X*PBmf2$)8bf563*BvOXe5l9VQCi2b*neKsP>OZBIi|11dCdrI4Ey7p9Ro9 z8}736`L>+*E89!j|Jd48OOh{>mnx z_VQ2|N^zbapl*MRsmrHnEsLrtTL4R_>8;^SnA%OT@obh*l9~b{+2qNyd64(#&t3-b^f$miL77>Oe1L|+XJa+m26;vU7oln0qHFN1 zTsKP87e;xu>Hr!NloR5HU->4(&+oo|eS$bq_2yl2U}?qbYkL;#`8l#~S6d3%<$FdK zLXarCjy~pyy+ju}AXs;KPMW+lT2+MY}Pk0 z4#LR=!_A&vVN$gt#5X(y*#24X89*;=_V-14zL#$M

      BCWv7XwLuREH)nTs(nt{1+ zFCsqMENvln8nX!$ZlkgeFw7$aL8K9suoUCQu3WN))PW}ZimX^s96JaeyO7(cd)etu zH~HCpD_U!!9kQ{KT^8$OZ?ic77Z^TK6i>U96{}ju)!mB-0zNvCGLYYa<`<;+$x~AV zL0cRi5O9uT*~df1N3}E_e)pSSxc8!*y(teqeDq~G``E#sQnF~sUG4LV0B(iTioAZ* zh)!eR)1+wem%Tojg<*KCgY#zk7+X`ia5I+bt7`O8rx6`oST2Y}eK2of%&EUp_FnngA$B8vDC zTh2Zi9CQc3h*v9nDwbj)A6;dyOf@3J!J6kc?Z)&{t@T2j#w9uuFY<~GO*Ug>+i%&a z6{9y>qg`g9P1fHB*#Ekf$>k!9Kv+=RpJhOn2{3Tb86@wTJQdlu&9-Eg$7xC7N`?Vt zK^U9i5-69fC^7N?#~k-UzHHZY=`(?Tcxq(mM8OOCKMNI`C0wX>*b}lf0p*EX`}h-+ zKfHer+ui_XA^d{5S<_6p}!d$)!ZvX>``>j1Bo#DQm8)}04|NRN-$(5 zKfMbu9f+_FG|)OPTvYqxoWiY_H7%nrPT~D#>&k_*<4`x|Mt-_7aj=8DMHNPCmBLl!9cPAzQo(t@bzu${9kjef8HS< zv?2dTk7v(js77pit2m|y&=ci*atr%QPb&Sxkq+X zHvO)gTMx2DtWBGL>%{)g9b;I5y7Q9vqeacUe!ru`pMH#lDh$uWPPWeS=GG;5P6CsX z7qUib7|p==?h@*e)gs_jBfnl*sq3e;rCz{gkv{56Psc(nD@@kD1Z+gp9VpO-ATzb& z*oePYdd|DUV_H?%B$n$-g~FYJu(aMyd9?aSM-sVuJ)?m$p0b?xVL`(mI|GTAbsqUH zaK^h*Q}^g3KJcCY)#G3|rump$0kdBbYpn`r=Uh0a znr2;!wYDdog419ht?N)ynu1`=u1$ny7ioJt9_{j+oV4Q{H#E0l57|Jt@5jK3{c z>^6@kPyOK5Mi&A@g#eL|FRxoiMz#znwzE%vfGupJ(2sAOa^2FVb)Sq%=+BZiSCrW; zO`i+xFCf#7n^}U%$m-|Yr9wp|HN3ZmsMmwZ!)HRf^U+5`vMYanar#276Zkvw7cso2 z=5*zv74lcgM#^Kh0!p3wWtu3h05%!f%#NOy-gl}J*yv7&5|3S{b9w?7!pJPmLPruN zP%DDmP;O}A=afZya=j%bg0jaDq%AVmeRym2N^DpNX;tbZwAQ0DT=*p=V*&VtmB+9O zwUPNr$z{7eEG*1lYL|gxF94=n;4>D8ZK>8TRGvb)aOXZ@0s)`X(P!f?skXhiTxQ#m zqF}~aFME44XtC5y-z+@al&EXMR_`xOxowS$*zEK<3SH*OI6HZECB#MS+%|4>h@H_- zuKSzkBAc0!8{SaZB@cS&Vs{2ssLgWKWw{%aT5XKfx7Xp`>ZIS)VsRKX87K7pvp9`F z=+zRC1VsAtYNO0+ZyIE{$v3lkF~%PBU_ec7dMQhM=IEg6 zvRcFo%tm3?@S;=x<$FXvo$A6W4PQRJ{K2bUq!Q|-5*&goN}Xhb1XO4l3+ZfHg~z+T zy^SZ?hHR6IvZI)5vs{|rPoH9;sGt_+@w!`|hgIWyWSLNG68+%ahdL{G?+f(7Nve0wZqH%@rr7wMX(2xd8ad~aeE{IEP;|H+{ zr&t9)TrN<-4lyTXHn{+4(tF!cPuDywTW=6z=x$ya^X9Ul(xcVVJGoe)+&jd^=4nEm zh}ePG+O9cMW#;$X>@B7X60wfDrbT<+1A>cyUpJ<+a zi4f%;N%-q*a<-yZ){ZPCRhyUXYcKkAu#V-luW9ROn2BTe6|S-^6nQnM$>C(C%0tj8 zuUe0w6ez|Q3uI5TeoB3MfBUW*RaWQ({l-BSeq#a))ROt~4Kc}|8RV=8etGz#n35&Of^r<^ zX|M~~Ts=kp*}Zygh<1-k_vLN7Dw!O%wI{N&dcLD}Q_3CW@dTEMt1POuFX?Qdvr4lB zzp`P|x8QDXZKT#K0pWIad5MIUu8&^sg*=P{v2P+#rgJ`?_9DTE=+U$kHIGnq`i#9% z%AGl5qlBD@$?-w?o8Z^t<(-|c0VyxH=^N~6|K$ga6!7XEyx8xa&0Zi17Cmw~l-{o6 zCXs-8HJoVVF7Y<+sGrW(Xbj4+Ou;jv)W+<`&(l5tolZPqYcON-756OuIRhoD))^b23x#%MVMjB?4fN{iEbmiydsoNctDU&Ob6 z`KQE6|MEFex!!VFMQaU8PhBQ&xc)EQmMiX?)f zr{>$_)sHtwLNC7w9)+@P3&#b24DkR5`pPJlTRZvwVm5w~mzta}Gn%gtpAQW9ieeWv z`&FW$a+?jGX}mO=_|-2eEyt*`JRku+aQ@`j)Qo%zJ%Wdcg>`Z$)K0HwiIr|~F&4gz z0%ZPp)9u^y^T{04Lw2CYH|?VdBmwrUXw^689%p^?UOoH<52QlPNQKT85aJ}qv)|SV z<}H|`DC=i_{WQuxWY^6c7eo2oMtG!G2-U8Ps9L0m*Yc_CI>^TGYa!dIVp7fb?wg1l z#r0`Z8_{a-D6K~*4>{*+oyh$U2Ki{T4z%XMi?d(m`<8$d#g5E&s2O!hAu!YDV7-&( zY>}<*({qn6{P@nG*u?oU%D}@w2u(TuD#b`hcYi{&kvc13*YWnrpywY0hc36b&@0`V zqSI?<6s6k5PFLU|e++2=Qn__5NSWFZ(xt}MJO|p|AZbq0L1)`edV=rBBAgeh4NSx% zn$E8r<%&jykD&{V+LZXlZy)U_Imvi76Vy)>aYHbklXaNQLESkFIkWW<$=*g5xwUG&*sOD!rlpe-;I+`rqCXo%{bt$HZDc1lyPHcGb3Pj$X3>86ipRioTeDb& zhWjo`6g{AV$!LFiQ5)7%rMsf?09unkeQolBpcqTo^?i1U{i;a<9wW6}oAyhoqB0M< zcWm}aRTqdxR+ygOp=BH))qv79t=mz&#c(AQj7u;>o3RF|)NirI0x^}k3foRqstYQoTZ=uVGm35g{Z}uqE5dmwhT`{*oNo=WKXh`5r`M*{u_li`Ui2A4P82;&bRc-`B|U zC)Gj%2W243fojeUKaek$<7@IXY_JjJ!Y%|AtSOcwlmf`sdKa=fjeWRz{LAMlh)Fmb zBKros160u}JbJ?mBRl__%QrpZi77h4B$hDN7S zKD7J1=-u5D04F;x!({srNM}Ohq5X3UwaRmt?u)=O#r`>kcG?GrT%#vW6275Zf~BA8Azc z^+!3xbQxp-T_ub_qWgF7jsmnno?S?jebWM`Up~ zu@STbQPQ`FChRUQSG$i_0RYd~65do2!D;@w&o`aNJ6k4%CsHAGXitwe9tSZ9_b`7t0_T#4 zxHrv(u5nbt(ql8%Z!bova917J}gKb~G2)}*x#>F=$6O*6Tlhb0%U-9BB7yI}$pa=`lLBUAp;Dgz)3{Xr_1owd)-Ft&7sIPxVDc_fP^xcN z)dC>JPc_w4be~V~C~kIoiCMkshSaYNIwd7)AnVVrjJRt~^DPaEWS4Mhk#(Fs+Xcxr zYKWV3x`o?HY>+65g%{(yK3hM7UMds^_&E@vU^B}NfikyPCy(z~GlAoPNAKB9;r#3t z7tDH=`b}X<0^@S|(Qh^wRJ9S?vVK(W*F}ZfO-FzR<_-1*sY+`Wbn;?)zD$M>jDSx(zWSF9;qAdYmb4C1Xi@4>!lLsoLa zJi0=8%HUalfVGk3zKoj_Be-+1glE!huHhR7J%#9GwT)4W+}lN#19x|--n=>A0nF^s zV?Ys73W+MRo@3geRJcX|Ug_VwW4OX1JHCed4eCyS5tC8z^4bABj28u#Vn9FgPmsQUJ7m`gB!HZwEWft>D>uPwP$&aUx=b>>)g(82V#41lVgruqkBGt5Y$e~uV0KZZX zx|@H>t*B}Qq1*37zE`A(%BBNFRkn6jlPEM2S@y(=dE#lmJL&l`c-Q-v@AdR9Sko4o ztEBNMKMW-k%AeVU^O}lL6GI+MQQPQP;yRklo!j+-?-7i)#gdcLO)LHIMBz=HW$3?( zDNT;R3RSaT{Ca_sO&?VAx9!jzH%A!n_V9O=uiR07`CB4X>Qa5dUzf~V zOH`9)>Bmf-zF0TYHqunJKb2DAFdu(CI<-)@`({#2{8h^x^JZUEez~5vH~q7ZNwmjy zF|#ZV$7&XM`__#}w_X<9X6cqve!*X6VMiAt+fwT*uC-NcDxAuF)g$y74H^fjt_gEp zPAF@a431)q6Q;WTR2(PW?X$Z0C^ST;Wb?0b25WVQ3OaZOCEe+{at}NsPg4yj!>iHq z+&#iu%iS|DShVOPdAnpCko7oW%K>OB{a>!P9nZApTeOSbX?4uV`OwI+gFYUm0mQ?% zi1$NGBRph!lQ(O#Jg*#~;+IeJYZTEX3!b2St5lR#hnwDibThXwN8x8?JX@^rqHf1d zPUTgOl=9ESkzq?OM4l=u2?`7oQzTPic!!UvpFFm+%N*SZAI-_5V+=vK*enmE;8|RA z*^OMMUUNE47ObcwsxdC#0Zj4bYXU1lO8)*;*%V_|mF`5W#O-3qZ3m?#n2XI~!OHOB zO|_rs!9M;#jw5>K7c_Vukk~SCp_Fz-)cBUrA1KMPTJ6>8 zFCPoDuTsGe!DTz%wb}2sJ+Lt*drRFIEhjZk1(#|BdeAZv=8!(=U@UjOkmBoF!Z>bc z+KAb|cSQ07s3S!Mn!?#AYZOaYsaa3TSuf-!DZ!xa*-4ONqNJko_%d$jM@oOWc=WFP zs2bZBx<02J_Y!Q|lf&&$lL}bW4(Kayo&NC2q|!-~LbtTk46}zA#2-PD=CV~c7`yJR zp-$vu9WBxU+EbxVg*J~mfw`ge3cWKDdUoc^KEHx%ouvS?hy;Y=l=akViOL1+&10R1 z%vboS3S8_A_$nb}FD}r$ozg?9Pebb;o23cSAGK!$F4m2k3Sl-=!-ui}2w=$u;(}%o zU?`MsYwm@Svu7@zVQ7wU)ekRQ%8dBBDk#EIRguU~|E_oL7$ zWD$STH+tw%Dv1GB`3E#P0~g$qdejhCf(8|LLd^y;XQE`1Q8DaMA!|8Jc=Y(Z9bDd3 zGx1C8d`7z8s?@Bf^lnx|B;Hh9G7q z&>NZ^x7B(nziRYA%-M<>yf=IbB5 zM>O70D^Wv|&4=d2l910go|11NlFQij{j`f8sV(d$oN`~LOI@aCOs zMN(a~*{AGmp3Eq+%PIQCyOXuKJ(JJg>Y>Z8G&%uDMd_YAlt9r2H?($GE+g0#2|!NK z>VCOROyBd{m+{ff53fr*>wl3G_2(QTlA;{Vd^QgkkT%Eh(@Dl4cO~29F4D@R4xonP zBd`FtJuYQ}n(Zc8L+Ke0xMD*hRdY)t&Z~lOuYeC{fKH4(P~ovt%d4GSv?>~tLNC{y ziD(>-HI@ZMwo{u$-gcIf7G9W}r(F+b1TyiIPqG_q+Fv(-KGF_z1-rz&7gY8t!_kBK z^)~2=eUVf_p$fd<(5xog=-7afRq)KRMZBBtW0B;DE`9i*6mO|&C|_3G)>BP_86SD} zl)6_4F-i)_ZJ&f3x+_VxAk&?7XD^PX6%jnLDzZ%}lVrw2BDN?PQL?tJaAj06km$98 zM0jx9!M98Z$&I#bfeQ$mL^xVhMXOYO+HKA0i7!ykz7c5qB={Y6{Lvr z)as31T2@ukyKd3;-seRDD{P|Drj?{i5?`r%-k@@J(w?&XFmmv+bm^KCOSV7(V1lUF z(cEjKA8d&oDymdK4poI<8;5cM5nZFqgl1;*h6NYFqA21TrLV9)7$a0jPI%`$^fs(6 z!fFe$r2@v~E-egds0g43!Z&oo2N6Zt4yQ%g@Y9ky$G(}`p=si`t&2!!`5jMh^K9nb zpWPitlva4%iL>*{KqFH&F^-q4YT~kFRFx(6O4c+eFo1y~7=z9OQbMs(GEips`lrD= zwl=d7)Fk5#6^OpN8p@KXfAeMa%JhfpYG&5z15DpRRsK}rm z#AlW2k}Rxg)Vbbm%q1w94TEy*vuCcHkLV)B7%rBg&~0MxIi$C3$Y%9w8N)7H!HYDk zWKT8Zk_qRYo_1s;&Y*br`p;uNIElf4S!PwdxKTFU~BInGe^U3XQ-L*D! z+tk}G>smBFhIiB;`kXz1ity#zsD?vvm>WkS>I!D9>zjojjiv%$x8M}F7iTw={vB^J zfrU*FeuMBOBv7*+QHc}m6hIIU;)zEyeG;;QI*+jTs7!KA0ZHJ|JHI8xf+{4b!`bP3B=3zIvTtllhZG`>Md?V` z-_D#2^1s=sXjPvLh9pa4X}=!)fzpr`1clRTGZ*K+ykSkP(JwPceRAq@p?|jFs&14? z7e5gCnukz}b2AT<7B2{mcu9||?}YIv3Gj`+tj4F9573zLJ->QBQ z@(>1<=h0b0h9Tn}nxMNNc2ZF=Wq<7Lz~y zAO>@l7z~JsUkP;BQ{XYm!e99I!f%sj4i;T#P6#VCxE_)*OVMcB&K42rvp+9%t1PZ09bPck4!>wX3jjR(6iMR1t`fum0uNsY(FVy%ueO zeZf@Igge^t!d%8hTzg};DX%I=f)`DR z^dFhKvmhkdg#VQtWh6zNkM282U+T@OvrWI5=oeX(XE#C&$WuBGN?0^8Gg-NNlSHdJ zl~M;slc-7aAnTN0U$&u@`7Ov{fT06A@#PmPyqcpz&|E=D#Vxz z6~J&u0}&t5A%us4iR}nCsbrcXaqXJ!?8G(bzF@OU zJpA%9>WJE?yUXi0ju+h9I^@+Y0E@$dNoU};QQ z8su>WYb#OH10t=%V%2z1{|jP*&e9&CoGhe8R<_}?CpM&7LCu! z+N@5L`tes|HrYyb?a;5bO~4v!bbAh4$M0|Iwp1T#%wmk>&0q@^^-i81$IwKvWJ%nY z*c0oAQZz&!5hBG^D~@#3Vw~vdw{lsUPHs3*r(4$(upLT(*y zke#lJF z3A&BkIjE|5iy}V#?nhWZ>ulxZsakR0ICB~{)d%mE=NbjL+Ah__Ra#h^G+3#HNsVrn zc^ulH+Pv|W``2!fTJ5gY(Eai;J6}zbXG*j~+iUT9y~Rpg?epE=J*CjQ@ll$qZk1=` z{4|@ayEv$j_qY*S9W5{3F5__5tueD=C(T%mXL)~(9)0<5(xHF9_^;6vvUXJ!HsCQA zrN9RDu6Zkr5=89U$5=?ITNhC4FO-UvdVo|TbaT=z8AQK)BuUfif%pY3&X9GXHLiz5 z{3`nS)4Zt##jIwdBdLvq25BigK9^pk)BY?*w8TRdEXO@!=TiXk)S2Ht!pBf%-8KkZ z5X}w&D6eklnzr;$6jTMKWpJ(GNNP6M`@G(N|5_^JMkPy?ekII;u879k;FAvp#Ey@g z^pU-?EH*Z1y$c{0YOw)V_7Eb35O115jaeyH0~3Mj>}j8C*8gOim2F;6j^LY|uuQbU zN3@U-l?a%MfPBqPDRmI?5_~fAdSnNeZVMU**=-)p?ZI!a#=n1YakClBwyh5Y&TtR* zellj+0+6LbhAleoTVAo#V^!9JxA|A!8M~pD^d_o6T*a}C?*l_kboIc>8&0>?#=I4v zbr1#NF{b;|wIqbn31v5t$Bjx+ipD9wTG?m=Eq^MBS%gwNO1q6v5FAuc6|#WOE`qOh zFWyYult5->j(r<7@^}43fX$zB97?LOC{RvA^uK?|gMa?Pv+%l^p9|f$yfo|eLkNn0 z$}!)3#WI{|Eb8C#fj|E{2WLR!YzQV5K7Qu#iDl)S5;g38xCu&J5+8D_RjB(oJDT(9 zJ}BQ32Zh?8F|WN~?~Qc{p_i;CtMjQ$$e_b7virn@z@L|3q)9Fr5x3{spI!TxPa>5Y z`EJm6mr^Bz9yjbK~Y1vIas$mE_P>EjK6|Q6j*IbHhku-v%&sjxSg3=4hfElXmb4b*wWi}UH zUMhJI@d3_mNb`9a;po%UzIqgecz@T97-__w7j=aqJ-qA?8uH^(Po??Lv4ss6^f0EuMng^Z7F$U!2h2Cw^ zFU6Sn>b=UtAT}r2e){D{z05L5zIl_LJlFbm-`d-2@1MR@*&@DnZuAE^q$t~yJCYVk z?bIoS#!(5EU2uJpmmzqqX7Cq$*DV)RWt#1Hb$(9Roc%r`5~-5QlZMhd-J8`}yZ=^u2k`y~r8xt%`k7Y3&=gp%fWKjILYss#C=6X6PqDZ4ewBTrN$} zaCK#!z*3lafB&gpPtTH&A)t}?&p)}RXQ+uyt+H%xQXtr68~XEmi?Yn#eEv<6X-GyX z!b}W=GhxwaZ@W&1>;nC>WquV?RbB|rGNQenb(9JYg~*yd`03~Sfa*i`y8IA@M{#ah znnqM&!D>G-BhjIo113G??;%~g8Pb)%y;o<|*Q_5J425^5bJZQ9=G~SLB<&zNuO0x`YT`T723dJN=*P@C`V+i!2OVEjV-z6%HQq+dTgTxJ>Elor- zWc6evF@SR`OT@GG%yS-I5y={(b0k_Bf?dr-^&e2{Hsw`j=7XG>15?=bz(|+22_x=z z&Vi;TPlM9mx|$VZLI}T%&3jdsW^i@Y3?~Jllg*H^zpq4jcFlJ$T=_!Y?0SU4s5ETv zHU2#~ROgQnBjoy;F-9h9#-0B|xT>@QEHO~Uoo%?fUa_7aRWSy|_}>(U!!iy%%RGH^ zZ^#O0pr0RPLo8^J=^LW5)z-M}_=9S+`!A3ifAt-XluClKnLG~spJ^I*pa(2c_@tLa zwpw))0WIW-M2eH=le61An^Gq9Mx$_{rk;OVj>{n*U4z&oHM5+JzAP4Bp766f2JJB< zRt}K?u_%QY*PLuFZp-Aw?HQ5<)L%MZl-oXJOMieZ_VqI-r(B;%KKPI*Tj!Tqu;>_0 zzfoZFUwe>+ic)_z4)S~rmd%Lns1hKX3tercA;*q-TK7$@2UppiXeOPUg>>WWK)pt? z#pGiaLa%+d^IiN%i|5qF6A$ zeudbwi@uRyz6I!Ky=ciMlQXPFa*Ff*fN*lDpR3 z^QmFEfe#brn?om(BWUF5F3qe~PONwb z9+0XSD7OON(zIqYVu=d`w6f&i%6!M7b>)rLhVos4{h7%?w;{L^XqkLH@-5`3%MXc) zru(@sljok-{dW!(+Qf4t?deG|aL6+#92cx`aTRm1jy1tJJ*^r{e{Y^yrv;aEu?~cO zx?GOyLFFM$aF7;l(-EHAz-6S$2=q223N6a>ynp8nh1|2#zglFYBH15*)r)+0(JFBL zpj|G^ZcjYk6sQ1PTqCm@BS0Nl#vt?Or!Jo3%pMJ%{P43rGMoMejrSjRpc{=kdXQo) z@=7wqFEx(`mdTZJtUcfW_VoLBrg7v5**iIA9PlPzH+xEAwSDA0#9mexSz@L|^bS*< zO-t=U!=ZI#-U)zZ2H!V2a-}pHG`uCb*PsX354kOVto+O*lw^?~q%ast2mYRJ4uMCyabWMM~QcaAc zqPbcVf1!~}BgT#zG?>g+!>MO9qO-M&>`EX}KUJNS-~lRUoQ2xKo&z2nDAp{2L$g=$ zIs)9JY*yQpkb}{uvb&tFA76IOvO$nh$~^0BNJz`g9Wh-wHrU&UofLwxbQTWvK@rRX*{S&jkyxp%Zor~Ge1#IH&^Oy~Z ztfpH@I1cP;L)9|W=MCuTJfclD84Nji`uVd%BscYp&XY4Nd=|C#(dzf52;d@1LD?o+ z)^RD>Hg9R;v$VF{NLTdhGmY5}=y(7lDJA3DMPpKHZT4u^CueIPZ%#ut!%ze$5bsQz z?O8mq%K_!=>#GJio2Rsq2Tr`N3wbI67Rgrs-HUY$nK(x)y zB*K1yYezE5Wfjg8QSgy1+nQeMeD7KP?XTtAcbb@=M1;5CHfz+0p%T%f!CzKII^?0a zSax{~f5?|kdBPSmei$C%Q$N^t-Y1M-&I=toJKsvSTVSeS;bk=kTy(ZawQq^r(Q?aB z4pnfpU8}Vi9Mw!4dA{?DW)KN*qP&d5oXnBdBna8Fpj=XmVTzbzQJJO_%bj)u=?C#jlf87Qm%FxctINDD6B;CE0}MuF zZ(jSE>?F-GvgH4V9Dn1D7&$k(RBu^K7K_JU_mVrLzcUFh z#3E}H>k*wKG^rN}#Xi8y>!g}|s$m&id4l=Q7!bF~!__kqRlO90!&e`g}77I<@u7e|oz>vkB6So$lEsR3utU!!AT*7M|jh z^j(g{QU0y*snDWIJ(6XEb+65?R7nUDuO#>U)!ct)l~iPJVcgC!+4x=>(X5=@y+Ax?nRu z{X#QDWk9Ew0HL=!WeJc_LaX*EOY7|MI*yUj)X6WOFpFjvTZvw;0akO&E~yI5=>~QE z+PKFj*<6Y?W-W-O+9@lG>`T9Tl%)Rg9psT)`bI^v`ymD4Dn3iT$ZXenp&LWZ(b!Ya`y>QXSjiwnp}6FK^RUxTd$h4=phU z1;DDM>7Kk6c0ku}j_k^s`Ee>xCoOQd&UdVwlZi}qT*o{v2gkuedHDUAIXwROop1cp zjwuEq%dfMd$8X+|{LXI=ec;&T`-`VMep61Mh56l;UrzqG^L{~v$iu^SssO0N7vwW#Z9r@CfwxMRP39wDusj1T%A`Bw5kjva{{ zvKXAKNmrTtvM`wxLW;{ zf-W2(Ug+^X{!HIBT)6*e*D;$f)gCyyb>`%r(ttC$DD-wBhN6DS<0ne+;OM4`NnWtD zu*(j4Y8K62-G8!~Tn1!_27_36y3Xt4p}?Wvzn)rcj2dXfFH3c@z9N24=|ht})J`(< zjD1P%f#cb&R?YSj6SZ;R?+45b?CAqVuTbuTv!?y6$wsLag=@rSf7C2omjcyi7o7U% zpDs2n-Q=Y^0U;*QIlIN$5|(zgMQS|m&huJmoX^JMnLGze+f_uF!qqJhWJdTq>ZSDl zZMG@G?Q^>1+jjyHt^?qn&?jlzX1@wxUbox8FULom)kH|6K$ofv;xH0@$Uc9yC}30i z!v_Rhgo&$jDTn@)0!HX&?_m{RG+U{`%ZLHosvYu2=G^S_U7)4BQg6_SBtNwm*(;NO ze8pgQ;RL)zYe%b0w?w%R8U-uMIciGs_GBQA+5XWFROUftpc8Unz7S+;*IG8R%qWLN z-u<3UQXr=iB5BGF(cc==0p+iQ45&{2_=O^3rgNPlv@#Ih)^`2gTjrVIf+v`s)_E&` z{uwcrt+NR8QG2Cq@~?+%Zu-|BT?JbZ*CL275U)VXQvLG_p@02yu|=;546_O@q;{}z z)g=J;eaW~Wo^8;gutjZy*MdpUG%{yC*gpRj-*1~RW@8z^COM*1Mu&H;;^Kf=RGa@F z8T6-;EEWZ7^r7nC4EHZh_+$wNlI==fPeGrIJQ9*wGc*GoiRgv~l(~n-${Xt;$sMXA^g&7h?vftY-_kV&YDcu#n!#1z zE?C-u`eA@7PWJmjxxrZUp78GD*A|t_TBZF(Aoe01_vz_MyUUXyJ3acurHL$|OeYPE zm`{w7$C9r~Hu2D_54=)k-Tgz|`{10QuiltwF7DKPslb8P{yq|LlFimpD?s{|JuO_u zjwmr?U79?-7C~zU=%Rqwh;C4e!Fu1S!F_n`TbWg2YtvF1B%gsELV!N&VdT;BCIMjv zUIk0fqrHhqb!w=DW2yuQ=B%uxI?BMuw#gk%cWkJ$Pl|VWd87Cw}7S{P`cH&e~(X-40 zOrSMJQCOL*yIDT}m`omcNN9pRBfRGjn^wYkk-SP9OKl}Mvq5|qh=S`z^jVkgwlh+G zRICOb6|m?rEefepfj|Q3IT}P~Ev$J0N6sE@9&$N&nULwIy0T~M#BXUr-B8QWdwzjZ zuU{KpBKGkk+SB{ka7Q299wJ5wun>x)ZCg#P$GX+J5!5a-MGOz5J_*I=PmsMfXaY)g z{AQ=m6|qtf@Ye*d8erBXqBsN>mP}Ygwp)?kP(=u@a!pazwNyl=+Zbe#HCoI_tYw{c z)4GXQ6?Mi{*c(yGhZM*9TI!@kBd9CsG7S|f&FCib-1|c9R_nir5{IJt>mD7d`R<@0 zU+;SHA9GB>mv4SxUX3D-x64B>Jowq7UMo0Ke)pn(;z34!l{ce;k!45d!wAS_2$(LZBho)A85_E3+wjrvm@X^7Bs?};<(Bwz$K>6 zy0!Bay<`bmtVAo?|A1*#y~ck_-|-6O+_%FC&Z;JJV>G3Sb)KTcbE|r_VNt z&%d%A4>rh3ST2}gA{UpaWEWg+?6;>Jqc`5NVWcUqAp|#O#~qR?{l*4~~(xa(?28uwC-3yD9A7m-{BNjXS)?Pm6Zl6@Am8Z#2!#VZj4tZF3V90t7 z=!imd>1DH^%xpeFnq%Dw3Poco9TABncS!q zmu=3r(V4ZK@a#g<4hCQ1l}dTn6BqxO{l3Fo@l(#xno8rNW<;5}HeSdVSfhrQA&qxB z>c-yEwv)V^T`UXqQ?v221`>wBWpn^80x541JQP#-=>wzk$?oXXvKV-819Mk!%b!8j zV-4F!6Lhn+-=8WtHJ?@yh}O~vpp_1*W8`;ZuFFYIN0?<^$`syf8WwEjBSb3#*bTL6 zMy;Wb0Ci+&Kp-KM%pC$66Tv^8GX3M?>rVVp?&#UewV{gq^;CXsM2Yt29PR6Za+nV5 zJGLPlY}2S?=Z^yt0|%Y!G#fq++9~FNV+!S+9Swn6BGWegi1TaP!jO;%rf}_F#yM9F z_@va)s-#(qt3$=Y4pu7nJ9jZH8Gb{PO?!}2`Poa?(pEL{2sEt1NqB{?cEtYv#*y~I zXsbiq7R+8@uF)4&a^_QD>;9?oXRMOB9~1l(uN!JiUg$G!jp^bVGN&hD}8D;fY6Zqez+TtUPm2?6tT0H zLR4HuPKQ=Ygf05XqP~`LyoXgi)*?m>`3XrHrE2SepHT7%{NgHkdtw?B@?CLDHUClV zzRi?}Wqe26;#`gN+Nq|xX6mm*6gAJLhV6&z;3O&sqZy&{nAz2kb5b5Zs(!x_c$kz@ zkK7F;JfGURBwQ>!xm{Pak;5m3p`p@wkmPqEqeF!;Ge2kIq{sSKnEAfnf2A=jM~)0C z`2eelln9T840_OW47EKH#TwMiZ>uKir5gBNgEVL%;`aK>mcz}{pz=Ep`qipA2K+hl zb5q1lQPJ4jE$|4L%dI$lSDQ5-^E%K;m|kSHc&nE1tHDh5@bfXh&kD628)f;VAF34P zQFFv}qK!t8wqa9m3QEe8q}%1A!+x;_L<;>DkeA(pMl3!>qyDh>lNePT(ehLS#uqel z%nfX?w2ajR6ff85TMEn)bXhun0Mqx}XqGsW9Q}y7(hM?+1w3Q2-Cz9bw7SY-t6>o~ zWE^JIaTG)ILqUW!*I(u{vf@V%O=Hm)Q-#1gpfONcU?508kWBFPOqx^}m}?*WPDGQ&AU9ar z2ZS8+TAMn4$dNp`(hF&@-^j!Gc9~T7ZcCdM**~Ly?bZ{RxuyujvVFHA23RV^?jG8( zs;YcT1*F&IqD$%cfk~oE^%$0^2{psaHwKi^)?TG%db==PRgyJYq>Sbt*6n9VEAEhV z*nVnF{h;mL?0}-|0EgywY|wAdpXlK3#kUKA&Ehvj`8lFaKdM}$Dfo)9uAc!59-_AW zNbXK=>E{?*8w1{z8+~v1p232=4cQ3V71E35H$ry_)A_s4Sf3uH)XU3P@Kfb3MY+g!rvWoDG5gw<9>Kpi(Atjsu}=iGyv%75@wne#w1lv(*hA zONY#&gHNu5M$PzkK8381>*WfmY`Q0PJL0TD#NHSIJ1c}oQ*@<$)%*CfJ|{0lnH$LkyXJB^Ih||F+kHIt`i%QNj~ri<4a%DVlOFA$?*FNi}Y3!Q1YmS1EqZ58a<0 zR57s0>#e%62W6VJmMhtZ$0JQTe4-?M54W8ML$3V%D3v>7EXJwPoFD3GFAm*Wtj26 zGvx});BzcRd5z=5c6eFX9D5yO0tm{rRi3Nj1r)3{aho1Hch_?b+2<++Bq!wavxHD3 zAB!(m!01p}*<$6G@wN|RS}1)V#3S}s(X>qn7d3b|qXoPk^h!7Jn1Oe#>#PcLlO+5g zfHJKTcGes@PCF6Mj9pNL%lXvPL`uW<&~0@qeuXju{e>B zYf%*5FV?=)b6L5f6;mFCz?Jj`tFra#v9*mKhmil+_t5bvw*u zpemRyPH6zlC#yLqi3C*~Kh(OIHX6rS81<(DJNsc9fFJMoCy9k!UWvSyuI(S~bVxmY zvBo7c>=wGAw5iqsT}5qjh9Db4JfrD=Tz{+2CdxZI6#_5O`hrhb^UCL9*qz2;Ju0+2 zQo>?e`+Iemh?n9c+>}$weSr#22>Pw+Rn~bUYV43f;6fmh&%+tY2ulHEhn2@k5Im zk;h>pQiiGm{G_3r|I$;0BvSJOC3!%a}6KJs+z0@lg`8-d&+1 zmVrjH;9^5@rMf*~x^PeU^L46nhV-gB;PDQL4&Bx;nDIozM>_yA;2}nZIXCM$Gc$HK z(ZB&GImQZeMug#jHEvOyy7NS;$pUs-POSuD5x`cekr%@AE_ILPEO7yZSHBOmsPq6p z=RNv3GfXy_Jweoq!VI0PzD_z%1v;eAgxNs;a&R!Jz^>*)J03S^`qYfa1TNdnkKnF5 z{S4~bHu|W4?vTX_|4gygjNzady8&*G;hx zWbS8LKk79x_UOJjVy9*QVH*;D5BI*Ir^8G^dg+&YbZb7Rvwj_KzWc9;0x5nv!7flK zO0*F3(C*D1_tZ2VrDj6E>o7`pOI)`uN7D9XS4^rTcs+`#%25njtPiHuE(GZAsG*gT zQ_AUf+82LkBzHEE77{``_UWd5u&><^AH*WgWUz$MSqwI6)gqK&ZGA}&lh9lPafRm#E}xlg_W8stI?Z?an4aTC>z}-g%Ox;0aL~^e=RNP{Rnm=qCg0Ls=>Cr;1ZAlC2xoRfOQ%0aGbA6 zrxL>u3<^20fQb5ik!!U9Q+r#5er*hR3hKo;ktP{`v0453oKk8#Gi^EwTZtuI;`rzN z@CCw5#K;^G;aXY#@-e?Ew0&1I3ozxvj@-dtW=L`q&a72n9t=zeoSb<|XBZ=1RxujJ zR@$I-9{z4Z15U@GFsB}~cv=!29=oG>#_t2@`M+!V>1w7c_G`&%E<{43(cX8qteDKF z>ylB_2$p3ZP}<0Xn1r^Ou{v%(AL*6e%&DA4s|3TzL$~w!hT}`;zGFQDT)I9Y z64#IRD0nhdN|xtKXaj%DuMd$cMZich99#-EY{C{)iIni;c9{OEU*oJ_*7nxg^650v z>4MQ@Rv{;I=MuVs4x|^R?ei>%(}0@L^01?FJY{slO%^wTY8EQz&>$b$wG=mj_??jo{73`E>V-;=jMsh^0CRIMp3lS63IcN)k=eO z#`5@lZ$4u*+bH#Ze+h-&MM9p*pngARh9%Qeo4#c-J~oeH*e@bc^%6t*>kjWlneA~( zf07PfOxzMtdN*6V)l5S4^Gy(`Dk!Cq_^0x++kkn-8X_@b5|eZ?#Yj*Ya3AjO%ja?5 zcfYO=@@BriRD-+PIRzYnPUg-#r{RGa<<&Kp_JYt7DF-PeBt=3-SeKICV=U`}MXM$V zUGfiNpsZ-bUkfnac6>#?$_oA6me?5o9@^ccnWTPKKa!ycdkrn}*epsJz!}Crp3IJx zZjSo{^5T>9Oco}xb3!=1|94Xb4bdO8LkEIiajA0i(wez{uM@tsWk1?#VhwNu=Gz65 z5Z~VxUtF$>l!N5Rw^L=KmytiGG+k^h@{+8($D`}O=GcCygZth1_P~T=oQAv!% zdDZcdae}MERIgnZey!%OC_4kDwiC#hJ0Kp#`b=e-92U|qv%u4J#G07%rORGGc`1|0 zdLtdXPrct!=l{@MHA%;v3!PUyb@*q^ojk6Iu)w zScWC-;|c|q%j8L6_&Yh3y?x+?lqq7Rmlq~ox3ruHFn6newAf(49J+hnq6#kDSLu(+ z+4f;hQ@hZSA~Fx4pxO+&^bpkX*@0DQ5~8QdkjQ<1e!iw@@S%m8?~@tjg}J2($^CJ+~bDo3<*C>scx zxt`mohY*5Uuu}KdS&}SWV|$}`BoTy>%K|SKVc{HxY3uZY4bVCbM3F|< zZv@{$M#hf3O8sSe{)9#-jaMirt$=x`NG+X~sGgw9JZ_Yxa5smnfnMYH@y$zj-xhmJ zM%4O}?vnxDjsqx5Yoa5-b0u;2s<2$C^_no}$8#s%uP6bj<@7^IMZTKnXX!_H_^9q! ztQQ!BhYdF|4rpbL$Hy~{#I(?h9p;VMvnzxM2;awNxUrIZJ(G$bT#ES{X>=BN7J zghr2OUu`tzHAh(Ceg2sW=qTz<2_rVfY5vZ;wH1-yCxH<@Aew%-gD0j<9_)Du7c}#!qjf>i3i<>c34!I zA49S13+Eqst;xmLO6y@ou&2LC7K1Vr*3%Aa)+_akK(3qNT-+k$<&5J#* z#s_AUTIFXjhF@@Hk5iWR%{K@gbW#Ui;ZjFi@e=TY`P%3Sc#wh|VBe*!tO$;#NqL$=Eoet3jtN0R%lg-!ZqqoR*rROVzy=yjy zi_@i3WruL?yMI;(a@i1zyE+TxP=v$_DGW!XRMpnaJp2Nlvh7kN^8P*5ubtV4b9@e_ zuxR+?W9n7bOoat6m!&8+Zp~D;u+vV{U`q=Hy9>9(J6?RpV;|pT_Utiss-DF!7|Ve6 zvE?!SFb5d%DWc(U&Z?KmZ%3hv)md<%L(2&2>ca|7`yJU~ zY+HC4wN1iM*)i7sIQm}5?{J7qAN8Xb&QU9S6q9LB!OtQy-z8p{zrqJno0`tlp3ItV z?7jTU7o5(Om4Uno_Bw_PZ>w0~kyu0pWRoCqX)LTyb`rdy9}CvS@_O8%V*OJLaUCDD z;k0Y(NuzrZZLoC)i%Nz#fSf-CjObwbbZo<{a#YwBe8(vb(6u7ac zOOu>oAF_eQF`a#J-NI7FL~8YC3~S|y^?uY~{vjc86Mv(y{yhL4XGTv)k4Yi{BMnYY zr8a_|VOURK$&D~=n!OO8v2=l&3PGH})jwy4t9SE#QT#jOAu$9uO~8z(MG2c>5E)k7 z5B?6zPNVpe?lAdqHNv6lMHONI%|HuBd1P|M62Z(OsAOCzg=kKGR4?!ZT&Z|r1k!>0 z0%6C4{H9)G;2|_C_<^`c_7y`jd?c7{<08F-*1+TZYoQu!3Xe-sPXl^?G8~9dL=9(! z-bB!V?qDKUfOtZC7L!5ai%}o?azp`8=>16?-M{i13w)tbZwPBdFH{Z~b6EUYgG<4)wu#-fr(u3(efWir? zt9A2qUu!`v?>Cd?Z$z);u$oh)@)1H=WX{W^S$FKtE4HOsD-q8=mLDa4;cCg-UO~Z-LPCgjNOXVq{s5)3&VWDdn)$FVsm0wQ5>d9OsPERsR zGCV8IeH=kF^9y$9qAR2VyJ&WsHgFnvO@Xz5?)-GT?*#eLYSWkK_VXHqeV@__5Ni2^ zkFc0G2%QE1411$zO32`7x z7m>eI2NGn&ZDvpOM#Nx#6mt@mkhRxhy0E3w*yHHIAUVl>$?q#Wnhrio%hV5Avpw6B z?2|z&>$hvy(ks{E-Oc!m2aHb393OJH1cn{3IHJb&k!`)1h+=- zKyDM+o%qxt)A7MdiG46-dcLs>|u{g{V+G|l!!7Q7O=TiT?vrS z2rIaY>w`R3CJp*dMC32Na+rbTwW|eeCS{DtP@B*qU<|na2*uSgc)xu{1F-%08cZ zh-S(Jt@`VGew#sklqfQ^+_7LjzMTV@{rfjuVE@Mbx)J zy>DECH@F5VE=-9B;?>`OxYp)^RVtC>T+GOADzsHLSw?PHDM_WkPcNbr5O*j zp45j&(cvXxQr)--iNY!&^&(Re>2g6v!1gxN#7J95%w zXQ4qSG70@-cDnimT}}`h+X$p2M?| zpQqqaClU_0q#q4Wd&^;HA&&>FtVZrCI?Poa$2%sMio*8b>Z`S*wZ2N3~)a;bSe95^jjR=I9bE0W}*>&Q8~U2iyR-xPM>wEZ1YUso9*T$ z$G_bHpXnl(RXl#YWxmB*zz+r98{Tbtr>QBwQ}XF-L666m*_o|h!9(60Q z??s?PN>V?;XT2b4qt zHa`|zPUCEjw&HgnCGT*NKr^oz6t&t$qN3akU&!9-cQwBR9|HYJg*$({Rs`xtANf#z z%z?PrZ$A%$R`RDd8+r#8?6QX;2jxHpp=_FB1*~{6bp1Pmq-507LYN9&*^^J$|3Q$(QqNU3rHl<*}JZ5Vk(dEH{V} zZHic)3O)XM-ba@usjkuJsL}+DbXJNGIpT}=9$-TkoX(uDIbvR_6N?Zb7b{ZK}WxXi#fiowo03-#!ca*)lsbzoM zajW;R1Ci@Oz-W4eBmO;PX5Sjv(J$SWXxv=@LWOm{BA|^EI(VfA^Av zJpy`;qIWoXddzZ~uym2REt5(~iHW+4w6fygcs^iY zk^W+<^SH16@UiXNJ;TAKITPwl_=bf8QAVSR_nawnbswX2)v8!jHr^2)Wr07mzPuUSCChD@v1wFi7&_;&?Qnc)}!1tb6JC9^~3)zn<>ubig&%ZJCo?`xHoQ2 zMPF5|nX_8>DP957DavTZau0zzlO@(0~x~@vc2hG(G&a2WQ;2+Sc8m(1;3yGzc9-|lQQ=Dn9LJ4Yu)f#WUkAE?vL0s4$&bS^7v>-QVKg6 zk9Vp{RLI_ynWy5SiFtLbA{~V?fLM!ud>KEY8Q5e5az*dFhFZLJQYHIfGAu5+wkp~U zD($;_S$lU<&=}=ZJKfbYVFprFfOt!Iq(W1ozsP{gR60T(E`AuQhP8f5z3$F%MvJwIIuo*_BjniAosaw3mS6` zSW?8PL}_V$tR{&ouy*Nh+Nzlh_fYo*9?Xhy?c>hmw{`RN;{?)N%sVY`Wsv@oJcA?) z-*hsQeEo*OsO-GSPX6zknd)$WX&Y*Lm-#c>mWq)*nV(YD6sF@Bn7cB+xJWZTHYbN* zL=Sw?`)&vyO7%%!MSs|XU2MoSc$&}mO!YQpnnqya?nqcE4qCY>88>t> zw*6_z&ZmMQ-AcEKJlMwgqwWG{0$BicN1oDDE#?yF5TZ89cB$ou$|r$HDI|~fx-|-3 zC;R-k1ecZ6c2`aWy(Tx)1bV46w`)i9uCgxSt~#skyvMfM08V5vIzW1%>Ab4z)NpqH z9E@k2<}$e}1ioxYKwo2b>8CDiWD6N7%7r2x@gRlPu1(YnjV^ z|AT!RNl;hn;KJywce{n8s3!S}U^dj~$r$6W>mI3_Z8f=2pX!D*xqJQoM`E zDr^jlm&pral7rFw@HFQ6P0_m?8`ggMQSz{wjnr77#!e|IaJK23X!i2RP*fgw4*j<6 zUyV_$4d1%PRV2PqHlb{XAzPv+8275XdIC5J+AwfaF=pSLG-wnyXeg)-V@b@b^l$Q( z!@-|gOUNU=3#5of`3(``F%%#~0zu@m>_VNc_;U@yT&Mk0+&R4k&Ih_J%E^QR%*FN% zv4&c4g`FWmTn_-)VB0nom81wpT5PX$$#Y?qzw$s2e2=TOksN|Rr=m^p1wzVD-y`U0 z^5)0rU^WsZWq*5-#)fjEGSY{Fw@F)*j=2iIlt8PeA+R||Wo!N{5 z>OYAvP*ADVN0h{vjnz%mKhSzu+=BUf&cg6o`k{-@TwqOtdv1;6Of=;gjmT$I_B-P7vj*|KI|uk~KLXUI^S zIE;9FYkW^<5Pp99Kz^$fI)SXAvccFa(xO{G6I}c-tXvT5i2KK8tdMTrO0JT6QDgoc z+`&Cb=JWls9Z~ySfsHI3cfhc6JT4R}zx2E?`-LJN;sa&Gb=iefD{vpjkJa7JnWY( z;a9ip!FN!+tfcx=@#Jw^JDoN7cF;i1>*K0nxM{Cuf%Wh^og8f z_EMRrr}&!~FRQ^r#=9&WTXQ4^|5}>gtA?0YF9XkV3@sMeEP&TvY=X?PJ!a0;;V$w% zaD@4Qf9C2`@6y>vqyagq!`7ov)fPD#$HR%i`PITxsa9HdY_RF{fwe`jn{l~K@DT1| zH#bu{s@fM44z7MfAbBIOziMn*VE{`CMP1uG*4^N0Wi0L;;z9??*F6LL)V6Vo!`G5Xbg% z!fFe|j(vlP2wac8hAHz8cHFrHWtz#EGOIXyxGb7|7G$RWd+`@vk8$%bMNbEog1!+v z=jp&i$DOivc*rG*){;{FKE*4p6#Br~S8&V{;15O9(RZDaG4iDZ30LSIeB^8=3o)xU ziAj5>LxB*FML41r;eDsM2Si`Tq{X-LLc$0@sZ3xF#N5R(Lpkc8Gog1Vb4CfDOU>4 z)5`HD`Uk?Opy?m=TmeI71*Xg;Di&38D-xAu(n^w`%}wUS7~^1ZL8%qWq`RcEH{Cpu zY~bA5x`4BnkW<{%3#&2>LEFtZW2~j0^-!OiX_Tpp1o``7Q6C__gexGXJ;uPdl$= z{|UhM80Z;T-Wq#tkd2Y?Exe{#85juIfDOFL-WsB(f6MpU5IfMQx4c08Te-jU{ZkHD z<~7a1%=}N?ul4;g;x%Sw1$GEn7b7t5KgI*w_>+EX^X~z9&GVKIsDF)L+y9gAPy9Mi zEU$WC-ET5r`qjo)*`L6~1ROwCdf! z>Mu+GZQ5A=>d{+{e@edE^ZMd-eEwDTwenZ%Up0SP{u94i{hEH&u`vOSVEcQdfYbSp z45(wJ2QHyk84J*c*YKw~`QDZeQ1|cgt6_hZ)Ia(Dsgw0>$^Gf@|BPSX6K~V__mcRd|M#|E(|_duF$T8( z+R6Vz_qs%0-+%P<+R!{a|7;b^^#4z{3g9O2x_A6{tN3Rfy>2mo&;Nh73a0;V75~~U z{=eHQ82+Db6-@u#Du8I@_2c8u$HRZOihl=#|J^G7Ki(=B|K2JXn1SBIAGhSqY53!o zym}*lIU4^03xDkhf4Lq1$vJt276JmcZa|-cmVu3#fR>S+1qd#I?;i#R4pwboaVvdO z$2V7m-_g(*=;OS~p#g&Wc4Efnre;nAY|KCp=(WLDM~>TW1G=iMfk0z|q_d;Are(Yy)_+1z=+i%qRws1QNF%ZTB5%#My_V1|f zRq|(~|91ya5LndQ%E{OPIQUljPR2sUhPFn=K;O;S#?;9SSQ*Qo%KmmL-LjOG;MAnd zad>8#O(zo6Sz-#t#vWFmo01BaW?o2sA5M}c$bX(mQj+*)>PzDRbBvNg5ggqpneWmq zu|s~NPbD7cBUSh1{#V`NUDid6ZMUld;8A;DYoGJXbA7)xci-pd<2i*Pam3JeIvsQv ze5&X&IF&NT$Vn1du>NdD{f@ng$ahqp+a6`xTMevSB&mGvtH~(pW`m5eygt;fM@-h} zl3(2GAq9e6mQ0t7iU|qz#tYL(l2#`tC%h-@t?lijD!ae$h4)IvB*Z0B$4LMj67wrj z%*GzKUg-diDup7FZwX57Si|a!!UhG5(}?Jwi(yuDjWpd*~ zCCwyO%5T)`#DqOkXw=a2r8H_3jGi~hgymJ-520|9k5x=fj7z|(b(2`xCdSu#hTWSY zkLx%XBO;1=DR?cg(D;Pq9H5MVcO*UKma2Y)S=ocX7{Kj~>C@51Y+w$oa^x z+YCyoT^bMH8Xl08e|J4O5C0q*gVzOl&lw*a)*dy|GLUUjx>}Fma+47mx+2c$oi6u% z4FcovMa$aP>(M}<7VKqubU0`wuY!qmix8oKnRX%+3o(JJuASr227l(VRmp9@rn})r z%Enm1+pY+~;G8^WDGlo@;&#DTXod->#^`WDG`mWO4 z%DH>-B!UCVb;SgF9Nd}X1DYEkUW0wW2%3pk%T0+mkcWn5Y3V5I?OmQ1PpMGv8EV^b zOITc@{Id<^lxB&Ng}{tmGn&xb5Rm%_T~gl`z5d+WUwp0zLekz31tX@I6I&8cSpTEH z(SnkPwx7xQYMFd-&ydNg&h6Q1XiAhIz@E+1Cplu1SzoRC!>EjoC*b34;+~erL9Rrs z(&<_-bd1DG5RQv2?e{Ru$rd+2S$%hhc6UdrW;I&GCPVl&7G`#IYfJa(Z@ra=P4?)v zn1$RLZu{$B&5JPUKKee>i@};m#6M$2Dil)P=_h%k_VUoXNM@n7gsghPo;dMEJrKR| zt&V*dkOoV{S#YZNQ}+pW3zwEyc&L*gVt2)wa93OoG9AaPJlOC{bYK+`-=ljs>zHp@ z7UQK(@KW(+`M_ppDyceZc<)1su}6qHs7h?o=y;U&W}Nq~2hBrHr)6*I6FugvVKOkF6#n#^7ijdZHW z?}j*%a6iCeGYOlV=jV-l40SSxSF8F6V-ebHKAER$mZnaQAsKVi>rcm%$`nuS*as(| zUf4Yh0If0lU$-%nr_XPcx@qs>H>^=F9*Hd?yHszW=3LhlSHS18ZQ`jcS z=$L6*DSJ()qgkILvd-1QkID-KWInK-#BMEAL7M!8+EBj;P8mu*NU3{p!jO?NMChP> zr#ZCgwTGn**D9+A)xrlYh&eRu>a6VQPTcwAkToW7fMbh$#C6$Z!TG6N@7E7}BlEE- zy(t3JIEb>u`W+qvE=%f(0xsBdZDyg0;`&eYzWTy5YiP(9-#Yq(>|%%AwqVHP{7(i5 zYLPGKJ>u;8Ix~7;PfXj7w%(%;4tjbHEv(BgF0LnTeK5TE#^+eL`n^_+e6iNDvvXV( zVx0q$hcLU73>_p=&uZOU*mA2eZWdoCC8a6X zfU*hG$q&l)h&sb39$oKDtUa9qtg3QCm5JV8v+uUy8=kg+pw@o>cQ>9TujA>`9-XTx zOCF&vlM-o9=~(2lOy!aHB_KSwn-OZ>(|$IG2Kmre4s3=M(NgCW%Njoo*kYMJ?l`tL zR6Y}XY}|aDFb8yY7+lm)r*g)luYI#nP@*hP!G#i%p`d4BpiyjP@hJf?@tu`FHeK?$ zyN?6N>4^9A9s2{mv5W>J7RE@{-h5B?*ZrZM$UgtbkmTC4XHzfu-p-ER5B7(v8U(fr zuXnW^{dYv(Ar7j+X&d*oZ>*FInnD*x33K(Aw>$at8+JCEQfwg!QYQA4Zg%JWctL|EpzGPfAz1nD=l~%?xc{Kt$(#oMcMV(6dUkaMw)^C~w6yKA;drSDARYSZ zaK6b|37G#$1BpTQzvaw~1b<;4V16Kx1*FaX&i_gd{z0i1&=;==@6EWl z5d4U_gt@U8-_A!6xmddnPch{Lh2$kL?6m_CULLt>g1FCA}MeX09~eTEsE5PI!O6>#CN0Y4{Y4oLMDxLqB+HnqW98_%Qt-R5V|$K z%g<;u5bePX>N3Si%JZMY+754zqf>+#Z+?V(G)kbnfb7Zc&gEsr4B^IsHdruooOc%3 zcUeC+jwE8>SJ>k;M2b$yI;(&GQ6UH;@OUWCM{dL&XLbhlJU$kuwG zlzB~lJ%#jaj*Hg}Lu1KJSd?iImAH|?-2Rq(tI`7(@b4%(TC3>4w=!_ze z3t`Etf_jKoERRXkhn~^*nUd{;s=K5l~BIkjUhQ$rFbtchCB0XV#UpkTQu>$;qZsY?f6l+ zv7rJ`qv6;KK22y(4;@oIUU=pktw3~WET#9bx!fToftPi>(}Zy2wzbGNE=u(gJ2}z* zlsb+CD_4@IUG^NC5*-uc}+yZ{5%1^B0rVT<=)_FjYF}z!A8)Rq7i~` zEMio-tV6{Dmu2DV?%56mLX?D6yN17@i5qLRDjDeWKJ)j~xT9_(LP z9EXX0DP^~p;#lNQ;ycl~q~z8>4IpQr+-RJbWT^e5PUzs!u=~)<$#>zoMX55hwc%Nq z=AK(A1vds2?VvNghQ8O|@bPA4uvSvu`}2(UnC35oObV504WP9=B)bpIz9&~j%fxyF z!4N(Hb81M$wofD8rwv;F@(J8eC4|Vw26$N~Tn;~T<2t9%)c06;Re7u_jrWAOpFR#6 z)V8_v8bFzeXF}~OeMrWOuY|Qzr~vnZ-jv|NI4^tV7OUii3m<18=^AMB3pd`>ORLbz zc``=|E*3y*ebkbB$*t$}odI<=2Z^Mtw#l|Lr8LQLl1EFN#wZzhUxyxh+3n3IL8?om z5x1@Kx%s(?M8*U&R@enS&47?)+P)&1LFQWry(-e9cNuXE&;F zYwdtB<{>G^*TU%MTv=pxfH@<)A1u)(?z<85c*^gDEnpK1K9}XXEm}H{r(_44P3lVr z>;fueaHQyAkv6XKKR0OiOOX^-c;W4d9iIIfORYV)eJMEZ-le^3X)R@JjAOuF0Iq18{~G&q|-{-V{u29+ou}+70`)SzU8^ z+@Ax9K@IWyM(ktOLtSso^S8j9W^9Pd9k$7L3p#7Re&K+ecQY%hVVyrNNsT+c!(``f z`pw`|+k3Za>&rgaj3|fBV|@xG=2VaTVCKj5v-k0d1%Zow9PvrL7sZDafgeOO5LKJf z1acK@35#A-v?q9Vv%-NHvIi712!lgJe9Xsk_OzLJ13Yf#jHn^~>@!k0{fsgd#>^(0 zT3F2-<7Hyff~)WP`fqqjSyTM~09al>`hkGu?bG}(W=c-q6v&DQ0vRVDRpbcdMczOP zG(f@F5yULU5hG60_paxenfC^>zHSDK0a4VL^Hc;NVV z?C@7>e`AqtOu~lN_wyasX*7IVE8=x>w5QjUc0-16Y~c$eF1q(%BiA012Tt z^{dq~&ejG%dgo6GaT^m`A#)(kVE{6!uh<7@u)dRnIgmwTpaVV}e)}V!|BuQ4TLxe! z|Kj8Rb8%*tf0HvZvi{Qsu-w1K@f8mKPrxN^4eW^ED=q`Z;{O0J;CxuwIw-!fZEsVh zzya*l8!`kAFF@GMNmS7Z$Z7qh13q_Vc|&`zx_^N^VAJeC&0k+&0BZh0qQEaY0OfC7 z+UvI-fTSYudFdN)RA2zIY=5ImAc%WKh<_j-%in9@KXGdRhWD}t)Ff@SSrFHAb$^f& z*dJXOo-7l|#j7>4AxD;1BqS+y3Y+so`h2>o^R@vEHVQ1?S;v~(zUtsU)DGhcqIh|_ z8h3AB&FQ51aawW;?i=mjo9Gg>`uAOBXg@o(oYKCC1?lo^)ZTsC=f0W1QDBW( zFA=scN%DanVksYHfFMDK75Uwi)a>C z4zbM^FDT<~$i~^%I#8QISyU3SO7q*uE8mMto0O;vq_I*rkkn~VmbrZqq+Nl5AdV_4 z=I&Ht2(i~`Hh`lIz~EU7Jh)4zE6qZ)fKa#wX&_1F_i+BUYza4If|jPb9XHazZd|F7 zzr90J|M{L#=0m2&!QD`$%pxWilDw0J*fc<6$q zx2e<>>N102=W*XZ+!Ga{RY2ytVTIRbA4+*e1Y z^g$J>A1fY+!w@ZqH7b-5%hn&PU6SAzcAfsJgX14DNJ#zNxcD&=Y!*Ix%Y@70(FUal z+m9Kk%*}qHSP#CcSd8?ePMcE1DlTn;msvHse$4UgPTn$Kmd1ESF>Sidk{L6)BdWT% zibz=;i?kxi{0Bbi?M|`z4}R#Uo29{fXVT@IgYRW6it1{^2MHbhBPY5no0pvAKgbf6 zR+oU68xx@R`STPrB$kWskfxVMr=jA&A_a`9{wCr6(%R;awf@mrO~li~Z)%m0Q0@4J z+c=?-UdGgHIEc}MBwt*xzU67cwg6M~#uL{%LC#e9D-SktK54Ql@>zCJ ziqfbQOAKk_)*R6?WKabt?GY8jBQ;B$wZS!L;tJgiaq&ii6_Is>rHZvYLts|pJepK_ z7i%!(T%V-A^hHbORm?|~)$;<|+8>$J>&FE4M7{IlCXuvaaAwvRSSz$z+06i-&QH3b zs<}G8?l&^b>`(Z+6RMsEQWjs0YzhwTLp4_kUQ8A^-a9Dg_#C zwEh@{&(@t9!YwMp{(&4}a$b)c1f-iMYm}8fDL5~g!(%cM8#9Z?FDP*3h+BeeaE=AEzh-NLcbk6^gLcb)UZ&f^#^Lx#G~dOJf17c;Hd zwbfmpwy(Q&d4}zbn8Xd_=2%YV03C@u6az@GM_~ryuq2{oqMv{8M(x*5+)bb3l=rYO z2XYpuBflS)Kbki4!@!h@GT8;eocmx$bHFtTGQyrKmNK^OZ>KyAhE8${f?St9lh5w# zZ!9524^cMs`N#ia>z#un3A^sWwr$&XwQbwBZM&y!+qUg#O}nRUThr$D`~LR(Ha2$i z{8RNrW!)z$E8?Cw_vSsN!Vpyjh3}SM@e+z(fD=ZZy7s^SUrzAfZ23Pml%M=$>Spqj zRjDN8)rcf49b8=hPcs}5fPo1>{hyTZKgz&=^U;6K(_xgdH#PG#GyN$zxm%f-DN6_w zaj+8c{x{(=GqL`Fg9-2hVX6J`?@PG)mv za~4w;Ru)#)pG?Za!OFp6#A3v1%woo3#>T|T%=%NgVf_J{5i2JvC!0B|39AV^8>>01 z`A?q#D;q1jDH{hH2L}tA5t|VQfX$T6l*8mdK>$Blj{RqWos-=dz{zg%vn6A8a}G9u z`A-NgPF4;M4l_;;4kG|7rxAxKfRob{zzi_u`YFG0vT(8eya#Y`0*pD0xr_nkTufZ% zoUB~zMl3)5Rz^k~oJL&cMn;^bKOuk4Fyb<1=K6VM%*MrO%wo*RWo!&EHs&%nHZe9g zV)@TS8gZEXz{uEy%jD;?CZ;B)#sE_$Qzm1RpY5`lu$Xe1a+&~4jZJ?ROwE7rpNs!l zHRCYjFf}#f`T?t%=?^%~|MPR2nX~J4|J% z`5%EPM^z6z{Xn;lO(i26d(p_*_~ZNATCMcrPrJ*EPj~ZT?kXl&sWP==byH1M6IIlt zdq@Z0o4y^QmHKiVVQbg$+TzKMcL1+J6EEZBx-+i;-0(mp%&U(Xmp@i}5zW*~eA|c3 zuC|+A`q^HF{vl~EQB*S7_~L_a=Wcn`y1VX*+htePt<(LD)9H9X{=dWRyPx3@WX**fIp?+t8E*Es8IakRgl%nt30C;5jyi;s>$j_Jos zFTcLD%vU-SAHh-c9ZHj8Vsfs$m3rqLl0edikPnj&!~VpSuLnb|bl-%7TpwcCN@m~3 zHG}(7|M#}J{-fk&%Ay8K+0 z?Gc}8VN#s$(9M%^SZ{W_83r5yzsA^t90b52+GH@E?4)K1-`3s^sz279Qlro2izpBS6>tNMzEVzT`bFe$2cdeRE_^fqI zVdo;**TTZ}nPVsKR!3;zit>KSo7dXwcKdMe{q)HI(=*)k{wad6hTa9DX!-WbrBeY` ztMU5u`tjnx!i|%D<=y3IFJJxsRcI4um-*<^Y-`Nfn2#_Zc#ezUNb4xlUI631u@&>V z>^?3!l`ajBPYY~&fa$g^`%|m0nBDtp!@zOSQ%L$Xgp}-AL|%19XXiTJ;eP#5k4yFM ztLMwPy@UhG*Tz5sUrq=rl4n=@3qGmQ1+*r`w-=fR+da-;NpQV`?MBkL#>Qyw<@inhOQ z4lUNH*;S3NNboqh7Q$8twiq`pn13uH*`EfIVeK?Z`Az5uGjkbJSGvav8;$^=JOcTz zeoYmN?Y)}6_9)?^Ke~pu943x*_B+&h*SuYHa`o#4-nFjfz3g<3$VY>Y+DC?0UU4vr zf1A8JlUOvZLuzKP=gdFtemUe%&Mt0u3i&*|^sY})x4pzVEnxrAPd6sRB`p?Lipj_k z`*=d6&qr;On2iq6JwIE~rYo?mbx3y(>3wl?OGrK(FWS>NYV7voMHUzh`Kg@UKl#>J z^6=SGctlcY#hmX-T;tVRZCa1Hg~L)qsx21-{L-feqL=z!e*@HBcHfe!)Y_L)Qd(lA zc=(6SyE)xm8p&7DHRLrc?n&ANZHKlf`GawpIzA7j57V4-1F|}S&r&>7zA+EJ$eN&Z6~TzpGD56$;lZ_b=D*F>Q*Onw&8wF zew8#FkgEq{j=0>R2H6(Y>|&(>Vaj0WY(v;Tnxsz+Em3x+X+|@Jo(Z_1JDHR-8aL3c zMawQvBADHMy+AjxY94+a-q~n)+#Goip^RP0w|8&gH?K$7tPb2oilxjZY#d*o&X4$x z>&IOmEesv(V)H@rYl=W!fK-$JmbCr5NAg5^J$;yr;7bv$u~6oc&Ix=nVLN$Gb}~m3 zMG=+IA<_q3c7V&Vnbyspv(4{Mhv4@9rE*Q3Lp+?+@V7f?F_FjS-zK+x9b&l1MMUi& z-Z6-TYTv37Xp_LjqUaU69422!54gOCjU(&|g@mBJS`J=(OXWS^ez^Ks5MVCOp3D;^ zS$!Zd-0{UI_ZnGhx5LC@J6&S6qGJnJ&LVsC80F8l|ESBjA3AM#E|=EC>6u49k5czh zgx=fk_4GSPH9h2N6K~!A9Z5e?#D`zwe7py?W~W&pG1M?2F6NQEKUQ23Pm+rh@=DHL z$vx5h6XC6(kz&3A9EM|;69wT2!|lgFr8{Kt7*}l+{4l?d-Z;agxY`3Tl$4_yR;1zR zp@;Tj{OA|SNx;WL^VF6p6@bQt=Vk--50G4Cgr|Hk{}gmryR!phYEElOV5QsN_b535 zJOnsn$B<1JWHBU(a@P0+PYB)hPK+Rg)yo2jL1-d~w~F6E$zjntnY!ZLTO`R_7` zkl7hmhvZTrU)6&V+hGalc0 z$e6;{Tc>xhGYc+FA?9$N;S3>U>r8HQz%vp^lD3F91fzYJa@e;_!Z!yM^O@b8Vynv8 zkapQzksbYd$PYJ2l96`V6JgCCx_^k^b{6Y(_b#&(f3eQ)Hdw{;lk-lPfggQiy%-X{ zHdq&z*9Sz@G_ln;ge>1)Ur7wr@fklvbzi*p;OwU};BXTU`M&W?>ifa@{qXyW?2TRe~;!+b>fqR>-Z`uO#oCbf7UybsxZ+sZ=) z@+5)MwZD_5L4H#eZm`rA4~B@Ua(#b#dCa&R^LwqC202U9O*dL^9GXZ~Z{Y_pVot$- z2LE2|Vy)8|iqaYzmJ%5~W6evudH5v*-hURF^jk7ZdDvk#FMw>zGvr{}rqgG5tab#g zRTDg?2qA_&`3Rb%5hS0in+0%Q`BD?CYwk0HK^X$yXc?BD@u ze6lmKIJ1ut@k|Pje*dXNz$Y)i>bzmcrsWqFBz1%@e$V#7Ysbb_eAXOymXQvp^mw{l z&axF|D(<7b)yg5rn|k6rJmOxt88aU2Q#J>(m*c`U!u4LhO*L=jU-mto;KaBHR%62; zW%+1Rdz9gC$uiG&?n+|a{gP@*8(Z_jGmGwx-{?*@-f*kAiX2F|Q(MzsCnNa>8Te=U z86CqpZ9X9tV-1;34JU7nC1p0DEnNGH#PR|MIaIC<5T2GeD0dx%NgY@sGR@Jx5aE!s z8R+ACtom^k_ZgFr6UFUV`Pjx;&%ztPdi9Ux>2&2U5l8>m(tAuEU2Vc zh{Ie0=!nAv*R$1gFo<(>TTpZJlGgp5f#Ac}_h--f91m_fbaWyw%<7rCw z=GTaBqNk|Ay_MEMT*)eKSh_C}fyc3|&zr=7A8s|mVuZ`UQrKX0`ag$zZVy^<>U(V0 zp^HUyED_BM^Iwakjot!qP*@Pewm8&uq)w%HO*u2Sa&YL*H!IVfRHN2&AbYHUq%+iW zYdi?0;fbwx^hKT~#x0lBq&J+~f!kM4rha7I<8!x+Bx3L?_*d1h3AD{y+WKgBp(a;z55$$RbIG z0G<7EcE@Cl1=GlAJuN$EAGT=>0qRC54j4*&f|gXf5$M&sQ!lT!qIt*$pkNy%AfzA; zvOB9MY@UH7riR}HQHgvOn9cG)2n{BA;?_s(#0gB`?v24lo$s5vmxsu^StXiLe>(G~ zTOss~PClrd@ZY*%_MR*{HaO|)Uc|e*DB7ev6)y*x|57b~lW-^`y~C9CFP*{>TjgfY z)zQI?&tE_J+{Rp}r@#@6*wFS7H!dCC{fi%GHl8OU_^6AtBJZ7FoyNo+2>CoK=9vp2 zdXL=+SGd`($-W(`li94Ds|nf2!cmnYpn~vhm!iE>C&U#W!s(LD%gjK6xJ|tO)rxMD zq{beEidU#jyj}A5>?ypNk$Hm>JZMO;=M;6baC15W+|gbx%C8eQ6BuwBv^z3Fyon^= z5P}dWnxTL?&f*w)f`m#>i8m1qF$aixs`L^BI*nFJ$>S?lbOo#aQ@*Y0{Vvl!&wv!HzP~BV`2Bijd&inD3-J zMLO09^!M%%^UaZm(?U$s%j8SF^1!A>u~%>{d}d4&<>_tR61zZUQ>aQj-W$2qjK05M zQ^7lBi(_BB8sB7u0X4a%-MQu<%vE}Sy{L_%(Ot_J|Mh-Y_>h^uL&*v`2hX?$T{b?> z{6Uq6n1~Q@;1^K!B_D_rfvAEkf@EH@;igVogxP06?0`B|hjf8o#UsYoF%|~Qs|_;u0om7`##MeV(bvGD zKKP90!rqtIL0ha4iLK2Q0`G z*!5}rw#G;Wy>8x@V}cX7GwPo^`JKLL_&#F9+$m1h{6Sv=C?mjeC>8wA?j;q zc10M1IzA?ZP1w9Pwtc(%F|b88hJ?bHI}%&olp(h^p24G&Jaai_G_|Gb=#MKMht`CL zC1;akq5v&CT~e7nl0Dg(tU?CA+9~LS{^X?{*cVQK?d^38n~v_!Lm<&0@My^V!BXG1 zPYb|$Cfk~zG{CW%F>Fhr`T{#J(Df``|D0&&Z4RUDnCM|Z4jg(xcLI-M28jdW#Zkw^ z*nvaXu2b&f4V~yElg9lM_^J1=z3yo}pQp9e{Y7(1lq%+lIt z@%i=1cnnq3Xun~9fV6zSI2!SEyvQzcR+8?{EQ-h}Ld|yc$h1?hlW`CzAsRxo!bGM6 z6iK4z){`4crlqZXD{`avZn*50EOsAray}N8zoK>yc0cHAm@(v~;q3DI zXGHGhn3JgMQdaK_(wE4te+ODYprYL<55&o%dd`8wLpcv|7U5RK8(vvM&AE(alM&Bm z17W`ENtBInX}Vr~+;-6P1Ok{%7TPFoO{}p&5z;`cu^_&Id&AGt)u|nC_mpwzP;cn* z&%*;8On4zc$JXvk5=;gXy=RN(uhAT9oCGPm`(HeX{$iB*N+ZdXf=p93(GoURm0FiJ zH}W%O7y=@ldLG8I(wImu$GX+^)npv`QFh6u*5pwrg(b>7gg20n9wnQucsEaUOGkf zTG~0fiSh?-XfC$FFaJ8!?s+$S`e^p@14SGpl8}{&m+iev0)pcnCPkhb^z?kuv5z;j zhsy&_ws2L{RuY6~cf2h4o~09YLP1SFf}ha8=(Ur zP5c8?XmNOhosr2f@I{>XBe$lqVY+M=x{MY%&wn|+xiDYFtr9jCz8~z3qkaBHGu6_> zt9Ac<8)|QsBW&aN-nv~55kK$V%l!`7}H;vp9+r0g@ex9u=g8fgQh6jvT5$*WouxscCXsZoUhwL03?G zIyf(yK1NM~0n(>GiojJ)N{Dhjp3SD>(!pkzyh(^sQd`1^r_C*|8#z-Zm`dT<-hO zF{!_=%_-NlwZN6xPT|Oq7SF4kS(4OKa9}b_(s52Rt%*Y1r7~BNp3N)PX_pz^x3Ra2 zSG6wA`4jcjG$2OJrL6M1sn+ag4XZbOsp-elefX1XL+=2jO@9sp!7h#zPtunfnuDnx zG@A%;3xxeW?u+#``0t(vstcCD%~(Ylicvs_`oNTc_){i<>d=(TAl2YsjKb--nldAE z&V;wGBEsy)93qc4L6VJDo8??oQ1U+a%?o4+UbDk703h8W%2|rC!CP6tE2%zcZDS5p zaYUXeVh;=v5LzQq^2h`FbJP1`sj8}3VdLgHl1qCzaV(c>1ehzBF}nf3eFScv(s=zsb& zG4-9dkBGTx%tUcRHQ|k{9f=;O4oi8wsMyBiWKx$OD6uyN0!K?{L)$%|kkI?J%O#`y zz)fsSUS55_1aPAPf?%{|BKzeM$yNhty=ipCJ@;*Bn!LWboLEe}2(gwY}laSdUc^0J2eH;-9OfhAxVQs2H4lHP#&{&(fH z54SpACGQ6Pi;iukO7QyKYd_3g1_Mn$z2v>X@m*=5gjKYGUVdIik8XhRr}#}#PTr>w zsA%Y9+>XCa5-*_Ro$GI{f|wrpI<}uA!eRd>G7{at8e+D+E+?zZF(mS|$87%3jAZf6 zNT{(-L~2g$)?XtE-njG)jZuLg?DyEPX{Nf?iXeC`D^{aU`5ATL4h3^&zk_!RJll+b z3N$~4vbxpV$+v_@GOai!Xe5$;6@DoN=VLYI<6p?jr?RJ_OQ8CIB0idDha|lkCUl|^ zf!PXaS-V|MN)bR4T7TwHH}{bHI^CFqdj=U~;VXx+`xFCowSeG1v*Smf1c4Y=BJjU! z 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

    1. `WnoP1>B(9Wtpf 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 =mZB*O;3IKLI-SH6E95!GnbhJb?0 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 literal 0 HcmV?d00001 diff --git a/amaroK/doc/2076.pdf b/amaroK/doc/2076.pdf new file mode 100755 index 0000000000000000000000000000000000000000..3c96709a8c925a0fad3d2499983e3c24cc838bd7 GIT binary patch literal 281681 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 z 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

      I*y@fd?oc0pJrUT{SqB)YXs!3KoZIW2?c86qSj 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

      Dv=9`L3axhp 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

      EXCGgY#XZ8gy~??+!XNj$%od{Z(N8X;bLY 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⋘ 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

        D>4gBMQ>{zXo*fo? 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±W>`GC~xtT9~etqRjk2f3BZx_B9 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
      1. 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

        cSu@%OnHA=acV8kqD;$9H@BAV?4Fge)<7+Ku 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

      +q zowV`Nriv`!(BY*m(XG-=2Zq$Vt8*;D0?BYQI`!o$O>sD@75{5Ae4(aZ^s{F2M>9nN zNnUqbqB-IZ=b@bHF>IbIn+vzCi*@($wP7#^NyezH5JX;y{L4@l!FpPVMTqr!FsiE> z;-+x5U)v~djfB?8-EA&A)NPQFs7bnK#E{DWm;`vie*`rbS(Nqk9TSp(+QxV&D$ng! zYuCZ1tx3rh(*o6>cw76|q*oQVIMFHk7r z`k$jW3y6Ijw4th*BfdBdm3Y5Byf3V2NyK3`o!X5Irw~X>n9g+}_LD&^Zq|?dsFnbK zC4dMtp0uKh08ijm)BY0+nWH!Sx-Vloe*6+58%R!)A#f!K43Avw)sP5OpOr0)gQCD# zn$$<0F&OZ?wkrq^8bd~RLEb%4-Qhm=z5GY8|7OHL5&j1wSjiiWees+^z#UrZ+T%fx zJP%6nAlEG#AOO-CCzFN$S42lHAD7Y;5#UI?Ufw6TV^}nO&an)>a+L!9SPl;)-=yQX zrxm`I7;t7&ML~2;OR@+8NUn6ZCQj`Nzh^s;kU5IZT5;87sCns<^vz4y&k@Y;PEq}v zbpH&=oR8c~(Aph8@{Apc<+8i6N!O$1Xprk4j8;g@xT9^pN(w% zMV=;fs%?*Ss@|SD;}jdG;xYIeS)mh%NRq*KCHTfG5&qw7>x?H7^Ns(GWuTwd0Zr}2 zlIXbe(x?Q3j$J?pvAozuK?hba30K)xoe1>Ik={mre=H~on&HOJQ+qVzYyNhkcJz`# z%J!!{t3y9Ukn!j5U?5(x_{$I$+ig$d?3i#+j=KfPLcWbNF4}#;0rD3WCj(ROZp_y6 zqlG?7=)z=U_#PM}??n1dIICcN9r#j=X5FV0U7)YRW||e42B%PrL{CEFd)$B(?2{it z{C&+RwEyBi4nP`UZa;`k=&kc|ihuniZc?`|mx@7zv6G+* zs=dvs0IxXk1(d@8rx>I6{Qs089>Xi2EBdSbc4f=uaJrXj_Is7SrP0iOCu*6<{$F4s+;`+| zCw;pm4Ztb3J%J5bbW+P}mWoGT+UuMxNk<#8oVe*&2XZF~^whSRl;E6}Y!O@}P}>dM zWt^I~eNE2YAF=j6oZ*wg&2ub$W$O*Mv;Esa{$-fs0tf##Oz?{jw}a&r;V5(YJxyLn zoY^D+sw+mT+}y3hKmvIQ)A=sM0Wzqi&3aMDl>`0te8>cb!fz1J9XjgTQxSHZwl>VJ zshf)L5}P7mcK=C8EOznq%McRadQyn_u!xYaO%Df>459by56^d+;R7iI%)Nw}*aOjU zEDHx6#Ipabk)d%+#m_=vdE+^xG~|i8qv7GE`m?FbBS|}Ffp2+dh+GLm<`K)gebZMx zEyyCs5J^>6TcSA}_I0SHdJOlab*cB(cGdR?gA-~uSvZW!t^@(O)XN|OsCr!B-k|kO zg5iKp^01yTq_#a7j=^((*k<+Ntf3Szq3z&660Wq+TK?bp;a~nScru->93BCpt2QKj z>~1;YeW~}Iu$X8*Ev4+I2>#)jpn1g7-|;}ylVX_*0pzzlEJ)@F6wTvs)(|-yPpv-2 zy*9CDIkMUbB>&;a@%}-eC%WnYAS*{ipLDzg$HS5oV|Xu$$1@XHynsE992gLtnA^*w`Xkt%qOP)pJddhS5?@w5GZ*5h*W>DnIy$dwmgIAwc4aL>l+6@uG zb~9$_$i5cqZ-lHF57Ybx|IlkY#>yPE*FT(vd2I`#d;MMK!^j!x;q1c}Q9$i2_{b;i zxp%mtZ+mUJwlR&FYkzAfgy;ATvBZ{ZS0~g43F4w}`+JPkb}d$paNel^YK?36KRCTB zPvj(<+i}`>kogy%pznE4Z-PtirNM6RLkhlzZ~*B(Aq*(5g(pHu_PEt2Lf3w_IkD_! zFmG|&YEj>s$?;}^n~%OOK8LuKFo_>h{?{rHwvR2m1>HB*@R)ik16())UL(l+X^n;` z7`+TvV%i>Y6IzBmD_%;Tm_`F{SeiH3o+fdiO)sKeU(@_vy=*Og%LWR)m3~wWBYU^!Sbvs7N?{AJ826+VnDHvWvgU2&nzaX_1bsr-voc=DmcXtTx?(Po3-Q8Uh+?}AoCAhm2bZ~tGIp^H>)_?ysYna`=ySl2r zk}me_>1|FaoEzWRe;e`LZ_``U^(84Q=ypMpmTzND=mP`LBQj#U_SuUx^}{@kV**Tt zwti~*Y$h5F*buu^-t}~VR`0MP4VBW8k z14h7#OQVnP>{2-NcKvoVH{dpvrC{flU&UCj13LAZsMPYv-rL!Ca7m0v5 zee|+<^}p4CtOpi9ml#W>>O*%prt1W!4yXc%lj@bgaHt>*|8If*TcNZE<9I5pV;e=F zQlOTC{%}uEZLuJ^wg^k^q}1O%X+~Ch?FmL$^FYU-XlH?k9yI@A%y*i z3JuLv$cen$_&lNJxQsR5B<#0c@Xty?@o(aU3y0;g@3f-ilLAy@xpJz*D+mn}vnes?7%5X$?F27v z8Cnfq+JlhHA{B?BEq8ofIs9137>&kosKOGVvYBkG1f1~Q4M)ZtN7FMfo_wduKAR?I zLS^TkO=7swye4V$f=-E3tBo1-S*Q_SVTYm3lUteY$icyorha_bG8Pf7ugg?0QsDRI z3`HIiL|Gb&{DD1}`cdEAjZ-u()r;}oBNVx&I)h*^GWOy;j5|f>Q_sk5%rpqVJeEQU z-9wM0?z@JX0Yu==rr9#}U~C6O21Hnoe^Ay+ICyLiXw^+!dFA;2s;cU~A}EkVTnU{) zKWnD+yMB~9JGGqL$bqiTt4EQX>>Yv4X8j9{@AHfI>@&*RS=puo9n}(wIh=c8r*CJa z%WQ{WHb~C>{lnw&{4JmEeF91fw$@7ozpMCI$e$P0x-CpdM&1tEIzxticcKYmm)L$VZym5}Afm#bXI3QhM!|IF*as)}=mnF-nx&OZO^TU%#KrN#t|3yI%mx-R0l{_kzc?lV5NdJ0+> zE%AZc#S&I~wj`N`=;NvK1vcgct#YX+AG?jLDl);lv9r64<}`ezr>y6mRb^K|*&)9n zFV}daZzRI_FC2fLy{-|b`~2i7GB}A@WSw9Jui5Maq=nak%|6x12hlE5s^GP6oVz=8 zUKHLBzMwmCua3+diI`RBovFA^YfiAIc%8v3q=3%SPXiu7*zNT`s+`|!YeH@^PSwV> zH#jdk?JU#`(F1ok%~vs4Hj55_lOsX*;c=HVebZbLJDtTXSQ3)K$#L>T|2SGKKrF9r zCcu>@quh(lLP+|1k~IxQClpBwoAiU@@P4!c49a(Uu?)9o$x^Jr|9YiQsktd&-Dpd z$}Hs!Fg=&&PLW&aId5Y9k!b{_(c;+wN`-t%XD{FtTwk^`}b#yUOGR7rPGo*5J&Ua1Cmd0W&}(??=QFvB3a@h_>F>gr@gtbUL_iHcyHP>j`{<#YG|`7A z(SARM?VHzWW!%UE1&4$S_O}}~Pg9z@V(G;lBZdv9rSwnwqkBh%)XmxF6$hMndd^>2 z$`v|{-h%XkN*d#?6TkIl6*4#5yw#3_b`Nc$4YZ7_Q+st!s|~LQGuWW;-0I z>WUrX5=8u_&G`x^wbEv4^v-V<%u2w@LzLhwNByh0fjf4>Db%*ng;s^wWcql|2X}Z^ z(sBbg%6Z0O0d6cn-c&m?GbBPw4UsAPNaP1`y3$FI?!|Ymt*%WDdLH}ZH}(+VI=~}8PH|+l*D`%)G}%Wp#id5 zqmBZpAPPj#s}&umZ{@$GoEBS>)gA2<5=1}&65?d>A~MwpOp+`bLLI}G=k-xKss8Rm zhU|Z;LXaz4* z=F6o5P|9wnfoxCS^Ro>uq>;?9YO5F1V_TMp+Be=3$d8`4ixap9lHaSU7|2?X(IZ_J zeJdQ|h+e-CpKON2ZNs}0`6N&fgVvK+!{^MZ>ioGtaSX~rx6pW8X);ydH!Kg31z|xC zE1i=tEC(ihY{YmovkctOC=Am-MqB};Db7z6buAln_SCL}F3)=qCPR9Ggkc}jPhsPY zOsL~m>*I>KrisalRm8KSqh-Jc5=2Ie1@r9)t#ta`F+FS(+mb@1jPwKpcTa7o!Y;{VaC6|Ff2NqZq5(9GzC%*rnmBN$0F z+{0gxMSWF@Jy#06T+4%302N&kyv-~wYd~}D?RrseLmI)`?S z10O2?#jk8(hph5j+t^jf6Lo3NEB2Ic7^I*v*dI-nf{jn z?ZMXU6EOSg`Z{S>bI6K&2~I7d3FZjs(q&qlhJY9p1?-?E2JIJS{h?O=CwI^k&?Gr^ zo?e|eO}bZMf8E}%yxD6AjQwp0p6)n^KxexTT{R5}3wCwFEWSo%$YGm(+}AV>bfzO7 zYG0s@1yye$Ee1Kll9!AjXOUlCJD>FZRg-~IHnCx$ZqWV7^M)36h#tD$RQL)7qtuKj zOfrDWi|2(8tZKGm*{TQ$7W0!1svY6#_6(v4BR-h?CR8Y;uFuUHE%*VfP!N+tO01bl zxUz-wMd6Ucup&6wYz@X){JIZDbGT**8xoJAzUaN383qe^c-|f-i-*Q>_)d9-T zybyEvpn6tFq*dJZ;2ttGqbpD*`2=`m_YnW1h7gWI*yL0veK$7_h&UWgT=f771bx8G zc4}OT81AB11N&Tyy(ch_F})W}>65a1!1eDJHPlG&G^@tcQz3gTL|C7{@#+)133w#3 z80$Juw6mx~i^W|FRH{ONaDMG%pv%{SVo{6Cpx(HXf$oLHB2N0A1DJmN=f@(Ue;AIigu@nAhGL9GyrL5{A?F#T zIN3NPQ0a3Z!UT=;AX$McauAsbzc_w$qYUg*NnbaMIO^8cqmyrn0U!uW)U&W|z>cIZ zlD-)_RW2Y}*boV2?#Ru zG8Tkx{%7#(A2AoVUr`7vguk&8@(Uvp)+2<49xLLv`3}c?`?jigJ9|v&I_A_?Ce!tq z1C@tyBx|tP%gxMGZ9_1GZukSvYO|dbl3Z{LNX={BCrnbjM z=_T{J@&#3P{ zl6Q!-v`NCW&Ich8PM@=iVH7Y{s#RYx!k?U~;{KhfEAR~{bfi4;H2E=;0rpQ3yEFBH z#jOP`>_C?*}1ii(Mel3(`Nuc+hb z-?aZ)M-;)#P@ zuE-WQb0AZ!ZKI^xnt6|BL%6%h9%HVa z++loyy=FU#Tt+<7Pw+n^xWtq#z91VM+C~daAb-MHY_Woi2WM!q{raf{sl^KN%cQSf zX7X)6C9sB;4sZz{CMLcjo<k9x1Uv9a2o@lt_hv{v);!3b1&n*=;q`Ex7EB7A}C@ zivtHHT`IsOVvL035&vn{iu4!oE^VP{RE-biMn$#GlafgM^dHH(cwN6}ScPMbzSQDX z(<|Lw)|o5qNQ^6#U#&6_D_q8cjCd*HeogM2s#;Lb5zI%Jt7E1^5+xx|PNh$1i)k^A zJk~_!kG`FhRZtfW%r^SMf)mE@DPwoCKCnl$u}2Us9+jcN@P>Hlg2=MS7KTvE^#&C> zRWiWEXP6io*vW$Msd|U4KW{G%bCalp;r@JboUX_1vuZe5k73{Nmk?T9Vxidc9 z3+U=OG+wKC-wkr8=s=s9v#)4fZLtLg3DHqGDc#?I#EA*CeSB(A#sUEQ|@+S^R!<;-SEa%1nB zMYH7l``mP%>+MoeQF^%OEbj12o%x0cO2x2z(p4uIKf_wQXn5n}E;jA?V-GjqK{`V9 zkIlXCQ}oVZ3VIDc5hiyDAn>BiLp{Xw2hi+Zpu1OQLy)$MCcaXmUFkk!=ly6Vb z=FiyuNPkJ}b{m*v(C(VVQuoEGJv;gBIo8ho#$9y8UN&2|M9Ay1mHHdEaOYx1ydNFc z303RkIn=yC+yq|IC7X$eZbgc;oh@3PJ*KhSQl;mkPR*UaDB1G#M`>s{gShd&v{$cy zlcUSFe1c1`*;5<@(V8v!&9vQ~dHJ8*_7mWSEf5?n z#zbGxZ;x%z$#2rUsa1&R8VUVc_6PYh?bR&7#s;e_?TVQNs%OZhk(ezJ;dppcrm%}A zxV}#_pa!U{;I;xH)c{tn2nc!VyLhUJuC)T(hs9$Klh7Gpp2=POl!0PFg5KP&L*XO$ zM_veeAlmyhoFU%3mJ@`xWM6)8*%h!v9yrKGac-QZ$^x%p$S<=n;#hT_C8CAsNJJgL zUV2fS4jSML-?k^r8eY#Ne$hR(;qT;61D?GY_UG%-K5 zImvhvN;R8+Akzy!CJ;>*R4dbY(Y=w4PSgA8tVrM<21 zIcx7mw4$}>h+PfE)}s7|-)s+yLL0aJM;Lv>1_+K${||Io_j(Ewa})ip zYZj)coJYcie%h5#0%=ym`sWr(RkNGJZ9Y-Y5e}%lWG8BfI3R%|)jnJ&kP*A~F#KUs}BUs2@tn*q!cIFEeyiPJrI?#6EZ5K3? z8fmom8$xxcv_`<5r;4BPi1R{4DnOl+4a0GE?l_0J>ejM3S%9*%tvopcEl_&a<>84p zLrn#LtY_K*;m(VCH|7CJZNqi#BK_Fy0q5WacC2aGL9&{og?*atf;MLvyDt<*KF4K| z@1t)2j~VZ-H>ZA4@kCZpNkk0cO2Va`xht_ySpCSLIsX3V#Sa|;O z5`>|>?)%fw?e#qRjPE>x?ks0hF84C!{N?1?e-`GEb=tYipjY2B2fNci!@7wrbS73Y zN4Ms=*JE*K*kzgD?V~F~haWSk0&)==I8>}atRG~s*hLrA8eFVGKMQo5Q-Yn3_S@cWYN~^6xqsM*fJrSd|Bz(|84dj_!G4OHsasBtbPQZY`6%G(a&bQ z>~n4A$7n%*V6Qc-^<3Z~%oDrOX%7PvWCf@?WSgwNt~fs6>fp^EvVWXW_lC|9d)fK! zH4e5r5FqivB!@tHZ-p1lyihaF4f8B~f=%y6Ii}1W7hyBn$bP92jiWjAH^wZW^$*R) zWwenS(!i*rME=!)R(xu0hLmV+J8lzJ3pd=^sl8oz+;m5LKcx+wEL+}6og5qMs)(z* z7-Ku?CnkXYTf9Q!w9E@N&)k%8pj7THo zSdEORdvJ1`bavKROM;~<=t;6q^%*LOz%kdN2;_?I*Ke@Mq#Y%GCsKNoA_RIOlQx+8 zdL%Mnaj~syQ+wzfnhw_gF)7{nW0;kyqrO;ebx+%5Xh03j%V&zNQ2I0Ro?GEiz3#WB#-$Y1pZQ3VyZ&x33x>V2Os= zF$_&ri!Rasi|E*r@2kj3V^-kN4cBzRXq7cRl0;Sg)+DvD2bR{Nvqlru=1E|dD2%;2 zMsGs1M*n3o+t)4ap-cJod(7fAn+$m8SI>`m>U$q1{Ua?NS>u0XqFAzjw<}jkx96Eq zxfiE`PcH8#%8#Ts=&Y!xokpAA=djID5z~@0zQ3UvYd+i;HQ|wdys|EY0BfHO$%8b)2xRjZ%+yCZHwRCv~4s~xA2av5p;!`}W=}EQ!Gyb#1dC7=Q(26p3dS-TE;OPvegpJ1fX&7l?> zg=IKgs4TP>Z|EGgf6N4*RP3#q)B!lPW*U|viQ>E%ExJzUgZviU5?gy}LP^>FwFAs&3+6ZaH|$uFTo z%c{aVtb*X=9#d+9l_c6T0^QeV|DaEI2r1^6uhTzYg8o?@@Y|pxh0>%D8|kqKcmgMw z_&R+a9}cf`=wLxs7|~?7H+;J%XpnNBWj3$p>Dmt-9@eRX=ht;Fu5G=}o8~8e2F_Pi z(WSOmpVe3f+D-XE3|`5PjOmS8dP}CFZMS4!Hq-l3Q;`_@N|%ns76-z3uCy9c6NnTS zwuPXgyYR9}gW^=VOL9B!W#|NK15jQzGRE0gFdl5z*u=h>W<2h@Rh4Ewpz_8%<*YG5 zhl@plx8w3zjJjujypl8lg;R4AG{i4fzitkPD*~ z;x}H9OFYR&61G~uB4>-^hx~NcWRCAwc3#dWRcc#DC(A1VdpmzTW*y<*)pX}%zh?s+ zu=(i=H&f-+Kz;WI;H~cr@%?!{?&_%B+%UY_0{?e1_fzq17Iacd0 z+$h&lO`@*0d1BJn{o|uA3aXxPsw?S;n66)X>=UGZBq9v`K^nxO|W(V)8xn z6zHSZSsbf-JSEJ`Qd>qjbh*Y_jX@XgKMoL0Ii6%LnGV>l2m!*d9k^*gSS$6Vkdb5UA`` z;T&DU^9Sy3!Ky&P@V~UH>~$+XDlp0s1!c$|2`Z;vCS(csHG<2LWtAhxL5ZTX$)y$NrperIi(x+1g?(_gMmqu5W$ zwgtJkNBf!zTfI9~$}T2xiaBtAIFl7McYv0=Jp^Z6Gx8pXtW$sYMs(Tt$ZVPj)n2RA z7~mSpXb7GN5|V{}CT@s&+LWoV<>;)GD3h&E-(07gT$?{hzwL#}2mkqgnW8!Bm>hZ+ z@6JdH*&-P$gn+YiJ^N46=+KsSyObe5?ho5Yf19|`W}wY)*jUY4>Lr0C>LksIsaOs3 zOru>b%TaI6rd{7X6A6}1|IM!#>iLxpzFrddDi{n`(g-1Q0IFDA$N*{%CcYq$LW%W} z$w@)OT9BDJoP8w@R!(8*&#rWCd^2-vaY}O$X)vG8qpyb|tnq2CxUXd|`|?sph>^_Lw(jqP5&!f4DWyb`O7h zJdW-GQ^{`L;9`NkZ;*m3Qw4Y=K5$4YH}^{8$j|mEeEbSgw*tiOCmj655g+W#-b`*;(s^+0~lC5 z99dPRL)XK5-Eb~Br2^$4N0sxpIQ_tmJWbk`fNJbHp-3-{8Pr?k-Rb<|>Xh0nbco;P zaVZE3G1|`%Fi6ApFn8ZH9RaA!*};qmLN6RGiSsd#wAsIz?e6U#-kBoXwtU-i!y2(j%qYpdc;oURe}8rxE%o1)S0@&n zwyrzH+dOMpCA0uZFCZx_GY_1xPI}A;QwL)XNvJzCwwzEJId9j#U+;FB;HV;Szk*?I zh7Y_5qsRMD#MyquK#5W4HUOo&>=6IRbVLX{aXi34FDI~VP66nHz2nAqnbYz6M_B{N z`1#)7Dbr(rr<>#>A%1VLZN{7P#;gr{ zR${%$oX!4$Z~lS1)9+ozuqIr;3B$r|oPYFVH!GenocXW01?7crh`;_9;y%sju6>5- z3%GyOnGv{jANBA8`)e#YT)!Mkl%{pd|Jbl0NOoPjPOyBCdBY;QYb5CPDype}{Xk}t*7 zQB3F>_G2~a7B9s_%uj=s(VO_)(%1-pEhP_H8)(_J{kXRYj|Fo?<@As5iXA1MtynHq z)+K_f))I1KVA=e2;yj2SzNRcaNh@b_{JZKD0C})AXX3hZhb-`Sm+`I4X4^XEC3!dN z9j9$%`c4_b89MGFvVeI>UYU+qLW7C|Dr}M|hL+d0W==(~f!S zg4vXL(svnfi=Q7XP;_>#wcf(4FT?FNn-!&eaEvpxMi#ej!}5to#U!iBGx7~(!1-yF zr`48I)~zQ!kl3Of`}}m3M@2~TmdE6M`1$EGj|y0$01n$<>^97wV9WGp=6U`agD2Lk%P_Q^V!vmb&?+6U?5ak#v?E zvA7*}>`RKAw#KB}+(V>;7?>cF_qGS2%}6YI;L*CGc&7?VY0B{`xgO_iw< z96(KcA%;DUOirahIV4}KcWVuwP5iD!f~czlbWLWnM2-#gfJ`mEY{BU?OXyW{#?|5H z<`{Xpj=*EidnY&p9yR~ApUZ|6>hL*I*KZVzpw=le+eE#;d1{qrNt~Am7+M zS}KAq25EJ2FHd`Jcb%c=QjI%EFqx>?eTy7`6?)u4W-a8N+pihm2pu|xI2TP1wW^WL zom{}(>(mkPl|bm8KjX8I>YklIt9u7b&}A3hd3%I0#d2ETu_|o=?^tc#*l{bfYWzwBQDh0dmS6gf z(7uLGKIFjuy*TF#qDE`~QGY1PE|c^)Pw@wV8${fiLp<+lTucIKho6c$uXcbM@ZT)2 z)`E_{$uC3XmWUByS?%#z{Vc#_w3$%AVjjZA|I zBAf6%iXOax2CYftUFV1{GU8z#xdAUOK|BsCaybTFhzc6Y(HZ|b~?*eaQf~z zl5kEa?(w*sR4wL_Gob2Ej58w;_bSsS$F6{oyFHiVJo6tD^Mq3)6qm>y_|ePm)))R% zcMPyUOc9Sa9k1{A=5#dMH(Z(<*@3kQaZLa5*r|pIz;5`#2~D3R(d~9InOVD+8h`le z0_KY;;^F4LV}XPlO>^)fcfB-V5xdWW;$o|gh8?h%Wi2prXP^)`E5Ffgs;TI5QtO6h zQvGNJN8Azqp{n<%;cPYxq(tfpg;!%+EbE%t@eKiOn5TS6 z287ZXwdv=s6y0LOFmQptCdUTqvvukNeHGpBB-asb^1U+_XvLK#?)WYoJI>wlrULa! z8XLqzxJ1{B`)F>hIxGAovil}W#N)iqfC<<7!*pYS9z+NbyE!30@|?52u;nu^$j0ZZ zdu(A3CTfEHD+dp4^Hi2+P47;K8hlCaM=x@(&1OK>0j6&eQlG~iz`1BleO+}4*OV&* z=wcznx2o7rRI=BWWwRhc2UX1e(g@w#EdZIS==mfSu=HXhpg$bv4JuxE7`7%aw)=Ru zygZmt*wUfaB%fVtleChtmKY-riDWiSlVe*tbkw?^2dt7?07+Vpub)NjfgK0QQm2IF z!PkhZ3uTnqERq(KnGNL*5OEx8vU+?j*ErI`6a#b{V3lM4)J(AV`v+fj_!-mz z_yf=V(`dWVusbv4#-u1=RwQ9Iy1qtkKAJd|M4?rRI5XHrb8x!XK1t->ViTWeHyD~b zl2N;v#<>{;)Ih%>vh1G0v%UY?YF7l|w#c-<7}K|(_{=S4`CURq_{#*#Q_P3%SkmoQ z!1+Ih3Mz;WsQXcV2}nzk=0Jcp(;BkeF7Nu6Kg5B*>4iqnK+FYW>bz8OrdYr?>Up8I zlAXkqu2Enc5-$*+(>S)@5$yxX zV?+;#r`*pAsWD!)tjJca|7ZBe;qW;ZdxMR3a3HxcHy=!*4?7k)#JH5+9*|s!YC6e> z9p%6F+jPCo|L<@oMp@X*e+3$xiW%<<^8+BKx(_7+%+M)x8{xHc(mU0#{z3|add<(~ zX4xu{%|u@X)H%k)&w*og&R{rP%|wK2Jf9<%#@sp+ot@6_4Uw3=Z&Rv7>FP3udOCDz z4){@EyAB?>SnN~=X=o?x5u$!mkRB=}&sbng?`J>kHr9rLfo&VVPmOR(H?li9BC!lr5OPvf2ZT5 zFCq}t`<(U=*WLbRsDs>0j!ku@3=XV!s1Ek05CW2&mkJo(x#0JfWHUWi!7k>KavVU+H! zyZ*dg`CTO7wOoz)s_L#$V13=m|LfdFP2L(QiCHzOb99XBFT!@ShCT6mkM`v??m7pPiPADTCN-e#a;RV&l${+^D~RG_W8 z+2^|2a=FkaO7B-?-$1zA9O*wk%jkdh*Wt^=hZdr4T{=1^jE)r{3QQ+B%x>@vs1zvJ z-1egJ@q9gv92>~CU-9-m;iqd?h8{o@(={qvY<*R(s?@ry_;~KSHT#NoN6=ZOTUrUx zs~rJ4zp?3}7V_hGf0_4*Ph}y-jo!eU1$qKJa|sZBe4xM|1PCZ>_7^U@)7vN#0JG4< z3kX;^h(Un!Fgq5a)m{ZY)zZ~X#X8vL97`JGBLa9UZEGo=D<3?Yix@IZ4C-_SV`GJ; z=E@Az>Xi)92g&=4hX?m2_t!CFx7M2DbZu18g35OC7_S``{e^h5EktZ3nrRw#Vp0~9 z0}swfP*EKb|JjkdnIDzW@XZ_3p?U{BAM@FikX6q>MMQAN@+-53x*%BP^rsy*ikZi6n6a<`kiq)3Gm2Ob%O~?I=mm3Gube7>U>;R;PnQ|;9e&PI;583ZIxHyiR6-1sew2WB@0aA4Na>Zti>u(7Y|yuAtBpQhX4<2Rfi?C zk2{JiOHMXd)I`|ibwQ&0;?*AJQJ-_-g%jkYqp_>PY0$n*emc}dr);qKd_}N+8r-YT zj<9|mlagaAU8a~Mc}(G+MWPt&~DRIeJejs)bvV;L22}c&Sk&j{K7nvH$TPMo(>w$Av zIvxagzu00a{cLlqkb~KibB}9LRhepA$o_P-mW1V(=eAwR!(t7(WW;TPQq-h7 z&mUR&I>CBF?LSQ`*%m6Q(wJJd9n7zKWa|&*D+Q*>^-e5 zTGir~Rn-J=>>;jUwn-=7lO2ei?F}?YzMvG2-ed(PAk1&znqgo_1k%N zSwA*6=@&7^H3Xlv%fm?tizbJ2s%p&laUayIev_E$CP zi{qkiQbvRaT4k0BS0UFpME-^pBGKr3ydLrcEQfJ+lJ!5Tg(YN2TWJ{EysZJTBkHV9M-N* zt7`IGV}SqJxF!3TQNDqej#)vk+PdWQf;*cbs_`STZzfY6XEc&({X5E;ZJZGX`q8{F zBPLf(YAH)5$rMriLU!?7=~x<|xV089$zlin`K9cxZUkp>DVL&ji8X7VSrtBDt01-y z9Ufw0O_u|<64aU#U)H==KRK@Nvb{oizsFoh=rZ&NR$T(G)dS!z3|!&q%87H0&-S1; z@_VOS!^@vp)iOS61t?x$H2NwX1Hsi7AG_s)q1JMtC5Lts&8(P^5GHS{INX@KS}yKM zRf>B|Od=SlizMQ2owDFgU|C;3aO2AHee5H^hO%}b!*SotwVG2_;L+&)F(ApI?CrRM z;Mcr(Gbk*MU~JRG0Xazy_i~yeG+g1kjbbfS8ct3o_^ zd3n#86*a?)#z7PB(_-#{4$SHF#fGE0q~>)>VlFoV?$;v>WPz{5ghk=P6v*QnQCehE z$49rQjH+RlT+lnFN?f6;ip5ba-z!Zb60Jv**^(Y2orvwX!3xh!!ooi*D@Ik}KO6nB zOkaoU+0q5u!i^>p(DTB_G5~_*+R*F;uk( zTdQOt;)bjWqxDc5glYsW1U&{{Z$wVK0ckT;Qj|>>&4NoxQE8*XG6F30A&ZsbO;TI-wM@S9IvZso4lWzJ#0ewME z`tZvep85HwU&=FR_=cXN*F5_^yqk7XQLCXwHsY@LJ{gL}l3?+=s95_7X4Ulh6j)Z| zlBTV>svLZu#f05<_=wX4z;wgAyomfs6G7&KpqLwrz3sV_k%OY;ouuokCM2;Z^!1I( z=M!F^Z}q<;>aZ=75TKJ5Y*RGt)_?Ez~{Jj62>pUV*0 z9`5V87%nBqNNioqYt?;dd=aU0Dh6*oQ-;gwQi&q^(=mI^pVMT zJfI{=WaGuZ*LyM3bIg|a*ld)Csi!hNc@2B<_!Zca+Fix0(c!_%eg}1CNnfS#I zp2fhBs@pxQ$@*FfN_oc%EfnO%J&IEsY4F}4$csVrru#^Ot!FInB)Sd3rk3{iV3V@8 zGeLVb&BH-`a~G#;*_c<7-{%v*;4KddsZ-A{fM^ahzNK2r)zIJ^5l8lK5)~MF{0v?M z`jbK|W9$QH%Pp2|EKBWte{nkQ&j{kh;Zc9KxBmV|EbpfInQUs(r>h3>l^WxYCU`6!o2E zdb*bOFo&}Ika@}c=VHE4`oq)Ll17sn^5-iLed=wwkArgSyk?&T2OsWv_3-yKk;oZw zrcoXVPW>|7Kf~BtsuNeqFk2%Z+=O|ZeNttx)I9jY`#s15vY|frr|>cV*R1JZXyn+J z(LXE5^9Hn|r+$}iXoWB|TGW4XF;-}h4S;Tv$ha_rJ5IPYB9^aj$GiL^sx{rc6H-~r z#^9u-_Z@3r!$w4K#a8~y$#A%XX>F~bi*O_Vc2KX(<^`mOw-uhbWVvw-zWUtFT4OBA z-EqsJ!dAS{&3>M6Ed_>TAua7yv@1wS#}wrWykRBVMejAraech;)FQL(m(4mI2ZDF(R@^C`q(f4!)Pf)52y2@Oac!#&>&DRS z*!NLJOU0`~k3l=SjSaDM3h~O5n$L%RJh4oxbs54nxezP4&WerNIvozxq~Di1eJ5ig zgzPSM%G$=%MFPQqH>)R<1%*v8b! zjF5?im7Px1+{($=flg9hP1xAb*2tJn(A>#U-q=CN*4ob2#@NP*keyD**2>mF(N5pc zm`>Q(#oW+X%t7CsPSxB9I0+*?E1kHpxv7~GAuAJ|(i;;sIRgu0LnmI|f24&50Re%v zkS8RBgARE+#x()TVqwQf2s{RP`?RogGXTEd+V~C*#`d6hcOV~u5A*@~$PWTb2!f0V zLJRda7K8>k+6?%KZf<7e0Q}?wzQ;j8At6D52OtQBwpI?HAKs3U-rB&yhOct33Lunk zE#Sbv1n-UiPa6~x6!i5g2rLLF@bwW43~Yn zgo%23&_!?pbeqAJvsOH`|4veX0#6Psp@AI4LJA|xdK`y^5!sHe!@4LFpiXqq{x?qk z!}~Zo(DOWyyRXz*g%P8KI^npr3Qdg=SB9Nw)^K*VaF`PwP#)%qha}F+LHg}8R2cn< z%`}{TGnZjH^*zA|S_JC<&36y>CR8^g!B-=Kuk!rNeHNdDt<1NC#uaj@NHWukp|6}q zUVU)L_Y4m-@Rj6+S_&`WCGSY$%MFz)B*mLsLvjbZo*T3wqXHR3>QFpV;Hwul%sLtK z2O+~9Tvc@cpowk$!tmTeev;cKMVh%5h#-~WE{=jt$_1!+h@T8EmZ*d1Ubuh5EA74K7U1Pj$`~#U z@sM(Z`AnB;J1FpAM5%x784NA|AqIhxbb6oK~9e@~`3_ z?!bYHZ{IA((uN?+S__rwKU!0uPjX~eY&szHN}fBPnIQ-p$o()ucw)pJrJE67h%pky zI|4*w=457UyJZ{s5oU#609v!X>Mh;7V$*mIO$KmHkUV^>pD#5bMlr17IC7_yV&g)L zOs%m-n@{f+18X0nXhtM3$I}vmqfWWGZ z-Uo6cYO>WW3N|@Se$WzE3BwiAmwA{acTCcZQv6Ejtzu+7vj9QIQg*O%UaX}!*gD$+ zgNkrEDXoeo_Q?ud5_Y8RRd_t0z9tI49H-x#`oyh}jUQ%jbL)g(yN2o+Eum=?9I5>1 zhLLK3SHyvF`VS@A^k79|Iwr@+Ptp^k(U2<2XS2F6t3|>K}U;ZzSTmB%^5qAHn=F^(@!Z+%?2>d>19) zVJhx%SgeF@F9f9YFzv2#qQH0M(yNIS3H@Upsy$dtUDGo_Gka%hL0OxJVz;4wDS#_} za%|0eHGdq%BJ{qfUNQCy?rKTVCMD*=%iiyQb!RMKL9#Q&ECp**r2xNqLEuaHO+=S* za}rHBqf8ee(^1OJ4#5Q4d3ho9sW(4+uznWWxfObJsK(kFF)@}f-2igO+Q3-|Ts|yg z0>nhR_d`0a7nXgb%^$TAp)fRdJBa|Oo;sCyO;nXBMKX2n~4BQ@l4}bCmlNQdG)gE zp-2I?+SCUhXRKP(0mzom#iG*qyv*T{k-~O%==RFm1pkMsLt}m316hV35-12&B{8sV-7hz~}J%`MboD^lG9Vn(0g|^dv$MHE4we zZ6P=;&uhlG(r~Y$Iql2Re3k{E#S>d^(ib)yjLgJw&QZG%Tcn^vPvrN{-swnfEhIgC zPj9wWBX`%^p^K4>0Y#WWc2FY>A99WWqFT>&5fL@k`NW->0gbA;?(ssaNAx=z257j?Wj!hB$t+z@`t7kP zU>nMMX6x$Ggjg3k-wV;gsdH(ZJtf;i|HY=ZL>iSmxfQvVb4;%E$m`}^+FHRrOq`FY z7LTQ5fDw7XRnVh4{Msxo-RnqPkdB+CgAHdSAlJ-A*InkDl~4=pB8>=eYMi85xfvDu zNm89C+juQRTd21}L2^D^)6!4%2&SdY)!J9)tUQHI;cSRc56b5a!0>_8H5J$x2eUY11dr(Qq?y+O)Gqzw&1n>1uWmO-H~+-)GuebAA0Gz!%mA9QsFBK za)xt&^z0qGrGDbuV~Meh_T`t-vzqyeSW6~8O@1=>6`oyb5V+Lf1I-+y7;@r4+FYki zCCAo4*%D3fYv-c_L~j#B6G++GH+WB_{tAz@UIb}4BsWJNV<5rx+YOxNUj%p<=^GFL z*|^3f@FN3vA4L9wJX@3>!=8?Uu^aGc&b1$!OCpYA@`|>CF+7X=$d$D;QrNj{vhd_H zL|Aloxs_ac=C#=q^6IsT%mQ}vj0SF4_$;;EF%A8=-yyAQPqsUG$NVKww3uUYi|kQ8`-?_1m znIx}r>&qxaBd3Sg4k8MLj^dd%u7+9Ld@vhla5|UZZfKxbx0nq5)x=49j6?_jdZAB#h(W zv4Gp>F-{Lpk?FUL6U8QTE0KJ`SGd3f`l;P}qP$zo@Plwx1kOBfWww}zR(2I|x$)H# zt4O_f%!&XMBa`fvBgHnLB`N@;ts9+3C-~HPt}n(1-cZKdU@V*;BvfriH80%A==7B+ zz>d@m1TF?FiLy04H}eAAnYfed9@-#APdg$ZC|O=>3@eqVCe^89di^gQzrvKk43$^~ zutl!qUday{dL`0pdez3j1c)d68bBq=$UibuGH@l3CtF!IHUm@v33DIzgAui(wp?z+ z7i`)aB|F9nWGK`+2)XH+?cgr!Yk7iIzw`z!;1*cHed{Fls&RQ+slfP%@yXv;jVg0C zF!#<3AT@&Ap(Yu;xd!M4K~9+$*Kh5VqhaLgJ{I5(Y(osB5$%i9L{6ilO4O3)5eAO63q%NVrp{f7-=G6>`hT(3OrWCl zSIX^N)U3ypxCDS}j6Rswy%T>wf$>!QCSTHU^^9f+GW{i)iA#ZM!0G1jHiJMDb5*-; zH5c=1Nuxkozbz|5)TXLO5Xxft>6YP?dg!|i7*O}Kz)}deY+ABkr*b7w2wsCXH#pEi zVT;&H5nAT1DA?`?)+6_r0{}HcbN%iYT>HwPE+*i}Gx9gubCg$FKc-%siku?NJ}8>% zC#>R`;S4q8uhsuRIDhj|)<2Z&CU#b)|C)=kGBN(kMH&82b5R}u03gW! zpIr2JM*x7|2LCL7(bxa6{@-#@qCZ@8+dmw$Uj>McctRwoCux!i_q}KHFP!+t8T#LB z6$5bP2+IHO%|O35qx`)Y2C!`MA4mzn`!{#R1)pL9pJG6g>=? zGx_eEoqrpb3#aX%)&M?zmT%&U{jVRqKgPdY{ppZ~CCnFf);qk5+(q?+|0s&7L<5ty^G zC~vAf7VEbzp(7F^02%F0)W#JMKRkLzq_Oe?^?~CPx?u^%4Z9=EQuLN=;7MN`O6xR8 zsyM#8p&=H~$VL;= zC)t!>#1Ihun_~Yt2joAU^C0{Y2>&?`K%_sc`^Q2xe9kcVxG>?pxOQn5c)3_im!?-0 zBKU`|tcKx%2zz(B$;pfBH|x-roa!>@p_@~Sd6^kr_D)y_o8T>DVI3;L8A7NX4_B)j z=exXGZKzGY2pemqTBp`2wg4(6a)Ztb1P=pASvrQz#ZLkQ>VC5a!^F3k{4~L3=DYdt zdAPausz>?N`>=>XVR_{|2z2n*q6kfkrS`4ZCQke@od`l{ozK}ifX0J~GqSd5{6o06 zjLTn9#79gJ(14F0d;(%?B?J(KB(7~_4X5;WsTjlhOV#1=_`R+Dt7lx)FM482p9H3R zjG$)^J+Z_EL&$8H#p0Eihu@n(ld3*5F~fj z93W9|U_QO60}w$u9AKXP6I4(>{V$V0{<1^l^X-&- zrA^~Ul|fhBu@q)E+xQXb$S*G>ZVxf7Qpg6f!^-a$dfc89b3CL>yS#FOh7^!*;`=?f ztb$f=`Oa39seTd-HA3&QcfpTJJAmy zWraSh>H5x>)?_byBlH78cJ&{#`X+A?@9!kwh>Bu^9bSDdJWlpV)h#GX(sZI{?tCvl z_~KOGc>t5dd8c&upOQhwz-C0#lh&NCLzJ8+dy&)XEYc&-jK^u7 z96P}Gcs8GoH(HIZe8Xn3(1dN*dPiwEW73O9=cIV1%8tM*9Usdtg<6$8X0^=HkbKC< zQU{d2l_B>5qh$yP*ZB#poBgmg2ne=R&_lAf5pF;2|B~xWhQw(C)0140w4E3`osyG? z)1nt5iG6F)2M7H&)A$fGJN`iQuobGLt-lBo&2eOJKeCoFi^1p;V0%_0BUr4$Mwq%F zRS%rd2zgV?*lbX|EjfKRa~OLe_%k)j!Lp@R42%Y$8PnwhJD^E@84qBZ3G>3LRtxP? z%d!ER|BDF<^H{19{Ug8q-@A_Q&&^W*iU!c3w2T)4-G|eidV0WB8toGViW?dP`yMvo z|J3yyLmk13uns`h?;7rFTo?3602kNQbfS!(d@~s0|S4GG>%$ z0Ms6>Qi5=zX^@{l7uA{lWQ!AlgTx(^p3ivkyJtL8wU`%-&6>Nuo?*xLP z0k`jP6r8A6LrPzK{SsCQpqYlknvMO`m5HQ{m!!%d=fh%as3?$P5&OMcal>*426z-* z5{A>1O^_!NnsL@ib#W|{y}T-wKEkz^-f+~kjZbssE9_L6 zz_Oi)eD~1DQML@L>uF`7|UGXY&Vsh_G8weBIJl&NV{rnxd zZHDaTfRHNPkV`0J1iO&T2g$F*6PhDjE}^>&lAt`~dg*wCPpBNZuIJmA@4=v+#4$8V zs^JjCor;diyBfUzaZIBG?=9WAvAUS5+$B-Ti9i7?#?M5cZFW~bhg#55)BOB3N^15v zbHo-uyAF+Aj6SDh>Bp9tP@7Dr^z?=d{R~S%J**dXam!atpK_dK2=MRUd>D{FaJ`V2 z41z>*#BnjMb8!1TpN3DOpNfQ(G`O^dlnx}k6&V#~^EAH%Z(QCut`K3dAdJGNglxfo zmzLjg0S-K5u5Rlb@$&r<=vv)Lr8SX|{O{|+?ave5_UXCcK(OxqtqEqvSq?XGzgOXz z-8KzNdq2b84hr&HX=bX`;&`MD_!rXb@M@i(eCeZ1=?Tw9L!+RguH=p@ydMUiz)@O_ z6LgHtZSAk0E^Jilyg#g1#ED_1U`e>>Cc5vUi*W-D;{Scmp#5>1XP?JU0T4s_KZDh5 z|DxyrgsqwXZT*ir4-51EUY&=P<^MFcX8R2Y{+D!~KL-CSe{`S!vHss;Yy7{lwLRhv zAhFuaKqC0lDGtNlUsv;wLz+L3cJK_s|3%E-n-~Cac$*KE8Z`mIxzdv-9pXL7N=fbC zzAAsKJ+$CcO5js6=qnA0Ns~=E>cPzneKQdH-*`Ndl)}*tc`vPE(;rH8tcBaec8E6~ zw{PI5S!usGlz|1dB!!E8TYGWoCH~nbAkbgfb1e>hS|#XAADYqm_8kk>tws^5@@QqRwPkaZATQL~HjM`}H}k6Ng+bN)>Im*46Mcnf zJ?93f2qZA8w|891ic32@csJ@g%1U3Qxnh5sB`e9XiV=}YFLAwZ z4Bm5r{TSmD)j{QbgeIp6tuRK^2$zyswFgkHWpU12eVNtogyhV_WhY=p=p0kEdhzJ? zwK=$v`30ZcsSZ)39)I_!r*0Zk9aKbBPWWNGC{hr^>L!1`LyiM4t$XoQ*U&QuxkZ{X zKs-Rqea-at-Eg+*AjkLzrHm^?FK36zX{?}bsHkblDf4OHWB1na%Au5~J4i5GUPQ^> zUc!Q@8R@%NJw#RI+}PEnI=4`o)C+BQM`oOj!_Fb9Ag_W|+iXptI!)4q2M{JGHx7oB z_vxZFAWAlssK`6{kR#g$geiOL>D+#tA6>~B-f{x|t^+u;xyBRw@UKZXUB0rIAJSyY zEgrDRo_V(qo5$QquS1&J>&q+RK*vWzRO`|sh0(GTRjQn#bQ->58but;RUGxOg^3o$ zVlgS7sE3w0^?4Ub2nCTEPamF^>v1yZR7;ZQAIuwC%W*oNCj3<3WBaaC1I-xKT=}N0 zx{(k1Sw}9g5@(FgN<%f1p3d2K+p)c>-4=d#aX3twE zE^oZmzZH>Uk#yjzbF`Zv=tj-$xp=?e{PGX6)wZswdFV+EPwrqY4X-bMy`QnXOr66Q zX&bg=cnWmZRkdD-etV@xBA{9TN;f&gQ|D4r$Jlwp!a%;VA~?Eo65RL6lEC^wd*4)} zw7I%=z$v$$q&!!iW5Xo}?tV|IAsb2ixOK0_w>0aCMs8gn6KT@hHgD&z>v)N25ol`O zkSvKmX6+tk!y2e2E^E%OBySjbEkY<<0+Ze^tTL)Lnhc3RMa^%}nBr|!sp;RjY>j%t zAmbSB7|~eB;Il;xNz+1{;`f`_+tEy*`W!AzX0xn=R5Tw8K{ZpD1Def~H&$vr5#@l#tCA6((+T-y#^pea{~hDo3C&uUr@ z=qwmLk@Z$JxMIxt?tNYzW@NlJCOw`4 z>uMDnJf8S~Z_N>|Q zC(C-c{1lph~v0`;}iD-Xka(A}i`1Io0A z&?laBSxepR$gV;XujUvtpHes>Q%Tw=bXN0~Ji71h#k3P3?`1}~Ghn_8Ey1&P=LGRt zTs1{3jVRQgiJ^O(y|%`|_HB5~7_kTDt82f@85{+6rRg<;H`cIBy-^CoPa;{$1Mlh> z$~P;P(5qw#8z3Tc%=Y#9f2ygLpsxktz0XDC&gIsOij6BiNWgmW-lj6m`d$JQR|qi_ z$~VUJJ~Sp@Wa^*F;@3$jM)gz0qSaB0?P>^sT`k)NOnsX%)j&GmAfk@Z2{l$RALAM?6Ec6jJ?HFt&6@%HU z#W2pX3>VL47M?QQ{osuu*E{05hVnjeQ9|GZ+FkOzcw?U$Lfzc9aXlLcJ*J$%`JPb3Qto4oAx=M+q-g}$jIKS`xG+J$)+XdLIX zjmqR$z^6-_HLF!$%sovJ1>;p+UU-_GgjMcWwp4W+cj^A27z|RnjO1IY=c0V<+jDHV zi6@@u59p_*?>e%T9;pOl=0vnW{kuRlg9r<@q^Na;wIBnP`^8dtJ~$4Nh{cisN>r*a z@M~4Hdnux8Du{~|17nOVb~Z^gG9Vxswh0#BP0pTrZeTs?HA4M7AES9IY_&jn^o&UA ze9}uiVRfXwN$m;}+dCYLYs)mg(vVIN{~TiQEYzcX%7Fpn#tTp5n94=fC>q6DIll8#|pvp6r-!-{ETG#J}x^UO(Zx;VtG8Sg)ne1 z0!e7odO{%;C(i}`8GUMey^gKVafzOm5CIh#;~@r1er;}WPt}Klv<_Zzu|okWe_v_= zFkbEj-=5Fv#qf>&NJjRwLWNd(EV(z{w=a6G{3x%ATno*nsMap+3;6B(IGOlx!al&1 zPD9mc;0j{9^-QVAABL}IbC_aqvwNBq8fPV*u|IQrRE)ZTdt)KtlsiHvX+Q})?&^{x!N*|jBNB1-g`8sX&Eh3hwlMKhYxn|`c5VynI! z=`6@+`gkd109j@Hxp)q&LW&@kEO-_h?h?qOO)rC6_xx{iHM)HKQU7X3>_w zhs!P=8(uZ%z0yuD@QSAD{uZ}AZ#Q^H5N&SOjP9QuhKnU2# zryi0>)An?h-#AMnDJ7*gilP{ATlU^*&aMw619bQu=spuhfcL;M^)U9AfF^Y4>K#L1 zo9`oVoD9R30jP)xq=>^30k>!m(7lu0rf`B|0@2Q^lUnYM;TI|0ixN-xLAzR*UbZp| zQf7@ioP##+5-pvFDv;-ZJ&A#b$Cb=@;F)QK<*ASEwf*>^&w6x z*U}j$I~tvH>?r?PT`Y#}2hr7uN($XIUsY7{&-k|`DAeN`%F3+`hGq%G7tHAx1p*z0 zVu@p33=a|fg3O&J#+#4L>l9ldsVm7Tg8k@2P7u}e6jYg1&}!EQx1(9Yl4*hKk2ZTi z!H@C<0TaOk(3YPI*j~ibRMp6yZ5%|HT^2LqPDpyY#tZ}_*BNb>CW=Le&TQ8PhT&x? zoea`#?M{Gu=^sL-*}Xmo{RELTwE^oH#CCZ>2*UxJ45d z(c^CGRu@f4;fr1q1wjFZBF21UDUYDwnGO1c$=(prM{@qq&bq{m2gDr@#R1|!lew49 z9d3s`$Ig|zEfVh>wD=Msd7n4-kyjb?L7ZBl`K>laoGhg%yNNnAzOZ>s#+qY3ICqJ4F&oSN?CXh zx^kI>Z678fQd0O`3bBMDMXiRUnj;5H)bB8&e7RRtvwB2Kujw^&sao0m)PxmzY3$9M}aw zUc|qo^{^ThqREA3W$H2{hiq-s^u=_vB$z^6^_^)-)|5r}#|Bcmb z``d$Jdk#Mcq<}TSCcc?k|3hE^SpHTv(SZ+;0q-D@I-&TTN$hRtNF2YZ7I~ zN$Ck%a+%Hh9uF-TJAs{b%gg`;VXUwm@CrObRB74lILt|qWuDzxR44om+`-=}?C%f~ zAo-sd&UC*KzS0HXVx0g>hpTA=xP4f9b7oXe2Fk6F70b9>PcsQb zzX7SBwf<9%cx=ixJ%xGGSEq+(v{~q|2adfQjM!I2n;x3c?@W{ZuSz5z3_jVRy1dtv zOJt!zPT5p?b_^7hB`hwHptIv#KkCY^8Z;VK96J~RH1lef0DnRX-R?!;b|T=9VrRo_ zNL1geFg2QHOlVG$^Gs8`-+%T6W%lLXtOQahG7{VkyP}P- zpJgKHXtXmJ*@3TGA%zLOVNc8rODcT%ouj}c9%1^G?eRl}1hnfT!82}!mS-OZt6JE8SO%QaV=F={#E=ezQytsuLKl#4Qlm(~ zy*|`O#KcNiU=W+x%6=H zcC@ZWN6_mL`D4!jx2`Xxb9t2myOhwuFYCHF&>Ty$%D@H@{&Z5bdUt`#?``x-$mV0e zFq)M?PPW07bOfIcgVG03T&~L^;#40c^P4ysOuE$ReA^WdW!u3$J&7L!A4`9kiRDt< z>*)vjGfxoU%P7NP4V(x#>;mB_r!NiF?|E8FEt^6-msoG!=p6oOF+# zr#ZQHsQ9zxoJ}rP84-s5^ALcG|0PTM@y)-#Uh~7nIs5vB25;Nu+O3;!EBJvw>ZMNC zI=r~}4Jg3f_QefGHCUYPk8Rs-P0{G=rxV{6>Mr`0bw_)ED#-aiTv$;A_KA?{c_p$H z{{kpFHK0wZg?3E*5;JL+1NtJk*=D3Ac3;9(B_1Bg7lv{>UrseV$i0MWB{&xgc{UV^eN|2_7Onl}m}nJ35pVAJS0iHDku{-z8fmD8R4JiXh_ zvgtBvG#;LUE+3iISr*CpJ1!wx(x?bc0Iwt`7~Xso*7^-?)!vJ!&o|ZLxc0dYlCCytq~xOV z1F~VXDTy+ZT0H!~YO{_rc`6*Dn6ZxHiAn%qwt>c>a^ zdOq>t=)4XrxlKaf=*LRw>(7sHGVl|V%@~~6dFei{q^2ROD$B0ej-}s~shU{iyDOQi zNf$uz?#?O43}TS8XpyGJXOZ7DSV<+WEf0nO{ZRK%Urb>=H!r6vkfhD}z(p%C867wD z>x((HS?y!+mlt*4#YHQ9CCj*lTS0B(tOHaoN7)thALrL|9!2VxrsrI}+=B$)ZzQ%C zzcf)Y-ww{l!pg^NVIe$BU^!FZ^if{foIa11JS20B02zFm1ecoa4UQ;9xA3R*IF!DL z?TYOnaVLpDUSAe5gzd5?mJFiN+KzH^2D1j<{Sd17v8LqH{!QP{<|RYx+o31b)l-es-m5(ShqDD! zXN&)@J)v(0lTVwcD1nBQNlgYaXMj~aI~oLznIaC&+zR7Aj7BZoVI*#LB(;tptPN$cZjV%20q81|e~bBAXHor^&x{je|!#nAG6g)`_-BD z2~^f7AhtHf6W=t-U4cuO1u*SjjJ3FpbS%eYUqAEP>_ zQ>1iqCaWu3%=oSGulM=@&?6o(_*xx4ADuS}3QBp&F4JxX7$HqnP6%9QFKGOBa-ITWOrw7oguiItyt?W2~zyN546EgHtPQ^wd-vMm;^v z21P*A$SCh#Oh3lOpN>mA>cD!wADXZC29%GrRaG1vz_%w93A7w~%-vA`oB9Bf^tbTe zOTMt2x}Lv1kUsdd^}Mi^w9H%DmND#;u)jdjEdfmBKsD46W87U#Z+;HpI@ils3@Nbx*S8ks#q7shX%8IBaw^+C-@JfG#ZDT~>Hc5&gOy;& zOhg0Rj$r9-xb(jZGGDzzISy-anB{05FY28v>KKv5WxptH7pJwyBr%xCN2%73J2GHBY5m7f8p zA}@V(yd*bE<^#0VO90Cx587e`-`U37SZbFs)GVoe=uDI?Rw zi0rF;GaO{7R$LBoY}R)~1zAYeEv?7@bP`6C(pC=|>t(s5v zu|oq~m8u3R_7LCh4RCYF%aEN;Ho@S0#sXEaq!tP?gX<=dw@%_ni(dY*m~%CdtQ0B% z`K!2%8wK_>ahKQ~Y{5~%8Qeg>RcPK#hv6^>-6lc6+o986sUY$z>~q%m^G9HZAL(u_ zxGbOTTT3vnu$kyod+#%|?(8%iDYOE7D-+t620p=9DL8HxF`&6n(NEK{(Ip~p(HY?T zLbK|MwmiR0mk7`OGsuw8>2*{FuSqDzPKShISFN>_?=fa38>Bs2zDOd*%VlPx;sSQS zvSp+5YI)YUt<4De5dl1tv1?@jtHzvjx1+m#t|`goKiN5a*oB*Dl1945deza}J=Z@x7sNA$H)ftkp43I@y&9dW>a^U& z?V?|rb51zIpo$yEElyZ*fIOg*l~|b;h$jI{q#nYVWp~F+Q|Z%xW~*yPXKXD0JYDFJ11O zk$vT&^kKtkiW~W}Gs*UzEm&@N$u6#M?D4aa0Qc-xv^lIUc6tHJtMkLSy6HH_$FR^~ zPjlCHBIedYf|l%1R?66QUHCaOv08u|$N{b#0zU!ed1}##0&NBoK7IyUJv0 zt8R2X-snuSqTupDCGR>5NDYVN;8hG!Xu zBqRKK*gcCmwD8Di7%~zLzQKor9R-+1wg|3G_@dZSWaA^)Z1wv=JAym7sz&nmh2pz1 zz^p;%`SbHhf#Ix8g`nC0v?cCMVJ{h-s$Qv5h}$YV+6v`aN8rTWzZ`wK-S4E;8svHz zB9HDAE{~Z^w1E{*hc%|9Rm#E^uxgK7H#_${3>&(abzd7Ty(FVpY?x$!UYh9WmbaP2 zHtf^8?%c-HNduX)(bt*M4P89{CJ%Ehr+?8!)?XVpV%dJtT)g20uYg(Rr$l>egPUYf zP<~59DH9p_X0GfcL=||;5TgP9VievTk6yNx_Px|W<04O30JIqDKu8z#^6aW{9wk6+ z1{lSVx`>CkOJREbs8&rsDitJ+w7Vf$CYj|MOE#|PuNY@KAGQ7aDl*d1K4T12?_Okc ziUNP>H0PflH{|XhwZ)6l+Hi6j_Q-EWcLIRs#n~hxoVO5L@XuM0lfm;*<-O>umE9CO z=GMyjKRZP@+)`c9;79Y93oa45#H|`~2In4`SsDwb%98?YAL>QYu-N_KXf?Aq3>^k; z)E9ebBe>%A)%BK$0$g*GlHFStx*>nk<>eeqn#K~=B7*{rxcjv2)}xWE%7!W!`ZP_* zt0q`v=jve=Q|Q5CI|?F7aC#WpGqjXAcYQN;>Z0>Ri zEm=A$>fB$mnMiuVrgj+XGn!9=wm`Q>5C)nV|HZjp8zR)5)XoyyVqh)zU8{ky$gu6r z7bXe=^>^8-9*P2p5p8dM0=2=~OJLep${rup9{2ppQ}=_S$26}a3^nI7InmH%kI^`z zmQ_KPGKA_@_tXNir|L?tCECHc?zlEAMyv08`}HBo%$YR@Iv|Z?lahPvLEnVMOY^oO zQNO9si9=-mtlhcKvFsNV3jQ*o7FvmTW@I-Exj=Q-i>(_V4Lu&bH)Mc0b5xS2&p`?8 zXGqBMMXgImG3QkL-ZH4>^ZQ>a(+#L=i}lm4kgGVWd9?9ZjrqJ@ny>18wg}yEX&3-= zzF`m`3w9QSik66wSLr}69gh&9?*3tdZMSg!6H4`k-z zk^FB|M#ce}_$g}<8;*=>CsDkzm?eE9U4+R=WzFaQsO;3i3-1*VGluOpq>#>l5WEdd zU+T$Ns%LoVfKHw@FAKQX)3b)MV0SSt-Z5p7QCuJDD1nP6_y7cU4oAO6JwhOk2rJ?N zz3jDZ!Hkdx(nxIx-Uh?9N{t0BwbA*YdhoWceni+IO-r>RRLPL?pFIA~6I7~@DLsE{ zAW2r0U&BI?ES^xXOo0d<8IeR;4jQX80ifRCszz#sq}M@yx1r9j#s1u2hq`!)c$JC{ z@%Qn1wp8#^Jdmmm`IU@s1p=_D4#>J1!qV_OcKrw;7pii!G)1a}n6nwXV$&kX~ z?{dU92E58z?@p|p<{;v$#fPfiKnv`-69M&c(IU?h|c6 zoQSDDa@t4?2B_oE)B}7ww*Cd2-d%%i3{rit@vam$rV#7?Je(hw0M*c{s0EkekhY`3 zeIghRK#oO_F!e6BFVqjZUA|mUVYH6-8)(-|px_rtu(t^6%+Cb8V9{O7ig&fL_7V`K za=(iEpP`yj6;zM=zB_~5Rt5ACVNCD#W$ka*6PwEkm60afsYw~j6l2N5i^i3Ag4sEc zShZfv%1Rx(H>A1w#$TsJ5FDp?QygvugZes~uem$S1(yfid3}I|)HWUdPJuHU11=lX zN_3y5^)T*W;xnp)Gf)jKySI+q;TF3(n#zFx{U41$R6@9?BH&{=`DtNRcZKLg4Nia` zg$3H6Opz(Xnsqo4C7RX6=5n{|(ayc^(<*U=VHd!$;Z&E&Gj#r6Ziu8Pha?5&+|^&^ zo6afCV3afUts=!B;7Vf|g-qMub6$CGedlZc!w6ng20ObWz7PSqlaR??%c?L_n~=_VnNqb3UYVK@=O)Fr>@(ul zS193N3kH-wq}f+PXAHk=C?mG5v@hbU>e@3(ZaO)zf3$!6x@cX{G9*tFM`0ZpUtdR# z?>?S7g^sIKGScEPU*E%>w@;swgLvpJ9}CS|J(h~sKGLz(rKWzsW5>ttyPK3n4ja;H z3b3I&dYJXr=x{DQ;t(F9NNo61__x|p;g4Jz!6eA0t;j;Ki}2V--as&to9|bR?R>Fc zZ3r~9L~cUBN}zQLMDpHS9*cl2>>+F@W;YWh} z=q?&jFiu|tqS4~?Vn=YixY4T##)wJ$>ht{Ko$)5z0tSSJIj=-Mi3fZQJyn||qU$-2trM3Z@zA^(kl>#hEi^Ydrs`{nOxYU)YZsYX_WZBvO+XG$k4_!{L{<6$QLWc|ZOfUY_7CVK4vzfVm^-8%&ZCJ~vd;D=bv$fkWtfNM9bT z?*uj{Oi0MqW#8*f{MJ3hmE*1X1h-p>LXxigKuPq=zp80tW2|*cwV_&q#>51!Zteg| zzE$y?o~0C0b4=P3qpf}mE>%;8dC_v=Jp&U`filk>N&l|$B9U`l&r!O2f({(dv}p2Z z1-bSxvLI3xF4fE$@PbU&Kpk}1>{)?;V}nds^@VEQv|dRM6jd za9ABhY#lwZgtJ{x>Nyyzhk|f^op9^1Br(h^F1Bu`8i3 zgsB>C3<~tF>+unoXet;lo_b2<9K?BC?@|yC!c}W&d7xFLgVbmoYZ8eS%oz<>5{4uZ zNA=`)K3oc01( z7E3K=W~LUi)RJ1v%*@Qt!WJ_#OQZYlci%T_`)1A7W^I2>nw3>nSY$+$XGUhm@#Du? z8Lp}Mu0JyN(z$3kyq~oq$k(!b9$Ya2zn*A;f;=5E6cmBBI9z!eF;SGO%+D(o^p);# z(YgpB1bj+^e&bc6J1QZmB!jcdJwFQm;6!Mk7xegz6cQn)gg9^!74|GP%(h$2J{ZC` zQOPhe*BV7iAV$}>o>D*K$JwUXqiTpJLSrV%b7!>bxk;c-fgi{Ta>i)qC+@~oRU;c~ zW<-iSXNvZVwqqy-(L!`-v^S-^Nl=4kZ-9=KP&*@-il|qJR9h@m`+tEK|0k^YzazH( zb4(T|GyDJH`TPwP|8HZ(|BA_)Zr}u7KGvX6PR%MuC)i(u`UisrV)+{>MhCu11ipbn z5pzbnkydG#N=Ifu0sG{_s>ngTh0%Neq}uxT5&D0F#616E`JiGh=TJptX4%+|9v?r> zPMKQfj-N@saR6x<0DcjHCFVWDShQ#^2;cz%qYxCxlTQ1kx;0SE7iUJMx1h0olymR{8xgJZ`=R~4rMKOpzveB`1k01=E7jI{fg?& z0jnGPQO0LYN-Mx9qSzLIql__AZ|W7DSSa<2o@fnbJ*-Y0d>#+qSP!Es;yoQjqy@Bw z+tc1->zJX0t`xw-cR)eNPb+sUoQo@l6|=tkAd0t=5uY%T?I4>&1XJMYn!v=pn(#e5 z&$tWvhbeJA9vGB+z)UHcy3^823?c8e++f!H z$8w-Me?h#v4}X|k=Lwr7NcX;U{p_%Kobd@^cTiRnXD(GMu@!YOgwu2aayb-fadx>< zYW2>}d5B>Za8i;Uqo!{{K?x!*jS?Vle6elI=xwQ7)-Ib0e)1-BQ=@4Lspk(8dy6&g zj=uUspCqmK2VtZr|DtVYc33QVtcV`gYcijgKgZ^M53=ixSb-_e}!ND)CsRnYh6?G!W( zO+gGy6^hlBwPnn3n7SM*bn*=NFJUR=GsF!j@vbvUs9H74ysLp{IE=;R-Hj&~yzdZ};U zt!IFQxnAfUq2)(7mbGjA#?d2#hBZGx2EqyBhFChVrqg(PFh>ryo+O+gP@kBG(;FF5 zI)jwnq<-iHp3I(h(lfengZ*)tZN$ktD^dsxS`~Q*~7@WCwKDW zyn52PZk0_=OU_mVSk3X*4@tTacNE6ayj$RM$ouGyjA^GT6M+DdH;wkiYFtmBzBv6T zU`Y(p?N%Ipf`Q!I_^PDxcx;97Z^wyAw~aATD7iGVK_+1F{H38bs!)2h>mc7aBkda) z?%Fu)iP#06?+AA${fkLmZ0+eGI+|&YeyDc!6F1cceu|k-E@IT6fK1hdu@tJ$dqh&z za)p|vo!A81lM$-=>`$Oh3~MJtDe9H;Gk@%7Q-E0D<`ibr4k#AhQ?2KZ9?S}95R?t# z4zoAP*dcpZshw%ofO2qi#i!;D*>9*67 z-uq{U!=d~aV49Fa@oD_!+HPw3_!HJ`dwIF&p%7mTd2b#4%qU#e-`GKXd@Mbny+!t(Y|DVJ$YhWnxBti zI5+e&K%CXCzeEhflT^aM6A#Kkhl@r^oH!T&Nk0;WaqwZM;G@+PzqI<^nWDO22=dZbL+d)8M{7bnH@BL%OIH!-V@=yDYOcsg=KPB3xXrWs**taEob z8~wACx43O=PO>o45pFg;+d z8SG=y9k+OZzQ*p8?;^1^feZEeR@Z}m9m0toS7n02SrCN5rS{btqOvYReaVjM&i7X} zQl;7YhdBZiwB!>FxOfzzOu+#AUjhjWV5RHbf=6ThEjX(`HMY|A8<+Os&@{yd@SR&V z)Y-LBQGM7x{hV|c5Q%@oZreJj7vGd=yJgwYbk>?%=pGb&O9lH_n8ks#`&l$05%7}$ zA*`n0a#)2W9p`R6_()tM;ePx+Aq82ypGyQnyIwfhVVf%Noa;`N&}s#4N9|)oRDg5- zq336JDM8uPS``Z&WRP5!g%y{^8#BoVNvDKb zE_@gDBgI@MoVbOC;Y}_}+A6RN^FOeQUh7Q}L~;(|pC}&JFea^Z`eX{w?oF8thAThI zDaKiy1Zl;akE=udQV{@srdop5%Pf>f`s5W@>J@2cFmv!XA0Z+k-+`v_6FBu7>5%3K zsh>A)$rwh99_$P+mOAbEEbh{!1+|YT){v?O3+tt*-!z3}88S3WTMMS6lJp~c=l-A5(gSL;1>rpHZ0WC|{t+h$rX$p4hQK1XdA z|IMDE?}}#&F-2*L4ubBW$cNyPlj;>n^acU+Fry7~FR{e>72D^N`fCkkU+nH6^an`fXbO)F*=Ssb6K{ z7ZR#6ecNomK4rzcavBzrrhb=BMC?IZ-FR}MEPr5hs*o*kIctJLn>zY0#U;9Oud+XK zZ&+*+-&rZiP7Weft8aoK{7~E?xN+xM(v6>p)>Rz=1O*${lFWom-wL&>i)ENUrOS&F zB2O$EESGjH&pB;gO^ozKAIcdX3&0R70yn#29@IVOy^kxi=wA|ZN}SczNOaxwmwDI9 zv@--c+1pP#-3K?45uZ#isXLCl{D5lEeg{JiWVU0{3a7$vj~^X_&X`&e3cbW5q-PCh zbMrysfHIa8zP+iVBpOAQ2Ql$sFm z!F%7hqGlC79n@qkaW2LOX*q#?uS5kt724mpobwdc8de6cy>nj z5A}tMuG_5T2zAWT6WqeFHn>ju1`*h5yHqbX=GIG@!Z0|ACZsLBoGjYySJn6Z_8lk8 z{x)~CbeJ|s%qiv$J}e#;vlNvGz~!2w(BU7gQ`kp^RB(ow>}9hTH)5WVQ)HERvuJk5 z2Ft{$*5smv!v&FPy_+a^00+CebSF&bEhnJM-R4*rBH>nOmaN7Qr=-IjwzlAd(zi}1 z87%DpQ8jawzqgPt$;&ww;=;Lx-4JPJp|>A~(RKXUsT(Tl?3!>?B!gyHr%m_7T2tu}&xpnZPZEwl zF3vMa18_8t3#+w!ae7_c zXsWHcW#TEGBs`ZDiK|$(nVZ?{(JJHYq8N=NJ-b#tk;c4jwV*r-h;Kk6!B_`feJGNK zau=@{a6;@UXZjOeB(N7^cpfAVyi~aG}UAKAiw$P^|>SVMzB9 z;-O)6kDEevA(v;=1x49GpoSF7mp>`zPrMQ`wMP+Mu)Y4mgn>PQGdkc&a&Wv*FNiZr zva)X`WPXe7c=l=pk^4YI=JV9anEX3Tq&NvlT27b^7`AsRQZyLJa!`^ajbdeoFcxu5 zb*KtrGwApZo6QSniOq|b^Z}?Q{i*=N0FC_lxJQdgUQjhWINA3SO3=xgo$d9Es#dW# zgwFQb9aThtiu-=DJ>+N!Bz>CaQ}AG(#%Bza%y>(WAbRh^(gwnp2-%&H^RzGeJiu3! z`icw(d*IV3jH$%$J%4k@#NaL&Z?JQ2XBB^M8>01zTGpN3>Kyk>RMUM2Tq!>o!Bh%G zlv*!wwJ?M{??|A$Kxc}5<~_5~k6*Pi;O z?e5?gJ32A`K&zCJ{4G)$q{c53MqdUiLe7+D=10bX1d8NdeuC{VaR^FfrRH*(QeqdoDMGJVPb@Lu-G1|8a4HiY_=?meRw{?9|32t7u=+# zVP!36Av=maY%Pp|H$GXj@4I+NjGDZ#Lx0|`s14)u`uOH_t&fj&f9cA+;lcnhLM4yw znE{)Ki3&DEgGd^B=eP*gikSMlSgy4KBlMQ8feZl^Tl^ra#Pl;wjBK2>AIF6@v*&z< zN)k6y4?`8EDF!)R86C|nAO}ay1nV2!M96H>@R2g2>d-GBuD+LTTkGz(t!iqMhGSMS zMve@||757hLQ46%P=$HL3j-4w~U-LZEB^Bc(nPdz_roiV!EcZtcl<{Lcy zzhW@D5bsOYU_Nox-tI0bh6jo38ne{}`Y>$l#cRRO?wz|JjmNzPOJOfxBW9ywN2~^N z$>K_=|ERDP>SoXR23&okP{Iv$*OtI)s`>^M%)MtaL5$5(S-0cw;1Gc)F2}mUU5$m( zA`7V{^vV}M%1{}SOjDY4hRV*ihk!)phTi;RDsWZOI^^`ERaCM46Fl55?hI<#Au#&g zIR+<{phQIWF8CMe?}C&?+@=ZRVVQJ^)bWabp`UOz3v?WstiWhiHl6AGX|}U1lTR$W z1}jP{*slkvzeM^${VufccI$=tk3YitDnDWL9L%mI`sc)WT8Y__yR#i0dQuXO6~5E2 z_oFku(ja^k)m7>V<+La=-LtO#XQ++sKk_m;{-5=a0PO!CU~T`iwkY8LZ~Y^o|F_zr zUkCiN{U!Ga^xwb#cX^pqe@lewg0RM#zWYt%MMZ!XjB6DV>yAfm#mH6uYa#bnmt=p} zlLcW5!>v`)^3L5REQLiA%+!Jc{HxAi8jt9I*Fgfo|MA~wo#5YS9XaS8Cg>p+R)cG+ ze4G?qVx$Dgb#_*%C@50*E^wvcgDRR>AySv7uwh39!^M90@){t zwzt&35u27D~Z zC2z!Rd)k_&Xjv<}Y5iO)Hrx%&K!n`3eqPV`Qmrzr_Wi)U7H$}qGLWpFj_zz|%%CBV zEU&vc(nT!*vEdAZcq$}s_7RNtPZ`#ST(y&{(Qd{Tes6fkurW}XZ}*Y_@$c5k%3_F-i`^b*?O?&D%rapt%69;0vQLa{1AbUadN;P~K4hae=g=NM&T*a<=xnpEa3qQm|9I|vCxijZDG{V7_>=w>#x5Vpzg=tcT#NEOF1 z6BFa$eDcK9&$n4mLX~=q;oX+L6^<3n)_^3N3wcT&t>i_)Ry*x9oB4k(zP}a6dY(?M zUg+Zp!8vQ<&_E5dlhxEiyJHCq8zYl*2(7AC;TT{+ZSI>~D$4^lkGIg{po_StA}C%% zm$sll1Lvzl(jgrVrVCdyz9-&v<2?gLI8 zb|O;{ou2~NCsMWR@J@(-QDgGJK0(eLyu#a6nw3kvo4K2_hqts|X#l_NG{j`wWl=$b zOW{-MHE7p4t_(ZoLHudW8!GjP*$?kKrUXT*+=T1a{`V9h`0E*quVVaThMmbndwI~JPDv{3(F_tsPmE0lK(Q|<{OR|ji12F1>kYU9G!ETXI!;0azJ zGy0E&K?7~p+Fao>St@)z)Z&xw;Z3H9E>+oC6H;$^UiLA$A zvZ>kwxd&yU22?n!5Ct3LC-dW;V5O!qYB<58r-uV2p*K-Gk|M}{`~flJ2CqLQ_F3vM zE+QdF^p_re=~WYm+$Zu40Tz^B9WKYGsoWaJDzyKN8g9V-?av$ybEDiZxYLN=zl5H( zZEXazG#1#2dO4~k2Ki$1lI%J5lXx+ho%w5{a{jRDzyC%=t)JBwPyN!5YO;LYwC&yJ z8QM&mG5Pl`BlfQ;vBgC|h&Wy8$6g0CRX1nZi3}e#2b#2GAs&DdbdPBt{FLWX8uAO@ zp#CVo`&@8*KwFypVTZtk%q6E~?D*KTR_~6eduE<%hV;EKagP5z_O$A283q_0?ElG~ zX!a5zXuiTD0P63B_D7`B$I+;*t%yvA_-&K{-wMX@cf7fP9mDFMX`F{YDEvGrOYMbz zj`_J<829t zNe^dCGEDIgJ?+&7?sL%90H1X*375!0xaJ?faTM+dECFA1YA6!H{jTPr)x!+YgM3XasRocn!NV`?tMB429i-vL6#`hoql}~*i7Z*2313uul7Ved3(J>^x8>OYK zu5u_2unic1+QwQEV+8?Sa*mXwSbX`=`}O-pgXZH#D(-*Zzo`B?9l1|YKqx^oQ<2GY zoJl%N0CRgJ>Do{Zxk{u)JfGzDI9^=^Db*@0^M*Wxd{LCH0=EQ|-;_Z(M;Gi9sCF9RdORR2 zK%iV_V`6~NNqJGC+o*wq zG5a$cp8%w;$h8{~za7J=vrGE?5q|Ok0w<=ou;Pv83fhxjMUyY`v{Tt0Lc)#wq zVSc-og#h8xV>VvPL)Z?EcmfxR+zY*GN{`Ss<`+(|z`-sjW6fqti_%t)=EBxk?8|wQ z}i;*0aYSU4C`ZawMvJ!-pGWM4V8(`Ch(Dor`o< z+sprFzn5HoEVXI@9KIqhOt6*iC~-HglYU zs4{#b84Mm!g%{|s?Gm~HW;yqKG&5tlk~o5xTXgJLYQg*pV#PKdd)3kmonAt7yL6ZY zPKwIXn9W$rc#j^~W%>Qooy8H~QoTuun`P}4bb^k+0X^$Z*tv-r$;xm|~(ZQF)+x85Xwfd}B z^L8&zP8KGT{G)fymw2(7B+p-A6wKzk;>&)hOeh(YeG=n0<;vNo zTIzIb^-IwRI$$F`YVT>YJLzKu_G+8qCcd`HRcV<23JwV2@uD57>|e!t;<_;wB6zq+ zLDhlF7~*cnk&+xErhyInMG>Bc)Vy&R=9i~Tu^GGH=rGFIZ@MIzh(>_`#PKV})-a#4 zEznH+x9Q>^8HyYuB-Lcw*-_A+k8CS@PV==$P;4ULpfwcnlG@m(0i#IwTy%#Y|2qDC&}lnXel5r29htq&Do;R zY&T4DDn8#ZM3*s59jNsf3Ni3-JMbW6mnRa^BgnZY_mzF=H9E(eE8(*{%%2nQ}LnG$Wag{n#6T9`pm5 zCHpawNBYtL17>frqqrgon0~VErFu_`KJ-QYWF#<$q6bDbD>KJvyzqFu!R88MV7RHJ&bjtdjGjP8V3C&ZVD5@+ihQ|7> z`-Yoo0XoP(*3+sad_W6z{e3S`9g`MsBK{SD&%#w6HVrE+k-=T2p6j}QQZJnLaj6;gijpzo5J0!r^P{i7E zA)zZrGPX!>pEd%(3K}yU%EKNcGMYV^AISvN1ISBcwJG`&XOj?aMy9m=29IWKlEy}1 zo1N}~XBml%_lfL1$o6=|25^L(ZIB7-+R@qn?QQ-7DL~KvdZM+y z;~L!S3!Ka-EavuXS4zW&QL3j*NV^KoSLl9&K}8u3_;3ITtsHsWqKADfo03}&$7vP| z_I5{L+*kK)FKQABaZ9BLdJH*KKCSmNUd-QRQV)NsaSw(<^zH<$0~hK#NIk>pdh+L} ztZ>tB9~{?dcZial`m|~51(BFl{Pd5aE}kbU`^~cO6jofwM3qxLB=xO{%rnK2*DK{u z#Zf7f5#mL}!P5&qhE2>z3t!AAD$cA^DI$wSSyHMjR!^Q7e_ZRA>664I`v36bEu^`H zs(!lmt9i|y%BUM~QyJE1Nl9-HmY{z)kp461Jf7xga+?d>(lhX z4l;D2!q_9aZ803WJ(7n!1~G{9p=Io$$8C06^Q|u4!u}@GOefe{TZpas?-v6(`%<`$ z`t+HU9iwHL78;n0gKVK(dFiI!mub zet%*ErO*&)M@A7=#N{5%#ssjLo=8_bGz4!|iQYkf6NHN6d@Nt?(i^t_%C#N6{4hfq~5lT@^aP%H@$QIghJ{(z;$2hxygSc zqC5QW*Id58CVT$AW^4}xrFh|r;TiJD1VdMk9`6kyzY((epbln!o6v@U`6CL}f}EA^ ztVg*I?f(je{yVesf8u?9NeBF$koiAr1hBJl{U6@vUjXZ0+y5>WP4qW@%nRI~FPV=> zXSZ?2NigLd`49B+Z;1fNDF)CzlrQ2ZMTulvJ@*S28*)xWN(=6@cND*HQHPuj6uFn}>y!O~qTm=rd@Zll z*s7KV`S`H>b>{tQ??E~NhW7Z_cmf(jfz~K*ymVc!TO)A(7V;9(_-rXDAHdD+6wGVz z=O5XDgzRMbExXuWN&)^9l z)lZY}1H;heSQ;prK#Xz-WDM$qM&5qQN(T($9+7k= zA5zKvF5b4zgbou&z)QhLUn)7=A$Z9l2qbq{ALYEtfFq=@VZq>xHz8z%P zq+>gPNLRE?`pJ&kunLGuiTUnpYm(DCpt|Ic?}96t`x_x~Q{>L>(`aOZj}p%r_z;ag z3yj%hANaXbZC$)oxJfE&xgfy}ewF`)A6BQ$zAkCXRtc=cTEFT3#{qqN0RZb6h${5Wq-qEBfTjR za>&b3Vjd?#HR+2GR+Pq~M7dY;o$JGX~D_HzV~3j~~C8v01GB3WVXeGU?G24h3*VwX#xQs9y;_HZb(-3wvP@HYoyUfn1`|orRaGTqY4-wZw!}E=mtE7712u$rOb}SpLqJ;&Rc2L8!=C=C8QFheC2cSZ)^bn5!c8 zz?#sxlwj>LQv*CfhP6X@n&^Beq}CNn;d$evX4J)Ypw!56qYs5dFy3>aSu>hts|3Oa2MjB+HB z2fHzA94&ofYcu34M6!+S3cS?_y_Q~A^SlkM3$5BQ)72t9f47}A>#x!57%TR2AUJsE zOo!G_Z}dXkxuyVwI%emylv&n9N-Lx5c>f5d47*r?>ddt0vQ4=+%oTN*cHJ8^MUd_Y z*-6dkmq~U_GmeonlL5=r7Bx3vpBRv*H3NC$r?kcx2@U=!q-1lhsiB+-Dbfs|>PEoD zo9L)Sqo%ERRi~zNQj!1cc$|)U2-yG;tJqH z@}MmD1(U%K;VAf}KtX>;>a%QA$du4TqTV%C|`_-~J zEJo7yNfv(qR0=XtbHO}RRdFkF(26N;nuwM2RMErsLA>IJT5%sUEIujxUUon#bIoS< zZ*(oG4f{R)m@~DCIx#He?_gJ;K)ZRiDO3%E?gfp2iAK5-p<_kQvA|)M=}Nbo8YfBz zq+y>}+LIMQBC9_a8!tNWNdTP>MQ{ePn@2||H}T2^#X)5|EAFm!dZU_J!{P0=jkd0j z(CLqL$%ukE!-xCD9c4wND7OeBUgK`NCK5%oKGWRtB2a49ku23m*wPp2U#KgE zEkR4yi&bUs%li0|Mj*A)ER^?pKPJ9wWZOEb{K5t!={h)vDF)QR)thib55Wp^AYj8u z7@1YxNe&8*lShCiVju=H1owh(ZW;ghL7}?hhf21HMVLn+$~CF1xciZ;cJ;v7By(|L z?y}HnwF9^v>AD!gaUevcgo3<8^YYQMlzA+g3k5f;oNPr=K#jv|auQhzjmaE4E?$<+ zT#adUe2iEb;mrb;3?l`O}s_HiuzersmrpqG0l+U!Y57H#aQ?=RW0IwXVIV$6No+e!~X zU~_j3f(qqRWIyr5agu|oBv;(8|9omu=9@1i#(kPGnW3qySrQvUqH>Ex)p>JWuc3X@ zMiFJ-Yq$PdzK?T)=w?*Ge9X3`H5B|MxYQBeQHygi7~phENqSG6>f?8i)L0@F*t~QbyYR#ze2`0qgh#il0Ia8zETKKa z=oH&FZC-PI;T%R~qMtY*LTq*LN#zIB6YFEE*R7L`*Oyz`bVYMVGN%(7vVkaCLglwy z0_igST2l~jI<365k*DMD49MD8JXN-gh~V+t1Y&-PhOP{5-O7|vd)e2CnDd14FXP11 zT0~r!wKT}g^4Cqxov{}SNmdy5=nvpW{F3Z3K@xBIaq+jih52?JVXn0=`mO5sT0@xL{h0k z(7BUdno77x%levqA<@0=-D@yd*OZ~ShS_6864hF|lcBvevrwv@SV_jJDfZ5;6+buq zJCVEVVhEW)z+>_jPnvpVRh^@K&*2};xp7=CF)r`kZv-;vd|%nN)P6r}SwWXW7dR?E z{qSMHt4W9aigZuBJ)RwOLZ{FI%&>^mJ-#qvqH)(Mc)0Ls$ARtfqJD;${FDE!CMKq+dMR1)R4-tJI1i_m<< zg=kbbT9Pn7%DC-~jpiXolQMyK1QD;kS_m;-O={>hU^Z7ZpnbNELQE2#AjO1sb}Oyc zyNOu@>O8O6BYC11Uf*`j>%>|~p3F|s^99}Rc)pd;i>($9j}=lQp~g^9$I9*ZB^NXb z0<29xGRMjav1{N|&muInKI|&oT5i)BY7;Qg5%&Dyvzh2535nk!G$P2fr&fzO{SC+W zN;EC68UTst0Q3Ol{P~Dnt8J5u{ty`A)0TEa^aj}pyNu1|VOA^K8@cN<=9*xS)yzR-ceW|I6(h1kjKxI!R+ND#3WrAo97mJ#@>*0%M3j-Wbh< z>ckd^nM|?0m!;k@NMSLGtUJRe1C>ro^OALh(bEVc>E00qZ0nP!9e{?oijxU%IT*C7S1orXJf0uSWkS6k z?DJ3vA2b9}p)5fYMj%ecVB_Ep>V(tntk5;5LyOWAa zIuT7>;2NwxUa}#_#qU-kckbSX0u1(trh#%x@}`)htqsTYUUNrsOv0Wp@uLs|d&P3? zJw0*bnDVpcxkz9T*N!NE{l?8J@R;X2am=gCFVZ?seBSVfH>+vMTY4zUGn(5|#?9R)v?D1`%gpg~6He7KFl=_-lu%O>j7k45_Qsnxl?QEgF&M91H zSt@Dv;!c5ry?s+nInhm3R-QzMts2bLA2YQCx!I=vNk`H-YYF0YdFC+TrCw8*wOgxn z`wj!5koMEoGx8!g^FACzXk1|Pr1ClH&=Iv2{baP(ncz?uvUJ}IKfsqBKNMZW<{oaj znW(oylNX0V6;H!%Q>5S1LUS^I%5!Nge$-M%(My`fF!+!v?#$75 zypSEW1iD2~Q*Sl8zt%9;M_R;%;H~w_7Xg3T-S?wkLs)Bm-wgl5?7SFIH*QJOZB-_y zo6(Ox%O$me9a_+}e&d5y$~LVnjuSD#_knb;?u9Xn7hwopdgT1xF=(a^%OB%Z9dNab zNBnK*VPKdlYy#G=KG@F}Cesv6QkVVHUgTx`g}o7#V5GXRm``;$S!ca(@o-vRO37bG zNnP4(syNc=rBt!n<;gZ_&)v;*xs<*<;zxAE7@x7cH;)|;PJ_usV9`O9daNXpR+U>S zE`xB`Hv(MtQf+E;m-PT^iH(ZvZk{>fX0AUz%wHZrgJq`(HfyW+=H>((K4t5;$4^A@ z1H#eqhj`=fsr>T^)7rq@v^(74pim$c2ZaX>6H>bbX>JM$EE`n&jT$tA%?CIlj>?a-$>V6+92QiMEtK4d6!apK{VU23z0QbtVk`?Gc-#C?}>@1 zWDoAhTF^qcYk8r{d8Mx^>StyaycyVQncU2Qv@T{uXcsz`~IV7!*c-K+Co>-dPRVh8#`{%*=u~ z7S|di@pWLEz18LGW4o5Ww7c?MbZ8NdbLT3yEJQlk8axCsnixpm*CCVbUzh`;9v%l5=WeB_Tn3V;W2644np!Tyc+y2%UigJdF2g76BQ_fbt|UKtOK`( zbxt4bS|_(6p3Z5uWkJoK`&;y(S(cj~w3MQ3KO9SFjRk@w8FWe*ePC6o3Pvu4hK(K9JpI6T@fQ?Q?cb&c1&_I&P@f|4a#+VN|d z{Rz-P=(|_$W$h~sdYe4|3aU*t$n-EE5Vq|MjDzKe04{20UXy<%m$4DQz_?m5AgMYz zJ7TxQO7-B(KVW|KYK%)bnSf}aB~W_ubLhzaHFCvK11PeqVU^)dyWuUH=;h0J(%tLl zSZ~4?LokF|+*Q^N+=#Kj^sWA*p6<>Z4lExv$VzI<(DIC@%J&luaHkl8#hjQ<^8M^i zOjU=Hj2kN23;lMv9*+WMQo#k()_KCO-KSu}ZmGAfuE7F3gWZR`B$0taE&!~-H*Py( zb*;hIPs%>%XR`q?Cb_gTv<0YX_^|S|ATvgkkk?%rDmoGMK9a{d@DjWlsURP2d*QBg6B-nr_^YadC{twgf z^(M(DJJnh`1|lc#bPE0iPstq5D-zJP)P}5^_e+?ZGw)b%4eZrU^2%6x&9Pv3;Bl48 zou2J!r*x_s=WHd_w~YilksniBwhE)$=W$ApN3=Izk>g?5hAyV@TMO7!jxNpA>Y(+4 z2DR)UQwZUy6zW0Om%7%>ADqkk{V_~Q{%82KXuU3>ZHMDitcH37PGOW9-w%(Sx$gV0 zu{%ril23)S)cK~*t^gnI4z8qLuKSX(<*k2QAsi>%-sL4nV=6J3+Bpp(&IfA>g{Ya` z-0U&q_2r^nN(O1W@IKLAc@iN@{OpP#&KHM_(w&ulD&k!{4z;-@{7jTSA*sW&MAml7 z$Qs%oA_$C88_|ZM6UBZ9|COD)IjM_|;nLYEcg+WFZXE3yW+k!~9NK{_9M+&oJ6>{; zruBn{Ymc=6Hk*SplOQ_Q)2*qpLOnmaR+&0+p)PGv@0wvI?@N29Qh?nz1o!rVILk;o zOLtUrbc{^SD-ec?4<^~Xm@J2ajf!#uA0=#{kv6q`*pcxSYf#ip1;gP~9o|pVo&S3R z-Roc+^ZlrYh-3NNK7mZF*dXydX0uC4kY7Aj%=~-(Z!EItN7&F@|7iD;HnwFBKn3Xt zrZf8q4rCiNmN;i=%V>(N^T_oBl_vdsWQw;-P!2kub_!Y^$tIVC(NU-F8D<}^$DFrR zFXkjxRYM_6`r60ROK}@g(mGJ)PI}Llh4&mhJQdXx2OBY|fCjTfoF=LV$WzCzjLO=p z6n@S~3QWKC&yV)7p?!ue&ICFN`w0#8s6DqV<$^_MhX=bjgvnyYkInYYmoZb;3-|yg zoWn52V{pDBX0A=K)+`87E!F0bp9|f9LaQ%bs)XVauq_ynfq>f2ZWq^@WpiWgK;1{9Fu=f$tg5%W(h|b z)xOZo$T*Tad|bOlXV`)!<`2Z)Fgk7YDbDiNw`)rJxh;u2>e5|xAopfMEY+y9aTC+K z>!=ckEo?uxH3{^;asaXXC*Kd(|IPO!Zs%yjC~InK?rcHy-;N(~YeQ#KQBz|(6H`V- zOH*T0DO)qUFI8zFQDHFy5jz`uI~Q9MRS$d9uQEkPOV_X3jN*27&ZdrxvW8C1a&{(` zW|pQVR3kbw;P@U>ueB1R7x+pLPFud|jq#lX$}D1t3v%a^Grl9q)%AwWr%s)0JkKSs zZq)o=8>5_|v!kWE4l@H25z~Kt{-=FCMrBhcI~PY|Q>U-q#qDgJzrIvenTVLV{*u2| z{%Szc(au=K)LDm7QB<5!)zsZt@2gN)*v?(&ulDGf*%+AFh?oI??K3g3GIMcpaOnMC z2hNz%w;$#;cxL{G15V~5a_$HhB zYb1^~f0=}cnV;Xu+0oR{1|CK-f<;mC5TH1sy5$11y@&|StjMGaB?TH8OhyY7;YgH+ zq+IdM0_az{ps<+W4-lw8YCR(Cgz<7iGovExguzpsK3Jr0K;2Zxu>av~0{&yH3G0{9 z{>#57YH4O>>S${FWhost0He+SpzST7>R7t8;e_B8+=9CwQ<+0O@g`wywy$4UI9NJu8*|Beo_&_eEL&a#K{UTibzjZ4&l$IF;neh?PDKaKU{x) zxE&#i=7d59=Sx&ns!&T_8b49sZ_DoAEy0e0REi9yLv6DiT{Sq_2^AGba$YGM1<-1J zt+8_?w<;+!^^d4YV^51Pw_r+!S27m}|59&Sv!ur|Z7*z}F>X=&njKYnH08j^Dz4qi zf?+`da$&O?GJIV+&r5ht;=VaHHt>e*JpGG`Il~?e!o{#gi(eT_^4S-JkHRB|$+_Bk zOgqX3(z9nY?5~V1H(7}Vv-kwB#NwmIa09}S)%?f20uF^yDI{GDw8nEc627R%QcACd zD41}D<;dm)Z4Y5*PNv(dC>FIUd-C2F7w~674O4;1Y%(eqAf!4ji4k$=U~24dBTN`# zmVU|`8{S;|fEHiyEt{4p{~0st;j?276y??HKgPswem(5?wTEw36n4UK8cyBl zfqA|f>W_e=80$6W)Qdw+{^Y|$6nE0rxFZ7*K*#flyNm69Z!^d0+!@iW&v{>cQ<1wVxaK5h&+$1vT^iqxyz6HSp&z(oYwfqZ{vd)DF7*49b~vk8~& z547~~UacO{ov#AQz8-t*>IscG!Pr2F<`bH49kUQV-@)%>kjc$iD}#3(W`ZibJTh8c zb+y{hVo$zy6t;q$<9;$|Dc5lwpGZ0D+*r}R-I)kH^18A?Rw_*But&+voj?<;mPcMK zrOy44Nwq85m$Zt{E5j?$?JcM!{FUOEiwi>et8o?nu(MA>#zJTUu-dPG-_vc2W56I#Ao*yU6`Jn(;{d9yqcwAfur7pMo%|yzN5VmiQAHN?g zV2iWYvqewcM8QJkPO;q*{=lI%atd+^m8G5{as}gSU)NR3NJA)B(g;7etk7<;I+*{+ zrLENJrhgz(R`{xw#e3#EXi;(Oo|Tod`~f#P}dDtC2+Bi`%`at@Cx0qh9HoNlty_GSqKON4bx)m22knl$iR z_#}#iFBH^G4Sv!4aJ8U~z0R(xvklDI}n#>#@Cvm~Ysx{3hw ztmhY;761;BQF(Er*M3ac$yyXeBDYDK} ztCIA33&E1Y(r86wS_A8Zd8$61eBejNL3k!EvHXd9F4reCWV9s&5dlxwPbX|t&%dJm1=QrBfr|9@P8!qIjH}ZgEJzLL&tNw>^ ziH(7UneZRdnVJ3`ndBV|EtLov+1Z}PZz)|%Lx8k`nzV`d#bRQwu|8!l#i( z4geZcjO_`506{~0eM2h;LOLcE&`uVhvH$0&{uC!mGFtjkV1pPk1)XK=z%GALXU}0!)Z)oeNYw>e<1z0*-IGEa4xB{#UjddMN zt*z`WbnQ(5Hg=|m|5Q6!kE>XGs`AbJZWrBVKu=5YxYsU$ItoL&4kJkfoe zjL2y#B>qOUQVNr?w&^1k8d{DrUtGSdUBhO*@KGEN*0HXH7!FaxC~7SaUY_UU8_INq zG;)t!;xqc_ID_$H@0*F$P#{~2pGy>S>_90K$x9o*m6KHgsd1un$ktrRtbgeD{{pA{ z-e>Y(a0>fRUHva{%75MfQgKuAvLj`A9s zHdE0_c1csU*hD!SFyDEf1DllR78YwS2u_I9DH3V-<^@VR8jB?Hq`ww>XTH$sjm&a&lbUm=hxTT!(6J$W2B0;Q%WLaq zU0Yq(>2xu3Oup@(LRg;iEuIlVj_arQS4VLBh$y*LP@!P)LDmuoNYr;>hBW0ef;}Er zB9KINpbUZVN47_D8gn7eBA2+KW;#3`L&U@(hM62sg+yn1Z*&W*Bk^nI&67h?=mm>n?E=7yTPo zSap4293j_81}99li%&h3*_iaL~xbS9rk6SJ0Q&CgpQtBu>LBpUFh=|@ zy^teQlBS)-n@Fz{yWPmh5A1f`$8@@I-~&Ts*aHF!Uwv=HL%y(~YmAF_Uyt^$jiU#r zecOE%@Qf>?byQhydIV|zM23hUm0HqMSO-3pd(e7JefCUkR^lv@o-LJ%1cyYg3JW9r zA~m=2O#p=n0)1WW*E|$UBE}Aw7}o*x`%`yw07B5Cr)95!!iR# zz}r6=;I&J(P}Wf5-4Ku@XLht{PdHz}CgC}E>ULmMRe2gxeX^_VpUNSfwT*;xVQU); z=CZM*mKMCWnMf=a3nUs^q$e|Ke^<~=p4%|_tjg;;gwX1kga}S|S^!crfiI}k;P52k zz$gJ;&B=2~WEJ~65b4F4R(r)M^?*VwlL6&0dP3593(qR94PuVcOV7YcIL+zH!$rSd zDPYAizMknU$O#dBby8`G!IRip6QX5Mc`|V`#^q4BfP-UDrM7R^4o7i_3|zoh6b$aq$!g zImu^r;{n6g0$#{(-f%+(FRB&8@R&sBE``0(lcZCR7Sf~vn!)3c)q3XKd|esw4Q#Pk zQVpbGmk^4*p(IP|d3}SVVs$Eqhyf^o7vI}^g`*~LvfSRq3#N<1<1SXKrd4l`S~{gB z_6FyY`i@Y<~a$0pNPkV;lVNAR$WB%2ve@;v|KNW-H~-0&gkAjLLZ)|Wxl&CgnH z9pl9m1{aoB$yQMmzmyNZ7Xjp^^JhrMb#i+Oz3ElR7iaUM9{^lf&j-0C+iR>}#o%bJ zzx>p38zGVlewb?#4~s-k;gHmSVqHlT+P1CJM!{w4Ww+0TTk{Iu35_|G?znJ?c zo3j4zCOUTfb_O#yUzgOUiCH8a=@O`QNAwR5Cf-5p*e^<3pSB%+?$QyEs_Bo|W~74~ zs$|8Ly`S^6Av0~GsqQHCIL_`|P}c1mDUt;LOkKv6@Q-D5Q!4b6io1KNaV`@y%t;Y&ZdSf* zRwr#2Q9=(tnjemaR%ku!tr1RqkKNCH0N5z@1gDo|5o;`QvzXgP)Z5z1X&IT-rxqiy zFWStUD$LyB5vK@hA;I=D?Tr8v$jk`tZ}znmzNT_wA67xp<2|<@n_rIE6vLv`HRfxJ zy*01ksWF>GbcMQc>fLPfs{h2N_{EP^8F$etV9IMzD(=&>z<2c|Gt%t>7mblAX;)2d z$mXxbf&D5SpRakhhn35cHoi!q0+SbNQRbzi2kak^# zSD~uD(d;et8jyyd1PHynBTYdf54yn?q|w6V~2{apsg!353@$DjqcbUk@_C zPwHH$s1ry&jAOrYkP#OYcaOYG_q@D~Az&&&{HCZZGVhN=I&RzL@Jakie#w0v4=HGi zF))_c{NcI5EH*oCFv@|J>cPr$!DmemmNr^cmki-Wm%8Pbu(cbvVCl;7_=1UQakV(_ z!j~^e^V>qL^YIZKv#)uwZwnF=6CrPPQ=ss(1RvmGDquI@D&pYb!Qh`Et30s(1D0a@ zhcxCtR`UIctAW7ZxLSl?QBg(#gsUaRSe{bqTf@(=qdwbAyld`D+Xqu6knfW)$<^%A9aJCdc4`2!~1DFFq zI2vFDumRWs?Egf_zZXyuu(P&#n#luUW){$lA3Kmq6Ck4tn&xsKWMq9r(sBR+5Wok; z?Lq#FPjNYG2ha>92;55=8kp+-r_z7UC#p#6nHlOoPALjoG7vI9PMAKZ88p01AxSAjLeQ*rzZP$eekcC3}i6gCdXfa8D5+A?u^%^Au(w1pX8WRGO8L?e9En zptk(V!wxF^)Q*3g$pi?wIEctUwg)7mh&*W8^RHS&TWmAsX7Hyb$@S7x^CSM`trM*8JC^BTNYBRZ&@_=a70S(FD!>ytc;9 zy_jr&N;p;O)@w4t=HJ@MW93tuk9vjB?9f!!A+9K)Wtmvgq`{O(RL(07AZ34!qjHYR3_I^qUUuJU zMi{#E9+!tO{no-hyMq`m*57=ZwRT@fSXM1=Tr3c!(`_;;4R8x7uop$N| z0VqBj=~O*0p6dpWl7e!F$(N^fai2#={o0schKL|Rk63gsLiK zdo|;H>IMZbnE*$O5SKtjlz`8V2~v{@6zmi71_|Ky_&6= zVst(nJHO^VKM!Os1(RZku|=<;hP}k8XiXUrR^sGQDXUIkMk^I=BL?kn_o5r?8w5Av zj0DG^aBm}iAl?)*r|ff$rqzZT%O zZ-_}yWLg|9Wim`Rl}Y{j2B{2I#raH-4q3)`W{G&*n@e zEIE3wWi@82fSXf6FR4y6yuXaJoqAkI)hcdl1)`eh5lnu9)xs88s>tEOX;A5oX&b)Q zNZ(5M6s$q&W#Y|>Nra&0;Yo!lB2_{EEp~iqotSby#S6Z%yqeR|3)of3ZVql`Jm{Aa zyoF;0N2Guo@xCYUPDpDYz+IqhKVO5mo}wX3dLOi<3tCu)Y|!Mk0v8IN5gWPOdymP* zLsk~z_&vGLU3EztO>T3`)ugeW<>#*97j}a9Zs*8hO5A(I`@pZ*mh42GU@ff6WtW(4cE9Z_tyNN~?8N^s@To?7rnf__4_{ z&uZ^Bm~|rUT(YS_J9Jyd`oxwCj@ESGQY6!6d!yAJcYDGC6u{*tCa`p+Xo0JySpqi+d@K`M%nj`B^$+6BvN>6ec8liRBYPP@_~K9 zofUKY6~%gjd$zMt@8jT+#rm?6?AKV{ahz)RwfeyG@n6ubpun(X-L1JCEivx&{L96b>KC8T53m3wt%WtS=`hmPe6Nx)Yp z>BW4*ag}jy*)jd@CO(bVP!HuUOBK8<)H|&UAigPzy{5_*0!KC6 zF4I8wEG-ZHk4#A^EEgW!1JsDk7V?*D8gFA^TUeaqA(;$WWRell^;s4N;>9C`hlO-Z z1e9ZHR9REG7feFnOb@tAUR)W$N^b9Dam18udUjUztXSgmeuR9{09YJ??T>s<{NSQ@ zf&!Kc?q=LMM$bovli3{6CNe-RUt5SA^R@6Ziwr#w5le}i!6Ct);M=!+sSoEOJz^2j z7a^{OB!!m(?sZb$jw?%FJU?He5=PPKSzrj1UEu{yB@zS?^vC$^Gq|0te^>rah9-O< zi>LvO=-=>cT~%5Y0WDZq74oe&jXZrfL1PhN4>U^$Ptroos}g)~aNuNrthNtplFmY| z%dABpp`3I8h9!mXi)b*9EOuX40IJdpUs+zLqTAPRHso|7NfJ;s ztl1zueHQ1niw4I0au{8D9i@QEn=xs2L%WZRr4rK)2JcIEb>4(Gc2cX4W*-^Z9$W+I z5l??0dYvaEX8eNgpe&@wt*MQ?c`(CUgqyTYr@G=|80CD|(62$M7aufN_8SW{MNaPZ znoNHPn9KS#x8~>5YJX1Yy|-SU{?zJiLb6eyWf4k~0H!n~bBavgeaEuAXQm(#qD4PF zQ@dJ}zjj&jC1)>{rl-rU3c-4E^R`&mFfOvWq%iu>N#0qLyHaK8Q<{;x^9ql!R;Po< zzVZF@LU`#YY}p?c++2kTv^+DmCGTP7y>go8D$GFV?2rcDt!M+tTnM z&GrCBjMxr#-Ad`DQE1sLXN1HiUky7dNylHFUzE3$cStg&;=U7p=MV@LimY(tRAPB) z$N8`^*7#Pje%y~%1qUC_slG>pyg*0#xHnnm}krc&Qt9;=ka5vybE z3hnWz**Hy$ud$yklPRXM@`iD;-*k&7AE{guNlDE?A>H z1xw@Mu}Opa73~T!8GceQQLh{|fO~t8Q2v{-f`rwBe7w$%F3QkDFj#0{9}I;mN8Qve zjQPK2>iE75r#M=$5;qS$r>0K~FF)*CQ8}R`_A0%#_y2xg5S~{MzJIdgUn$yg3>zfg zQD!XGD7si951V=4R*aPQmQ>pJ_JWltSnK1SpeF56D%vZcwF9G>)5|l2+uGxWM&skF z>Lm#X8skDe{BqIFB)$E3QV8blLUhvoH-hBDf$^%ev?AsFCU2S3b7&npWK(rq(?;66 zkR8(9R_#>*M|sIeO&RgAXAUpO)$)NN*r+pjx0;pJ5Ce#aS=` z;6!4Ymq|~`^M!m8E`7hAnbd!ch6l)`SFFfuE|D4w8b>sj8tUAP9Da~5lqyT{TtU*) z!l>V=6oQD9MmI(Z7$Bl{ZFV4}o7b8TBVVi3-L8LRu zHueapxsG#eUbnH4TJ~~CUrt4dtoMaK^=TX&{`+KQSksqi ztcwU^WI9m+eVrpRwTy`LMhlJcFVWaoID{Jo`J#b^j;=y)RNOy{H3JBjt55VQmQzH6j{qjs8f zl8Q(sE*>rJYrsZmuDDni)se491|M1x0!1W?W+;V<2KOcywe-FH0)`wvpM-GLf)Q=h zUOdY!v?=YmzH98Wt$+^}{M|?KGUHNxUKbyXbYM#(Z^QRw>!`wFCUlGV!yYipFnzr~ zj$S{ghYbwf0`c)1GF&dx;t4ONun$QT2tSzKTlqmgIaW zD@zZ7W0EGBj^H!Jt}@n%H82gv&Bzr?rf;~$X3TY^<8o^7$)SQlGDhBD53OLqdzfb~ zHXY3~^n^3h$KbWrd%jDJ+3@D5dL_>hgNz0vDQKfpLd6rEoe#}Ta)H&8!-S^fEi-_9 z)uff6=O9TE#l5$2588;f6HBe26JP7Rlcp}Xp2OG!7}*npeg2$#r$L@ka!gYRy)`7B zpiis;w4S|C{Yj`zPWF}ZS0IcBi}jt3T=H2W?7KzKM&MkD{_6hG>_*o?{FVb1CQ&Q} zx6h?X2D_!Mb&S+6gp~0IaBx|J5i_UM=z+ncK?bJbK^`6lD$>d~&*&W#C4f9)!maPp zm%X&8>?Z=hbt`LS`iz1XSJV91!03W=I@QaP81I zjlA7eIgk5;hnCyA0g>ZjVsDqhasn@d%*<$mYzq?k&=xW=PPdqG<*V)s;Z4otRAw72 zD(X%nc8aag%;G*5dJHd|KKmWxI|k`!$BLs-uQ&b%aNhw$wd+Sk%D5xZv0v?DjMf^4 zJo2Ypzd^-t9-Yk{?h_cVtbD$SpQ9Y1N)S>FD4U4Vv-R?3Km8UauCGlBLyyrvrLiBO zUc=6O3}Li27`)=)`dsiKWe|>*P5t5OWI$S`Tq?=?8R1(w^N?fy8u8K+Kp!%04D-@?Cbl zr8L>bRJMgM=Z#@xBx>B1ygh5BmAh?GvXzT%BvFS*4JgIrVQVAXCYSL60X<@)YaaaA z`-Why>HeZSNN%GCKq_ly>p-< zqq#*}DY2xw3q^e6y=moRd-7Z>5~2t_I`J#2^L&T0TbNgL1Hr4eyXkWPvBfrCx4|!E z;@(IvWRu+_H9glfJr%hRpblaBs&gh?D{d=ha%7<`=c2wm_w_FQr`{gqKl5)mZ8MCSV?L%fmK ze$Tc)m)U3Grh^%H7p3K^Ie!Kypbo+YZD})s)nP+bS}m-kx2a|LQDVN<$aL$6lU9IO z1lp!J?e3|xo9rxCd)TL`cmApX*>^**c*=vT&Zw#J0;8zS*ks@&g#7(Jz(Y;X=9ZhC zOlJb_<#NU^hA6j8qzwfgjC&3#a=fy*Z;Luvt%=eNH?e(4apj(MRjK76e=vI+lwgAa ztHZKD2)mjhwUAv*s$O-OL)_^skrfXAOrMn?nZDEsK5~G=A>4C$BicoCPN3+bc~+xM zCjA}{Q+OpY02Rjg8H%7V<)9Vory}@#La2$+=*!XOXnFlrJfCpCH0j1eAjQzvuJOE& zhC^!V?@bQST`t|rRm~#1bu(X<8YYxd=a7MfeNuGH zW^;0Cq8zMU{O)9B=A8Tu`R*yR0&T=c4{lI4v@6Z*4k2`9oB(XkSc}{%;ELYJve=Ey4 zq^ya}o<2b@6n(C|TH8#MHm;C`Y3dVT-?(xiD?it%J9FtXt%rrCxZAV@NMxH^aSZ#A zs}suN>y-zLFboBh#}TT4Eoof(j~u+yg}3h`maPic+d^19DmL$NbLVg%5#JpOoPTwQ zjlhr4nuu+-Fpy_9Kbp*n5;#(JVnt#@z1otPeAd<&fZmckp=~j_(kL3L7h)V=OC;!# zUODYj7pi}>+q)3;YX5$taF1YF`@zH0-Mfxjaq)SL!u4xkvZHNIUxZ}B+72=e9fR>f zcP(%YBp9q0ZTW`7=Ce7zM9IFVVH}$DQgt-tz2&OI8D%5ptV6*~?pB0}KXT#BKfOkf zL9nPAyWI;;d)d5QQ%4YV(Nt%Bdp`nbBIdbjiVUk}c-sO+^uv-H68}7(=DUY7F)e~8 zm5ktrXu6DKzqVTkPy73wn~U8Wt1@DVBEop_LGD%aB*t&+?s|C1Yd9z}~A7a&*D&M6(qLDO0?ce3tV0qT+4eS*72=JVv2 zTUW-TY$f=eFNpQ8MIz5La*qnjGZ_?AQRs@ON}0YA9fg@(?S|pH*bc-?T~3Cdig!^B zFh}_*+W&y>{NzzI)aYqhbLU8xDpv$cb!Nw%If;v{Da|{#ZPr}WAt4@k2r#H!#0cET z5b3q7WldwdAG~O_6fPh3h6{80B0n_QiVa~p#|@;(4?vs%!7M=r+}7sXG(R%Fr< z*g{0|TxYSPz}0M$Fd+3<t8V}|&q=K{5T+$HUgWnIH)QhS-7V%Z2 zyoXPOws{;QUHhyd7Q{&^SuNV=Ql~*I#28tC=iWe;MTie!qn|c$mloO9*jb7u#nn+( zP0K0Oa4A*O^Jv$JzG%It--L2g5KZhWFCS`IK6v=}`dSNkE*-3q-t&&8O1u8_NEtOl zu%=?N#9AI-x?x)vzlLG5qBhEPqBC71^LAm$%~&(*#QnK{iudZ^yoECYUu2RHoXP6Q zYxHbCx_EE@_VAM>$*BD`TWQ>n)LLa@xWLOReor>pYWC% z?v0MVisf5rYQcygGxmGwuHe>O%2FAMSvlhOUR z%!}`vk>NIX!S6&|>wLNRxM#;PGG1{+9@@#c!UvZ;xYYVa+=}iA7t|Fv1_?Oq zAJbderdOg_-w_}ziU{Sy17Gu!ofpjtk;Dcnp_#NJQfVCBD3P|JLd32Getx~*Rm=-o zm2`)jaW+rPHr^;^nBttB-h&(5<(fqABP5bYlvhsdwutGXPDRpAHa<-rbhC)em$3wV zItiFb)B5=Z-f`V#U6g9y_s83Drb^w7FAbWNmwxe! zgCWc)Pd^6=xvDq}DUd@|e#1{3(LqMYsHmbg>E}C&gGuy%cTb_x`(m|VYbtG+lyAQh zW^W^}=_B}O*+oA2k!A$~;`b_MkdrfP8C@?V$X-NblnrT)hfbk`X~;wye(y5Q|M=zQ z$KbW8QgIn8MVtqN(vM!!5g&UuP;>O3*9&L|U|YaR5{yzyiRL67NQ*<%kw%k8&RZqu z-Z5tyDza1EsU;WKdGSp^`j{8*Iqpei;0#P@UbcRumQ}rdMyw@P%`fdyP^RydTt`IK zxM(r6U&m@L+l0$blwiYhujh0b0>}{&zAsIqR)n&!K+p6@IVp0D&Voipgqyb1|c=5p$4 zwq|m@Me-y)aHA5sqL^LC@dq86=if=uCmvsA<7K2zmk8B_>bI|uJc}G2mM-TM>x2yz0aPQ(qVlN4Pl>mC_7}D!EoctHJuQw-q z@a6|U<(dx_Gr`Z0>CP*Qp?Q)sy}K9xKd};6p1u(N;`uP?O}mhsHIjLZP_8CS#3%dB4^{k*)}iZp4D|9;;U*I zce zJKEAf$NywSYpekc6k&zlucJVicg&u0DZ4gDpOhd_z$;D)WK_rAJ zK@-ijO-CD4hl35wD!rcII}pe!>Z_r=qRi_XBw#JVBVhjm+VUt%s<+Baao^{LPK$FA zL2Y3!rRj3new1V7`j8C98sJCTAF4`aD%RhR++XVWhQ@|mf6CpdWX^vqC$S6W>g;rQ zG^wu;h3ezwosgAZJ=N-WwCfaJzq2vt07H6hbbMswhQ32eTf1uru(0tR2g(ZY7C{-} zLHlb~G-Ao=8l|S(=#MbtCJ=+f**-!TBLg`?M}-wyu>~T!H?vJ{+Rj*^tyTMZSS(zzpoL&(`ptu+aHv6;KqJ+}1Rw2Gb3dJq0iC%X#jbz8) zcpbs&%Ra;E%Cn^S;F2P?^h_BzuAyTku@gtAUojlk_2}-f9 zYy;I*y)_#?`=yjliD4EsDn9K$A*C5t6e%AtNdoNxE>$H!dj%H0a z5?KTNVMD(J1}#tBpI=Q!h;*Jp7BcEC_i7}5{%BFohc4>GeQ>y z7xNANh3?5CKW>_k@_a*IS=&==!}a7vs?a66*VS27PBAsXId_kaby=o7gl4c>(V|JH zg}0Qq#8a6s*lo0KZkD%yP-=9yR<|!yQhfeg4~DW&YK-@j0lgCcv%sY=&+?v|n3A{2 zHiaz@z6wTDmbj4u#-km~+$FQs_xdj98_1DHJJj_IB`(xKll{V)Jd5tQ_^)n( zA99`-_{gOzN_T*kX2h$Nfze}{ruxpNFJ`w7hsQ4b7T10b${YMGY#}uvy41j%10SR4 zH@?s0&Mp}Sg_Y&?QPHUM-{FFxuN-hF%#_{dzczO&B{H|gasIBr;cp7z<=K1Rz-vxq zX8@j~<2IzvWop@OWR5=xu4}g~|88&EXGTXLX=+b^*B_mHunW+oWoEuoC`m>)u%4K2 z30HeW%S5rs)RQ;CE@4_}HrjEqaTc4KG+bAUbhk<+*csn&Sw-Eck!q>qq*YvW^+A$D zW^#wK_`s6Bf37!R9ewJ$y!0w?jz&HSdr`Uk@+{Lh&nTqujce<<;9Ss))nZ~ccf^AI zV)Fuy+;H0f6hCwp!aLX_eq5~h_3p%b7*oQR7T^K-?miyhlYWT4p%o5AE#6Gsttcsp z-wiIiHE+5F5{6@S#o5SoaqXA!M89qu-__0V9ZWB2PhB&C4z65t&uZvC-*Yo5^(B6L z|J{PEiD^RJLmI)W8^h1LH1N9W>XF7SrBducirWd_#00iMry4OWYF<46mQ~Q zFkr*3(xt#TppiQ-XS}37Ai&g2YD|u_j~M06#-?wn8j;iI9k^0r3n0R;E^l02@OP;Sl8bZ*S;iXa%r0bphDh=;|8+9GtBIZiaT&e>f`v|KK_N zg=e0|xF;R_<{c0|x#~R84j(xOAn&9n_b7XH4p!!$-tUi2M*uM)aUoTyCtk#(r;eSy z!(X|7vGfT4awz(Vo2(puyZZniy@>u5SpB0Qz@H9HkIc=dx>;C%i2~9NsEYsUpM~MS zy7IqIXJG+(nmtk!pBgVEqM$0Q^wfAp5Z~kP)-(RiQ6vQZ<$?7N&HrbH0pnv|npzt? zb|;7(X#gUE0`wd$EDRk$o?QS(D^S1N+3Q;T?+6IMe@8%IWP5bZGqrf6%KjGwgm?va z8`NIx8KN_2h`{HUVcOefNe#DU1oo#LDT8Eic`D5eX!QoCI}-`UZ*3z~~)fxo@bd$fPoZPcW6I{uHEQi#ulHoKZSN!n6VU{75x2r#(bZ_5oyP4R1 z+z$ndf$vnhi}o;>bSmsIn8tA|*jfN?Vn~VvSGA~{Z%@^lseiOoYiW?L*qgwSOr72} z$}Q+$G@aTBJRrA>Q=KUXm>+F3?nc%oe~F5J^MT&$q+jlQgtc8YPPn2RWziHOvm;Nj zrJ_Zwkmb@s;mE>LQ5o=_p}6EDd0CaXy9y~VmoiG0n0d1o3@hUKxZ6AAFQGVs=aJ~M zD98RKtkw%Z95hd3a#f__F{uK2!whl|a=c2h7NV9^tBw2fT)e32&Vuq3PZDZvbnz{k z3RSK+n`~ZAd-&dOz%eeq^dD%ZDx67^aPu6AAKkKZ<6w{qS=Y{)drLjZVVH<2YYd^z zQcgB!C^P;=uwuUnEiyu7BzQ5_=!pxYf7(c>F3trd1w1NV9ApCxhfa8r+>U{Fe3&{3 zshT?khGt9`f4>dSvbE$qCBcCcQjv~6j#WY)mfLL6Zq1wp-vp6(E?v>8yx0&VR@8ve z$IElF7RIoEK=h(YjjuWT%iPTXOX)y%a%u*etD&$@Vjk6)cc$)YjwtYjrgDsFfzHgc zv=5cZD{3`vM#OD<1Ji)WW>X~pcsTudD`-2^AZHwz)Iq1A)QqH@$q`WKQ z$Onp-Qr~`gA0%%)&_CYu0-*Ha{cMA~zHt|x7&sLBiT+_vvHb^e<9VF&=!3~E^<_EF zn|Alin7&WIy-;^t-(^gboOxx%ro9JS+uQluI??Wqj(O?&0;<`jS;p^S$(g<_180PN z293T6=_^EmC2=-$mi1~7b#EVs8DG}grOqB&PGCm5Q(QphZYo&+Xwiqp zI^^1U>w-!ipQo}IktpYATsyYLl7)G+Xy8@J1^x*3iQCCtO;#Otg$=>o$M(yKXOe>3 zMV(SjZ-6!HUmc&p2@AKKmDh!m6z;5xc^K_~tf_ck#%~T2AEWwgUR`%0??)a5zyCPp z7Q!uM6M#1+onq(MZIRo1tn&)y!_4}HT`RO?kiTxC{>J94$_{~oxBH7&8L=Oy1l4G8 zCW!{7JzXjr@5qAiPa7$vUuvDt`woKk{2>jBdWir}kaSsyO&-$g-tf$D|C4&C03C|> z1jEgOezpl%rb7quLrIs+l^`0ojSxO!wFQ>(vpq?qdccwFR$zAWtPzwG6~x)(*vOmI`BPHkXMjT)1{^i7{|;kGAAk6Xbk zCd^Xh%a(8UdOPIZ&yyFhH`Z9Pt=m4G0K>xsNKoZ-CVv4r2@XhXSFE(z99hwoebW)@ zdi=lu0c&)(3d)>$KI|jr}aXh0a;H+hy7AZbc8WmMrDkwvSP)fl9o5??c93S z=$MpB86Mu}tZ(=)4;+H{(#Z?&*_x);w>jptvTik*$64<`-PX#K@)93HNChp9uw>dw z_T9s@wT5&eRLifP^QKp}$h&^E;YUo0@Gr@|s@_Bqy;M7i!6m_6l3 zeAatE_+vZGA_Ol63XgEiFBhSj)h5~zr8u+2&}EKDWY9rJ`E?|pM(0)o0WHg?u7KiQrjtOP<4_U4wl4kk~`P(4s45IfWe z#1nlC{Y4pl!WDn8MnQ$_LGI-sUg&S8=)b~|-w5PSNcr3U{a>a{{v)Jhd<0%{zcD2v z!{1Pj?a3kie-F(5UzB8F1o`g&4fgn?RYdt@pO^}NB3%$$;BTl4;`cr|(*Fb4`|aBP z-)iW|viU34 ziRq6fKb8b>2mYbSzm2q?d}>yXr~BdQDf-u%|9*&A{(Oj7f7@P+96u=|KW#527RJ9A z)eH|zwLR(pLWu3D~IV<&$B-z#att%l)q?Cnn4Hr~^r{ zKb61^{QLd~_0d19Q1fUU{-KWFhTh+IfSse^-;d1iI}^mL`46@(6AR0)+W@qrz#}(_ z5Xiv(_v6eCih~~6CpypLwa4S>QD+4b{>uM&el(Q--7DbN^~bzV`9XEC{B;09W-JF2 zh)=}CM99j@_H;ajK?E$2N&J-l7=Mxh^!oXAjs36iWBgaX$MTP1R#4f;^v8n(RR6E= zWBOw~k1{--fvg-)vOk4E`5xtbl;_v^G5tTu4$AXb{!ur-uKhYc=6`%eKDF_$SL2g> ze}y0G27*Q-rpMm_omrmdlm3?OvGspQ{+Rw$;<42K;CTGiKaXEh{ZG!oza;#Xml@Qv zK+s|qk8w8Ep9cp>;-?mZS_w+|OYe`Z_&F#%l?8pe`TZJU0>zl0M&?KPA2suIe$*k|&Dg5#Lc>F5(>-EEsMV4+~HAg_$`CMo(A8jNW3WV!o6%e#?xpOi#A z-i4`wn~qZpxx%XnhTtsAzUK!g>!VpqCWH?0BaOLA2JHauP)RL^uB5JE)_Vgff{`;m1MDH>lj4i3|HoAJ z^9eet#@c}TEBK0Hah|gitxBEuNtsG5(zPU=P$;tClG zer7V_Xs|MYt#MQ{FqZ8p`qOB#0nYTo*M*#ygOeMc4xIPGRZ_MqLVI>D@GM3<$=bcu z`dbkZShuq*W9Pf|s#aE3O-uMR6jV@4s7s$OuR3z=n~gkb3VTkow&WG_-lnhKTv%q# ziCkl}B=ZE|eYHk}B}Z&;(@k-4GC*c_BW&<(HJ#{%$yE|cmwkZAd@qrfX1%tqam&D3 z3mqxg-CJLviu95uRRX>6N*O5eshn7&Os6oxy7&u~K)t|SH(x{%V!t3}{jh@48WU<$ zlR;hfI|?&)x?o%!jLcAyno_v|jK26Nr|})(bRwV7J7K3-NY_^UR|uu8ut!_n^f%Dk z8>T?jA~*@6Wn7N8G~KW?5>+yv+c25fiIo_jcKg_qi2%&o=638EwI|dkC9nYxUG0!m zG7fmyy$VYE#mj^EV|Zg5yXQh=T-YK7GdtfV7Plk>vO#Zhix)MPW1Fr&)S;{VN1HUi z1C^{i%d}Oq#DL^X&T)^BT+QC+{hDpijXYQgH-2zrSaKG z7driNO>~oAy4M1t{^k1ho9WMpmlItqGIFJ~?>lA`=uPCc(z?5dCzf6gHKhR5S zV6k^$E)D+0+BDQ8!VyLlS)o2KE%UhIuu1!)gELI5N(My%a?QD9QJ|ZXEaasqk$z8s zr6U*i%lBfHI0ZGU-tc$rcs-{q?p6ImO7Y3zCoL~R&Covwv2P&HaXHzt*xm;9xqe-C ze>kNsZywS(UinBQLcRRlXfqLiv4eNS-~Ibyt4DcJUS6M1#5w2M&J>&h>v&}sTOv5p z%dh=MeeM*~In}WzAE1)>zI0|n6t)mH^-_1g+*DsXvK%wb7IaOMNJm`2GReFAq90E7 z${JIY1UP7ou{v$N7eU2PZA7zmZsg0h_s>(X zUd$xF?sop_{Vh|Fu1L|o{YNn~E3{Z9IzX$Bp6b-G+fV~}&$ai#KygPcio_3gA} zVpoj$P=VqF1t;H1IKf5b%DT9FqpMBXXD!pMRQjEQX*k8~S!c2)aHw77?*v;xCNuVL z`w7+XD9H5WyyDx7V_+m+uo`}+@iST{rB~J6X%B7;7{3o=7kJN>c{V}`Y5Qu1H3VVU zk3?+Evd9WO{))WW>%N08!xdq?lZg@cE(O@AqK=i3xhE%6k85mafPH^T!!ZQjT6fC< zS9^(Sw`TXWHd4s>We(_#K`i3}w`OdL4@SJ;T-76l4 zZ@b=Ldqvbx5DbPS!l`o?^IJv9r{pwoKM>5jKEZbnU$xuKp*UXl$Y^~IAEZQ)GXoZ7 zUbdsu?dzZFC*>a!?Q87w=pIV?jJUnb@Fw=;x#{N{98Nb)ybiF`i^bqphTjNll}cL* zw$;YbP}0$UF;~s^@`b3{k)L_03?xX1$gz!$)l^zU1+ZXp+YBwGppETc6`W2p6VO4y zCiV3J9@IC|ZT8480$szcq9`)ku)YT$4ZPLp7I?zdx=`o$D;LrB#ys2NnlKb@-&!jB z&aBo99XyF%CLT*=RL~nV=In;;pa&}NC62ml@PfxUWq>?1OxCh>g{HQ$)d@PuJV}ff z$6N4I)QBSzbP-|_CNg>?;=>M+kfMntwasq#(~*O0tD(DL>06x0&@4@TGrAo%F;$I4 z7_$gHl8+zYoZdKT<@P~5P?I*(>{yp;x1T%d-cYXN=dvv{Skjeyp?(OSoqsI4TAHJr z;NR7mWXqkip|1prs3!;rt0xhwJ8=2?diT(oJ$rko3NSONUkif4`)p@E@C3*r@%w+m z4!zx`pZyfz^xcAUbxJYGV8@yL>-7jiYtu@XD*k!Qvlm~Q07q|}ir{saMmO2k+hIR1 z+PzXUUZT40CDwS&1fLOCv%)5K|M*Ybq35^;_N;vV3ab&pxQ~Gv9sAO3DAns2Lr~WF zk<1*XMXD$5t?DSw-NI?9#Lwd@QeuXtk}yy93+23&WyjG_m@PQUmL|^J*Lt0cDs)nn z5n53z76L)RgGZmXGT5On%nXA&)bYW*H3Z_s-=wUYehk&sz(_$r^1PFQ4hzXs#X=wW zYCwXGL%Nx;L)v-QUEs*kiB{SFme0f2erDJG*YLL>k55SucUd9oO4J+ zvqu2H6*6VH(~d&j?8C@IewLDXZ{P;wissqaoZn*uQ|{W8 za2sd}YGZAZc0j-#&n__6RTGAoe+aewelfs1!3~ah0&RvSxl1N&F3-=}boAKncATZw zFWo5vm6o6qtdQJ|8QmsYvD}#C^*~Vdq37s$`y6|~HjsQjoTv6qm}GO};~c3=NDl0d zb*xK>eQ_r4ZH4yExsQN{V4uJB-IPU1mO!6uY}${3z)WF8VY zd8rF|E3mfXl8QziS^>vcU8_3WwSo7@qYyY~sdrY%56>O|g273eg~j+@=a(jUT5oL` z%p`a}XOgtTh@ZVn9^gku1rwhTTLZt9SyIo=o?gH2q+XhtdbG`+Tj{$gZ&kb6i69W4 zCKZv>ik7+PUbhim7*r7#>F*a2Q5l+BP*Y!I@)*9@+~Cy?=iS}9%fTe@>?I+Y4nxXH zjlQzPo7jpL8!0^QuKsdgF7Du?;^HEzVjPIJx6c&XN;Z=x#78m4FbPc)jd4)qH<{rS zcDy@+8Tq*T`PvzRZzR2Iuzln}E32RHzTI^O&UPQWqWPgjq9^&<65`6jHV_LGMx*oP z)VGlk)W|R)L`f(@3f(ihp#?*A+P#Mf4zP?{j}I{Ik|Y``fA96a< zKMQxPaCdRlFSnG3(1mR>)!uN(LAM3e(6i_Ec{Nc%hqfwd$NNhYqRu(7)yLwOwUlzk zN-6bI(h2wa#bMzB3T}(tH>J&#tA_N~^v~%t%Z zqY?ipRKfGhx-zWxY$Lew7K4K(nFLzju<8td*I;vS%B`PIFfYZLXbTMU0FkCG1UxRO zObO?3Hw)AW4ZlG3s*i)ThiZ_PvSuMYuiAOq*pW4tw2RBZeSqo-QEZ2YeUtP}lf&m7 z!)<(ftEZNl>aO)AB4Z{4I!kd{cfOOxP5DjN1s3?@SZDFWM*jJjNL2-XGX+f+_`YmL ze1pqsiLR6J?`YI*Omg{EWhDPd za&>p5ffNiXR=U2b5~0e{$7@Ev6j~o=!Y?fA4WBYqnw;bzS)9?pY_cSp6!3ZE+|cC3`T!mluih{EPUyyhu>c=lI9d z{j=Fq*{}tk8|CA-H6qqLd`rzImKgk5pCNd^!@?sCa{~`9hj3PYn%VbTaJ?*YRy`2vfV=mB7}Z+ol$?rL`d;hn&tWf%C{#9vYMV{pN*q22Ak`aW_Fufj-}z$^Er~u#Gl8KlagWH6>0K2C^ZCb`K&a!R z-koAOF-tyS`3XL~Kt0kh@(wxPA8_RfJLE9%XZ+ zQ?m>$gQrg6c1#46&H?5Ue}4*&Pp7D3g+a$ls~!S|nOD7hka^zJ6p89A>pCaOlT6D7 z2?z9oyO|O1GCwD=1^5sViW)MKY`!{Np#-sM9hqb4v`PVwq+%)c{I^~!Up9!=pQOy0 zyy>C_H-#LZ$7P-0s|e$8D>OL{B0Fn$PJCtB%<~+@eyxHqRQ?d z%0NHfMT6hg-}8=_ncDjpL>h9peBzcse>#zK!7Q0bNHvDndsIOHo@P z!VSj;DyFb3x)7(NF(NXbpbW}2HY7D2JGZ1_cox6JBr%{)6FM;<)jJeBD9Fbl65j?Y zy0kAQ7pJH$GNKfCxTNph%mnpf`|PlE{L$8sEA1H;P|Kv{Cg?LjQFU;=%|>mB!Wl6yF>Kb+{YS-$7)E# zJ3QCC+rGuyzFg40lm3F+p@RMs@O#tS1N2*i2bx>92dM|~2f7EA2crkWTlxovTd`ZI zTbf(uTRr@Tt%rSd$_Kpd+qm20TY|60-*0gk9^xMoABZ^U2yVsh7}1?9ABHNO9!Lu+ zZ-*=kAb|^4bR3Qvzk3Fr?P9*|25doZB}Kybl5oSPzg7csvcjQgHlc$#U&fWoT|l#qh-RFoNK`u)?qc zXeY>u2R4XX7RcP#s87>2J1%1cZUgo!3)r_Tw_ua|$JfFS3<3`PcAWS=hSrQ?*lw{= zdHA=?z+2H*20C^71b!!U*N0yA@MHt^hwWJAtsT&J%;+P~cTCt51QcjJRt7r-mzx9+ zKa~TIa2Jk-&mraR?vD;MA{!SDI{gP>_aA=rOGWt)a5J|5l7eRh3PArt-(Itceow8+pS=E<^>vQd{nsS| zcgYIW8i8y7+v?k?aMgu7MZ!k8&sLf2i;>{?>^95~%)o zxL&i}e_M^5tdNkP)T{pXceVNNOZlJmx4$W`{~O^6lnnk|jt83M{p(3*XZrnw{J;Fp z%J6!t{`g`8%0Mg(uTL@?kh*0Cy8Z#BJ)mmzt8$0+U;h|^dI{LeJ|U$^JqIFP>^7ykRye=69(b-mux|85A*@OK6KRlf#a3nv>ZkOTofgMS!; zGXkv#|1tyzj{X!E{t^lQUA_kV@7{$X08xM#KpY?qkoo0fr~vc~R{^L4Gys|aEr21w z(8j^S5a@1bWa?rFFb4c4j7X4i=UG2TOqCt6w6(8Hf=(0NG@7AjJIJcH9NvV(1ER z1Gob`0A7FNNq*hLfB3KZ&wd{4Z2#B{=HL5ycetC$!ecCwi+&K4DAmxA-R7BJ6w4D7Z8i>9fC4B904k*oUzc&yk zEy0C~jpip{)nx*W_&yX9k%=NJpTlT<7Bo;^CW2zwL@7&)X&O%E6tAI`N;0y^FHbxw zJ%%jl4C`EXA>yPM&%#Z?FP}*^niRepx||1ATENgrC{C@P1)!rF9vMx6+fkcDo6xQ^ ziDzJx*NID{UjeLQ4SVyLupy62df0cGJo9iuEoIcJIFBS7*^A$}cLY z+%0dQv-u8rFTH<~+={wl-Y4HmtLO784=~Ns(y2+6%@@=~gU4%mi6VZs*?*sGb=ZbgeKU}z3asZrmSO-3)OL>GSq#2eSiK z758v0Z7wiCFq@dt6K~|T^Zx2bE5YN${(ui-1_~=)URzJy| z&L|e~u{gXd6WLPf!6RCgzvo@%fIxA0PA9h4i_}ZU3;HXjQ_Ln*R27BgeqrKN7dqP< zHr>De_Msig`Ae|{f1#^Aa-%s*6%Jm@<;go}tnEO!&y5_JWWW}B8pQh_ays5@PYTf9 z%}3!qCG4n}+4nwOhE$ebUO9dcS{JjV+W`M!(w_gtQ^HiDX$JE8EKG+<@M>T`DL+Hr zCRe+l#r(r<{d|AIBvGq{cin9d`#RxU=nu-zE7K&;pq+VMQPqb&OofKCuuaf@W|m&J{7hly+ua!_?~m_bHd$p=Qx>D) zLgu2%*7;v7;A`6aAxa$r*@H^}Z8=bO0qz{{qLS^Yy!<)i?GhHy6-(W4j49SntK68i zwbuncX40N^$u~Ih$~IFn;5(;s)+gIpF|5dn6i3tKZ-g0J-Y4hrHppbh>tNlPG%jEV z7smd)`RZB~gWFBYK#3JQvZ_>B#_`GcjaQgy8MJ7A@47MX?ZFL5k+(UxR2QyD^#-JG zAJ3*Qe;J1Kr`Ru6Hf0n%fm~BTJxB)cGLibezUT8pAP@Kk0`7dW*4p9BGS}U;GveLR z+=fdCPO8(PQdidCv~h5Jc$#NBU^Js|T;5a72og-`fxp#(Re$5e8~EPR19dfL>}*Z& z{G(}+#q)=5kOT4@1IO=(`sG_!^C4Gp3v0UPwm+*AsEJCQc{xsqW?2YjA9%}xH zIO*=-0)fvE=+xO1ott1lMc`Kv*cFCKBq;DKZw>k(mnET0Cr0GchH6^r!=}cT zoc^@)lyU{`u_Gd%3ATsSlj8rqTRxyyTfRw`TSmjxHndcgL8z=a61{YFF#+bH8o-P9 zv%Ea9ih1!}Oo*oOf`Tf1KE*Y1pz*ekk>G9md-m$9YZpZv+~Qr#;Z^?@hbJE1t2IO; zL{xAT@d#RdYGn-;@~}FZb%^!|)64BQ?>ZD+ThnrhLvW!51sR~X1HbyMWh|1fs}p`1 zJEA_~a4X3l^Cw^^>lctoc@I^0a(5GnV9l-opFe9ELG7%nJKOh`;l|5w^UODtNwP}Y zEy${Q)fy~j_YE{lo8R)jNY^ddcb^jrSUvL{_{I=jQ%;Q{)$)e9)hU0#SM_p^6e6@H zDeI`xX){=hxeL5r&mOmGz;r|q3v!q_#ldJ3QxI%tBn>&D);m}ORN1A z8|p4*ORG9~JP~8zs1c#Gao=X1gEw1f3y2>tXi}{P7P{}y83$o;);-IcX15o(B|7^C zxFobYmlrDb(Q<0{-S9fQZvmgBhZa7@k51J?PjG@uH)*dHSUukn@@=J z6>AFigvzQ6QXnGV@L;y*OP|L)q_}Ic;fzDGrFa=J+(_psZxf}9*du*`nlhbQF)Wi3 zSF#&51{E^cGHHehd&Y;SjZW`L&fATr=ZzEcWfRndIFKgM8t^7DSmT~RP^zbC$BGm) zv0{}y8y@cb19B57nw`6ciPi(poCDwNTVDQ^pIhnIE?CmVW$u#<7N)%pc-fWY+F0}- zPArjaV(*Wg0>-hz(@sbxQBgJP!`38^L4}Ry`G=+j#Ac^=?FBC}zj&Yy!-8x6++g#v ze;>uyl!DzIi@9K*mxFfL8HV(h5hPG7D6+qoQ%sb(?UmotS+1& zw0zPpD5v&3gTTDn=+(ZD&J9U?=NG{x7%LOsCtf~G+iKHccqcqFJr`wS4;Sal zfV`z^=uaCF-1_OxdS;k$wg{bXAEE8%r^$UxoQk3igkG&a%{)5d=e)o<^jm)TbkeAU zn{cF!Ci7>w+Ks@I8_IW`1u?MdgzP%7XrT-wwf#G8`WAx1}KNRV=H{3)&YUSCrRE&c?0Q6xg=1Skq1c(KVG8zrcy(d5 z!1M_0-HH||DQKExvt45x495Rb>`iNqU16+$U&MQm!hru&~)L(p}G>afrt>L zjC?2=+2q!u7tpOyKG||khTK7ZpYzEKW=Y_Uyv1mB=cJ6q3sK;z9jI-^=~qE{HY(W< z)h>BZQC0VZ`)H}Rx8}w4}L2_X(dHVDCtI7 zgwzN~B|NDM9vvNRg&HevHRSL80;X$QLx1%kZV@_M+^3}%c;?&r@ENP*aw#`-Iv&gz zV6`L6JTvu`!68@{7JFfpr^Hl5NgaQ$W?O8JAX8R#&5{T`VyN%a<98j_u&d|M89feQttLUZ>y|^k>gYDnvsQlZ!O{^UIfLMG5IB6V-d*HMfpA*cR>m z0FSljtp`8Zd@xybhxi#6cnbGYWv=&uaQq~d_!O+ttllxjabvKmAaFr4!6fVxaMGJ zQgTOAX-CA;_qj&=ghBE&X3|;~OuL@@l&T~Ulw;d^J4-HO7yVoAXjSnjta^G+gozcA zbK8pP5}A-SPMzDM#&K%1kUk2TKCG86bvIw3D7S!g@@b>|$J0#mAqIXgNYSfVEkZL) z*$>i1MOj+)TTYVev_VWm@skxn&dL5xY7pMeLTtD(??LW$IiIb_hBcEu@za?IPm5^S zKQ4d&s==YEXP22pMl*atBL0k9A#H@=>C;;ZDWaS|x7H+Sjmi@%u-Jr zqLVi?hW{pKrQRE1S&ybXux9Z619M{JJGt#3J%XB4a13dv2I%!u=v9!jCQ9DRs~T!% zX2FlFki+KR4x4Osn-1KT+Kvu+U6v=^{Zz}o1T)5@~0;E7=K5z}nQI zr*`^whtgREPLd{qgMV#xKG@`Vfz%Y!Z4|^zAv&+WW`Pu8*N&uneAJ*sn-?-f#tb<@ z4&nrja}uLwR#<%IzLM6st4Pq8=uaEc-&f3N7F%G5=?hCMG z3`q6LancJ6Ni&UpW6SSvQaqlWN6{$`R4wvKV9~%8LmQXYIR`-oTQHB_#C;*w&5auo zxrz<+o-QCHk#XmSV}qxjl{JYpj7-xg-=8(}_hdiDvtkvp9ZOZslK4CY6?9cJi^#TS z4l=j|r9g6q4C|L%~Lx_Zb=5$aKYq6qVo=Ba@pH#oei;3bo_Lqz#ocTdH*wB;iSif_H= z?~T*&Gb@zmC>x~EckrZ?Yw5aX0!HwJ`e^~~4CMvJ%Jx6i!8?HsA!@*&vo7&^h(k>&PFL2Dpv zK*|l-`5reeuF+f+LiXwQo|M|6G~4kvGZ1Ldv^AMHl~syosSHDPt?I>u)M#Lff^!63 zzHfl|-;tn@ijbi^9@s0?GcKf`o~vJ29LQKt=8#8`*IKNc+c75C&zR;_TIq8@c#Wv+M?I*)|QqVE2^) zyIcKv2zR8;O=VJ9BWxCVa@E*@4A>iphz9A8f!7$|9)o(pSCAy7@4r~J7kIVmXa|nE zy0%fbOoXDs=n$z7!zS}2HMjU}x<%%rPpYbZHG+9O3a#MY(qzEwc!Lp;W{A16+!3E6w}RsQ|Ug0?@!I z32BzoHM~!cnel6JK8Vzc3r=?oi-1c=L{?Hht!?idEfGUBDMS0rCkWqfkvRVDnnzhq zg=#b(^P|)in15iK$O20|88Ibr?%r`Pa3b@@wxDRqQ4XwpzO`N`9rn4}q_R$4@p7Rd zlX!U{K4e~sA-!ojkTgpAC?TnY3n86n`Oz-;h6KJF9E{SdZ;LxZ7oi>H%Xgp;$Z?5z zNnuoJa&@+U7XB##&2UlgnKpe#JO?nDhwM=Z#Sl(8v)TjD5~=K7E-fFGlh0pLG$PeR zfw~k6w^;d3d1sRp|7eL4{G2i^A&2&WePWI!_&u|762lmB9Mm5*@52@ffg0gL5~bni zVzzgdh;BEg?=?J^(c4=rTx)&g(FaVPy_~+2e^Y$13X^M%$F6=PN~}hy8W(g)<{;|! zk}zHag9@?3za^};koUj;0oREM{sy}X?M*#`2z4&UrZi~7U@&14KJ${YLUH(=|dwvK}T#R+ga6Gf6==e$LY!lzZ@MED^KNi6$E0b zYlUHLCDyu>2%>B`jE# z$`J_hM+{kfH$saYFMe{6;>fAv1W8UScFU*At5)zQWfoD z9ODT87xbYbXSNgVwNiVyvcw^yD@~ubLTESTUrg>ToMz zVO)XNo0T6eMJZ8e3TbD<*&Y>si)2?5!q_>z>)3l+YOZrH#uXhW}9iNT?zvd(yDAq%3FmZi(#B@m1#OF+MorvN7Ai%daQai`}YqX^my(bq@F zc!KD~VrvtwQuqmMo;VAuCOm}vXT-&{QsQFOnT$#LTEeIp2lQO>;%Rf2nIlEJHfJ}pT5+o=gF)dI1=qxtgE(_W?jn%C-ot;pwivAF8DnNF?8}KPHuwR z?&&@wH(%}xmvrw}ATjEEaLT_E-qad7e*!VQMEu_WuB*ka95&k}pV3Hkvc-3(Ev_bc z5`7MnrX@9qhDPCsbm_rC$-pS=7x&MAq?(&Ak+80~4Vob0;$Og1sHQzTwJ|4>}o8t}< z*-TNj9WIz~Qe+zw3pb?>V18b4u=^^5A(Hw@i9%GYa$C!b_sYvc`rF=>!-~+iff;2f zZQKT@_^9Cls&|T*%>yF_v$iAjb`zZpV?G)aaPF~f;bRGVkD!z14?LTjw-1~$`1NV0 z+p^kSK2Qb0bc9eHU{1(pA&wUiL4noceO({M^VJ6d1Cza&GC>?zR!R+VEMdJd{@z>L~15v!dmJHp+bTIrW50F* zqrJya5EJ3CP@1_Xa9)C#yO($b|2hHKcvvn{IympED!B93mfrG&yOLZpoRc=U%wSnM z7kq9^V`AteNbh57j|0+C%{((sCAM!`pW^P;wwI8lV_K($Q@B*&V8zoUv<-!XI`n*i zn_os)4NgM`?DRDGw7+BT>L6SDfZ<*d&6p&!ST{?C>Ngs0zcCOF4zS2bAUy5!?o2?7_6fU5@A{M%9%DWEp@)3)Oc8pJe^cYrJn} zgR-B--Cz<`0kOm294JF=l{q^d;n&#o0W5Sw8s z)YMVc5$A!vR5gyfa(2y2!Ko5hrbM1bAGl_~McYw%K}nN1WW%vpzkt+Qv4pn`g}(Xl4P<=8J*BWJC-`f;)0-0y-W z)Qd)&Vbf$+iXpt(-5`iH{GHwVdqg zA^s*6B0UJ7DYi451REBLE!B3g;f$DZ%C$^?f`{m;TT#|$;KiVs*`=_5Z-A6h29FvA zAFKCe|E9^pBIp|Ssq{k_;y!E+)up}h4vD-OBh@PWAt?FB?js_zFW~E;-&q`=Xo;is zROq|; zUk7*B%t-XVu#Rqo8Z*=ef2&X#Bq5ovLz}8BBOjZM9Yyrs3s5%MO=t~jbLg#9(}KQU zPR*wSt6q-M_hTdHK>)H%BqxTVDPlXCs^JP%`Fag-j(FQZe9YT^qUs$ zH?U09>a<;)$RpQe9;BhStY8sr$@$bly1XqEhWa#(b^^y`0@IM2vw+ZzR2A$>r5`mL zw7RMVtaWG=@q42-tYe3DRLM}!59Nl}v%lpP{cMf-rN2W@pWJyoBUA)-&hi^lz5Y85 zXX{gtzFDNnrc$U)$I3Y`?6r{u=*Jd#u2g ze!wF4KR@^1k7NB;sV6J2c$bOuFM8>^X)TbX_#1U1D5Rw({aW!aEBS8>%-@L# zAhhs5FfhMv)xQxFOus$Te%1W{m%0B!CSIYAe?TVw-s_QxlaLOGKyk3Vf=<8%{|lG^ z?*9##cpd%U0TW_CJmMD^@e7OigN877G6nWCbo#|UytaURZL0p8cX%yl|ATe-g*e!} zc2jo&c>En^c)h%Tc+UQW8JHQFUd_Y)H_t5_VAJop1-v0LjI=!_J8o?Ou#p1rkRpb- z28J*Pj*vG{hiQA+;k)M31bWrUjmmcYwpC&F~>jO8;gYIQ8BykrC7l^(~QE(?b=mMVY`S@ zz+Qg?*z2WyrY13#^)k~8tfB-o^YC)3>uV^al&fPDe)Fceh=jcgL;sdm2po{Rs}!D7 zl~7O3qwSK6X33$Y1ryf4H6aQrAc77h1P~1?y}2g~st}E*gH8w~UR535pc*FXXL8@q zYdqG|?;^Ua?0k=SfQgZul#+a0cI9fpeLduU8Yj@pbXjs z*Pfl1)nu^}fL+p+@q8M+G)~4mIX*MqcJcU)|MpzU_t|G;OG?_>$dd;4tS^32HA2c_ zx?7co-eeSR&+}q(SCnRu?fI$R+jbE@0jjsNu&;mbY??er*ky`Vx_-{E52pKV;g(_t z1au(s^}7j+Kr4Jq9lt2_8ptpf8^DH#%SW$c@-JbFY#JBgS*Cr9fXqONNwTA;c=^1i z{>=a$_b101?UG_N{22V&wctr3ix#LOyFT`pil8t0mQB*WrXR!0b9^|sBzW({(LT?- z-{eKa<QM6quT*2QwwASvam1bGwQqvVwVtmPm*uQBLWqJkx|(r z=M>HPo^KcnM11xLk8=n+GQ8qwx*Q2|P@JzA>@8t<%jUKl3$Ax%zXZPje6nHRqN^!? zhvV~_1X3Do_9uOQ#U9^}tXZl*E-uQ-E-pM&&CPi>B#TBLw6}^VD95c-dvNufm2VaO z94o7YaLP{*Lf4f7&_uEiV6xq@nBm+pFqJXjwlp$tICy&i{z%1%kznA)5`NNofUsDK zPt>jCJr+WGITYbgwh5toAhyI5^doP_dzY}7?QWO_!(?PI4r@R}h$$s|2u~TkOC!{V zjZ2-BFtndL*~9cC$5qLi$Ua!{7;f$BXNt{M1e5KZXPX*F!*J-fh}J>$7V;QAtMx#GeAnYcj#v{yTsE-pC}Kf9O?`u9~gevH;%McLu+@PVJM!Q*&=<`*$M2Y}rLuLdh>I_!p2*Z)Y&S z_Ry863A;xspvGfr{HP1Ishozjq9Y=VBS4BE$a#+DmGuxN#ApChX8Z11Hy2A9Ho&n} zMS-2!FfTabimHk20UdigypuY!J*oT_!nyz_`&f7z{Z8U?F$wB9%n3X78&jmQjvQjM zch&|7vb^W8qDELm&xj3lrb%O4DkMegXEA#X*$SCfL|=`r{&s)iZci!)Iqe^iybg6* zk<7AfW8n>GyPb-G(LFL1x+Vd!sSJg4ax>C|TvMR%a@~xOQrYZ|kYmkGH;WNoa3##| z10-BGFuA>lmi2^S11b01p?M}~sHRZo;gMZbT8G>ET0lC^5)-q(Xoae{Q>eR9Qf~&v zxT}oZkJw_zUoOAWJ2*s{h}V9TWS1HbqF>C9NY13byHgX zCRw${-i8*632(`bFPC8WpFG31b!erzvb^`W)ELLVU4Qo>716uHYw|u!`JoI(AHclj zlj_!9Qq3szZ54aHx=Gbr{*6tL77ed}ELr_Qy{yg!1v+>N`^qs}$U-ghN4E`eU)To{ zDTa6y^{%9?M1QV3zPTdHcFiAo+*Lw2$KcV^F%qETtYs@4-79lec-XB>O`uL!Zfg!B z?V*4r&HS-#Z{M5zMkkTUagQpjHB$_u`M#Tq>4%$C=0U#R5q(9!NAsccPUHz&#+asX z;zdvcvfcpX@_>>toBjbbe@k<+Wze1+ECu z&&u{o*L=CAll@+$t-Pu3`gj|ubesIy%~jdj-6i}TEJoInK4HEpH)VS^;`&(_jT80CE9VwOk9KTzZFP4CBQ(<$iZ3p$)gO$rCC~`yu{at!1oUj` zA(N;9ES|$dr@^|uAzfHWb5pExG^W))>T2vA#Z7AIk=EbyeM1k>KM%|x`K%%gaQi(G z$c@n#RdT`a5MwQ9Vj3^>XVpJWeq}id#T-lUtUZj@83!{ls6O-G)y_c zK84*(%>cAkX7N{MW|BXE;VM8@XS7V z;yw4I`57)?lRN^z{B#-2-gT>rqNCB}c+f?Dh~(w-#=-NVCiatt=2-IzdmN~j;x%~r zMj1QdwR2GNNdFQGOo`}u<9fcoY@x;1ydyq)`rT;GAqMl|GhETn9^9_Ia5LL7YksAa;*1E72j-A&$bg!xFnQ6(w|OJUxXA=ZC}ak9K{&(|A{H;l1;#ep)w^ z?)ao$!)c-KvkY%lJc1=So<<5eMz9@=$uY=-yr8HVUB}u-=g1Oj*9s>_ir8DfD6tOX z08IE=a^$2U%d0(F-y;auE8W$zvrr5oaeMel@ay>QkyCgWFB*4HJf#l;hTOxa|+ z->ZD1nyz2_*fm`U*(3E5xvg6u{X;2Y{UNgR69_Z86;nii1E1+fk>wQyG#@DW@!p|J zPS(QPzz+$Sx;jY5LD~!n;z~c}Wsi;m;_h=^uKNwmT;9*ruqj=0>c(EKPCEEiL`0`l z<080qkVECTi9(YW5S-RZ*q(AAr^KFn$G6hWc{TF}*)Ghb6n){v-d&SfrRc&)i^n=O zTQg%!?N-#w*NLWncv4RGmGeJOv0M@OX)nx|*zOBgWv|+&{T(ILRLIsb{Lt_oMs zyyfb>j*EifEe+$Ss92&z-fCsya2uC)RT;*j6HY$^^1V}U#^E~gt^&M4%RG<4K&(q< zihG`rEx9!Kk#0YtOCopiuu|{w^E4ZRpMm)&JG8d z6Pv)I7f9aW`G1ILIXKvVk^lej)~}fDcM$SVmR!Kvl|RCmUqKJB-sCr;{W~=Lqx=C_ z9qr3zt`p{!im>bHHDLrG=-11<<(L5?}>* zjWBHiww89T&H%gL?%sB;wnji_MoV)$01&Z%wfhD*7&@8S{W{~Xz2E2i!v*{g`rZaO z#lP75zkI=eg{c2>2M4%VIGO%-3IEOEdjh;({law+{_Yt5s}|{hi(pw;|3B@FR8(M8 zP%Tl;$XzIOw!;z9-P-d#0)}I_qH&3xh9MQ@1m7}>7|4KuVKalrMo*l@dUW`5N1idk z9eHe150wyp4XuKoi0<|f=x#|*Wh6$dYSGSm+VNifar$}L_o>UvUv*Jk^+o+fpJV?p zV4LGCvqHsIRV|qs_B1^@{|8q=?OFX%xW3^*!_wuPOT^&VSv}q73LSMt zEgdDY%Q30RA4t%tFHvMHOiW5mg14Leb*7`EGe$8sh+WHND#^*^$?0VSbsihqh19CU zk*aMM2~wJdit%;Bh-36BRO}-t(yE1fd#2i^em|b;YU1Li1oT1--%a?Zl7z*-+Yd3W zLR^A@cXsd5fY10A0`XM?I*_inmJ&Xyr>1a213$KXj6vUqZT~$K$D6i614lV0o|xgm zMT2{d+-Aff6i>vva3PtPm~GnZh~w{&kGOsa1l>cp7~H$uI_M%WEJ3TW+p+htUPf58 zfh82CyYv^3mT%jj`QQ4{ouE7`lVS`+VT<@XOF8`<FLB0R631;TO z(2}3lx}P(PH93+jm<=!KJEUvW?SS7s0>KM^{r>I$2kx*_<$T;Sc4eWSlGx274#&z zs|fs_FEDi$ymbz~;B(7GKbwBB?LX&7=|(J1Pml81rGyBTQe47IVhZ$0#b?6xxg>-o zER7nk5q!3&>*Y=+OUaf}CCWfze76gwqBuGjQN zn-)#J=#r@r>1f9k`O_xA4Y-P(^)gI|rbDdpk(fFYcRe1bsqM^1;3)flcD(+q=+$0V zToYqSGk#B5k^}7Qht$K>zZr@}xLDkpD4OzgXOR)|i=3iv(a6>>Rh5 zcRj+bILsm^8d-kja7Cno0{j4yQI_9)fUTQh#L70~!`(`OUjU~s5_Y3ZOfRXvqC_Y0PYt=5XM@m%B zBR(RumYo66pY_FzNFl_k+TsM!h;>i!Mt z^8)^ZSkT^3ppi5>gf zv^!^?;##nPkwIXtD*&6RsVQ1Hv&0;FI=_u7N)I*|T|YDC{iuP~%uQl|nAP^Vvnwo= zYE3*T7eK{fBzhDSy4*Z8-nq$dG{96f@JwtiASeRE3F&KKJO%c!VE0!2Vv$sS@`rrr ztN_+Ea`M|m(w_+gy2HsL@9!jUm^tB1-#iM+=USoYY)9ak1Ux~OuzAF281&cm5^sxj z^avp8JY9ymsr{e!o;)tb?t5FIETJqRqbyl!_N|R5N~;!aim91um}Y9079ynVyJXLj zEg_OE`>re{-fR)Fmh6$D-@VV%OwTjVc*)oM`u*|pp`LT^J@?#m&OLWK_uO{}w(NR) z$83jVl=b!`u&RE4xO@Bb;+(*|?8{t1Wm?DZ8!r9@fjSwz{bFC;*c~x0`$EpFn>xbL z3npZ*xIJd$?Udo0`5%_g_`1O$dj0*;aWfZ9O3#?;xp#kAkxM|v$~?1|Jq6bUYDX(5PJP6?>5)^kYgZ+$5qGe9 zpPb$2;`Aok`?CzV%@RHQu=xg{++)XWzapUag;)c{er4 zv1(zr%b!AW=(M;+$AS&=;^HdjNoOkWPnW!^ayl+C0#9Vs$ttVsWc|jlNm{ojc5U8{ zR2dYpXZ$$5@dvxF`e^KPUg%eQ{^r_w#oB#3oMjsI+k9KEcG2#+yDtn*Svtg1y6B{M z(a?<1vl)rCT@zRCIknw=&neTGp`(g?-7VVWx7?VjZ)bCDw(k2OEzjxA6qFd9=s&n% zb!<+de{YLV&7wn6zr2|?U|t)J;kq6dD(`hkIlADj&YsFA8DYEn6n6dCab*)PpDw<8 zYugUKY(2uG_sjG7D;^1Ad)XXnxvG_JmQl$L&ud{X&&8M7wR&tD-0axsh2b6T+XZau zx_L{B!ZT9q_ANxr>2|Z%EH+NjwrOekc5hU#1;&e+(xHx~t=||Nc#%7|yfP|qQO4UH z3sX)%o85e}{uOgd^KHf9J>J=`|LgOkX+0t$t0pIY3W$#?9kEijtL4?I+3UM)NN|{+ z{itc%n%S1@Yk|j4mmFFhu)u)-ZkWM7!RXDAGp$0j!+OuIklZSLX}JH?oEj6><4XCR zpuWPd)z?XjJ=O;NRXXj!!w0=i9;o~L>dEAa+_;YV+RvW5OkDrju_Jrrwq)AH!m60q zg{7Z6hpf1LA+E(2nMqi6;!wXqiA@Vmp6>m!=jZ1AN;?em+^cA}oAP2%pWX?&S5{<` zF7-FoU8ujM?Upl#(xnHTp5Dk^zq5-(m_Gi=UvoviH-Biak-IU&z z7G5uV7>Y0WSDdmr<`Ho7`II(q<^_dr@H#rZZngHB58VvQ&Toi|)-4$6dUImX`KZ!t z+hHGvJn+nk$YEIVCSDF=QKO4Cde09SFZS+pu)O9PIqV)I&50iyHfx2LnR-)rFmYv} z^_b;8vK*hh)xAcw{A>R$gY0m@u9+TJ%x;ao-e=17u{F9Y*)6Z+jo0$%Hpi$#d}5~; zJ|@G5Pgt}=(X>amP|CWh`CB^<5gM;O6&yBlgI*D3?$cR)i&|eiwJ)q`*obXiJ^Rh* zwLW+_X~&LUW@R;R^*^*ezHYuGqSa^pYg1jO>DG0;=S=Q9?6v-Fai*xt*Ypl&25c;R zTldN1jpQJ6%<EI=%TJDpne7VaP5G2Oa^K|WDZSllE{}DpUGC?X5o)nBT3a^x(#4tj zXb_6gN}Zh}+TJMNzI;SQQP$D-9UO0d z85c48)%a;WPu_dmB<5Mn?7#!!;*7|4qa0TzzY9OJNH=PuQTf5hs(aJKSuOH&OAgiY z6z*@cy*AO-t$fgQ&-2Fz+XXrgX6`Ae40w5J!;Xa)+r(|KZ|-^0u%BFUIxU;i<@A%2 zPbqHaqaympH|fR7NXsd?^=QetuS1R+_q;K2yS|OV<28$PW+z`{_C0jVSvt(PERUD; z;d<{5&JlYCiI2}wh^sqw?E9Yg;bc!AhHY1)UZobrg>?gbr=9z{?V9hrScBL>y!E5x zyWB2^ow7Yr6Yi2{aDbebGgUir>+O)`P6bQDJb4!Li%h3qJY$-AL2|G1N{b}@d$%t2 z4dO_9AG=?hzSJo1=qLC54_3>$+txWaxji0Xw=8wQ^cQ+BqE^)QWZS);G&_Ip`;=AN zT+^TJ+g0`=eR#J^^J}&i^j*6wHS@~;(Ptz#9`3e0(6(Qzz4N?$Q(l&?UNI@}+WDPb zmfa{w%u;N*-{wnfJKD&~tJOipiH8dYx#UXdW6=J+; z-_;8;NA8XXJqFS1W@cIL^w(N3|I29J&AycrTwHa1N9}!KaBJ|Wcbi)pcHZ2+aOTN# zvamhg4~_0+IF<~#K2dA`nc$@DF3qT3loUTbjBW$w4l z54SCz^x$rSpJB%nQfu8VktMTF=XWwF-KJ-Ky7$UC>sCtgiu6VtUNtYLbEm#K=WM91 zhN}va7d(zC(yR89zB@v8TYJ$V)cVr?%stn$SDm_(cVTUmRcl`8`(4aoPvRt>%nw+4 zJ7_n(8Tv@bj@_tpse3c~Gfrb)P3hy=N`Ka)J|?~`b`Q!4UYXS8P@DXm%^#E7KR>xd zTy)y}q1(-cCodKaYwu|NwYqA`lf?WE_Xitx4r;aNQ~sGLGe=IPal85sIWuT5?(7@b&-<1qI8>DAQW8^eQUQSupw9skfgduMgSsxoyk*;fr=12+ji0 zqx5!o^!7;NhlyX^^jI;$EYHkJ#y)d2)he#k;e79Yk@*YlyK^!gX;lY>Whf%MI$hDZ zKV#}L^W1so=@(C5iFrCBBl7dmt2>tUiD_Tf-_D_U&!VbUb1r@}pKiTU#(3tdWo{E* zD-<+w4lOl_ct1$-T(M@@Ri=+|4XY|wM|kBU?aAhMw{rUXT@I^lYUw%P<+*ODb9!4O zzKZ9U511@kJ*-7a{u+b1%f_W-MUP||d zEV;I3(MyMyC+=?4tC;X;)uHO;_u5C#8)8_|FKot;`?shzEHH4dviKDuIZ z#UicDBcc<`Z@0dU`OMShPX#N0X$D>|61{3~^{)zSpE<00(Zam;J;!*nJ`ST%?)2X6fQ=cb%-F!`l@ge4ZNt*Fc>yAUowPU_+ejlK-{p##jx#em0w>xJF6$Uxo zu7Auq_BG{Qy9yWC)BWV-K?j2KDw5tgJ-g!1nOy$qPFj3N(zd|rQ!z0mkK z!Ktd6ie5%zX7!5pnficVH}y+Pa@Nkn&o4A{@BGp4Z1l2nqfb{_TUoW=`sU3y4(VM{ zpnj8eGp@|lutUgZAPy+#HjjpM)=$Pap{vC=VQ`c&Md&o}P=o3@4L2`;H(!6?Y2xXJ z4b1_vdr7>-!Vn2x0OGSCo*~K&MiL$M6jAN#VRjrbAy3dZTcA$`*fB(Q9Nio|o$Zjf z3{ZCz^u-o7N-1%(5&vQfh=jrcK}NvS5)E!A_-7`-mx`pHjMD+05Wqa);sUl2(fvX6 z^%mq^zwr84Vqk;sj2!0e?e2xRK`}9LW4N5g(GC?%1ItyOKQspGN3ZRrFPrS{ z>0@-^waevWdjsAU-p{#z_b_|+!qS>!pYIQ}+`Z+Iseyt1!11k`G90FnlEya?id{P{ zX18)84RxP6bH=7t_T#k%otf+5<(_f(RkSbvub#aoFSX`W2rk@7xU*{A?YgV0-cOEC zNPAHI=oX_x^5a8i^Dh+3UcQ;wKe73Oo#&pIO)qmkB&zc1b$l5!?4@8^>cB5v^F2Bk z4SN5^e{jIDsLk6%HBoW%X^hV^FZbuL#!j{3j5%a?$;LZr;FG=E##}rw(*9EXHrfr^ zxWoQNoybFyc^p>H3-`}u-7d;HY&`!QC8kZlbe<)pBBae-v(r_NR}Nu)oEg&RK(FlJ zYf%YDo%AwwtTNfrcT7i?RCg6AkQ9+-zWTm3H_mT6Z99ZC<_19H+@D^hx1SMr_IQo*=YO=B2FXE@$RGdy}}t zmPIcTUEQSXG1RcebMK?Ok507Cx$Zf1RI*+I0_iP@#%vA4K87@Qg0+5 ztZP!9pl7N3u!)xaorfnaD{h*moxjp%RI}}Q`MMiuD_bmUGPrxGd&iesntk$G6n>~o zOrbd>G_ULuv+vA`Ag4}6g+_b#EVq0X_Q8Loq~+b5+}qx(hn!8KiBDE$?q}=j?dvt? z;kdx;?Gx^A4~|LLm#25y)L~+;EQPewZGMY_BiT|d-rywqm3B{?t=-ICE{o>AXs1J# zic4GfNMKI5AUQTe_&9i5>q(xYhV|NZcjryVYv~cqFSWVja;gCF-hw9KtJVYK<- z{OZK#QyBTOlDy%m^mm!ezE#&hd`YY*(LI{|q`=#w7FBv!|Qor{O6X$brQ=Yv`50e>9 z57u5!GEQt?eRgMhxcL`Ttz9KfY1-4xich8tJFsMCOT!ZL^D`+ux+^bpqEn|E3b}(ue*{U)rx`$X4+0Lr-@HG>u-s@LuKk8QY@c?gN zx3)7n@6)+{??$*Nc(q~MFa55%nz!)D;BHG{81f#@bXvMJMR8>1rK`-;r;%A_`%(@2 zbYedk#SAQ`wcZhEm9QXt=cS1FAnRv?`<6RbxA)!I^A(A)W9YK;8$ZkmnzQDrc8Dlv za|-L|d#ZC+qs&fLP0em73iO_jFCW$}?QZ_yyIXE`@>}og9XMu8;L^}JS04_1#Xjk` zwLElX|1S2G&xZW0OBBvN;Kz8LxP4u%=Wx*G>G=KjtN6XRw%X`nG zuC17z?=y=jOs3U1lbOlqR+YQ8+SKovORedI-K2qMpSXOzUb?_Jv0&T7ZPO!5L=`7U z58T%_dvWBWc3I~Wo4*xS1TGj?-7fU;^bLsvuaYQ=gaAW>+B)aDn5t#Z?oroWdBHok zM}9ifb+2rzthskH=`wok;!T3MMDvf%$v329r?TeT>Mrk9J+kw<{Syu)&rbfZM{)hY zjggmfpNAAqcS=ouaAe9{vm4!M%U0Pf-ud8g04+fg3eKg_u-YyAu6*J(Fi3f2TodA4$VO7WoL0{XGsag$s>rN_OC*IBSL zA#!(}xanZ0YVi~w-~3wZs#!;$$0U9{(e`)^f1jdTKVf)GWZ8+&$7X+J=YL&#=2^7S z;l3?Ll~vvr4iJ}odX{%;>0h57oUHv;J9$pHk6V73(T?NUsau_w1RNBWoDZ-wqsGrJ z{={-yJ%A~>Gyk@%EcD9l{Sj4bM;dl~pLfJEU`w9Ukvp~nqVk>`zj=M9PmCf{JL6OM z`a}Ee*6)e`=2laEBK7i@_3V^aF^?G0hqbPzw3%NQ$0?STJPNW|HS5`5BBP+gS$^im z?~J7z$GATHx~U1cVUQb48mD1N#O7)O!ZnMANgrXJtv+GZ9A*@qwl)MAh2P3RqwpGm zG7P7tpCBi41)^c<3xE6j(4q)_TwqbOG%SS%A#K10>sJpa3hGn^Cso!DLx;jr>LEnY zboBtDD1L|q{KG6Kh;AdQH3jB188S_=i0+a#p z3uSb}{~E-BY07urpl@goyK(D`hUccR&OI~+c`_iw{?b!+26fgovk*lOJng@PkF*HBpfegpHJu1rdCB8$uvPeuRo705KVPtQ5X48m176 z5VVLBi|Pw?WI?@OfE$ZET%wTi#C((tfIb+!y{`H|iXsGp6tpDr)d0r;k;;(baw(55 zh~P;l0%sf$*OKgvMx%7ICwro-^5YA^)9bJe{wM%23|{&Wf@qhB`;0_DmZ2$=kRKo} zELhemq!RE8gB+re0_U8NIPk#&B9KfJh=X}j@Wmmk5Qj)2<51!xQhulaG*~DGd}Y(f zB1xDqgeMY94ld=!xLTLKGr|APxs6Mk#nwcmoFf8qO1i zqBYb5Wh5$>Mz%#1gKUe|W{XiaTSS$}wyLJvA_`_}PadwU-X1M%j~2Ga6t-8Dazyhu zqIn!Kc^p-F?7?HVu4r{`Xm&R=yBj9ETYUyqsR)HgE{qh#k=;D2z2pf2ydn(xgWC}VLS%4N6U-DBbjVdSO(P@f6(|rzH|!2NfG>d@^aGV41Q+DKYuLXR z3>rb~&$A0|KmK$;-HJ~hV6vGba8P1Co zfE}nXg;YSclS(2%cwptHqo<3bhiz!6P$UG(1x%_t*-asbrO2LC-n z$#6+Tgg`7ep-~#3NOj6`#FSwYejI?pssRFTF<&5UV8#fENF<37@EyQI#SlCZC0^|l zAp?mM?aq_Jz8o12Fv6W$44X73!5!cjsSsMpdbY4kY&j-eu8BR@#FlEp84fVf0AVAf zya*smz!<BImVw3);~`#aPs zA|GK5=mh#Z>7X*yml&x`)rvu|Anf8EC~NVuMpDuJZ}no}jasztA_?lnKq?yd8%eG2 zN1!S$h6_q4$ctfv5=sYe;5Lv|4<&I?9w1l=>H+biJV4U%S^^U>3;+)g3`5jNgQ*zC5E}+FV0fgFIG6{+F${Gu1;aNYb###7 z`;3FB7|s!?gBdWaL(C!op{zoU9pq5`WB2s{Kos(XgGaqN90ah`KLtQEpdbm;{Q5qH z;Ka0835J+4%~dKCk{#1Z%s_z%kcw%estm-1X&SB!Ov9*yS{DEfMxG3)?^g{S4kln! zp&E5@Svd>;2RCY1vN5YD#{F$@8A=|g9asmRACs5!N4hYDk3GuuVm4MO$01bc0|X zw3(XCBuK_I79|r_ifJec1c(@z9*+V6OX}Cknhg|4#&mPM5ddiz@e=wdNX7_RlK}uZ zFj|k*RL}tAl(Js2ut~5PC_gX~fNTbF1yo}Kwg7A*$_#7)fCf1%SJr?GssM%&IiW>} zc$nYi2bzpw3DNFAI+p{!_|8Wj0<2P^bSe39#!BNWk}r#_>T} zwq66NRC78LqmeXo8WXJ5zSl2cm;EQnfz)BT2l)CfEy&FJpQNR6tU;#o|0Fq$VU0#h z%EDRF#%YbRtkQ1b#6)G7({OTvfCgKJEL;ejVf}JXMoTIw!KllR=+J0W{{S5tP3s?^ zL!*UNO8OVZTPm$y!<4eYX$jQd?{{X6ruH||Vn(HyLq9Cl$g4&TjbqNisH{e_izf$Z z%g+uzYMe0xs>=8qYG5*k8jV&Lt1ykB1=oGd=&(^3w%|lWXEhLkuHA{<7!-$lXQ;X~ zh7PrX$c)OtQ=%pyn2e8g_DE29@EvOu=gkx+n3sgfwc-s!j>job`Q5 zKq8hU8Yit-HTfSX`M#3ir1C=(+ZYY`Wlhy=VE>e+YBsZfKvOl_SPUWmgMNVE3XRZI z&F1y@Q1X+Ss?nx`fDsMGtWn%Rt)Oz?`)-%Tb{1r-k6<~JW)U^0jhm$@%PPrGGodgU zW9o7C6xn9{r-{K;jvHwJX&6g}Y;pd-Ax5KF#g2N76cVChN)cfNg69a99~#Z7Qrf>T zQ&SdIQlYLGcuMfH(P&(i2>)eTG@DkOp>LdUlv6y7jQPR(f{JX8|3GaUXH@E2f}sW( zKQZ69E`?PY%_jDbu|}i0{k>ZAv#dc*9DX3C#%YbR9p977-*hMBl;fWyrg6I%=-~>H z9?Y=VNY-Gj-H&O(XfSe+^G{KN8wl~@!IGfa?*0j8Xtuh)hmxOUhDKwnRQ=yHUBQ_% zyj*aj5ONGhP!6T_Mu}<6QbXB{`X1cK#VB(2N2KQWNC)l}(7roOfQeX*)o5q2Yry}Z z`!mDYWqJ-64d$;{QUl~49^-cx{DlI z6Ik=FPPCDu@jpz$zhP#-FB2d!tVlF&87PJPn{5716QglT`>&n|qCO4;1^Gj^1o5rV zKn!NwY20!HDX5&pes{>hDhT4q@rOy!eAxA?Ou%oz{@m0EaY`X@0Xyn8N)C7u8nv^A z_`m!uC5@RCsT0zOZE?iS=C={@t2@DnM-PDty!~pFXp}{jo#b!FH@q!HT!@IY{HmV* z!iFQ_u0*8Z4-NN-hZK>Te~}-U&?Si5kS2$tMoyROdHGZ7p*HP1Ho&~Ky%8ke7403!~2KOpAcl$FL=>u=;u zV`Zgr;`$ruX_TxqPF(-hg$?3sNl=&HL_(vs^^nUmHNL?y#} zPtYEDkioqtxT^v0Js}>$s$7_b3W5j4s&WT}i~H{zVr=0CyXUUDZRJUJ2KRlixf;yT zaESu=lh(&?a_5B!WMn5HUlu?G5sd($B&1Q`f+O;Qx>5&XF=4h96~S_F1&HkH;!JiH zh{NRJBs!Z7raKVmB9Qa=JUP$CMkWW3iAA*4u^JK!{98e!cv3L9+$pv;ew};5m?Y#| z8~ZR_C@zu11>r)6Nm7C5Bv-GHNfSf3eB&WDI##h3u@R9G02?VbLL`=1#9ABk_>y3O z1^69;$;Koki+rNBG2NVM#->n>ZFEQ^k`=gRYT;owqP`sXvNjHv%Ofqwfk>a=BbGxTQp+nSmT;vN*Av7i%V#nV?9Nc$7h|z@;P-#LEi?9=z7Z#;_vQpLzm$ zk*bQsGINAjbMVFhITl=GqXILj!VC&p0iXr&00zFGcHqS|8ybbeG^23MXe=)(%YsU^ zV9*Cqs1_886)cX;*-$frV>t3+n`Rtz91cuQH5^KrX~v>PNxgiLylQxm8YEILi9}@M zCGbT_#{%o~Tah6vF|0-82DzdJ{}IdiAu5hXDx@Mru>25kFIxa_)X4zXsd%pQLo9%o zbp%gt!;6d*flHUjEx<^As1>;(3DYV7l*7A#N&-=lBV^i&q71VtX_|StOnkQ-`v6=~kB!@u7l}I&^>nVuBLmN12 zGfE;0SMW%7=71uhOhy8ikx3&3Ql1dlHd}L&k1!0F7}?(uiN}s`RE-q0^lwm4&~sf} zR2r($CPYNw6%;9AVJ89c3xEbY+Sw=+LcRr$$76<4m~69P4u@vOV1zQwf+;M98G}s? z4WV&qAq-|P(%W2Iuw^ldjN)|^%j7(8>r{!C63V9t*c_%AgD>ElF}T4zGp>M2HDl4i zM3%#3a6zyHUsAF>FW;qTamS*!}gV1*h3mZBOWpHVT7%pvO=Fhzz7B2zmHIH9L- zX)Lfy0IoZOHC%rRrT+jBp(J<$xWQ`rH#6%2Wb~f9>Ceq^2axMmR;FMAG=Qv}5t(9V zL<7iRiK&4wWJ!k-hTLy9{qEWX^SXDeR1n%$hXOVmSm1~14~fNOf+J{{1pjd9Oc?P1 z{vnA~Fb=%X$1eusO96rSPFO;*vC-k6?o1b9>n1C z(J2%dQ$P*IfWb&`Fg61OBUguUC~%(|mybi?!u=>b46Fduc@HE>-~pGxVyn}~<+9*m z2^JrX!el_#K^zRkQedmmLIZ&f;MHukd@Ojy9uH&C)cHaKcjcjHlUhDDu@2BQLOwQf zu^nHQO@|ST)L?8Fb^`~aF__RD9S;Lx{nXn=V=-XpBYZvI{lMn~^r`cd z#-_n=QTTjZBw&adjG?YqG#Zx;gPW-3_#_Nv1`Q35_TFgk>M430XlfF!8|nmJS$js{mRFb4#lGQgUckdMWL zH)!!?xojA!Mh(U#@QO*H!;M#5J|=^!-hV+)AlMfGV-R=+!Z5-}DtLTMj(T6EF*!tD zF*$6w!;LS?;i~s(8jAt~`>Ew)QD}s|%A&wXmw0?E3WGo&fD!Z=44d%C7e@<=4qri4 zhtY}k(it#Rl3H07j2WW_V?&<i(s3;sH#5B(16+#<;J4G zC`|ZzS;(6MYA`yHJ{FVEr&%n(X#zerJXKM{2aKIMj182H0HYH67K=@X4%>KqZ17S6 z0R|dOfB~aJfN9Vn&;<#)%R$16;Opf8E31x=!yvW;3|j>Ga@a8Tj~YG>u^k*Pu^n6_ zDi6Lan7~e%ed;;{dNhH5aOft`48}ZSSq^-^ z1WzAWRH(~?4Q4t-7!5}LRV&LN@`c8PPDX0^SVX?iI0W5g(=^D9j)Wn@ z(+PGG^dce;=wRR{lm(Mk0*p9UVKXR1Su!Z<>kq&vB>EMeW`+j&f@(4C00DJ{B7qc~ lYFd#!g_A%WTNb>|tONGdrE+wIM5TiDQQyAyZX??2{2!srs2TtO literal 0 HcmV?d00001 diff --git a/amaroK/doc/Icme05_Alonso.pdf b/amaroK/doc/Icme05_Alonso.pdf new file mode 100755 index 0000000000000000000000000000000000000000..295ff945bec867ddd2fa2ff1f2f8664f60005699 GIT binary patch literal 619890 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

    2. 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%0DIW8WeDI|0*#a9-^Wj<<}1 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≈t-(#R?W%@MT~0+#+rCcW%DUZ!y*2jb3mhM+ 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

    Cliquer ici pour un nouvel essai