Boost logo

Boost-Commit :

From: amduser29_at_[hidden]
Date: 2008-05-29 13:54:42


Author: amduser
Date: 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
New Revision: 45916
URL: http://svn.boost.org/trac/boost/changeset/45916

Log:
Initial import of BGL-Python bindings. Previous history can be found at
https://svn.osl.iu.edu/svn/projects_viz/bgl-python.

Added:
   sandbox/SOC/2008/BGL_Python/Jamfile (contents, props changed)
   sandbox/SOC/2008/BGL_Python/Jamfile.v2 (contents, props changed)
   sandbox/SOC/2008/BGL_Python/Jamrules (contents, props changed)
   sandbox/SOC/2008/BGL_Python/LICENSE_1_0.txt (contents, props changed)
   sandbox/SOC/2008/BGL_Python/README (contents, props changed)
   sandbox/SOC/2008/BGL_Python/TODO (contents, props changed)
   sandbox/SOC/2008/BGL_Python/bindist/
   sandbox/SOC/2008/BGL_Python/bindist/setup.py (contents, props changed)
   sandbox/SOC/2008/BGL_Python/boost/
   sandbox/SOC/2008/BGL_Python/boost/graph/
   sandbox/SOC/2008/BGL_Python/boost/graph/circle_layout.hpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/boost/graph/cuthill_mckee_ordering.hpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/boost/graph/detail/
   sandbox/SOC/2008/BGL_Python/boost/graph/detail/sparse_ordering.hpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/boost/graph/filtered_graph.hpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/boost/graph/fruchterman_reingold.hpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/boost/graph/kamada_kawai_spring_layout.hpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/boost/graph/king_ordering.hpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/boost/graph/point_traits.hpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/boost/graph/python/
   sandbox/SOC/2008/BGL_Python/boost/graph/python/astar_events.hpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/boost/graph/python/bellman_ford_events.hpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/boost/graph/python/bfs_events.hpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/boost/graph/python/breadth_first_search.hpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/boost/graph/python/connected_components.hpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/boost/graph/python/dfs_events.hpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/boost/graph/python/dijkstra_events.hpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/boost/graph/python/dijkstra_shortest_paths.hpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/boost/graph/python/distributed/
   sandbox/SOC/2008/BGL_Python/boost/graph/python/distributed/boman_et_al_graph_coloring.hpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/boost/graph/python/distributed/breadth_first_search.hpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/boost/graph/python/distributed/dehne_gotz_min_spanning_tree.hpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/boost/graph/python/distributed/dijkstra_shortest_paths.hpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/boost/graph/python/distributed/dinic_max_flow.hpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/boost/graph/python/distributed/graphviz.hpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/boost/graph/python/distributed/metis.hpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/boost/graph/python/dynamic_properties.hpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/boost/graph/python/generators.hpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/boost/graph/python/graph.hpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/boost/graph/python/iterator.hpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/boost/graph/python/list_append_iterator.hpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/boost/graph/python/page_rank.hpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/boost/graph/python/point2d.hpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/boost/graph/python/point3d.hpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/boost/graph/python/prim_minimum_spanning_tree.hpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/boost/graph/python/properties.hpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/boost/graph/python/property_map.hpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/boost/graph/python/python_property_map.hpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/boost/graph/python/queue.hpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/boost/graph/python/resizable_property_map.hpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/boost/graph/python/strong_components.hpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/boost/graph/python/visitor.hpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/boost/graph/random_layout.hpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/boost/graph/small_world_generator.hpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/boost/graph/sparse_spectrum.hpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/boost/graph/spectral_embedding_3d_layout.hpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/boost/graph/spectral_embedding_layout.hpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/boost/graph/spectrum.hpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/boost/vector_property_map.hpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/build/
   sandbox/SOC/2008/BGL_Python/build/Jamfile (contents, props changed)
   sandbox/SOC/2008/BGL_Python/build/Jamrules (contents, props changed)
   sandbox/SOC/2008/BGL_Python/build/distributed/
   sandbox/SOC/2008/BGL_Python/build/distributed/Jamfile (contents, props changed)
   sandbox/SOC/2008/BGL_Python/build/distributed/Jamrules (contents, props changed)
   sandbox/SOC/2008/BGL_Python/build/distributed/mpi.jam (contents, props changed)
   sandbox/SOC/2008/BGL_Python/example/
   sandbox/SOC/2008/BGL_Python/example/bellman_ford.py (contents, props changed)
   sandbox/SOC/2008/BGL_Python/example/compute_mst.py (contents, props changed)
   sandbox/SOC/2008/BGL_Python/example/data/
   sandbox/SOC/2008/BGL_Python/example/data/attributes.graphml (contents, props changed)
   sandbox/SOC/2008/BGL_Python/example/data/simple.graphml (contents, props changed)
   sandbox/SOC/2008/BGL_Python/example/dijkstra.py (contents, props changed)
   sandbox/SOC/2008/BGL_Python/example/hide.py (contents, props changed)
   sandbox/SOC/2008/BGL_Python/example/mst.dot (contents, props changed)
   sandbox/SOC/2008/BGL_Python/project-root.jam (contents, props changed)
   sandbox/SOC/2008/BGL_Python/python/
   sandbox/SOC/2008/BGL_Python/python/boost/
   sandbox/SOC/2008/BGL_Python/python/boost/__init__.py (contents, props changed)
   sandbox/SOC/2008/BGL_Python/python/boost/graph/
   sandbox/SOC/2008/BGL_Python/python/boost/graph/__init__.py (contents, props changed)
   sandbox/SOC/2008/BGL_Python/python/boost/graph/astar_visitor.py (contents, props changed)
   sandbox/SOC/2008/BGL_Python/python/boost/graph/bellman_ford_visitor.py (contents, props changed)
   sandbox/SOC/2008/BGL_Python/python/boost/graph/bfs_visitor.py (contents, props changed)
   sandbox/SOC/2008/BGL_Python/python/boost/graph/dfs_visitor.py (contents, props changed)
   sandbox/SOC/2008/BGL_Python/python/boost/graph/dijkstra_visitor.py (contents, props changed)
   sandbox/SOC/2008/BGL_Python/python/boost/graph/distributed/
   sandbox/SOC/2008/BGL_Python/python/boost/graph/distributed/__init__.py (contents, props changed)
   sandbox/SOC/2008/BGL_Python/python/boost/graph/docstring.py (contents, props changed)
   sandbox/SOC/2008/BGL_Python/python/boost/graph/show.py (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/
   sandbox/SOC/2008/BGL_Python/src/astar_search.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/basic_graph.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/basic_graph.hpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/bellman_ford_shortest_paths.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/betweenness_centrality.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/biconnected_components.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/breadth_first_search.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/circle_layout.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/connected_components.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/cuthill_mckee_ordering.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/dag_shortest_paths.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/depth_first_search.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/dijkstra_shortest_paths.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/directed_properties.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/distributed/
   sandbox/SOC/2008/BGL_Python/src/distributed/boman_et_al_graph_coloring.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/distributed/breadth_first_search.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/distributed/config.hpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/distributed/connected_components.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/distributed/dehne_gotz_min_spanning_tree.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/distributed/dijkstra_shortest_paths.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/distributed/dinic_max_flow.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/distributed/exports.hpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/distributed/fruchterman_reingold.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/distributed/generators.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/distributed/graph_types.hpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/distributed/graphs.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/distributed/graphs.hpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/distributed/graphviz.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/distributed/metis.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/distributed/module.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/distributed/mpi.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/distributed/page_rank.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/distributed/properties.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/distributed/strong_components.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/exception.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/exception.hpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/exports.hpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/fruchterman_reingold.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/generators.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/graph_types.hpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/graphdocs.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/graphml.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/graphs.hpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/graphviz.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/isomorphism.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/kamada_kawai_spring_layout.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/king_ordering.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/kruskal_min_spanning_tree.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/minimum_degree_ordering.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/module.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/page_rank.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/pickle.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/prim_minimum_spanning_tree.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/properties.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/sequential_vertex_coloring.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/sloan_ordering.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/sparse_spectrum.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/spectral_embedding_3d_layout.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/spectral_embedding_layout.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/spectrum.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/strong_components.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/support.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/topological_sort.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/src/transitive_closure.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/test/
   sandbox/SOC/2008/BGL_Python/test/distributed/
   sandbox/SOC/2008/BGL_Python/test/distributed/boman_et_al_graph_coloring.py (contents, props changed)
   sandbox/SOC/2008/BGL_Python/test/distributed/breadth_first_search.py (contents, props changed)
   sandbox/SOC/2008/BGL_Python/test/distributed/connected_components.py (contents, props changed)
   sandbox/SOC/2008/BGL_Python/test/distributed/data/
   sandbox/SOC/2008/BGL_Python/test/distributed/data/4elt.graph (contents, props changed)
   sandbox/SOC/2008/BGL_Python/test/distributed/data/4elt.graph.part.2 (contents, props changed)
   sandbox/SOC/2008/BGL_Python/test/distributed/data/README.txt (contents, props changed)
   sandbox/SOC/2008/BGL_Python/test/distributed/dehne_gotz_min_spanning_tree.py (contents, props changed)
   sandbox/SOC/2008/BGL_Python/test/distributed/dijkstra_shortest_paths.py (contents, props changed)
   sandbox/SOC/2008/BGL_Python/test/distributed/dinic_max_flow.py (contents, props changed)
   sandbox/SOC/2008/BGL_Python/test/distributed/fruchterman_reingold.py (contents, props changed)
   sandbox/SOC/2008/BGL_Python/test/distributed/graphviz.py (contents, props changed)
   sandbox/SOC/2008/BGL_Python/test/distributed/metis.py (contents, props changed)
   sandbox/SOC/2008/BGL_Python/test/distributed/page_rank.py (contents, props changed)
   sandbox/SOC/2008/BGL_Python/test/distributed/strong_components.py (contents, props changed)
   sandbox/SOC/2008/BGL_Python/test/exceptions.py (contents, props changed)
   sandbox/SOC/2008/BGL_Python/test/graphml_test.py (contents, props changed)
   sandbox/SOC/2008/BGL_Python/test/property_convert.py (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/COPYING (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/Jamfile (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/Jamfile.v2 (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/MANIFEST (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/Makefile.in (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/README (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/amiga/
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/amiga/Makefile (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/amiga/README.txt (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/amiga/expat.xml (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/amiga/expat_lib.c (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/amiga/expat_vectors.c (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/amiga/include/
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/amiga/include/inline4/
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/amiga/include/inline4/expat.h (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/amiga/include/interfaces/
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/amiga/include/interfaces/expat.h (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/amiga/include/libraries/
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/amiga/include/libraries/expat.h (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/amiga/include/proto/
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/amiga/include/proto/expat.h (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/amiga/launch.c (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/amiga/stdlib.c (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/README.txt (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/all_projects.bpg (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/elements.bpf (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/elements.bpr (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/elements.mak (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/expat.bpf (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/expat.bpr (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/expat.mak (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/expat_static.bpf (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/expat_static.bpr (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/expat_static.mak (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/expatw.bpf (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/expatw.bpr (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/expatw.mak (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/expatw_static.bpf (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/expatw_static.bpr (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/expatw_static.mak (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/libexpat_mtd.def (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/libexpatw_mtd.def (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/makefile.mak (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/outline.bpf (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/outline.bpr (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/outline.mak (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/setup.bat (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/xmlwf.bpf (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/xmlwf.bpr (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/xmlwf.mak (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/configure (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/configure.in (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/conftools/
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/conftools/PrintPath (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/conftools/ac_c_bigendian_cross.m4 (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/conftools/config.guess (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/conftools/config.sub (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/conftools/expat.m4 (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/conftools/get-version.sh (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/conftools/install-sh (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/conftools/libtool.m4 (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/conftools/ltmain.sh (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/conftools/mkinstalldirs (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/doc/
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/doc/expat.png (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/doc/reference.html (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/doc/style.css (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/doc/valid-xhtml10.png (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/doc/xmlwf.1 (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/doc/xmlwf.sgml (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/examples/
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/examples/elements.c (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/examples/elements.dsp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/examples/outline.c (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/examples/outline.dsp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/expat.dsw (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/expat_config.h.in (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/Makefile.MPW (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/amigaconfig.h (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/ascii.h (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/asciitab.h (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/expat.dsp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/expat.h (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/expat_external.h (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/expat_static.dsp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/expatw.dsp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/expatw_static.dsp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/iasciitab.h (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/internal.h (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/latin1tab.h (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/libexpat.def (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/libexpatw.def (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/macconfig.h (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/nametab.h (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/utf8tab.h (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/winconfig.h (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/xmlparse.c (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/xmlparse.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/xmlrole.c (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/xmlrole.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/xmlrole.h (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/xmltok.c (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/xmltok.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/xmltok.h (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/xmltok_impl.c (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/xmltok_impl.h (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/xmltok_ns.c (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/tests/
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/tests/README.txt (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/tests/benchmark/
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/tests/benchmark/README.txt (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/tests/benchmark/benchmark.c (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/tests/benchmark/benchmark.dsp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/tests/benchmark/benchmark.dsw (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/tests/chardata.c (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/tests/chardata.h (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/tests/minicheck.c (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/tests/minicheck.h (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/tests/runtests.c (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/tests/runtestspp.cpp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/tests/xmltest.sh (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/vms/
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/vms/README.vms (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/vms/descrip.mms (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/vms/expat_config.h (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/win32/
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/win32/MANIFEST.txt (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/win32/README.txt (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/win32/expat.iss (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/xmlwf/
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/xmlwf/codepage.c (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/xmlwf/codepage.h (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/xmlwf/ct.c (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/xmlwf/filemap.h (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/xmlwf/readfilemap.c (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/xmlwf/unixfilemap.c (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/xmlwf/win32filemap.c (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/xmlwf/xmlfile.c (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/xmlwf/xmlfile.h (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/xmlwf/xmlmime.c (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/xmlwf/xmlmime.h (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/xmlwf/xmltchar.h (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/xmlwf/xmlurl.h (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/xmlwf/xmlwf.c (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/xmlwf/xmlwf.dsp (contents, props changed)
   sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/xmlwf/xmlwin32url.cxx (contents, props changed)

Added: sandbox/SOC/2008/BGL_Python/Jamfile
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/Jamfile 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,21 @@
+# Copyright 2005 The Trustees of Indiana University.
+
+# Use, modification and distribution is subject to the Boost Software
+# License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt)
+
+# Authors: Douglas Gregor
+# Andrew Lumsdaine
+
+# This file builds the Python bindings for the Boost Graph Library and
+# the Parallel BGL.
+
+project-root ;
+
+# Only build release-mode binaries, unless the user explicitly
+# requests otherwise
+BUILD ?= release ;
+
+subinclude build ;
+subinclude build/distributed ;
+

Added: sandbox/SOC/2008/BGL_Python/Jamfile.v2
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/Jamfile.v2 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,304 @@
+# Copyright (C) 2005, 2006 The Trustees of Indiana University.
+
+# Use, modification and distribution is subject to the Boost Software
+# License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt)
+
+# Authors: Douglas Gregor
+# Andrew Lumsdaine
+
+# This file builds the Python bindings for the Boost Graph Library.
+
+import modules ;
+import package ;
+import path ;
+import python ;
+import stage ;
+import os ;
+
+if [ python.configured ]
+{
+
+BOOST_ROOT = [ modules.peek : BOOST_ROOT ] ;
+
+project bgl-python
+ : requirements <include>. <include>$(BOOST_ROOT)
+ : usage-requirements <include>. <include>$(BOOST_ROOT)
+ : build-dir bin.v2
+ : default-build release
+ : source-location src
+ ;
+
+# Pull in the Boost.Python library
+use-project /boost/python : $(BOOST_ROOT)/libs/python/build ;
+
+# Pull in the Boost.Graph library
+use-project /boost/graph : $(BOOST_ROOT)/libs/graph/build ;
+
+# Pull in the expat library
+use-project /bgl-python/expat : ./vendor/expat-2.0.0 ;
+
+# Python source files that are part of the BGL-Python package.
+BOOST_GRAPH_PYTHON_SOURCES =
+ astar_visitor
+ bfs_visitor
+ dijkstra_visitor
+ dfs_visitor
+ docstring
+ __init__
+ show
+ bellman_ford_visitor
+ ;
+
+# Small support utilities.
+python-extension _support
+ : # Sources
+ support.cpp
+ : # Requirements
+ <library>/boost/python//boost_python
+ ;
+
+EXTRA_SRCS = ;
+EXTRA_REQUIREMENTS = <define>XML_STATIC ;
+
+if $(IETL_INCLUDE) {
+ # Use the Iterative Eigensolver Template Library
+ EXTRA_SRCS = sparse_spectrum.cpp ;
+ EXTRA_REQUIREMENTS = <include>$(IETL_INCLUDE)
+ <define>INCLUDE_SPARSE_SPECTRUM ;
+}
+else {
+ EXTRA_SRCS = ;
+ EXTRA_REQUIREMENTS = ;
+}
+
+if [ os.name ] = MACOSX {
+ # Use vecLib on Mac OS X for the spectral embedding layouts
+ EXTRA_SRCS += spectrum.cpp
+ spectral_embedding_3d_layout.cpp
+ spectral_embedding_layout.cpp ;
+ EXTRA_REQUIREMENTS +=
+ <framework>/System/Library/Frameworks/vecLib.framework/vecLib
+ <define>INCLUDE_SPECTRUM ;
+}
+else if $(LAPACK_PATH) {
+ # If a path to LAPACK is provided, use it to build the spectral
+ # embedding layout code.
+ EXTRA_SRCS += spectrum.cpp
+ spectral_embedding_3d_layout.cpp
+ spectral_embedding_layout.cpp ;
+
+ EXTRA_REQUIREMENTS += <find-library>libclapack
+ <library-path>$(LAPACK_PATH)
+ <define>INCLUDE_SPECTRUM ;
+}
+
+# The actual Python extension module
+python-extension _graph
+ : # Sources
+ module.cpp
+ exception.cpp
+ # Graph types
+ basic_graph.cpp
+ graphdocs.cpp
+ properties.cpp
+ directed_properties.cpp
+ # Algorithms
+ astar_search.cpp
+ bellman_ford_shortest_paths.cpp
+ betweenness_centrality.cpp
+ biconnected_components.cpp
+ breadth_first_search.cpp
+ circle_layout.cpp
+ connected_components.cpp
+ cuthill_mckee_ordering.cpp
+ dag_shortest_paths.cpp
+ depth_first_search.cpp
+ dijkstra_shortest_paths.cpp
+ fruchterman_reingold.cpp
+ isomorphism.cpp
+ kamada_kawai_spring_layout.cpp
+ king_ordering.cpp
+ kruskal_min_spanning_tree.cpp
+ minimum_degree_ordering.cpp
+ page_rank.cpp
+ prim_minimum_spanning_tree.cpp
+ sequential_vertex_coloring.cpp
+ sloan_ordering.cpp
+ strong_components.cpp
+ topological_sort.cpp
+ transitive_closure.cpp
+ # Graph generators
+ generators.cpp
+ # Graph I/O
+ graphviz.cpp
+ graphml.cpp
+ pickle.cpp
+ # Everything else
+ $(EXTRA_SRCS)
+ : # Requirements
+ <library>/boost/python//boost_python
+ <library>/boost/graph//boost_graph
+ <library>/bgl-python/expat//expat
+ $(EXTRA_REQUIREMENTS)
+ ;
+
+# Strip any end-of-line characters off the given string and return the
+# result.
+local rule strip-eol ( string )
+{
+ local match = [ MATCH "^(([A-Za-z0-9~`\.!@#$%^&*()_+={};:'\",.<>/?\\| -]|[|])*
+).*$" : $(string) ] ;
+
+ if $(match)
+ {
+ return $(match[1]) ;
+ }
+ else
+ {
+ return $(string) ;
+ }
+}
+
+if install in [ modules.peek : ARGV ]
+{
+ exec-prefix = [ MATCH "^--exec-prefix=(.*)" : [ modules.peek : ARGV ] ] ;
+ home = [ MATCH "^--home=(.*)" : [ modules.peek : ARGV ] ] ;
+ libdir = [ MATCH "^--libdir=(.*)" : [ modules.peek : ARGV ] ] ;
+ pythonlibdir = [ MATCH "^--pythonlibdir=(.*)" : [ modules.peek : ARGV ] ] ;
+
+ if $(home)
+ {
+ # Only one of --home or --exec-prefix can be provided
+ if $(exec-prefix)
+ {
+ ECHO "ERROR: Cannot specify both --home and --exec-prefix" ;
+ ECHO " --home is for home-directory installations" ;
+ ECHO " --exec-prefix is for system-wide installations" ;
+ EXIT -1 ;
+ }
+
+ # Install libraries in $(home)/lib
+ if ! $(libdir)
+ {
+ libdir = $(home)/lib ;
+ }
+
+ # Install Python module in $(home)/lib/python
+ if ! $(pythonlibdir)
+ {
+ pythonlibdir = $(home)/lib/python ;
+ }
+ }
+ else
+ {
+ # If no --home or --exec-prefix given. Ask Python
+ if ! $(exec-prefix)
+ {
+ local PYTHON = [ python.get-python-interpreter ] ;
+ exec-prefix
+ = [ strip-eol [ SHELL "$(PYTHON:G=) -c \"import sys; print sys.exec_prefix\"" ] ] ;
+ }
+
+ # Non-pure Python modules go into the exec-prefix's site-packages
+ if ! $(pythonlibdir)
+ {
+ local PYTHON_VERSION = [ python.get-python-version ] ;
+ pythonlibdir = $(exec-prefix)/lib/python$(PYTHON_VERSION)/site-packages ;
+ }
+
+ # Libraries go into $(exec-prefix)/lib on Unix
+ # /usr/local/lib on Mac.
+ if ! $(libdir)
+ {
+ if [ os.name ] = MACOSX
+ {
+ # We do this because we need the libraries to be found in
+ # DYLB_FALLBACK_LIBRARY_PATH, which includes /usr/local/lib. Ugh.
+ libdir = /usr/local/lib ;
+ }
+ else
+ {
+ libdir = $(exec-prefix)/lib ;
+ }
+ }
+ }
+
+ HOME = [ modules.peek : HOME ] ;
+ if $(HOME)
+ {
+ # Replace any occurrences of "~" in libdir with $(HOME)
+ local tilde = [ MATCH "^(.*)~(.*)$" : $(libdir) ] ;
+ while $(tilde)
+ {
+ libdir = $(tilde[1])$(HOME)$(tilde[2]) ;
+ tilde = [ MATCH "^(.*)~(.*)$" : $(libdir) ] ;
+ }
+
+ # Replace any occurrences of "~" in pythonlibdir with $(HOME)
+ tilde = [ MATCH "^(.*)~(.*)$" : $(pythonlibdir) ] ;
+ while $(tilde)
+ {
+ pythonlibdir = $(tilde[1])$(HOME)$(tilde[2]) ;
+ tilde = [ MATCH "^(.*)~(.*)$" : $(pythonlibdir) ] ;
+ }
+ }
+
+ # Tell the user what we're planning to do
+ if ! $(gBGL_PYTHON_INSTALL_MSG)
+ {
+ gBGL_PYTHON_INSTALL_MSG = yes ;
+ ECHO "Installing BGL support libraries in $(libdir)..." ;
+ }
+
+ # Tell the user what we're planning to do
+ if ! $(gBGL_PYTHON_PYTHON_INSTALL_MSG)
+ {
+ gBGL_PYTHON_PYTHON_INSTALL_MSG = yes ;
+ ECHO "Installing BGL Python module in $(pythonlibdir)..." ;
+ }
+
+ local BGL_PYTHON_ROOT = [ PWD ] ;
+
+ # Add a stage target that copies the __init.py__ for the boost module.
+ stages += [
+ install install-init
+ : $(BGL_PYTHON_ROOT)/python/boost/__init__.py
+ : <location>$(pythonlibdir)/boost
+ ] ;
+
+ # Add a stage target that copies the Python extension module
+ stages += [
+ install install-bgl-python
+ : /bgl-python//_support
+ /bgl-python//_graph
+ : <location>$(pythonlibdir)/boost/graph
+ <install-type>PYTHON_EXTENSION
+ ] ;
+
+ # Add a stage target that copies the Python sources
+ stages += [
+ install install-python-sources
+ : $(BGL_PYTHON_ROOT)/python/boost/graph/$(BOOST_GRAPH_PYTHON_SOURCES).py
+ : <location>$(pythonlibdir)/boost/graph
+ ] ;
+
+ # Add a stage target to copy the Boost.Python library,
+ # Boost.Graph library, and expat library
+ stages += [
+ install install-boost-python
+ : /boost/python//boost_python
+ /boost/graph//boost_graph
+ /bgl-python/expat//expat
+ : <location>$(libdir)
+ <install-type>LIB
+ ] ;
+
+ alias install : $(stages) ;
+}
+
+}
+else
+{
+ ECHO "ERROR: Python not configured: cannot build BGL-Python bindings" ;
+}

Added: sandbox/SOC/2008/BGL_Python/Jamrules
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/Jamrules 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,40 @@
+# Copyright David Abrahams 2003. See accompanying LICENSE for terms
+# and conditions of use.
+# Copyright 2005 Trustees of Indiana University
+#
+# Authors: David Abrahams
+# Douglas Gregor
+# Andrew Lumsdaine
+#
+path-global BGL_PYTHON_ROOT : [ PWD ] ;
+
+# Boost.Python configuration variables, as described in
+# http://www.boost.org/libs/python/doc/building.html#configuration.
+# Usually you don't need to set these; the defaults will work. If you
+# do set them, try to change as few of them as possible, starting with
+# the first ones.
+
+ # PYTHON_VERSION = <the two-part Major.Minor version number, e.g. 2.2> ;
+ # PYTHON_ROOT = <root directory of your Python installation, e.g. /usr> ;
+ # PYTHON_INCLUDES = <path to Python #include directories> ;
+ # PYTHON_LIB_PATH = <path to Python library object> ;
+
+# You may need to configure your compiler toolset, especially if you
+# want to build with a compiler that is not the "system default" or if
+# it is installed in a nonstandard place; see
+# http://www.boost.org/more/getting_started.html#Configuring for
+# details.
+
+# Makes a project id for the Boost library so that other Boost.Build
+# projects c an refer to it by name.
+project boost : $(BOOST_ROOT) ;
+
+# Makes a project id for the BGL-Python bindings so that other
+# Boost.Build projects can refer to it by name.
+#
+project bgl-python : $(BGL_PYTHON_ROOT) ;
+
+# Change this setting to have all your built products placed under a
+# single directory:
+#
+# ALL_LOCATE_TARGET = <root directory for all built products>

Added: sandbox/SOC/2008/BGL_Python/LICENSE_1_0.txt
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/LICENSE_1_0.txt 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,23 @@
+Boost Software License - Version 1.0 - August 17th, 2003
+
+Permission is hereby granted, free of charge, to any person or organization
+obtaining a copy of the software and accompanying documentation covered by
+this license (the "Software") to use, reproduce, display, distribute,
+execute, and transmit the Software, and to prepare derivative works of the
+Software, and to permit third-parties to whom the Software is furnished to
+do so, all subject to the following:
+
+The copyright notices in the Software and this entire statement, including
+the above license grant, this restriction and the following disclaimer,
+must be included in all copies of the Software, in whole or in part, and
+all derivative works of the Software, unless such copies or derivative
+works are solely in the form of machine-executable object code generated by
+a source language processor.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.

Added: sandbox/SOC/2008/BGL_Python/README
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/README 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,224 @@
+Boost Graph Library Python Bindings - Version 0.9.5
+===================================================
+
+Copyright (C) 2005-2007 Trustees of Indiana University
+
+Authors: Douglas Gregor <dgregor -at- osl.iu.edu>
+ Ben Martin <benjmart -at- indiana.edu>
+ Andrew Lumsdaine <lums -at- osl.iu.edu>
+
+
+This archive contains Python bindings for the Boost Graph
+Library. The Boost Graph Library is available as a part of the Boost
+libraries. Other important links:
+
+ Boost: http://www.boost.org
+ Boost Graph Library: http://www.boost.org/libs/graph/doc/
+ BGL-Python bindings: http://www.osl.iu.edu/~dgregor/bgl-python/
+
+This file contains:
+ - Build & Install instructions
+ - Getting Help
+ - License information
+ - History
+
+---------------
+Build & Install
+---------------
+
+The section describes how to build and install the BGL-Python
+bindings.
+
+
+Installing Prebuilt binaries
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Prebuild binaries might already be available for your
+platform on the BGL-Python web site at:
+
+ http://www.osl.iu.edu/~dgregor/bgl-python/
+
+To install pre-built binaries, use:
+
+ python setup.py install
+
+By default, the BGL-Python bindings will be installed into the
+appropriate Python site-packages directory (e.g.,
+/usr/lib/python2.3/site-packages). However, there are several
+alternative installation options that one can pass on the command
+line:
+
+ --home=DIR This option will install the BGL-Python module
+ into the home directory DIR, with the Python
+ module stored in DIR/lib/python and supporting
+ shared libraries stored in DIR/lib. Be sure that
+ DIR/lib/python is in your PYTHONPATH and DIR/lib
+ is in your dynamic linker's path (e.g.,
+ LD_LIBRARY_PATH or DYLD_LIBRARY_PATH).
+
+ --exec-prefix=DIR This option will change the executable prefix used
+ to install BGL-Python as a site-wide
+ package. The BGL-Python module will be placed in
+ DIR/lib/pythonVERSION/site-packages and the
+ supporting libraries will be placed in DIR/lib.
+
+ --pythonlibdir=DIR This option will force the installer to place
+ the BGL-Python module in DIR.
+
+ --libdir=DIR This option will force the installer to place
+ the BGL-Python supporting libraries in DIR.
+
+
+Prerequisites
+~~~~~~~~~~~~~
+
+ - A very modern C++ compiler. We have tested with GNU C++ versions
+ 3.3 and newer and Microsoft Visual C++ 7.1 and newer.
+
+ - Boost 1.34.0 or newer: At present, Boost 1.34.0 is only available
+ via Boost CVS. See http://www.boost.org for information about
+ retrieving Boost from CVS. Note: You must have a complete Boost
+ distribution available (e.g., retrieved via CVS or as part of a
+ Boost tarball) to compile the BGL-Python: the BGL-Python bindings
+ will not compile properly with already-installed Boost trees.
+
+ - Python 2.2 or newer. Be sure that the Python headers are
+ installed!
+
+We will assume that the Boost distribution is in a directory we refer
+to a BOOST_ROOT.
+
+
+Boost.Jam
+~~~~~~~~~
+
+We use the Boost.Build system to build the Python bindings for the
+BGL. The "Preparation" section at the following web page describes
+how to build Boost.Jam, which is the core of the build system:
+
+ http://www.boost.org/more/getting_started.html#Preparation
+
+However, most users can just enter the directory
+
+ $BOOST_ROOT/tools/jam/src
+
+and run either build.sh (for Unix-like systems) or build.bat (for
+Windows). Copy the "bjam" executable from this step some place
+convenient: we'll be using it to build the Python bindings.
+
+
+Python Configuration
+~~~~~~~~~~~~~~~~~~~~
+
+The BGL-Python bindings use the excellent Boost.Python library to
+reflect the C++ data structures and algorithms into Python. Although
+we build the Boost.Python library automatically, you may still need
+to follow the configuration advice here:
+
+ http://www.boost.org/libs/python/doc/building.html
+
+Most likely, you will only need to add the following to your
+user-config.jam:
+
+ using python : 2.3 ;
+
+Replace "2.3" with the major and minor version of Python you have,
+e.g., 2.2., 2.3, 2.4, or 2.5.
+
+
+Build & Install
+~~~~~~~~~~~~~~~
+
+Once you have determined which Boost.Jam options you will need, change
+to the top-level BGL-Python directory and run bjam:
+
+ bjam <options> install
+
+By default, the BGL-Python bindings will be installed into the
+appropriate Python site-packages directory (e.g.,
+/usr/lib/python2.3/site-packages). However, the same installation
+options are available here as for the setup.py script in the pre-built
+binaries:
+
+ --home=DIR This option will install the BGL-Python module
+ into the home directory DIR, with the Python
+ module stored in DIR/lib/python and supporting
+ shared libraries stored in DIR/lib. Be sure that
+ DIR/lib/python is in your PYTHONPATH and DIR/lib
+ is in your dynamic linker's path (e.g.,
+ LD_LIBRARY_PATH or DYLD_LIBRARY_PATH).
+
+ --exec-prefix=DIR This option will change the executable prefix used
+ to install BGL-Python as a site-wide
+ package. The BGL-Python module will be placed in
+ DIR/lib/pythonVERSION/site-packages and the
+ supporting libraries will be placed in DIR/lib.
+
+ --pythonlibdir=DIR This option will force the installer to place
+ the BGL-Python module in DIR.
+
+ --libdir=DIR This option will force the installer to place
+ the BGL-Python supporting libraries in DIR.
+
+------------
+Getting Help
+------------
+
+The Python interface to the BGL contains extensive on-line help. Use
+the help() command in Python or pydoc to view help for any of the
+components or algorithms of the BGL. If you are still having trouble,
+feel free to contact us via the Boost-Users or Boost mailing lists at:
+
+ http://www.boost.org/more/mailing_lists.htm
+
+
+-------
+License
+-------
+
+Boost Software License - Version 1.0 - August 17th, 2003
+
+Permission is hereby granted, free of charge, to any person or organization
+obtaining a copy of the software and accompanying documentation covered by
+this license (the "Software") to use, reproduce, display, distribute,
+execute, and transmit the Software, and to prepare derivative works of the
+Software, and to permit third-parties to whom the Software is furnished to
+do so, all subject to the following:
+
+The copyright notices in the Software and this entire statement, including
+the above license grant, this restriction and the following disclaimer,
+must be included in all copies of the Software, in whole or in part, and
+all derivative works of the Software, unless such copies or derivative
+works are solely in the form of machine-executable object code generated by
+a source language processor.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+
+-------
+History
+-------
+
+ - February 1, 2007 - Version 0.9.5 of BGL-Python bindings.
+ Improvements include:
+ - Vertex/edge properties are available as attributes in vertex
+ and edge objects
+ - Vertex/edge objects now have stable addresses, so they can be
+ used as keys in Python dicts.
+ - Property maps now perform automatic conversions to the
+ appropriate underlying type.
+ - More BGL algorithms are available in Python
+ - Added GraphML input/output
+ - Pickling/unpickling of BGL graphs now works properly
+
+ - November 23, 2005 - Version 0.9 of BGL-Python bindings. The
+ initial release as a separate package.
+
+ - August 11, 2005 - Initial, experimental version of BGL-Python
+ bindings released as part of Boost version 1.33.0.

Added: sandbox/SOC/2008/BGL_Python/TODO
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/TODO 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,18 @@
+Items to be completed before BGL-Python 1.0:
+ - Make vertex/edge descriptors work properly in Python dicts, either
+ with caching or __hash__ tricks.
+
+ - Make write_graphviz take a file descriptor instead of a file name
+
+ - pybgl-like property injection into vertex and edge descriptors,
+ e.g. for e in g.edges: e.weight = random()
+
+ - Provide wrappers for all of the algorithms in the BGL
+
+ - Push changes made to the BGL in the BGL-Python bindings back into
+ the main Boost tree
+
+Items to be completed "in the future":
+ - Subgraph support
+ - Vertex/edge filtering
+ - Easy display of graphs

Added: sandbox/SOC/2008/BGL_Python/bindist/setup.py
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/bindist/setup.py 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,130 @@
+#!/usr/bin/env python
+import sys
+import re
+import os
+import os.path as path
+import shutil
+import glob
+
+def usage():
+ print """Usage: setup.py [options] install
+
+Options can contain:
+
+ --home=DIR This option will install the BGL-Python module
+ into the home directory DIR, with the Python
+ module stored in DIR/lib/python and supporting
+ shared libraries stored in DIR/lib. Be sure that
+ DIR/lib/python is in your PYTHONPATH and DIR/lib
+ is in your dynamic linker's path (e.g.,
+ LD_LIBRARY_PATH or DYLD_LIBRARY_PATH).
+
+ --exec-prefix=DIR This option will change the executable prefix used
+ to install BGL-Python as a site-wide
+ package. The BGL-Python module will be placed in
+ DIR/lib/pythonVERSION/site-packages and the
+ supporting libraries will be placed in DIR/lib.
+
+ --pythonlibdir=DIR This option will force the installer to place
+ the BGL-Python module in DIR.
+
+ --libdir=DIR This option will force the installer to place
+ the BGL-Python supporting libraries in DIR.
+
+ --help Display this message
+"""
+ pass
+
+def maybe_create_directory(dir):
+ if not path.isdir(dir):
+ try:
+ print "Creating directory " + dir + "...",
+ os.makedirs(dir)
+ print " done."
+ except OSError, (errno, strerror):
+ print strerror
+
+
+home = None
+exec_prefix = None
+libdir = None
+pythonlibdir = None
+found_install = False
+key_value_regex = re.compile("--([^=]*)=(.*)")
+for arg in sys.argv[1:]:
+ if arg == 'install':
+ found_install = True
+ elif arg == "--help":
+ usage()
+ sys.exit(0)
+ else:
+ m = key_value_regex.match(arg);
+ if m:
+ key = m.group(1)
+ value = m.group(2)
+
+ if key == 'home': home = value
+ elif key == 'exec-prefix': exec_prefix = value
+ elif key == 'libdir': libdir = value
+ elif key == 'pythonlibdir': pythonlibdir = value
+ else:
+ print "command line error: unknown option --" + key + "=" + value
+ usage()
+ sys.exit(-1)
+ else:
+ print "command line error: unknown option " + arg
+ usage()
+ sys.exit(-1)
+
+if home:
+ if exec_prefix:
+ print """error: cannot specify both --home and --exec-prefix
+ --home is for home-directory installations
+ --exec-prefix is for system-wide installations
+ """
+ sys.exit(-1)
+
+ if not libdir: libdir = home + '/lib'
+ if not pythonlibdir: pythonlibdir = home + '/lib/python'
+else:
+ if not exec_prefix: exec_prefix = sys.exec_prefix
+ if not pythonlibdir:
+ version = str(sys.version_info[0]) + '.' + str(sys.version_info[1])
+ pythonlibdir = exec_prefix + '/lib/python' + version + '/site-packages'
+ if not libdir:
+ if os.uname()[0] == 'Darwin': libdir = '/usr/local/lib'
+ else: libdir = exec_prefix + '/lib'
+
+if os.environ.has_key('HOME'):
+ libdir = libdir.replace('~', os.environ['HOME'])
+ pythonlibdir = pythonlibdir.replace('~', os.environ['HOME'])
+
+print "Installing BGL Python support libraries in " + libdir + "..."
+print "Installing BGL Python module in " + pythonlibdir + "..."
+
+maybe_create_directory(libdir)
+maybe_create_directory(pythonlibdir)
+maybe_create_directory(pythonlibdir + '/boost')
+maybe_create_directory(pythonlibdir + '/boost/graph')
+
+files = glob.glob('bin/*')
+for myfile in files:
+ if path.isfile(myfile):
+ myfile = myfile.replace('bin/', '')
+ print "Installing " + myfile + " in " + libdir + "...",
+ try:
+ shutil.copyfile('bin/' + myfile, libdir + '/' + myfile)
+ print " done."
+ except IOError, (errno, strerror):
+ print strerror
+
+files = glob.glob('boost/graph/*') + glob.glob('boost/*')
+for myfile in files:
+ if path.isfile(myfile):
+ print "Installing " + myfile + " in " + pythonlibdir + "...",
+ try:
+ shutil.copyfile(myfile, pythonlibdir + '/' + myfile)
+ print " done."
+ except IOError, (errno, strerror):
+ print strerror
+

Added: sandbox/SOC/2008/BGL_Python/boost/graph/circle_layout.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/boost/graph/circle_layout.hpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,56 @@
+// Copyright 2004 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#ifndef BOOST_GRAPH_CIRCLE_LAYOUT_HPP
+#define BOOST_GRAPH_CIRCLE_LAYOUT_HPP
+#include <cmath>
+#include <utility>
+#include <boost/graph/graph_traits.hpp>
+
+namespace boost {
+ /**
+ * \brief Layout the graph with the vertices at the points of a regular
+ * n-polygon.
+ *
+ * The distance from the center of the polygon to each point is
+ * determined by the @p radius parameter. The @p position parameter
+ * must be an Lvalue Property Map whose value type is a class type
+ * containing @c x and @c y members that will be set to the @c x and
+ * @c y coordinates.
+ */
+ template<typename VertexListGraph, typename PositionMap, typename Radius>
+ void
+ circle_graph_layout(const VertexListGraph& g, PositionMap position,
+ Radius radius)
+ {
+ const float pi = 3.14159f;
+
+#ifndef BOOST_NO_STDC_NAMESPACE
+ using std::sin;
+ using std::cos;
+#endif // BOOST_NO_STDC_NAMESPACE
+
+ typedef typename graph_traits<VertexListGraph>::vertices_size_type
+ vertices_size_type;
+
+ vertices_size_type n = num_vertices(g);
+
+ typedef typename graph_traits<VertexListGraph>::vertex_iterator
+ vertex_iterator;
+
+ vertices_size_type i = 0;
+ for(std::pair<vertex_iterator, vertex_iterator> v = vertices(g);
+ v.first != v.second; ++v.first, ++i) {
+
+ position[*v.first][0] = radius * cos(i * 2 * pi / n);
+ position[*v.first][1] = radius * sin(i * 2 * pi / n);
+ }
+ }
+} // end namespace boost
+
+#endif // BOOST_GRAPH_CIRCLE_LAYOUT_HPP

Added: sandbox/SOC/2008/BGL_Python/boost/graph/cuthill_mckee_ordering.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/boost/graph/cuthill_mckee_ordering.hpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,213 @@
+//
+//=======================================================================
+// Copyright 1997, 1998, 1999, 2000 University of Notre Dame.
+// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek,
+// Doug Gregor, D. Kevin McGrath
+//
+// This file is part of the Boost Graph Library
+//
+// You should have received a copy of the License Agreement for the
+// Boost Graph Library along with the software; see the file LICENSE.
+// If not, contact Office of Research, University of Notre Dame, Notre
+// Dame, IN 46556.
+//
+// Permission to modify the code and to distribute modified code is
+// granted, provided the text of this NOTICE is retained, a notice that
+// the code was modified is included with the above COPYRIGHT NOTICE and
+// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE
+// file is distributed with the modified code.
+//
+// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED.
+// By way of example, but not limitation, Licensor MAKES NO
+// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY
+// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS
+// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS
+// OR OTHER RIGHTS.
+//=======================================================================
+//
+#ifndef BOOST_GRAPH_CUTHILL_MCKEE_HPP
+#define BOOST_GRAPH_CUTHILL_MCKEE_HPP
+
+#include <boost/config.hpp>
+#include <boost/graph/detail/sparse_ordering.hpp>
+#include <algorithm>
+
+// #ifndef LOCAL_RCM
+// typedef indirect_cmp<DegreeMap, std::less<DS> > Compare;
+// #else
+// typedef indirect_cmp<DegreeMap, std::greater<DS> > Compare;
+// #endif
+
+
+/*
+ (Reverse) Cuthill-McKee Algorithm for matrix reordering
+*/
+
+namespace boost {
+
+ namespace detail {
+
+
+
+ template < typename OutputIterator, typename Buffer, typename Compare >
+ class bfs_rcm_visitor:public default_bfs_visitor
+ {
+
+ public:
+ bfs_rcm_visitor(OutputIterator *iter, Buffer *b, Compare comp):
+ permutation(iter), Qptr(b), comp(comp) { }
+
+ template <class Vertex, class Graph>
+ void examine_vertex(Vertex u, Graph&) {
+ *(*permutation)++ = u;
+ index_begin = Qptr->size();
+ }
+
+ template <class Vertex, class Graph>
+ void finish_vertex(Vertex, Graph&) {
+ using std::sort;
+ sort(Qptr->begin()+index_begin, Qptr->end(), comp);
+ }
+
+ protected:
+ OutputIterator *permutation;
+ int index_begin;
+ Buffer *Qptr;
+ Compare comp;
+ };
+
+ } // namespace detail
+
+
+ // Reverse Cuthill-McKee algorithm with a given starting Vertex.
+ //
+ // If user provides a reverse iterator, this will be a reverse-cuthill-mckee
+ // algorithm, otherwise it will be a standard CM algorithm
+
+ template <class Graph, class OutputIterator,
+ class ColorMap, class Compare>
+ OutputIterator
+ cuthill_mckee_ordering(const Graph& g,
+ std::deque< typename
+ graph_traits<Graph>::vertex_descriptor > vertex_queue,
+ OutputIterator permutation,
+ ColorMap color, Compare comp)
+ {
+
+ //create queue, visitor...don't forget namespaces!
+ typedef typename graph_traits<Graph>::vertex_descriptor Vertex;
+ typedef typename boost::sparse::sparse_ordering_queue<Vertex> queue;
+ typedef typename detail::bfs_rcm_visitor<OutputIterator, queue, Compare> Visitor;
+ typedef typename property_traits<ColorMap>::value_type ColorValue;
+ typedef color_traits<ColorValue> Color;
+
+
+ queue Q;
+
+ //create a bfs_rcm_visitor as defined above
+ Visitor vis(&permutation, &Q, comp);
+
+ typename graph_traits<Graph>::vertex_iterator ui, ui_end;
+
+ // Copy degree to pseudo_degree
+ // initialize the color map
+ for (tie(ui, ui_end) = vertices(g); ui != ui_end; ++ui){
+ put(color, *ui, Color::white());
+ }
+
+
+ while( !vertex_queue.empty() ) {
+ Vertex s = vertex_queue.front();
+ vertex_queue.pop_front();
+
+ //call BFS with visitor
+ breadth_first_visit(g, s, Q, vis, color);
+ }
+ return permutation;
+ }
+
+
+ // This is the case where only a single starting vertex is supplied.
+ template <class Graph, class OutputIterator,
+ class ColorMap, class Compare>
+ OutputIterator
+ cuthill_mckee_ordering(const Graph& g,
+ typename graph_traits<Graph>::vertex_descriptor s,
+ OutputIterator permutation,
+ ColorMap color, Compare comp)
+ {
+
+ std::deque< typename graph_traits<Graph>::vertex_descriptor > vertex_queue;
+ vertex_queue.push_front( s );
+
+ return cuthill_mckee_ordering(g, vertex_queue, permutation, color, comp);
+
+ }
+
+
+ // This is the version of CM which selects its own starting vertex
+ template < class Graph, class OutputIterator,
+ class ColorMap, class Compare>
+ OutputIterator
+ cuthill_mckee_ordering(const Graph& G, OutputIterator permutation,
+ ColorMap color, Compare comp)
+ {
+ if (vertices(G).first == vertices(G).second)
+ return permutation;
+
+ typedef typename boost::graph_traits<Graph>::vertex_descriptor Vertex;
+ typedef typename boost::graph_traits<Graph>::vertex_iterator VerIter;
+ typedef typename property_traits<ColorMap>::value_type ColorValue;
+ typedef color_traits<ColorValue> Color;
+
+ std::deque<Vertex> vertex_queue;
+
+ // Mark everything white
+ BGL_FORALL_VERTICES_T(v, G, Graph) put(color, v, Color::white());
+
+ // Find one vertex from each connected component
+ BGL_FORALL_VERTICES_T(v, G, Graph) {
+ if (get(color, v) == Color::white()) {
+ depth_first_visit(G, v, dfs_visitor<>(), color);
+ vertex_queue.push_back(v);
+ }
+ }
+
+ // Find starting nodes for all vertices
+ // TBD: How to do this with a directed graph?
+ for (typename std::deque<Vertex>::iterator i = vertex_queue.begin();
+ i != vertex_queue.end(); ++i)
+ *i = find_starting_node(G, *i, color, comp);
+
+ return cuthill_mckee_ordering(G, vertex_queue, permutation,
+ color, comp);
+ }
+
+ template<typename Graph, typename OutputIterator, typename VertexIndexMap>
+ OutputIterator
+ cuthill_mckee_ordering(const Graph& G, OutputIterator permutation,
+ VertexIndexMap index_map)
+ {
+ if (vertices(G).first == vertices(G).second)
+ return permutation;
+
+ typedef out_degree_property_map<Graph> DegreeMap;
+ typedef typename property_traits<DegreeMap>::value_type DS;
+ typedef indirect_cmp<DegreeMap, std::less<DS> > Compare;
+
+ std::vector<default_color_type> colors(num_vertices(G));
+ return cuthill_mckee_ordering(G, permutation,
+ make_iterator_property_map(&colors[0],
+ index_map,
+ colors[0]),
+ Compare(make_out_degree_map(G)));
+ }
+
+ template<typename Graph, typename OutputIterator>
+ inline OutputIterator
+ cuthill_mckee_ordering(const Graph& G, OutputIterator permutation)
+ { return cuthill_mckee_ordering(G, permutation, get(vertex_index, G)); }
+} // namespace boost
+
+
+#endif // BOOST_GRAPH_CUTHILL_MCKEE_HPP

Added: sandbox/SOC/2008/BGL_Python/boost/graph/detail/sparse_ordering.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/boost/graph/detail/sparse_ordering.hpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,214 @@
+//
+//=======================================================================
+// Copyright 1997, 1998, 1999, 2000 University of Notre Dame.
+// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek
+//
+// This file is part of the Boost Graph Library
+//
+// You should have received a copy of the License Agreement for the
+// Boost Graph Library along with the software; see the file LICENSE.
+// If not, contact Office of Research, University of Notre Dame, Notre
+// Dame, IN 46556.
+//
+// Permission to modify the code and to distribute modified code is
+// granted, provided the text of this NOTICE is retained, a notice that
+// the code was modified is included with the above COPYRIGHT NOTICE and
+// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE
+// file is distributed with the modified code.
+//
+// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED.
+// By way of example, but not limitation, Licensor MAKES NO
+// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY
+// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS
+// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS
+// OR OTHER RIGHTS.
+//=======================================================================
+//
+#ifndef BOOST_GRAPH_DETAIL_SPARSE_ORDERING_HPP
+#define BOOST_GRAPH_DETAIL_SPARSE_ORDERING_HPP
+
+#include <boost/config.hpp>
+#include <vector>
+#include <queue>
+#include <boost/pending/queue.hpp>
+#include <boost/pending/mutable_queue.hpp>
+#include <boost/graph/graph_traits.hpp>
+#include <boost/graph/breadth_first_search.hpp>
+#include <boost/graph/properties.hpp>
+#include <boost/pending/indirect_cmp.hpp>
+#include <boost/property_map.hpp>
+#include <boost/bind.hpp>
+#include <boost/graph/iteration_macros.hpp>
+#include <boost/graph/depth_first_search.hpp>
+
+namespace boost {
+
+ namespace sparse {
+
+ // rcm_queue
+ //
+ // This is a custom queue type used in the
+ // *_ordering algorithms.
+ // In addition to the normal queue operations, the
+ // rcm_queue provides:
+ //
+ // int eccentricity() const;
+ // value_type spouse() const;
+ //
+
+ // yes, it's a bad name...but it works, so use it
+ template < class Vertex, class Compare,
+ class Container = std::deque<Vertex> >
+ class rcm_queue : public std::queue<Vertex, Container> {
+ typedef std::queue<Vertex> base;
+ public:
+ typedef typename base::value_type value_type;
+ typedef typename base::size_type size_type;
+
+ /* SGI queue has not had a contructor queue(const Container&) */
+ inline rcm_queue(Compare comp)
+ : _size(0), Qsize(1), eccen(-1), comp(comp) { }
+
+ inline void pop() {
+ if ( !_size )
+ Qsize = base::size();
+
+ base::pop();
+ if ( _size == Qsize-1 ) {
+ _size = 0;
+ ++eccen;
+ } else
+ ++_size;
+
+ }
+
+ inline value_type& front() {
+ value_type& u = base::front();
+ if ( _size == 0 )
+ w = u;
+ else if (comp(u, w))
+ w = u;
+ return u;
+ }
+
+ inline const value_type& front() const {
+ const value_type& u = base::front();
+ if ( _size == 0 )
+ w = u;
+ else if (comp(u, w))
+ w = u;
+ return u;
+ }
+
+ inline value_type& top() { return front(); }
+ inline const value_type& top() const { return front(); }
+
+ inline size_type size() const { return base::size(); }
+
+ inline size_type eccentricity() const { return eccen; }
+ inline value_type spouse() const { return w; }
+
+ protected:
+ size_type _size;
+ size_type Qsize;
+ int eccen;
+ mutable value_type w;
+ Compare comp;
+ };
+
+
+ template <typename Tp, typename Sequence = std::deque<Tp> >
+ class sparse_ordering_queue : public boost::queue<Tp, Sequence>{
+ public:
+ typedef typename Sequence::iterator iterator;
+ typedef typename Sequence::reverse_iterator reverse_iterator;
+ typedef queue<Tp,Sequence> queue;
+ typedef typename Sequence::size_type size_type;
+
+ inline iterator begin() { return this->c.begin(); }
+ inline reverse_iterator rbegin() { return this->c.rbegin(); }
+ inline iterator end() { return this->c.end(); }
+ inline reverse_iterator rend() { return this->c.rend(); }
+ inline Tp &operator[](int n) { return this->c[n]; }
+ inline size_type size() {return this->c.size(); }
+ protected:
+ //nothing
+ };
+
+ } // namespace sparse
+
+ // Compute Pseudo peripheral
+ //
+ // To compute an approximated peripheral for a given vertex.
+ // Used in <tt>king_ordering</tt> algorithm.
+ //
+ template <class Graph, class Vertex, class ColorMap, class Compare>
+ Vertex
+ pseudo_peripheral_pair(Graph& G, const Vertex& u, int& ecc,
+ ColorMap color, Compare comp)
+ {
+ typedef typename property_traits<ColorMap>::value_type ColorValue;
+ typedef color_traits<ColorValue> Color;
+
+ sparse::rcm_queue<Vertex, Compare> Q(comp);
+
+ typename boost::graph_traits<Graph>::vertex_iterator ui, ui_end;
+ for (tie(ui, ui_end) = vertices(G); ui != ui_end; ++ui)
+ if (get(color, *ui) != Color::red()) put(color, *ui, Color::white());
+ breadth_first_visit(G, u, buffer(Q).color_map(color));
+
+ ecc = Q.eccentricity();
+ return Q.spouse();
+ }
+
+ // Find a good starting node
+ //
+ // This is to find a good starting node for the
+ // king_ordering algorithm. "good" is in the sense
+ // of the ordering generated by RCM.
+ //
+ template <class Graph, class Vertex, class Color, class Compare>
+ Vertex find_starting_node(Graph& G, Vertex r, Color color, Compare comp)
+ {
+ Vertex x, y;
+ int eccen_r, eccen_x;
+
+ x = pseudo_peripheral_pair(G, r, eccen_r, color, comp);
+ y = pseudo_peripheral_pair(G, x, eccen_x, color, comp);
+
+ while (eccen_x > eccen_r) {
+ r = x;
+ eccen_r = eccen_x;
+ x = y;
+ y = pseudo_peripheral_pair(G, x, eccen_x, color, comp);
+ }
+ return x;
+ }
+
+template <typename Graph>
+class out_degree_property_map
+ : public put_get_helper<typename graph_traits<Graph>::degree_size_type,
+ out_degree_property_map<Graph> >
+{
+public:
+ typedef typename graph_traits<Graph>::vertex_descriptor key_type;
+ typedef typename graph_traits<Graph>::degree_size_type value_type;
+ typedef value_type reference;
+ typedef readable_property_map_tag category;
+ out_degree_property_map(const Graph& g) : m_g(g) { }
+ value_type operator[](const key_type& v) const {
+ return out_degree(v, m_g);
+ }
+private:
+ const Graph& m_g;
+};
+template <typename Graph>
+inline out_degree_property_map<Graph>
+make_out_degree_map(const Graph& g) {
+ return out_degree_property_map<Graph>(g);
+}
+
+} // namespace boost
+
+
+#endif // BOOST_GRAPH_KING_HPP

Added: sandbox/SOC/2008/BGL_Python/boost/graph/filtered_graph.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/boost/graph/filtered_graph.hpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,496 @@
+//=======================================================================
+// Copyright 1997, 1998, 1999, 2000 University of Notre Dame.
+// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//=======================================================================
+
+#ifndef BOOST_FILTERED_GRAPH_HPP
+#define BOOST_FILTERED_GRAPH_HPP
+
+#include <boost/graph/graph_traits.hpp>
+#include <boost/graph/properties.hpp>
+#include <boost/graph/adjacency_iterator.hpp>
+#include <boost/iterator/filter_iterator.hpp>
+
+namespace boost {
+
+ //=========================================================================
+ // Some predicate classes.
+
+ struct keep_all {
+ template <typename T>
+ bool operator()(const T&) const { return true; }
+ };
+
+ // Keep residual edges (used in maximum-flow algorithms).
+ template <typename ResidualCapacityEdgeMap>
+ struct is_residual_edge {
+ is_residual_edge() { }
+ is_residual_edge(ResidualCapacityEdgeMap rcap) : m_rcap(rcap) { }
+ template <typename Edge>
+ bool operator()(const Edge& e) const {
+ return 0 < get(m_rcap, e);
+ }
+ ResidualCapacityEdgeMap m_rcap;
+ };
+
+ template <typename Set>
+ struct is_in_subset {
+ is_in_subset() : m_s(0) { }
+ is_in_subset(const Set& s) : m_s(&s) { }
+
+ template <typename Elt>
+ bool operator()(const Elt& x) const {
+ return set_contains(*m_s, x);
+ }
+ const Set* m_s;
+ };
+
+ template <typename Set>
+ struct is_not_in_subset {
+ is_not_in_subset() : m_s(0) { }
+ is_not_in_subset(const Set& s) : m_s(&s) { }
+
+ template <typename Elt>
+ bool operator()(const Elt& x) const {
+ return !set_contains(*m_s, x);
+ }
+ const Set* m_s;
+ };
+
+ namespace detail {
+
+ template <typename EdgePredicate, typename VertexPredicate, typename Graph>
+ struct out_edge_predicate {
+ out_edge_predicate() { }
+ out_edge_predicate(EdgePredicate ep, VertexPredicate vp,
+ const Graph& g)
+ : m_edge_pred(ep), m_vertex_pred(vp), m_g(&g) { }
+
+ template <typename Edge>
+ bool operator()(const Edge& e) const {
+ return m_edge_pred(e) && m_vertex_pred(target(e, *m_g));
+ }
+ EdgePredicate m_edge_pred;
+ VertexPredicate m_vertex_pred;
+ const Graph* m_g;
+ };
+
+ template <typename EdgePredicate, typename VertexPredicate, typename Graph>
+ struct in_edge_predicate {
+ in_edge_predicate() { }
+ in_edge_predicate(EdgePredicate ep, VertexPredicate vp,
+ const Graph& g)
+ : m_edge_pred(ep), m_vertex_pred(vp), m_g(&g) { }
+
+ template <typename Edge>
+ bool operator()(const Edge& e) const {
+ return m_edge_pred(e) && m_vertex_pred(source(e, *m_g));
+ }
+ EdgePredicate m_edge_pred;
+ VertexPredicate m_vertex_pred;
+ const Graph* m_g;
+ };
+
+ template <typename EdgePredicate, typename VertexPredicate, typename Graph>
+ struct edge_predicate {
+ edge_predicate() { }
+ edge_predicate(EdgePredicate ep, VertexPredicate vp,
+ const Graph& g)
+ : m_edge_pred(ep), m_vertex_pred(vp), m_g(&g) { }
+
+ template <typename Edge>
+ bool operator()(const Edge& e) const {
+ return m_edge_pred(e)
+ && m_vertex_pred(source(e, *m_g)) && m_vertex_pred(target(e, *m_g));
+ }
+ EdgePredicate m_edge_pred;
+ VertexPredicate m_vertex_pred;
+ const Graph* m_g;
+ };
+
+ } // namespace detail
+
+
+ //===========================================================================
+ // Filtered Graph
+
+ struct filtered_graph_tag { };
+
+ // This base class is a stupid hack to change overload resolution
+ // rules for the source and target functions so that they are a
+ // worse match than the source and target functions defined for
+ // pairs in graph_traits.hpp. I feel dirty. -JGS
+ template <class G>
+ struct filtered_graph_base {
+ typedef graph_traits<G> Traits;
+ typedef typename Traits::vertex_descriptor vertex_descriptor;
+ typedef typename Traits::edge_descriptor edge_descriptor;
+ filtered_graph_base(const G& g) : m_g(g) { }
+ //protected:
+ const G& m_g;
+ };
+
+ template <typename Graph,
+ typename EdgePredicate,
+ typename VertexPredicate = keep_all>
+ class filtered_graph : public filtered_graph_base<Graph> {
+ typedef filtered_graph_base<Graph> Base;
+ typedef graph_traits<Graph> Traits;
+ typedef filtered_graph self;
+ public:
+ typedef Graph graph_type;
+ typedef detail::out_edge_predicate<EdgePredicate,
+ VertexPredicate, self> OutEdgePred;
+ typedef detail::in_edge_predicate<EdgePredicate,
+ VertexPredicate, self> InEdgePred;
+ typedef detail::edge_predicate<EdgePredicate,
+ VertexPredicate, self> EdgePred;
+
+ // Constructors
+ filtered_graph(const Graph& g, EdgePredicate ep)
+ : Base(g), m_edge_pred(ep) { }
+
+ filtered_graph(const Graph& g, EdgePredicate ep, VertexPredicate vp)
+ : Base(g), m_edge_pred(ep), m_vertex_pred(vp) { }
+
+ // Graph requirements
+ typedef typename Traits::vertex_descriptor vertex_descriptor;
+ typedef typename Traits::edge_descriptor edge_descriptor;
+ typedef typename Traits::directed_category directed_category;
+ typedef typename Traits::edge_parallel_category edge_parallel_category;
+ typedef typename Traits::traversal_category traversal_category;
+
+ // IncidenceGraph requirements
+ typedef filter_iterator<
+ OutEdgePred, typename Traits::out_edge_iterator
+ > out_edge_iterator;
+
+ typedef typename Traits::degree_size_type degree_size_type;
+
+ // AdjacencyGraph requirements
+ typedef typename adjacency_iterator_generator<self,
+ vertex_descriptor, out_edge_iterator>::type adjacency_iterator;
+
+ // BidirectionalGraph requirements
+ typedef filter_iterator<
+ InEdgePred, typename Traits::in_edge_iterator
+ > in_edge_iterator;
+
+ // VertexListGraph requirements
+ typedef filter_iterator<
+ VertexPredicate, typename Traits::vertex_iterator
+ > vertex_iterator;
+ typedef typename Traits::vertices_size_type vertices_size_type;
+
+ // EdgeListGraph requirements
+ typedef filter_iterator<
+ EdgePred, typename Traits::edge_iterator
+ > edge_iterator;
+ typedef typename Traits::edges_size_type edges_size_type;
+
+ typedef typename ::boost::edge_property_type<Graph>::type edge_property_type;
+ typedef typename ::boost::vertex_property_type<Graph>::type vertex_property_type;
+ typedef filtered_graph_tag graph_tag;
+
+#ifndef BOOST_GRAPH_NO_BUNDLED_PROPERTIES
+ // Bundled properties support
+ template<typename Descriptor>
+ typename graph::detail::bundled_result<Graph, Descriptor>::type&
+ operator[](Descriptor x)
+ { return const_cast<Graph&>(this->m_g)[x]; }
+
+ template<typename Descriptor>
+ typename graph::detail::bundled_result<Graph, Descriptor>::type const&
+ operator[](Descriptor x) const
+ { return this->m_g[x]; }
+#endif // BOOST_GRAPH_NO_BUNDLED_PROPERTIES
+
+ static vertex_descriptor null_vertex()
+ {
+ return Graph::null_vertex();
+ }
+
+ //private:
+ EdgePredicate m_edge_pred;
+ VertexPredicate m_vertex_pred;
+ };
+
+#ifndef BOOST_GRAPH_NO_BUNDLED_PROPERTIES
+ template<typename Graph, typename EdgePredicate, typename VertexPredicate>
+ struct vertex_bundle_type<filtered_graph<Graph, EdgePredicate,
+ VertexPredicate> >
+ : vertex_bundle_type<Graph> { };
+
+ template<typename Graph, typename EdgePredicate, typename VertexPredicate>
+ struct edge_bundle_type<filtered_graph<Graph, EdgePredicate,
+ VertexPredicate> >
+ : edge_bundle_type<Graph> { };
+#endif // BOOST_GRAPH_NO_BUNDLED_PROPERTIES
+
+ //===========================================================================
+ // Non-member functions for the Filtered Edge Graph
+
+ // Helper functions
+ template <typename Graph, typename EdgePredicate>
+ inline filtered_graph<Graph, EdgePredicate>
+ make_filtered_graph(Graph& g, EdgePredicate ep) {
+ return filtered_graph<Graph, EdgePredicate>(g, ep);
+ }
+ template <typename Graph, typename EdgePredicate, typename VertexPredicate>
+ inline filtered_graph<Graph, EdgePredicate, VertexPredicate>
+ make_filtered_graph(Graph& g, EdgePredicate ep, VertexPredicate vp) {
+ return filtered_graph<Graph, EdgePredicate, VertexPredicate>(g, ep, vp);
+ }
+
+ template <typename G, typename EP, typename VP>
+ std::pair<typename filtered_graph<G, EP, VP>::vertex_iterator,
+ typename filtered_graph<G, EP, VP>::vertex_iterator>
+ vertices(const filtered_graph<G, EP, VP>& g)
+ {
+ typedef filtered_graph<G, EP, VP> Graph;
+ typename graph_traits<G>::vertex_iterator f, l;
+ tie(f, l) = vertices(g.m_g);
+ typedef typename Graph::vertex_iterator iter;
+ return std::make_pair(iter(g.m_vertex_pred, f, l),
+ iter(g.m_vertex_pred, l, l));
+ }
+
+ template <typename G, typename EP, typename VP>
+ std::pair<typename filtered_graph<G, EP, VP>::edge_iterator,
+ typename filtered_graph<G, EP, VP>::edge_iterator>
+ edges(const filtered_graph<G, EP, VP>& g)
+ {
+ typedef filtered_graph<G, EP, VP> Graph;
+ typename Graph::EdgePred pred(g.m_edge_pred, g.m_vertex_pred, g);
+ typename graph_traits<G>::edge_iterator f, l;
+ tie(f, l) = edges(g.m_g);
+ typedef typename Graph::edge_iterator iter;
+ return std::make_pair(iter(pred, f, l), iter(pred, l, l));
+ }
+
+ // An alternative for num_vertices() and num_edges() would be to
+ // count the number in the filtered graph. This is problematic
+ // because of the interaction with the vertex indices... they would
+ // no longer go from 0 to num_vertices(), which would cause trouble
+ // for algorithms allocating property storage in an array. We could
+ // try to create a mapping to new recalibrated indices, but I don't
+ // see an efficient way to do this.
+ //
+ // However, the current solution is still unsatisfactory because
+ // the following semantic constraints no longer hold:
+ // tie(vi, viend) = vertices(g);
+ // assert(std::distance(vi, viend) == num_vertices(g));
+
+ template <typename G, typename EP, typename VP>
+ typename filtered_graph<G, EP, VP>::vertices_size_type
+ num_vertices(const filtered_graph<G, EP, VP>& g) {
+ return num_vertices(g.m_g);
+ }
+
+ template <typename G, typename EP, typename VP>
+ typename filtered_graph<G, EP, VP>::edges_size_type
+ num_edges(const filtered_graph<G, EP, VP>& g) {
+ return num_edges(g.m_g);
+ }
+
+ template <typename G>
+ typename filtered_graph_base<G>::vertex_descriptor
+ source(typename filtered_graph_base<G>::edge_descriptor e,
+ const filtered_graph_base<G>& g)
+ {
+ return source(e, g.m_g);
+ }
+
+ template <typename G>
+ typename filtered_graph_base<G>::vertex_descriptor
+ target(typename filtered_graph_base<G>::edge_descriptor e,
+ const filtered_graph_base<G>& g)
+ {
+ return target(e, g.m_g);
+ }
+
+ template <typename G, typename EP, typename VP>
+ std::pair<typename filtered_graph<G, EP, VP>::out_edge_iterator,
+ typename filtered_graph<G, EP, VP>::out_edge_iterator>
+ out_edges(typename filtered_graph<G, EP, VP>::vertex_descriptor u,
+ const filtered_graph<G, EP, VP>& g)
+ {
+ typedef filtered_graph<G, EP, VP> Graph;
+ typename Graph::OutEdgePred pred(g.m_edge_pred, g.m_vertex_pred, g);
+ typedef typename Graph::out_edge_iterator iter;
+ typename graph_traits<G>::out_edge_iterator f, l;
+ tie(f, l) = out_edges(u, g.m_g);
+ return std::make_pair(iter(pred, f, l), iter(pred, l, l));
+ }
+
+ template <typename G, typename EP, typename VP>
+ typename filtered_graph<G, EP, VP>::degree_size_type
+ out_degree(typename filtered_graph<G, EP, VP>::vertex_descriptor u,
+ const filtered_graph<G, EP, VP>& g)
+ {
+ typename filtered_graph<G, EP, VP>::degree_size_type n = 0;
+ typename filtered_graph<G, EP, VP>::out_edge_iterator f, l;
+ for (tie(f, l) = out_edges(u, g); f != l; ++f)
+ ++n;
+ return n;
+ }
+
+ template <typename G, typename EP, typename VP>
+ std::pair<typename filtered_graph<G, EP, VP>::adjacency_iterator,
+ typename filtered_graph<G, EP, VP>::adjacency_iterator>
+ adjacent_vertices(typename filtered_graph<G, EP, VP>::vertex_descriptor u,
+ const filtered_graph<G, EP, VP>& g)
+ {
+ typedef filtered_graph<G, EP, VP> Graph;
+ typedef typename Graph::adjacency_iterator adjacency_iterator;
+ typename Graph::out_edge_iterator f, l;
+ tie(f, l) = out_edges(u, g);
+ return std::make_pair(adjacency_iterator(f, const_cast<Graph*>(&g)),
+ adjacency_iterator(l, const_cast<Graph*>(&g)));
+ }
+
+ template <typename G, typename EP, typename VP>
+ std::pair<typename filtered_graph<G, EP, VP>::in_edge_iterator,
+ typename filtered_graph<G, EP, VP>::in_edge_iterator>
+ in_edges(typename filtered_graph<G, EP, VP>::vertex_descriptor u,
+ const filtered_graph<G, EP, VP>& g)
+ {
+ typedef filtered_graph<G, EP, VP> Graph;
+ typename Graph::InEdgePred pred(g.m_edge_pred, g.m_vertex_pred, g);
+ typedef typename Graph::in_edge_iterator iter;
+ typename graph_traits<G>::in_edge_iterator f, l;
+ tie(f, l) = in_edges(u, g.m_g);
+ return std::make_pair(iter(pred, f, l), iter(pred, l, l));
+ }
+
+ template <typename G, typename EP, typename VP>
+ typename filtered_graph<G, EP, VP>::degree_size_type
+ in_degree(typename filtered_graph<G, EP, VP>::vertex_descriptor u,
+ const filtered_graph<G, EP, VP>& g)
+ {
+ typename filtered_graph<G, EP, VP>::degree_size_type n = 0;
+ typename filtered_graph<G, EP, VP>::in_edge_iterator f, l;
+ for (tie(f, l) = in_edges(u, g); f != l; ++f)
+ ++n;
+ return n;
+ }
+
+ template <typename G, typename EP, typename VP>
+ std::pair<typename filtered_graph<G, EP, VP>::edge_descriptor, bool>
+ edge(typename filtered_graph<G, EP, VP>::vertex_descriptor u,
+ typename filtered_graph<G, EP, VP>::vertex_descriptor v,
+ const filtered_graph<G, EP, VP>& g)
+ {
+ typename graph_traits<G>::edge_descriptor e;
+ bool exists;
+ tie(e, exists) = edge(u, v, g.m_g);
+ return std::make_pair(e, exists && g.m_edge_pred(e));
+ }
+
+ template <typename G, typename EP, typename VP>
+ std::pair<typename filtered_graph<G, EP, VP>::out_edge_iterator,
+ typename filtered_graph<G, EP, VP>::out_edge_iterator>
+ edge_range(typename filtered_graph<G, EP, VP>::vertex_descriptor u,
+ typename filtered_graph<G, EP, VP>::vertex_descriptor v,
+ const filtered_graph<G, EP, VP>& g)
+ {
+ typedef filtered_graph<G, EP, VP> Graph;
+ typename Graph::OutEdgePred pred(g.m_edge_pred, g.m_vertex_pred, g);
+ typedef typename Graph::out_edge_iterator iter;
+ typename graph_traits<G>::out_edge_iterator f, l;
+ tie(f, l) = edge_range(u, v, g.m_g);
+ return std::make_pair(iter(pred, f, l), iter(pred, l, l));
+ }
+
+
+ //===========================================================================
+ // Property map
+
+ namespace detail {
+ struct filtered_graph_property_selector {
+ template <class FilteredGraph, class Property, class Tag>
+ struct bind_ {
+ typedef typename FilteredGraph::graph_type Graph;
+ typedef property_map<Graph, Tag> Map;
+ typedef typename Map::type type;
+ typedef typename Map::const_type const_type;
+ };
+ };
+ } // namespace detail
+
+ template <>
+ struct vertex_property_selector<filtered_graph_tag> {
+ typedef detail::filtered_graph_property_selector type;
+ };
+ template <>
+ struct edge_property_selector<filtered_graph_tag> {
+ typedef detail::filtered_graph_property_selector type;
+ };
+
+ template <typename G, typename EP, typename VP, typename Property>
+ typename property_map<G, Property>::type
+ get(Property p, filtered_graph<G, EP, VP>& g)
+ {
+ return get(p, const_cast<G&>(g.m_g));
+ }
+
+ template <typename G, typename EP, typename VP,typename Property>
+ typename property_map<G, Property>::const_type
+ get(Property p, const filtered_graph<G, EP, VP>& g)
+ {
+ return get(p, (const G&)g.m_g);
+ }
+
+ template <typename G, typename EP, typename VP, typename Property,
+ typename Key>
+ typename property_map_value<G, Property>::type
+ get(Property p, const filtered_graph<G, EP, VP>& g, const Key& k)
+ {
+ return get(p, (const G&)g.m_g, k);
+ }
+
+ template <typename G, typename EP, typename VP, typename Property,
+ typename Key, typename Value>
+ void
+ put(Property p, const filtered_graph<G, EP, VP>& g, const Key& k,
+ const Value& val)
+ {
+ put(p, const_cast<G&>(g.m_g), k, val);
+ }
+
+ //===========================================================================
+ // Some filtered subgraph specializations
+
+ template <typename Graph, typename Set>
+ struct vertex_subset_filter {
+ typedef filtered_graph<Graph, keep_all, is_in_subset<Set> > type;
+ };
+ template <typename Graph, typename Set>
+ inline typename vertex_subset_filter<Graph, Set>::type
+ make_vertex_subset_filter(Graph& g, const Set& s) {
+ typedef typename vertex_subset_filter<Graph, Set>::type Filter;
+ is_in_subset<Set> p(s);
+ return Filter(g, keep_all(), p);
+ }
+
+ template <typename Graph, typename Set>
+ struct vertex_subset_compliment_filter {
+ typedef filtered_graph<Graph, keep_all, is_not_in_subset<Set> > type;
+ };
+ template <typename Graph, typename Set>
+ inline typename vertex_subset_compliment_filter<Graph, Set>::type
+ make_vertex_subset_compliment_filter(Graph& g, const Set& s) {
+ typedef typename vertex_subset_compliment_filter<Graph, Set>::type Filter;
+ is_not_in_subset<Set> p(s);
+ return Filter(g, keep_all(), p);
+ }
+
+
+} // namespace boost
+
+
+#endif // BOOST_FILTERED_GRAPH_HPP

Added: sandbox/SOC/2008/BGL_Python/boost/graph/fruchterman_reingold.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/boost/graph/fruchterman_reingold.hpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,539 @@
+// Copyright 2004, 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#ifndef BOOST_GRAPH_FRUCHTERMAN_REINGOLD_FORCE_DIRECTED_LAYOUT_HPP
+#define BOOST_GRAPH_FRUCHTERMAN_REINGOLD_FORCE_DIRECTED_LAYOUT_HPP
+
+#include <cmath>
+#include <boost/graph/graph_traits.hpp>
+#include <boost/graph/named_function_params.hpp>
+#include <vector>
+#include <list>
+#include <algorithm> // for std::min, std::max, std::accumulate
+#include <boost/graph/point_traits.hpp>
+#include <functional>
+#include <numeric>
+
+#include <stdlib.h> // for drand48
+
+namespace boost {
+
+using boost::graph::point_traits;
+
+struct square_distance_attractive_force {
+ template<typename Graph, typename T>
+ T
+ operator()(typename graph_traits<Graph>::edge_descriptor,
+ T k,
+ T d,
+ const Graph&) const
+ {
+ return d * d / k;
+ }
+};
+
+struct square_distance_repulsive_force {
+ template<typename Graph, typename T>
+ T
+ operator()(typename graph_traits<Graph>::vertex_descriptor,
+ typename graph_traits<Graph>::vertex_descriptor,
+ T k,
+ T d,
+ const Graph&) const
+ {
+ return k * k / d;
+ }
+};
+
+template<typename T>
+struct linear_cooling {
+ typedef T result_type;
+
+ linear_cooling(std::size_t iterations)
+ : temp(T(iterations) / T(10)), step(0.1) { }
+
+ linear_cooling(std::size_t iterations, T temp)
+ : temp(temp), step(temp / T(iterations)) { }
+
+ T operator()()
+ {
+ T old_temp = temp;
+ temp -= step;
+ if (temp < T(0)) temp = T(0);
+ return old_temp;
+ }
+
+ private:
+ T temp;
+ T step;
+};
+
+struct all_force_pairs
+{
+ template<typename Graph, typename ApplyForce >
+ void operator()(const Graph& g, ApplyForce apply_force)
+ {
+ typedef typename graph_traits<Graph>::vertex_iterator vertex_iterator;
+ vertex_iterator v, end;
+ for (tie(v, end) = vertices(g); v != end; ++v) {
+ vertex_iterator u = v;
+ for (++u; u != end; ++u) {
+ apply_force(*u, *v);
+ apply_force(*v, *u);
+ }
+ }
+ }
+};
+
+namespace detail {
+ template<typename Point>
+ Point point_difference(const Point& p1, const Point& p2)
+ {
+ Point result;
+ std::size_t dims = point_traits<Point>::dimensions(p1);
+ for (std::size_t i = 0; i < dims; ++i)
+ result[i] = p1[i] - p2[i];
+ return result;
+ }
+
+ template<typename Point>
+ typename point_traits<Point>::component_type
+ point_norm(const Point& p)
+ {
+#ifndef BOOST_NO_STDC_NAMESPACE
+ using std::sqrt;
+#endif
+ typename point_traits<Point>::component_type result(0);
+ std::size_t dims = point_traits<Point>::dimensions(p);
+ for (std::size_t i = 0; i < dims; ++i)
+ result += p[i] * p[i];
+ return sqrt(result);
+ }
+
+ template<typename Point>
+ void
+ maybe_jitter_point(Point& p1, const Point& p2, Point origin, Point extent)
+ {
+#ifndef BOOST_NO_STDC_NAMESPACE
+ using std::sqrt;
+ using std::fabs;
+ using std::rand;
+#endif // BOOST_NO_STDC_NAMESPACE
+ typedef typename point_traits<Point>::component_type Dim;
+ std::size_t dims = point_traits<Point>::dimensions(p1);
+ for (std::size_t i = 0; i < dims; ++i) {
+ Dim too_close = extent[i] / Dim(10000);
+ if (fabs(p1[i] - p2[i]) < too_close) {
+ Dim dist_to_move = sqrt(extent[i]) / Dim(200);
+ if (p1[i] - origin[i] < origin[i] + extent[i] - p1[i])
+ p1[i] += dist_to_move * Dim(rand() % 100) / Dim(100);
+ else
+ p1[i] -= dist_to_move * Dim(rand() % 100) / Dim(100);
+ }
+ }
+ }
+
+ template<typename PositionMap, typename DisplacementMap,
+ typename RepulsiveForce, typename Graph>
+ struct fr_apply_force
+ {
+ typedef typename graph_traits<Graph>::vertex_descriptor vertex_descriptor;
+ typedef typename property_traits<PositionMap>::value_type Point;
+ typedef typename point_traits<Point>::component_type Dim;
+
+ fr_apply_force(const PositionMap& position,
+ const DisplacementMap& displacement,
+ Point origin, Point extent,
+ RepulsiveForce repulsive_force, Dim k, const Graph& g)
+ : position(position), displacement(displacement), origin(origin),
+ extent(extent), repulsive_force(repulsive_force), k(k), g(g)
+ {
+ dims = point_traits<Point>::dimensions(origin);
+ }
+
+ void operator()(vertex_descriptor u, vertex_descriptor v)
+ {
+#ifndef BOOST_NO_STDC_NAMESPACE
+ using std::sqrt;
+#endif // BOOST_NO_STDC_NAMESPACE
+ if (u != v) {
+ // When the vertices land on top of each other, move the
+ // first vertex away from the boundaries.
+ maybe_jitter_point(position[u], position[v], origin, extent);
+
+ // DPG TBD: Can we use the Topology concept's
+ // distance/move_position_toward to handle this?
+ Point delta = detail::point_difference(position[v], position[u]);
+ Dim dist = detail::point_norm(delta);
+
+ if (dist == Dim(0)) {
+ for (std::size_t i = 0; i < dims; ++i)
+ displacement[v][i] += 0.01;
+ } else {
+ Dim fr = repulsive_force(u, v, k, dist, g);
+
+ for (std::size_t i = 0; i < dims; ++i)
+ displacement[v][i] += delta[i] / dist * fr;
+ }
+ }
+ }
+
+ private:
+ PositionMap position;
+ DisplacementMap displacement;
+ Point origin;
+ Point extent;
+ RepulsiveForce repulsive_force;
+ Dim k;
+ const Graph& g;
+ std::size_t dims;
+ };
+
+} // end namespace detail
+
+template<typename PositionMap>
+struct grid_force_pairs
+{
+ typedef typename property_traits<PositionMap>::value_type Point;
+ typedef typename point_traits<Point>::component_type Dim;
+
+ template<typename Graph>
+ explicit
+ grid_force_pairs(const Point& origin, const Point& extent,
+ PositionMap position, const Graph& g)
+ : origin(origin), extent(extent), position(position)
+ {
+#ifndef BOOST_NO_STDC_NAMESPACE
+ using std::sqrt;
+#endif // BOOST_NO_STDC_NAMESPACE
+ std::size_t dims = point_traits<Point>::dimensions(origin);
+ two_k = Dim(2) * sqrt(std::accumulate(&extent[0], &extent[0] + dims,
+ Dim(1), std::multiplies<Dim>()));
+
+ num_buckets.resize(dims);
+ for (std::size_t i = 0; i < dims; ++i)
+ num_buckets[i] = std::size_t(extent[i] / two_k + Dim(1));
+ }
+
+ template<typename Graph, typename ApplyForce >
+ void operator()(const Graph& g, ApplyForce apply_force)
+ {
+ typedef typename graph_traits<Graph>::vertex_iterator vertex_iterator;
+ typedef typename graph_traits<Graph>::vertex_descriptor vertex_descriptor;
+ typedef std::list<vertex_descriptor> bucket_t;
+ typedef std::vector<bucket_t> buckets_t;
+
+#ifndef BOOST_NO_STDC_NAMESPACE
+ using std::sqrt;
+#endif // BOOST_NO_STDC_NAMESPACE
+ std::size_t dims = point_traits<Point>::dimensions(origin);
+
+ buckets_t buckets(std::accumulate(&num_buckets[0], &num_buckets[0] + dims,
+ std::size_t(1),
+ std::multiplies<std::size_t>()));
+ vertex_iterator v, v_end;
+ for (tie(v, v_end) = vertices(g); v != v_end; ++v) {
+ std::vector<std::size_t> bucket(dims);
+ for (std::size_t i = 0; i < dims; ++i) {
+ bucket[i] = std::size_t((position[*v][i] + origin[i]) / two_k);
+ if (bucket[i] >= num_buckets[i]) bucket[i] = num_buckets[i] - 1;
+ }
+ buckets[bucket_to_index(bucket)].push_back(*v);
+ }
+
+ std::vector<std::size_t> cell(2);
+ do {
+ bucket_t& bucket = buckets[bucket_to_index(cell)];
+
+ std::vector<std::size_t> start_cell(dims);
+ std::vector<std::size_t> end_cell(dims);
+
+ for (std::size_t i = 0; i < dims; ++i) {
+ start_cell[i] = cell[i] == 0? 0 : cell[i] - 1;
+ end_cell[i] = cell[i] == num_buckets[i] - 1? cell[i] : cell[i] + 1;
+ }
+
+ // Repulse vertices in this bucket
+ typedef typename bucket_t::iterator bucket_iterator;
+
+ std::vector<std::size_t> adj_cell = start_cell;
+ do {
+ for (bucket_iterator u = bucket.begin(); u != bucket.end(); ++u) {
+ // Repulse vertices in this bucket
+ bucket_t& other_bucket = buckets[bucket_to_index(adj_cell)];
+ for (bucket_iterator v = other_bucket.begin(); v != other_bucket.end(); ++v) {
+ Point delta = detail::point_difference(position[*u],
+ position[*v]);
+ Dim dist = detail::point_norm(delta);
+ if (dist < two_k) apply_force(*u, *v);
+ }
+ }
+ } while (next_bucket_in_subgrid(adj_cell, start_cell, end_cell));
+ } while (next_bucket(cell));
+ }
+
+private:
+ bool next_bucket_in_subgrid(std::vector<std::size_t>& bucket,
+ const std::vector<std::size_t>& start,
+ const std::vector<std::size_t>& end)
+ {
+ // Find the next bucket
+ std::size_t index = bucket.size() - 1;
+ do {
+ if (bucket[index]++ >= end[index]) {
+ bucket[index] = start[index];
+
+ if (index == 0)
+ return false;
+ --index;
+ } else {
+ return true;
+ }
+ } while (true);
+ }
+
+ bool next_bucket(std::vector<std::size_t>& bucket)
+ {
+ // Find the next bucket
+ std::size_t index = bucket.size() - 1;
+ do {
+ if (++bucket[index] >= num_buckets[index]) {
+ bucket[index] = 0;
+
+ if (index == 0)
+ return false;
+ --index;
+ } else {
+ return true;
+ }
+ } while (true);
+ }
+
+ std::size_t bucket_to_index(const std::vector<std::size_t>& bucket)
+ {
+ std::size_t multiplier = 1;
+ std::size_t result = 0;
+
+ std::size_t dims = num_buckets.size();
+ for (std::size_t i = 0; i < dims; ++i) {
+ result += bucket[i] * multiplier;
+ multiplier *= num_buckets[i];
+ }
+ return result;
+ }
+
+ Point origin;
+ Point extent;
+ PositionMap position;
+ Dim two_k;
+ std::vector<std::size_t> num_buckets;
+};
+
+template<typename PositionMap, typename Graph>
+inline grid_force_pairs<PositionMap>
+make_grid_force_pairs
+ (typename property_traits<PositionMap>::value_type const& origin,
+ typename property_traits<PositionMap>::value_type const& extent,
+ const PositionMap& position, const Graph& g)
+{ return grid_force_pairs<PositionMap>(origin, extent, position, g); }
+
+template<typename Graph, typename PositionMap,
+ typename AttractiveForce, typename RepulsiveForce,
+ typename ForcePairs, typename Cooling, typename DisplacementMap>
+void
+fruchterman_reingold_force_directed_layout
+ (const Graph& g,
+ PositionMap position,
+ typename property_traits<PositionMap>::value_type const& origin,
+ typename property_traits<PositionMap>::value_type const& extent,
+ AttractiveForce attractive_force,
+ RepulsiveForce repulsive_force,
+ ForcePairs force_pairs,
+ Cooling cool,
+ DisplacementMap displacement)
+{
+ typedef typename property_traits<PositionMap>::value_type Point;
+ typedef typename point_traits<Point>::component_type Dim;
+ typedef typename graph_traits<Graph>::vertex_iterator vertex_iterator;
+ typedef typename graph_traits<Graph>::vertex_descriptor vertex_descriptor;
+ typedef typename graph_traits<Graph>::edge_iterator edge_iterator;
+
+#ifndef BOOST_NO_STDC_NAMESPACE
+ using std::sqrt;
+#endif // BOOST_NO_STDC_NAMESPACE
+
+ std::size_t num_dimensions = point_traits<Point>::dimensions(origin);
+ Dim volume = std::accumulate(&extent[0], &extent[0] + num_dimensions,
+ Dim(1), std::multiplies<Dim>());
+
+ // assume positions are initialized randomly
+ Dim k = sqrt(volume / num_vertices(g));
+
+ detail::fr_apply_force<PositionMap, DisplacementMap,
+ RepulsiveForce, Graph>
+ apply_force(position, displacement, origin, extent, repulsive_force, k, g);
+
+ do {
+ // Calculate repulsive forces
+ vertex_iterator v, v_end;
+ for (tie(v, v_end) = vertices(g); v != v_end; ++v)
+ displacement[*v] = Point();
+ force_pairs(g, apply_force);
+
+ // Calculate attractive forces
+ edge_iterator e, e_end;
+ for (tie(e, e_end) = edges(g); e != e_end; ++e) {
+ vertex_descriptor v = source(*e, g);
+ vertex_descriptor u = target(*e, g);
+
+ if (u != v) {
+ // When the vertices land on top of each other, move the
+ // first vertex away from the boundaries.
+ ::boost::detail::maybe_jitter_point(position[u], position[v],
+ origin, extent);
+
+ // DPG TBD: Can we use the Topology concept's
+ // distance/move_position_toward to handle this?
+ Point delta = detail::point_difference(position[v], position[u]);
+ Dim dist = detail::point_norm(delta);
+ Dim fa = attractive_force(*e, k, dist, g);
+
+ for (std::size_t dim = 0; dim < num_dimensions; ++dim) {
+ displacement[v][dim] -= delta[dim] / dist * fa;
+ displacement[u][dim] += delta[dim] / dist * fa;
+ }
+ }
+ }
+
+ if (Dim temp = cool()) {
+ // Update positions
+ for (tie(v, v_end) = vertices(g); v != v_end; ++v) {
+ BOOST_USING_STD_MIN();
+ BOOST_USING_STD_MAX();
+ Dim disp_size = detail::point_norm(displacement[*v]);
+
+ for (std::size_t dim = 0; dim < num_dimensions; ++dim) {
+ position[*v][dim] += displacement[*v][dim] / disp_size
+ * (min)(disp_size, temp);
+ position[*v][dim] = (min)(origin[dim] + extent[dim],
+ (max)(origin[dim], position[*v][dim]));
+ }
+ }
+ } else {
+ break;
+ }
+ } while (true);
+}
+
+namespace detail {
+ template<typename DisplacementMap>
+ struct fr_force_directed_layout
+ {
+ template<typename Graph, typename PositionMap,
+ typename AttractiveForce, typename RepulsiveForce,
+ typename ForcePairs, typename Cooling,
+ typename Param, typename Tag, typename Rest>
+ static void
+ run(const Graph& g,
+ PositionMap position,
+ typename property_traits<PositionMap>::value_type const& origin,
+ typename property_traits<PositionMap>::value_type const& extent,
+ AttractiveForce attractive_force,
+ RepulsiveForce repulsive_force,
+ ForcePairs force_pairs,
+ Cooling cool,
+ DisplacementMap displacement,
+ const bgl_named_params<Param, Tag, Rest>&)
+ {
+ fruchterman_reingold_force_directed_layout
+ (g, position, origin, extent, attractive_force, repulsive_force,
+ force_pairs, cool, displacement);
+ }
+ };
+
+ template<>
+ struct fr_force_directed_layout<error_property_not_found>
+ {
+ template<typename Graph, typename PositionMap,
+ typename AttractiveForce, typename RepulsiveForce,
+ typename ForcePairs, typename Cooling,
+ typename Param, typename Tag, typename Rest>
+ static void
+ run(const Graph& g,
+ PositionMap position,
+ typename property_traits<PositionMap>::value_type const& origin,
+ typename property_traits<PositionMap>::value_type const& extent,
+ AttractiveForce attractive_force,
+ RepulsiveForce repulsive_force,
+ ForcePairs force_pairs,
+ Cooling cool,
+ error_property_not_found,
+ const bgl_named_params<Param, Tag, Rest>& params)
+ {
+ typedef typename property_traits<PositionMap>::value_type Point;
+ std::vector<Point> displacements(num_vertices(g));
+ fruchterman_reingold_force_directed_layout
+ (g, position, origin, extent, attractive_force, repulsive_force,
+ force_pairs, cool,
+ make_iterator_property_map
+ (displacements.begin(),
+ choose_const_pmap(get_param(params, vertex_index), g,
+ vertex_index),
+ Point()));
+ }
+ };
+
+} // end namespace detail
+
+template<typename Graph, typename PositionMap, typename Param,
+ typename Tag, typename Rest>
+void
+fruchterman_reingold_force_directed_layout
+ (const Graph& g,
+ PositionMap position,
+ typename property_traits<PositionMap>::value_type const& origin,
+ typename property_traits<PositionMap>::value_type const& extent,
+ const bgl_named_params<Param, Tag, Rest>& params)
+{
+ typedef typename property_value<bgl_named_params<Param,Tag,Rest>,
+ vertex_displacement_t>::type D;
+
+ detail::fr_force_directed_layout<D>::run
+ (g, position, origin, extent,
+ choose_param(get_param(params, attractive_force_t()),
+ square_distance_attractive_force()),
+ choose_param(get_param(params, repulsive_force_t()),
+ square_distance_repulsive_force()),
+ choose_param(get_param(params, force_pairs_t()),
+ make_grid_force_pairs(origin, extent, position, g)),
+ choose_param(get_param(params, cooling_t()),
+ linear_cooling<double>(100)),
+ get_param(params, vertex_displacement_t()),
+ params);
+}
+
+template<typename Graph, typename PositionMap>
+void
+fruchterman_reingold_force_directed_layout
+ (const Graph& g,
+ PositionMap position,
+ typename property_traits<PositionMap>::value_type const& origin,
+ typename property_traits<PositionMap>::value_type const& extent)
+{
+ fruchterman_reingold_force_directed_layout
+ (g, position, origin, extent,
+ attractive_force(square_distance_attractive_force()));
+}
+
+} // end namespace boost
+
+#ifdef BOOST_GRAPH_IS_PARALLEL
+# include <boost/graph/distributed/fruchterman_reingold.hpp>
+#endif // BOOST_GRAPH_IS_PARALLEL
+
+#endif // BOOST_GRAPH_FRUCHTERMAN_REINGOLD_FORCE_DIRECTED_LAYOUT_HPP

Added: sandbox/SOC/2008/BGL_Python/boost/graph/kamada_kawai_spring_layout.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/boost/graph/kamada_kawai_spring_layout.hpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,542 @@
+// Copyright 2004 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#ifndef BOOST_GRAPH_KAMADA_KAWAI_SPRING_LAYOUT_HPP
+#define BOOST_GRAPH_KAMADA_KAWAI_SPRING_LAYOUT_HPP
+
+#include <boost/graph/graph_traits.hpp>
+#include <boost/graph/johnson_all_pairs_shortest.hpp>
+#include <boost/type_traits/is_convertible.hpp>
+#include <utility>
+#include <iterator>
+#include <vector>
+#include <boost/limits.hpp>
+#include <cmath>
+
+namespace boost {
+ namespace detail { namespace graph {
+ /**
+ * Denotes an edge or display area side length used to scale a
+ * Kamada-Kawai drawing.
+ */
+ template<bool Edge, typename T>
+ struct edge_or_side
+ {
+ explicit edge_or_side(T value) : value(value) {}
+
+ T value;
+ };
+
+ /**
+ * Compute the edge length from an edge length. This is trivial.
+ */
+ template<typename Graph, typename DistanceMap, typename IndexMap,
+ typename T>
+ T compute_edge_length(const Graph&, DistanceMap, IndexMap,
+ edge_or_side<true, T> length)
+ { return length.value; }
+
+ /**
+ * Compute the edge length based on the display area side
+ length. We do this by dividing the side length by the largest
+ shortest distance between any two vertices in the graph.
+ */
+ template<typename Graph, typename DistanceMap, typename IndexMap,
+ typename T>
+ T
+ compute_edge_length(const Graph& g, DistanceMap distance, IndexMap index,
+ edge_or_side<false, T> length)
+ {
+ T result(0);
+
+ typedef typename graph_traits<Graph>::vertex_iterator vertex_iterator;
+
+ for (vertex_iterator ui = vertices(g).first, end = vertices(g).second;
+ ui != end; ++ui) {
+ vertex_iterator vi = ui;
+ for (++vi; vi != end; ++vi) {
+ T dij = distance[get(index, *ui)][get(index, *vi)];
+ if (dij > result) result = dij;
+ }
+ }
+ return length.value / result;
+ }
+
+ /**
+ * Implementation of the Kamada-Kawai spring layout algorithm.
+ */
+ template<typename Graph, typename PositionMap, typename WeightMap,
+ typename EdgeOrSideLength, typename Done,
+ typename VertexIndexMap, typename DistanceMatrix,
+ typename SpringStrengthMatrix, typename PartialDerivativeMap>
+ struct kamada_kawai_spring_layout_impl
+ {
+ typedef typename property_traits<WeightMap>::value_type weight_type;
+ typedef std::pair<weight_type, weight_type> deriv_type;
+ typedef typename graph_traits<Graph>::vertex_iterator vertex_iterator;
+ typedef typename graph_traits<Graph>::vertex_descriptor
+ vertex_descriptor;
+
+ kamada_kawai_spring_layout_impl(
+ const Graph& g,
+ PositionMap position,
+ WeightMap weight,
+ EdgeOrSideLength edge_or_side_length,
+ Done done,
+ weight_type spring_constant,
+ VertexIndexMap index,
+ DistanceMatrix distance,
+ SpringStrengthMatrix spring_strength,
+ PartialDerivativeMap partial_derivatives)
+ : g(g), position(position), weight(weight),
+ edge_or_side_length(edge_or_side_length), done(done),
+ spring_constant(spring_constant), index(index), distance(distance),
+ spring_strength(spring_strength),
+ partial_derivatives(partial_derivatives) {}
+
+ // Compute contribution of vertex i to the first partial
+ // derivatives (dE/dx_m, dE/dy_m) (for vertex m)
+ deriv_type
+ compute_partial_derivative(vertex_descriptor m, vertex_descriptor i)
+ {
+#ifndef BOOST_NO_STDC_NAMESPACE
+ using std::sqrt;
+#endif // BOOST_NO_STDC_NAMESPACE
+
+ deriv_type result(0, 0);
+ if (i != m) {
+ weight_type x_diff = position[m][0] - position[i][0];
+ weight_type y_diff = position[m][1] - position[i][1];
+ weight_type dist = sqrt(x_diff * x_diff + y_diff * y_diff);
+ result.first = spring_strength[get(index, m)][get(index, i)]
+ * (x_diff - distance[get(index, m)][get(index, i)]*x_diff/dist);
+ result.second = spring_strength[get(index, m)][get(index, i)]
+ * (y_diff - distance[get(index, m)][get(index, i)]*y_diff/dist);
+ }
+
+ return result;
+ }
+
+ // Compute partial derivatives dE/dx_m and dE/dy_m
+ deriv_type
+ compute_partial_derivatives(vertex_descriptor m)
+ {
+#ifndef BOOST_NO_STDC_NAMESPACE
+ using std::sqrt;
+#endif // BOOST_NO_STDC_NAMESPACE
+
+ deriv_type result(0, 0);
+
+ // TBD: looks like an accumulate to me
+ std::pair<vertex_iterator, vertex_iterator> verts = vertices(g);
+ for (/* no init */; verts.first != verts.second; ++verts.first) {
+ vertex_descriptor i = *verts.first;
+ deriv_type deriv = compute_partial_derivative(m, i);
+ result.first += deriv.first;
+ result.second += deriv.second;
+ }
+
+ return result;
+ }
+
+ // The actual Kamada-Kawai spring layout algorithm implementation
+ bool run()
+ {
+#ifndef BOOST_NO_STDC_NAMESPACE
+ using std::sqrt;
+#endif // BOOST_NO_STDC_NAMESPACE
+
+ // Compute d_{ij} and place it in the distance matrix
+ if (!johnson_all_pairs_shortest_paths(g, distance, index, weight,
+ weight_type(0)))
+ return false;
+
+ // Compute L based on side length (if needed), or retrieve L
+ weight_type edge_length =
+ detail::graph::compute_edge_length(g, distance, index,
+ edge_or_side_length);
+
+ // Compute l_{ij} and k_{ij}
+ const weight_type K = spring_constant;
+ vertex_iterator ui, end = vertices(g).second;
+ for (ui = vertices(g).first; ui != end; ++ui) {
+ vertex_iterator vi = ui;
+ for (++vi; vi != end; ++vi) {
+ weight_type dij = distance[get(index, *ui)][get(index, *vi)];
+ if (dij == (std::numeric_limits<weight_type>::max)())
+ return false;
+ distance[get(index, *ui)][get(index, *vi)] = edge_length * dij;
+ distance[get(index, *vi)][get(index, *ui)] = edge_length * dij;
+ spring_strength[get(index, *ui)][get(index, *vi)] = K/(dij*dij);
+ spring_strength[get(index, *vi)][get(index, *ui)] = K/(dij*dij);
+ }
+ }
+
+ // Compute Delta_i and find max
+ vertex_descriptor p = *vertices(g).first;
+ weight_type delta_p(0);
+
+ for (ui = vertices(g).first; ui != end; ++ui) {
+ deriv_type deriv = compute_partial_derivatives(*ui);
+ put(partial_derivatives, *ui, deriv);
+
+ weight_type delta =
+ sqrt(deriv.first*deriv.first + deriv.second*deriv.second);
+
+ if (delta > delta_p) {
+ p = *ui;
+ delta_p = delta;
+ }
+ }
+
+ while (!done(delta_p, p, g, true)) {
+ // The contribution p makes to the partial derivatives of
+ // each vertex. Computing this (at O(n) cost) allows us to
+ // update the delta_i values in O(n) time instead of O(n^2)
+ // time.
+ std::vector<deriv_type> p_partials(num_vertices(g));
+ for (ui = vertices(g).first; ui != end; ++ui) {
+ vertex_descriptor i = *ui;
+ p_partials[get(index, i)] = compute_partial_derivative(i, p);
+ }
+
+ do {
+ // Compute the 4 elements of the Jacobian
+ weight_type dE_dx_dx = 0, dE_dx_dy = 0, dE_dy_dx = 0, dE_dy_dy = 0;
+ for (ui = vertices(g).first; ui != end; ++ui) {
+ vertex_descriptor i = *ui;
+ if (i != p) {
+ weight_type x_diff = position[p][0] - position[i][0];
+ weight_type y_diff = position[p][1] - position[i][1];
+ weight_type dist = sqrt(x_diff * x_diff + y_diff * y_diff);
+ weight_type dist_cubed = dist * dist * dist;
+ weight_type k_mi = spring_strength[get(index,p)][get(index,i)];
+ weight_type l_mi = distance[get(index, p)][get(index, i)];
+ dE_dx_dx += k_mi * (1 - (l_mi * y_diff * y_diff)/dist_cubed);
+ dE_dx_dy += k_mi * l_mi * x_diff * y_diff / dist_cubed;
+ dE_dy_dx += k_mi * l_mi * x_diff * y_diff / dist_cubed;
+ dE_dy_dy += k_mi * (1 - (l_mi * x_diff * x_diff)/dist_cubed);
+ }
+ }
+
+ // Solve for delta_x and delta_y
+ weight_type dE_dx = get(partial_derivatives, p).first;
+ weight_type dE_dy = get(partial_derivatives, p).second;
+
+ weight_type delta_x =
+ (dE_dx_dy * dE_dy - dE_dy_dy * dE_dx)
+ / (dE_dx_dx * dE_dy_dy - dE_dx_dy * dE_dy_dx);
+
+ weight_type delta_y =
+ (dE_dx_dx * dE_dy - dE_dy_dx * dE_dx)
+ / (dE_dy_dx * dE_dx_dy - dE_dx_dx * dE_dy_dy);
+
+
+ // Move p by (delta_x, delta_y)
+ position[p][0] += delta_x;
+ position[p][1] += delta_y;
+
+ // Recompute partial derivatives and delta_p
+ deriv_type deriv = compute_partial_derivatives(p);
+ put(partial_derivatives, p, deriv);
+
+ delta_p =
+ sqrt(deriv.first*deriv.first + deriv.second*deriv.second);
+ } while (!done(delta_p, p, g, false));
+
+ // Select new p by updating each partial derivative and delta
+ vertex_descriptor old_p = p;
+ for (ui = vertices(g).first; ui != end; ++ui) {
+ deriv_type old_deriv_p = p_partials[get(index, *ui)];
+ deriv_type old_p_partial =
+ compute_partial_derivative(*ui, old_p);
+ deriv_type deriv = get(partial_derivatives, *ui);
+
+ deriv.first += old_p_partial.first - old_deriv_p.first;
+ deriv.second += old_p_partial.second - old_deriv_p.second;
+
+ put(partial_derivatives, *ui, deriv);
+ weight_type delta =
+ sqrt(deriv.first*deriv.first + deriv.second*deriv.second);
+
+ if (delta > delta_p) {
+ p = *ui;
+ delta_p = delta;
+ }
+ }
+ }
+
+ return true;
+ }
+
+ const Graph& g;
+ PositionMap position;
+ WeightMap weight;
+ EdgeOrSideLength edge_or_side_length;
+ Done done;
+ weight_type spring_constant;
+ VertexIndexMap index;
+ DistanceMatrix distance;
+ SpringStrengthMatrix spring_strength;
+ PartialDerivativeMap partial_derivatives;
+ };
+ } } // end namespace detail::graph
+
+ /// States that the given quantity is an edge length.
+ template<typename T>
+ inline detail::graph::edge_or_side<true, T>
+ edge_length(T x)
+ { return detail::graph::edge_or_side<true, T>(x); }
+
+ /// States that the given quantity is a display area side length.
+ template<typename T>
+ inline detail::graph::edge_or_side<false, T>
+ side_length(T x)
+ { return detail::graph::edge_or_side<false, T>(x); }
+
+ /**
+ * \brief Determines when to terminate layout of a particular graph based
+ * on a given relative tolerance.
+ */
+ template<typename T = double>
+ struct layout_tolerance
+ {
+ layout_tolerance(const T& tolerance = T(0.001))
+ : tolerance(tolerance), last_energy((std::numeric_limits<T>::max)()),
+ last_local_energy((std::numeric_limits<T>::max)()) { }
+
+ template<typename Graph>
+ bool
+ operator()(T delta_p,
+ typename boost::graph_traits<Graph>::vertex_descriptor p,
+ const Graph& g,
+ bool global)
+ {
+ if (global) {
+ if (last_energy == (std::numeric_limits<T>::max)()) {
+ last_energy = delta_p;
+ return false;
+ }
+
+ T diff = last_energy - delta_p;
+ if (diff < T(0)) diff = -diff;
+ bool done = (delta_p == T(0) || diff / last_energy < tolerance);
+ last_energy = delta_p;
+ return done;
+ } else {
+ if (last_local_energy == (std::numeric_limits<T>::max)()) {
+ last_local_energy = delta_p;
+ return delta_p == T(0);
+ }
+
+ T diff = last_local_energy - delta_p;
+ bool done = (delta_p == T(0) || (diff / last_local_energy) < tolerance);
+ last_local_energy = delta_p;
+ return done;
+ }
+ }
+
+ private:
+ T tolerance;
+ T last_energy;
+ T last_local_energy;
+ };
+
+ /** \brief Kamada-Kawai spring layout for undirected graphs.
+ *
+ * This algorithm performs graph layout (in two dimensions) for
+ * connected, undirected graphs. It operates by relating the layout
+ * of graphs to a dynamic spring system and minimizing the energy
+ * within that system. The strength of a spring between two vertices
+ * is inversely proportional to the square of the shortest distance
+ * (in graph terms) between those two vertices. Essentially,
+ * vertices that are closer in the graph-theoretic sense (i.e., by
+ * following edges) will have stronger springs and will therefore be
+ * placed closer together.
+ *
+ * Prior to invoking this algorithm, it is recommended that the
+ * vertices be placed along the vertices of a regular n-sided
+ * polygon.
+ *
+ * \param g (IN) must be a model of Vertex List Graph, Edge List
+ * Graph, and Incidence Graph and must be undirected.
+ *
+ * \param position (OUT) must be a model of Lvalue Property Map,
+ * where the value type is a class containing fields @c x and @c y
+ * that will be set to the @c x and @c y coordinates of each vertex.
+ *
+ * \param weight (IN) must be a model of Readable Property Map,
+ * which provides the weight of each edge in the graph @p g.
+ *
+ * \param edge_or_side_length (IN) provides either the unit length
+ * @c e of an edge in the layout or the length of a side @c s of the
+ * display area, and must be either @c boost::edge_length(e) or @c
+ * boost::side_length(s), respectively.
+ *
+ * \param done (IN) is a 4-argument function object that is passed
+ * the current value of delta_p (i.e., the energy of vertex @p p),
+ * the vertex @p p, the graph @p g, and a boolean flag indicating
+ * whether @p delta_p is the maximum energy in the system (when @c
+ * true) or the energy of the vertex being moved. Defaults to @c
+ * layout_tolerance instantiated over the value type of the weight
+ * map.
+ *
+ * \param spring_constant (IN) is the constant multiplied by each
+ * spring's strength. Larger values create systems with more energy
+ * that can take longer to stabilize; smaller values create systems
+ * with less energy that stabilize quickly but do not necessarily
+ * result in pleasing layouts. The default value is 1.
+ *
+ * \param index (IN) is a mapping from vertices to index values
+ * between 0 and @c num_vertices(g). The default is @c
+ * get(vertex_index,g).
+ *
+ * \param distance (UTIL/OUT) will be used to store the distance
+ * from every vertex to every other vertex, which is computed in the
+ * first stages of the algorithm. This value's type must be a model
+ * of BasicMatrix with value type equal to the value type of the
+ * weight map. The default is a a vector of vectors.
+ *
+ * \param spring_strength (UTIL/OUT) will be used to store the
+ * strength of the spring between every pair of vertices. This
+ * value's type must be a model of BasicMatrix with value type equal
+ * to the value type of the weight map. The default is a a vector of
+ * vectors.
+ *
+ * \param partial_derivatives (UTIL) will be used to store the
+ * partial derivates of each vertex with respect to the @c x and @c
+ * y coordinates. This must be a Read/Write Property Map whose value
+ * type is a pair with both types equivalent to the value type of
+ * the weight map. The default is an iterator property map.
+ *
+ * \returns @c true if layout was successful or @c false if a
+ * negative weight cycle was detected.
+ */
+ template<typename Graph, typename PositionMap, typename WeightMap,
+ typename T, bool EdgeOrSideLength, typename Done,
+ typename VertexIndexMap, typename DistanceMatrix,
+ typename SpringStrengthMatrix, typename PartialDerivativeMap>
+ bool
+ kamada_kawai_spring_layout(
+ const Graph& g,
+ PositionMap position,
+ WeightMap weight,
+ detail::graph::edge_or_side<EdgeOrSideLength, T> edge_or_side_length,
+ Done done,
+ typename property_traits<WeightMap>::value_type spring_constant,
+ VertexIndexMap index,
+ DistanceMatrix distance,
+ SpringStrengthMatrix spring_strength,
+ PartialDerivativeMap partial_derivatives)
+ {
+ BOOST_STATIC_ASSERT((is_convertible<
+ typename graph_traits<Graph>::directed_category*,
+ undirected_tag*
+ >::value));
+
+ detail::graph::kamada_kawai_spring_layout_impl<
+ Graph, PositionMap, WeightMap,
+ detail::graph::edge_or_side<EdgeOrSideLength, T>, Done, VertexIndexMap,
+ DistanceMatrix, SpringStrengthMatrix, PartialDerivativeMap>
+ alg(g, position, weight, edge_or_side_length, done, spring_constant,
+ index, distance, spring_strength, partial_derivatives);
+ return alg.run();
+ }
+
+ /**
+ * \overload
+ */
+ template<typename Graph, typename PositionMap, typename WeightMap,
+ typename T, bool EdgeOrSideLength, typename Done,
+ typename VertexIndexMap>
+ bool
+ kamada_kawai_spring_layout(
+ const Graph& g,
+ PositionMap position,
+ WeightMap weight,
+ detail::graph::edge_or_side<EdgeOrSideLength, T> edge_or_side_length,
+ Done done,
+ typename property_traits<WeightMap>::value_type spring_constant,
+ VertexIndexMap index)
+ {
+ typedef typename property_traits<WeightMap>::value_type weight_type;
+
+ typename graph_traits<Graph>::vertices_size_type n = num_vertices(g);
+ typedef std::vector<weight_type> weight_vec;
+
+ std::vector<weight_vec> distance(n, weight_vec(n));
+ std::vector<weight_vec> spring_strength(n, weight_vec(n));
+ std::vector<std::pair<weight_type, weight_type> > partial_derivatives(n);
+
+ return
+ kamada_kawai_spring_layout(
+ g, position, weight, edge_or_side_length, done, spring_constant, index,
+ distance.begin(),
+ spring_strength.begin(),
+ make_iterator_property_map(partial_derivatives.begin(), index,
+ std::pair<weight_type, weight_type>()));
+ }
+
+ /**
+ * \overload
+ */
+ template<typename Graph, typename PositionMap, typename WeightMap,
+ typename T, bool EdgeOrSideLength, typename Done>
+ bool
+ kamada_kawai_spring_layout(
+ const Graph& g,
+ PositionMap position,
+ WeightMap weight,
+ detail::graph::edge_or_side<EdgeOrSideLength, T> edge_or_side_length,
+ Done done,
+ typename property_traits<WeightMap>::value_type spring_constant)
+ {
+ return kamada_kawai_spring_layout(g, position, weight, edge_or_side_length,
+ done, spring_constant,
+ get(vertex_index, g));
+ }
+
+ /**
+ * \overload
+ */
+ template<typename Graph, typename PositionMap, typename WeightMap,
+ typename T, bool EdgeOrSideLength, typename Done>
+ bool
+ kamada_kawai_spring_layout(
+ const Graph& g,
+ PositionMap position,
+ WeightMap weight,
+ detail::graph::edge_or_side<EdgeOrSideLength, T> edge_or_side_length,
+ Done done)
+ {
+ typedef typename property_traits<WeightMap>::value_type weight_type;
+ return kamada_kawai_spring_layout(g, position, weight, edge_or_side_length,
+ done, weight_type(1));
+ }
+
+ /**
+ * \overload
+ */
+ template<typename Graph, typename PositionMap, typename WeightMap,
+ typename T, bool EdgeOrSideLength>
+ bool
+ kamada_kawai_spring_layout(
+ const Graph& g,
+ PositionMap position,
+ WeightMap weight,
+ detail::graph::edge_or_side<EdgeOrSideLength, T> edge_or_side_length)
+ {
+ typedef typename property_traits<WeightMap>::value_type weight_type;
+ return kamada_kawai_spring_layout(g, position, weight, edge_or_side_length,
+ layout_tolerance<weight_type>(),
+ weight_type(1.0),
+ get(vertex_index, g));
+ }
+} // end namespace boost
+
+#endif // BOOST_GRAPH_KAMADA_KAWAI_SPRING_LAYOUT_HPP

Added: sandbox/SOC/2008/BGL_Python/boost/graph/king_ordering.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/boost/graph/king_ordering.hpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,346 @@
+//
+//=======================================================================
+// Copyright 1997, 1998, 1999, 2000 University of Notre Dame.
+// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek
+// Doug Gregor, D. Kevin McGrath
+//
+// This file is part of the Boost Graph Library
+//
+// You should have received a copy of the License Agreement for the
+// Boost Graph Library along with the software; see the file LICENSE.
+// If not, contact Office of Research, University of Notre Dame, Notre
+// Dame, IN 46556.
+//
+// Permission to modify the code and to distribute modified code is
+// granted, provided the text of this NOTICE is retained, a notice that
+// the code was modified is included with the above COPYRIGHT NOTICE and
+// with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE
+// file is distributed with the modified code.
+//
+// LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED.
+// By way of example, but not limitation, Licensor MAKES NO
+// REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY
+// PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS
+// OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS
+// OR OTHER RIGHTS.
+//=======================================================================
+//
+#ifndef BOOST_GRAPH_KING_HPP
+#define BOOST_GRAPH_KING_HPP
+
+#include <boost/config.hpp>
+#include <boost/graph/detail/sparse_ordering.hpp>
+
+/*
+ King Algorithm for matrix reordering
+*/
+
+namespace boost {
+ namespace detail {
+ template<typename OutputIterator, typename Buffer, typename Compare,
+ typename PseudoDegreeMap, typename VecMap, typename VertexIndexMap>
+ class bfs_king_visitor:public default_bfs_visitor
+ {
+ public:
+ bfs_king_visitor(OutputIterator *iter, Buffer *b, Compare compare,
+ PseudoDegreeMap deg, std::vector<int> loc, VecMap color,
+ VertexIndexMap vertices):
+ permutation(iter), Qptr(b), degree(deg), comp(compare),
+ Qlocation(loc), colors(color), vertex_map(vertices) { }
+
+ template <typename Vertex, typename Graph>
+ void finish_vertex(Vertex, Graph& g) {
+ typename graph_traits<Graph>::out_edge_iterator ei, ei_end;
+ Vertex v, w;
+
+ typedef typename std::deque<Vertex>::iterator iterator;
+ typedef typename std::deque<Vertex>::reverse_iterator reverse_iterator;
+
+ reverse_iterator rend = Qptr->rend()-index_begin;
+ reverse_iterator rbegin = Qptr->rbegin();
+
+
+ //heap the vertices already there
+ std::make_heap(rbegin, rend, boost::bind<bool>(comp, _2, _1));
+
+ int i = 0;
+
+ for(i = index_begin; i != Qptr->size(); ++i){
+ colors[get(vertex_map, (*Qptr)[i])] = 1;
+ Qlocation[get(vertex_map, (*Qptr)[i])] = i;
+ }
+
+ i = 0;
+
+ for( ; rbegin != rend; rend--){
+ percolate_down<Vertex>(i);
+ w = (*Qptr)[index_begin+i];
+ for (tie(ei, ei_end) = out_edges(w, g); ei != ei_end; ++ei) {
+ v = target(*ei, g);
+ put(degree, v, get(degree, v) - 1);
+
+ if (colors[get(vertex_map, v)] == 1) {
+ percolate_up<Vertex>(get(vertex_map, v), i);
+ }
+ }
+
+ colors[get(vertex_map, w)] = 0;
+ i++;
+ }
+ }
+
+ template <typename Vertex, typename Graph>
+ void examine_vertex(Vertex u, const Graph&) {
+
+ *(*permutation)++ = u;
+ index_begin = Qptr->size();
+
+ }
+ protected:
+
+
+ //this function replaces pop_heap, and tracks state information
+ template <typename Vertex>
+ void percolate_down(int offset){
+ typedef typename std::deque<Vertex>::reverse_iterator reverse_iterator;
+
+ int heap_last = index_begin + offset;
+ int heap_first = Qptr->size() - 1;
+
+ //pop_heap functionality:
+ //swap first, last
+ std::swap((*Qptr)[heap_last], (*Qptr)[heap_first]);
+
+ //swap in the location queue
+ std::swap(Qlocation[heap_first], Qlocation[heap_last]);
+
+ //set drifter, children
+ int drifter = heap_first;
+ int drifter_heap = Qptr->size() - drifter;
+
+ int right_child_heap = drifter_heap * 2 + 1;
+ int right_child = Qptr->size() - right_child_heap;
+
+ int left_child_heap = drifter_heap * 2;
+ int left_child = Qptr->size() - left_child_heap;
+
+ //check that we are staying in the heap
+ bool valid = (right_child < heap_last) ? false : true;
+
+ //pick smallest child of drifter, and keep in mind there might only be left child
+ int smallest_child = (valid && get(degree, (*Qptr)[left_child]) > get(degree,(*Qptr)[right_child])) ?
+ right_child : left_child;
+
+ while(valid && smallest_child < heap_last && comp((*Qptr)[drifter], (*Qptr)[smallest_child])){
+
+ //if smallest child smaller than drifter, swap them
+ std::swap((*Qptr)[smallest_child], (*Qptr)[drifter]);
+ std::swap(Qlocation[drifter], Qlocation[smallest_child]);
+
+ //update the values, run again, as necessary
+ drifter = smallest_child;
+ drifter_heap = Qptr->size() - drifter;
+
+ right_child_heap = drifter_heap * 2 + 1;
+ right_child = Qptr->size() - right_child_heap;
+
+ left_child_heap = drifter_heap * 2;
+ left_child = Qptr->size() - left_child_heap;
+
+ valid = (right_child < heap_last) ? false : true;
+
+ smallest_child = (valid && get(degree, (*Qptr)[left_child]) > get(degree,(*Qptr)[right_child])) ?
+ right_child : left_child;
+ }
+
+ }
+
+
+
+ // this is like percolate down, but we always compare against the
+ // parent, as there is only a single choice
+ template <typename Vertex>
+ void percolate_up(int vertex, int offset){
+
+ int child_location = Qlocation[vertex];
+ int heap_child_location = Qptr->size() - child_location;
+ int heap_parent_location = (int)(heap_child_location/2);
+ int parent_location = Qptr->size() - heap_parent_location;
+
+ bool valid = (heap_parent_location != 0 && child_location > index_begin + offset &&
+ parent_location < Qptr->size());
+
+ while(valid && comp((*Qptr)[child_location], (*Qptr)[parent_location])){
+
+ //swap in the heap
+ std::swap((*Qptr)[child_location], (*Qptr)[parent_location]);
+
+ //swap in the location queue
+ std::swap(Qlocation[child_location], Qlocation[parent_location]);
+
+ child_location = parent_location;
+ heap_child_location = heap_parent_location;
+ heap_parent_location = (int)(heap_child_location/2);
+ parent_location = Qptr->size() - heap_parent_location;
+ valid = (heap_parent_location != 0 && child_location > index_begin + offset);
+ }
+ }
+
+ OutputIterator *permutation;
+ int index_begin;
+ Buffer *Qptr;
+ PseudoDegreeMap degree;
+ Compare comp;
+ std::vector<int> Qlocation;
+ VecMap colors;
+ VertexIndexMap vertex_map;
+ };
+
+
+ } // namespace detail
+
+
+ template<class Graph, class OutputIterator, class ColorMap, class DegreeMap,
+ typename VertexIndexMap>
+ OutputIterator
+ king_ordering(const Graph& g,
+ std::deque< typename graph_traits<Graph>::vertex_descriptor >
+ vertex_queue,
+ OutputIterator permutation,
+ ColorMap color, DegreeMap degree,
+ VertexIndexMap index_map)
+ {
+ typedef typename property_traits<DegreeMap>::value_type DS;
+ typedef typename property_traits<ColorMap>::value_type ColorValue;
+ typedef color_traits<ColorValue> Color;
+ typedef typename graph_traits<Graph>::vertex_descriptor Vertex;
+ typedef iterator_property_map<typename std::vector<DS>::iterator, VertexIndexMap, DS, DS&> PseudoDegreeMap;
+#ifndef LOCAL_KING
+ typedef indirect_cmp<PseudoDegreeMap, std::less<DS> > Compare;
+#else
+ typedef indirect_cmp<PseudoDegreeMap, std::greater<DS> > Compare;
+#endif
+
+ typedef typename boost::sparse::sparse_ordering_queue<Vertex> queue;
+ typedef typename detail::bfs_king_visitor<OutputIterator, queue, Compare,
+ PseudoDegreeMap, std::vector<int>, VertexIndexMap > Visitor;
+ typedef typename graph_traits<Graph>::vertices_size_type
+ vertices_size_type;
+ std::vector<DS> pseudo_degree_vec(num_vertices(g));
+ PseudoDegreeMap pseudo_degree(pseudo_degree_vec.begin(), index_map);
+
+ typename graph_traits<Graph>::vertex_iterator ui, ui_end;
+ queue Q;
+ // Copy degree to pseudo_degree
+ // initialize the color map
+ for (tie(ui, ui_end) = vertices(g); ui != ui_end; ++ui){
+ put(pseudo_degree, *ui, get(degree, *ui));
+ put(color, *ui, Color::white());
+ }
+
+ Compare comp(pseudo_degree);
+ std::vector<int> colors(num_vertices(g));
+
+ for(vertices_size_type i = 0; i < num_vertices(g); i++)
+ colors[i] = 0;
+
+ std::vector<int> loc(num_vertices(g));
+
+ //create the visitor
+ Visitor vis(&permutation, &Q, comp, pseudo_degree, loc, colors, index_map);
+
+ while( !vertex_queue.empty() ) {
+ Vertex s = vertex_queue.front();
+ vertex_queue.pop_front();
+
+ //call BFS with visitor
+ breadth_first_visit(g, s, Q, vis, color);
+ }
+
+ return permutation;
+ }
+
+
+ // This is the case where only a single starting vertex is supplied.
+ template <class Graph, class OutputIterator,
+ class ColorMap, class DegreeMap, typename VertexIndexMap>
+ OutputIterator
+ king_ordering(const Graph& g,
+ typename graph_traits<Graph>::vertex_descriptor s,
+ OutputIterator permutation,
+ ColorMap color, DegreeMap degree, VertexIndexMap index_map)
+ {
+
+ std::deque< typename graph_traits<Graph>::vertex_descriptor > vertex_queue;
+ vertex_queue.push_front( s );
+ return king_ordering(g, vertex_queue, permutation, color, degree,
+ index_map);
+ }
+
+
+ template < class Graph, class OutputIterator,
+ class ColorMap, class DegreeMap, class VertexIndexMap>
+ OutputIterator
+ king_ordering(const Graph& G, OutputIterator permutation,
+ ColorMap color, DegreeMap degree, VertexIndexMap index_map)
+ {
+ if (vertices(G).first == vertices(G).second)
+ return permutation;
+
+ typedef typename boost::graph_traits<Graph>::vertex_descriptor Vertex;
+ typedef typename boost::graph_traits<Graph>::vertex_iterator VerIter;
+ typedef typename property_traits<ColorMap>::value_type ColorValue;
+ typedef color_traits<ColorValue> Color;
+
+ std::deque<Vertex> vertex_queue;
+
+ // Mark everything white
+ BGL_FORALL_VERTICES_T(v, G, Graph) put(color, v, Color::white());
+
+ // Find one vertex from each connected component
+ BGL_FORALL_VERTICES_T(v, G, Graph) {
+ if (get(color, v) == Color::white()) {
+ depth_first_visit(G, v, dfs_visitor<>(), color);
+ vertex_queue.push_back(v);
+ }
+ }
+
+ // Find starting nodes for all vertices
+ // TBD: How to do this with a directed graph?
+ typedef typename property_traits<DegreeMap>::value_type DS;
+ typedef indirect_cmp<DegreeMap, std::less<DS> > Compare;
+ Compare comp(degree);
+
+ for (typename std::deque<Vertex>::iterator i = vertex_queue.begin();
+ i != vertex_queue.end(); ++i)
+ *i = find_starting_node(G, *i, color, comp);
+
+ return king_ordering(G, vertex_queue, permutation, color, degree,
+ index_map);
+ }
+
+ template<typename Graph, typename OutputIterator, typename VertexIndexMap>
+ OutputIterator
+ king_ordering(const Graph& G, OutputIterator permutation,
+ VertexIndexMap index_map)
+ {
+ if (vertices(G).first == vertices(G).second)
+ return permutation;
+
+ typedef out_degree_property_map<Graph> DegreeMap;
+ std::vector<default_color_type> colors(num_vertices(G));
+ return king_ordering(G, permutation,
+ make_iterator_property_map(&colors[0], index_map,
+ colors[0]),
+ make_out_degree_map(G), index_map);
+ }
+
+ template<typename Graph, typename OutputIterator>
+ inline OutputIterator
+ king_ordering(const Graph& G, OutputIterator permutation)
+ { return king_ordering(G, permutation, get(vertex_index, G)); }
+
+} // namespace boost
+
+
+#endif // BOOST_GRAPH_KING_HPP

Added: sandbox/SOC/2008/BGL_Python/boost/graph/point_traits.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/boost/graph/point_traits.hpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,26 @@
+// Copyright 2004, 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#ifndef BOOST_GRAPH_POINT_TRAITS_HPP
+#define BOOST_GRAPH_POINT_TRAITS_HPP
+
+namespace boost { namespace graph {
+
+template<typename Point>
+struct point_traits
+{
+ // The type of each component of the point
+ typedef typename Point::component_type component_type;
+
+ // The number of dimensions in the point
+ static std::size_t dimensions(const Point& point);
+};
+
+} } // end namespace boost::graph
+
+#endif // BOOST_GRAPH_POINT_TRAITS_HPP

Added: sandbox/SOC/2008/BGL_Python/boost/graph/python/astar_events.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/boost/graph/python/astar_events.hpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,17 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+
+BGL_PYTHON_EVENT(initialize_vertex, vertex)
+BGL_PYTHON_EVENT(discover_vertex, vertex)
+BGL_PYTHON_EVENT(examine_vertex, vertex)
+BGL_PYTHON_EVENT(examine_edge, edge)
+BGL_PYTHON_EVENT(edge_relaxed, edge)
+BGL_PYTHON_EVENT(edge_not_relaxed, edge)
+BGL_PYTHON_EVENT(black_target, edge)
+BGL_PYTHON_EVENT(finish_vertex, vertex)

Added: sandbox/SOC/2008/BGL_Python/boost/graph/python/bellman_ford_events.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/boost/graph/python/bellman_ford_events.hpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,15 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+BGL_PYTHON_EVENT(initialize_vertex, vertex)
+BGL_PYTHON_EVENT(examine_edge, edge)
+BGL_PYTHON_EVENT(edge_relaxed, edge)
+BGL_PYTHON_EVENT(edge_not_relaxed, edge)
+BGL_PYTHON_EVENT(edge_minimized, edge)
+BGL_PYTHON_EVENT(edge_not_minimized, edge)
+

Added: sandbox/SOC/2008/BGL_Python/boost/graph/python/bfs_events.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/boost/graph/python/bfs_events.hpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,18 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+
+BGL_PYTHON_EVENT(initialize_vertex, vertex)
+BGL_PYTHON_EVENT(discover_vertex, vertex)
+BGL_PYTHON_EVENT(examine_vertex, vertex)
+BGL_PYTHON_EVENT(examine_edge, edge)
+BGL_PYTHON_EVENT(tree_edge, edge)
+BGL_PYTHON_EVENT(non_tree_edge, edge)
+BGL_PYTHON_EVENT(gray_target, edge)
+BGL_PYTHON_EVENT(black_target, edge)
+BGL_PYTHON_EVENT(finish_vertex, vertex)

Added: sandbox/SOC/2008/BGL_Python/boost/graph/python/breadth_first_search.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/boost/graph/python/breadth_first_search.hpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,55 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#include <boost/graph/breadth_first_search.hpp>
+#include <boost/graph/python/queue.hpp>
+#include <boost/python.hpp>
+
+namespace boost { namespace graph { namespace python {
+
+using boost::python::object;
+
+#define BGL_PYTHON_VISITOR maybe_bfs_visitor
+#define BGL_PYTHON_EVENTS_HEADER <boost/graph/python/bfs_events.hpp>
+#include <boost/graph/python/visitor.hpp>
+#undef BGL_PYTHON_EVENTS_HEADER
+#undef BGL_PYTHON_VISITOR
+
+template<typename Graph>
+void
+breadth_first_search
+ (const Graph& g,
+ typename graph_traits<Graph>::vertex_descriptor s,
+ object in_Q,
+ object in_visitor,
+ vector_property_map<
+ default_color_type,
+ typename property_map<Graph, vertex_index_t>::const_type>* in_color)
+{
+ typedef typename graph_traits<Graph>::vertex_descriptor vertex_descriptor;
+
+ typedef vector_property_map<
+ default_color_type,
+ typename property_map<Graph, vertex_index_t>::const_type>
+ ColorMap;
+
+ ColorMap color(in_color? *in_color
+ /*default*/: ColorMap(num_vertices(g), get(vertex_index, g)));
+
+ bool has_default_queue = in_Q == object();
+ if (!has_default_queue || in_visitor != object()) {
+ typedef queue<vertex_descriptor> Queue;
+ maybe_python_queue<Queue> Q(in_Q, Queue());
+ maybe_bfs_visitor vis(in_visitor);
+ boost::breadth_first_search(g, s, color_map(color).visitor(vis).buffer(Q));
+ } else {
+ boost::breadth_first_search(g, s, color_map(color));
+ }
+}
+
+} } } // end namespace boost::graph::python

Added: sandbox/SOC/2008/BGL_Python/boost/graph/python/connected_components.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/boost/graph/python/connected_components.hpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,40 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#ifndef BOOST_GRAPH_PYTHON_CONNECTED_COMPONENTS_HPP
+#define BOOST_GRAPH_PYTHON_CONNECTED_COMPONENTS_HPP
+
+#include <boost/graph/connected_components.hpp>
+#include <boost/python.hpp>
+
+namespace boost { namespace graph { namespace python {
+
+using boost::python::object;
+
+template<typename Graph>
+int
+connected_components
+ (const Graph& g,
+ vector_property_map<
+ int,
+ typename property_map<Graph, vertex_index_t>::const_type>* in_color)
+{
+ typedef typename property_map<Graph, vertex_index_t>::const_type
+ VertexIndexMap;
+ typedef vector_property_map<int, VertexIndexMap> ColorMap;
+
+ ColorMap color =
+ in_color? *in_color
+ : ColorMap(num_vertices(g), get(vertex_index, g));
+
+ return boost::connected_components(g, color);
+}
+
+} } } // end namespace boost::graph::python
+
+#endif // BOOST_GRAPH_PYTHON_CONNECTED_COMPONENTS_HPP

Added: sandbox/SOC/2008/BGL_Python/boost/graph/python/dfs_events.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/boost/graph/python/dfs_events.hpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,18 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+
+BGL_PYTHON_EVENT(initialize_vertex, vertex)
+BGL_PYTHON_EVENT(start_vertex, vertex)
+BGL_PYTHON_EVENT(discover_vertex, vertex)
+BGL_PYTHON_EVENT(examine_vertex, vertex)
+BGL_PYTHON_EVENT(examine_edge, edge)
+BGL_PYTHON_EVENT(tree_edge, edge)
+BGL_PYTHON_EVENT(back_edge, edge)
+BGL_PYTHON_EVENT(forward_or_cross_edge, edge)
+BGL_PYTHON_EVENT(finish_vertex, vertex)

Added: sandbox/SOC/2008/BGL_Python/boost/graph/python/dijkstra_events.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/boost/graph/python/dijkstra_events.hpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,15 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+BGL_PYTHON_EVENT(initialize_vertex, vertex)
+BGL_PYTHON_EVENT(examine_vertex, vertex)
+BGL_PYTHON_EVENT(examine_edge, edge)
+BGL_PYTHON_EVENT(discover_vertex, vertex)
+BGL_PYTHON_EVENT(edge_relaxed, edge)
+BGL_PYTHON_EVENT(edge_not_relaxed, edge)
+BGL_PYTHON_EVENT(finish_vertex, vertex)

Added: sandbox/SOC/2008/BGL_Python/boost/graph/python/dijkstra_shortest_paths.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/boost/graph/python/dijkstra_shortest_paths.hpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,88 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#include <boost/graph/dijkstra_shortest_paths.hpp>
+#include <boost/graph/iteration_macros.hpp>
+#include <boost/python.hpp>
+
+namespace boost { namespace graph { namespace python {
+
+using boost::python::object;
+
+#define BGL_PYTHON_VISITOR maybe_dijkstra_visitor
+#define BGL_PYTHON_EVENTS_HEADER <boost/graph/python/dijkstra_events.hpp>
+#include <boost/graph/python/visitor.hpp>
+#undef BGL_PYTHON_EVENTS_HEADER
+#undef BGL_PYTHON_VISITOR
+
+template<typename Graph>
+void
+dijkstra_shortest_paths
+ (const Graph& g,
+ typename graph_traits<Graph>::vertex_descriptor s,
+ vector_property_map<
+ typename graph_traits<Graph>::vertex_descriptor,
+ typename property_map<Graph, vertex_index_t>::const_type>* in_predecessor,
+ vector_property_map<
+ float,
+ typename property_map<Graph, vertex_index_t>::const_type>* in_distance,
+ vector_property_map<
+ float,
+ typename property_map<Graph, edge_index_t>::const_type>* in_weight,
+ boost::python::object in_visitor,
+ vector_property_map<
+ default_color_type,
+ typename property_map<Graph, vertex_index_t>::const_type>* in_color)
+{
+ typedef typename property_map<Graph, vertex_index_t>::const_type
+ VertexIndexMap;
+ typedef typename property_map<Graph, edge_index_t>::const_type
+ EdgeIndexMap;
+ typedef typename graph_traits<Graph>::vertex_descriptor Vertex;
+ typedef vector_property_map<Vertex, VertexIndexMap> PredecessorMap;
+ typedef vector_property_map<float, VertexIndexMap> DistanceMap;
+ typedef vector_property_map<default_color_type, VertexIndexMap> ColorMap;
+ typedef vector_property_map<float, EdgeIndexMap> WeightMap;
+
+ PredecessorMap predecessor =
+ in_predecessor? *in_predecessor
+ : PredecessorMap(num_vertices(g), get(vertex_index, g));
+
+ DistanceMap distance =
+ in_distance? *in_distance
+ : DistanceMap(num_vertices(g), get(vertex_index, g));
+
+ ColorMap color =
+ in_color? *in_color
+ : ColorMap(num_vertices(g), get(vertex_index, g));
+
+ WeightMap weight =
+ in_weight? *in_weight
+ : WeightMap(num_edges(g), get(edge_index, g));
+
+ if (!in_weight)
+ BGL_FORALL_EDGES_T(e, g, Graph) put(weight, e, 1.0f);
+
+ if (in_visitor != object()) {
+ boost::dijkstra_shortest_paths
+ (g, s, boost::visitor(maybe_dijkstra_visitor(in_visitor)).
+ predecessor_map(predecessor).
+ distance_map(distance).
+ weight_map(weight).
+ color_map(color));
+ } else {
+ boost::dijkstra_shortest_paths
+ (g, s,
+ predecessor_map(predecessor).
+ distance_map(distance).
+ weight_map(weight).
+ color_map(color));
+ }
+}
+
+} } } // end namespace boost::graph::python

Added: sandbox/SOC/2008/BGL_Python/boost/graph/python/distributed/boman_et_al_graph_coloring.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/boost/graph/python/distributed/boman_et_al_graph_coloring.hpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,37 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#include <boost/graph/distributed/boman_et_al_graph_coloring.hpp>
+#include <boost/python.hpp>
+
+namespace boost { namespace graph { namespace python { namespace distributed {
+
+using boost::python::object;
+
+template<typename Graph>
+int
+boman_et_al_graph_coloring
+ (const Graph& g,
+ vector_property_map<
+ int,
+ typename property_map<Graph, vertex_index_t>::const_type>* in_color,
+ typename graph_traits<Graph>::vertices_size_type chunk_size = 100)
+{
+ typedef typename property_map<Graph, vertex_index_t>::const_type
+ VertexIndexMap;
+ typedef vector_property_map<int, VertexIndexMap> ColorMap;
+
+ ColorMap color =
+ in_color? *in_color
+ : ColorMap(num_vertices(g), get(vertex_index, g));
+
+ return boost::graph::distributed::boman_et_al_graph_coloring(g, color,
+ chunk_size);
+}
+
+} } } } // end namespace boost::graph::python::distributed

Added: sandbox/SOC/2008/BGL_Python/boost/graph/python/distributed/breadth_first_search.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/boost/graph/python/distributed/breadth_first_search.hpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,43 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#include <boost/graph/python/breadth_first_search.hpp>
+
+namespace boost { namespace graph { namespace python { namespace distributed {
+
+using boost::python::object;
+
+template<typename Graph>
+void
+breadth_first_search
+ (const Graph& g,
+ typename graph_traits<Graph>::vertex_descriptor s,
+ object in_visitor,
+ vector_property_map<
+ default_color_type,
+ typename property_map<Graph, vertex_index_t>::const_type>* in_color)
+{
+ typedef typename graph_traits<Graph>::vertex_descriptor vertex_descriptor;
+
+ typedef vector_property_map
+ <default_color_type,
+ typename property_map<Graph, vertex_index_t>::const_type>
+ ColorMap;
+
+ ColorMap color(in_color? *in_color
+ /*default*/: ColorMap(num_vertices(g), get(vertex_index, g)));
+
+ if (in_visitor != object()) {
+ maybe_bfs_visitor vis(in_visitor);
+ boost::breadth_first_search(g, s, color_map(color).visitor(vis));
+ } else {
+ boost::breadth_first_search(g, s, color_map(color));
+ }
+}
+
+} } } } // end namespace boost::graph::python::distributed

Added: sandbox/SOC/2008/BGL_Python/boost/graph/python/distributed/dehne_gotz_min_spanning_tree.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/boost/graph/python/distributed/dehne_gotz_min_spanning_tree.hpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,84 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#include <boost/graph/distributed/dehne_gotz_min_spanning_tree.hpp>
+#include <boost/python.hpp>
+#include <boost/graph/python/list_append_iterator.hpp>
+#include <boost/graph/distributed/vertex_list_adaptor.hpp>
+
+namespace boost { namespace graph { namespace python { namespace distributed {
+
+using boost::python::object;
+using boost::python::list;
+
+template<typename Graph>
+list
+dense_boruvka_minimum_spanning_tree
+ (const Graph& g,
+ vector_property_map<
+ float,
+ typename property_map<Graph, edge_index_t>::const_type>& weight_map)
+{
+ using boost::graph::make_vertex_list_adaptor;
+
+ list result;
+ boost::graph::distributed::dense_boruvka_minimum_spanning_tree
+ (make_vertex_list_adaptor(g), weight_map, list_append_iterator(result));
+ return result;
+}
+
+template<typename Graph>
+list
+merge_local_minimum_spanning_trees
+ (const Graph& g,
+ vector_property_map<
+ float,
+ typename property_map<Graph, edge_index_t>::const_type>& weight_map)
+{
+ using boost::graph::make_vertex_list_adaptor;
+
+ list result;
+ boost::graph::distributed::merge_local_minimum_spanning_trees
+ (make_vertex_list_adaptor(g), weight_map, list_append_iterator(result));
+ return result;
+}
+
+
+template<typename Graph>
+list
+boruvka_then_merge
+ (const Graph& g,
+ vector_property_map<
+ float,
+ typename property_map<Graph, edge_index_t>::const_type> weight_map)
+{
+ using boost::graph::make_vertex_list_adaptor;
+
+ list result;
+ boost::graph::distributed::boruvka_then_merge
+ (make_vertex_list_adaptor(g), weight_map, list_append_iterator(result));
+ return result;
+}
+
+template<typename Graph>
+list
+boruvka_mixed_merge
+ (const Graph& g,
+ vector_property_map<
+ float,
+ typename property_map<Graph, edge_index_t>::const_type> weight_map)
+{
+ using boost::graph::make_vertex_list_adaptor;
+
+ list result;
+ boost::graph::distributed::boruvka_mixed_merge
+ (make_vertex_list_adaptor(g), weight_map, list_append_iterator(result));
+ return result;
+}
+
+} } } } // end namespace boost::graph::python::distributed

Added: sandbox/SOC/2008/BGL_Python/boost/graph/python/distributed/dijkstra_shortest_paths.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/boost/graph/python/distributed/dijkstra_shortest_paths.hpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,93 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#include <boost/graph/dijkstra_shortest_paths.hpp>
+#include <boost/python.hpp>
+#include <boost/graph/python/dijkstra_shortest_paths.hpp>
+
+namespace boost { namespace graph { namespace python { namespace distributed {
+
+using boost::python::object;
+
+template<typename Graph>
+void
+dijkstra_shortest_paths
+ (const Graph& g,
+ typename graph_traits<Graph>::vertex_descriptor s,
+ vector_property_map<
+ typename graph_traits<Graph>::vertex_descriptor,
+ typename property_map<Graph, vertex_index_t>::const_type>* in_predecessor,
+ vector_property_map<
+ float,
+ typename property_map<Graph, vertex_index_t>::const_type>* in_distance,
+ vector_property_map<
+ float,
+ typename property_map<Graph, edge_index_t>::const_type>& weight,
+ boost::python::object in_visitor,
+ vector_property_map<
+ default_color_type,
+ typename property_map<Graph, vertex_index_t>::const_type>* in_color,
+ float lookahead)
+{
+ typedef typename property_map<Graph, vertex_index_t>::const_type
+ VertexIndexMap;
+ typedef typename graph_traits<Graph>::vertex_descriptor Vertex;
+ typedef vector_property_map<Vertex, VertexIndexMap> PredecessorMap;
+ typedef vector_property_map<float, VertexIndexMap> DistanceMap;
+ typedef vector_property_map<default_color_type, VertexIndexMap> ColorMap;
+
+ PredecessorMap predecessor =
+ in_predecessor? *in_predecessor
+ : PredecessorMap(num_vertices(g), get(vertex_index, g));
+
+ DistanceMap distance =
+ in_distance? *in_distance
+ : DistanceMap(num_vertices(g), get(vertex_index, g));
+
+ ColorMap color =
+ in_color? *in_color
+ : ColorMap(num_vertices(g), get(vertex_index, g));
+
+ if (lookahead >= 0.0) {
+ if (in_visitor != object()) {
+ boost::dijkstra_shortest_paths
+ (g, s, boost::visitor(maybe_dijkstra_visitor(in_visitor)).
+ predecessor_map(predecessor).
+ distance_map(distance).
+ weight_map(weight).
+ color_map(color).
+ lookahead(lookahead));
+ } else {
+ boost::dijkstra_shortest_paths
+ (g, s,
+ predecessor_map(predecessor).
+ distance_map(distance).
+ weight_map(weight).
+ color_map(color).
+ lookahead(lookahead));
+ }
+ } else {
+ if (in_visitor != object()) {
+ boost::dijkstra_shortest_paths
+ (g, s, boost::visitor(maybe_dijkstra_visitor(in_visitor)).
+ predecessor_map(predecessor).
+ distance_map(distance).
+ weight_map(weight).
+ color_map(color));
+ } else {
+ boost::dijkstra_shortest_paths
+ (g, s,
+ predecessor_map(predecessor).
+ distance_map(distance).
+ weight_map(weight).
+ color_map(color));
+ }
+ }
+}
+
+} } } } // end namespace boost::graph::python::distributed

Added: sandbox/SOC/2008/BGL_Python/boost/graph/python/distributed/dinic_max_flow.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/boost/graph/python/distributed/dinic_max_flow.hpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,38 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#include <boost/graph/distributed/dinic_max_flow.hpp>
+#include <boost/python.hpp>
+
+namespace boost { namespace graph { namespace python { namespace distributed {
+
+using boost::python::object;
+
+template<typename Graph>
+int
+dinic_max_flow
+ (const Graph& g,
+ typename graph_traits<Graph>::vertex_descriptor s,
+ typename graph_traits<Graph>::vertex_descriptor t,
+ vector_property_map<
+ int,
+ typename property_map<Graph, edge_index_t>::const_type>& capacity,
+ vector_property_map<
+ int,
+ typename property_map<Graph, edge_index_t>::const_type>* in_flow)
+{
+ typedef typename property_map<Graph, edge_index_t>::const_type
+ EdgeIndexMap;
+ typedef vector_property_map<int, EdgeIndexMap> FlowMap;
+
+ FlowMap flow = in_flow? *in_flow : FlowMap(num_edges(g), get(edge_index, g));
+
+ return boost::graph::distributed::dinic_max_flow(g, s, t, capacity, flow);
+}
+
+} } } } // end namespace boost::graph::python::distributed

Added: sandbox/SOC/2008/BGL_Python/boost/graph/python/distributed/graphviz.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/boost/graph/python/distributed/graphviz.hpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,64 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#ifndef BOOST_GRAPH_PYTHON_METIS_HPP
+#define BOOST_GRAPH_PYTHON_METIS_HPP
+
+#include <memory>
+#include <boost/python.hpp>
+#include <boost/parallel/container_traits.hpp>
+#include <boost/graph/graph_traits.hpp>
+#include <boost/graph/python/graph.hpp>
+#include <boost/graph/distributed/graphviz.hpp>
+#include <iostream>
+#include <string>
+
+namespace boost { namespace graph { namespace python { namespace distributed {
+
+using boost::python::object;
+
+class python_graphviz_writer
+{
+ public:
+ python_graphviz_writer(object callable) : callable(callable) { }
+
+ void operator()(std::ostream& out)
+ {
+ using boost::python::extract;
+
+ if (callable != object())
+ out << std::string(extract<std::string>(callable()));
+ }
+
+ template<typename Descriptor>
+ void operator()(std::ostream& out, Descriptor x)
+ {
+ using boost::python::extract;
+
+ if (callable != object())
+ out << std::string(extract<std::string>(callable(x)));
+ }
+
+ private:
+ object callable;
+};
+
+template<typename Graph>
+void
+write_graphviz(const Graph& g, const std::string& filename,
+ object vpw, object epw, object gpw)
+{
+ boost::write_graphviz_distributed(filename.c_str(), g,
+ python_graphviz_writer(vpw),
+ python_graphviz_writer(epw),
+ python_graphviz_writer(gpw));
+}
+
+} } } } // end namespace boost::graph::python::distributed
+
+#endif // BOOST_GRAPH_PYTHON_METIS_HPP

Added: sandbox/SOC/2008/BGL_Python/boost/graph/python/distributed/metis.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/boost/graph/python/distributed/metis.hpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,46 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#ifndef BOOST_GRAPH_PYTHON_METIS_HPP
+#define BOOST_GRAPH_PYTHON_METIS_HPP
+
+#include <memory>
+#include <boost/python.hpp>
+#include <boost/parallel/container_traits.hpp>
+#include <boost/graph/graph_traits.hpp>
+#include <boost/graph/python/graph.hpp>
+#include <boost/graph/metis.hpp>
+#include <fstream>
+#include <string>
+
+namespace boost { namespace graph { namespace python { namespace distributed {
+
+template<typename Graph>
+Graph*
+read_metis_graph(const std::string& graph_file,
+ const std::string& partition_file)
+{
+ std::ifstream in_graph(graph_file.c_str());
+ boost::graph::metis_reader reader(in_graph);
+ if (!partition_file.empty()) {
+ return new Graph(reader.begin(), reader.end(), reader.num_vertices());
+ } else {
+ typedef typename boost::parallel::process_group_type<Graph>::type
+ process_group_type;
+
+ process_group_type pg;
+ std::ifstream in_partition(partition_file.c_str());
+ boost::graph::metis_distribution dist(in_partition, process_id(pg));
+ return new Graph(reader.begin(), reader.end(), reader.num_vertices(),
+ pg, dist);
+ }
+}
+
+} } } } // end namespace boost::graph::python::distributed
+
+#endif // BOOST_GRAPH_PYTHON_METIS_HPP

Added: sandbox/SOC/2008/BGL_Python/boost/graph/python/dynamic_properties.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/boost/graph/python/dynamic_properties.hpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,252 @@
+// Copyright (C) 2005, 2006 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+
+#ifndef BOOST_GRAPH_PYTHOH_DYNAMIC_PROPERTIES_HPP
+#define BOOST_GRAPH_PYTHOH_DYNAMIC_PROPERTIES_HPP
+
+#include <boost/dynamic_property_map.hpp>
+#include <boost/python.hpp>
+#include <boost/graph/graph_traits.hpp>
+#include <boost/graph/iteration_macros.hpp>
+#include <boost/vector_property_map.hpp>
+#include <string>
+#include <memory>
+#include <boost/graph/python/resizable_property_map.hpp>
+#include <boost/graph/python/python_property_map.hpp>
+
+namespace boost { namespace graph { namespace python {
+
+template<typename PropertyMap>
+class python_dynamic_adaptor
+ : public boost::detail::dynamic_property_map_adaptor<PropertyMap>
+{
+ typedef boost::detail::dynamic_property_map_adaptor<PropertyMap> inherited;
+
+public:
+ typedef typename property_traits<PropertyMap>::key_type key_type;
+ typedef typename property_traits<PropertyMap>::value_type value_type;
+
+ explicit python_dynamic_adaptor(const PropertyMap& property_map)
+ : inherited(property_map) { }
+
+ virtual std::string get_string(const any& key)
+ {
+ using boost::python::extract;
+ using boost::python::str;
+ using boost::get;
+
+ return extract<const char*>(str(get(this->base(), any_cast<key_type>(key))))();
+ }
+
+ virtual void put(const any& key, const any& value)
+ {
+ using boost::put;
+ using boost::graph::python::put;
+ using boost::python::object;
+ using boost::python::str;
+
+ if (const str* str_ptr = any_cast<str>(&value))
+ put(this->base(), any_cast<key_type>(key), *str_ptr);
+ else if (const std::string* str_ptr = any_cast<std::string>(&value))
+ put(this->base(), any_cast<key_type>(key), str(str_ptr->c_str()));
+ else if (const bool* bool_ptr = any_cast<bool>(&value))
+ put(this->base(), any_cast<key_type>(key), object(*bool_ptr));
+ else if (const int* int_ptr = any_cast<int>(&value))
+ put(this->base(), any_cast<key_type>(key), object(*int_ptr));
+ else if (const long* long_ptr = any_cast<long>(&value))
+ put(this->base(), any_cast<key_type>(key), object(*long_ptr));
+ else if (const float* float_ptr = any_cast<float>(&value))
+ put(this->base(), any_cast<key_type>(key), object(*float_ptr));
+ else if (const double* double_ptr = any_cast<double>(&value))
+ put(this->base(), any_cast<key_type>(key), object(*double_ptr));
+ else
+ assert(false);
+ }
+};
+
+template<typename Graph>
+struct build_string_property_maps
+{
+ typedef typename property_map<Graph, vertex_index_t>::const_type
+ VertexIndexMap;
+ typedef typename property_map<Graph, edge_index_t>::const_type
+ EdgeIndexMap;
+ typedef typename graph_traits<Graph>::vertex_descriptor Vertex;
+ typedef typename graph_traits<Graph>::edge_descriptor Edge;
+
+ build_string_property_maps(Graph* g) : g(g) { }
+
+ std::auto_ptr<boost::dynamic_property_map>
+ operator()(const std::string& name, const boost::any& key,
+ const boost::any& value)
+ {
+ std::auto_ptr<boost::dynamic_property_map> result(0);
+
+ if (key.type() == typeid(Vertex)) {
+ // Create property map and place it in the graph
+ typedef python_property_map<vertex_index_t, Graph> property_map_type;
+ property_map_type pmap(g, "string");
+ g->vertex_properties()[name] = boost::python::object(pmap);
+
+ // Build an entry for dynamic_properties
+ typedef python_dynamic_adaptor<property_map_type> adaptor_type;
+ result.reset(new adaptor_type(pmap));
+ } else if (key.type() == typeid(Edge)) {
+ // Create property map and place it in the graph
+ typedef python_property_map<edge_index_t, Graph> property_map_type;
+ property_map_type pmap(g, "string");
+ g->edge_properties()[name] = boost::python::object(pmap);
+
+ // Build an entry for dynamic_properties
+ typedef python_dynamic_adaptor<property_map_type> adaptor_type;
+ result.reset(new adaptor_type(pmap));
+ }
+ return result;
+ }
+
+private:
+ Graph* g;
+};
+
+template<typename Graph>
+struct build_python_property_maps
+{
+ typedef typename property_map<Graph, vertex_index_t>::const_type
+ VertexIndexMap;
+ typedef typename property_map<Graph, edge_index_t>::const_type
+ EdgeIndexMap;
+ typedef typename graph_traits<Graph>::vertex_descriptor Vertex;
+ typedef typename graph_traits<Graph>::edge_descriptor Edge;
+
+ build_python_property_maps(Graph* g) : g(g) { }
+
+ std::auto_ptr<boost::dynamic_property_map>
+ operator()(const std::string& name, const boost::any& key,
+ const boost::any& value)
+ {
+ std::auto_ptr<boost::dynamic_property_map> result(0);
+
+ if (key.type() == typeid(Vertex)) {
+ // Create property map and place it in the graph
+ typedef python_property_map<vertex_index_t, Graph> property_map_type;
+ property_map_type pmap(g, type_from_value(value));
+ g->vertex_properties()[name] = boost::python::object(pmap);
+
+ // Build an entry for dynamic_properties
+ typedef python_dynamic_adaptor<property_map_type> adaptor_type;
+ result.reset(new adaptor_type(pmap));
+ } else if (key.type() == typeid(Edge)) {
+ // Create property map and place it in the graph
+ typedef python_property_map<edge_index_t, Graph> property_map_type;
+ property_map_type pmap(g, type_from_value(value));
+ g->edge_properties()[name] = boost::python::object(pmap);
+
+ // Build an entry for dynamic_properties
+ typedef python_dynamic_adaptor<property_map_type> adaptor_type;
+ result.reset(new adaptor_type(pmap));
+ }
+ return result;
+ }
+
+ static const char* type_from_value(const any& value)
+ {
+ if (value.type() == typeid(bool))
+ return "integer";
+ else if (value.type() == typeid(int) || value.type() == typeid(long))
+ return "integer";
+ else if (value.type() == typeid(float) || value.type() == typeid(double))
+ return "float";
+ else if (value.type() == typeid(std::string))
+ return "string";
+ else
+ return "string";
+ }
+
+private:
+ Graph* g;
+};
+
+template<typename Key>
+struct object_as_string_property_map
+{
+ typedef Key key_type;
+ typedef std::string value_type;
+ typedef value_type reference;
+ typedef readable_property_map_tag category;
+
+ explicit object_as_string_property_map(boost::python::object pmap)
+ : pmap(pmap) { }
+
+ boost::python::object pmap;
+};
+
+template<typename Key>
+std::string
+get(object_as_string_property_map<Key> pmap,
+ typename object_as_string_property_map<Key>::key_type key)
+{
+ using boost::python::extract;
+ return std::string(extract<const char*>(pmap.pmap[key]));
+}
+
+template<typename Key>
+struct object_as_str_property_map
+{
+ typedef Key key_type;
+ typedef boost::python::str value_type;
+ typedef value_type reference;
+ typedef readable_property_map_tag category;
+
+ explicit object_as_str_property_map(boost::python::object pmap)
+ : pmap(pmap) { }
+
+ boost::python::object pmap;
+};
+
+template<typename Key>
+boost::python::str
+get(object_as_str_property_map<Key> pmap,
+ typename object_as_str_property_map<Key>::key_type key)
+{
+ return boost::python::str(pmap.pmap[key]);
+}
+
+// Converts a Python dictionary into a dynamic_properties structure.
+template<typename Key>
+void
+dict_to_properties(const boost::python::dict& in, dynamic_properties& out)
+{
+ using boost::python::object;
+ using boost::python::extract;
+
+ try {
+ object iter = in.iteritems();
+ while (true) {
+ object item = iter.attr("next")();
+ std::string name;
+ name = extract<const char*>(item[0]);
+ out.property(name, object_as_str_property_map<Key>(item[1]));
+ }
+ } catch (...) {
+ if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) {
+ // Swallow the exception
+ PyErr_Clear();
+ } else {
+ throw;
+ }
+ }
+}
+
+} } } // end namespace boost::graph::python
+
+namespace boost {
+ using boost::graph::python::get;
+}
+
+#endif // BOOST_GRAPH_PYTHOH_DYNAMIC_PROPERTIES_HPP

Added: sandbox/SOC/2008/BGL_Python/boost/graph/python/generators.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/boost/graph/python/generators.hpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,62 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#ifndef BOOST_GRAPH_PYTHON_GENERATORS_HPP
+#define BOOST_GRAPH_PYTHON_GENERATORS_HPP
+
+#include <memory>
+#include <boost/python.hpp>
+#include <boost/graph/graph_traits.hpp>
+#include <boost/graph/python/graph.hpp>
+#include <boost/random/linear_congruential.hpp>
+#include <boost/graph/erdos_renyi_generator.hpp>
+#include <boost/graph/plod_generator.hpp>
+#include <boost/graph/small_world_generator.hpp>
+
+namespace boost { namespace graph { namespace python {
+
+template<typename Graph>
+boost::python::object
+erdos_renyi_graph(typename graph_traits<Graph>::vertices_size_type n,
+ double prob, bool allow_self_loops = false, int seed = 1)
+{
+ typedef erdos_renyi_iterator<minstd_rand, Graph> iterator;
+ minstd_rand gen(seed);
+ return Graph::pyconstruct(iterator(gen, n, prob, allow_self_loops),
+ iterator(), n);
+}
+
+template<typename Graph>
+boost::python::object
+plod_graph(typename graph_traits<Graph>::vertices_size_type n,
+ double alpha, double beta, bool allow_self_loops = false,
+ int seed = 1)
+{
+ typedef plod_iterator<minstd_rand, Graph> iterator;
+ minstd_rand gen(seed);
+ return Graph::pyconstruct(iterator(gen, n, alpha, beta, allow_self_loops),
+ iterator(), n);
+}
+
+template<typename Graph>
+boost::python::object
+small_world_graph(typename graph_traits<Graph>::vertices_size_type n,
+ typename graph_traits<Graph>::vertices_size_type k,
+ double prob, bool allow_self_loops = false,
+ bool allow_multiple_edges = true, int seed = 1)
+{
+ typedef small_world_iterator<minstd_rand, Graph> iterator;
+ minstd_rand gen(seed);
+ return Graph::pyconstruct(iterator(gen, n, k, prob,
+ allow_self_loops, allow_multiple_edges),
+ iterator(), n);
+}
+
+} } } // end namespace boost::graph::python
+
+#endif // BOOST_GRAPH_PYTHON_GENERATORS_HPP

Added: sandbox/SOC/2008/BGL_Python/boost/graph/python/graph.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/boost/graph/python/graph.hpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,388 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#ifndef BOOST_PARALLEL_GRAPH_PYTHON_GRAPH_HPP
+#define BOOST_PARALLEL_GRAPH_PYTHON_GRAPH_HPP
+
+#include <string>
+#include <boost/python.hpp>
+#include <boost/graph/graph_traits.hpp>
+#include <boost/graph/python/iterator.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/graph/iteration_macros.hpp>
+#include <boost/graph/properties.hpp>
+
+namespace boost { namespace graph { namespace python {
+
+enum graph_doc_kind {
+ gd_vertex_iterator,
+ gd_num_vertices,
+ gd_vertices,
+ gd_edge_iterator,
+ gd_num_edges,
+ gd_edges,
+ gd_out_edge_iterator,
+ gd_source,
+ gd_target,
+ gd_out_degree,
+ gd_out_edges,
+ gd_in_edge_iterator,
+ gd_in_degree,
+ gd_in_edges,
+ gd_adjacency_iterator,
+ gd_adjacent_vertices,
+ gd_add_edge,
+ gd_remove_edge,
+ gd_add_vertex,
+ gd_clear_vertex,
+ gd_remove_vertex,
+ gd_last
+};
+
+extern const char* graph_docs[gd_last];
+
+using boost::python::class_;
+
+namespace detail {
+
+ template<typename Graph>
+ inline void
+ maybe_index_vertex(typename graph_traits<Graph>::vertex_descriptor u,
+ Graph& g, mpl::true_)
+ {
+ put(vertex_index, g, u, num_vertices(g));
+ }
+
+ template<typename Graph>
+ inline void
+ maybe_index_vertex(typename graph_traits<Graph>::vertex_descriptor,
+ Graph&, mpl::false_)
+ {
+ }
+
+ template<typename Graph>
+ void maybe_reindex_vertices(Graph& g, mpl::true_)
+ {
+ typename graph_traits<Graph>::vertices_size_type index = 0;
+ BGL_FORALL_VERTICES_T (v, g, Graph)
+ put(vertex_index, g, v, index++);
+ }
+
+ template<typename Graph>
+ inline void maybe_reindex_vertices(Graph& g, mpl::false_)
+ {
+ }
+
+ template<typename Graph>
+ inline void
+ maybe_index_edge(typename graph_traits<Graph>::edge_descriptor e,
+ Graph& g, mpl::true_)
+ {
+ put(edge_index, g, e, num_edges(g));
+ }
+
+ template<typename Graph>
+ inline void
+ maybe_index_edge(typename graph_traits<Graph>::edge_descriptor,
+ Graph&, mpl::false_)
+ {
+ }
+
+ template<typename Graph>
+ void maybe_reindex_edges(Graph& g, mpl::true_)
+ {
+ typename graph_traits<Graph>::edges_size_type index = 0;
+ BGL_FORALL_EDGES_T (e, g, Graph)
+ put(edge_index, g, e, index++);
+ }
+
+ template<typename Graph>
+ inline void maybe_reindex_edges(Graph& g, mpl::false_)
+ {
+ }
+}
+
+template<typename T>
+boost::python::object pod_getstate(const T& value)
+{
+ using boost::python::list;
+
+ list bytes;
+ const char* data = reinterpret_cast<const char*>(&value);
+ for (std::size_t i = 0; i < sizeof(T); ++i)
+ bytes.append(data[i]);
+ return bytes;
+}
+
+template<typename T>
+void pod_setstate(T& value, boost::python::object state)
+{
+ using boost::python::list;
+ using boost::python::extract;
+
+ list bytes = extract<list>(state);
+ char* data = reinterpret_cast<char*>(&value);
+ for (std::size_t i = 0; i < sizeof(T); ++i)
+ data[i] = extract<char>(bytes[i]);
+}
+
+template<typename Graph>
+class graph
+{
+ typedef graph_traits<Graph> Traits;
+ typedef typename Traits::vertex_descriptor vertex_descriptor;
+ typedef typename Traits::edge_descriptor edge_descriptor;
+
+ public:
+ template<typename T, typename Basis, typename HeldType, typename NonCopyable>
+ graph(class_<T, Basis, HeldType, NonCopyable>&)
+ : vertex_class("Vertex"), edge_class("Edge")
+ {
+ using boost::python::self;
+
+ vertex_class
+ .def(self == self)
+ .def(self != self)
+ .enable_pickling()
+ .def("__getstate__", &pod_getstate<vertex_descriptor>)
+ .def("__setstate__", &pod_setstate<vertex_descriptor>)
+ ;
+
+ edge_class
+ .def(self == self)
+ .def(self != self)
+ .enable_pickling()
+ .def("__getstate__", &pod_getstate<edge_descriptor>)
+ .def("__setstate__", &pod_setstate<edge_descriptor>)
+ ;
+ }
+
+ boost::python::class_<vertex_descriptor> vertex_class;
+ boost::python::class_<edge_descriptor> edge_class;
+};
+
+template<typename Graph>
+class vertex_list_graph
+{
+ typedef graph_traits<Graph> Traits;
+ typedef typename Traits::vertices_size_type vertices_size_type;
+ typedef typename Traits::vertex_iterator vertex_iterator;
+
+ static vertices_size_type py_num_vertices(const Graph& g)
+ {
+ return num_vertices(g);
+ }
+
+ static simple_python_iterator<vertex_iterator> py_vertices(const Graph& g)
+ {
+ return simple_python_iterator<vertex_iterator>(vertices(g));
+ }
+
+public:
+ template<typename T, typename Basis, typename HeldType, typename NonCopyable>
+ vertex_list_graph(class_<T, Basis, HeldType, NonCopyable>& graph)
+ {
+ simple_python_iterator<vertex_iterator>
+ ::declare("VertexIterator", graph_docs[gd_vertex_iterator]);
+ graph.def("num_vertices", &py_num_vertices, graph_docs[gd_num_vertices])
+ .add_property("vertices", &py_vertices, graph_docs[gd_vertices]);
+ }
+};
+
+template<typename Graph>
+class edge_list_graph
+{
+ typedef graph_traits<Graph> Traits;
+ typedef typename Traits::edges_size_type edges_size_type;
+ typedef typename Traits::edge_iterator edge_iterator;
+
+ static edges_size_type py_num_edges(const Graph& g)
+ {
+ return num_edges(g);
+ }
+
+ static simple_python_iterator<edge_iterator> py_edges(const Graph& g)
+ {
+ return simple_python_iterator<edge_iterator>(edges(g));
+ }
+
+public:
+ template<typename T, typename Basis, typename HeldType, typename NonCopyable>
+ edge_list_graph(class_<T, Basis, HeldType, NonCopyable>& graph)
+ {
+ simple_python_iterator<edge_iterator>
+ ::declare("EdgeIterator", graph_docs[gd_edge_iterator]);
+ graph.def("num_edges", &py_num_edges, graph_docs[gd_num_edges])
+ .add_property("edges", &py_edges, graph_docs[gd_edges]);
+ }
+};
+
+template<typename Graph>
+class incidence_graph
+{
+ typedef graph_traits<Graph> Traits;
+ typedef typename Traits::out_edge_iterator out_edge_iterator;
+ typedef typename Traits::degree_size_type degree_size_type;
+ typedef typename Traits::vertex_descriptor vertex_descriptor;
+ typedef typename Traits::edge_descriptor edge_descriptor;
+
+ static vertex_descriptor py_source(const Graph& g, edge_descriptor edge)
+ {
+ return source(edge, g);
+ }
+
+ static vertex_descriptor py_target(const Graph& g, edge_descriptor edge)
+ {
+ return target(edge, g);
+ }
+
+ static degree_size_type py_out_degree(const Graph& g, vertex_descriptor u)
+ {
+ return out_degree(u, g);
+ }
+
+ static simple_python_iterator<out_edge_iterator>
+ py_out_edges(const Graph& g, vertex_descriptor u)
+ {
+ return simple_python_iterator<out_edge_iterator>(out_edges(u, g));
+ }
+
+public:
+ template<typename T, typename Basis, typename HeldType, typename NonCopyable>
+ incidence_graph(class_<T, Basis, HeldType, NonCopyable>& graph)
+ {
+ simple_python_iterator<out_edge_iterator>
+ ::declare("OutEdgeIterator", graph_docs[gd_out_edge_iterator]);
+ graph.def("source", &py_source, graph_docs[gd_source])
+ .def("target", &py_target, graph_docs[gd_target])
+ .def("out_degree", &py_out_degree, graph_docs[gd_out_degree])
+ .def("out_edges", &py_out_edges, graph_docs[gd_out_edges]);
+ }
+};
+
+template<typename Graph>
+class bidirectional_graph
+{
+ typedef graph_traits<Graph> Traits;
+ typedef typename Traits::in_edge_iterator in_edge_iterator;
+ typedef typename Traits::degree_size_type degree_size_type;
+ typedef typename Traits::vertex_descriptor vertex_descriptor;
+ typedef typename Traits::edge_descriptor edge_descriptor;
+
+ static degree_size_type py_in_degree(const Graph& g, vertex_descriptor u)
+ {
+ return in_degree(u, g);
+ }
+
+ static simple_python_iterator<in_edge_iterator>
+ py_in_edges(const Graph& g, vertex_descriptor u)
+ {
+ return simple_python_iterator<in_edge_iterator>(in_edges(u, g));
+ }
+
+public:
+ template<typename T, typename Basis, typename HeldType, typename NonCopyable>
+ bidirectional_graph(class_<T, Basis, HeldType, NonCopyable>& graph)
+ {
+ simple_python_iterator<in_edge_iterator>
+ ::declare("InEdgeIterator", graph_docs[gd_in_edge_iterator]);
+ graph.def("in_degree", &py_in_degree, graph_docs[gd_in_degree])
+ .def("in_edges", &py_in_edges, graph_docs[gd_in_edges]);
+ }
+};
+
+template<typename Graph>
+class adjacency_graph
+{
+ typedef graph_traits<Graph> Traits;
+ typedef typename Traits::adjacency_iterator adjacency_iterator;
+ typedef typename Traits::vertex_descriptor vertex_descriptor;
+
+ static simple_python_iterator<adjacency_iterator>
+ py_adjacent_vertices(const Graph& g, vertex_descriptor u)
+ {
+ return simple_python_iterator<adjacency_iterator>(adjacent_vertices(u, g));
+ }
+
+public:
+ template<typename T, typename Basis, typename HeldType, typename NonCopyable>
+ adjacency_graph(class_<T, Basis, HeldType, NonCopyable>& graph)
+ {
+ simple_python_iterator<adjacency_iterator>
+ ::declare("AdjacencyIterator", graph_docs[gd_adjacency_iterator]);
+ graph.def("adjacent_vertices", &py_adjacent_vertices,
+ graph_docs[gd_adjacent_vertices]);
+ }
+};
+
+template<typename Graph,
+ bool AutoIndexVertices = false,
+ bool AutoIndexEdges = false>
+class mutable_graph
+{
+ typedef graph_traits<Graph> Traits;
+ typedef typename Traits::vertex_descriptor vertex_descriptor;
+ typedef typename Traits::edge_descriptor edge_descriptor;
+
+ static edge_descriptor
+ py_add_edge(Graph& g, vertex_descriptor u, vertex_descriptor v)
+ {
+ edge_descriptor e = add_edge(u, v, g).first;
+ detail::maybe_index_edge(e, g, mpl::bool_<AutoIndexEdges>());
+ return e;
+ }
+
+ // TBD: remove_edge(u, v)
+
+ static void
+ py_remove_edge(Graph& g, edge_descriptor e)
+ {
+ remove_edge(e, g);
+ detail::maybe_reindex_edges(g, mpl::bool_<AutoIndexEdges>());
+ }
+
+ // TBD: remove_edge(iter, g)
+ // TBD: remove_edge_if(p, g)
+ // TBD: remove_out_edge_if(u, p, g)
+ // TBD: remove_in_edge_if(u, p, g)
+
+ static vertex_descriptor py_add_vertex(Graph& g)
+ {
+ vertex_descriptor v = add_vertex(g);
+ detail::maybe_index_vertex(v, g, mpl::bool_<AutoIndexVertices>());
+ return v;
+ }
+
+ static void py_clear_vertex(Graph& g, vertex_descriptor u)
+ {
+ clear_vertex(u, g);
+ detail::maybe_reindex_edges(g, mpl::bool_<AutoIndexEdges>());
+ }
+
+ static void py_remove_vertex(Graph& g, vertex_descriptor u)
+ {
+ remove_vertex(u, g);
+ detail::maybe_reindex_vertices(g, mpl::bool_<AutoIndexVertices>());
+ }
+
+public:
+ template<typename T, typename Basis, typename HeldType, typename NonCopyable>
+ mutable_graph(class_<T, Basis, HeldType, NonCopyable>& graph)
+ {
+ graph.def("add_edge", &py_add_edge, graph_docs[gd_add_edge])
+ .def("remove_edge", &py_remove_edge, graph_docs[gd_remove_edge])
+ .def("add_vertex", &py_add_vertex, graph_docs[gd_add_vertex])
+ .def("clear_vertex", &py_clear_vertex, graph_docs[gd_clear_vertex])
+ .def("remove_vertex", &py_remove_vertex, graph_docs[gd_remove_vertex])
+ ;
+ }
+};
+
+} } } // end namespace boost::graph::python
+
+#endif // BOOST_PARALLEL_GRAPH_PYTHON_GRAPH_HPP

Added: sandbox/SOC/2008/BGL_Python/boost/graph/python/iterator.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/boost/graph/python/iterator.hpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,74 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#ifndef BOOST_PARALLEL_GRAPH_PYTHON_ITERATOR_HPP
+#define BOOST_PARALLEL_GRAPH_PYTHON_ITERATOR_HPP
+
+#include <string>
+#include <boost/python.hpp>
+#include <iterator>
+
+namespace boost { namespace graph { namespace python {
+
+namespace detail {
+ template<typename T> bool type_already_registered()
+ {
+ using boost::python::objects::registered_class_object;
+ using boost::python::type_id;
+
+ return registered_class_object(type_id<T>()).get() != 0;
+ }
+} // end namespace detail
+
+template<typename Iterator>
+class simple_python_iterator
+{
+public:
+ typedef typename std::iterator_traits<Iterator>::difference_type
+ difference_type;
+
+ simple_python_iterator(std::pair<Iterator, Iterator> p)
+ : orig_first(p.first), first(p.first), last(p.second), n(-1) { }
+
+ typename std::iterator_traits<Iterator>::value_type next()
+ {
+ using boost::python::objects::stop_iteration_error;
+
+ if (first == last) stop_iteration_error();
+ return *first++;
+ }
+
+ difference_type len()
+ {
+ if (n == -1) n = std::distance(first, last);
+ return n;
+ }
+
+ static void declare(const char* name, const char* docstring = 0)
+ {
+ using boost::python::class_;
+ using boost::python::no_init;
+ using boost::python::objects::identity_function;
+ if (!detail::type_already_registered<simple_python_iterator>())
+ class_<simple_python_iterator<Iterator> >(name, docstring, no_init)
+ .def("__iter__", identity_function())
+ .def("__len__", &simple_python_iterator<Iterator>::len)
+ .def("next", &simple_python_iterator<Iterator>::next)
+ ;
+ }
+
+private:
+ Iterator orig_first;
+ Iterator first;
+ Iterator last;
+ difference_type n;
+};
+
+} } } // end namespace boost::graph::python
+
+#endif // BOOST_PARALLEL_GRAPH_PYTHON_ITERATOR_HPP

Added: sandbox/SOC/2008/BGL_Python/boost/graph/python/list_append_iterator.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/boost/graph/python/list_append_iterator.hpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,52 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#ifndef BOOST_GRAPH_PYTHON_LIST_APPEND_ITERATOR_HPP
+#define BOOST_GRAPH_PYTHON_LIST_APPEND_ITERATOR_HPP
+
+#include <boost/python.hpp>
+#include <iterator>
+
+namespace boost { namespace graph { namespace python {
+
+class list_append_iterator
+ : public std::iterator<std::output_iterator_tag, void, void, void, void>
+{
+ struct append_proxy
+ {
+ append_proxy(list_append_iterator* self) : self(self) { }
+
+ template<typename T>
+ const T& operator=(const T& value)
+ {
+ self->values->append(value);
+ return value;
+ }
+
+ private:
+ list_append_iterator* self;
+ };
+ friend struct append_proxy;
+
+public:
+ list_append_iterator() : values() { }
+ list_append_iterator(boost::python::list& values) : values(&values) { }
+
+ append_proxy operator*() { return append_proxy(this); }
+
+ list_append_iterator& operator++() { return *this; }
+ list_append_iterator operator++(int) { return *this; }
+
+protected:
+ boost::python::list* values;
+};
+
+} } } // end namespace boost::graph::python
+
+
+#endif // BOOST_GRAPH_PYTHON_LIST_APPEND_ITERATOR_HPP

Added: sandbox/SOC/2008/BGL_Python/boost/graph/python/page_rank.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/boost/graph/python/page_rank.hpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,59 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#include <boost/graph/page_rank.hpp>
+#include <boost/python.hpp>
+
+namespace boost { namespace graph { namespace python {
+
+using boost::python::object;
+
+struct python_done
+{
+ explicit python_done(object callable) : callable(callable) { }
+
+ template<typename RankMap, typename Graph>
+ bool operator()(RankMap rank, const Graph& g)
+ {
+ using boost::python::extract;
+ return extract<bool>(callable(rank, ref(g)));
+ }
+
+private:
+ object callable;
+};
+
+template<typename Graph>
+void
+page_rank
+ (const Graph& g,
+ vector_property_map<
+ float,
+ typename property_map<Graph, vertex_index_t>::const_type>& rank,
+ object done_or_iterations,
+ float damping)
+{
+ using boost::python::extract;
+
+ int iterations = 20;
+ if (done_or_iterations != object()) {
+ extract<int> iters(done_or_iterations);
+ if (iters.check())
+ iterations = iters;
+ else {
+ boost::graph::page_rank(g, rank, python_done(done_or_iterations),
+ damping);
+ return;
+ }
+ }
+
+ boost::graph::page_rank(g, rank, boost::graph::n_iterations(iterations),
+ damping);
+}
+
+} } } // end namespace boost::graph::python

Added: sandbox/SOC/2008/BGL_Python/boost/graph/python/point2d.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/boost/graph/python/point2d.hpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,62 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#ifndef BOOST_GRAPH_PYTHON_POINT2D_HPP
+#define BOOST_GRAPH_PYTHON_POINT2D_HPP
+
+#include <iostream>
+#include <boost/graph/point_traits.hpp>
+
+namespace boost { namespace graph { namespace python {
+ class point2d
+ {
+ public:
+ point2d() { coordinates[0] = coordinates[1] = 0.0f; }
+
+ point2d(float x, float y)
+ {
+ coordinates[0] = x;
+ coordinates[1] = y;
+ }
+
+ float& operator[](std::size_t i) { return coordinates[i]; }
+ const float& operator[](std::size_t i) const { return coordinates[i]; }
+
+ private:
+ float coordinates[2];
+ };
+
+ inline std::ostream& operator<<(std::ostream& out, point2d p)
+ { return out << p[0] << p[1]; }
+
+ inline std::istream& operator>>(std::istream& in, point2d& p)
+ { return in >> p[0] >> p[1]; }
+
+ inline bool operator==(const point2d& p1, const point2d& p2)
+ {
+ return p1[0] == p2[0] && p1[1] == p2[1];
+ }
+
+ inline bool operator!=(const point2d& p1, const point2d& p2)
+ {
+ return p1[0] != p2[0] || p1[1] != p2[1];
+ }
+} // end namespace python
+
+template<>
+struct point_traits<boost::graph::python::point2d>
+{
+ typedef float component_type;
+
+ static std::size_t dimensions(const boost::graph::python::point2d&)
+ { return 2; }
+};
+
+} } // end namespace boost::graph
+
+#endif // BOOST_GRAPH_PYTHON_POINT2D_HPP

Added: sandbox/SOC/2008/BGL_Python/boost/graph/python/point3d.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/boost/graph/python/point3d.hpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,67 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#ifndef BOOST_GRAPH_PYTHON_POINT3D_HPP
+#define BOOST_GRAPH_PYTHON_POINT3D_HPP
+
+#include <iostream>
+#include <boost/graph/point_traits.hpp>
+
+namespace boost { namespace graph { namespace python {
+ class point3d
+ {
+ public:
+ point3d() { coordinates[0] = coordinates[1] = coordinates[2] = 0.0f; }
+
+ point3d(float x, float y, float z)
+ {
+ coordinates[0] = x;
+ coordinates[1] = y;
+ coordinates[2] = z;
+ }
+
+ float& operator[](std::size_t i) { return coordinates[i]; }
+ const float& operator[](std::size_t i) const { return coordinates[i]; }
+
+ private:
+ float coordinates[3];
+ };
+
+ inline std::ostream& operator<<(std::ostream& out, point3d p)
+ {
+ return out << p[0] << ' ' << p[1] << ' ' << p[2];
+ }
+
+ inline std::istream& operator>>(std::istream& in, point3d& p)
+ {
+ return in >> p[0] >> p[1] >> p[2];
+ }
+
+ inline bool operator==(const point3d& p1, const point3d& p2)
+ {
+ return p1[0] == p2[0] && p1[1] == p2[1] && p1[2] == p2[2];
+ }
+
+ inline bool operator!=(const point3d& p1, const point3d& p2)
+ {
+ return p1[0] != p2[0] || p1[1] != p2[1] || p1[2];
+ }
+} // end namespace python
+
+template<>
+struct point_traits<boost::graph::python::point3d>
+{
+ typedef float component_type;
+
+ static std::size_t dimensions(const boost::graph::python::point3d&)
+ { return 3; }
+};
+
+} } // end namespace boost::graph
+
+#endif // BOOST_GRAPH_PYTHON_POINT3D_HPP

Added: sandbox/SOC/2008/BGL_Python/boost/graph/python/prim_minimum_spanning_tree.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/boost/graph/python/prim_minimum_spanning_tree.hpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,95 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#ifndef BOOST_GRAPH_PYTHON_PRIM_MINIMUM_SPANNING_TREE_HPP
+#define BOOST_GRAPH_PYTHON_PRIM_MINIMUM_SPANNING_TREE_HPP
+
+#include <boost/graph/prim_minimum_spanning_tree.hpp>
+#include <boost/python.hpp>
+#include <boost/graph/python/dijkstra_shortest_paths.hpp>
+#include <boost/graph/iteration_macros.hpp>
+
+namespace boost { namespace graph { namespace python {
+
+using boost::python::object;
+
+template<typename Graph>
+void
+prim_minimum_spanning_tree
+ (const Graph& g,
+ vector_property_map<
+ typename graph_traits<Graph>::vertex_descriptor,
+ typename property_map<Graph, vertex_index_t>::const_type>* in_predecessor,
+ vector_property_map<
+ float,
+ typename property_map<Graph, vertex_index_t>::const_type>* in_distance,
+ vector_property_map<
+ float,
+ typename property_map<Graph, edge_index_t>::const_type>* in_weight,
+ boost::python::object in_visitor,
+ typename graph_traits<Graph>::vertex_descriptor s,
+ vector_property_map<
+ default_color_type,
+ typename property_map<Graph, vertex_index_t>::const_type>* in_color)
+{
+ typedef typename property_map<Graph, vertex_index_t>::const_type
+ VertexIndexMap;
+ typedef typename graph_traits<Graph>::vertex_descriptor Vertex;
+ typedef vector_property_map<Vertex, VertexIndexMap> PredecessorMap;
+ typedef vector_property_map<float, VertexIndexMap> DistanceMap;
+ typedef vector_property_map<default_color_type, VertexIndexMap> ColorMap;
+ typedef typename property_map<Graph, edge_index_t>::const_type
+ EdgeIndexMap;
+ typedef vector_property_map<float, EdgeIndexMap> WeightMap;
+
+ if (s == graph_traits<Graph>::null_vertex() && num_vertices(g) > 0)
+ s = *vertices(g).first;
+
+ PredecessorMap predecessor =
+ in_predecessor? *in_predecessor
+ : PredecessorMap(num_vertices(g), get(vertex_index, g));
+
+ DistanceMap distance =
+ in_distance? *in_distance
+ : DistanceMap(num_vertices(g), get(vertex_index, g));
+
+ ColorMap color =
+ in_color? *in_color
+ : ColorMap(num_vertices(g), get(vertex_index, g));
+
+ WeightMap weight =
+ in_weight? *in_weight
+ : WeightMap(num_edges(g), get(edge_index, g));
+
+ // If no weight map was provided, initialize every weight with 1.0
+ if (!in_weight) {
+ BGL_FORALL_EDGES_T(e, g, Graph)
+ put(weight, e, 1.0f);
+ }
+
+ if (in_visitor != object()) {
+ boost::prim_minimum_spanning_tree
+ (g, predecessor,
+ boost::visitor(maybe_dijkstra_visitor(in_visitor)).
+ distance_map(distance).
+ weight_map(weight).
+ color_map(color).
+ root_vertex(s));
+ } else {
+ boost::prim_minimum_spanning_tree
+ (g, predecessor,
+ distance_map(distance).
+ weight_map(weight).
+ color_map(color).
+ root_vertex(s));
+ }
+}
+
+} } } // end namespace boost::graph::python
+
+#endif // BOOST_GRAPH_PYTHON_PRIM_MINIMUM_SPANNING_TREE_HPP

Added: sandbox/SOC/2008/BGL_Python/boost/graph/python/properties.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/boost/graph/python/properties.hpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,43 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+//
+// Enumerates the properties that should be attached to the vertices
+// and edges of the graph. This file contains only expansions of the
+// macros VERTEX_PROPERTY and EDGE_PROPERTY, with the following
+// signatures:
+//
+// VERTEX_PROPERTY(Name,Type,Kind)
+// EDGE_PROPERTY(Name,Type,Kind)
+//
+// - Name is the name of the property type in Python, e.g., "string"
+// or "float".
+// - Type is the C++ type of the property, e.g., "point2d" or
+// "float". The types "vertex_descriptor" and "edge_descriptor"
+// are used for vertices and edges, respectively.
+// - Kind is the kind of property map, e.g., "read_write" or
+// "lvalue".
+
+VERTEX_PROPERTY(integer, int, read_write)
+VERTEX_PROPERTY(float, float, read_write)
+VERTEX_PROPERTY(vertex, vertex_descriptor, read_write)
+VERTEX_PROPERTY(edge, edge_descriptor, read_write)
+VERTEX_PROPERTY(string, boost::python::str, read_write)
+VERTEX_PROPERTY(point2d, boost::graph::python::point2d, lvalue)
+VERTEX_PROPERTY(point3d, boost::graph::python::point3d, lvalue)
+VERTEX_PROPERTY(object, boost::python::object, read_write)
+VERTEX_PROPERTY(color, boost::default_color_type, read_write)
+EDGE_PROPERTY(integer, int, read_write)
+EDGE_PROPERTY(float, float, read_write)
+EDGE_PROPERTY(vertex, vertex_descriptor, read_write)
+EDGE_PROPERTY(edge, edge_descriptor, read_write)
+EDGE_PROPERTY(string, boost::python::str, read_write)
+EDGE_PROPERTY(point2d, boost::graph::python::point2d, lvalue)
+EDGE_PROPERTY(point3d, boost::graph::python::point3d, lvalue)
+EDGE_PROPERTY(object, boost::python::object, read_write)
+EDGE_PROPERTY(color, boost::default_color_type, read_write)

Added: sandbox/SOC/2008/BGL_Python/boost/graph/python/property_map.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/boost/graph/python/property_map.hpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,128 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#ifndef BOOST_PARALLEL_GRAPH_PYTHON_PROPERTY_MAP_HPP
+#define BOOST_PARALLEL_GRAPH_PYTHON_PROPERTY_MAP_HPP
+
+#include <memory>
+#include <boost/python.hpp>
+#include <boost/graph/python/iterator.hpp>
+#include <boost/property_map.hpp>
+#include <boost/vector_property_map.hpp>
+
+namespace boost { namespace graph { namespace python {
+
+namespace detail {
+ template<typename Class, typename PropertyMap>
+ inline void property_map_extras(Class&, type<PropertyMap>, long) { }
+
+ template<typename T, typename IndexMap>
+ int py_vector_property_map_length(const vector_property_map<T, IndexMap>& pm)
+ {
+ return int(pm.get_store()->size());
+ }
+
+ template<typename T, typename IndexMap>
+ simple_python_iterator<typename std::vector<T>::iterator>
+ py_vector_property_map_values(vector_property_map<T, IndexMap>& pm)
+ {
+ typedef simple_python_iterator<typename std::vector<T>::iterator>
+ result_type;
+ return result_type(std::make_pair(pm.storage_begin(), pm.storage_end()));
+ }
+
+ template<typename Class, typename T, typename IndexMap>
+ void
+ property_map_extras(Class& pm, type<vector_property_map<T, IndexMap> >, int)
+ {
+ pm.def("__len__", &py_vector_property_map_length<T, IndexMap>);
+
+ typedef typename std::vector<T>::iterator value_iterator;
+ simple_python_iterator<value_iterator>::declare("ValueIterator");
+ pm.def("__iter__", &py_vector_property_map_values<T, IndexMap>);
+ }
+
+} // end namespace detail
+
+template<typename PropertyMap>
+class readable_property_map
+{
+ typedef typename property_traits<PropertyMap>::key_type key_type;
+ typedef typename property_traits<PropertyMap>::value_type value_type;
+
+ static value_type getitem(const PropertyMap& pm, const key_type& key)
+ { return get(pm, key); }
+
+ public:
+ template<typename T, typename Basis, typename HeldType, typename NonCopyable>
+ readable_property_map(boost::python::class_<T, Basis, HeldType, NonCopyable>& pm)
+ {
+ pm.def("__getitem__", &getitem);
+ }
+};
+
+template<typename PropertyMap>
+class read_write_property_map
+{
+ typedef typename property_traits<PropertyMap>::key_type key_type;
+ typedef typename property_traits<PropertyMap>::value_type value_type;
+
+ static value_type getitem(const PropertyMap& pm, const key_type& key)
+ { return get(pm, key); }
+
+ static void
+ setitem(const PropertyMap& pm, const key_type& key,const value_type& value)
+ { return put(pm, key, value); }
+
+ public:
+ template<typename T, typename Basis, typename HeldType, typename NonCopyable>
+ read_write_property_map(boost::python::class_<T, Basis, HeldType, NonCopyable>& pm)
+ {
+ pm.def("__getitem__", &getitem)
+ .def("__setitem__", &setitem)
+ ;
+
+ using detail::property_map_extras;
+ property_map_extras(pm, type<PropertyMap>(), 0);
+ }
+};
+
+template<typename PropertyMap>
+class lvalue_property_map
+{
+ typedef typename property_traits<PropertyMap>::key_type key_type;
+ typedef typename property_traits<PropertyMap>::value_type value_type;
+ typedef typename property_traits<PropertyMap>::reference reference;
+
+ static reference getitem(const PropertyMap& pm, const key_type& key)
+ { return pm[key]; }
+
+ static void
+ setitem(const PropertyMap& pm, const key_type& key,const value_type& value)
+ { return put(pm, key, value); }
+
+public:
+ template<typename T, typename Basis, typename HeldType, typename NonCopyable>
+ lvalue_property_map(boost::python::class_<T, Basis, HeldType, NonCopyable>& pm)
+ {
+ using boost::python::class_;
+ using boost::python::no_init;
+ using boost::python::return_value_policy;
+ using boost::python::return_internal_reference;
+
+ pm.def("__getitem__", &getitem, return_internal_reference<1>())
+ .def("__setitem__", &setitem)
+ ;
+
+ detail::property_map_extras(pm, type<PropertyMap>(), 0);
+ }
+};
+
+} } } // end namespace boost::graph::python
+
+#endif // BOOST_PARALLEL_GRAPH_PYTHON_PROPERTY_MAP_HPP

Added: sandbox/SOC/2008/BGL_Python/boost/graph/python/python_property_map.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/boost/graph/python/python_property_map.hpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,749 @@
+// Copyright (C) 2006 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#ifndef BOOST_GRAPH_PYTHON_PYTHON_PROPERTY_MAP_HPP
+#define BOOST_GRAPH_PYTHON_PYTHON_PROPERTY_MAP_HPP
+#include <boost/python.hpp>
+#include <boost/graph/python/resizable_property_map.hpp>
+#include <boost/property_map.hpp>
+#include <boost/vector_property_map.hpp>
+#include <boost/graph/python/iterator.hpp>
+#include <boost/graph/properties.hpp>
+#include <cstring>
+#include <boost/shared_ptr.hpp>
+#include <boost/graph/python/point2d.hpp>
+#include <boost/graph/python/point3d.hpp>
+#include <sstream>
+#include <exception>
+#include <boost/lexical_cast.hpp>
+#include <cctype>
+
+namespace boost { namespace graph { namespace python {
+
+ // Forward declarations to help GCC 3.3.x
+ template<typename DirectedS> class basic_graph;
+
+ template<typename DirectedS>
+ typename basic_graph<DirectedS>::VertexIndexMap
+ get(vertex_index_t, const basic_graph<DirectedS>& g);
+
+ template<typename DirectedS>
+ typename basic_graph<DirectedS>::EdgeIndexMap
+ get(edge_index_t, const basic_graph<DirectedS>& g);
+
+ template<typename PropertyTag, typename Graph>
+ class python_property_map;
+
+ /// The integer type that will be used for addresses
+ typedef mpl::if_c<(sizeof(void*) == sizeof(int)), int, long>::type
+ integer_type_for_addresses;
+
+ /**
+ * Exception thrown when an unsupported type name is provided to one
+ * of the routines in @c python_property_map.
+ */
+ struct bad_property_type : std::exception {
+ explicit bad_property_type(const char* name) {
+ msg = std::string("invalid property type name `") + name + "'";
+ }
+
+ virtual ~bad_property_type() throw() { }
+
+ const char* what() const throw() { return msg.c_str(); }
+
+ protected:
+ std::string msg;
+ };
+
+ /**
+ * Exception thrown when an invalid property conversion is
+ * requested.
+ */
+ struct invalid_property_conversion : std::exception {
+ explicit invalid_property_conversion(const char* from, const char* to) {
+ msg = std::string("cannot convert properties of type `") + from
+ + "' to properties of type `" + to + "'";
+ }
+
+ virtual ~invalid_property_conversion() throw() { }
+
+ const char* what() const throw() { return msg.c_str(); }
+
+ protected:
+ std::string msg;
+ };
+
+ /**
+ * Exception thrown when we are unable to perform a property
+ * conversion because, e.g., we can't parse a string.
+ */
+ struct cannot_parse_property : std::exception {
+ explicit cannot_parse_property(const char* from, const char* type) {
+ msg = std::string("cannot convert string `") + from +
+ "' to a value of type `" + type + "'";
+ }
+
+ virtual ~cannot_parse_property() throw() { }
+
+ const char* what() const throw() { return msg.c_str(); }
+
+ protected:
+ std::string msg;
+ };
+
+ namespace detail {
+
+ template<typename vertex_descriptor, typename edge_descriptor>
+ struct property_value_type_name_impl {
+#define VERTEX_PROPERTY(Name,Type,Kind) \
+ static const char* name(Type) { return #Name; }
+#define EDGE_PROPERTY(Name,Type,Kind)
+#include <boost/graph/python/properties.hpp>
+#undef EDGE_PROPERTY
+#undef VERTEX_PROPERTY
+ };
+
+ template<typename T, typename vertex_descriptor, typename edge_descriptor>
+ class property_value_type_name {
+ typedef property_value_type_name_impl<vertex_descriptor, edge_descriptor>
+ impl;
+
+ public:
+ static const char* name() { return impl::name(T()); }
+ };
+
+ // The identity conversion
+ template<typename T>
+ inline const T&
+ py_convert(const T& from, type<T>)
+ {
+ return from;
+ }
+
+ // Convert to a Python object
+ template<typename From>
+ inline boost::python::object
+ py_convert(const From& from, type<boost::python::object>)
+ {
+ return boost::python::object(from);
+ }
+
+ // Convert from a Python object
+ template<typename To>
+ inline To
+ py_convert(const boost::python::object& from, type<To>)
+ {
+ if (from == boost::python::object())
+ return To();
+ else
+ return boost::python::extract<To>(from)();
+ }
+
+ // Tie-breaker: Python object identity function
+ inline boost::python::object
+ py_convert(const boost::python::object& from, type<boost::python::object>)
+ {
+ return from;
+ }
+
+ // int -> float
+ inline float
+ py_convert(const int& from, type<float>)
+ {
+ return from;
+ }
+
+ // float -> int
+ inline int
+ py_convert(const float& from, type<int>)
+ {
+ return (int)from;
+ }
+
+ // point2d -> point3d
+ inline point3d
+ py_convert(const point2d& from, type<point3d>)
+ {
+ return point3d(from[0], from[1], 0);
+ }
+
+ // point3d -> point2d
+ inline point2d
+ py_convert(const point3d& from, type<point2d>)
+ {
+ return point2d(from[0], from[1]);
+ }
+
+ // int -> string
+ inline boost::python::str
+ py_convert(const int& from, type<boost::python::str>)
+ {
+ return lexical_cast<std::string>(from).c_str();
+ }
+
+ // float -> string
+ inline boost::python::str
+ py_convert(const float& from, type<boost::python::str>)
+ {
+ return lexical_cast<std::string>(from).c_str();
+ }
+
+ // point2d -> string
+ inline boost::python::str
+ py_convert(const point2d& from, type<boost::python::str>)
+ {
+ std::ostringstream out;
+ out << '(' << from[0] << ", " << from[1] << ')';
+ return out.str().c_str();
+ }
+
+ // point3d -> string
+ inline boost::python::str
+ py_convert(const point3d& from, type<boost::python::str>)
+ {
+ std::ostringstream out;
+ out << '(' << from[0] << ", " << from[1] << ", " << from[2]<< ')';
+ return out.str().c_str();
+ }
+
+ // color -> string
+ inline boost::python::str
+ py_convert(const default_color_type& from, type<boost::python::str>)
+ {
+ switch (from) {
+ case white_color: return "white";
+ case gray_color: return "gray";
+ case green_color: return "green";
+ case red_color: return "red";
+ case black_color: return "black";
+ }
+ return "<unknown color value>";
+ }
+
+ // object -> string
+ inline boost::python::str
+ py_convert(const boost::python::object& from, type<boost::python::str>)
+ {
+ return boost::python::str(from);
+ }
+
+ // string -> int
+ inline int
+ py_convert(const boost::python::str& from, type<int>)
+ {
+ using boost::python::extract;
+ const char* value = extract<const char*>(from)();
+ try {
+ return lexical_cast<int>(value);
+ } catch (bad_lexical_cast) {
+ throw cannot_parse_property(value, "integer");
+ }
+ }
+
+ // string -> float
+ inline float
+ py_convert(const boost::python::str& from, type<float>)
+ {
+ using boost::python::extract;
+ const char* value = extract<const char*>(from)();
+ try {
+ return lexical_cast<float>(value);
+ } catch (bad_lexical_cast) {
+ throw cannot_parse_property(value, "float");
+ }
+ }
+
+ // string -> point2d
+ inline point2d
+ py_convert(const boost::python::str& from, type<point2d>)
+ {
+ using boost::python::extract;
+ point2d result;
+ char c;
+ const char* text = extract<const char*>(from)();
+ std::istringstream in(text);
+ using std::isspace;
+
+ try {
+ // Skip over spaces
+ while (isspace(in.peek())) { in.read(&c, 1); }
+
+ // Recognize various starting characters: [ (, or nothing
+ if (in.peek() == '[' || in.peek() == '(')
+ in.read(&c, 1);
+
+ // Get the "x" coordinate
+ if (!(in >> result[0]))
+ throw bad_lexical_cast();
+
+ // Skip over spaces
+ while (isspace(in.peek())) { in.read(&c, 1); }
+
+ // Recognize a separator (',') if we see one
+ if (in.peek() == ',')
+ in.read(&c, 1);
+
+ // Get the "y" coordinate
+ if (!(in >> result[1]))
+ throw bad_lexical_cast();
+
+ // Good enough: we're done.
+ return result;
+ } catch (bad_lexical_cast) {
+ throw cannot_parse_property(text, "point2d");
+ }
+ }
+
+ // string -> point3d
+ inline point3d
+ py_convert(const boost::python::str& from, type<point3d>)
+ {
+ using boost::python::extract;
+ point3d result;
+ char c;
+ const char* text = extract<const char*>(from)();
+ std::istringstream in(text);
+ using std::isspace;
+
+ try {
+ // Skip over spaces
+ while (isspace(in.peek())) { in.read(&c, 1); }
+
+ // Recognize various starting characters: [ (, or nothing
+ if (in.peek() == '[' || in.peek() == '(')
+ in.read(&c, 1);
+
+ // Get the "x" coordinate
+ if (!(in >> result[0]))
+ throw bad_lexical_cast();
+
+ // Skip over spaces
+ while (isspace(in.peek())) { in.read(&c, 1); }
+
+ // Recognize a separator (',') if we see one
+ if (in.peek() == ',')
+ in.read(&c, 1);
+
+ // Get the "y" coordinate
+ if (!(in >> result[1]))
+ throw bad_lexical_cast();
+
+ // Recognize a separator (',') if we see one
+ if (in.peek() == ',')
+ in.read(&c, 1);
+
+ // Get the "z" coordinate
+ if (!(in >> result[2]))
+ throw bad_lexical_cast();
+
+ // Good enough: we're done.
+ return result;
+ } catch (bad_lexical_cast) {
+ throw cannot_parse_property(text, "point3d");
+ }
+ }
+
+ // string -> color
+ inline default_color_type
+ py_convert(const boost::python::str& from, type<default_color_type>)
+ {
+ using boost::python::extract;
+ const char* raw_text = extract<const char*>(from)();
+ std::istringstream in(raw_text);
+ std::string text;
+ try {
+ if (in >> text) {
+ if (text == "white") return white_color;
+ else if (text == "gray") return gray_color;
+ else if (text == "green") return green_color;
+ else if (text == "red") return red_color;
+ else if (text == "black") return black_color;
+ else {
+ throw bad_lexical_cast();
+ }
+ } else {
+ throw bad_lexical_cast();
+ }
+ } catch (bad_lexical_cast) {
+ throw cannot_parse_property(raw_text, "color");
+ }
+ }
+
+ // string -> object
+ inline boost::python::object
+ py_convert(const boost::python::str& from, type<boost::python::object>)
+ {
+ return from;
+ }
+
+ // Catch-all: there is no conversion
+ template<typename FromT, typename ToT>
+ inline ToT
+ py_convert(const FromT&, type<ToT>)
+ {
+ throw invalid_property_conversion("", "");
+ }
+
+ template<typename FromT, typename PropertyTag, typename ToT>
+ void
+ convert_property_map(const vector_property_map<FromT, PropertyTag>& from,
+ const char* from_type,
+ vector_property_map<ToT, PropertyTag>& to,
+ const char* to_type)
+ {
+ typedef typename std::vector<FromT>::const_iterator from_iterator;
+ typedef typename std::vector<ToT>::iterator to_iterator;
+
+ try {
+ from_iterator first = from.storage_begin(), last = from.storage_end();
+ for (to_iterator out = to.storage_begin(); first != last;
+ ++first, ++out)
+ *out = py_convert(*first, type<ToT>());
+ } catch (...) {
+ throw invalid_property_conversion(from_type, to_type);
+ }
+ }
+
+ template<typename PropertyTag, typename Graph>
+ class python_property_map_base
+ {
+ typedef typename property_map<Graph, PropertyTag>::const_type IndexMap;
+ typedef typename property_traits<IndexMap>::key_type Key;
+ typedef python_property_map_base self_type;
+
+ public:
+ virtual ~python_property_map_base() { }
+ virtual boost::python::object get(const Key& key) = 0;
+ virtual void put(const Key& key, const boost::python::object& value) = 0;
+ virtual int len() = 0;
+ virtual boost::python::object iter() = 0;
+ virtual const char* type() const = 0;
+ virtual integer_type_for_addresses address() const = 0;
+ virtual void* extract_as(const char*, shared_ptr<self_type>&) = 0;
+ virtual shared_ptr<python_property_map_base> astype(const char*) = 0;
+ };
+
+ // Extract the number of vertices from the graph
+ template<typename Graph>
+ inline typename graph_traits<Graph>::vertices_size_type
+ get_num_by_tag(vertex_index_t, const Graph& g) {
+ return num_vertices(g);
+ }
+
+ // Extract the number of edges from the graph
+ template<typename Graph>
+ inline typename graph_traits<Graph>::edges_size_type
+ get_num_by_tag(edge_index_t, const Graph& g) {
+ return num_edges(g);
+ }
+
+ // Register a vector property map for vertices with the graph
+ template<typename T, typename IndexMap, typename Graph>
+ inline void
+ register_pmap_by_tag(vertex_index_t,
+ const vector_property_map<T, IndexMap>& pmap,
+ Graph& g)
+ {
+ typedef resizable_weak_vector_property_map<T, IndexMap> resize_map_type;
+ std::auto_ptr<resizable_property_map> reg(new resize_map_type(pmap));
+ g.register_vertex_map(reg);
+ }
+
+ // Register a vector property map for edges with the graph
+ template<typename T, typename IndexMap, typename Graph>
+ inline void
+ register_pmap_by_tag(edge_index_t,
+ const vector_property_map<T, IndexMap>& pmap,
+ Graph& g)
+ {
+ typedef resizable_weak_vector_property_map<T, IndexMap> resize_map_type;
+ std::auto_ptr<resizable_property_map> reg(new resize_map_type(pmap));
+ g.register_edge_map(reg);
+ }
+
+ // Retrieve either a value or a pointer from a reference into a
+ // property map. When the type is a class type (e.g., point2d and
+ // point3d), we need to return a pointer.
+ template<typename T>
+ inline const T& py_maybe_get_pointer(const T& value) { return value; }
+
+ template<typename T>
+ inline T& py_maybe_get_pointer(T& value) { return value; }
+
+ inline reference_wrapper<point2d> py_maybe_get_pointer(point2d& value) {
+ return ref(value);
+ }
+ inline reference_wrapper<point3d> py_maybe_get_pointer(point3d& value) {
+ return ref(value);
+ }
+
+ template<typename Value, typename PropertyTag, typename Graph>
+ class python_vector_property_map
+ : public python_property_map_base<PropertyTag, Graph>
+ {
+ typedef typename graph_traits<Graph>::vertex_descriptor vertex_descriptor;
+ typedef typename graph_traits<Graph>::edge_descriptor edge_descriptor;
+ typedef python_property_map_base<PropertyTag, Graph> inherited;
+ typedef typename property_map<Graph, PropertyTag>::const_type IndexMap;
+ typedef typename property_traits<IndexMap>::key_type key_type;
+
+ public:
+ python_vector_property_map(Graph* graph) : graph(graph)
+ {
+ using boost::graph::python::get;
+
+ // Create the property map
+ pmap =
+ vector_property_map<Value, IndexMap>(get_num_by_tag(PropertyTag(),
+ *graph),
+ get(PropertyTag(), *graph));
+
+ // Register property map with graph
+ register_pmap_by_tag(PropertyTag(), pmap, *graph);
+ }
+
+ virtual boost::python::object get(const key_type& key)
+ {
+ using boost::get;
+ return boost::python::object(py_maybe_get_pointer(get(pmap, key)));
+ }
+
+ virtual void
+ put(const key_type& key, const boost::python::object& value)
+ {
+ using boost::put;
+ put(pmap, key, boost::python::extract<Value>(value)());
+ }
+
+ virtual int len()
+ {
+ return pmap.get_store()->size();
+ }
+
+ virtual boost::python::object iter()
+ {
+ using boost::python::object;
+
+ typedef typename std::vector<Value>::iterator value_iterator;
+ typedef simple_python_iterator<value_iterator> result_type;
+ result_type::declare("ValueIterator");
+ return object(result_type(std::make_pair(pmap.storage_begin(),
+ pmap.storage_end())));
+ }
+
+ virtual const char* type() const
+ {
+ typedef property_value_type_name<Value,
+ vertex_descriptor,
+ edge_descriptor> Name;
+ return Name::name();
+ }
+
+ virtual integer_type_for_addresses address() const
+ {
+ const void* addr = &*pmap.storage_begin();
+ return reinterpret_cast<integer_type_for_addresses>(addr);
+ }
+
+ virtual void* extract_as(const char* type, shared_ptr<inherited>& ptr)
+ {
+ const char* my_type =
+ property_value_type_name<Value, vertex_descriptor, edge_descriptor>
+ ::name();
+
+ // Trying to extract with a different type. Convert to that
+ // type, then replace ptr with the converted property map,
+ // destroying ourselves in the process.
+ if (strcmp(my_type, type) != 0)
+ {
+ ptr = astype(type);
+ return ptr->extract_as(type, ptr);
+ }
+ else
+ return &pmap;
+ }
+
+ virtual shared_ptr<inherited> astype(const char* type)
+ {
+ // Then, convert it in place and return the result.
+#define VERTEX_PROPERTY(Name,Type,Kind) \
+ if (strcmp(type, #Name) == 0) { \
+ typedef python_vector_property_map<Type, PropertyTag, Graph> \
+ python_map; \
+ \
+ shared_ptr<inherited> result(new python_map(graph)); \
+ \
+ vector_property_map<Type, IndexMap>& new_pmap = \
+ *(vector_property_map<Type, IndexMap>*) \
+ result->extract_as(type, result); \
+ convert_property_map(pmap, this->type(), new_pmap, type); \
+ return result; \
+ }
+#define EDGE_PROPERTY(Name,Type,Kind)
+#include <boost/graph/python/properties.hpp>
+#undef EDGE_PROPERTY
+#undef VERTEX_PROPERTY
+ throw bad_property_type(type);
+ }
+
+ Graph* graph;
+ vector_property_map<Value, IndexMap> pmap;
+ };
+
+ template<typename PropertyTag, typename Graph>
+ int
+ python_property_map_length
+ (const python_property_map<PropertyTag, Graph>& pm)
+ {
+ return pm.len();
+ }
+
+ template<typename PropertyTag, typename Graph>
+ boost::python::object
+ python_property_map_values
+ (const python_property_map<PropertyTag, Graph>& pm)
+ {
+ return pm.iter();
+ }
+
+ template<typename Class, typename PropertyTag, typename Graph>
+ void
+ property_map_extras(Class& pm,
+ type<python_property_map<PropertyTag, Graph> >, int)
+ {
+ pm.def("__len__", &detail::python_property_map_length<PropertyTag, Graph>);
+ pm.def("__iter__", &detail::python_property_map_values<PropertyTag, Graph>);
+ }
+ } // end namespace detail
+
+ // Copy either the vertex or edge indices into a new property map
+ template<typename Graph, typename PropertyMap>
+ void
+ copy_vertex_or_edge_indices(vertex_index_t, const Graph& graph,
+ PropertyMap pmap)
+ {
+ typename graph_traits<Graph>::vertex_iterator v;
+ for (v = vertices(graph).first; v != vertices(graph).second; ++v)
+ put(pmap, *v, get(vertex_index, graph, *v));
+ }
+
+ template<typename Graph, typename PropertyMap>
+ void
+ copy_vertex_or_edge_indices(edge_index_t, const Graph& graph,
+ PropertyMap pmap)
+ {
+ typename graph_traits<Graph>::edge_iterator e;
+ for (e = edges(graph).first; e != edges(graph).second; ++e)
+ put(pmap, *e, get(edge_index, graph, *e));
+ }
+
+ template<typename PropertyTag, typename Graph>
+ class python_property_map
+ {
+ typedef detail::python_property_map_base<PropertyTag, Graph> base_type;
+ typedef typename property_map<Graph, PropertyTag>::const_type IndexMap;
+
+ public:
+ typedef typename graph_traits<Graph>::vertex_descriptor vertex_descriptor;
+ typedef typename graph_traits<Graph>::edge_descriptor edge_descriptor;
+
+ // Read Write Property Map concept
+ typedef typename property_traits<IndexMap>::key_type key_type;
+ typedef boost::python::object value_type;
+ typedef value_type reference;
+ typedef read_write_property_map_tag category;
+
+ python_property_map(Graph* graph, const char* astype)
+ {
+#define VERTEX_PROPERTY(Name,Type,Kind) \
+ if (std::strcmp(astype, #Name) == 0) { \
+ typedef detail::python_vector_property_map<Type, PropertyTag, Graph> stored_type; \
+ stored.reset(new stored_type(graph)); \
+ return; \
+ }
+#define EDGE_PROPERTY(Name,Type,Kind)
+#include <boost/graph/python/properties.hpp>
+#undef EDGE_PROPERTY
+#undef VERTEX_PROPERTY
+
+ if (std::strcmp(astype, "index") == 0) {
+ typedef detail::python_vector_property_map<int, PropertyTag, Graph>
+ stored_type;
+ stored.reset(new stored_type(graph));
+ copy_vertex_or_edge_indices(PropertyTag(), *graph,
+ dynamic_cast<stored_type*>(&*stored)->pmap);
+ return;
+ }
+
+ throw bad_property_type(astype);
+ }
+
+ template<typename Value>
+ operator vector_property_map<Value, IndexMap>&() const
+ {
+ typedef vector_property_map<Value, IndexMap> result_type;
+ const char* type_name =
+ detail::property_value_type_name<Value,
+ vertex_descriptor,
+ edge_descriptor>::name();
+ return *static_cast<result_type*>(stored->extract_as(type_name, stored));
+ }
+
+ /// Return the number of elements in the property map
+ int len() const { return stored->len(); }
+
+ /// Return a Python iterator that visits all of the values in the
+ /// property map.
+ boost::python::object iter() const { return stored->iter(); }
+
+ const char* type() const
+ {
+ return stored->type();
+ }
+
+ integer_type_for_addresses address() const
+ {
+ return stored->address();
+ }
+
+ // Return a new property map containing the same values as this
+ // one, converted to type.
+ python_property_map astype(const char* type)
+ {
+ python_property_map other(*this);
+ other.stored = stored->astype(type);
+ return other;
+ }
+
+ mutable shared_ptr<base_type> stored;
+ };
+
+ template<typename PropertyTag, typename Graph>
+ boost::python::object
+ get(const python_property_map<PropertyTag, Graph>& pmap,
+ typename property_traits<
+ typename property_map<Graph, PropertyTag>::const_type
+ >::key_type const & key)
+ {
+ return pmap.stored->get(key);
+ }
+
+ template<typename PropertyTag, typename Graph>
+ void
+ put(const python_property_map<PropertyTag, Graph>& pmap,
+ typename property_traits<
+ typename property_map<Graph, PropertyTag>::const_type
+ >::key_type const & key,
+ const boost::python::object& value)
+ {
+ return pmap.stored->put(key, value);
+ }
+
+} } } // end namespace boost::graph::python
+
+#endif // BOOST_GRAPH_PYTHON_PYTHON_PROPERTY_MAP_HPP

Added: sandbox/SOC/2008/BGL_Python/boost/graph/python/queue.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/boost/graph/python/queue.hpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,66 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#ifndef BOOST_GRAPH_PYTHON_QUEUE_HPP
+#define BOOST_GRAPH_PYTHON_QUEUE_HPP
+
+#include <boost/python.hpp>
+
+namespace boost { namespace graph { namespace python {
+
+using boost::python::object;
+
+template<typename Queue>
+class maybe_python_queue
+{
+public:
+ typedef typename Queue::value_type value_type;
+
+ maybe_python_queue(object python_Q, const Queue& Q)
+ : python_Q(python_Q), Q(Q) { }
+
+ bool empty() const
+ {
+ using boost::python::extract;
+ if (python_Q == object()) return Q.empty();
+ else return extract<bool>(python_Q.attr("empty")());
+ }
+
+ value_type top() const
+ {
+ using boost::python::extract;
+ if (python_Q == object()) return Q.top();
+ else return extract<value_type>(python_Q.attr("top")());
+ }
+
+ void pop()
+ {
+ if (python_Q == object()) Q.pop();
+ else python_Q.attr("pop")();
+ }
+
+ void push(const value_type& x)
+ {
+ if (python_Q == object()) Q.push(x);
+ else python_Q.attr("push")(x);
+ }
+
+ void update(const value_type& x)
+ {
+ if (python_Q == object()) Q.update(x);
+ else python_Q.attr("update")(x);
+ }
+
+private:
+ object python_Q;
+ Queue Q;
+};
+
+} } } // end namespace boost::graph::python
+
+#endif // BOOST_GRAPH_PYTHON_QUEUE_HPP

Added: sandbox/SOC/2008/BGL_Python/boost/graph/python/resizable_property_map.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/boost/graph/python/resizable_property_map.hpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,137 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+
+#ifndef BOOST_GRAPH_PYTHON_RESIZABLE_PROPERTY_MAP_HPP
+#define BOOST_GRAPH_PYTHON_RESIZABLE_PROPERTY_MAP_HPP
+
+#include <vector>
+#include <boost/vector_property_map.hpp>
+
+namespace boost { namespace graph { namespace python {
+
+class resizable_property_map : boost::noncopyable
+{
+ public:
+ /* Invoked when a new value has been added to the end of the list of
+ keys. The property map may resize it's internal data structure to
+ accomodate this. Returns true so long as this property map is
+ still "relevant" and should be kept. */
+ virtual bool added_key() = 0;
+
+ /* The key with the given index is being removed, and the value with
+ the last index will replace it. Returns true so long as this
+ property map is still "relevant" and should be kept. */
+ virtual bool removed_key(std::size_t index) = 0;
+
+ /* All of the keys in the graph have been shuffled. This vector maps
+ from the old indices to the new indices. Returns true so long as
+ this property map is still "relevant" and should be kept. */
+ virtual bool shuffled_keys(const std::vector<std::size_t>& new_indices) = 0;
+
+ virtual ~resizable_property_map() {}
+
+ protected:
+ resizable_property_map() {}
+};
+
+template<typename T, typename IndexMap>
+class resizable_vector_property_map : public resizable_property_map
+{
+ public:
+ typedef vector_property_map<T, IndexMap> property_map_type;
+
+ resizable_vector_property_map(const property_map_type& pmap) : pmap(pmap) { }
+
+ /* Invoked when a new value has been added to the end of the list of
+ keys. The property map may resize it's internal data structure to
+ accomodate this. */
+ virtual bool added_key()
+ {
+ if (pmap.get_store().unique()) return false;
+ pmap.get_store()->push_back(T());
+ return true;
+ }
+
+ /* The key with the given index is being removed, and the value with
+ the last index will replace it. */
+ virtual bool removed_key(std::size_t index)
+ {
+ if (pmap.get_store().unique()) return false;
+ pmap.get_store()->at(index) = pmap.get_store()->back();
+ pmap.get_store()->pop_back();
+ return true;
+ }
+
+ /* All of the keys in the graph have been shuffled. This vector maps
+ from the old indices to the new indices. */
+ virtual bool shuffled_keys(const std::vector<std::size_t>& new_indices)
+ {
+ if (pmap.get_store().unique()) return false;
+ std::vector<T> new_storage(new_indices.size());
+ for (std::size_t i = 0; i < new_indices.size(); ++i)
+ new_storage[i] = pmap.get_store()->at(i);
+ pmap.get_store()->swap(new_storage);
+ return true;
+ }
+
+ protected:
+ property_map_type pmap;
+};
+
+template<typename T, typename IndexMap>
+class resizable_weak_vector_property_map : public resizable_property_map
+{
+ public:
+ typedef vector_property_map<T, IndexMap> property_map_type;
+
+ resizable_weak_vector_property_map(const property_map_type& pmap)
+ : stored_pmap(pmap) { }
+
+ /* Invoked when a new value has been added to the end of the list of
+ keys. The property map may resize it's internal data structure to
+ accomodate this. */
+ virtual bool added_key()
+ {
+ if (!stored_pmap.get_store()) return false;
+ property_map_type pmap(stored_pmap);
+ pmap.get_store()->push_back(T());
+ return true;
+ }
+
+ /* The key with the given index is being removed, and the value with
+ the last index will replace it. */
+ virtual bool removed_key(std::size_t index)
+ {
+ if (!stored_pmap.get_store()) return false;
+ property_map_type pmap(stored_pmap);
+ pmap.get_store()->at(index) = pmap.get_store()->back();
+ pmap.get_store()->pop_back();
+ return true;
+ }
+
+ /* All of the keys in the graph have been shuffled. This vector maps
+ from the old indices to the new indices. */
+ virtual bool shuffled_keys(const std::vector<std::size_t>& new_indices)
+ {
+ if (!stored_pmap.get_store()) return false;
+ property_map_type pmap(stored_pmap);
+ std::vector<T> new_storage(new_indices.size());
+ for (std::size_t i = 0; i < new_indices.size(); ++i)
+ new_storage[i] = pmap.get_store()->at(i);
+ pmap.get_store()->swap(new_storage);
+ return true;
+ }
+
+ protected:
+ vector_property_map<T, IndexMap> stored_pmap;
+};
+
+} } } // end namespace boost::graph::python
+
+#endif // BOOST_GRAPH_PYTHON_RESIZABLE_PROPERTY_MAP_HPP

Added: sandbox/SOC/2008/BGL_Python/boost/graph/python/strong_components.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/boost/graph/python/strong_components.hpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,35 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#include <boost/graph/strong_components.hpp>
+#include <boost/python.hpp>
+
+namespace boost { namespace graph { namespace python {
+
+using boost::python::object;
+
+template<typename Graph>
+int
+strong_components
+ (const Graph& g,
+ vector_property_map<
+ int,
+ typename property_map<Graph, vertex_index_t>::const_type>* in_color)
+{
+ typedef typename property_map<Graph, vertex_index_t>::const_type
+ VertexIndexMap;
+ typedef vector_property_map<int, VertexIndexMap> ColorMap;
+
+ ColorMap color =
+ in_color? *in_color
+ : ColorMap(num_vertices(g), get(vertex_index, g));
+
+ return boost::strong_components(g, color);
+}
+
+} } } // end namespace boost::graph::python

Added: sandbox/SOC/2008/BGL_Python/boost/graph/python/visitor.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/boost/graph/python/visitor.hpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,44 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+
+#if !defined(BGL_PYTHON_VISITOR)
+# error You must define BGL_PYTHON_VISITOR to the name of the visitor class.
+#endif
+
+#if !defined(BGL_PYTHON_EVENTS_HEADER)
+# error You must define BGL_PYTHON_EVENTS_HEADER to the events header file.
+#endif
+
+class BGL_PYTHON_VISITOR
+{
+public:
+ explicit BGL_PYTHON_VISITOR(boost::python::object visitor)
+ : visitor(visitor) { }
+
+#define BGL_PYTHON_EVENT(Name,Descriptor) \
+ template<typename Graph> \
+ void \
+ Name(typename graph_traits<Graph>::BOOST_JOIN(Descriptor,_descriptor) x, \
+ const Graph& g) const \
+ { \
+ using boost::python::object; \
+ if (visitor != object()) { \
+ object attr = visitor.attr(#Name); \
+ if (attr != object()) \
+ attr(x, ref(g)); \
+ } \
+ }
+# include BGL_PYTHON_EVENTS_HEADER
+#undef BGL_PYTHON_EVENT
+
+
+protected:
+ boost::python::object visitor;
+};
+

Added: sandbox/SOC/2008/BGL_Python/boost/graph/random_layout.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/boost/graph/random_layout.hpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,54 @@
+// Copyright (C) 2004-2006 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#ifndef BOOST_GRAPH_RANDOM_LAYOUT_HPP
+#define BOOST_GRAPH_RANDOM_LAYOUT_HPP
+
+#include <boost/graph/graph_traits.hpp>
+#include <boost/random/uniform_int.hpp>
+#include <boost/random/uniform_01.hpp>
+#include <boost/random/uniform_real.hpp>
+#include <boost/type_traits/is_integral.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/graph/point_traits.hpp>
+
+namespace boost {
+
+template<typename Graph, typename PositionMap,
+ typename RandomNumberGenerator>
+void
+random_graph_layout
+ (const Graph& g, PositionMap position_map,
+ typename property_traits<PositionMap>::value_type const& origin,
+ typename property_traits<PositionMap>::value_type const& extent,
+ RandomNumberGenerator& gen)
+{
+ typedef typename property_traits<PositionMap>::value_type Point;
+ typedef typename graph::point_traits<Point>::component_type Dimension;
+
+ typedef typename mpl::if_<is_integral<Dimension>,
+ uniform_int<Dimension>,
+ uniform_real<Dimension> >::type distrib_t;
+ typedef typename mpl::if_<is_integral<Dimension>,
+ RandomNumberGenerator&,
+ uniform_01<RandomNumberGenerator, Dimension> >
+ ::type gen_t;
+
+ gen_t my_gen(gen);
+ distrib_t x(origin[0], origin[0] + extent[0]);
+ distrib_t y(origin[1], origin[1] + extent[1]);
+ typename graph_traits<Graph>::vertex_iterator vi, vi_end;
+ for(tie(vi, vi_end) = vertices(g); vi != vi_end; ++vi) {
+ position_map[*vi][0] = x(my_gen);
+ position_map[*vi][1] = y(my_gen);
+ }
+}
+
+} // end namespace boost
+
+#endif // BOOST_GRAPH_RANDOM_LAYOUT_HPP

Added: sandbox/SOC/2008/BGL_Python/boost/graph/small_world_generator.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/boost/graph/small_world_generator.hpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,158 @@
+// Copyright 2004 The Trustees of Indiana University.
+
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Ben Martin
+// Andrew Lumsdaine
+
+
+#ifndef BOOST_GRAPH_SMALL_WORLD_GENERATOR_HPP
+#define BOOST_GRAPH_SMALL_WORLD_GENERATOR_HPP
+
+#include <iterator>
+#include <utility>
+#include <boost/random/uniform_01.hpp>
+#include <boost/random/uniform_int.hpp>
+
+#if !defined BOOST_NO_HASH
+# ifdef BOOST_HASH_SET_HEADER
+# include BOOST_HASH_SET_HEADER
+# define SET BOOST_STD_EXTENSION_NAMESPACE::hash_set
+# else
+# include <hash_set>
+# define SET std::hash_set
+# endif
+#else
+# include <set>
+# define SET std::set
+#endif
+
+namespace boost {
+
+ // Assumes undirected
+ template<typename RandomGenerator, typename Graph>
+ class small_world_iterator
+ {
+ typedef typename graph_traits<Graph>::vertices_size_type
+ vertices_size_type;
+ typedef typename graph_traits<Graph>::edges_size_type
+ edges_size_type;
+
+ public:
+ typedef std::input_iterator_tag iterator_category;
+ typedef std::pair<vertices_size_type, vertices_size_type> value_type;
+ typedef SET<edges_size_type> edges_set;
+ typedef const value_type& reference;
+ typedef const value_type* pointer;
+ typedef void difference_type;
+
+ small_world_iterator() : gen(0) {}
+ small_world_iterator(RandomGenerator& gen, vertices_size_type n,
+ vertices_size_type k, double prob = 0.0,
+ bool allow_self_loops = false, bool allow_multiple_edges = true)
+ : gen(&gen), n(n), k(k+k%2), prob(prob), source(0),
+ target(allow_self_loops? 0 : 1),
+ allow_self_loops(allow_self_loops),
+ allow_multiple_edges(allow_multiple_edges),
+ current(0, allow_self_loops? 0 : 1),
+#if !defined BOOST_NO_HASH
+ edges(allow_multiple_edges? 0 : (k + k%2)*n/2)
+#else
+ edges()
+#endif
+ {}
+
+ reference operator*() const { return current; }
+ pointer operator->() const { return &current; }
+
+ small_world_iterator& operator++()
+ {
+ current.first = source;
+
+ uniform_01<RandomGenerator, double> rand01(*gen);
+ uniform_int<vertices_size_type> rand_vertex_gen(0, n-1);
+ double x = rand01();
+ *gen = rand01.base(); // GRRRR
+ vertices_size_type larger_v = 0;
+ vertices_size_type smaller_v = 0;
+ if (x < prob) {
+ do {
+ current.second = rand_vertex_gen(*gen);
+ if (!allow_multiple_edges) {
+ larger_v = current.first;
+ smaller_v = current.second;
+ if (current.first < current.second) {
+ smaller_v = current.first;
+ larger_v = current.second;
+ }
+ }
+ // std::cout << "swg " << current.first << " " << current.second << " " << smaller_v*n + larger_v << std::endl;
+ } while ((!allow_self_loops && current.first == current.second)
+ ||
+ (!allow_multiple_edges && (current.first < k/2 && current.second >= n - k/2 + current.first))
+ ||
+ (!allow_multiple_edges && (edges.find(smaller_v*n + larger_v) != edges.end())));
+ } else {
+ current.second = target;
+ if (!allow_multiple_edges) {
+ larger_v = current.first;
+ smaller_v = current.second;
+ if (current.first < current.second) {
+ smaller_v = current.first;
+ larger_v = current.second;
+ }
+ }
+ }
+
+ if (!allow_multiple_edges) {
+ edges.insert(smaller_v*n + larger_v);
+ // std::cout << "added " << current.first << " " << current.second << " " << smaller_v*n + larger_v << std::endl;
+ }
+
+ target = (target + 1) % n;
+ if (target == (source + k/2 + 1) % n) {
+ ++source;
+ if (allow_self_loops) target = source;
+ else target = (source + 1) % n;
+ }
+
+ return *this;
+ }
+
+ small_world_iterator operator++(int)
+ {
+ small_world_iterator temp(*this);
+ ++(*this);
+ return temp;
+ }
+
+ bool operator==(const small_world_iterator& other) const
+ {
+ if (!gen && other.gen) return other == *this;
+ else if (gen && !other.gen) return source == n;
+ else if (!gen && !other.gen) return true;
+ return source == other.source && target == other.target;
+ }
+
+ bool operator!=(const small_world_iterator& other) const
+ { return !(*this == other); }
+
+ private:
+ RandomGenerator* gen;
+ vertices_size_type n;
+ vertices_size_type k;
+ double prob;
+ vertices_size_type source;
+ vertices_size_type target;
+ bool allow_self_loops;
+ bool allow_multiple_edges;
+ value_type current;
+ edges_set edges;
+ };
+
+} // end namespace boost
+
+#endif // BOOST_GRAPH_SMALL_WORLD_GENERATOR_HPP

Added: sandbox/SOC/2008/BGL_Python/boost/graph/sparse_spectrum.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/boost/graph/sparse_spectrum.hpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,238 @@
+// Ben Martin
+// January 31, 2006
+
+// This currently works only on undirected graphs...
+// Graph must model Adjacency Graph, Incidence Graph, VertexListGraph
+
+#ifndef BOOST_GRAPH_SPARSE_SPECTRUM_HPP
+#define BOOST_GRAPH_SPARSE_SPECTRUM_HPP
+
+#include <boost/graph/graph_traits.hpp>
+#include <boost/graph/named_function_params.hpp>
+#include <boost/graph/properties.hpp>
+#include <boost/vector_property_map.hpp>
+#include <utility> // for pair
+
+//#include <iostream.h>
+
+#include <boost/numeric/ublas/vector.hpp>
+#include <boost/numeric/ublas/vector_sparse.hpp>
+#include <boost/numeric/ublas/matrix_sparse.hpp>
+#include <boost/numeric/ublas/matrix_proxy.hpp>
+#include <boost/numeric/ublas/io.hpp>
+#include <ietl/vectorspace.h>
+#include <ietl/lanczos.h>
+#include <ietl/iteration.h>
+#include <boost/random/linear_congruential.hpp>
+#include <ietl/interface/ublas.h>
+
+typedef long int integer;
+typedef double doublereal;
+
+namespace boost {
+
+ template <typename Graph, typename EigenvectorMatrix >
+ void sparse_spectrum(Graph& g,
+ int first_eigenvector_index,
+ int num_eigenvectors,
+ EigenvectorMatrix &eigenvectors,
+ double rel_tol = 100,
+ double abs_tol = 1000)
+ {
+ std::vector<double> evals(num_eigenvectors);
+ sparse_spectrum(g, first_eigenvector_index, num_eigenvectors, eigenvectors, evals, rel_tol, abs_tol);
+ }
+
+ // Parameters:
+ // first_eigenvector_index:
+ // Since the smallest eigenvector is not useful, often this will
+ // be set to 1, for the "Fiedler vector," though if all
+ // eigenvectors are desired, 0 may be a more logical value.
+ // Negative values are interpreted as allowing a default choice of 1.
+ // num_eigenvectors:
+ // The number of eigencectors to return.
+
+ template <typename Graph, typename EigenvectorMatrix, typename EVector >
+ void sparse_spectrum(Graph& g,
+ int first_eigenvector_index,
+ int num_eigenvectors,
+ EigenvectorMatrix &eigenvectors,
+ EVector &eigenalues,
+ double rel_tol = 100,
+ double abs_tol = 1000)
+ {
+
+ // Matrix eigenvectors = *(in_eigenvectors);
+
+ if (first_eigenvector_index < 0)
+ first_eigenvector_index = 1;
+
+ typedef typename property_map<Graph, vertex_index_t>::const_type IndexMap;
+ typedef typename Graph::vertex_iterator VertexIterator;
+ typedef typename Graph::edge_iterator EdgeIterator;
+ typedef typename boost::graph_traits<Graph>::adjacency_iterator AdjacencyIterator;
+
+ IndexMap index_map = get(vertex_index, g);
+
+ VertexIterator v, vs, ve;
+ using std::pair;
+ std::pair<VertexIterator, VertexIterator> p;
+ p = vertices(g);
+ vs = p.first;
+ ve = p.second;
+
+ EdgeIterator e, es, ee;
+ using std::pair;
+ std::pair<EdgeIterator, EdgeIterator> ep;
+ ep = edges(g);
+ es = ep.first;
+ ee = ep.second;
+ typename Graph::vertex_descriptor src, tgt;
+
+ integer N = num_vertices(g);
+
+ typedef boost::numeric::ublas::compressed_matrix<double> Matrix;
+ Matrix A(N, N);
+
+ int i;
+
+ AdjacencyIterator a, as, ae;
+ std::pair<AdjacencyIterator, AdjacencyIterator> ap;
+
+ /*
+ for (v = vs; v != ve; ++v) {
+ A(index_map[*v], index_map[*v]) = (double)out_degree(*v, g);
+ }
+ */
+ for (e = es; e != ee; ++e) {
+ src = source(*e, g);
+ tgt = target(*e, g);
+ if (src != tgt && A(index_map[src], index_map[tgt]) != -1) {
+ A(index_map[src], index_map[tgt]) = (double)(-1);
+ A(index_map[tgt], index_map[src]) = (double)(-1);
+ A(index_map[src], index_map[src]) += (double)1;
+ A(index_map[tgt], index_map[tgt]) += (double)1;
+ }
+ }
+
+ /*
+ cout << "index_map = " << endl;
+ for (v = vs; v != ve; ++v) {
+ cout << index_map[*v] << " ";
+ }
+ cout << endl;
+ cout << "A = " << endl;
+ for (i = 0; i < N; i++)
+ {
+ for (int j = 0; j < N; j++)
+ {
+ cout << A[i*N + j] << " ";
+ }
+ cout << endl;
+ }
+ */
+
+ using namespace ietl;
+
+ vectorspace<boost::numeric::ublas::vector<double> > VS(N);
+ lanczos<Matrix, vectorspace<boost::numeric::ublas::vector<double> > > LanczosObject(A, VS);
+
+ double _rel_tol = 1000.*std::numeric_limits<double>::epsilon();
+ double _abs_tol = 10000.*std::numeric_limits<double>::epsilon();
+
+ // _rel_tol = 100.*std::numeric_limits<double>::epsilon();
+ // _abs_tol = 100.*std::numeric_limits<double>::epsilon();
+
+ // SO far these are the best I have found:
+ // _rel_tol = 1000.*std::numeric_limits<double>::epsilon();
+ // _abs_tol = 10000.*std::numeric_limits<double>::epsilon();
+
+ _rel_tol = rel_tol*std::numeric_limits<double>::epsilon();
+ _abs_tol = abs_tol*std::numeric_limits<double>::epsilon();
+
+
+ lanczos_iteration_nlowest<double> LanczosIterationControl(1000000, first_eigenvector_index + num_eigenvectors, _rel_tol, _abs_tol);
+ // std::cout << std::numeric_limits<double>::epsilon() << std::endl;
+ boost::minstd_rand gen(1);
+ //boost::rand48 gen(1);
+ LanczosObject.calculate_eigenvalues(LanczosIterationControl, gen);
+ std::vector<double> evals = LanczosObject.eigenvalues();
+
+ // for (int i = 0; i < N; i++)
+ // std::cout << evals[i] << " ";
+ // std::cout << std::endl;
+
+ /*
+ std::vector<int> multiplicities = LanczosObject.multiplicities();
+ int lowest_eval_multiplicity = multiplicities[1];
+ int second_eval_multiplicity;
+ if (lowest_eval_multiplicity == 1 && multiplicities[2] > 1)
+ second_eval_multiplicity = 2;
+ else
+ second_eval_multiplicity = 1;
+
+ for (int i = 0; i < N; i++)
+ std::cout << multiplicities[i] << " ";
+ std::cout << std::endl;
+ */
+
+ std::vector<boost::numeric::ublas::vector<double> > evecs(num_eigenvectors);
+ for (int j = 0; j < num_eigenvectors; j++)
+ evecs[j] = *(new boost::numeric::ublas::vector<double>(N));
+ std::vector<boost::numeric::ublas::vector<double> >::iterator out_it = evecs.begin();
+
+ Info<double> info;
+ std::vector<double>::iterator ebegin, eend;
+ ebegin = evals.begin();
+ ebegin += first_eigenvector_index;
+ eend = evals.begin();
+ // eend += 4 + (1 - lowest_eval_multiplicity) + (1 - second_eval_multiplicity);
+ eend += first_eigenvector_index + num_eigenvectors;
+ LanczosObject.eigenvectors(ebegin, eend, out_it, info, gen, 100000);
+ // LanczosObject.eigenvectors(ebegin, eend, out_it, info, gen);
+
+ /*
+ // If eigenvalues are repeated, we need to copy eigenvectors
+ if (lowest_eval_multiplicity > 1) {
+ for (int i = 0; i < N; i++)
+ evecs[1][i] = evecs[0][i];
+ if (lowest_eval_multiplicity > 2) {
+ for(int i = 0; i < N; i++)
+ evecs[2][i] = evecs[0][i];
+ }
+ }
+ if (second_eval_multiplicity > 1) {
+ for (int i = 0; i < N; i++)
+ evecs[2][i] = evecs[1][i];
+ }
+ */
+
+ // for (int i = 0; i < 3; i++)
+ // for (int j = 0; j < N; j++)
+ // std::cout << evecs[i][j] << " ";
+ // cout << std::endl;
+
+ // std::cout << A << std::endl;
+ // std::cout << LanczosIterationControl.error_code() << endl;;
+ // std::cout << info.error_info(1) << " " << info.error_info(2) << " " << info.error_info(3) << std::endl;
+
+ // std::vector<Vector> retval(num_eigenvectors);
+ for (int j = 0; j < num_eigenvectors; j++) {
+ // retval[j] = *(new Vector(N));
+ i = 0;
+ for (v = vs; v != ve; ++v) {
+ // retval[j][i] = evecs[first_eigenvector_index+j-1][i];
+ eigenvectors[j][i] = evecs[first_eigenvector_index+j-1][i];
+
+ i++;
+ }
+ }
+
+ // return retval;
+
+ } // end spectrum()
+
+} // end namespace boost
+
+#endif // BOOST_GRAPH_SPARSE_SPECTRUM_HPP
+

Added: sandbox/SOC/2008/BGL_Python/boost/graph/spectral_embedding_3d_layout.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/boost/graph/spectral_embedding_3d_layout.hpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,72 @@
+// Ben Martin
+// October 11, 2005
+
+// This currently works only on undirected graphs...
+// Graph must model Adjacency Graph, Incidence Graph, VertexListGraph
+
+#ifndef BOOST_GRAPH_SPECTRAL_EMBEDDING_LAYOUT_HPP
+#define BOOST_GRAPH_SPECTRAL_EMBEDDING_LAYOUT_HPP
+
+//#include <boost/graph/graph_traits.hpp>
+//#include <boost/graph/named_function_params.hpp>
+//#include <boost/graph/properties.hpp>
+//#include <boost/vector_property_map.hpp>
+
+#include <boost/graph/spectrum.hpp>
+#include <utility> // for pair
+#include <vector>
+
+namespace boost {
+
+ template <typename Graph, typename PositionMap>
+ void spectral_embedding_layout(Graph& g, PositionMap pos_map, double rel_tol = 100, double abs_tol = 1000) {
+
+ using std::vector;
+ using std::pair;
+
+ // typedef std::vector<double> Vector;
+ // typedef std::vector<std::vector<double> > Matrix;
+ typedef typename Graph::vertex_iterator VertexIterator;
+
+ int N = num_vertices(g);
+ // std::vector<Vector> evecs(3);
+ std::vector<std::vector<double> > evecs(3);
+ evecs[0] = *(new std::vector<double>(N));
+ evecs[1] = *(new std::vector<double>(N));
+ evecs[2] = *(new std::vector<double>(N));
+ // spectrum<Graph, Vector>(g, 1, 3, evecs, rel_tol, abs_tol);
+ // spectrum<Graph, Matrix >(g, 1, 3, &evecs, rel_tol, abs_tol);
+ spectrum(g, 1, 3, evecs, rel_tol, abs_tol);
+
+ int i;
+ VertexIterator v, vs, ve;
+ std::pair<VertexIterator, VertexIterator> p;
+ p = vertices(g);
+ vs = p.first;
+ ve = p.second;
+
+ i = 0;
+ for (v = vs; v != ve; ++v)
+ {
+ pos_map[*v][0] = evecs[0][i];
+ i++;
+ }
+ i = 0;
+ for (v = vs; v != ve; ++v)
+ {
+ pos_map[*v][1] = evecs[1][i];
+ i++;
+ }
+ i = 0;
+ for (v = vs; v != ve; ++v)
+ {
+ pos_map[*v][2] = evecs[2][i];
+ i++;
+ }
+
+ } // end spectral_embedding_layout()
+
+} // end namespace boost
+
+#endif // BOOST_GRAPH_SPECTRAL_EMBEDDING_LAYOUT_HPP
+

Added: sandbox/SOC/2008/BGL_Python/boost/graph/spectral_embedding_layout.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/boost/graph/spectral_embedding_layout.hpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,161 @@
+// Ben Martin
+// October 11, 2005
+
+// This currently works only on undirected graphs...
+// Graph must model Adjacency Graph, Incidence Graph, VertexListGraph
+
+
+
+#ifndef BOOST_GRAPH_SPECTRAL_EMBEDDING_LAYOUT_HPP
+#define BOOST_GRAPH_SPECTRAL_EMBEDDING_LAYOUT_HPP
+
+#include <boost/graph/graph_traits.hpp>
+#include <boost/graph/named_function_params.hpp>
+#include <boost/graph/properties.hpp>
+#include <vecLib/clapack.h>
+//#include "f2c.h"
+//#include "cblas.h"
+//#include "clapack.h"
+#include <utility> // for pair
+//#include <boost/graph/point2d.hpp>
+//#include <boost/graph/point3d.hpp>
+#include <iostream.h>
+
+typedef long int integer;
+typedef double doublereal;
+
+namespace boost {
+
+ template <typename Graph, typename PositionMap>
+ void spectral_embedding_layout(Graph& g, PositionMap pos_map) {
+
+ typedef typename property_map<Graph, vertex_index_t>::const_type IndexMap;
+ typedef typename Graph::vertex_iterator VertexIterator;
+ typedef typename boost::graph_traits<Graph>::adjacency_iterator AdjacencyIterator;
+
+ IndexMap index_map = get(vertex_index, g);
+
+ VertexIterator v, vs, ve;
+ using std::pair;
+ std::pair<VertexIterator, VertexIterator> p;
+ p = vertices(g);
+ vs = p.first;
+ ve = p.second;
+
+ integer N = num_vertices(g);
+
+ doublereal *A;
+ // A = (doublereal*)malloc( N*N*sizeof(double) );
+ A = new double[N * N];
+
+ int i;
+
+ AdjacencyIterator a, as, ae;
+ std::pair<AdjacencyIterator, AdjacencyIterator> ap;
+
+ for (i = 0; i < N * N; i++)
+ A[i] = 0;
+ i = 0;
+ for (v = vs; v != ve; ++v) {
+ A[(index_map[*v] * N) + index_map[*v]] = (doublereal)out_degree(*v, g);
+ ap = adjacent_vertices(*v, g);
+ as = ap.first;
+ ae = ap.second;
+ for (a = as; a != ae; ++a) {
+ A[index_map[*v] + index_map[*a]*N] = (doublereal)(-1);
+ A[index_map[*v]*N + index_map[*a]] = (doublereal)(-1);
+ }
+
+ pos_map[*v][0] = i;
+ pos_map[*v][1] = i;
+
+ i++;
+ }
+
+
+ /*
+ cout << "index_map = " << endl;
+ for (v = vs; v != ve; ++v) {
+ cout << index_map[*v] << " ";
+ }
+ cout << endl;
+ cout << "A = " << endl;
+ for (i = 0; i < N; i++)
+ {
+ for (int j = 0; j < N; j++)
+ {
+ cout << A[i*N + j] << " ";
+ }
+ cout << endl;
+ }
+ */
+
+ // Set up the 8 billion parameters for CLAPACK
+ char JOBZ = 'v';
+ char RANGE = 'i';
+ char UPLO = 'l'; // arbitrary at the moment...
+ // N is defined
+ // A is defined
+ integer LDA = N;
+ doublereal VL = 0; // not needed
+ doublereal VU = 0; // not needed
+ integer IL = 2;// 1; // first NON-ZERO eigenvalue
+ integer IU = 3;// N; // 4 for the 3d case
+ // char dlamch_cmach = 's';
+
+ doublereal ABSTOL = 0.01;// dlamch_(&dlamch_cmach); // most likely SEVERE OVERKILL
+ integer M = (IU - IL + 1); // N; // should come back 2 or 3 (for 2d, 3d respectively)
+ doublereal *W = new double[N]; // the eigenvalues
+ doublereal *Z = new double[N*M]; // the eigenvectors
+ integer LDZ = N;
+ integer *ISUPPZ = new integer[2*M];// (integer*)0; // = new int[2*(IU-IL+1)]; ??? Not needed?
+ doublereal *WORK = new double[26*N]; // should this be allocated?
+ integer LWORK = 26*N; // -1
+ integer *IWORK = new integer[10*N];
+ integer LIWORK = 10*N; // -1
+ integer INFO;
+
+ // dstegr_()
+ dsyevr_(&JOBZ, &RANGE, &UPLO, &N, A, &LDA, &VL, &VU, &IL, &IU, &ABSTOL,
+ &M, W, Z, &LDZ, ISUPPZ, WORK, &LWORK, IWORK, &LIWORK, &INFO);
+
+ /*
+ cout << "N = " << N << endl;
+ cout << "IL = " << INFO << endl;
+ cout << "IU = " << INFO << endl;
+
+ cout << "INFO = " << INFO << endl;
+ cout << "M = " << M << endl;
+
+ cout << "W = ";
+ for (i = 0; i < M; i++)
+ cout << W[i] << " ";
+ cout << endl;
+ for (i = 0; i < M; i++)
+ for (int j = 0; j < N; j++)
+ {
+ cout << Z[i*N + j] << "";
+ cout << endl;
+ }
+ */
+
+ // Set position based on eigenvectors
+ i = 0;
+ for (v = vs; v != ve; ++v)
+ {
+ pos_map[*v][0] = Z[0*LDZ + i];
+ i++;
+ }
+ i = 0;
+ for (v = vs; v != ve; ++v)
+ {
+ pos_map[*v][1] = Z[1*LDZ + i];
+ i++;
+ }
+
+ } // end spectral_embedding_layout()
+
+} // end namespace boost
+
+#endif // BOOST_GRAPH_SPECTRAL_EMBEDDING_LAYOUT_HPP
+

Added: sandbox/SOC/2008/BGL_Python/boost/graph/spectrum.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/boost/graph/spectrum.hpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,352 @@
+// Ben Martin
+// December 3, 2005
+
+// This currently works only on undirected graphs...
+// Graph must model Adjacency Graph, Incidence Graph, VertexListGraph
+
+#ifndef BOOST_GRAPH_SPECTRUM_HPP
+#define BOOST_GRAPH_SPECTRUM_HPP
+
+#define USE_IETL 0
+
+#if USE_IETL
+#else
+#define USE_LAPACK 1
+#endif
+
+#include <boost/graph/graph_traits.hpp>
+#include <boost/graph/named_function_params.hpp>
+#include <boost/graph/properties.hpp>
+#include <boost/vector_property_map.hpp>
+#include <utility> // for pair
+
+//#include <iostream.h>
+#ifdef USE_LAPACK
+#ifdef _APPLE_
+#include <vecLib/clapack.h>
+#endif
+//#include "f2c.h"
+//#include "cblas.h"
+//#include "clapack.h"
+#elif USE_IETL
+#include <boost/numeric/ublas/vector.hpp>
+#include <boost/numeric/ublas/vector_sparse.hpp>
+#include <boost/numeric/ublas/matrix_sparse.hpp>
+#include <boost/numeric/ublas/matrix_proxy.hpp>
+#include <boost/numeric/ublas/io.hpp>
+#include <ietl/vectorspace.h>
+#include <ietl/lanczos.h>
+#include <ietl/iteration.h>
+#include <boost/random/linear_congruential.hpp>
+#include <ietl/interface/ublas.h>
+#endif
+
+typedef long int integer;
+typedef double doublereal;
+
+#ifdef USE_LAPACK
+extern "C" int dsyevr_(char *jobz, char *range, char *uplo, integer *n,
+ doublereal *a, integer *lda, doublereal *vl, doublereal *vu, integer *
+ il, integer *iu, doublereal *abstol, integer *m, doublereal *w,
+ doublereal *z__, integer *ldz, integer *isuppz, doublereal *work,
+ integer *lwork, integer *iwork, integer *liwork, integer *info);
+#endif
+
+
+namespace boost {
+
+ template <typename Graph, typename Matrix >
+ void spectrum(Graph& g,
+ int first_eigenvector_index,
+ int num_eigenvectors,
+ Matrix &eigenvectors,
+ double rel_tol = 100,
+ double abs_tol = 1000)
+ {
+ std::vector<double> evals(num_eigenvectors);
+ spectrum(g, first_eigenvector_index, num_eigenvectors, eigenvectors, evals, rel_tol, abs_tol);
+ }
+
+ // Parameters:
+ // first_eigenvector_index:
+ // Since the smallest eigenvector is not useful, often this will
+ // be set to 1, for the "Fiedler vector," though if all
+ // eigenvectors are desired, 0 may be a more logical value.
+ // Negative values are interpreted as allowing a default choice of 1.
+ // num_eigenvectors:
+ // The number of eigencectors to return.
+
+ template <typename Graph, typename Matrix , typename EVector>
+ void spectrum(Graph& g,
+ int first_eigenvector_index,
+ int num_eigenvectors,
+ // std::vector<Vector> &eigenvectors,
+ Matrix &eigenvectors,
+ EVector &eigenvalues,
+ double rel_tol = 100,
+ double abs_tol = 1000)
+ {
+
+ // Matrix eigenvectors = *(in_eigenvectors);
+
+ if (first_eigenvector_index < 0)
+ first_eigenvector_index = 1;
+
+ typedef typename property_map<Graph, vertex_index_t>::const_type IndexMap;
+ typedef typename Graph::vertex_iterator VertexIterator;
+ typedef typename Graph::edge_iterator EdgeIterator;
+ typedef typename boost::graph_traits<Graph>::adjacency_iterator AdjacencyIterator;
+
+ IndexMap index_map = get(vertex_index, g);
+
+ VertexIterator v, vs, ve;
+ using std::pair;
+ std::pair<VertexIterator, VertexIterator> p;
+ p = vertices(g);
+ vs = p.first;
+ ve = p.second;
+
+ EdgeIterator e, es, ee;
+ using std::pair;
+ std::pair<EdgeIterator, EdgeIterator> ep;
+ ep = edges(g);
+ es = ep.first;
+ ee = ep.second;
+ typename Graph::vertex_descriptor src, tgt;
+
+ integer N = num_vertices(g);
+
+#ifdef USE_LAPACK
+ doublereal *A;
+ A = new double[N * N];
+#elif USE_IETL
+ using namespace boost::numeric::ublas;
+ typedef compressed_matrix<double> Matrix;
+ Matrix A(N, N);
+#endif
+
+ int i;
+
+ AdjacencyIterator a, as, ae;
+ std::pair<AdjacencyIterator, AdjacencyIterator> ap;
+
+#ifdef USE_LAPACK
+ for (i = 0; i < N * N; i++)
+ A[i] = 0;
+#elif USE_IETL
+#endif
+
+ i = 0;
+ /*
+ for (v = vs; v != ve; ++v) {
+#ifdef USE_LAPACK
+ A[(index_map[*v] * N) + index_map[*v]] = (doublereal)out_degree(*v, g);
+#elif USE_IETL
+ A(index_map[*v], index_map[*v]) = (double)out_degree(*v, g);
+#endif
+ }
+ */
+ for (e = es; e != ee; ++e) {
+ i += 1;
+ src = source(*e, g);
+ tgt = target(*e, g);
+#ifdef USE_LAPACK
+ if (src != tgt && A[index_map[src] + index_map[tgt]*N] != -1) {
+ A[index_map[src] + index_map[tgt]*N] = (doublereal)(-1);
+ A[index_map[src]*N + index_map[tgt]] = (doublereal)(-1);
+ A[index_map[src] + index_map[src]*N] += (doublereal)1;
+ A[index_map[tgt] + index_map[tgt]*N] += (doublereal)1;
+ }
+#elif USE_IETL
+ if (src != tgt && A(index_map[src], index_map[tgt]) != -1) {
+ A(index_map[src], index_map[tgt]) = (double)(-1);
+ A(index_map[tgt], index_map[src]) = (double)(-1);
+ A(index_map[src], index_map[src]) += (double)1;
+ A(index_map[tgt], index_map[tgt]) += (double)1;
+ }
+#endif
+ }
+
+ /*
+ cout << "index_map = " << endl;
+ for (v = vs; v != ve; ++v) {
+ cout << index_map[*v] << " ";
+ }
+ cout << endl;
+ cout << "A = " << endl;
+ for (i = 0; i < N; i++)
+ {
+ for (int j = 0; j < N; j++)
+ {
+ cout << A[i*N + j] << " ";
+ }
+ cout << endl;
+ }
+ */
+
+#ifdef USE_LAPACK
+ // Set up the 8 billion parameters for CLAPACK
+ char JOBZ = 'v';
+ char RANGE = 'i';
+ char UPLO = 'l'; // arbitrary at the moment...
+ // N is defined
+ // A is defined
+ integer LDA = N;
+ doublereal VL = 0; // not needed
+ doublereal VU = 0; // not needed
+ integer IL = first_eigenvector_index + 1; //2 // first NON-ZERO eigenvalue
+ integer IU = first_eigenvector_index + num_eigenvectors; // 4 for the 3d case
+ // char dlamch_cmach = 's';
+
+ // doublereal ABSTOL = 0.001;// dlamch_(&dlamch_cmach); // most likely SEVERE OVERKILL
+ doublereal ABSTOL = abs_tol*std::numeric_limits<double>::epsilon();
+ integer M = (IU - IL + 1); // N; // should come back 2 or 3 (for 2d, 3d respectively)
+ doublereal *W = new double[N]; // the eigenvalues
+ doublereal *Z = new double[N*M]; // the eigenvectors
+ integer LDZ = N;
+ integer *ISUPPZ = new integer[2*M];// (integer*)0; // = new int[2*(IU-IL+1)]; ??? Not needed?
+ doublereal *WORK = new double[26*N]; // should this be allocated?
+ integer LWORK = 26*N; // -1
+ integer *IWORK = new integer[10*N];
+ integer LIWORK = 10*N; // -1
+ integer INFO;
+
+ dsyevr_(&JOBZ, &RANGE, &UPLO, &N, A, &LDA, &VL, &VU, &IL, &IU, &ABSTOL,
+ &M, W, Z, &LDZ, ISUPPZ, WORK, &LWORK, IWORK, &LIWORK, &INFO);
+
+ /*
+ cout << "N = " << N << endl;
+ cout << "IL = " << INFO << endl;
+ cout << "IU = " << INFO << endl;
+
+ cout << "INFO = " << INFO << endl;
+ cout << "M = " << M << endl;
+
+ cout << "W = ";
+ for (i = 0; i < M; i++)
+ cout << W[i] << " ";
+ cout << endl;
+ for (i = 0; i < M; i++)
+ for (int j = 0; j < N; j++)
+ {
+ cout << Z[i*N + j] << "";
+ cout << endl;
+ }
+ */
+#elif USE_IETL
+
+ using namespace ietl;
+
+ vectorspace<boost::numeric::ublas::vector<double> > VS(N);
+ lanczos<Matrix, vectorspace<boost::numeric::ublas::vector<double> > > LanczosObject(A, VS);
+
+ double _rel_tol = 1000.*std::numeric_limits<double>::epsilon();
+ double _abs_tol = 10000.*std::numeric_limits<double>::epsilon();
+
+ // _rel_tol = 100.*std::numeric_limits<double>::epsilon();
+ // _abs_tol = 100.*std::numeric_limits<double>::epsilon();
+
+ // SO far these are the best I have found:
+ // _rel_tol = 1000.*std::numeric_limits<double>::epsilon();
+ // _abs_tol = 10000.*std::numeric_limits<double>::epsilon();
+
+ _rel_tol = rel_tol*std::numeric_limits<double>::epsilon();
+ _abs_tol = abs_tol*std::numeric_limits<double>::epsilon();
+
+
+ lanczos_iteration_nlowest<double> LanczosIterationControl(1000000, first_eigenvector_index + num_eigenvectors, _rel_tol, _abs_tol);
+ // std::cout << std::numeric_limits<double>::epsilon() << std::endl;
+ boost::minstd_rand gen(1);
+ //boost::rand48 gen(1);
+ LanczosObject.calculate_eigenvalues(LanczosIterationControl, gen);
+ std::vector<double> evals = LanczosObject.eigenvalues();
+
+ // for (int i = 0; i < N; i++)
+ // std::cout << evals[i] << " ";
+ // std::cout << std::endl;
+
+ /*
+ std::vector<int> multiplicities = LanczosObject.multiplicities();
+ int lowest_eval_multiplicity = multiplicities[1];
+ int second_eval_multiplicity;
+ if (lowest_eval_multiplicity == 1 && multiplicities[2] > 1)
+ second_eval_multiplicity = 2;
+ else
+ second_eval_multiplicity = 1;
+
+ for (int i = 0; i < N; i++)
+ std::cout << multiplicities[i] << " ";
+ std::cout << std::endl;
+ */
+
+ std::vector<boost::numeric::ublas::vector<double> > evecs(3);
+ for (int j = 0; j < num_eigenvectors; j++)
+ evecs[j] = *(new boost::numeric::ublas::vector<double>(N));
+ std::vector<boost::numeric::ublas::vector<double> >::iterator out_it = evecs.begin();
+
+ Info<double> info;
+ std::vector<double>::iterator ebegin, eend;
+ ebegin = evals.begin();
+ ebegin += first_eigenvector_index;
+ eend = evals.begin();
+ // eend += 4 + (1 - lowest_eval_multiplicity) + (1 - second_eval_multiplicity);
+ eend += first_eigenvector_index + num_eigenvectors;
+ LanczosObject.eigenvectors(ebegin, eend, out_it, info, gen, 100000);
+ // LanczosObject.eigenvectors(ebegin, eend, out_it, info, gen);
+
+ /*
+ // If eigenvalues are repeated, we need to copy eigenvectors
+ if (lowest_eval_multiplicity > 1) {
+ for (int i = 0; i < N; i++)
+ evecs[1][i] = evecs[0][i];
+ if (lowest_eval_multiplicity > 2) {
+ for(int i = 0; i < N; i++)
+ evecs[2][i] = evecs[0][i];
+ }
+ }
+ if (second_eval_multiplicity > 1) {
+ for (int i = 0; i < N; i++)
+ evecs[2][i] = evecs[1][i];
+ }
+ */
+
+ // for (int i = 0; i < 3; i++)
+ // for (int j = 0; j < N; j++)
+ // std::cout << evecs[i][j] << " ";
+ // cout << std::endl;
+
+ // std::cout << A << std::endl;
+ // std::cout << LanczosIterationControl.error_code() << endl;;
+ // std::cout << info.error_info(1) << " " << info.error_info(2) << " " << info.error_info(3) << std::endl;
+
+#endif
+
+ // std::vector<Vector> retval(num_eigenvectors);
+ for (int j = 0; j < num_eigenvectors; j++) {
+ // retval[j] = *(new Vector(N));
+ i = 0;
+ for (v = vs; v != ve; ++v) {
+#ifdef USE_LAPACK
+ // retval[j][i] = Z[(first_eigenvector_index+j-1)*LDZ + i];
+ eigenvectors[j][i] = Z[j*LDZ + i];
+#elif USE_IETL
+ // retval[j][i] = evecs[first_eigenvector_index+j-1][i];
+ eigenvectors[j][i] = evecs[first_eigenvector_index+j-1][i];
+
+#endif
+ i++;
+ }
+ }
+#ifdef USE_LAPACK
+ for (int j = 0; j < M; j++) {
+ eigenvalues[j] = W[j];
+ }
+#endif
+ // return retval;
+
+ } // end spectrum()
+
+} // end namespace boost
+
+#endif // BOOST_GRAPH_SPECTRUM_HPP
+

Added: sandbox/SOC/2008/BGL_Python/boost/vector_property_map.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/boost/vector_property_map.hpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,134 @@
+// Copyright (C) Vladimir Prus 2003.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/graph/vector_property_map.html for
+// documentation.
+//
+
+#ifndef VECTOR_PROPERTY_MAP_HPP_VP_2003_03_04
+#define VECTOR_PROPERTY_MAP_HPP_VP_2003_03_04
+
+#include <boost/property_map.hpp>
+#include <boost/shared_ptr.hpp>
+#include <boost/weak_ptr.hpp>
+#include <vector>
+
+namespace boost {
+ template<typename T, typename IndexMap = identity_property_map>
+ class vector_property_map
+ : public boost::put_get_helper<
+ typename std::iterator_traits<
+ typename std::vector<T>::iterator >::reference,
+ vector_property_map<T, IndexMap> >
+ {
+ public:
+ typedef typename property_traits<IndexMap>::key_type key_type;
+ typedef T value_type;
+ typedef typename std::iterator_traits<
+ typename std::vector<T>::iterator >::reference reference;
+ typedef boost::lvalue_property_map_tag category;
+
+ vector_property_map(const IndexMap& index = IndexMap())
+ : store(new std::vector<T>()), index(index)
+ {}
+
+ vector_property_map(unsigned initial_size,
+ const IndexMap& index = IndexMap())
+ : store(new std::vector<T>(initial_size)), index(index)
+ {}
+
+ vector_property_map(const shared_ptr<std::vector<T> >& store,
+ const IndexMap& index)
+ : store(store), index(index)
+ {}
+
+ typename std::vector<T>::iterator storage_begin()
+ {
+ return store->begin();
+ }
+
+ typename std::vector<T>::iterator storage_end()
+ {
+ return store->end();
+ }
+
+ typename std::vector<T>::const_iterator storage_begin() const
+ {
+ return store->begin();
+ }
+
+ typename std::vector<T>::const_iterator storage_end() const
+ {
+ return store->end();
+ }
+
+ shared_ptr< std::vector<T> >& get_store() { return store; }
+ const shared_ptr< std::vector<T> >& get_store() const { return store; }
+
+ IndexMap& get_index_map() { return index; }
+ const IndexMap& get_index_map() const { return index; }
+
+ public:
+ // Copy ctor absent, default semantics is OK.
+ // Assignment operator absent, default semantics is OK.
+ // CONSIDER: not sure that assignment to 'index' is correct.
+
+ reference operator[](const key_type& v) const {
+ typename property_traits<IndexMap>::value_type i = get(index, v);
+ if (static_cast<unsigned>(i) == store->size()) {
+ store->push_back(T());
+ } else if (static_cast<unsigned>(i) > store->size()) {
+ store->resize(i + 1, T());
+ }
+ return (*store)[i];
+ }
+ private:
+ // Conceptually, we have a vector of infinite size. For practical
+ // purposes, we start with an empty vector and grow it as needed.
+ // Note that we cannot store pointer to vector here -- we cannot
+ // store pointer to data, because if copy of property map resizes
+ // the vector, the pointer to data will be invalidated.
+ // I wonder if class 'pmap_ref' is simply needed.
+ shared_ptr< std::vector<T> > store;
+ IndexMap index;
+ };
+
+ template<typename T, typename IndexMap>
+ vector_property_map<T, IndexMap>
+ make_vector_property_map(IndexMap index)
+ {
+ return vector_property_map<T, IndexMap>(index);
+ }
+
+ /*
+ * A weak reference to a vector_property_map. The
+ * vector_property_map keeps a shared_ptr to its underlying
+ * storage. To keep track of this shared_ptr without incrementing
+ * its reference count, store a weak_vector_property_map (which
+ * itself contains a weak_ptr), which can be converted to a normal
+ * vector_property_map. Note that weak_vector_property_map is not
+ * actually a property map (just like weak_ptr is not actually a
+ * pointer).
+ */
+ template<typename T, typename IndexMap = identity_property_map>
+ class weak_vector_property_map
+ {
+ public:
+ explicit
+ weak_vector_property_map(const vector_property_map<T, IndexMap>& pmap)
+ : store(pmap.get_store()), index(pmap.get_index_map()) { }
+
+ operator vector_property_map<T, IndexMap>() const
+ {
+ return vector_property_map<T, IndexMap>(store, index);
+ }
+
+ private:
+ weak_ptr<std::vector<T> > store;
+ IndexMap index;
+ };
+}
+
+#endif

Added: sandbox/SOC/2008/BGL_Python/build/Jamfile
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/build/Jamfile 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,258 @@
+# Copyright (C) 2005, 2006 The Trustees of Indiana University.
+# Copyright (C) 2006 Douglas Gregor <doug.gregor -at- gmail.com>
+
+# Use, modification and distribution is subject to the Boost Software
+# License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt)
+
+# Authors: Douglas Gregor
+# Andrew Lumsdaine
+
+# This file builds and installs the Python bindings for the Boost
+# Graph Library.
+
+subproject build ;
+
+import python ;
+
+BOOST_GRAPH_PYTHON_SOURCES =
+ astar_visitor
+ bfs_visitor
+ dijkstra_visitor
+ dfs_visitor
+ docstring
+ __init__
+ show
+ bellman_ford_visitor
+ ;
+
+extension _support
+: # Sources
+ ../src/support.cpp
+ # Depend on the Boost Python library
+ <template>@boost/libs/python/build/extension
+ : # Requirements
+ <include>$(BGL_PYTHON_ROOT)
+ ;
+
+EXTRA_SRCS = ;
+EXTRA_REQUIREMENTS = <define>XML_STATIC ;
+
+if $(IETL_INCLUDE) {
+ EXTRA_SRCS = ../src/sparse_spectrum.cpp ;
+ EXTRA_REQUIREMENTS = <include>$(IETL_INCLUDE)
+ <define>INCLUDE_SPARSE_SPECTRUM ;
+}
+else {
+ EXTRA_SRCS = ;
+ EXTRA_REQUIREMENTS = ;
+}
+
+if $(OS) = MACOSX {
+# if $(IETL_INCLUDE) {
+ EXTRA_SRCS += ../src/spectrum.cpp
+ ../src/spectral_embedding_3d_layout.cpp
+ ../src/spectral_embedding_layout.cpp ;
+ EXTRA_REQUIREMENTS += <framework>/System/Library/Frameworks/vecLib.framework/vecLib
+ <define>INCLUDE_SPECTRUM
+ ;
+# <include>$(IETL_INCLUDE) ;
+# }
+# else ECHO IETL_INCLUDE not set, NOT building spectral routines. ;
+}
+else if $(LAPACK_PATH) {
+ EXTRA_SRCS += ../src/spectrum.cpp
+ ../src/spectral_embedding_3d_layout.cpp
+ ../src/spectral_embedding_layout.cpp ;
+
+ EXTRA_REQUIREMENTS += <find-library>libclapack
+ <library-path>$(LAPACK_PATH)
+ <define>INCLUDE_SPECTRUM ;
+}
+
+extension _graph
+ : # Sources
+ ../src/module.cpp
+ ../src/exception.cpp
+ # Graph types
+ ../src/basic_graph.cpp
+ ../src/graphdocs.cpp
+ ../src/properties.cpp
+ ../src/directed_properties.cpp
+ # Algorithms
+ ../src/astar_search.cpp
+ ../src/bellman_ford_shortest_paths.cpp
+ ../src/betweenness_centrality.cpp
+ ../src/biconnected_components.cpp
+ ../src/breadth_first_search.cpp
+ ../src/circle_layout.cpp
+ ../src/connected_components.cpp
+ ../src/cuthill_mckee_ordering.cpp
+ ../src/dag_shortest_paths.cpp
+ ../src/depth_first_search.cpp
+ ../src/dijkstra_shortest_paths.cpp
+ ../src/fruchterman_reingold.cpp
+ ../src/isomorphism.cpp
+ ../src/kamada_kawai_spring_layout.cpp
+ ../src/king_ordering.cpp
+ ../src/kruskal_min_spanning_tree.cpp
+ ../src/minimum_degree_ordering.cpp
+ ../src/page_rank.cpp
+ ../src/prim_minimum_spanning_tree.cpp
+ ../src/sequential_vertex_coloring.cpp
+ ../src/sloan_ordering.cpp
+ ../src/strong_components.cpp
+ ../src/topological_sort.cpp
+ ../src/transitive_closure.cpp
+ # Graph generators
+ ../src/generators.cpp
+ # Graph I/O
+ ../src/graphviz.cpp
+ ../src/graphml.cpp
+ ../src/pickle.cpp
+ # Everything else
+ $(EXTRA_SRCS)
+ # Depend on the Boost Python library
+ <template>@boost/libs/python/build/extension
+ # Depend on the bgl-viz library for GraphViz support
+ <lib>@boost/libs/graph/build/bgl-viz
+ # Depend on Expat for XML support
+ <lib>../vendor/expat-2.0.0/expat
+ : # Requirements
+ $(EXTRA_REQUIREMENTS)
+ <include>$(BGL_PYTHON_ROOT)
+ ;
+
+# Strip any end-of-line characters off the given string and return the
+# result.
+local rule strip-eol ( string )
+{
+ local match = [ MATCH "^(([A-Za-z0-9~`\.!@#$%^&*()_+={};:'\",.<>/?\\| -]|[|])*
+).*$" : $(string) ] ;
+
+ if $(match)
+ {
+ return $(match[1]) ;
+ }
+ else
+ {
+ return $(string) ;
+ }
+}
+
+if install in $(ARGV)
+{
+ exec-prefix = [ MATCH "^--exec-prefix=(.*)" : $(ARGV) ] ;
+ home = [ MATCH "^--home=(.*)" : $(ARGV) ] ;
+ libdir = [ MATCH "^--libdir=(.*)" : $(ARGV) ] ;
+ pythonlibdir = [ MATCH "^--pythonlibdir=(.*)" : $(ARGV) ] ;
+
+ if $(home)
+ {
+ # Only one of --home or --exec-prefix can be provided
+ if $(exec-prefix)
+ {
+ ECHO "ERROR: Cannot specify both --home and --exec-prefix" ;
+ ECHO " --home is for home-directory installations" ;
+ ECHO " --exec-prefix is for system-wide installations" ;
+ EXIT -1 ;
+ }
+
+ # Install libraries in $(home)/lib
+ if ! $(libdir)
+ {
+ libdir = $(home)/lib ;
+ }
+
+ # Install Python module in $(home)/lib/python
+ if ! $(pythonlibdir)
+ {
+ pythonlibdir = $(home)/lib/python ;
+ }
+ }
+ else
+ {
+ # If no --home or --exec-prefix given. Ask Python
+ if ! $(exec-prefix)
+ {
+ exec-prefix = [ strip-eol [ SHELL "$(PYTHON:G=) -c \"import sys; print sys.exec_prefix\"" ] ] ;
+ }
+
+ # Non-pure Python modules go into the exec-prefix's site-packages
+ if ! $(pythonlibdir)
+ {
+ pythonlibdir = $(exec-prefix)/lib/python$(PYTHON_VERSION)/site-packages ;
+ }
+
+ # Libraries go into $(exec-prefix)/lib on Unix
+ # $(pythonlibdir)/boost on Mac.
+ if ! $(libdir)
+ {
+ if $(OS) = MACOSX
+ {
+ libdir = $(pythonlibdir)/boost ;
+ }
+ else
+ {
+ libdir = $(exec-prefix)/lib ;
+ }
+ }
+ }
+
+ # Replace any occurrences of "~" in libdir with $(HOME)
+ local tilde = [ MATCH "^(.*)~(.*)$" : $(libdir) ] ;
+ while $(tilde)
+ {
+ libdir = $(tilde[1])$(HOME)$(tilde[2]) ;
+ tilde = [ MATCH "^(.*)~(.*)$" : $(libdir) ] ;
+ }
+
+ # Replace any occurrences of "~" in pythonlibdir with $(HOME)
+ tilde = [ MATCH "^(.*)~(.*)$" : $(pythonlibdir) ] ;
+ while $(tilde)
+ {
+ pythonlibdir = $(tilde[1])$(HOME)$(tilde[2]) ;
+ tilde = [ MATCH "^(.*)~(.*)$" : $(pythonlibdir) ] ;
+ }
+
+ # Setup "install" as a target that we can stage with
+ declare-fake-targets install ;
+
+ # Tell the user what we're planning to do
+ if ! $(gBGL_PYTHON_INSTALL_MSG)
+ {
+ gBGL_PYTHON_INSTALL_MSG = yes ;
+ ECHO "Installing BGL support libraries in $(libdir)..." ;
+ }
+
+ # Tell the user what we're planning to do
+ if ! $(gBGL_PYTHON_PYTHON_INSTALL_MSG)
+ {
+ gBGL_PYTHON_PYTHON_INSTALL_MSG = yes ;
+ ECHO "Installing BGL Python module in $(pythonlibdir)..." ;
+ }
+
+ # Add a stage target that copies the __init.py__ for the "boost"
+ # module.
+ stage $(pythonlibdir)/boost
+ : ../python/boost/__init__.py
+ : <target>install
+ ;
+
+ # Add a stage target that copies the Python module and its
+ # __init__.py
+ stage $(pythonlibdir)/boost/graph
+ : <pyd>_support <pyd>_graph
+ ../python/boost/graph/$(BOOST_GRAPH_PYTHON_SOURCES).py
+ : <target>install
+ : release
+ ;
+
+ # Add a stage target to copy the Boost.Python library.
+ stage $(libdir)
+ : <dll>@boost/libs/python/build/boost_python
+ : <target>install
+ : release
+ ;
+
+}

Added: sandbox/SOC/2008/BGL_Python/build/Jamrules
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/build/Jamrules 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,41 @@
+# Copyright David Abrahams 2003. See accompanying LICENSE for terms
+# and conditions of use.
+# Copyright 2005 Trustees of Indiana University
+#
+# Authors: David Abrahams
+# Douglas Gregor
+# Andrew Lumsdaine
+#
+local pwd = [ PWD ] ;
+path-global BGL_PYTHON_ROOT : $(pwd)/.. ;
+
+# Boost.Python configuration variables, as described in
+# http://www.boost.org/libs/python/doc/building.html#configuration.
+# Usually you don't need to set these; the defaults will work. If you
+# do set them, try to change as few of them as possible, starting with
+# the first ones.
+
+ # PYTHON_VERSION = <the two-part Major.Minor version number, e.g. 2.2> ;
+ # PYTHON_ROOT = <root directory of your Python installation, e.g. /usr> ;
+ # PYTHON_INCLUDES = <path to Python #include directories> ;
+ # PYTHON_LIB_PATH = <path to Python library object> ;
+
+# You may need to configure your compiler toolset, especially if you
+# want to build with a compiler that is not the "system default" or if
+# it is installed in a nonstandard place; see
+# http://www.boost.org/more/getting_started.html#Configuring for
+# details.
+
+# Makes a project id for the Boost library so that other Boost.Build
+# projects c an refer to it by name.
+project boost : $(BOOST_ROOT) ;
+
+# Makes a project id for the BGL-Python bindings so that other
+# Boost.Build projects can refer to it by name.
+#
+project bgl-python : $(BGL_PYTHON_ROOT) ;
+
+# Change this setting to have all your built products placed under a
+# single directory:
+#
+# ALL_LOCATE_TARGET = <root directory for all built products>

Added: sandbox/SOC/2008/BGL_Python/build/distributed/Jamfile
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/build/distributed/Jamfile 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,85 @@
+# Copyright 2005 The Trustees of Indiana University.
+
+# Use, modification and distribution is subject to the Boost Software
+# License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt)
+
+# Authors: Douglas Gregor
+# Andrew Lumsdaine
+
+# This file builds the Python bindings for the Parallel BGL.
+
+subproject build/distributed ;
+
+import python ;
+
+# Pull in the MPI linking code
+import ./mpi.jam ;
+
+if ! $(PBGL_ROOT) {
+ if ! $(gPBGL_INITIALIZED) {
+ gPBGL_INITIALIZED = yes ;
+ }
+} else {
+ # Find the Python executable. We need this when linking on Darwin.
+ local python_executable = $(PYTHON:G=) ;
+ if ! [ MATCH "^(/)" : $(python_executable) ] {
+ local found = [ GLOB $(PATH) : $(python_executable) ] ;
+ if $(found) {
+ python_executable = $(found[1]) ;
+ }
+ }
+
+ # Build the Python extension model
+ extension _distributed
+ : # Sources
+ ../../src/distributed/module.cpp
+ # Graph types
+ ../../src/distributed/graphs.cpp
+ # Property maps
+ ../../src/distributed/properties.cpp
+ # Algorithms
+ ../../src/distributed/boman_et_al_graph_coloring.cpp
+ ../../src/distributed/breadth_first_search.cpp
+ ../../src/distributed/connected_components.cpp
+ ../../src/distributed/dehne_gotz_min_spanning_tree.cpp
+ ../../src/distributed/dijkstra_shortest_paths.cpp
+ ../../src/distributed/dinic_max_flow.cpp
+ ../../src/distributed/fruchterman_reingold.cpp
+ ../../src/distributed/page_rank.cpp
+ ../../src/distributed/strong_components.cpp
+ # Graph generators
+ ../../src/distributed/generators.cpp
+ # Graph I/O
+ ../../src/distributed/graphviz.cpp
+ ../../src/distributed/metis.cpp
+ # Process groups (TBD: Should have a library for this)
+ $(PBGL_ROOT)/libs/parallel/src/mpi/bsp_process_group.cpp
+ ../../src/distributed/mpi.cpp
+ # Depend on the Boost Python library
+ <template>@boost/libs/python/build/extension
+ # Pick up all of the arguments needed to link against MPI
+ <template>mpi
+ : # Requirements
+ <include>$(BGL_PYTHON_ROOT) <include>$(PBGL_ROOT)
+ <debug-symbols>off
+ # Extra options we need to get building and linking to work
+ <darwin><*><linkflags>"-bundle_loader $(python_executable)"
+ <gcc-3_3-darwin><*><linkflags>"-bundle_loader $(python_executable)"
+ <define>BOOST_GRAPH_IS_PARALLEL
+ ;
+
+ install _distributed pyd
+ : <pyd>_distributed
+ <dll>@boost/libs/python/build/boost_python
+ ;
+
+ stage ../../python/boost/graph/distributed : <pyd>_distributed
+ :
+ # add this target to the "stage" and "all" pseudo-targets:
+ <target>stage
+ <target>all
+ :
+ release
+ ;
+}

Added: sandbox/SOC/2008/BGL_Python/build/distributed/Jamrules
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/build/distributed/Jamrules 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,41 @@
+# Copyright David Abrahams 2003. See accompanying LICENSE for terms
+# and conditions of use.
+# Copyright 2005 Trustees of Indiana University
+#
+# Authors: David Abrahams
+# Douglas Gregor
+# Andrew Lumsdaine
+#
+local pwd = [ PWD ] ;
+path-global BGL_PYTHON_ROOT : $(pwd)/../.. ;
+
+# Boost.Python configuration variables, as described in
+# http://www.boost.org/libs/python/doc/building.html#configuration.
+# Usually you don't need to set these; the defaults will work. If you
+# do set them, try to change as few of them as possible, starting with
+# the first ones.
+
+ # PYTHON_VERSION = <the two-part Major.Minor version number, e.g. 2.2> ;
+ # PYTHON_ROOT = <root directory of your Python installation, e.g. /usr> ;
+ # PYTHON_INCLUDES = <path to Python #include directories> ;
+ # PYTHON_LIB_PATH = <path to Python library object> ;
+
+# You may need to configure your compiler toolset, especially if you
+# want to build with a compiler that is not the "system default" or if
+# it is installed in a nonstandard place; see
+# http://www.boost.org/more/getting_started.html#Configuring for
+# details.
+
+# Makes a project id for the Boost library so that other Boost.Build
+# projects c an refer to it by name.
+project boost : $(BOOST_ROOT) ;
+
+# Makes a project id for the BGL-Python bindings so that other
+# Boost.Build projects can refer to it by name.
+#
+project bgl-python : $(BGL_PYTHON_ROOT) ;
+
+# Change this setting to have all your built products placed under a
+# single directory:
+#
+# ALL_LOCATE_TARGET = <root directory for all built products>

Added: sandbox/SOC/2008/BGL_Python/build/distributed/mpi.jam
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/build/distributed/mpi.jam 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,124 @@
+# Parallel Boost Graph Library - MPI support
+
+# (C) Copyright 2005 Trustees of Indiana University
+#
+# Distributed under the Boost Software License, Version 1.0. (See accompanying
+# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
+#
+# Authors: Douglas Gregor
+# Andrew Lumsdaine
+
+# If the user has not specified an MPICXX, use the standard mpic++
+MPICXX ?= mpic++ ;
+
+# Assuming the first part of the command line is the given prefix
+# followed by some non-empty value, remove the first argument. Returns
+# either nothing (if there was no prefix or no value) or a pair
+#
+# <name>value rest-of-cmdline
+#
+# This is a subroutine of cmdline_to_features
+rule add_feature ( prefix name cmdline )
+{
+ local match = [ MATCH "^$(prefix)([^\" ]+|\"[^\"]+\") +(.*)$" : $(cmdline) ] ;
+
+ # If there was no value associated with the prefix, abort
+ if ! $(match) {
+ return ;
+ }
+
+ local value = $(match[1]) ;
+
+ if [ MATCH " +" : $(value) ] {
+ value = "\"$(value)\"" ;
+ }
+
+ return "<$(name)>$(value)" $(match[2]) ;
+}
+
+# Split a command-line into a set of features. Certain kinds of
+# compiler flags are recognized (e.g., -I, -D, -L, -l) and replaced
+# with their Boost.Build equivalents (e.g., <include>, <define>,
+# <library-path>, <find-library>). All other arguments are introduced
+# using <cxxflags> and <linkflags>, because we don't know which is
+# correct. The incoming command line should be a string starting with
+# an executable (e.g., g++ -I/include/path") and may contain any
+# number of command-line arguments thereafter. The result is a list of
+# features corresponding to the given command line, ignoring the
+# executable.
+rule cmdline_to_features ( cmdline )
+{
+ local executable ;
+ local features ;
+ local otherflags ;
+ local result ;
+
+ # Pull the executable out of the command line. At this point, the
+ # executable is just thrown away.
+ local match = [ MATCH "^([^\" ]+|\"[^\"]+\") *(.*)$" : $(cmdline) ] ;
+ executable = $(match[1]) ;
+ cmdline = $(match[2]) ;
+
+ # List the prefix/feature pairs that we will be able to transform.
+ # Every kind of parameter not mentioned here will be placed in both
+ # cxxflags and linkflags, because we don't know where they should go.
+ local feature_kinds-D = "define" ;
+ local feature_kinds-I = "include" ;
+ local feature_kinds-L = "library-path" ;
+ local feature_kinds-l = "find-library" ;
+
+ while $(cmdline) {
+
+ # Check for one of the feature prefixes we know about. If we
+ # find one (and the associated value is nonempty), convert it
+ # into a feature.
+ local match = [ MATCH "^(-.)(.*)" : $(cmdline) ] ;
+ local matched ;
+ if $(match) && $(match[2]) {
+ local prefix = $(match[1]) ;
+ if $(feature_kinds$(prefix)) {
+ local name = $(feature_kinds$(prefix)) ;
+ local add = [ add_feature $(prefix) $(name) $(cmdline) ] ;
+
+ if $(add) {
+ result += $(add[1]) ;
+ cmdline = $(add[2]) ;
+ matched = yes ;
+ }
+ }
+ }
+
+ # If we haved matched a feature prefix, just grab the command-line
+ # argument and add it to the list of "other" flags that we don't
+ # understand.
+ if ! $(matched) {
+ match = [ MATCH "^([^\" ]+|\"[^\"]+\") *(.*)$" : $(cmdline) ] ;
+ local value = $(match[1]) ;
+ cmdline = $(match[2]) ;
+
+ if [ MATCH "(.*[a-zA-Z0-9<>?-].*)" : $(value) ] {
+ otherflags += $(value) ;
+ }
+ }
+ }
+
+ # If there are other flags that we don't understand, add them to the
+ # result as both <cxxflags> and <linkflags>
+ if $(otherflags) {
+ result += "<cxxflags>$(otherflags)" ;
+ result += "<linkflags>$(otherflags)" ;
+ }
+
+ return $(result) ;
+}
+
+# Compute the set of MPI features using "-showme" on the MPICXX
+# compiler. Note that is only actually works for LAM-MPI. We'll need
+# to test a few other MPI implementations to see how to get the flags.
+local showme_result = [ SHELL "$(MPICXX) -showme" ] ;
+local mpi_features = [ cmdline_to_features $(showme_result) ] ;
+
+template mpi
+ :
+ : $(mpi_features)
+ ;

Added: sandbox/SOC/2008/BGL_Python/example/bellman_ford.py
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/example/bellman_ford.py 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,24 @@
+# Copyright (C) 2006 The Trustees of Indiana University.
+
+# Use, modification and distribution is subject to the Boost Software
+# License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+# http:#www.boost.org/LICENSE_1_0.txt)
+
+# Authors: Douglas Gregor
+# Andrew Lumsdaine
+import boost.graph as bgl
+
+# Load a graph from the GraphViz file 'mst.dot'
+graph = bgl.Graph.read_graphviz('mst.dot')
+
+# Compute the shortest paths from the first vertex ('A')
+A = graph.vertices.next()
+bgl.bellman_ford_shortest_paths(graph, A,
+ distance_map = graph.add_vertex_property('distance') ,
+ predecessor_map = graph.add_vertex_property('predecessor'),
+ weight_map = graph.edge_properties['weight'])
+
+# Print out the shortest paths tree
+for v in graph.vertices:
+ print v.node_id,'distance from A = ',v.distance,
+ print ', predecessor = ', v.predecessor.node_id

Added: sandbox/SOC/2008/BGL_Python/example/compute_mst.py
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/example/compute_mst.py 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,30 @@
+# Copyright 2005 The Trustees of Indiana University.
+
+# Use, modification and distribution is subject to the Boost Software
+# License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+# http:#www.boost.org/LICENSE_1_0.txt)
+
+# Authors: Douglas Gregor
+# Andrew Lumsdaine
+import boost.graph as bgl
+
+# Load a graph from the GraphViz file 'mst.dot'
+graph = bgl.read_graphviz('mst.dot')
+
+# Compute the minimum spanning tree of the graph
+mst_edges = bgl.kruskal_minimum_spanning_tree(graph, graph.edge_properties['weight'])
+
+# Compute the weight of the minimum spanning tree
+print 'MST weight =',sum([e.weight for e in mst_edges])
+
+# Put the weights into the label. Make MST edges solid while all other
+# edges remain dashed.
+for e in graph.edges:
+ e.label = e.weight
+ if e in mst_edges:
+ e.style = 'solid'
+ else:
+ e.style = 'dashed'
+
+# Write out the graph in GraphViz DOT format
+graph.write_graphviz('mst-out.dot')

Added: sandbox/SOC/2008/BGL_Python/example/data/attributes.graphml
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/example/data/attributes.graphml 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This file was written by the JAVA GraphML Library.-->
+<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd">
+ <key id="d0" for="node" attr.name="color" attr.type="string">yellow</key>
+ <key id="d1" for="edge" attr.name="weight" attr.type="double"/>
+ <graph id="G" edgedefault="undirected">
+ <node id="n0">
+ <data key="d0">green</data>
+ </node>
+ <node id="n1"/>
+ <node id="n2">
+ <data key="d0">blue</data>
+ </node>
+ <node id="n3">
+ <data key="d0">red</data>
+ </node>
+ <node id="n4"/>
+ <node id="n5">
+ <data key="d0">turquoise</data>
+ </node>
+ <edge id="e0" source="n0" target="n2">
+ <data key="d1">1.0</data>
+ </edge>
+ <edge id="e1" source="n0" target="n1">
+ <data key="d1">1.0</data>
+ </edge>
+ <edge id="e2" source="n1" target="n3">
+ <data key="d1">2.0</data>
+ </edge>
+ <edge id="e3" source="n3" target="n2"/>
+ <edge id="e4" source="n2" target="n4"/>
+ <edge id="e5" source="n3" target="n5"/>
+ <edge id="e6" source="n5" target="n4">
+ <data key="d1">1.1</data>
+ </edge>
+ </graph>
+</graphml>

Added: sandbox/SOC/2008/BGL_Python/example/data/simple.graphml
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/example/data/simple.graphml 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This file was written by the JAVA GraphML Library.-->
+<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd">
+ <graph id="G" edgedefault="directed">
+ <node id="n0"/>
+ <node id="n1"/>
+ <node id="n2"/>
+ <node id="n3"/>
+ <node id="n4"/>
+ <node id="n5"/>
+ <node id="n6"/>
+ <node id="n7"/>
+ <node id="n8"/>
+ <node id="n9"/>
+ <node id="n10"/>
+ <edge source="n0" target="n2"/>
+ <edge source="n1" target="n2"/>
+ <edge source="n2" target="n3"/>
+ <edge source="n3" target="n5"/>
+ <edge source="n3" target="n4"/>
+ <edge source="n4" target="n6"/>
+ <edge source="n6" target="n5"/>
+ <edge source="n5" target="n7"/>
+ <edge source="n6" target="n8"/>
+ <edge source="n8" target="n7"/>
+ <edge source="n8" target="n9"/>
+ <edge source="n8" target="n10"/>
+ </graph>
+</graphml>

Added: sandbox/SOC/2008/BGL_Python/example/dijkstra.py
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/example/dijkstra.py 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,24 @@
+# Copyright (C) 2006 The Trustees of Indiana University.
+
+# Use, modification and distribution is subject to the Boost Software
+# License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+# http:#www.boost.org/LICENSE_1_0.txt)
+
+# Authors: Douglas Gregor
+# Andrew Lumsdaine
+import boost.graph as bgl
+
+# Load a graph from the GraphViz file 'mst.dot'
+graph = bgl.Graph.read_graphviz('mst.dot')
+
+# Compute the shortest paths from the first vertex ('A')
+A = graph.vertices.next()
+bgl.dijkstra_shortest_paths(graph, A,
+ distance_map = graph.add_vertex_property('distance') ,
+ predecessor_map = graph.add_vertex_property('predecessor'),
+ weight_map = graph.edge_properties['weight'])
+
+# Print out the shortest paths tree
+for v in graph.vertices:
+ print v.node_id,'distance from A = ',v.distance,
+ print ', predecessor = ', v.predecessor.node_id

Added: sandbox/SOC/2008/BGL_Python/example/hide.py
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/example/hide.py 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,13 @@
+import boost.graph as bgl
+
+g = bgl.Graph((('a', 'b'), ('b', 'c'), ('c', 'd'), ('d', 'a')), 'name')
+
+print 'When not hidden, contains',len(bgl.biconnected_components(g, g.add_edge_property(type='integer'))),'articulation points'
+
+hide_edges = g.add_edge_property(type='integer')
+hide_edges[g.edges.next()] = 1
+
+print 'When hidden, contains',len(bgl.biconnected_components(g, g.add_edge_property(type='integer'), hide_edges)),'articulation points'
+
+g.remove_edge(g.edges.next())
+print 'When removed, contains',len(bgl.biconnected_components(g, g.add_edge_property(type='integer'))),'articulation points'

Added: sandbox/SOC/2008/BGL_Python/example/mst.dot
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/example/mst.dot 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,10 @@
+graph G {
+ A -- C [weight="1.0"]
+ B -- D [weight="1.0"]
+ B -- E [weight="2.0"]
+ C -- B [weight="7.0"]
+ C -- D [weight="3.0"]
+ D -- E [weight="1.0"]
+ E -- A [weight="1.0"]
+ E -- B [weight="1.0"]
+}
\ No newline at end of file

Added: sandbox/SOC/2008/BGL_Python/project-root.jam
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/project-root.jam 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,5 @@
+# Copyright (C) 2006 The Trustees of Indiana University
+#
+# Distributed under the Boost Software License, Version 1.0. (See
+# accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt)

Added: sandbox/SOC/2008/BGL_Python/python/boost/__init__.py
==============================================================================

Added: sandbox/SOC/2008/BGL_Python/python/boost/graph/__init__.py
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/python/boost/graph/__init__.py 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,629 @@
+# Copyright (C) 2005, 2006 The Trustees of Indiana University.
+
+# Use, modification and distribution is subject to the Boost Software
+# License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+# http:#www.boost.org/LICENSE_1_0.txt)
+
+# Authors: Douglas Gregor
+# Andrew Lumsdaine
+
+# Filter out some annoying Boost.Python warnings that expose our dirty
+# laundry.
+import warnings
+warnings.filterwarnings("ignore", category=RuntimeWarning, module="boost.graph");
+
+from boost.graph._support import *
+from boost.graph._graph import *
+from astar_visitor import astar_visitor
+from bfs_visitor import bfs_visitor
+from bellman_ford_visitor import bellman_ford_visitor
+from dfs_visitor import dfs_visitor
+from dijkstra_visitor import dijkstra_visitor
+
+try:
+ from show import show
+except:
+ pass
+
+# Documentation that is not part of the compiled extension modules.
+
+__doc__ = """Python Bindings for the Boost Graph Library
+
+This package provides Python access to the components of the Boost
+Graph Library (written in C++). The primary classes are Graph and
+Digraph, which are adjacency list data structures used to represent
+graphs (or networks).
+
+More information about the Boost Graph Library is available on several
+web pages:
+
+ The Boost Library Collection - http://www.boost.org
+ The Boost Graph Library - http://www.boost.org/libs/graph/doc
+ The BGL-Python Package - http://www.osl.iu.edu/~dgregor/bgl-python
+
+Copyright (C) 2005-2007 The Trustees of Indiana University.
+
+Use, modification and distribution is subject to the Boost Software
+License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+http:#www.boost.org/LICENSE_1_0.txt)
+
+Authors: Douglas Gregor
+ Ben Martin
+ Andrew Lumsdaine
+"""
+
+__license__ = 'Boost Software License, Version 1.0'
+__version__ = '0.9.5'
+__copyright__ = "Copyright (C) 2005-2007 The Trustees of Indiana University"
+__author__ = "Douglas Gregor, Ben Martin, and Andrew Lumsdaine"
+
+# Introduce documentation for all of the algorithms in the module.
+# Doing so here is *much* easier than doing it in the C++ code,
+# because we don't need to recompile to change documentation and we
+# have the option to do fancier things within the Python code to make
+# our lives easier.
+import docstring
+_documentor = docstring.docstring()
+
+# Data structure documentation
+Graph.__doc__ = """
+An undirected graph data structure.
+
+An undirected graph (also called a network) is a data structure that
+contains a set of vertices and relationships between pairs of vertices,
+called edges. Given two vertices u and v, an edge (u, v) indicates a
+relationship between them. What vertices and edges mean depends on how
+the data structure is used. For instance, vertices may be cities and
+edges are the roads that connect them. Or, edges may represent direct
+network connections between two routers or two computers. Since the
+graph is undirected, the order of the vertices in the edge does not
+matter: the relationship is mutual. For graphs where the edge direction
+does matter, use the Digraph class.
+
+Vertices and edges provide the structure of the graph, but most of the
+interesting domain-specific information of graphs is actually stored on
+the vertices and edges of the graph. For this reason, one can create
+properties via the add_vertex_property and add_edge_property methods
+to represent, for instance, the IP address of a vertex that represents
+a router or the length of a road connecting two cities.
+
+Complete C++ documentation for the adjacency list representation:
+ http://www.boost.org/libs/graph/doc/adjacency_list.html
+"""
+
+Digraph.__doc__ = """
+A directed graph data structure.
+
+A directed graph (also called a network) is a data structure that
+contains a set of vertices and relationships between pairs of
+vertices, called edges. Given two vertices u and v, an edge (u, v)
+indicates a relationship between them. What vertices and edges mean
+depends on how the data structure is used. For instance, vertices may
+be tasks and edges might mean that the source of the edge cannot be
+completed until the target task has been completed. The ordering of
+vertices in an edge is important For graphs where the edge direction
+does not matter, use the Graph class.
+
+Vertices and edges provide the structure of the graph, but most of the
+interesting domain-specific information of graphs is actually stored on
+the vertices and edges of the graph. For this reason, one can create
+properties via the add_vertex_property and add_edge_property methods
+to represent, for instance, the functionality of a vertex that represents
+a task or the method of transmission for a dependency between tasks.
+
+Complete C++ documentation for the adjacency list representation:
+ http://www.boost.org/libs/graph/doc/adjacency_list.html
+"""
+
+# Algorithm documentation
+astar_search.__doc__ = _documentor.function('astar_search') \
+ .parameter('graph',
+ 'the graph to search. It may be either a directed or undirected graph.') \
+ .parameter('root_vertex', 'the starting vertex for the search.') \
+ .parameter('heuristic', 'an heuristic function that maps a vertex to a floating-point value that estimates the distance from the source to that vertex.') \
+ .parameter('visitor', 'a visitor that will receive events as the search progresses. Typically this visitor should be derived from boost.graph.astar_visitor.', 'None') \
+ .parameter('predecessor_map',
+ 'a vertex -> vertex map that stores the predecessor of each vertex in the search tree. From a given vertex, one can follow the predecessor_map back to the root_vertex to reconstruct the path taken.',
+ 'None') \
+ .parameter('cost_map',
+ 'a vertex -> float map that stores the distance from the root_vertex to each vertex in the tree plus the estimated cost to reach the goal.',
+ 'None') \
+ .parameter('distance_map',
+ 'a vertex -> float map that stores the distance from the root_vertex to each vertex in the tree.',
+ 'None') \
+ .parameter('weight_map',
+ 'an edge -> float map that stores the weight of each edge in the graph. Negative edge weights are not permitted. If no weight map is provided, each edge will be assumed to have a weight of 1.0.',
+ 'None') \
+ .parameter('color_map', 'a vertex property map that stores the "color" of each vertex, which indicates whether is has not been seen (white), has been seen but not visited (grey), or has been visited (black).', 'None') \
+ .paragraph('Searches a weight, directed or undirected graph using an heuristic function as guidance.') \
+ .see_also('astar_visitor') \
+ .see_also('bellman_ford_shortest_paths') \
+ .see_also('dag_shortest_paths') \
+ .see_also('dijkstra_shortest_paths') \
+ .__str__()
+
+bellman_ford_shortest_paths.__doc__ = _documentor.function('bellman_ford_shortest_paths') \
+ .parameter('graph',
+ 'the graph on which to compute shortest paths will run. It may be either a directed or undirected graph.') \
+ .parameter('root_vertex', 'the starting vertex for the shortest-path search.') \
+ .parameter('predecessor_map',
+ 'a vertex -> vertex map that stores the predecessor of each vertex in the shortest paths tree. From a given vertex, one can follow the predecessor_map back to the root_vertex to reconstruct the shortest path.',
+ 'None') \
+ .parameter('distance_map',
+ 'a vertex -> float map that stores the distance from the root_vertex to each vertex in the tree. A distance of infinity in this property map indicates that the vertex is unreachable from the root_vertex.',
+ 'None') \
+ .parameter('weight_map',
+ 'an edge -> float map that stores the weight of each edge in the graph. Negative edge weights are permitted. If no weight map is provided, each edge will be assumed to have a weight of 1.0.',
+ 'None') \
+ .parameter('visitor', 'a visitor that will receive events as the shortest-paths computation progresses. Typically this visitor should be derived from boost.graph.bellman_ford_visitor.', 'None') \
+ .result('bool') \
+ .paragraph('Computes the shortest paths from the root vertex to every other vertex in the graph. Edge weights may be either positive or negative, but if a negative weight cycle is found the algorithm will return False to indicate failure. Otherwise, the algorithm returns True on success.') \
+ .see_also('bellman_ford_visitor') \
+ .see_also('dag_shortest_paths') \
+ .see_also('dijkstra_shortest_paths') \
+ .cpp_docs("bellman_ford_shortest.html") \
+ .__str__()
+
+betweenness_centrality_clustering.__doc__ = _documentor.function('betweenness_centrality_clustering') \
+ .parameter('graph',
+ 'the graph that will be clustered.') \
+ .parameter('done',
+ 'A Python function (or callable object) that determines when betweenness centrality clustering should terminate. It receives three parameters during each iteration: the maximum centrality, the edge descriptor that has that centrality, and the graph itself, and should return True when clustering is complete.') \
+ .parameter('edge_centrality_map',
+ 'an edge -> float map that stores the centrality of each edge in the graph.',
+ 'None') \
+ .paragraph('Clusters the graph by repeatedly removing the edge with the largest betweenness centrality until a certain stopping criteria is reached. This is a rather inefficient clustering algorithm and should only be used for small graphs.') \
+ .see_also('brandes_betweenness_centrality') \
+ .cpp_docs('bc_clustering.html') \
+ .__str__()
+
+biconnected_components.__doc__ = _documentor.function('biconnected_components') \
+ .parameter('graph',
+ 'the graph on which to compute biconnected components. The graph must be undirected.') \
+ .parameter('component_map',
+ 'an edge -> int map that stores the component number for each edge in the graph. Edges with the same component number are in the same biconnected component.',
+ 'None') \
+ .parameter('edge_hidden_map',
+ 'an edge -> int map that can be used to hide certain edges from the algorithm. When provided, each edge with a non-zero value will be filtered out and ignored.',
+ 'None') \
+ .result('list') \
+ .paragraph('Computes the biconnected components and articulation points in an undirected graph, assigning component numbers in the range [0, n) (where n is the number of biconnected components) to the edges in the graph. The set of articulation points, i.e., those vertices that separate biconnected components, will be returned.') \
+ .see_also('connected_components') \
+ .__str__()
+
+brandes_betweenness_centrality.__doc__ = _documentor.function('brandes_betweenness_centrality') \
+ .parameter('graph', 'the graph on which centrality should be computed.') \
+ .parameter('vertex_centrality_map',
+ 'a vertex -> float map that stores the centrality of each vertex in the graph.',
+ 'None') \
+ .parameter('edge_centrality_map',
+ 'an edge -> float map that stores the centrality of each edge in the graph.',
+ 'None') \
+ .parameter('weight_map',
+ 'an edge -> float map that stores the weight of each edge in the graph. If no weight map is provided, each edge will be assumed to have a weight of 1.0.',
+ 'None') \
+ .paragraph('Computes the betweenness centrality of the vertices and/or edges in the graph. The betweenness centrality of a vertex or edge is the ratio of shortest paths in the graph that pass through the vertex or edge.') \
+ .see_also('betweenness_centrality_clustering') \
+ .see_also('central_point_dominance') \
+ .see_also('relative_betweenness_centrality') \
+ .cpp_docs('betweenness_centrality.html') \
+ .__str__()
+
+breadth_first_visit.__doc__ = _documentor.function('breadth_first_visit') \
+ .parameter('graph',
+ 'the graph on which the breadth-first search will run. It may be either a directed or undirected graph.') \
+ .parameter('root_vertex', 'the vertex where the breadth-first search will originate.') \
+ .parameter('buffer', 'the queue used by the breadth-first search. If not supplied, a simple FIFO queue will be used.', 'None') \
+ .parameter('visitor', 'a visitor that will receive events as the breadth-first search progresses. Typically this visitor should be derived from boost.graph.bfs_visitor.', 'None') \
+ .parameter('color_map', 'a vertex property map that stores the "color" of each vertex, which indicates whether is has not been seen (white), has been seen but not visited (grey), or has been visited (black).', 'None') \
+ .paragraph('Performs a breadth-first search on the given graph starting at a particular vertex. Unlike breadth_first_search, the color map will NOT be reinitialized to all-white values before running the breadth-first search.') \
+ .see_also('bfs_visitor') \
+ .see_also('breadth_first_search') \
+ .see_also('depth_first_search') \
+ .__str__()
+
+breadth_first_search.__doc__ = _documentor.function('breadth_first_search') \
+ .parameter('graph',
+ 'the graph on which the breadth-first search will run. It may be either a directed or undirected graph.') \
+ .parameter('root_vertex', 'the vertex where the breadth-first search will originate.') \
+ .parameter('buffer', 'the queue used by the breadth-first search. If not supplied, a simple FIFO queue will be used.', 'None') \
+ .parameter('visitor', 'a visitor that will receive events as the breadth-first search progresses. Typically this visitor should be derived from boost.graph.bfs_visitor.', 'None') \
+ .parameter('color_map', 'a vertex property map that stores the "color" of each vertex, which indicates whether is has not been seen (white), has been seen but not visited (grey), or has been visited (black).', 'None') \
+ .paragraph('Performs a breadth-first search on the given graph starting at a particular vertex. The color map will be initialized to contain all white values before the the breadth-first search runs.') \
+ .see_also('bfs_visitor') \
+ .see_also('breadth_first_visit') \
+ .see_also('depth_first_search') \
+ .__str__()
+
+central_point_dominance.__doc__ = _documentor.function('central_point_dominance') \
+ .parameter('graph', 'the graph on which the relative vertex centrality has been computed.') \
+ .parameter('vertex_centrality_map',
+ 'a vertex -> float map that stores the relative centrality of each vertex in the graph.',
+ 'None') \
+ .result('float') \
+ .paragraph('Computes the central point dominance of a graph based on the relative betweeness centrality of the vertices. Returns a value between 0 and 1, where larger numbers indicate more star-like graphs with a single central node and 0 indicates a very decentralized graph.') \
+ .see_also('betweenness_centrality_clustering') \
+ .see_also('brandes_betweenness_centrality') \
+ .see_also('relative_betweenness_centrality') \
+ .cpp_docs('betweenness_centrality.html') \
+ .__str__()
+
+circle_graph_layout.__doc__ = _documentor.function('circle_graph_layout') \
+ .parameter('graph', 'the graph on which to perform the layout.') \
+ .parameter('position_map',
+ 'a vertex -> Point2D map that stores the position of each vertex.') \
+ .parameter('radius', 'the radius of the circle.', '0.5') \
+ .paragraph('Lays out the vertices of the graph along a circle of given radius.') \
+ .see_also('fruchterman_reingold_force_directed_layout') \
+ .see_also('kamada_kawai_spring_layout') \
+ .__str__()
+
+connected_components.__doc__ = _documentor.function('connected_components') \
+ .parameter('graph',
+ 'the graph on which to compute connected components. The graph must be undirected.') \
+ .parameter('component_map',
+ 'a vertex -> int map that stores the component number for each vertex in the graph. Vertices with the same component number are in the same connected component.',
+ 'None') \
+ .result('int') \
+ .paragraph('Computes the connected components in an undirected graph, assigning component numbers in the range [0, n) (where n is the number of connected components) to the vertices in the graph. Returns the number of connected components.') \
+ .see_also('biconnected_components') \
+ .__str__()
+
+cuthill_mckee_ordering.__doc__ = _documentor.function('cuthill_mckee_ordering') \
+ .parameter('graph',
+ 'the graph to be ordered.') \
+ .parameter('comp',
+ 'the comparison function that determines the order the neighbors are visited.', 'None') \
+ .result('list') \
+ .paragraph('Computes a new ordering for the vertices in the graph that reduces the bandwidth in a sparse matrix.') \
+ .see_also('king_ordering') \
+ .see_also('minimum_degree_ordering') \
+ .see_also('sloan_ordering') \
+ .__str__()
+
+dag_shortest_paths.__doc__ = _documentor.function('dag_shortest_paths') \
+ .parameter('graph',
+ 'the graph on which to compute shortest paths will run. It may be either a directed or undirected graph.') \
+ .parameter('root_vertex', 'the starting vertex for the shortest-path search.') \
+ .parameter('predecessor_map',
+ 'a vertex -> vertex map that stores the predecessor of each vertex in the shortest paths tree. From a given vertex, one can follow the predecessor_map back to the root_vertex to reconstruct the shortest path.',
+ 'None') \
+ .parameter('distance_map',
+ 'a vertex -> float map that stores the distance from the root_vertex to each vertex in the tree. A distance of infinity in this property map indicates that the vertex is unreachable from the root_vertex.',
+ 'None') \
+ .parameter('weight_map',
+ 'an edge -> float map that stores the weight of each edge in the graph. Negative edge weights are permitted. If no weight map is provided, each edge will be assumed to have a weight of 1.0.',
+ 'None') \
+ .parameter('visitor', 'a visitor that will receive events as the shortest-paths computation progresses. Typically this visitor should be derived from boost.graph.dijkstra_visitor.', 'None') \
+ .paragraph('Computes the shortest paths from the root vertex to every other vertex in a directed acyclic graph.') \
+ .see_also('bellman_ford_shortest_paths') \
+ .see_also('dijkstra_visitor') \
+ .see_also('dijkstra_shortest_paths') \
+ .__str__()
+
+depth_first_search.__doc__ = _documentor.function('depth_first_search') \
+ .parameter('graph',
+ 'the graph on which the depth-first search will run. It may be either a directed or undirected graph.') \
+ .parameter('root_vertex', 'the vertex where the depth-first search will originate. If none is provided, the depth-first search will cover all vertices in the graph', 'None') \
+ .parameter('visitor', 'a visitor that will receive events as the depth-first search progresses. Typically this visitor should be derived from boost.graph.dfs_visitor.', 'None') \
+ .parameter('color_map', 'a vertex property map that stores the "color" of each vertex, which indicates whether is has not been seen (white), has been seen but not visited (grey), or has been visited (black).', 'None') \
+ .paragraph('Performs a depth-first search on the given graph, optionally starting at a particular vertex.') \
+ .see_also('breadth_first_search') \
+ .see_also('dfs_visitor') \
+ .see_also('depth_first_visit') \
+ .see_also('undirected_dfs') \
+ .__str__()
+
+depth_first_visit.__doc__ = _documentor.function('depth_first_visit') \
+ .parameter('graph',
+ 'the graph on which the depth-first search will run. It may be either a directed or undirected graph.') \
+ .parameter('root_vertex', 'the vertex where the depth-first search will originate.') \
+ .parameter('visitor', 'a visitor that will receive events as the depth-first search progresses. Typically this visitor should be derived from boost.graph.dfs_visitor.', 'None') \
+ .parameter('color_map', 'a vertex property map that stores the "color" of each vertex, which indicates whether is has not been seen (white), has been seen but not visited (grey), or has been visited (black).', 'None') \
+ .paragraph('Performs a depth-first search on the given graph starting at a particular vertex. Unless depth_first_search, the root_vertex parameter is mandatory and the color_map, if provided, will NOT be reinitialized.') \
+ .see_also('breadth_first_search') \
+ .see_also('dfs_visitor') \
+ .see_also('depth_first_search') \
+ .__str__()
+
+dijkstra_shortest_paths.__doc__ = _documentor.function('dijkstra_shortest_paths') \
+ .parameter('graph',
+ 'the graph on which to compute shortest paths will run. It may be either a directed or undirected graph.') \
+ .parameter('root_vertex', 'the starting vertex for the shortest-path search.') \
+ .parameter('predecessor_map',
+ 'a vertex -> vertex map that stores the predecessor of each vertex in the shortest paths tree. From a given vertex, one can follow the predecessor_map back to the root_vertex to reconstruct the shortest path.',
+ 'None') \
+ .parameter('distance_map',
+ 'a vertex -> float map that stores the distance from the root_vertex to each vertex in the tree. A distance of infinity in this property map indicates that the vertex is unreachable from the root_vertex.',
+ 'None') \
+ .parameter('weight_map',
+ 'an edge -> float map that stores the weight of each edge in the graph. Negative edge weights are not permitted. If no weight map is provided, each edge will be assumed to have a weight of 1.0.',
+ 'None') \
+ .parameter('visitor', 'a visitor that will receive events as the shortest-paths computation progresses. Typically this visitor should be derived from boost.graph.dijkstra_visitor.', 'None') \
+ .paragraph('Computes the shortest paths from the root vertex to every other vertex in a graph.') \
+ .see_also('bellman_ford_shortest_paths') \
+ .see_also('dag_shortest_paths') \
+ .see_also('dijkstra_visitor') \
+ .__str__()
+
+fruchterman_reingold_force_directed_layout.__doc__ = _documentor.function('fruchterman_reingold_force_directed_layout') \
+ .parameter('graph', 'the graph on which to perform the layout.') \
+ .parameter('position',
+ 'a vertex -> Point2D map or vertex -> Point3D that stores the position of each vertex.') \
+ .parameter('origin',
+ 'the origin of the bounding box in which layout will occur',
+ 'Point2D()/Point3D()') \
+ .parameter('extent',
+ 'the extent (size) of the bounding box in which layout will occur',
+ 'Point2D(500, 500)/Point3D(500, 500, 500)') \
+ .parameter('attractive_force',
+ 'A Python function (or callable object) that computes the attractive force along an edge. The function should accept four parameters: the edge descriptor, the parameter k = sqrt(bounding box volume/graph.num_vertices()), the distance between the two endpoints of the edge, and the graph g. If no attractive force is provided, the default of dist*dist/k will be used.',
+ 'None') \
+ .parameter('repulsive_force',
+ 'A Python function (or callable object) that computes the repulsive force between two vertices. The function should accept five parameters: the two vertex descriptors, followed by the parameter k = sqrt(bounding box volume/graph.num_vertices()), the distance between the two endpoints of the edge, and the graph g. If no repulsive force is provided, the default of k*k/dist will be used.',
+ 'None') \
+ .parameter('force_pairs',
+ 'A Python function (or callable object) that enumerates the pairs of vertices that should repulse each other. This function must accept two arguments: the graph and the apply_force function. It will traverse the graph and, for each pair of vertices (u, v) that should repulse each other, execute apply_force(u, v). If no force_pairs function is provided, the algorithm will use a 2k x 2k grid to provide a reasonably performance and accuracy tradeoff.',
+ 'None') \
+ .parameter('cooling',
+ 'A Python function (or callable object) that provides the maximm displacement (i.e., the "temperature") for any vertex in each iteration, and terminates the algorithm by returning a temperature of 0.',
+ 'None') \
+ .parameter('progressive',
+ 'when False, vertex positions are randomized before the algorithm is executed. Otherwise, the positions stored in the position property map are used as the starting positions.',
+ 'False') \
+ .paragraph('Performs Fruchterman-Reingold force-directed layout in either two or three dimensions. This is a good general-purpose graph layout routine that handles both directed and undirected, connected and disconnected graphs.') \
+ .see_also('circle_graph_layout') \
+ .see_also('kamada_kawai_spring_layout') \
+ .cpp_docs('fruchterman_reingold.html') \
+ .__str__()
+
+isomorphism.__doc__ = _documentor.function('isomorphism') \
+ .parameter('graph1', 'the first graph') \
+ .parameter('graph2', 'the second graph') \
+ .parameter('isomorphism_map',
+ 'a vertex -> vertex map that will store the mapping from vertices in graph1 to vertices in graph2, if the graphs are indeed isomorphic.',
+ 'None') \
+ .parameter('vertex_invariant',
+ 'A Python function (or callable object) that produces a hash value given a vertex and its owning graph. This function must work for both vertices in graph1 and graph2, such that isomorphic vertices have the same hash value. If no vertex_invariant is provided, the degree of vertices will be used to aid matching.',
+ 'None') \
+ .result('bool') \
+ .paragraph('Determines if the two input graphs are isomorphic. If so, returns True and fills in the isomorphism_map (if provided). Otherwise, it returns false.') \
+ .__str__()
+
+kamada_kawai_spring_layout.__doc__ = _documentor.function('kamada_kawai_spring_layout') \
+ .parameter('graph', 'the graph on which to perform the layout, which must be undirected.') \
+ .parameter('position',
+ 'a vertex -> Point2D map that stores the position of each vertex.') \
+ .parameter('weight',
+ 'an edge -> float map that stores the weight of each edge in the graph. If no weight map is provided, each edge will be assumed to have a weight of 1.0.',
+ 'None') \
+ .parameter('side_length',
+ 'the length of a side in the 2D bounding box in which layout will occur',
+ '500.0') \
+ .parameter('done',
+ 'A Python function (or callable object) that determines when the local and global phases of the algorithm will terminate. The function must take four arguments: delta_p, a measure of how far the point "p" has moved; "p" the vertex that has been moved most recently; the graph; and a boolean value that indicates whether the movement is local (True) or global (False). If omitted, the algorithm will terminate will it reaches a local minimum.',
+ 'None') \
+ .parameter('spring_constant',
+ "A constant multiplied by each spring's strength. Larger values create more pleasing layouts (but take longer), smaller values produce layouts more rapidly (but they may not look as good).",
+ '1.0') \
+ .parameter('progressive',
+ 'when False, vertex positions are randomized before the algorithm is executed. Otherwise, the positions stored in the position property map are used as the starting positions.',
+ 'False') \
+ .paragraph('Performs Kamada-Kawai spring embedding layout in two dimensions on an undirected, connected, possibly weighted graph. While this algorithm is considerably more expensive and limited than Fruchterman-Reingold, it tends to produce much better layouts.') \
+ .see_also('circle_graph_layout') \
+ .see_also('fruchterman_reingold_force_directed_layout') \
+ .__str__()
+
+king_ordering.__doc__ = _documentor.function('king_ordering') \
+ .parameter('graph',
+ 'the graph to be ordered.') \
+ .result('list') \
+ .paragraph('Computes a new ordering for the vertices in the graph that reduces the bandwidth of a sparse matrix.') \
+ .see_also('cuthill_mckee_ordering') \
+ .see_also('minimum_degree_ordering') \
+ .see_also('sloan_ordering') \
+ .__str__()
+
+kruskal_minimum_spanning_tree.__doc__ = _documentor.function('kruskal_minimum_spanning_tree') \
+ .parameter('graph', 'the graph whose spanning tree will be computed.') \
+ .parameter('weight_map',
+ 'an edge -> float map that stores the weight of each edge in the graph.') \
+ .result('list') \
+ .paragraph('Computes a minimum spanning forest for the given undirected graph. The edges in the spanning forest will be returned as a list.') \
+ .see_also('prim_minimum_spanning_tree') \
+ .cpp_docs('kruskal_min_spanning_tree.html') \
+ .__str__()
+
+minimum_degree_ordering.__doc__ = _documentor.function('minimum_degree_ordering') \
+ .parameter('graph', 'the graph to be ordered.') \
+ .parameter('supernode_size',
+ 'a vertex -> int that provides the supernode size of each vertex. If omitted, the supernode size of each vertex will be initialized to 1.', 'None') \
+ .parameter('delta', 'the minimum difference between the minimum degree and the degree of vertices that will be eliminated by multiple elimination', '0') \
+ .result('list') \
+ .paragraph('Computes a new ordering for the vertices in the graph that reduces the fill-in of sparse matrices.') \
+ .see_also('cuthill_mckee_ordering') \
+ .see_also('king_ordering') \
+ .see_also('sloan_ordering') \
+ .__str__()
+
+page_rank.__doc__ = _documentor.function('page_rank') \
+ .parameter('graph', 'the directed graph whose vertices will be ranked.') \
+ .parameter('rank_map',
+ 'a vertex -> float that will contain the ranks of each vertex in the graph') \
+ .parameter('done_or_iterations', 'this can either be an integer number of iterations to run or a Python function (or callable object) that accepts the rank map and the graph as arguments and returns True when the algorithm should terminate', '20') \
+ .paragraph('Computes the PageRank of each vertex in a directed graph. For optimal results, the graph should be strongly connected.') \
+ .__str__()
+
+prim_minimum_spanning_tree.__doc__ = _documentor.function('prim_minimum_spanning_tree') \
+ .parameter('graph',
+ 'the graph for which the minimum spanning tree will be computed.') \
+ .parameter('predecessor_map',
+ 'a vertex -> vertex map that stores the predecessor of each vertex in the minimum spanning tree. From a given vertex, one can follow the predecessor_map back to the root_vertex to reconstruct the shortest path.',
+ 'None') \
+ .parameter('distance_map',
+ 'a vertex -> float map that stores the distance from the root_vertex to each vertex in the tree. A distance of infinity in this property map indicates that the vertex is unreachable from the root_vertex.',
+ 'None') \
+ .parameter('weight_map',
+ 'an edge -> float map that stores the weight of each edge in the graph. Negative edge weights are not permitted. If no weight map is provided, each edge will be assumed to have a weight of 1.0.',
+ 'None') \
+ .parameter('visitor', 'a visitor that will receive events as the shortest-paths computation progresses. Typically this visitor should be derived from boost.graph.dijkstra_visitor.', 'None') \
+ .parameter('root_vertex',
+ 'the starting vertex for the minimum spanning tree. If omitted a minimum spanning forest will be computed.',
+ 'None') \
+ .parameter('color_map', 'a vertex property map that stores the "color" of each vertex, which indicates whether is has not been seen (white), has been seen but not visited (grey), or has been visited (black).', 'None') \
+ .paragraph('Computes the minimum spanning tree from the root vertex, if provided; otherwise, computes a minimum spanning forest.') \
+ .see_also('dfs_visitor') \
+ .see_also('kruskal_minimum_spanning_tree') \
+ .__str__()
+
+relative_betweenness_centrality.__doc__ = _documentor.function('relative_betweenness_centrality') \
+ .parameter('graph', 'the graph on which the vertex centrality has been computed.') \
+ .parameter('vertex_centrality_map',
+ 'a vertex -> float map that stores the relative centrality of each vertex in the graph.',
+ 'None') \
+ .paragraph('Transforms the raw vertex betweenness centrality produced by brandes_betweenness_centrality into a relative betweenness centrality that can be used by central_point_dominance or for comparison with other graphs.') \
+ .see_also('betweenness_centrality_clustering') \
+ .see_also('brandes_betweenness_centrality') \
+ .see_also('central_point_dominance') \
+ .cpp_docs('betweenness_centrality.html') \
+ .__str__()
+
+sequential_vertex_coloring.__doc__ = _documentor.function('sequential_vertex_coloring') \
+ .parameter('graph', 'the graph whose vertices will be colored') \
+ .parameter('color_map',
+ 'a vertex -> int map that will contain the color of each vertex',
+ 'None') \
+ .result('int') \
+ .paragraph('Colors the vertices of the graph using a simple but relatively efficient algorithm. Returns the number "n" of colors used, and the color_map will contain colors for each vertex in the range [0, n).') \
+ .__str__()
+
+sloan_ordering.__doc__ = _documentor.function('sloan_ordering') \
+ .parameter('graph', 'the graph to be ordered.') \
+ .parameter('start', 'the vertex from which ordering should start') \
+ .parameter('end', 'the vertex at which ordering should end') \
+ .parameter('color_map', 'a vertex property map that stores the "color" of each vertex, which indicates whether is has not been seen (white), has been seen but not visited (grey), or has been visited (black).', 'None') \
+ .parameter('priority_map',
+ 'a vertex -> float map used internally that tracks the priority of each vertex.', 'None') \
+ .parameter('weight1', 'Relative weight applied to the global "degree".', '1.0') \
+ .parameter('weight2', 'Relative weight applied to the global "degree".', '2.0') \
+ .signature(('graph', 'start', 'end', 'color_map', 'priority_map',
+ 'weight1', 'weight2'),
+ 'list') \
+ .signature(('graph', 'color_map', 'priority_map', 'weight1', 'weight2'),
+ 'list') \
+ .result('list') \
+ .paragraph('Computes a new ordering for the vertices in the graph that reduces the profile and wavefront of sparse matrices. The start and end vertices are optional, but providing them can have a large (positive or negative) effect on the resulting ordering.') \
+ .see_also('cuthill_mckee_ordering') \
+ .see_also('king_ordering') \
+ .see_also('minimum_degree_ordering') \
+ .__str__()
+
+
+strong_components.__doc__ = _documentor.function('strong_components') \
+ .parameter('graph',
+ 'the graph on which to compute strongly connected components. The graph must be directed.') \
+ .parameter('component_map',
+ 'a vertex -> int map that stores the component number for each vertex in the graph. Vertices with the same component number are in the same strongly connected component.',
+ 'None') \
+ .result('int') \
+ .paragraph('Computes the strongly connected components in a directed graph, assigning component numbers in the range [0, n) (where n is the number of strongly connected components) to the vertices in the graph. Returns the number of strongly connected components.') \
+ .__str__()
+
+topological_sort.__doc__ = _documentor.function('topological_sort') \
+ .parameter('graph',
+ 'the graph to be ordered.') \
+ .parameter('color_map', 'a vertex property map that stores the "color" of each vertex, which indicates whether is has not been seen (white), has been seen but not visited (grey), or has been visited (black).', 'None') \
+ .result('list') \
+ .paragraph('Computes a reverse topological ordering of the vertices in the graph. Returns the list of vertices in their new order.') \
+ .__str__()
+
+transitive_closure.__doc__ = _documentor.function('transitive_closure') \
+ .parameter('graph',
+ 'the directed graph from which the transition closure will be computed.') \
+ .parameter('orig_to_copy', 'a vertex -> vertex map that maps from the vertices of the input graph to the vertices of the resulting graph.', 'None') \
+ .result('Digraph') \
+ .paragraph('Computes the transitive closure of a directed graph and returns the resulting graph. The input graph is not modified.') \
+ .__str__()
+
+undirected_dfs.__doc__ = _documentor.function('undirected_dfs') \
+ .parameter('graph',
+ 'the undirected graph on which the depth-first search will run.') \
+ .parameter('visitor', 'a visitor that will receive events as the depth-first search progresses. Typically this visitor should be derived from boost.graph.dfs_visitor.', 'None') \
+ .parameter('color_map', 'a vertex property map that stores the "color" of each vertex, which indicates whether is has not been seen (white), has been seen but not visited (grey), or has been visited (black).', 'None') \
+ .parameter('edge_color_map', 'an edge property map that stores the "color" of each edge, allowing the algorithm to distinguish between tree and back edges in an undirected graph', 'None') \
+ .paragraph('Performs an undirected depth-first search on the given graph.') \
+ .see_also('dfs_visitor') \
+ .see_also('depth_first_search') \
+ .see_also('depth_first_visit') \
+ .__str__()
+
+#spectrum.__doc__ = _documentor.function('spectrum') \
+# .parameter('graph', 'an undirected graph.') \
+# .parameter('first_eigenvector_index', 'the index of the lowest eigenvalue and eigenvector to return.') \
+# .parameter('num_eigenvectors', 'the number of eigenvalues and eigenvectors to return.') \
+# .parameter('rel_tol', 'the relative tolerance to use when computing the eigenvectors.') \
+# .parameter('abs_tol', 'the absolute tolerance to use when computing the eigenvectors.') \
+# .result('(eigenvalues, eigenvectors)') \
+# .paragraph('Finds the eigenvalues and eigenvectors of an undirected graph within the specified range. Returns a tuple of a list of the eigenvalues and a list of the eigenvectors. (Note that multiple edges are considered as single edges, and self-loops are ignored.) This function performs better than sparse_spectrum() on sufficiently small or dense graphs.') \
+# .see_also('sparse_spectrum') \
+# .__str__()
+
+#sparse_spectrum.__doc__ = _documentor.function('spectrum') \
+# .parameter('graph', 'an undirected graph.') \
+# .parameter('first_eigenvector_index', 'the index of the lowest eigenvalue and eigenvector to return.') \
+# .parameter('num_eigenvectors', 'the number of eigenvalues and eigenvectors to return.') \
+# .parameter('rel_tol', 'the relative tolerance to use when computing the eigenvectors.') \
+# .parameter('abs_tol', 'the absolute tolerance to use when computing the eigenvectors.') \
+# .result('(eigenvalues, eigenvectors)') \
+# .paragraph('Finds the eigenvalues and eigenvectors of an undirected graph within the specified range. Returns a tuple of a list of the eigenvalues and a list of the eigenvectors. (Note that multiple edges are considered as single edges, and self-loops are ignored.) This function performs better than spectrum() on large, sparse graphs.') \
+# .see_also('sparse_spectrum') \
+# .__str__()
+
+def read_graphviz(filename, node_id = 'node_id'):
+ """
+ Loads a graph (which may be either directed or undirected) written
+ in the GraphViz DOT format from the file filename. Once loaded,
+ all of the vertex and edge properties of the graph will be
+ available in the vertex_properties and edge_properties of the
+ graph. If you already know whether your graph will be undirected
+ or directed, use Graph.read_graphviz or Digraph.read_graphviz,
+ respectively.
+
+ Parameters:
+ filename The name of the file to load.
+ node_id The name given to the property map that will store the
+ identifier associated with each vertex in the DOT file.
+
+ The GraphViz DOT language is described here:
+ http://www.graphviz.org/doc/info/lang.html
+
+ Complete C++ documentation is available at:
+ http://www.boost.org/libs/graph/doc/read_graphviz.html
+ """
+ try:
+ graph = Digraph.read_graphviz(filename, node_id)
+ except UndirectedGraphError:
+ graph = Graph.read_graphviz(filename, node_id)
+ return graph
+
+def read_graphml(filename):
+ """
+ Loads a graph (which may be either directed or undirected) written
+ in the GraphML format from the file filename. Once loaded,
+ all of the vertex and edge properties of the graph will be
+ available in the vertex_properties and edge_properties of the
+ graph. If you already know whether your graph will be undirected
+ or directed, use Graph.read_graphml or Digraph.read_graphml,
+ respectively.
+
+ Parameters:
+ filename The name of the file to load.
+
+ The GraphML format is described here:
+ http://graphml.graphdrawing.org/
+ """
+ try:
+ graph = Digraph.read_graphml(filename)
+ except UndirectedGraphError:
+ graph = Graph.read_graphml(filename)
+ return graph

Added: sandbox/SOC/2008/BGL_Python/python/boost/graph/astar_visitor.py
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/python/boost/graph/astar_visitor.py 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,72 @@
+# Copyright 2005 The Trustees of Indiana University.
+
+# Use, modification and distribution is subject to the Boost Software
+# License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+# http:#www.boost.org/LICENSE_1_0.txt)
+
+# Authors: Douglas Gregor
+# Andrew Lumsdaine
+
+class astar_visitor:
+ """
+ Default visitor for the A* search algorithm and its variants.
+
+ See also:
+ astar_search
+
+ Complete C++ documentation is available at:
+ http://www.boost.org/libs/graph/doc/AStarVisitor.html
+ """
+
+ def initialize_vertex(self, vertex, graph):
+ """
+ Invoked on each vertex in the graph when the algorithm initializes it.
+ """
+ pass
+
+ def discover_vertex(self, vertex, graph):
+ """
+ Invoked on a vertex when it is first "discovered" by the algorithm.
+ """
+ pass
+
+ def examine_vertex(self, vertex, graph):
+ """
+ Invoked on a vertex just before its outgoing edges will be
+ examined.
+ """
+ pass
+
+ def examine_edge(self, edge, graph):
+ """
+ Invoked on an edge as it is being examined.
+ """
+ pass
+
+ def edge_relaxed(self, edge, graph):
+ """
+ Invoked on an edge when it is relaxed.
+ """
+ pass
+
+ def edge_not_relaxed(self, edge, graph):
+ """
+ Invoked on an edge when it does not meet the criteria for
+ being relaxed.
+ """
+ pass
+
+ def black_target(self, edge, graph):
+ """
+ Invoked on a vertex that is the target of the edge being
+ examined. The edge was marked"black", meaning that it has
+ already been examined in the breadth-first traversal.
+ """
+ pass
+
+ def finish_vertex(self, vertex, graph):
+ """
+ Invoked on a vertex after all of its outgoing edges have been
+ examined.
+ """
+ pass

Added: sandbox/SOC/2008/BGL_Python/python/boost/graph/bellman_ford_visitor.py
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/python/boost/graph/bellman_ford_visitor.py 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,52 @@
+# Copyright 2005 The Trustees of Indiana University.
+
+# Use, modification and distribution is subject to the Boost Software
+# License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+# http:#www.boost.org/LICENSE_1_0.txt)
+
+# Authors: Douglas Gregor
+# Andrew Lumsdaine
+
+class bellman_ford_visitor:
+ """
+ Default visitor for the Bellman-Ford shortest paths algorithm.
+
+ See also:
+ bellman_ford_shortest_paths
+
+ Complete C++ documentation is available at:
+ http://www.boost.org/libs/graph/doc/BellmanFordVisitor.html
+ """
+ def initialize_vertex(self, vertex, graph):
+ """
+ Invoked on each vertex in the graph when the algorithm initializes it.
+ """
+ pass
+ def examine_edge(self, edge, graph):
+ """
+ Invoked on each edge when the algorithm examines it.
+ """
+ pass
+ def edge_relaxed(self, edge, graph):
+ """
+ Invoked on an edge when the edge is relaxed.
+ """
+ pass
+ def edge_not_relaxed(self, edge, graph):
+ """
+ Invoked on an edge when the edge is not relaxed.
+ """
+ pass
+ def edge_minimized(self, edge, graph):
+ """
+ Invoked when an edge is determined to have been minimized by
+ the algorithm.
+ """
+ pass
+ def edge_not_minimized(self, edge, graph):
+ """
+ Invoked when an edge is determined to be part of a negative
+ cycle, because it has not been minimized correctly.
+ """
+ pass
+

Added: sandbox/SOC/2008/BGL_Python/python/boost/graph/bfs_visitor.py
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/python/boost/graph/bfs_visitor.py 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,83 @@
+# Copyright 2005 The Trustees of Indiana University.
+
+# Use, modification and distribution is subject to the Boost Software
+# License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+# http:#www.boost.org/LICENSE_1_0.txt)
+
+# Authors: Douglas Gregor
+# Andrew Lumsdaine
+
+class bfs_visitor:
+ """
+ Default visitor for the breadth-first search algorithm and its variants.
+
+ See also:
+ breadth_first_search
+ breadth_first_visit
+
+ Complete C++ documentation is available at:
+ http://www.boost.org/libs/graph/doc/BFSVisitor.html
+ """
+
+ def initialize_vertex(self, vertex, graph):
+ """
+ Invoked on each vertex in the graph when the algorithm initializes it.
+ """
+ pass
+
+ def discover_vertex(self, vertex, graph):
+ """
+ Invoked on a vertex when it is first "discovered" by the algorithm.
+ """
+ pass
+
+ def examine_vertex(self, vertex, graph):
+ """
+ Invoked on a vertex just before its outgoing edges will be
+ examined.
+ """
+ pass
+
+ def examine_edge(self, edge, graph):
+ """
+ Invoked on an edge as it is being examined.
+ """
+ pass
+
+ def tree_edge(self, edge, graph):
+ """
+ Invoked on an edge when it is determined that it is an edge in
+ the breadth-first search tree.
+ """
+ pass
+
+ def non_tree_edge(self, edge, graph):
+ """
+ Invoked on an edge when it is determined that it is not an
+ edge in the breadth-first search tree.
+ """
+ pass
+
+ def gray_target(self, edge, graph):
+ """
+ Invoked on a vertex that is the target of the edge being
+ examined. The vertex was marked"gray", meaning that it has been
+ seen before in the breadth-first traversal but has not yet
+ been examined.
+ """
+ pass
+
+ def black_target(self, edge, graph):
+ """
+ Invoked on a vertex that is the target of the edge being
+ examined. The edge was marked"black", meaning that it has
+ already been examined in the breadth-first traversal.
+ """
+ pass
+
+ def finish_vertex(self, vertex, graph):
+ """
+ Invoked on a vertex after all of its outgoing edges have been
+ examined.
+ """
+ pass

Added: sandbox/SOC/2008/BGL_Python/python/boost/graph/dfs_visitor.py
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/python/boost/graph/dfs_visitor.py 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,81 @@
+# Copyright 2005 The Trustees of Indiana University.
+
+# Use, modification and distribution is subject to the Boost Software
+# License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+# http:#www.boost.org/LICENSE_1_0.txt)
+
+# Authors: Douglas Gregor
+# Andrew Lumsdaine
+
+class dfs_visitor:
+ """
+ Default visitor for the depth-first search algorithm and its variants.
+
+ See also:
+ depth_first_search
+ depth_first_visit
+
+ Complete C++ documentation is available at:
+ http://www.boost.org/libs/graph/doc/DFSVisitor.html
+ """
+
+ def initialize_vertex(self, vertex, graph):
+ """
+ Invoked on each vertex in the graph when the algorithm initializes it.
+ """
+ pass
+
+ def start_vertex(self, vertex, graph):
+ """
+ Invoked on the starting vertex just before the search begins.
+ """
+ pass
+
+ def discover_vertex(self, vertex, graph):
+ """
+ Invoked on a vertex when it is first "discovered" by the algorithm.
+ """
+ pass
+
+ def examine_vertex(self, vertex, graph):
+ """
+ Invoked on a vertex just before its outgoing edges will be
+ examined.
+ """
+ pass
+
+ def examine_edge(self, edge, graph):
+ """
+ Invoked on an edge as it is being examined.
+ """
+ pass
+
+ def tree_edge(self, edge, graph):
+ """
+ Invoked on an edge when it is determined that it is an edge in
+ the depth-first search tree.
+ """
+ pass
+
+ def back_edge(self, edge, graph):
+ """
+ Invoked on the back edges of the depth-first tree, i.e., edges
+ back to the ancestors of a node.
+ """
+ pass
+
+ def forward_or_cross_edge(self, edge, graph):
+ """
+ Invoked on forward or cross edges in the depth-first tree,
+ i.e., edges to vertices in the graph that have already been
+ completely handled.
+ """
+ pass
+
+ def finish_vertex(self, vertex, graph):
+ """
+ Invoked on a vertex after all of its outgoing edges have been
+ examined.
+ """
+ pass
+

Added: sandbox/SOC/2008/BGL_Python/python/boost/graph/dijkstra_visitor.py
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/python/boost/graph/dijkstra_visitor.py 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,66 @@
+# Copyright 2005 The Trustees of Indiana University.
+
+# Use, modification and distribution is subject to the Boost Software
+# License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+# http:#www.boost.org/LICENSE_1_0.txt)
+
+# Authors: Douglas Gregor
+# Andrew Lumsdaine
+
+class dijkstra_visitor:
+ """
+ Default visitor for Dijkstra's single source shortest paths
+ algorithm and related algorithms.
+
+ See also:
+ dijkstra_shortest_paths
+ prim_minimum_spanning_tree
+
+ Complete C++ documentation is available at:
+ http://www.boost.org/libs/graph/doc/DijkstraVisitor.html
+ """
+
+ def initialize_vertex(self, vertex, graph):
+ """
+ Invoked on each vertex in the graph when the algorithm initializes it.
+ """
+ pass
+
+ def examine_vertex(self, vertex, graph):
+ """
+ Invoked on a vertex just before its outgoing edges will be
+ examined.
+ """
+ pass
+
+ def examine_edge(self, edge, graph):
+ """
+ Invoked on an edge as it is being examined.
+ """
+ pass
+
+ def discover_vertex(self, vertex, graph):
+ """
+ Invoked on a vertex when it is first "discovered" by the algorithm.
+ """
+ pass
+
+ def edge_relaxed(self, edge, graph):
+ """
+ Invoked on an edge when the edge is relaxed, i.e., it has been
+ used to find a shorter path to its target.
+ """
+ pass
+
+ def edge_not_relaxed(self, edge, graph):
+ """
+ Invoked on an edge when the edge is not relaxed.
+ """
+ pass
+
+ def finish_vertex(self, vertex, graph):
+ """
+ Invoked on a vertex after all of its outgoing edges have been
+ examined.
+ """
+ pass

Added: sandbox/SOC/2008/BGL_Python/python/boost/graph/distributed/__init__.py
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/python/boost/graph/distributed/__init__.py 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,17 @@
+# Copyright 2005 The Trustees of Indiana University.
+
+# Use, modification and distribution is subject to the Boost Software
+# License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+# http:#www.boost.org/LICENSE_1_0.txt)
+
+# Authors: Douglas Gregor
+# Andrew Lumsdaine
+from _distributed import *
+from boost.graph import bfs_visitor, dijkstra_visitor
+
+# Try to initialize MPI. If initialization completed and was needed,
+# make sure we MPI_Finalize at exit.
+import sys
+if mpi_init(sys.argv):
+ import atexit
+ atexit.register(mpi_finalize)

Added: sandbox/SOC/2008/BGL_Python/python/boost/graph/docstring.py
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/python/boost/graph/docstring.py 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,238 @@
+# Copyright 2005 The Trustees of Indiana University.
+
+# Use, modification and distribution is subject to the Boost Software
+# License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+# http:#www.boost.org/LICENSE_1_0.txt)
+
+# Authors: Douglas Gregor
+# Andrew Lumsdaine
+
+columns = 72
+
+def wrap(text, width):
+ """
+ A word-wrap function that preserves existing line breaks
+ and most spaces in the text. Expects that existing line
+ breaks are posix newlines (\n).
+ From: http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/148061
+ """
+ return reduce(lambda line, word, width=width: '%s%s%s' %
+ (line,
+ ' \n'[(len(line)-line.rfind('\n')-1
+ + len(word.split('\n',1)[0]
+ ) >= width)],
+ word),
+ text.split(' ')
+ )
+
+class function_documentor:
+ def __init__(self, name):
+ self._name = name
+ self._parameters = list()
+ self._result = None
+ self._signatures = list()
+ self._paragraphs = list()
+ self._example = None
+ self._see_also = list()
+ self._cppdocs = name + ".html"
+ def parameter(self, name, doc, default = None):
+ """
+ Declares a function parameter given its name, a documentation
+ string, and (optionally) a string containing its default
+ value.
+ """
+ self._parameters.append((name, doc.strip(), default))
+ return self
+
+ def result(self, type):
+ """
+ Declares the type that will be returned by the function.
+ """
+ self._result = type
+ return self
+
+ def paragraph(self, para):
+ """
+ Add a paragraph of descriptive text.
+ """
+ self._paragraphs.append(para.strip())
+ return self
+
+ def signature(self, parameters, result = None):
+ """
+ Add a signature for the function. parameters is a tuple
+ containing the names of the parameters used in the signature
+ and result is the result type. If no signatures are added, a
+ signature will be generated from the parameters.
+ """
+ self._signatures.append((parameters, result))
+ return self
+
+ def example(self, example):
+ """
+ Add example code, written in Python of course.
+ """
+ self._example = example
+ return self
+
+ def see_also(self, other):
+ """
+ Add the name of something else that the might want to refer
+ to.
+ """
+ self._see_also.append(other)
+ return self
+
+ def cpp_docs(self, html):
+ """
+ Set the file name for the C++ documentation of this routine
+ within the online Boost Graph Library documentation. This
+ should be a full file name, e.g.,
+ "bellman_ford_shortest.html", but is only required to be
+ specified when the default (name + ".html") is incorrect. Note
+ that "html" may be None to indicate that no link to the C++
+ documentation should be provided.
+ """
+ self._cppdocs = html
+ return self
+
+ def __signature_string(self, parameters, result):
+ """
+ Builds a string containing the signature of this function, e.g.,
+
+ __signature_string(self, parameters, result) -> str
+ """
+ docstring = self._name + '('
+ if parameters != list():
+ param_start_column = len(self._name + '(')
+ column = param_start_column
+ max_column = columns - 2
+ for (on_param, param) in enumerate(parameters):
+ # Add ", " when needed
+ if on_param > 0:
+ docstring += ', '
+ column += 2
+
+ # If we're on the last parameter and there is a
+ # result, we have stricter requirements on maximum
+ # column.
+ if on_param+1 == len(parameters) and result != None:
+ max_column = columns - len(') -> ') - len(result)
+
+ # Build a string for the parameter signature
+ paramstr = param
+ default=filter(lambda p: p[0] == param, self._parameters)[0][2]
+ if default != None:
+ paramstr += ' = ' + default
+
+ # If the parameter won't fit on this list, and we're
+ # not already at the beginning of a new line, put in a
+ # newline.
+ if column + len(paramstr) > max_column and \
+ column > param_start_column + 2:
+ docstring += str('\n').ljust(param_start_column + 1)
+ column = param_start_column
+
+ # Add the documentation for this parameter
+ docstring += paramstr
+ column += len(paramstr)
+ docstring += ')'
+
+ if result != None:
+ docstring += ' -> ' + result
+
+ return docstring
+
+ def __parameters_string(self):
+ """
+ Builds and returns a docstring containing documentation for
+ each of the parameters to the function.
+ """
+ if self._parameters == list():
+ return ''
+
+ docstring = """
+
+Parameters:
+"""
+
+ # Compute maximum length of any parameter name
+ maxlen = 0
+ for param in self._parameters:
+ maxlen = max(maxlen, len(param[0]))
+
+ # Build documentation for parameters
+ for (on_param, param) in enumerate(self._parameters):
+ if on_param > 0:
+ docstring += '\n'
+
+ docstring += ' ' + param[0].ljust(maxlen + 2)
+ doc = wrap(param[1], columns - maxlen - 4)
+ padding = str('')
+ for line in doc.split('\n'):
+ docstring += padding + line + '\n'
+ padding = str('').ljust(maxlen + 4)
+
+ # Pull off the final '\n'
+ return docstring[0:len(docstring)-1]
+
+ def __str__(self):
+ # Start with the signature
+ if self._signatures == list():
+ docstring=self.__signature_string([p[0] for p in self._parameters],
+ self._result)
+ else:
+ docstring=''
+ for sig in self._signatures:
+ if sig != self._signatures[0]:
+ docstring += '\n'
+ docstring += self.__signature_string(sig[0], sig[1])
+
+ # Add the documentation paragraphs
+ for para in self._paragraphs:
+ docstring += '\n\n'
+ docstring += wrap(para, columns)
+
+ # Add the documentation of each parameter
+ docstring += self.__parameters_string()
+
+ # Add the example
+ if self._example != None:
+ docstring += """
+
+Example:""" + self._example
+
+ # Add the "See also" section:
+ if self._see_also != list():
+ docstring += """
+
+See also:"""
+ for other in self._see_also:
+ docstring += '\n '
+ docstring += other
+
+ # Add the "Complete C++ documentation" section
+ if self._cppdocs != None:
+ docstring += """
+
+Complete C++ documentation is available at:
+ http://www.boost.org/libs/graph/doc/""" + self._cppdocs
+
+ return docstring
+
+
+
+
+
+
+class docstring:
+ """
+ Produces documentation in Python docstring format for the Boost
+ Graph Library's Python bindings using a simple textual format
+ suitable for display on simple terminals.
+ """
+
+ def function(self, name):
+ """Generates a function documentor object"""
+ return function_documentor(name)
+

Added: sandbox/SOC/2008/BGL_Python/python/boost/graph/show.py
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/python/boost/graph/show.py 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,573 @@
+import wx
+import wx.glcanvas
+import sys
+import math
+from sets import Set
+from OpenGL.GL import *
+from OpenGL.GLU import *
+from OpenGL.GLUT import *
+import Numeric
+
+import random
+import boost.graph
+
+DEFAULT_RADIUS = 1.0
+DEFAULT_SLICES = 20
+
+LINE_WIDTH = 1.0
+
+def show(g, position_map = None):
+ # If we didn't receive a position map, layout the graph...
+ if position_map == None:
+ position_map = g.add_vertex_property(type='point2d')
+ if (not g.is_directed() and boost.graph.connected_components(g) == 1 and
+ g.num_vertices() < 100):
+ boost.graph.kamada_kawai_spring_layout(g, position_map)
+ else:
+ boost.graph.fruchterman_reingold_force_directed_layout(g, position_map)
+
+ app = wx.PySimpleApp()
+ frame = wx.Frame(None, title="")
+ canvas = MiniOpenGLGraphCanvas(frame, g, position_map)
+ frame.Show()
+ app.MainLoop()
+
+
+
+
+
+
+
+class glPosition(object):
+ def __init__(self, pos=(0.0, 0.0)):
+ self.x = pos[0]
+ self.y = pos[1]
+ if len(pos)==3:
+ self.z = pos[2]
+ else:
+ self.z = 0.0
+
+class Callable:
+ def __init__(self, anycallable):
+ self.__call__ = anycallable
+
+class MiniOpenGLGraphCanvas(wx.Panel):
+ def __init__(self, parent,
+ graph, position_map):
+# model = None):
+ size=(400, 400)
+ title=""
+ id = wx.ID_ANY
+
+ self.width = size[0]
+ self.height = size[1]
+# self.model = model
+ self.graph = graph
+ self.position_map = position_map
+
+
+ wx.Panel.__init__(self, parent = parent, id = id, style = wx.NO_BORDER)
+
+ self.glcanvas = wx.glcanvas.GLCanvas(self, -1,
+ size=(self.width, self.height))
+
+ self.fogOn = False
+ self.orthographic = True
+ self.drawAxes = True
+
+ self.vertex_data = []
+ self.vertex_color_data = None
+ self.edge_data = []
+
+ self._initialize_drawing_parameters()
+
+ if "windows" in sys.platform:
+ # Windows seems to be upside down...
+ self.top_high = False
+ else:
+ self.top_high = True
+
+ glEnable(GL_COLOR_MATERIAL)
+ glColorMaterial(GL_FRONT_AND_BACK, GL_EMISSION)
+
+ glEnable(GL_POINT_SMOOTH)
+
+ glPointSize(5.0)
+ glLineWidth(1.0)
+
+ glEnable(GL_DEPTH_TEST)
+
+ if self.fogOn:
+ glEnable(GL_FOG)
+ glFog(GL_FOG_COLOR, [0.5, 0.5, 0.5, 1.0])
+ glFog(GL_FOG_MODE, GL_EXP)
+ glHint(GL_FOG_HINT, GL_DONT_CARE)
+ glFog(GL_FOG_DENSITY, 0.005)
+
+ glClearColor(0.5, 0.5, 0.5, 1.0)
+ glClearDepth(1.0)
+
+ self.Resize(self.width, self.height)
+ glMatrixMode(GL_MODELVIEW)
+ glLoadIdentity()
+ self.setViewport()
+
+
+ self.glcanvas.Bind(wx.EVT_PAINT, self.OnPaint)
+ self.glcanvas.Bind(wx.EVT_MOTION, self.OnMotion)
+ self.glcanvas.Bind(wx.EVT_LEFT_DOWN, self.OnLeftDown)
+ self.glcanvas.Bind(wx.EVT_LEFT_UP, self.OnLeftUp)
+ self.glcanvas.Bind(wx.EVT_CHAR, self.OnChar)
+ self.Bind(wx.EVT_SIZE, self.OnSize)
+ self.Bind(wx.EVT_CLOSE, self.OnClose)
+
+ if self.graph is not None:
+ if self.position_map is None:
+ self.position_map = self.graph.add_vertex_property(type='point2d')
+ boost.graph.circle_graph_layout(self.graph, self.position_map, 50)
+ model.SetVertexProperty('position', self.position_map)
+ self.set_graph(self.graph, self.position_map)
+
+ def _initialize_drawing_parameters(self):
+ self.angle_x = 0
+ self.angle_y = 0
+ self.delta_x = 0
+ self.delta_y = 0
+ self.bottom = -1.0
+ self.left = -1.0
+ self.top = 1.0
+ self.left, self.top, self.right, self.bottom = self.compute_rect()
+ self.active_vertex = None
+ self.zoomed = False
+ self.selection = None
+ self.dragging = False
+
+ def set_graph(self, graph, position_map, property_maps={}):
+ self.graph = graph
+ self.position_map = position_map
+ self.ref_3d_map = self.graph.add_vertex_property(type="point3d") # using this to check if position map is point3d
+ self.property_maps = property_maps
+ self.vertex_position_rect = self.compute_rect()
+
+ self.update_layout()
+
+ self.active_vertex = None
+
+ # Set initial view to cover whole graph
+ self.vertex_position_rect = self.compute_rect()
+ (left, top, right, bottom) = self.compute_rect()
+ self.left = left
+ self.right = right
+ self.bottom = bottom
+ self.top = top
+
+ self.Draw()
+
+ def compute_rect(self):
+ pos = self.position_map
+ if self.graph == None or self.graph.num_vertices() == 0:
+ return (-1, -1, 50, 50)
+ else:
+ left, top, right, bottom = 0, 0, 0, 0
+ for v in self.graph.vertices:
+ if pos[v][0] < left: left = pos[v][0]
+ if pos[v][1] > top: top = pos[v][1]
+ if pos[v][0] > right: right = pos[v][0]
+ if pos[v][1] < bottom: bottom = pos[v][1]
+ return (left, top, right, bottom)
+
+ def update_layout(self):
+ self.vertex_position_rect = self.compute_rect()
+ (left, top, right, bottom) = self.compute_rect()
+ self.left = left
+ self.right = right
+ self.bottom = bottom
+ self.top = top
+ self.scale = (right-left)/self.width
+ self.vertex_data = Numeric.zeros((self.graph.num_vertices(), 3), Numeric.Float)
+ self.edge_data = Numeric.zeros((self.graph.num_edges() * 2, 3), Numeric.Float)
+ index = 0
+ for v in self.graph.vertices:
+ self.vertex_data[index, 0] = self.position_map[v][0]
+ self.vertex_data[index, 1] = self.position_map[v][1]
+ if type(self.position_map) == type(self.ref_3d_map):
+ self.vertex_data[index, 2] = self.position_map[v][2]
+ else:
+ self.vertex_data[index, 2] = 0
+ index = index + 1
+
+ index = 0
+ for e in self.graph.edges:
+ src_pos = self.position_map[self.graph.source(e)]
+ tgt_pos = self.position_map[self.graph.target(e)]
+ self.edge_data[index, 0] = src_pos[0]
+ self.edge_data[index, 1] = src_pos[1]
+ self.edge_data[index + 1, 0] = tgt_pos[0]
+ self.edge_data[index + 1, 1] = tgt_pos[1]
+ if type(self.position_map) == type(self.ref_3d_map):
+ self.edge_data[index, 2] = src_pos[2]
+ self.edge_data[index + 1, 2] = tgt_pos[2]
+ else:
+ self.edge_data[index, 2] = 0
+ self.edge_data[index + 1, 2] = 0
+ index = index + 2
+
+ self.Draw()
+
+ def _generate_vertex_colors(self, n, type=GL_RGBA):
+ colors = []
+ for i in range(1, n+1):
+ colors.append((0.0, 0.0, 0.0 + 1.0*(i/float(n)), 1.0))
+ return colors
+
+ def OnClose(self, event):
+ if event.CanVeto():
+ pass
+# self.Destroy()
+ event.Skip()
+
+ def setViewport(self):
+ if self.IsShown():
+ self.glcanvas.SetCurrent()
+ # self.Show(True)
+ # self.glcanvas.SetCurrent()
+ if not self.top_high:
+ # Windows seems to be upside down...
+ glViewport(0, self.height, self.width, self.height)
+ else:
+ glViewport(0, 0, self.width, self.height)
+ # glViewport(x, y, height, width) - x,y, is BOTTOM LEFT corner
+
+ def Resize(self, width, height):
+ self.width = width
+ self.height = height
+
+ if self.IsShown():
+ self.glcanvas.SetCurrent()
+ self.glcanvas.SetSize((self.width, self.height))
+
+ # self.vertex_position_rect = self.compute_rect()
+ # (left, top, right, bottom) = self.compute_rect()
+ # self.left = left
+ # self.bottom = bottom
+ # self.top = top
+ left = self.left
+ right = self.right
+ top = self.top
+ bottom = self.bottom
+
+ if width == 0 or height == 0:
+ return
+
+ if math.fabs(right-left)/float(width) > math.fabs(top-bottom)/self.height:
+ width_dominant = True
+ else:
+ width_dominant = False
+ if width_dominant:
+ self.scale = math.fabs(right-left)/float(width)*1.2
+ self.pad = 0.1*math.fabs(right-left)
+ else:
+ self.scale = math.fabs(top-bottom)/float(height)*1.2
+ self.pad = 0.1*math.fabs(top-bottom)
+
+ glMatrixMode(GL_PROJECTION)
+ glLoadIdentity()
+ if self.zoomed == False:
+ if self.orthographic:
+ glOrtho(self.left - self.pad, self.left - self.pad + self.scale*self.width, \
+ self.bottom + - self.pad + self.scale*self.height, self.bottom - self.pad, \
+ max(self.width*self.scale, self.height*self.scale), \
+ 2*max(self.width*self.scale, self.height*self.scale))
+ else:
+ glFrustum(2.0*(self.left - self.pad)/3.0, 2.0*(self.left - + self.pad + self.scale*self.width)/3.0, \
+ 2.0*(self.bottom - self.pad + self.scale*self.height)/3.0, 2.0*(self.bottom - self.pad)/3.0, \
+ max(self.width*self.scale, self.height*self.scale),\
+ 2*max(self.width*self.scale, self.height*self.scale))
+ else:
+ glOrtho(self.zoom_left, self.zoom_right, self.zoom_top, self.zoom_bottom, self.zoom_front, self.zoom_back)
+
+ if self.fogOn:
+ glFog(GL_FOG_START, 1.5*max(self.width*self.scale, self.height*self.scale))
+ glFog(GL_FOG_END, 2*max(self.width*self.scale, self.height*self.scale))
+
+ self.setViewport()
+ glMatrixMode(GL_MODELVIEW)
+
+ def Draw(self):
+ self.Resize(self.width, self.height)
+
+ if self.IsShown():
+ self.glcanvas.SetCurrent()
+
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
+ glMatrixMode(GL_MODELVIEW)
+ glLoadIdentity()
+ glTranslatef(self.delta_x, self.delta_y, -1.5*max(self.width*self.scale, self.height*self.scale))
+ glRotatef(math.degrees(self.angle_x), 0, 1, 0)
+ glRotatef(math.degrees(self.angle_y), 1, 0, 0)
+
+ if self.drawAxes:
+ glBegin(GL_LINES)
+ glVertex3f(0.0, 0.0, 0.0)
+ glVertex3f(10.0, 0.0, 0.0)
+ glVertex3f(0.0, 0.0, 0.0)
+ glVertex3f(0.0, 10.0, 0.0)
+ glVertex3f(0.0, 0.0, 0.0)
+ glVertex3f(0.0, 0.0, 10.0)
+ glEnd()
+
+ if self.graph != None and len(self.vertex_data) > 0:
+ glEnableClientState(GL_VERTEX_ARRAY)
+
+ # This shows each point
+ glPointSize(5.0)
+ if self.vertex_color_data != None and len(self.vertex_color_data) == len(self.vertex_data):
+ color_array = True
+ else:
+ color_array = False
+ glColor4f(0.0, 0.0, 1.0, 1.0)
+ if color_array:
+ glColorPointerf(self.vertex_color_data)
+ glEnableClientState(GL_COLOR_ARRAY)
+ glVertexPointerf(self.vertex_data)
+ glDrawArrays(GL_POINTS, 0, len(self.vertex_data))
+
+ # This puts a green ring around each point.
+ #glPointSize(8.0)
+ #glColor4f(0.0, 1.0, 0.0, 1.0)
+ #glVertexPointerf(self.vertex_data)
+ #glDrawArrays(GL_POINTS, 0, len(self.vertex_data))
+
+ # This draws the edges
+ if color_array:
+ glDisableClientState(GL_COLOR_ARRAY)
+ glColor4f(1.0, 0.0, 0.0, 1.0)
+ glVertexPointerf(self.edge_data)
+ glDrawArrays(GL_LINES, 0, len(self.edge_data))
+ glDisableClientState(GL_VERTEX_ARRAY)
+
+ if self.graph.is_directed():
+ (left, top, right, bottom) = self.compute_rect()
+ delta = right-left
+ fraction = 0.03
+ for e in self.graph.edges:
+ u = self.graph.source(e)
+ v = self.graph.target(e)
+ u_loc = Numeric.asarray(self.position_map[u])
+ v_loc = Numeric.asarray(self.position_map[v])
+ direction = Numeric.zeros((3,))
+ direction[0] = v_loc[0] - u_loc[0]
+ direction[1] = v_loc[1] - u_loc[1]
+ if len(v_loc) > 2:
+ direction[2] = v_loc[2] - u_loc[2]
+ direction_norm = math.sqrt(sum(direction*direction))
+ try:
+ direction = direction / direction_norm
+ except:
+ pass
+ if len(v_loc) > 2:
+ p = Numeric.asarray((0, 0, 0))
+ else:
+ p = Numeric.asarray((0, 0))
+ p = Numeric.asarray((0, 0, 0)) #
+ p[0] = v_loc[0] - delta*fraction*direction[0]
+ p[1] = v_loc[1] - delta*fraction*direction[1]
+ p[2] = 0 - delta*fraction*direction[2] #
+ if len(v_loc) > 2:
+ p[2] = v_loc[2] - delta*fraction*direction[2]
+ p[2] = 0 - delta*fraction*direction[2] #
+
+ o = Numeric.asarray((-1.0*direction[1], direction[0], 0)) # p x <0,0,-1>
+ o = o / math.sqrt(sum(o*o))
+
+ glBegin(GL_TRIANGLES)
+ glVertex3f(p[0] + delta*fraction*0.25*o[0], \
+ p[1] + delta*fraction*0.25*o[1], \
+ p[2] + delta*fraction*0.25*o[2])
+ if len(v_loc) > 2:
+ glVertex3f(v_loc[0], v_loc[1], v_loc[2])
+ else:
+ glVertex3f(v_loc[0], v_loc[1], 0)
+ glVertex3f(p[0] - delta*fraction*0.25*o[0], \
+ p[1] - delta*fraction*0.25*o[1], \
+ p[2] - delta*fraction*0.25*o[2])
+ glEnd()
+
+ o2 = Numeric.asarray((p[1]*o[2] - p[2]*o[1],\
+ -1.0*(p[0]*o[2] - p[2]*o[0]),\
+ p[0]*o[1] - p[1]*o[0])) # p x o
+# print o2, "(", o, ")"
+ try:
+ o2 = o2 / math.sqrt(sum(o2*o2))
+ except:
+ pass
+ glBegin(GL_TRIANGLES)
+ glVertex3f(p[0] + delta*fraction*0.25*o2[0], \
+ p[1] + delta*fraction*0.25*o2[1], \
+ p[2] + delta*fraction*0.25*o2[2])
+ if len(v_loc) > 2:
+ glVertex3f(v_loc[0], v_loc[1], v_loc[2])
+ else:
+ glVertex3f(v_loc[0], v_loc[1], 0)
+ glVertex3f(p[0] - delta*fraction*0.5*o[0], \
+ p[1] - delta*fraction*0.5*o[1], \
+ p[2] - delta*fraction*0.5*o[2])
+ glEnd()
+
+
+ if self.active_vertex != None:
+ pos = self.position_map[self.active_vertex]
+ glDisable(GL_LIGHTING)
+ glEnable (GL_BLEND);
+ glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ z = 0.
+ if len(pos) == 3:
+ z = pos[2]
+ glTranslatef(pos[0], pos[1], z)
+ glColorf(1.0, 1.0, 0.0, 0.5)
+ glutSolidSphere(DEFAULT_RADIUS*1.5, DEFAULT_SLICES, DEFAULT_SLICES)
+ glDisable(GL_BLEND)
+ glEnable(GL_LIGHTING)
+
+ if self.selection != None:
+ selection = self.selection
+ sel_left = min(selection[0].x, selection[1].x)
+ sel_right = max(selection[0].x, selection[1].x)
+ sel_bottom = min(selection[0].y, selection[1].y)
+ sel_top = max(selection[0].y, selection[1].y)
+ glColor4f(0.5, 0.5, 0.5, .25)
+ glEnable(GL_COLOR_LOGIC_OP)
+ glLogicOp(GL_XOR)
+ glBegin(GL_LINE_LOOP)
+ glVertex(sel_left, sel_bottom)
+ glVertex(sel_left, sel_top)
+ glVertex(sel_right, sel_top)
+ glVertex(sel_right, sel_bottom)
+ glEnd()
+ glDisable(GL_COLOR_LOGIC_OP)
+ self.selection = None
+
+ self.glcanvas.SwapBuffers()
+
+ def OnPaint(self, event):
+ dc = wx.PaintDC(self)
+ self.Draw()
+ event.Skip()
+
+ def OnMotion(self, event):
+ raw_pos = event.GetPosition()
+ pos = self.translatePos(raw_pos)
+ if event.Dragging():
+ self.dragging = True
+ j = self.active_vertex
+ if j != None:
+ self.position_map[j] = boost.graph.Point2D(pos.x, pos.y)
+ self.update_layout()
+ if event.Dragging() and event.ShiftDown():
+ delta = (pos.x - self.drag_pos_start.x, pos.y - self.drag_pos_start.y)
+ self.delta_x = delta[0]
+ self.delta_y = delta[1]
+ self.Draw()
+ # Have to use CmdDown on OS X since EVT_LEFT_DOWN is not set when CTRL is down
+ if event.Dragging() and (event.ControlDown() or event.CmdDown()):
+ self.drag_pos_end = pos
+ self.selection = (self.drag_pos_start, self.drag_pos_end)
+ self.Draw()
+ event.Skip()
+
+ def OnLeftDown(self, event):
+ raw_pos = event.GetPosition()
+ pos = self.translatePos(raw_pos)
+ j = self.detectSelection(pos)
+ if j != None:
+ self.active_node = j
+ self.active_vertex = j
+ else:
+ self.active_node = None
+ self.active_vertex = None
+ if not self.active_vertex:
+ self.drag_pos_start = pos
+ self.Draw()
+ event.Skip()
+
+ def OnLeftUp(self, event):
+ if self.active_vertex != None:
+ self.active_vertex = None
+ self.Draw()
+ if self.dragging and (event.ControlDown() or event.CmdDown()):
+ raw_pos = event.GetPosition()
+ pos = self.translatePos(raw_pos)
+ self.drag_pos_end = pos
+ self.left = min(self.drag_pos_start.x, self.drag_pos_end.x)
+ self.right = max(self.drag_pos_start.x, self.drag_pos_end.x)
+ self.bottom = min(self.drag_pos_start.y, self.drag_pos_end.y)
+ self.top = max(self.drag_pos_start.y, self.drag_pos_end.y)
+ self.selection = None
+ self.Draw()
+ self.dragging = False
+ event.Skip()
+
+ def translatePos(self, raw_pos):
+ pos = glPosition()
+ pos.x = self.scale * raw_pos.x + self.left - self.pad
+ pos.y = self.scale * raw_pos.y + self.bottom - self.pad
+ return pos
+
+ def detectSelection(self, pos):
+ for node in self.graph.vertices:
+ node_pos = self.position_map[node]
+ if (pow(pos.x-node_pos[0], 2) + pow(pos.y-node_pos[1], 2)) <= pow(DEFAULT_RADIUS, 2):
+ return node
+ return None
+
+ def OnChar(self, event):
+ needsRedraw = True
+ key = event.GetKeyCode()
+ if not event.ShiftDown():
+ if key == wx.WXK_LEFT:
+ self.angle_x = self.angle_x - math.pi*0.125
+ elif key == wx.WXK_RIGHT:
+ self.angle_x = self.angle_x + math.pi*0.125
+ elif key == wx.WXK_UP:
+ self.angle_y = self.angle_y + math.pi*0.125
+ elif key == wx.WXK_DOWN:
+ self.angle_y = self.angle_y - math.pi*0.125
+ elif key == ord('r'):
+ self._initialize_drawing_parameters()
+ elif event.ShiftDown():
+ if key == wx.WXK_LEFT:
+ self.delta_x -= 0.5
+ elif key == wx.WXK_RIGHT:
+ self.delta_x += 0.5
+ elif key == wx.WXK_UP:
+ self.delta_y += 0.5
+ elif key == wx.WXK_DOWN:
+ self.delta_y -= 0.5
+ else:
+ needsRedraw = False
+
+ if needsRedraw:
+ self.Draw()
+
+ def OnSize(self, event):
+ # event gives us total size, but we can't use all of it
+ self.size = self.GetClientSize()
+ self.Resize(self.size[0], self.size[1])
+ self.Draw()
+ event.Skip()
+
+# def MenuName():
+# return "Node/Edge (OpenGL)"
+# MenuName = Callable(MenuName)
+#
+# def name():
+# return 'Node/Edge View'
+# name = Callable(name)
+#
+# def accepts(data):
+# return type(data) == boost.graph.Graph or type(data) == boost.graph.Digraph
+# accepts = Callable(accepts)
+
+ def GetImage(self):
+ pixels = glReadPixelsub(0, 0, self.size[0], self.size[1], GL_RGBA)
+ return (self.size, pixels)

Added: sandbox/SOC/2008/BGL_Python/src/astar_search.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/astar_search.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,154 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#include "graph_types.hpp"
+
+namespace boost {
+ // Work around an annoying qualified "boost::get" call.
+ using boost::graph::python::get;
+}
+
+#include <boost/graph/astar_search.hpp>
+#include <boost/graph/iteration_macros.hpp>
+
+namespace boost { namespace graph { namespace python {
+
+#define BGL_PYTHON_VISITOR maybe_astar_visitor
+#define BGL_PYTHON_EVENTS_HEADER <boost/graph/python/astar_events.hpp>
+#include <boost/graph/python/visitor.hpp>
+#undef BGL_PYTHON_EVENTS_HEADER
+#undef BGL_PYTHON_VISITOR
+
+using boost::python::object;
+
+// Function object adaptor for the A* heuristic
+template<typename Graph>
+struct astar_heuristic_adaptor
+{
+ typedef typename graph_traits<Graph>::vertex_descriptor Vertex;
+
+ astar_heuristic_adaptor(object h) : h(h) { }
+
+ float operator()(Vertex v)
+ {
+ return boost::python::extract<float>(h(v));
+ }
+
+ private:
+ object h;
+};
+
+template<typename Graph>
+void
+astar_search
+ (const Graph& g,
+ typename graph_traits<Graph>::vertex_descriptor s,
+ object in_heuristic,
+ object in_visitor,
+ vector_property_map<
+ typename graph_traits<Graph>::vertex_descriptor,
+ typename property_map<Graph, vertex_index_t>::const_type>* in_predecessor,
+ vector_property_map<
+ float,
+ typename property_map<Graph, vertex_index_t>::const_type>* in_cost,
+ vector_property_map<
+ float,
+ typename property_map<Graph, vertex_index_t>::const_type>* in_distance,
+ vector_property_map<
+ float,
+ typename property_map<Graph, edge_index_t>::const_type>* in_weight,
+ vector_property_map<
+ default_color_type,
+ typename property_map<Graph, vertex_index_t>::const_type>* in_color)
+{
+ typedef typename graph_traits<Graph>::vertex_descriptor vertex_descriptor;
+ typedef typename property_map<Graph, vertex_index_t>::const_type
+ VertexIndexMap;
+ typedef typename property_map<Graph, edge_index_t>::const_type
+ EdgeIndexMap;
+ typedef vector_property_map<vertex_descriptor, VertexIndexMap> PredecessorMap;
+ typedef vector_property_map<float, VertexIndexMap> CostMap;
+ typedef vector_property_map<float, VertexIndexMap> DistanceMap;
+ typedef vector_property_map<float, EdgeIndexMap> WeightMap;
+ typedef vector_property_map<default_color_type, VertexIndexMap> ColorMap;
+
+ PredecessorMap predecessor(in_predecessor? *in_predecessor
+ /*default*/: PredecessorMap(num_vertices(g),
+ get(vertex_index, g)));
+ CostMap cost(in_cost? *in_cost
+ /*default*/: CostMap(num_vertices(g), get(vertex_index, g)));
+ DistanceMap distance(in_distance? *in_distance
+ /*default*/: DistanceMap(num_vertices(g),
+ get(vertex_index, g)));
+ WeightMap weight(in_weight? *in_weight
+ /*default*/: WeightMap(num_edges(g), get(edge_index, g)));
+ ColorMap color(in_color? *in_color
+ /*default*/: ColorMap(num_vertices(g), get(vertex_index, g)));
+
+ if (!in_weight)
+ BGL_FORALL_EDGES_T(e, g, Graph)
+ put(weight, e, 1.0);
+
+ if (in_visitor != object()) {
+ typedef queue<vertex_descriptor> Queue;
+ maybe_astar_visitor vis(in_visitor);
+ boost::astar_search(g, s, astar_heuristic_adaptor<Graph>(in_heuristic),
+ predecessor_map(predecessor).
+ rank_map(cost).
+ distance_map(distance).
+ weight_map(weight).
+ color_map(color).
+ visitor(vis));
+ } else {
+ boost::astar_search(g, s, astar_heuristic_adaptor<Graph>(in_heuristic),
+ predecessor_map(predecessor).
+ rank_map(cost).
+ distance_map(distance).
+ weight_map(weight).
+ color_map(color));
+ }
+}
+
+void export_astar_search()
+{
+ using boost::python::arg;
+ using boost::python::def;
+ using boost::python::object;
+
+#define UNDIRECTED_GRAPH(Name,Type) \
+ { \
+ typedef property_map< Type , vertex_index_t>::const_type \
+ VertexIndexMap; \
+ typedef property_map< Type , edge_index_t>::const_type \
+ EdgeIndexMap; \
+ typedef graph_traits< Type >::vertex_descriptor vertex_descriptor; \
+ typedef vector_property_map<vertex_descriptor, VertexIndexMap> \
+ PredecessorMap; \
+ typedef vector_property_map<float, VertexIndexMap> CostMap; \
+ typedef vector_property_map<float, VertexIndexMap> DistanceMap; \
+ typedef vector_property_map<float, EdgeIndexMap> WeightMap; \
+ typedef vector_property_map<default_color_type, VertexIndexMap> \
+ VertexColorMap; \
+ \
+ def("astar_search", \
+ &boost::graph::python::astar_search< Type >, \
+ (arg("graph"), \
+ arg("root_vertex"), \
+ arg("heuristic"), \
+ arg("visitor") = object(), \
+ arg("predecessor_map") = static_cast<PredecessorMap*>(0), \
+ arg("cost_map") = static_cast<CostMap*>(0), \
+ arg("distance_map") = static_cast<DistanceMap*>(0), \
+ arg("weight_map") = static_cast<WeightMap*>(0), \
+ arg("color_map") = static_cast<VertexColorMap*>(0))); \
+ }
+#include "graphs.hpp"
+}
+
+
+} } } // end namespace boost::graph::python

Added: sandbox/SOC/2008/BGL_Python/src/basic_graph.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/basic_graph.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,535 @@
+// Copyright (C)2005, 2006 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#include "basic_graph.hpp"
+#include <boost/graph/iteration_macros.hpp>
+#include <boost/graph/python/graph.hpp>
+#include <boost/graph/python/python_property_map.hpp>
+#include "exports.hpp"
+#include "graph_types.hpp"
+#include <boost/algorithm/string/replace.hpp>
+
+namespace boost { namespace graph { namespace python {
+
+template<typename DirectedS>
+boost::python::object basic_graph<DirectedS>::graph_type;
+
+template<typename DirectedS>
+boost::python::handle<> basic_graph<DirectedS>::py_null_vertex;
+
+// ----------------------------------------------------------
+// Constructors
+// ----------------------------------------------------------
+#ifdef BOOST_MSVC
+# pragma warning (push)
+# pragma warning (disable: 4355)
+#endif
+template<typename DirectedS>
+basic_graph<DirectedS>::basic_graph(PyObject* self)
+ : inherited(),
+ vertex_objects(0, get(vertex_index, *this)),
+ edge_objects(0, get(edge_index, *this)),
+ self(self)
+{
+ initialize();
+}
+
+template<typename DirectedS>
+basic_graph<DirectedS>::basic_graph(PyObject* self, boost::python::object l,
+ const std::string& name_map)
+ : inherited(),
+ vertex_objects(0, get(vertex_index, *this)),
+ edge_objects(0, get(edge_index, *this)),
+ self(self)
+{
+ initialize();
+
+ using boost::python::object;
+ std::map<object, vertex_descriptor> verts;
+ int len = ::boost::python::extract<int>(l.attr("__len__")());
+
+ // Mapping from vertices to names
+ object name;
+
+ // Build a vertex->object map for the names,
+ if (!name_map.empty())
+ name = add_vertex_property(*this, name_map, "object");
+
+ for (int i = 0; i < len; ++i) {
+ vertex_descriptor u, v;
+ object up = l[i][0];
+ object vp = l[i][1];
+
+ typename std::map<object, vertex_descriptor>::iterator pos;
+ pos = verts.find(up);
+ if (pos == verts.end()) {
+ u = verts[up] = add_vertex();
+ if (!name_map.empty()) name[u] = up;
+ }
+ else u = pos->second;
+ pos = verts.find(vp);
+ if (pos == verts.end()) {
+ v = verts[vp] = add_vertex();
+ if (!name_map.empty()) name[v] = vp;
+ }
+ else v = pos->second;
+
+ add_edge(u, v);
+ }
+}
+#ifdef BOOST_MSVC
+# pragma warning (pop)
+#endif
+
+template<typename DirectedS>
+basic_graph<DirectedS>::~basic_graph()
+{
+ for (std::list<resizable_property_map*>::iterator v = vertex_maps.begin();
+ v != vertex_maps.end(); ++v)
+ delete *v;
+ for (std::list<resizable_property_map*>::iterator e = edge_maps.begin();
+ e != edge_maps.end(); ++e)
+ delete *e;
+}
+
+// ----------------------------------------------------------
+// Mutable graph
+// ----------------------------------------------------------
+template<typename DirectedS>
+typename basic_graph<DirectedS>::Vertex basic_graph<DirectedS>::add_vertex()
+{
+ using boost::add_vertex;
+ using boost::python::handle;
+
+ // Add the vertex and give it an index
+ base_vertex_descriptor v = add_vertex(base());
+ put(vertex_index, base(), v, index_to_vertex.size());
+ index_to_vertex.push_back(Vertex(v, this));
+
+ // Update any vertex property maps around
+ for (std::list<resizable_property_map*>::iterator i = vertex_maps.begin();
+ i != vertex_maps.end(); /* in loop */) {
+ if ((*i)->added_key()) ++i;
+ else {
+ delete *i;
+ i = vertex_maps.erase(i);
+ }
+ }
+
+ // Create a Python object for this vertex and put it into the
+ // vertex_objects property map.
+ using boost::python::objects::value_holder;
+ using boost::python::objects::make_instance;
+ using boost::python::objects::class_cref_wrapper;
+ typedef class_cref_wrapper<Vertex,
+ make_instance<Vertex, value_holder<Vertex> > >
+ Converter;
+
+ Vertex result(v, this);
+ boost::python::object vertex_object
+ = boost::python::object(handle<>(Converter::convert(result)));
+ put(vertex_objects, result, vertex_object);
+
+ return result;
+}
+
+template<typename DirectedS>
+void basic_graph<DirectedS>::clear_vertex(Vertex vertex)
+{
+ // Remove all incoming and outgoing edges
+ while (out_degree(vertex, *this) > 0) remove_edge(*out_edges(vertex, *this).first);
+ while (in_degree(vertex, *this) > 0) remove_edge(*in_edges(vertex, *this).first);
+}
+
+template<typename DirectedS>
+void basic_graph<DirectedS>::remove_vertex(Vertex vertex)
+{
+ using boost::remove_vertex;
+
+ // Update any vertex property maps around
+ for (std::list<resizable_property_map*>::iterator i = vertex_maps.begin();
+ i != vertex_maps.end(); /* in loop */) {
+ if ((*i)->removed_key(get(vertex_index, base(), vertex.base))) ++i;
+ else {
+ delete *i;
+ i = vertex_maps.erase(i);
+ }
+ }
+
+ // Update vertex indices
+ std::size_t index = get(vertex_index, base(), vertex.base);
+ index_to_vertex[index] = index_to_vertex.back();
+ put(vertex_index, base(), index_to_vertex[index], index);
+ index_to_vertex.pop_back();
+
+ // Remove the actual vertex
+ remove_vertex(vertex.base, base());
+}
+
+template<typename DirectedS>
+typename basic_graph<DirectedS>::Edge
+basic_graph<DirectedS>::add_edge(Vertex u, Vertex v)
+{
+ using boost::add_edge;
+ using boost::python::handle;
+
+ // Add the edge
+ base_edge_descriptor e = add_edge(u.base, v.base, base()).first;
+ put(edge_index, base(), e, index_to_edge.size());
+ index_to_edge.push_back(Edge(e, this));
+
+ // Update any edge property maps around
+ for (std::list<resizable_property_map*>::iterator i = edge_maps.begin();
+ i != edge_maps.end(); /* in loop */) {
+ if ((*i)->added_key()) ++i;
+ else {
+ delete *i;
+ i = edge_maps.erase(i);
+ }
+ }
+
+ // Create a Python object for this edge and put it into the
+ // edge_objects property map.
+ using boost::python::objects::value_holder;
+ using boost::python::objects::make_instance;
+ using boost::python::objects::class_cref_wrapper;
+ typedef class_cref_wrapper<Edge,
+ make_instance<Edge, value_holder<Edge> > >
+ Converter;
+
+ Edge result(e, this);
+ boost::python::object edge_object =
+ boost::python::object(handle<>(Converter::convert(result)));
+ put(edge_objects, result, edge_object);
+
+ return result;
+}
+
+template<typename DirectedS>
+void basic_graph<DirectedS>::remove_edge(Edge edge)
+{
+ using boost::remove_edge;
+
+ // Update any edge property maps around
+ for (std::list<resizable_property_map*>::iterator i = edge_maps.begin();
+ i != edge_maps.end(); /* in loop */) {
+ if ((*i)->removed_key(get(edge_index, base(), edge.base))) ++i;
+ else {
+ delete *i;
+ i = edge_maps.erase(i);
+ }
+ }
+
+ // Update edge indices
+ std::size_t index = get(edge_index, base(), edge.base);
+ index_to_edge[index] = index_to_edge.back();
+ put(edge_index, base(), index_to_edge[index], index);
+ index_to_edge.pop_back();
+
+ // Remove the actual edge
+ remove_edge(edge.base, base());
+}
+
+template<typename DirectedS>
+std::pair<typename basic_graph<DirectedS>::Edge, bool>
+basic_graph<DirectedS>::edge(Vertex u, Vertex v) const
+{
+ using boost::edge;
+ std::pair<base_edge_descriptor, bool> result = edge(u, v, base());
+ return std::make_pair(Edge(result.first, this), result.second);
+}
+
+template<typename DirectedS>
+void basic_graph<DirectedS>::initialize()
+{
+ // Register the cached Python objects for each vertex and edge.
+ typedef resizable_vector_property_map<boost::python::object,
+ VertexIndexMap> vertex_object_map;
+ typedef resizable_vector_property_map<boost::python::object,
+ EdgeIndexMap> edge_object_map;
+
+ std::auto_ptr<resizable_property_map>
+ reg_vertex_objects(new vertex_object_map(vertex_objects));
+ register_vertex_map(reg_vertex_objects);
+
+ std::auto_ptr<resizable_property_map>
+ reg_edge_objects(new edge_object_map(edge_objects));
+ register_edge_map(reg_edge_objects);
+}
+
+template<typename Graph>
+boost::python::object
+py_edge(const Graph& g,
+ typename graph_traits<Graph>::vertex_descriptor u,
+ typename graph_traits<Graph>::vertex_descriptor v)
+{
+ std::pair<typename graph_traits<Graph>::edge_descriptor, bool>
+ result = edge(u, v, g);
+ if (result.second) return boost::python::object(result.first);
+ else return boost::python::object();
+}
+
+template<typename Graph>
+boost::python::dict py_get_vertex_properties(const Graph& g)
+{
+ return g.vertex_properties();
+}
+
+template<typename Graph>
+boost::python::dict py_get_edge_properties(const Graph& g)
+{
+ return g.edge_properties();
+}
+
+#if BOOST_WORKAROUND(BOOST_MSVC, == 1310)
+/* The following routines are needed to work around a Visual C++ 7.1 bug
+ where add_property() can't tell the difference between a docstring
+ and a setter for a read-only property. So, we give it setters that
+ throw Python exceptions. */
+
+template<typename Graph>
+void py_set_vertex_properties(const Graph&, boost::python::dict)
+{
+ PyErr_SetString(PyExc_AttributeError,
+ "object attribute 'vertex_properties' is read-only");
+}
+
+template<typename Graph>
+void py_set_edge_properties(const Graph&, boost::python::dict)
+{
+ PyErr_SetString(PyExc_AttributeError,
+ "object attribute 'edge_properties' is read-only");
+}
+#endif
+
+template<typename Graph> void export_in_graph();
+
+static const char* vertex_properties_doc =
+ "A Python dictionary mapping from vertex property names to\n"
+ "property maps. These properties are \"attached\" to the graph\n"
+ "and will be pickled or serialized along with the graph.";
+static const char* edge_properties_doc =
+ "A Python dictionary mapping from edge property names to\n"
+ "property maps. These properties are \"attached\" to the graph\n"
+ "and will be pickled or serialized along with the graph.";
+
+/* Function object that retrieves the cached Python object
+ corresponding to the given vertex value. */
+template<typename Graph>
+struct cached_vertex_object {
+ typedef typename graph_traits<Graph>::vertex_descriptor Vertex;
+ static PyObject* convert(const Vertex& v) {
+ if (v == graph_traits<Graph>::null_vertex()) {
+ Py_INCREF(Graph::py_null_vertex.get());
+ return Graph::py_null_vertex.get();
+ }
+ else {
+ PyObject* result = get(v.graph->vertex_objects, v).ptr();
+ Py_INCREF(result);
+ return result;
+ }
+ }
+};
+
+/* Function object that retrieves the cached Python object
+ corresponding to the given edge value. */
+template<typename Edge>
+struct cached_edge_object {
+ static PyObject* convert(const Edge& e) {
+ PyObject* result = get(e.graph->edge_objects, e).ptr();
+ Py_INCREF(result);
+ return result;
+ }
+};
+
+// Retrieve an arbitrary property from a vertex using attribute syntax
+template<typename Vertex>
+boost::python::object vertex_get_attr(Vertex v, const char* name)
+{
+ typedef typename Vertex::graph_type graph_type;
+
+ using boost::python::extract;
+ if (!extract<bool>(v.graph->vertex_properties().attr("has_key")(name))())
+ add_vertex_property(const_cast<graph_type&>(*v.graph), name, "object");
+
+ return v.graph->vertex_properties()[name][v];
+}
+
+// Set an arbitrary property on a vertex using attribute syntax
+template<typename Vertex>
+void
+vertex_set_attr(Vertex v, const char* name, boost::python::object value)
+{
+ typedef typename Vertex::graph_type graph_type;
+
+ using boost::python::extract;
+ if (!extract<bool>(v.graph->vertex_properties().attr("has_key")(name))())
+ add_vertex_property(const_cast<graph_type&>(*v.graph), name, "object");
+
+ v.graph->vertex_properties()[name][v] = value;
+}
+
+// Retrieve an arbitrary property from a edge using attribute syntax
+template<typename Edge>
+boost::python::object edge_get_attr(Edge e, const char* name)
+{
+ typedef typename Edge::graph_type graph_type;
+
+ using boost::python::extract;
+ if (!extract<bool>(e.graph->edge_properties().attr("has_key")(name))())
+ add_edge_property(const_cast<graph_type&>(*e.graph), name, "object");
+
+ return e.graph->edge_properties()[name][e];
+}
+
+// Set an arbitrary property on a edge using attribute syntax
+template<typename Edge>
+void
+edge_set_attr(Edge e, const char* name, boost::python::object value)
+{
+ typedef typename Edge::graph_type graph_type;
+
+ using boost::python::extract;
+ if (!extract<bool>(e.graph->edge_properties().attr("has_key")(name))())
+ add_edge_property(const_cast<graph_type&>(*e.graph), name, "object");
+
+ e.graph->edge_properties()[name][e] = value;
+}
+
+template<typename DirectedS>
+void export_basic_graph(const char* name)
+{
+ using boost::python::arg;
+ using boost::python::class_;
+ using boost::python::dict;
+ using boost::python::init;
+ using boost::python::object;
+ using boost::python::range;
+ using boost::python::scope;
+ using boost::python::self;
+ using boost::python::tuple;
+ using boost::python::to_python_converter;
+
+ typedef basic_graph<DirectedS> Graph;
+ typedef typename graph_traits<Graph>::vertex_descriptor Vertex;
+ typedef typename graph_traits<Graph>::edge_descriptor Edge;
+ typedef typename property_map<Graph, vertex_index_t>::const_type
+ VertexIndexMap;
+ typedef typename property_map<Graph, edge_index_t>::const_type
+ EdgeIndexMap;
+
+ {
+ scope s;
+
+ class_<Graph, boost::noncopyable> graph(name);
+ Graph::graph_type = graph;
+
+ // Build documentation string
+ std::string my_graph_init_doc(graph_init_doc);
+ algorithm::replace_all(my_graph_init_doc, "GRAPH", std::string(name));
+
+ graph
+ // Constructors
+ .def(init<object, std::string>((arg("edges"),
+ arg("name_map") = "node_id"),
+ my_graph_init_doc.c_str()))
+ .def("is_directed", &Graph::is_directed,
+ "is_directed(self) -> bool\n\nWhether the graph is directed or not.")
+ // Properties
+ .add_property("vertex_properties", &py_get_vertex_properties<Graph>,
+#if BOOST_WORKAROUND(BOOST_MSVC, == 1310)
+ &py_set_vertex_properties<Graph>,
+#endif
+ vertex_properties_doc
+ )
+ .add_property("edge_properties", &py_get_edge_properties<Graph>,
+#if BOOST_WORKAROUND(BOOST_MSVC, == 1310)
+ &py_set_edge_properties<Graph>,
+#endif
+ edge_properties_doc
+ )
+ // Miscellaneous adjacency list functions
+ .def("edge", &py_edge<Graph>,
+ (arg("graph"), arg("u"), arg("v")),
+ "edge(self, u, v) -> Edge\n\n"
+ "Returns an edge (u, v) if one exists, otherwise None.")
+ // Pickling
+ .def_pickle(graph_pickle_suite<DirectedS>())
+ ;
+
+ boost::graph::python::graph<Graph> g(graph);
+ g.vertex_class.def("__getattr__", &vertex_get_attr<Vertex>);
+ g.vertex_class.def("__setattr__", &vertex_set_attr<Vertex>);
+ g.edge_class.def("__getattr__", &edge_get_attr<Edge>);
+ g.edge_class.def("__setattr__", &edge_set_attr<Edge>);
+
+ boost::graph::python::vertex_list_graph<Graph> vlg(graph);
+ boost::graph::python::edge_list_graph<Graph> elg(graph);
+ boost::graph::python::incidence_graph<Graph> ig(graph);
+ boost::graph::python::bidirectional_graph<Graph> bg(graph);
+ boost::graph::python::adjacency_graph<Graph> ag(graph);
+ boost::graph::python::mutable_graph<Graph, false, false> mg(graph);
+
+ // Create a Python object for this vertex and put it into the
+ // vertex_objects property map.
+ using boost::python::objects::value_holder;
+ using boost::python::objects::make_instance;
+ using boost::python::objects::class_cref_wrapper;
+ using boost::python::handle;
+ using boost::python::borrowed;
+
+ typedef class_cref_wrapper<Vertex,
+ make_instance<Vertex, value_holder<Vertex> > >
+ Converter;
+
+ Graph::py_null_vertex = handle<>(Converter::convert(Graph::null_vertex()));
+
+ // Register conversion routines that access the cached vertex/edge
+ // objects in the graph.
+ to_python_converter<Vertex, cached_vertex_object<Graph> >();
+ to_python_converter<Edge, cached_edge_object<Edge> >();
+
+ // Graph generators
+ export_generators(graph, name);
+
+ // Graph I/O
+ export_graphviz(graph, name);
+ export_graphml(graph, name);
+
+ // Properties
+ std::string my_add_vertex_property_doc(add_vertex_property_doc);
+ algorithm::replace_all(my_add_vertex_property_doc,
+ "GRAPH", std::string(name));
+ std::string my_add_edge_property_doc(add_edge_property_doc);
+ algorithm::replace_all(my_add_edge_property_doc,
+ "GRAPH", std::string(name));
+
+
+ export_property_maps<Graph>(name);
+ graph.def("add_vertex_property", &add_vertex_property<Graph>,
+ (arg("graph"),
+ arg("name") = std::string(),
+ arg("type") = std::string("object")),
+ my_add_vertex_property_doc.c_str());
+ graph.def("add_edge_property", &add_edge_property<Graph>,
+ (arg("graph"),
+ arg("name") = std::string(),
+ arg("type") = std::string("object")),
+ my_add_edge_property_doc.c_str());
+ }
+}
+
+void export_graphs()
+{
+ export_basic_graph<undirectedS>("Graph");
+ export_basic_graph<bidirectionalS>("Digraph");
+}
+
+using boost::python::object;
+
+} } } // end namespace boost::graph::python

Added: sandbox/SOC/2008/BGL_Python/src/basic_graph.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/basic_graph.hpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,561 @@
+// Copyright 2004-5 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#ifndef BOOST_GRAPH_BASIC_GRAPH_HPP
+#define BOOST_GRAPH_BASIC_GRAPH_HPP
+
+#include <boost/python.hpp>
+#include <boost/graph/graph_traits.hpp>
+#include <boost/graph/adjacency_list.hpp>
+#include <boost/iterator/transform_iterator.hpp>
+#include <boost/vector_property_map.hpp>
+#include <boost/random/linear_congruential.hpp>
+#include <boost/graph/python/point2d.hpp>
+#include <boost/graph/python/iterator.hpp>
+#include <boost/graph/python/resizable_property_map.hpp>
+
+namespace boost { namespace graph { namespace python {
+
+template<typename DirectedS>
+class basic_graph;
+
+} } }
+
+namespace boost { namespace python {
+
+template<typename DirectedS>
+class has_back_reference<graph::python::basic_graph<DirectedS> > {
+public:
+ typedef mpl::true_ type;
+};
+
+} }
+
+namespace boost { namespace graph { namespace python {
+
+template<typename T, typename DirectedS>
+struct basic_descriptor
+{
+ typedef basic_graph<DirectedS> graph_type;
+
+ basic_descriptor() : graph(0) {}
+ basic_descriptor(T base, const basic_graph<DirectedS>* graph)
+ : base(base), graph(graph) { }
+
+ operator T() const { return base; }
+
+ struct create
+ {
+ typedef basic_descriptor result_type;
+
+ create() : graph(0) { }
+
+ explicit create(const basic_graph<DirectedS>* graph) : graph(graph) { }
+
+ basic_descriptor operator()(T base) const
+ {
+ return basic_descriptor<T, DirectedS>(base, graph);
+ }
+
+ const basic_graph<DirectedS>* graph;
+ };
+
+ T base;
+ const basic_graph<DirectedS>* graph;
+};
+
+template<typename T, typename DirectedS>
+inline bool
+operator==(const basic_descriptor<T, DirectedS>& u,
+ const basic_descriptor<T, DirectedS>& v)
+{ return u.base == v.base; }
+
+template<typename T, typename DirectedS>
+inline bool
+operator!=(const basic_descriptor<T, DirectedS>& u,
+ const basic_descriptor<T, DirectedS>& v)
+{ return u.base != v.base; }
+
+template<typename Key, typename IndexMap>
+struct basic_index_map
+{
+ typedef Key key_type;
+ typedef typename property_traits<IndexMap>::value_type value_type;
+ typedef typename property_traits<IndexMap>::reference reference;
+ typedef typename property_traits<IndexMap>::category category;
+
+ basic_index_map(const IndexMap& id = IndexMap())
+ : id(id) { }
+
+ value_type operator[](const key_type& key) const
+ {
+ return get(id, key.base);
+ }
+
+ IndexMap id;
+};
+
+template<typename Key, typename IndexMap>
+inline typename basic_index_map<Key, IndexMap>::value_type
+get(const basic_index_map<Key, IndexMap>& pm,
+ typename basic_index_map<Key, IndexMap>::key_type const& key)
+{ return get(pm.id, key.base); }
+
+struct stored_minstd_rand
+{
+ stored_minstd_rand(int seed = 1) : gen(seed) { }
+
+ minstd_rand gen;
+};
+
+template<typename DirectedS>
+class basic_graph
+ : private noncopyable,
+ public stored_minstd_rand,
+ public adjacency_list<listS, listS, DirectedS,
+ property<vertex_index_t, std::size_t>,
+ property<edge_index_t, std::size_t> >
+{
+ typedef adjacency_list<listS, listS, DirectedS,
+ property<vertex_index_t, std::size_t>,
+ property<edge_index_t, std::size_t> > inherited;
+ typedef graph_traits<inherited> traits;
+
+ typedef typename traits::vertex_iterator base_vertex_iterator;
+ typedef typename traits::edge_iterator base_edge_iterator;
+ typedef typename traits::out_edge_iterator base_out_edge_iterator;
+ typedef typename traits::in_edge_iterator base_in_edge_iterator;
+ typedef typename traits::adjacency_iterator base_adjacency_iterator;
+ typedef typename property_map<inherited, vertex_index_t>::const_type
+ base_vertex_index_map;
+ typedef typename property_map<inherited, edge_index_t>::const_type
+ base_edge_index_map;
+
+ public:
+ typedef typename traits::vertex_descriptor base_vertex_descriptor;
+ typedef typename traits::edge_descriptor base_edge_descriptor;
+
+ typedef basic_descriptor<base_vertex_descriptor, DirectedS>
+ Vertex;
+ typedef Vertex vertex_descriptor;
+ typedef basic_descriptor<base_edge_descriptor, DirectedS>
+ Edge;
+ typedef Edge edge_descriptor;
+ typedef basic_index_map<Vertex, base_vertex_index_map>
+ VertexIndexMap;
+ typedef basic_index_map<Edge, base_edge_index_map> EdgeIndexMap;
+ typedef std::size_t vertices_size_type;
+ typedef std::size_t edges_size_type;
+ typedef std::size_t degree_size_type;
+ typedef typename traits::directed_category directed_category;
+ typedef typename traits::edge_parallel_category edge_parallel_category;
+ typedef typename traits::traversal_category traversal_category;
+ typedef transform_iterator<typename Vertex::create, base_vertex_iterator>
+ vertex_iterator;
+ typedef transform_iterator<typename Edge::create, base_edge_iterator>
+ edge_iterator;
+ typedef transform_iterator<typename Edge::create, base_out_edge_iterator>
+ out_edge_iterator;
+ typedef transform_iterator<typename Edge::create, base_in_edge_iterator>
+ in_edge_iterator;
+ typedef transform_iterator<typename Vertex::create, base_adjacency_iterator>
+ adjacency_iterator;
+
+ static Vertex null_vertex()
+ {
+ return Vertex(traits::null_vertex(), 0);
+ }
+
+ basic_graph(PyObject* self);
+
+ basic_graph(PyObject* self,
+ boost::python::object,
+ const std::string& name_map = std::string());
+
+ ~basic_graph();
+
+ bool is_directed() const
+ { return is_convertible<directed_category, directed_tag>::value; }
+
+ Vertex add_vertex();
+ void clear_vertex(Vertex vertex);
+ void remove_vertex(Vertex vertex);
+
+ Edge add_edge(Vertex u, Vertex v);
+ void remove_edge(Edge edge);
+
+ std::pair<Edge, bool> edge(Vertex u, Vertex v) const;
+
+ // Property map handling
+ void register_vertex_map(std::auto_ptr<resizable_property_map> map)
+ {
+ vertex_maps.push_back(map.get());
+ map.release();
+ }
+
+ void register_edge_map(std::auto_ptr<resizable_property_map> map)
+ {
+ edge_maps.push_back(map.get());
+ map.release();
+ }
+
+ inherited& base() { return *this; }
+ const inherited& base() const { return *this; }
+
+ boost::python::dict& vertex_properties() { return vertex_properties_; }
+ boost::python::dict& edge_properties() { return edge_properties_; }
+
+ const boost::python::dict& vertex_properties() const
+ { return vertex_properties_; }
+
+ const boost::python::dict& edge_properties() const
+ { return edge_properties_; }
+
+ boost::python::object vertex_type_;
+ boost::python::object edge_type_;
+
+ static boost::python::handle<> py_null_vertex;
+ vector_property_map<boost::python::object, VertexIndexMap> vertex_objects;
+ vector_property_map<boost::python::object, EdgeIndexMap> edge_objects;
+
+ static boost::python::object pyconstruct() { return graph_type(); }
+
+ template<typename InputIterator>
+ static boost::python::object
+ pyconstruct(InputIterator first, InputIterator last, vertices_size_type n)
+ {
+ typedef basic_graph<DirectedS> self_type;
+
+ // Build through Python, so that self-references work
+ boost::python::object result = pyconstruct();
+ self_type& g = boost::python::extract<self_type&>(result)();
+
+ // Initialize vertices
+ std::vector<Vertex> vertices;
+ for (vertices_size_type i = 0; i < n; ++i)
+ vertices.push_back(g.add_vertex());
+
+ // Add edges
+ for (; first != last; ++first)
+ g.add_edge(vertices[first->first], vertices[first->second]);
+
+ return result;
+ }
+
+ // The Python type corresponding to this instance of basic_graph<>
+ static boost::python::object graph_type;
+
+protected:
+ void initialize();
+
+private:
+ // The Python object instance corresponding to this graph instance.
+ PyObject* self;
+
+ /* Mapping from indices to descriptors, which allows us to provide
+ edge and vertex removal while retaining O(1) lookup for external
+ property maps. */
+ std::vector<vertex_descriptor> index_to_vertex;
+ std::vector<edge_descriptor> index_to_edge;
+
+ /* The lists of property maps "attached" to the graph, which will be
+ updated to deal with vertex and edge removals. */
+ std::list<resizable_property_map*> vertex_maps;
+ std::list<resizable_property_map*> edge_maps;
+
+ boost::python::dict vertex_properties_;
+ boost::python::dict edge_properties_;
+};
+
+// Vertex List Graph concept
+template<typename DirectedS>
+inline std::pair<typename basic_graph<DirectedS>::vertex_iterator,
+ typename basic_graph<DirectedS>::vertex_iterator>
+vertices(const basic_graph<DirectedS>& g)
+{
+ typedef typename graph_traits<basic_graph<DirectedS> >::vertex_iterator
+ vertex_iterator;
+ typedef typename graph_traits<basic_graph<DirectedS> >::vertex_descriptor
+ Vertex;
+
+ return std::make_pair(vertex_iterator(vertices(g.base()).first,
+ typename Vertex::create(&g)),
+ vertex_iterator(vertices(g.base()).second,
+ typename Vertex::create(&g)));
+}
+
+template<typename DirectedS>
+inline std::size_t num_vertices(const basic_graph<DirectedS>& g)
+{ return num_vertices(g.base()); }
+
+// Edge List Graph concept
+template<typename DirectedS>
+inline std::pair<typename basic_graph<DirectedS>::edge_iterator,
+ typename basic_graph<DirectedS>::edge_iterator>
+edges(const basic_graph<DirectedS>& g)
+{
+ typedef typename graph_traits<basic_graph<DirectedS> >::edge_iterator
+ edge_iterator;
+ typedef typename graph_traits<basic_graph<DirectedS> >::edge_descriptor Edge;
+
+ return std::make_pair(edge_iterator(edges(g.base()).first,
+ typename Edge::create(&g)),
+ edge_iterator(edges(g.base()).second,
+ typename Edge::create(&g)));
+}
+
+template<typename DirectedS>
+inline std::size_t num_edges(const basic_graph<DirectedS>& g)
+{ return num_edges(g.base()); }
+
+// Incidence Graph concept
+template<typename DirectedS>
+inline typename basic_graph<DirectedS>::vertex_descriptor
+source(typename basic_graph<DirectedS>::edge_descriptor e,
+ const basic_graph<DirectedS>& g)
+{
+ typedef typename graph_traits<basic_graph<DirectedS> >::vertex_descriptor
+ Vertex;
+ return Vertex(source(e.base, g.base()), &g);
+}
+
+template<typename DirectedS>
+inline typename basic_graph<DirectedS>::vertex_descriptor
+target(typename basic_graph<DirectedS>::edge_descriptor e,
+ const basic_graph<DirectedS>& g)
+{
+ typedef typename graph_traits<basic_graph<DirectedS> >::vertex_descriptor
+ Vertex;
+ return Vertex(target(e.base, g.base()), &g);
+}
+
+template<typename DirectedS>
+inline std::pair<typename basic_graph<DirectedS>::out_edge_iterator,
+ typename basic_graph<DirectedS>::out_edge_iterator>
+out_edges(typename basic_graph<DirectedS>::vertex_descriptor u,
+ const basic_graph<DirectedS>& g)
+{
+ typedef typename graph_traits<basic_graph<DirectedS> >::out_edge_iterator
+ out_edge_iterator;
+ typedef typename graph_traits<basic_graph<DirectedS> >::edge_descriptor Edge;
+ return std::make_pair(out_edge_iterator(out_edges(u.base, g.base()).first,
+ typename Edge::create(&g)),
+ out_edge_iterator(out_edges(u.base, g.base()).second,
+ typename Edge::create(&g)));
+}
+
+template<typename DirectedS>
+inline std::size_t
+out_degree(typename basic_graph<DirectedS>::vertex_descriptor u,
+ const basic_graph<DirectedS>& g)
+{ return out_degree(u.base, g.base()); }
+
+// Bidirectional Graph concept
+template<typename DirectedS>
+inline std::pair<typename basic_graph<DirectedS>::in_edge_iterator,
+ typename basic_graph<DirectedS>::in_edge_iterator>
+in_edges(typename basic_graph<DirectedS>::vertex_descriptor u,
+ const basic_graph<DirectedS>& g)
+{
+ typedef typename graph_traits<basic_graph<DirectedS> >::in_edge_iterator
+ in_edge_iterator;
+ typedef typename graph_traits<basic_graph<DirectedS> >::edge_descriptor Edge;
+ return std::make_pair(in_edge_iterator(in_edges(u.base, g.base()).first,
+ typename Edge::create(&g)),
+ in_edge_iterator(in_edges(u.base, g.base()).second,
+ typename Edge::create(&g)));
+}
+
+template<typename DirectedS>
+inline std::size_t
+in_degree(typename basic_graph<DirectedS>::vertex_descriptor u,
+ const basic_graph<DirectedS>& g)
+{ return in_degree(u.base, g.base()); }
+
+// Adjacency Graph concept
+template<typename DirectedS>
+inline std::pair<typename basic_graph<DirectedS>::adjacency_iterator,
+ typename basic_graph<DirectedS>::adjacency_iterator>
+adjacent_vertices(typename basic_graph<DirectedS>::vertex_descriptor u,
+ const basic_graph<DirectedS>& g)
+{
+ typedef typename graph_traits<basic_graph<DirectedS> >::adjacency_iterator
+ adjacency_iterator;
+ typedef typename graph_traits<basic_graph<DirectedS> >::vertex_descriptor
+ Vertex;
+
+ return std::make_pair
+ (adjacency_iterator(adjacent_vertices(u.base, g.base()).first,
+ typename Vertex::create(&g)),
+ adjacency_iterator(adjacent_vertices(u.base, g.base()).second,
+ typename Vertex::create(&g)));
+}
+
+// Mutable basic_graph<DirectedS> concept
+template<typename DirectedS>
+inline typename basic_graph<DirectedS>::vertex_descriptor
+add_vertex(basic_graph<DirectedS>& g)
+{ return g.add_vertex(); }
+
+template<typename DirectedS>
+inline void
+clear_vertex(typename basic_graph<DirectedS>::vertex_descriptor v,
+ basic_graph<DirectedS>& g)
+{ return g.clear_vertex(v); }
+
+template<typename DirectedS>
+inline void
+remove_vertex(typename basic_graph<DirectedS>::vertex_descriptor v,
+ basic_graph<DirectedS>& g)
+{ return g.remove_vertex(v); }
+
+template<typename DirectedS>
+inline std::pair<typename basic_graph<DirectedS>::edge_descriptor, bool>
+add_edge(typename basic_graph<DirectedS>::vertex_descriptor u,
+ typename basic_graph<DirectedS>::vertex_descriptor v,
+ basic_graph<DirectedS>& g)
+{ return std::make_pair(g.add_edge(u, v), true); }
+
+// Adjacency list extras
+template<typename DirectedS>
+inline std::pair<typename basic_graph<DirectedS>::edge_descriptor, bool>
+edge(typename basic_graph<DirectedS>::vertex_descriptor u,
+ typename basic_graph<DirectedS>::vertex_descriptor v,
+ const basic_graph<DirectedS>& g)
+{
+ return g.edge(u, v);
+}
+
+template<typename DirectedS>
+inline void
+remove_edge(typename basic_graph<DirectedS>::edge_descriptor e,
+ basic_graph<DirectedS>& g)
+{ return g.remove_edge(e); }
+
+template<typename DirectedS, typename Predicate>
+struct adapt_edge_predicate
+{
+ explicit adapt_edge_predicate(const Predicate& pred,
+ basic_graph<DirectedS>* graph)
+ : pred(pred), graph(graph) { }
+
+ bool operator()(typename basic_graph<DirectedS>::base_edge_descriptor e)
+ {
+ typedef typename basic_graph<DirectedS>::edge_descriptor Edge;
+ return pred(Edge(e, graph));
+ }
+
+ Predicate pred;
+ basic_graph<DirectedS>* graph;
+};
+
+template<typename DirectedS, typename Predicate>
+void
+remove_out_edge_if(typename basic_graph<DirectedS>::vertex_descriptor u,
+ Predicate pred, basic_graph<DirectedS>& g)
+{
+ remove_out_edge_if(u.base,
+ adapt_edge_predicate<DirectedS, Predicate>(pred, &g),
+ g.base());
+}
+
+template<typename DirectedS>
+void export_basic_graph(const char* name);
+
+template<typename DirectedS>
+typename basic_graph<DirectedS>::VertexIndexMap
+get(vertex_index_t, const basic_graph<DirectedS>& g)
+{ return get(vertex_index, g.base()); }
+
+template<typename DirectedS>
+typename basic_graph<DirectedS>::VertexIndexMap
+get(vertex_index_t, basic_graph<DirectedS>& g)
+{ return get(vertex_index, const_cast<const basic_graph<DirectedS>&>(g).base()); }
+
+template<typename DirectedS>
+typename basic_graph<DirectedS>::EdgeIndexMap
+get(edge_index_t, const basic_graph<DirectedS>& g)
+{ return get(edge_index, g.base()); }
+
+template<typename DirectedS>
+typename basic_graph<DirectedS>::EdgeIndexMap
+get(edge_index_t, basic_graph<DirectedS>& g)
+{ return get(edge_index, const_cast<const basic_graph<DirectedS>&>(g).base()); }
+
+template<typename DirectedS>
+struct graph_pickle_suite : boost::python::pickle_suite
+{
+ typedef basic_graph<DirectedS> Graph;
+ typedef typename Graph::vertex_descriptor Vertex;
+ typedef typename Graph::edge_descriptor Edge;
+
+ static
+ boost::python::tuple
+ getstate(boost::python::object g_obj);
+
+ static
+ void
+ setstate(boost::python::object g_obj, boost::python::tuple state);
+};
+
+extern const char* graph_init_doc;
+extern const char* add_vertex_property_doc;
+extern const char* add_edge_property_doc;
+
+} } } // end namespace boost::graph::python
+
+namespace boost {
+ // Doing the right thing here (by unifying with vertex_index_t and
+ // edge_index_t) breaks GCC.
+ template<typename DirectedS, typename Tag>
+ struct property_map<graph::python::basic_graph<DirectedS>, Tag>
+ {
+ private:
+ typedef typename graph::python::basic_graph<DirectedS>::VertexIndexMap
+ vertex_index_type;
+ typedef typename graph::python::basic_graph<DirectedS>::EdgeIndexMap
+ edge_index_type;
+
+ typedef typename mpl::if_<is_same<Tag, edge_index_t>,
+ edge_index_type,
+ detail::error_property_not_found>::type
+ edge_or_none;
+
+ public:
+ typedef typename mpl::if_<is_same<Tag, vertex_index_t>,
+ vertex_index_type,
+ edge_or_none>::type type;
+
+ typedef type const_type;
+ };
+
+ template<typename DirectedS, typename Tag>
+ struct property_map<const graph::python::basic_graph<DirectedS>, Tag>
+ {
+ private:
+ typedef typename graph::python::basic_graph<DirectedS>::VertexIndexMap
+ vertex_index_type;
+ typedef typename graph::python::basic_graph<DirectedS>::EdgeIndexMap
+ edge_index_type;
+
+ typedef typename mpl::if_<is_same<Tag, edge_index_t>,
+ edge_index_type,
+ detail::error_property_not_found>::type
+ edge_or_none;
+
+ public:
+ typedef typename mpl::if_<is_same<Tag, vertex_index_t>,
+ vertex_index_type,
+ edge_or_none>::type type;
+
+ typedef type const_type;
+ };
+
+}
+
+#endif // BOOST_GRAPH_BASIC_GRAPH_HPP

Added: sandbox/SOC/2008/BGL_Python/src/bellman_ford_shortest_paths.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/bellman_ford_shortest_paths.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,117 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#include <boost/graph/bellman_ford_shortest_paths.hpp>
+#include "graph_types.hpp"
+#include <boost/python.hpp>
+#include <boost/graph/iteration_macros.hpp>
+
+namespace boost { namespace graph { namespace python {
+
+#define BGL_PYTHON_VISITOR maybe_bellman_ford_visitor
+#define BGL_PYTHON_EVENTS_HEADER <boost/graph/python/bellman_ford_events.hpp>
+#include <boost/graph/python/visitor.hpp>
+#undef BGL_PYTHON_EVENTS_HEADER
+#undef BGL_PYTHON_VISITOR
+
+template<typename Graph>
+void
+bellman_ford_shortest_paths
+ (const Graph& g,
+ typename graph_traits<Graph>::vertex_descriptor s,
+ vector_property_map<
+ typename graph_traits<Graph>::vertex_descriptor,
+ typename property_map<Graph, vertex_index_t>::const_type>* in_predecessor,
+ vector_property_map<
+ float,
+ typename property_map<Graph, vertex_index_t>::const_type>* in_distance,
+ vector_property_map<
+ float,
+ typename property_map<Graph, edge_index_t>::const_type>* in_weight,
+ boost::python::object in_visitor)
+{
+ using boost::python::object;
+
+ typedef typename property_map<Graph, vertex_index_t>::const_type
+ VertexIndexMap;
+ typedef typename graph_traits<Graph>::vertex_descriptor Vertex;
+ typedef vector_property_map<Vertex, VertexIndexMap> PredecessorMap;
+ typedef vector_property_map<float, VertexIndexMap> DistanceMap;
+ typedef typename property_map<Graph, edge_index_t>::const_type
+ EdgeIndexMap;
+ typedef vector_property_map<float, EdgeIndexMap> WeightMap;
+
+ PredecessorMap predecessor =
+ in_predecessor? *in_predecessor
+ : PredecessorMap(num_vertices(g), get(vertex_index, g));
+
+ DistanceMap distance =
+ in_distance? *in_distance
+ : DistanceMap(num_vertices(g), get(vertex_index, g));
+
+ WeightMap weight =
+ in_weight? *in_weight
+ : WeightMap(num_edges(g), get(edge_index, g));
+
+ // If no weight map was provided, initialize every weight with 1.0
+ if (!in_weight) {
+ BGL_FORALL_EDGES_T(e, g, Graph)
+ put(weight, e, 1.0f);
+ }
+
+ if (in_visitor != object()) {
+ boost::bellman_ford_shortest_paths
+ (g,
+ root_vertex(s).
+ visitor(maybe_bellman_ford_visitor(in_visitor)).
+ predecessor_map(predecessor).
+ distance_map(distance).
+ weight_map(weight));
+ } else {
+ boost::bellman_ford_shortest_paths
+ (g,
+ root_vertex(s).
+ predecessor_map(predecessor).
+ distance_map(distance).
+ weight_map(weight));
+ }
+}
+
+void export_bellman_ford_shortest_paths()
+{
+ using boost::python::arg;
+ using boost::python::def;
+ using boost::python::object;
+
+#define UNDIRECTED_GRAPH(Name,Type) \
+ { \
+ typedef graph_traits<Type>::vertex_descriptor vertex_descriptor; \
+ typedef property_map<Type, vertex_index_t>::const_type VertexIndexMap; \
+ typedef property_map<Type, edge_index_t>::const_type EdgeIndexMap; \
+ typedef vector_property_map<vertex_descriptor, VertexIndexMap> \
+ VertexPredecessorMap; \
+ typedef vector_property_map<float, VertexIndexMap> \
+ VertexDistanceMap; \
+ typedef vector_property_map<default_color_type, VertexIndexMap> \
+ VertexColorMap; \
+ typedef vector_property_map<float, EdgeIndexMap> \
+ EdgeWeightMap; \
+ \
+ def("bellman_ford_shortest_paths", \
+ &boost::graph::python::bellman_ford_shortest_paths<Type>, \
+ (arg("graph"), \
+ arg("root_vertex"), \
+ arg("predecessor_map") = static_cast<VertexPredecessorMap*>(0), \
+ arg("distance_map") = static_cast<VertexDistanceMap*>(0), \
+ arg("weight_map") = static_cast<EdgeWeightMap*>(0), \
+ arg("visitor") = object())); \
+ }
+#include "graphs.hpp"
+}
+
+} } } // end namespace boost::graph::python

Added: sandbox/SOC/2008/BGL_Python/src/betweenness_centrality.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/betweenness_centrality.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,156 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#include "graph_types.hpp"
+#include <boost/graph/betweenness_centrality.hpp>
+#include <boost/graph/bc_clustering.hpp>
+
+namespace boost { namespace graph { namespace python {
+
+template<typename Graph>
+void
+brandes_betweenness_centrality
+ (const Graph& g,
+ vector_property_map<
+ float,
+ typename property_map<Graph, vertex_index_t>::const_type
+ >* in_vertex_centrality,
+ vector_property_map<
+ float,
+ typename property_map<Graph, edge_index_t>::const_type
+ >* in_edge_centrality,
+ vector_property_map<
+ float,
+ typename property_map<Graph, edge_index_t>::const_type>* weight)
+{
+ typedef vector_property_map<
+ float, typename property_map<Graph, vertex_index_t>::const_type>
+ VertexCentralityMap;
+
+ typedef vector_property_map<
+ float, typename property_map<Graph, edge_index_t>::const_type>
+ EdgeCentralityMap;
+
+ VertexCentralityMap vertex_centrality =
+ in_vertex_centrality? *in_vertex_centrality
+ : VertexCentralityMap(num_vertices(g), get(vertex_index, g));
+
+ EdgeCentralityMap edge_centrality =
+ in_edge_centrality? *in_edge_centrality
+ : EdgeCentralityMap(num_edges(g), get(edge_index, g));
+
+ if (weight) {
+ boost::brandes_betweenness_centrality
+ (g,
+ weight_map(*weight).
+ centrality_map(vertex_centrality).
+ edge_centrality_map(edge_centrality));
+ } else {
+ boost::brandes_betweenness_centrality
+ (g,
+ centrality_map(vertex_centrality).
+ edge_centrality_map(edge_centrality));
+ }
+}
+
+template<typename Graph>
+void
+relative_betweenness_centrality
+ (const Graph& g,
+ vector_property_map<
+ float,
+ typename property_map<Graph, vertex_index_t>::const_type>& centrality)
+{
+ relative_betweenness_centrality(g, centrality);
+}
+
+template<typename Graph>
+float
+central_point_dominance
+ (const Graph& g,
+ vector_property_map<
+ float,
+ typename property_map<Graph, vertex_index_t>::const_type>& centrality)
+{
+ return boost::central_point_dominance(g, centrality);
+}
+
+struct bc_clustering_done_python
+{
+ explicit bc_clustering_done_python(boost::python::object done)
+ : done(done) { }
+
+ template<typename Graph>
+ bool
+ operator()(float max_centrality,
+ typename graph_traits<Graph>::edge_descriptor e,
+ const Graph& g)
+ {
+ using boost::python::extract;
+ return extract<bool>(done(max_centrality, e, ref(g)));
+ }
+
+private:
+ boost::python::object done;
+};
+
+template<typename Graph>
+void
+betweenness_centrality_clustering
+ (Graph& g, boost::python::object done,
+ vector_property_map<
+ float,
+ typename property_map<Graph, edge_index_t>::const_type
+ >* in_edge_centrality)
+{
+ typedef vector_property_map<
+ float, typename property_map<Graph, edge_index_t>::const_type>
+ EdgeCentralityMap;
+
+ EdgeCentralityMap edge_centrality =
+ in_edge_centrality? *in_edge_centrality
+ : EdgeCentralityMap(num_edges(g), get(edge_index, g));
+
+ boost::betweenness_centrality_clustering(g,
+ bc_clustering_done_python(done),
+ edge_centrality);
+}
+
+void export_betweenness_centrality()
+{
+ using boost::python::arg;
+ using boost::python::def;
+
+#define UNDIRECTED_GRAPH(Name,Type) \
+ { \
+ typedef property_map<Type, vertex_index_t>::const_type VertexIndexMap; \
+ typedef property_map<Type, edge_index_t>::const_type EdgeIndexMap; \
+ typedef vector_property_map<float, VertexIndexMap> VertexCentralityMap; \
+ typedef vector_property_map<float, EdgeIndexMap> EdgeCentralityMap; \
+ \
+ def("brandes_betweenness_centrality", \
+ &brandes_betweenness_centrality<Type>, \
+ (arg("graph"), \
+ arg("vertex_centrality_map") = static_cast<VertexCentralityMap*>(0), \
+ arg("edge_centrality_map") = static_cast<EdgeCentralityMap*>(0), \
+ arg("weight_map") = static_cast<EdgeCentralityMap*>(0))); \
+ def("relative_betweenness_centrality", \
+ &relative_betweenness_centrality<Type>, \
+ (arg("graph"), arg("vertex_centrality_map"))); \
+ def("central_point_dominance", \
+ &central_point_dominance<Type>, \
+ (arg("graph"), arg("vertex_centrality_map"))); \
+ def("betweenness_centrality_clustering", \
+ &betweenness_centrality_clustering<Type>, \
+ (arg("graph"), arg("done"), \
+ arg("edge_centrality_map") = static_cast<EdgeCentralityMap*>(0))); \
+ }
+#include "graphs.hpp"
+}
+
+} } } // end namespace boost::graph::python

Added: sandbox/SOC/2008/BGL_Python/src/biconnected_components.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/biconnected_components.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,100 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#include <boost/graph/biconnected_components.hpp>
+#include "graph_types.hpp"
+#include <boost/graph/filtered_graph.hpp>
+#include <boost/python.hpp>
+#include <list>
+#include <iterator>
+
+namespace boost { namespace graph { namespace python {
+
+using boost::python::list;
+
+template<typename EdgeHiddenMap>
+struct edge_not_hidden_t {
+ typedef bool result_type;
+ typedef typename property_traits<EdgeHiddenMap>::key_type argument_type;
+
+ edge_not_hidden_t() {}
+ edge_not_hidden_t(const EdgeHiddenMap& edge_hidden)
+ : edge_hidden(edge_hidden) { }
+
+
+ bool operator()(argument_type edge) const
+ {
+ return !get(edge_hidden, edge);
+ }
+
+ EdgeHiddenMap edge_hidden;
+};
+
+template<typename EdgeHiddenMap>
+inline edge_not_hidden_t<EdgeHiddenMap>
+edge_not_hidden(const EdgeHiddenMap& edge_hidden)
+{
+ return edge_not_hidden_t<EdgeHiddenMap>(edge_hidden);
+}
+
+template<typename Graph>
+list
+biconnected_components
+ (const Graph& g,
+ vector_property_map<
+ int,
+ typename property_map<Graph, edge_index_t>::const_type>* in_component,
+ vector_property_map<
+ int,
+ typename property_map<Graph, edge_index_t>::const_type>* edge_hidden)
+{
+ typedef vector_property_map<
+ int,
+ typename property_map<Graph, edge_index_t>::const_type>
+ ComponentMap;
+
+ ComponentMap component =
+ in_component? *in_component
+ : ComponentMap(num_edges(g), get(edge_index, g));
+
+ std::list<typename Graph::Vertex> art_points;
+
+ if (edge_hidden)
+ boost::biconnected_components
+ (make_filtered_graph(g, edge_not_hidden(*edge_hidden)),
+ component, std::back_inserter(art_points));
+ else
+ boost::biconnected_components(g, component, std::back_inserter(art_points));
+ boost::python::list result;
+ for (typename std::list<typename Graph::Vertex>::iterator i
+ = art_points.begin(); i != art_points.end(); ++i)
+ result.append(*i);
+ return result;
+}
+
+void export_biconnected_components()
+{
+ using boost::python::arg;
+ using boost::python::def;
+
+#define UNDIRECTED_GRAPH(Name,Type) \
+ { \
+ typedef vector_property_map<int, \
+ property_map<Type, edge_index_t>::const_type> \
+ ComponentMap; \
+ \
+ def("biconnected_components", &biconnected_components<Type>, \
+ (arg("graph"), \
+ arg("component_map") = static_cast<ComponentMap*>(0), \
+ arg("edge_hidden_map") = static_cast<ComponentMap*>(0))); \
+ }
+#define DIRECTED_GRAPH(Name,Type)
+#include "graphs.hpp"
+}
+
+} } } // end namespace boost::graph::python

Added: sandbox/SOC/2008/BGL_Python/src/breadth_first_search.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/breadth_first_search.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,77 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#include "graph_types.hpp"
+#include <boost/graph/python/breadth_first_search.hpp>
+
+namespace boost { namespace graph { namespace python {
+
+template<typename Graph>
+void
+breadth_first_visit
+ (const Graph& g,
+ typename graph_traits<Graph>::vertex_descriptor s,
+ object in_Q,
+ object in_visitor,
+ vector_property_map<
+ default_color_type,
+ typename property_map<Graph, vertex_index_t>::const_type>* in_color)
+{
+ typedef typename graph_traits<Graph>::vertex_descriptor vertex_descriptor;
+
+ typedef vector_property_map<
+ default_color_type,
+ typename property_map<Graph, vertex_index_t>::const_type>
+ ColorMap;
+
+ ColorMap color(in_color? *in_color
+ /*default*/: ColorMap(num_vertices(g), get(vertex_index, g)));
+
+ bool has_default_queue = in_Q == object();
+ if (!has_default_queue || in_visitor != object()) {
+ typedef queue<vertex_descriptor> Queue;
+ maybe_python_queue<Queue> Q(in_Q, Queue());
+ maybe_bfs_visitor vis(in_visitor);
+ boost::breadth_first_visit(g, s, color_map(color).visitor(vis).buffer(Q));
+ } else {
+ boost::breadth_first_visit(g, s, color_map(color));
+ }
+}
+
+void export_breadth_first_search()
+{
+ using boost::python::arg;
+ using boost::python::def;
+ using boost::python::object;
+
+#define UNDIRECTED_GRAPH(Name,Type) \
+ { \
+ typedef property_map< Type , vertex_index_t>::const_type VertexIndexMap; \
+ typedef vector_property_map<default_color_type, VertexIndexMap> \
+ VertexColorMap; \
+ \
+ def("breadth_first_search", \
+ &boost::graph::python::breadth_first_search< Type >, \
+ (arg("graph"), \
+ arg("root_vertex"), \
+ arg("buffer") = object(), \
+ arg("visitor") = object(), \
+ arg("color_map") = static_cast<VertexColorMap*>(0))); \
+ def("breadth_first_visit", \
+ &boost::graph::python::breadth_first_visit< Type >, \
+ (arg("graph"), \
+ arg("root_vertex"), \
+ arg("buffer") = object(), \
+ arg("visitor") = object(), \
+ arg("color_map") = static_cast<VertexColorMap*>(0))); \
+ }
+#include "graphs.hpp"
+}
+
+
+} } } // end namespace boost::graph::python

Added: sandbox/SOC/2008/BGL_Python/src/circle_layout.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/circle_layout.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,39 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#include <boost/graph/circle_layout.hpp>
+#include "graph_types.hpp"
+#include <boost/graph/python/point2d.hpp>
+
+namespace boost { namespace graph { namespace python {
+
+template<typename Graph>
+void
+circle_graph_layout
+ (const Graph& g,
+ vector_property_map<
+ point2d,
+ typename property_map<Graph, vertex_index_t>::const_type>& position,
+ float radius)
+{
+ boost::circle_graph_layout(g, position, radius);
+}
+
+void export_circle_graph_layout()
+{
+ using boost::python::arg;
+ using boost::python::def;
+
+#define UNDIRECTED_GRAPH(Name,Type) \
+ def("circle_graph_layout", \
+ &circle_graph_layout<Type>, \
+ (arg("graph"), arg("position_map"), arg("radius") = 0.5));
+#include "graphs.hpp"
+}
+
+} } } // end namespace boost::graph::python

Added: sandbox/SOC/2008/BGL_Python/src/connected_components.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/connected_components.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,34 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#include "graph_types.hpp"
+#include <boost/graph/python/connected_components.hpp>
+
+namespace boost { namespace graph { namespace python {
+
+void export_connected_components()
+{
+ using boost::python::arg;
+ using boost::python::def;
+
+#define UNDIRECTED_GRAPH(Name,Type) \
+ { \
+ typedef property_map<Type, vertex_index_t>::const_type VertexIndexMap; \
+ typedef vector_property_map<int, VertexIndexMap> \
+ VertexColorMap; \
+ \
+ def("connected_components", \
+ &boost::graph::python::connected_components<Type>, \
+ (arg("graph"), \
+ arg("color_map") = static_cast<VertexColorMap*>(0))); \
+ }
+#define DIRECTED_GRAPH(Name,Type)
+#include "graphs.hpp"
+}
+
+} } } // end namespace boost::graph::python

Added: sandbox/SOC/2008/BGL_Python/src/cuthill_mckee_ordering.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/cuthill_mckee_ordering.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,33 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+
+#include <boost/graph/cuthill_mckee_ordering.hpp>
+#include "graph_types.hpp"
+#include <boost/python.hpp>
+#include <boost/graph/python/list_append_iterator.hpp>
+
+namespace boost { namespace graph { namespace python {
+
+template<typename Graph>
+boost::python::list
+cuthill_mckee_ordering(const Graph& g)
+{
+ boost::python::list result;
+ boost::cuthill_mckee_ordering(g, list_append_iterator(result));
+ return result;
+}
+
+void export_cuthill_mckee_ordering()
+{
+ using boost::python::arg;
+ using boost::python::def;
+ def("cuthill_mckee_ordering", &cuthill_mckee_ordering<Graph>, arg("graph"));
+}
+
+} } } // end namespace boost::graph::python

Added: sandbox/SOC/2008/BGL_Python/src/dag_shortest_paths.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/dag_shortest_paths.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,109 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#include <boost/graph/dag_shortest_paths.hpp>
+#include "graph_types.hpp"
+#include <boost/python.hpp>
+#include <boost/graph/python/dijkstra_shortest_paths.hpp>
+#include <boost/graph/iteration_macros.hpp>
+
+namespace boost { namespace graph { namespace python {
+
+using boost::python::object;
+
+template<typename Graph>
+void
+dag_shortest_paths
+ (const Graph& g,
+ typename graph_traits<Graph>::vertex_descriptor s,
+ vector_property_map<
+ typename graph_traits<Graph>::vertex_descriptor,
+ typename property_map<Graph, vertex_index_t>::const_type>* in_predecessor,
+ vector_property_map<
+ float,
+ typename property_map<Graph, vertex_index_t>::const_type>* in_distance,
+ vector_property_map<
+ float,
+ typename property_map<Graph, edge_index_t>::const_type>* in_weight,
+ object in_visitor)
+{
+ typedef typename property_map<Graph, vertex_index_t>::const_type
+ VertexIndexMap;
+ typedef typename graph_traits<Graph>::vertex_descriptor Vertex;
+ typedef vector_property_map<Vertex, VertexIndexMap> PredecessorMap;
+ typedef vector_property_map<float, VertexIndexMap> DistanceMap;
+ typedef typename property_map<Graph, edge_index_t>::const_type
+ EdgeIndexMap;
+ typedef vector_property_map<float, EdgeIndexMap> WeightMap;
+
+ PredecessorMap predecessor =
+ in_predecessor? *in_predecessor
+ : PredecessorMap(num_vertices(g), get(vertex_index, g));
+
+ DistanceMap distance =
+ in_distance? *in_distance
+ : DistanceMap(num_vertices(g), get(vertex_index, g));
+
+ WeightMap weight =
+ in_weight? *in_weight
+ : WeightMap(num_edges(g), get(edge_index, g));
+
+ // If no weight map was provided, initialize every weight with 1.0
+ if (!in_weight) {
+ BGL_FORALL_EDGES_T(e, g, Graph)
+ put(weight, e, 1.0f);
+ }
+
+ if (in_visitor != object()) {
+ boost::dag_shortest_paths
+ (g, s,
+ visitor(maybe_dijkstra_visitor(in_visitor)).
+ predecessor_map(predecessor).
+ distance_map(distance).
+ weight_map(weight));
+ } else {
+ boost::dag_shortest_paths
+ (g, s,
+ predecessor_map(predecessor).
+ distance_map(distance).
+ weight_map(weight));
+ }
+}
+
+void export_dag_shortest_paths()
+{
+ using boost::python::arg;
+ using boost::python::def;
+ using boost::python::object;
+
+#define UNDIRECTED_GRAPH(Name,Type) \
+ { \
+ typedef graph_traits<Type>::vertex_descriptor vertex_descriptor; \
+ typedef property_map<Type, vertex_index_t>::const_type VertexIndexMap; \
+ typedef property_map<Type, edge_index_t>::const_type EdgeIndexMap; \
+ typedef vector_property_map<vertex_descriptor, VertexIndexMap> \
+ VertexPredecessorMap; \
+ typedef vector_property_map<float, VertexIndexMap> \
+ VertexDistanceMap; \
+ typedef vector_property_map<float, EdgeIndexMap> \
+ EdgeWeightMap; \
+ \
+ def("dag_shortest_paths", \
+ &dag_shortest_paths<Type>, \
+ (arg("graph"), \
+ arg("root_vertex"), \
+ arg("predecessor_map") = static_cast<VertexPredecessorMap*>(0), \
+ arg("distance_map") = static_cast<VertexDistanceMap*>(0), \
+ arg("weight_map") = static_cast<EdgeWeightMap*>(0), \
+ arg("visitor") = object())); \
+ }
+#include "graphs.hpp"
+}
+
+
+} } } // end namespace boost::graph::python

Added: sandbox/SOC/2008/BGL_Python/src/depth_first_search.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/depth_first_search.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,159 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#include <boost/graph/depth_first_search.hpp>
+#include <boost/graph/undirected_dfs.hpp>
+#include "graph_types.hpp"
+#include <boost/python.hpp>
+
+namespace boost { namespace graph { namespace python {
+
+#define BGL_PYTHON_VISITOR maybe_dfs_visitor
+#define BGL_PYTHON_EVENTS_HEADER <boost/graph/python/dfs_events.hpp>
+#include <boost/graph/python/visitor.hpp>
+#undef BGL_PYTHON_EVENTS_HEADER
+#undef BGL_PYTHON_VISITOR
+
+using boost::python::object;
+
+template<typename Graph>
+void
+depth_first_search
+ (const Graph& g,
+ typename graph_traits<Graph>::vertex_descriptor s,
+ object in_visitor,
+ vector_property_map<
+ default_color_type,
+ typename property_map<Graph, vertex_index_t>::const_type>* in_color)
+{
+ typedef vector_property_map<
+ default_color_type,
+ typename property_map<Graph, vertex_index_t>::const_type>
+ ColorMap;
+
+ ColorMap color =
+ in_color? *in_color : ColorMap(num_vertices(g), get(vertex_index, g));
+
+ if (s == graph_traits<Graph>::null_vertex() && num_vertices(g) > 0)
+ s = *vertices(g).first;
+
+ if (in_visitor != object()) {
+ boost::depth_first_search(g, maybe_dfs_visitor(in_visitor), color, s);
+ } else {
+ boost::depth_first_search(g, boost::dfs_visitor<>(), color, s);
+ }
+}
+
+template<typename Graph>
+void
+depth_first_visit
+ (const Graph& g,
+ typename graph_traits<Graph>::vertex_descriptor s,
+ object in_visitor,
+ vector_property_map<
+ default_color_type,
+ typename property_map<Graph, vertex_index_t>::const_type>* in_color)
+{
+ typedef vector_property_map<
+ default_color_type,
+ typename property_map<Graph, vertex_index_t>::const_type>
+ ColorMap;
+
+ ColorMap color =
+ in_color? *in_color : ColorMap(num_vertices(g), get(vertex_index, g));
+
+ if (s == graph_traits<Graph>::null_vertex() && num_vertices(g) > 0)
+ s = *vertices(g).first;
+
+ if (in_visitor != object()) {
+ boost::depth_first_visit(g, s, maybe_dfs_visitor(in_visitor), color);
+ } else {
+ boost::depth_first_visit(g, s, boost::dfs_visitor<>(), color);
+ }
+}
+
+template<typename Graph>
+void
+undirected_dfs
+ (const Graph& g,
+ object in_visitor,
+ vector_property_map<
+ default_color_type,
+ typename property_map<Graph, vertex_index_t>::const_type>* in_color,
+ vector_property_map<
+ default_color_type,
+ typename property_map<Graph, edge_index_t>::const_type>* in_edge_color)
+{
+ typedef vector_property_map<
+ default_color_type,
+ typename property_map<Graph, vertex_index_t>::const_type>
+ ColorMap;
+
+ ColorMap color =
+ in_color? *in_color : ColorMap(num_vertices(g), get(vertex_index, g));
+
+ typedef vector_property_map<
+ default_color_type,
+ typename property_map<Graph, edge_index_t>::const_type>
+ EdgeColorMap;
+
+ EdgeColorMap edge_color =
+ in_edge_color? *in_edge_color
+ : EdgeColorMap(num_edges(g), get(edge_index, g));
+
+ if (in_visitor != object()) {
+ boost::undirected_dfs(g, maybe_dfs_visitor(in_visitor), color, edge_color);
+ } else {
+ boost::undirected_dfs(g, boost::dfs_visitor<>(), color, edge_color);
+ }
+}
+
+void export_depth_first_search()
+{
+ using boost::python::arg;
+ using boost::python::def;
+
+#define UNDIRECTED_GRAPH(Name,Type) \
+ DIRECTED_GRAPH(Name,Type) \
+ { \
+ typedef vector_property_map< \
+ default_color_type, \
+ property_map<Type, vertex_index_t>::const_type> ColorMap; \
+ typedef vector_property_map< \
+ default_color_type, \
+ property_map<Type, edge_index_t>::const_type> EdgeColorMap; \
+ \
+ def("undirected_dfs", &undirected_dfs<Type>, \
+ (arg("graph"), \
+ arg("visitor") = object(), \
+ arg("color_map") = static_cast<ColorMap*>(0), \
+ arg("edge_color_map") = static_cast<EdgeColorMap*>(0))); \
+ }
+
+#define DIRECTED_GRAPH(Name,Type) \
+ { \
+ typedef vector_property_map< \
+ default_color_type, \
+ property_map<Type, vertex_index_t>::const_type> ColorMap; \
+ \
+ def("depth_first_search", &depth_first_search<Type>, \
+ (arg("graph"), \
+ arg("root_vertex") = graph_traits<Type>::null_vertex(), \
+ arg("visitor") = object(), \
+ arg("color_map") = static_cast<ColorMap*>(0))); \
+ \
+ def("depth_first_visit", &depth_first_visit<Type>, \
+ (arg("graph"), \
+ arg("root_vertex"), \
+ arg("visitor") = object(), \
+ arg("color_map") = static_cast<ColorMap*>(0))); \
+ }
+#include "graphs.hpp"
+}
+
+} } } // end namespace boost::graph::python

Added: sandbox/SOC/2008/BGL_Python/src/dijkstra_shortest_paths.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/dijkstra_shortest_paths.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,47 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#include "graph_types.hpp"
+#include <boost/graph/python/dijkstra_shortest_paths.hpp>
+
+namespace boost { namespace graph { namespace python {
+
+void export_dijkstra_shortest_paths()
+{
+ using boost::python::arg;
+ using boost::python::def;
+ using boost::python::object;
+
+#define UNDIRECTED_GRAPH(Name,Type) \
+ { \
+ typedef graph_traits<Type>::vertex_descriptor vertex_descriptor; \
+ typedef property_map<Type, vertex_index_t>::const_type VertexIndexMap; \
+ typedef property_map<Type, edge_index_t>::const_type EdgeIndexMap; \
+ typedef vector_property_map<vertex_descriptor, VertexIndexMap> \
+ VertexPredecessorMap; \
+ typedef vector_property_map<float, VertexIndexMap> \
+ VertexDistanceMap; \
+ typedef vector_property_map<default_color_type, VertexIndexMap> \
+ VertexColorMap; \
+ typedef vector_property_map<float, EdgeIndexMap> EdgeWeightMap; \
+ \
+ def("dijkstra_shortest_paths", \
+ &boost::graph::python::dijkstra_shortest_paths<Type>, \
+ (arg("graph"), \
+ arg("root_vertex"), \
+ arg("predecessor_map") = static_cast<VertexPredecessorMap*>(0), \
+ arg("distance_map") = static_cast<VertexDistanceMap*>(0), \
+ arg("weight_map") = static_cast<EdgeWeightMap*>(0), \
+ arg("visitor") = object(), \
+ arg("color_map") = static_cast<VertexColorMap*>(0))); \
+ }
+#include "graphs.hpp"
+}
+
+
+} } } // end namespace boost::graph::python

Added: sandbox/SOC/2008/BGL_Python/src/directed_properties.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/directed_properties.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,15 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+
+// This file instantiates everything for property maps on directed graphs.
+// It is a separate translation unit from properties.cpp to avoid crashing
+// Visual C++ 7.1.
+
+#define DIRECTED_PROPERTIES_ONLY
+#include "properties.cpp"

Added: sandbox/SOC/2008/BGL_Python/src/distributed/boman_et_al_graph_coloring.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/distributed/boman_et_al_graph_coloring.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,37 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#include "config.hpp"
+#include "graph_types.hpp"
+#include <boost/parallel/property_map.hpp>
+#include <boost/graph/python/distributed/boman_et_al_graph_coloring.hpp>
+
+namespace boost { namespace graph { namespace distributed { namespace python {
+
+void export_boman_et_al_graph_coloring()
+{
+ using boost::python::arg;
+ using boost::python::def;
+
+#define UNDIRECTED_GRAPH(Name,Type) \
+ { \
+ typedef property_map<Type, vertex_index_t>::const_type VertexIndexMap; \
+ typedef vector_property_map<int, VertexIndexMap> \
+ VertexColorMap; \
+ \
+ def("boman_et_al_graph_coloring", \
+ &boost::graph::python::distributed::boman_et_al_graph_coloring<Type>, \
+ (arg("graph"), \
+ arg("color_map") = static_cast<VertexColorMap*>(0), \
+ arg("chunk_size") = 100)); \
+ }
+#define DIRECTED_GRAPH(Name,Type)
+#include "graphs.hpp"
+}
+
+} } } } // end namespace boost::graph::distributed::python

Added: sandbox/SOC/2008/BGL_Python/src/distributed/breadth_first_search.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/distributed/breadth_first_search.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,39 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#include "config.hpp"
+#include "graph_types.hpp"
+#include <boost/parallel/property_map.hpp>
+#include <boost/graph/python/distributed/breadth_first_search.hpp>
+
+namespace boost { namespace graph { namespace distributed { namespace python {
+
+void export_breadth_first_search()
+{
+ using boost::python::arg;
+ using boost::python::def;
+ using boost::python::object;
+
+#define UNDIRECTED_GRAPH(Name,Type) \
+ { \
+ typedef property_map< Type , vertex_index_t>::const_type VertexIndexMap; \
+ typedef vector_property_map<default_color_type, VertexIndexMap> \
+ VertexColorMap; \
+ \
+ def("breadth_first_search", \
+ &boost::graph::python::distributed::breadth_first_search< Type >, \
+ (arg("graph"), \
+ arg("root_vertex"), \
+ arg("visitor") = object(), \
+ arg("color_map") = static_cast<VertexColorMap*>(0))); \
+ }
+#include "graphs.hpp"
+}
+
+
+} } } } // end namespace boost::graph::distributed::python

Added: sandbox/SOC/2008/BGL_Python/src/distributed/config.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/distributed/config.hpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,21 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+
+// This is a configuration file for the Python bindings to the
+// Parallel BGL. Any settings that would usually be reserved for users
+// (e.g., which process group to use) but should be fixed for a Python
+// module will be contained here.
+
+#include <boost/parallel/mpi/bsp_process_group.hpp>
+
+namespace boost { namespace graph { namespace distributed {namespace python {
+
+typedef boost::parallel::mpi::bsp_process_group process_group_type;
+
+} } } } // end namespace boost::graph::distributed::python

Added: sandbox/SOC/2008/BGL_Python/src/distributed/connected_components.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/distributed/connected_components.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,36 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#include "config.hpp"
+#include "graph_types.hpp"
+#include <boost/parallel/property_map.hpp>
+#include <boost/graph/python/connected_components.hpp>
+
+namespace boost { namespace graph { namespace distributed { namespace python {
+
+void export_connected_components()
+{
+ using boost::python::arg;
+ using boost::python::def;
+
+#define UNDIRECTED_GRAPH(Name,Type) \
+ { \
+ typedef property_map<Type, vertex_index_t>::const_type VertexIndexMap; \
+ typedef vector_property_map<int, VertexIndexMap> \
+ VertexColorMap; \
+ \
+ def("connected_components", \
+ &boost::graph::python::connected_components<Type>, \
+ (arg("graph"), \
+ arg("color_map") = static_cast<VertexColorMap*>(0))); \
+ }
+#define DIRECTED_GRAPH(Name,Type)
+#include "graphs.hpp"
+}
+
+} } } } // end namespace boost::graph::distributed::python

Added: sandbox/SOC/2008/BGL_Python/src/distributed/dehne_gotz_min_spanning_tree.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/distributed/dehne_gotz_min_spanning_tree.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,46 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#include "config.hpp"
+#include "graph_types.hpp"
+#include <boost/parallel/property_map.hpp>
+#include <boost/graph/python/distributed/dehne_gotz_min_spanning_tree.hpp>
+
+namespace boost { namespace graph { namespace distributed { namespace python {
+
+void export_dehne_gotz_min_spanning_tree()
+{
+ using boost::python::arg;
+ using boost::python::def;
+
+ using boost::graph::python::distributed::dense_boruvka_minimum_spanning_tree;
+ using boost::graph::python::distributed::merge_local_minimum_spanning_trees;
+ using boost::graph::python::distributed::boruvka_then_merge;
+ using boost::graph::python::distributed::boruvka_mixed_merge;
+
+#define UNDIRECTED_GRAPH(Name,Type) \
+ def("dense_boruvka_minimum_spanning_tree", \
+ &dense_boruvka_minimum_spanning_tree<Type>, \
+ (arg("graph"), arg("weight_map"))); \
+ \
+ def("merge_local_minimum_spanning_trees", \
+ &merge_local_minimum_spanning_trees<Type>, \
+ (arg("graph"), arg("weight_map"))); \
+ \
+ def("boruvka_then_merge", \
+ &boruvka_then_merge<Type>, \
+ (arg("graph"), arg("weight_map"))); \
+ \
+ def("boruvka_mixed_merge", \
+ &boruvka_mixed_merge<Type>, \
+ (arg("graph"), arg("weight_map")));
+#define DIRECTED_GRAPH(Name,Type)
+#include "graphs.hpp"
+}
+
+} } } } // end namespace boost::graph::distributed::python

Added: sandbox/SOC/2008/BGL_Python/src/distributed/dijkstra_shortest_paths.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/distributed/dijkstra_shortest_paths.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,48 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#include "config.hpp"
+#include "graph_types.hpp"
+#include <boost/parallel/property_map.hpp>
+#include <boost/graph/python/distributed/dijkstra_shortest_paths.hpp>
+
+namespace boost { namespace graph { namespace distributed { namespace python {
+
+void export_dijkstra_shortest_paths()
+{
+ using boost::python::arg;
+ using boost::python::def;
+ using boost::python::object;
+
+#define UNDIRECTED_GRAPH(Name,Type) \
+ { \
+ typedef graph_traits<Type>::vertex_descriptor vertex_descriptor; \
+ typedef property_map<Type, vertex_index_t>::const_type VertexIndexMap; \
+ typedef vector_property_map<vertex_descriptor, VertexIndexMap> \
+ VertexPredecessorMap; \
+ typedef vector_property_map<float, VertexIndexMap> \
+ VertexDistanceMap; \
+ typedef vector_property_map<default_color_type, VertexIndexMap> \
+ VertexColorMap; \
+ \
+ def("dijkstra_shortest_paths", \
+ &boost::graph::python::distributed::dijkstra_shortest_paths<Type>, \
+ (arg("graph"), \
+ arg("root_vertex"), \
+ arg("predecessor_map") = static_cast<VertexPredecessorMap*>(0), \
+ arg("distance_map") = static_cast<VertexDistanceMap*>(0), \
+ arg("weight_map"), \
+ arg("visitor") = object(), \
+ arg("color_map") = static_cast<VertexColorMap*>(0), \
+ arg("lookahead") = -1.0)); \
+ }
+#include "graphs.hpp"
+}
+
+
+} } } } // end namespace boost::graph::distributed::python

Added: sandbox/SOC/2008/BGL_Python/src/distributed/dinic_max_flow.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/distributed/dinic_max_flow.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,35 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#include "config.hpp"
+#include "graph_types.hpp"
+#include <boost/parallel/property_map.hpp>
+#include <boost/graph/python/distributed/dinic_max_flow.hpp>
+
+namespace boost { namespace graph { namespace distributed { namespace python {
+
+void export_dinic_max_flow()
+{
+ using boost::python::arg;
+ using boost::python::def;
+
+#define UNDIRECTED_GRAPH(Name,Type)
+#define DIRECTED_GRAPH(Name,Type) \
+ { \
+ typedef property_map< Type, edge_index_t >::const_type \
+ EdgeIndexMap; \
+ typedef vector_property_map<int, EdgeIndexMap> EdgeFlowMap; \
+ def("dinic_max_flow", \
+ &boost::graph::python::distributed::dinic_max_flow<Type>, \
+ (arg("graph"), arg("source"), arg("sink"), arg("capacity_map"), \
+ arg("flow_map") = static_cast<EdgeFlowMap*>(0))); \
+ }
+#include "graphs.hpp"
+}
+
+} } } } // end namespace boost::graph::distributed::python

Added: sandbox/SOC/2008/BGL_Python/src/distributed/exports.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/distributed/exports.hpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,50 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#ifndef BOOST_GRAPH_PYTHON_DISTRIBUTED_EXPORTS_HPP
+#define BOOST_GRAPH_PYTHON_DISTRIBUTED_EXPORTS_HPP
+
+#include <string>
+#include <boost/python.hpp>
+
+namespace boost { namespace graph { namespace distributed { namespace python {
+
+void export_mpi();
+
+template<typename Graph>
+void export_graph(const char* name, const char* directedness);
+
+void export_boman_et_al_graph_coloring();
+void export_breadth_first_search();
+void export_connected_components();
+void export_dijkstra_shortest_paths();
+void export_dinic_max_flow();
+void export_dehne_gotz_min_spanning_tree();
+void export_fruchterman_reingold_force_directed_layout();
+void export_page_rank();
+void export_strong_components();
+
+template<typename Graph>
+boost::python::object
+vertex_property_map(const Graph& g, const std::string type);
+
+template<typename Graph>
+boost::python::object
+edge_property_map(const Graph& g, const std::string type);
+
+template<typename Graph> void export_property_maps();
+
+template<typename Graph> void export_generators(const std::string& directness);
+
+template<typename Graph> void export_metis(const std::string& directedness);
+
+template<typename Graph> void export_graphviz(const std::string& directedness);
+
+} } } } // end namespace boost::graph::distributed::python
+
+#endif // BOOST_GRAPH_PYTHON_DISTRIBUTED_EXPORTS_HPP

Added: sandbox/SOC/2008/BGL_Python/src/distributed/fruchterman_reingold.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/distributed/fruchterman_reingold.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,188 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#include "config.hpp"
+#include "graph_types.hpp"
+#include <boost/parallel/property_map.hpp>
+#include <boost/graph/fruchterman_reingold.hpp>
+#include <boost/graph/random_layout.hpp>
+#include <boost/graph/python/point2d.hpp>
+#include <boost/graph/python/iterator.hpp>
+#include <boost/random/linear_congruential.hpp>
+#include <ctime>
+#include <boost/python.hpp>
+
+namespace boost { namespace graph { namespace distributed { namespace python {
+
+using boost::graph::python::point2d;
+
+template<typename F, typename Result = typename F::result_type>
+struct python_or_functor
+{
+ typedef Result result_type;
+
+ explicit python_or_functor(boost::python::object callable, const F& f = F())
+ : callable(callable), f(f), registered_apply_force(false) { }
+
+ // For cooling
+ result_type operator()()
+ {
+ using boost::python::object;
+ using boost::python::extract;
+ if (callable != object()) return extract<result_type>(callable());
+ else return f();
+ }
+
+ // For force pairs
+ template<typename Graph, typename ApplyForce>
+ void operator()(const Graph& g, ApplyForce apply_force)
+ {
+ using boost::python::extract;
+ using boost::python::object;
+ using boost::graph::python::detail::type_already_registered;
+
+ if (callable != object()) {
+ if (!registered_apply_force && !type_already_registered<ApplyForce>())
+ {
+ using boost::python::class_;
+ using boost::python::no_init;
+ typedef typename graph_traits<Graph>::vertex_descriptor
+ vertex_descriptor;
+
+ typedef void (ApplyForce::* apply_force_call_t)(vertex_descriptor,
+ vertex_descriptor);
+
+ class_<ApplyForce>("ApplyForce", no_init)
+ .def("__call__", (apply_force_call_t)&ApplyForce::operator());
+
+ registered_apply_force = true;
+ }
+
+ if (extract<bool>(callable(ref(g), apply_force)))
+ f(g, apply_force);
+ }
+ else f(g, apply_force);
+ }
+
+ // For the attractive_force
+ template<typename Graph>
+ result_type
+ operator()(typename graph_traits<Graph>::edge_descriptor e,
+ float k, float dist, const Graph& g) const
+ {
+ using boost::python::object;
+ using boost::python::extract;
+ if (callable != object())
+ return extract<result_type>(callable(e, k, dist, ref(g)));
+ else
+ return f(e, k, dist, g);
+ }
+
+ // For the repulsive_force
+ template<typename Graph>
+ result_type
+ operator()(typename graph_traits<Graph>::vertex_descriptor u,
+ typename graph_traits<Graph>::vertex_descriptor v,
+ float k, float dist, const Graph& g) const
+ {
+ using boost::python::object;
+ using boost::python::extract;
+ if (callable != object())
+ return extract<result_type>(callable(u, v, k, dist, ref(g)));
+ else return f(u, v, k, dist, g);
+ }
+
+private:
+ boost::python::object callable;
+ F f;
+ bool registered_apply_force;
+};
+
+template<typename Graph>
+void
+fruchterman_reingold_force_directed_layout
+ (Graph& g,
+ vector_property_map
+ <point2d, typename property_map<Graph, vertex_index_t>::const_type>& pos,
+ const point2d& origin,
+ const point2d& extent,
+ boost::python::object attractive_force,
+ boost::python::object repulsive_force,
+ boost::python::object force_pairs,
+ boost::python::object cooling,
+ bool progressive,
+ const simple_tiling& tiling)
+{
+ using boost::python::object;
+
+ typedef typename property_map<Graph, vertex_index_t>::const_type
+ VertexIndexMap;
+ typedef vector_property_map<point2d, VertexIndexMap> PositionMap;
+
+ // Build the displacement map.
+ typedef vector_property_map<point2d, VertexIndexMap> DisplacementMap;
+ DisplacementMap displacement(num_vertices(g), get(vertex_index, g));
+
+ if (!progressive) {
+ minstd_rand gen(std::time(0));
+ random_graph_layout(g, pos, origin, extent, gen);
+ }
+
+ if (attractive_force != object() || repulsive_force != object()
+ || force_pairs != object() || cooling != object()) {
+ python_or_functor<square_distance_attractive_force, float>
+ fa(attractive_force);
+ python_or_functor<square_distance_repulsive_force, float>
+ fr(repulsive_force);
+ python_or_functor<grid_force_pairs<PositionMap>, void>
+ fp(force_pairs, make_grid_force_pairs(origin, extent, pos, g));
+ python_or_functor<linear_cooling<float> > local_cool(cooling, 100);
+
+ boost::graph::distributed::fruchterman_reingold_force_directed_layout
+ (g, pos, origin, extent, fa, fr, fp, local_cool, displacement, tiling);
+
+ } else {
+ boost::graph::distributed::fruchterman_reingold_force_directed_layout
+ (g, pos, origin, extent,
+ square_distance_attractive_force(),
+ square_distance_repulsive_force(),
+ make_grid_force_pairs(origin, extent, pos, g),
+ linear_cooling<float>(100), displacement, tiling);
+ }
+}
+
+
+void export_fruchterman_reingold_force_directed_layout()
+{
+ using boost::python::arg;
+ using boost::python::class_;
+ using boost::python::def;
+ using boost::python::init;
+ using boost::python::no_init;
+ using boost::python::object;
+
+ class_<simple_tiling>("Tiling", no_init)
+ .def(init<int, int, bool>());
+
+#define UNDIRECTED_GRAPH(Name,Type) \
+ def("fruchterman_reingold_force_directed_layout", \
+ &fruchterman_reingold_force_directed_layout<Type>, \
+ (arg("graph"), \
+ arg("position"), \
+ arg("origin") = point2d(), \
+ arg("extent") = point2d(500, 500), \
+ arg("attractive_force") = object(), \
+ arg("repulsive_force") = object(), \
+ arg("force_pairs") = object(), \
+ arg("cooling") = object(), \
+ arg("progressive") = false, \
+ arg("tiling") = simple_tiling(1, 1)));
+#include "graphs.hpp"
+}
+
+} } } } // end namespace boost::graph::distributed::python

Added: sandbox/SOC/2008/BGL_Python/src/distributed/generators.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/distributed/generators.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,48 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#include "config.hpp"
+#include "graph_types.hpp"
+#include <boost/graph/python/generators.hpp>
+#include <boost/python.hpp>
+
+namespace boost { namespace graph { namespace distributed { namespace python {
+
+template<typename Graph>
+void export_generators(const std::string& directedness)
+{
+ using boost::python::arg;
+ using boost::python::def;
+ using boost::python::manage_new_object;
+ using boost::python::return_value_policy;
+
+ // Generators
+ def((directedness + "_erdos_renyi_graph").c_str(),
+ &boost::graph::python::erdos_renyi_graph<Graph>,
+ return_value_policy<manage_new_object>(),
+ (arg("num_vertices"), arg("probability"),
+ arg("allow_self_loops") = false, arg("random_seed") = 1));
+
+ def((directedness + "_plod_graph").c_str(),
+ &boost::graph::python::plod_graph<Graph>,
+ return_value_policy<manage_new_object>(),
+ (arg("num_vertices"), arg("alpha"), arg("beta"),
+ arg("allow_self_loops") = false, arg("random_seed") = 1));
+
+ def((directedness + "_small_world_graph").c_str(),
+ &boost::graph::python::small_world_graph<Graph>,
+ return_value_policy<manage_new_object>(),
+ (arg("num_vertices"), arg("num_neighbors"), arg("rewire_probability"),
+ arg("allow_self_loops") = false, arg("random_seed") = 1));
+}
+
+#define UNDIRECTED_GRAPH(Name,Type) \
+ template void export_generators<Type>(const std::string&);
+#include "graphs.hpp"
+
+} } } } // end namespace boost::graph::distributed::python

Added: sandbox/SOC/2008/BGL_Python/src/distributed/graph_types.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/distributed/graph_types.hpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,33 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#ifndef BOOST_PARALLEL_GRAPH_PYTHON_GRAPH_TYPES_HPP
+#define BOOST_PARALLEL_GRAPH_PYTHON_GRAPH_TYPES_HPP
+
+#include "config.hpp"
+#include <boost/graph/distributed/adjacency_list.hpp>
+
+namespace boost { namespace graph { namespace distributed {namespace python {
+
+typedef adjacency_list<vecS,
+ distributedS<process_group_type, vecS>,
+ undirectedS,
+ no_property,
+ property<edge_index_t, std::size_t> >
+ Graph;
+
+typedef adjacency_list<vecS,
+ distributedS<process_group_type, vecS>,
+ bidirectionalS,
+ no_property,
+ property<edge_index_t, std::size_t> >
+ Digraph;
+
+} } } } // end namespace boost::graph::distributed::python
+
+#endif // BOOST_PARALLEL_GRAPH_PYTHON_GRAPH_TYPES_HPP

Added: sandbox/SOC/2008/BGL_Python/src/distributed/graphs.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/distributed/graphs.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,81 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#include "config.hpp"
+#include "graph_types.hpp"
+#include <boost/parallel/property_map.hpp>
+#include <boost/graph/python/graph.hpp>
+#include <boost/graph/python/property_map.hpp>
+#include <boost/vector_property_map.hpp>
+#include "exports.hpp"
+
+namespace boost { namespace graph { namespace distributed { namespace python {
+
+using boost::python::object;
+using boost::python::class_;
+
+template<typename T>
+void do_synchronize(T& t)
+{
+ synchronize(t);
+}
+
+template<typename Graph>
+typename graph_traits<Graph>::vertex_descriptor
+nth_vertex(const Graph& g, typename graph_traits<Graph>::vertices_size_type n)
+{
+ return vertex(n, g);
+}
+
+template<typename Graph>
+void export_graph(const char* name, const char* directedness)
+{
+ using boost::python::arg;
+ using boost::python::def;
+ using boost::python::manage_new_object;
+ using boost::python::no_init;
+ using boost::python::return_value_policy;
+ using boost::python::scope;
+
+ {
+ scope s;
+ class_<Graph, noncopyable> graph(name);
+
+ // Graph concepts
+ boost::graph::python::graph<Graph> g(graph);
+ boost::graph::python::vertex_list_graph<Graph> vlg(graph);
+ boost::graph::python::edge_list_graph<Graph> elg(graph);
+ boost::graph::python::incidence_graph<Graph> ig(graph);
+ boost::graph::python::bidirectional_graph<Graph> bg(graph);
+ boost::graph::python::adjacency_graph<Graph> ag(graph);
+ boost::graph::python::mutable_graph<Graph, false, true> mg(graph);
+
+ // Get the Nth vertex in the entire graph
+ graph.def("vertex", &nth_vertex<Graph>);
+
+ // Synchronization
+ graph.def("synchronize", &do_synchronize<Graph>);
+
+ // Properties
+ export_property_maps<Graph>();
+ graph.def("vertex_property_map", &vertex_property_map<Graph>,
+ (arg("graph"), arg("type")));
+ graph.def("edge_property_map", &edge_property_map<Graph>,
+ (arg("graph"), arg("type")));
+ }
+
+ export_generators<Graph>(directedness);
+ export_metis<Graph>(directedness);
+ export_graphviz<Graph>(directedness);
+}
+
+#define UNDIRECTED_GRAPH(Name,Type) \
+ template void export_graph< Type >(const char*, const char*);
+#include "graphs.hpp"
+
+} } } } // end namespace boost::graph::distributed::python

Added: sandbox/SOC/2008/BGL_Python/src/distributed/graphs.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/distributed/graphs.hpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,32 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+//
+// This file is intended to be included multiple times. It lists the
+// graph types for which we will generate Python bindings using macros
+// that will be defined by the file including this header. The two
+// macros are UNDIRECTED_GRAPH(Name,Type) and
+// DIRECTED_GRAPH(Name,Type), where Name is the name to expose to
+// Python and Type is the C++ type of the graph.
+//
+// If the DIRECTED_GRAPH macro is undefined, it will be given the same
+// definition as UNDIRECTED_GRAPH.
+
+#if !defined(UNDIRECTED_GRAPH)
+# error You must define UNDIRECTED_GRAPH before including this file.
+#endif
+
+#if !defined(DIRECTED_GRAPH)
+# define DIRECTED_GRAPH(Name,Type) UNDIRECTED_GRAPH(Name,Type)
+#endif
+
+UNDIRECTED_GRAPH(Graph, boost::graph::distributed::python::Graph)
+DIRECTED_GRAPH(Digraph,boost::graph::distributed::python::Digraph)
+
+#undef DIRECTED_GRAPH
+#undef UNDIRECTED_GRAPH

Added: sandbox/SOC/2008/BGL_Python/src/distributed/graphviz.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/distributed/graphviz.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,35 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#include "config.hpp"
+#include "graph_types.hpp"
+#include <boost/graph/python/distributed/graphviz.hpp>
+#include <boost/python.hpp>
+
+namespace boost { namespace graph { namespace distributed { namespace python {
+
+template<typename Graph>
+void export_graphviz(const std::string&)
+{
+ using boost::python::arg;
+ using boost::python::def;
+ using boost::python::object;
+
+ def("write_graphviz",
+ &boost::graph::python::distributed::write_graphviz<Graph>,
+ (arg("graph"), arg("filename"),
+ arg("vertex_property_writer") = object(),
+ arg("edge_property_writer") = object(),
+ arg("graph_property_writer") = object()));
+}
+
+#define UNDIRECTED_GRAPH(Name,Type) \
+ template void export_graphviz<Type>(const std::string&);
+#include "graphs.hpp"
+
+} } } } // end namespace boost::graph::distributed::python

Added: sandbox/SOC/2008/BGL_Python/src/distributed/metis.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/distributed/metis.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,34 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#include "config.hpp"
+#include "graph_types.hpp"
+#include <boost/graph/python/distributed/metis.hpp>
+#include <boost/python.hpp>
+
+namespace boost { namespace graph { namespace distributed { namespace python {
+
+template<typename Graph>
+void export_metis(const std::string& directedness)
+{
+ using boost::python::arg;
+ using boost::python::def;
+ using boost::python::manage_new_object;
+ using boost::python::return_value_policy;
+
+ def(("read_" + directedness + "_metis_graph").c_str(),
+ &boost::graph::python::distributed::read_metis_graph<Graph>,
+ return_value_policy<manage_new_object>(),
+ (arg("graph_file"), arg("partition_file") = std::string()));
+}
+
+#define UNDIRECTED_GRAPH(Name,Type) \
+ template void export_metis<Type>(const std::string&);
+#include "graphs.hpp"
+
+} } } } // end namespace boost::graph::distributed::python

Added: sandbox/SOC/2008/BGL_Python/src/distributed/module.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/distributed/module.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,33 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#include <boost/python.hpp>
+#include "exports.hpp"
+#include "config.hpp"
+#include "graph_types.hpp"
+
+namespace boost { namespace graph { namespace distributed { namespace python {
+
+BOOST_PYTHON_MODULE(_distributed)
+{
+ export_mpi();
+#define UNDIRECTED_GRAPH(Name,Type) export_graph< Type >(#Name, "undirected");
+#define DIRECTED_GRAPH(Name,Type) export_graph< Type >(#Name, "directed");
+#include "graphs.hpp"
+ export_boman_et_al_graph_coloring();
+ export_breadth_first_search();
+ export_connected_components();
+ export_dehne_gotz_min_spanning_tree();
+ export_dijkstra_shortest_paths();
+ export_dinic_max_flow();
+ export_fruchterman_reingold_force_directed_layout();
+ export_page_rank();
+ export_strong_components();
+}
+
+} } } } // end namespace boost::graph::distributed::python

Added: sandbox/SOC/2008/BGL_Python/src/distributed/mpi.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/distributed/mpi.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,73 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#include <boost/python.hpp>
+#include <mpi.h>
+#include <cassert>
+#include <cstring>
+
+namespace boost { namespace graph { namespace distributed { namespace python {
+
+bool mpi_init(boost::python::list python_argv)
+{
+ using boost::python::extract;
+ using boost::python::object;
+
+ // If already initialized, do nothing but note that initialization
+ // is done.
+ int flag = 0;
+ int result = MPI_Initialized(&flag);
+ assert(result == MPI_SUCCESS);
+ if (flag) return false;
+
+ // Convert Python argv into C-style argc/argv. Ewwwww!
+ int my_argc = extract<int>(python_argv.attr("__len__")());
+ char** my_argv = new char*[my_argc];
+ for (int arg = 0; arg < my_argc; ++arg)
+ my_argv[arg] = strdup(extract<const char*>(python_argv[arg]));
+
+ // Initialize MPI
+ int mpi_argc = my_argc;
+ char** mpi_argv = my_argv;
+ result = MPI_Init(&mpi_argc, &mpi_argv);
+ assert(result == MPI_SUCCESS);
+
+ // If anything changed, convert C-style argc/argv into Python argv
+ if (mpi_argv != my_argv) {
+ // Tear down Python argv
+ while (int(extract<int>(python_argv.attr("__len__")())) > 0)
+ python_argv.pop();
+
+ // Build up new Python argv
+ for (int arg = 0; arg < mpi_argc; ++arg)
+ python_argv.append(object(mpi_argv[arg]));
+ }
+
+ for (int arg = 0; arg < my_argc; ++arg)
+ free(my_argv[arg]);
+ delete [] my_argv;
+
+ return true;
+}
+
+void mpi_finalize()
+{
+ int result = MPI_Finalize();
+ assert(result == MPI_SUCCESS);
+}
+
+void export_mpi()
+{
+ using boost::python::arg;
+ using boost::python::def;
+
+ def("mpi_init", &mpi_init, (arg("argv")));
+ def("mpi_finalize", &mpi_finalize);
+}
+
+} } } } // end namespace boost::graph::distributed::python

Added: sandbox/SOC/2008/BGL_Python/src/distributed/page_rank.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/distributed/page_rank.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,30 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#include "config.hpp"
+#include "graph_types.hpp"
+#include <boost/parallel/property_map.hpp>
+#include <boost/graph/python/page_rank.hpp>
+
+namespace boost { namespace graph { namespace distributed { namespace python {
+
+void export_page_rank()
+{
+ using boost::python::arg;
+ using boost::python::def;
+
+#define UNDIRECTED_GRAPH(Name,Type)
+#define DIRECTED_GRAPH(Name,Type) \
+ def("page_rank", \
+ &boost::graph::python::page_rank<Type>, \
+ (arg("graph"), arg("rank_map"), arg("done_or_iterations") = 20, \
+ arg("damping") = 0.85));
+#include "graphs.hpp"
+}
+
+} } } } // end namespace boost::graph::distributed::python

Added: sandbox/SOC/2008/BGL_Python/src/distributed/properties.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/distributed/properties.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,145 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#include "config.hpp"
+#include "graph_types.hpp"
+#include <boost/python.hpp>
+#include <boost/parallel/property_map.hpp>
+#include <boost/graph/python/property_map.hpp>
+#include <boost/parallel/owner_property_map.hpp>
+#include <boost/graph/python/point2d.hpp>
+#include <boost/graph/python/point3d.hpp>
+#include <boost/parallel/container_traits.hpp>
+#include <string>
+
+namespace boost { namespace graph { namespace distributed { namespace python {
+
+using boost::python::object;
+
+template<typename Graph>
+object vertex_property_map(const Graph& g, const std::string type)
+{
+ using boost::parallel::owner_property_map;
+
+ typedef typename property_map<Graph, vertex_index_t>::const_type IndexMap;
+ typedef typename graph_traits<Graph>::vertex_descriptor vertex_descriptor;
+ typedef typename graph_traits<Graph>::edge_descriptor edge_descriptor;
+ typedef typename Graph::process_group_type process_group_type;
+ typedef typename process_group_type::process_id_type process_id_type;
+
+ if (type == "owner")
+ return object(owner_property_map<vertex_descriptor, process_id_type>());
+
+#define VERTEX_PROPERTY(Name,Type,Kind) \
+ else if (type == #Name) \
+ return object(vector_property_map<Type, IndexMap>(num_vertices(g), \
+ get(vertex_index, g)));
+#define EDGE_PROPERTY(Name,Type,Kind)
+# include <boost/graph/python/properties.hpp>
+#undef EDGE_PROPERTY_MAP
+#undef VERTEX_PROPERTY_MAP
+ else
+ return object();
+}
+
+template<typename Graph>
+object edge_property_map(const Graph& g, const std::string type)
+{
+ using boost::parallel::owner_property_map;
+
+ typedef typename property_map<Graph, edge_index_t>::const_type IndexMap;
+ typedef typename graph_traits<Graph>::vertex_descriptor vertex_descriptor;
+ typedef typename graph_traits<Graph>::edge_descriptor edge_descriptor;
+ typedef typename Graph::process_group_type process_group_type;
+ typedef typename process_group_type::process_id_type process_id_type;
+
+ if (type == "owner")
+ return object(owner_property_map<edge_descriptor, process_id_type>());
+
+#define VERTEX_PROPERTY(Name,Type,Kind)
+#define EDGE_PROPERTY(Name,Type,Kind) \
+ else if (type == #Name) \
+ return object(vector_property_map<Type, IndexMap>(num_edges(g), \
+ get(edge_index, g)));
+ #include <boost/graph/python/properties.hpp>
+#undef EDGE_PROPERTY_MAP
+#undef VERTEX_PROPERTY_MAP
+ else
+ return object();
+}
+
+template<typename Graph>
+void export_property_maps()
+{
+ using boost::graph::python::detail::type_already_registered;
+
+ using boost::graph::python::readable_property_map;
+ using boost::graph::python::read_write_property_map;
+ using boost::graph::python::lvalue_property_map;
+
+ using boost::python::class_;
+ using boost::python::no_init;
+
+ typedef typename graph_traits<Graph>::vertex_descriptor vertex_descriptor;
+ typedef typename graph_traits<Graph>::edge_descriptor edge_descriptor;
+ typedef typename property_map<Graph, vertex_index_t>::const_type
+ VertexIndexMap;
+ typedef typename property_map<Graph, edge_index_t>::const_type EdgeIndexMap;
+
+#define VERTEX_PROPERTY(Name,Type,Kind) \
+ { \
+ typedef vector_property_map<Type, VertexIndexMap> VertexMap; \
+ if (!type_already_registered<VertexMap>()) { \
+ class_<VertexMap> pm("Vertex" #Name "Map", no_init); \
+ BOOST_JOIN(Kind,_property_map)<VertexMap> reflect_pm(pm); \
+ pm.def("synchronize", &VertexMap::do_synchronize); \
+ } \
+ }
+#define EDGE_PROPERTY(Name,Type,Kind) \
+ { \
+ typedef vector_property_map<Type, EdgeIndexMap> EdgeMap; \
+ if (!type_already_registered<EdgeMap>()) { \
+ class_<EdgeMap> pm("Edge" #Name "Map", no_init); \
+ BOOST_JOIN(Kind,_property_map)<EdgeMap> reflect_pm(pm); \
+ pm.def("synchronize", &EdgeMap::do_synchronize); \
+ } \
+ }
+# include <boost/graph/python/properties.hpp>
+#undef EDGE_PROPERTY_MAP
+#undef VERTEX_PROPERTY_MAP
+
+ typedef typename boost::parallel::process_group_type<Graph>::type
+ process_group_type;
+ typedef typename process_group_type::process_id_type process_id_type;
+
+ typedef boost::parallel::owner_property_map<vertex_descriptor,
+ process_id_type>
+ VertexOwnerMap;
+ if (!type_already_registered<VertexOwnerMap>()) {
+ class_<VertexOwnerMap> pm("VertexOwnerMap", no_init);
+ readable_property_map<VertexOwnerMap> rpm(pm);
+ }
+
+ typedef boost::parallel::owner_property_map<edge_descriptor, process_id_type>
+ EdgeOwnerMap;
+ if (!type_already_registered<EdgeOwnerMap>()) {
+ class_<EdgeOwnerMap> pm("EdgeOwnerMap", no_init);
+ readable_property_map<EdgeOwnerMap> rpm(pm);
+ }
+}
+
+// Explicit instantiations for the graph types we're interested in
+#define UNDIRECTED_GRAPH(Name,Type) \
+ template void export_property_maps< Type >(); \
+ template object vertex_property_map< Type >(const Type & g, \
+ const std::string type); \
+ template object edge_property_map< Type >(const Type & g, \
+ const std::string type);
+#include "graphs.hpp"
+
+} } } } // end namespace boost::graph::distributed::python

Added: sandbox/SOC/2008/BGL_Python/src/distributed/strong_components.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/distributed/strong_components.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,36 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#include "config.hpp"
+#include "graph_types.hpp"
+#include <boost/parallel/property_map.hpp>
+#include <boost/graph/python/strong_components.hpp>
+
+namespace boost { namespace graph { namespace distributed { namespace python {
+
+void export_strong_components()
+{
+ using boost::python::arg;
+ using boost::python::def;
+
+#define UNDIRECTED_GRAPH(Name,Type)
+#define DIRECTED_GRAPH(Name,Type) \
+ { \
+ typedef property_map<Type, vertex_index_t>::const_type VertexIndexMap; \
+ typedef vector_property_map<int, VertexIndexMap> \
+ VertexColorMap; \
+ \
+ def("strong_components", \
+ &boost::graph::python::strong_components<Type>, \
+ (arg("graph"), \
+ arg("color_map") = static_cast<VertexColorMap*>(0))); \
+ }
+#include "graphs.hpp"
+}
+
+} } } } // end namespace boost::graph::distributed::python

Added: sandbox/SOC/2008/BGL_Python/src/exception.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/exception.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,44 @@
+// Copyright (C) 2006 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#include "exception.hpp"
+#include <boost/graph/python/python_property_map.hpp>
+
+namespace boost { namespace graph { namespace python {
+
+void export_exceptions()
+{
+ using boost::graph::python::bad_property_type;
+ using boost::graph::python::invalid_property_conversion;
+ using boost::graph::python::cannot_parse_property;
+ using boost::python::class_;
+ using boost::python::object;
+ using boost::python::no_init;
+
+ object bad_property_type_type =
+ class_<bad_property_type>("BadPropertyMap", no_init)
+ .def("__str__", &bad_property_type::what);
+
+ translate_exception<bad_property_type>::declare(bad_property_type_type);
+
+
+ object invalid_property_conversion_type =
+ class_<invalid_property_conversion>("InvalidPropertyConversion", no_init)
+ .def("__str__", &invalid_property_conversion::what);
+
+ translate_exception<invalid_property_conversion>::declare(invalid_property_conversion_type);
+
+ object cannot_parse_property_type =
+ class_<cannot_parse_property>("CannotParseProperty", no_init)
+ .def("__str__", &cannot_parse_property::what);
+
+ translate_exception<cannot_parse_property>::declare(cannot_parse_property_type);
+
+}
+
+} } } // end namespace boost::graph::python

Added: sandbox/SOC/2008/BGL_Python/src/exception.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/exception.hpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,49 @@
+// Copyright (C) 2005, 2006 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#ifndef BOOST_GRAPH_PYTHON_EXCEPTION_HPP
+#define BOOST_GRAPH_PYTHON_EXCEPTION_HPP
+
+#include <boost/python.hpp>
+
+namespace boost { namespace graph { namespace python {
+
+template<typename E>
+class translate_exception
+{
+ explicit translate_exception(boost::python::object type) : type(type) { }
+
+public:
+ template<typename Base>
+ static void declare(const char* name)
+ {
+ using boost::python::class_;
+ using boost::python::bases;
+
+ declare(class_<E, bases<Base> >(name));
+ }
+
+ static void declare(boost::python::object type)
+ {
+ using boost::python::register_exception_translator;
+ register_exception_translator<E>(translate_exception(type));
+ }
+
+ void operator()(const E& e) const
+ {
+ using boost::python::object;
+ PyErr_SetObject(type.ptr(), object(e).ptr());
+ }
+
+private:
+ boost::python::object type;
+};
+
+} } } // end namespace boost::graph::python
+
+#endif // BOOST_GRAPH_PYTHON_EXCEPTION_HPP

Added: sandbox/SOC/2008/BGL_Python/src/exports.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/exports.hpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,38 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#ifndef BOOST_GRAPH_PYTHON_EXPORTS_HPP
+#define BOOST_GRAPH_PYTHON_EXPORTS_HPP
+
+#define BGL_GRAPH_CLASS_(G) boost::python::class_<G, boost::noncopyable>
+
+namespace boost { namespace graph { namespace python {
+
+template<typename DirectedS> void export_basic_graph(const char* name);
+template<typename Graph> void export_property_maps(const char* name);
+
+template<typename Graph>
+void export_generators(BGL_GRAPH_CLASS_(Graph)& graph, const char* name);
+
+template<typename Graph>
+void export_graphviz(BGL_GRAPH_CLASS_(Graph)& graph, const char* name);
+
+template<typename Graph>
+void export_graphml(BGL_GRAPH_CLASS_(Graph)& graph, const char* name);
+
+template<typename Graph>
+boost::python::object
+add_vertex_property(Graph& g, const std::string& name, const std::string& type);
+
+template<typename Graph>
+boost::python::object
+add_edge_property(Graph& g, const std::string& name, const std::string& type);
+
+} } } // end namespace boost::graph::python
+
+#endif // BOOST_GRAPH_PYTHON_EXPORTS_HPP

Added: sandbox/SOC/2008/BGL_Python/src/fruchterman_reingold.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/fruchterman_reingold.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,190 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#include "graph_types.hpp"
+#include <boost/graph/fruchterman_reingold.hpp>
+#include <boost/graph/random_layout.hpp>
+#include <boost/graph/python/point2d.hpp>
+#include <boost/graph/python/point3d.hpp>
+#include <boost/graph/python/iterator.hpp>
+#include <boost/random/linear_congruential.hpp>
+#include <ctime>
+#include <boost/python.hpp>
+
+namespace boost { namespace graph { namespace python {
+
+template<typename F, typename Result = typename F::result_type>
+struct python_or_functor
+{
+ typedef Result result_type;
+
+ explicit python_or_functor(boost::python::object callable, const F& f = F())
+ : callable(callable), f(f), registered_apply_force(false) { }
+
+ // For cooling
+ result_type operator()()
+ {
+ using boost::python::object;
+ using boost::python::extract;
+ if (callable != object()) return extract<result_type>(callable());
+ else return f();
+ }
+
+ // For force pairs
+ template<typename Graph, typename ApplyForce>
+ void operator()(const Graph& g, ApplyForce apply_force)
+ {
+ using boost::python::extract;
+ using boost::python::object;
+ using boost::graph::python::detail::type_already_registered;
+
+ if (callable != object()) {
+ if (!registered_apply_force && !type_already_registered<ApplyForce>())
+ {
+ using boost::python::class_;
+ using boost::python::no_init;
+ typedef typename graph_traits<Graph>::vertex_descriptor
+ vertex_descriptor;
+
+ typedef void (ApplyForce::* apply_force_call_t)(vertex_descriptor,
+ vertex_descriptor);
+
+ class_<ApplyForce>("ApplyForce", no_init)
+ .def("__call__", (apply_force_call_t)&ApplyForce::operator());
+
+ registered_apply_force = true;
+ }
+
+ if (extract<bool>(callable(ref(g), apply_force)))
+ f(g, apply_force);
+ }
+ else f(g, apply_force);
+ }
+
+ // For the attractive_force
+ template<typename Graph>
+ result_type
+ operator()(typename graph_traits<Graph>::edge_descriptor e,
+ float k, float dist, const Graph& g) const
+ {
+ using boost::python::object;
+ using boost::python::extract;
+ if (callable != object())
+ return extract<result_type>(callable(e, k, dist, ref(g)));
+ else
+ return f(e, k, dist, g);
+ }
+
+ // For the repulsive_force
+ template<typename Graph>
+ result_type
+ operator()(typename graph_traits<Graph>::vertex_descriptor u,
+ typename graph_traits<Graph>::vertex_descriptor v,
+ float k, float dist, const Graph& g) const
+ {
+ using boost::python::object;
+ using boost::python::extract;
+ if (callable != object())
+ return extract<result_type>(callable(u, v, k, dist, ref(g)));
+ else return f(u, v, k, dist, g);
+ }
+
+private:
+ boost::python::object callable;
+ F f;
+ bool registered_apply_force;
+};
+
+template<typename Graph, typename Point>
+void
+fruchterman_reingold_force_directed_layout
+ (Graph& g,
+ vector_property_map
+ <Point, typename property_map<Graph, vertex_index_t>::const_type>& pos,
+ const Point& origin,
+ const Point& extent,
+ boost::python::object attractive_force,
+ boost::python::object repulsive_force,
+ boost::python::object force_pairs,
+ boost::python::object cooling,
+ bool progressive)
+{
+ using boost::python::object;
+
+ typedef typename property_map<Graph, vertex_index_t>::const_type
+ VertexIndexMap;
+ typedef vector_property_map<Point, VertexIndexMap> PositionMap;
+
+ // Build the displacement map.
+ typedef vector_property_map<Point, VertexIndexMap> DisplacementMap;
+ DisplacementMap displacement(num_vertices(g), get(vertex_index, g));
+
+ if (!progressive) {
+ minstd_rand gen(std::time(0));
+ random_graph_layout(g, pos, origin, extent, gen);
+ }
+
+ if (attractive_force != object() || repulsive_force != object()
+ || force_pairs != object() || cooling != object()) {
+ python_or_functor<square_distance_attractive_force, float>
+ fa(attractive_force);
+ python_or_functor<square_distance_repulsive_force, float>
+ fr(repulsive_force);
+ python_or_functor<grid_force_pairs<PositionMap>, void>
+ fp(force_pairs, make_grid_force_pairs(origin, extent, pos, g));
+ python_or_functor<linear_cooling<float> > local_cool(cooling, 100);
+
+ boost::fruchterman_reingold_force_directed_layout
+ (g, pos, origin, extent, fa, fr, fp, local_cool, displacement);
+
+ } else {
+ boost::fruchterman_reingold_force_directed_layout
+ (g, pos, origin, extent,
+ square_distance_attractive_force(),
+ square_distance_repulsive_force(),
+ make_grid_force_pairs(origin, extent, pos, g),
+ linear_cooling<float>(100), displacement);
+ }
+}
+
+void export_fruchterman_reingold_force_directed_layout()
+{
+ using boost::python::arg;
+ using boost::python::class_;
+ using boost::python::def;
+ using boost::python::init;
+ using boost::python::no_init;
+ using boost::python::object;
+
+#define UNDIRECTED_GRAPH(Name,Type) \
+ def("fruchterman_reingold_force_directed_layout", \
+ &fruchterman_reingold_force_directed_layout<Type, point2d>, \
+ (arg("graph"), \
+ arg("position"), \
+ arg("origin") = point2d(), \
+ arg("extent") = point2d(500, 500), \
+ arg("attractive_force") = object(), \
+ arg("repulsive_force") = object(), \
+ arg("force_pairs") = object(), \
+ arg("cooling") = object(), \
+ arg("progressive") = false)); \
+ def("fruchterman_reingold_force_directed_layout", \
+ &fruchterman_reingold_force_directed_layout<Type, point3d>, \
+ (arg("graph"), \
+ arg("position"), \
+ arg("origin") = point3d(), \
+ arg("extent") = point3d(500, 500, 500), \
+ arg("attractive_force") = object(), \
+ arg("repulsive_force") = object(), \
+ arg("force_pairs") = object(), \
+ arg("cooling") = object(), \
+ arg("progressive") = false));
+#include "graphs.hpp"
+}
+
+} } } // end namespace boost::graph::python

Added: sandbox/SOC/2008/BGL_Python/src/generators.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/generators.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,114 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#include "graph_types.hpp"
+#include "exports.hpp"
+#include <boost/graph/python/generators.hpp>
+#include <boost/python.hpp>
+#include <string>
+#include <boost/algorithm/string/replace.hpp>
+
+namespace boost { namespace graph { namespace python {
+
+const char* erdos_renyi_doc =
+"erdos_renyi_graph(num_vertices, probability, allow_self_loops = False,\n"
+" random_seed = 1) -> GRAPH\n\n"
+"Constructs a new Erdos-Renyi random graph with num_vertices vertices and\n"
+"a uniform probability of having an edge (u, v) in the graph for any\n"
+"vertices u and v. Expect a graph with probability*num_vertices^2 edges.\n\n"
+"Parameters:\n"
+" num_vertices The number of vertices in the graph. \n"
+" probability The probability of having an edge (u, v).\n"
+" allow_self_loops Whether self-loops (u, u) will be generated.\n"
+" random_seed Nonzero seed value for the random number generator.\n\n"
+"Complete C++ documentation is available at:\n"
+" http://www.boost.org/libs/graph/doc/erdos_renyi_generator.html\n"
+
+ ;
+
+const char* plod_doc =
+"plod_graph(num_vertices, alpha, beta, allow_self_loops = False, \n"
+" random_seed = 1) -> GRAPH\n\n"
+"Constructs a new power law graph with num_vertices vertices. The number\n"
+"of connections to a given vertex is beta*x^(-alpha), where alpha and\n"
+"beta are parameters to the algorithm and x is a random variable between\n"
+"0 and num_vertices - 1.\n\n"
+"Parameters:\n"
+" num_vertices The number of vertices in the graph.\n"
+" alpha The exponential fall-off in the degree distribution.\n"
+" beta Controls how many edges will occur in the graph.\n"
+" allow_self_loops Whether self-loops (u, u) will be generated.\n"
+" random_seed Nonzero seed value for the random number generator.\n\n"
+"Complete C++ documentation is available at:\n"
+" http://www.boost.org/libs/graph/doc/plod_generator.html\n"
+ ;
+
+const char* small_world_doc =
+"small_world_graph(num_vertices, num_neighbors, rewire_probability,\n"
+" allow_self_loops = False, random_seed = 1) -> GRAPH\n\n"
+"Constructs a new small-world graph with num_vertices vertices, each\n"
+"adjacent to its num_neighbors closest neighbors (assume that the \n"
+"vertcices were arranged in a circle). With probability\n"
+"rewire_probability, an edge will be rewired randomly.\n\n"
+"Parameters:\n"
+" num_vertices The number of vertices in the graph.\n"
+" num_neighbors The number of neighbors each vertex starts with.\n"
+" rewire_probability Probability of rewiring any given edge.\n"
+" allow_self_loops Whether self-loops (u, u) will be generated.\n"
+" allow_multiple_edges Whether multiple edges between vertices are generated.\n"
+" random_seed Nonzero seed for the random number generator.\n\n"
+"Complete C++ documentation is available at:\n"
+" http://www.boost.org/libs/graph/doc/small_world_generator.html\n"
+ ;
+
+template<typename Graph>
+void export_generators(BGL_GRAPH_CLASS_(Graph)& graph, const char* name)
+{
+ using boost::python::arg;
+ using boost::python::def;
+ using boost::python::manage_new_object;
+ using boost::python::return_value_policy;
+
+ std::string my_erdos_renyi_doc(erdos_renyi_doc);
+ algorithm::replace_all(my_erdos_renyi_doc, std::string("GRAPH"),
+ std::string(name));
+ std::string my_plod_doc(plod_doc);
+ algorithm::replace_all(my_plod_doc, std::string("GRAPH"), std::string(name));
+ std::string my_small_world_doc(small_world_doc);
+ algorithm::replace_all(my_small_world_doc,
+ std::string("GRAPH"), std::string(name));
+
+ // Generators
+ graph
+ .def("erdos_renyi_graph",
+ &boost::graph::python::erdos_renyi_graph<Graph>,
+ (arg("num_vertices"), arg("probability"),
+ arg("allow_self_loops") = false, arg("random_seed") = 1),
+ my_erdos_renyi_doc.c_str())
+ .staticmethod("erdos_renyi_graph")
+ .def("plod_graph",
+ &boost::graph::python::plod_graph<Graph>,
+ (arg("num_vertices"), arg("alpha"), arg("beta"),
+ arg("allow_self_loops") = false, arg("random_seed") = 1),
+ my_plod_doc.c_str())
+ .staticmethod("plod_graph")
+ .def("small_world_graph",
+ &boost::graph::python::small_world_graph<Graph>,
+ (arg("num_vertices"), arg("num_neighbors"), arg("rewire_probability"),
+ arg("allow_self_loops") = false, arg("allow_multiple_edges") = true,
+ arg("random_seed") = 1),
+ my_small_world_doc.c_str())
+ .staticmethod("small_world_graph");
+}
+
+#define UNDIRECTED_GRAPH(Name,Type) \
+ template void export_generators<Type>(BGL_GRAPH_CLASS_(Type)&, \
+ const char*);
+#include "graphs.hpp"
+
+} } } // end namespace boost::graph::python

Added: sandbox/SOC/2008/BGL_Python/src/graph_types.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/graph_types.hpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,21 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#ifndef BOOST_GRAPH_PYTHON_GRAPH_TYPES_HPP
+#define BOOST_GRAPH_PYTHON_GRAPH_TYPES_HPP
+
+#include "basic_graph.hpp"
+
+namespace boost { namespace graph { namespace python {
+
+typedef basic_graph<undirectedS> Graph;
+typedef basic_graph<bidirectionalS> Digraph;
+
+} } } // end namespace boost::graph::python
+
+#endif // BOOST_GRAPH_PYTHON_GRAPH_TYPES_HPP

Added: sandbox/SOC/2008/BGL_Python/src/graphdocs.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/graphdocs.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,90 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#include <boost/graph/python/graph.hpp>
+
+namespace boost { namespace graph { namespace python {
+
+const char* graph_docs[gd_last] = {
+ "An iterator that enumerates the vertices in a graph",
+ "num_vertices(self) -> int\n\nReturn the number of vertices in the graph.",
+ "vertices(self) -> VertexIterator\n\nEnumerate the vertices in the graph.",
+ "An iterator that enumerates the edges in a graph",
+ "num_edges(self) -> int\n\nReturn the number of edges in the graph.",
+ "edges(self) -> VertexIterator\n\nEnumerate the edges in the graph.",
+ "An iterator that enumerates edges outgoing from a vertex.",
+ "source(self, e) -> Vertex\n\nReturns the source of edge e.",
+ "target(self, e) -> Vertex\n\nReturns the target of edge e.",
+ "out_degree(self, u) -> int\n\nReturns the number of outgoing edges from u.",
+ "out_edges(self, u) ->OutEdgeIterator\n\nEnumerate edges outgoing from u.",
+ "An iterator that enumerates edges incoming to a vertex.",
+ "in_degree(self, u) -> int\n\nReturns the number of incoming edges to u.",
+ "in_edges(self, u) ->InEdgeIterator\n\nEnumerate edges incoming to u.",
+ "An iterator over the vertices adjacent to a given vertex.",
+ "adjacent_vertices(self, u) -> AdjacencyIterator\n\n" \
+ "Enumerate vertices adjacent to u.",
+ "add_edge(self, u, v) -> Edge\n\nAdd an edge between two vertices.\n" \
+ "Self-loops and parallel edges are permitted.",
+ "remove_edge(self, e)\n\nRemoves edge e from the graph.",
+ "add_vertex(self) -> Vertex\n\nAdds a new vertex to the graph.",
+ "clear_vertex(self, v)\n\nRemoves all outgoing and incoming edges from v.",
+ "remove_vertex(self, v)\n\nRemoves a vertex from the graph.\n" \
+ "Vertex v must have no incoming or outgoing edges. If you aren't sure,\n" \
+ "call clear_vertex first."
+};
+
+const char* graph_init_doc =
+"__init__(self, edges = list(), name_map = 'node_id') -> GRAPH\n\n"
+"Constructs a new graph from a list of edges. The edges argument\n"
+"should be a sequence of tuples, where each tuple contains the source and\n"
+"target vertices of an edge. The sources and targets can be any type,\n"
+"so long as that type can be ordered with < and compared with ==, e.g.,\n"
+"strings, integers, or floating-point-numbers. The name_map argument is the\n"
+"name of the vertex property map that will be used to store the mapping from\n"
+"vertices to their names. After this constructor completes,\n"
+" self.vertex_properties[name_map][v]\n"
+"will contain the name of vertex v as it appears in the edge list."
+ ;
+
+const char* add_vertex_property_doc =
+"add_vertex_property(self, name='', type='object') -> GRAPHVertexPropertyMap\n\n"
+"Creates a new property map that maps from vertices in the graph to\n"
+"values of the given type. If a name is given, the new property will be\n"
+"added to self.vertex_properties. Otherwise, a new, unnamed property will be\n"
+"added to the vertices in the graph. The type parameter may be any string\n"
+"from the following table:\n\n"
+" Name \tC++ type\n"
+"--------------------\n"
+#define VERTEX_PROPERTY(Name,Type,Kind) \
+" " #Name " \t" #Type "\n"
+#define EDGE_PROPERTY(Name,Type,Kind)
+# include <boost/graph/python/properties.hpp>
+#undef EDGE_PROPERTY
+#undef VERTEX_PROPERTY
+" index \tint (contains index of each vertex)\n"
+ ;
+
+const char* add_edge_property_doc =
+"add_edge_property(self, name='', type='object') -> GRAPHEdgePropertyMap\n\n"
+"Creates a new property map that maps from edges in the graph to\n"
+"values of the given type. If a name is given, the new property will be\n"
+"added to self.edge_properties. Otherwise, a new, unnamed property will be\n"
+"added to the edges in the graph. The type parameter may be any string\n"
+"from the following table:\n\n"
+" Name \tC++ type\n"
+"--------------------\n"
+#define VERTEX_PROPERTY(Name,Type,Kind)
+#define EDGE_PROPERTY(Name,Type,Kind) \
+" " #Name " \t" #Type "\n"
+# include <boost/graph/python/properties.hpp>
+#undef EDGE_PROPERTY
+#undef VERTEX_PROPERTY
+" index \tint (contains index of each edge)\n"
+ ;
+
+} } } // end namespace boost::graph::python

Added: sandbox/SOC/2008/BGL_Python/src/graphml.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/graphml.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,659 @@
+// Copyright (C) 2004 The Trustees of Indiana University.
+//
+// Boost Software License - Version 1.0 - August 17th, 2003
+//
+// Permission is hereby granted, free of charge, to any person or organization
+// obtaining a copy of the software and accompanying documentation covered by
+// this license (the "Software") to use, reproduce, display, distribute,
+// execute, and transmit the Software, and to prepare derivative works of the
+// Software, and to permit third-parties to whom the Software is furnished to
+// do so, all subject to the following:
+//
+// The copyright notices in the Software and this entire statement, including
+// the above license grant, this restriction and the following disclaimer,
+// must be included in all copies of the Software, in whole or in part, and
+// all derivative works of the Software, unless such copies or derivative
+// works are solely in the form of machine-executable object code generated by
+// a source language processor.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+// DEALINGS IN THE SOFTWARE.
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+// Tiago de Paula Peixoto
+
+// BGL-Python-specific
+#include <boost/python.hpp>
+#include <boost/graph/python/dynamic_properties.hpp>
+#include "graph_types.hpp"
+#include "exports.hpp"
+#include <boost/algorithm/string/replace.hpp>
+
+#include <vendor/expat-2.0.0/lib/expat.h>
+#include <boost/config.hpp>
+#include <boost/lexical_cast.hpp>
+#include <boost/any.hpp>
+#include <boost/type_traits/is_convertible.hpp>
+#include <boost/graph/graphviz.hpp> // for exceptions
+#include <typeinfo>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/vector.hpp>
+#include <boost/mpl/find.hpp>
+#include <boost/mpl/for_each.hpp>
+#include <exception>
+#include <sstream>
+
+// Workaround for GCC 3.3.x
+namespace boost {
+ using boost::graph::python::get;
+ using boost::graph::python::put;
+}
+
+namespace boost
+{
+
+/////////////////////////////////////////////////////////////////////////////
+// Graph reader exceptions
+/////////////////////////////////////////////////////////////////////////////
+struct parse_error : public graph_exception
+{
+ parse_error(std::string error) {statement = "parse error: " + error;}
+ std::string statement;
+ virtual ~parse_error() throw() {}
+ const char* what() const throw() {return statement.c_str();}
+};
+
+
+template<typename MutableGraph>
+class graphml_reader
+{
+ typedef graphml_reader self_type;
+ typedef typename graph_traits<MutableGraph>::vertex_descriptor vertex_descriptor;
+ typedef typename graph_traits<MutableGraph>::edge_descriptor edge_descriptor;
+ typedef typename graph_traits<MutableGraph>::directed_category directed_category;
+
+ BOOST_STATIC_CONSTANT(bool,
+ graph_is_directed =
+ (is_convertible<directed_category*, directed_tag*>::value));
+
+public:
+ graphml_reader(MutableGraph& g, dynamic_properties& dp)
+ : m_g(g), m_dp(dp), m_active_descriptor_is_vertex(false), m_canonical_vertices(false), m_canonical_edges(false) { }
+
+ void run(std::istream& in)
+ {
+ const int buffer_size = 4096;
+ XML_Parser parser = XML_ParserCreate(0);
+ XML_SetElementHandler(parser, &on_start_element, &on_end_element);
+ XML_SetCharacterDataHandler(parser, &on_character_data);
+ XML_SetUserData(parser, this);
+ char buffer[buffer_size];
+ do
+ {
+ in.read(buffer, buffer_size);
+ }
+ while (XML_Parse(parser, buffer, in.gcount(), in.gcount() == 0) && in.good());
+
+ if (in.good())
+ {
+ std::stringstream s;
+ s << "Parse error: " << XML_ErrorString(XML_GetErrorCode(parser))
+ << " on line " << XML_GetCurrentLineNumber(parser)
+ <<", column " << XML_GetCurrentColumnNumber(parser);
+ throw parse_error(s.str());
+ }
+ XML_ParserFree(parser);
+ }
+
+private:
+ /// The kinds of keys. Not all of these are supported
+ enum key_kind {
+ graph_key,
+ node_key,
+ edge_key,
+ hyperedge_key,
+ port_key,
+ endpoint_key,
+ all_key
+ };
+
+ static void
+ on_start_element(void* user_data, const XML_Char *c_name,
+ const XML_Char **atts)
+ {
+ self_type* self = static_cast<self_type*>(user_data);
+
+ std::string name(c_name);
+ if (name == "key")
+ {
+ std::string id;
+ std::string key_name;
+ std::string key_type;
+ key_kind kind = all_key;
+
+ while (*atts)
+ {
+ std::string name = *atts++;
+ std::string value = *atts++;
+
+ if (name == "id") id = value;
+ else if (name == "attr.name") key_name = value;
+ else if (name == "attr.type") key_type = value;
+ else if (name == "for")
+ {
+ if (value == "graph") kind = graph_key;
+ else if (value == "node") kind = node_key;
+ else if (value == "edge") kind = edge_key;
+ else if (value == "hyperedge") kind = hyperedge_key;
+ else if (value == "port") kind = port_key;
+ else if (value == "endpoint") kind = endpoint_key;
+ else if (value == "all") kind = all_key;
+ else
+ {
+ throw parse_error("unrecognized key kind '" + value + "'");
+ }
+ }
+ }
+
+ self->m_keys[id] = kind;
+ self->m_key_name[id] = key_name;
+ self->m_key_type[id] = key_type;
+ }
+ else if (name == "node")
+ {
+ std::string id;
+
+ while (*atts)
+ {
+ std::string name = *atts++;
+ std::string value = *atts++;
+
+ if (name == "id") id = value;
+ }
+
+ self->handle_vertex(id);
+ self->m_active_descriptor = id;
+ self->m_active_descriptor_is_vertex = true;
+ }
+ else if (name == "edge")
+ {
+ std::string id;
+ std::string source, target;
+ while (*atts)
+ {
+ std::string name = *atts++;
+ std::string value = *atts++;
+
+ if (name == "id") id = value;
+ else if (name == "source") source = value;
+ else if (name == "target") target = value;
+ else if (name == "directed")
+ {
+ bool edge_is_directed = (value == "directed");
+ if (edge_is_directed != graph_is_directed)
+ {
+ if (edge_is_directed)
+ throw directed_graph_error();
+ else
+ throw undirected_graph_error();
+ }
+ }
+ }
+
+ self->handle_edge(id, source, target);
+ self->m_active_descriptor = id;
+ self->m_active_descriptor_is_vertex = false;
+ }
+ else if (name == "graph")
+ {
+ while (*atts)
+ {
+ std::string name = *atts++;
+ std::string value = *atts++;
+
+ if (name == "id") self->m_id = value;
+ else if (name == "edgedefault")
+ {
+ bool edge_is_directed = (value == "directed");
+ if (edge_is_directed != graph_is_directed)
+ {
+ if (edge_is_directed)
+ throw directed_graph_error();
+ else
+ throw undirected_graph_error();
+ }
+ }
+ else if (name == "parse.nodeids")
+ {
+ self->m_canonical_vertices = (value == "canonical");
+ }
+ else if (name == "parse.edgeids")
+ {
+ self->m_canonical_edges = (value == "canonical");
+ }
+ }
+ }
+ else if (name == "data")
+ {
+ while (*atts)
+ {
+ std::string name = *atts++;
+ std::string value = *atts++;
+
+ if (name == "key") self->m_active_key = value;
+ }
+ }
+
+ self->m_character_data.clear();
+ }
+
+ static void
+ on_end_element(void* user_data, const XML_Char *c_name)
+ {
+ self_type* self = static_cast<self_type*>(user_data);
+ std::string name(c_name);
+
+ if (name == "data")
+ {
+ self->handle_property(self->m_active_key, self->m_active_descriptor,
+ self->m_active_descriptor_is_vertex,
+ self->m_character_data);
+ }
+ }
+
+ static void
+ on_character_data(void* user_data, const XML_Char* s, int len)
+ {
+ self_type* self = static_cast<self_type*>(user_data);
+ self->m_character_data.append(s, len);
+ }
+
+ void
+ handle_vertex(const std::string& v)
+ {
+ if (m_canonical_vertices)
+ {
+ size_t id;
+
+ //strip leading "n" from name
+ try
+ {
+ id = lexical_cast<size_t>(std::string(v,1));
+ }
+ catch (bad_lexical_cast)
+ {
+ throw parse_error("invalid vertex: " + v);
+ }
+
+ while(id >= m_canonical_vertex.size())
+ m_canonical_vertex.push_back(add_vertex(m_g));
+ }
+ else
+ {
+ if (m_vertex.find(v) == m_vertex.end())
+ m_vertex[v] = add_vertex(m_g);
+ }
+ }
+
+ vertex_descriptor
+ get_vertex_descriptor(const std::string& v)
+ {
+ if (m_canonical_vertices)
+ {
+ //strip leading "n" from name
+ size_t id = lexical_cast<size_t>(std::string(v,1));
+ return m_canonical_vertex[id];
+ }
+ else
+ {
+ return m_vertex[v];
+ }
+ }
+
+ void
+ handle_edge(const std::string& e, const std::string& u, const std::string& v)
+ {
+ handle_vertex(u);
+ handle_vertex(v);
+
+ vertex_descriptor source, target;
+ source = get_vertex_descriptor(u);
+ target = get_vertex_descriptor(v);
+
+ edge_descriptor edge;
+ bool added;
+ tie(edge, added) = add_edge(source,target,m_g);
+ if (!added)
+ throw bad_parallel_edge(u,v);
+
+ if (m_canonical_edges)
+ {
+ size_t id;
+
+ //strip leading "e" from name
+ try
+ {
+ id = lexical_cast<size_t>(std::string(e,1));
+ }
+ catch (bad_lexical_cast)
+ {
+ throw parse_error("invalid edge: " + e);
+ }
+ if (id != m_canonical_edge.size())
+ throw parse_error("the following edge is not in order: " + e);
+ m_canonical_edge.push_back(edge);
+ }
+ else
+ {
+ m_edge[e] = edge;
+ }
+ }
+
+ template <typename Key, typename ValueVector>
+ class put_property
+ {
+ public:
+ put_property(const std::string& name, dynamic_properties& dp, const Key& key,
+ const std::string& value, const std::string& value_type,
+ char** type_names, bool& type_found)
+ : m_name(name), m_dp(dp), m_key(key), m_value(value),
+ m_value_type(value_type), m_type_names(type_names),
+ m_type_found(type_found) {}
+ template <class Value>
+ void operator()(Value)
+ {
+ if (m_value_type == m_type_names[mpl::find<ValueVector,Value>::type::pos::value])
+ {
+ put(m_name, m_dp, m_key, lexical_cast<Value>(m_value));
+ m_type_found = true;
+ }
+ }
+ private:
+ const std::string& m_name;
+ dynamic_properties& m_dp;
+ const Key& m_key;
+ const std::string& m_value;
+ const std::string& m_value_type;
+ char** m_type_names;
+ bool& m_type_found;
+ };
+
+ void handle_property(std::string key_id, std::string descriptor,
+ bool is_vertex, std::string value)
+ {
+ typedef mpl::vector<bool, int, long, float, double, std::string> value_types;
+ char* type_names[] = {"boolean", "int", "long", "float", "double", "string"};
+
+ bool type_found = false;
+ try
+ {
+ if (is_vertex)
+ mpl::for_each<value_types>
+ (put_property<vertex_descriptor,value_types>
+ (m_key_name[key_id], m_dp,
+ get_vertex_descriptor(descriptor),
+ value, m_key_type[key_id], type_names, type_found));
+ else
+ mpl::for_each<value_types>
+ (put_property<edge_descriptor,value_types>
+ (m_key_name[key_id], m_dp,
+ get_edge_descriptor(descriptor),
+ value, m_key_type[key_id], type_names, type_found));
+ }
+ catch (bad_lexical_cast)
+ {
+ throw parse_error("invalid value \"" + value + "\" for key " +
+ m_key_name[key_id] + " of type " +
+ m_key_type[key_id] );
+ }
+ if (!type_found)
+ throw parse_error("unrecognized type \"" + m_key_type[key_id] +
+ "\" for key " + m_key_name[key_id]);
+ }
+
+
+ edge_descriptor
+ get_edge_descriptor(const std::string& e)
+ {
+ if (m_canonical_edges)
+ {
+ //strip leading "e" from name
+ size_t id = lexical_cast<size_t>(std::string(e,1));
+ return m_canonical_edge[id];
+ }
+ else
+ {
+ return m_edge[e];
+ }
+ }
+
+ std::string m_id;
+ MutableGraph& m_g;
+ dynamic_properties& m_dp;
+ std::map<std::string, key_kind> m_keys;
+ std::map<std::string, std::string> m_key_name;
+ std::map<std::string, std::string> m_key_type;
+ std::map<std::string, vertex_descriptor> m_vertex;
+ std::vector<vertex_descriptor> m_canonical_vertex;
+ std::map<std::string, edge_descriptor> m_edge;
+ std::vector<edge_descriptor> m_canonical_edge;
+ std::string m_active_descriptor;
+ bool m_active_descriptor_is_vertex;
+ std::string m_active_key;
+ std::string m_character_data;
+ bool m_canonical_vertices;
+ bool m_canonical_edges;
+};
+
+template<typename MutableGraph>
+void
+read_graphml(std::istream& in, MutableGraph& g, dynamic_properties& dp)
+{
+ graphml_reader<MutableGraph> reader(g, dp);
+ reader.run(in);
+}
+
+template <typename Types>
+class get_type_name
+{
+public:
+ get_type_name(const std::type_info& type, char** type_names, std::string& type_name)
+ : m_type(type), m_type_names(type_names), m_type_name(type_name) {}
+ template <typename Type>
+ void operator()(Type)
+ {
+ if (typeid(Type) == m_type)
+ m_type_name = m_type_names[mpl::find<Types,Type>::type::pos::value];
+ }
+private:
+ const std::type_info &m_type;
+ char** m_type_names;
+ std::string &m_type_name;
+};
+
+
+template <typename Graph, typename VertexIndexMap>
+void
+write_graphml(std::ostream& out, const Graph& g, VertexIndexMap vertex_index,
+ const dynamic_properties& dp, bool ordered_vertices=false)
+{
+ typedef typename graph_traits<Graph>::directed_category directed_category;
+ typedef typename graph_traits<Graph>::edge_descriptor edge_descriptor;
+ typedef typename graph_traits<Graph>::vertex_descriptor vertex_descriptor;
+
+ BOOST_STATIC_CONSTANT(bool,
+ graph_is_directed =
+ (is_convertible<directed_category*, directed_tag*>::value));
+
+ out << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+ << "<graphml xmlns=\"http://graphml.graphdrawing.org/xmlns/graphml\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://graphml.graphdrawing.org/xmlns/graphml http://graphml.graphdrawing.org/xmlns/graphml/graphml-attributes-1.0rc.xsd\">\n";
+
+ typedef mpl::vector<bool, short, unsigned short, int, unsigned int, long, unsigned long, long long, unsigned long long, float, double, long double, std::string> value_types;
+ char* type_names[] = {"boolean", "int", "int", "int", "int", "long", "long", "long", "long", "float", "double", "double", "string"};
+ std::map<std::string, std::string> vertex_key_ids;
+ std::map<std::string, std::string> edge_key_ids;
+ int key_count = 0;
+
+ // Output keys
+ for (dynamic_properties::const_iterator i = dp.begin(); i != dp.end(); ++i)
+ {
+ std::string key_id = "key" + lexical_cast<std::string>(key_count++);
+ if (i->second->key() == typeid(vertex_descriptor))
+ vertex_key_ids[i->first] = key_id;
+ else
+ edge_key_ids[i->first] = key_id;
+ std::string type_name = "string";
+ mpl::for_each<value_types>(get_type_name<value_types>(i->second->value(), type_names, type_name));
+ out << " <key id=\"" << key_id << "\" for=\""
+ << (i->second->key() == typeid(vertex_descriptor) ? "node" : "edge") << "\""
+ << " attr.name=\"" << i->first << "\""
+ << " attr.type=\"" << type_name << "\""
+ << " />\n";
+ }
+
+ out << " <graph id=\"G\" edgedefault=\""
+ << (graph_is_directed ? "directed" : "undirected") << "\""
+ << " parse.nodeids=\"" << (ordered_vertices ? "canonical" : "free") << "\""
+ << " parse.edgeids=\"canonical\" parse.order=\"nodesfirst\">\n";
+
+ typedef typename graph_traits<Graph>::vertex_iterator vertex_iterator;
+ vertex_iterator v, v_end;
+ for (tie(v, v_end) = vertices(g); v != v_end; ++v)
+ {
+ out << " <node id=\"n" << get(vertex_index, *v) << "\">\n";
+ // Output data
+ for (dynamic_properties::const_iterator i = dp.begin(); i != dp.end(); ++i)
+ {
+ if (i->second->key() == typeid(vertex_descriptor))
+ {
+ out << " <data key=\"" << vertex_key_ids[i->first] << "\">"
+ << i->second->get_string(*v) << "</data>\n";
+ }
+ }
+ out << " </node>\n";
+ }
+
+ typedef typename graph_traits<Graph>::edge_iterator edge_iterator;
+ edge_iterator e, e_end;
+ typename graph_traits<Graph>::edges_size_type edge_count = 0;
+ for (tie(e, e_end) = edges(g); e != e_end; ++e)
+ {
+ out << " <edge id=\"e" << edge_count++ << "\" source=\"n"
+ << get(vertex_index, source(*e, g)) << "\" target=\"n"
+ << get(vertex_index, target(*e, g)) << "\">\n";
+
+ // Output data
+ for (dynamic_properties::const_iterator i = dp.begin(); i != dp.end(); ++i)
+ {
+ if (i->second->key() == typeid(edge_descriptor))
+ {
+ out << " <data key=\"" << edge_key_ids[i->first] << "\">"
+ << i->second->get_string(*e) << "</data>\n";
+ }
+ }
+ out << " </edge>\n";
+ }
+
+ out << " </graph>\n"
+ << "</graphml>\n";
+}
+
+ namespace graph { namespace python {
+
+ const char* read_graphml_doc =
+"read_graphml(filename) -> GRAPH\n\n"
+"Loads a graph written in GraphML format from the file filename.\n"
+"Parameters:\n"
+" filename The name of the file to load.\n"
+"Exceptions:\n"
+" directed_graph_error Thrown if one tries to read a directed graph\n"
+" into the Graph class.\n"
+" undirected_graph_error Thrown if one tries to read an undirected\n"
+" graph into the Digraph class.\n\n"
+"See also:\n"
+" write_graphml\n\n"
+"The GraphML format is described here:\n"
+" http://graphml.graphdrawing.org/\n\n"
+ ;
+
+ const char* write_graphml_doc =
+"write_graphml(self, filename)\n\n"
+"Writes the graph into the file filename (overwriting the file if it \n"
+"already exists) using the GraphML format.\n\n"
+"See also:\n"
+" read_graphml\n\n"
+"The GraphML format is described here:\n"
+" http://graphml.graphdrawing.org/\n\n"
+ ;
+
+ template<typename Graph>
+ boost::python::object
+ read_graphml(const std::string& filename)
+ {
+ boost::python::object result = Graph::pyconstruct();
+ Graph& g = boost::python::extract<Graph&>(result)();
+ std::ifstream in(filename.c_str());
+ build_python_property_maps<Graph> builder(&g);
+ dynamic_properties dp(builder);
+ boost::read_graphml(in, g, dp);
+ return result;
+ }
+
+ template<typename Graph>
+ void
+ write_graphml(const Graph& g, const std::string& filename)
+ {
+ using boost::python::object;
+ using boost::python::str;
+ using boost::python::extract;
+
+ typedef typename graph_traits<Graph>::vertex_descriptor Vertex;
+ typedef typename graph_traits<Graph>::edge_descriptor Edge;
+
+ std::ofstream out(filename.c_str());
+ dynamic_properties dp;
+ dict_to_properties<Vertex>(g.vertex_properties(), dp);
+ dict_to_properties<Edge>(g.edge_properties(), dp);
+
+ boost::write_graphml(out, g, get(vertex_index, g), dp);
+ }
+
+ template<typename Graph>
+ void export_graphml(BGL_GRAPH_CLASS_(Graph)& graph, const char* name)
+ {
+ using boost::python::arg;
+ using boost::python::manage_new_object;
+ using boost::python::return_value_policy;
+
+ std::string my_read_graphml_doc(read_graphml_doc);
+ algorithm::replace_all(my_read_graphml_doc,
+ std::string("GRAPH"), std::string(name));
+
+ graph.def("read_graphml", &read_graphml<Graph>,
+ arg("filename"),
+ my_read_graphml_doc.c_str())
+ .staticmethod("read_graphml");
+
+ graph.def("write_graphml", &write_graphml<Graph>,
+ (arg("graph"), arg("filename")),
+ write_graphml_doc);
+ }
+
+// Explicit instantiations
+#define UNDIRECTED_GRAPH(Name,Type) \
+ template void export_graphml(BGL_GRAPH_CLASS_(Type)& graph, \
+ const char* name); \
+ template \
+ boost::python::object \
+ read_graphml<Type>(const std::string&); \
+ template \
+ void write_graphml(const Type&, const std::string&);
+#include "graphs.hpp"
+ } } // end namespace graph::python
+}

Added: sandbox/SOC/2008/BGL_Python/src/graphs.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/graphs.hpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,32 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+//
+// This file is intended to be included multiple times. It lists the
+// graph types for which we will generate Python bindings using macros
+// that will be defined by the file including this header. The two
+// macros are UNDIRECTED_GRAPH(Name,Type) and
+// DIRECTED_GRAPH(Name,Type), where Name is the name to expose to
+// Python and Type is the C++ type of the graph.
+//
+// If the DIRECTED_GRAPH macro is undefined, it will be given the same
+// definition as UNDIRECTED_GRAPH.
+
+#if !defined(UNDIRECTED_GRAPH)
+# error You must define UNDIRECTED_GRAPH before including this file.
+#endif
+
+#if !defined(DIRECTED_GRAPH)
+# define DIRECTED_GRAPH(Name,Type) UNDIRECTED_GRAPH(Name,Type)
+#endif
+
+UNDIRECTED_GRAPH(Graph, boost::graph::python::Graph)
+DIRECTED_GRAPH(Digraph, boost::graph::python::Digraph)
+
+#undef DIRECTED_GRAPH
+#undef UNDIRECTED_GRAPH

Added: sandbox/SOC/2008/BGL_Python/src/graphviz.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/graphviz.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,168 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+
+#include "graph_types.hpp"
+#include <boost/graph/graphviz.hpp>
+#include <boost/python.hpp>
+#include "exports.hpp"
+#include <fstream>
+#include <string>
+#include <iostream>
+#include <boost/algorithm/string/replace.hpp>
+#include <boost/graph/python/dynamic_properties.hpp>
+#include "exception.hpp"
+
+namespace boost { namespace python {
+
+inline std::ostream& operator<<(std::ostringstream& out, boost::python::str s)
+{
+ using boost::python::extract;
+ return (std::ostream&)out << (const char*)extract<const char*>(s);
+}
+
+} } // end namespace boost::python
+
+// Workaround for GCC 3.3.x
+namespace boost {
+ using boost::graph::python::get;
+ using boost::graph::python::put;
+}
+
+namespace boost { namespace graph { namespace python {
+
+
+const char* read_graphviz_doc =
+"read_graphviz(filename, node_id = 'node_id') -> GRAPH\n\n"
+"Loads a graph written in GraphViz DOT format from the file filename.\n"
+"Parameters:\n"
+" filename The name of the file to load.\n"
+" node_id The name given to the property map that will store the\n"
+" identifier associated with each vertex in the DOT file.\n\n"
+"Exceptions:\n"
+" directed_graph_error Thrown if one tries to read a directed graph\n"
+" into the Graph class.\n"
+" undirected_graph_error Thrown if one tries to read an undirected\n"
+" graph into the Digraph class.\n\n"
+"See also:\n"
+" write_graphviz\n\n"
+"The GraphViz DOT language is described here:\n"
+" http://www.graphviz.org/doc/info/lang.html\n\n"
+"Complete C++ documentation is available at:\n"
+" http://www.boost.org/libs/graph/doc/read_graphviz.html\n"
+ ;
+
+const char* write_graphviz_doc =
+"write_graphviz(self, filename)\n\n"
+"Writes the graph into the file filename (overwriting the file if it \n"
+"already exists) using the GraphViz DOT format.\n\n"
+"See also:\n"
+" read_graphviz\n\n"
+"The GraphViz DOT language is described here:\n"
+" http://www.graphviz.org/doc/info/lang.html\n\n"
+"Complete C++ documentation is available at:\n"
+" http://www.boost.org/libs/graph/doc/write-graphviz.html\n"
+ ;
+
+template<typename Graph>
+boost::python::object
+read_graphviz(const std::string& filename, const std::string& node_id)
+{
+ boost::python::object result = Graph::pyconstruct();
+ Graph& g = boost::python::extract<Graph&>(result)();
+ std::ifstream in(filename.c_str());
+ build_string_property_maps<Graph> builder(&g);
+ dynamic_properties dp(builder);
+ boost::read_graphviz(in, g, dp, node_id);
+ // string_properties_to_dicts<Graph>(g, dp);
+ return result;
+}
+
+template<typename Graph>
+void
+write_graphviz(const Graph& g, const std::string& filename,
+ const std::string& node_id)
+{
+ using boost::python::object;
+ using boost::python::str;
+ using boost::python::extract;
+
+ typedef typename graph_traits<Graph>::vertex_descriptor Vertex;
+ typedef typename graph_traits<Graph>::edge_descriptor Edge;
+
+ std::ofstream out(filename.c_str());
+ dynamic_properties dp;
+ dict_to_properties<Vertex>(g.vertex_properties(), dp);
+ dict_to_properties<Edge>(g.edge_properties(), dp);
+
+ if (g.vertex_properties().has_key(str(node_id))) {
+ object node_id_map = g.vertex_properties()[str(node_id)];
+ boost::write_graphviz(out, g, dp, node_id,
+ object_as_string_property_map<Vertex>(node_id_map));
+ } else {
+ boost::write_graphviz(out, g, dp, node_id,
+ get(vertex_index, g));
+ }
+}
+
+void export_graphviz_exceptions()
+{
+ using boost::python::class_;
+ using boost::python::bases;
+ using boost::python::init;
+ using boost::python::no_init;
+ using boost::python::object;
+
+ object ge_type =
+ class_<graph_exception, noncopyable >("GraphException", no_init);
+ translate_exception<graph_exception>::declare(ge_type);
+
+ object bpe_type =
+ class_<bad_parallel_edge, bases<graph_exception> >("BadParallelEdge",
+ no_init)
+ .def(init<std::string, std::string>());
+ translate_exception<bad_parallel_edge>::declare(bpe_type);
+
+ translate_exception<directed_graph_error>
+ ::declare<graph_exception>("DirectedGraphError");
+ translate_exception<undirected_graph_error>
+ ::declare<graph_exception>("UndirectedGraphError");
+}
+
+template<typename Graph>
+void export_graphviz(BGL_GRAPH_CLASS_(Graph)& graph, const char* name)
+{
+ using boost::python::arg;
+ using boost::python::manage_new_object;
+ using boost::python::return_value_policy;
+
+ std::string my_read_graphviz_doc(read_graphviz_doc);
+ algorithm::replace_all(my_read_graphviz_doc,
+ std::string("GRAPH"), std::string(name));
+
+ graph.def("read_graphviz", &read_graphviz<Graph>,
+ (arg("filename"), arg("node_id") = "node_id"),
+ my_read_graphviz_doc.c_str())
+ .staticmethod("read_graphviz");
+
+ graph.def("write_graphviz", &write_graphviz<Graph>,
+ (arg("graph"), arg("filename"), arg("node_id") = "node_id"),
+ write_graphviz_doc);
+}
+
+// Explicit instantiations
+#define UNDIRECTED_GRAPH(Name,Type) \
+ template void export_graphviz(BGL_GRAPH_CLASS_(Type)& graph, \
+ const char* name); \
+ template \
+ boost::python::object \
+ read_graphviz<Type>(const std::string&, const std::string&); \
+ template \
+ void write_graphviz(const Type&, const std::string&, const std::string&);
+#include "graphs.hpp"
+} } } // end namespace boost::graph::python

Added: sandbox/SOC/2008/BGL_Python/src/isomorphism.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/isomorphism.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,77 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#include <boost/graph/isomorphism.hpp>
+#include "graph_types.hpp"
+#include <boost/python.hpp>
+
+namespace boost { namespace graph { namespace python {
+
+template<typename Graph>
+struct py_vertex_invariant
+{
+ typedef typename graph_traits<Graph>::vertex_descriptor Vertex;
+
+ explicit py_vertex_invariant(boost::python::object invariant)
+ : invariant(invariant) { }
+
+ int operator()(const Vertex& v, const Graph& g)
+ { return boost::python::extract<int>(invariant(v, ref(g))); }
+
+private:
+ boost::python::object invariant;
+};
+
+template<typename Graph>
+bool
+isomorphism
+ (const Graph& g1,
+ const Graph& g2,
+ vector_property_map<
+ typename graph_traits<Graph>::vertex_descriptor,
+ typename property_map<Graph, vertex_index_t>::const_type>* in_iso,
+ boost::python::object invariant)
+{
+ typedef typename graph_traits<Graph>::vertex_descriptor vertex_descriptor;
+ typedef typename property_map<Graph, vertex_index_t>::const_type
+ VertexIndexMap;
+ typedef vector_property_map<vertex_descriptor, VertexIndexMap> IsoMap;
+
+ IsoMap iso =
+ in_iso? *in_iso
+ : IsoMap(num_vertices(g1), get(vertex_index, g1));
+
+ if (invariant != boost::python::object())
+ return boost::isomorphism
+ (g1, g2,
+ isomorphism_map(iso).
+ vertex_invariant(py_vertex_invariant<Graph>(invariant)));
+ else
+ return boost::isomorphism(g1, g2, isomorphism_map(iso));
+}
+
+void export_isomorphism()
+{
+ using boost::python::arg;
+ using boost::python::def;
+ using boost::python::object;
+
+#define UNDIRECTED_GRAPH(Name,Type) \
+ { \
+ typedef graph_traits<Type>::vertex_descriptor vertex_descriptor; \
+ typedef property_map<Type, vertex_index_t>::const_type VertexIndexMap; \
+ typedef vector_property_map<vertex_descriptor, VertexIndexMap> IsoMap; \
+ def("isomorphism", &isomorphism<Type>, \
+ (arg("graph1"), arg("graph2"), \
+ arg("isomorphism_map") = static_cast<IsoMap*>(0), \
+ arg("vertex_invariant") = object())); \
+ }
+#include "graphs.hpp"
+}
+
+} } } // end namespace boost::graph::python

Added: sandbox/SOC/2008/BGL_Python/src/kamada_kawai_spring_layout.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/kamada_kawai_spring_layout.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,85 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#include <boost/graph/kamada_kawai_spring_layout.hpp>
+#include <boost/graph/circle_layout.hpp>
+#include "graph_types.hpp"
+#include <boost/graph/python/point2d.hpp>
+#include <boost/graph/iteration_macros.hpp>
+#include <boost/python.hpp>
+
+namespace boost { namespace graph { namespace python {
+
+using boost::python::object;
+
+template<typename Graph>
+void
+kamada_kawai_spring_layout
+ (const Graph& g,
+ vector_property_map<
+ point2d,
+ typename property_map<Graph, vertex_index_t>::const_type>& position,
+ vector_property_map<
+ float,
+ typename property_map<Graph, edge_index_t>::const_type>* in_weight,
+ float side_length,
+ boost::python::object done,
+ float spring_constant,
+ bool progressive)
+{
+ typedef vector_property_map<
+ float,
+ typename property_map<Graph, edge_index_t>::const_type> WeightMap;
+
+ WeightMap weight =
+ in_weight? *in_weight : WeightMap(num_edges(g), get(edge_index, g));
+
+ // If we weren't give a weight map, assume unweighted edges
+ if (!in_weight) BGL_FORALL_EDGES_T(e, g, Graph) put(weight, e, 1.0f);
+
+ if (!progressive) circle_graph_layout(g, position, side_length/2);
+
+ if (done != object()) {
+ boost::kamada_kawai_spring_layout(g, position, weight,
+ boost::side_length(side_length), done,
+ spring_constant);
+ } else {
+ boost::kamada_kawai_spring_layout(g, position, weight,
+ boost::side_length(side_length),
+ layout_tolerance<float>(),
+ spring_constant);
+ }
+}
+
+void export_kamada_kawai_spring_layout()
+{
+ using boost::python::arg;
+ using boost::python::def;
+ using boost::python::object;
+
+#define UNDIRECTED_GRAPH(Name,Type) \
+ { \
+ typedef vector_property_map< \
+ float, \
+ property_map<Graph, edge_index_t>::const_type> WeightMap; \
+ \
+ def("kamada_kawai_spring_layout", \
+ &kamada_kawai_spring_layout<Type>, \
+ (arg("graph"), \
+ arg("position"), \
+ arg("weight") = static_cast<WeightMap*>(0), \
+ arg("side_length") = 500.0, \
+ arg("done") = object(), \
+ arg("spring_constant") = 1.0, \
+ arg("progressive") = false)); \
+ }
+#define DIRECTED_GRAPH(Name,Type)
+#include "graphs.hpp"
+}
+
+} } } // end namespace boost::graph::python

Added: sandbox/SOC/2008/BGL_Python/src/king_ordering.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/king_ordering.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,33 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+
+#include <boost/graph/king_ordering.hpp>
+#include "graph_types.hpp"
+#include <boost/python.hpp>
+#include <boost/graph/python/list_append_iterator.hpp>
+
+namespace boost { namespace graph { namespace python {
+
+template<typename Graph>
+boost::python::list
+king_ordering(const Graph& g)
+{
+ boost::python::list result;
+ boost::king_ordering(g, list_append_iterator(result));
+ return result;
+}
+
+void export_king_ordering()
+{
+ using boost::python::arg;
+ using boost::python::def;
+ def("king_ordering", &king_ordering<Graph>, arg("graph"));
+}
+
+} } } // end namespace boost::graph::python

Added: sandbox/SOC/2008/BGL_Python/src/kruskal_min_spanning_tree.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/kruskal_min_spanning_tree.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,39 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#include <boost/graph/kruskal_min_spanning_tree.hpp>
+#include "graph_types.hpp"
+#include <boost/graph/python/list_append_iterator.hpp>
+
+namespace boost { namespace graph { namespace python {
+
+template<typename Graph>
+boost::python::list
+kruskal_minimum_spanning_tree
+ (const Graph& g,
+ vector_property_map<
+ float,
+ typename property_map<Graph, edge_index_t>::const_type>& weight)
+ {
+ boost::python::list result;
+ boost::kruskal_minimum_spanning_tree(g, list_append_iterator(result),
+ weight_map(weight)
+ .vertex_index_map(get(vertex_index, g)));
+ return result;
+}
+
+void export_kruskal_minimum_spanning_tree()
+{
+ using boost::python::arg;
+ using boost::python::def;
+
+ def("kruskal_minimum_spanning_tree", &kruskal_minimum_spanning_tree<Graph>,
+ (arg("graph"), arg("weight_map")));
+}
+
+} } } // end namespace boost::graph::python

Added: sandbox/SOC/2008/BGL_Python/src/minimum_degree_ordering.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/minimum_degree_ordering.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,91 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Ben Martin
+// Douglas Gregor
+// Andrew Lumsdaine
+#include <boost/graph/minimum_degree_ordering.hpp>
+#include "graph_types.hpp"
+#include <boost/python.hpp>
+#include <vector>
+#include <boost/graph/iteration_macros.hpp>
+
+namespace boost { namespace graph { namespace python {
+
+template<typename Graph>
+boost::python::list
+minimum_degree_ordering
+(Graph& g,
+ vector_property_map<
+ int, typename property_map<Graph, vertex_index_t>::const_type
+ >* in_supernode_size,
+ int delta)
+{
+ typedef std::vector<int> InversePermutationMap;
+ typedef std::vector<int> PermutationMap;
+ typedef typename property_map<Graph, vertex_index_t>::const_type
+ VertexIndexMap;
+ typedef vector_property_map<int, VertexIndexMap> OutDegreeMap;
+ typedef vector_property_map<int, VertexIndexMap> SuperNodeSizeMap;
+
+ typedef typename graph_traits<Graph>::vertices_size_type vertices_size_type;
+
+ vertices_size_type n = num_vertices(g);
+
+ // Out-degree map
+ OutDegreeMap out_degree_map(num_vertices(g), get(vertex_index, g));
+ BGL_FORALL_VERTICES_T(v, g, Graph)
+ put(out_degree_map, v, out_degree(v, g));
+
+ InversePermutationMap inv_perm_map(n, 0);
+ PermutationMap perm_map(n, 0);
+ SuperNodeSizeMap supernode_size =
+ in_supernode_size ? *in_supernode_size
+ : SuperNodeSizeMap(num_vertices(g), get(vertex_index, g));
+ BGL_FORALL_VERTICES_T(v, g, Graph)
+ supernode_size[v] = 1;
+
+ boost::minimum_degree_ordering(g, out_degree_map, inv_perm_map, perm_map,
+ supernode_size, delta,
+ get(vertex_index, g));
+
+ // Build the new ordering
+ typedef typename graph_traits<Graph>::vertex_descriptor vertex_descriptor;
+ std::vector<vertex_descriptor> new_ordering(num_vertices(g));
+ BGL_FORALL_VERTICES_T(v, g, Graph)
+ new_ordering[perm_map[get(vertex_index, g, v)]] = v;
+
+ // Build resulting list for Python
+ boost::python::list result;
+ typedef typename std::vector<vertex_descriptor>::iterator iterator;
+ for (iterator i = new_ordering.begin(); i != new_ordering.end(); ++i)
+ result.append(*i);
+
+ return result;
+}
+
+void export_minimum_degree_ordering()
+{
+ using boost::python::arg;
+ using boost::python::def;
+
+#define UNDIRECTED_GRAPH(Name,Type)
+#define DIRECTED_GRAPH(Name,Type) \
+ { \
+ typedef vector_property_map<int, \
+ property_map<Type, vertex_index_t>::const_type>\
+ SuperNodeSizeMap; \
+ \
+ def("minimum_degree_ordering", \
+ &minimum_degree_ordering<Type>, \
+ (arg("graph"), \
+ arg("supernode_size") = static_cast<SuperNodeSizeMap*>(0), \
+ arg("delta") = 0)); \
+ }
+#include "graphs.hpp"
+}
+
+} } } // end namespace boost::graph::python

Added: sandbox/SOC/2008/BGL_Python/src/module.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/module.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,94 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#include <boost/python.hpp>
+#include "exports.hpp"
+#include "graph_types.hpp"
+
+namespace boost { namespace graph { namespace python {
+
+extern void export_exceptions();
+extern void export_graphs();
+extern void export_astar_search();
+extern void export_bellman_ford_shortest_paths();
+extern void export_breadth_first_search();
+extern void export_connected_components();
+extern void export_dijkstra_shortest_paths();
+extern void export_fruchterman_reingold_force_directed_layout();
+extern void export_betweenness_centrality();
+extern void export_biconnected_components();
+extern void export_circle_graph_layout();
+extern void export_cuthill_mckee_ordering();
+extern void export_dag_shortest_paths();
+extern void export_depth_first_search();
+extern void export_isomorphism();
+extern void export_kamada_kawai_spring_layout();
+extern void export_king_ordering();
+extern void export_kruskal_minimum_spanning_tree();
+extern void export_minimum_degree_ordering();
+extern void export_page_rank();
+extern void export_prim_minimum_spanning_tree();
+extern void export_sequential_vertex_coloring();
+extern void export_sloan_ordering();
+#ifdef INCLUDE_SPECTRUM
+extern void export_spectral_embedding_layout();
+extern void export_spectral_embedding_3d_layout();
+extern void export_spectrum();
+//#else
+//#warning "Not building spectrum() and related functions."
+#endif
+#ifdef INCLUDE_SPARSE_SPECTRUM
+extern void export_sparse_spectrum();
+#endif
+extern void export_strong_components();
+extern void export_topological_sort();
+extern void export_transitive_closure();
+extern void export_graphviz_exceptions();
+
+BOOST_PYTHON_MODULE(_graph)
+{
+ export_exceptions();
+ export_graphviz_exceptions();
+ export_graphs();
+ export_astar_search();
+ export_bellman_ford_shortest_paths();
+ export_betweenness_centrality();
+ export_biconnected_components();
+ export_breadth_first_search();
+ export_circle_graph_layout();
+ export_connected_components();
+ export_cuthill_mckee_ordering();
+ export_dag_shortest_paths();
+ export_depth_first_search();
+ export_dijkstra_shortest_paths();
+ export_fruchterman_reingold_force_directed_layout();
+ export_isomorphism();
+ export_kamada_kawai_spring_layout();
+ export_king_ordering();
+ export_kruskal_minimum_spanning_tree();
+ export_minimum_degree_ordering();
+ export_page_rank();
+ export_prim_minimum_spanning_tree();
+ export_sequential_vertex_coloring();
+ export_sloan_ordering();
+#ifdef INCLUDE_SPECTRUM
+ export_spectral_embedding_layout();
+ export_spectral_embedding_3d_layout();
+ export_spectrum();
+//#else
+//#warning "Not using spectrum()."
+#endif
+#ifdef INCLUDE_SPARSE_SPECTRUM
+ export_sparse_spectrum();
+#endif
+ export_strong_components();
+ export_topological_sort();
+ export_transitive_closure();
+}
+
+} } } // end namespace boost::graph::python

Added: sandbox/SOC/2008/BGL_Python/src/page_rank.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/page_rank.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,28 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#include "graph_types.hpp"
+#include <boost/graph/python/page_rank.hpp>
+
+namespace boost { namespace graph { namespace python {
+
+void export_page_rank()
+{
+ using boost::python::arg;
+ using boost::python::def;
+
+#define UNDIRECTED_GRAPH(Name,Type)
+#define DIRECTED_GRAPH(Name,Type) \
+ def("page_rank", \
+ &boost::graph::python::page_rank<Type>, \
+ (arg("graph"), arg("rank_map"), arg("done_or_iterations") = 20, \
+ arg("damping") = 0.85));
+#include "graphs.hpp"
+}
+
+} } } // end namespace boost::graph::python

Added: sandbox/SOC/2008/BGL_Python/src/pickle.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/pickle.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,175 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#include "graph_types.hpp"
+#include <boost/graph/iteration_macros.hpp>
+
+namespace boost { namespace graph { namespace python {
+
+template<typename Graph>
+boost::python::object
+add_vertex_property(Graph& g, const std::string& name, const std::string& type);
+
+template<typename Graph>
+boost::python::object
+add_edge_property(Graph& g, const std::string& name, const std::string& type);
+
+template<typename DirectedS>
+boost::python::tuple
+graph_pickle_suite<DirectedS>::getstate(boost::python::object g_obj)
+{
+ using boost::python::tuple;
+ using boost::python::make_tuple;
+ using boost::python::list;
+ using boost::python::extract;
+ using boost::python::dict;
+ using boost::python::object;
+
+ typedef basic_graph<DirectedS> Graph;
+
+ const Graph& g = extract<const Graph&>(g_obj)();
+ typename property_map<Graph, vertex_index_t>::const_type
+ vertex_index_map = get(vertex_index, g);
+ typename property_map<Graph, edge_index_t>::const_type
+ edge_index_map = get(edge_index, g);
+
+ dict vertex_properties;
+ dict edge_properties;
+
+ // Collect edges
+ std::vector<tuple> the_edges(num_edges(g));
+ BGL_FORALL_EDGES_T(e, g, Graph)
+ the_edges[get(edge_index_map, e)] =
+ make_tuple(get(vertex_index_map, source(e, g)),
+ get(vertex_index_map, target(e, g)));
+
+ list edges_list;
+ for (std::vector<tuple>::iterator i = the_edges.begin();
+ i != the_edges.end(); ++i)
+ edges_list.append(*i);
+
+ // Collect vertex and edge properties
+ try {
+ object iter = g.vertex_properties().iteritems();
+ while (true) {
+ object item = iter.attr("next")();
+ list values;
+ values.append(item[1].attr("type")());
+ BGL_FORALL_VERTICES_T(v, g, Graph)
+ values.append(item[1][v]);
+ vertex_properties[item[0]] = tuple(values);
+ }
+ } catch (...) {
+ // Swallow end-of-iteration exception
+ if(PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) {
+ PyErr_Clear();
+ }
+ }
+
+ try {
+ object iter = g.edge_properties().iteritems();
+ while (true) {
+ object item = iter.attr("next")();
+ list values;
+ values.append(item[1].attr("type")());
+ BGL_FORALL_EDGES_T(e, g, Graph)
+ values.append(item[1][e]);
+ edge_properties[item[0]] = tuple(values);
+ }
+ } catch (...) {
+ // Swallow end-of-iteration exception
+ if(PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) {
+ PyErr_Clear();
+ }
+ }
+
+ return make_tuple(g_obj.attr("__dict__"),
+ num_vertices(g),
+ edges_list,
+ vertex_properties,
+ edge_properties);
+}
+
+template<typename DirectedS>
+void
+graph_pickle_suite<DirectedS>::setstate(boost::python::object g_obj,
+ boost::python::tuple state)
+{
+ using boost::python::tuple;
+ using boost::python::make_tuple;
+ using boost::python::list;
+ using boost::python::extract;
+ using boost::python::dict;
+ using boost::python::object;
+
+ typedef basic_graph<DirectedS> Graph;
+
+ Graph& g = extract<Graph&>(g_obj)();
+
+ // restore the graph's __dict__
+ dict d = extract<dict>(g_obj.attr("__dict__"))();
+ d.update(state[0]);
+
+ // Get the number of vertices
+ typedef typename graph_traits<Graph>::vertices_size_type vertices_size_type;
+ vertices_size_type n = extract<vertices_size_type>(state[1]);
+ std::vector<Vertex> vertices;
+ vertices.reserve(n);
+ while (vertices.size() < n) vertices.push_back(g.add_vertex());
+
+ // Get the edges
+ typedef typename graph_traits<Graph>::edges_size_type edges_size_type;
+ std::vector<Edge> the_edges;
+ list edges_list = extract<list>(state[2]);
+ edges_size_type m = extract<int>(edges_list.attr("__len__")());
+ the_edges.reserve(m);
+ for (unsigned i = 0; i < m; ++i) {
+ tuple e = extract<tuple>(edges_list[i]);
+ the_edges.push_back
+ (g.add_edge(vertices[extract<vertices_size_type>(e[0])],
+ vertices[extract<vertices_size_type>(e[1])]));
+ }
+
+ // Get the vertex properties
+ typedef typename property_map<Graph, vertex_index_t>::const_type
+ VertexIndexMap;
+ dict vertex_properties = vertex_properties = extract<dict>(state[3]);
+ list vertex_map_names = vertex_properties.keys();
+ for (long i = 0, n = len(vertex_map_names); i < n; ++i) {
+ object name_obj = vertex_map_names[i];
+ tuple values = extract<tuple>(vertex_properties[name_obj]);
+ object type_obj = values[0];
+ object pmap = add_vertex_property(g,
+ extract<const char *>(name_obj)(),
+ extract<const char *>(type_obj)());
+ for (vertices_size_type i = 0; i < num_vertices(g); ++i)
+ pmap.attr("__setitem__")(vertices[i], object(values[i+1]));
+ }
+
+
+ // Get the edge properties
+ typedef typename property_map<Graph, edge_index_t>::const_type EdgeIndexMap;
+ dict edge_properties = extract<dict>(state[4]);
+ list edge_map_names = edge_properties.keys();
+ for (long i = 0, n = len(edge_map_names); i < n; ++i) {
+ object name_obj = edge_map_names[i];
+ tuple values = extract<tuple>(edge_properties[name_obj]);
+ object type_obj = values[0];
+ object pmap = add_edge_property(g,
+ extract<const char *>(name_obj)(),
+ extract<const char *>(type_obj)());
+ for (edges_size_type i = 0; i < num_edges(g); ++i)
+ pmap.attr("__setitem__")(the_edges[i], object(values[i+1]));
+ }
+}
+
+template struct graph_pickle_suite<undirectedS>;
+template struct graph_pickle_suite<bidirectionalS>;
+
+} } } // end namespace boost::graph::python
+

Added: sandbox/SOC/2008/BGL_Python/src/prim_minimum_spanning_tree.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/prim_minimum_spanning_tree.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,48 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#include "graph_types.hpp"
+#include <boost/graph/python/prim_minimum_spanning_tree.hpp>
+
+namespace boost { namespace graph { namespace python {
+
+void export_prim_minimum_spanning_tree()
+{
+ using boost::python::arg;
+ using boost::python::def;
+ using boost::python::object;
+
+#define UNDIRECTED_GRAPH(Name,Type) \
+ { \
+ typedef graph_traits<Type>::vertex_descriptor vertex_descriptor; \
+ typedef property_map<Type, vertex_index_t>::const_type VertexIndexMap; \
+ typedef property_map<Type, edge_index_t>::const_type EdgeIndexMap; \
+ typedef vector_property_map<vertex_descriptor, VertexIndexMap> \
+ VertexPredecessorMap; \
+ typedef vector_property_map<float, VertexIndexMap> \
+ VertexDistanceMap; \
+ typedef vector_property_map<default_color_type, VertexIndexMap> \
+ VertexColorMap; \
+ typedef vector_property_map<float, EdgeIndexMap> \
+ EdgeWeightMap; \
+ \
+ def("prim_minimum_spanning_tree", \
+ &boost::graph::python::prim_minimum_spanning_tree<Type>, \
+ (arg("graph"), \
+ arg("predecessor_map") = static_cast<VertexPredecessorMap*>(0), \
+ arg("distance_map") = static_cast<VertexDistanceMap*>(0), \
+ arg("weight_map") = static_cast<EdgeWeightMap*>(0), \
+ arg("visitor") = object(), \
+ arg("root_vertex") = graph_traits<Type>::null_vertex(), \
+ arg("color_map") = static_cast<VertexColorMap*>(0))); \
+ }
+#include "graphs.hpp"
+}
+
+
+} } } // end namespace boost::graph::python

Added: sandbox/SOC/2008/BGL_Python/src/properties.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/properties.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,222 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#include "graph_types.hpp"
+#include <boost/python.hpp>
+#include <boost/graph/python/python_property_map.hpp>
+#include <boost/graph/python/resizable_property_map.hpp>
+#include <boost/graph/python/property_map.hpp>
+#include <boost/graph/python/point2d.hpp>
+#include <boost/graph/python/point3d.hpp>
+#include <boost/graph/python/iterator.hpp> // for type_already_registered
+#include <string>
+
+namespace boost { namespace python {
+
+// From http://aspn.activestate.com/ASPN/Mail/Message/C++-sig/1662717
+template <class Extractor>
+struct lvalue_from_nonconst_pytype
+{
+ lvalue_from_nonconst_pytype(PyTypeObject *type)
+ {
+ // assume this is called only once
+ m_type = type;
+ converter::registry::insert(
+ &extract, detail::extractor_type_id(&Extractor::execute));
+ }
+private:
+ static PyTypeObject *m_type;
+
+ static void* extract(PyObject* op)
+ {
+ return PyObject_TypeCheck(op, m_type)
+ ? const_cast<void*> (
+ static_cast<void const volatile*> (
+ detail::normalize<Extractor> (&Extractor::execute).
+ execute(op)))
+ : 0
+ ;
+ }
+};
+
+template <class Extractor> PyTypeObject *
+ lvalue_from_nonconst_pytype<Extractor> ::m_type = 0;
+} } // end namespace boost::python
+
+namespace boost { namespace graph { namespace python {
+
+using boost::python::object;
+
+template<typename Graph>
+boost::python::object
+add_vertex_property(Graph& g, const std::string& name, const std::string& type)
+{
+ typedef typename property_map<Graph, vertex_index_t>::const_type
+ VertexIndexMap;
+
+ typedef python_property_map<vertex_index_t, Graph> result_type;
+ result_type result(&g, type.c_str());
+
+ boost::python::object result_obj(result);
+
+ // Register named property maps
+ if (!name.empty())
+ g.vertex_properties()[name] = result_obj;
+
+ return result_obj;
+}
+
+template<typename Graph>
+boost::python::object
+add_edge_property(Graph& g, const std::string& name, const std::string& type)
+{
+ typedef typename property_map<Graph, edge_index_t>::const_type
+ EdgeIndexMap;
+
+ typedef python_property_map<edge_index_t, Graph> result_type;
+ result_type result(&g, type.c_str());
+
+ boost::python::object result_obj(result);
+
+ // Register named property maps
+ if (!name.empty())
+ g.edge_properties()[name] = result_obj;
+
+ return result_obj;
+}
+
+template<typename PythonPropertyMap, typename CppPropertyMap>
+struct astype_property_map_extractor
+{
+ static CppPropertyMap& execute(PyObject& obj)
+ {
+ return boost::python::extract<PythonPropertyMap&>(&obj)();
+ }
+};
+
+static const char* property_map_type_doc =
+ "type(self) -> str\n\n"
+ "Returns the type of data stored in the property map.";
+
+static const char* property_map_astype_doc =
+ "astype(self, type) -> object\n\n"
+ "Returns a new property map that contains the same values as the\n"
+ "property map self, but converted to the given type.\n";
+
+static const char* property_map_address_doc =
+ "address(self) -> integer\n\n"
+ "Returns the address of the raw data stored in the property map.\n"
+ "To determine the type of this data, query the type method of\n"
+ "the property map, then look up the corresponding C++ type in\n"
+ "add_vertex_property and add_edge_property. The address points to\n"
+ "the beginning of a contiguous array of property values, which can\n"
+ "be indexed with the values in the `index' property map.\n";
+
+template<typename Graph>
+void export_property_maps(const char* graph_name)
+{
+ using boost::graph::python::readable_property_map;
+ using boost::graph::python::read_write_property_map;
+ using boost::graph::python::lvalue_property_map;
+
+ using boost::python::arg;
+ using boost::python::class_;
+ using boost::python::lvalue_from_nonconst_pytype;
+ using boost::python::no_init;
+
+ using boost::graph::python::detail::type_already_registered;
+
+ typedef typename graph_traits<Graph>::vertex_descriptor vertex_descriptor;
+ typedef typename graph_traits<Graph>::edge_descriptor edge_descriptor;
+ typedef typename property_map<Graph, vertex_index_t>::const_type
+ VertexIndexMap;
+ typedef typename property_map<Graph, edge_index_t>::const_type EdgeIndexMap;
+
+ // Make vertex property map available in Python
+ typedef python_property_map<vertex_index_t, Graph> VertexPropertyMap;
+ std::string vpm_name(graph_name);
+ vpm_name += "VertexPropertyMap";
+ class_<VertexPropertyMap> vertex_property_map(vpm_name.c_str(), no_init);
+ read_write_property_map<VertexPropertyMap> vertex_reflect(vertex_property_map);
+ vertex_property_map.def("astype", &VertexPropertyMap::astype,
+ (arg("property_map"), arg("type")),
+ property_map_astype_doc);
+ vertex_property_map.def("type", &VertexPropertyMap::type,
+ arg("property_map"),
+ property_map_type_doc);
+ vertex_property_map.def("address", &VertexPropertyMap::address,
+ arg("property_map"),
+ property_map_address_doc);
+
+ // Make edge property map available in Python
+ typedef python_property_map<edge_index_t, Graph> EdgePropertyMap;
+ std::string epm_name(graph_name);
+ epm_name += "EdgePropertyMap";
+ class_<EdgePropertyMap> edge_property_map(epm_name.c_str(), no_init);
+ read_write_property_map<EdgePropertyMap> edge_reflect(edge_property_map);
+ edge_property_map.def("astype", &EdgePropertyMap::astype,
+ (arg("property_map"), arg("type")),
+ property_map_astype_doc);
+ edge_property_map.def("type", &EdgePropertyMap::type,
+ arg("property_map"),
+ property_map_type_doc);
+ edge_property_map.def("address", &EdgePropertyMap::address,
+ arg("property_map"),
+ property_map_address_doc);
+
+ // Make implicit conversions from the vertex and edge property maps
+ // to the associated vector_property_maps.
+#define VERTEX_PROPERTY(Name,Type,Kind) \
+ lvalue_from_nonconst_pytype< \
+ astype_property_map_extractor< \
+ VertexPropertyMap, \
+ vector_property_map<Type, VertexIndexMap> > > \
+ BOOST_JOIN(Vertex,BOOST_JOIN(Name,PropertyMap))( \
+ (PyTypeObject*)vertex_property_map.ptr());
+#define EDGE_PROPERTY(Name,Type,Kind) \
+ lvalue_from_nonconst_pytype< \
+ astype_property_map_extractor< \
+ EdgePropertyMap, \
+ vector_property_map<Type, EdgeIndexMap> > > \
+ BOOST_JOIN(Edge,BOOST_JOIN(Name,PropertyMap))( \
+ (PyTypeObject*)edge_property_map.ptr());
+# include <boost/graph/python/properties.hpp>
+#undef EDGE_PROPERTY
+#undef VERTEX_PROPERTY
+
+ // Reflect the underlying vector_property_maps into Python. This is
+ // needed only to handle the default-value case (where we use NULL
+ // pointers).
+#define VERTEX_PROPERTY(Name,Type,Kind) \
+ class_<vector_property_map< Type, VertexIndexMap> >("", no_init);
+#define EDGE_PROPERTY(Name,Type,Kind) \
+ class_<vector_property_map< Type, EdgeIndexMap> >("", no_init);
+# include <boost/graph/python/properties.hpp>
+#undef EDGE_PROPERTY
+#undef VERTEX_PROPERTY
+}
+
+// Explicit instantiations for the graph types we're interested in
+#define INSTANTIATE_FOR_GRAPH(Name,Type) \
+ template void export_property_maps< Type >(const char*); \
+ template object add_vertex_property< Type >(Type & g, \
+ const std::string& name, \
+ const std::string& type); \
+ template object add_edge_property< Type >(Type & g, \
+ const std::string& name, \
+ const std::string& type);
+#ifdef DIRECTED_PROPERTIES_ONLY
+#define UNDIRECTED_GRAPH(Name,Type)
+#define DIRECTED_GRAPH(Name,Type) INSTANTIATE_FOR_GRAPH(Name,Type)
+#else
+#define UNDIRECTED_GRAPH(Name,Type) INSTANTIATE_FOR_GRAPH(Name,Type)
+#define DIRECTED_GRAPH(Name,Type)
+#endif
+#include "graphs.hpp"
+
+} } } // end namespace boost::graph::python

Added: sandbox/SOC/2008/BGL_Python/src/sequential_vertex_coloring.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/sequential_vertex_coloring.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,50 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#include "graph_types.hpp"
+#include <boost/graph/sequential_vertex_coloring.hpp>
+
+namespace boost { namespace graph { namespace python {
+
+template<typename Graph>
+int
+sequential_vertex_coloring
+ (const Graph& g,
+ vector_property_map<
+ int,
+ typename property_map<Graph, vertex_index_t>::const_type>* in_color)
+{
+ typedef vector_property_map<
+ int, typename property_map<Graph, vertex_index_t>::const_type>
+ ColorMap;
+
+ ColorMap color =
+ in_color? *in_color
+ : ColorMap(num_vertices(g), get(vertex_index, g));
+
+ return boost::sequential_vertex_coloring(g, color);
+}
+
+void export_sequential_vertex_coloring()
+{
+ using boost::python::arg;
+ using boost::python::def;
+
+#define UNDIRECTED_GRAPH(Name,Type) \
+ { \
+ typedef vector_property_map< \
+ int, property_map<Type, vertex_index_t>::const_type> ColorMap; \
+ \
+ def("sequential_vertex_coloring", \
+ &sequential_vertex_coloring<Type>, \
+ (arg("graph"), arg("color_map") = static_cast<ColorMap*>(0))); \
+ }
+#include "graphs.hpp"
+}
+
+} } } // end namespace boost::graph::python

Added: sandbox/SOC/2008/BGL_Python/src/sloan_ordering.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/sloan_ordering.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,172 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Ben Martin
+// Douglas Gregor
+// Andrew Lumsdaine
+#include <boost/graph/sloan_ordering.hpp>
+#include "graph_types.hpp"
+#include <boost/python.hpp>
+#include <vector>
+#include <boost/graph/iteration_macros.hpp>
+#include <boost/graph/python/list_append_iterator.hpp>
+#include <utility>
+
+namespace boost { namespace graph { namespace python {
+
+template<typename Graph>
+boost::python::list
+sloan_ordering
+ (Graph& g,
+ vector_property_map<
+ default_color_type,
+ typename property_map<Graph, vertex_index_t>::const_type
+ >* in_color,
+ vector_property_map<
+ float,
+ typename property_map<Graph, vertex_index_t>::const_type
+ >* in_priority,
+ float weight1,
+ float weight2)
+{
+ typedef typename graph_traits<Graph>::degree_size_type degree_size_type;
+
+ typedef typename property_map<Graph, vertex_index_t>::const_type
+ VertexIndexMap;
+ typedef vector_property_map<default_color_type, VertexIndexMap> ColorMap;
+ typedef vector_property_map<float, VertexIndexMap> PriorityMap;
+ typedef vector_property_map<degree_size_type, VertexIndexMap>
+ OutDegreeMap;
+
+ // Out-degree map
+ OutDegreeMap out_degree_map(num_vertices(g), get(vertex_index, g));
+ BGL_FORALL_VERTICES_T(v, g, Graph)
+ put(out_degree_map, v, out_degree(v, g));
+
+ ColorMap color = in_color ? *in_color
+ : ColorMap(num_vertices(g), get(vertex_index, g));
+
+ PriorityMap priority = in_priority ? *in_priority
+ : PriorityMap(num_vertices(g), get(vertex_index, g));
+
+ boost::python::list result;
+ boost::sloan_ordering(g, list_append_iterator(result),
+ color, out_degree_map, priority, weight1, weight2);
+ return result;
+}
+
+template<typename Graph>
+boost::python::list
+sloan_ordering_se
+ (Graph& g,
+ typename graph_traits<Graph>::vertex_descriptor start,
+ typename graph_traits<Graph>::vertex_descriptor end,
+ vector_property_map<
+ default_color_type,
+ typename property_map<Graph, vertex_index_t>::const_type
+ >* in_color,
+ vector_property_map<
+ float,
+ typename property_map<Graph, vertex_index_t>::const_type
+ >* in_priority,
+ float weight1,
+ float weight2)
+{
+ typedef typename graph_traits<Graph>::degree_size_type degree_size_type;
+
+ typedef typename property_map<Graph, vertex_index_t>::const_type
+ VertexIndexMap;
+ typedef vector_property_map<default_color_type, VertexIndexMap> ColorMap;
+ typedef vector_property_map<float, VertexIndexMap> PriorityMap;
+ typedef vector_property_map<degree_size_type, VertexIndexMap>
+ OutDegreeMap;
+
+ // Out-degree map
+ OutDegreeMap out_degree_map(num_vertices(g), get(vertex_index, g));
+ BGL_FORALL_VERTICES_T(v, g, Graph)
+ put(out_degree_map, v, out_degree(v, g));
+
+ ColorMap color = in_color ? *in_color
+ : ColorMap(num_vertices(g), get(vertex_index, g));
+
+ PriorityMap priority = in_priority ? *in_priority
+ : PriorityMap(num_vertices(g), get(vertex_index, g));
+
+ boost::python::list result;
+ boost::sloan_ordering(g, start, end, list_append_iterator(result),
+ color, out_degree_map, priority, weight1, weight2);
+ return result;
+}
+
+template<typename Graph>
+boost::python::tuple
+sloan_se(Graph &g,
+ typename graph_traits<Graph>::vertex_descriptor s)
+{
+ typedef typename graph_traits<Graph>::degree_size_type degree_size_type;
+
+ typedef typename property_map<Graph, vertex_index_t>::const_type
+ VertexIndexMap;
+ typedef vector_property_map<default_color_type, VertexIndexMap> ColorMap;
+ typedef vector_property_map<degree_size_type, VertexIndexMap>
+ OutDegreeMap;
+
+ typename graph_traits<Graph>::vertex_descriptor s2 = s;
+ typename graph_traits<Graph>::vertex_descriptor e;
+
+
+ // Out-degree map
+ OutDegreeMap out_degree_map(num_vertices(g), get(vertex_index, g));
+ BGL_FORALL_VERTICES_T(v, g, Graph)
+ put(out_degree_map, v, out_degree(v, g));
+
+ ColorMap color = ColorMap(num_vertices(g), get(vertex_index, g));
+
+ e = boost::sloan_start_end_vertices(g, s2, color, out_degree_map);
+
+ return boost::python::make_tuple(s, e);
+}
+
+void export_sloan_ordering()
+{
+ using boost::python::arg;
+ using boost::python::def;
+
+#define UNDIRECTED_GRAPH(Name,Type) \
+ { \
+ typedef property_map<Graph, vertex_index_t>::const_type VertexIndexMap; \
+ typedef vector_property_map<default_color_type, VertexIndexMap> ColorMap; \
+ typedef vector_property_map<float, VertexIndexMap> PriorityMap; \
+ \
+ def("sloan_ordering", \
+ &sloan_ordering<Type>, \
+ (arg("graph"), \
+ arg("color_map") = static_cast<ColorMap*>(0), \
+ arg("priority_map") = static_cast<PriorityMap*>(0), \
+ arg("weight1") = 1.0, \
+ arg("weight2") = 2.0)); \
+ \
+ def("sloan_ordering", \
+ &sloan_ordering_se<Type>, \
+ (arg("graph"), \
+ arg("start"), \
+ arg("end"), \
+ arg("color_map") = static_cast<ColorMap*>(0), \
+ arg("priority_map") = static_cast<PriorityMap*>(0), \
+ arg("weight1") = 1.0, \
+ arg("weight2") = 2.0)); \
+ \
+ def("sloan_start_end_vertices", \
+ &sloan_se<Type>, \
+ (arg("graph"), \
+ arg("start_vertex"))); \
+ \
+ }
+#define DIRECTED_GRAPH(Name,Type)
+#include "graphs.hpp"
+}
+
+} } } // end namespace boost::graph::python

Added: sandbox/SOC/2008/BGL_Python/src/sparse_spectrum.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/sparse_spectrum.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,70 @@
+#include <boost/graph/sparse_spectrum.hpp>
+#include "graph_types.hpp"
+#include <boost/graph/python/graph.hpp>
+#include <boost/python.hpp>
+#include <vector>
+
+namespace boost { namespace graph { namespace python {
+
+template <typename Graph>
+boost::python::tuple
+sparse_spectrum
+ (Graph& g,
+ int first_eigenvector_index,
+ int num_eigenvectors,
+ double rel_tol = 100,
+ double abs_tol = 1000)
+{
+ using std::vector;
+ using boost::python::object;
+
+ typedef typename property_map<Graph, vertex_index_t>::const_type VertexIndexMap;
+ typedef vector_property_map<vertex_index_t, VertexIndexMap> IndexMap;
+ typedef std::vector<double> Vector;
+
+ int N = num_vertices(g);
+ std::vector<Vector> evecs(num_eigenvectors);
+ for (int i = 0; i < num_eigenvectors; i++)
+ evecs[i] = *(new Vector(N));
+ std::vector<double> evals(num_eigenvectors);
+
+ using namespace boost::detail;
+
+ boost::sparse_spectrum<Graph, std::vector<Vector> >(g, first_eigenvector_index, num_eigenvectors, evecs, evals, rel_tol, abs_tol);
+
+ boost::python::list *evec;
+
+ boost::python::list eigenvectors;
+ for(int i = 0; i < num_eigenvectors; i++) {
+ evec = new boost::python::list();
+ for (int j = 0; j < N; j++)
+ evec->append(evecs[i][j]);
+ eigenvectors.append(*evec);
+ }
+
+ boost::python::list eigenvalues;
+ for(int i = 0; i < num_eigenvectors; i++) {
+ eigenvalues.append(evals[i]);
+ }
+
+ return boost::python::make_tuple(eigenvalues, eigenvectors);
+}
+
+void export_sparse_spectrum()
+{
+ using boost::python::arg;
+ using boost::python::def;
+ using boost::python::object;
+
+ def("sparse_spectrum",
+ &sparse_spectrum<Graph>,
+ (arg("graph"),
+ arg("first_eigenvector_index") = (int)1,
+ arg("num_eigenvectors") = (int)1,
+ arg("rel_tol") = (double)100,
+ arg("abs_tol") = (double)1000)
+ );
+
+}
+
+} } } // end namespace boost::graph::python

Added: sandbox/SOC/2008/BGL_Python/src/spectral_embedding_3d_layout.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/spectral_embedding_3d_layout.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,46 @@
+#include <boost/graph/spectral_embedding_3d_layout.hpp>
+#include "graph_types.hpp"
+#include <boost/graph/python/point2d.hpp>
+#include <boost/graph/python/point3d.hpp>
+#include <boost/graph/python/graph.hpp>
+#include <boost/python.hpp>
+
+namespace boost { namespace graph { namespace python {
+
+template <typename Graph>
+void
+spectral_embedding_3d_layout
+ (Graph& g,
+ const vector_property_map<point3d, typename Graph::VertexIndexMap>* in_pos,
+ double rel_tol = 1000,
+ double abs_tol = 10000)
+{
+ using boost::python::object;
+
+ typedef typename property_map<Graph, vertex_index_t>::const_type VertexIndexMap;
+ typedef vector_property_map<point3d, VertexIndexMap> PositionMap;
+ typedef vector_property_map<vertex_index_t, VertexIndexMap> IndexMap;
+
+ PositionMap pos = *in_pos;
+
+ boost::spectral_embedding_layout(g, pos);
+}
+
+void export_spectral_embedding_3d_layout()
+{
+ using boost::python::arg;
+ using boost::python::def;
+ using boost::python::object;
+
+ def("spectral_embedding_3d_layout",
+ &spectral_embedding_3d_layout<Graph>,
+ (arg("graph"),
+ arg("position") =
+ (vector_property_map<point3d, Graph::VertexIndexMap>*)0,
+ arg("rel_tol") = (double)1000,
+ arg("abs_tol") = (double)10000)
+ );
+
+}
+
+} } } // end namespace boost::graph::python

Added: sandbox/SOC/2008/BGL_Python/src/spectral_embedding_layout.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/spectral_embedding_layout.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,41 @@
+#include <boost/graph/spectral_embedding_3d_layout.hpp>
+#include "graph_types.hpp"
+#include <boost/graph/python/point2d.hpp>
+#include <boost/graph/python/point3d.hpp>
+#include <boost/graph/python/graph.hpp>
+#include <boost/python.hpp>
+
+namespace boost { namespace graph { namespace python {
+
+template <typename Graph>
+void
+spectral_embedding_layout
+ (Graph& g,
+ const vector_property_map<point3d, typename Graph::VertexIndexMap>* in_pos)
+{
+ using boost::python::object;
+
+ typedef typename property_map<Graph, vertex_index_t>::const_type VertexIndexMap;
+ typedef vector_property_map<point3d, VertexIndexMap> PositionMap;
+ typedef vector_property_map<vertex_index_t, VertexIndexMap> IndexMap;
+
+ PositionMap pos = *in_pos;
+
+ boost::spectral_embedding_layout(g, pos);
+}
+
+void export_spectral_embedding_layout()
+{
+ using boost::python::arg;
+ using boost::python::def;
+ using boost::python::object;
+
+ def("spectral_embedding_layout",
+ &spectral_embedding_layout<Graph>,
+ (arg("graph"),
+ arg("position") =
+ (vector_property_map<point2d, Graph::VertexIndexMap>*)0));
+
+}
+
+} } } // end namespace boost::graph::python

Added: sandbox/SOC/2008/BGL_Python/src/spectrum.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/spectrum.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,68 @@
+#include <boost/graph/spectrum.hpp>
+#include "graph_types.hpp"
+#include <boost/graph/python/graph.hpp>
+#include <boost/python.hpp>
+#include <vector>
+
+namespace boost { namespace graph { namespace python {
+
+template <typename Graph>
+boost::python::tuple
+spectrum
+ (Graph& g,
+ int first_eigenvector_index,
+ int num_eigenvectors,
+ double rel_tol = 100,
+ double abs_tol = 1000)
+{
+ using std::vector;
+ using boost::python::object;
+
+ typedef typename property_map<Graph, vertex_index_t>::const_type VertexIndexMap;
+ typedef vector_property_map<vertex_index_t, VertexIndexMap> IndexMap;
+ typedef std::vector<double> Vector;
+
+ int N = num_vertices(g);
+ std::vector<Vector> evecs(num_eigenvectors);
+ for (int i = 0; i < num_eigenvectors; i++)
+ evecs[i] = *(new Vector(N));
+ std::vector<double> evals(num_eigenvectors);
+
+ boost::spectrum<Graph, std::vector<Vector> >(g, first_eigenvector_index, num_eigenvectors, evecs, evals, rel_tol, abs_tol);
+
+ boost::python::list *evec;
+
+ boost::python::list eigenvectors;
+ for(int i = 0; i < num_eigenvectors; i++) {
+ evec = new boost::python::list();
+ for (int j = 0; j < N; j++)
+ evec->append(evecs[i][j]);
+ eigenvectors.append(*evec);
+ }
+
+ boost::python::list eigenvalues;
+ for(int i = 0; i < num_eigenvectors; i++) {
+ eigenvalues.append(evals[i]);
+ }
+
+ return boost::python::make_tuple(eigenvalues, eigenvectors);
+}
+
+void export_spectrum()
+{
+ using boost::python::arg;
+ using boost::python::def;
+ using boost::python::object;
+
+ def("spectrum",
+ &spectrum<Graph>,
+ (arg("graph"),
+ arg("first_eigenvector_index") = (int)1,
+ arg("num_eigenvectors") = (int)1,
+ arg("rel_tol") = (double)100,
+ arg("abs_tol") = (double)1000)
+ );
+
+}
+
+} } } // end namespace boost::graph::python

Added: sandbox/SOC/2008/BGL_Python/src/strong_components.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/strong_components.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,34 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#include "graph_types.hpp"
+#include <boost/graph/python/strong_components.hpp>
+
+namespace boost { namespace graph { namespace python {
+
+void export_strong_components()
+{
+ using boost::python::arg;
+ using boost::python::def;
+
+#define UNDIRECTED_GRAPH(Name,Type)
+#define DIRECTED_GRAPH(Name,Type) \
+ { \
+ typedef property_map<Type, vertex_index_t>::const_type VertexIndexMap; \
+ typedef vector_property_map<int, VertexIndexMap> \
+ VertexColorMap; \
+ \
+ def("strong_components", \
+ &boost::graph::python::strong_components<Type>, \
+ (arg("graph"), \
+ arg("color_map") = static_cast<VertexColorMap*>(0))); \
+ }
+#include "graphs.hpp"
+}
+
+} } } // end namespace boost::graph::python

Added: sandbox/SOC/2008/BGL_Python/src/support.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/support.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,67 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#include <boost/python.hpp>
+#include <boost/graph/python/point2d.hpp>
+#include <boost/graph/python/point3d.hpp>
+#include <boost/graph/properties.hpp>
+
+namespace boost { namespace graph { namespace python {
+
+template<typename T, typename Key, typename Value>
+Value get_subscript_key_value(const T& t, const Key& key)
+{
+ return t[key];
+}
+
+template<typename T, typename Key, typename Value>
+void set_subscript_key_value(T& t, const Key& key, const Value& value)
+{
+ t[key] = value;
+}
+
+BOOST_PYTHON_MODULE(_support)
+{
+ using boost::python::class_;
+ using boost::python::enum_;
+ using boost::python::init;
+
+ class_<point2d>("Point2D",
+ "A simple two-dimensional point for vertex positions")
+ .def(init<float, float>("Point2D(x, y)\nCreates a new point (x, y)."))
+ .def("__getitem__", &get_subscript_key_value<point2d, std::size_t, float>,
+ "__getitem__(self, dim) -> float\n"
+ "Returns the value in the given dimension.")
+ .def("__setitem__", &set_subscript_key_value<point2d, std::size_t, float>,
+ "__setitem__(self, dim, value)\nSets the value in a given dimension.")
+ .def("__len__", &point_traits<point2d>::dimensions,
+ "__len__(self) -> int\nReturns the number of dimensions (2).")
+ ;
+ class_<point3d>("Point3D",
+ "A simple three-dimensional point for vertex positions")
+ .def(init<float, float, float>("Point3D(x, y, z)\n"
+ "Creates a new point (x, y, z)."))
+ .def("__getitem__", &get_subscript_key_value<point3d, std::size_t, float>,
+ "__getitem__(self, dim) -> float\n"
+ "Returns the value in the given dimension.")
+ .def("__setitem__", &set_subscript_key_value<point3d, std::size_t, float>,
+ "__setitem__(self, dim, value)\nSets the value in a given dimension.")
+ .def("__len__", &point_traits<point3d>::dimensions,
+ "__len__(self) -> int\nReturns the number of dimensions (3).")
+ ;
+
+ enum_<default_color_type>("Color")
+ .value("white", color_traits<default_color_type>::white())
+ .value("gray", color_traits<default_color_type>::gray())
+ .value("green", color_traits<default_color_type>::green())
+ .value("red", color_traits<default_color_type>::red())
+ .value("black", color_traits<default_color_type>::black())
+ ;
+}
+
+} } } // end namespace boost::graph::python

Added: sandbox/SOC/2008/BGL_Python/src/topological_sort.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/topological_sort.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,54 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#include <boost/graph/topological_sort.hpp>
+#include "graph_types.hpp"
+#include <boost/python.hpp>
+#include <boost/graph/python/list_append_iterator.hpp>
+
+namespace boost { namespace graph { namespace python {
+
+using boost::python::list;
+
+template<typename Graph>
+list
+topological_sort
+ (const Graph& g,
+ vector_property_map<
+ default_color_type,
+ typename property_map<Graph, vertex_index_t>::const_type>* in_color)
+{
+ typedef vector_property_map<
+ default_color_type,
+ typename property_map<Graph, vertex_index_t>::const_type> ColorMap;
+
+ ColorMap color =
+ in_color? *in_color : ColorMap(num_vertices(g), get(vertex_index, g));
+
+ list result;
+ boost::topological_sort(g, list_append_iterator(result), color_map(color));
+ return result;
+}
+
+void export_topological_sort()
+{
+ using boost::python::arg;
+ using boost::python::def;
+
+#define UNDIRECTED_GRAPH(Name,Type) \
+ { \
+ typedef vector_property_map< \
+ default_color_type, \
+ property_map<Graph, vertex_index_t>::const_type> ColorMap; \
+ def("topological_sort", &topological_sort<Type>, \
+ (arg("graph"), arg("color_map") = static_cast<ColorMap*>(0))); \
+ }
+#include "graphs.hpp"
+}
+
+} } } // end namespace boost::graph::python

Added: sandbox/SOC/2008/BGL_Python/src/transitive_closure.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/src/transitive_closure.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,55 @@
+// Copyright 2005 The Trustees of Indiana University.
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// Authors: Douglas Gregor
+// Andrew Lumsdaine
+#include <boost/graph/transitive_closure.hpp>
+#include "graph_types.hpp"
+#include <boost/python.hpp>
+#include <list>
+#include <iterator>
+
+namespace boost { namespace graph { namespace python {
+
+template<typename Graph>
+boost::python::object
+transitive_closure
+ (const Graph& g,
+ vector_property_map<
+ typename graph_traits<Graph>::vertex_descriptor,
+ typename property_map<Graph, vertex_index_t>::const_type>* g_to_tc_map)
+{
+ boost::python::object result = Graph::pyconstruct();
+ Graph& tc = boost::python::extract<Graph&>(result)();
+ if (g_to_tc_map)
+ boost::transitive_closure(g, tc, *g_to_tc_map, get(vertex_index, g));
+ else
+ boost::transitive_closure(g, tc);
+ return result;
+}
+
+void export_transitive_closure()
+{
+ using boost::python::arg;
+ using boost::python::def;
+ using boost::python::manage_new_object;
+ using boost::python::return_value_policy;
+
+#define UNDIRECTED_GRAPH(Name,Type)
+#define DIRECTED_GRAPH(Name,Type) \
+ { \
+ typedef vector_property_map< \
+ graph_traits<Type>::vertex_descriptor, \
+ property_map<Type, vertex_index_t>::const_type> \
+ OrigToCopyMap; \
+ \
+ def("transitive_closure", &transitive_closure<Type>, \
+ (arg("graph"), arg("orig_to_copy") = static_cast<OrigToCopyMap*>(0))); \
+ }
+#include "graphs.hpp"
+}
+
+} } } // end namespace boost::graph::python

Added: sandbox/SOC/2008/BGL_Python/test/distributed/boman_et_al_graph_coloring.py
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/test/distributed/boman_et_al_graph_coloring.py 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,21 @@
+# Copyright 2005 The Trustees of Indiana University.
+
+# Use, modification and distribution is subject to the Boost Software
+# License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+# http:#www.boost.org/LICENSE_1_0.txt)
+
+# Authors: Douglas Gregor
+# Andrew Lumsdaine
+
+# So we can find the BGL Python bindings
+import sys
+sys.path.append("../../python")
+
+import boost.graph.distributed as pbgl
+
+# Build an Erdos-Renyi graph
+g = pbgl.undirected_erdos_renyi_graph(100, 0.02)
+
+# Color the vertices
+pbgl.boman_et_al_graph_coloring(g)
+

Added: sandbox/SOC/2008/BGL_Python/test/distributed/breadth_first_search.py
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/test/distributed/breadth_first_search.py 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,38 @@
+# Copyright 2005 The Trustees of Indiana University.
+
+# Use, modification and distribution is subject to the Boost Software
+# License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+# http:#www.boost.org/LICENSE_1_0.txt)
+
+# Authors: Douglas Gregor
+# Andrew Lumsdaine
+
+# So we can find the BGL Python bindings
+import sys
+sys.path.append("../../python")
+
+import boost.graph.distributed as pbgl
+
+def run(g):
+ # Get the first vertex in the graph
+ s = g.vertex(0)
+
+ # Run a simple BFS
+ pbgl.breadth_first_search(g, s)
+
+ # Run a simple BFS with an empty visitor
+ pbgl.breadth_first_search(g, s, visitor = pbgl.bfs_visitor())
+
+ # Run a BFS with a tree-printing visitor
+ class vis(pbgl.bfs_visitor):
+ def __init__(self):
+ self.edges = list()
+
+ def tree_edge(self, e, g):
+ self.edges.append(e)
+
+ pbgl.breadth_first_search(g, s, visitor = vis())
+
+# Build an Erdos-Renyi graph
+run(pbgl.undirected_erdos_renyi_graph(100, 0.02))
+run(pbgl.directed_erdos_renyi_graph(100, 0.02))

Added: sandbox/SOC/2008/BGL_Python/test/distributed/connected_components.py
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/test/distributed/connected_components.py 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,21 @@
+# Copyright 2005 The Trustees of Indiana University.
+
+# Use, modification and distribution is subject to the Boost Software
+# License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+# http:#www.boost.org/LICENSE_1_0.txt)
+
+# Authors: Douglas Gregor
+# Andrew Lumsdaine
+
+# So we can find the BGL Python bindings
+import sys
+sys.path.append("../../python")
+
+import boost.graph.distributed as pbgl
+
+# Build an Erdos-Renyi graph
+g = pbgl.undirected_erdos_renyi_graph(100, 0.02)
+
+# Color the vertices
+pbgl.connected_components(g)
+

Added: sandbox/SOC/2008/BGL_Python/test/distributed/data/4elt.graph
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/test/distributed/data/4elt.graph 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,15607 @@
+15606 45878
+ 2 3 6 7
+ 1 4 6 9
+ 1 5 7 11
+ 2 9 12 14
+ 3 8 11 15
+ 1 2 7 9 13
+ 1 3 6 11 13 17
+ 5 10 15 18
+ 2 4 6 13 14 19
+ 8 16 18 21
+ 3 5 7 15 17 23 24
+ 4 14 20 26 33
+ 6 7 9 17 19 22
+ 4 9 12 19 26 27
+ 5 8 11 18 24 28
+ 10 21 25 32
+ 7 11 13 22 23 31
+ 8 10 15 21 28 30
+ 9 13 14 22 27 29
+ 12 33 45
+ 10 16 18 30 32 40
+ 13 17 19 29 31 34
+ 11 17 24 31 35 36
+ 11 15 23 28 35 38
+ 16 32 61 62
+ 12 14 27 33 39 47
+ 14 19 26 29 37 39
+ 15 18 24 30 38 42
+ 19 22 27 34 37 41
+ 18 21 28 40 42 51
+ 17 22 23 34 36 43 44
+ 16 21 25 40 62 70
+ 12 20 26 45 47 69
+ 22 29 31 41 44 46
+ 23 24 36 38 48 50
+ 23 31 35 43 48 54
+ 27 29 39 41 52 53
+ 24 28 35 42 50 56
+ 26 27 37 47 53 66
+ 21 30 32 51 70 76
+ 29 34 37 46 49 52
+ 28 30 38 51 56 60
+ 31 36 44 54 55 63
+ 31 34 43 46 55 57
+ 20 33 69 120
+ 34 41 44 49 57 58
+ 26 33 39 66 69 91
+ 35 36 50 54 64 65
+ 41 46 52 58 59
+ 35 38 48 56 65 75
+ 30 40 42 60 76 85
+ 37 41 49 53 59 67
+ 37 39 52 66 67 87
+ 36 43 48 63 64 72
+ 43 44 57 63 68 73
+ 38 42 50 60 75 83
+ 44 46 55 58 68 71
+ 46 49 57 59 71 74
+ 49 52 58 67 74 80
+ 42 51 56 83 85 105
+ 25 62 150 176
+ 25 32 61 70 133 150
+ 43 54 55 72 73 79 84
+ 48 54 65 72 81 82
+ 48 50 64 75 81 99
+ 39 47 53 87 91 113
+ 52 53 59 80 87 104
+ 55 57 71 73 77 78
+ 33 45 47 91 120 168
+ 32 40 62 76 123 133
+ 57 58 68 74 77 86
+ 54 63 64 79 82 88
+ 55 63 68 78 84 89
+ 58 59 71 80 86 93
+ 50 56 65 83 99 108
+ 40 51 70 85 116 123
+ 68 71 78 86 90
+ 68 73 77 89 90 92
+ 63 72 84 88 94 96
+ 59 67 74 93 104 125
+ 64 65 82 99 101 110
+ 64 72 81 88 97 101
+ 56 60 75 105 108 132
+ 63 73 79 89 94 98
+ 51 60 76 105 116 148
+ 71 74 77 90 93 100
+ 53 66 67 104 113 135
+ 72 79 82 96 97 102
+ 73 78 84 92 95 98
+ 77 78 86 92 100 107
+ 47 66 69 113 168 211
+ 78 89 90 95 103 107
+ 74 80 86 100 124 125
+ 79 84 96 98 109 111
+ 89 92 98 103 106
+ 79 88 94 102 111 112
+ 82 88 101 102 114
+ 84 89 94 95 106 109
+ 65 75 81 108 110 131 141
+ 86 90 93 107 124 127
+ 81 82 97 110 114 122
+ 88 96 97 112 114 118
+ 92 95 106 107 115 121
+ 67 80 87 125 135 173
+ 60 83 85 132 148 200
+ 95 98 103 109 115 117
+ 90 92 100 103 121 127 130
+ 75 83 99 132 141 167
+ 94 98 106 111 117 119
+ 81 99 101 122 131 137
+ 94 96 109 112 119 126
+ 96 102 111 118 126 128
+ 66 87 91 135 211 270
+ 97 101 102 118 122 136
+ 103 106 117 121 129
+ 76 85 123 148 223
+ 106 109 115 119 129 134
+ 102 112 114 128 136 138
+ 109 111 117 126 134 139
+ 45 69 168 15200
+ 103 107 115 129 130 140
+ 101 110 114 136 137 146
+ 70 76 116 133 223 5176
+ 93 100 125 127 175 203
+ 80 93 104 124 173 203 1438
+ 111 112 119 128 139 142 143
+ 100 107 124 130 154 175
+ 112 118 126 138 142 145
+ 115 117 121 134 140 144
+ 107 121 127 140 152 154
+ 99 110 137 141 161 199
+ 83 105 108 167 200 410
+ 62 70 123 150 5176 15053
+ 117 119 129 139 144 147
+ 87 104 113 173 252 270
+ 114 118 122 138 146 149 158
+ 110 122 131 146 161 165
+ 118 128 136 145 149 151
+ 119 126 134 143 147 155
+ 121 129 130 144 152 159
+ 99 108 131 167 199 239
+ 126 128 143 145 156 157
+ 126 139 142 155 156 160
+ 129 134 140 147 159 164
+ 128 138 142 151 153 157
+ 122 136 137 158 165 174
+ 134 139 144 155 164 169
+ 85 105 116 200 223 5408
+ 136 138 151 158 163 171
+ 61 62 133 176 15053 15123
+ 138 145 149 153 162 163
+ 130 140 154 159 182 190
+ 145 151 157 162 166
+ 127 130 152 175 190 226
+ 139 143 147 160 169 180
+ 142 143 157 160 170 172
+ 142 145 153 156 166 170
+ 136 146 149 171 174 185
+ 140 144 152 164 182 186
+ 143 155 156 172 180 181
+ 131 137 165 199 201 253
+ 151 153 163 166 177 178
+ 149 151 162 171 178 184
+ 144 147 159 169 186 187
+ 137 146 161 174 201 204
+ 153 157 162 170 177 179
+ 108 132 141 239 410 5091
+ 69 91 120 211 15165 15200
+ 147 155 164 180 187 193
+ 156 157 166 172 179 183
+ 149 158 163 184 185 195
+ 156 160 170 181 183 188
+ 104 125 135 252 1438 6142
+ 146 158 165 185 204 208
+ 124 127 154 203 226 275
+ 61 150 15123
+ 162 166 178 179 189 191
+ 162 163 177 184 191 194
+ 166 170 177 183 189 192
+ 155 160 169 181 193 196 210
+ 160 172 180 188 196 198
+ 152 159 186 190 225 244
+ 170 172 179 188 192 197
+ 163 171 178 194 195 209
+ 158 171 174 195 208 216
+ 159 164 182 187 215 225
+ 164 169 186 193 215 219
+ 172 181 183 197 198 207
+ 177 179 191 192 202 205
+ 152 154 182 226 244 361
+ 177 178 189 194 202 206
+ 179 183 189 197 205 213
+ 169 180 187 210 219 233
+ 178 184 191 206 209 214
+ 171 184 185 209 216 229
+ 180 181 198 210 221 231
+ 183 188 192 207 213 218
+ 181 188 196 207 220 221
+ 131 141 161 239 253 4560 4672
+ 105 132 148 410 5408 7666
+ 161 165 204 253 295 460
+ 189 191 205 206 212 217
+ 124 125 175 275 1438 4201
+ 165 174 201 208 293 295
+ 189 192 202 212 213 222
+ 191 194 202 214 217 224
+ 188 197 198 218 220 230
+ 174 185 204 216 268 293
+ 184 194 195 214 229 235 246
+ 180 193 196 231 233 249
+ 91 113 168 270 15098 15165
+ 202 205 217 222 227
+ 192 197 205 218 222 234 243
+ 194 206 209 224 232 235
+ 186 187 219 225 245 264
+ 185 195 208 229 263 268
+ 202 206 212 224 227 228
+ 197 207 213 230 234 238
+ 187 193 215 233 245 262
+ 198 207 221 230 237 240
+ 196 198 220 231 240 247
+ 205 212 213 227 242 243
+ 116 123 148 5176 5408 15071
+ 206 214 217 228 232 236
+ 182 186 215 244 264 312
+ 154 175 190 275 361 2535
+ 212 217 222 228 241 242
+ 217 224 227 236 241
+ 195 209 216 246 263 277
+ 207 218 220 237 238 248
+ 196 210 221 247 249 267
+ 214 224 235 236 250 255
+ 193 210 219 249 262 284
+ 213 218 238 243 254 256
+ 209 214 232 246 255 265
+ 224 228 232 241 250 251
+ 220 230 240 248 259
+ 218 230 234 248 256 261
+ 141 167 199 4560 5091 6408
+ 220 221 237 247 259 266
+ 227 228 236 242 251 257
+ 222 227 241 243 257 258
+ 213 222 234 242 254 258 260
+ 182 190 225 312 361 4557
+ 215 219 262 264 302
+ 209 229 235 265 277 296
+ 221 231 240 266 267 287
+ 230 237 238 259 261 279
+ 210 231 233 267 284 301
+ 232 236 251 255 272 280
+ 236 241 250 257 269 272
+ 135 173 270 6142 12330
+ 161 199 201 460 4672 4995
+ 234 243 256 260 271 274
+ 232 235 250 265 280 290
+ 234 238 254 261 271 273
+ 241 242 251 258 269 276
+ 242 243 257 260 276 278
+ 237 240 248 266 279 282
+ 243 254 258 274 278 289
+ 238 248 256 273 279 283
+ 219 233 245 284 302 446
+ 216 229 268 277 307 372
+ 215 225 245 302 312 894
+ 235 246 255 290 296 316
+ 240 247 259 282 287 313
+ 231 247 249 287 301 338
+ 208 216 263 293 372 1146
+ 251 257 272 276 286 291
+ 113 135 211 252 12330 15098
+ 254 256 273 274 281 285
+ 250 251 269 280 286 297
+ 256 261 271 281 283 288
+ 254 260 271 285 289 298
+ 175 203 226 2535 4201 5293
+ 257 258 269 278 291 292
+ 229 246 263 296 307 348
+ 258 260 276 289 292 304
+ 248 259 261 282 283 311 314
+ 250 255 272 290 297 324
+ 271 273 285 288 294
+ 259 266 279 313 314 346
+ 261 273 279 288 306 310 311
+ 233 249 262 301 446 1168
+ 271 274 281 294 298 299
+ 269 272 291 297 317
+ 247 266 267 313 338 396
+ 273 281 283 294 300 305 306 308
+ 260 274 278 298 304 323 329
+ 255 265 280 316 324 544
+ 269 276 286 292 317 328
+ 276 278 291 304 327 328
+ 204 208 268 295 1146 2565 3697
+ 281 285 288 299 300 303
+ 201 204 293 460 2565 3878
+ 246 265 277 316 348 527
+ 272 280 286 317 324 370
+ 274 285 289 299 319 323 337
+ 285 294 298 303 315 319
+ 288 294 303 305 309
+ 249 267 284 338 882 1168
+ 245 262 264 446 894 1987
+ 294 299 300 309 315 318
+ 278 289 292 327 329 344
+ 288 300 308 309 320
+ 283 288 308 310 321 331
+ 263 277 348 372 612
+ 288 305 306 320 321
+ 300 303 305 318 320 322
+ 283 306 311 331 342
+ 279 283 310 314 342 353
+ 225 244 264 894 4557 4780
+ 266 282 287 346 396 621
+ 279 282 311 346 353 435
+ 299 303 318 319 325
+ 265 290 296 527 544 813
+ 286 291 297 328 370 428
+ 303 309 315 322 325 326
+ 298 299 315 325 333 337 341
+ 305 308 309 321 322 330 332
+ 306 308 320 331 332 336
+ 309 318 320 326 330 334
+ 289 298 329 337 355 356 375
+ 280 290 297 370 544 797
+ 315 318 319 326 333 335
+ 318 322 325 334 335 339
+ 292 304 328 344 397 520
+ 291 292 317 327 428 520
+ 289 304 323 344 355 367
+ 320 322 332 334 340 343
+ 306 310 321 336 342 358 368
+ 320 321 330 336 340 350
+ 319 325 335 341 349 351
+ 322 326 330 339 343 347
+ 325 326 333 339 345 349
+ 321 331 332 350 358 363
+ 298 319 323 341 356 366 374
+ 267 287 301 396 882 1028
+ 326 334 335 345 347 352
+ 330 332 343 350 357
+ 319 333 337 351 364 366
+ 310 311 331 353 368 458 466
+ 330 334 340 347 357 362
+ 304 327 329 367 397 418
+ 335 339 349 352 354
+ 282 313 314 435 621 956
+ 334 339 343 352 359 362
+ 277 296 307 527 612 1264
+ 333 335 345 351 354 360
+ 332 336 340 357 363 371
+ 333 341 349 360 364 369
+ 339 345 347 354 359 365
+ 311 314 342 435 458 656
+ 345 349 352 360 365 373
+ 323 329 367 375 409
+ 323 337 374 375 390 405 411
+ 340 343 350 362 371 381 382
+ 331 336 363 368 392 393
+ 347 352 362 365 377 378
+ 349 351 354 369 373 376
+ 190 226 244 2535 4557 5550
+ 343 347 357 359 377 380 381
+ 336 350 358 371 387 393
+ 341 351 366 369 385 386
+ 352 354 359 373 378 379
+ 337 341 364 374 386 404 408 413
+ 329 344 355 409 418 450
+ 331 342 358 392 453 466
+ 351 360 364 376 383 385
+ 297 317 324 428 797 809
+ 350 357 363 382 387 389
+ 263 268 307 612 1146 2062
+ 354 360 365 376 379 384
+ 337 356 366 404 411 414
+ 323 355 356 390 409 419
+ 360 369 373 383 384 388
+ 359 362 378 380 391 400
+ 359 365 377 379 394 400
+ 365 373 378 384 394 398
+ 362 377 381 391 395
+ 357 362 380 382 395 401
+ 357 371 381 389 401 406
+ 369 376 385 388 399 403
+ 373 376 379 388 398 402
+ 364 369 383 386 403 421
+ 364 366 385 413 421 424
+ 363 371 389 393 412 416
+ 376 383 384 399 402
+ 371 382 387 406 416 427
+ 356 375 405 419 451
+ 377 380 395 400 407 417
+ 358 368 393 437 453 470
+ 358 363 387 392 412 429 437
+ 378 379 398 400 415 423
+ 380 381 391 401 407 422
+ 287 313 338 621 1028 1249
+ 327 344 418 520 680 721
+ 379 384 394 402 415 420
+ 383 388 402 403 425 426
+ 377 378 391 394 417 423 432
+ 381 382 395 406 422 430
+ 384 388 398 399 420 425
+ 383 385 399 421 426 433
+ 366 374 408 414 436 439
+ 356 390 411 447 451
+ 382 389 401 427 430 445
+ 391 395 417 422 434
+ 366 404 413 431 436
+ 355 367 375 419 450 494 507
+ 132 167 200 5091 7666 13608
+ 356 374 405 414 447 457
+ 387 393 416 429 444
+ 366 386 408 424 431 438
+ 374 404 411 439 457 464
+ 394 398 420 423 440 441
+ 387 389 412 427 444 459
+ 391 400 407 432 434 448
+ 344 367 397 450 598 680
+ 375 390 409 451 478 494
+ 398 402 415 425 441 442
+ 385 386 403 424 433 454 456
+ 395 401 407 430 434 452
+ 394 400 415 432 440 449
+ 386 413 421 438 454 463
+ 399 402 420 426 442 443
+ 399 403 425 433 443 455
+ 389 406 416 445 459 474
+ 317 328 370 520 809 870
+ 393 412 437 444 479
+ 401 406 422 445 452 473
+ 408 413 436 438 461
+ 400 417 423 448 449 462
+ 403 421 426 455 456 472
+ 407 417 422 448 452 465
+ 314 346 353 656 908 956
+ 404 408 431 439 461 477
+ 392 393 429 470 479 508
+ 413 424 431 461 463 476
+ 404 414 436 464 477 487
+ 415 423 441 449 468 471
+ 415 420 440 442 467 468
+ 420 425 441 443 467 469
+ 425 426 442 455 469 475
+ 412 416 429 459 479 490
+ 406 427 430 473 474 496
+ 262 284 302 1168 1987 3287
+ 405 411 451 457 501 505
+ 417 432 434 462 465 481
+ 423 432 440 462 471 480
+ 367 409 418 507 588 598
+ 390 405 419 447 478 505 517
+ 422 430 434 465 473 483
+ 368 392 466 470 545 553
+ 421 424 456 463 482 484
+ 426 433 443 472 475 485
+ 421 433 454 472 482 492
+ 411 414 447 464 500 501
+ 342 353 466 550 607 656 690
+ 416 427 444 474 490 506
+ 201 253 295 3878 4995 5317
+ 431 436 438 476 477 486
+ 432 448 449 480 481 495
+ 424 438 454 476 484 493
+ 414 439 457 487 500 518
+ 434 448 452 481 483 499
+ 342 368 453 458 550 553
+ 441 442 468 469 488 489
+ 440 441 467 471 489 491
+ 442 443 467 475 488 497
+ 392 437 453 508 545 559
+ 440 449 468 480 491 498
+ 433 455 456 485 492 504
+ 430 445 452 483 496 525
+ 427 445 459 496 506 526
+ 443 455 469 485 497 503
+ 438 461 463 486 493 502
+ 436 439 461 486 487 511
+ 419 451 494 517 557
+ 429 437 444 490 508 536
+ 449 462 471 495 498 509
+ 448 462 465 495 499 510
+ 454 456 484 492 515 522
+ 452 465 473 499 525 532
+ 454 463 482 493 515 519
+ 455 472 475 503 504 523
+ 461 476 477 502 511 528
+ 439 464 477 511 518 533
+ 467 469 489 497 512 516
+ 467 468 488 491 512 513
+ 444 459 479 506 536 542
+ 468 471 489 498 513 521
+ 456 472 482 504 522 530
+ 463 476 484 502 514 519
+ 409 419 478 507 557 587
+ 462 480 481 509 510 529
+ 445 473 474 525 526 547
+ 469 475 488 503 516 524
+ 471 480 491 509 521 531
+ 465 481 483 510 532 538
+ 457 464 501 518 552 554
+ 447 457 500 505 548 552
+ 476 486 493 514 528 535
+ 475 485 497 523 524 534
+ 472 485 492 523 530 537
+ 447 451 501 517 548 561
+ 459 474 490 526 542 560
+ 409 450 494 587 588 641
+ 437 470 479 536 559 578
+ 480 495 498 529 531 539
+ 481 495 499 529 538 546
+ 477 486 487 528 533 555 565
+ 488 489 513 516
+ 489 491 512 521
+ 493 502 519 535 540
+ 482 484 519 522 541 543
+ 488 497 512 524
+ 451 478 505 557 561 590
+ 464 487 500 533 554 564
+ 484 493 514 515 540 541
+ 327 328 397 428 721 870 920
+ 491 498 513 531
+ 482 492 515 530 543 551
+ 485 503 504 534 537 549
+ 497 503 516 534
+ 473 483 496 532 547 563 574
+ 474 496 506 547 560 576
+ 296 316 348 813 1264 15299
+ 486 502 511 535 555 15286
+ 495 509 510 539 546 556
+ 492 504 522 537 551 558
+ 498 509 521 539
+ 483 499 525 538 563 566
+ 487 511 518 564 565 570
+ 503 523 524 549
+ 502 514 528 540 562 15286
+ 479 490 508 542 578 591
+ 504 523 530 549 558 567
+ 499 510 532 546 566 569
+ 509 529 531 556
+ 514 519 535 541 562 568
+ 515 519 540 543 568 571
+ 490 506 536 560 581 591
+ 515 522 541 551 571 572
+ 290 316 324 797 813 1495 1656
+ 453 470 553 559 633 635
+ 510 529 538 556 569 573
+ 496 525 526 574 576 599
+ 501 505 552 561 583 597
+ 523 534 537 567
+ 458 466 553 607 642
+ 522 530 543 558 572 575
+ 500 501 548 554 577 583
+ 453 466 545 550 635 642
+ 500 518 552 564 577 585 600
+ 511 528 565 580 584 15286
+ 529 539 546 573
+ 478 494 517 587 590 650
+ 530 537 551 567 575 579
+ 470 508 545 578 633 645
+ 506 526 542 576 581 604
+ 505 517 548 590 597 623
+ 535 540 568 582 586 15286
+ 525 532 566 574 594 605
+ 518 533 554 570 585 602
+ 511 533 555 570 584 592
+ 532 538 563 569 593 594
+ 537 549 558 579
+ 540 541 562 571 586 589
+ 538 546 566 573 593 596
+ 533 564 565 592 602
+ 541 543 568 572 589 595
+ 543 551 571 575 595 601
+ 546 556 569 596
+ 525 547 563 599 605 622
+ 551 558 572 579 601 603
+ 526 547 560 599 604 615
+ 552 554 583 600 606
+ 508 536 559 591 644 645
+ 558 567 575 603
+ 555 582 584 608 610 15286
+ 542 560 591 604 629
+ 562 580 586 608 611 15286
+ 548 552 577 597 606 618
+ 555 565 580 592 610 614
+ 554 564 600 602 626 627
+ 562 568 582 589 611 613
+ 494 507 557 641 650 672
+ 450 507 598 641 674 696
+ 568 571 586 595 613 616
+ 517 557 561 623 650 673
+ 536 542 578 581 629 644
+ 565 570 584 602 609 614
+ 566 569 594 596 617 619
+ 563 566 593 605 619 628
+ 571 572 589 601 616 620
+ 569 573 593 617
+ 548 561 583 618 623 634
+ 418 450 588 680 696 753
+ 547 574 576 615 622 625
+ 554 577 585 606 627 631
+ 572 575 595 603 620 624
+ 564 570 585 592 609 626 632
+ 575 579 601 624
+ 560 576 581 615 629 653
+ 563 574 594 622 628 648
+ 577 583 600 618 630 631
+ 458 550 642 690 714
+ 580 582 610 611 636 638
+ 592 602 614 632 637
+ 580 584 608 614 638 640
+ 582 586 608 613 636 639
+ 307 348 372 1264 2062 2078
+ 586 589 611 616 639 643
+ 584 592 609 610 637 640
+ 576 599 604 625 653 654
+ 589 595 613 620 643 646
+ 593 596 619 647
+ 583 597 606 630 634 651
+ 593 594 617 628 647 652
+ 595 601 616 624 646 649
+ 313 346 396 956 1249 1576
+ 574 599 605 625 648 655
+ 561 590 597 634 667 673
+ 601 603 620 649
+ 599 615 622 654 655
+ 585 602 627 632 658 669
+ 585 600 626 631 659 669
+ 594 605 619 648 652 665
+ 581 591 604 644 653 679
+ 606 618 631 651 657
+ 600 606 627 630 657 659
+ 602 609 626 637 658 660
+ 545 559 635 645 713 715
+ 597 618 623 651 667 668
+ 545 553 633 642 713 717
+ 608 611 638 639 661 662
+ 609 614 632 640 660 15287
+ 608 610 636 640 662 664
+ 611 613 636 643 661 663
+ 610 614 637 638 664 15287
+ 507 587 588 672 674 700
+ 550 553 607 635 714 717
+ 613 616 639 646 663 666
+ 578 591 629 645 679 724
+ 559 578 633 644 715 724
+ 616 620 643 649 666 670
+ 617 619 652 671
+ 605 622 628 655 665 676
+ 620 624 646 670
+ 557 587 590 672 673 719 728
+ 618 630 634 657 668 675
+ 619 628 647 665 671 677
+ 604 615 629 654 679 699
+ 615 625 653 655 685 699
+ 622 625 648 654 676 685
+ 353 435 458 690 848 908 1013
+ 630 631 651 659 675 678
+ 626 632 660 669 681 691
+ 627 631 657 669 678 688
+ 632 637 658 681 682 15287
+ 636 639 662 663 683 15288
+ 636 638 661 664 687 15288
+ 639 643 661 666 683 684
+ 638 640 662 686 687 15287
+ 628 648 652 676 677 693
+ 643 646 663 670 684 689
+ 623 634 668 673 695 720
+ 634 651 667 675 695 15289
+ 626 627 658 659 688 691 697
+ 646 649 666 689
+ 647 652 677 692
+ 587 641 650 700 728 748
+ 590 623 650 667 719 720 739
+ 588 641 696 700 743
+ 651 657 668 678 694 15289
+ 648 655 665 685 693 704
+ 652 665 671 692 693 701
+ 657 659 675 688 694 698
+ 629 644 653 699 724 752
+ 397 418 598 721 753 837 949
+ 658 660 682 691 708 712
+ 660 681 686 707 708 15287
+ 661 663 684 702 703 15288
+ 663 666 683 689 702 705
+ 654 655 676 699 704 730
+ 664 682 687 707 709 15287
+ 662 664 686 706 709 15288
+ 659 669 678 697 698 710
+ 666 670 684 705
+ 458 607 656 714 802 848
+ 658 669 681 697 712 718
+ 671 677 701 15290
+ 665 676 677 701 704 723
+ 675 678 698 711 716 15289
+ 667 668 711 720 726 15289
+ 588 598 674 743 753 783
+ 669 688 691 710 718 725
+ 678 688 694 710 716 722
+ 653 654 679 685 730 752 771
+ 641 672 674 743 748 759
+ 677 692 693 723 736 15290
+ 683 684 703 705 729 731
+ 683 702 706 729 732 15288
+ 676 685 693 723 730 747
+ 684 689 702 731
+ 687 703 709 732 733 15288
+ 682 686 708 709 734 735
+ 681 682 707 712 735 738
+ 686 687 706 707 733 734
+ 688 697 698 722 725 727
+ 694 695 716 726 737 15289
+ 681 691 708 718 738 741
+ 633 635 715 717 788 795
+ 607 642 690 717 796 802
+ 633 645 713 724 795 815
+ 694 698 711 722 737 740
+ 635 642 713 714 788 796
+ 691 697 712 725 741 745
+ 650 673 728 739 774 777
+ 667 673 695 726 739 761 769
+ 397 520 680 920 949 1104
+ 698 710 716 727 740 742
+ 693 701 704 736 747 757
+ 644 645 679 715 752 815 860
+ 697 710 718 727 745 746
+ 695 711 720 737 749 761
+ 710 722 725 742 746
+ 650 672 719 748 777 794
+ 702 703 731 732 750 751
+ 685 699 704 747 771 780
+ 702 705 729 750
+ 703 706 729 733 751 754
+ 706 709 732 734 754 755
+ 707 709 733 735 755 758
+ 707 708 734 738 758 760
+ 701 723 744 757 764 15290
+ 711 716 726 740 749 756
+ 708 712 735 741 760 763
+ 673 719 720 769 774 790
+ 716 722 737 742 756 762
+ 712 718 738 745 763 766
+ 722 727 740 746 762 765
+ 674 696 700 759 783 805
+ 736 764 768 15290
+ 718 725 741 746 766 767
+ 725 727 742 745 765 767
+ 704 723 730 757 780 789
+ 672 700 728 759 794 804
+ 726 737 756 761 770
+ 729 731 751 772
+ 729 732 750 754 772 773
+ 679 699 724 771 845 860
+ 598 680 696 783 837 864
+ 732 733 751 755 773 775
+ 733 734 754 758 775 776
+ 737 740 749 762 770 779
+ 723 736 747 764 789 792
+ 734 735 755 760 776 778
+ 700 743 748 804 805
+ 735 738 758 763 778 781
+ 720 726 749 769 770 784
+ 740 742 756 765 779 782
+ 738 741 760 766 781 786
+ 736 744 757 768 792 793
+ 742 746 762 767 782 785
+ 741 745 763 767 786 787
+ 745 746 765 766 785 787
+ 744 764 791 793
+ 720 739 761 784 790 817
+ 749 756 761 779 784 801
+ 699 730 752 780 839 845
+ 750 751 773 798
+ 751 754 772 775 798 799
+ 719 739 777 790 820 824
+ 754 755 773 776 799 800
+ 755 758 775 778 800 803
+ 719 728 774 794 820 829
+ 758 760 776 781 803 806
+ 756 762 770 782 801 807
+ 730 747 771 789 831 839
+ 760 763 778 786 806 808
+ 762 765 779 785 807 810
+ 696 743 753 805 864 867
+ 761 769 770 801 817 822
+ 765 767 782 787 810 811
+ 763 766 781 787 808 812
+ 766 767 785 786 811 812
+ 713 717 795 796 840 869
+ 747 757 780 792 825 831
+ 739 769 774 817 824 828
+ 768 793 814 816
+ 757 764 789 793 818 825
+ 764 768 791 792 816 818
+ 728 748 777 804 829 841
+ 713 715 788 815 840 876
+ 714 717 788 802 869 916
+ 324 370 544 809 1495 1882 15297
+ 772 773 799 819
+ 773 775 798 800 819 821
+ 775 776 799 803 821 823
+ 770 779 784 807 822 832
+ 690 714 796 848 916 987
+ 776 778 800 806 823 826
+ 748 759 794 805 841 862
+ 743 759 783 804 862 867
+ 778 781 803 808 826 830
+ 779 782 801 810 832 836
+ 781 786 806 812 830 833
+ 370 428 797 870 1443 15297
+ 782 785 807 811 835 836
+ 785 787 810 812 834 835
+ 786 787 808 811 833 834
+ 316 527 544 1656 2019 15299
+ 791 816 827 838
+ 715 724 795 860 876 923
+ 791 793 814 818 838 843
+ 769 784 790 822 828 854 15291
+ 792 793 816 825 843 851
+ 798 799 821 844
+ 774 777 824 829 859 865
+ 799 800 819 823 844 846
+ 784 801 817 832 854 855
+ 800 803 821 826 846 847
+ 774 790 820 828 859 863
+ 789 792 818 831 851 866
+ 803 806 823 830 847 849
+ 814 838 842 853
+ 790 817 824 863 15291
+ 777 794 820 841 865 877
+ 806 808 826 833 849 850
+ 780 789 825 839 866 883
+ 801 807 822 836 855 858
+ 808 812 830 834 850 852
+ 811 812 833 835 852 856
+ 810 811 834 836 856 857
+ 807 810 832 835 857 858
+ 680 753 864 949 994
+ 814 816 827 843 853 868
+ 771 780 831 845 883 909
+ 788 795 869 876 922
+ 794 804 829 862 877 891
+ 827 853 861 873
+ 816 818 838 851 868 879
+ 819 821 846 871
+ 752 771 839 860 909 954
+ 821 823 844 847 871 872
+ 823 826 846 849 872 874
+ 656 690 802 987 1013 1149
+ 826 830 847 850 874 878
+ 830 833 849 852 878 880
+ 818 825 843 866 879 892
+ 833 834 850 856 880 881
+ 827 838 842 868 873 887
+ 817 822 855 888 901 15291
+ 822 832 854 858 886 888
+ 834 835 852 857 881 884
+ 835 836 856 858 884 885
+ 832 836 855 857 885 886
+ 820 824 863 865 897 898
+ 724 752 815 845 923 954 1043
+ 842 873 875 889
+ 804 805 841 867 891 948
+ 824 828 859 897 902 15291
+ 753 783 837 867 994 15292
+ 820 829 859 877 895 898
+ 825 831 851 883 892 913
+ 783 805 862 864 948 15292
+ 838 843 853 879 887 899
+ 788 796 840 916 922 974
+ 428 520 809 920 1408 1443
+ 844 846 872 893
+ 846 847 871 874 893 896
+ 842 853 861 887 889 903
+ 847 849 872 878 896 900
+ 861 889 890 906
+ 795 815 840 922 923 975
+ 829 841 865 891 895 928
+ 849 850 874 880 900 904
+ 843 851 868 892 899 914
+ 850 852 878 881 904 907
+ 852 856 880 884 907 910
+ 301 338 1028 1168 2171 2700
+ 831 839 866 909 913 945
+ 856 857 881 885 910 911
+ 857 858 884 886 911 912
+ 855 858 885 888 912 915
+ 853 868 873 899 903 917
+ 854 855 886 901 915 927
+ 861 873 875 903 906 919
+ 875 905 906 921
+ 841 862 877 928 948 965
+ 851 866 879 913 914 935
+ 871 872 896 924
+ 264 302 312 1987 4780 4973
+ 865 877 898 928 934
+ 872 874 893 900 924 925
+ 859 863 898 902 939 941
+ 859 865 895 897 934 941
+ 868 879 887 914 917 932
+ 874 878 896 904 925 929
+ 854 888 926 927 944 15291
+ 863 897 926 933 939 15291
+ 873 887 889 917 919 937
+ 878 880 900 907 929 930
+ 890 918 921 938
+ 875 889 890 919 921 940
+ 880 881 904 910 930 936
+ 435 656 956 1013 1439 1544
+ 839 845 883 945 954 1000
+ 881 884 907 911 936 942
+ 884 885 910 912 942 943
+ 885 886 911 915 943 946
+ 866 883 892 935 945 964
+ 879 892 899 932 935 950
+ 886 888 912 927 946 955
+ 796 802 869 974 987 1067
+ 887 899 903 932 937 951
+ 905 931 938 952
+ 889 903 906 937 940 957
+ 520 721 870 1104 1375 1408
+ 890 905 906 938 940 958
+ 840 869 876 974 975 993
+ 815 860 876 975 1043 1053
+ 893 896 925 953
+ 896 900 924 929 953 959
+ 901 902 933 944 960 15291
+ 888 901 915 944 955 966
+ 877 891 895 934 965 979
+ 900 904 925 930 959 961
+ 904 907 929 936 961 963
+ 918 947 952 968
+ 899 914 917 950 951 967
+ 902 926 939 960 976
+ 895 898 928 941 978 979
+ 892 913 914 950 964 970
+ 907 910 930 942 963 969
+ 903 917 919 951 957 972
+ 905 918 921 952 958 973
+ 897 902 933 941 976 981
+ 906 919 921 957 958 977
+ 897 898 934 939 978 981
+ 910 911 936 943 969 971
+ 911 912 942 946 971 980
+ 901 926 927 960 966 982
+ 883 909 913 964 1000 1011
+ 912 915 943 955 980 985
+ 931 962 968 986
+ 862 867 891 965 1034 1072 15292
+ 680 721 837 994 1104 1143 1275
+ 914 932 935 967 970 983
+ 917 932 937 967 972 990
+ 918 931 938 968 973 992
+ 924 925 959 988
+ 845 860 909 1000 1043 1088
+ 915 927 946 966 985 995
+ 346 435 621 908 1544 1576 1895
+ 919 937 940 972 977 998
+ 921 938 940 973 977 997
+ 925 929 953 961 988 989
+ 926 933 944 976 982 991
+ 929 930 959 963 989 996
+ 947 984 986 1001
+ 930 936 961 969 996 999
+ 913 935 945 970 1008 1011
+ 891 928 948 979 1027 1034
+ 927 944 955 982 995 1004
+ 932 950 951 983 990 1003
+ 931 947 952 986 992 1007
+ 936 942 963 971 999 1005
+ 935 950 964 983 1008 1009
+ 942 943 969 980 1005 1010
+ 937 951 957 990 998 1017
+ 938 952 958 992 997 1012
+ 869 916 922 993 1067 1074
+ 876 922 923 993 1053 1071
+ 933 939 960 981 991 1021 1025
+ 940 957 958 997 998 1022
+ 934 941 979 981 1018 1020
+ 928 934 965 978 1020 1027
+ 943 946 971 985 1010 1014
+ 939 941 976 978 1018 1025
+ 944 960 966 991 1004 1006
+ 950 967 970 1003 1009
+ 962 1001 1002 1015
+ 946 955 980 995 1014 1023
+ 947 962 968 1001 1007 1016
+ 802 848 916 1067 1149 1200
+ 953 959 989 1019
+ 959 961 988 996 1019 1026
+ 951 967 972 1003 1017 1038
+ 960 976 982 1006 1021 1030
+ 952 968 973 1007 1012 1029
+ 922 974 975 1071 1074
+ 837 864 949 1143 1170 15292
+ 955 966 985 1004 1023 1032
+ 961 963 989 999 1026 1031
+ 958 973 977 1012 1022 1041
+ 957 972 977 1017 1022 1048
+ 963 969 996 1005 1031 1035
+ 909 945 954 1011 1073 1088
+ 962 984 986 1015 1016 1036
+ 984 1015 1024 1039
+ 967 983 990 1009 1038 1040
+ 966 982 995 1006 1032 1033
+ 969 971 999 1010 1035 1042
+ 982 991 1004 1030 1033
+ 968 986 992 1016 1029 1037
+ 964 970 1009 1011 1044 1054
+ 970 983 1003 1008 1040 1044
+ 971 980 1005 1014 1042 1045
+ 945 964 1000 1008 1054 1073
+ 973 992 997 1029 1041 1047
+ 656 848 908 1149 1433 1439
+ 980 985 1010 1023 1045 1051
+ 984 1001 1002 1036 1039 1052
+ 986 1001 1007 1036 1037 1050
+ 972 990 998 1038 1048 1086
+ 978 981 1020 1025 1049 1060
+ 988 989 1026 1055
+ 978 979 1018 1027 1049 1078
+ 976 991 1025 1030 1061 1075
+ 977 997 998 1041 1048 1069
+ 985 995 1014 1032 1051 1057
+ 1002 1039 1046 1059
+ 976 981 1018 1021 1060 1075
+ 989 996 1019 1031 1055 1058
+ 965 979 1020 1034 1078 1121
+ 338 396 882 1249 2073 2171
+ 992 1007 1012 1037 1047 1056
+ 991 1006 1021 1033 1061 1062
+ 996 999 1026 1035 1058 1064
+ 995 1004 1023 1033 1057 1063
+ 1004 1006 1030 1032 1062 1063
+ 948 965 1027 1072 1121 1165
+ 999 1005 1031 1042 1064 15293
+ 1001 1015 1016 1050 1052 1065
+ 1007 1016 1029 1050 1056 1066
+ 990 1003 1017 1040 1086 1090
+ 1002 1015 1024 1052 1059 1070
+ 1003 1009 1038 1044 1080 1090
+ 997 1012 1022 1047 1069 1077
+ 1005 1010 1035 1045 1076 15293
+ 860 923 954 1053 1088 1159 1204
+ 1008 1009 1040 1054 1080 1085
+ 1010 1014 1042 1051 1076 1082
+ 1024 1059 1068 1083
+ 1012 1029 1041 1056 1077 1079
+ 998 1017 1022 1069 1086 1114
+ 1018 1020 1060 1078 1100
+ 1016 1036 1037 1065 1066 1081
+ 1014 1023 1045 1057 1082 1089
+ 1015 1036 1039 1065 1070 1087
+ 923 975 1043 1071 1159 1179
+ 1008 1011 1044 1073 1085 1112
+ 1019 1026 1058 1091
+ 1029 1037 1047 1066 1079 1084
+ 1023 1032 1051 1063 1089 1092
+ 1026 1031 1055 1064 1091 1094
+ 1024 1039 1046 1070 1083 1095
+ 1018 1025 1049 1075 1100 1110
+ 1021 1030 1062 1075 1098 1108
+ 1030 1033 1061 1063 1096 1098
+ 1032 1033 1057 1062 1092 1096
+ 1031 1035 1058 1094 1101 15293
+ 1036 1050 1052 1081 1087 1099
+ 1037 1050 1056 1081 1084 1093
+ 916 974 987 1074 1200 1240
+ 1046 1083 1097 1109
+ 1022 1041 1048 1077 1114 1115
+ 1039 1052 1059 1087 1095 1107
+ 975 993 1053 1074 1162 1179
+ 948 1034 1165 1170 1236 15292
+ 1000 1011 1054 1088 1112 1183
+ 974 993 1067 1071 1162 1240
+ 1021 1025 1060 1061 1108 1110 1129
+ 1042 1045 1082 1106 1113 15293
+ 1041 1047 1069 1079 1103 1115
+ 1020 1027 1049 1100 1121 1135
+ 1047 1056 1077 1084 1102 1103
+ 1040 1044 1085 1090 1117 1130
+ 1050 1065 1066 1093 1099 1111
+ 1045 1051 1076 1089 1113 1119
+ 1046 1059 1068 1095 1109 1120
+ 1056 1066 1079 1093 1102 1105
+ 1044 1054 1080 1112 1117
+ 1017 1038 1048 1090 1114 1137 1147
+ 1052 1065 1070 1099 1107 1116
+ 954 1000 1043 1073 1183 1204 1226
+ 1051 1057 1082 1092 1119 1123
+ 1038 1040 1080 1086 1130 1137
+ 1055 1058 1094 1124
+ 1057 1063 1089 1096 1123 1127
+ 1066 1081 1084 1105 1111 1118
+ 1058 1064 1091 1101 1124 1132
+ 1059 1070 1083 1107 1120 1131
+ 1062 1063 1092 1098 1127 1133
+ 1068 1109 1122 1136
+ 1061 1062 1096 1108 1133 1141
+ 1065 1081 1087 1111 1116 1128
+ 1049 1060 1078 1110 1134 1135
+ 1064 1094 1106 1132 1139 15293
+ 1079 1084 1103 1105 1125 1126
+ 1077 1079 1102 1115 1125 1138
+ 721 920 949 1275 1375 1471
+ 1084 1093 1102 1118 1126
+ 1076 1101 1113 1139 1144 15293
+ 1070 1087 1095 1116 1131 1142
+ 1061 1075 1098 1129 1141 1154
+ 1068 1083 1097 1120 1136 1145
+ 1060 1075 1100 1129 1134 1155
+ 1081 1093 1099 1118 1128 1140
+ 1054 1073 1085 1117 1160 1183
+ 1076 1082 1106 1119 1144 1151
+ 1048 1069 1086 1115 1147 1169 1176
+ 1069 1077 1103 1114 1138 1169
+ 1087 1099 1107 1128 1142 1153
+ 1080 1085 1112 1130 1160 1174
+ 1093 1105 1111 1126 1140 1148
+ 1082 1089 1113 1123 1151 1158
+ 1083 1095 1109 1131 1145 1157
+ 1027 1034 1078 1135 1165 1186 1234
+ 1097 1136 1152 1164
+ 1089 1092 1119 1127 1158 1161
+ 1091 1094 1132 1166
+ 1102 1103 1126 1138 1150 1156
+ 1102 1105 1118 1125 1148 1150
+ 1092 1096 1123 1133 1161 1171
+ 1099 1111 1116 1140 1153 1163
+ 1075 1108 1110 1154 1155 1178
+ 1080 1090 1117 1137 1174 1188
+ 1095 1107 1120 1142 1157 1172
+ 1094 1101 1124 1139 1166 1173
+ 1096 1098 1127 1141 1171 1177
+ 1100 1110 1135 1155 1167
+ 1078 1100 1121 1134 1167 1186
+ 1097 1109 1122 1145 1164 1180
+ 1086 1090 1130 1147 1188 1189
+ 1103 1115 1125 1156 1169 1187
+ 1101 1106 1132 1144 1173 1182
+ 1111 1118 1128 1148 1163 1175
+ 1098 1108 1133 1154 1177 1190
+ 1107 1116 1131 1153 1172 1184
+ 949 994 1170 1275 1354 1412
+ 1106 1113 1139 1151 1182 1193
+ 1109 1120 1136 1157 1180 1192
+ 268 293 372 2062 3697 4176
+ 1086 1114 1137 1176 1189 1201
+ 1118 1126 1140 1150 1175 1181
+ 848 987 1013 1200 1433 1493
+ 1125 1126 1148 1156 1181 1185
+ 1113 1119 1144 1158 1193 1197
+ 1122 1164 1191 1198
+ 1116 1128 1142 1163 1184 1195
+ 1108 1129 1141 1178 1190 1194
+ 1110 1129 1134 1167 1178 1196
+ 1125 1138 1150 1185 1187
+ 1120 1131 1145 1172 1192 1199
+ 1119 1123 1151 1161 1197 1203
+ 1043 1053 1179 1204 1285 1314
+ 1112 1117 1174 1183 1224 1242
+ 1123 1127 1158 1171 1203 1205
+ 1071 1074 1179 1240 1253 1297
+ 1128 1140 1153 1175 1195 1202
+ 1122 1136 1152 1180 1198 1206
+ 1034 1072 1121 1234 1236 1291
+ 1124 1132 1173 1207
+ 1134 1135 1155 1186 1196 1222
+ 284 301 446 882 2700 3287 4501
+ 1114 1115 1138 1176 1187 1214 1216
+ 994 1072 1143 1236 1349 1354 15292
+ 1127 1133 1161 1177 1205 1211
+ 1131 1142 1157 1184 1199 1209
+ 1132 1139 1166 1182 1207 1212
+ 1117 1130 1160 1188 1224 1230
+ 1140 1148 1163 1181 1202 1208
+ 1114 1147 1169 1201 1214 1228
+ 1133 1141 1171 1190 1211 1221
+ 1129 1154 1155 1194 1196 1217
+ 1053 1071 1159 1162 1253 1285
+ 1136 1145 1164 1192 1206 1215
+ 1148 1150 1175 1185 1208 1210
+ 1139 1144 1173 1193 1212 1223
+ 1073 1088 1112 1160 1226 1242 1263
+ 1142 1153 1172 1195 1209 1218
+ 1150 1156 1181 1187 1210 1213
+ 1121 1135 1167 1222 1234 1273
+ 1138 1156 1169 1185 1213 1216
+ 1130 1137 1174 1189 1220 1230
+ 1137 1147 1188 1201 1220 1225
+ 1141 1154 1177 1194 1221 1227
+ 1152 1198 1219 1233
+ 1145 1157 1180 1199 1215 1231
+ 1144 1151 1182 1197 1223 1232
+ 1154 1178 1190 1217 1227
+ 1153 1163 1184 1202 1218 1229
+ 1155 1167 1178 1217 1222 1252
+ 1151 1158 1193 1203 1232 1237
+ 1152 1164 1191 1206 1233 1239
+ 1157 1172 1192 1209 1231 1238
+ 987 1067 1149 1240 1382 1493
+ 1147 1176 1189 1225 1228 1241
+ 1163 1175 1195 1208 1229 1235
+ 1158 1161 1197 1205 1237 1243
+ 1043 1088 1159 1226 1314 1329 1369
+ 1161 1171 1203 1211 1243 1250
+ 1164 1180 1198 1215 1239 1248
+ 1166 1173 1212 1251
+ 1175 1181 1202 1210 1235 1244
+ 1172 1184 1199 1218 1238 1247
+ 1181 1185 1208 1213 1244 1245
+ 1171 1177 1205 1221 1250 1258
+ 1173 1182 1207 1223 1251 1257
+ 1185 1187 1210 1216 1245 1255
+ 1169 1176 1216 1228 1261 1265
+ 1180 1192 1206 1231 1248 1262
+ 1169 1187 1213 1214 1255 1261
+ 1178 1194 1196 1227 1252 1266
+ 1184 1195 1209 1229 1247 1260
+ 1191 1233 1254 1268
+ 1188 1189 1225 1230 1246 1259
+ 1177 1190 1211 1227 1258 1267
+ 1167 1186 1196 1252 1273 1311
+ 1182 1193 1212 1232 1257 1270
+ 1160 1174 1230 1242 1279 1294
+ 1189 1201 1220 1241 1246 1256
+ 1088 1183 1204 1263 1319 1329
+ 1190 1194 1217 1221 1266 1267
+ 1176 1201 1214 1241 1265 1271
+ 1195 1202 1218 1235 1260 1269
+ 1174 1188 1220 1224 1259 1279
+ 1192 1199 1215 1238 1262 1272
+ 1193 1197 1223 1237 1270 1276
+ 1191 1198 1219 1239 1268 1274
+ 1121 1165 1186 1273 1291 1345
+ 1202 1208 1229 1244 1269 1277
+ 1072 1165 1170 1291 1349 1356
+ 1197 1203 1232 1243 1276 1283
+ 1199 1209 1231 1247 1272 1281
+ 1198 1206 1233 1248 1274 1282
+ 1067 1074 1162 1200 1297 1382 1383
+ 1201 1225 1228 1256 1271 1278
+ 1160 1183 1224 1263 1294 1306
+ 1203 1205 1237 1250 1283 1287
+ 1208 1210 1235 1245 1277 1286
+ 1210 1213 1244 1255 1286 1288
+ 1220 1225 1256 1259 1280 1284
+ 1209 1218 1238 1260 1281 1292
+ 1206 1215 1239 1262 1282 1290
+ 396 621 1028 1576 2073 2193
+ 1205 1211 1243 1258 1287 1296
+ 1207 1212 1257 1293
+ 1196 1217 1222 1266 1308 1311
+ 1162 1179 1285 1297 1357
+ 1219 1268 1289 1299
+ 1213 1216 1245 1261 1288 1295
+ 1225 1241 1246 1278 1284
+ 1212 1223 1251 1270 1293 1301
+ 1211 1221 1250 1267 1296 1304
+ 1220 1230 1246 1279 1280 1303
+ 1218 1229 1247 1269 1292 1298
+ 1214 1216 1255 1265 1295 1300
+ 1215 1231 1248 1272 1290 1302
+ 1183 1226 1242 1306 1319
+ 348 527 612 2078 2587 15299
+ 1214 1228 1261 1271 1300 1307
+ 1217 1227 1252 1267 1308 1309
+ 1221 1227 1258 1266 1304 1309
+ 1219 1233 1254 1274 1299 1310
+ 1229 1235 1260 1277 1298 1305
+ 1223 1232 1257 1276 1301 15294
+ 1228 1241 1265 1278 1307 1312
+ 1231 1238 1262 1281 1302 1315
+ 1186 1222 1234 1311 1345 1363
+ 1233 1239 1268 1282 1310 1317
+ 949 1104 1143 1412 1471 1551
+ 1232 1237 1270 1283 1318 15294
+ 1235 1244 1269 1286 1305 15295
+ 1241 1256 1271 1284 1312 1316
+ 1224 1230 1259 1294 1303 1325
+ 1246 1259 1284 1303 1313
+ 1238 1247 1272 1292 1315 1324
+ 1239 1248 1274 1290 1317 1320
+ 1237 1243 1276 1287 1318 1322
+ 1246 1256 1278 1280 1313 1316
+ 1159 1179 1253 1314 1357 1381
+ 1244 1245 1277 1288 1321 15295
+ 1243 1250 1283 1296 1322 1327
+ 1245 1255 1286 1295 1321 1330
+ 1254 1299 1323 1328
+ 1248 1262 1282 1302 1320 1326
+ 1165 1234 1236 1345 1356 1387
+ 1247 1260 1281 1298 1324 1332
+ 1251 1257 1301 1331
+ 1224 1242 1279 1306 1325 1361 1368
+ 1255 1261 1288 1300 1330 1339
+ 1250 1258 1287 1304 1327 1336
+ 1162 1240 1253 1357 1383 1418
+ 1260 1269 1292 1305 1332 1334
+ 1254 1268 1289 1310 1328 1337
+ 1261 1265 1295 1307 1339 1343
+ 1257 1270 1293 1331 1340 15294
+ 1262 1272 1290 1315 1326 1338
+ 1259 1279 1280 1313 1325 1333
+ 1258 1267 1296 1309 1336 1341
+ 1269 1277 1298 1334 1335 15295
+ 1242 1263 1294 1319 1361 1374
+ 1265 1271 1300 1312 1343 1347
+ 1252 1266 1309 1311 1346 1355
+ 1266 1267 1304 1308 1341 1346
+ 1268 1274 1299 1317 1337 1342
+ 1222 1252 1273 1308 1355 1363 1385
+ 1271 1278 1307 1316 1347 1353
+ 1280 1284 1303 1316 1333 1344
+ 1159 1204 1285 1369 1381 1423
+ 1272 1281 1302 1324 1338 1352
+ 1278 1284 1312 1313 1344 1353
+ 1274 1282 1310 1320 1342 1351
+ 1276 1283 1322 1350 1359 15294
+ 1226 1263 1306 1329 1374 1398
+ 1282 1290 1317 1326 1351 1358
+ 1286 1288 1330 1348 1366 15295
+ 1283 1287 1318 1327 1359 1365
+ 1289 1328 1360 1364
+ 1281 1292 1315 1332 1352 1372
+ 1279 1294 1303 1333 1367 1368
+ 1290 1302 1320 1338 1358 1362
+ 1287 1296 1322 1336 1365 1373
+ 1289 1299 1323 1337 1364 1371
+ 1204 1226 1319 1369 1398 1425
+ 1288 1295 1321 1339 1366 1379
+ 1293 1301 1340 1378
+ 1292 1298 1324 1334 1372 1391
+ 1303 1313 1325 1344 1367 1380
+ 1298 1305 1332 1335 1377 1391
+ 1305 1334 1348 1377 15295
+ 1296 1304 1327 1341 1373 1384
+ 1299 1310 1328 1342 1371 1376
+ 1302 1315 1326 1352 1362 1370
+ 1295 1300 1330 1343 1379 1390
+ 1301 1331 1350 1378 1389 15294
+ 1304 1309 1336 1346 1384 1394
+ 1310 1317 1337 1351 1376 1386
+ 1300 1307 1339 1347 1390 1392
+ 1313 1316 1333 1353 1380 1395
+ 1234 1273 1291 1363 1387 1414 1444
+ 1308 1309 1341 1355 1394 1401
+ 1307 1312 1343 1353 1388 1392
+ 1321 1335 1366 1377 1403 15295
+ 1170 1236 1354 1356 1475 1510
+ 1318 1340 1359 1389 1397 15294
+ 1317 1320 1342 1358 1386 1393
+ 1315 1324 1338 1370 1372 1400
+ 1312 1316 1344 1347 1388 1395
+ 1143 1170 1349 1412 1510 1563
+ 1308 1311 1346 1385 1401 1416
+ 1236 1291 1349 1387 1475 1479
+ 1253 1285 1297 1381 1418 1446
+ 1320 1326 1351 1362 1393 1396
+ 1318 1322 1350 1365 1397 1404
+ 1323 1364 1402 1405
+ 1294 1306 1368 1374 1410 1440
+ 1326 1338 1358 1370 1396 1399
+ 1273 1311 1345 1385 1414 1430
+ 1323 1328 1360 1371 1405 1406
+ 1322 1327 1359 1373 1404 1409
+ 1321 1330 1348 1379 1403 1419
+ 1325 1333 1368 1380 1413 1415
+ 1294 1325 1361 1367 1410 1413
+ 1204 1314 1329 1423 1425 1474
+ 1338 1352 1362 1399 1400 1407
+ 1328 1337 1364 1376 1406 1411
+ 1324 1332 1352 1391 1400 1435
+ 1327 1336 1365 1384 1409 1421
+ 1306 1319 1361 1398 1440 1459
+ 920 1104 1408 1471 1710 1766
+ 1337 1342 1371 1386 1411 1417
+ 1334 1335 1348 1391 1403 1432
+ 1331 1340 1389 1424
+ 1330 1339 1366 1390 1419 1428
+ 1333 1344 1367 1395 1415 1437
+ 1285 1314 1357 1423 1446 1481
+ 1200 1240 1383 1493 1534 1595
+ 1240 1297 1382 1418 1485 1534
+ 1336 1341 1373 1394 1421 1431
+ 1311 1355 1363 1416 1430 1450
+ 1342 1351 1376 1393 1417 1422
+ 1291 1345 1356 1444 1473 1479
+ 1347 1353 1392 1395 1420 1447
+ 1340 1350 1378 1397 1424 1436
+ 1339 1343 1379 1392 1428 1429
+ 1332 1334 1372 1377 1432 1435 1467
+ 1343 1347 1388 1390 1420 1429
+ 1351 1358 1386 1396 1422 1426
+ 1341 1346 1384 1401 1431 15296
+ 1344 1353 1380 1388 1437 1447
+ 1358 1362 1393 1399 1426 1427
+ 1350 1359 1389 1404 1436 1442
+ 1319 1329 1374 1425 1459 1489
+ 1362 1370 1396 1407 1427 1434
+ 1352 1370 1372 1407 1435 1448
+ 1346 1355 1394 1416 1453 15296
+ 1360 1405 1441 1445
+ 1348 1366 1377 1419 1432 1462
+ 1359 1365 1397 1409 1442 1451
+ 1360 1364 1402 1406 1445 1449
+ 1364 1371 1405 1411 1449 1452
+ 1370 1399 1400 1434 1448
+ 870 920 1375 1443 1766 1962
+ 1365 1373 1404 1421 1451 1458
+ 1361 1368 1413 1440 1465
+ 1371 1376 1406 1417 1452 1455
+ 1143 1275 1354 1551 1563 1664
+ 1367 1368 1410 1415 1454 1465
+ 1345 1363 1430 1444 1472 1497
+ 1367 1380 1413 1437 1454 1463
+ 1355 1385 1401 1450 1453 1476
+ 1376 1386 1411 1422 1455 1457
+ 1297 1357 1383 1446 1485 1540
+ 1366 1379 1403 1428 1462 1482
+ 1388 1392 1429 1447 1469
+ 1373 1384 1409 1431 1458 1466
+ 1386 1393 1417 1426 1457 1460
+ 1314 1369 1381 1474 1481 1513
+ 1378 1389 1436 1468
+ 1329 1369 1398 1474 1489 1509
+ 1393 1396 1422 1427 1460 1461
+ 1396 1399 1426 1434 1456 1461
+ 1379 1390 1419 1429 1482 1484
+ 1390 1392 1420 1428 1469 1484
+ 1363 1385 1414 1450 1470 1472
+ 1384 1394 1421 1466 1477 15296
+ 1377 1391 1403 1462 1467 1527
+ 1013 1149 1439 1493 1751 1812
+ 1399 1407 1427 1448 1456 1464
+ 1372 1391 1400 1448 1467 1480 1504
+ 1389 1397 1424 1442 1468 1478
+ 1380 1395 1415 1447 1463 1490
+ 125 173 203 4201 6142 7847 14856
+ 908 1013 1433 1544 1812 1903
+ 1361 1374 1410 1459 1465 1502
+ 1402 1445 1483 15298
+ 1397 1404 1436 1451 1478 1486
+ 809 870 1408 1962 1984 15297
+ 1345 1387 1414 1473 1497 1516
+ 1402 1405 1441 1449 1487 15298
+ 1357 1381 1418 1481 1540 1562
+ 1388 1395 1420 1437 1469 1490 1518
+ 1400 1407 1434 1435 1464 1480
+ 1405 1406 1445 1452 1487 1491
+ 1385 1416 1430 1470 1476 1496
+ 1404 1409 1442 1458 1486 1498
+ 1406 1411 1449 1455 1491 1494
+ 1401 1416 1476 1488 1503 15296
+ 1413 1415 1463 1465 1492
+ 1411 1417 1452 1457 1494 1499
+ 1427 1434 1461 1464 1500
+ 1417 1422 1455 1460 1499 1501
+ 1409 1421 1451 1466 1498 1507
+ 1374 1398 1440 1489 1502 1549
+ 1422 1426 1457 1461 1501 1505
+ 1426 1427 1456 1460 1500 1505
+ 1403 1419 1432 1482 1527 1533
+ 1415 1437 1454 1490 1492 1517
+ 1434 1448 1456 1480 1500 1508
+ 1410 1413 1440 1454 1492 1502 1530
+ 1421 1431 1458 1477 1507 1511
+ 1391 1432 1435 1504 1527 1542
+ 1424 1436 1478 1512
+ 1420 1429 1447 1484 1518 1536
+ 1430 1450 1472 1496 1506
+ 1104 1275 1375 1551 1701 1710
+ 1414 1430 1470 1497 1506 1522
+ 1387 1444 1479 1516 1524
+ 1369 1423 1425 1509 1513 1539
+ 1349 1356 1479 1510 1552 1615
+ 1416 1450 1453 1496 1503 1514
+ 1431 1466 1488 1511 1521 15296
+ 1436 1442 1468 1486 1512 1519
+ 1356 1387 1473 1475 1524 1552
+ 1435 1448 1464 1504 1508
+ 1381 1423 1446 1513 1562 1580
+ 1419 1428 1462 1484 1533 1538
+ 1441 1515 1520 15298
+ 1428 1429 1469 1482 1536 1538
+ 1383 1418 1534 1540 1567
+ 1442 1451 1478 1498 1519 1529
+ 1445 1449 1491 1523 1525 15298
+ 1453 1477 1503 1521 1532 15296
+ 1398 1425 1459 1509 1549 1573
+ 1437 1447 1463 1517 1518 1564
+ 1449 1452 1487 1494 1525 1528
+ 1454 1463 1465 1517 1530
+ 1149 1200 1382 1433 1595 1725 1751
+ 1452 1455 1491 1499 1528 1531
+ 544 797 1656 1882 2219 2312
+ 1450 1470 1476 1506 1514 1526
+ 1414 1444 1472 1516 1522 1557
+ 1451 1458 1486 1507 1529 1537
+ 1455 1457 1494 1501 1531 1535
+ 1456 1461 1464 1505 1508 1546 15300
+ 1457 1460 1499 1505 1535 1541
+ 1440 1459 1465 1530 1549 1607
+ 1453 1476 1488 1514 1532 1543
+ 1435 1467 1480 1508 1542 1550
+ 1460 1461 1500 1501 1541 15300
+ 1470 1472 1496 1522 1526 1548
+ 1458 1466 1498 1511 1537 1547
+ 1464 1480 1500 1504 1546 1550
+ 1425 1474 1489 1539 1573 1583
+ 1349 1354 1475 1563 1615 1669
+ 1466 1477 1507 1521 1547 1555
+ 1468 1478 1519 1554
+ 1423 1474 1481 1539 1580 1596
+ 1476 1496 1503 1526 1543 1545
+ 1483 1520 1553 1556
+ 1444 1473 1497 1524 1557 1577
+ 1463 1490 1492 1530 1564 1601
+ 1447 1469 1490 1536 1564 1604
+ 1478 1486 1512 1529 1554 1560
+ 1483 1515 1523 1556 1558 15298
+ 1477 1488 1511 1532 1555 1565
+ 1472 1497 1506 1548 1557 1598
+ 1487 1520 1525 1558 1559 15298
+ 1473 1479 1516 1552 1577 1582
+ 1487 1491 1523 1528 1559 1561
+ 1496 1506 1514 1545 1548 1569
+ 1432 1462 1467 1533 1542 1578 1587
+ 1491 1494 1525 1531 1561 1566
+ 1486 1498 1519 1537 1560 1570
+ 1465 1492 1502 1517 1601 1607
+ 1494 1499 1528 1535 1566 1568
+ 1488 1503 1521 1543 1565 1571
+ 1462 1482 1527 1538 1578 1592
+ 1382 1383 1485 1567 1595 1639
+ 1499 1501 1531 1541 1568 1572
+ 1469 1484 1518 1538 1604 1606
+ 1498 1507 1529 1547 1570 1575
+ 1482 1484 1533 1536 1592 1606
+ 1474 1509 1513 1583 1596
+ 1418 1446 1485 1562 1567 1618 1643
+ 1501 1505 1535 1572 1579 15300
+ 1467 1504 1527 1550 1587 1605
+ 1503 1514 1532 1545 1571 1574
+ 908 956 1439 1895 1903 2125
+ 1514 1526 1543 1569 1574
+ 1500 1508 1550 1591 1611 15300
+ 1507 1511 1537 1555 1575 1581
+ 1506 1522 1526 1569 1598 1599
+ 1459 1489 1502 1573 1607 1634
+ 1504 1508 1542 1546 1605 1611
+ 1275 1412 1471 1664 1701 1707
+ 1475 1479 1524 1582 1615 1627
+ 1515 1556 1584 1585
+ 1512 1519 1560 1589
+ 1511 1521 1547 1565 1581 1593
+ 1515 1520 1553 1558 1585 1586
+ 1497 1516 1522 1577 1598 1614
+ 1520 1523 1556 1559 1586 1588
+ 1523 1525 1558 1561 1588 1590
+ 1519 1529 1554 1570 1589 1600
+ 1525 1528 1559 1566 1590 1594
+ 1446 1481 1540 1580 1618 1644
+ 1354 1412 1510 1664 1669 1760
+ 1490 1517 1518 1601 1604 1665
+ 1521 1532 1555 1571 1593 1603
+ 1528 1531 1561 1568 1594 1597
+ 1485 1534 1540 1639 1643
+ 1531 1535 1566 1572 1597 1602
+ 1526 1545 1548 1574 1599 1608
+ 1529 1537 1560 1575 1600 1610
+ 1532 1543 1565 1574 1603 1609
+ 1535 1541 1568 1579 1602 1612
+ 1489 1509 1549 1583 1634 1661
+ 1543 1545 1569 1571 1608 1609
+ 1537 1547 1570 1581 1610 1613
+ 621 956 1249 1895 2193 2805
+ 1516 1524 1557 1582 1614 1631
+ 1527 1533 1587 1592 1629 1648
+ 1541 1572 1591 1612 1616 15300
+ 1481 1513 1562 1596 1644 1670
+ 1547 1555 1575 1593 1613 1622
+ 1524 1552 1577 1627 1631
+ 1509 1539 1573 1596 1661 1672
+ 1553 1585 1617 1621
+ 1553 1556 1584 1586 1621 15301
+ 1556 1558 1585 1588 1619 15301
+ 1527 1542 1578 1605 1629 1642
+ 1558 1559 1586 1590 1619 1620
+ 1554 1560 1600 1626
+ 1559 1561 1588 1594 1620 1623
+ 1546 1579 1611 1616 1635 15300
+ 1533 1538 1578 1606 1648 1667
+ 1555 1565 1581 1603 1622 1628
+ 1561 1566 1590 1597 1623 1624
+ 1382 1493 1534 1639 1725 1730
+ 1513 1539 1580 1583 1670 1672
+ 1566 1568 1594 1602 1624 1625
+ 1522 1548 1557 1599 1614 1640 1662
+ 1548 1569 1598 1608 1637 1640
+ 1560 1570 1589 1610 1626 1632
+ 1517 1530 1564 1607 1665 1694
+ 1568 1572 1597 1612 1625 1630
+ 1565 1571 1593 1609 1628 1633
+ 1518 1536 1564 1606 1665 1676
+ 1542 1550 1587 1611 1642 1645
+ 1536 1538 1592 1604 1667 1676
+ 1502 1530 1549 1601 1634 1694 1708
+ 1569 1574 1599 1609 1637 1638
+ 1571 1574 1603 1608 1633 1638
+ 1570 1575 1600 1613 1632 1641
+ 1546 1550 1591 1605 1635 1645 1659
+ 1572 1579 1602 1616 1630 1636
+ 1575 1581 1610 1622 1641 1647
+ 1557 1577 1598 1631 1662 1677
+ 1475 1510 1552 1627 1669 1698 1752
+ 1579 1591 1612 1635 1636 1658
+ 1584 1621 1654 1657
+ 1540 1562 1643 1644 1688
+ 1586 1588 1620 1652 1653 15301
+ 1588 1590 1619 1623 1651 1652
+ 1584 1585 1617 1655 1657 15301
+ 1581 1593 1613 1628 1647 1663
+ 1590 1594 1620 1624 1649 1651
+ 1594 1597 1623 1625 1646 1649
+ 1597 1602 1624 1630 1646 1650
+ 1589 1600 1632 1666
+ 1552 1582 1615 1631 1685 1698
+ 1593 1603 1622 1633 1663 1668
+ 1578 1587 1642 1648 1681
+ 1602 1612 1625 1636 1650 1660
+ 1577 1582 1614 1627 1677 1685
+ 1600 1610 1626 1641 1666 1673
+ 1603 1609 1628 1638 1668 1671
+ 1549 1573 1607 1661 1708 1729
+ 1591 1611 1616 1658 1659 1683
+ 1612 1616 1630 1658 1660
+ 1599 1608 1638 1640 1674 1679
+ 1608 1609 1633 1637 1671 1674
+ 1534 1567 1595 1643 1720 1730
+ 1598 1599 1637 1662 1679 1695
+ 1610 1613 1632 1647 1673 1680
+ 1587 1605 1629 1645 1681 1697
+ 1540 1567 1618 1639 1688 1720
+ 1562 1580 1618 1670 1688 1739
+ 1605 1611 1642 1659 1697 1703
+ 1624 1625 1649 1650 1675 1678
+ 1613 1622 1641 1663 1680 1689
+ 1578 1592 1629 1667 1681 1705
+ 1623 1624 1646 1651 1678 1682
+ 1625 1630 1646 1660 1675 1693
+ 1620 1623 1649 1652 1682 1684
+ 1619 1620 1651 1653 1684 1686
+ 1619 1652 1655 1686 1687 15301
+ 1617 1657 1691 1692
+ 1621 1653 1657 1687 1690 15301
+ 544 813 1495 2019 2219 2790
+ 1617 1621 1654 1655 1690 1692
+ 1616 1635 1636 1660 1683 1712
+ 1611 1635 1645 1683 1703
+ 1630 1636 1650 1658 1693 1712
+ 1573 1583 1634 1672 1729 1755
+ 1598 1614 1640 1677 1695 1709
+ 1622 1628 1647 1668 1689 1696
+ 1412 1551 1563 1707 1760 1802
+ 1564 1601 1604 1676 1694 1756 1761
+ 1626 1632 1673 1700
+ 1592 1606 1648 1676 1705 1735
+ 1628 1633 1663 1671 1696 1699
+ 1510 1563 1615 1752 1760 1833
+ 1580 1596 1644 1672 1739 1758
+ 1633 1638 1668 1674 1699 1704
+ 1583 1596 1661 1670 1755 1758
+ 1632 1641 1666 1680 1700 1706
+ 1637 1638 1671 1679 1704 1711
+ 1646 1650 1678 1693 1702
+ 1604 1606 1665 1667 1735 1756
+ 1614 1631 1662 1685 1709 1726
+ 1646 1649 1675 1682 1702 1713
+ 1637 1640 1674 1695 1711 1724
+ 1641 1647 1673 1689 1706 1715
+ 1629 1642 1648 1697 1705 1733
+ 1649 1651 1678 1684 1713 1714
+ 1635 1658 1659 1703 1712 1740
+ 1651 1652 1682 1686 1714 1716
+ 1627 1631 1677 1698 1726 1741
+ 1652 1653 1684 1687 1716 1717
+ 1653 1655 1686 1690 1717 1718
+ 1618 1643 1644 1720 1739 1788
+ 1647 1663 1680 1696 1715 1723
+ 1655 1657 1687 1692 1718 1719
+ 1654 1692 1721 1722
+ 1654 1657 1690 1691 1719 1721
+ 1650 1660 1675 1702 1712 1728
+ 1601 1607 1665 1708 1761 1768
+ 1640 1662 1679 1709 1724 1734
+ 1663 1668 1689 1699 1723 1727
+ 1642 1645 1681 1703 1733 1747
+ 1615 1627 1685 1741 1752 1791
+ 1668 1671 1696 1704 1727 1731
+ 1666 1673 1706 1732
+ 1471 1551 1707 1710 1832 1890
+ 1675 1678 1693 1713 1728 1736
+ 1645 1659 1683 1697 1740 1747
+ 1671 1674 1699 1711 1731 1737
+ 1648 1667 1681 1733 1735 1794
+ 1673 1680 1700 1715 1732 1738
+ 1551 1664 1701 1802 1832
+ 1607 1634 1694 1729 1768 1787
+ 1662 1677 1695 1726 1734 1759
+ 1375 1471 1701 1766 1890 1919
+ 1674 1679 1704 1724 1737 1749
+ 1658 1660 1683 1693 1728 1740 1784
+ 1678 1682 1702 1714 1736 1744
+ 1682 1684 1713 1716 1742 1744
+ 1680 1689 1706 1723 1738 1746
+ 1684 1686 1714 1717 1742 1743
+ 1686 1687 1716 1718 1743 1745
+ 1687 1690 1717 1719 1745 1748
+ 1690 1692 1718 1721 1748 1750
+ 1639 1643 1688 1730 1788 1858
+ 1691 1692 1719 1722 1750 1753
+ 1691 1721 1753 1754
+ 1689 1696 1715 1727 1746 1757
+ 1679 1695 1711 1734 1749 1762
+ 1493 1595 1730 1751 1924 1972
+ 1677 1685 1709 1741 1759 1776
+ 1696 1699 1723 1731 1757 1763
+ 1693 1702 1712 1736 1782 1784 1789
+ 1634 1661 1708 1755 1787 1815
+ 1595 1639 1720 1725 1858 1924
+ 1699 1704 1727 1737 1763 1765
+ 1700 1706 1738 1764
+ 1681 1697 1705 1747 1794 1805
+ 1695 1709 1724 1759 1762 1771
+ 1667 1676 1705 1756 1794 1822
+ 1702 1713 1728 1744 1778 1782
+ 1704 1711 1731 1749 1765 1769
+ 1706 1715 1732 1746 1764 1767
+ 1644 1670 1688 1758 1788 1819
+ 1683 1703 1712 1747 1784 1806 1813
+ 1685 1698 1726 1776 1791 1823
+ 1714 1716 1743 1744 1772 1775
+ 1716 1717 1742 1745 1770 1772
+ 1713 1714 1736 1742 1775 1778
+ 1717 1718 1743 1748 1770 1773
+ 1715 1723 1738 1757 1767 1779
+ 1697 1703 1733 1740 1805 1806
+ 1718 1719 1745 1750 1773 1774
+ 1711 1724 1737 1762 1769 1783
+ 1719 1721 1748 1753 1774 1777
+ 1433 1493 1725 1812 1972 2060
+ 1615 1669 1698 1791 1833 1864
+ 1721 1722 1750 1754 1777 1780
+ 1722 1753 1780 1781
+ 1661 1672 1729 1758 1815 1828
+ 1665 1676 1735 1761 1818 1822
+ 1723 1727 1746 1763 1779 1785
+ 1670 1672 1739 1755 1819 1828
+ 1709 1726 1734 1771 1776 1801
+ 1563 1664 1669 1802 1833 1900
+ 1665 1694 1756 1768 1818 1825
+ 1724 1734 1749 1771 1783 1786
+ 1727 1731 1757 1765 1785 1790
+ 1732 1738 1767 1792
+ 1731 1737 1763 1769 1790 1793
+ 1375 1408 1710 1919 1962 2147
+ 1738 1746 1764 1779 1792 1799
+ 1694 1708 1761 1787 1825 1830
+ 1737 1749 1765 1783 1793 1804
+ 1743 1745 1772 1773 1795 1797
+ 1734 1759 1762 1786 1801 1808
+ 1742 1743 1770 1775 1795 1796
+ 1745 1748 1770 1774 1797 1798
+ 1748 1750 1773 1777 1798 1800
+ 1742 1744 1772 1778 1796 1809
+ 1726 1741 1759 1801 1823 1835
+ 1750 1753 1774 1780 1800 1803
+ 1736 1744 1775 1782 1809 1816
+ 1746 1757 1767 1785 1799 1811
+ 1753 1754 1777 1781 1803 1807
+ 1754 1780 1807 1810
+ 1728 1736 1778 1789 1816 1821
+ 1749 1762 1769 1786 1804 1814
+ 1712 1728 1740 1789 1813 1820
+ 1757 1763 1779 1790 1811 1817
+ 1762 1771 1783 1808 1814
+ 1708 1729 1768 1815 1830 1892
+ 1688 1720 1739 1819 1858 1914
+ 1728 1782 1784 1820 1821
+ 1763 1765 1785 1793 1817 1824
+ 1698 1741 1752 1823 1864 15302
+ 1764 1767 1799 1831
+ 1765 1769 1790 1804 1824 1837
+ 1705 1733 1735 1805 1822 1907 1922
+ 1770 1772 1796 1797 1826 1827
+ 1772 1775 1795 1809 1826 1836
+ 1770 1773 1795 1798 1827 1829
+ 1773 1774 1797 1800 1829 1834
+ 1767 1779 1792 1811 1831 1840
+ 1774 1777 1798 1803 1834 1838
+ 1759 1771 1776 1808 1835 1845 1861
+ 1664 1707 1760 1832 1900 1950
+ 1777 1780 1800 1807 1838 1841
+ 1769 1783 1793 1814 1837 1842
+ 1733 1747 1794 1806 1897 1922
+ 1740 1747 1805 1813 1873 1897
+ 1780 1781 1803 1810 1841 1843
+ 1771 1786 1801 1814 1844 1845
+ 1775 1778 1796 1816 1836 1839
+ 1781 1807 1843 1846
+ 1779 1785 1799 1817 1840 1847
+ 1433 1439 1751 1903 2060 2263
+ 1740 1784 1806 1820 1856 1873
+ 1783 1786 1804 1808 1842 1844
+ 1729 1755 1787 1828 1892 1927
+ 1778 1782 1809 1821 1839 1848 1850
+ 1785 1790 1811 1824 1847 1849
+ 1756 1761 1822 1825 1876 1891
+ 1739 1758 1788 1828 1914 1937
+ 1784 1789 1813 1821 1851 1856
+ 1782 1789 1816 1820 1848 1851
+ 1735 1756 1794 1818 1876 1907
+ 1741 1776 1791 1835 1889 15302
+ 1790 1793 1817 1837 1849 1860
+ 1761 1768 1818 1830 1891 1893
+ 1795 1796 1827 1836 1853 1854
+ 1795 1797 1826 1829 1854 1855
+ 1755 1758 1815 1819 1927 1937
+ 1797 1798 1827 1834 1855 1857
+ 1768 1787 1825 1892 1893
+ 1792 1799 1840 1863
+ 1701 1707 1802 1890 1950 2018
+ 1669 1752 1760 1864 1900 1981
+ 1798 1800 1829 1838 1857 1859
+ 1776 1801 1823 1861 1880 1889
+ 1796 1809 1826 1839 1852 1853
+ 1793 1804 1824 1842 1860 1865
+ 1800 1803 1834 1841 1859 1862
+ 1809 1816 1836 1850 1852
+ 1799 1811 1831 1847 1863 1867
+ 1803 1807 1838 1843 1862 1866
+ 1804 1814 1837 1844 1865 1869
+ 1807 1810 1841 1846 1866 1870
+ 1808 1814 1842 1845 1869 1871
+ 1801 1808 1844 1861 1871 1887
+ 1810 1843 1870 1872
+ 1811 1817 1840 1849 1867 1874
+ 1816 1821 1850 1851 1868 1877
+ 1817 1824 1847 1860 1874 1883
+ 1816 1839 1848 1852 1868 1875
+ 1820 1821 1848 1856 1877 1886
+ 1836 1839 1850 1853 1875 1878
+ 1826 1836 1852 1854 1878 1879
+ 1826 1827 1853 1855 1879 1881
+ 1827 1829 1854 1857 1881 1884
+ 1813 1820 1851 1873 1886 1921
+ 1829 1834 1855 1859 1884 1885
+ 1720 1730 1788 1914 1924 1997
+ 1834 1838 1857 1862 1885 1888
+ 1824 1837 1849 1865 1883 1896
+ 1801 1835 1845 1880 1887 1909
+ 1838 1841 1859 1866 1888 1894
+ 1831 1840 1867 1899
+ 1752 1791 1833 1980 1981 15302
+ 1837 1842 1860 1869 1896 1902
+ 1841 1843 1862 1870 1894 1901
+ 1840 1847 1863 1874 1899 1905
+ 1848 1850 1875 1877 1898
+ 1842 1844 1865 1871 1902 1906
+ 1843 1846 1866 1872 1901 1904
+ 1844 1845 1869 1887 1906 1918
+ 1846 1870 1904 1908
+ 1806 1813 1856 1897 1921 1948
+ 1847 1849 1867 1883 1905 1913
+ 1850 1852 1868 1878 1898 1911
+ 1818 1822 1891 1907 1961
+ 1848 1851 1868 1886 1898 1916
+ 1852 1853 1875 1879 1911 1912
+ 1853 1854 1878 1881 1912 1915
+ 1835 1861 1889 1909 1920
+ 1854 1855 1879 1884 1910 1915
+ 797 1495 2261 2312 3001 15297
+ 1849 1860 1874 1896 1913 1925
+ 1855 1857 1881 1885 1910 1917
+ 1857 1859 1884 1888 1917 1923
+ 1851 1856 1877 1916 1921 1951
+ 1845 1861 1871 1909 1918 1931
+ 1859 1862 1885 1894 1923 1926
+ 1823 1835 1880 1920 1933 15302
+ 1701 1710 1832 1919 2018 2083
+ 1818 1825 1876 1893 1961 1986
+ 1787 1815 1830 1893 1927 2012 2034
+ 1825 1830 1891 1892 1986 2012
+ 1862 1866 1888 1901 1926 1928
+ 956 1544 1576 2125 2805 2889
+ 1860 1865 1883 1902 1925 1930
+ 1805 1806 1873 1922 1948 1978
+ 1868 1875 1877 1911 1916 1929
+ 1863 1867 1905 1934
+ 1760 1802 1833 1950 1981 2026
+ 1866 1870 1894 1904 1928 1932
+ 1865 1869 1896 1906 1930 1938
+ 1439 1544 1812 2125 2263 2489
+ 1870 1872 1901 1908 1932 1939
+ 1867 1874 1899 1913 1934 1941
+ 1869 1871 1902 1918 1938 1946
+ 1794 1822 1876 1922 1961 1991
+ 1872 1904 1939 1944
+ 1861 1880 1887 1920 1931 1942
+ 1881 1884 1915 1917 1935 1936
+ 1875 1878 1898 1912 1929 1945
+ 1878 1879 1911 1915 1940 1945
+ 1874 1883 1905 1925 1941 1949
+ 1788 1819 1858 1937 1997 2037
+ 1879 1881 1910 1912 1936 1940
+ 1877 1886 1898 1929 1951 1963
+ 1884 1885 1910 1923 1935 1943
+ 1871 1887 1906 1931 1946 1954
+ 1710 1766 1890 2083 2147
+ 1880 1889 1909 1933 1942 1958
+ 1856 1873 1886 1948 1951 1967
+ 1794 1805 1897 1907 1978 1991 2027
+ 1885 1888 1917 1926 1943 1947
+ 1725 1730 1858 1972 1997 2063
+ 1883 1896 1913 1930 1949 1953
+ 1888 1894 1923 1928 1947 1952
+ 1815 1828 1892 1937 2034 2056
+ 1894 1901 1926 1932 1952 1957
+ 1898 1911 1916 1945 1963 1973
+ 1896 1902 1925 1938 1953 1959
+ 1887 1909 1918 1942 1954 1955
+ 1901 1904 1928 1939 1957 1960
+ 1889 1920 1958 1980 1993 15302
+ 1899 1905 1941 15303
+ 1910 1917 1936 1943 1956 1968
+ 1910 1915 1935 1940 1956
+ 1819 1828 1914 1927 2037 2056
+ 1902 1906 1930 1946 1959 1966
+ 1904 1908 1932 1944 1960 1965
+ 1912 1915 1936 1945 1956 1979
+ 1905 1913 1934 1949 1969 15303
+ 1909 1920 1931 1955 1958 1974
+ 1917 1923 1935 1947 1968 1970
+ 1908 1939 1965 1971
+ 1911 1912 1929 1940 1973 1979 1995
+ 1906 1918 1938 1954 1966 1977
+ 1923 1926 1943 1952 1964 1970
+ 1873 1897 1921 1967 1978 2007
+ 1913 1925 1941 1953 1969 1976
+ 1802 1832 1900 2018 2026 2116
+ 1886 1916 1921 1963 1967 1983
+ 1926 1928 1947 1957 1964 1975
+ 1925 1930 1949 1959 1976 15304
+ 1918 1931 1946 1955 1977 1982
+ 1931 1942 1954 1974 1982
+ 1935 1936 1940 1968 1979 2004
+ 1928 1932 1952 1960 1975 1985
+ 1920 1933 1942 1974 1993 2000
+ 1930 1938 1953 1966 1990 15304
+ 1932 1939 1957 1965 1985 1989
+ 1876 1891 1907 1986 1991 2066 2079
+ 1408 1443 1766 1984 2147 2685 2755
+ 1916 1929 1951 1973 1983 1999
+ 1947 1952 1970 1975 1988
+ 1939 1944 1960 1971 1989 1994
+ 1938 1946 1959 1977 1990 1998
+ 1921 1948 1951 1983 2007 2009
+ 1935 1943 1956 1970 2004 2006
+ 1941 1949 1976 1992 1996 15303
+ 1943 1947 1964 1968 1988 2006
+ 1944 1965 1994 15305
+ 1725 1751 1924 2060 2063 2195
+ 1929 1945 1963 1995 1999 2008
+ 1942 1955 1958 1982 2000 2003
+ 1952 1957 1964 1985 1988 15306
+ 1949 1953 1969 1996 2001 15304
+ 1946 1954 1966 1982 1998 2002
+ 1897 1922 1948 2007 2027 2058
+ 1940 1945 1956 1995 2004 2011
+ 1864 1933 1981 1993 2046 2085 15302
+ 1833 1864 1900 1980 2026 2085 2117
+ 1954 1955 1974 1977 2002 2003
+ 1951 1963 1967 1999 2009 2014
+ 1443 1962 2261 2755 3305 15297
+ 1957 1960 1975 1989 2005 15306
+ 1891 1893 1961 2012 2079 2082
+ 302 446 894 3287 4973 5181
+ 1964 1970 1975 2006 2020 15306
+ 1960 1965 1985 1994 2005 2013
+ 1959 1966 1998 2010 2016 15304
+ 1907 1922 1961 2027 2066 2086
+ 1969 1996 2015 15303
+ 1933 1958 1980 2000 2040 2046
+ 1965 1971 1989 2013 2017 15305
+ 1945 1973 1979 2008 2011 2021
+ 1969 1976 1992 2001 2015 2024
+ 1858 1914 1924 2037 2063 2131
+ 1966 1977 1990 2002 2016 2025
+ 1963 1973 1983 2008 2014 2022
+ 1958 1974 1993 2003 2035 2040
+ 1976 1996 2010 2024 2030 15304
+ 1977 1982 1998 2003 2025 2029
+ 1974 1982 2000 2002 2029 2035
+ 1956 1968 1979 2006 2011 2042 2052
+ 1985 1989 2013 2028 2033 15306
+ 1968 1970 1988 2004 2020 2052 2057
+ 1948 1967 1978 2009 2053 2058
+ 1973 1995 1999 2021 2022 2031
+ 1967 1983 2007 2014 2048 2053
+ 1990 2001 2016 2030 2036 15304
+ 1979 1995 2004 2021 2032 2042
+ 1892 1893 1986 2034 2082 2095
+ 1989 1994 2005 2017 2033 2038
+ 1983 1999 2009 2022 2041 2048
+ 1992 1996 2024 2043
+ 1990 1998 2010 2025 2036 2044
+ 1994 2013 2023 2038 2045 15305
+ 1832 1890 1950 2083 2116 2207
+ 813 1656 2447 2790 3675 15299
+ 1988 2006 2028 2057 2065 15306
+ 1995 2008 2011 2031 2032 2047
+ 1999 2008 2014 2031 2039 2041
+ 2017 2045 2049 15305
+ 1996 2001 2015 2030 2043 2050
+ 1998 2002 2016 2029 2044 2051
+ 1900 1950 1981 2116 2117 2214
+ 1922 1978 1991 2058 2086 2114
+ 2005 2020 2033 2065 2068 15306
+ 2002 2003 2025 2035 2051 2067
+ 2001 2010 2024 2036 2050 2055
+ 2008 2021 2022 2039 2047 2054
+ 2011 2021 2042 2047 2061
+ 2005 2013 2028 2038 2068 2070
+ 1892 1927 2012 2056 2095 2128
+ 2000 2003 2029 2040 2067 2084
+ 2010 2016 2030 2044 2055 2064
+ 1914 1937 1997 2056 2131 2155
+ 2013 2017 2033 2045 2070 2071
+ 2022 2031 2041 2054 2059
+ 1993 2000 2035 2046 2084 2099
+ 2014 2022 2039 2048 2059 2072
+ 2004 2011 2032 2052 2061 2074
+ 2015 2024 2050 2075
+ 2016 2025 2036 2051 2064 2069
+ 2017 2023 2038 2049 2071 2077
+ 1980 1993 2040 2085 2099 2133
+ 2021 2031 2032 2054 2061 2076
+ 2009 2014 2041 2053 2072 2096
+ 2023 2045 2077 2080
+ 2024 2030 2043 2055 2075 2081
+ 2025 2029 2044 2067 2069 2088
+ 2004 2006 2042 2057 2074 2093 2098
+ 2007 2009 2048 2058 2096 2102
+ 2031 2039 2047 2059 2076 2089
+ 2030 2036 2050 2064 2081 2087
+ 1927 1937 2034 2037 2128 2155 2190
+ 2006 2020 2052 2065 2093 2094
+ 1978 2007 2027 2053 2102 2114 2141
+ 2039 2041 2054 2072 2089 2090
+ 1751 1812 1972 2195 2263 2540
+ 2032 2042 2047 2074 2076 2092
+ 372 612 1146 2078 4176 4383 15374
+ 1924 1972 1997 2131 2195 2326
+ 2036 2044 2055 2069 2087 2091
+ 2020 2028 2057 2068 2094 2100
+ 1961 1991 2079 2086 2150 2174
+ 2029 2035 2051 2084 2088 2109
+ 2028 2033 2065 2070 2097 2100
+ 2044 2051 2064 2088 2091
+ 2033 2038 2068 2071 2097 2101
+ 2038 2045 2070 2077 2101 2103
+ 2041 2048 2059 2090 2096 2107
+ 1028 1249 2171 2193 3690 3813
+ 2042 2052 2061 2092 2098 2106
+ 2043 2050 2081 2105
+ 2047 2054 2061 2089 2092 2110
+ 2045 2049 2071 2080 2103 2104
+ 612 1264 2062 2587 4169 4383
+ 1961 1986 2066 2082 2154 2174
+ 2049 2077 2104 2108
+ 2050 2055 2075 2087 2105 2112
+ 1986 2012 2079 2095 2154 2163
+ 1890 1919 2018 2147 2207 2364
+ 2035 2040 2067 2099 2109 2134
+ 1980 1981 2046 2117 2133 2203
+ 1991 2027 2066 2114 2150 2165
+ 2055 2064 2081 2091 2112 2120
+ 2051 2067 2069 2091 2109 2121
+ 2054 2059 2076 2090 2110 2115
+ 2059 2072 2089 2107 2115
+ 2064 2069 2087 2088 2120 2121
+ 2061 2074 2076 2106 2110 2122
+ 2052 2057 2094 2098 2111 2113
+ 2057 2065 2093 2100 2113 2123
+ 2012 2034 2082 2128 2160 2163
+ 2048 2053 2072 2102 2107 2132 2142
+ 2068 2070 2100 2101 2118 2130
+ 2052 2074 2093 2106 2111 2119 2126
+ 2040 2046 2084 2133 2134 2177
+ 2065 2068 2094 2097 2123 2130 2146
+ 2070 2071 2097 2103 2118 2124 2136
+ 2053 2058 2096 2141 2142 2166
+ 2071 2077 2101 2104 2124 2129
+ 2077 2080 2103 2108 2129 2135
+ 2075 2081 2112 2137
+ 2074 2092 2098 2122 2126 2138
+ 2072 2090 2096 2115 2132 2140
+ 2080 2104 2135 2137
+ 2067 2084 2088 2121 2134 2162
+ 2076 2089 2092 2115 2122 2144 2148
+ 2093 2098 2113 2119 2127
+ 2081 2087 2105 2120 2137 2159
+ 2093 2094 2111 2123 2127 2139
+ 2027 2058 2086 2141 2165 2181
+ 2089 2090 2107 2110 2140 2148
+ 1950 2018 2026 2207 2214 2356
+ 1981 2026 2085 2203 2214 2333
+ 2097 2101 2130 2136 2145
+ 2098 2111 2126 2127 15307
+ 2087 2091 2112 2121 2159 2178
+ 2088 2091 2109 2120 2162 2178
+ 2092 2106 2110 2138 2144 2157
+ 2094 2100 2113 2139 2146 2149 2152
+ 2101 2103 2129 2136 2143
+ 1544 1895 1903 2489 2889 2990
+ 2098 2106 2119 2138 2156 15307
+ 2111 2113 2119 2139 2151 15307
+ 2034 2056 2095 2160 2190 2223
+ 2103 2104 2124 2135 2143 2153
+ 2097 2100 2118 2145 2146 2176
+ 1997 2037 2063 2155 2326 2553
+ 2096 2107 2140 2142 2167 2185
+ 2046 2085 2099 2177 2203 2244
+ 2084 2099 2109 2162 2177 2206
+ 2104 2108 2129 2137 2153 2161
+ 2101 2118 2124 2143 2145 2158
+ 2105 2108 2112 2135 2159 2161 2189
+ 2106 2122 2126 2156 2157 2169
+ 2113 2123 2127 2149 2151 2164
+ 2107 2115 2132 2148 2167 2175
+ 2058 2102 2114 2166 2181 2201 2224
+ 2096 2102 2132 2166 2185 2188
+ 2124 2129 2136 2153 2158 2168
+ 2110 2122 2148 2157 2172 2180
+ 2118 2130 2136 2158 2176 2182
+ 2100 2123 2130 2152 2173 2176
+ 1766 1919 1962 2083 2364 2685 3003
+ 2110 2115 2140 2144 2175 2180
+ 2123 2139 2152 2164 2170
+ 2066 2086 2165 2174 2213 2239
+ 2127 2139 2164 2179 2183 15307
+ 2123 2146 2149 2170 2173
+ 2129 2135 2143 2161 2168 2184
+ 2079 2082 2163 2174 2251 2255
+ 2037 2056 2131 2190 2367 2553
+ 2126 2138 2169 2179 2187 15307
+ 2122 2138 2144 2169 2172 2186
+ 2136 2143 2145 2168 2182 2192
+ 2112 2120 2137 2178 2189 2217
+ 2095 2128 2163 2223 2241
+ 2135 2137 2153 2184 2189
+ 2109 2121 2134 2178 2206 2230
+ 2082 2095 2154 2160 2241 2255
+ 2139 2149 2151 2170 2183 2191
+ 2086 2114 2150 2181 2213 2242
+ 2102 2141 2142 2188 2201 2210
+ 2132 2140 2175 2185 2199 2211
+ 2143 2153 2158 2184 2192 2202
+ 2138 2156 2157 2186 2187 2197
+ 2149 2152 2164 2173 2191 2196
+ 882 1028 2073 2700 3813 4525
+ 2144 2157 2180 2186 2194
+ 2146 2152 2170 2176 2196 2198
+ 2066 2079 2150 2154 2239 2251 2294
+ 2140 2148 2167 2180 2199 2204
+ 2130 2145 2146 2173 2182 2198 2205
+ 2099 2133 2134 2206 2244 2284
+ 2120 2121 2159 2162 2217 2230 2272
+ 2151 2156 2183 2187 2200 2208 15307
+ 2144 2148 2172 2175 2194 2204
+ 2114 2141 2165 2224 2242 2286
+ 2145 2158 2176 2192 2205 2218
+ 2151 2164 2179 2191 2200 2212
+ 2153 2161 2168 2189 2202 2226
+ 2132 2142 2167 2188 2211 2216 2227
+ 2157 2169 2172 2194 2197 2209
+ 2156 2169 2179 2197 2208 2215
+ 2142 2166 2185 2210 2216 2221
+ 2137 2159 2161 2184 2217 2226 2254
+ 2056 2128 2155 2223 2345 2367
+ 2164 2170 2183 2196 2212 2220
+ 2158 2168 2182 2202 2218 2229
+ 1249 1576 2073 2805 3690 3839
+ 2172 2180 2186 2204 2209 2228
+ 1972 2060 2063 2326 2540 2724
+ 2170 2173 2191 2198 2220 2225
+ 2169 2186 2187 2209 2215 2222
+ 2173 2176 2196 2205 2225 2232
+ 2167 2175 2204 2211 2238 2247
+ 2179 2183 2208 2212 2233 2234
+ 2141 2166 2210 2224 2240 2260
+ 2168 2184 2192 2226 2229 2253
+ 2085 2117 2133 2244 2333 2373
+ 2175 2180 2194 2199 2228 2247 15308
+ 2176 2182 2198 2218 2232 2245
+ 2134 2162 2177 2230 2284 2319
+ 2018 2083 2116 2356 2364 2650
+ 2179 2187 2200 2215 2233 2235
+ 2186 2194 2197 2222 2228 2237
+ 2166 2188 2201 2221 2236 2240
+ 2167 2185 2199 2227 2238 2248
+ 2183 2191 2200 2220 2234 2243
+ 2150 2165 2239 2242 2285
+ 2026 2116 2117 2333 2356 2557
+ 2187 2197 2208 2222 2231 2235
+ 2185 2188 2221 2227 2246 2249
+ 2159 2178 2189 2254 2272 2306
+ 2182 2192 2205 2229 2245 2256
+ 1495 1656 2312 2790 3581 3809
+ 2191 2196 2212 2225 2243 2252
+ 2188 2210 2216 2236 2246
+ 2197 2209 2215 2231 2237 2250
+ 2128 2160 2190 2241 2345 2350
+ 2141 2181 2201 2260 2286 2297
+ 2196 2198 2220 2232 2252 2262
+ 2184 2189 2202 2253 2254 2277
+ 2185 2211 2216 2248 2249 2259
+ 2194 2204 2209 2237 2267 2278 15308
+ 2192 2202 2218 2253 2256 2275
+ 2162 2178 2206 2272 2319 2346
+ 2215 2222 2235 2250 2257
+ 2198 2205 2225 2245 2262 2271
+ 2200 2208 2234 2235 2264 2265
+ 2200 2212 2233 2243 2265 2268
+ 2208 2215 2231 2233 2257 2264
+ 2210 2221 2240 2246 2270 2276
+ 2209 2222 2228 2250 2267 2269
+ 2199 2211 2247 2248 2273 2274
+ 2150 2174 2213 2285 2294 2327
+ 2201 2210 2236 2260 2276 2290
+ 2160 2163 2223 2255 2350 2377
+ 2165 2181 2213 2285 2286 2352
+ 2212 2220 2234 2252 2268 2282
+ 2133 2177 2203 2284 2373 15309
+ 2205 2218 2232 2256 2271 2288
+ 2216 2221 2236 2249 2258 2270
+ 2199 2204 2238 2273 2287 15308
+ 2211 2227 2238 2259 2274 2283
+ 2216 2227 2246 2258 2259 2266
+ 2222 2231 2237 2257 2269 2279
+ 2154 2174 2255 2294 2414 2418
+ 2220 2225 2243 2262 2282 2289
+ 2202 2226 2229 2275 2277 2295
+ 2189 2217 2226 2277 2306 2314 2329
+ 2154 2163 2241 2251 2377 2414
+ 2218 2229 2245 2275 2288 2302
+ 2231 2235 2250 2264 2279 2291
+ 2246 2249 2266 2270 2281
+ 2227 2248 2249 2266 2280 2283
+ 2201 2224 2240 2290 2297 2323
+ 1882 1984 3001 3305 15297 15355
+ 2225 2232 2252 2271 2289 2299
+ 1812 1903 2060 2489 2540 3033 3271
+ 2233 2235 2257 2265 2291 2296
+ 2233 2234 2264 2268 2296 2301
+ 2249 2258 2259 2280 2281 2292
+ 2228 2237 2269 2278 2293 2303
+ 2234 2243 2265 2282 2301 2311
+ 2237 2250 2267 2279 2293 2305
+ 2236 2246 2258 2276 2281 2308 2310
+ 2232 2245 2262 2288 2299 2317
+ 2178 2217 2230 2306 2346 2371
+ 2238 2247 2274 2287 2307 2309
+ 2238 2248 2273 2283 2304 2309
+ 2229 2253 2256 2295 2302 2325
+ 2236 2240 2270 2290 2310 2320
+ 2226 2253 2254 2295 2314 2321
+ 2228 2267 2300 2303 2316 15308
+ 2250 2257 2269 2291 2305 2315
+ 2259 2266 2283 2292 2298
+ 2258 2266 2270 2292 2308 2313
+ 2243 2252 2268 2289 2311 2324
+ 2248 2259 2274 2280 2298 2304
+ 2177 2206 2244 2319 2449 15309
+ 2213 2239 2242 2327 2352 2393
+ 2181 2224 2242 2297 2352 2376 2429
+ 2247 2273 2300 2307 2318 15308
+ 2245 2256 2271 2302 2317 2336
+ 2252 2262 2282 2299 2324 2335
+ 2240 2260 2276 2320 2323 2344
+ 2257 2264 2279 2296 2315 2332
+ 2266 2280 2281 2298 2313 2322
+ 2267 2269 2303 2305 2330
+ 2174 2239 2251 2327 2418 2443
+ 2253 2275 2277 2321 2325 2347
+ 2264 2265 2291 2301 2332 2338
+ 2224 2260 2286 2323 2376 2379
+ 2280 2283 2292 2304 2322 2328
+ 2262 2271 2289 2317 2335 2357
+ 2278 2287 2316 2318 2334 2341 15308
+ 2265 2268 2296 2311 2338 2351
+ 2256 2275 2288 2325 2336 2363
+ 2267 2278 2293 2316 2330 2349
+ 2274 2283 2298 2309 2328 2331
+ 2269 2279 2293 2315 2330 2362
+ 2217 2254 2272 2329 2371 2398
+ 2273 2287 2309 2318 2339 2340
+ 2270 2281 2310 2313 2342 2343
+ 2273 2274 2304 2307 2331 2340 2353
+ 2270 2276 2308 2320 2343 2355
+ 2268 2282 2301 2324 2351 2360
+ 1495 1882 2219 3001 3581 15350
+ 2281 2292 2308 2322 2342 2348
+ 2254 2277 2321 2329 2375 2400
+ 2279 2291 2305 2332 2362 2372
+ 2278 2300 2303 2341 2349 2361
+ 2271 2288 2299 2336 2357 2383
+ 2287 2300 2307 2334 2337 2339
+ 2206 2230 2284 2346 2449 2507
+ 2276 2290 2310 2344 2355 2374
+ 2277 2295 2314 2347 2375
+ 2292 2298 2313 2328 2348 2354
+ 2260 2290 2297 2344 2379 2388
+ 2282 2289 2311 2335 2360 2378
+ 2275 2295 2302 2347 2363 2392
+ 2063 2131 2195 2553 2724 2909
+ 2239 2285 2294 2393 2443 2499
+ 2298 2304 2322 2331 2354 2359
+ 2254 2306 2314 2398 2400
+ 2293 2303 2305 2349 2362 2387
+ 2304 2309 2328 2353 2359 2369
+ 2291 2296 2315 2338 2372 2386
+ 2117 2203 2214 2373 2557 2638 2776
+ 2300 2318 2337 2341 2365 2368
+ 2289 2299 2324 2357 2378 2401
+ 2288 2302 2317 2363 2383 2408
+ 2318 2334 2339 2358 2365
+ 2296 2301 2332 2351 2386 2394
+ 2307 2318 2337 2340 2358 2366
+ 2307 2309 2339 2353 2366 2370
+ 2300 2316 2334 2361 2368 2384
+ 2308 2313 2343 2348 2380 2381
+ 2308 2310 2342 2355 2381 2390
+ 2290 2320 2323 2374 2388 2403
+ 2190 2223 2350 2367 2590 2742
+ 2230 2272 2319 2371 2505 2507
+ 2295 2321 2325 2375 2392 2417
+ 2313 2322 2342 2354 2380 2385
+ 2303 2316 2330 2361 2387 2397
+ 2223 2241 2345 2377 2495 2590
+ 2301 2311 2338 2360 2394 2405
+ 2242 2285 2286 2393 2429 2480 2518
+ 2309 2331 2340 2369 2370 2389
+ 2322 2328 2348 2359 2385 2391
+ 2310 2320 2343 2374 2390 2402
+ 2116 2207 2214 2557 2650 2852
+ 2299 2317 2335 2383 2401 2427
+ 2337 2339 2365 2366 2382
+ 2328 2331 2354 2369 2391 2399
+ 2311 2324 2351 2378 2405 2421
+ 2316 2341 2349 2384 2397 2407
+ 2305 2315 2330 2372 2387 2415 2422
+ 2302 2325 2336 2392 2408 2436
+ 2083 2147 2207 2650 3003 3250
+ 2334 2337 2358 2368 2382 2395
+ 2339 2340 2358 2370 2382 2396
+ 2155 2190 2345 2553 2742 2945
+ 2334 2341 2365 2384 2395 2404
+ 2331 2353 2359 2389 2399 2409
+ 2340 2353 2366 2389 2396 2406
+ 2272 2306 2346 2398 2505 2517
+ 2315 2332 2362 2386 2415 2428
+ 2203 2244 2333 2596 2638 15309
+ 2320 2344 2355 2402 2403 2426
+ 2314 2321 2347 2400 2417 2446
+ 2286 2297 2379 2429 2454 2469
+ 2241 2255 2350 2414 2495 2577
+ 2324 2335 2360 2401 2421 2441
+ 2297 2323 2376 2388 2434 2454
+ 2342 2348 2381 2385 2411 2412
+ 2342 2343 2380 2390 2411 2416
+ 2358 2365 2366 2395 2396 2410
+ 2317 2336 2357 2408 2427 2455
+ 2341 2361 2368 2404 2407 2419
+ 2348 2354 2380 2391 2412 2413
+ 2332 2338 2372 2394 2428 2433
+ 2330 2349 2362 2397 2422 2432
+ 2323 2344 2379 2403 2434 2451
+ 2353 2369 2370 2406 2409 2423
+ 2343 2355 2381 2402 2416 2430
+ 2354 2359 2385 2399 2413 2420
+ 2325 2347 2363 2417 2436 15310
+ 2285 2327 2352 2480 2499 2543
+ 2338 2351 2386 2405 2433 2453
+ 2365 2368 2382 2404 2410 2424
+ 2366 2370 2382 2406 2410 2425
+ 2349 2361 2387 2407 2432 2435
+ 2306 2329 2371 2400 2477 2517
+ 2359 2369 2391 2409 2420 2431
+ 2314 2329 2375 2398 2446 2477
+ 2335 2357 2378 2427 2441 2467
+ 2355 2374 2390 2426 2430 2450
+ 2344 2374 2388 2426 2451 2460
+ 2368 2384 2395 2419 2424 2437
+ 2351 2360 2394 2421 2453 2465
+ 2370 2389 2396 2423 2425 2438
+ 2361 2384 2397 2419 2435 2445
+ 2336 2363 2383 2436 2455 2482
+ 2369 2389 2399 2423 2431 2442
+ 2382 2395 2396 2424 2425 2439
+ 2380 2381 2412 2416 2440 2448
+ 2380 2385 2411 2413 2440 2444
+ 2385 2391 2412 2420 2444 2452
+ 2251 2255 2377 2418 2577 2578 2608
+ 2362 2372 2422 2428 2464 2468
+ 2381 2390 2411 2430 2448 2456
+ 2347 2375 2392 2446 2503 15310
+ 2251 2294 2414 2443 2578 2614
+ 2384 2404 2407 2437 2445 2462
+ 2391 2399 2413 2431 2452 2457
+ 2360 2378 2405 2441 2465 2481
+ 2362 2387 2415 2432 2464 2485
+ 2389 2406 2409 2438 2442 2461
+ 2395 2404 2410 2437 2439 2459
+ 2396 2406 2410 2438 2439 2458
+ 2374 2402 2403 2450 2460 2472
+ 2357 2383 2401 2455 2467 2492
+ 2372 2386 2415 2433 2468 2479
+ 2286 2352 2376 2469 2518 2522
+ 2390 2402 2416 2450 2456 2466
+ 2399 2409 2420 2442 2457 2463
+ 2387 2397 2422 2435 2470 2485
+ 2386 2394 2428 2453 2479 2488
+ 2379 2388 2451 2454 2490 2494
+ 2397 2407 2432 2445 2470 2475
+ 2363 2392 2408 2482 2515 15310
+ 2404 2419 2424 2459 2462 2474
+ 2406 2423 2425 2458 2461 2473
+ 2410 2424 2425 2458 2459 2471
+ 2411 2412 2444 2448
+ 2378 2401 2421 2467 2481 2504
+ 2409 2423 2431 2461 2463 2476
+ 2294 2327 2418 2499 2611 2614
+ 2412 2413 2440 2452
+ 2407 2419 2435 2462 2475 2478
+ 2375 2400 2417 2477 2503 2534
+ 2019 2587 3675 15299 15364
+ 2411 2416 2440 2456
+ 2284 2319 2507 2606 2641 15309
+ 2402 2426 2430 2466 2472 2484
+ 2388 2403 2434 2460 2490 2491
+ 2413 2420 2444 2457
+ 2394 2405 2433 2465 2488 2500
+ 2376 2379 2434 2469 2494 2509
+ 2383 2408 2427 2482 2492 2521
+ 2416 2430 2448 2466
+ 2420 2431 2452 2463
+ 2425 2438 2439 2471 2473 15311
+ 2424 2437 2439 2471 2474 2483
+ 2403 2426 2451 2472 2491 2498
+ 2423 2438 2442 2473 2476 2486
+ 2419 2437 2445 2474 2478 2487
+ 2431 2442 2457 2476
+ 2415 2422 2468 2485 2508 2513
+ 2405 2421 2453 2481 2500 2519
+ 2430 2450 2456 2484
+ 2401 2427 2441 2492 2504 2526
+ 2415 2428 2464 2479 2508 2516
+ 2376 2429 2454 2509 2522 2537
+ 2432 2435 2475 2485 2502 2510
+ 2439 2458 2459 2483 15311 15312
+ 2426 2450 2460 2484 2498 2506
+ 2438 2458 2461 2486 2497 15311
+ 2437 2459 2462 2483 2487 2496
+ 2435 2445 2470 2478 2493 2502
+ 2442 2461 2463 2486
+ 2398 2400 2446 2517 2534 2571
+ 2445 2462 2475 2487 2493 2501
+ 2428 2433 2468 2488 2516 2523
+ 2352 2393 2518 2543 2551 2581
+ 2421 2441 2465 2504 2519 2539
+ 2408 2436 2455 2515 2521 2548
+ 2459 2471 2474 2496 2511 15312
+ 2450 2466 2472 2506
+ 2422 2432 2464 2470 2510 2513 2532
+ 2461 2473 2476 2497
+ 2462 2474 2478 2496 2501 2514
+ 2433 2453 2479 2500 2523 2536
+ 1903 2125 2263 2990 3033 3393
+ 2434 2451 2491 2494 2527 2530
+ 2451 2460 2490 2498 2527 2529
+ 2427 2455 2467 2521 2526 2554
+ 2475 2478 2501 2502 2520
+ 2434 2454 2490 2509 2530 2541
+ 2350 2377 2577 2590 2692
+ 2474 2483 2487 2511 2514 2525
+ 2473 2486 2512 15311
+ 2460 2472 2491 2506 2529 2531
+ 2327 2393 2443 2543 2611 2612
+ 2453 2465 2488 2519 2536 2550
+ 2478 2487 2493 2514 2520 2528
+ 2470 2475 2493 2510 2520 2533
+ 2417 2446 2534 2546 2591 15310
+ 2441 2467 2481 2526 2539 2561
+ 2346 2371 2507 2517 2639 2674
+ 2472 2484 2498 2531
+ 2319 2346 2449 2505 2641 2674 2713
+ 2464 2468 2513 2516 2545 2547
+ 2454 2469 2494 2537 2541 2558
+ 2470 2485 2502 2532 2533 2549
+ 2483 2496 2524 2525 2538 15312
+ 2497 2524 15311 15312
+ 2464 2485 2508 2532 2545 2559
+ 2487 2496 2501 2525 2528 2542
+ 2436 2482 2546 2548 2585 15310
+ 2468 2479 2508 2523 2547 2556
+ 2371 2398 2477 2505 2571 2639 2669
+ 2352 2429 2480 2522 2551 2576 2593
+ 2465 2481 2500 2539 2550 2572
+ 2493 2501 2502 2528 2533 2544
+ 2455 2482 2492 2548 2554 2583
+ 2429 2469 2518 2537 2575 2576
+ 2479 2488 2516 2536 2556 2567
+ 2511 2512 2538 15312
+ 2496 2511 2514 2538 2542 2552
+ 2467 2492 2504 2554 2561 15313
+ 2490 2491 2529 2530 2563 2564
+ 2501 2514 2520 2542 2544 2555
+ 2491 2498 2527 2531 2562 2563
+ 2490 2494 2527 2541 2564 2573
+ 2498 2506 2529 2562
+ 2485 2510 2513 2549 2559 2568 2569
+ 2502 2510 2520 2544 2549 2560
+ 2446 2477 2503 2571 2591 2637
+ 226 275 361 5293 5550 6549
+ 2488 2500 2523 2550 2567 2582
+ 2469 2509 2522 2558 2575 2586
+ 2511 2524 2525 2552
+ 2481 2504 2519 2561 2572 2595
+ 2060 2195 2263 2724 3271 3518
+ 2494 2509 2530 2558 2573 2580
+ 2514 2525 2528 2552 2555 2566
+ 2393 2480 2499 2581 2612 2658
+ 2520 2528 2533 2555 2560 2570
+ 2508 2513 2547 2559 2584 2588
+ 2503 2515 2585 2591 2630 15310
+ 2508 2516 2545 2556 2584 2592
+ 2482 2515 2521 2583 2585 2625
+ 2510 2532 2533 2560 2569 2574
+ 2500 2519 2536 2572 2582 2603
+ 2480 2518 2581 2593 2618
+ 2525 2538 2542 2566
+ 2131 2155 2326 2367 2909 2945 3134
+ 2492 2521 2526 2583 2621 15313
+ 2528 2542 2544 2566 2570 2579
+ 2516 2523 2547 2567 2592 2602
+ 2214 2333 2356 2776 2852 3019
+ 2509 2537 2541 2580 2586 2599
+ 2513 2532 2545 2568 2588 15314
+ 2533 2544 2549 2570 2574 2589
+ 2504 2526 2539 2595 2623 15313
+ 2529 2531 2563 2598
+ 2527 2529 2562 2564 2598 2601
+ 2527 2530 2563 2573 2601 2605
+ 293 295 3697 3878 4830 4888
+ 2542 2552 2555 2579
+ 2523 2536 2556 2582 2602 2615
+ 2532 2559 2569 2597 15314
+ 2532 2549 2568 2574 2594 2597
+ 2544 2555 2560 2579 2589 2600
+ 2477 2517 2534 2637 2669 2695
+ 2519 2539 2550 2595 2603 2629
+ 2530 2541 2564 2580 2605 2609
+ 2549 2560 2569 2589 2594 2604
+ 2522 2537 2576 2586 2607 2610
+ 2518 2522 2575 2593 2607 2624
+ 2377 2414 2495 2608 2692 2759
+ 2414 2418 2608 2614 2680 2687
+ 2555 2566 2570 2600
+ 2541 2558 2573 2599 2609 2628
+ 2480 2543 2551 2618 2658 2666
+ 2536 2550 2567 2603 2615 2635
+ 2521 2548 2554 2621 2625 15315
+ 2545 2547 2588 2592 2620 2626
+ 2515 2546 2548 2625 2630 2665
+ 2537 2558 2575 2599 2610 2622
+ 1264 2078 2447 4169 15299 15364
+ 2545 2559 2584 2619 2620 15314
+ 2560 2570 2574 2600 2604 2613
+ 2345 2350 2495 2692 2742 2811
+ 2503 2534 2546 2630 2637 2671
+ 2547 2556 2584 2602 2626 2632
+ 2518 2551 2576 2618 2624 2645
+ 2569 2574 2597 2604 2616 2627
+ 2539 2561 2572 2623 2629 2651
+ 2373 2606 2638 2753 2834 15309
+ 2568 2569 2594 2616 2617 15314
+ 2562 2563 2601 2634
+ 2558 2580 2586 2622 2628 2631
+ 2570 2579 2589 2613
+ 2563 2564 2598 2605 2634 2642
+ 2556 2567 2592 2615 2632 2648
+ 2550 2572 2582 2629 2635 2659
+ 2574 2589 2594 2613 2627 2633
+ 2564 2573 2601 2609 2642 2647
+ 2449 2596 2641 2752 2753 15309
+ 2575 2576 2610 2624 2636 2657
+ 2414 2577 2578 2680 2754 2759
+ 2573 2580 2605 2628 2647 2652
+ 2575 2586 2607 2622 2636 2646
+ 2443 2499 2612 2614 2715 2716
+ 2499 2543 2611 2658 2697 2715
+ 2589 2600 2604 2633
+ 2418 2443 2578 2611 2687 2716 2740
+ 2567 2582 2602 2635 2648 2664
+ 2594 2597 2617 2627 2640 2644
+ 2597 2616 2619 2640 2643 15314
+ 2551 2581 2593 2645 2666 2690
+ 2588 2617 2620 2643 2649 15314
+ 2584 2588 2619 2626 2649 2656
+ 2554 2583 2653 2688 15313 15315
+ 2586 2599 2610 2631 2646 2655
+ 2561 2595 2651 2653 2676 15313
+ 2576 2593 2607 2645 2657 2673
+ 2548 2583 2585 2665 2703 15315
+ 2584 2592 2620 2632 2656 2662
+ 2594 2604 2616 2633 2644 2654
+ 2580 2599 2609 2631 2652 2661
+ 2572 2595 2603 2651 2659 2679
+ 2546 2585 2591 2665 2671 2701
+ 2599 2622 2628 2655 2661
+ 2592 2602 2626 2648 2662 2675
+ 2604 2613 2627 2654
+ 2598 2601 2642 2672
+ 2582 2603 2615 2659 2664 2684
+ 2607 2610 2646 2657 2670
+ 2534 2571 2591 2671 2695 2712
+ 2333 2373 2596 2776 2834 2923
+ 2505 2517 2669 2674 2761 2768
+ 2616 2617 2643 2644 2660 2663
+ 2449 2507 2606 2713 2752 2809
+ 2601 2605 2634 2647 2672 2678
+ 2617 2619 2640 2649 2660 2667
+ 2616 2627 2640 2654 2663 2668
+ 2593 2618 2624 2673 2690 2711
+ 2610 2622 2636 2655 2670 2677
+ 2605 2609 2642 2652 2678 2683
+ 2602 2615 2632 2664 2675 2694
+ 2619 2620 2643 2656 2667 2681
+ 2207 2356 2364 2852 3250 3316
+ 2595 2623 2629 2676 2679 2699
+ 2609 2628 2647 2661 2683 2686
+ 2621 2623 2676 2688 2705 15313
+ 2627 2633 2644 2668
+ 2622 2631 2646 2661 2677 2691
+ 2620 2626 2649 2662 2681 2693
+ 2607 2624 2636 2670 2673 2702
+ 2543 2581 2612 2666 2697 2726 2736
+ 2603 2629 2635 2679 2684 2706
+ 2640 2643 2663 2667 2682
+ 2628 2631 2652 2655 2686 2691
+ 2626 2632 2656 2675 2693 2698
+ 2640 2644 2660 2668 2682 2689
+ 2615 2635 2648 2684 2694 2707
+ 2585 2625 2630 2701 2703 2738
+ 2581 2618 2658 2690 2726 2729
+ 2643 2649 2660 2681 2682 2696
+ 2644 2654 2663 2689
+ 2517 2571 2639 2695 2764 2768
+ 2636 2646 2657 2677 2702 2710
+ 2591 2630 2637 2701 2712 2732
+ 2634 2642 2678 2708
+ 2624 2645 2657 2702 2711 2746
+ 2505 2507 2639 2713 2761 2774
+ 2632 2648 2662 2694 2698 15316
+ 2623 2651 2653 2699 2705 2721
+ 2646 2655 2670 2691 2710 2717
+ 2642 2647 2672 2683 2708 2714
+ 2629 2651 2659 2699 2706 2725
+ 2578 2608 2687 2750 2754
+ 2649 2656 2667 2693 2696 2709 2722
+ 2660 2663 2667 2689 2696 2704
+ 2647 2652 2678 2686 2714 2719
+ 2635 2659 2664 2706 2707 2735
+ 1962 2147 2755 3003 3755 3759
+ 2652 2661 2683 2691 2718 2719
+ 2578 2614 2680 2740 2750 2757
+ 2621 2653 2705 2727 2734 15315
+ 2663 2668 2682 2704
+ 2618 2645 2666 2711 2729 2733
+ 2655 2661 2677 2686 2717 2718
+ 2495 2577 2590 2759 2811 2870
+ 2656 2662 2681 2698 2709 2720
+ 2648 2664 2675 2707 2728 15316
+ 2571 2637 2669 2712 2762 2764
+ 2667 2681 2682 2704 2722 2723
+ 2612 2658 2715 2736 2766
+ 2662 2675 2693 2720 2731 15316
+ 2651 2676 2679 2721 2725 2741
+ 882 1168 2171 4501 4525 4893
+ 2630 2665 2671 2732 2738 2778
+ 2657 2670 2673 2710 2746 2747
+ 2625 2665 2727 2738 2787 2801 15315
+ 2682 2689 2696 2723
+ 2653 2676 2688 2721 2734 2739
+ 2659 2679 2684 2725 2735 2749
+ 2664 2684 2694 2728 2735 2760
+ 2672 2678 2714 2743
+ 2681 2693 2720 2722 2730 2737
+ 2670 2677 2702 2717 2747 15318
+ 2645 2673 2690 2733 2746 2758
+ 2637 2671 2695 2732 2762 2771
+ 2507 2641 2674 2774 2809 2828 2868
+ 2678 2683 2708 2719 2743 2745
+ 2611 2612 2697 2716 2766 2784 2817
+ 2611 2614 2715 2740 2784 2788
+ 2677 2691 2710 2718 2748 15318
+ 2686 2691 2717 2719 2748 15320
+ 2683 2686 2714 2718 2745 15320
+ 2693 2698 2709 2731 2737 15319
+ 2676 2699 2705 2739 2741 2756
+ 2681 2696 2709 2723 2730 15317
+ 2696 2704 2722 15317
+ 2195 2326 2540 2909 3336 3518
+ 2679 2699 2706 2741 2749 2779
+ 2658 2666 2729 2736 2765 2772
+ 2688 2703 2734 2783 2787 15315
+ 2694 2707 2744 2760 2773 15316
+ 2666 2690 2726 2733 2765 2767
+ 2709 2722 2737 2751 15317
+ 2698 2720 2744 2763 15316 15319
+ 2671 2701 2712 2771 2778 2807
+ 2690 2711 2729 2758 2767 2769
+ 2688 2705 2727 2739 2775 2783
+ 2684 2706 2707 2749 2760 2785 2789
+ 2658 2697 2726 2766 2772 2798
+ 2709 2720 2730 2751 2770 15319
+ 2665 2701 2703 2778 2801 15322
+ 2705 2721 2734 2756 2775
+ 2614 2687 2716 2757 2788 2819
+ 2699 2721 2725 2756 2779 2795
+ 2345 2367 2590 2811 2945 3067 3137
+ 2708 2714 2745 2782
+ 2728 2731 2763 2773 2781 15316
+ 2714 2719 2743 2782 2786 15320
+ 2673 2702 2711 2747 2758 2799 2804
+ 2702 2710 2746 2794 2799 15318
+ 2717 2718 2791 2793 15318 15320
+ 2706 2725 2735 2779 2785 2816
+ 2680 2687 2754 2757 2831 2856
+ 2730 2737 2770 2777 15317
+ 2606 2641 2753 2809 2854 2901
+ 2596 2606 2752 2834 2901 2960
+ 2608 2680 2750 2759 2856 2905
+ 1962 1984 2685 3305 3759 3960
+ 2721 2739 2741 2775 2795 2813
+ 2687 2740 2750 2819 2831
+ 2711 2733 2746 2769 2804 2808
+ 2577 2608 2692 2754 2870 2905 2973
+ 2707 2728 2735 2773 2789 2792
+ 2639 2674 2768 2774 2857 2863
+ 2695 2712 2764 2771 2829 2847
+ 2731 2744 2780 2781 15319 15321
+ 2669 2695 2762 2768 2847 15323
+ 2726 2729 2767 2772 2797 2803
+ 2697 2715 2736 2798 2817 2823
+ 2729 2733 2765 2769 2803 2806
+ 2639 2669 2761 2764 2863 15323
+ 2733 2758 2767 2806 2808
+ 2737 2751 2777 2780 2796 15319
+ 2712 2732 2762 2807 2829
+ 2726 2736 2765 2797 2798 2824
+ 2728 2744 2760 2781 2792 2802
+ 2674 2713 2761 2828 2857
+ 2734 2739 2756 2783 2813 2821
+ 2333 2557 2638 2923 3019 3122
+ 2751 2770 2796
+ 2701 2732 2738 2807 2850 15322
+ 2725 2741 2749 2795 2816 2841
+ 2763 2770 2796 2800 15319 15321
+ 2744 2763 2773 2802 2810 15321
+ 2743 2745 2786 2822
+ 2727 2734 2775 2787 2821 2826
+ 2715 2716 2788 2817 2849 2862
+ 2735 2749 2789 2812 2816 2839
+ 2745 2782 2791 2822 2827 15320
+ 2703 2727 2783 2801 2826 2837
+ 2716 2740 2784 2819 2849 2861
+ 2735 2760 2785 2792 2812 2815
+ 1656 2019 2219 3675 3809 4157
+ 2748 2786 2793 2827 2832 15320
+ 2760 2773 2789 2802 2815 2820
+ 2748 2791 2794 2832 2835 15318
+ 2747 2793 2799 2835 2840 15318
+ 2741 2756 2779 2813 2841 2858
+ 2770 2777 2780 2800 2818
+ 2765 2772 2803 2824 2833
+ 2736 2766 2772 2823 2824 2866
+ 2746 2747 2794 2804 2840 2842
+ 2780 2796 2814 2818 15321
+ 2703 2738 2787 2837 2855 15322
+ 2773 2781 2792 2810 2820 2825
+ 2765 2767 2797 2806 2833 2838
+ 2746 2758 2799 2808 2842 2846
+ 1576 1895 2193 2889 3839 3931 4130
+ 2767 2769 2803 2808 2838 2845
+ 2732 2771 2778 2829 2850 2882
+ 2758 2769 2804 2806 2845 2846
+ 2641 2713 2752 2854 2868 2916
+ 2781 2802 2814 2825 2830 15321
+ 2590 2692 2742 2870 3008 3067
+ 2785 2789 2815 2839 2843
+ 2756 2775 2795 2821 2858 2860
+ 2800 2810 2818 2830 2836 15321
+ 2789 2792 2812 2820 2843 2844
+ 2749 2779 2785 2839 2841 2867 2879
+ 2715 2766 2784 2823 2862 2880 2900
+ 2796 2800 2814 2836
+ 2740 2757 2788 2831 2861 2898
+ 2792 2802 2815 2825 2844 2848
+ 2775 2783 2813 2826 2860 2869
+ 2782 2786 2827 2859
+ 2766 2798 2817 2866 2880
+ 2772 2797 2798 2833 2866 2877
+ 2802 2810 2820 2830 2848 2851
+ 2783 2787 2821 2837 2869 2875
+ 2786 2791 2822 2832 2859 2872
+ 2713 2774 2857 2868 15326
+ 2762 2771 2807 2847 2882 15325
+ 2810 2814 2825 2836 2851 2853
+ 2750 2757 2819 2856 2898 2944
+ 2791 2793 2827 2835 2872 2874
+ 2797 2803 2824 2838 2877 2881
+ 2596 2638 2753 2923 2960 3057
+ 2793 2794 2832 2840 2874 2878
+ 2814 2818 2830 2853
+ 2787 2801 2826 2855 2875 2885
+ 2803 2806 2833 2845 2881 2886
+ 2785 2812 2816 2843 2864 2867
+ 2794 2799 2835 2842 2878 2883
+ 2779 2795 2816 2858 2879 2887
+ 2799 2804 2840 2846 2883 2884
+ 2812 2815 2839 2844 2864 2865
+ 2815 2820 2843 2848 2865 2871
+ 2806 2808 2838 2846 2886 2888
+ 2804 2808 2842 2845 2884 2888
+ 2762 2764 2829 2957 15323 15325
+ 2820 2825 2844 2851 2871 2873
+ 2784 2788 2861 2862 2902 2939
+ 2778 2807 2882 2896 2925 15322
+ 2825 2830 2848 2853 2873 2876
+ 2356 2557 2650 3019 3316 3404
+ 2830 2836 2851 2876
+ 2752 2809 2901 2916 15329
+ 2801 2837 2885 2893 2899 15322
+ 2750 2754 2831 2905 2944 2998
+ 2761 2774 2828 2863 2952 15326
+ 2795 2813 2841 2860 2887 2906 2907 2935
+ 2822 2827 2872 2903
+ 2813 2821 2858 2869 2907 2918
+ 2788 2819 2849 2898 2939 2965
+ 2784 2817 2849 2900 2902 2936
+ 2761 2768 2857 2952 3005 15323
+ 2839 2843 2865 2867 2890 2891
+ 2843 2844 2864 2871 2890 2892
+ 2798 2823 2824 2877 2880 2929 2930
+ 2816 2839 2864 2879 2891 2895
+ 2713 2809 2828 2916 3002 15326
+ 2821 2826 2860 2875 2912 2918
+ 2692 2759 2811 2973 3008 3066
+ 2844 2848 2865 2873 2892 2894
+ 2827 2832 2859 2874 2903 2908
+ 2848 2851 2871 2876 2894 2897
+ 2832 2835 2872 2878 2908 2920
+ 2826 2837 2869 2885 2912 2915
+ 2851 2853 2873 2897
+ 2824 2833 2866 2881 2930 2932
+ 2835 2840 2874 2883 2920 2924
+ 2816 2841 2867 2887 2895 2904 15324
+ 2817 2823 2866 2900 2929 2941
+ 2833 2838 2877 2886 2931 2932
+ 2807 2829 2850 2925 2971 15325
+ 2840 2842 2878 2884 2924 2926
+ 2842 2846 2883 2888 2926 2928
+ 2837 2855 2875 2899 2915 2922
+ 2838 2845 2881 2888 2931 2934
+ 2841 2858 2879 2906 2921 15324
+ 2845 2846 2884 2886 2928 2934
+ 1895 2125 2805 2990 3748 3931
+ 2864 2865 2891 2892 2910 2913
+ 2864 2867 2890 2895 2910 2911
+ 2865 2871 2890 2894 2913 2917
+ 2855 2896 2899 2933 2938 15322
+ 2871 2873 2892 2897 2917 2919
+ 2867 2879 2891 2904 2911 2914
+ 2850 2893 2925 2938 2968 15322
+ 2873 2876 2894 2919
+ 2819 2831 2861 2944 2965 3011
+ 2855 2885 2893 2922 2933
+ 2817 2862 2880 2936 2941 2955
+ 2752 2753 2854 2960 3125 15329
+ 2849 2862 2936 2939 2967
+ 2859 2872 2908 2954
+ 2879 2895 2914 2927 2937 15324
+ 2754 2759 2856 2973 2998 3060
+ 2858 2887 2921 2935 2943
+ 2858 2860 2918 2935 2951 2959
+ 2872 2874 2903 2920 2954 2963
+ 2326 2553 2724 3134 3336 3496
+ 2890 2891 2911 2913 2942 15327
+ 2891 2895 2910 2914 2940 2942
+ 2869 2875 2915 2918 2949 2956 15328
+ 2890 2892 2910 2917 2946 15327
+ 2895 2904 2911 2937 2940
+ 2875 2885 2912 2922 2953 2956
+ 2809 2854 2868 3002 3083 15329
+ 2892 2894 2913 2919 2946 2947
+ 2860 2869 2907 2912 2949 2951 2974
+ 2894 2897 2917 2947
+ 2874 2878 2908 2924 2963 2972
+ 2887 2906 2927 2943 2948 15324
+ 2885 2899 2915 2933 2953 2962
+ 2638 2776 2834 3057 3122 3206
+ 2878 2883 2920 2926 2972 2975
+ 2850 2882 2896 2968 2971 3010
+ 2883 2884 2924 2928 2975 2977
+ 2904 2921 2937 2948 2950 15324
+ 2884 2888 2926 2934 2977 2979
+ 2866 2880 2930 2941 2986 2989
+ 2866 2877 2929 2932 2982 2986
+ 2881 2886 2932 2934 2984 2985
+ 2877 2881 2930 2931 2982 2985
+ 2893 2899 2922 2938 2962 2970
+ 2886 2888 2928 2931 2979 2984
+ 2858 2906 2907 2943 2959 2981
+ 2862 2900 2902 2955 2967 2999
+ 2904 2914 2927 2940 2950 2958
+ 2893 2896 2933 2968 2970 2992
+ 2849 2861 2902 2965 2967 3007
+ 2911 2914 2937 2942 2958 2961
+ 2880 2900 2929 2955 2978 2989
+ 2910 2911 2940 2961 2964 15327
+ 2906 2921 2935 2948 2976 2981
+ 2831 2856 2898 2998 3011 3068
+ 2367 2553 2742 3134 3137 3311 3483
+ 2913 2917 2947 2966 2969 15327
+ 2917 2919 2946 2969
+ 2921 2927 2943 2950 2976 2983
+ 2912 2918 2974 2987 15328
+ 2927 2937 2948 2958 2983 2988
+ 2907 2918 2959 2974 2980 15330
+ 2857 2863 3005 3044 3077 15326
+ 2915 2922 2956 2962 3000 3014
+ 2903 2908 2963 3009
+ 2900 2936 2941 2978 2999 3024
+ 2912 2915 2953 2994 3000 15328
+ 2847 3015 3030 15323 15325 15331
+ 2937 2940 2950 2961 2988 2991
+ 2907 2935 2951 2980 2981 2996
+ 2753 2834 2901 3057 3125 3169
+ 2940 2942 2958 2964 2991 2993
+ 2922 2933 2953 2970 3014 3029
+ 2908 2920 2954 2972 3009 3018
+ 2942 2961 2966 2993 2995 15327
+ 2861 2898 2939 3007 3011 3062
+ 2946 2964 2969 2995 2997 15327
+ 2902 2936 2939 2999 3007 3046
+ 2896 2925 2938 2992 3010 3031
+ 2946 2947 2966 2997
+ 2933 2938 2962 2992 3027 3029
+ 2882 2925 3010 3015 3042 15325
+ 2920 2924 2963 2975 3018 3028
+ 2759 2870 2905 3060 3066 3140
+ 2918 2949 2951 2987 3004 15330
+ 2924 2926 2972 2977 3028 3032
+ 2943 2948 2981 2983 3012 3013
+ 2926 2928 2975 2979 3032 3035
+ 2941 2955 2989 3024 3040
+ 2928 2934 2977 2984 3035 3039
+ 2951 2959 2996 3006 15330
+ 2935 2943 2959 2976 2996 3012 3020
+ 2930 2932 2985 2986 3037 3043
+ 2948 2950 2976 2988 3013 3016
+ 2931 2934 2979 2985 3039 3045
+ 2931 2932 2982 2984 3043 3045
+ 2929 2930 2982 2989 3037 3038
+ 2949 2974 2994 3004 3034 15328
+ 2950 2958 2983 2991 3016 3017
+ 2929 2941 2978 2986 3038 3040
+ 2125 2489 2889 3393 3716 3748
+ 2958 2961 2988 2993 3017 3021
+ 2938 2968 2970 3027 3031
+ 2961 2964 2991 2995 3021 3023
+ 2956 2987 3000 3034 3036 15328
+ 2964 2966 2993 2997 3023 3026
+ 2959 2980 2981 3006 3020 3022
+ 2966 2969 2995 3026
+ 2856 2905 2944 3060 3068 3141
+ 2936 2955 2967 3024 3046 3065
+ 2953 2956 2994 3014 3036 3056
+ 1882 2261 2312 3994 15350 15355
+ 2868 2916 3044 3083 3136 15326
+ 2147 2364 2685 3250 3755 3760
+ 2974 2987 3025 3034 3055 15330
+ 2863 2952 3030 3077 3127 15323 15334
+ 2980 2996 3022 3025 3041 15330
+ 2939 2965 2967 3046 3062 3100
+ 2811 2870 3066 3067 3159 3193
+ 2954 2963 3018 3064
+ 2925 2968 2971 3031 3042 3069 3082
+ 2898 2944 2965 3062 3068 3120
+ 2976 2981 3013 3020 3047 3051
+ 2976 2983 3012 3016 3047 3048
+ 2953 2962 3000 3029 3056 3059
+ 2957 2971 3042 3073 3089 15325 15331
+ 2983 2988 3013 3017 3048 3049
+ 2988 2991 3016 3021 3049 3052
+ 2963 2972 3009 3028 3064 3072
+ 2557 2776 2852 3122 3404 3407
+ 2981 2996 3012 3022 3050 3051
+ 2991 2993 3017 3023 3052 3053
+ 2996 3006 3020 3041 3050
+ 2993 2995 3021 3026 3053 3054
+ 2955 2978 2999 3040 3065 3087
+ 3004 3006 3041 3055 3058 15330
+ 2995 2997 3023 3054
+ 2970 2992 3029 3031 3061 3063
+ 2972 2975 3018 3032 3072 3081
+ 2962 2970 3014 3027 3059 3061 3070
+ 2957 3005 3112 15323 15331 15334
+ 2968 2992 3010 3027 3063 3082
+ 2975 2977 3028 3035 3081 3085
+ 2263 2489 3271 3393 3596 3667
+ 2987 2994 3004 3036 3055 3080 3084
+ 2977 2979 3032 3039 3085 3092
+ 2994 3000 3034 3056 3080 3086
+ 2982 2986 3038 3043 3093 3097
+ 2986 2989 3037 3040 3090 3093
+ 2979 2984 3035 3045 3092 3095
+ 2978 2989 3024 3038 3087 3090
+ 3006 3022 3025 3050 3058 15332
+ 2971 3010 3015 3069 3089 3110
+ 2982 2985 3037 3045 3097 3099
+ 2952 3002 3077 3136 3192 15326
+ 2984 2985 3039 3043 3095 3099
+ 2967 2999 3007 3065 3100 3118
+ 3012 3013 3048 3051 3071 15333
+ 3013 3016 3047 3049 3074 15333
+ 3016 3017 3048 3052 3074 3076
+ 3020 3022 3041 3051 3075 15332
+ 3012 3020 3047 3050 3071 3075
+ 3017 3021 3049 3053 3076 3078
+ 3021 3023 3052 3054 3078 3079
+ 3023 3026 3053 3079
+ 3004 3025 3034 3058 3084 3088
+ 3000 3014 3036 3059 3086 3094
+ 2834 2923 2960 3169 3206 3268 3304
+ 3025 3041 3055 3088 3096 15332
+ 3014 3029 3056 3070 3094 3098
+ 2905 2973 2998 3140 3141 3202
+ 3027 3029 3063 3070 3091
+ 2965 3007 3011 3100 3120 3168
+ 3027 3031 3061 3082 3091 3104
+ 3009 3018 3072 3117
+ 2999 3024 3046 3087 3118 3144
+ 2870 2973 3008 3140 3159 3226
+ 2742 2811 3008 3137 3193 3196
+ 2944 2998 3011 3120 3141 3225
+ 3010 3042 3082 3110 3119
+ 3029 3059 3061 3091 3098 3109
+ 3047 3051 3075 3102 3103 15333
+ 3018 3028 3064 3081 3117 3129
+ 3015 3089 3114 3146 15331
+ 3048 3049 3076 3105 3106 15333
+ 3050 3051 3071 3101 3102 15332
+ 3049 3052 3074 3078 3106 3107
+ 2952 3005 3044 3127 3192 3204
+ 3052 3053 3076 3079 3107 3108
+ 3053 3054 3078 3108
+ 3034 3036 3084 3086 3113 3116
+ 3028 3032 3072 3085 3129 3139
+ 3010 3031 3063 3069 3104 3119 3135
+ 2916 3002 3136 3158 3210 15329
+ 3034 3055 3080 3088 3113 3115
+ 3032 3035 3081 3092 3139 3142
+ 3036 3056 3080 3094 3116 3123
+ 3024 3040 3065 3090 3144 3147
+ 3055 3058 3084 3096 3115 3121
+ 3015 3042 3073 3110 3114 3143
+ 3038 3040 3087 3093 3147 3151
+ 3061 3063 3070 3104 3109 3111
+ 3035 3039 3085 3095 3142 3149
+ 3037 3038 3090 3097 3151 3152
+ 3056 3059 3086 3098 3123 3126
+ 3039 3045 3092 3099 3149 3150
+ 3058 3088 3101 3121 3124 15332
+ 3037 3043 3093 3099 3152 3153
+ 3059 3070 3094 3109 3126 3138
+ 3043 3045 3095 3097 3150 3153
+ 3007 3046 3062 3118 3168 3191
+ 3075 3096 3102 3124 3128 15332
+ 3071 3075 3101 3103 3128 3130
+ 3071 3102 3105 3130 3131 15333
+ 3063 3082 3091 3111 3135 3148
+ 3074 3103 3106 3131 15333 15335
+ 3074 3076 3105 3107 3133 15335
+ 3076 3078 3106 3108 3132 3133
+ 3078 3079 3107 3132
+ 3070 3091 3098 3111 3138 3145
+ 3042 3069 3089 3119 3143 3167
+ 3091 3104 3109 3145 3148
+ 3030 3146 3176 15331 15334 15337
+ 3080 3084 3115 3116 3154 15336
+ 3073 3089 3143 3146 3171
+ 3084 3088 3113 3121 3154 3155
+ 3080 3086 3113 3123 3156 15336
+ 3064 3072 3129 3172
+ 3046 3065 3100 3144 3191 3198
+ 3069 3082 3110 3135 3167 3173
+ 3011 3062 3068 3168 3225 3247
+ 3088 3096 3115 3124 3155 3157
+ 2776 2923 3019 3206 3407 3413
+ 3086 3094 3116 3126 3156 3161
+ 3096 3101 3121 3128 3157 3160
+ 2901 2960 3158 3169 3254 3267 15329
+ 3094 3098 3123 3138 3161 3170
+ 3005 3077 3174 3204 3223 15334
+ 3101 3102 3124 3130 3160 3163
+ 3072 3081 3117 3139 3172 3180
+ 3102 3103 3128 3131 3163 3165
+ 3103 3105 3130 3165 3166 15335
+ 3107 3108 3133 3162
+ 3106 3107 3132 3162 3164 15335
+ 2553 2909 2945 3483 3496 3574
+ 3082 3104 3119 3148 3173 3188
+ 3002 3044 3083 3192 3210 3251
+ 2742 2945 3067 3196 3311 3323
+ 3098 3109 3126 3145 3170 3175
+ 3081 3085 3129 3142 3180 3190
+ 2973 3060 3066 3202 3226 3284
+ 2998 3060 3068 3202 3225 3262
+ 3085 3092 3139 3149 3190 3195
+ 3089 3110 3114 3167 3171 3197
+ 3065 3087 3118 3147 3198 3200
+ 3109 3111 3138 3148 3175 3189
+ 3073 3112 3114 3171 3176 3217 15331
+ 3087 3090 3144 3151 3200 3203
+ 3104 3111 3135 3145 3188 3189
+ 3092 3095 3142 3150 3195 3199
+ 3095 3099 3149 3153 3199 3201
+ 3090 3093 3147 3152 3203 3208
+ 3093 3097 3151 3153 3208 3209
+ 3097 3099 3150 3152 3201 3209
+ 3113 3115 3155 3178 3179 15336
+ 3115 3121 3154 3157 3179 3182
+ 3116 3123 3161 3177 3181 15336
+ 3121 3124 3155 3160 3182 15338
+ 3083 3125 3210 3267 3303 15329
+ 3008 3066 3193 3226 3263
+ 3124 3128 3157 3163 3186 15338
+ 3123 3126 3156 3170 3181 3194
+ 3132 3133 3164 3183
+ 3128 3130 3160 3165 3186 3187
+ 3133 3162 3166 3183 3184 15335
+ 3130 3131 3163 3166 3185 3187
+ 3131 3164 3165 3184 3185 15335
+ 3110 3119 3143 3173 3197 3224
+ 3062 3100 3120 3191 3247 3282
+ 2960 3057 3125 3254 3268 3320
+ 3126 3138 3161 3175 3194 3205
+ 3114 3143 3146 3197 3217 3234
+ 3117 3129 3180 3227
+ 3119 3135 3167 3188 3224 3228
+ 3127 3207 3223 3233 15334 15337
+ 3138 3145 3170 3189 3205 3229
+ 3112 3146 3207 3217 3245 15337
+ 3156 3178 3181 3212 3213 15336
+ 3154 3177 3179 3213 3215 15336
+ 3154 3155 3178 3182 3215 3219
+ 3129 3139 3172 3190 3227 3235
+ 3156 3161 3177 3194 3211 3212
+ 3155 3157 3179 3219 3221 15338
+ 3162 3164 3184 3214
+ 3164 3166 3183 3185 3214 3216
+ 3165 3166 3184 3187 3216 3218
+ 3160 3163 3187 3220 3222 15338
+ 3163 3165 3185 3186 3218 3220
+ 3135 3148 3173 3189 3228 3231
+ 3145 3148 3175 3188 3229 3231
+ 3139 3142 3180 3195 3235 3246
+ 3100 3118 3168 3198 3261 3282
+ 3044 3077 3136 3204 3251 3313 15340
+ 3008 3067 3159 3196 3263 3298
+ 3161 3170 3181 3205 3211 3230
+ 3142 3149 3190 3199 3246 3248
+ 3067 3137 3193 3298 3323
+ 3143 3167 3171 3224 3234 3257
+ 3118 3144 3191 3200 3260 3261
+ 3149 3150 3195 3201 3248 3252
+ 3144 3147 3198 3203 3256 3260
+ 3150 3153 3199 3209 3252 3253
+ 3060 3140 3141 3262 3284 3334
+ 3147 3151 3200 3208 3256 3259
+ 3077 3127 3192 3223 3288 15340
+ 3170 3175 3194 3229 3230 3249
+ 2923 3057 3122 3304 3387 3413
+ 3174 3176 3233 3245 3264 15337
+ 3151 3152 3203 3209 3258 3259
+ 3152 3153 3201 3208 3253 3258
+ 3083 3136 3158 3251 3303 15343
+ 3181 3194 3212 3230 3232
+ 3177 3181 3211 3213 3232 3237
+ 3177 3178 3212 3215 3237 3240
+ 3183 3184 3216 3236
+ 3178 3179 3213 3219 3240 3244
+ 3184 3185 3214 3218 3236 3238
+ 3146 3171 3176 3234 3245 3270
+ 3185 3187 3216 3220 3238 3239
+ 3179 3182 3215 3221 3243 3244
+ 3186 3187 3218 3222 3239 3241
+ 3182 3219 3222 3242 3243 15338
+ 3186 3220 3221 3241 3242 15338
+ 3127 3174 3204 3233 3288 15339
+ 3167 3173 3197 3228 3257 3283
+ 3068 3120 3141 3247 3262 3327 3329
+ 3066 3140 3159 3263 3284 3333
+ 3172 3180 3235 3280
+ 3173 3188 3224 3231 3281 3283
+ 3175 3189 3205 3231 3249 3278 3279
+ 3194 3205 3211 3232 3249 3255
+ 3188 3189 3228 3229 3279 3281
+ 3211 3212 3230 3237 3255 3265
+ 3174 3207 3223 3264 15339
+ 3171 3197 3217 3257 3270 3293
+ 3180 3190 3227 3246 3280 3286
+ 3214 3216 3238 3266
+ 3212 3213 3232 3240 3265 3273
+ 3216 3218 3236 3239 3266 3269
+ 3218 3220 3238 3241 3269 3272
+ 3213 3215 3237 3244 3273 3277
+ 3220 3222 3239 3242 3272 3274
+ 3221 3222 3241 3243 3274 3275
+ 3219 3221 3242 3244 3275 3276
+ 3215 3219 3240 3243 3276 3277
+ 3176 3207 3217 3264 3270 3308
+ 3190 3195 3235 3248 3286 3294
+ 3120 3168 3225 3282 3329 3339
+ 3195 3199 3246 3252 3294 3301
+ 3205 3229 3230 3255 3278 3285
+ 2364 2650 3003 3316 3760 3777
+ 3136 3192 3210 3313 3335 15343
+ 3199 3201 3248 3253 3301 3302
+ 3201 3209 3252 3258 3302 3306
+ 3125 3169 3267 3320 3363
+ 3230 3232 3249 3265 3285 3289
+ 3200 3203 3259 3260 3310 3312
+ 3197 3224 3234 3283 3293 15341
+ 3208 3209 3253 3259 3306 3309
+ 3203 3208 3256 3258 3309 3310
+ 3198 3200 3256 3261 3312 3321
+ 3191 3198 3260 3282 3321 3332
+ 3141 3202 3225 3327 3334 3378
+ 3159 3193 3226 3298 3333 3370
+ 3207 3233 3245 3308 3331 15339
+ 3232 3237 3255 3273 3289 3295
+ 3236 3238 3269 3290
+ 3125 3158 3254 3303 3363 3405
+ 3057 3169 3304 3320 15345
+ 3238 3239 3266 3272 3290 3291
+ 3217 3234 3245 3293 3307 3308
+ 2263 2540 3033 3518 3667 3869
+ 3239 3241 3269 3274 3291 3292
+ 3237 3240 3265 3277 3295 3300
+ 3241 3242 3272 3275 3292 3296
+ 3242 3243 3274 3276 3296 3297
+ 3243 3244 3275 3277 3297 3299
+ 3240 3244 3273 3276 3299 3300
+ 3229 3249 3279 3285 3314 3317
+ 3229 3231 3278 3281 3314 3330
+ 3227 3235 3286 15344
+ 3228 3231 3279 3283 3330 3338
+ 3168 3191 3247 3261 3332 3339 3356
+ 3224 3228 3257 3281 3338 3361 15341
+ 3140 3202 3226 3333 3334 3390
+ 3249 3255 3278 3289 3317 3318
+ 3235 3246 3280 3294 3337 15344
+ 446 1168 1987 4501 5174 5181
+ 3204 3223 3341 3354 15339 15340
+ 3255 3265 3285 3295 3318 15342
+ 3266 3269 3291 3315
+ 3269 3272 3290 3292 3315 3319
+ 3272 3274 3291 3296 3319 3322
+ 3234 3257 3270 3307 3342 15341
+ 3246 3248 3286 3301 3337 3343
+ 3265 3273 3289 3300 3328 15342
+ 3274 3275 3292 3297 3322 3324
+ 3275 3276 3296 3299 3324 3325
+ 3193 3196 3263 3323 3370 3432
+ 3276 3277 3297 3300 3325 3326
+ 3273 3277 3295 3299 3326 3328
+ 3248 3252 3294 3302 3343 3347
+ 3252 3253 3301 3306 3347 3355
+ 3158 3210 3267 3405 3458 15343
+ 3057 3206 3268 3387 3424 15345
+ 1984 2261 2755 3960 4172 15355
+ 3253 3258 3302 3309 3355 3359
+ 3270 3293 3308 3342 3358
+ 3245 3264 3270 3307 3331 3358 3386
+ 3258 3259 3306 3310 3359 3360
+ 3256 3259 3309 3312 3360 3362
+ 2945 3137 3323 3483 3501 3606
+ 3256 3260 3310 3321 3362 3366
+ 3192 3251 3335 3365 3383 15340
+ 3278 3279 3317 3330 3353 3357
+ 3290 3291 3319 3340
+ 2650 2852 3250 3404 3777 3788
+ 3278 3285 3314 3318 3348 3353
+ 3285 3289 3317 3348 3349 15342
+ 3291 3292 3315 3322 3340 3344
+ 3169 3254 3268 3363 3438 15345
+ 3260 3261 3312 3332 3366 3374
+ 3292 3296 3319 3324 3344 3345
+ 3137 3196 3298 3311 3432 3501
+ 3296 3297 3322 3325 3345 3346
+ 3297 3299 3324 3326 3346 3350
+ 3299 3300 3325 3328 3350 3351
+ 3225 3262 3329 3372 3378 3423
+ 3295 3300 3326 3351 3352 15342
+ 3225 3247 3327 3339 3372 3385
+ 3279 3281 3314 3338 3357 3364
+ 3264 3308 3341 3386 3397 15339
+ 3261 3282 3321 3356 3374 3389
+ 3226 3263 3284 3370 3390 3461
+ 3202 3262 3284 3378 3390 3440
+ 3251 3313 3383 3398 15343
+ 2724 2909 3496 3518 3767 3782
+ 3286 3294 3343 3376 3388 15344
+ 3281 3283 3330 3361 3364 3382
+ 3247 3282 3329 3356 3385 3401
+ 3315 3319 3344 3367
+ 3288 3331 3354 3397 3410 15339
+ 3293 3307 3358 3369 3392 15341
+ 3294 3301 3337 3347 3388 3395
+ 3319 3322 3340 3345 3367 3368
+ 3322 3324 3344 3346 3368 3371
+ 3324 3325 3345 3350 3371 3373
+ 3301 3302 3343 3355 3395 3400
+ 3317 3318 3349 3353 3380 3381
+ 3318 3348 3352 3379 3380 15342
+ 3325 3326 3346 3351 3373 3375
+ 3326 3328 3350 3352 3375 3377
+ 3328 3349 3351 3377 3379 15342
+ 3314 3317 3348 3357 3381 3384
+ 3288 3341 3365 3410 3417 15340
+ 3302 3306 3347 3359 3400 3408
+ 3282 3332 3339 3389 3401 3418
+ 3314 3330 3353 3364 3384 3391
+ 3307 3308 3342 3386 3392 3460
+ 3306 3309 3355 3360 3408 3414
+ 3309 3310 3359 3362 3414 3421
+ 3283 3338 3369 3382 3403 15341 15346
+ 3310 3312 3360 3366 3421 3426
+ 3254 3267 3320 3405 3438 3484
+ 3330 3338 3357 3382 3391 3394
+ 3313 3354 3383 3417 3420 15340
+ 3312 3321 3362 3374 3425 3426
+ 3340 3344 3368 3396
+ 3344 3345 3367 3371 3396 3399
+ 3342 3361 3392 3403 3428 15341
+ 3263 3298 3333 3432 3461 3529
+ 3345 3346 3368 3373 3399 3402
+ 3327 3329 3385 3423 3436
+ 3346 3350 3371 3375 3402 3406
+ 3321 3332 3366 3389 3425 3427
+ 3350 3351 3373 3377 3406 3409
+ 3337 3388 3437 15344
+ 3351 3352 3375 3379 3409 3412
+ 3262 3327 3334 3423 3440 3477
+ 3349 3352 3377 3380 3412 3415
+ 3348 3349 3379 3381 3415 3416
+ 3348 3353 3380 3384 3416 3419
+ 3338 3361 3364 3394 3411 15346
+ 3313 3335 3365 3398 3420 3463
+ 3353 3357 3381 3391 3419 3422
+ 3329 3339 3372 3401 3436 3448
+ 3308 3331 3358 3397 3460 3469
+ 3206 3304 3413 3424 3548
+ 3337 3343 3376 3395 3437 3446
+ 3332 3356 3374 3418 3427 3453
+ 3284 3333 3334 3440 3461 3505
+ 3357 3364 3384 3394 3422 3429
+ 3342 3358 3369 3428 3460 3462
+ 2489 2990 3033 3596 3716 3817
+ 3364 3382 3391 3411 3429 3430
+ 3343 3347 3388 3400 3446 3459
+ 3367 3368 3399 3433
+ 3331 3341 3386 3410 3469 15347
+ 3335 3383 3458 3463 3514 15343
+ 3368 3371 3396 3402 3433 3434
+ 3347 3355 3395 3408 3459 3464
+ 3339 3356 3385 3418 3448 3456
+ 3371 3373 3399 3406 3434 3439
+ 3361 3369 3428 3431 3444 15346
+ 2852 3019 3316 3407 3788 3802
+ 3267 3303 3363 3458 3484 3525
+ 3373 3375 3402 3409 3439 3441
+ 3019 3122 3404 3413 3623 3802
+ 3355 3359 3400 3414 3464 3470
+ 3375 3377 3406 3412 3441 3442
+ 3341 3354 3397 3417 3486 15347
+ 3382 3394 3430 3435 15346
+ 3377 3379 3409 3415 3442 3445
+ 3122 3206 3387 3407 3548 3623
+ 3359 3360 3408 3421 3470 3472
+ 3379 3380 3412 3416 3445 3447
+ 3380 3381 3415 3419 3447 3450
+ 3354 3365 3410 3420 3479 3486
+ 3356 3389 3401 3453 3456 3485
+ 3381 3384 3416 3422 3450 3451
+ 3365 3383 3417 3463 3479
+ 3360 3362 3414 3426 3472 3480
+ 3384 3391 3419 3429 3451 3452
+ 3327 3372 3378 3436 3477 15349
+ 3304 3387 3548 3556 15345 15348
+ 3366 3374 3426 3427 3466 3481
+ 3362 3366 3421 3425 3480 3481
+ 3374 3389 3425 3453 3466
+ 3369 3392 3403 3444 3462 3473
+ 3391 3394 3422 3430 3452 3457
+ 3394 3411 3429 3435 3454 3457
+ 3403 3443 3444 3449 15346
+ 3298 3323 3370 3501 3529 3538
+ 3396 3399 3434 3465
+ 3399 3402 3433 3439 3465 3467
+ 3411 3430 3443 3454 3455 15346
+ 3372 3385 3423 3448 3517 15349
+ 3376 3388 3446 3494
+ 3320 3363 3484 3541 15345 15348
+ 3402 3406 3434 3441 3467 3471
+ 3334 3378 3390 3477 3505 3532
+ 3406 3409 3439 3442 3471 3474
+ 3409 3412 3441 3445 3474 3478
+ 3431 3435 3449 3455 3468 15346
+ 3403 3428 3431 3449 3473 3475
+ 3412 3415 3442 3447 3478 3482
+ 3388 3395 3437 3459 3494 3498
+ 3415 3416 3445 3450 3482 3487
+ 3385 3401 3436 3456 3513 3517
+ 3431 3443 3444 3468 3475
+ 3416 3419 3447 3451 3487 3488
+ 3419 3422 3450 3452 3488 3490
+ 3422 3429 3451 3457 3489 3490
+ 3389 3418 3427 3466 3485 3500
+ 3430 3435 3455 3457 3476 3491
+ 3435 3443 3454 3468 3476
+ 3401 3418 3448 3485 3513
+ 3429 3430 3452 3454 3489 3491
+ 3303 3398 3405 3514 3525 3591 15343
+ 3395 3400 3446 3464 3498 3508
+ 3358 3386 3392 3462 3469 3515 3524
+ 3333 3370 3390 3505 3529 3611
+ 3392 3428 3460 3473 3504 3515
+ 3383 3398 3420 3479 3514 3540
+ 3400 3408 3459 3470 3508 3516
+ 3433 3434 3467 3493
+ 3425 3427 3453 3481 3500 3523
+ 3434 3439 3465 3471 3493 3495
+ 3443 3449 3455 3475 3476 3492
+ 3386 3397 3460 3524 3537 15347
+ 3408 3414 3464 3472 3516 3520
+ 3439 3441 3467 3474 3495 3497
+ 3414 3421 3470 3480 3520 3522
+ 3428 3444 3462 3475 3504 3512
+ 3441 3442 3471 3478 3497 3499
+ 3444 3449 3468 3473 3492 3512
+ 3454 3455 3468 3491 3492 3503
+ 3378 3423 3440 3532 3555 15349
+ 3442 3445 3474 3482 3499 3502
+ 3417 3420 3463 3486 3540 3551
+ 3421 3426 3472 3481 3522 3527
+ 3425 3426 3466 3480 3523 3527
+ 3445 3447 3478 3487 3502 3507
+ 2945 3134 3311 3574 3606 3714 3771
+ 3363 3405 3438 3525 3541 3584
+ 3418 3453 3456 3500 3513 3559
+ 3410 3417 3479 3543 3551 15347
+ 3447 3450 3482 3488 3507 3509
+ 3450 3451 3487 3490 3509 3511
+ 3452 3457 3490 3491 3506 3510
+ 3451 3452 3488 3489 3510 3511
+ 3454 3457 3476 3489 3503 3506
+ 3468 3475 3476 3503 3512 15351
+ 3465 3467 3495 3519
+ 3437 3446 3498 3539
+ 3467 3471 3493 3497 3519 3521
+ 2909 3134 3336 3574 3773 3782
+ 3471 3474 3495 3499 3521 3526
+ 3446 3459 3494 3508 3539 3545
+ 3474 3478 3497 3502 3526 3528
+ 3453 3466 3485 3523 3559 3566
+ 3311 3323 3432 3538 3606 3630
+ 3478 3482 3499 3507 3528 3531
+ 3476 3491 3492 3506 3530 15351
+ 3462 3473 3512 3515 3544 3550
+ 3390 3440 3461 3532 3611 3616
+ 3489 3491 3503 3510 3530 3534
+ 3482 3487 3502 3509 3531 3533
+ 3459 3464 3498 3516 3545 3554
+ 3487 3488 3507 3511 3533 3535
+ 3489 3490 3506 3511 3534 3536
+ 3488 3490 3509 3510 3535 3536
+ 3473 3475 3492 3504 3544 3547 15351
+ 3448 3456 3485 3517 3559 3573
+ 3398 3458 3463 3540 3591 3604
+ 3460 3462 3504 3524 3550 3564
+ 3464 3470 3508 3520 3554 3560
+ 3436 3448 3513 3569 3573 15349
+ 2540 2724 3271 3336 3767 3869 3898
+ 3493 3495 3521 3542
+ 3470 3472 3516 3522 3560 3565
+ 3495 3497 3519 3526 3542 3546
+ 3472 3480 3520 3527 3565 3567
+ 3466 3481 3500 3527 3566 3570
+ 3460 3469 3515 3537 3564 3577
+ 3405 3458 3484 3584 3591 3627
+ 3497 3499 3521 3528 3546 3549
+ 3480 3481 3522 3523 3567 3570
+ 3499 3502 3526 3531 3549 3553
+ 3370 3432 3461 3538 3611 3632
+ 3503 3506 3534 3552 3558 15351
+ 3502 3507 3528 3533 3553 3557
+ 3440 3477 3505 3555 3613 3616
+ 3507 3509 3531 3535 3557 3561
+ 3506 3510 3530 3536 3558 3562
+ 3509 3511 3533 3536 3561 3563
+ 3510 3511 3534 3535 3562 3563
+ 3469 3524 3543 3577 3594 15347
+ 3432 3501 3529 3630 3632
+ 3494 3498 3545 3582
+ 3463 3479 3514 3551 3604 3617
+ 3438 3484 3556 3584 3624 15348
+ 3519 3521 3546 3568
+ 3486 3537 3551 3594 3622 15347
+ 3504 3512 3547 3550 3576 3580
+ 3498 3508 3539 3554 3582 3588
+ 3521 3526 3542 3549 3568 3571
+ 3512 3544 3552 3576 3578 15351
+ 3387 3413 3424 3556 3623 3648 3749
+ 3526 3528 3546 3553 3571 3572
+ 3504 3515 3544 3564 3580 3589
+ 3479 3486 3540 3543 3617 3622
+ 3530 3547 3558 3578 3583 15351
+ 3528 3531 3549 3557 3572 3575
+ 3508 3516 3545 3560 3588 3593
+ 3477 3532 3569 3598 3613 15349
+ 3424 3541 3548 3624 3648 15348
+ 3531 3533 3553 3561 3575 3579
+ 3530 3534 3552 3562 3583 3586
+ 3485 3500 3513 3566 3573 3614 3633
+ 3516 3520 3554 3565 3593 3597
+ 3533 3535 3557 3563 3579 3585
+ 3534 3536 3558 3563 3586 3587
+ 3535 3536 3561 3562 3585 3587
+ 3515 3524 3550 3577 3589 3600
+ 3520 3522 3560 3567 3597 3602
+ 3500 3523 3559 3570 3612 3614
+ 3522 3527 3565 3570 3602 3609
+ 3542 3546 3571 3590
+ 3517 3555 3573 3598 3619 15349
+ 3523 3527 3566 3567 3609 3612
+ 3546 3549 3568 3572 3590 3592
+ 3549 3553 3571 3575 3592 3595
+ 3513 3517 3559 3569 3619 3633
+ 3134 3483 3496 3771 3773 3829
+ 3553 3557 3572 3579 3595 3599
+ 3544 3547 3578 3580 3608 15352
+ 3524 3537 3564 3594 3600 3641
+ 3547 3552 3576 3583 3607 15352
+ 3557 3561 3575 3585 3599 3601
+ 3544 3550 3576 3589 3603 3608
+ 2219 2312 3809 4134 4251 15350
+ 3539 3545 3588 3620
+ 3552 3558 3578 3586 3607 3610
+ 3484 3525 3541 3624 3627 3663
+ 3561 3563 3579 3587 3601 3605
+ 3558 3562 3583 3587 3610 15353
+ 3562 3563 3585 3586 3605 15353
+ 3545 3554 3582 3593 3620 3629
+ 3550 3564 3580 3600 3603 3626
+ 3568 3571 3592 3615
+ 3458 3514 3525 3604 3627 3671 3680
+ 3571 3572 3590 3595 3615 3618
+ 3554 3560 3588 3597 3629 3639
+ 3537 3543 3577 3622 3641 3657
+ 3572 3575 3592 3599 3618 3621
+ 3033 3393 3667 3817 3889
+ 3560 3565 3593 3602 3639 3642
+ 3555 3569 3613 3619 3659
+ 3575 3579 3595 3601 3621 3625
+ 3564 3577 3589 3626 3641 3646
+ 3579 3585 3599 3605 3625 3628
+ 3565 3567 3597 3609 3642 3645
+ 3580 3589 3608 3626 3638
+ 3514 3540 3591 3617 3671 15354
+ 3585 3587 3601 3628 3631 15353
+ 3311 3483 3501 3630 3714 3769
+ 3578 3583 3610 3636 3637 15352
+ 3576 3580 3603 3635 3638 15352
+ 3567 3570 3602 3612 3645 3649
+ 3583 3586 3607 3634 3636 15353
+ 3461 3505 3529 3616 3632 3705 3722
+ 3566 3570 3609 3614 3649 3651
+ 3532 3555 3598 3616 3659 3673
+ 3559 3566 3612 3633 3651 3666
+ 3590 3592 3618 3640
+ 3505 3532 3611 3613 3673 3705
+ 3540 3551 3604 3622 3686 15354
+ 3592 3595 3615 3621 3640 3643
+ 3569 3573 3598 3633 3659 3684
+ 3582 3588 3629 3661
+ 3595 3599 3618 3625 3643 3644
+ 3543 3551 3594 3617 3657 3686 3699
+ 3407 3413 3548 3749 3802 3867
+ 3541 3556 3584 3648 3663 3693
+ 3599 3601 3621 3628 3644 3647
+ 3589 3600 3603 3638 3646 3655
+ 3525 3584 3591 3663 3680 3708
+ 3601 3605 3625 3631 3647 3650
+ 3588 3593 3620 3639 3661 3664
+ 3501 3538 3606 3632 3720 3769
+ 3605 3628 3634 3650 3652 15353
+ 3529 3538 3611 3630 3720 3722
+ 3559 3573 3614 3619 3666 3684 3700
+ 3610 3631 3636 3652 3653 15353
+ 3608 3637 3638 3654 3658 15352
+ 3607 3610 3634 3637 3653 3656
+ 3607 3635 3636 3656 3658 15352
+ 3603 3608 3626 3635 3654 3655
+ 3593 3597 3629 3642 3664 3669
+ 3615 3618 3643 3660
+ 3577 3594 3600 3646 3657 3676 3691
+ 3597 3602 3639 3645 3669 3674
+ 3618 3621 3640 3644 3660 3662
+ 3621 3625 3643 3647 3662 3665
+ 3602 3609 3642 3649 3674 3685
+ 3600 3626 3641 3655 3676 3679
+ 3625 3628 3644 3650 3665 3668
+ 3548 3556 3624 3693 3749 3779
+ 3609 3612 3645 3651 3685 3689
+ 3628 3631 3647 3652 3668 3670
+ 3612 3614 3649 3666 3689 3696
+ 3631 3634 3650 3653 3670 3672
+ 3634 3636 3652 3656 3672 3677
+ 3635 3638 3655 3658 3681 3683
+ 3626 3638 3646 3654 3679 3681
+ 3636 3637 3653 3658 3677 3682
+ 3594 3622 3641 3691 3699 3719
+ 3635 3637 3654 3656 3682 3683
+ 3598 3613 3619 3673 3684 3725
+ 3640 3643 3662 3678
+ 3620 3629 3664 3694
+ 3643 3644 3660 3665 3678 3687
+ 3584 3624 3627 3693 3708 3718
+ 3629 3639 3661 3669 3694 3702
+ 3644 3647 3662 3668 3687 3688
+ 3614 3633 3651 3696 3700 3709
+ 3033 3271 3596 3869 3889 3979
+ 3647 3650 3665 3670 3688 3692
+ 3639 3642 3664 3674 3702 3711
+ 3650 3652 3668 3672 3692 3695
+ 3591 3604 3680 3729 3734 15354
+ 3652 3653 3670 3677 3695 3698
+ 3613 3616 3659 3705 3725 3795
+ 3642 3645 3669 3685 3711 3715
+ 2019 2447 2790 4157 4463 15364
+ 3641 3646 3679 3691 3712 3724
+ 3653 3656 3672 3682 3698 3703
+ 3660 3662 3687 3701
+ 3646 3655 3676 3681 3710 3712
+ 3591 3627 3671 3708 3734 3750
+ 3654 3655 3679 3683 3706 3710
+ 3656 3658 3677 3683 3703 3704
+ 3654 3658 3681 3682 3704 3706
+ 3619 3633 3659 3700 3725 3754
+ 3645 3649 3674 3689 3715 3723
+ 3617 3622 3699 3732 3738 15354
+ 3662 3665 3678 3688 3701 3707
+ 3665 3668 3687 3692 3707 3713
+ 3649 3651 3685 3696 3723 3730
+ 2073 2193 3813 3839 4440 4509
+ 3641 3657 3676 3719 3724 3741
+ 3668 3670 3688 3695 3713 3717
+ 3624 3648 3663 3718 3779 3783
+ 3661 3664 3702 3735
+ 3670 3672 3692 3698 3717 3721
+ 3651 3666 3689 3709 3730 3739
+ 293 1146 2565 4176 4830 5050
+ 3672 3677 3695 3703 3721 3726
+ 3622 3657 3686 3719 3738 3746
+ 3633 3666 3684 3709 3744 3754
+ 3678 3687 3707 3727
+ 3664 3669 3694 3711 3735 3743
+ 3677 3682 3698 3704 3726 3728
+ 3682 3683 3703 3706 3728 3733
+ 3611 3616 3673 3722 3795 3798
+ 3681 3683 3704 3710 3733 3736
+ 3687 3688 3701 3713 3727 3731
+ 3627 3663 3680 3718 3750 3766
+ 3666 3696 3700 3739 3744
+ 3679 3681 3706 3712 3736 3740
+ 3669 3674 3702 3715 3743 3751
+ 3676 3679 3710 3724 3740 3747
+ 3688 3692 3707 3717 3731 3737
+ 3483 3606 3769 3771 3856 3885
+ 3674 3685 3711 3723 3751 3756
+ 2990 3393 3748 3817 4044 4097
+ 3692 3695 3713 3721 3737 3742
+ 3663 3693 3708 3766 3783
+ 3657 3691 3699 3741 3746 3765
+ 3630 3632 3722 3769 3811 3862
+ 3695 3698 3717 3726 3742 3745
+ 3611 3632 3705 3720 3798 3811
+ 3685 3689 3715 3730 3756 3762
+ 3676 3691 3712 3741 3747 3764
+ 3659 3673 3684 3754 3795 3807
+ 3698 3703 3721 3728 3745 3753
+ 3701 3707 3731 3752
+ 3703 3704 3726 3733 3753 3758
+ 3671 3732 3734 3781 15354 15356
+ 3689 3696 3723 3739 3762 3768
+ 3707 3713 3727 3737 3752 3757
+ 3686 3729 3738 15354 15356 15357
+ 3704 3706 3728 3736 3758 3761
+ 3671 3680 3729 3750 3781 3791
+ 3694 3702 3743 3778
+ 3706 3710 3733 3740 3761 3770
+ 3713 3717 3731 3742 3757 3763
+ 3686 3699 3732 3746 3789 15357
+ 3696 3709 3730 3744 3768 3774
+ 3710 3712 3736 3747 3770 3776
+ 3691 3719 3724 3764 3765 3786
+ 3717 3721 3737 3745 3763 3772
+ 3702 3711 3735 3751 3778 3790
+ 3700 3709 3739 3754 3774 3799
+ 3721 3726 3742 3753 3772 3775
+ 3699 3719 3738 3765 3784 3789
+ 3712 3724 3740 3764 3776 3792
+ 2889 2990 3716 3931 4097 4203
+ 3548 3623 3648 3779 3867 3924
+ 3680 3708 3734 3766 3791 3804
+ 3711 3715 3743 3756 3790 3797
+ 3727 3731 3757 3780
+ 3726 3728 3745 3758 3775 3785
+ 3684 3700 3725 3744 3799 3807 3841
+ 2685 3003 3759 3760 4129 4193
+ 3715 3723 3751 3762 3797 3801
+ 3731 3737 3752 3763 3780 3787
+ 3728 3733 3753 3761 3785 3793
+ 2685 2755 3755 3960 4193 4294
+ 3003 3250 3755 3777 4065 4129
+ 3733 3736 3758 3770 3793 3796
+ 3723 3730 3756 3768 3801 3810
+ 3737 3742 3757 3772 3787 3794
+ 3724 3741 3747 3786 3792 3806
+ 3719 3741 3746 3784 3786 3808
+ 3708 3718 3750 3783 3804 3837
+ 3336 3518 3782 3898 3916 4002
+ 3730 3739 3762 3774 3800 3810
+ 3606 3630 3714 3720 3862 3885 3921
+ 3736 3740 3761 3776 3796 3805
+ 3483 3574 3714 3829 3856 3928
+ 3742 3745 3763 3775 3794 3803
+ 3496 3574 3782 3829 3958 3964
+ 3739 3744 3768 3799 3800 3825
+ 3745 3753 3772 3785 3803 3812
+ 3740 3747 3770 3792 3805 3815
+ 3250 3316 3760 3788 4065 4072
+ 3735 3743 3790 3824
+ 3648 3693 3749 3783 3870 3924
+ 3752 3757 3787 3814
+ 3729 3734 3791 3827 3831 15356
+ 3336 3496 3767 3773 3916 3958
+ 3693 3718 3766 3779 3837 3870
+ 3746 3765 3789 3808 3819
+ 3753 3758 3775 3793 3812 3816
+ 3741 3764 3765 3806 3808 3822
+ 3757 3763 3780 3794 3814 3818
+ 3316 3404 3777 3802 4036 4072
+ 3738 3746 3784 3819 3848 15357
+ 3743 3751 3778 3797 3824 3830
+ 3734 3750 3781 3804 3827 3838
+ 3747 3764 3776 3806 3815 3820
+ 3758 3761 3785 3796 3816 3821
+ 3763 3772 3787 3803 3818 3823
+ 3673 3705 3725 3798 3807 3880 3891
+ 3761 3770 3793 3805 3821 3826
+ 3751 3756 3790 3801 3830 3842
+ 3705 3722 3795 3811 3865 3891
+ 3744 3754 3774 3825 3841 3857
+ 3768 3774 3810 3825 3844
+ 3756 3762 3797 3810 3842 3843
+ 3404 3407 3623 3788 3867 4014 4036
+ 3772 3775 3794 3812 3823 3828
+ 3750 3766 3791 3837 3838
+ 3770 3776 3796 3815 3826 3832
+ 3764 3786 3792 3820 3822 3834
+ 3725 3754 3795 3841 3880 3892
+ 3765 3784 3786 3819 3822 3840
+ 2219 2790 3581 4157 4251 4365
+ 3762 3768 3800 3801 3843 3844
+ 3720 3722 3798 3862 3865
+ 3775 3785 3803 3816 3828 3836
+ 2073 2171 3690 4509 4525 4706
+ 3780 3787 3818 3833
+ 3776 3792 3805 3820 3832 3835
+ 3785 3793 3812 3821 3836 3847
+ 3393 3596 3716 3889 3996 4044
+ 3787 3794 3814 3823 3833 3845
+ 3784 3789 3808 3840 3848 3863
+ 3792 3806 3815 3834 3835 3846
+ 3793 3796 3816 3826 3847 3849
+ 3786 3806 3808 3834 3840 3851
+ 3794 3803 3818 3828 3845 3850
+ 3778 3790 3830 3861
+ 3774 3799 3800 3844 3857 3871
+ 3796 3805 3821 3832 3849 3852
+ 3781 3791 3831 3838 3864 3886
+ 3803 3812 3823 3836 3850 3853
+ 3574 3771 3773 3928 3964 3987
+ 3790 3797 3824 3842 3861 3868
+ 3781 3827 3864 3874 15356 15358
+ 3805 3815 3826 3835 3852 3854
+ 3814 3818 3845 3858
+ 3806 3820 3822 3846 3851 3859
+ 3815 3820 3832 3846 3854 3855
+ 3812 3816 3828 3847 3853 3860
+ 3766 3783 3804 3838 3870 3912
+ 3791 3804 3827 3837 3886 3912
+ 2193 2805 3690 4130 4440 4467
+ 3808 3819 3822 3851 3863 3872
+ 3754 3799 3807 3857 3892 3899
+ 3797 3801 3830 3843 3868 3877
+ 3801 3810 3842 3844 3876 3877
+ 3800 3810 3825 3843 3871 3876
+ 3818 3823 3833 3850 3858 15359
+ 3820 3834 3835 3855 3859
+ 3816 3821 3836 3849 3860 3866
+ 3789 3819 3863 3910 15357 15358 15360
+ 3821 3826 3847 3852 3866 3875
+ 3823 3828 3845 3853 3873 15359
+ 3822 3834 3840 3859 3872 3883
+ 3826 3832 3849 3854 3875 3879
+ 3828 3836 3850 3860 3873 3881
+ 3832 3835 3852 3855 3879 3882
+ 3835 3846 3854 3859 3882 3884
+ 3714 3771 3885 3928 3973
+ 3799 3825 3841 3871 3899 3907
+ 3833 3845 3887 15359
+ 3834 3846 3851 3855 3883 3884
+ 3836 3847 3853 3866 3881 3888
+ 3824 3830 3868 3896
+ 3720 3769 3811 3865 3921 3953
+ 3819 3840 3848 3872 3908 3910
+ 3827 3831 3874 3886 3897
+ 3798 3811 3862 3891 3948 3953
+ 3847 3849 3860 3875 3888 3893
+ 3623 3749 3802 3924 4014 4026
+ 3830 3842 3861 3877 3896 3906
+ 3271 3518 3667 3898 3979 4093 4133
+ 3779 3783 3837 3912 3924 3962
+ 3825 3844 3857 3876 3907 3911
+ 3840 3851 3863 3883 3904 3908
+ 3850 3853 3881 3890 3894 15359
+ 3831 3864 3897 3915 15358 15360
+ 3849 3852 3866 3879 3893 3895
+ 3843 3844 3871 3877 3911 3913
+ 3842 3843 3868 3876 3906 3913
+ 295 460 2565 4888 5317 5611
+ 3852 3854 3875 3882 3895 3900
+ 3795 3807 3891 3892 3940 3944
+ 3853 3860 3873 3888 3894 3902
+ 3854 3855 3879 3884 3900 3901
+ 3851 3859 3872 3884 3903 3904
+ 3855 3859 3882 3883 3901 3903
+ 3714 3769 3856 3921 3973 4003
+ 3827 3838 3864 3897 3912 3930
+ 3858 3890 3905 15359
+ 3860 3866 3881 3893 3902 3909
+ 3596 3667 3817 3979 3996 4108
+ 3873 3887 3894 3905 3914 15359
+ 3795 3798 3865 3880 3944 3948
+ 3807 3841 3880 3899 3940 3941
+ 3866 3875 3888 3895 3909 3917
+ 3873 3881 3890 3902 3914 3918
+ 3875 3879 3893 3900 3917 3919
+ 3861 3868 3906 3934
+ 3864 3874 3886 3915 3930 3935
+ 3518 3767 3869 4002 4093 4118
+ 3841 3857 3892 3907 3941 3942
+ 3879 3882 3895 3901 3919 3920
+ 3882 3884 3900 3903 3920 3923
+ 3881 3888 3894 3909 3918 3922
+ 3883 3884 3901 3904 3923 3926
+ 3872 3883 3903 3908 3926 3932
+ 3887 3890 3914 3925
+ 3868 3877 3896 3913 3934 3938
+ 3857 3871 3899 3911 3942 3946
+ 3863 3872 3904 3910 3932 15361
+ 3888 3893 3902 3917 3922 3929
+ 3848 3863 3908 3927 3957 15360 15361
+ 3871 3876 3907 3913 3945 3946
+ 3837 3838 3870 3886 3930 3962 4004
+ 3876 3877 3906 3911 3938 3945
+ 3890 3894 3905 3918 3925 3933
+ 3874 3897 3927 3935 3951 15360
+ 3767 3782 3958 4002 4064
+ 3893 3895 3909 3919 3929 3936
+ 3894 3902 3914 3922 3933 3937
+ 3895 3900 3917 3920 3936 3939
+ 3900 3901 3919 3923 3939 3943
+ 3769 3862 3885 3953 4003 4058
+ 3902 3909 3918 3929 3937 3947
+ 3901 3903 3920 3926 3943 3950
+ 3749 3779 3867 3870 3962 4026 4052
+ 3905 3914 3933 3949
+ 3903 3904 3923 3932 3950 3954
+ 3910 3915 3951 3957 3967 15360
+ 3771 3829 3856 3973 3987 4048
+ 3909 3917 3922 3936 3947 3952
+ 3886 3897 3912 3935 4004 15362
+ 2805 2889 3748 4130 4203 4357
+ 3904 3908 3926 3954 3959 15361
+ 3914 3918 3925 3937 3949 3955
+ 3896 3906 3938 3969
+ 3897 3915 3930 3951 15362
+ 3917 3919 3929 3939 3952 3956
+ 3918 3922 3933 3947 3955 3961
+ 3906 3913 3934 3945 3969 3975
+ 3919 3920 3936 3943 3956 3963
+ 3880 3892 3941 3944 3985 3988
+ 3892 3899 3940 3942 3984 3985
+ 3899 3907 3941 3946 3982 3984
+ 3920 3923 3939 3950 3963 3965
+ 3880 3891 3940 3948 3988 3997
+ 3911 3913 3938 3946 3975 3978
+ 3907 3911 3942 3945 3978 3982
+ 3922 3929 3937 3952 3961 3966
+ 3865 3891 3944 3953 3997 4006
+ 3925 3933 3955 3968
+ 3923 3926 3943 3954 3965 3971
+ 3915 3927 3935 3967 3981 15362
+ 3929 3936 3947 3956 3966 3972
+ 3862 3865 3921 3948 4006 4050 4058
+ 3926 3932 3950 3959 3971 3976
+ 3933 3937 3949 3961 3968 3974
+ 3936 3939 3952 3963 3972 3977
+ 3910 3927 3967 3970 3990 3993 15361
+ 3773 3782 3916 3964 4064 4099
+ 3932 3954 3970 3976 3986 15361
+ 2755 3305 3759 4172 4294 4436
+ 3937 3947 3955 3966 3974 3980
+ 3870 3912 3924 4004 4052 4066
+ 3939 3943 3956 3965 3977 3983
+ 3773 3829 3958 3987 4099 4100
+ 3943 3950 3963 3971 3983 3992
+ 3947 3952 3961 3972 3980 3989
+ 3927 3951 3957 3981 3993 3998
+ 3949 3955 3974 3991
+ 3934 3938 3975 4009
+ 3957 3959 3986 3990 3995 15361
+ 3950 3954 3965 3976 3992 4000
+ 3952 3956 3966 3977 3989 3999
+ 3856 3885 3928 4003 4048 4083
+ 3955 3961 3968 3980 3991 4001
+ 3938 3945 3969 3978 4009 4020
+ 3954 3959 3971 3986 4000 4005
+ 3956 3963 3972 3983 3999 15363
+ 3945 3946 3975 3982 4020 4024
+ 3667 3869 3889 4108 4133 4220
+ 3961 3966 3974 3989 4001 4008
+ 3951 3967 3998 4007 4018 15362
+ 3942 3946 3978 3984 4024 4028
+ 3963 3965 3977 3992 4012 15363
+ 3941 3942 3982 3985 4028 4034
+ 3940 3941 3984 3988 4031 4034
+ 3959 3970 3976 3995 4005 4011
+ 3829 3928 3964 4048 4100 4109
+ 3940 3944 3985 3997 4031 4035
+ 3966 3972 3980 3999 4008 4015
+ 3957 3970 3993 3995 4010 4013
+ 3968 3974 4001 4016
+ 3965 3971 3983 4000 4012 4019
+ 3957 3967 3990 3998 4013 4017
+ 3001 4134 4323 4485 15350 15355
+ 3970 3986 3990 4010 4011
+ 3817 3889 4044 4108 4190
+ 3944 3948 3988 4006 4035 4037
+ 3967 3981 3993 4017 4018
+ 3972 3977 3989 4015 4021 15363
+ 3971 3976 3992 4005 4019 4022
+ 3974 3980 3991 4008 4016 4023
+ 3767 3898 3916 4064 4118 4178
+ 3885 3921 3973 4058 4083 4115
+ 3912 3930 3962 4007 4057 4066 4084 15362
+ 3976 3986 4000 4011 4022 4025
+ 3948 3953 3997 4037 4050 4069
+ 3981 4004 4018 4042 4057 15362
+ 3980 3989 4001 4015 4023 4032
+ 3969 3975 4020 4054
+ 3990 3995 4011 4013 4027 4033
+ 3986 3995 4005 4010 4025 4033
+ 3983 3992 4019 4030 4038 15363
+ 3990 3993 4010 4017 4027 4029
+ 3802 3867 4026 4036 4150 4179
+ 3989 3999 4008 4021 4032 4040
+ 3991 4001 4023 4039
+ 3993 3998 4013 4018 4029 4047
+ 3981 3998 4007 4017 4042 4047
+ 3992 4000 4012 4022 4038 4041
+ 3975 3978 4009 4024 4054 4060
+ 3999 4015 4030 4040 4045 15363
+ 4000 4005 4019 4025 4041 4043
+ 4001 4008 4016 4032 4039 4046
+ 3978 3982 4020 4028 4060 4067
+ 4005 4011 4022 4033 4043 4049
+ 3867 3924 4014 4052 4145 4150
+ 4010 4013 4029 4033 4051 4053
+ 3982 3984 4024 4034 4067 4073
+ 4013 4017 4027 4047 4051
+ 4012 4021 4038 4045 4055 15363
+ 3985 3988 4034 4035 4076 4078
+ 4008 4015 4023 4040 4046 4056
+ 4010 4011 4025 4027 4049 4053
+ 3984 3985 4028 4031 4073 4078
+ 3988 3997 4031 4037 4075 4076
+ 3788 3802 4014 4072 4179 4248
+ 3997 4006 4035 4069 4075
+ 4012 4019 4030 4041 4055 4059
+ 4016 4023 4046 4061
+ 4015 4021 4032 4045 4056 4062
+ 4019 4022 4038 4043 4059 4063
+ 4007 4018 4047 4057 4081 4088
+ 4022 4025 4041 4049 4063 4068
+ 3716 3817 3996 4097 4190 4296
+ 4021 4030 4040 4055 4062 4070
+ 4023 4032 4039 4056 4061 4071
+ 4017 4018 4029 4042 4051 4080 4081
+ 3928 3973 3987 4083 4109 4138
+ 4025 4033 4043 4053 4068 4074
+ 3953 4006 4058 4069 4113 4125
+ 4027 4029 4047 4053 4077 4080
+ 3924 3962 4026 4066 4141 4145
+ 4027 4033 4049 4051 4074 4077
+ 4009 4020 4060 4094
+ 4030 4038 4045 4059 4070 4079
+ 4032 4040 4046 4062 4071 4082
+ 4004 4007 4042 4084 4088 4105
+ 3921 3953 4003 4050 4115 4125 4162
+ 4038 4041 4055 4063 4079 4085
+ 4020 4024 4054 4067 4094 4101
+ 4039 4046 4071 4086
+ 4040 4045 4056 4070 4082 4087
+ 4041 4043 4059 4068 4085 4089
+ 3916 3958 4002 4099 4178 4202
+ 3760 3777 4072 4129 4253 4353
+ 3962 4004 4052 4084 4141 4142
+ 4024 4028 4060 4073 4101 4107
+ 4043 4049 4063 4074 4089 4090
+ 4006 4037 4050 4075 4113 4120
+ 4045 4055 4062 4079 4087 4092
+ 4046 4056 4061 4082 4086 4091
+ 3777 3788 4036 4065 4248 4253
+ 4028 4034 4067 4078 4107 4112
+ 4049 4053 4068 4077 4090 4095
+ 4035 4037 4069 4076 4120 15366
+ 4031 4035 4075 4078 4119 15366
+ 4051 4053 4074 4080 4095 15365
+ 4031 4034 4073 4076 4112 4119
+ 4055 4059 4070 4085 4092 4096
+ 4047 4051 4077 4081 4102 15365
+ 4042 4047 4080 4088 4102 4110
+ 4056 4062 4071 4087 4091 4098
+ 3973 4003 4048 4115 4138 4166
+ 4004 4057 4066 4105 4137 4142
+ 4059 4063 4079 4089 4096 4103
+ 4061 4071 4091 4104
+ 4062 4070 4082 4092 4098 4106
+ 4042 4057 4081 4105 4110 4121
+ 4063 4068 4085 4090 4103 4111
+ 4068 4074 4089 4095 4111 4117
+ 4071 4082 4086 4098 4104 4114
+ 4070 4079 4087 4096 4106 4116
+ 3869 3898 4118 4133 4264 4276
+ 4054 4060 4101 4135
+ 4074 4077 4090 4117 4122 15365
+ 4079 4085 4092 4103 4116 4123
+ 3716 3748 4044 4203 4296 4387
+ 4082 4087 4091 4106 4114 4124
+ 3958 3964 4064 4100 4202 4227
+ 3964 3987 4099 4109 4206 4227
+ 4060 4067 4094 4107 4135 4146
+ 4080 4081 4110 4126 4132 15365
+ 4085 4089 4096 4111 4123 4128
+ 4086 4091 4114 4127
+ 4057 4084 4088 4121 4137 4151
+ 4087 4092 4098 4116 4124 4131
+ 4067 4073 4101 4112 4146 4153
+ 3889 3979 3996 4190 4220 4278
+ 3987 4048 4100 4138 4206 4210
+ 4081 4088 4102 4121 4132 4143
+ 4089 4090 4103 4117 4128 4136
+ 4073 4078 4107 4119 4153 4159
+ 4050 4069 4120 4125 4171 4175
+ 4091 4098 4104 4124 4127 4139
+ 4003 4058 4083 4162 4166 4207
+ 4092 4096 4106 4123 4131 4140
+ 4090 4095 4111 4122 4136 4144
+ 3898 4002 4093 4178 4264 4286
+ 4076 4078 4112 4159 4164 15366
+ 4069 4075 4113 4168 4171 15366
+ 4088 4105 4110 4143 4151
+ 4095 4117 4126 4144 4148 15365
+ 4096 4103 4116 4128 4140 4149
+ 4098 4106 4114 4131 4139 4147
+ 4050 4058 4113 4162 4175 4196
+ 4102 4122 4132 4148 4154 15365
+ 4104 4114 4139 4152
+ 4103 4111 4123 4136 4149 4155
+ 3755 3760 4065 4193 4353 4428
+ 2805 3839 3931 4357 4467 4528
+ 4106 4116 4124 4140 4147 4156
+ 4102 4110 4126 4143 4154 4158
+ 3869 3979 4093 4220 4276 4287
+ 3581 3994 4251 4485 4522 15350
+ 4094 4101 4146 4181
+ 4111 4117 4128 4144 4155 4160
+ 4084 4105 4142 4151 4180 4191
+ 4048 4083 4109 4166 4199 4210
+ 4114 4124 4127 4147 4152 4161
+ 4116 4123 4131 4149 4156 4165
+ 4052 4066 4142 4145 4218 4255
+ 4066 4084 4137 4141 4191 4218
+ 4110 4121 4132 4151 4158 4163
+ 4117 4122 4136 4148 4160 4167
+ 4026 4052 4141 4150 4255 4263
+ 4101 4107 4135 4153 4181 4189
+ 4124 4131 4139 4156 4161 4170
+ 4122 4126 4144 4154 4167 4174
+ 4123 4128 4140 4155 4165 4173
+ 4014 4026 4145 4179 4263 4269
+ 4105 4121 4137 4143 4163 4180 4185
+ 4127 4139 4161 4177
+ 4107 4112 4146 4159 4189 4198
+ 4126 4132 4148 4158 4174 4184
+ 4128 4136 4149 4160 4173 15367
+ 4131 4140 4147 4165 4170 4183
+ 2790 3675 3809 4365 4463 4600
+ 4132 4143 4154 4163 4182 4184
+ 4112 4119 4153 4164 4198 4205
+ 4136 4144 4155 4167 4187 15367
+ 4139 4147 4152 4170 4177 4186
+ 4058 4115 4125 4196 4207 4238
+ 4143 4151 4158 4182 4185
+ 4119 4159 4168 4205 4213 15366
+ 4140 4149 4156 4173 4183 4188
+ 4083 4115 4138 4199 4207 4237
+ 4144 4148 4160 4174 4187 4192
+ 4120 4164 4171 4213 4219 15366
+ 2078 2587 4383 4762 4894 15364
+ 4147 4156 4161 4183 4186 4194
+ 4113 4120 4168 4175 4219 4226
+ 3305 3960 4323 4436 4535 15355
+ 4149 4155 4165 4188 4195 15367
+ 4148 4154 4167 4184 4192 4197
+ 4113 4125 4171 4196 4226 4233
+ 1146 2062 3697 5050 5180 15374
+ 4152 4161 4186 4200
+ 4002 4064 4118 4202 4286 4343
+ 4014 4036 4150 4248 4269 4346
+ 4137 4151 4185 4191 4216 4217
+ 4135 4146 4189 4225
+ 4158 4163 4184 4185 4209 4212
+ 4156 4165 4170 4188 4194 4204
+ 4154 4158 4174 4182 4197 4209
+ 4151 4163 4180 4182 4212 4216
+ 4161 4170 4177 4194 4200 4211
+ 4160 4167 4192 4208 4214 15367
+ 4165 4173 4183 4195 4204 4215
+ 4146 4153 4181 4198 4225 4234
+ 3996 4044 4108 4278 4296 4433
+ 4137 4142 4180 4217 4218 4240
+ 4167 4174 4187 4197 4214 4221
+ 3755 3759 4129 4294 4428 4526
+ 4170 4183 4186 4204 4211 4222
+ 4173 4188 4208 4215 4223 15367
+ 4125 4162 4175 4233 4238 4243
+ 4174 4184 4192 4209 4221 4228
+ 4153 4159 4189 4205 4234 4241
+ 4138 4166 4210 4237 4262
+ 4177 4186 4211 4224
+ 203 275 1438 5293 7003 7847
+ 4064 4099 4178 4227 4316 4343
+ 3748 3931 4097 4357 4387 4503
+ 4183 4188 4194 4215 4222 4229
+ 4159 4164 4198 4213 4241 4249
+ 4100 4109 4210 4227 4277 4330
+ 4115 4162 4166 4237 4238 4265
+ 4187 4195 4214 4223 4230 15367
+ 4182 4184 4197 4212 4228 4232
+ 4109 4138 4199 4206 4262 4277
+ 4186 4194 4200 4222 4224 4231
+ 4182 4185 4209 4216 4232 4247
+ 4164 4168 4205 4219 4249 4257
+ 4187 4192 4208 4221 4230 4235
+ 4188 4195 4204 4223 4229 4236
+ 4180 4185 4212 4217 4246 4247
+ 4180 4191 4216 4240 4246
+ 4141 4142 4191 4240 4255 4267 4293
+ 4168 4171 4213 4226 4257 4260
+ 3979 4108 4133 4278 4287 4373
+ 4192 4197 4214 4228 4235 4242
+ 4194 4204 4211 4229 4231 4239
+ 4195 4208 4215 4230 4236 4244
+ 4200 4211 4231 4245
+ 4181 4189 4234 4268
+ 4171 4175 4219 4233 4260 4270
+ 4099 4100 4202 4206 4316 4330
+ 4197 4209 4221 4232 4242 4252
+ 4204 4215 4222 4236 4239 4250
+ 4208 4214 4223 4235 4244 4254
+ 4211 4222 4224 4239 4245 4256
+ 4209 4212 4228 4247 4252 4261
+ 4175 4196 4226 4243 4270 4283
+ 4189 4198 4225 4241 4268 4280
+ 4214 4221 4230 4242 4254 4259
+ 4215 4223 4229 4244 4250 4258
+ 4166 4199 4207 4262 4265 4324
+ 4162 4196 4207 4243 4265 4274 4301
+ 4222 4229 4231 4250 4256 4266
+ 4191 4217 4218 4246 4267 4279
+ 4198 4205 4234 4249 4280 4292
+ 4221 4228 4235 4252 4259 4273
+ 4196 4233 4238 4274 4283
+ 4223 4230 4236 4254 4258 4272
+ 4224 4231 4256 4271
+ 4216 4217 4240 4247 4279 4282
+ 4212 4216 4232 4246 4261 4282 4289
+ 4036 4072 4179 4253 4346 4441 4451
+ 4205 4213 4241 4257 4292 4298
+ 4229 4236 4239 4258 4266 4275
+ 3581 3809 4134 4365 4522 4577
+ 4228 4232 4242 4261 4273 4281
+ 4065 4072 4248 4353 4451
+ 4230 4235 4244 4259 4272 4284
+ 4141 4145 4218 4263 4293 4335 4358
+ 4231 4239 4245 4266 4271 4285
+ 4213 4219 4249 4260 4298 4304
+ 4236 4244 4250 4272 4275 4288
+ 4235 4242 4254 4273 4284 4291
+ 4219 4226 4257 4270 4304 4307
+ 4232 4247 4252 4281 4289 4290
+ 4199 4210 4237 4277 4324 4332
+ 4145 4150 4255 4269 4358 15368
+ 4093 4118 4276 4286 4397 4399
+ 4207 4237 4238 4301 4324 4333
+ 4239 4250 4256 4275 4285 4295
+ 4218 4240 4279 4293 4311
+ 4225 4234 4280 4314
+ 4150 4179 4263 4346 15368
+ 4226 4233 4260 4283 4307 4313
+ 4245 4256 4285 4297
+ 4244 4254 4258 4284 4288 4299
+ 4242 4252 4259 4281 4291 4300
+ 4238 4243 4283 4301 4318
+ 4250 4258 4266 4288 4295 4302
+ 4093 4133 4264 4287 4399 4402
+ 4206 4210 4262 4330 4332 4372
+ 4108 4190 4220 4373 4433 4457
+ 4240 4246 4267 4282 4310 4311
+ 4234 4241 4268 4292 4314 4322
+ 4252 4261 4273 4290 4300 4303
+ 4246 4247 4279 4289 4308 4310
+ 4233 4243 4270 4274 4313 4318
+ 4254 4259 4272 4291 4299 4306
+ 4256 4266 4271 4295 4297 4305
+ 4118 4178 4264 4343 4397 4416
+ 4133 4220 4276 4373 4402
+ 4258 4272 4275 4299 4302 4312
+ 4247 4261 4282 4290 4308 4309
+ 4261 4281 4289 4303 4309
+ 4259 4273 4284 4300 4306 4315
+ 4241 4249 4280 4298 4322 4331
+ 4218 4255 4267 4311 4335 4340
+ 3759 3960 4193 4436 4526 4589
+ 4266 4275 4285 4302 4305 4317
+ 4044 4097 4190 4387 4433 4511
+ 4271 4285 4305 4319
+ 4249 4257 4292 4304 4331 4339
+ 4272 4284 4288 4306 4312 4321
+ 4273 4281 4291 4303 4315 4320
+ 4238 4265 4274 4318 4333 4350
+ 4275 4288 4295 4312 4317 4325
+ 4281 4290 4300 4309 4320 4326
+ 4257 4260 4298 4307 4339 4347
+ 4285 4295 4297 4317 4319 4327
+ 4284 4291 4299 4315 4321 4328
+ 4260 4270 4304 4313 4347 4348
+ 4282 4289 4309 4310 4329 4336
+ 4289 4290 4303 4308 4326 4329
+ 4279 4282 4308 4311 4336 4341
+ 4267 4279 4293 4310 4340 4341
+ 4288 4299 4302 4321 4325 4334
+ 4270 4283 4307 4318 4348 4351
+ 4268 4280 4322 4356
+ 4291 4300 4306 4320 4328 4337
+ 4202 4227 4330 4343 4400 4417
+ 4295 4302 4305 4325 4327 4338
+ 4274 4283 4301 4313 4350 4351
+ 4297 4305 4327 4342
+ 4300 4303 4315 4326 4337 4344
+ 4299 4306 4312 4328 4334 4345
+ 4280 4292 4314 4331 4356 4367
+ 3994 4172 4485 4535 4661 15355
+ 4237 4262 4265 4332 4333 4381 4391
+ 4302 4312 4317 4334 4338 4349
+ 4303 4309 4320 4329 4344 4355
+ 4305 4317 4319 4338 4342 4352
+ 4306 4315 4321 4337 4345 4354
+ 4308 4309 4326 4336 4355 4363
+ 4206 4227 4277 4316 4372 4400 4420
+ 4292 4298 4322 4339 4367 4374
+ 4262 4277 4324 4372 4391 4409
+ 4265 4301 4324 4350 4381 4386
+ 4312 4321 4325 4345 4349 4359
+ 4255 4293 4340 4358 4385 4411
+ 4308 4310 4329 4341 4363 4364
+ 4315 4320 4328 4344 4354 4360
+ 4317 4325 4327 4349 4352 4361
+ 4298 4304 4331 4347 4374 4376
+ 4293 4311 4335 4341 4366 4385
+ 4310 4311 4336 4340 4364 4366
+ 4319 4327 4352 4362
+ 4178 4202 4286 4316 4416 4417 4468
+ 4320 4326 4337 4355 4360 4369
+ 4321 4328 4334 4354 4359 4368
+ 4179 4248 4269 4441 4458 15368
+ 4304 4307 4339 4348 4376 4384
+ 4307 4313 4347 4351 4384 4388
+ 4325 4334 4338 4359 4361 4370
+ 4301 4318 4333 4351 4386 4390
+ 4313 4318 4348 4350 4388 4390
+ 4327 4338 4342 4361 4362 4371
+ 4065 4129 4253 4428 4451 4537
+ 4328 4337 4345 4360 4368 4375
+ 4326 4329 4344 4363 4369 4378
+ 4314 4322 4367 4396
+ 3931 4130 4203 4503 4528 4573
+ 4255 4263 4335 4411 4446 15368
+ 4334 4345 4349 4368 4370 4377
+ 4337 4344 4354 4369 4375 4380
+ 4338 4349 4352 4370 4371 4379
+ 4342 4352 4371 4382
+ 4329 4336 4355 4364 4378 4392
+ 4336 4341 4363 4366 4392 15369
+ 3809 4157 4251 4577 4600
+ 4340 4341 4364 4385 15369
+ 4322 4331 4356 4374 4396 4405
+ 4345 4354 4359 4375 4377 4389
+ 4344 4355 4360 4378 4380 4395
+ 4349 4359 4361 4377 4379 4393
+ 4352 4361 4362 4379 4382 4394
+ 4277 4330 4332 4409 4420 4439
+ 4220 4278 4287 4402 4457 4489
+ 4331 4339 4367 4376 4405 4412
+ 4354 4360 4368 4380 4389 4398
+ 4339 4347 4374 4384 4412 4418
+ 4359 4368 4370 4389 4393 4403
+ 4355 4363 4369 4392 4395 4401
+ 4361 4370 4371 4393 4394 4404
+ 4360 4369 4375 4395 4398 4407
+ 4324 4333 4386 4391 4430 4438
+ 4362 4371 4394 4406
+ 2062 2078 4169 4894 5221 15374
+ 4347 4348 4376 4388 4418 4423
+ 4335 4340 4366 4411 4448 15369
+ 4333 4350 4381 4390 4429 4430
+ 4097 4203 4296 4503 4511 4583
+ 4348 4351 4384 4390 4423 4426
+ 4368 4375 4377 4398 4403 4410
+ 4350 4351 4386 4388 4426 4429
+ 4324 4332 4381 4409 4438 4450
+ 4363 4364 4378 4401 4408 15369
+ 4370 4377 4379 4403 4404 4413
+ 4371 4379 4382 4404 4406 4414
+ 4369 4378 4380 4401 4407 4415
+ 4356 4367 4405 4434
+ 4264 4286 4399 4416 4488 4493
+ 4375 4380 4389 4407 4410 4419
+ 4264 4276 4397 4402 4493 4502
+ 4316 4330 4417 4420 4453 4475
+ 4378 4392 4395 4408 4415 4421
+ 4276 4287 4373 4399 4489 4502
+ 4377 4389 4393 4410 4413 4422
+ 4379 4393 4394 4413 4414 4424
+ 4367 4374 4396 4412 4434 4444
+ 4382 4394 4414 4425
+ 4380 4395 4398 4415 4419 4427
+ 4392 4401 4421 4445 15369
+ 4332 4372 4391 4439 4450 4465
+ 4389 4398 4403 4419 4422 4431
+ 4335 4358 4385 4446 4448 4492
+ 4374 4376 4405 4418 4444 4456
+ 4393 4403 4404 4422 4424 4435
+ 4394 4404 4406 4424 4425 4437
+ 4395 4401 4407 4421 4427 4432
+ 4286 4343 4397 4468 4488 4514
+ 4316 4343 4400 4468 4475 4513
+ 4376 4384 4412 4423 4456 4461
+ 4398 4407 4410 4427 4431 4442
+ 4330 4372 4400 4439 4453 4476
+ 4401 4408 4415 4432 4445 4454
+ 4403 4410 4413 4431 4435 4443
+ 4384 4388 4418 4426 4461 4466
+ 4404 4413 4414 4435 4437 4447
+ 4406 4414 4437 4449
+ 4388 4390 4423 4429 4466 4471
+ 4407 4415 4419 4432 4442 4452
+ 4129 4193 4353 4526 4537 4647
+ 4386 4390 4426 4430 4471 4477
+ 4381 4386 4429 4438 4477 4480
+ 4410 4419 4422 4442 4443 4455
+ 4415 4421 4427 4452 4454
+ 4190 4278 4296 4457 4511 4554 4603
+ 4396 4405 4444 4474
+ 4413 4422 4424 4443 4447 4459
+ 3960 4172 4294 4535 4589 4664
+ 4414 4424 4425 4447 4449 4460
+ 4381 4391 4430 4450 4480 4487
+ 4372 4409 4420 4465 4476 4479
+ 3690 3839 4467 4509 4685 4715
+ 4248 4346 4451 4458 4551 4567
+ 4419 4427 4431 4452 4455 4462
+ 4422 4431 4435 4455 4459 4464
+ 4405 4412 4434 4456 4474 4486
+ 4408 4421 4448 4454 4481 4495 15369
+ 4358 4411 4458 4492 4517 15368
+ 4424 4435 4437 4459 4460 4469
+ 4385 4411 4445 4492 4495 4523 15369
+ 4425 4437 4460 4472
+ 4391 4409 4438 4465 4487 4496
+ 4248 4253 4353 4441 4537 4567 4628
+ 4427 4432 4442 4454 4462 4473
+ 4400 4420 4475 4476 4497
+ 4421 4432 4445 4452 4473 4481
+ 4431 4442 4443 4462 4464 4470
+ 4412 4418 4444 4461 4486 4491
+ 4278 4373 4433 4489 4554 4563
+ 4346 4441 4446 4517 4551 15368
+ 4435 4443 4447 4464 4469 4478
+ 4437 4447 4449 4469 4472 4483
+ 4418 4423 4456 4466 4491 4499
+ 4442 4452 4455 4470 4473 4484
+ 3675 4157 4600 4762 4851 15364
+ 4443 4455 4459 4470 4478 4482
+ 4409 4439 4450 4479 4496 4507
+ 4423 4426 4461 4471 4499 4506
+ 3839 4130 4440 4528 4679 4685
+ 4343 4416 4417 4513 4514 4538
+ 4447 4459 4460 4478 4483 4490
+ 4455 4462 4464 4482 4484
+ 4426 4429 4466 4477 4506 4510
+ 4449 4460 4483 4494
+ 4452 4454 4462 4481 4484 4498
+ 4434 4444 4486 4512
+ 4400 4417 4453 4497 4513 4545
+ 4420 4439 4453 4479 4497 4505 4521
+ 4429 4430 4471 4480 4510 4515
+ 4459 4464 4469 4482 4490 4500
+ 4439 4465 4476 4505 4507
+ 4430 4438 4477 4487 4515 4520
+ 4445 4454 4473 4495 4498 4531
+ 4464 4470 4478 4484 4500 4504
+ 4460 4469 4472 4490 4494 4508
+ 4462 4470 4473 4482 4498 4504
+ 3994 4134 4323 4522 4661 4745
+ 4444 4456 4474 4491 4512 4518
+ 4438 4450 4480 4496 4520 4530
+ 4397 4416 4493 4514 4544 4562
+ 4373 4402 4457 4502 4563 4578
+ 4469 4478 4483 4500 4508 4516
+ 4456 4461 4486 4499 4518 4529
+ 4411 4446 4448 4517 4523 4559
+ 4397 4399 4488 4502 4562 4566
+ 4472 4483 4508 4519
+ 4445 4448 4481 4523 4531 4543
+ 4450 4465 4487 4507 4530 4534
+ 4453 4475 4476 4521 4545 4546
+ 4473 4481 4484 4504 4527 4531
+ 4461 4466 4491 4506 4529 15370
+ 4478 4482 4490 4504 4516 4524
+ 1168 2700 3287 4893 5174 5290
+ 4399 4402 4489 4493 4566 4578
+ 4203 4357 4387 4573 4583 4667
+ 4482 4484 4498 4500 4524 4527
+ 4476 4479 4507 4521 4532
+ 4466 4471 4499 4510 4536 15370
+ 4465 4479 4496 4505 4532 4534
+ 4483 4490 4494 4516 4519 4533
+ 3690 3813 4440 4706 4715 4827
+ 4471 4477 4506 4515 4536 4541
+ 4296 4387 4433 4583 4603 4644
+ 4474 4486 4518 4540
+ 4417 4468 4475 4538 4545 4565
+ 4416 4468 4488 4538 4544 4571
+ 4477 4480 4510 4520 4541 4547
+ 4490 4500 4508 4524 4533 4539
+ 4446 4458 4492 4551 4559 4579 4594
+ 4486 4491 4512 4529 4540 4549
+ 4494 4508 4533 4542
+ 4480 4487 4515 4530 4547 4550
+ 4476 4497 4505 4532 4546 4552
+ 4134 4251 4485 4577 4745 4796
+ 4448 4492 4495 4543 4559 4576
+ 4500 4504 4516 4527 4539 4548
+ 2171 2700 3813 4706 4893 4958
+ 4193 4294 4428 4589 4647 4690
+ 4498 4504 4524 4531 4548 4553
+ 4130 4357 4467 4573 4675 4679
+ 4491 4499 4518 4549 4556 15370
+ 4487 4496 4520 4534 4550 4558
+ 4481 4495 4498 4527 4543 4553 4570
+ 4505 4507 4521 4534 4552 4561
+ 4508 4516 4519 4539 4542 4555
+ 4496 4507 4530 4532 4558 4561
+ 4172 4323 4436 4661 4664 4776
+ 4506 4510 4541 4564 4569 15370
+ 4353 4428 4451 4628 4647 4701
+ 4468 4513 4514 4565 4571 4596
+ 4516 4524 4533 4548 4555 4568
+ 4512 4518 4549 4574
+ 4510 4515 4536 4547 4569 4575
+ 4519 4533 4555 4572
+ 4495 4523 4531 4570 4576 4591
+ 4488 4514 4562 4571 4595
+ 4475 4497 4513 4546 4565 4586 4601
+ 4497 4521 4545 4552 4585 4586
+ 4515 4520 4541 4550 4575 4580
+ 4524 4527 4539 4553 4568 4581
+ 4518 4529 4540 4556 4574 4582
+ 4520 4530 4547 4558 4580 15371
+ 4441 4458 4517 4567 4594 4632 4654
+ 4521 4532 4546 4561 4585 4587
+ 4527 4531 4548 4570 4581 4593
+ 4433 4457 4563 4603 4641 4646
+ 4533 4539 4542 4568 4572 4584
+ 4529 4549 4564 4582 4588 15370
+ 244 312 361 4780 5550 6345 6996
+ 4530 4534 4550 4561 4590 15371
+ 4492 4517 4523 4576 4579 4592
+ 199 239 4672 6408 6740 7295
+ 4532 4534 4552 4558 4587 4590
+ 4488 4493 4544 4566 4595 4615
+ 4457 4489 4554 4578 4641 4652
+ 4536 4556 4569 4588 4597 15370
+ 4513 4538 4545 4596 4601 4614
+ 4493 4502 4562 4578 4615 4649
+ 4441 4451 4551 4628 4654 4695
+ 4539 4548 4555 4581 4584 4599
+ 4536 4541 4564 4575 4597 4602
+ 4531 4543 4553 4591 4593 4607
+ 4514 4538 4544 4595 4596 4617
+ 4542 4555 4584 4598
+ 4357 4503 4528 4667 4675 4730
+ 4540 4549 4582 4604
+ 4541 4547 4569 4580 4602 4606
+ 4523 4543 4559 4591 4592 4605
+ 4251 4365 4522 4600 4796 4869
+ 4489 4502 4563 4566 4649 4652
+ 4517 4559 4592 4594 4608
+ 4547 4550 4575 4606 4609 15371
+ 4548 4553 4568 4593 4599 4611
+ 4549 4556 4574 4588 4604 4610
+ 4387 4503 4511 4644 4667 4731
+ 4555 4568 4572 4598 4599 4612
+ 4546 4552 4586 4587 4618 4621
+ 4545 4546 4585 4601 4621 4629
+ 4552 4561 4585 4590 4616 4618
+ 4556 4564 4582 4597 4610 4619
+ 4294 4436 4526 4664 4690 4751
+ 4558 4561 4587 4613 4616 15371
+ 4543 4570 4576 4605 4607 4622
+ 4559 4576 4579 4605 4608 4620
+ 4553 4570 4581 4607 4611 4626
+ 4517 4551 4579 4608 4632 4643
+ 4544 4562 4571 4615 4617 4642
+ 4538 4565 4571 4614 4617 4634
+ 4564 4569 4588 4602 4619 4623
+ 4572 4584 4612 4624
+ 4568 4581 4584 4611 4612 4627
+ 4157 4365 4463 4577 4851 4869
+ 4545 4565 4586 4614 4629 4635
+ 4569 4575 4597 4606 4623 4630
+ 4433 4511 4554 4644 4646 4709
+ 4574 4582 4610 4631
+ 4576 4591 4592 4620 4622 4625
+ 4575 4580 4602 4609 4630 4633
+ 4570 4591 4593 4622 4626 4636
+ 4579 4592 4594 4620 4643 4655
+ 4580 4606 4613 4633 4638 15371
+ 4582 4588 4604 4619 4631 4637
+ 4581 4593 4599 4626 4627 4640
+ 4584 4598 4599 4624 4627 4639
+ 4590 4609 4616 4638 4645 15371
+ 4565 4596 4601 4634 4635 4659
+ 4562 4566 4595 4642 4649 4702
+ 4587 4590 4613 4618 4645 4650
+ 4571 4595 4596 4634 4642 4669
+ 4585 4587 4616 4621 4650 4656
+ 4588 4597 4610 4623 4637 4651
+ 4592 4605 4608 4625 4653 4655
+ 4585 4586 4618 4629 4656 4660
+ 4591 4605 4607 4625 4636 4648
+ 4597 4602 4619 4630 4651 4658
+ 4598 4612 4639 4657
+ 4605 4620 4622 4648 4653
+ 4593 4607 4611 4636 4640 4663
+ 4599 4611 4612 4639 4640 4662
+ 4451 4537 4567 4695 4701 4744
+ 4586 4601 4621 4635 4660 4668
+ 4602 4606 4623 4633 4658 4665
+ 4604 4610 4637 4666
+ 4551 4594 4643 4654 4703 4711
+ 4606 4609 4630 4638 4665 4671
+ 4596 4614 4617 4659 4669 4682
+ 4601 4614 4629 4659 4668 4670
+ 4607 4622 4626 4648 4663 4673
+ 4610 4619 4631 4651 4666 4674
+ 4609 4613 4633 4645 4671 4676
+ 4612 4624 4627 4657 4662 4677
+ 4611 4626 4627 4662 4663 4678
+ 4554 4563 4646 4652 4733 4742
+ 4595 4615 4617 4669 4702 4712
+ 4594 4608 4632 4655 4697 4703
+ 4511 4583 4603 4709 4731 4768
+ 4613 4616 4638 4650 4676 4681
+ 4554 4603 4641 4709 4742
+ 4428 4526 4537 4690 4701 4794 4799
+ 4622 4625 4636 4653 4673 4680
+ 4566 4578 4615 4652 4702 4737
+ 4616 4618 4645 4656 4681 4684
+ 4619 4623 4637 4658 4674 4683
+ 4563 4578 4641 4649 4733 4737
+ 4620 4625 4648 4655 4680 4686
+ 4551 4567 4632 4695 4711 4739
+ 4608 4620 4643 4653 4686 4697
+ 4618 4621 4650 4660 4684 4689
+ 4624 4639 4677 4687
+ 4623 4630 4651 4665 4683 4688
+ 4614 4634 4635 4670 4682 4693
+ 4621 4629 4656 4668 4689 4694
+ 4323 4485 4535 4745 4776 4892
+ 4627 4639 4640 4677 4678 4692
+ 4626 4636 4640 4673 4678 4691
+ 4436 4535 4589 4751 4776 4844
+ 4630 4633 4658 4671 4688 4696
+ 4631 4637 4674 4698
+ 4503 4573 4583 4730 4731 4795
+ 4629 4635 4660 4670 4694 4699
+ 4617 4634 4642 4682 4712 4718
+ 4635 4659 4668 4693 4699
+ 4633 4638 4665 4676 4696 4700
+ 199 253 4560 4995 6562 6740
+ 4636 4648 4663 4680 4691 4704
+ 4637 4651 4666 4683 4698 4705
+ 4528 4573 4679 4730 4804
+ 4638 4645 4671 4681 4700 4707
+ 4639 4657 4662 4687 4692 4708
+ 4640 4662 4663 4691 4692 4710
+ 4467 4528 4675 4685 4804 4821
+ 4648 4653 4673 4686 4704 4716
+ 4645 4650 4676 4684 4707 4713
+ 4634 4659 4669 4693 4718 4721
+ 4651 4658 4674 4688 4705 4714
+ 4650 4656 4681 4689 4713 4717
+ 4440 4467 4679 4715 4821 4823
+ 4653 4655 4680 4697 4716 4728
+ 4657 4677 4708 4720
+ 4658 4665 4683 4696 4714 4719
+ 4656 4660 4684 4694 4717 4722
+ 4526 4589 4647 4751 4794 4835
+ 4663 4673 4678 4704 4710 4724
+ 4662 4677 4678 4708 4710 4726
+ 4659 4670 4682 4699 4721 4723
+ 4660 4668 4689 4699 4722 4725
+ 4567 4628 4654 4739 4744 4777
+ 4665 4671 4688 4700 4719 4727
+ 4643 4655 4686 4703 4728 4738
+ 4666 4674 4705 4729
+ 4668 4670 4693 4694 4723 4725
+ 4671 4676 4696 4707 4727 4732
+ 4537 4628 4647 4744 4799 4824
+ 4615 4642 4649 4712 4737 4766 4779
+ 4632 4643 4697 4711 4738 4755
+ 4673 4680 4691 4716 4724 4736
+ 4674 4683 4698 4714 4729 4734
+ 3813 4509 4525 4827 4958 5028
+ 4676 4681 4700 4713 4732 4735
+ 4677 4687 4692 4720 4726 15372
+ 4603 4644 4646 4742 4768 4808
+ 4678 4691 4692 4724 4726 4740
+ 4632 4654 4703 4739 4755 4773
+ 4642 4669 4702 4718 4761 4766
+ 4681 4684 4707 4717 4735 4743
+ 4683 4688 4705 4719 4734 4741
+ 4440 4509 4685 4823 4827 4947
+ 4680 4686 4704 4728 4736 4749
+ 4684 4689 4713 4722 4743 4746
+ 4669 4682 4712 4721 4754 4761
+ 4688 4696 4714 4727 4741 4747
+ 4687 4708 4748 15372
+ 4682 4693 4718 4723 4753 4754
+ 4689 4694 4717 4725 4746 4750
+ 4693 4699 4721 4725 4752 4753
+ 4691 4704 4710 4736 4740 4759
+ 4694 4699 4722 4723 4750 4752
+ 4692 4708 4710 4740 4758 15372
+ 4696 4700 4719 4732 4747 4756
+ 4686 4697 4716 4738 4749 4764
+ 4698 4705 4734 4757
+ 4573 4667 4675 4795 4804 4913
+ 4583 4644 4667 4768 4795 4877
+ 4700 4707 4727 4735 4756 4760
+ 4641 4652 4737 4742 4816 4836
+ 4705 4714 4729 4741 4757 4763
+ 4707 4713 4732 4743 4760 4765
+ 4704 4716 4724 4749 4759 4770
+ 4649 4652 4702 4733 4779 4812 4816
+ 4697 4703 4728 4755 4764 4783
+ 4654 4695 4711 4773 4777 4806
+ 4710 4724 4726 4758 4759 4772
+ 4714 4719 4734 4747 4763 4769
+ 4641 4646 4709 4733 4808 4836
+ 4713 4717 4735 4746 4765 4771
+ 4628 4695 4701 4777 4824 4840
+ 4485 4522 4661 4796 4892 4976
+ 4717 4722 4743 4750 4771 4774
+ 4719 4727 4741 4756 4769 4775
+ 4720 4767 4782 15372
+ 4716 4728 4736 4764 4770 4787
+ 4722 4725 4746 4752 4774 4778
+ 4589 4664 4690 4835 4844 4898
+ 4723 4725 4750 4753 4778 4781
+ 4721 4723 4752 4754 4781 4786
+ 4718 4721 4753 4761 4786 4790
+ 4703 4711 4738 4773 4783 4800
+ 4727 4732 4747 4760 4775 4785
+ 4729 4734 4763 4784
+ 4726 4740 4767 4772 4788 15372
+ 4724 4736 4740 4770 4772 4791
+ 4732 4735 4756 4765 4785 4789
+ 4712 4718 4754 4766 4790 4802
+ 4169 4463 4851 4894 5272 5282 15364
+ 4734 4741 4757 4769 4784 4792
+ 4728 4738 4749 4783 4787 4803
+ 4735 4743 4760 4771 4789 4793
+ 4702 4712 4761 4779 4802 4819
+ 4748 4758 4782 4788 4801 15372
+ 4644 4709 4731 4808 4877 4883
+ 4741 4747 4763 4775 4792 4797
+ 4736 4749 4759 4787 4791 4809
+ 4743 4746 4765 4774 4793 4798
+ 4740 4758 4759 4788 4791 4807
+ 4711 4739 4755 4800 4806 4833
+ 4746 4750 4771 4778 4798 4805
+ 4747 4756 4769 4785 4797 15373
+ 4535 4661 4664 4844 4892 5012
+ 4695 4739 4744 4806 4840 4857
+ 4750 4752 4774 4781 4805 4810
+ 4702 4737 4766 4812 4819 4853
+ 312 894 4557 4973 6102 6345
+ 4752 4753 4778 4786 4810 4814
+ 4748 4767 4801 4815
+ 4738 4755 4764 4800 4803 4828
+ 4757 4763 4792 4811
+ 4756 4760 4775 4789 4813 15373
+ 4753 4754 4781 4790 4814 4818
+ 4749 4764 4770 4803 4809 4826
+ 4758 4767 4772 4801 4807 4822
+ 4760 4765 4785 4793 4813 4817
+ 4754 4761 4786 4802 4818 4831
+ 4759 4770 4772 4807 4809 4829
+ 4763 4769 4784 4797 4811 4820
+ 4765 4771 4789 4798 4817 4825
+ 4647 4690 4799 4835 4884 15375
+ 4667 4730 4731 4877 4913 4966
+ 4522 4577 4745 4869 4976 5213
+ 4769 4775 4792 4820 4832 15373
+ 4771 4774 4793 4805 4825 4834
+ 4647 4701 4794 4824 4884 4902
+ 4755 4773 4783 4828 4833 4855
+ 4767 4782 4788 4815 4822 4838
+ 4761 4766 4790 4819 4831 4841
+ 4764 4783 4787 4826 4828 4848
+ 4675 4679 4730 4821 4913 4941
+ 4774 4778 4798 4810 4834 4839
+ 4739 4773 4777 4833 4857 4870
+ 4772 4788 4791 4822 4829 4845
+ 4709 4742 4768 4836 4883 4911
+ 4770 4787 4791 4826 4829 4847
+ 4778 4781 4805 4814 4839 4842
+ 4784 4792 4820 4843
+ 4737 4779 4816 4853 4865
+ 4785 4789 4817 4837 4846 15373
+ 4781 4786 4810 4818 4842 4849
+ 4782 4801 4838 4850
+ 4733 4737 4812 4836 4865 4921
+ 4789 4793 4813 4825 4846 4852
+ 4786 4790 4814 4831 4849 4856
+ 4766 4779 4802 4841 4853 4858
+ 4792 4797 4811 4832 4843 4854
+ 4679 4685 4804 4823 4941 4953
+ 4788 4801 4807 4838 4845 4860
+ 4685 4715 4821 4947 4953
+ 4701 4744 4799 4840 4902 4933
+ 4793 4798 4817 4834 4852 4859
+ 4787 4803 4809 4847 4848 4866
+ 4509 4706 4715 4947 5028 5107
+ 4783 4800 4803 4848 4855 4872
+ 4791 4807 4809 4845 4847 4863
+ 2565 3697 4888 5050 5372 5652
+ 4790 4802 4818 4841 4856 4864
+ 4797 4820 4837 4854 4861 15373
+ 4773 4800 4806 4855 4870 4882
+ 4798 4805 4825 4839 4859 4862
+ 4690 4751 4794 4898 4954 15375
+ 4733 4742 4808 4816 4911 4921
+ 4813 4832 4846 4861 4867 15373
+ 4801 4815 4822 4850 4860 4873
+ 4805 4810 4834 4842 4862 4868
+ 4744 4777 4824 4857 4926 4933
+ 4802 4819 4831 4858 4864 4871
+ 4810 4814 4839 4849 4868 4875
+ 4811 4820 4854 4874
+ 4664 4751 4776 4898 5010 5012
+ 4807 4822 4829 4860 4863 4878
+ 4813 4817 4837 4852 4867 4876
+ 4809 4826 4829 4863 4866 4887
+ 4803 4826 4828 4866 4872 4889
+ 4814 4818 4842 4856 4875 4880
+ 4815 4838 4873 4886
+ 4463 4600 4762 4869 5255 5272
+ 4817 4825 4846 4859 4876 4879
+ 4779 4812 4819 4858 4865 4885 4904
+ 4820 4832 4843 4861 4874 4881
+ 4800 4828 4833 4872 4882 4901
+ 4818 4831 4849 4864 4880 4891
+ 4777 4806 4840 4870 4924 4926
+ 4819 4841 4853 4871 4885
+ 4825 4834 4852 4862 4879 4890
+ 4822 4838 4845 4873 4878 4896
+ 4832 4837 4854 4867 4881 4895
+ 4834 4839 4859 4868 4890 4899
+ 4829 4845 4847 4878 4887 4905
+ 4831 4841 4856 4871 4891 4897
+ 4812 4816 4853 4904 4921 4943
+ 4826 4847 4848 4887 4889 4907
+ 4837 4846 4861 4876 4895 4900
+ 4839 4842 4862 4875 4899 4903
+ 4577 4600 4796 4851 5213 5255
+ 4806 4833 4857 4882 4924 4927
+ 4841 4858 4864 4885 4897 4909
+ 4828 4848 4855 4889 4901 4914
+ 4838 4850 4860 4886 4896 4912
+ 4843 4854 4881 4906
+ 4842 4849 4868 4880 4903 4910
+ 4846 4852 4867 4879 4900 4908
+ 4731 4768 4795 4883 4966 5026
+ 4845 4860 4863 4896 4905 4918
+ 4852 4859 4876 4890 4908 4915
+ 4849 4856 4875 4891 4910 4917
+ 4854 4861 4874 4895 4906 4916
+ 4833 4855 4870 4901 4927 4932
+ 4768 4808 4877 4911 4991 5026
+ 4794 4799 4902 4940 4960 15375
+ 4853 4858 4871 4904 4909 4931
+ 4850 4873 4912 4922
+ 4847 4863 4866 4905 4907 4925
+ 2565 3878 4830 5611 5652
+ 4848 4866 4872 4907 4914 4928
+ 4859 4862 4879 4899 4915 15376
+ 4856 4864 4880 4897 4917 4919
+ 4661 4745 4776 4976 5012 5096
+ 2700 4501 4525 4958 5290 5355 5486
+ 4169 4383 4762 5221 5282 5498
+ 4861 4867 4881 4900 4916 4923
+ 4860 4873 4878 4912 4918 4934
+ 4864 4871 4891 4909 4919 4920
+ 4751 4835 4844 4954 5010 5018
+ 4862 4868 4890 4903 4929 15376
+ 4867 4876 4895 4908 4923 4930
+ 4855 4872 4882 4914 4932 4937
+ 4799 4824 4884 4933 4940 4978
+ 4868 4875 4899 4910 4929 4935
+ 4853 4865 4885 4931 4943 4982
+ 4863 4878 4887 4918 4925 4942
+ 4874 4881 4916 4936
+ 4866 4887 4889 4925 4928 4946
+ 4876 4879 4900 4915 4930 4938
+ 4871 4885 4897 4920 4931 4944
+ 4875 4880 4903 4917 4935 4939
+ 4808 4836 4883 4921 4991 5003
+ 4873 4886 4896 4922 4934 4951
+ 4730 4795 4804 4941 4966 5080 5105
+ 4872 4889 4901 4928 4937 4945
+ 4879 4890 4908 4938 4948 15376
+ 4881 4895 4906 4923 4936 4949
+ 4880 4891 4910 4919 4939 4950
+ 4878 4896 4905 4934 4942 4957
+ 4891 4897 4917 4920 4950 4952
+ 4897 4909 4919 4944 4952
+ 4816 4836 4865 4911 4943 5000 5003
+ 4886 4912 4951 4959
+ 4895 4900 4916 4930 4949 4956
+ 4857 4870 4926 4927 4975 4985
+ 4887 4905 4907 4942 4946 4963
+ 4840 4857 4924 4933 4985 4992
+ 4870 4882 4924 4932 4970 4975
+ 4889 4907 4914 4945 4946 4964
+ 4899 4903 4935 4955 4961 15376
+ 4900 4908 4923 4938 4956 4962
+ 4885 4904 4909 4944 4977 4982
+ 4882 4901 4927 4937 4965 4970
+ 4824 4840 4902 4926 4978 4992 15377
+ 4896 4912 4918 4951 4957 4972
+ 4903 4910 4929 4939 4961 4968
+ 4906 4916 4949 4969
+ 4901 4914 4932 4945 4965 4967
+ 4908 4915 4930 4948 4962 4971
+ 4910 4917 4935 4950 4968 4974
+ 4884 4902 4960 4978 5013
+ 4804 4821 4913 4953 5105 5131
+ 4905 4918 4925 4957 4963 4986
+ 4865 4904 4921 4982 5000 5027
+ 4909 4920 4931 4952 4977 4983
+ 4914 4928 4937 4964 4967 4984
+ 4907 4925 4928 4963 4964 4987
+ 4715 4823 4827 4953 5107 5173
+ 4915 4938 4955 4971 4980 15376
+ 4916 4923 4936 4956 4969 4979
+ 4917 4919 4939 4952 4974 4981
+ 4912 4922 4934 4959 4972 4988
+ 4919 4920 4944 4950 4981 4983
+ 4821 4823 4941 4947 5131 5173
+ 4835 4898 4993 5018 5033 15375
+ 4929 4948 4961 4980 4989 15376
+ 4923 4930 4949 4962 4979 4990
+ 4918 4934 4942 4972 4986 4998
+ 4525 4706 4893 5028 5190 5355
+ 4922 4951 4988 4999
+ 4884 4940 4993 5013 5044 15375
+ 4929 4935 4955 4968 4989 4994
+ 4930 4938 4956 4971 4990 4996
+ 4925 4942 4946 4986 4987 5005
+ 4928 4945 4946 4984 4987 5004
+ 4932 4937 4967 4970 4997 5007
+ 4795 4877 4913 5026 5080 5112
+ 4937 4945 4965 4984 4997
+ 4935 4939 4961 4974 4994 5002
+ 4936 4949 4979 5001
+ 4927 4932 4965 4975 5007 5017
+ 4938 4948 4962 4980 4996 5006
+ 4934 4951 4957 4988 4998 5015
+ 894 1987 4780 5181 6066 6102
+ 4939 4950 4968 4981 5002 5008
+ 4924 4927 4970 4985 5017 5023
+ 4745 4796 4892 5096 5213 5309
+ 4931 4944 4982 4983 5016 5020
+ 4902 4933 4940 5013 5066 15377
+ 4949 4956 4969 4990 5001 5011
+ 4948 4955 4971 4989 5006 5014
+ 4950 4952 4974 4983 5008 5009
+ 4904 4931 4943 4977 5020 5027 5041
+ 4944 4952 4977 4981 5009 5016
+ 4945 4964 4967 4997 5004 5019
+ 4924 4926 4975 4992 5023 5032
+ 4942 4957 4963 4998 5005 5024
+ 4946 4963 4964 5004 5005 5025
+ 4951 4959 4972 4999 5015 5029
+ 4955 4961 4980 4994 5014 5021
+ 4956 4962 4979 4996 5011 5022
+ 4883 4911 5003 5026 5068 5093
+ 4926 4933 4985 5032 5038 15377
+ 4954 4960 5033 5044 5069 15375
+ 4961 4968 4989 5002 5021 5031
+ 253 460 4672 5317 6494 6562
+ 4962 4971 4990 5006 5022 5030
+ 4965 4967 4984 5007 5019 5034
+ 4957 4972 4986 5015 5024 5037
+ 4959 4988 5029 5040
+ 4921 4943 5003 5027 5060 5082
+ 4969 4979 5011 5035
+ 4968 4974 4994 5008 5031 5036
+ 4911 4921 4991 5000 5068 5082
+ 4964 4984 4987 5019 5025 5043
+ 4963 4986 4987 5024 5025 5045
+ 4971 4980 4996 5014 5030 5039
+ 4965 4970 4997 5017 5034 5049
+ 4974 4981 5002 5009 5036 5042
+ 4981 4983 5008 5016 5042 5048
+ 4844 4898 5012 5018 5123 5160
+ 4979 4990 5001 5022 5035 5046
+ 4776 4844 4892 5010 5096 5160 5223
+ 4940 4960 4978 5044 5066 5100
+ 4980 4989 5006 5021 5039 5047
+ 4972 4988 4998 5029 5037 5052
+ 4977 4983 5009 5020 5048 5051
+ 4970 4975 5007 5023 5049 5055
+ 4898 4954 5010 5033 5101 5123
+ 4984 4997 5004 5034 5043 5057
+ 4977 4982 5016 5041 5051 5062
+ 4989 4994 5014 5031 5047 5054
+ 4990 4996 5011 5030 5046 5053
+ 4975 4985 5017 5032 5055 5064
+ 4986 4998 5005 5037 5045 15378
+ 4987 5004 5005 5043 5045 5059
+ 4877 4883 4966 4991 5093 5112 5149
+ 4943 4982 5000 5041 5060 5070
+ 4706 4827 4958 5107 5190 5256
+ 4988 4999 5015 5040 5052 5061
+ 4996 5006 5022 5039 5053 5056
+ 4994 5002 5021 5036 5054 5058
+ 4985 4992 5023 5038 5064 5072
+ 4954 4993 5018 5069 5101
+ 4997 5007 5019 5049 5057 5076
+ 5001 5011 5046 5063
+ 5002 5008 5031 5042 5058 5065
+ 4998 5015 5024 5052 5074 15378
+ 4992 5032 5072 5078 15377
+ 5006 5014 5030 5047 5056 5067
+ 4999 5029 5061 5077
+ 4982 5020 5027 5062 5070 5086
+ 5008 5009 5036 5048 5065 5071
+ 5004 5019 5025 5057 5059 5083
+ 4960 4993 5013 5069 5100 5134
+ 5005 5024 5025 5059 5081 15378
+ 5011 5022 5035 5053 5063 5073
+ 5014 5021 5039 5054 5067 5075
+ 5009 5016 5042 5051 5071 5079
+ 5007 5017 5034 5055 5076 5092
+ 3697 4176 4830 5180 5372 5667
+ 5016 5020 5048 5062 5079 5087
+ 5015 5029 5037 5061 5074 5088
+ 5022 5030 5046 5056 5073 5084
+ 5021 5031 5047 5058 5075 5085
+ 5017 5023 5049 5064 5092 5113
+ 5030 5039 5053 5067 5084 5089
+ 5019 5034 5043 5076 5083 5104
+ 5031 5036 5054 5065 5085 5090
+ 5025 5043 5045 5081 5083 5102
+ 5000 5027 5070 5082 5094 5114
+ 5029 5040 5052 5077 5088 5103
+ 5020 5041 5051 5086 5087 5106
+ 5035 5046 5073 5095
+ 5023 5032 5055 5072 5113 5130
+ 5036 5042 5058 5071 5090 5097
+ 4978 5013 5078 5100 5151 5164 15377
+ 5039 5047 5056 5075 5089 5099
+ 4991 5003 5082 5093 5136 5155
+ 4993 5033 5044 5101 5134 5170
+ 5027 5041 5060 5086 5094 5109
+ 5042 5048 5065 5079 5097 5110
+ 5032 5038 5064 5078 5130 5143
+ 5046 5053 5063 5084 5095 5108
+ 5037 5052 5088 5098 5115 15378
+ 5047 5054 5067 5085 5099 5111
+ 5034 5049 5057 5092 5104 5126
+ 5040 5061 5103 5119
+ 5038 5066 5072 5143 5151 15377
+ 5048 5051 5071 5087 5110 5117
+ 4913 4966 5105 5112 5218 5228
+ 5045 5059 5098 5102 5121 15378
+ 5000 5003 5060 5068 5114 5136 5141
+ 5043 5057 5059 5102 5104 5125
+ 5053 5056 5073 5089 5108 5116
+ 5054 5058 5075 5090 5111 5118
+ 5041 5062 5070 5106 5109 5120
+ 5051 5062 5079 5106 5117 5127
+ 5052 5061 5074 5103 5115 5129
+ 5056 5067 5084 5099 5116 5122
+ 5058 5065 5085 5097 5118 15379
+ 167 239 410 6408 13608 14718
+ 5049 5055 5076 5113 5126 5153
+ 4991 5026 5068 5149 5155 5191
+ 5060 5070 5109 5114 5124
+ 5063 5073 5108 5128
+ 4892 4976 5012 5223 5309 5375
+ 5065 5071 5090 5110 5132 15379
+ 5074 5081 5115 5121 5140 15378
+ 5067 5075 5089 5111 5122 5133
+ 5013 5044 5066 5134 5164 5200
+ 5018 5033 5069 5123 5170 5203
+ 5059 5081 5083 5121 5125 5146
+ 5061 5077 5088 5119 5129 5145
+ 5057 5076 5083 5125 5126 5148
+ 4913 4941 5080 5131 5228 5300
+ 5062 5086 5087 5120 5127 5138
+ 4827 4947 5028 5173 5256 5336
+ 5073 5084 5095 5116 5128 5137
+ 5070 5086 5094 5120 5124 5135
+ 5071 5079 5097 5117 5132 5142
+ 5075 5085 5099 5118 5133 5139
+ 4966 5026 5080 5149 5207 5218 5231
+ 5055 5064 5092 5130 5153 5183
+ 5060 5082 5094 5124 5141 5154
+ 5074 5088 5098 5129 5140 5157
+ 5084 5089 5108 5122 5137 5147
+ 5079 5087 5110 5127 5142 5152
+ 5085 5090 5111 5139 5150 15379
+ 5077 5103 5145 5158
+ 5086 5106 5109 5135 5138 5144
+ 5081 5098 5102 5140 5146 5166
+ 5089 5099 5116 5133 5147 5156
+ 5010 5018 5101 5160 5203 5241
+ 5094 5109 5114 5135 5154 5161
+ 5083 5102 5104 5146 5148 5171
+ 5076 5092 5104 5148 5153 5178
+ 5087 5106 5117 5138 5152 5163
+ 5095 5108 5137 5162
+ 5088 5103 5115 5145 5157 5175
+ 5064 5072 5113 5143 5183 5192
+ 4941 4953 5105 5173 5300 5365
+ 5097 5110 5142 5159 5169 15379
+ 5099 5111 5122 5139 5156 5167
+ 5044 5069 5100 5170 5200 5229
+ 5109 5120 5124 5144 5161 5165
+ 5068 5082 5141 5155 5194 5212
+ 5108 5116 5128 5147 5162 5172
+ 5106 5120 5127 5144 5163 5168
+ 5111 5118 5133 5150 5167 5177
+ 5098 5115 5121 5157 5166 5184
+ 5082 5114 5136 5154 5194 5201
+ 5110 5117 5132 5152 5169 5179
+ 5072 5078 5130 5151 5192 5209
+ 5120 5135 5138 5165 5168
+ 5103 5119 5129 5158 5175 5187
+ 5102 5121 5125 5166 5171 5188
+ 5116 5122 5137 5156 5172 5182
+ 5104 5125 5126 5171 5178 5195
+ 5026 5093 5112 5191 5207 5243
+ 5118 5139 5159 5177 5185 15379
+ 5066 5078 5143 5164 5209 5222
+ 5117 5127 5142 5163 5179 5186
+ 5092 5113 5126 5178 5183 5210
+ 5114 5124 5141 5161 5201 5202
+ 5068 5093 5136 5191 5212 5238
+ 5122 5133 5147 5167 5182 5189
+ 5115 5129 5140 5175 5184 5205
+ 5119 5145 5187 5204
+ 5132 5150 5169 5185 5197 15379
+ 5010 5012 5123 5223 5241 5334
+ 5124 5135 5154 5165 5196 5202
+ 5128 5137 5172 5199
+ 5127 5138 5152 5168 5186 5193
+ 5066 5100 5151 5200 5222 5266
+ 5135 5144 5161 5168 5196 5198
+ 5121 5140 5146 5184 5188 5215
+ 5133 5139 5156 5177 5189 5206
+ 5138 5144 5163 5165 5193 5198
+ 5132 5142 5159 5179 5197 5208
+ 5069 5101 5134 5203 5229 5262
+ 5125 5146 5148 5188 5195 5217
+ 5137 5147 5162 5182 5199 5211
+ 4947 4953 5107 5131 5336 5365 5416
+ 3287 4501 5181 5290 5828 5952
+ 5129 5145 5157 5187 5205 5219
+ 123 133 223 15053 15071 15220
+ 5139 5150 5167 5185 5206 5214
+ 5126 5148 5153 5195 5210 5226
+ 5142 5152 5169 5186 5208 5216
+ 4176 5050 5528 5667 5905 15374
+ 1987 3287 4973 5174 5952 6066 6276
+ 5147 5156 5172 5189 5211 5220
+ 5113 5130 5153 5192 5210 5239 5249
+ 5140 5157 5166 5205 5215 5233
+ 5150 5159 5177 5197 5214 5225
+ 5152 5163 5179 5193 5216 5224
+ 5145 5158 5175 5204 5219 5236
+ 5146 5166 5171 5215 5217 5242
+ 5156 5167 5182 5206 5220 5230
+ 4958 5028 5256 5355 5387
+ 5093 5149 5155 5238 5243 5278
+ 5130 5143 5183 5209 5239 5248
+ 5163 5168 5186 5198 5224 5227
+ 5136 5141 5201 5212 5250 5260
+ 5148 5171 5178 5217 5226 5246
+ 5161 5165 5198 5202 5232 5237
+ 5159 5169 5185 5208 5225 5235
+ 5165 5168 5193 5196 5227 5232
+ 5162 5172 5211 5234
+ 5100 5134 5164 5229 5266 5274
+ 5141 5154 5194 5202 5244 5250
+ 5154 5161 5196 5201 5237 5244
+ 5101 5123 5170 5241 5262 5284
+ 5158 5187 5236 5251
+ 5157 5175 5184 5219 5233 5253
+ 5167 5177 5189 5214 5230 5240
+ 5112 5149 5231 5243 5276
+ 5169 5179 5197 5216 5235 5245
+ 5143 5151 5192 5222 5248 5257
+ 5153 5178 5183 5226 5249 5258
+ 5172 5182 5199 5220 5234 5247
+ 5136 5155 5194 5238 5260 5277
+ 4796 4869 4976 5255 5309 5549 5559
+ 5177 5185 5206 5225 5240 5252
+ 5166 5184 5188 5233 5242 5264
+ 5179 5186 5208 5224 5245 5254
+ 5171 5188 5195 5242 5246 5269
+ 5080 5112 5228 5231 5301 15380
+ 5175 5187 5205 5236 5253 5268
+ 5182 5189 5211 5230 5247 5259
+ 4383 4894 5498 5528 5763 15374
+ 5151 5164 5209 5257 5266 5310
+ 5012 5096 5160 5334 5375 5432
+ 5186 5193 5216 5227 5254 5261
+ 5185 5197 5214 5235 5252 5263
+ 5178 5195 5210 5246 5258 5275
+ 5193 5198 5224 5232 5261 5265
+ 5080 5105 5218 5300 5398 15380
+ 5134 5170 5200 5262 5274 5311
+ 5189 5206 5220 5240 5259 5267
+ 5112 5207 5218 5276 5301
+ 5196 5198 5227 5237 5265 5270
+ 5184 5205 5215 5253 5264 5283
+ 5199 5211 5247 5271
+ 5197 5208 5225 5245 5263 5273
+ 5187 5204 5219 5251 5268 5285
+ 5196 5202 5232 5244 5270 5280
+ 5155 5191 5212 5277 5278 5315
+ 5183 5192 5248 5249 5295 5302
+ 5206 5214 5230 5252 5267 5279
+ 5123 5160 5203 5284 5334 5400
+ 5188 5215 5217 5264 5269 5292
+ 5149 5191 5207 5276 5278 5319
+ 5201 5202 5237 5250 5280 5287
+ 5208 5216 5235 5254 5273 5281
+ 5195 5217 5226 5269 5275 5298
+ 5211 5220 5234 5259 5271 5286
+ 5192 5209 5239 5257 5302 5307
+ 5183 5210 5239 5258 5291 5295
+ 5194 5201 5244 5260 5287 5297
+ 5204 5236 5285 5299
+ 5214 5225 5240 5263 5279 5288
+ 5205 5219 5233 5268 5283 5304
+ 5216 5224 5245 5261 5281 5289
+ 4851 4869 5213 5272 5549 5583
+ 5028 5107 5190 5336 5387 5446
+ 5209 5222 5248 5307 5310
+ 5210 5226 5249 5275 5291 5305
+ 5220 5230 5247 5267 5286 5294
+ 5194 5212 5250 5277 5297 5318
+ 5224 5227 5254 5265 5289 5296
+ 5170 5203 5229 5284 5311 5335
+ 5225 5235 5252 5273 5288 5303
+ 5215 5233 5242 5283 5292 5314
+ 5227 5232 5261 5270 5296 5306
+ 5164 5200 5222 5274 5310 5339
+ 5230 5240 5259 5279 5294 5308
+ 5219 5236 5253 5285 5304 5320
+ 5217 5242 5246 5292 5298 5323
+ 5232 5237 5265 5280 5306 5316
+ 5234 5247 5286 5312
+ 4762 4851 5255 5282 5583 5609
+ 5235 5245 5263 5281 5303 5313
+ 5200 5229 5266 5311 5339 5384
+ 5226 5246 5258 5298 5305 5328
+ 5207 5231 5243 5301 5319 5353
+ 5212 5238 5260 5315 5318 5340
+ 5191 5238 5243 5315 5319 5343
+ 5240 5252 5267 5288 5308 5321
+ 5237 5244 5270 5287 5316 5324
+ 5245 5254 5273 5289 5313 5322
+ 4762 4894 5272 5498 5609 5647
+ 5233 5253 5264 5304 5314 5330
+ 5203 5241 5262 5335 5400
+ 5236 5251 5268 5299 5320 5331
+ 5247 5259 5271 5294 5312 5325
+ 5244 5250 5280 5297 5324 5333
+ 5252 5263 5279 5303 5321 5326
+ 5254 5261 5281 5296 5322 5327
+ 4501 4893 5174 5486 5828 5831
+ 5249 5258 5295 5305 5329
+ 5242 5264 5269 5314 5323 5341
+ 275 2535 4201 6549 7003 11051
+ 5259 5267 5286 5308 5325 5332
+ 5239 5249 5291 5302 5329 5350
+ 5261 5265 5289 5306 5327 5337
+ 5250 5260 5287 5318 5333 5348
+ 5246 5269 5275 5323 5328 5351
+ 5251 5285 5331 5346
+ 5105 5131 5228 5365 5398 5423
+ 5218 5231 5276 5353 5402 15380
+ 5239 5248 5295 5307 5350 5369
+ 5263 5273 5288 5313 5326 5338
+ 5253 5268 5283 5320 5330 5349
+ 5258 5275 5291 5328 5329 5356
+ 5265 5270 5296 5316 5337 5344
+ 5248 5257 5302 5310 5369 5382
+ 5267 5279 5294 5321 5332 5342
+ 4976 5096 5213 5375 5559 5568
+ 5222 5257 5266 5307 5339 5382 5389
+ 5229 5262 5274 5335 5384 5420
+ 5271 5286 5325 5345
+ 5273 5281 5303 5322 5338 5347
+ 5264 5283 5292 5330 5341 5359
+ 5238 5277 5278 5340 5343 5364
+ 5270 5280 5306 5324 5344 5352
+ 460 3878 4995 5611 6494 6507
+ 5260 5277 5297 5340 5348 5366
+ 5243 5276 5278 5343 5353 5385
+ 5268 5285 5304 5331 5349 5362
+ 5279 5288 5308 5326 5342 5354
+ 5281 5289 5313 5327 5347 5357
+ 5269 5292 5298 5341 5351 5368
+ 5280 5287 5316 5333 5352 5361
+ 5286 5294 5312 5332 5345 5358
+ 5288 5303 5321 5338 5354 5360
+ 5289 5296 5322 5337 5357 5363
+ 5275 5298 5305 5351 5356 5378
+ 5291 5295 5305 5350 5356 5379
+ 5283 5304 5314 5349 5359 5376
+ 5285 5299 5320 5346 5362 5373
+ 5294 5308 5325 5342 5358 5367
+ 5287 5297 5324 5348 5361 5377
+ 5160 5223 5241 5400 5432 5492
+ 5262 5284 5311 5400 5420
+ 5107 5173 5256 5416 5446 5503
+ 5296 5306 5327 5344 5363 5370
+ 5303 5313 5326 5347 5360 5371
+ 5266 5274 5310 5384 5389 5447
+ 5277 5315 5318 5364 5366 5393
+ 5292 5314 5323 5359 5368 5386
+ 5308 5321 5332 5354 5367 5374
+ 5278 5315 5319 5364 5385 5403
+ 5306 5316 5337 5352 5370 5381
+ 5312 5325 5358 5380
+ 5299 5331 5373 5391
+ 5313 5322 5338 5357 5371 5383
+ 5297 5318 5333 5366 5377 5396
+ 5304 5320 5330 5362 5376 5395
+ 5295 5302 5329 5369 5379 5425
+ 5298 5323 5328 5368 5378 5399
+ 5316 5324 5344 5361 5381 5390
+ 5276 5301 5319 5385 5402 5440
+ 5321 5326 5342 5360 5374 5388
+ 4893 4958 5190 5387 5486 5625 5679
+ 5305 5328 5329 5378 5379 5412
+ 5322 5327 5347 5363 5383 5392
+ 5325 5332 5345 5367 5380 5394
+ 5314 5330 5341 5376 5386 5407
+ 5326 5338 5354 5371 5388 5397
+ 5324 5333 5352 5377 5390 5405
+ 5320 5331 5349 5373 5395 5410
+ 5327 5337 5357 5370 5392 5401
+ 5315 5340 5343 5393 5403 5406
+ 5131 5173 5300 5416 5423 5518 5520
+ 5318 5340 5348 5393 5396 5419
+ 5332 5342 5358 5374 5394 5404
+ 5323 5341 5351 5386 5399 15381
+ 5302 5307 5350 5382 5425 5433
+ 5337 5344 5363 5381 5401 5411
+ 5338 5347 5360 5383 5397 5409
+ 4830 5050 5652 5667 5974
+ 5331 5346 5362 5391 5410 5421
+ 5342 5354 5367 5388 5404 5413
+ 5096 5223 5309 5432 5568 5580
+ 5330 5349 5359 5395 5407 5424
+ 5333 5348 5361 5396 5405 5415
+ 5328 5351 5356 5399 5412 5428
+ 5329 5350 5356 5412 5425 5445
+ 5345 5358 5394 5414
+ 5344 5352 5370 5390 5411 5417
+ 5307 5310 5369 5389 5433 5441
+ 5347 5357 5371 5392 5409 5418
+ 5274 5311 5339 5420 5447 5509
+ 5319 5343 5353 5403 5440 5464
+ 5341 5359 5368 5407 5435 15381
+ 5190 5256 5355 5446 5578 5625
+ 5354 5360 5374 5397 5413 5422
+ 5310 5339 5382 5441 5447 5477
+ 5352 5361 5381 5405 5417 5429
+ 5346 5373 5421 5437
+ 5357 5363 5383 5401 5418 5427
+ 5340 5364 5366 5406 5419 5434
+ 5358 5367 5380 5404 5414 5426
+ 5349 5362 5376 5410 5424 5439
+ 5348 5366 5377 5415 5419 5430
+ 5360 5371 5388 5409 5422 5431
+ 5228 5300 5423 5493 5521 15380
+ 5351 5368 5378 5428 5443 15381
+ 5241 5284 5334 5335 5420 5492 5553
+ 5363 5370 5392 5411 5427 5436
+ 5301 5353 5440 5493 5516 15380
+ 5343 5364 5385 5406 5449 5464
+ 5367 5374 5394 5413 5426 5438
+ 5361 5377 5390 5415 5429 5442
+ 5364 5393 5403 5434 5449
+ 5359 5376 5386 5424 5435 5453
+ 148 200 223 7666 15071 15133
+ 5371 5383 5397 5418 5431 5444
+ 5362 5373 5395 5421 5439 5454
+ 5370 5381 5401 5417 5436 5448
+ 5356 5378 5379 5428 5445 5462
+ 5374 5388 5404 5422 5438 5451
+ 5380 5394 5426 5452
+ 5377 5396 5405 5430 5442 5450
+ 5173 5336 5365 5503 5520 5566
+ 5381 5390 5411 5429 5448 5456
+ 5383 5392 5409 5427 5444 5455
+ 5366 5393 5396 5430 5434 5457 5459
+ 5311 5335 5384 5400 5509 5553 5582
+ 5373 5391 5410 5437 5454 5467
+ 5388 5397 5413 5431 5451 5458
+ 5300 5365 5398 5518 5521
+ 5376 5395 5407 5439 5453 5468
+ 5350 5369 5379 5433 5445 5474 5482
+ 5394 5404 5414 5438 5452 5460
+ 5392 5401 5418 5436 5455 5463
+ 5378 5399 5412 5443 5462 5471
+ 5390 5405 5417 5442 5456 5465
+ 5396 5415 5419 5450 5459
+ 5397 5409 5422 5444 5458 5466
+ 5223 5334 5375 5492 5580 5585
+ 5369 5382 5425 5441 5474 5480
+ 5393 5406 5419 5449 5457 5473
+ 5386 5407 5453 5461 5476 15381
+ 5401 5411 5427 5448 5463 5469
+ 5391 5421 5467 5478
+ 5404 5413 5426 5451 5460 5470
+ 5395 5410 5424 5454 5468 5484
+ 5353 5385 5402 5464 5516 5540
+ 5382 5389 5433 5477 5480
+ 5405 5415 5429 5450 5465 5472
+ 5399 5428 5461 5471 5487 15381
+ 5409 5418 5431 5455 5466 5475
+ 5379 5412 5425 5462 5482 5497
+ 5256 5336 5387 5503 5578 5634
+ 5339 5384 5389 5477 5509 5536
+ 5411 5417 5436 5456 5469 5479
+ 5403 5406 5434 5464 5473 5501
+ 5415 5430 5442 5459 5472 5488
+ 5413 5422 5438 5458 5470 5481
+ 5414 5426 5460 5485
+ 5407 5424 5435 5468 5476 5495
+ 5410 5421 5439 5467 5484 5499
+ 5418 5427 5444 5463 5475 5489
+ 5417 5429 5448 5465 5479 5490
+ 5419 5434 5459 5473 5483
+ 5422 5431 5451 5466 5481 5491
+ 5419 5430 5450 5457 5483 5488
+ 5426 5438 5452 5470 5485 5494
+ 5435 5443 5476 5487 5506 15381
+ 5412 5428 5445 5471 5497 5505
+ 5427 5436 5455 5469 5489 5496
+ 5385 5403 5440 5449 5501 5540 5561
+ 5429 5442 5456 5472 5490 5500
+ 5431 5444 5458 5475 5491 5504
+ 5421 5437 5454 5478 5499 5510
+ 5424 5439 5453 5484 5495 5512
+ 5436 5448 5463 5479 5496 5508
+ 5438 5451 5460 5481 5494 5507
+ 5428 5443 5462 5487 5505 5513
+ 5442 5450 5465 5488 5500 5502
+ 5434 5449 5457 5483 5501 5519
+ 5425 5433 5480 5482 5538 5541
+ 5444 5455 5466 5489 5504 5511
+ 5435 5453 5461 5495 5506 5524
+ 5389 5441 5447 5480 5536 5548
+ 5437 5467 5510 5527
+ 5448 5456 5469 5490 5508 5515
+ 5433 5441 5474 5477 5541 5548
+ 5451 5458 5470 5491 5507 5514
+ 5425 5445 5474 5497 5523 5538
+ 5457 5459 5473 5488 5519 5526
+ 5439 5454 5468 5499 5512 5530
+ 5452 5460 5494 5517
+ 4893 5290 5355 5679 5831 5863
+ 5443 5461 5471 5506 5513 5534
+ 5450 5459 5472 5483 5502 5526 5531
+ 5455 5463 5475 5496 5511 5522
+ 5456 5465 5479 5500 5515 5525
+ 5458 5466 5481 5504 5514 5529
+ 5334 5400 5432 5553 5585 5607
+ 5398 5402 5516 5521 5621 5629 15380
+ 5460 5470 5485 5507 5517 5532
+ 5453 5468 5476 5512 5524 5545
+ 5463 5469 5489 5508 5522 5535
+ 5445 5462 5482 5505 5523 5537
+ 4894 5221 5282 5647 5763 5889
+ 5454 5467 5484 5510 5530 5546
+ 5465 5472 5490 5502 5525 5533
+ 5449 5464 5473 5519 5561 5577
+ 5472 5488 5500 5531 5533
+ 5336 5416 5446 5566 5634 5682
+ 5466 5475 5491 5511 5529 5539
+ 5462 5471 5497 5513 5537 5544
+ 5461 5476 5487 5524 5534 5554
+ 5470 5481 5494 5514 5532 5542
+ 5469 5479 5496 5515 5535 5543
+ 5384 5420 5447 5536 5582 5608
+ 5467 5478 5499 5527 5546 5556
+ 5475 5489 5504 5522 5539 5547
+ 5468 5484 5495 5530 5545 5560
+ 5471 5487 5505 5534 5544 5562
+ 5481 5491 5507 5529 5542 5551
+ 5479 5490 5508 5525 5543 5552
+ 5402 5440 5493 5540 5620 5621
+ 5485 5494 5532 5555
+ 5365 5423 5520 5521 5636 5641
+ 5473 5483 5501 5526 5577 5592
+ 5365 5416 5518 5566 5641 5672
+ 5398 5423 5493 5518 5629 5636
+ 5489 5496 5511 5535 5547 5557
+ 5482 5497 5537 5538 5574
+ 5476 5495 5506 5545 5554 5572
+ 5490 5500 5515 5533 5552 5558
+ 5483 5488 5519 5531 5570 5592
+ 5478 5510 5556 5571
+ 5180 5221 5763 5905 6206 15374
+ 5491 5504 5514 5539 5551 5563
+ 5484 5499 5512 5546 5560 5575
+ 5488 5502 5526 5533 5564 5570
+ 5494 5507 5517 5542 5555 5565
+ 5500 5502 5525 5531 5558 5564
+ 5487 5506 5513 5554 5562 5581
+ 5496 5508 5522 5543 5557 5567
+ 5447 5477 5509 5548 5608 5635
+ 5497 5505 5523 5544 5569 5574
+ 5474 5482 5523 5541 5574 5595
+ 5504 5511 5529 5547 5563 5573
+ 5440 5464 5516 5561 5620 5623
+ 5474 5480 5538 5548 5595 5650
+ 5507 5514 5532 5551 5565 5576
+ 5508 5515 5535 5552 5567 5579
+ 5505 5513 5537 5562 5569 5587
+ 5495 5512 5524 5560 5572 5590
+ 5499 5510 5530 5556 5575 5591
+ 5511 5522 5539 5557 5573 5584
+ 5477 5480 5536 5541 5635 5650
+ 5213 5255 5559 5583 5790 5820
+ 361 2535 4557 6549 6996 8429
+ 5514 5529 5542 5563 5576 5586
+ 5515 5525 5543 5558 5579 5588
+ 5400 5420 5492 5582 5607 5664 5670
+ 5506 5524 5534 5572 5581 5598
+ 5517 5532 5565 5589
+ 5510 5527 5546 5571 5591 5600
+ 5522 5535 5547 5567 5584 5593
+ 5525 5533 5552 5564 5588 5594
+ 5213 5309 5549 5568 5764 5790
+ 5512 5530 5545 5575 5590 5602
+ 5464 5501 5540 5577 5623 5628
+ 5513 5534 5544 5581 5587 5605
+ 5529 5539 5551 5573 5586 5596
+ 5531 5533 5558 5570 5594 5599
+ 5532 5542 5555 5576 5589 5597
+ 5416 5503 5520 5672 5682
+ 5535 5543 5557 5579 5593 5601
+ 5309 5375 5559 5580 5734 5764
+ 5537 5544 5574 5587 5604
+ 5526 5531 5564 5592 5599 5617
+ 5527 5556 5600 5612
+ 5524 5545 5554 5590 5598 5613
+ 5539 5547 5563 5584 5596 5603
+ 5523 5537 5538 5569 5595 5604 5631
+ 5530 5546 5560 5591 5602 5616
+ 5542 5551 5565 5586 5597 5606
+ 5501 5519 5561 5592 5628 5639
+ 5387 5446 5625 5634 5742 5761
+ 5543 5552 5567 5588 5601 5610
+ 5375 5432 5568 5585 5707 5734
+ 5534 5554 5562 5598 5605 5622
+ 5420 5509 5553 5608 5664 5694
+ 5255 5272 5549 5609 5820 5848
+ 5547 5557 5573 5593 5603 5614
+ 5432 5492 5580 5607 5701 5707
+ 5551 5563 5576 5596 5606 5615
+ 5544 5562 5569 5604 5605 5637
+ 5552 5558 5579 5594 5610 5618
+ 5555 5565 5597 5619
+ 5545 5560 5572 5602 5613 5633
+ 5546 5556 5575 5600 5616 5632
+ 5519 5526 5570 5577 5617 5639 5651
+ 5557 5567 5584 5601 5614 5624
+ 5558 5564 5588 5599 5618 5627
+ 5538 5541 5574 5631 5650 5676
+ 5563 5573 5586 5603 5615 5626
+ 5565 5576 5589 5606 5619 5630
+ 5554 5572 5581 5613 5622 5643
+ 5564 5570 5594 5617 5627 5644
+ 5556 5571 5591 5612 5632 5646
+ 5567 5579 5593 5610 5624 5638
+ 5560 5575 5590 5616 5633 5648
+ 5573 5584 5596 5614 5626 5640
+ 5569 5574 5587 5631 5637 5658
+ 5562 5581 5587 5622 5637 5656
+ 5576 5586 5597 5615 5630 5642
+ 5492 5553 5585 5670 5701
+ 5509 5536 5582 5635 5688 5694
+ 5272 5282 5583 5647 5848 5870
+ 5579 5588 5601 5618 5638 5645
+ 3878 4888 5317 5652 6391 6507
+ 5571 5600 5646 5657
+ 5572 5590 5598 5633 5643 5660
+ 5584 5593 5603 5624 5640 5649
+ 5586 5596 5606 5626 5642 5653
+ 5575 5591 5602 5632 5648 5662
+ 5570 5592 5599 5644 5651 5666
+ 5588 5594 5610 5627 5645 5655
+ 5589 5597 5630 5654
+ 5516 5540 5621 5623 5691 5699
+ 5493 5516 5620 5629 5699 5713
+ 5581 5598 5605 5643 5656 5669
+ 5540 5561 5620 5628 5686 5691
+ 5593 5601 5614 5638 5649 5659
+ 5355 5387 5578 5679 5761 5784
+ 5596 5603 5615 5640 5653 5661
+ 5594 5599 5618 5644 5655 5665
+ 5561 5577 5623 5639 5678 5686
+ 5493 5521 5621 5636 5713 5726
+ 5597 5606 5619 5642 5654 5663
+ 5574 5595 5604 5658 5676 5700
+ 5591 5600 5616 5646 5662 5674
+ 5590 5602 5613 5648 5660 5675
+ 5446 5503 5578 5682 5742 5803
+ 5536 5548 5608 5650 5688 5711
+ 5518 5521 5629 5641 5726 5745
+ 5587 5604 5605 5656 5658 5684
+ 5601 5610 5624 5645 5659 5668
+ 5577 5592 5628 5651 5678 5681
+ 5603 5614 5626 5649 5661 5671
+ 5518 5520 5636 5672 5745 5825
+ 5606 5615 5630 5653 5663 5673
+ 5598 5613 5622 5660 5669 5689
+ 5599 5617 5627 5665 5666 5685
+ 5610 5618 5638 5655 5668 5677
+ 5600 5612 5632 5657 5674 5690
+ 5282 5498 5609 5870 5889
+ 5602 5616 5633 5662 5675 5693
+ 5614 5624 5640 5659 5671 5680
+ 5541 5548 5595 5635 5676 5711 5728
+ 5592 5617 5639 5666 5681 5696
+ 4830 4888 5372 5611 5974 6391 6710
+ 5615 5626 5642 5661 5673 5683
+ 5619 5630 5663 5687
+ 5618 5627 5645 5665 5677 5692
+ 5605 5622 5637 5669 5684 5703
+ 5612 5646 5690 5702
+ 5604 5631 5637 5684 5700 5717
+ 5624 5638 5649 5668 5680 5695
+ 5613 5633 5643 5675 5689 5708
+ 5626 5640 5653 5671 5683 5697
+ 5616 5632 5648 5674 5693 5710
+ 5630 5642 5654 5673 5687 5698
+ 5553 5582 5670 5694 5736 5759
+ 5627 5644 5655 5685 5692 5705
+ 5617 5644 5651 5685 5696 5709
+ 5050 5180 5372 5905 5974 6160
+ 5638 5645 5659 5677 5695 5704
+ 5622 5643 5656 5689 5703 5718
+ 5553 5607 5664 5701 5759 5785
+ 5640 5649 5661 5680 5697 5706
+ 5520 5566 5641 5682 5825 5841
+ 5642 5653 5663 5683 5698 5712
+ 5632 5646 5662 5690 5710 5722
+ 5633 5648 5660 5693 5708 5723
+ 5595 5631 5650 5700 5728 5743
+ 5645 5655 5668 5692 5704 5715
+ 5628 5639 5681 5686 5729 5746
+ 5355 5486 5625 5784 5851 5863
+ 5649 5659 5671 5695 5706 5716
+ 5639 5651 5678 5696 5714 5729
+ 5503 5566 5634 5672 5803 5841
+ 5653 5661 5673 5697 5712 5719
+ 5637 5656 5658 5703 5717 5733
+ 5644 5665 5666 5705 5709 5720
+ 5623 5628 5678 5691 5746 5757
+ 5654 5663 5698 5721
+ 5608 5635 5694 5711 5775 5792
+ 5643 5660 5669 5708 5718 5735
+ 5646 5657 5674 5702 5722 5732
+ 5620 5623 5686 5699 5757 5767
+ 5655 5665 5677 5705 5715 5724
+ 5648 5662 5675 5710 5723 5740
+ 5582 5608 5664 5688 5736 5775
+ 5659 5668 5680 5704 5716 5727
+ 5651 5666 5681 5709 5714 5725
+ 5661 5671 5683 5706 5719 5730
+ 5663 5673 5687 5712 5721 5731
+ 5620 5621 5691 5713 5767 5780
+ 5631 5658 5676 5717 5743 5753
+ 5585 5607 5670 5707 5785 5810
+ 5657 5690 5732 5748
+ 5656 5669 5684 5718 5733 5750
+ 5668 5677 5695 5715 5727 5738
+ 5665 5685 5692 5720 5724 5737
+ 5671 5680 5697 5716 5730 5741
+ 5580 5585 5701 5734 5810 5888
+ 5660 5675 5689 5723 5735 5754
+ 5666 5685 5696 5720 5725 5739
+ 5662 5674 5693 5722 5740 5756
+ 5635 5650 5688 5728 5792 5804
+ 5673 5683 5698 5719 5731 5744
+ 5621 5629 5699 5726 5780 5809
+ 5681 5696 5725 5729 5749
+ 5677 5692 5704 5724 5738 5751
+ 5680 5695 5706 5727 5741 5752
+ 5658 5684 5700 5733 5753 5774
+ 5669 5689 5703 5735 5750 5769
+ 5683 5697 5712 5730 5744 5755
+ 5685 5705 5709 5737 5739 5747
+ 5687 5698 5731 5758
+ 5674 5690 5710 5732 5756 5770
+ 5675 5693 5708 5740 5754 5773
+ 5692 5705 5715 5737 5751 5762
+ 5696 5709 5714 5739 5749 5760
+ 5629 5636 5713 5745 5809 5816
+ 5695 5704 5716 5738 5752 5765
+ 5650 5676 5711 5743 5804 5808
+ 5678 5681 5714 5746 5749 5791
+ 5697 5706 5719 5741 5755 5766
+ 5698 5712 5721 5744 5758 5768
+ 5690 5702 5722 5748 5770 5779
+ 5684 5703 5717 5750 5774 5781
+ 5568 5580 5707 5764 5888 5934
+ 5689 5708 5718 5754 5769 5782
+ 5664 5694 5759 5775 5834
+ 5705 5720 5724 5747 5762 5772
+ 5704 5715 5727 5751 5765 5776
+ 5709 5720 5725 5747 5760 5771
+ 5693 5710 5723 5756 5773 5786
+ 5706 5716 5730 5752 5766 5777
+ 5578 5634 5761 5803 5871 5903
+ 5676 5700 5728 5753 5807 5808
+ 5712 5719 5731 5755 5768 5778
+ 5636 5641 5726 5816 5825 5891
+ 5678 5686 5729 5757 5791 5813
+ 5720 5737 5739 5771 5772
+ 5702 5732 5779 5793
+ 5714 5725 5729 5760 5791 5796
+ 5703 5718 5733 5769 5781 5798
+ 5715 5724 5738 5762 5776 5783
+ 5716 5727 5741 5765 5777 5787
+ 5700 5717 5743 5774 5794 5807
+ 5708 5723 5735 5773 5782 5805
+ 5719 5730 5744 5766 5778 5788
+ 5710 5722 5740 5770 5786 5802
+ 5686 5691 5746 5767 5813 5837
+ 5721 5731 5768 5789
+ 5664 5670 5736 5785 5834 5883
+ 5725 5739 5749 5771 5796 5797
+ 5578 5625 5742 5784 5871 5892
+ 5724 5737 5751 5772 5783 5795
+ 5221 5498 5528 5889 6206 6248
+ 5559 5568 5734 5790 5934 5995
+ 5727 5738 5752 5776 5787 5800
+ 5730 5741 5755 5777 5788 5801
+ 5691 5699 5757 5780 5837 5860
+ 5731 5744 5758 5778 5789 5806
+ 5718 5735 5750 5782 5798 5817
+ 5722 5732 5756 5779 5802 5815
+ 5739 5747 5760 5772 5797 5799
+ 5737 5747 5762 5771 5795 5799
+ 5723 5740 5754 5786 5805 5819
+ 5717 5733 5753 5781 5794 5818
+ 5688 5694 5736 5792 5834 5878
+ 5738 5751 5765 5783 5800 5811
+ 5741 5752 5766 5787 5801 5812
+ 5744 5755 5768 5788 5806 5814
+ 5732 5748 5770 5793 5815 5827
+ 5699 5713 5767 5809 5860 5897
+ 5733 5750 5774 5798 5818 5830
+ 5735 5754 5769 5805 5817 5832
+ 5751 5762 5776 5795 5811 5821
+ 5625 5679 5761 5851 5892 5913
+ 5670 5701 5759 5810 5883 5933
+ 5740 5756 5773 5802 5819 5833
+ 5752 5765 5777 5800 5812 5822
+ 5755 5766 5778 5801 5814 5823
+ 5758 5768 5806 5824
+ 5549 5559 5764 5820 5995 6058
+ 5729 5746 5749 5796 5813 5850 5858
+ 5688 5711 5775 5804 5878 5916
+ 5748 5779 5827 5842
+ 5753 5774 5807 5818 5840
+ 5762 5772 5783 5799 5821 5826
+ 5749 5760 5791 5797 5839 5850
+ 5760 5771 5796 5799 5829 5839
+ 5750 5769 5781 5817 5830 5849
+ 5771 5772 5795 5797 5826 5829
+ 5765 5776 5787 5811 5822 5835
+ 5766 5777 5788 5812 5823 5836
+ 5756 5770 5786 5815 5833 5845
+ 5634 5682 5742 5841 5903 5969
+ 5711 5728 5792 5808 5896 5916
+ 5754 5773 5782 5819 5832 5847
+ 5768 5778 5789 5814 5824 5838
+ 5743 5753 5794 5808 5840 5864
+ 5728 5743 5804 5807 5864 5896
+ 5713 5726 5780 5816 5895 5897
+ 5701 5707 5785 5888 5933
+ 5776 5783 5800 5821 5835 5843
+ 5777 5787 5801 5822 5836 5844
+ 5746 5757 5791 5837 5858 5882
+ 5778 5788 5806 5823 5838 5846
+ 5770 5779 5802 5827 5845 5856
+ 5726 5745 5809 5891 5895
+ 5769 5782 5798 5832 5849 5862
+ 5774 5781 5794 5830 5840 5859
+ 5773 5786 5805 5833 5847 5861
+ 5549 5583 5790 5848 6058 6141
+ 5783 5795 5811 5826 5843 5852
+ 5787 5800 5812 5835 5844 5853
+ 5788 5801 5814 5836 5846 5854
+ 5789 5806 5838 5855
+ 5641 5672 5745 5841 5891 5976 6020
+ 5795 5799 5821 5829 5852 5857
+ 5779 5793 5815 5842 5856 5869
+ 5174 5290 5831 5952 6127 6203
+ 5797 5799 5826 5839 5857 5867
+ 5781 5798 5818 5849 5859 5877
+ 5290 5486 5828 5863 6127 6131
+ 5782 5805 5817 5847 5862 5875
+ 5786 5802 5819 5845 5861 5873
+ 5736 5759 5775 5878 5883 5954
+ 5800 5811 5822 5843 5853 5865
+ 5801 5812 5823 5844 5854 5866
+ 5757 5767 5813 5860 5882 5915
+ 5806 5814 5824 5846 5855 5868
+ 5796 5797 5829 5850 5867 5879
+ 5794 5807 5818 5859 5864 5893
+ 5672 5682 5803 5825 5969 6020
+ 5793 5827 5869 5880
+ 5811 5821 5835 5852 5865 5872
+ 5812 5822 5836 5853 5866 5874
+ 5802 5815 5833 5856 5873 5887
+ 5814 5823 5838 5854 5868 5876
+ 5805 5819 5832 5861 5875 5890
+ 5583 5609 5820 5870 6141 6180
+ 5798 5817 5830 5862 5877 5898
+ 5791 5796 5839 5858 5879 5899
+ 5679 5784 5863 5913 6055
+ 5821 5826 5843 5857 5872 5881
+ 5822 5835 5844 5865 5874 5884
+ 5823 5836 5846 5866 5876 5885
+ 5824 5838 5868 5886
+ 5815 5827 5845 5869 5887 5904
+ 5826 5829 5852 5867 5881 5894
+ 5791 5813 5850 5882 5899 5918
+ 5818 5830 5840 5877 5893 5912
+ 5767 5780 5837 5897 5915 5949
+ 5819 5833 5847 5873 5890 5906
+ 5817 5832 5849 5875 5898 5907
+ 5486 5679 5831 5851 6055 6131 6201
+ 5807 5808 5840 5893 5896 5945
+ 5835 5843 5853 5872 5884 5900
+ 5836 5844 5854 5874 5885 5901
+ 5829 5839 5857 5879 5894 5909
+ 5838 5846 5855 5876 5886 5902
+ 5827 5842 5856 5880 5904 5914
+ 5609 5647 5848 5889 6180 6225
+ 5742 5761 5892 5903 5991
+ 5843 5852 5865 5881 5900 5908
+ 5833 5845 5861 5887 5906 5919
+ 5844 5853 5866 5884 5901 5910
+ 5832 5847 5862 5890 5907 5923
+ 5846 5854 5868 5885 5902 5911
+ 5830 5849 5859 5898 5912 5926
+ 5775 5792 5834 5916 5954 5992
+ 5839 5850 5867 5899 5909 5925
+ 5842 5869 5914 5924
+ 5852 5857 5872 5894 5908 5917
+ 5813 5837 5858 5915 5918 5940
+ 5759 5785 5834 5933 5954 6034
+ 5853 5865 5874 5900 5910 5920
+ 5854 5866 5876 5901 5911 5921
+ 5855 5868 5902 5922
+ 5845 5856 5873 5904 5919 5931
+ 5707 5734 5810 5933 5934 6064
+ 5498 5647 5763 5870 6225 6248
+ 5847 5861 5875 5906 5923 5932
+ 5745 5816 5825 5895 5976 5984
+ 5761 5784 5871 5913 5991 6022
+ 5840 5859 5864 5912 5945 5953
+ 5857 5867 5881 5909 5917 5930
+ 5809 5816 5891 5897 5972 5984
+ 5804 5808 5864 5916 5945 5982
+ 5780 5809 5860 5895 5949 5972 5996
+ 5849 5862 5877 5907 5926 5936
+ 5850 5858 5879 5918 5925 5941
+ 5865 5872 5884 5908 5920 5927
+ 5866 5874 5885 5910 5921 5928
+ 5868 5876 5886 5911 5922 5929
+ 5742 5803 5871 5969 5991 6068
+ 5856 5869 5887 5914 5931 5939
+ 5180 5528 5667 6160 6206 6522
+ 5861 5873 5890 5919 5932 5943
+ 5862 5875 5898 5923 5936 5944
+ 5872 5881 5900 5917 5927 5937
+ 5867 5879 5894 5925 5930 5942
+ 5874 5884 5901 5920 5928 5935
+ 5876 5885 5902 5921 5929 5938
+ 5859 5877 5893 5926 5953 5960
+ 5784 5851 5892 6022 6055
+ 5869 5880 5904 5924 5939 5951
+ 5837 5860 5882 5940 5949 5973
+ 5792 5804 5878 5896 5982 5992 6029
+ 5881 5894 5908 5930 5937 5950
+ 5858 5882 5899 5940 5941 5965
+ 5873 5887 5906 5931 5943 5955
+ 5884 5900 5910 5927 5935 5948
+ 5885 5901 5911 5928 5938 5946
+ 5886 5902 5929 5947
+ 5875 5890 5907 5932 5944 5959
+ 5880 5914 5951 5961
+ 5879 5899 5909 5941 5942 5962
+ 5877 5898 5912 5936 5960 5970
+ 5900 5908 5920 5937 5948 5958
+ 5901 5910 5921 5935 5946 5957
+ 5902 5911 5922 5938 5947 5956
+ 5894 5909 5917 5942 5950 5963
+ 5887 5904 5919 5939 5955 5967
+ 5890 5906 5923 5943 5959 5971
+ 5785 5810 5883 5888 6034 6064 6135
+ 5734 5764 5888 5995 6064 6199
+ 5910 5920 5928 5948 5957 5964
+ 5898 5907 5926 5944 5970 5975
+ 5908 5917 5927 5950 5958 5968
+ 5911 5921 5929 5946 5956 5966
+ 5904 5914 5931 5951 5967 5981
+ 5882 5915 5918 5965 5973 6003
+ 5899 5918 5925 5962 5965 5990
+ 5909 5925 5930 5962 5963 5980
+ 5906 5919 5932 5955 5971 5985
+ 5907 5923 5936 5959 5975 5986
+ 5864 5893 5896 5953 5982 6012 6027
+ 5921 5928 5938 5957 5966 5978
+ 5922 5929 5956 5977
+ 5920 5927 5935 5958 5964 5979
+ 5860 5897 5915 5973 5996 6017
+ 5917 5930 5937 5963 5968 5983
+ 5914 5924 5939 5961 5981 5993
+ 5174 5181 5828 6203 6276 6418
+ 5893 5912 5945 5960 6005 6012
+ 5834 5878 5883 5992 6034 6090
+ 5919 5931 5943 5967 5985 5998
+ 5929 5938 5947 5966 5977 5987
+ 5928 5935 5946 5964 5978 5988
+ 5927 5937 5948 5968 5979 5989
+ 5923 5932 5944 5971 5986 5999
+ 5912 5926 5953 5970 6005 6006
+ 5924 5951 5993 6002
+ 5925 5941 5942 5980 5990 6004
+ 5930 5942 5950 5980 5983 5994
+ 5935 5948 5957 5979 5988 5997
+ 5918 5940 5941 5990 6003 6025
+ 5938 5946 5956 5978 5987 6000
+ 5931 5939 5955 5981 5998 6011
+ 5937 5950 5958 5983 5989 6001
+ 5803 5841 5903 6020 6068 6175
+ 5926 5936 5960 5975 6006 6009
+ 5932 5943 5959 5985 5999 6014
+ 5895 5897 5984 5996 6036 6098
+ 5915 5940 5949 6003 6017 6049
+ 5372 5652 5667 6160 6710 6724
+ 5936 5944 5970 5986 6009 6015
+ 5825 5891 5984 6020 6122 6138
+ 5947 5956 5987 6007
+ 5946 5957 5966 5988 6000 6008
+ 5948 5958 5964 5989 5997 6010
+ 5942 5962 5963 5994 6004 6016
+ 5939 5951 5967 5993 6011 6024
+ 5896 5916 5945 6027 6029 6062
+ 5950 5963 5968 5994 6001 6013
+ 5891 5895 5972 5976 6098 6122
+ 5943 5955 5971 5998 6014 6028
+ 5944 5959 5975 5999 6015 6026
+ 5956 5966 5977 6000 6007 6019
+ 5957 5964 5978 5997 6008 6021
+ 5958 5968 5979 6001 6010 6023
+ 5941 5962 5965 6004 6025 6035
+ 5871 5892 5903 6022 6068 6153
+ 5878 5916 5954 6029 6090 6107
+ 5951 5961 5981 6002 6024 6033
+ 5963 5980 5983 6013 6016 6018
+ 5764 5790 5934 6058 6199 6302
+ 5897 5949 5972 6017 6036 6070
+ 5964 5979 5988 6010 6021 6030
+ 5955 5967 5985 6011 6028 6040
+ 5959 5971 5986 6014 6026 6041
+ 5966 5978 5987 6008 6019 6031
+ 5968 5983 5989 6013 6023 6032
+ 5961 5993 6033 6048
+ 5940 5965 5973 6025 6049 6081
+ 5962 5980 5990 6016 6035 6039
+ 5953 5960 6006 6012 6046 6050
+ 5960 5970 6005 6009 6044 6046
+ 5977 5987 6019 6037
+ 5978 5988 6000 6021 6031 6038
+ 5970 5975 6006 6015 6044 6045
+ 5979 5989 5997 6023 6030 6043
+ 5967 5981 5998 6024 6040 6053
+ 5945 5953 6005 6027 6050 6059
+ 5983 5994 6001 6018 6032 6042
+ 5971 5985 5999 6028 6041 6057
+ 5975 5986 6009 6026 6045 6056
+ 5980 5994 6004 6018 6039 6047
+ 5949 5973 5996 6049 6070 6092
+ 5994 6013 6016 6042 6047
+ 5987 6000 6007 6031 6037 6051
+ 5825 5841 5969 5976 6138 6175 6234
+ 5988 5997 6008 6030 6038 6052
+ 5892 5913 5991 6055 6153 6237
+ 5989 6001 6010 6032 6043 6054
+ 5981 5993 6011 6033 6053 6065
+ 5965 5990 6003 6035 6079 6081
+ 5986 5999 6015 6041 6056 6067
+ 5945 5982 6012 6059 6062 6085
+ 5985 5998 6014 6040 6057 6069
+ 5916 5982 5992 6062 6107 6119
+ 5997 6010 6021 6043 6052 6060
+ 6000 6008 6019 6038 6051 6061
+ 6001 6013 6023 6042 6054 6063
+ 5993 6002 6024 6048 6065 6077
+ 5883 5933 5954 6090 6135 6190
+ 5990 6004 6025 6039 6079 6087
+ 5972 5996 6070 6094 6098
+ 6007 6019 6051 6072
+ 6008 6021 6031 6052 6061 6073
+ 6004 6016 6035 6047 6076 6087
+ 5998 6011 6028 6053 6069 6088
+ 5999 6014 6026 6057 6067 6089
+ 6013 6018 6032 6047 6063 6071
+ 6010 6023 6030 6054 6060 6075
+ 6006 6009 6045 6046 6074 6078
+ 6009 6015 6044 6056 6074 6083
+ 6005 6006 6044 6050 6078 6080
+ 6016 6018 6039 6042 6071 6076
+ 6002 6033 6077 6093
+ 5973 6003 6017 6081 6092 6120
+ 6005 6012 6046 6059 6080 6082
+ 6019 6031 6037 6061 6072 6084
+ 6021 6030 6038 6060 6073 6086
+ 6011 6024 6040 6065 6088 6099
+ 6023 6032 6043 6063 6075 6091
+ 5851 5863 5913 6022 6201 6237
+ 6015 6026 6045 6067 6083 6100
+ 6014 6028 6041 6069 6089 6101
+ 5790 5820 5995 6141 6302 6447
+ 6012 6027 6050 6082 6085 6109
+ 6030 6043 6052 6075 6086 6095
+ 6031 6038 6051 6073 6084 6097
+ 5982 6027 6029 6085 6119 6123
+ 6032 6042 6054 6071 6091 6096
+ 5888 5933 5934 6135 6199 6318
+ 6024 6033 6053 6077 6099 6111
+ 4973 5181 6102 6276 6767 6884
+ 6026 6041 6056 6089 6100 6113
+ 5903 5969 5991 6153 6175 6269
+ 6028 6040 6057 6088 6101 6115
+ 5996 6017 6036 6092 6094 6132
+ 6042 6047 6063 6076 6096 6103
+ 6037 6051 6084 6104
+ 6038 6052 6061 6086 6097 6105
+ 6044 6045 6078 6083 6106
+ 6043 6054 6060 6091 6095 6108
+ 6039 6047 6071 6087 6103 6114
+ 6033 6048 6065 6093 6111 6121
+ 6044 6046 6074 6080 6106 6110
+ 6025 6035 6081 6087 6143 6148
+ 6046 6050 6078 6082 6110 6112
+ 6003 6025 6049 6079 6120 6148 6163
+ 6050 6059 6080 6109 6112
+ 6045 6056 6074 6100 6106 6124
+ 6051 6061 6072 6097 6104 6116
+ 6027 6059 6062 6109 6123 6144
+ 6052 6060 6073 6095 6105 6117
+ 6035 6039 6076 6079 6114 6143
+ 6040 6053 6069 6099 6115 6129
+ 6041 6057 6067 6101 6113 6130
+ 5954 5992 6034 6107 6190 6211
+ 6054 6063 6075 6096 6108 6118
+ 6017 6049 6070 6120 6132 6155
+ 6048 6077 6121 6133
+ 6036 6070 6098 6132 6154
+ 6060 6075 6086 6108 6117 6125
+ 6063 6071 6091 6103 6118 6128
+ 6061 6073 6084 6105 6116 6126
+ 5972 5984 6036 6094 6122 6154 6220
+ 6053 6065 6088 6111 6129 6140
+ 6056 6067 6083 6113 6124 6145
+ 6057 6069 6089 6115 6130 6146
+ 4780 4973 6066 6345 6884 7178
+ 6071 6076 6096 6114 6128 6139
+ 6072 6084 6116 6134
+ 6073 6086 6097 6117 6126 6136
+ 6074 6078 6083 6110 6124 6147
+ 5992 6029 6090 6119 6207 6211
+ 6075 6091 6095 6118 6125 6137
+ 6059 6082 6085 6112 6144 6172
+ 6078 6080 6106 6112 6147 6165
+ 6065 6077 6099 6121 6140 6152
+ 6080 6082 6109 6110 6165 6172
+ 6067 6089 6100 6130 6145 6161
+ 6076 6087 6103 6139 6143 6157
+ 6069 6088 6101 6129 6146 6156
+ 6084 6097 6104 6126 6134 6149
+ 6086 6095 6105 6125 6136 6150
+ 6091 6096 6108 6128 6137 6151
+ 6029 6062 6107 6123 6186 6207
+ 6049 6081 6092 6155 6163 6191
+ 6077 6093 6111 6133 6152 6164
+ 5976 5984 6098 6138 6220 6246
+ 6062 6085 6119 6144 6186
+ 6083 6100 6106 6145 6147 6170
+ 6095 6108 6117 6137 6150 6159
+ 6097 6105 6116 6136 6149 6158
+ 5828 5831 6131 6203 6335 6360
+ 6096 6103 6118 6139 6151 6162
+ 6088 6099 6115 6140 6156 6169
+ 6089 6101 6113 6146 6161 6173
+ 5831 5863 6127 6201 6335 6350
+ 6070 6092 6094 6154 6155 6193
+ 6093 6121 6164 6171
+ 6104 6116 6149 6166
+ 5933 6034 6064 6190 6318 6324
+ 6105 6117 6126 6150 6158 6167
+ 6108 6118 6125 6151 6159 6168
+ 5976 6020 6122 6234 6246 6289
+ 6103 6114 6128 6157 6162 6174
+ 6099 6111 6129 6152 6169 6178
+ 5820 5848 6058 6180 6447 6490
+ 173 252 1438 12330 14856 15094
+ 6079 6087 6114 6148 6157 6181 6182
+ 6085 6109 6123 6172 6186 6244
+ 6100 6113 6124 6161 6170 6188
+ 6101 6115 6130 6156 6173 6183
+ 6106 6110 6124 6165 6170 6195
+ 6079 6081 6143 6163 6181 6196
+ 6116 6126 6134 6158 6166 6176
+ 6117 6125 6136 6159 6167 6177
+ 6118 6128 6137 6162 6168 6179
+ 6111 6121 6140 6164 6178 6187
+ 5991 6022 6068 6237 6269 6346
+ 6094 6098 6132 6193 6220 6255
+ 6092 6120 6132 6191 6193 6241
+ 6115 6129 6146 6169 6183 6198
+ 6114 6139 6143 6174 6182 6192
+ 6126 6136 6149 6167 6176 6184
+ 6125 6137 6150 6168 6177 6185
+ 5667 5905 5974 6522 6724
+ 6113 6130 6145 6173 6188 6204
+ 6128 6139 6151 6174 6179 6189
+ 6081 6120 6148 6191 6196 6219
+ 6121 6133 6152 6171 6187 6202
+ 6110 6112 6147 6172 6195 6238
+ 6134 6149 6176 6194
+ 6136 6150 6158 6177 6184 6197
+ 6137 6151 6159 6179 6185 6200
+ 6129 6140 6156 6178 6198 6212
+ 6124 6145 6147 6188 6195 6224
+ 6133 6164 6202 6213
+ 6109 6112 6144 6165 6238 6244
+ 6130 6146 6161 6183 6204 6216
+ 6139 6157 6162 6189 6192 6208
+ 5969 6020 6068 6234 6269 6353 6400
+ 6149 6158 6166 6184 6194 6205
+ 6150 6159 6167 6185 6197 6210
+ 6140 6152 6169 6187 6212 6221
+ 6151 6162 6168 6189 6200 6214
+ 5848 5870 6141 6225 6490 6630
+ 6143 6148 6182 6196 6215 6223
+ 6143 6157 6181 6192 6209 6215
+ 6146 6156 6173 6198 6216 6230
+ 6158 6167 6176 6197 6205 6217
+ 6159 6168 6177 6200 6210 6218
+ 6119 6123 6144 6207 6244 6287
+ 6152 6164 6178 6202 6221 6233
+ 6145 6161 6170 6204 6224 6240
+ 6162 6174 6179 6208 6214 6226
+ 6034 6090 6135 6211 6324 6328
+ 6120 6155 6163 6219 6241 6267
+ 6157 6174 6182 6208 6209 6222
+ 6132 6154 6155 6241 6255 6281
+ 6166 6176 6205 6227
+ 6147 6165 6170 6224 6238 6260
+ 6148 6163 6181 6219 6223 6232
+ 6167 6177 6184 6210 6217 6228
+ 6156 6169 6183 6212 6230 6242
+ 5934 5995 6064 6302 6318 6435
+ 6168 6179 6185 6214 6218 6231
+ 5863 6055 6131 6237 6350 6390
+ 6164 6171 6187 6213 6233 6245
+ 5828 5952 6127 6360 6418 6455
+ 6161 6173 6188 6216 6240 6252
+ 6176 6184 6194 6217 6227 6235
+ 5528 5763 5905 6248 6522 7007 7248
+ 6107 6119 6186 6211 6287 6316
+ 6174 6189 6192 6222 6226 6236
+ 6182 6192 6215 6222 6229
+ 6177 6185 6197 6218 6228 6239
+ 6090 6107 6190 6207 6316 6328
+ 6169 6178 6198 6221 6242 6253
+ 6171 6202 6245 6254
+ 6179 6189 6200 6226 6231 6247
+ 6181 6182 6209 6223 6229 6249
+ 6173 6183 6204 6230 6252 6262
+ 6184 6197 6205 6228 6235 6250
+ 6185 6200 6210 6231 6239 6251
+ 6163 6191 6196 6232 6266 6267
+ 6098 6122 6154 6246 6255 6311 6322
+ 6178 6187 6212 6233 6253 6265
+ 6192 6208 6209 6229 6236 6243
+ 6181 6196 6215 6232 6249 6256
+ 6170 6188 6195 6240 6260 6275
+ 5870 5889 6180 6248 6630 6811
+ 6189 6208 6214 6236 6247 6257
+ 6194 6205 6235 6258
+ 6197 6210 6217 6239 6250 6259
+ 6209 6215 6222 6243 6249 6261
+ 6183 6198 6216 6242 6262 6271
+ 6200 6214 6218 6247 6251 6263
+ 6196 6219 6223 6256 6266
+ 6187 6202 6221 6245 6265 6272
+ 6020 6138 6175 6289 6353 6382
+ 6205 6217 6227 6250 6258 6268
+ 6208 6222 6226 6243 6257 6264
+ 6022 6055 6153 6201 6346 6390 6471
+ 6165 6172 6195 6244 6260 6317 6319
+ 6210 6218 6228 6251 6259 6270
+ 6188 6204 6224 6252 6275 6285
+ 6155 6191 6193 6267 6281 6300
+ 6198 6212 6230 6253 6271 6278
+ 6222 6229 6236 6261 6264
+ 6144 6172 6186 6238 6287 6319
+ 6202 6213 6233 6254 6272 6279
+ 6122 6138 6220 6289 6311 6340
+ 6214 6226 6231 6257 6263 6273
+ 5763 5889 6206 6225 6811 7007
+ 6215 6223 6229 6256 6261 6283 6294
+ 6217 6228 6235 6259 6268 6274
+ 6218 6231 6239 6263 6270 6277
+ 6204 6216 6240 6262 6285 6291
+ 6212 6221 6242 6265 6278 6292
+ 6213 6245 6279 6290
+ 6154 6193 6220 6281 6322 6341
+ 6223 6232 6249 6266 6293 6294
+ 6226 6236 6247 6264 6273 6280
+ 6227 6235 6268 6282
+ 6228 6239 6250 6270 6274 6286
+ 6195 6224 6238 6275 6315 6317
+ 6229 6243 6249 6264 6283 6284
+ 6216 6230 6252 6271 6291 6297
+ 6231 6247 6251 6273 6277 6288
+ 6236 6243 6257 6261 6280 6284
+ 6221 6233 6253 6272 6292 6298
+ 6219 6232 6256 6267 6293 6305
+ 6191 6219 6241 6266 6300 6305 6321
+ 6235 6250 6258 6274 6282 6295
+ 6068 6153 6175 6346 6400 6454
+ 6239 6251 6259 6277 6286 6296
+ 6230 6242 6262 6278 6297 6306
+ 6233 6245 6265 6279 6298 6307
+ 6247 6257 6263 6280 6288 6299
+ 6250 6259 6268 6286 6295 6301
+ 6224 6240 6260 6285 6315 6323
+ 5181 5952 6066 6418 6767 6815
+ 6251 6263 6270 6288 6296 6303
+ 6242 6253 6271 6292 6306 6313
+ 6245 6254 6272 6290 6307 6314
+ 6257 6264 6273 6284 6299 6304
+ 6193 6241 6255 6300 6341 6354
+ 6258 6268 6295 6308
+ 6249 6261 6284 6294 6309 6326
+ 6261 6264 6280 6283 6304 6309
+ 6240 6252 6275 6291 6323 6325
+ 6259 6270 6274 6296 6301 6310
+ 6186 6207 6244 6316 6319 6431 6453
+ 6263 6273 6277 6299 6303 6312
+ 6138 6234 6246 6340 6382 6411
+ 6254 6279 6314 6332
+ 6252 6262 6285 6297 6325 6331
+ 6253 6265 6278 6298 6313 6333
+ 6256 6266 6294 6305 6330
+ 6249 6256 6283 6293 6326 6330 6359
+ 6268 6274 6282 6301 6308 6320
+ 6270 6277 6286 6303 6310 6327
+ 6262 6271 6291 6306 6331 6338
+ 6265 6272 6292 6307 6333 6339
+ 6273 6280 6288 6304 6312 6329
+ 6241 6267 6281 6321 6354 6366
+ 6274 6286 6295 6310 6320 6334
+ 5995 6058 6199 6435 6447 6581
+ 6277 6288 6296 6312 6327 6336
+ 6280 6284 6299 6309 6329 6337
+ 6266 6267 6293 6321 6330 6344
+ 6271 6278 6297 6313 6338 6348
+ 6272 6279 6298 6314 6339 6349
+ 6282 6295 6320 6342
+ 6283 6284 6304 6326 6337 6351
+ 6286 6296 6301 6327 6334 6343
+ 6220 6246 6322 6340 6373 6377
+ 6288 6299 6303 6329 6336 6347
+ 6278 6292 6306 6333 6348 6357
+ 6279 6290 6307 6332 6349 6356
+ 6260 6275 6317 6323 6371 6381
+ 6207 6211 6287 6328 6453 6464
+ 6238 6260 6315 6319 6381 6402
+ 6064 6135 6199 6324 6435 6517 6558
+ 6238 6244 6287 6317 6402 6431
+ 6295 6301 6308 6334 6342 6352
+ 6267 6300 6305 6344 6366 6379
+ 6220 6255 6311 6341 6373 6389
+ 6275 6285 6315 6325 6363 6371
+ 6135 6190 6318 6328 6484 6517
+ 6285 6291 6323 6331 6361 6363
+ 6283 6294 6309 6351 6359 6374
+ 6296 6303 6310 6336 6343 6355
+ 6190 6211 6316 6324 6464 6484
+ 6299 6304 6312 6337 6347 6358
+ 6293 6294 6305 6344 6359 6369
+ 6291 6297 6325 6338 6361 6365
+ 6290 6314 6356 6367
+ 6292 6298 6313 6339 6357 6368
+ 6301 6310 6320 6343 6352 6362
+ 6127 6131 6350 6360 6552 6569
+ 6303 6312 6327 6347 6355 6364
+ 6304 6309 6329 6351 6358 6370
+ 6297 6306 6331 6348 6365 6375
+ 6298 6307 6333 6349 6368 6378
+ 6246 6289 6311 6377 6411 6436
+ 6255 6281 6322 6354 6389 6409
+ 6308 6320 6352 15382
+ 6310 6327 6334 6355 6362 6372
+ 6305 6321 6330 6369 6379
+ 4557 4780 6102 6996 7178 8355
+ 6153 6237 6269 6454 6471 6540
+ 6312 6329 6336 6358 6364 6376
+ 6306 6313 6338 6357 6375 6384
+ 6307 6314 6339 6356 6378 6385
+ 6131 6201 6335 6390 6569 6604
+ 6309 6326 6337 6370 6374 6386
+ 6320 6334 6342 6362 6380 15382
+ 6175 6234 6382 6400 6476 6530
+ 6281 6300 6341 6366 6409 6422
+ 6327 6336 6343 6364 6372 6383
+ 6314 6332 6349 6367 6385 6394
+ 6313 6333 6348 6368 6384 6395
+ 6329 6337 6347 6370 6376 6387
+ 6294 6326 6330 6369 6374 6404 6412
+ 6127 6203 6335 6455 6552 6573
+ 6325 6331 6363 6365 6393 6396
+ 6334 6343 6352 6372 6380 6388
+ 6323 6325 6361 6371 6393 6403
+ 6336 6347 6355 6376 6383 6392
+ 6331 6338 6361 6375 6396 6399
+ 6300 6321 6354 6379 6422 6432
+ 6332 6356 6394 6405
+ 6333 6339 6357 6378 6395 6406
+ 6330 6344 6359 6379 6412 6428
+ 6337 6351 6358 6386 6387 6401
+ 6315 6323 6363 6381 6403 6413
+ 6343 6355 6362 6383 6388 6398
+ 6311 6322 6377 6389 6419 6426
+ 6326 6351 6359 6386 6404 6414
+ 6338 6348 6365 6384 6399 6416
+ 6347 6358 6364 6387 6392 6407
+ 6311 6340 6373 6426 6436
+ 6339 6349 6368 6385 6406 6417
+ 6321 6344 6366 6369 6428 6432
+ 6352 6362 6388 6397 6410 15382
+ 6315 6317 6371 6402 6413 6445
+ 6234 6289 6353 6411 6476 6512
+ 6355 6364 6372 6392 6398 6415
+ 6348 6357 6375 6395 6416 6424
+ 6349 6356 6378 6394 6417 6427
+ 6351 6370 6374 6401 6414 6423
+ 6358 6370 6376 6401 6407 6421
+ 6362 6372 6380 6398 6410 6420
+ 6322 6341 6373 6409 6419 6462
+ 6201 6237 6350 6471 6604 6643
+ 5611 5652 6507 6710 7436 7933
+ 6364 6376 6383 6407 6415 6425
+ 6361 6363 6396 6403 6429 6433
+ 6356 6367 6385 6405 6427 6440
+ 6357 6368 6384 6406 6424 6441
+ 6361 6365 6393 6399 6429 6438
+ 6380 6410 6430 15382
+ 6372 6383 6388 6415 6420 6434
+ 6365 6375 6396 6416 6438 6448
+ 6175 6269 6353 6454 6530 6563
+ 6370 6386 6387 6421 6423 6442
+ 6317 6319 6381 6431 6445 6496 6514
+ 6363 6371 6393 6413 6433 6437
+ 6359 6374 6412 6414 6439 6452
+ 6367 6394 6440 6450
+ 6368 6378 6395 6417 6441 6451
+ 6376 6387 6392 6421 6425 6443
+ 239 4560 5091 7295 14718 14884
+ 6341 6354 6389 6422 6462 6488
+ 6380 6388 6397 6420 6430 6444
+ 6289 6340 6382 6436 6512 6526
+ 6359 6369 6404 6428 6452 6473
+ 6371 6381 6403 6437 6445 6468
+ 6374 6386 6404 6423 6439 6446
+ 6383 6392 6398 6425 6434 6449
+ 6375 6384 6399 6424 6448 6460
+ 6378 6385 6406 6427 6451 6463
+ 5952 6203 6276 6455 6685 6815 6912
+ 6373 6389 6426 6462 6499
+ 6388 6398 6410 6434 6444 6456
+ 6387 6401 6407 6442 6443 6458
+ 6354 6366 6409 6432 6488 6519
+ 6386 6401 6414 6442 6446 6457
+ 6384 6395 6416 6441 6460 6472
+ 6392 6407 6415 6443 6449 6461
+ 6373 6377 6419 6436 6499 6531
+ 6385 6394 6417 6440 6463 6474
+ 6369 6379 6412 6432 6473 6504
+ 6393 6396 6433 6438 6459 6469
+ 6397 6410 6444 6465
+ 6287 6319 6402 6453 6514 6532
+ 6366 6379 6422 6428 6504 6519
+ 6393 6403 6429 6437 6459 6466
+ 6398 6415 6420 6449 6456 6470
+ 6199 6302 6318 6558 6581 6649
+ 6340 6377 6411 6426 6526 6531
+ 6403 6413 6433 6466 6468
+ 6396 6399 6429 6448 6469 6481
+ 6404 6414 6446 6452 6467
+ 6394 6405 6427 6450 6474 6483
+ 6395 6406 6424 6451 6472 6485
+ 6401 6421 6423 6457 6458 6475
+ 6407 6421 6425 6458 6461 6478
+ 6410 6420 6430 6456 6465 6479
+ 6381 6402 6413 6468 6496 6508
+ 6414 6423 6439 6457 6467 6477
+ 6058 6141 6302 6490 6581 6721 6765
+ 6399 6416 6438 6460 6481 6493
+ 6415 6425 6434 6461 6470 6482
+ 6405 6440 6483 6495
+ 6406 6417 6441 6463 6485 6497
+ 6404 6412 6439 6467 6473 6487
+ 6287 6316 6431 6464 6532 6560 6571
+ 6269 6346 6400 6540 6563 6619
+ 6203 6360 6418 6573 6685
+ 6420 6434 6444 6470 6479 6486
+ 6423 6442 6446 6475 6477 6480
+ 6421 6442 6443 6475 6478 6489
+ 6429 6433 6466 6469 6491
+ 6416 6424 6448 6472 6493 6505
+ 6425 6443 6449 6478 6482 6492
+ 6389 6409 6419 6488 6499 6543
+ 6417 6427 6451 6474 6497 6506
+ 6316 6328 6453 6484 6571 6608
+ 6430 6444 6479 6498
+ 6433 6437 6459 6468 6491 6510
+ 6439 6446 6452 6477 6487 6500
+ 6413 6437 6445 6466 6508 6510
+ 6429 6438 6459 6481 6491 6513
+ 6434 6449 6456 6482 6486 6502
+ 6237 6346 6390 6540 6643 6686
+ 6424 6441 6460 6485 6505 6518
+ 6412 6428 6452 6487 6504 6523
+ 6427 6440 6463 6483 6506 6516
+ 6442 6457 6458 6480 6489 6501
+ 6353 6382 6512 6530 6590
+ 6446 6457 6467 6480 6500 6503
+ 6443 6458 6461 6489 6492 6509
+ 6444 6456 6465 6486 6498 6511
+ 6457 6475 6477 6501 6503
+ 6438 6448 6469 6493 6513 15383
+ 6449 6461 6470 6492 6502 6515
+ 6440 6450 6474 6495 6516 6525
+ 6324 6328 6464 6517 6608 6647
+ 6441 6451 6472 6497 6518 6527
+ 6456 6470 6479 6502 6511 6521
+ 6452 6467 6473 6500 6523 6541
+ 6409 6422 6462 6519 6543 6570
+ 6458 6475 6478 6501 6509 6520
+ 6141 6180 6447 6630 6721 6882
+ 6459 6466 6469 6510 6513 6536
+ 6461 6478 6482 6509 6515 6524
+ 6448 6460 6481 6505 6539 15383
+ 4995 5317 6507 6562 8232 11299
+ 6450 6483 6525 6535
+ 6402 6445 6508 6514 6578 6580
+ 6451 6463 6485 6506 6527 6538
+ 6465 6479 6511 6528
+ 6419 6426 6462 6531 6543 6613
+ 6467 6477 6487 6503 6533 6541
+ 6475 6480 6489 6503 6520 6529
+ 6470 6482 6486 6515 6521 6534
+ 6477 6480 6500 6501 6529 6533
+ 6428 6432 6473 6519 6523 6555 6575
+ 6460 6472 6493 6518 6539 6546
+ 6463 6474 6497 6516 6538 6545
+ 5317 5611 6391 6494 7436 8232
+ 6445 6468 6496 6510 6576 6580
+ 6478 6489 6492 6520 6524 6537
+ 6466 6468 6491 6508 6536 6576
+ 6479 6486 6498 6521 6528 6542
+ 6382 6411 6476 6526 6590 6622
+ 6469 6481 6491 6536 6557 15383
+ 6402 6431 6496 6532 6572 6578
+ 6482 6492 6502 6524 6534 6544
+ 6474 6483 6506 6525 6545 6551
+ 6318 6324 6484 6558 6647 6699
+ 6472 6485 6505 6527 6546 6556
+ 6422 6432 6488 6504 6570 6575 6602
+ 6489 6501 6509 6529 6537 6547
+ 6486 6502 6511 6534 6542 6548
+ 5905 6160 6206 6724 7248 7709
+ 6473 6487 6504 6541 6555 6568
+ 6492 6509 6515 6537 6544 6550
+ 6483 6495 6516 6535 6551 6561
+ 6411 6436 6512 6531 6622 6632
+ 6485 6497 6518 6538 6556 6565
+ 6498 6511 6542 6553
+ 6501 6503 6520 6533 6547 6554
+ 6353 6400 6476 6563 6590 6660
+ 6426 6436 6499 6526 6613 6632
+ 6431 6453 6514 6560 6572 6589
+ 6500 6503 6529 6541 6554 6566
+ 6502 6515 6521 6544 6548 6559
+ 6495 6525 6561 6579
+ 6491 6510 6513 6557 6576 6594
+ 6509 6520 6524 6547 6550 6564
+ 6497 6506 6527 6545 6565 6582
+ 6493 6505 6546 6574 6585 15383
+ 6346 6454 6471 6619 6686 6692
+ 6487 6500 6523 6533 6566 6568 6595
+ 6511 6521 6528 6548 6553 6567
+ 6462 6488 6499 6570 6613 6635
+ 6515 6524 6534 6550 6559 6577
+ 6506 6516 6538 6551 6582 6587
+ 6505 6518 6539 6556 6585 6591
+ 6520 6529 6537 6554 6564 6583
+ 6521 6534 6542 6559 6567 6584
+ 2535 5293 5550 8429 11051 14806
+ 6524 6537 6544 6564 6577 6586
+ 6516 6525 6545 6561 6587 6596
+ 6335 6360 6569 6573 6708 6730
+ 6528 6542 6567 6588
+ 6529 6533 6547 6566 6583 6593
+ 6504 6523 6568 6575 6603
+ 6518 6527 6546 6565 6591 6598
+ 6513 6536 6574 6594 6606 15383
+ 6318 6435 6517 6649 6699 6770
+ 6534 6544 6548 6577 6584 6592
+ 6453 6532 6571 6589 6644 6667
+ 6525 6535 6551 6579 6596 6600
+ 4672 4995 6494 6740 11299 13260
+ 6400 6454 6530 6619 6660 6738
+ 6537 6547 6550 6583 6586 6599
+ 6527 6538 6556 6582 6598 6605
+ 6533 6541 6554 6593 6595 6610
+ 6542 6548 6553 6584 6588 6597
+ 6523 6541 6555 6595 6603 6631
+ 6335 6350 6552 6604 6730 6776
+ 6488 6519 6543 6602 6635 6655
+ 6453 6464 6560 6608 6644 6676
+ 6514 6532 6578 6589 6620 6651
+ 6360 6455 6552 6685 6708 6852
+ 6539 6557 6585 6606 6614 15383
+ 6504 6519 6555 6602 6603 6627
+ 6508 6510 6536 6580 6594 6636 6641
+ 6544 6550 6559 6586 6592 6601
+ 6496 6514 6572 6580 6620 6638
+ 6535 6561 6600 6611
+ 6496 6508 6576 6578 6636 6638
+ 6302 6435 6447 6649 6750 6765
+ 6538 6545 6565 6587 6605 6616
+ 6547 6554 6564 6593 6599 6609
+ 6548 6559 6567 6592 6597 6607
+ 6539 6546 6574 6591 6614 6618
+ 6550 6564 6577 6599 6601 6615
+ 6545 6551 6582 6596 6616 6621
+ 6553 6567 6597 6612
+ 6532 6560 6572 6651 6667
+ 6476 6512 6530 6622 6660 6743
+ 6546 6556 6585 6598 6618 6625
+ 6559 6577 6584 6601 6607 6617
+ 6554 6566 6583 6609 6610 6624
+ 6536 6557 6576 6606 6641 6648
+ 6541 6566 6568 6610 6631 6637
+ 6551 6561 6587 6600 6621 6628
+ 6567 6584 6588 6607 6612 6623
+ 6556 6565 6591 6605 6625 6633
+ 6564 6583 6586 6609 6615 6626
+ 6561 6579 6596 6611 6628 6639
+ 6577 6586 6592 6615 6617 6629
+ 6519 6570 6575 6627 6655 6665
+ 6555 6568 6575 6627 6631 6658
+ 6350 6390 6569 6643 6776 6810
+ 6565 6582 6598 6616 6633 6645
+ 6557 6574 6594 6614 6648 6654
+ 6584 6592 6597 6617 6623 6634
+ 6464 6484 6571 6647 6676 6751
+ 6583 6593 6599 6624 6626 6642
+ 6566 6593 6595 6624 6637 6653
+ 6579 6600 6639 6652
+ 6588 6597 6623 6640
+ 6499 6531 6543 6632 6635 6747 6757
+ 6574 6585 6606 6618 6654 6659
+ 6586 6599 6601 6626 6629 6646
+ 6582 6587 6605 6621 6645 6657
+ 6592 6601 6607 6629 6634 6650
+ 6585 6591 6614 6625 6659 6662
+ 6454 6540 6563 6692 6738 6791
+ 6572 6578 6638 6651 6687
+ 6587 6596 6616 6628 6657 6663
+ 6512 6526 6590 6632 6743 6762
+ 6597 6607 6612 6634 6640 6656
+ 6593 6609 6610 6642 6653 6666
+ 6591 6598 6618 6633 6662 6669
+ 6599 6609 6615 6642 6646 6661
+ 6575 6602 6603 6658 6665 6679
+ 6596 6600 6621 6639 6663 6670
+ 6601 6615 6617 6646 6650 6664
+ 6180 6225 6490 6811 6882 7112
+ 6568 6595 6603 6637 6658 6680 6690
+ 6526 6531 6613 6622 6747 6762
+ 6598 6605 6625 6645 6669 6674
+ 6607 6617 6623 6650 6656 6668
+ 6543 6570 6613 6655 6745 6757
+ 6576 6580 6638 6641 6712 6714
+ 6595 6610 6631 6653 6671 6680
+ 6578 6580 6620 6636 6687 6714
+ 6600 6611 6628 6652 6670 6678
+ 6612 6623 6656 6672
+ 6576 6594 6636 6648 6701 6712
+ 6609 6624 6626 6661 6666 6675
+ 6390 6471 6604 6686 6809 6810
+ 6560 6571 6667 6676 6764
+ 6605 6616 6633 6657 6674 6683
+ 6615 6626 6629 6661 6664 6673
+ 6484 6517 6608 6699 6751 6830
+ 6594 6606 6641 6654 6697 6701
+ 6435 6558 6581 6750 6770 6825
+ 6617 6629 6634 6664 6668 6677
+ 6572 6589 6620 6667 6687 6773
+ 6611 6639 6678 6684
+ 6610 6624 6637 6666 6671 6681
+ 6606 6614 6648 6659 6694 6697
+ 6570 6602 6635 6665 6734 6745
+ 6623 6634 6640 6668 6672 6682
+ 6616 6621 6645 6663 6683 6691
+ 6603 6627 6631 6679 6690 6716
+ 6614 6618 6654 6662 6694 6696
+ 6530 6563 6590 6738 6743 6863
+ 6626 6642 6646 6673 6675 6688
+ 6618 6625 6659 6669 6696 6703
+ 6621 6628 6657 6670 6691 6702
+ 6629 6646 6650 6673 6677 6689
+ 6602 6627 6655 6679 6729 6734
+ 6624 6642 6653 6675 6681 6693
+ 6560 6589 6644 6651 6764 6773
+ 6634 6650 6656 6677 6682 6695
+ 6625 6633 6662 6674 6703 6707
+ 6628 6639 6663 6678 6702 6709
+ 6637 6653 6680 6681 6698
+ 6640 6656 6682 6700
+ 6646 6661 6664 6688 6689 6704
+ 6633 6645 6669 6683 6707 6715
+ 6642 6661 6666 6688 6693 6705
+ 6571 6608 6644 6751 6764 6854
+ 6650 6664 6668 6689 6695 6706
+ 6639 6652 6670 6684 6709 6717
+ 6627 6658 6665 6716 6729
+ 6631 6637 6671 6690 6698 6723
+ 6653 6666 6671 6693 6698 6711
+ 6656 6668 6672 6695 6700 6713
+ 6645 6657 6674 6691 6715 6722
+ 6652 6678 6717 6726
+ 6418 6455 6573 6852 6912 7030
+ 6471 6540 6643 6692 6809 6845
+ 6620 6638 6651 6714 6773 6801
+ 6661 6673 6675 6704 6705 6718
+ 6664 6673 6677 6704 6706 6720
+ 6631 6658 6680 6716 6723 6761
+ 6657 6663 6683 6702 6722 6728
+ 6540 6619 6686 6791 6845
+ 6666 6675 6681 6705 6711 6719
+ 6654 6659 6696 6697 6732 6739
+ 6668 6677 6682 6706 6713 6725
+ 6659 6662 6694 6703 6732 6736
+ 6648 6654 6694 6701 6739 6744
+ 6671 6680 6681 6711 6723 6735
+ 6517 6558 6647 6770 6830 6915
+ 6672 6682 6713 6727
+ 6641 6648 6697 6712 6744 6756
+ 6663 6670 6691 6709 6728 6741
+ 6662 6669 6696 6707 6736 6742
+ 6673 6688 6689 6718 6720 6731
+ 6675 6688 6693 6718 6719 6733
+ 6677 6689 6695 6720 6725 6737
+ 6669 6674 6703 6715 6742 6753
+ 6552 6573 6730 6852 6892
+ 6670 6678 6702 6717 6741 6752
+ 5652 5974 6391 6724 7933 8666
+ 6681 6693 6698 6719 6735 6748
+ 6636 6641 6701 6714 6756 6794
+ 6682 6695 6700 6725 6727 6746
+ 6636 6638 6687 6712 6794 6801 6838
+ 6674 6683 6707 6722 6753 6759
+ 6658 6679 6690 6729 6761 6784
+ 6678 6684 6709 6726 6752 6760
+ 6688 6704 6705 6731 6733 6754
+ 6693 6705 6711 6733 6748 6749
+ 6689 6704 6706 6731 6737 6755
+ 6447 6490 6765 6882 6987
+ 6683 6691 6715 6728 6759 6768
+ 6680 6690 6698 6735 6761 6786
+ 5974 6160 6522 6710 7709 8666
+ 6695 6706 6713 6737 6746 6758
+ 6684 6717 6760 6771
+ 6700 6713 6746 6763
+ 6691 6702 6722 6741 6768 15384
+ 6665 6679 6716 6734 6784 6799
+ 6552 6569 6708 6776 6892 6941
+ 6704 6718 6720 6754 6755 6769
+ 6694 6696 6736 6739 6777 6780
+ 6705 6718 6719 6749 6754 6766
+ 6655 6665 6729 6745 6799 6821
+ 6698 6711 6723 6748 6779 6786
+ 6696 6703 6732 6742 6777 6781
+ 6706 6720 6725 6755 6758 6772
+ 6563 6619 6660 6791 6863 6936
+ 6694 6697 6732 6744 6778 6780
+ 4560 4672 6562 7295 13260 14209
+ 6702 6709 6728 6752 6785 15384
+ 6703 6707 6736 6753 6781 6788
+ 6590 6622 6660 6762 6863 6972
+ 6697 6701 6739 6756 6778 6783
+ 6635 6655 6734 6757 6821 6851
+ 6713 6725 6727 6758 6763 6775
+ 6613 6632 6757 6762 6905 6937
+ 6711 6719 6735 6749 6774 6779
+ 6719 6733 6748 6766 6774
+ 6581 6649 6765 6825 15386
+ 6608 6647 6676 6830 6854 6970
+ 6709 6717 6741 6760 6785 6790
+ 6707 6715 6742 6759 6788 6792
+ 6718 6731 6733 6766 6769 6782
+ 6720 6731 6737 6769 6772 6787
+ 6701 6712 6744 6783 6794 6822
+ 6613 6635 6745 6747 6851 6905
+ 6725 6737 6746 6772 6775 6789
+ 6715 6722 6753 6768 6792 6798
+ 6717 6726 6752 6771 6790 6797
+ 6690 6716 6723 6784 6786 6829 6833
+ 6622 6632 6743 6747 6937 6972
+ 6727 6746 6775 6793
+ 6644 6667 6676 6773 6854 6895
+ 6447 6581 6721 6750 6987 15386
+ 6733 6749 6754 6774 6782 6795
+ 6066 6276 6815 6884 7528 7730
+ 6722 6728 6759 6798 6804 15384
+ 6731 6754 6755 6782 6787 6796
+ 6558 6649 6699 6825 6915 7006
+ 6726 6760 6797 6805
+ 6737 6755 6758 6787 6789 6800
+ 6651 6667 6687 6764 6801 6895 6928
+ 6748 6749 6766 6779 6795 6802
+ 6746 6758 6763 6789 6793 6803
+ 6569 6604 6730 6810 6941 6998
+ 6732 6736 6780 6781 6813 6816
+ 6739 6744 6780 6783 6806 6807
+ 6735 6748 6774 6786 6802 6826
+ 6732 6739 6777 6778 6807 6813
+ 6736 6742 6777 6788 6816 6818
+ 6754 6766 6769 6795 6796 6808
+ 6744 6756 6778 6806 6822
+ 6716 6729 6761 6799 6833 6848
+ 6741 6752 6790 6812 6819 15384
+ 6723 6735 6761 6779 6826 6829
+ 6755 6769 6772 6796 6800 6814
+ 6742 6753 6781 6792 6818 6824
+ 6758 6772 6775 6800 6803 6817
+ 6752 6760 6785 6797 6819 6827
+ 6619 6692 6738 6845 6936 6961
+ 6753 6759 6788 6798 6824 6832
+ 6763 6775 6803 6820
+ 6712 6714 6756 6822 6838 6862
+ 6766 6774 6782 6802 6808 6823
+ 6769 6782 6787 6808 6814 6828
+ 6760 6771 6790 6805 6827 6835
+ 6759 6768 6792 6804 6832 6836
+ 6729 6734 6784 6821 6848 6871
+ 6772 6787 6789 6814 6817 6831
+ 6687 6714 6773 6838 6922 6928
+ 6774 6779 6795 6823 6826 6840
+ 6775 6789 6793 6817 6820 6834
+ 6768 6798 6812 6836 6843 15384
+ 6771 6797 6835 6842
+ 6778 6783 6807 6822 6837 6853
+ 6778 6780 6806 6813 6837 6844
+ 6782 6795 6796 6823 6828 6839
+ 6643 6686 6810 6845 7008 7078
+ 6604 6643 6776 6809 6998 7078
+ 6225 6248 6630 7007 7112 7455
+ 6785 6804 6819 6843 6850 15384
+ 6777 6780 6807 6816 6844 6849
+ 6787 6796 6800 6828 6831 6841
+ 6276 6418 6767 6912 7437 7528
+ 6777 6781 6813 6818 6849 6855
+ 6789 6800 6803 6831 6834 6846
+ 6781 6788 6816 6824 6855 6860
+ 6785 6790 6812 6827 6850 6856
+ 6793 6803 6834 6847
+ 6734 6745 6799 6851 6871 6908
+ 6756 6783 6794 6806 6853 6862 6883
+ 6795 6802 6808 6839 6840 6857
+ 6788 6792 6818 6832 6860 6864
+ 6649 6750 6770 7006 15386
+ 6779 6786 6802 6829 6840 6869 6875
+ 6790 6797 6819 6835 6856 6865
+ 6796 6808 6814 6839 6841 6858
+ 6761 6786 6826 6833 6869 6876
+ 6647 6699 6751 6915 6970 7130
+ 6800 6814 6817 6841 6846 6859
+ 6792 6798 6824 6836 6864 6866
+ 6761 6784 6829 6848 6876 6889
+ 6803 6817 6820 6846 6847 6861
+ 6797 6805 6827 6842 6865 6867
+ 6798 6804 6832 6843 6866 6874
+ 6806 6807 6844 6853 6868
+ 6714 6794 6801 6862 6922 6927
+ 6808 6823 6828 6857 6858 6872
+ 6802 6823 6826 6857 6875 6879
+ 6814 6828 6831 6858 6859 6870
+ 6805 6835 6867 6878
+ 6804 6812 6836 6850 6874 6880
+ 6807 6813 6837 6849 6868 6881
+ 6686 6692 6791 6809 6961 7008
+ 6817 6831 6834 6859 6861 6873
+ 6820 6834 6861 6877
+ 6784 6799 6833 6871 6889 6913
+ 6813 6816 6844 6855 6881 6890
+ 6812 6819 6843 6856 6880 6887
+ 6745 6757 6821 6905 6908 6967
+ 6573 6685 6708 6892 7030 7117
+ 6806 6822 6837 6868 6883 6902
+ 6676 6751 6764 6895 6970 7058
+ 6816 6818 6849 6860 6890 6894
+ 6819 6827 6850 6865 6887 6893
+ 6823 6839 6840 6872 6879 6891
+ 6828 6839 6841 6870 6872 6885
+ 6831 6841 6846 6870 6873 6886
+ 6818 6824 6855 6864 6894 6896
+ 6834 6846 6847 6873 6877 6888
+ 6794 6822 6838 6883 6927 15385
+ 6660 6738 6743 6936 6972 7151
+ 6824 6832 6860 6866 6896 6899
+ 6827 6835 6856 6867 6893 6897
+ 6832 6836 6864 6874 6899 6904
+ 6835 6842 6865 6878 6897 6907
+ 6837 6844 6853 6881 6902 6910
+ 6826 6829 6875 6876 6911 6916
+ 6841 6858 6859 6885 6886 6898
+ 6799 6821 6848 6908 6913 6945
+ 6839 6857 6858 6885 6891 6901
+ 6846 6859 6861 6886 6888 6900
+ 6836 6843 6866 6880 6904 6914
+ 6826 6840 6869 6879 6909 6911
+ 6829 6833 6869 6889 6916 6924
+ 6847 6861 6888 6903
+ 6842 6867 6907 6919
+ 6840 6857 6875 6891 6906 6909
+ 6843 6850 6874 6887 6914 6921
+ 6844 6849 6868 6890 6910 6925
+ 6490 6630 6721 6987 7112 7332
+ 6822 6853 6862 6902 6946 15385
+ 6066 6102 6767 7178 7730 7911
+ 6858 6870 6872 6898 6901 6917
+ 6859 6870 6873 6898 6900 6918
+ 6850 6856 6880 6893 6921 6926
+ 6861 6873 6877 6900 6903 6920
+ 6833 6848 6876 6913 6924 6943
+ 6849 6855 6881 6894 6925 6934
+ 6857 6872 6879 6901 6906 6923
+ 6708 6730 6852 6941 7117 7177
+ 6856 6865 6887 6897 6926 6930
+ 6855 6860 6890 6896 6934 6939
+ 6764 6773 6854 6928 7058 7081
+ 6860 6864 6894 6899 6939 6942
+ 6865 6867 6893 6907 6930 6940
+ 6870 6885 6886 6917 6918 6931
+ 6864 6866 6896 6904 6942 6944
+ 6873 6886 6888 6918 6920 6933
+ 6872 6885 6891 6917 6923 6932
+ 6853 6868 6883 6910 6946 6947
+ 6877 6888 6920 6935
+ 6866 6874 6899 6914 6944 6951
+ 6747 6757 6851 6937 6967 7071 7105
+ 6879 6891 6909 6923 6929
+ 6867 6878 6897 6919 6940 6948
+ 6821 6851 6871 6945 6967 6986
+ 6875 6879 6906 6911 6929 6938
+ 6868 6881 6902 6925 6947 6957
+ 6869 6875 6909 6916 6938 6954
+ 6418 6685 6815 7030 7315 7437
+ 6848 6871 6889 6943 6945 6968
+ 6874 6880 6904 6921 6951 6955
+ 6699 6770 6830 7006 7130 7326
+ 6869 6876 6911 6924 6954 6960
+ 6885 6898 6901 6931 6932 6949
+ 6886 6898 6900 6931 6933 6950
+ 6878 6907 6948 6956
+ 6888 6900 6903 6933 6935 6952
+ 6880 6887 6914 6926 6955 6958
+ 6801 6838 6927 6928 7016 7039
+ 6891 6901 6906 6929 6932 6953
+ 6876 6889 6916 6943 6960 6974
+ 6881 6890 6910 6934 6957 6971
+ 6887 6893 6921 6930 6958 6966
+ 6838 6862 6922 7005 7016 15385
+ 6773 6801 6895 6922 7039 7081
+ 6906 6909 6923 6938 6953 6959
+ 6893 6897 6926 6940 6966 6969
+ 6898 6917 6918 6949 6950 6962
+ 6901 6917 6923 6949 6953 6964
+ 6900 6918 6920 6950 6952 6963
+ 6890 6894 6925 6939 6971 6977
+ 6903 6920 6952 6965
+ 6738 6791 6863 6961 7148 7151
+ 6747 6762 6905 6972 7105 7195
+ 6909 6911 6929 6954 6959 6990
+ 6894 6896 6934 6942 6977 6980
+ 6897 6907 6930 6948 6969 6973
+ 6730 6776 6892 6998 7177 7243
+ 6896 6899 6939 6944 6980 6983
+ 6889 6913 6924 6968 6974 7001
+ 6899 6904 6942 6951 6983 6984
+ 6871 6908 6913 6968 6986 7004
+ 6883 6902 6947 6981 6994 15385
+ 6902 6910 6946 6957 6981 6993
+ 6907 6919 6940 6956 6973 6982
+ 6917 6931 6932 6962 6964 6979
+ 6918 6931 6933 6962 6963 6975
+ 6904 6914 6944 6955 6984 6985
+ 6920 6933 6935 6963 6965 6976
+ 6923 6929 6932 6959 6964 6978
+ 6911 6916 6938 6960 6990 6999
+ 6914 6921 6951 6958 6985 6988
+ 6919 6948 6982 6989
+ 6910 6925 6947 6971 6993 7018
+ 6921 6926 6955 6966 6988 6997
+ 6929 6938 6953 6978 6990 7009
+ 6916 6924 6954 6974 6999 7013
+ 6791 6845 6936 7008 7148 7196
+ 6931 6949 6950 6975 6979 6995
+ 6933 6950 6952 6975 6976 6992
+ 6932 6949 6953 6978 6979 7000
+ 6935 6952 6976 6991
+ 6926 6930 6958 6969 6997 7002
+ 6851 6905 6908 6986 7049 7071
+ 6913 6943 6945 7001 7004 7035
+ 6930 6940 6966 6973 7002 7011
+ 6751 6830 6854 7058 7130 7280
+ 6925 6934 6957 6977 7018 7026
+ 6743 6762 6863 6937 7151 7195 7322
+ 6940 6948 6969 6982 7011 7015
+ 6924 6943 6960 7001 7013 7031
+ 6950 6962 6963 6992 6995 7012
+ 6952 6963 6965 6991 6992 7010
+ 6934 6939 6971 6980 7026 7028
+ 6953 6959 6964 7000 7009 7017
+ 6949 6962 6964 6995 7000 7014
+ 6939 6942 6977 6983 7028 7029
+ 6946 6947 6993 6994 7033
+ 6948 6956 6973 6989 7015 7019
+ 6942 6944 6980 6984 7023 7029
+ 6944 6951 6983 6985 7022 7023
+ 6951 6955 6984 6988 7022 7024
+ 6908 6945 6967 7004 7047 7049
+ 6721 6765 6882 7332 7379 15386
+ 6955 6958 6985 6997 7024 7034
+ 6956 6982 7019 7032
+ 6938 6954 6959 6999 7009 7027 7040
+ 6965 6976 7010 7020
+ 6963 6975 6976 7010 7012 7021
+ 6947 6957 6981 7018 7033 7073
+ 6946 6981 7005 7033 7052 15385
+ 6962 6975 6979 7012 7014 7025
+ 4557 5550 6345 8355 8429 13856 14069
+ 6958 6966 6988 7002 7034 7038
+ 6776 6810 6941 7078 7243 7316
+ 6954 6960 6990 7013 7027 7037
+ 6964 6978 6979 7014 7017 7036
+ 6943 6968 6974 7031 7035 7062
+ 6966 6969 6997 7011 7038 7043
+ 4201 5293 7847 11051 14945
+ 6945 6968 6986 7035 7047 7074
+ 6927 6994 7016 7052 7077 15385
+ 6770 6825 6915 7326 7346 15386
+ 6206 6248 6811 7248 7455 8151
+ 6809 6845 6961 7078 7196 7249
+ 6959 6978 6990 7017 7040 7048
+ 6976 6991 6992 7020 7021 7041
+ 6969 6973 7002 7015 7043 7045
+ 6975 6992 6995 7021 7025 7042
+ 6960 6974 6999 7031 7037 7046
+ 6979 6995 7000 7025 7036 7044
+ 6973 6982 7011 7019 7045 7050
+ 6922 6927 7005 7039 7077 7096
+ 6978 7000 7009 7036 7048 7056
+ 6957 6971 6993 7026 7073 7100
+ 6982 6989 7015 7032 7050 7057
+ 6991 7010 7041 7051
+ 6992 7010 7012 7041 7042 7053
+ 6984 6985 7023 7024 7060 7064
+ 6983 6984 7022 7029 7064 7072
+ 6985 6988 7022 7034 7060 7063
+ 6995 7012 7014 7042 7044 7055
+ 6971 6977 7018 7028 7090 7100
+ 6990 6999 7037 7040 7054 7061
+ 6977 6980 7026 7029 7080 7090
+ 6980 6983 7023 7028 7072 7080
+ 6685 6852 6912 7117 7269 7315
+ 6974 7001 7013 7046 7062 7085
+ 6989 7019 7057 7065
+ 6981 6993 6994 7052 7073 7104
+ 6988 6997 7024 7038 7063 7070
+ 6968 7001 7004 7062 7074 7108
+ 7000 7014 7017 7044 7056 7059
+ 6999 7013 7027 7046 7061 7075
+ 6997 7002 7034 7043 7070 7076
+ 6922 6928 7016 7081 7096 7186
+ 6990 7009 7027 7048 7054 7066
+ 7010 7020 7021 7051 7053 7067
+ 7012 7021 7025 7053 7055 7069
+ 7002 7011 7038 7045 7076 7082
+ 7014 7025 7036 7055 7059 7068
+ 7011 7015 7043 7050 7082 7086
+ 7013 7031 7037 7075 7085
+ 6986 7004 7049 7074 7118
+ 7009 7017 7040 7056 7066 7079
+ 6967 6986 7047 7071 7118 7155
+ 7015 7019 7045 7057 7086 7091
+ 7020 7041 7067 7084
+ 6994 7005 7033 7077 7104 7128
+ 7021 7041 7042 7067 7069 7088
+ 7027 7040 7061 7066 7092
+ 7025 7042 7044 7068 7069 7089
+ 7017 7036 7048 7059 7079 7083
+ 7019 7032 7050 7065 7091 7093
+ 6854 6895 6970 7081 7280 7285
+ 7036 7044 7056 7068 7083 7087
+ 7022 7024 7063 7064 7094 7097
+ 7027 7037 7054 7075 7092 7113
+ 7001 7031 7035 7085 7108 7125
+ 7024 7034 7060 7070 7094 7102
+ 7022 7023 7060 7072 7097 7107
+ 7032 7057 7093 7101
+ 7040 7048 7054 7079 7092 7103
+ 7041 7051 7053 7084 7088 7095
+ 7044 7055 7059 7087 7089 7099
+ 7042 7053 7055 7088 7089 7098
+ 7034 7038 7063 7076 7102 7106
+ 6905 6967 7049 7105 7155 7214
+ 7023 7029 7064 7080 7107 7121
+ 6993 7018 7033 7100 7104 7154
+ 7004 7035 7047 7108 7118 7152
+ 7037 7046 7061 7085 7113 7131
+ 7038 7043 7070 7082 7106 7110
+ 7005 7016 7052 7096 7128 7150
+ 6809 6810 6998 7008 7249 7316 7438
+ 7048 7056 7066 7083 7103 7111
+ 7028 7029 7072 7090 7121 7134
+ 6895 6928 7039 7058 7186 7285
+ 7043 7045 7076 7086 7110 7116
+ 7056 7059 7079 7087 7111 7115
+ 7051 7067 7095 7109
+ 7031 7046 7062 7075 7125 7131
+ 7045 7050 7082 7091 7116 7120
+ 7059 7068 7083 7099 7115
+ 7053 7067 7069 7095 7098 7114
+ 7055 7068 7069 7098 7099 7119
+ 7026 7028 7080 7100 7134 7159
+ 7050 7057 7086 7093 7120 7122
+ 7054 7061 7066 7103 7113 7138
+ 7057 7065 7091 7101 7122 7124
+ 7060 7063 7097 7102 7126 7127
+ 7067 7084 7088 7109 7114 7123
+ 7016 7039 7077 7150 7186 7211
+ 7060 7064 7094 7107 7126 7132
+ 7069 7088 7089 7114 7119 7129
+ 7068 7087 7089 7115 7119 7137
+ 7018 7026 7073 7090 7154 7159 7198
+ 7065 7093 7124 7133
+ 7063 7070 7094 7106 7127 7136
+ 7066 7079 7092 7111 7138 7143
+ 7033 7052 7073 7128 7154 7183
+ 6905 6937 7071 7195 7214 7334
+ 7070 7076 7102 7110 7136 7140
+ 7064 7072 7097 7121 7132 7145
+ 7035 7062 7074 7125 7152 7167
+ 7084 7095 7123 7135
+ 7076 7082 7106 7116 7140 7141
+ 7079 7083 7103 7115 7142 7143
+ 6630 6811 6882 7332 7455 8166
+ 7061 7075 7092 7131 7138 7174
+ 7088 7095 7098 7123 7129 7139
+ 7083 7087 7099 7111 7137 7142
+ 7082 7086 7110 7120 7141 7144
+ 6852 6892 7030 7177 7269 7376
+ 7047 7049 7074 7152 7155 7199
+ 7089 7098 7099 7129 7137 7146
+ 7086 7091 7116 7122 7144 7147
+ 7072 7080 7107 7134 7145 7161
+ 7091 7093 7120 7124 7147 7153
+ 7095 7109 7114 7135 7139 7149
+ 7093 7101 7122 7133 7153 7157
+ 7062 7085 7108 7131 7167 7185
+ 7094 7097 7127 7132 7156 7158
+ 7094 7102 7126 7136 7158 7166
+ 7052 7077 7104 7150 7183 7202
+ 7098 7114 7119 7139 7146 7162
+ 6830 6915 6970 7280 7326 7608
+ 7075 7085 7113 7125 7174 7185 7216
+ 7097 7107 7126 7145 7156 7164
+ 7101 7124 7157 7163
+ 7080 7090 7121 7159 7161 7188
+ 7109 7123 7149 7160
+ 7102 7106 7127 7140 7166 7168
+ 7099 7115 7119 7142 7146 7172 7175
+ 7092 7103 7113 7143 7174 7191
+ 7114 7123 7129 7149 7162 7165
+ 7106 7110 7136 7141 7168 7170
+ 7110 7116 7140 7144 7170 7171
+ 7111 7115 7137 7143 7172 7181
+ 7103 7111 7138 7142 7181 7191
+ 7116 7120 7141 7147 7171 7176
+ 7107 7121 7132 7161 7164 7169
+ 7119 7129 7137 7162 7175 7180
+ 7120 7122 7144 7153 7176 7179
+ 6936 6961 7151 7196 7380 7395
+ 7123 7135 7139 7160 7165 7173
+ 7077 7096 7128 7202 7211 7239
+ 6863 6936 6972 7148 7322 7395 7557
+ 7074 7108 7118 7167 7199 7218
+ 7122 7124 7147 7157 7179 7182
+ 7073 7100 7104 7183 7198 7226
+ 7049 7071 7118 7199 7214 7259
+ 7126 7132 7158 7164 7184
+ 7124 7133 7153 7163 7182 7190
+ 7126 7127 7156 7166 7184 7201
+ 7090 7100 7134 7188 7198 7222
+ 7135 7149 7173 7187
+ 7121 7134 7145 7169 7188 7197
+ 7129 7139 7146 7165 7180 7189
+ 7133 7157 7190 7192
+ 7132 7145 7156 7169 7184 7194
+ 7139 7149 7162 7173 7189 7193
+ 7127 7136 7158 7168 7201 7224
+ 7108 7125 7152 7185 7218 7227
+ 7136 7140 7166 7170 7215 7224
+ 7145 7161 7164 7194 7197
+ 7140 7141 7168 7171 7207 7215
+ 7141 7144 7170 7176 7204 7207
+ 7137 7142 7175 7181 7208 7219
+ 7149 7160 7165 7187 7193 7200
+ 7113 7131 7138 7191 7216 7231
+ 7137 7146 7172 7180 7203 7208
+ 7144 7147 7171 7179 7204 7205
+ 6892 6941 7117 7243 7376 7460
+ 6102 6345 6884 7911 8355 10635
+ 7147 7153 7176 7182 7205 7209
+ 7146 7162 7175 7189 7203 7206
+ 7142 7143 7172 7191 7219 7233
+ 7153 7157 7179 7190 7209 7213
+ 7104 7128 7154 7202 7226 7251
+ 7156 7158 7164 7194 7201 7232
+ 7125 7131 7167 7216 7227 7260
+ 7039 7081 7096 7211 7285 7381
+ 7160 7173 7200 7210
+ 7134 7159 7161 7197 7222 7230
+ 7162 7165 7180 7193 7206 7212
+ 7157 7163 7182 7192 7213 7217
+ 7138 7143 7174 7181 7231 7233 7257
+ 7163 7190 7217 7221
+ 7165 7173 7189 7200 7212 7220
+ 7164 7169 7184 7197 7232 7246
+ 6937 6972 7105 7322 7334 7430
+ 6961 7008 7148 7249 7380 7451
+ 7161 7169 7188 7194 7230 7246
+ 7100 7154 7159 7222 7226 7275 7300
+ 7118 7152 7155 7218 7259 7267
+ 7173 7187 7193 7210 7220 7225
+ 7158 7166 7184 7224 7232 7279
+ 7128 7150 7183 7239 7251 7276
+ 7175 7180 7206 7208 7223 7228
+ 7171 7176 7205 7207 7234 7242
+ 7176 7179 7204 7209 7234 7235
+ 7180 7189 7203 7212 7223 7229
+ 7170 7171 7204 7215 7242 7250
+ 7172 7175 7203 7219 7228 7240
+ 7179 7182 7205 7213 7235 7238
+ 7187 7200 7225 7236
+ 7096 7150 7186 7239 7349 7381
+ 7189 7193 7206 7220 7229 7237
+ 7182 7190 7209 7217 7238 7241
+ 7071 7105 7155 7259 7334 7357
+ 7168 7170 7207 7224 7250 7286
+ 7131 7174 7185 7231 7260 7287
+ 7190 7192 7213 7221 7241 7245
+ 7152 7167 7199 7227 7267 7281
+ 7172 7181 7208 7233 7240 7253
+ 7193 7200 7212 7225 7237 7247
+ 7192 7217 7245 7252
+ 7159 7188 7198 7230 7275 7278
+ 7203 7206 7228 7229 7244
+ 7166 7168 7201 7215 7279 7286
+ 7200 7210 7220 7236 7247 7254
+ 7154 7183 7198 7251 7300 7324
+ 7167 7185 7218 7260 7281 7323
+ 7203 7208 7223 7240 7244 7255
+ 7206 7212 7223 7237 7244 7256
+ 7188 7197 7222 7246 7278 7304
+ 7174 7191 7216 7257 7287 7297
+ 7184 7194 7201 7246 7279 7311
+ 7181 7191 7219 7253 7257 7271
+ 7204 7205 7235 7242 7258 7265
+ 7205 7209 7234 7238 7258 7262
+ 7210 7225 7254 7261
+ 7212 7220 7229 7247 7256 7263
+ 7209 7213 7235 7241 7262 7264
+ 7150 7202 7211 7276 7349
+ 7208 7219 7228 7253 7255 7268
+ 7213 7217 7238 7245 7264 7266
+ 7204 7207 7234 7250 7265 7273
+ 6941 6998 7177 7316 7460 7551
+ 7223 7228 7229 7255 7256 7270
+ 7217 7221 7241 7252 7266 7272
+ 7194 7197 7230 7232 7304 7311
+ 7220 7225 7237 7254 7263 7274
+ 6206 6522 7007 7709 8151 10752
+ 7008 7078 7196 7438 7451 7571
+ 7207 7215 7242 7273 7286 7299
+ 7183 7202 7226 7276 7324 7328
+ 7221 7245 7272 7277
+ 7219 7233 7240 7268 7271 7290
+ 7225 7236 7247 7261 7274 7282
+ 7228 7240 7244 7268 7270 7293
+ 7229 7237 7244 7263 7270 7283
+ 7191 7231 7233 7271 7297 7302
+ 7234 7235 7262 7265 7284 7288
+ 7155 7199 7214 7267 7329 7357
+ 7185 7216 7227 7287 7323 7351
+ 7236 7254 7282 7292
+ 7235 7238 7258 7264 7288 7291
+ 7237 7247 7256 7274 7283 7296
+ 7238 7241 7262 7266 7291 7294
+ 7234 7242 7258 7273 7284 7289
+ 7241 7245 7264 7272 7294 7298
+ 7199 7218 7259 7281 7329 7340
+ 7240 7253 7255 7290 7293 7314
+ 7030 7117 7315 7376 7609
+ 7244 7255 7256 7283 7293 7307
+ 7233 7253 7257 7290 7302 7310
+ 7245 7252 7266 7277 7298 7306
+ 7242 7250 7265 7289 7299 7308
+ 7247 7254 7263 7282 7296 7305
+ 7198 7222 7278 7300 7345
+ 7202 7239 7251 7328 7349 7368
+ 7252 7272 7306 7312
+ 7222 7230 7275 7304 7345 7371
+ 7201 7224 7232 7286 7311 7352 7359
+ 6970 7058 7130 7285 7592 7608
+ 7218 7227 7267 7323 7340 7383
+ 7254 7261 7274 7292 7305 7313
+ 7256 7263 7270 7296 7307 7317
+ 7258 7265 7288 7289 7301 7303
+ 7058 7081 7186 7280 7381 7549 7592
+ 7215 7224 7250 7279 7299 7339 7352
+ 7216 7231 7260 7297 7348 7351
+ 7258 7262 7284 7291 7301 7309
+ 7265 7273 7284 7303 7308
+ 7253 7268 7271 7310 7314 7337
+ 7262 7264 7288 7294 7309 7318
+ 7261 7282 7313 7319
+ 7255 7268 7270 7307 7314 7331
+ 7264 7266 7291 7298 7318 7321
+ 4560 6408 6740 14209 14884
+ 7263 7274 7283 7305 7317 7325
+ 7231 7257 7287 7302 7348 7353
+ 7266 7272 7294 7306 7321 7327
+ 7250 7273 7286 7308 7338 7339
+ 7198 7226 7275 7324 7345 7407
+ 7284 7288 7303 7309 7320
+ 7257 7271 7297 7310 7353 7361
+ 7284 7289 7301 7308 7320 7330
+ 7230 7246 7278 7311 7371 7384
+ 7274 7282 7296 7313 7325 7335
+ 7272 7277 7298 7312 7327 7336
+ 7270 7283 7293 7317 7331 7341
+ 7273 7289 7299 7303 7330 7338
+ 7288 7291 7301 7318 7320 7333
+ 7271 7290 7302 7337 7361
+ 7232 7246 7279 7304 7359 7384
+ 7277 7306 7336 7343
+ 7282 7292 7305 7319 7335 7342
+ 7268 7290 7293 7331 7337 7360
+ 6912 7030 7269 7437 7609 8118
+ 6998 7078 7243 7438 7551 7660
+ 7283 7296 7307 7325 7341 7350
+ 7291 7294 7309 7321 7333 7344
+ 7292 7313 7342 7347
+ 7301 7303 7309 7330 7333 7354
+ 7294 7298 7318 7327 7344 7355
+ 6972 7151 7195 7430 7557 7645 7669
+ 7227 7260 7281 7351 7383 7414
+ 7226 7251 7300 7328 7407 7408
+ 7296 7305 7317 7335 7350 7356
+ 6915 7006 7130 7346 7608 8108
+ 7298 7306 7321 7336 7355 7358
+ 7251 7276 7324 7368 7408
+ 7259 7267 7340 7357 7404 7415
+ 7303 7308 7320 7338 7354 7374
+ 7293 7307 7314 7341 7360 7365
+ 6882 6987 7112 7379 8166 10539
+ 7309 7318 7320 7344 7354 7363
+ 7105 7195 7214 7357 7430 7505 7523
+ 7305 7313 7325 7342 7356 7362
+ 7306 7312 7327 7343 7358 7364
+ 7290 7310 7314 7360 7361 7390
+ 7299 7308 7330 7339 7374 7378
+ 7286 7299 7338 7352 7378 7388
+ 7267 7281 7329 7383 7404
+ 7307 7317 7331 7350 7365 7369
+ 7313 7319 7335 7347 7362 7366
+ 7312 7336 7364 7367
+ 7318 7321 7333 7355 7363 7370
+ 7275 7278 7300 7371 7407 7449
+ 7006 7326 7379 8108 8722 15386
+ 7319 7342 7366 7372
+ 7287 7297 7351 7353 7389 7402
+ 7211 7239 7276 7368 7381 7425
+ 7317 7325 7341 7356 7369 7373
+ 7260 7287 7323 7348 7402 7414
+ 7279 7286 7339 7359 7388 7400
+ 7297 7302 7348 7361 7389 7397
+ 7320 7330 7333 7363 7374 7385
+ 7321 7327 7344 7358 7370 7375
+ 7325 7335 7350 7362 7373 7377
+ 7214 7259 7329 7334 7415 7505
+ 7327 7336 7355 7364 7375 7382
+ 7279 7311 7352 7384 7400 7434
+ 7314 7331 7337 7365 7390 7394
+ 7302 7310 7337 7353 7390 7397 7412
+ 7335 7342 7356 7366 7377 7386
+ 7333 7344 7354 7370 7385 7393
+ 7336 7343 7358 7367 7382 7387
+ 7331 7341 7360 7369 7392 7394
+ 7342 7347 7362 7372 7386 7391
+ 7343 7364 7387 7396
+ 7276 7328 7349 7408 7425 7487
+ 7341 7350 7365 7373 7392 7399
+ 7344 7355 7363 7375 7393 7401
+ 7278 7304 7345 7384 7449 7486
+ 7347 7366 7391 7398
+ 7350 7356 7369 7377 7399 7403
+ 7330 7338 7354 7378 7385 7417 7423
+ 7355 7358 7370 7382 7401 7406
+ 7117 7177 7269 7460 7609 7753
+ 7356 7362 7373 7386 7403 7405
+ 7338 7339 7374 7388 7423 7428
+ 6987 7332 7346 8722 10539 15386
+ 7148 7196 7395 7451 7591 7639
+ 7186 7211 7285 7349 7425 7514 7549
+ 7358 7364 7375 7387 7406 7409
+ 7281 7323 7340 7404 7414 7506
+ 7304 7311 7359 7371 7434 7486
+ 7354 7363 7374 7393 7417 7421
+ 7362 7366 7377 7391 7405 7410
+ 7364 7367 7382 7396 7409 7411
+ 7339 7352 7378 7400 7428 7444
+ 7348 7353 7397 7402 7427 7433
+ 7337 7360 7361 7394 7412 7431 7447
+ 7366 7372 7386 7398 7410 7413
+ 7365 7369 7394 7399 7416 7418
+ 7363 7370 7385 7401 7421 7424
+ 7360 7365 7390 7392 7418 7431
+ 7148 7151 7380 7557 7591 7670
+ 7367 7387 7411 7419
+ 7353 7361 7389 7412 7427 7441
+ 7372 7391 7413 7420
+ 7369 7373 7392 7403 7416 7422
+ 7352 7359 7388 7434 7444 7468
+ 7370 7375 7393 7406 7424 7429
+ 7348 7351 7389 7414 7433 7473
+ 7373 7377 7399 7405 7422 7426
+ 7329 7340 7383 7415 7506 7525
+ 7377 7386 7403 7410 7426 7432
+ 7375 7382 7401 7409 7429 7435
+ 7300 7324 7345 7408 7449 7545 7603
+ 7324 7328 7368 7407 7487 7545
+ 7382 7387 7406 7411 7435 7440
+ 7386 7391 7405 7413 7432 7439
+ 7387 7396 7409 7419 7440 7443
+ 7361 7390 7397 7441 7447 7463
+ 7391 7398 7410 7420 7439 7442
+ 7323 7351 7383 7402 7473 7506 7563
+ 7329 7357 7404 7505 7525 7579
+ 7392 7399 7418 7422 7445 7446
+ 7374 7385 7421 7423 7453 7459
+ 7392 7394 7416 7431 7445 7456
+ 7396 7411 7443 7450
+ 7398 7413 7442 7448
+ 7385 7393 7417 7424 7453 7454
+ 7399 7403 7416 7426 7446 7452
+ 7374 7378 7417 7428 7459 7476
+ 7393 7401 7421 7429 7454 7458
+ 7349 7368 7381 7487 7514 7570
+ 7403 7405 7422 7432 7452 7457
+ 7389 7397 7433 7441 7464 7469
+ 7378 7388 7423 7444 7476 7500
+ 7401 7406 7424 7435 7458 7462
+ 7195 7322 7334 7523 7640 7645
+ 7390 7394 7418 7447 7456 7466
+ 7405 7410 7426 7439 7457 7461
+ 7389 7402 7427 7464 7473
+ 7359 7384 7400 7468 7486 7550
+ 7406 7409 7429 7440 7462 7465
+ 6391 6507 7933 8232 13750
+ 6815 6912 7315 7528 8118 8472
+ 7078 7249 7316 7571 7660 7808
+ 7410 7413 7432 7442 7461 7467
+ 7409 7411 7435 7443 7465 7470
+ 7397 7412 7427 7463 7469 7485
+ 7413 7420 7439 7448 7467 7471
+ 7411 7419 7440 7450 7470 7474
+ 7388 7400 7428 7468 7500 7521
+ 7416 7418 7446 7456 7472 7477
+ 7416 7422 7445 7452 7472 7475
+ 7390 7412 7431 7463 7466 7495 7498
+ 7420 7442 7471 7479
+ 7345 7371 7407 7486 7603 7607
+ 7419 7443 7474 7483
+ 7196 7249 7380 7571 7639 7703
+ 7422 7426 7446 7457 7475 7482
+ 7417 7421 7454 7459 7480 7481
+ 7421 7424 7453 7458 7481 7484
+ 6811 7007 7112 8151 8166 10767
+ 7418 7431 7445 7466 7477 7478
+ 7426 7432 7452 7461 7482 7488
+ 7424 7429 7454 7462 7484 7489
+ 7417 7423 7453 7476 7480 7508
+ 7177 7243 7376 7551 7753 7852
+ 7432 7439 7457 7467 7488 7490
+ 7429 7435 7458 7465 7489 7491
+ 7412 7441 7447 7485 7495 7509
+ 7427 7433 7469 7473 7493 7517
+ 7435 7440 7462 7470 7491 7496
+ 7431 7447 7456 7478 7494 7498
+ 7439 7442 7461 7471 7490 7497
+ 7400 7434 7444 7521 7550
+ 7427 7441 7464 7485 7493 7507
+ 7440 7443 7465 7474 7496 7501
+ 7442 7448 7467 7479 7497 7502
+ 7445 7446 7475 7477 7499 7503
+ 7402 7414 7433 7464 7517 7563 7583
+ 7443 7450 7470 7483 7501 7512
+ 7446 7452 7472 7482 7503 7510
+ 7423 7428 7459 7500 7508 7526
+ 7445 7456 7472 7478 7492 7499
+ 7456 7466 7477 7492 7494
+ 7448 7471 7502 7511
+ 7453 7459 7481 7504 7508
+ 7453 7454 7480 7484 7504 7513
+ 7452 7457 7475 7488 7510 7515
+ 7450 7474 7512 7519
+ 7454 7458 7481 7489 7513 7516
+ 7441 7463 7469 7507 7509 7534
+ 7371 7384 7434 7449 7550 7607 7634
+ 7368 7408 7425 7545 7570 7679
+ 7457 7461 7482 7490 7515 7522
+ 7458 7462 7484 7491 7516 7524
+ 7461 7467 7488 7497 7522 7527
+ 7462 7465 7489 7496 7524 7529
+ 7477 7478 7494 7499 7518 7520
+ 7464 7469 7507 7517 7560
+ 7466 7478 7492 7498 7518 7530
+ 7447 7463 7498 7509 7536 7540
+ 7465 7470 7491 7501 7529 7533
+ 7467 7471 7490 7502 7527 7532
+ 7447 7466 7494 7495 7530 7536
+ 7472 7477 7492 7503 7520 7531
+ 7428 7444 7476 7521 7526 7562 7573
+ 7470 7474 7496 7512 7533 7538
+ 7471 7479 7497 7511 7532 7535
+ 7472 7475 7499 7510 7531 7539
+ 7480 7481 7508 7513 7541 7544
+ 7334 7357 7415 7523 7579 7672 7696
+ 7383 7404 7414 7525 7563 7654 7684
+ 7469 7485 7493 7534 7560
+ 7459 7476 7480 7504 7526 7542 7544
+ 7463 7485 7495 7534 7540 7574
+ 7475 7482 7503 7515 7539 7547
+ 7479 7502 7535 7543
+ 7474 7483 7501 7519 7538 7546
+ 7481 7484 7504 7516 7541 7548
+ 7381 7425 7549 7570 7729
+ 7482 7488 7510 7522 7547 7553
+ 7484 7489 7513 7524 7548 7554
+ 7464 7473 7493 7560 7583 7596
+ 7492 7494 7520 7530 7537
+ 7483 7512 7546 7555
+ 7492 7499 7518 7531 7537 7552
+ 7444 7468 7500 7550 7573 7616
+ 7488 7490 7515 7527 7553 7556
+ 7334 7430 7505 7640 7672 7713
+ 7489 7491 7516 7529 7554 7558
+ 7404 7415 7506 7579 7681 7684
+ 7476 7500 7508 7542 7562 7565
+ 7490 7497 7522 7532 7556 7559
+ 6767 6815 7437 7730 8472 8881
+ 7491 7496 7524 7533 7558 7561
+ 7494 7498 7518 7536 7537 7566 7576
+ 7499 7503 7520 7539 7552 7567
+ 7497 7502 7527 7535 7559 7564
+ 7496 7501 7529 7538 7561 7569
+ 7485 7507 7509 7560 7574 7621
+ 7502 7511 7532 7543 7564 7572
+ 7495 7498 7530 7540 7576 7580
+ 7518 7520 7530 7552 7566
+ 7501 7512 7533 7546 7569 7575
+ 7503 7510 7531 7547 7567 7581
+ 7495 7509 7536 7574 7580
+ 7504 7513 7544 7548 7578 7584
+ 7508 7526 7544 7565 7568
+ 7511 7535 7572 7577
+ 7504 7508 7541 7542 7568 7578
+ 7407 7408 7487 7603 7679 7772
+ 7512 7519 7538 7555 7575 7582
+ 7510 7515 7539 7553 7581 7585
+ 7513 7516 7541 7554 7584 7586
+ 7285 7381 7514 7592 7729 7963
+ 7434 7468 7486 7521 7616 7634 7674
+ 7243 7316 7460 7660 7852 7966
+ 7520 7531 7537 7566 7567 7595
+ 7515 7522 7547 7556 7585 7587
+ 7516 7524 7548 7558 7586 7589
+ 7519 7546 7582 7588
+ 7522 7527 7553 7559 7587 7590
+ 7151 7322 7395 7669 7670 7884
+ 7524 7529 7554 7561 7589 7594
+ 7527 7532 7556 7564 7590 7593
+ 7493 7507 7517 7534 7596 7621 7628
+ 7529 7533 7558 7569 7594 7598
+ 7500 7526 7565 7573 7602 7612
+ 7414 7473 7506 7583 7638 7654
+ 7532 7535 7559 7572 7593 7597
+ 7526 7542 7562 7568 7600 7602
+ 7530 7537 7552 7576 7595 7614
+ 7531 7539 7552 7581 7595 7606
+ 7542 7544 7565 7578 7600 7610
+ 7533 7538 7561 7575 7598 7601
+ 7425 7487 7514 7679 7729 7794
+ 7249 7438 7451 7703 7808 7832
+ 7535 7543 7564 7577 7597 7599
+ 7500 7521 7562 7612 7616 7644
+ 7509 7534 7540 7580 7621 7631
+ 7538 7546 7569 7582 7601 7605
+ 7530 7536 7566 7580 7614 7629
+ 7543 7572 7599 7604
+ 7541 7544 7568 7584 7610 7613
+ 7415 7505 7525 7681 7696
+ 7536 7540 7574 7576 7629 7631
+ 7539 7547 7567 7585 7606 7615
+ 7546 7555 7575 7588 7605 7611
+ 7473 7517 7563 7596 7630 7638
+ 7541 7548 7578 7586 7613 7617
+ 7547 7553 7581 7587 7615 7623
+ 7548 7554 7584 7589 7617 7620
+ 7553 7556 7585 7590 7619 7623
+ 7555 7582 7611 7618
+ 7554 7558 7586 7594 7620 7625
+ 7556 7559 7587 7593 7619 7622
+ 7380 7395 7639 7670 7873 7874
+ 7280 7285 7549 7608 7963 8358
+ 7559 7564 7590 7597 7622 7624
+ 7558 7561 7589 7598 7625 7627
+ 7552 7566 7567 7606 7614 7652
+ 7517 7560 7583 7628 7630 7661
+ 7564 7572 7593 7599 7624 7626
+ 7561 7569 7594 7601 7627 7633
+ 7572 7577 7597 7604 7626 7632
+ 7565 7568 7602 7610 7637 7646
+ 7569 7575 7598 7605 7633 7635
+ 7562 7565 7600 7612 7637 7642
+ 7407 7449 7545 7607 7772 7778
+ 7577 7599 7632 7636
+ 7575 7582 7601 7611 7635 7641
+ 7567 7581 7595 7615 7652 7655
+ 7449 7486 7603 7634 7771 7778
+ 7130 7280 7326 7592 8108 8358 9530
+ 7269 7315 7376 7753 8118 8739
+ 7568 7578 7600 7613 7646 7665
+ 7582 7588 7605 7618 7641 7643
+ 7562 7573 7602 7642 7644 7667
+ 7578 7584 7610 7617 7657 7665
+ 7566 7576 7595 7629 7652 7685
+ 7581 7585 7606 7623 7655 7662
+ 7521 7550 7573 7644 7674 7683
+ 7584 7586 7613 7620 7651 7657
+ 7588 7611 7643 7650
+ 7587 7590 7622 7623 7647 7656
+ 7586 7589 7617 7625 7651 7653
+ 7534 7560 7574 7628 7631 7694 7724
+ 7590 7593 7619 7624 7647 7648
+ 7585 7587 7615 7619 7656 7662
+ 7593 7597 7622 7626 7648 7649
+ 7589 7594 7620 7627 7653 7659
+ 7597 7599 7624 7632 7649 7658
+ 7594 7598 7625 7633 7659 7663
+ 7560 7596 7621 7661 7694
+ 7576 7580 7614 7631 7685 7706
+ 7583 7596 7638 7661 7690
+ 7574 7580 7621 7629 7706 7724
+ 7599 7604 7626 7636 7658 7664
+ 7598 7601 7627 7635 7663 7668
+ 7486 7550 7607 7674 7761 7771
+ 7601 7605 7633 7641 7668 7673
+ 7604 7632 7664 7671
+ 7600 7602 7642 7646 7698
+ 7563 7583 7630 7654 7690 7718
+ 7380 7451 7591 7703 7874 7905
+ 7430 7523 7645 7713 7814 7858
+ 7605 7611 7635 7643 7673 7675
+ 7602 7612 7637 7667 7698
+ 7611 7618 7641 7650 7675 7677
+ 7573 7612 7616 7667 7683 7710
+ 7322 7430 7640 7669 7858 7872
+ 7600 7610 7637 7665 7698 7715
+ 7619 7622 7648 7656 7676 7682
+ 7622 7624 7647 7649 7676 7678
+ 7624 7626 7648 7658 7678 7680
+ 7618 7643 7677 7687
+ 7617 7620 7653 7657 7686 7692
+ 7595 7606 7614 7655 7685 7727 7745
+ 7620 7625 7651 7659 7686 7689
+ 7506 7563 7638 7684 7718 7754
+ 7606 7615 7652 7662 7712 7727
+ 7619 7623 7647 7662 7682 7699
+ 7613 7617 7651 7665 7692 7695
+ 7626 7632 7649 7664 7680 7688
+ 7625 7627 7653 7663 7689 7691
+ 7316 7438 7551 7808 7966 8100
+ 7596 7628 7630 7690 7694 7736
+ 7615 7623 7655 7656 7699 7712
+ 7627 7633 7659 7668 7691 7697
+ 7632 7636 7658 7671 7688 7693
+ 7610 7613 7646 7657 7695 7715
+ 200 410 5408 13608 15133 15144
+ 7612 7642 7644 7698 7710 7747
+ 7633 7635 7663 7673 7697 7701
+ 7322 7557 7645 7872 7884 7984
+ 7395 7557 7591 7873 7884 7995
+ 7636 7664 7693 7700
+ 7505 7523 7696 7713 7807 7819
+ 7635 7641 7668 7675 7701 7704
+ 7550 7616 7634 7683 7738 7761
+ 7641 7643 7673 7677 7704 7708
+ 7647 7648 7678 7682 7702 7705
+ 7643 7650 7675 7687 7708 7714
+ 7648 7649 7676 7680 7705 7707
+ 7487 7545 7570 7772 7794 7937
+ 7649 7658 7678 7688 7707 7711
+ 7525 7579 7684 7696 7844 7866
+ 7647 7656 7676 7699 7702 7717
+ 7616 7644 7674 7710 7738 7756
+ 7506 7525 7654 7681 7754 7844 7867
+ 7614 7629 7652 7706 7745 7770
+ 7651 7653 7689 7692 7720 7722
+ 7650 7677 7714 7721
+ 7658 7664 7680 7693 7711 7716
+ 7653 7659 7686 7691 7720 7725
+ 7630 7638 7661 7718 7736 7767
+ 7659 7663 7689 7697 7725 7728
+ 7651 7657 7686 7695 7719 7722
+ 7664 7671 7688 7700 7716 7726
+ 7621 7628 7661 7724 7736 7777
+ 7657 7665 7692 7715 7719 7741
+ 7505 7579 7672 7681 7819 7866
+ 7663 7668 7691 7701 7728 7732
+ 7637 7642 7646 7667 7715 7747 7764
+ 7656 7662 7682 7712 7717 7749
+ 7671 7693 7726 7733
+ 7668 7673 7697 7704 7732 7734
+ 7676 7682 7705 7717 7723
+ 7451 7571 7639 7832 7905 7934
+ 7673 7675 7701 7708 7734 7737
+ 7676 7678 7702 7707 7723 7731
+ 7629 7631 7685 7724 7770 7800
+ 7678 7680 7705 7711 7731 7735
+ 7675 7677 7704 7714 7737 7740
+ 6522 6724 7248 8666 10752 12141
+ 7644 7667 7683 7747 7756 7804
+ 7680 7688 7707 7716 7735 7739
+ 7655 7662 7699 7727 7749 7765
+ 7523 7640 7672 7807 7814 7891
+ 7677 7687 7708 7721 7740 7743
+ 7646 7665 7695 7698 7741 7764 7779
+ 7688 7693 7711 7726 7739 7744
+ 7682 7699 7702 7723 7742 7749
+ 7638 7654 7690 7754 7767 7799
+ 7692 7695 7722 7741 7746
+ 7686 7689 7722 7725 7751 7755
+ 7687 7714 7743 7750
+ 7686 7692 7719 7720 7746 7751
+ 7702 7705 7717 7731 7742 7748
+ 7621 7631 7694 7706 7777 7800 7841
+ 7689 7691 7720 7728 7755 7758
+ 7693 7700 7716 7733 7744 7752
+ 7652 7655 7712 7745 7765 7785
+ 7691 7697 7725 7732 7758 7759
+ 7514 7549 7570 7794 7963 8177
+ 6767 6884 7528 7911 8881 10857 11227
+ 7705 7707 7723 7735 7748 7757
+ 7697 7701 7728 7734 7759 7762
+ 7700 7726 7752 7760
+ 7701 7704 7732 7737 7762 7766
+ 7707 7711 7731 7739 7757 7763
+ 7661 7690 7694 7767 7777 7805
+ 7704 7708 7734 7740 7766 7769
+ 7674 7683 7756 7761 7834 7835
+ 7711 7716 7735 7744 7763 7768
+ 7708 7714 7737 7743 7769 7774
+ 7695 7715 7719 7746 7779 7784
+ 7717 7723 7748 7749 7773 7780
+ 7714 7721 7740 7750 7774 7776
+ 7716 7726 7739 7752 7768 7775
+ 7652 7685 7727 7770 7785 7811
+ 7719 7722 7741 7751 7784 7787
+ 7667 7698 7710 7764 7804 7824
+ 7723 7731 7742 7757 7773 7783
+ 7699 7712 7717 7742 7765 7780 7795
+ 7721 7743 7776 7782
+ 7720 7722 7746 7755 7787 7788
+ 7726 7733 7744 7760 7775 7781
+ 7376 7460 7609 7852 8739 8918
+ 7654 7684 7718 7799 7842 7867
+ 7720 7725 7751 7758 7788 7790
+ 7683 7710 7738 7804 7835
+ 7731 7735 7748 7763 7783 7786
+ 7725 7728 7755 7759 7790 7791
+ 7728 7732 7758 7762 7791 7793
+ 7733 7752 7781 7789
+ 7634 7674 7738 7771 7834 7897
+ 7732 7734 7759 7766 7793 7796
+ 7735 7739 7757 7768 7786 7792
+ 7698 7715 7747 7779 7824 7828
+ 7712 7727 7749 7785 7795 7813
+ 7734 7737 7762 7769 7796 7798
+ 7690 7718 7736 7799 7805 7838
+ 7739 7744 7763 7775 7792 7797
+ 7737 7740 7766 7774 7798 7801
+ 7685 7706 7745 7800 7811 7856
+ 7607 7634 7761 7778 7897 7924
+ 7545 7603 7679 7778 7937 8045 8145
+ 7742 7748 7780 7783 7810
+ 7740 7743 7769 7776 7801 7802
+ 7744 7752 7768 7781 7797 7803
+ 7743 7750 7774 7782 7802 7806
+ 7694 7724 7736 7805 7841 7859
+ 7603 7607 7771 7772 7924 8045
+ 7715 7741 7764 7784 7828 7830
+ 7742 7749 7773 7795 7810 7836
+ 7752 7760 7775 7789 7803 7809
+ 7750 7776 7806 7812
+ 7748 7757 7773 7786 7810 7817
+ 7741 7746 7779 7787 7827 7830
+ 7727 7745 7765 7811 7813 7846
+ 7757 7763 7783 7792 7816 7817
+ 7746 7751 7784 7788 7827 7831
+ 7751 7755 7787 7790 7826 7831
+ 7760 7781 7809 7815
+ 7755 7758 7788 7791 7820 7826
+ 7758 7759 7790 7793 7820 7821
+ 7763 7768 7786 7797 7816 7818
+ 7759 7762 7791 7796 7821 7823
+ 7570 7679 7729 7937 8177 8194
+ 7749 7765 7780 7813 7836 7855
+ 7762 7766 7793 7798 7823 7825
+ 7768 7775 7792 7803 7818 7822
+ 7766 7769 7796 7801 7825 7829
+ 7718 7754 7767 7838 7842 7869
+ 7706 7724 7770 7841 7856 7908
+ 7769 7774 7798 7802 7829 15387
+ 7774 7776 7801 7806 7837 15387
+ 7775 7781 7797 7809 7822 7833
+ 7710 7747 7756 7824 7835 7926 7955
+ 7736 7767 7777 7838 7859 7886
+ 7776 7782 7802 7812 7837 7840
+ 7672 7713 7819 7891 7936 8028
+ 7438 7571 7660 7832 8100 8337 8426
+ 7781 7789 7803 7815 7833 7839
+ 7773 7780 7783 7817 7836 7854 7878
+ 7745 7770 7785 7846 7856 7929
+ 7782 7806 7840 7843
+ 7765 7785 7795 7846 7855 7890
+ 7640 7713 7858 7891 8049
+ 7789 7809 7839 7848
+ 7786 7792 7817 7818 7845 7850
+ 7783 7786 7810 7816 7850 7854
+ 7792 7797 7816 7822 7845 7849
+ 7672 7696 7807 7866 7936 8007
+ 7790 7791 7821 7826 7853 7862
+ 7791 7793 7820 7823 7853 7857
+ 7797 7803 7818 7833 7849 7851
+ 7793 7796 7821 7825 7857 7860
+ 7747 7764 7804 7828 7913 7926
+ 7796 7798 7823 7829 7860 7863
+ 7788 7790 7820 7831 7862 7870
+ 7784 7787 7830 7831 7882 7887
+ 7764 7779 7824 7830 7895 7913
+ 7798 7801 7825 7863 7864 15387
+ 7779 7784 7827 7828 7887 7895
+ 7787 7788 7826 7827 7870 7882
+ 7571 7703 7808 7934 8307 8337
+ 7803 7809 7822 7839 7851 7861
+ 7738 7761 7835 7897 7942
+ 7738 7756 7804 7834 7942 7955
+ 7780 7795 7810 7855 7878 7888
+ 7802 7806 7840 7865 7868 15387
+ 7767 7799 7805 7869 7886 7923
+ 7809 7815 7833 7848 7861 7871
+ 7806 7812 7837 7843 7868 7875
+ 7724 7777 7800 7859 7908 7961 7987
+ 7754 7799 7867 7869 7916 7969
+ 7812 7840 7875 7881
+ 7681 7684 7866 7867 8018 8037
+ 7816 7818 7849 7850 7876 7877
+ 7785 7811 7813 7890 7929 7952
+ 1438 4201 7003 14856 14945 15069
+ 7815 7839 7871 7883
+ 7818 7822 7845 7851 7877 7879
+ 7816 7817 7845 7854 7876 7880
+ 7822 7833 7849 7861 7879 7885
+ 7460 7551 7753 7966 8918 9066
+ 7820 7821 7857 7862 7893 7896
+ 7810 7817 7850 7878 7880 7889
+ 7795 7813 7836 7888 7890 7914
+ 7770 7800 7811 7908 7929 7965
+ 7821 7823 7853 7860 7896 7900
+ 7640 7645 7814 7872 8049 8140 8176
+ 7777 7805 7841 7886 7961 7967
+ 7823 7825 7857 7863 7900 7901
+ 7833 7839 7851 7871 7885 7892
+ 7820 7826 7853 7870 7893 7925
+ 7825 7829 7860 7864 7901 7902
+ 7829 7863 7865 7902 7903 15387
+ 7837 7864 7868 7903 7904 15387
+ 7681 7696 7819 7844 8007 8037 8152 8198
+ 7684 7754 7842 7844 7969 8009 8018
+ 7837 7840 7865 7875 7904 7907
+ 7799 7838 7842 7916 7923 7939
+ 7826 7831 7862 7882 7925 7931
+ 7839 7848 7861 7883 7892 7906
+ 7645 7669 7858 7984 8139 8140
+ 7591 7670 7874 7995 8189 8246
+ 7591 7639 7873 7905 8189 8219
+ 7840 7843 7868 7881 7907 7912
+ 7845 7850 7877 7880 7894 7898
+ 7845 7849 7876 7879 7894 7899
+ 7810 7836 7854 7888 7889 7915 7917
+ 7849 7851 7877 7885 7899 7910
+ 7850 7854 7876 7889 7898 7909
+ 7843 7875 7912 7920
+ 7827 7831 7870 7887 7931 7953
+ 7848 7871 7906 7919
+ 7557 7669 7670 7984 7995 8311 8350
+ 7851 7861 7879 7892 7910 7918
+ 7805 7838 7859 7923 7967 8001
+ 7827 7830 7882 7895 7953 7973
+ 7836 7855 7878 7914 7915 7935 7940
+ 7854 7878 7880 7909 7917 7922
+ 7813 7846 7855 7914 7952 7970
+ 7713 7807 7814 8028 8049 8155
+ 7861 7871 7885 7906 7918 7930
+ 7853 7862 7896 7925 7945
+ 7876 7877 7898 7899 7921 7927
+ 7828 7830 7887 7913 7973 7994
+ 7853 7857 7893 7900 7945 7964
+ 7761 7771 7834 7924 7942 8109 8117
+ 7876 7880 7894 7909 7927 7932
+ 7877 7879 7894 7910 7921 7928
+ 7857 7860 7896 7901 7958 7964
+ 7860 7863 7900 7902 7951 7958
+ 7863 7864 7901 7903 7947 7951
+ 7864 7865 7902 7904 7943 7947
+ 7865 7868 7903 7907 7943 7944
+ 7639 7703 7874 7934 8219 8224
+ 7871 7883 7892 7919 7930 7941
+ 7868 7875 7904 7912 7944 7949
+ 7800 7841 7856 7965 7987 8000
+ 7880 7889 7898 7922 7932 7938
+ 7879 7885 7899 7918 7928 15388
+ 6884 7178 7730 10635 10857 11933
+ 7875 7881 7907 7920 7949 7954
+ 7824 7828 7895 7926 7994 8034
+ 7855 7888 7890 7935 7970 7974
+ 7878 7888 7917 7940 7948
+ 7842 7869 7939 7969 8006
+ 7878 7889 7915 7922 7948 7950
+ 7885 7892 7910 7930 7956 15388
+ 7883 7906 7941 7960
+ 7881 7912 7954 7959
+ 7894 7899 7927 7928 7946
+ 7889 7909 7917 7938 7950
+ 7838 7869 7886 7939 7996 8001
+ 7771 7778 7897 8045 8109 8212
+ 7862 7870 7893 7931 7945 8003
+ 7804 7824 7913 7955 8034 8095
+ 7894 7898 7921 7932 7946 7957
+ 7899 7910 7921 7946 7962 15388
+ 7811 7846 7856 7952 7965 8027 8046
+ 7892 7906 7918 7941 7956 7972
+ 7870 7882 7925 7953 8003 8016
+ 7898 7909 7927 7938 7957 7968
+ 6391 6710 7436 8666 13750 14308
+ 7703 7832 7905 8224 8307
+ 7888 7914 7940 7971 7974
+ 7807 7819 8007 8028 8110
+ 7679 7772 7794 8145 8194 8306
+ 7909 7922 7932 7950 7968 7975
+ 7869 7916 7923 7996 8006
+ 7888 7915 7935 7948 7971 7976
+ 7906 7919 7930 7960 7972 7980
+ 7834 7835 7897 7955 8117 8119
+ 7903 7904 7944 7947 7982 7985
+ 7904 7907 7943 7949 7981 7982
+ 7893 7896 7925 7964 8003 8015
+ 7921 7927 7928 7957 7962 7979
+ 7902 7903 7943 7951 7985 7989
+ 7915 7917 7940 7950 7976 7977
+ 7907 7912 7944 7954 7981 7983
+ 7917 7922 7938 7948 7975 7977
+ 7901 7902 7947 7958 7989 7999
+ 7846 7890 7929 7970 8033 8046
+ 7882 7887 7931 7973 8016 8026
+ 7912 7920 7949 7959 7983 7986
+ 7804 7835 7926 7942 8095 8119
+ 7918 7930 7972 7978 7988 15388
+ 7927 7932 7946 7968 7979 7991
+ 7900 7901 7951 7964 7999 8021
+ 7920 7954 7986 7990
+ 7919 7941 7980 7993
+ 7841 7859 7967 7987 8030 8047
+ 7928 7946 7978 7979 7992 15388
+ 7549 7592 7729 8177 8358 9305
+ 7896 7900 7945 7958 8015 8021
+ 7856 7908 7929 8000 8027 8044
+ 7551 7660 7852 8100 8935 9066
+ 7859 7886 7961 8001 8030 8083
+ 7932 7938 7957 7975 7991 8004
+ 7842 7867 7916 8006 8009 8075 8081
+ 7890 7914 7952 7974 7998 8025 8033
+ 7935 7940 7974 7976 8002 15389
+ 7930 7941 7956 7980 7988 7997
+ 7887 7895 7953 7994 8026 8054
+ 7914 7935 7970 7971 7998 15389
+ 7938 7950 7968 7977 8004 8013
+ 7940 7948 7971 7977 8002 8019
+ 7948 7950 7975 7976 8013 8019
+ 7956 7962 7988 7992 8005 15388
+ 7946 7957 7962 7991 7992 15390
+ 7941 7960 7972 7993 7997 8012
+ 7944 7949 7982 7983 8008 8010
+ 7943 7944 7981 7985 8010 8014
+ 7949 7954 7981 7986 8008 8011
+ 7669 7872 7884 8139 8350 8432
+ 7943 7947 7982 7989 8014 8022
+ 7954 7959 7983 7990 8011 8017
+ 7841 7908 7961 8000 8047 8064
+ 7956 7972 7978 7997 8005 8020
+ 7947 7951 7985 7999 8022 8038
+ 7959 7986 8017 8023
+ 7957 7968 7979 8004 8039 15390
+ 7962 7978 7979 8005 8024 15390
+ 7960 7980 8012 8029
+ 7895 7913 7973 8034 8054 8106
+ 7670 7873 7884 8246 8311 8439
+ 7923 7939 8001 8006 8089 8093
+ 7972 7980 7988 8012 8020 8035
+ 7970 7974 8025 8031 15389
+ 7951 7958 7989 8021 8038 8057
+ 7908 7965 7987 8044 8064 8074
+ 7886 7923 7967 7996 8083 8093 8162
+ 7971 7976 8019 8032 8036 15389
+ 7925 7931 7945 8015 8016 8088 8091
+ 7968 7975 7991 8013 8039 8051
+ 7978 7988 7992 8020 8024 8041
+ 7916 7939 7969 7996 8081 8089
+ 7819 7866 7936 8110 8198 8243
+ 7981 7983 8010 8011 8042 8043
+ 7867 7969 8018 8075 8136 8142
+ 7981 7982 8008 8014 8040 8043
+ 7983 7986 8008 8017 8042 8048
+ 7980 7993 7997 8029 8035 8052
+ 7975 7977 8004 8019 8051 8058
+ 7982 7985 8010 8022 8040 8050
+ 7945 7964 8003 8021 8088 8099
+ 7931 7953 8003 8026 8091 8097
+ 7986 7990 8011 8023 8048 8055
+ 7844 7867 8009 8037 8128 8136
+ 7976 7977 8002 8013 8036 8058 8069
+ 7988 7997 8005 8035 8041 8056
+ 7958 7964 7999 8015 8057 8099
+ 7985 7989 8014 8038 8050 8059
+ 7990 8017 8055 8060
+ 7992 8005 8041 8053 8063 15390
+ 7970 7998 8031 8033 8061 8076
+ 7953 7973 8016 8054 8097 8113
+ 7929 7965 8044 8046 8124 8132
+ 7807 7891 7936 8110 8155 8236
+ 7993 8012 8052 8065
+ 7961 7967 8047 8083 8114
+ 7998 8025 8032 8061 8066 15389
+ 8002 8031 8036 8066 8067 15389
+ 7952 7970 8025 8046 8076 8120
+ 7913 7926 7994 8095 8106 8171
+ 7997 8012 8020 8052 8056 8071
+ 8002 8019 8032 8067 8069
+ 7844 7866 8018 8128 8152 8223
+ 7989 7999 8022 8057 8059 8072
+ 7991 8004 8051 8053 8078 8082 15390
+ 8010 8014 8043 8050 8062 8070
+ 8005 8020 8024 8056 8063 8077
+ 8008 8011 8043 8048 8068 8073
+ 8008 8010 8040 8042 8062 8068
+ 7965 8000 8027 8074 8124 8129
+ 7772 7778 7924 8145 8212 8417
+ 7929 7952 8027 8033 8120 8132 8168
+ 7961 7987 8030 8064 8114 8143
+ 8011 8017 8042 8055 8073 8080
+ 7814 7858 7891 8155 8176 8305 8333
+ 8014 8022 8040 8059 8070 8079
+ 8004 8013 8039 8058 8078 8084
+ 8012 8029 8035 8065 8071 8086
+ 8024 8039 8063 8082 8090 15390
+ 7973 7994 8026 8106 8113 8157
+ 8017 8023 8048 8060 8080 8087
+ 8020 8035 8041 8071 8077 8094
+ 7999 8021 8038 8072 8099 8102 8141
+ 8013 8019 8051 8069 8084 8096
+ 8022 8038 8050 8072 8079 8092
+ 8023 8055 8087 8098
+ 8025 8031 8066 8076 8112
+ 8040 8043 8068 8070 8085
+ 8024 8041 8053 8077 8090 8103
+ 7987 8000 8047 8074 8143 8160
+ 8029 8052 8086 8107
+ 8031 8032 8061 8067 8104 8112
+ 8032 8036 8066 8069 8104 8111
+ 8042 8043 8062 8073 8085 8101
+ 8019 8036 8058 8067 8096 8111
+ 8040 8050 8062 8079 8085 8105
+ 8035 8052 8056 8086 8094 8116
+ 8038 8057 8059 8092 8102
+ 8042 8048 8068 8080 8101 8115
+ 8000 8044 8064 8129 8160
+ 7969 8009 8081 8138 8142 8182
+ 8025 8033 8061 8112 8120 8170
+ 8041 8056 8063 8094 8103 8123
+ 8039 8051 8082 8084 8122 8125
+ 8050 8059 8070 8092 8105 8127
+ 8048 8055 8073 8087 8115 8126
+ 7969 8006 8075 8089 8138 8161
+ 8039 8053 8078 8090 8121 8122
+ 7967 8001 8030 8114 8162 8216
+ 8051 8058 8078 8096 8125 8134
+ 8062 8068 8070 8101 8105 8130
+ 8052 8065 8071 8107 8116 8133
+ 8055 8060 8080 8098 8126 8135
+ 8003 8015 8091 8099 8179 8187
+ 7996 8006 8081 8093 8161 8190
+ 8053 8063 8082 8103 8121 8131
+ 8003 8016 8088 8097 8179 8184
+ 8059 8072 8079 8102 8127 8147
+ 7996 8001 8089 8162 8190 8213
+ 8056 8071 8077 8116 8123 8137
+ 7926 7955 8034 8119 8171 8291 15393
+ 8058 8069 8084 8111 8134 8146
+ 8016 8026 8091 8113 8184 8186
+ 8060 8087 8135 8144
+ 8015 8021 8057 8088 8141 8187 8206
+ 7660 7808 7966 8426 8742 8935
+ 8068 8073 8085 8115 8130 8149
+ 8057 8072 8092 8141 8147
+ 8063 8077 8090 8123 8131 8148
+ 8066 8067 8111 8112 8154 8183
+ 8070 8079 8085 8127 8130 8167
+ 7994 8034 8054 8157 8171 8188
+ 8065 8086 8133 8153
+ 7326 7346 7608 8722 9530 11037
+ 7897 7924 8117 8212 8401 8405
+ 7936 8007 8028 8236 8243 8364
+ 8067 8069 8096 8104 8146 8154
+ 8061 8066 8076 8104 8170 8183
+ 8026 8054 8097 8157 8186 8202
+ 8030 8047 8083 8143 8216 8252
+ 8073 8080 8101 8126 8149 8159
+ 8071 8086 8094 8133 8137 8158
+ 7897 7942 8109 8119 8344 8401
+ 7315 7437 7609 8472 8739 11028 11079
+ 7942 7955 8095 8117 8344 15393
+ 8033 8046 8076 8168 8170 8204
+ 8082 8090 8122 8131 8150 8156
+ 8078 8082 8121 8125 8156 8164
+ 8077 8094 8103 8137 8148 8163
+ 8027 8044 8129 8132 8193 8200
+ 8078 8084 8122 8134 8164 8172
+ 8080 8087 8115 8135 8159 8169
+ 8079 8092 8105 8147 8167 8201
+ 8018 8037 8136 8223 8229
+ 8044 8074 8124 8160 8193 8276
+ 8085 8101 8105 8149 8167 8181
+ 8090 8103 8121 8148 8150 8165
+ 8027 8046 8124 8168 8200 8220
+ 8086 8107 8116 8153 8158 8174
+ 8084 8096 8125 8146 8172 8191
+ 8087 8098 8126 8144 8169 8175
+ 8009 8018 8128 8142 8229 8233
+ 8094 8116 8123 8158 8163 8178
+ 8075 8081 8161 8182 8209
+ 7872 7984 8140 8420 8432
+ 7858 7872 8139 8176 8420 8452
+ 8057 8099 8102 8147 8206 8214
+ 8009 8075 8136 8182 8233 8244
+ 8047 8064 8114 8160 8252 8285
+ 8098 8135 8175 8185
+ 7772 7937 8045 8306 8417 8519
+ 8096 8111 8134 8154 8191 8203
+ 8092 8102 8127 8141 8201 8214
+ 8103 8123 8131 8163 8165 8180
+ 8101 8115 8130 8159 8181 15391
+ 8121 8131 8156 8165 8173
+ 7007 7248 7455 10752 10767 12039
+ 7866 8037 8198 8223 8296
+ 8107 8133 8174 8196
+ 8104 8111 8146 8183 8203 8215
+ 7891 8028 8049 8236 8333 8393
+ 8121 8122 8150 8164 8173 8192
+ 8054 8106 8113 8188 8202 8208
+ 8116 8133 8137 8174 8178 8197
+ 8115 8126 8149 8169 8205 15391
+ 8064 8074 8129 8143 8276 8285
+ 8081 8089 8138 8190 8209 8247
+ 8001 8083 8093 8213 8216 8293
+ 8123 8137 8148 8178 8180 8199
+ 8122 8125 8156 8172 8192 8207
+ 8131 8148 8150 8173 8180 8195
+ 7112 7332 7455 10539 10767 15544
+ 8105 8127 8130 8181 8201 8226
+ 8046 8120 8132 8204 8220 8249
+ 8126 8135 8159 8175 8205 8210
+ 8076 8112 8120 8183 8204 8234 8241
+ 8034 8095 8106 8188 8262 8291
+ 8125 8134 8164 8191 8207 8227
+ 8150 8156 8165 8192 8195 8211
+ 8133 8153 8158 8196 8197 8221
+ 8135 8144 8169 8185 8210 8222
+ 7858 8049 8140 8305 8410 8452
+ 7729 7794 7963 8194 9305 15422
+ 8137 8158 8163 8197 8199 8218
+ 8088 8091 8184 8187 8264 8290
+ 8148 8163 8165 8195 8199 8217
+ 8130 8149 8167 8226 8228 15391
+ 8075 8138 8142 8209 8244 8269
+ 8104 8112 8154 8170 8215 8241 8242
+ 8091 8097 8179 8186 8261 8264
+ 8144 8175 8222 8225
+ 8097 8113 8184 8202 8260 8261
+ 8088 8099 8179 8206 8290 8308
+ 8106 8157 8171 8208 8257 8262
+ 7873 7874 8219 8246 8458 8517
+ 8089 8093 8161 8213 8247 8284
+ 8134 8146 8172 8203 8227 8237
+ 8156 8164 8173 8207 8211 8230
+ 8124 8129 8200 8276 15392
+ 7794 7937 8177 8306 15422
+ 8165 8173 8180 8211 8217 8231
+ 8153 8174 8221 8240
+ 8158 8174 8178 8218 8221 8238
+ 7866 8007 8152 8243 8296 8373
+ 8163 8178 8180 8217 8218 8235
+ 8124 8132 8193 8220 8273 15392
+ 8127 8147 8167 8214 8226 8275 8279
+ 8113 8157 8186 8208 8255 8260
+ 8146 8154 8191 8215 8237 8248
+ 8120 8168 8170 8234 8249 8268
+ 8159 8169 8210 8239 8245 15391
+ 8099 8141 8187 8214 8297 8308
+ 8164 8172 8192 8227 8230 8254
+ 8157 8188 8202 8255 8257
+ 8138 8161 8182 8247 8269 8327
+ 8169 8175 8205 8222 8245 8250
+ 8173 8192 8195 8230 8231 8251
+ 7924 8045 8109 8405 8417 8521
+ 8093 8162 8190 8284 8293 8335
+ 8141 8147 8201 8206 8275 8297
+ 8154 8183 8203 8242 8248 8263
+ 8083 8114 8162 8252 8293 8346
+ 8180 8195 8199 8231 8235 8253
+ 8178 8197 8199 8235 8238 8256
+ 7874 7905 8189 8224 8517 8534
+ 8132 8168 8200 8249 8273 8274
+ 8174 8196 8197 8238 8240 8259
+ 8175 8185 8210 8225 8250 8258
+ 8037 8128 8152 8229 8296 8381
+ 7905 7934 8219 8307 8534 8645
+ 8185 8222 8258 8265
+ 8167 8181 8201 8228 8270 8279
+ 8172 8191 8207 8237 8254 8272 8289
+ 8181 8226 8239 8270 8277 15391
+ 8128 8136 8223 8233 8377 8381
+ 8192 8207 8211 8251 8254 8266
+ 8195 8211 8217 8251 8253 8271
+ 6494 6507 7436 11299 13750 14955
+ 8136 8142 8229 8244 8367 8377
+ 8170 8204 8241 8268 8280 8316
+ 8199 8217 8218 8253 8256 8278
+ 8028 8110 8155 8364 8393 8441
+ 8191 8203 8227 8248 8267 8272
+ 8197 8218 8221 8256 8259 8283
+ 8205 8228 8245 8277 8287 15391
+ 8196 8221 8259 8286
+ 8170 8183 8234 8242 8280 8281
+ 8183 8215 8241 8263 8281 8282
+ 8007 8110 8198 8364 8373 8535
+ 8142 8182 8233 8269 8367
+ 8205 8210 8239 8250 8287 8292
+ 7873 7995 8189 8439 8458 8630
+ 8161 8190 8209 8284 8327 8370
+ 8203 8215 8237 8263 8267 8288
+ 8168 8204 8220 8268 8274 8321
+ 8210 8222 8245 8258 8292 8298
+ 8211 8230 8231 8266 8271 8294
+ 8114 8143 8216 8285 8346 8380
+ 8217 8231 8235 8271 8278 8299
+ 8207 8227 8230 8266 8289 8295
+ 8202 8208 8257 8260 8322 8336
+ 8218 8235 8238 8278 8283 8300
+ 8188 8208 8255 8262 8322 8328
+ 8222 8225 8250 8265 8298 8302
+ 8221 8238 8240 8283 8286 8303
+ 8186 8202 8255 8261 8329 8336
+ 8184 8186 8260 8264 8329 8349
+ 8171 8188 8257 8291 8328 8374
+ 8215 8242 8248 8282 8288 8313
+ 8179 8184 8261 8290 8349 8388
+ 8225 8258 8302 8309
+ 8230 8251 8254 8294 8295 8304
+ 8237 8248 8272 8288 8301 8319
+ 8204 8234 8249 8316 8321 8357
+ 8182 8209 8244 8327 8367 8479
+ 8226 8228 8277 8279 8312 8330
+ 8231 8251 8253 8294 8299 8314
+ 8227 8237 8267 8289 8301 8310
+ 8200 8220 8274 8343 8371 15392
+ 8220 8249 8273 8321 8343
+ 8201 8214 8279 8297 8348 8362
+ 8129 8160 8193 8285 8391 8418 15392
+ 8228 8239 8270 8287 8312 8317
+ 8235 8253 8256 8299 8300 8318
+ 8201 8226 8270 8275 8330 8348
+ 8234 8241 8281 8316 8334
+ 8241 8242 8280 8282 8323 8334
+ 8242 8263 8281 8313 8323
+ 8238 8256 8259 8300 8303 8324
+ 8190 8213 8247 8335 8370
+ 8143 8160 8252 8276 8380 8418
+ 8240 8259 8303 8326
+ 8239 8245 8277 8292 8317 8325
+ 8248 8263 8267 8313 8319
+ 8227 8254 8272 8295 8310 8315
+ 8179 8187 8264 8308 8388 8416
+ 8095 8171 8262 8374 8450 15393
+ 8245 8250 8287 8298 8325 8332
+ 8162 8213 8216 8335 8346 8444
+ 8251 8266 8271 8304 8314 8331
+ 8254 8266 8289 8304 8315 8320
+ 8152 8198 8223 8373 8381 8470
+ 8206 8214 8275 8308 8362 8400
+ 8250 8258 8292 8302 8332 8338
+ 8253 8271 8278 8314 8318 8339
+ 8256 8278 8283 8318 8324 8342
+ 8267 8272 8310 8319 8340
+ 8258 8265 8298 8309 8338 8345
+ 8259 8283 8286 8324 8326 8347
+ 8266 8294 8295 8320 8331 8341
+ 8049 8176 8333 8410 8456 8461
+ 7937 8145 8194 8519 15422
+ 7832 7934 8224 8337 8643 8645
+ 8187 8206 8290 8297 8400 8416
+ 8265 8302 8345 8354
+ 8272 8289 8301 8315 8340 8351
+ 7884 7995 8350 8439 8586 8601
+ 8270 8277 8317 8330 8352 8359
+ 8263 8282 8288 8319 8323 8361
+ 8271 8294 8299 8331 8339 8356
+ 8289 8295 8310 8320 8351 8353
+ 8234 8268 8280 8334 8357 8384
+ 8277 8287 8312 8325 8352 8360
+ 8278 8299 8300 8339 8342 8363
+ 8267 8288 8301 8313 8340 8361 8386
+ 8295 8304 8315 8341 8353
+ 8249 8268 8274 8343 8357 8397
+ 8255 8257 8328 8336 8390 8404
+ 8281 8282 8313 8334 8361 8395
+ 8283 8300 8303 8342 8347 8365
+ 8287 8292 8317 8332 8360 8366
+ 8286 8303 8347 8369
+ 8209 8247 8269 8370 8462 8479
+ 8257 8262 8322 8374 8390
+ 8260 8261 8336 8349 8407
+ 8270 8279 8312 8348 8359 8387
+ 8294 8304 8314 8341 8356 8368
+ 8292 8298 8325 8338 8366 8372
+ 8049 8155 8305 8393 8461 8495
+ 8280 8281 8316 8323 8384 8395
+ 8213 8284 8293 8370 8444 8453
+ 8255 8260 8322 8329 8404 8407
+ 7808 7832 8307 8426 8643 8701
+ 8298 8302 8332 8345 8372 8376
+ 8299 8314 8318 8356 8363 8375
+ 8301 8310 8319 8351 8386 8399
+ 8304 8320 8331 8353 8368 8379
+ 8300 8318 8324 8363 8365 8378
+ 8273 8274 8321 8371 8397 8436
+ 8117 8119 8401 8516 8624 15393
+ 8302 8309 8338 8354 8376 8382
+ 8216 8252 8293 8380 8444 8464
+ 8303 8324 8326 8365 8369 8385
+ 8275 8279 8330 8362 8387 8413
+ 8261 8264 8329 8388 8407 8477
+ 7884 7984 8311 8432 8601 8688
+ 8310 8315 8340 8353 8394 8399
+ 8312 8317 8359 8360 8383 8389
+ 8315 8320 8341 8351 8379 8394
+ 8309 8345 8382 8392
+ 6345 6996 7178 10635 13535 13856
+ 8314 8331 8339 8368 8375 15394
+ 8268 8316 8321 8384 8397 8433
+ 7592 7608 7963 9305 9530 10946
+ 8312 8330 8352 8383 8387
+ 8317 8325 8352 8366 8389 8396
+ 8313 8319 8323 8386 8395 8423
+ 8275 8297 8348 8400 8413 8455
+ 8318 8339 8342 8375 8378 8398
+ 8110 8236 8243 8441 8535 8573
+ 8324 8342 8347 8378 8385 8402
+ 8325 8332 8360 8372 8396 8403
+ 8233 8244 8269 8377 8479 8507
+ 8331 8341 8356 8379 8408 15394
+ 8326 8347 8385 8406
+ 8247 8284 8327 8335 8453 8462
+ 8273 8343 8391 8436 15392 15395
+ 8332 8338 8366 8376 8403 8409
+ 8198 8243 8296 8470 8535 8613
+ 8262 8291 8328 8390 8450 8460
+ 8339 8356 8363 8398 8411 15394
+ 8338 8345 8372 8382 8409 8412
+ 8229 8233 8367 8381 8507 8529
+ 8342 8363 8365 8398 8402 8414
+ 8341 8353 8368 8394 8408 8427
+ 8252 8285 8346 8418 8464 8498
+ 8223 8229 8296 8377 8470 8529 8556
+ 8345 8354 8376 8392 8412 8419
+ 8352 8359 8387 8389 8415 8421
+ 8316 8334 8357 8395 8433 8469
+ 8347 8365 8369 8402 8406 8422
+ 8319 8340 8361 8399 8423 8442
+ 8330 8348 8359 8383 8413 8421 8435
+ 8264 8290 8349 8416 8477 8536
+ 8352 8360 8383 8396 8415 8425
+ 8322 8328 8374 8404 8460 8474
+ 8276 8371 8418 8499 15392 15395
+ 8354 8382 8419 8424
+ 8155 8236 8333 8441 8495 8539
+ 8351 8353 8379 8399 8427 8447
+ 8323 8334 8361 8384 8423 8469 8486
+ 8360 8366 8389 8403 8425 8430
+ 8321 8343 8357 8433 8436 8491
+ 8363 8375 8378 8411 8414 8431
+ 8340 8351 8386 8394 8442 8447
+ 8297 8308 8362 8416 8455 8511
+ 8109 8117 8344 8405 8624 8690
+ 8365 8378 8385 8414 8422 8434
+ 8366 8372 8396 8409 8430 8437
+ 8322 8336 8390 8407 8474 8490
+ 8109 8212 8401 8521 8690
+ 8369 8385 8422 8438
+ 8329 8336 8349 8404 8477 8490
+ 8368 8379 8427 8428 8448 15394
+ 8372 8376 8403 8412 8437 8440
+ 8176 8305 8452 8456 8676
+ 8375 8398 8428 8431 8445 15394
+ 8376 8382 8409 8419 8440 8443
+ 8348 8362 8387 8435 8455 8465
+ 8378 8398 8402 8431 8434 8449
+ 8383 8389 8421 8425 8446 8457
+ 8290 8308 8388 8400 8511 8536
+ 8045 8145 8212 8519 8521 8816
+ 8276 8285 8380 8391 8498 8499 8564
+ 8382 8392 8412 8424 8443 8451
+ 8139 8140 8432 8452 8728 8856
+ 8383 8387 8415 8435 8446
+ 8385 8402 8406 8434 8438 8454
+ 8361 8386 8395 8442 8486 8492
+ 8392 8419 8451 8459
+ 8389 8396 8415 8430 8457 8463
+ 7808 8100 8337 8701 8742 9359
+ 8379 8394 8408 8447 8448 8480
+ 8408 8411 8445 8448 8467 15394
+ 5550 6549 6996 14069 14806 14963
+ 8396 8403 8425 8437 8463 8468
+ 8398 8411 8414 8445 8449 8466
+ 7984 8139 8350 8420 8688 8856
+ 8357 8384 8397 8469 8491 8548
+ 8402 8414 8422 8449 8454 8471
+ 8387 8413 8421 8446 8465 8476
+ 8343 8371 8397 8491 8532 15395
+ 8403 8409 8430 8440 8468 8473
+ 8406 8422 8454 8475
+ 7995 8246 8311 8586 8630 8835
+ 8409 8412 8437 8443 8473 8478
+ 8236 8364 8393 8539 8573 8589
+ 8386 8399 8423 8447 8492 8501
+ 8412 8419 8440 8451 8478 8481
+ 8293 8335 8346 8453 8464 8585 8587
+ 8411 8428 8431 8466 8467 8482
+ 8415 8421 8435 8457 8476 8485
+ 8394 8399 8427 8442 8480 8501 8510
+ 8408 8427 8428 8467 8480 8489
+ 8414 8431 8434 8466 8471 8483
+ 8291 8374 8460 8516 8649 15393 15397
+ 8419 8424 8443 8459 8481 8484
+ 8140 8176 8410 8420 8676 8728
+ 8335 8370 8444 8462 8585 8598
+ 8422 8434 8438 8471 8475 8487
+ 8362 8400 8413 8465 8504 8511 15396
+ 8305 8410 8461 8544 8676
+ 8415 8425 8446 8463 8485 8493
+ 8189 8246 8517 8630 8778
+ 8424 8451 8484 8488
+ 8374 8390 8450 8474 8542 15397
+ 8305 8333 8456 8495 8544 8608
+ 8327 8370 8453 8479 8598 8615
+ 8425 8430 8457 8468 8493 8494
+ 8346 8380 8444 8498 8587 8617
+ 8413 8435 8455 8476 8504 8508
+ 8431 8445 8449 8482 8483 8496
+ 8428 8445 8448 8482 8489 8502
+ 8430 8437 8463 8473 8494 8497
+ 8384 8395 8433 8486 8543 8548
+ 8296 8373 8381 8556 8613 8699
+ 8434 8449 8454 8483 8487 8500
+ 7437 7528 8118 8881 11028 11137
+ 8437 8440 8468 8478 8497 8503
+ 8390 8404 8460 8490 8542 8568
+ 8438 8454 8487 8505
+ 8435 8446 8465 8485 8508 8523
+ 8349 8388 8407 8490 8536 8580 8626
+ 8440 8443 8473 8481 8503 8506
+ 8269 8327 8367 8462 8507 8615 8629
+ 8427 8447 8448 8489 8510 8520
+ 8443 8451 8478 8484 8506 8509
+ 8445 8466 8467 8496 8502 8514
+ 8449 8466 8471 8496 8500 8512
+ 8451 8459 8481 8488 8509 8513
+ 8446 8457 8476 8493 8523 8524
+ 8395 8423 8469 8492 8543 8569
+ 8454 8471 8475 8500 8505 8515
+ 8459 8484 8513 8518
+ 8448 8467 8480 8502 8520 8522
+ 8404 8407 8474 8477 8568 8580
+ 8397 8433 8436 8532 8548 8592
+ 8423 8442 8486 8501 8555 8569
+ 8457 8463 8485 8494 8524 8526
+ 8463 8468 8493 8497 8525 8526
+ 8333 8393 8461 8539 8608 8693
+ 8466 8482 8483 8512 8514 8527
+ 8468 8473 8494 8503 8525 8528
+ 8380 8418 8464 8564 8617 8656
+ 8391 8418 8564 8574 8662 15395
+ 8471 8483 8487 8512 8515 8530
+ 8442 8447 8492 8510 8554 8555
+ 8467 8482 8489 8514 8522 8531
+ 8473 8478 8497 8506 8528 8533
+ 8455 8465 8508 8540 15396
+ 8475 8487 8515 8537
+ 8478 8481 8503 8509 8533 8538
+ 8367 8377 8479 8529 8629 8655
+ 8465 8476 8504 8523 8540 8551
+ 8481 8484 8506 8513 8538 8541
+ 8447 8480 8501 8520 8554 8560
+ 8400 8416 8455 8536 8611 8642 15396
+ 8483 8496 8500 8527 8530 8545
+ 8484 8488 8509 8518 8541 8546
+ 8482 8496 8502 8527 8531 8547
+ 8487 8500 8505 8530 8537 8549
+ 8344 8450 8624 8649 8779 15393
+ 8189 8219 8458 8534 8778 8942
+ 8488 8513 8546 8550
+ 8145 8306 8417 8816 10106 15422
+ 8480 8489 8510 8522 8553 8560
+ 8212 8405 8417 8690 8816 9209
+ 8489 8502 8520 8531 8552 8553
+ 8476 8485 8508 8524 8551 8571 8583
+ 8485 8493 8523 8526 8566 8571
+ 8494 8497 8526 8528 8558 8559
+ 8493 8494 8524 8525 8559 8566
+ 8496 8512 8514 8545 8547 8557
+ 8497 8503 8525 8533 8558 8562
+ 8377 8381 8507 8556 8655 8670
+ 8500 8512 8515 8545 8549 8561
+ 8502 8514 8522 8547 8552 8563
+ 8436 8491 8574 8592 8652 15395
+ 8503 8506 8528 8538 8562 8565
+ 8219 8224 8517 8645 8942 9424
+ 8243 8364 8373 8573 8613 8842 8861
+ 8388 8416 8477 8511 8626 8642 8695
+ 8505 8515 8549 8567
+ 8506 8509 8533 8541 8565 8570
+ 8393 8441 8495 8589 8693 8755
+ 8504 8508 8551 8579 15396
+ 8509 8513 8538 8546 8570 8572
+ 8460 8474 8568 8658 8663 15397
+ 8469 8486 8548 8569 8610 8634
+ 8456 8461 8608 8676 8703
+ 8512 8527 8530 8557 8561 8575
+ 8513 8518 8541 8550 8572 8577
+ 8514 8527 8531 8557 8563 8576
+ 8433 8469 8491 8543 8592 8634 8661
+ 8515 8530 8537 8561 8567 8581
+ 8518 8546 8577 8582
+ 8508 8523 8540 8579 8583 15398
+ 8522 8531 8553 8563 8578 8584
+ 8520 8522 8552 8560 8584 8588
+ 8501 8510 8555 8560 8597 8622
+ 8492 8501 8554 8569 8622 8633
+ 8381 8470 8529 8670 8699 8774
+ 8527 8545 8547 8575 8576 8591
+ 8525 8528 8559 8562 8594 8595
+ 8525 8526 8558 8566 8595 8602
+ 8510 8520 8553 8554 8588 8597 8612
+ 8530 8545 8549 8575 8581 8593
+ 8528 8533 8558 8565 8594 8596
+ 8531 8547 8552 8576 8578 8590
+ 8418 8498 8499 8656 8662 8733
+ 8533 8538 8562 8570 8596 8600
+ 8524 8526 8559 8571 8602 8606
+ 8537 8549 8581 8603
+ 8474 8490 8542 8580 8663 8691
+ 8486 8492 8543 8555 8610 8633 8668
+ 8538 8541 8565 8572 8600 8604
+ 8523 8524 8566 8583 8606 8618
+ 8541 8546 8570 8577 8604 8607
+ 8364 8441 8535 8589 8818 8842
+ 8499 8532 8652 8662 8780 15395
+ 8545 8557 8561 8591 8593 8614
+ 8547 8557 8563 8590 8591 8609
+ 8546 8550 8572 8582 8607 8616
+ 8552 8563 8584 8590 8599
+ 8540 8551 8625 15396 15398 15400
+ 8477 8490 8568 8626 8691 8738
+ 8549 8561 8567 8593 8603 8620
+ 8550 8577 8616 8621
+ 8523 8551 8571 8618 8628 15398
+ 8552 8553 8578 8588 8599 8605
+ 8444 8453 8587 8598 8758 8772
+ 8311 8439 8601 8835 8927
+ 8444 8464 8585 8617 8758 8762
+ 8553 8560 8584 8605 8612 8619
+ 8441 8539 8573 8755 8818
+ 8563 8576 8578 8599 8609 8623
+ 8557 8575 8576 8609 8614 8627
+ 8491 8532 8548 8652 8661 8718
+ 8561 8575 8581 8614 8620 8632
+ 8558 8562 8595 8596 8635 8636
+ 8558 8559 8594 8602 8636 8639
+ 8562 8565 8594 8600 8635 8637
+ 8554 8560 8612 8622 8665 15401
+ 8453 8462 8585 8615 8772 8800
+ 8578 8584 8590 8605 8623 8631
+ 8565 8570 8596 8604 8637 8640
+ 8311 8350 8586 8688 8927 9139
+ 8559 8566 8595 8606 8639 15399
+ 8567 8581 8620 8644
+ 8570 8572 8600 8607 8640 8646
+ 8584 8588 8599 8619 8631 8638
+ 8566 8571 8602 8618 8647 15399
+ 8572 8577 8604 8616 8646 8648
+ 8461 8495 8544 8693 8703 8841
+ 8576 8590 8591 8623 8627 8641
+ 8543 8569 8634 8668 8698
+ 8511 8625 8642 8705 8726 15396
+ 8560 8588 8597 8619 8653 15401
+ 8373 8470 8535 8699 8861 8911
+ 8575 8591 8593 8627 8632 8650
+ 8462 8479 8598 8629 8800 8821
+ 8577 8582 8607 8621 8648 8654
+ 8464 8498 8587 8656 8762 8777
+ 8571 8583 8606 8628 8647 8651
+ 8588 8605 8612 8638 8653
+ 8581 8593 8603 8632 8644 8659
+ 8582 8616 8654 8660
+ 8554 8555 8597 8633 8665 8679
+ 8590 8599 8609 8631 8641 8657
+ 8344 8401 8516 8690 8779 9129 9162
+ 8579 8611 8700 8705 15396 15400
+ 8477 8536 8580 8695 8738 8802
+ 8591 8609 8614 8641 8650 8667
+ 8583 8618 8651 8664 8672 15398
+ 8479 8507 8615 8655 8793 8821
+ 8246 8439 8458 8778 8835 9382
+ 8599 8605 8623 8638 8657 8669
+ 8593 8614 8620 8650 8659 8671
+ 8555 8569 8622 8668 8679 8709
+ 8543 8548 8610 8661 8698 8734
+ 8594 8596 8636 8637 8674 8677
+ 8594 8595 8635 8639 8677 8682
+ 8596 8600 8635 8640 8674 8675
+ 8605 8619 8631 8653 8669 8689
+ 8595 8602 8636 8682 8684 15399
+ 8600 8604 8637 8646 8675 8678
+ 8609 8623 8627 8657 8667 8673
+ 8511 8536 8611 8695 8726 8768
+ 8307 8337 8645 8701 9296 9719
+ 8603 8620 8659 8680
+ 8224 8307 8534 8643 9424 9719
+ 8604 8607 8640 8648 8678 8681
+ 8606 8618 8651 8683 8685 15399
+ 8607 8616 8646 8654 8681 8687
+ 8450 8516 8730 8779 8846 15397
+ 8614 8627 8632 8667 8671 8686
+ 8618 8628 8647 8672 8683
+ 8532 8574 8592 8718 8780 8837
+ 8612 8619 8638 8689 8704 15401
+ 8616 8621 8648 8660 8687 8692
+ 8507 8529 8629 8670 8793 8799
+ 8498 8564 8617 8733 8777 8792
+ 8623 8631 8641 8669 8673 8694
+ 8542 8663 8730 8756 15397
+ 8620 8632 8644 8671 8680 8697
+ 8621 8654 8692 8696
+ 8548 8592 8634 8718 8734 8798
+ 8499 8564 8574 8733 8780 8838
+ 8542 8568 8658 8691 8756 8789
+ 8628 8672 8706 8711 15398 15400
+ 8597 8622 8679 8707 8737 15401
+ 6710 6724 7709 7933 12141 14308
+ 8627 8641 8650 8673 8686 8702
+ 8569 8610 8633 8698 8709 8749
+ 8631 8638 8657 8689 8694 8710
+ 8529 8556 8655 8774 8799
+ 8632 8650 8659 8686 8697 8708
+ 8628 8651 8664 8683 8711 8723
+ 8641 8657 8667 8694 8702 8712
+ 8635 8637 8675 8677 8714 8721
+ 8637 8640 8674 8678 8713 8714
+ 8410 8452 8456 8544 8703 8728 8990 9658
+ 8635 8636 8674 8682 8721 8725
+ 8640 8646 8675 8681 8713 8715
+ 8622 8633 8665 8709 8737 8759
+ 8644 8659 8697 8716
+ 8646 8648 8678 8687 8715 8717
+ 8636 8639 8677 8684 8725 8727
+ 8647 8651 8672 8685 8723 8735
+ 8639 8682 8685 8727 8731 15399
+ 8647 8683 8684 8731 8735 15399
+ 8650 8667 8671 8702 8708 8719
+ 8648 8654 8681 8692 8717 8720
+ 8350 8432 8601 8856 9139 9604
+ 8638 8653 8669 8704 8710 8740
+ 8401 8405 8521 8624 9162 9209
+ 8568 8580 8663 8738 8789 8867
+ 8654 8660 8687 8696 8720 8724
+ 8495 8539 8608 8755 8841 8999
+ 8657 8669 8673 8710 8712 8732
+ 8536 8626 8642 8768 8802 8847
+ 8660 8692 8724 15402
+ 8659 8671 8680 8708 8716 8729
+ 8610 8634 8668 8734 8749 8781
+ 8470 8556 8613 8774 8911 8998
+ 8625 8705 8706 8743 8765 15400
+ 8337 8426 8643 9296 9359
+ 8667 8673 8686 8712 8719 8736
+ 8544 8608 8676 8841 8990
+ 8653 8689 8707 8740 8767 15401
+ 8611 8625 8700 8726 8765 8808
+ 8664 8700 8711 8743 8745 15400
+ 8665 8704 8737 8767 8773 15401
+ 8671 8686 8697 8719 8729 8741
+ 8633 8668 8679 8749 8759 8803
+ 8669 8689 8694 8732 8740 8751
+ 8664 8672 8706 8723 8745 8766
+ 8673 8694 8702 8732 8736 8744
+ 8675 8678 8714 8715 8748 8752
+ 8674 8675 8713 8721 8752 8760
+ 8678 8681 8713 8717 8748 8750
+ 8680 8697 8729 8746
+ 8681 8687 8715 8720 8747 8750
+ 8592 8652 8661 8798 8837 8898
+ 8686 8702 8708 8736 8741 8754
+ 8687 8692 8717 8724 8747 8753
+ 8674 8677 8714 8725 8760 8764
+ 7346 7379 8108 10539 11037 11903
+ 8672 8683 8711 8735 8766 8786
+ 8692 8696 8720 8753 8757 15402
+ 8677 8682 8721 8727 8764 8769
+ 8611 8642 8705 8768 8808 8851
+ 8682 8684 8725 8731 8769 8776
+ 8420 8452 8676 8856 9658 9840
+ 8697 8708 8716 8741 8746 8763
+ 8649 8658 8756 8846 8853 15397
+ 8684 8685 8727 8735 8776 8782
+ 8694 8710 8712 8744 8751 8771
+ 8564 8656 8662 8792 8838 8922
+ 8634 8661 8698 8781 8798 8868
+ 8683 8685 8723 8731 8782 8786
+ 8702 8712 8719 8744 8754 8770
+ 8665 8679 8707 8759 8773 8796
+ 8580 8626 8691 8802 8867 8969
+ 7609 7753 8118 8918 11034 11079
+ 8689 8704 8710 8751 8767 8783
+ 8708 8719 8729 8754 8763 8775
+ 8100 8426 8935 9359 10199
+ 8700 8706 8745 8765 8804 8810
+ 8712 8732 8736 8770 8771 8791
+ 8706 8711 8743 8766 8804 8820
+ 8716 8729 8763 8785
+ 8717 8720 8750 8753 8784 8788
+ 8713 8715 8750 8752 8790 8797
+ 8668 8698 8709 8781 8803 8872 8877
+ 8715 8717 8747 8748 8788 8790
+ 8710 8732 8740 8771 8783 8806
+ 8713 8714 8748 8760 8797 8805
+ 8720 8724 8747 8757 8784 8787
+ 8719 8736 8741 8770 8775 8794
+ 8539 8589 8693 8818 8999 9246
+ 8658 8663 8730 8789 8853 8895
+ 8724 8753 8761 8787 8795 15402
+ 8585 8587 8762 8772 8976 9031
+ 8679 8709 8737 8796 8803 8828
+ 8714 8721 8752 8764 8805 8809
+ 8757 8795 8801 15402
+ 8587 8617 8758 8777 8939 8976
+ 8729 8741 8746 8775 8785 8807
+ 8721 8725 8760 8769 8809 8813
+ 8700 8705 8743 8808 8810 8850
+ 8711 8723 8745 8786 8820 8862
+ 8704 8707 8740 8773 8783 8814 8834
+ 8642 8695 8726 8847 8851 8912
+ 8725 8727 8764 8776 8813 8819
+ 8736 8744 8754 8791 8794 8811
+ 8732 8744 8751 8791 8806 8815
+ 8585 8598 8758 8800 9031 9078
+ 8707 8737 8767 8796 8814 8817
+ 8556 8670 8699 8799 8998 9101
+ 8741 8754 8763 8794 8807 8812
+ 8727 8731 8769 8782 8819 8832
+ 8617 8656 8762 8792 8939 8949
+ 8458 8517 8630 8942 9382 9994
+ 8516 8624 8649 8846 9049 9129
+ 8574 8652 8662 8837 8838 9039 9041
+ 8698 8734 8749 8868 8872 8905
+ 8731 8735 8776 8786 8832 8858
+ 8740 8751 8767 8806 8830 8834
+ 8747 8753 8787 8788 8824 15403
+ 8746 8763 8807 8823
+ 8723 8735 8766 8782 8858 8862
+ 8753 8757 8784 8795 8822 15403
+ 8747 8750 8784 8790 8824 8827
+ 8663 8691 8756 8867 8895 9074
+ 8748 8750 8788 8797 8827 8833
+ 8744 8770 8771 8811 8815 8829
+ 8656 8733 8777 8922 8949
+ 8629 8655 8799 8821 9133 9170
+ 8754 8770 8775 8811 8812 8826
+ 8757 8761 8787 8801 8822 8825
+ 8737 8759 8773 8817 8828 8848
+ 8748 8752 8790 8805 8833 8839
+ 8661 8718 8734 8868 8898 8982
+ 8655 8670 8774 8793 9101 9133
+ 8598 8615 8772 8821 9078 9090
+ 8761 8795 8825 8831
+ 8626 8695 8738 8847 8969 9008
+ 8709 8749 8759 8828 8877 8886
+ 8743 8745 8810 8820 8852
+ 8752 8760 8797 8809 8839 8844
+ 8751 8771 8783 8815 8830 8840
+ 8763 8775 8785 8812 8823 8836
+ 8705 8726 8765 8850 8851 8919
+ 8760 8764 8805 8813 8844 8854
+ 8743 8765 8804 8850 8852 8883
+ 8770 8791 8794 8826 8829 8843
+ 8775 8794 8807 8826 8836 8845
+ 8764 8769 8809 8819 8854 8870
+ 8767 8773 8817 8834 8849 8869
+ 8771 8791 8806 8829 8840 8860
+ 8417 8519 8521 9209 10106 10288
+ 8773 8796 8814 8848 8849 8880
+ 8573 8589 8755 8842 9246 9308
+ 8769 8776 8813 8832 8870 8875
+ 8745 8766 8804 8852 8862 8915
+ 8615 8629 8793 8800 9090 9170
+ 8787 8795 8825 8855 8857 15403
+ 8785 8807 8836 15404
+ 8784 8788 8827 8863 8871 15403
+ 8795 8801 8822 8831 8855 8859
+ 8794 8811 8812 8843 8845 8864
+ 8788 8790 8824 8833 8871 8876
+ 8759 8796 8803 8848 8886 8893
+ 8791 8811 8815 8843 8860 8873
+ 8783 8806 8834 8840 8866 8878
+ 8801 8825 8859 8865
+ 8776 8782 8819 8858 8875 8903
+ 8790 8797 8827 8839 8876 8882
+ 8767 8783 8814 8830 8869 8878 8887
+ 8439 8586 8630 8927 9382 9947
+ 8807 8812 8823 8845 8874 15404
+ 8652 8718 8780 8898 9041 9098
+ 8662 8733 8780 8922 9039 9163
+ 8797 8805 8833 8844 8882 8889
+ 8806 8815 8830 8860 8866 8879
+ 8608 8693 8703 8990 8999 9437
+ 8535 8573 8818 8861 9308 9364
+ 8811 8826 8829 8864 8873 8884
+ 8805 8809 8839 8854 8889 8904
+ 8812 8826 8836 8864 8874 8885
+ 8649 8730 8779 8853 9028 9049 9117
+ 8695 8768 8802 8912 9008 9017
+ 8796 8817 8828 8880 8893 8909
+ 8814 8817 8869 8880 8891
+ 8765 8808 8810 8883 8919 8962
+ 8726 8768 8808 8912 8919 8984
+ 8804 8810 8820 8883 8915 8943
+ 8730 8756 8846 8895 9028
+ 8809 8813 8844 8870 8904 8916
+ 8822 8825 8857 8859 8890 8894
+ 8420 8432 8688 8728 9604 9840 10227
+ 8822 8855 8863 8894 8900 15403
+ 8782 8786 8832 8862 8903 8975
+ 8825 8831 8855 8865 8890 8892
+ 8815 8829 8840 8873 8879 8901 15405
+ 8535 8613 8842 8911 9364 9423
+ 8766 8786 8820 8858 8915 8975 9012
+ 8824 8857 8871 8900 8906 15403
+ 8826 8843 8845 8884 8885 8902
+ 8831 8859 8892 8897
+ 8830 8840 8878 8879 8888 8899
+ 8691 8738 8789 8969 9074 15437
+ 8734 8781 8798 8905 8977 8982
+ 8814 8834 8849 8887 8891 8917
+ 8813 8819 8854 8875 8916 8930
+ 8824 8827 8863 8876 8906 8910
+ 8749 8781 8877 8905 8934 8967 8986
+ 8829 8843 8860 8884 8907 15405
+ 8836 8845 8885 8896 15404 15406
+ 8819 8832 8870 8903 8930 8945
+ 8827 8833 8871 8882 8910 8925
+ 8749 8803 8872 8886 8934 8948
+ 8830 8834 8866 8887 8899 8914
+ 8840 8860 8866 8888 8901 8908
+ 8817 8848 8849 8891 8909 8926
+ 7528 7730 8472 11137 11227
+ 8833 8839 8876 8889 8925 8946
+ 8810 8850 8852 8943 8962
+ 8843 8864 8873 8902 8907 8920
+ 8845 8864 8874 8902 8921 15406
+ 8803 8828 8877 8893 8948 8979
+ 8834 8869 8878 8914 8917 8947
+ 8866 8879 8899 8908 8913
+ 8839 8844 8882 8904 8946 15408
+ 8855 8859 8892 8894 8929 15407
+ 8849 8869 8880 8917 8926 8953
+ 8859 8865 8890 8897 8928 8929
+ 8828 8848 8886 8909 8979 8988
+ 8855 8857 8890 8900 8940 15407
+ 8756 8789 8853 9028 9074 9274
+ 8874 8937 15404 15406
+ 8865 8892 8928 8933
+ 8718 8798 8837 8982 9098 9167
+ 8866 8878 8888 8913 8914 8931
+ 8857 8863 8894 8906 8940 8951
+ 8860 8879 8908 8923 8924 15405
+ 8864 8884 8885 8920 8921 8938
+ 8832 8858 8875 8945 8975 9011
+ 8844 8854 8889 8916 8985 15408
+ 8781 8868 8872 8967 8977 9021
+ 8863 8871 8900 8910 8951 8957
+ 8873 8884 8920 8932 8944 15405
+ 8879 8888 8901 8913 8924 8936
+ 8848 8880 8893 8926 8988 8989
+ 8871 8876 8906 8925 8957 15410
+ 8613 8699 8861 8998 9423 9524
+ 8768 8847 8851 8984 9017 9068
+ 8888 8899 8908 8931 8936 8954
+ 8878 8887 8899 8931 8947 8955
+ 8820 8852 8862 8943 9012 9050
+ 8854 8870 8904 8930 8985 9019
+ 8869 8887 8891 8947 8953 8972
+ 7753 7852 8739 9066 10971 11034
+ 8808 8850 8851 8962 8984 9146 15421
+ 8884 8902 8907 8938 8944 8959
+ 8885 8902 8938 8950 8960 15406
+ 8733 8792 8838 8949 9163 9247
+ 8901 8924 8932 8941 8952 15405
+ 8901 8908 8923 8936 8941 8956
+ 8876 8882 8910 8946 8997 15410
+ 8880 8891 8909 8953 8989 9000
+ 8586 8601 8835 9139 9947 10103
+ 8892 8897 8929 8933 8963 8964
+ 8890 8892 8928 8964 8970 15407
+ 8870 8875 8916 8945 9010 9019
+ 8899 8913 8914 8954 8955 8965
+ 8907 8923 8944 8952 8958 15405
+ 8897 8928 8963 8966
+ 8872 8877 8948 8986 9003
+ 7966 8100 8742 9066 10199 10889
+ 8908 8913 8924 8954 8956 8968
+ 8896 8950 8974 15406
+ 8902 8920 8921 8959 8960 15409
+ 8762 8777 8949 8976 9262 9458
+ 8894 8900 8951 8978 8987 15407
+ 8923 8924 8952 8956 8961
+ 8517 8534 8778 9424 9994 10403
+ 8852 8883 8915 8962 9050 15418
+ 8907 8920 8932 8958 8959 8971
+ 8875 8903 8930 9010 9011
+ 8882 8889 8925 8997 9026 15408
+ 8887 8914 8917 8955 8972 8983 9007
+ 8877 8886 8934 8979 9003 9024
+ 8777 8792 8922 8939 9247 9262
+ 8921 8937 8960 8974 8981 15406
+ 8900 8906 8940 8957 8987 9001
+ 8923 8932 8941 8958 8961 8973
+ 8891 8917 8926 8972 9000 9018
+ 8913 8931 8936 8965 8968 8992
+ 8914 8931 8947 8965 8983
+ 8924 8936 8941 8961 8968 8980
+ 8906 8910 8951 9001 9023 15410
+ 8932 8944 8952 8971 8973 15411
+ 8920 8938 8944 8971 8991 15409
+ 8921 8938 8950 8981 15409 15412
+ 8941 8952 8956 8973 8980 8993
+ 8850 8883 8919 8943 15418 15421
+ 8928 8933 8964 8966 8994 8996
+ 8928 8929 8963 8970 8996 9004
+ 8931 8954 8955 8983 8992 9016
+ 8933 8963 8994 8995
+ 8872 8905 8986 9021 9035 9079
+ 8936 8954 8956 8980 8992 9005
+ 8738 8802 8867 9008 9325 15437
+ 8929 8964 8978 9004 9014 15407
+ 8944 8958 8959 8991 9002 15411
+ 8917 8947 8953 9007 9018 9047
+ 8952 8958 8961 8993 9006 15411
+ 8937 8950 8981 9009
+ 8858 8862 8903 9011 9012 9137 15424
+ 8758 8762 8939 9031 9458 9584
+ 8868 8905 8982 9021 9057 9124
+ 8940 8970 8987 9014 9034 15407
+ 8886 8893 8948 8988 9024 9054 9084
+ 8956 8961 8968 8993 9005 9015
+ 8950 8960 8974 9009 9022 15412
+ 8798 8868 8898 8977 9124 9167 9188
+ 8947 8955 8965 9007 9016 9043
+ 8851 8912 8919 9068 9146 9226
+ 8904 8916 9019 9063 9123 15408
+ 8872 8934 8967 9003 9035 9065
+ 8940 8951 8978 9001 9034 9048
+ 8893 8909 8979 8989 9038 9044 9054
+ 8909 8926 8988 9000 9038 15413
+ 8676 8703 8841 9437 9658 9934
+ 8959 8971 9002 9013 9033 15409
+ 8954 8965 8968 9005 9016 9040
+ 8961 8973 8980 9006 9015 9029
+ 8963 8966 8995 8996 9025 9030
+ 8966 8994 9025 9027
+ 8963 8964 8994 9004 9030 9036
+ 8925 8946 9026 9081 15410 15414
+ 8699 8774 8911 9101 9524 9748
+ 8693 8755 8841 9246 9437 9979
+ 8926 8953 8989 9018 9061 15413
+ 8951 8957 8987 9023 9048 9073
+ 8971 8991 9020 9032 9033 15411
+ 8934 8948 8986 9024 9065 9119
+ 8964 8970 8996 9014 9036 9052
+ 8968 8980 8992 9015 9040 9042
+ 8973 8993 9020 9029 9037 15411
+ 8947 8972 8983 9043 9047 9088
+ 8802 8847 8969 9017 9294 9325
+ 8974 8981 9022 9045
+ 8930 8945 9011 9019 9134 9158
+ 8903 8945 8975 9010 9134 15424
+ 8862 8915 8975 9050 9137 9198
+ 8991 9033 9053 9058 15409 15412
+ 8970 8978 9004 9034 9052 9069
+ 8980 8993 9005 9029 9042 9055
+ 8965 8983 8992 9040 9043 9067
+ 8847 8912 9008 9068 9294 9367
+ 8953 8972 9000 9047 9061 15417
+ 8916 8930 8985 9010 9123 9158
+ 9002 9006 9032 9037 9051 15411
+ 8905 8967 8977 9057 9079 9112
+ 8981 9009 9045 9059 9072 15412
+ 8957 9001 9073 9099 15410 15414
+ 8948 8979 9003 9084 9109 9119
+ 8994 8995 9027 9030 9046 9056
+ 8946 8997 9063 9081 15408 15423
+ 8995 9025 9045 9046
+ 8846 8853 8895 9117 9274 15451
+ 8993 9006 9015 9037 9055 9062
+ 8994 8996 9025 9036 9056 9064
+ 8758 8772 8976 9078 9543 9584
+ 9002 9020 9033 9051 9060
+ 8991 9002 9013 9032 9053 9060 9070
+ 8978 8987 9014 9048 9069 9096
+ 8967 8986 9065 9079 9114
+ 8996 9004 9030 9052 9064 9082
+ 9006 9020 9029 9051 9062 9071
+ 8988 8989 9044 9075 9077 15413
+ 8780 8838 9041 9163 9255 9389 9472
+ 8992 9005 9016 9042 9067 9083 9087
+ 8780 8837 9039 9098 9255 9316
+ 9005 9015 9040 9055 9083 9085
+ 8983 9007 9016 9067 9088 9097
+ 8988 9038 9054 9075 9106
+ 9009 9022 9027 9046 9072 15415
+ 9025 9027 9045 9056 9076 15415
+ 8972 9007 9018 9088 9116 15417
+ 8987 9001 9034 9073 9096 15425
+ 8779 8846 9117 9129 9550 9661
+ 8915 8943 9012 9198 9236 15418
+ 9020 9032 9037 9060 9071 15416
+ 9004 9014 9036 9069 9082 15419
+ 9013 9033 9058 9070 9080
+ 8979 8988 9044 9084 9106 9155
+ 9015 9029 9042 9062 9085 9092
+ 9025 9030 9046 9064 9076 9086
+ 8977 9021 9112 9124 9130
+ 9013 9053 9059 9080 9089 15412
+ 9022 9058 9072 9089 9094 15412
+ 9032 9033 9051 9070 9091 15416
+ 9000 9018 9093 9113 15413 15417
+ 9029 9037 9055 9071 9092 9095
+ 8985 9026 9123 9182 15408 15423
+ 9030 9036 9056 9082 9086 9103
+ 8986 9003 9035 9114 9119 9166
+ 7852 7966 8918 8935 10889 10971
+ 9016 9040 9043 9087 9097 9102
+ 8912 8984 9017 9226 9367
+ 9014 9034 9052 9096 9141 15419
+ 9033 9053 9060 9080 9091 9100
+ 9037 9051 9062 9095 9104 15416
+ 9022 9045 9059 9094 9105 15415
+ 9001 9023 9048 9099 9160 15425
+ 8789 8867 8895 9274 15437 15475
+ 9038 9044 9077 9106 9132 9136
+ 9046 9056 9086 9107 9108 15415
+ 9038 9075 9093 9132 9143 15413
+ 8772 8800 9031 9090 9543 9649
+ 8967 9021 9035 9112 9114 9195
+ 9053 9058 9070 9089 9100 9111
+ 8997 9026 9128 9156 15414 15423
+ 9036 9052 9064 9103 9126 15419
+ 9040 9042 9085 9087 9110 15420
+ 8979 9024 9054 9109 9155 9179
+ 9042 9055 9083 9092 9110 9118
+ 9056 9064 9076 9103 9107 9121
+ 9040 9067 9083 9102 9120 15420
+ 9007 9043 9047 9097 9116 9154 9165
+ 9058 9059 9080 9094 9111 9122
+ 8800 8821 9078 9170 9649 9731
+ 9060 9070 9100 9115 9127 15416
+ 9055 9062 9085 9095 9118 9125
+ 9061 9077 9113 9143 9161 15413
+ 9059 9072 9089 9105 9122 9138
+ 9062 9071 9092 9104 9125 9135
+ 9034 9048 9069 9141 9184 15425
+ 9043 9067 9088 9102 9140 9154
+ 8837 8898 9041 9167 9316 9433
+ 9023 9073 9128 9160 9190 15414
+ 9070 9080 9091 9111 9127 9144
+ 8774 8799 8998 9133 9748 9970
+ 9067 9087 9097 9120 9140 9147
+ 9064 9082 9086 9121 9126 9145
+ 9071 9095 9115 9135 9148 15416
+ 9072 9094 9108 9138 9151 15415
+ 9044 9054 9075 9136 9155 9174
+ 9076 9086 9108 9121 9153 15427
+ 9076 9105 9107 9151 15415 15427
+ 9024 9084 9119 9179 9183
+ 9083 9085 9118 9131 9142 15420
+ 9080 9089 9100 9122 9144 9152
+ 9021 9057 9079 9130 9195 9220
+ 9061 9093 9149 9161 9192 15417
+ 9035 9065 9079 9166 9195 9228
+ 9091 9104 9127 9148 9159 15416
+ 9047 9088 9149 9165 9185 15417
+ 8846 9028 9049 9550 15451
+ 9085 9092 9110 9125 9142 9157
+ 9003 9024 9065 9109 9166 9183 9231
+ 9087 9102 9147 9150 15420
+ 9086 9103 9107 9145 9153
+ 9089 9094 9111 9138 9152 15426
+ 8985 9019 9063 9158 9182 9269 9273
+ 8977 8982 9057 9130 9188 9234 9250
+ 9092 9095 9118 9135 9157 9169
+ 9082 9103 9145 9164 9172 15419
+ 9091 9100 9115 9144 9159 9171
+ 9081 9099 9156 9190 9208 15414
+ 8624 8779 9049 9162 9661 9964
+ 9057 9112 9124 9220 9234
+ 9110 9142 9150 9168 15420
+ 9075 9077 9136 9143 9187 9191
+ 8793 8799 9101 9170 9809 9970
+ 9010 9011 9158 9289 9301 15424
+ 9095 9104 9125 9148 9169 9175
+ 9075 9106 9132 9174 9191
+ 8975 9012 9198 9280 9312 15424
+ 9094 9105 9122 9151 9176 15426
+ 8601 8688 8927 9604 10103 10240
+ 9097 9102 9147 9154 9173 9181
+ 9069 9096 9164 9184 9221 15419
+ 9110 9118 9131 9157 9168 9180
+ 9077 9093 9132 9161 9187 9201
+ 9100 9111 9127 9152 9171 9178
+ 9103 9121 9126 9153 9172 9177
+ 8919 8984 9226 9352 9468 15421
+ 9102 9120 9140 9150 9173 9189
+ 9104 9115 9135 9159 9175 9186
+ 9113 9116 9185 9192 9217 15417
+ 9120 9131 9147 9168 9189 9200 15420
+ 9105 9108 9138 9176 9193 15427
+ 9111 9122 9144 9178 9196 15426
+ 9107 9121 9145 9177 9194 15427
+ 9088 9097 9140 9165 9181 9202
+ 9054 9084 9106 9174 9179 9229 9238
+ 9081 9128 9208 9213 15423
+ 9118 9125 9142 9169 9180 9197
+ 9010 9019 9123 9134 9273 9301
+ 9115 9127 9148 9171 9186 9199
+ 9073 9099 9190 9214 9257 15425
+ 9093 9113 9143 9192 9201 9223
+ 8624 8690 9129 9209 9964 10325
+ 8838 8922 9039 9247 9472 9605
+ 9126 9141 9172 9221 9227 15419
+ 9088 9116 9154 9185 9202 9225
+ 9065 9114 9119 9228 9231 9264
+ 8898 8982 9098 9188 9321 9368 9433
+ 9131 9142 9150 9180 9200 9207
+ 9125 9135 9157 9175 9197 9203
+ 8793 8821 9090 9133 9731 9809
+ 9127 9144 9159 9178 9199 9206
+ 9126 9145 9164 9177 9215 9227
+ 9140 9147 9181 9189 9219
+ 9106 9136 9155 9191 9229 9232
+ 9135 9148 9169 9186 9203 9210
+ 9138 9151 9193 9204 9211 15426
+ 9145 9153 9172 9194 9212 9215
+ 9144 9152 9171 9196 9206 9216
+ 9084 9109 9155 9183 9238 9261
+ 9142 9157 9168 9197 9207 15428
+ 9140 9154 9173 9202 9219 9243
+ 9063 9123 9213 9269 15423 15435
+ 9109 9119 9179 9231 9261 9275
+ 9096 9141 9214 9221 9279 15425
+ 9116 9149 9165 9217 9225 9235
+ 9148 9159 9175 9199 9210 15429
+ 9132 9143 9191 9201 9218 9222
+ 8982 9124 9167 9250 9310 9321
+ 9147 9150 9173 9200 9219 9239
+ 9099 9128 9160 9208 9257 9298
+ 9132 9136 9174 9187 9222 9232
+ 9113 9149 9161 9217 9223 9260
+ 9151 9176 9205 9211 15427 15430
+ 9153 9177 9205 9212 9224 15427
+ 9079 9112 9114 9220 9228 9346 9347
+ 9152 9178 9204 9216 15426 15431
+ 9157 9169 9180 9203 9230 15428
+ 9012 9050 9137 9236 9312 9366
+ 9159 9171 9186 9206 9233 15429
+ 9150 9168 9189 9207 9237 9239
+ 9143 9161 9187 9218 9223 9242
+ 9154 9165 9181 9225 9243 9256
+ 9169 9175 9197 9210 9230 15432
+ 9176 9196 9211 9240 15426 15431
+ 9193 9194 9224 9241 15427 15430
+ 9171 9178 9199 9216 9233 9244
+ 9168 9180 9200 9237 9245 15428
+ 9128 9156 9190 9213 9298 15439
+ 8521 8690 8816 9162 10288 10325
+ 9175 9186 9203 9249 15429 15432
+ 9176 9193 9204 9240 9248 15430
+ 9177 9194 9215 9224 9252
+ 9156 9182 9208 15423 15435 15439
+ 9160 9184 9257 9279 9340 15425
+ 9172 9177 9212 9227 9252 9290
+ 9178 9196 9206 9244 9253 15431
+ 9149 9185 9192 9235 9260 9284
+ 9187 9201 9222 9242 9254
+ 9173 9181 9189 9239 9243 9266 9268
+ 9112 9130 9195 9234 9342 9346
+ 9141 9164 9184 9227 9279 9319
+ 9187 9191 9218 9232 9254 9265
+ 9161 9192 9201 9242 9260 9270
+ 9194 9205 9212 9241 9252
+ 9165 9185 9202 9235 9256 9277
+ 8984 9068 9146 9367 9468 9680
+ 9164 9172 9215 9221 9290 9319
+ 9114 9166 9195 9264 9333 9347
+ 9155 9174 9232 9238 9297 9307
+ 9197 9203 9251 9263 15428 15432
+ 9119 9166 9183 9264 9275 9309
+ 9174 9191 9222 9229 9265 9307
+ 9199 9206 9244 9259 9271 15429
+ 9124 9130 9220 9250 9339 9342
+ 9185 9217 9225 9277 9284
+ 9050 9198 9287 9366 15418 15455
+ 9200 9207 9239 9245 9267 9272
+ 9155 9179 9229 9261 9297 9327
+ 9189 9200 9219 9237 9266 9267
+ 9204 9211 9248 15431 15433 15434
+ 9205 9224 9252 9258 9278 15430
+ 9201 9218 9223 9254 9270 9288
+ 9181 9202 9219 9256 9268 9295
+ 9206 9216 9233 9253 9271 9282
+ 9207 9237 9251 9272 9281 15428
+ 8755 8818 8999 9308 9979 10207
+ 8922 8949 9163 9262 9605 9692
+ 9211 9240 9258 9283 15430 15434
+ 9210 9259 9276 9286 15429 15432
+ 9124 9188 9234 9310 9339 9358
+ 9230 9245 9263 9281 9291 15428
+ 9212 9215 9224 9241 9278 9290 9311
+ 9216 9244 9282 9292 15431 15433
+ 9218 9222 9242 9265 9288 9328
+ 9039 9041 9316 9389 9517
+ 9202 9225 9243 9277 9295 15436
+ 9160 9190 9214 9298 9340 15448
+ 9241 9248 9278 9283 9293 15430
+ 9233 9249 9271 9286 9299 15429
+ 9192 9217 9223 9270 9284 9320 9329
+ 9179 9183 9238 9275 9327 9365 9374 9377
+ 8939 8949 9247 9458 9692 9974
+ 9230 9251 9276 9291 9304 15432
+ 9166 9228 9231 9309 9333 15441
+ 9222 9232 9254 9307 9328 9338
+ 9219 9239 9267 9268 9285 9300
+ 9237 9239 9266 9272 9300 9303
+ 9219 9243 9266 9285 9295 9302
+ 9123 9182 9273 15435 15446 15457
+ 9223 9242 9260 9288 9313 9320
+ 9233 9244 9259 9282 9299 9314
+ 9237 9245 9267 9281 9303 9315
+ 9123 9158 9269 9301 9411 15446
+ 8895 9028 9074 9885 15451 15475
+ 9183 9231 9261 9309 9365 9371
+ 9249 9263 9286 9304 9317 15432
+ 9225 9235 9256 9284 9349 15436
+ 9241 9252 9258 9293 9311 9322
+ 9184 9214 9221 9319 9340 9387
+ 9137 9289 9312 9452 9482 15424
+ 9245 9251 9272 9291 9315 9323
+ 9244 9253 9271 9292 9314 9324
+ 9248 9258 9293 9318 15434 15438
+ 9217 9235 9260 9277 9329 9349 9351
+ 9266 9268 9300 9302 9326
+ 9249 9259 9276 9299 9317 9330
+ 9236 9352 9533 15418 15421 15455
+ 9242 9254 9270 9313 9328 9335
+ 9134 9280 9301 9478 9482 15424
+ 9215 9227 9252 9311 9319 9344 9369
+ 9251 9263 9281 9304 9323 9332
+ 9253 9282 9306 9324 9334 15433
+ 9258 9278 9283 9322 15438
+ 9008 9017 9325 9367 9640 9698
+ 9243 9256 9268 9302 9343 9354 15436
+ 8643 8701 9359 9719 10573 10666
+ 9229 9238 9307 9327 9362 9375
+ 9190 9208 9257 9510 15439 15448
+ 9259 9271 9286 9314 9330 9337
+ 9266 9267 9285 9303 9326 9331
+ 9134 9158 9273 9289 9411 9478
+ 9268 9285 9295 9326 9336 9343
+ 9267 9272 9300 9315 9331 15440
+ 9263 9276 9291 9317 9332 9341
+ 7963 8177 8358 10865 10946 11175 15422
+ 9292 9318 9334 9348 15433 15434
+ 9229 9232 9265 9297 9338 9362 15444
+ 8818 8842 9246 9364 9835 10207
+ 9231 9264 9275 9370 9371 15441
+ 9188 9250 9321 9358 9401
+ 9252 9278 9290 9322 9344 15443
+ 9137 9198 9280 9366 9452 9538
+ 9270 9288 9320 9335 9345
+ 9271 9282 9299 9324 9337 9350
+ 9272 9281 9303 9323 15440 15442
+ 9041 9098 9255 9433 9517 9656
+ 9276 9286 9304 9330 9341 9353
+ 9283 9306 9348 9355 15434 15438
+ 9221 9227 9279 9290 9369 9387 15450
+ 9260 9270 9313 9329 9345 9357
+ 9167 9188 9310 9368 9401 9408
+ 9278 9293 9311 9360 15438 15443
+ 9281 9291 9315 9332 9361 15442
+ 9282 9292 9314 9334 9350 9363
+ 8969 9008 9294 9640 9761 15437
+ 9285 9300 9302 9331 9336 9356
+ 9238 9261 9297 9374 9375 9395
+ 9254 9265 9288 9335 9338 9383 9388
+ 9260 9284 9320 9351 9357 15445
+ 9286 9299 9317 9337 9353 9373
+ 9300 9303 9326 9356 9372 15440
+ 9291 9304 9323 9341 9361 9376
+ 9228 9264 9347 9404 15441 15452
+ 9292 9306 9324 9348 9363 9381
+ 9288 9313 9328 9345 9383 9386
+ 9302 9326 9343 9356 9380
+ 9299 9314 9330 9350 9373 9385
+ 9265 9307 9328 9388 9400 15444
+ 9234 9250 9342 9358 9457 9466
+ 9214 9257 9279 9387 9462 15448
+ 9304 9317 9332 9353 9376 9390
+ 9220 9234 9339 9346 9457 9487
+ 9295 9302 9336 9354 9380 9396
+ 9290 9311 9369 9402 15443
+ 9313 9320 9335 9357 9379 9386
+ 9195 9220 9342 9347 9421 9487 9488
+ 9195 9228 9333 9346 9421 15452
+ 9306 9318 9334 9355 9381 9394
+ 9277 9284 9351 9378 9399 9413 15436
+ 9314 9324 9337 9363 9385 9393
+ 9284 9329 9349 9399 9405 15445
+ 9146 9287 9468 9533 15421 15474
+ 9317 9330 9341 9373 9390 9398
+ 9295 9343 9378 9396 9416 15436
+ 9318 9348 9360 9394 9403 15438
+ 9326 9331 9336 9372 9380 9392
+ 9320 9329 9345 9379 9397 15445
+ 9250 9310 9339 9401 9466 9484
+ 8426 8701 8742 9296 10199 10666
+ 9322 9355 9403 9409 15438 15443
+ 9323 9332 9376 9391 15442 15447
+ 9297 9307 9375 9419 15444 15449
+ 9324 9334 9350 9381 9393 9406
+ 8842 8861 9308 9423 9835 9941
+ 9261 9275 9371 9377 9414 9428
+ 9198 9236 9312 9538 9612 15455
+ 9017 9068 9226 9294 9680 9698 9863
+ 9167 9321 9408 9433 9586 9632
+ 9290 9319 9344 9402 9465 15450
+ 9309 9371 9415 9427 15441
+ 9275 9309 9365 9370 9427 9428
+ 9331 9356 9384 9392 9407 15440
+ 9330 9337 9353 9385 9398 9410
+ 9261 9327 9377 9395 9420 9426
+ 9297 9327 9362 9395 9419 9431
+ 9332 9341 9361 9390 9417 15447
+ 9261 9365 9374 9414 9426
+ 9349 9354 9413 9416 9436 15436
+ 9345 9357 9386 9397 9412
+ 9336 9343 9356 9392 9396 9418
+ 9334 9348 9363 9394 9406 15454
+ 8630 8778 8835 9947 9994 10462
+ 9328 9335 9386 9388 9422 9430
+ 9372 9391 9407 9425 15440 15442
+ 9337 9350 9373 9393 9410 9429
+ 9335 9345 9379 9383 9412 9422
+ 9279 9319 9340 9462 15450 15462
+ 9328 9338 9383 9400 9430 9439
+ 9039 9255 9472 9517 9671
+ 9341 9353 9376 9398 9417 9432
+ 9361 9384 9425 9434 15442 15447
+ 9356 9372 9380 9407 9418 9440
+ 9350 9363 9385 9406 9429 15456
+ 9348 9355 9381 9403 9444 15454
+ 9327 9374 9375 9420 9431 9442
+ 9343 9354 9380 9416 9418 9453
+ 9357 9379 9412 9438 15445 15453
+ 9353 9373 9390 9410 9432 9441
+ 9349 9351 9405 9413 9445 9450
+ 9338 9388 9435 9439 9456 15444
+ 9310 9321 9358 9408 9484 9512
+ 9344 9369 9409 9465 9469 15443
+ 9355 9360 9394 9409 9444 9463
+ 9333 9415 9479 9494 15441 15452
+ 9351 9399 9445 9449 15445 15453
+ 9363 9381 9393 15454 15456 15458
+ 9372 9384 9392 9425 9440 9447
+ 9321 9368 9401 9512 9586
+ 9360 9402 9403 9463 9469 15443
+ 9373 9385 9398 9429 9441 9451
+ 9273 9301 9478 9534 15446 15473
+ 9379 9386 9397 9422 9438 9446
+ 9349 9378 9399 9436 9450 9470
+ 9365 9377 9426 9428 9454 9501
+ 9370 9404 9427 9479 9480 15441
+ 9354 9378 9396 9436 9453 9459
+ 9376 9390 9432 9443 9455 15447
+ 9380 9392 9396 9440 9453 9471
+ 9362 9375 9431 9461 15449 15459
+ 9374 9395 9426 9442 9448
+ 9346 9347 9488 9502 15452
+ 9383 9386 9412 9430 9446 9460
+ 8861 8911 9364 9524 9941 9988
+ 8534 8645 8942 9719 10403 10548
+ 9384 9391 9407 9434 9447 9464
+ 9374 9377 9414 9420 9448 9454
+ 9370 9371 9415 9428 9480 9490
+ 9365 9371 9414 9427 9490 9501
+ 9385 9393 9410 9451 9475 15456
+ 9383 9388 9422 9439 9460 9477
+ 9375 9395 9419 9442 9476 15459
+ 9390 9398 9417 9441 9455 9473
+ 9098 9167 9316 9368 9632 9656 9815
+ 9391 9425 9443 9464 9481 15447
+ 9400 9456 9474 9492 15444 15449
+ 9378 9413 9416 9459 9470 9493
+ 8841 8990 8999 9934 9979 10343
+ 9397 9412 9446 9467 9483 15453
+ 9388 9400 9430 9456 9477 9495
+ 9392 9407 9418 9447 9471 9489
+ 9398 9410 9432 9451 9473 9485
+ 9395 9420 9431 9448 9476 9486
+ 9417 9434 9455 9481 15447 15461
+ 9394 9403 9463 15454 15460 15464
+ 9399 9405 9449 9450 9496 9500
+ 9412 9422 9438 9460 9483 9498
+ 9407 9425 9440 9464 9489 9503
+ 9420 9426 9442 9454 9486 9499
+ 9405 9445 9467 9496 9504 15453
+ 9399 9413 9445 9470 9500 9509
+ 9410 9429 9441 9475 9485 9507
+ 9280 9312 9482 9538 9645
+ 9396 9416 9418 9459 9471 9511 9518
+ 9414 9426 9448 9499 9501 9525
+ 9417 9432 9443 9473 9506 15461
+ 9400 9435 9439 9492 9495 9520
+ 9339 9342 9466 9487 9595 9615
+ 8939 8976 9262 9584 9917 9974
+ 9416 9436 9453 9493 9518 9521
+ 9422 9430 9446 9477 9498 15463
+ 9419 9474 9505 9515 15449 15459
+ 9340 9387 9581 9597 15448 15462
+ 9403 9409 9444 9469 9545 15464
+ 9425 9434 9447 9481 9503 9516
+ 9369 9402 9469 9568 9569 15450
+ 9339 9358 9457 9484 9595 9600
+ 9438 9449 9483 9504 9514 15453
+ 9146 9226 9352 9680 15474 15480
+ 9402 9409 9463 9465 9545 9569
+ 9413 9436 9450 9493 9509 9523
+ 9418 9440 9453 9489 9511 9522
+ 9039 9163 9389 9605 9671 9824
+ 9432 9441 9455 9485 9506 9513
+ 9435 9461 9492 9515 9531 15449
+ 9429 9451 9491 9507 9532 15456
+ 9431 9442 9486 9497 9519 15459
+ 9430 9439 9460 9495 9528 15463
+ 9289 9301 9411 9482 9676 15473
+ 9404 9415 9480 9494 9553 9572
+ 9415 9427 9479 9490 9548 9553
+ 9434 9443 9464 9516 9526 15461
+ 9280 9289 9452 9478 9645 9676 9742
+ 9438 9446 9467 9498 9514 9527
+ 9358 9401 9466 9512 9600 9623
+ 9441 9451 9473 9507 9513 9529
+ 9442 9448 9476 9499 9519 9536
+ 9342 9346 9457 9488 9614 9615 9663
+ 9346 9421 9487 9502 9582 9614
+ 9440 9447 9471 9503 9522 9535
+ 9427 9428 9480 9501 9548 9559
+ 9475 9508 9532 9546 15456 15458
+ 9435 9456 9474 9520 9531 9554
+ 9436 9459 9470 9521 9523 9547
+ 9404 9479 9502 9572 9587 15452
+ 9439 9456 9477 9520 9528 9551
+ 9445 9449 9500 9504 9537 9540
+ 9476 9505 9519 9539 15459
+ 9446 9460 9483 9527 9542 15463
+ 9448 9454 9486 9525 9536 9565
+ 9445 9450 9496 9509 9537 9541
+ 9414 9428 9454 9490 9525 9559 9575
+ 9421 9488 9494 9582 9587 15452
+ 9447 9464 9489 9516 9535 9556
+ 9449 9467 9496 9514 9540 9549
+ 9461 9497 9515 9539 9557 15459
+ 9455 9473 9513 9544 9561 15461
+ 9451 9475 9485 9529 9532 9566
+ 9491 9546 9570 15458 15460 15465
+ 9450 9470 9500 9523 9541 9558
+ 9298 9552 9581 9697 9714 15439 15448
+ 9453 9471 9518 9522 9555 9562
+ 9401 9408 9484 9586 9623 9666
+ 9473 9485 9506 9529 9560 9561
+ 9467 9483 9504 9527 9549 9563
+ 9461 9474 9505 9531 9557 9573
+ 9464 9481 9503 9526 9556 9567
+ 9255 9316 9389 9656 9671 9822
+ 9453 9459 9511 9521 9555 9574
+ 9476 9486 9497 9536 9539 9571
+ 9456 9492 9495 9551 9554 9579
+ 9459 9493 9518 9547 9574 9580
+ 9471 9489 9511 9535 9562 9576
+ 9470 9493 9509 9547 9558 9578
+ 8911 8998 9423 9748 9988 9999
+ 9454 9499 9501 9565 9575 9593
+ 9481 9516 9544 9567 15461 15468
+ 9483 9498 9514 9542 9563 9577
+ 9477 9495 9551 9564 9583 15463
+ 9485 9507 9513 9560 9566 15466
+ 7608 8108 8358 10946 11037 11492
+ 9474 9492 9515 9554 9573 9588
+ 9475 9491 9507 9546 9566 9585
+ 9287 9352 9744 15455 15474 15478
+ 9411 9727 15446 15457 15473 15476
+ 9489 9503 9522 9556 9576 15467
+ 9486 9499 9519 9565 9571 9592
+ 9496 9500 9540 9541
+ 9312 9366 9452 9612 9645 9702
+ 9497 9505 9519 9557 9571 9589
+ 9496 9504 9537 9549
+ 9500 9509 9537 9558
+ 9498 9527 9564 9577 9591 15463
+ 9031 9078 9584 9649 9922 10049
+ 9506 9526 9561 9619 15461 15468
+ 9463 9469 9569 9599 9637 9659 15464
+ 9491 9508 9532 9570 9585 9603
+ 9493 9521 9523 9578 9580 9596
+ 9480 9490 9553 9559 9610 9611
+ 9504 9514 9540 9563
+ 9049 9117 9661 10042 10046 15451
+ 9495 9520 9528 9579 9583 9601
+ 9510 9714 9755 15435 15439 15457 15476
+ 9479 9480 9548 9572 9611 9622
+ 9492 9520 9531 9579 9588 15469
+ 9511 9518 9562 9574 9590 9594
+ 9503 9516 9535 9567 9607 15467
+ 9505 9515 9539 9573 9589 9602
+ 9509 9523 9541 9578
+ 9490 9501 9548 9575 9610 9617
+ 9513 9529 9561 9613 15466
+ 9506 9513 9544 9560 9613 9619
+ 9511 9522 9555 9576 9594 9608
+ 9514 9527 9549 9577
+ 9528 9542 9583 9591 9606 15463
+ 9499 9525 9536 9592 9593 9620
+ 9507 9529 9532 9585 9598 15466
+ 9516 9526 9556 9607 15468
+ 9465 9569 9644 9650 15450 15462 15472
+ 9465 9469 9545 9568 9637 9650
+ 9508 9546 9603 15465 15470
+ 9519 9536 9539 9589 9592 9616
+ 9479 9494 9553 9587 9622 9652
+ 9515 9531 9557 9588 9602 9618
+ 9518 9521 9555 9580 9590 9609
+ 9501 9525 9559 9593 9617 9627
+ 9522 9535 9562 9608 9621 15467
+ 9527 9542 9563 9591
+ 9523 9547 9558 9596
+ 9520 9551 9554 9601 9625 15469
+ 9521 9547 9574 9596 9609 15471
+ 9462 9510 9597 9684 9697 15448
+ 9488 9502 9587 9614 9646 9667
+ 9528 9551 9564 9601 9606 9624
+ 8976 9031 9458 9543 9917 9922 10108
+ 9532 9546 9566 9598 9603 9628
+ 9368 9408 9512 9632 9666 9715
+ 9494 9502 9572 9582 9646 9652
+ 9531 9554 9573 9618 9631 15469
+ 9539 9557 9571 9602 9616 9630
+ 9555 9574 9594 9609 9626
+ 9542 9564 9577 9606
+ 9536 9565 9571 9616 9620 9636
+ 9525 9565 9575 9620 9627 9641
+ 9555 9562 9590 9608 9626 9633
+ 9457 9466 9600 9615 9678 9688
+ 9547 9578 9580 15471
+ 9462 9581 9684 9686 15462 15472
+ 9566 9585 9628 9629 15466
+ 9545 9659 15464 15465 15470 15477
+ 9466 9484 9595 9623 9678 9696
+ 9551 9579 9583 9624 9625 9638
+ 9557 9573 9589 9618 9630 9639
+ 9546 9570 9585 9628 9654 15470
+ 8688 8856 9139 10227 10240 10518
+ 9163 9247 9472 9692 9824 9951
+ 9564 9583 9591 9624
+ 9556 9567 9647 9651 9675 15467 15468
+ 9562 9576 9594 9621 9633 9643
+ 9574 9580 9590 9626 9635 15471
+ 9548 9559 9611 9617 9634 9648
+ 9548 9553 9610 9622 9634 9657
+ 9366 9538 9702 9771 15455 15478
+ 9560 9561 9619 9629 9668 15466
+ 9487 9488 9582 9663 9667 9703
+ 9457 9487 9595 9663 9688 9712
+ 9571 9589 9592 9630 9636 9653
+ 9559 9575 9610 9627 9648 9664
+ 9573 9588 9602 9631 9639 9655
+ 9544 9561 9613 9651 9668 9707 15468
+ 9565 9592 9593 9636 9641 9665
+ 9576 9608 9643 9647 9672 15467
+ 9553 9572 9611 9652 9657 9681
+ 9484 9512 9600 9666 9696 9721
+ 9583 9601 9606 9638
+ 9579 9601 9638 9642 9660 15469
+ 9590 9594 9609 9633 9635 9662
+ 9575 9593 9617 9641 9664 9674
+ 9585 9598 9603 9629 9654 9689 9701
+ 9598 9613 9628 9668 9689 15466
+ 9589 9602 9616 9639 9653 9669
+ 9588 9618 9642 9655 9670 15469
+ 9368 9433 9586 9715 9784 9815
+ 9594 9608 9626 9643 9662 9673
+ 9610 9611 9648 9657 9679
+ 9609 9626 9662 15471
+ 9592 9616 9620 9653 9665 9677
+ 9545 9569 9650 9659 9711 9726
+ 9601 9624 9625 9660
+ 9602 9618 9630 9655 9669 9682
+ 9294 9325 9698 9761 9948
+ 9593 9620 9627 9665 9674 9690
+ 9625 9631 9660 9670 9683 15469
+ 9608 9621 9633 9672 9673 9685
+ 9568 9650 9699 9700 15472
+ 9452 9482 9538 9702 9742 9808
+ 9582 9587 9652 9667 9713 9722
+ 9607 9621 9672 9675 9691 15467
+ 9610 9617 9634 9664 9679 9695
+ 9078 9090 9543 9731 10049 10141
+ 9568 9569 9637 9644 9699 9711
+ 9607 9619 9675 9707 9718 15468
+ 9572 9587 9622 9646 9681 9713 9720
+ 9616 9630 9636 9669 9677 9694
+ 9603 9628 9701 9716 15470 15477
+ 9618 9631 9639 9670 9682 9693
+ 9316 9433 9517 9815 9822 9923
+ 9611 9622 9634 9679 9681 9710
+ 8676 8728 8990 9840 9934 10471 10478
+ 9545 9599 9637 9726 9734 15477
+ 9625 9638 9642 9683
+ 9049 9129 9550 9964 10042 10184
+ 9626 9633 9635 9673 9687
+ 9487 9614 9615 9703 9712 9739
+ 9617 9627 9648 9674 9695 9708
+ 9620 9636 9641 9677 9690 9706
+ 9512 9586 9623 9715 9721 9766
+ 9582 9614 9646 9703 9722 9740
+ 9613 9619 9629 9689 9707 9730
+ 9630 9639 9653 9682 9694 9709
+ 9631 9642 9655 9683 9693 9705
+ 9389 9472 9517 9822 9824 9992
+ 9621 9643 9647 9685 9691 9704
+ 9633 9643 9662 9685 9687
+ 9627 9641 9664 9690 9708 9725
+ 9607 9647 9651 9691 9718 9728
+ 9478 9482 9742 9829 15473 15483
+ 9636 9653 9665 9694 9706 9724
+ 9595 9600 9688 9696 9750 9764
+ 9634 9648 9657 9695 9710 9729
+ 9226 9367 9468 9863 9912 15480
+ 9622 9652 9657 9710 9720 9737
+ 9639 9655 9669 9693 9709 9723
+ 9642 9660 9670 9705
+ 9581 9597 9686 9697 9747 9782
+ 9643 9672 9673 9687 9704 9717
+ 9597 9684 9700 9747 9749 15472
+ 9662 9673 9685 9717
+ 9595 9615 9678 9712 9750 9762
+ 9628 9629 9668 9701 9730 9743
+ 9641 9665 9674 9706 9725 9735
+ 9647 9672 9675 9704 9728 9736
+ 9247 9262 9605 9951 9974 10160
+ 9655 9670 9682 9705 9723 9732
+ 9653 9669 9677 9709 9724 9733
+ 9648 9664 9679 9708 9729 9738
+ 9600 9623 9678 9721 9753 9764
+ 9510 9581 9684 9714 9782 9807
+ 9294 9367 9640 9863 9948 10061
+ 9644 9650 9700 9711 9760 9773
+ 9644 9686 9699 9749 9760 15472
+ 9628 9654 9689 9716 9743 15482
+ 9538 9612 9645 9771 9808 9865
+ 9614 9663 9667 9739 9740 9768
+ 9672 9685 9691 9717 9736 15479
+ 9670 9683 9693 9732
+ 9665 9677 9690 9724 9735 9745
+ 9619 9651 9668 9718 9730 9757 9765
+ 9664 9674 9695 9725 9738 9746
+ 9669 9682 9694 9723 9733 9741
+ 9657 9679 9681 9729 9737 9752
+ 9637 9650 9699 9726 9773 9783
+ 9615 9663 9688 9739 9762 9779
+ 9646 9652 9720 9722 9756 9758
+ 9510 9552 9697 9755 9807 9860
+ 9586 9632 9666 9766 9784 9831
+ 9654 9701 9734 9789 15477 15482
+ 9685 9687 9704 15479
+ 9651 9675 9707 9728 9757 9763
+ 8643 8645 9296 9424 10548 10573
+ 9652 9681 9713 9737 9756 9769
+ 9623 9666 9696 9753 9766 9793
+ 9646 9667 9713 9740 9758 9775
+ 9682 9693 9709 9732 9741 9751
+ 9677 9694 9706 9733 9745 9754
+ 9674 9690 9708 9735 9746 9759
+ 9637 9659 9711 9734 9783 9804
+ 9534 9816 9879 15473 15476 15483
+ 9675 9691 9718 9736 9763 9767
+ 9679 9695 9710 9738 9752 15481
+ 9668 9689 9707 9743 9765 9777
+ 9090 9170 9649 9809 10141 10242
+ 9693 9705 9723 9751
+ 9694 9709 9724 9741 9754 9770
+ 9659 9716 9726 9789 9804 15477
+ 9690 9706 9725 9745 9759 9774
+ 9691 9704 9728 9767 9772 15479
+ 9681 9710 9720 9752 9769 9780
+ 9695 9708 9729 9746 9778 15481
+ 9663 9703 9712 9768 9779 9800
+ 9667 9703 9722 9768 9775 9786
+ 9709 9723 9733 9751 9770 9776
+ 9482 9645 9676 9808 9829 9891
+ 9689 9701 9730 9777 9791 15482
+ 9533 9802 9839 9900 15474 15478
+ 9706 9724 9735 9754 9774 9781
+ 9708 9725 9738 9759 9778 9785
+ 9684 9686 9749 9782 9811
+ 8998 9101 9524 9970 9999 10161
+ 9686 9700 9747 9760 9811 9847
+ 9678 9688 9762 9764 9817 9820
+ 9723 9732 9741 9776
+ 9710 9729 9737 9780 9790 15481
+ 9696 9721 9764 9793 9818
+ 9724 9733 9745 9770 9781 9787
+ 9552 9714 9816 9860 9913 15476
+ 9713 9720 9758 9769 9797 9801
+ 9707 9718 9763 9765 9794 9798
+ 9713 9722 9756 9775 9788 9797
+ 9725 9735 9746 9774 9785 9796
+ 9699 9700 9749 9773 9847 9859
+ 9325 9640 9935 9948 10123 15437
+ 9688 9712 9750 9779 9820 9833
+ 9718 9728 9757 9767 9792 9794
+ 9678 9696 9750 9753 9817 9818
+ 9707 9730 9757 9777 9798 9806
+ 9666 9715 9721 9793 9831 9854
+ 9728 9736 9763 9772 9792 9795
+ 9703 9739 9740 9786 9800 9821
+ 9720 9737 9756 9780 9801 9810
+ 9733 9741 9754 9776 9787 9799
+ 9612 9702 9839 9865 9977 15478
+ 9736 9767 9795 15479
+ 9699 9711 9760 9783 9859 15484
+ 9735 9745 9759 9781 9796 9805
+ 9722 9740 9758 9786 9788 9812
+ 9741 9751 9770 9799
+ 9730 9743 9765 9791 9806 9819
+ 9738 9746 9785 9803 9813 15481
+ 9712 9739 9762 9800 9833 9848
+ 9737 9752 9769 9790 9810 9825
+ 9745 9754 9774 9787 9805 9814
+ 9684 9697 9747 9807 9811 9890
+ 9711 9726 9773 9804 9853 15484
+ 9632 9715 9815 9831 9949 15487
+ 9746 9759 9778 9796 9813 9827
+ 9740 9768 9775 9812 9821 9843
+ 9754 9770 9781 9799 9814 9826
+ 9758 9775 9797 9812 9834
+ 9716 9734 9804 9823 9846 9855 15482
+ 9752 9780 9803 9825 9838 15481
+ 9743 9777 9819 9823 9842 15482
+ 9763 9767 9794 9795 9828 9830
+ 9721 9753 9766 9818 9854 9892
+ 9757 9763 9792 9798 9830 9832
+ 9767 9772 9792 9828
+ 9759 9774 9785 9805 9827 9837
+ 9756 9758 9788 9801 9834 9841
+ 9757 9765 9794 9806 9832 9836
+ 9770 9776 9787 9826
+ 9739 9768 9779 9821 9848 9864
+ 9756 9769 9797 9810 9841 9850
+ 9744 9900 9944 15474 15480
+ 9778 9790 9813 9838 9849 15481
+ 9726 9734 9783 9789 9853 9855 9870
+ 9774 9781 9796 9814 9837 9845
+ 9765 9777 9798 9819 9836 9844
+ 9697 9714 9782 9860 9890 9942
+ 9645 9702 9742 9865 9891 9938
+ 9133 9170 9731 9970 10242 10293
+ 9769 9780 9801 9825 9850 9857
+ 9747 9749 9782 9847 9890 9998
+ 9775 9786 9788 9834 9843 9862
+ 9778 9785 9803 9827 9849 9856
+ 9781 9787 9805 9826 9845 9851
+ 9433 9632 9656 9784 9923 10025 15487
+ 9727 9755 9879 9913 9968 15476
+ 9750 9764 9818 9820 9872 9875
+ 9753 9764 9793 9817 9872 9892
+ 9777 9791 9806 9842 9844 9852
+ 9750 9762 9817 9833 9875 9882
+ 9768 9786 9800 9843 9864 9880
+ 9517 9656 9671 9923 9992 10068 10072
+ 9789 9791 9842 9846 9871 15482 15485
+ 9472 9605 9671 9951 9992 10063
+ 9780 9790 9810 9838 9857 9869
+ 9787 9799 9814 9851
+ 9785 9796 9813 9837 9856 9867
+ 9792 9795 9830 9858
+ 9676 9742 9891 9932 9980 15483
+ 9792 9794 9828 9832 9858 9861
+ 9715 9766 9784 9854 9949 9956
+ 9794 9798 9830 9836 9861 9866
+ 9762 9779 9820 9848 9882 9888
+ 9788 9797 9812 9841 9862 9877
+ 9308 9364 9941 10207 10327
+ 9798 9806 9832 9844 9866 9868
+ 9796 9805 9827 9845 9867 9876
+ 9790 9803 9825 9849 9869 9881
+ 9744 9771 9900 9977 10037 15478
+ 8728 8856 9658 10227 10471 10568
+ 9797 9801 9834 9850 9877 9884
+ 9791 9819 9823 9852 9871 9878
+ 9786 9812 9821 9862 9880 9894
+ 9806 9819 9836 9852 9868 9873
+ 9805 9814 9837 9851 9876 9883
+ 9789 9823 9855 9887 9889 15485
+ 9749 9760 9811 9859 9943 9998
+ 9779 9800 9833 9864 9888 9905
+ 9803 9813 9838 9856 9881 9886
+ 9801 9810 9841 9857 9884 9895
+ 9814 9826 9845 9883
+ 9819 9842 9844 9873 9878
+ 9783 9804 9870 9874 9903 15484
+ 9766 9793 9831 9892 9956 15491
+ 9789 9804 9846 9870 9889 9899
+ 9813 9827 9849 9867 9886 9897
+ 9810 9825 9850 9869 9895 9904
+ 9828 9830 9861 9893
+ 9760 9773 9847 9874 9921 9943 15484
+ 9714 9755 9807 9913 9942 9993
+ 9830 9832 9858 9866 9893 9898
+ 9812 9834 9843 9877 9894 9910
+ 9367 9680 9698 9912 10061 10091
+ 9800 9821 9848 9880 9905 9914
+ 9702 9771 9808 9938 9977 10045
+ 9832 9836 9861 9868 9898 9901
+ 9827 9837 9856 9876 9897 9907
+ 9836 9844 9866 9873 9901 9906
+ 9825 9838 9857 9881 9904 9911
+ 9804 9853 9855 9899 9903 9916
+ 9823 9842 9878 9896 9902 15485
+ 9817 9818 9875 9892 9909 9933
+ 9844 9852 9868 9878 9906 9908
+ 9853 9859 9903 9921 15484
+ 9817 9820 9872 9882 9909 9915
+ 9837 9845 9867 9883 9907 15486
+ 9834 9841 9862 9884 9910 9920
+ 9842 9852 9871 9873 9902 9908
+ 9727 9816 9932 9968 10019 15483
+ 9821 9843 9864 9894 9914 9927
+ 9838 9849 9869 9886 9911 9918
+ 9820 9833 9875 9888 9915 9926
+ 9845 9851 9876 15486
+ 9841 9850 9877 9895 9920 9928
+ 9274 10046 10139 10326 15451 15475
+ 9849 9856 9881 9897 9918 9924
+ 9846 9889 9896 9919 9929 15485
+ 9833 9848 9882 9905 9926 15488
+ 9846 9855 9887 9899 9919
+ 9782 9807 9811 9942 9998 10006
+ 9742 9808 9829 9938 9980 10020
+ 9793 9818 9854 9872 9933 9975 15491
+ 9858 9861 9898 9925
+ 9843 9862 9880 9910 9927 9945
+ 9850 9857 9884 9904 9928 9937
+ 9871 9887 9902 9929 9940 15485
+ 9856 9867 9886 9907 9924 9931
+ 9861 9866 9893 9901 9925 9930
+ 9855 9870 9889 9916 9919 9950
+ 9744 9802 9839 9944 10037 10087
+ 9866 9868 9898 9906 9930 9936
+ 9871 9878 9896 9908 9940 9946
+ 9853 9870 9874 9916 9921 9966
+ 9857 9869 9895 9911 9937 15490
+ 9848 9864 9888 9914 9955 15488
+ 9868 9873 9901 9908 9936 15489
+ 9867 9876 9897 9931 9939 15486
+ 9873 9878 9902 9906 9946 15489
+ 9872 9875 9915 9933 9953
+ 9862 9877 9894 9920 9945 9954
+ 9869 9881 9904 9918 9952 15490
+ 9680 9863 9944 10091 10111 15480
+ 9755 9816 9860 9968 9993 10035
+ 9864 9880 9905 9927 9955 9961
+ 9875 9882 9909 9926 9953 9962
+ 9870 9899 9903 9950 9966
+ 9458 9584 9974 10108 10235
+ 9881 9886 9911 9924 9952 9957
+ 9887 9889 9899 9929 9950 9984
+ 9877 9884 9910 9928 9954 9959
+ 9859 9874 9903 9943 9966 15493
+ 9543 9584 10049 10108 10194
+ 9656 9815 9822 10025 10068 10098
+ 9886 9897 9918 9931 9957 9960
+ 9893 9898 9930 9958
+ 9882 9888 9915 9962 9976 15488
+ 9880 9894 9914 9945 9961 9971
+ 9884 9895 9920 9937 9959 9967
+ 9887 9896 9919 9940 9982 9984
+ 9898 9901 9925 9936 9958 9963
+ 9897 9907 9924 9939 9960 9965
+ 9829 9879 9980 10019 10078 15483
+ 9872 9892 9909 9953 9975 9990
+ 8990 9437 9658 10343 10478 10526
+ 9761 10123 10139 10287 15437 15475
+ 9901 9906 9930 9963 9969 15489
+ 9895 9904 9928 9967 9972 15490
+ 9808 9865 9891 10020 10045
+ 9907 9931 9965 15486
+ 9896 9902 9929 9946 9982 15492
+ 9364 9423 9835 9988 10322 10327
+ 9807 9860 9890 9993 10006 10041
+ 9847 9859 9921 9998 10051 15493
+ 9802 9900 9912 10087 10111 15480
+ 9894 9910 9927 9954 9971 9981
+ 9902 9908 9940 9973 15489 15492
+ 8835 8927 9382 10103 10462 10731
+ 9640 9698 9761 10061 10123 10220
+ 9784 9831 9956 10004 10008 15487
+ 9899 9916 9919 9966 9984 10009
+ 9605 9692 9824 10063 10160 10239
+ 9911 9918 9957 9978 9983 15490
+ 9909 9915 9933 9962 9990 10000
+ 9910 9920 9945 9959 9981 9989
+ 9905 9914 9961 9985 9996 15488
+ 9831 9854 9949 10008 10021 15491
+ 9918 9924 9952 9960 9983 9986
+ 9925 9930 9963 9987
+ 9920 9928 9954 9967 9989 9997
+ 9924 9931 9957 9965 9986 9991
+ 9914 9927 9955 9971 9996 10003
+ 9915 9926 9953 9976 10000 10010
+ 9930 9936 9958 9969 9987 9995
+ 9129 9162 9661 10184 10325 10538
+ 9931 9939 9960 9991
+ 9903 9916 9921 9950 10009 10029 15493
+ 9928 9937 9959 9972 9997 10002
+ 9816 9879 9913 10019 10035 10089
+ 9936 9963 9973 9995 10001 15489
+ 9101 9133 9748 9809 10161 10293 10407
+ 9927 9945 9961 9981 10003 10012
+ 9937 9967 9978 10002 10005 15490
+ 9946 9969 10001 10007 15489 15492
+ 9262 9458 9692 9917 10160 10235 10357
+ 9892 9933 9990 10027 10032 15491
+ 9926 9962 9985 10010 10018 15488
+ 9771 9839 9865 10037 10045 10142
+ 9952 9972 9983 10005 10011 15490
+ 8999 9246 9437 10207 10343 10614
+ 9829 9891 9932 10020 10078 10137
+ 9945 9954 9971 9989 10012 10017
+ 9929 9940 9984 10014 10022 15492
+ 9952 9957 9978 9986 10011 10013
+ 9919 9929 9950 9982 10009 10022 10034
+ 9955 9976 9996 10018 10026 15488
+ 9957 9960 9983 9991 10013 10015
+ 9958 9963 9995 10016
+ 9423 9524 9941 9999 10322 10351
+ 9954 9959 9981 9997 10017 10023
+ 9933 9953 9975 10000 10032 10038
+ 9960 9965 9986 10015
+ 9671 9822 9824 10063 10072 10177
+ 9860 9913 9942 10035 10041 10088
+ 8778 8942 9382 10403 10462 10896
+ 9963 9969 9987 10001 10016 10024
+ 9955 9961 9985 10003 10026 10033
+ 9959 9967 9989 10002 10023 10028
+ 9811 9847 9890 9943 10006 10051 10092 10135
+ 9524 9748 9988 10161 10351
+ 9953 9962 9990 10010 10038 10047
+ 9969 9973 9995 10007 10024 10030
+ 9967 9972 9997 10005 10028 10031
+ 9961 9971 9996 10012 10033 10043
+ 9949 10008 10056 10100 15487
+ 9972 9978 10002 10011 10031 10036
+ 9890 9942 9998 10041 10092
+ 9973 10001 10014 10030 10040 15492
+ 9949 9956 10004 10021 10056 10069
+ 9950 9966 9984 10029 10034 10060
+ 9962 9976 10000 10018 10047 10052
+ 9978 9983 10005 10013 10036 10039
+ 9971 9981 10003 10017 10043 10048
+ 9983 9986 10011 10015 10039 10044
+ 9982 10007 10022 10040 10050 15492
+ 9986 9991 10013 10044
+ 9987 9995 10024 15494
+ 9981 9989 10012 10023 10048 10053
+ 9976 9985 10010 10026 10052 10057
+ 9879 9932 9968 10078 10089 10155
+ 9891 9938 9980 10045 10137 10190
+ 9956 10008 10027 10069 10073 15491
+ 9982 9984 10014 10034 10050 10058
+ 9989 9997 10017 10028 10053 10055
+ 9995 10001 10016 10030 10054 15494
+ 9815 9923 10098 10100 10152 15487
+ 9985 9996 10018 10033 10057 10065
+ 9975 10021 10032 10073 10074 15491
+ 9997 10002 10023 10031 10055 10059
+ 9966 10009 10060 10085 10114 15493
+ 10001 10007 10024 10040 10054 10062
+ 10002 10005 10028 10036 10059 10064
+ 9975 9990 10027 10038 10074 10079
+ 9996 10003 10026 10043 10065 10070
+ 9984 10009 10022 10058 10060 10075
+ 9913 9968 9993 10088 10089 10136
+ 10005 10011 10031 10039 10064 10066
+ 9839 9900 9977 10087 10142 10216
+ 9990 10000 10032 10047 10079 10082
+ 10011 10013 10036 10044 10066 10067
+ 10007 10014 10030 10050 10062 10071
+ 9942 9993 10006 10088 10092 10133
+ 9550 9661 10046 10184 10376 10393
+ 10003 10012 10033 10048 10070 10077
+ 10013 10015 10039 10067
+ 9865 9938 9977 10020 10142 10190
+ 9550 9885 10042 10326 10393 15451
+ 10000 10010 10038 10052 10082 10086
+ 10012 10017 10043 10053 10077 10081
+ 9543 9649 9922 10141 10194 10339
+ 10014 10022 10040 10058 10071 10080
+ 9943 9998 10085 10135 10156 15493
+ 10010 10018 10047 10057 10086 10093
+ 10017 10023 10048 10055 10081 10084
+ 10024 10030 10062 10076 10083 15494
+ 10023 10028 10053 10059 10084 10090
+ 10004 10008 10069 10100 10128 10167
+ 10018 10026 10052 10065 10093 10099
+ 10022 10034 10050 10075 10080 15495
+ 10028 10031 10055 10064 10090 10094
+ 10009 10029 10034 10075 10104 10114
+ 9698 9863 9948 10091 10220 10280
+ 10030 10040 10054 10071 10083 10095
+ 9824 9951 9992 10177 10239 10271
+ 10031 10036 10059 10066 10094 10096
+ 10026 10033 10057 10070 10099 10102
+ 10036 10039 10064 10067 10096 10097
+ 10039 10044 10066 10097
+ 9822 9923 10072 10098 10210 10212
+ 10008 10021 10056 10073 10105 10128
+ 10033 10043 10065 10077 10102 10110
+ 10040 10050 10062 10080 10095 10101
+ 9822 9992 10068 10177 10212
+ 10021 10027 10069 10074 10105 10115
+ 10027 10032 10073 10079 10115 10116
+ 10034 10058 10060 10104 10107 15495
+ 10054 10083 10109 15494
+ 10043 10048 10070 10081 10110 10113
+ 9932 9980 10019 10137 10155 10222
+ 10032 10038 10074 10082 10116 10119
+ 10050 10058 10071 10101 10112 15495
+ 10048 10053 10077 10084 10113 10117
+ 10038 10047 10079 10086 10119 10126
+ 10054 10062 10076 10095 10109 10118
+ 10053 10055 10081 10090 10117 10120
+ 10029 10051 10114 10156 10162 15493
+ 10047 10052 10082 10093 10126 10129
+ 9900 9944 10037 10111 10216 10277
+ 9993 10035 10041 10133 10136 10175
+ 9968 10019 10035 10136 10155 10188
+ 10055 10059 10084 10094 10120 10122
+ 9863 9912 10061 10111 10280 10334
+ 9998 10006 10041 10133 10135 10174
+ 10052 10057 10086 10099 10129 10131
+ 10059 10064 10090 10096 10122 10125
+ 10062 10071 10083 10101 10118 10127
+ 10064 10066 10094 10097 10124 10125
+ 10066 10067 10096 10124
+ 9923 10025 10068 10152 10208 10210
+ 10057 10065 10093 10102 10131 10134
+ 10004 10025 10056 10152 10167 15487 15497
+ 10071 10080 10095 10112 10127 10132
+ 10065 10070 10099 10110 10134 10140
+ 8927 9139 9947 10240 10703 10731
+ 10060 10075 10107 10114 10130 10146
+ 10069 10073 10115 10128 10153
+ 8519 8816 10288 10842 10897 15422
+ 10075 10104 10121 10130 15495
+ 9584 9917 9922 10194 10235 10363
+ 10076 10083 10118 10138
+ 10070 10077 10102 10113 10140 10144
+ 9912 9944 10087 10091 10277 10334
+ 10080 10101 10121 10132 10143 15495
+ 10077 10081 10110 10117 10144 10147
+ 10029 10060 10085 10104 10146 10162 10171
+ 10073 10074 10105 10116 10153 10157
+ 10074 10079 10115 10119 10157 10158
+ 10081 10084 10113 10120 10147 10149
+ 10083 10095 10109 10127 10138 10148
+ 10079 10082 10116 10126 10158 10159
+ 10084 10090 10117 10122 10149 10150
+ 10107 10112 10130 10143 10145 15495
+ 10090 10094 10120 10125 10150 10154
+ 9761 9935 9948 10220 10287 10361
+ 10096 10097 10125 10151
+ 10094 10096 10122 10124 10151 10154
+ 10082 10086 10119 10129 10159 10163
+ 10095 10101 10118 10132 10148 15496
+ 10056 10069 10105 10153 10167 10196
+ 10086 10093 10126 10131 10163 10164
+ 10104 10107 10121 10145 10146
+ 10093 10099 10129 10134 10164 10166
+ 10101 10112 10127 10143 10165 15496
+ 10041 10088 10092 10174 10175 10206
+ 10099 10102 10131 10140 10166 10169
+ 9998 10051 10092 10156 10174 10221 10225
+ 10035 10088 10089 10175 10188 10214
+ 9980 10020 10078 10190 10222 10299
+ 10109 10118 10148 10168
+ 9885 9935 10287 10326 10475 15475
+ 10102 10110 10134 10144 10169 10172
+ 9649 9731 10049 10242 10339 10537
+ 9977 10037 10045 10190 10216 10286
+ 10112 10121 10132 10145 10165 10170
+ 10110 10113 10140 10147 10172 10176
+ 10121 10130 10143 10146 10170 10173
+ 10104 10114 10130 10145 10171 10173
+ 10113 10117 10144 10149 10176 10178
+ 10118 10127 10138 10168 10179 15496
+ 10117 10120 10147 10150 10178 10181
+ 10120 10122 10149 10154 10181 10182
+ 10124 10125 10154 10180
+ 10025 10098 10100 10208 10217 15497
+ 10105 10115 10128 10157 10196 10218
+ 10122 10125 10150 10151 10180 10182
+ 10019 10078 10089 10188 10222 10257
+ 10051 10085 10135 10162 10221 10237
+ 10115 10116 10153 10158 10189 10218
+ 10116 10119 10157 10159 10186 10189
+ 10119 10126 10158 10163 10185 10186
+ 9692 9951 9974 10239 10357 10473
+ 9748 9970 9999 10351 10407 10414
+ 10085 10114 10156 10171 10211 10237
+ 10126 10129 10159 10164 10185 10187
+ 10129 10131 10163 10166 10187 10191
+ 10132 10143 10170 10183 10192 15496
+ 10131 10134 10164 10169 10191 10195
+ 10056 10100 10128 10196 10263 15497
+ 10138 10148 10179 10193
+ 10134 10140 10166 10172 10195 10197
+ 10143 10145 10165 10173 10192 10200
+ 10114 10146 10162 10173 10209 10211
+ 10140 10144 10169 10176 10197 10198
+ 10145 10146 10170 10171 10200 10209
+ 10092 10133 10135 10206 10225 10243
+ 10088 10133 10136 10206 10214 10236
+ 10144 10147 10172 10178 10198 10202
+ 9992 10063 10072 10212 10271 10300
+ 10147 10149 10176 10181 10202 10203
+ 10148 10168 10183 10193 10205 15496
+ 10151 10154 10182 10201
+ 10149 10150 10178 10182 10203 10204
+ 10150 10154 10180 10181 10201 10204
+ 10165 10179 10192 10205 10215 15496
+ 9661 9964 10042 10376 10538
+ 10159 10163 10186 10187 10213 10219
+ 10158 10159 10185 10189 10213 10234
+ 10163 10164 10185 10191 10219 10223
+ 10089 10136 10155 10214 10257 10262
+ 10157 10158 10186 10218 10234 10246
+ 10020 10045 10137 10142 10286 10299 10359
+ 10164 10166 10187 10195 10223 10226
+ 10165 10170 10183 10200 10215 10228
+ 10168 10179 10205 10224
+ 9922 10049 10108 10339 10363 10488
+ 10166 10169 10191 10197 10226 10229
+ 10128 10153 10167 10218 10263 10270
+ 10169 10172 10195 10198 10229 10231
+ 10172 10176 10197 10202 10231 10232
+ 8742 8935 9359 10666 10889 11074
+ 10170 10173 10192 10209 10228 10241
+ 10180 10182 10204 10230
+ 10176 10178 10198 10203 10232 10233
+ 10178 10181 10202 10204 10233 15498
+ 10181 10182 10201 10203 10230 15498
+ 10179 10183 10193 10215 10224 10238
+ 10133 10174 10175 10236 10243 10258
+ 9246 9308 9835 9979 10327 10614 10698
+ 10098 10152 10210 10217 10283 10294
+ 10171 10173 10200 10211 10241 10249
+ 10068 10098 10208 10212 10294 10312
+ 10162 10171 10209 10237 10249 10264
+ 10068 10072 10177 10210 10300 10312
+ 10185 10186 10219 10234 10244
+ 10136 10175 10188 10236 10261 10262
+ 10183 10192 10205 10228 10238 10245
+ 10037 10087 10142 10277 10286 10386
+ 10152 10208 10274 10283 15497
+ 10153 10157 10189 10196 10246 10270 10278
+ 10185 10187 10213 10223 10244 10247
+ 9948 10061 10123 10280 10361 10415
+ 10135 10156 10225 10237 10265 10268
+ 10078 10137 10155 10257 10299 10319
+ 10187 10191 10219 10226 10247 10250
+ 10193 10205 10238 10248
+ 10135 10174 10221 10243 10265 10269
+ 10191 10195 10223 10229 10250 10252
+ 8856 9604 9840 10518 10568 10710
+ 10192 10200 10215 10241 10245 10259
+ 10195 10197 10226 10231 10252 10254
+ 10201 10204 10251 15498
+ 10197 10198 10229 10232 10254 10256
+ 10198 10202 10231 10233 10255 10256
+ 10202 10203 10232 10253 10255 15498
+ 10186 10189 10213 10244 10246 10266
+ 9917 9974 10108 10357 10363 10463
+ 10175 10206 10214 10258 10261 10267
+ 10156 10162 10211 10221 10264 10268 10296
+ 10205 10215 10224 10245 10248 10260
+ 9951 10063 10160 10271 10439 10473
+ 9139 9604 10103 10518 10661 10703
+ 10200 10209 10228 10249 10259 10272
+ 9731 9809 10141 10293 10537 10570
+ 10174 10206 10225 10258 10269 10292 10305
+ 10213 10219 10234 10247 10266 10273
+ 10215 10228 10238 10259 10260 10275
+ 10189 10218 10234 10266 10278 10295
+ 10219 10223 10244 10250 10273 10279
+ 10224 10238 10260 15499
+ 10209 10211 10241 10264 10272 10297
+ 10223 10226 10247 10252 10279 10282
+ 10230 10253 10276 15498
+ 10226 10229 10250 10254 10282 10284
+ 10233 10251 10255 10276 10281 15498
+ 10229 10231 10252 10256 10284 10285
+ 10232 10233 10253 10256 10281 15500
+ 10231 10232 10254 10255 10285 15500
+ 10155 10188 10222 10262 10309 10319 10323
+ 10206 10236 10243 10267 10291 10292
+ 10228 10241 10245 10272 10275 10290
+ 10238 10245 10248 10275 10289 15499
+ 10214 10236 10262 10267 10298 10301
+ 10188 10214 10257 10261 10301 10309
+ 10167 10196 10270 10274 10340 10353 15497
+ 10211 10237 10249 10296 10297 15501
+ 10221 10225 10268 10269 10302 10303
+ 10234 10244 10246 10273 10295 10304
+ 10236 10258 10261 10291 10298 10318
+ 10221 10237 10265 10296 10303 10320
+ 10225 10243 10265 10302 10305
+ 10196 10218 10263 10278 10329 10340
+ 10063 10177 10239 10300 10422 10439
+ 10241 10249 10259 10290 10297 10314
+ 10244 10247 10266 10279 10304 10311
+ 10217 10263 10283 10353 10360 15497
+ 10245 10259 10260 10289 10290 10308
+ 10251 10253 10281 10306
+ 10087 10111 10216 10334 10386 10482
+ 10218 10246 10270 10295 10329 10330
+ 10247 10250 10273 10282 10311 10315
+ 10061 10091 10220 10334 10415 15505
+ 10253 10255 10276 10306 10310 15500
+ 10250 10252 10279 10284 10315 10317
+ 10208 10217 10274 10294 10360 10374
+ 10252 10254 10282 10285 10316 10317
+ 10254 10256 10284 10313 10316 15500
+ 10142 10190 10216 10359 10386 10458
+ 9935 10123 10139 10361 10475 10496
+ 8816 9209 10106 10325 10875 10897
+ 10260 10275 10307 10308 10321 15499
+ 10259 10272 10275 10308 10314 10324
+ 10258 10267 10292 10318 10328
+ 10243 10258 10291 10305 10328 10344
+ 9809 9970 10242 10407 10570 10621
+ 10208 10210 10283 10312 10374 10400
+ 10246 10266 10278 10304 10330 10336
+ 10237 10264 10268 10320 15501 15502
+ 10249 10264 10272 10314 10332 15501
+ 10261 10267 10301 10318 10331
+ 10137 10190 10222 10319 10359 10409 10426
+ 10177 10212 10271 10312 10412 10422
+ 10261 10262 10298 10309 10331 10348
+ 10265 10269 10303 10305 10354 10355
+ 10265 10268 10302 10320 10341 10354
+ 10266 10273 10295 10311 10336 10345
+ 10243 10269 10292 10302 10344 10355
+ 10276 10281 10310 10333
+ 10289 10321 10335 15499
+ 10275 10289 10290 10321 10324 10337
+ 10257 10262 10301 10323 10348 10352
+ 10281 10306 10313 10333 10338 15500
+ 10273 10279 10304 10315 10345 10350
+ 10210 10212 10294 10300 10400 10412
+ 10285 10310 10316 10338 10342 15500
+ 10272 10290 10297 10324 10332 10346
+ 10279 10282 10311 10317 10349 10350
+ 10284 10285 10313 10317 10342 10347
+ 10282 10284 10315 10316 10347 10349
+ 10267 10291 10298 10328 10331 10362
+ 10222 10257 10299 10323 10382 10409
+ 10268 10296 10303 10341 10364 15502
+ 10289 10307 10308 10335 10337 10356
+ 9941 9988 10327 10351 10639 10751
+ 10257 10309 10319 10352 10382 15503
+ 10290 10308 10314 10337 10346 10358
+ 9162 9209 9964 10288 10538 10823 10875
+ 9885 10046 10139 10393 10475 10644 10677
+ 9835 9941 10207 10322 10698 10751
+ 10291 10292 10318 10344 10362 10384
+ 10270 10278 10330 10340 10383 10395
+ 10278 10295 10329 10336 10377 10383
+ 10298 10301 10318 10348 10362 10389
+ 10297 10314 10346 10365 10367 15501
+ 10306 10310 10338 10366
+ 10091 10111 10277 10280 10482 10596 15505
+ 10307 10321 10356 10368
+ 10295 10304 10330 10345 10377 10379
+ 10308 10321 10324 10356 10358 10370
+ 10310 10313 10333 10342 10366 10372
+ 10049 10141 10194 10488 10537 10662
+ 10263 10270 10329 10353 10395 10405
+ 10303 10320 10354 10364 10381
+ 10313 10316 10338 10347 10372 10373
+ 9437 9934 9979 10526 10614 10744
+ 10292 10305 10328 10355 10384 10397
+ 10304 10311 10336 10350 10379 10380
+ 10314 10324 10332 10358 10365 10371
+ 10316 10317 10342 10349 10373 10375
+ 10301 10309 10331 10352 10389 10394
+ 10315 10317 10347 10350 10375 10378
+ 10311 10315 10345 10349 10378 10380
+ 9988 9999 10161 10322 10414 10592 10639
+ 10309 10323 10348 10394 15503
+ 10263 10274 10340 10360 10405 10424
+ 10302 10303 10341 10355 10381 10406
+ 10302 10305 10344 10354 10397 10406
+ 10321 10335 10337 10368 10370 10388
+ 9974 10160 10235 10463 10473 10590
+ 10324 10337 10346 10370 10371 10387
+ 10190 10286 10299 10426 10458 10494
+ 10274 10283 10353 10374 10424 10442
+ 10123 10220 10287 10415 10496 10511
+ 10318 10328 10331 10384 10389 10435
+ 10108 10194 10235 10463 10488 10521
+ 10320 10341 10381 10385 10401 15502
+ 10332 10346 10367 10371 10390 10391
+ 10333 10338 10372 10398
+ 10332 10365 10369 10391 10392 15501
+ 10335 10356 10388 10402
+ 10367 10385 10392 10396 15501 15502
+ 10337 10356 10358 10387 10388 15504
+ 10346 10358 10365 10387 10390 10399
+ 10338 10342 10366 10373 10398 10404
+ 10342 10347 10372 10375 10404 10408
+ 10283 10294 10360 10400 10442 10468
+ 10347 10349 10373 10378 10408 10410
+ 10042 10184 10393 10538 10618
+ 10330 10336 10379 10383 10418 10425
+ 10349 10350 10375 10380 10410 10413
+ 10336 10345 10377 10380 10416 10418
+ 10345 10350 10378 10379 10413 10416
+ 10341 10354 10364 10401 10406 10427
+ 10319 10323 10409 10434 10449 15503
+ 10329 10330 10377 10395 10425 10430
+ 10328 10344 10362 10397 10435 10446
+ 10364 10369 10396 10401 10420 15502
+ 10216 10277 10286 10458 10482 10559
+ 10358 10370 10371 10399 10421 15504
+ 10356 10368 10370 10402 10423 15504
+ 10331 10348 10362 10394 10435 10451
+ 10365 10371 10391 10399 10411
+ 10365 10367 10390 10392 10411 10417
+ 10367 10369 10391 10396 10417 10419
+ 10042 10046 10326 10376 10618 10644
+ 10348 10352 10389 10444 10451 15503
+ 10329 10340 10383 10405 10430 10452
+ 10369 10385 10392 10419 10420
+ 10344 10355 10384 10406 10446 10454
+ 10366 10372 10404 10429
+ 10371 10387 10390 10411 10421 10428
+ 10294 10312 10374 10412 10468 10486
+ 10364 10381 10385 10420 10427 10440
+ 10368 10388 10423 10431
+ 8942 9424 9994 10548 10896 10930
+ 10372 10373 10398 10408 10429 10433
+ 10340 10353 10395 10424 10452 10464
+ 10354 10355 10381 10397 10427 10454 10466
+ 9970 10161 10293 10414 10621 10625
+ 10373 10375 10404 10410 10433 10437
+ 10299 10319 10382 10426 10449 10465
+ 10375 10378 10408 10413 10437 10438
+ 10390 10391 10399 10417 10428 10436
+ 10300 10312 10400 10422 10486 10510
+ 10378 10380 10410 10416 10438 10443
+ 10161 10351 10407 10592 10625
+ 10220 10280 10361 10511 10576 15505
+ 10379 10380 10413 10418 10443 10447
+ 10391 10392 10411 10419 10436 10441
+ 10377 10379 10416 10425 10447 10453
+ 10392 10396 10417 10420 10441 10445
+ 10385 10396 10401 10419 10440 10445
+ 10387 10399 10428 10432 10448 15504
+ 10271 10300 10412 10439 10510 10555
+ 10388 10402 10431 10432 10450 15504
+ 10353 10360 10405 10442 10464 10490
+ 10377 10383 10418 10430 10453 10457
+ 10299 10359 10409 10465 10494 10527
+ 10381 10401 10406 10440 10466 10477
+ 10399 10411 10421 10436 10448 10456
+ 10398 10404 10433 10455
+ 10383 10395 10425 10452 10457 10480
+ 10402 10423 10450 10459
+ 10421 10423 10448 10450 10460 15504
+ 10404 10408 10429 10437 10455 10461
+ 10382 10444 10449 10493 15503
+ 10362 10384 10389 10446 10451 10500 10501
+ 10411 10417 10428 10441 10456 10469
+ 10408 10410 10433 10438 10461 10467
+ 10410 10413 10437 10443 10467 10470
+ 10239 10271 10422 10473 10555 10605
+ 10401 10420 10427 10445 10477 10485
+ 10417 10419 10436 10445 10469 10481
+ 10360 10374 10424 10468 10490 10520
+ 10413 10416 10438 10447 10470 10472
+ 10394 10434 10451 10493 10503 15503
+ 10419 10420 10440 10441 10481 10485
+ 10384 10397 10435 10454 10500 10504
+ 10416 10418 10443 10453 10472 10479
+ 10421 10428 10432 10456 10460 10474
+ 10382 10409 10434 10465 10493 10515
+ 10423 10431 10432 10459 10460 10476
+ 10389 10394 10435 10444 10501 10503
+ 10395 10405 10430 10464 10480 10497
+ 10418 10425 10447 10457 10479 10483
+ 10397 10406 10446 10466 10504 10508
+ 10429 10433 10461 10484
+ 10428 10436 10448 10469 10474 10487
+ 10425 10430 10453 10480 10483 10498
+ 10286 10359 10386 10494 10559 10579
+ 10431 10450 10476 10489
+ 10432 10448 10450 10474 10476 10491
+ 10433 10437 10455 10467 10484 10492
+ 9382 9947 9994 10731 10896 10934
+ 10235 10357 10363 10521 10590 10643
+ 10405 10424 10452 10490 10497 10550
+ 10409 10426 10449 10515 10527
+ 10406 10427 10454 10477 10508 10513
+ 10437 10438 10461 10470 10492 10495
+ 10374 10400 10442 10486 10520 10554
+ 10436 10441 10456 10481 10487 10502
+ 10438 10443 10467 10472 10495 10499
+ 9658 9840 10478 10568 10802 10846
+ 10443 10447 10470 10479 10499 10505
+ 10160 10239 10357 10439 10590 10605 10727
+ 10448 10456 10460 10487 10491 10506
+ 10139 10287 10326 10496 10674 10677
+ 10450 10459 10460 10489 10491 10507
+ 10427 10440 10466 10485 10513 10522
+ 9658 9934 10471 10526 10802 10804
+ 10447 10453 10472 10483 10505 10509
+ 10430 10452 10457 10497 10498 10516
+ 10441 10445 10469 10485 10502 10517
+ 10277 10334 10386 10559 10596 10671
+ 10453 10457 10479 10498 10509 10512
+ 10455 10461 10492 10514
+ 10440 10445 10477 10481 10517 10522 10532
+ 10400 10412 10468 10510 10554 10577
+ 10456 10469 10474 10502 10506 10519
+ 10194 10339 10363 10521 10662 10664
+ 10459 10476 10507 10523
+ 10424 10442 10464 10520 10550 10562
+ 10460 10474 10476 10506 10507 10524
+ 10461 10467 10484 10495 10514 10525
+ 10434 10444 10449 10503 10515 10575 10585
+ 10359 10426 10458 10527 10579 10609
+ 10467 10470 10492 10499 10525 10528
+ 10287 10361 10475 10511 10651 10674
+ 10452 10464 10480 10516 10550 10552
+ 10457 10480 10483 10512 10516 10531
+ 10470 10472 10495 10505 10528 10529
+ 10435 10446 10501 10504 10540 10543
+ 10435 10451 10500 10503 10540 10560
+ 10469 10481 10487 10517 10519 10530
+ 10444 10451 10493 10501 10560 10575
+ 10446 10454 10500 10508 10543 10545
+ 10472 10479 10499 10509 10529 10535
+ 10474 10487 10491 10519 10524 10533
+ 10476 10489 10491 10523 10524 10534
+ 10454 10466 10504 10513 10542 10545
+ 10479 10483 10505 10512 10535 10536
+ 10412 10422 10486 10555 10577 10627
+ 10361 10415 10496 10576 10651
+ 10483 10498 10509 10531 10536
+ 10466 10477 10508 10522 10542 10544
+ 10484 10492 10525 10541
+ 10449 10465 10493 10527 10585 10602
+ 10480 10497 10498 10531 10552 10558
+ 10481 10485 10502 10530 10532 10546
+ 9604 10227 10240 10661 10710 10854
+ 10487 10502 10506 10530 10533 10547
+ 10442 10468 10490 10554 10562 10569
+ 10363 10463 10488 10643 10664
+ 10477 10485 10513 10532 10544 10556
+ 10489 10507 10534 10549
+ 10491 10506 10507 10533 10534 10551
+ 10492 10495 10514 10528 10541 10553
+ 9934 10343 10478 10744 10804
+ 10426 10465 10494 10515 10602 10609
+ 10495 10499 10525 10529 10553 10557
+ 10499 10505 10528 10535 10557 10561
+ 10502 10517 10519 10546 10547 15506
+ 10498 10512 10516 10536 10558 10567
+ 10485 10517 10522 10546 10556 10565
+ 10506 10519 10524 10547 10551 10563
+ 10507 10523 10524 10549 10551 10564
+ 10505 10509 10529 10536 10561 10566
+ 10509 10512 10531 10535 10566 10567
+ 10141 10242 10339 10570 10662 10777 10792
+ 9964 10184 10325 10376 10618 10822 10823
+ 7332 7379 8166 8722 11903 13752 15544
+ 10500 10501 10543 10560 10578 10595
+ 10514 10525 10553 10572
+ 10508 10513 10544 10545 10586 10593
+ 10500 10504 10540 10545 10578 10589
+ 10513 10522 10542 10556 10571 10586
+ 10504 10508 10542 10543 10589 10593
+ 10517 10530 10532 10565 10574 15506
+ 10519 10530 10533 10563 10580 15506
+ 9424 9719 10403 10573 10930 10975
+ 10523 10534 10564 10581
+ 10464 10490 10497 10552 10562 10606 10610
+ 10524 10533 10534 10563 10564 10582
+ 10497 10516 10550 10558 10600 10606
+ 10525 10528 10541 10557 10572 10583
+ 10468 10486 10520 10569 10577 10608 10638
+ 10422 10439 10510 10605 10627 10672
+ 10522 10532 10544 10565 10571 10584
+ 10528 10529 10553 10561 10583 10587
+ 10516 10531 10552 10567 10597 10600
+ 10386 10458 10482 10579 10665 10671
+ 10501 10503 10540 10575 10595 10617
+ 10529 10535 10557 10566 10587 10594
+ 10490 10520 10550 10569 10610 10620
+ 10533 10547 10551 10580 10582 10601
+ 10534 10549 10551 10581 10582 10599
+ 10532 10546 10556 10574 10584 10588
+ 10535 10536 10561 10567 10594 10598
+ 10531 10536 10558 10566 10597 10598
+ 9840 10227 10471 10710 10846 10903
+ 10520 10554 10562 10608 10620
+ 10242 10293 10537 10621 10775 10792
+ 10544 10556 10584 10586 10604
+ 10541 10553 10583 10607
+ 9296 9719 10548 10666 10975 11036
+ 10546 10565 10588 10591 10603 15506
+ 10493 10503 10560 10585 10617 10637
+ 10415 10511 10651 10685 10749 15505
+ 10486 10510 10554 10627 10638 10675
+ 10540 10543 10589 10595 10622
+ 10458 10494 10559 10609 10653 10665
+ 10547 10563 10591 10601 10613 15506
+ 10549 10564 10599 10612
+ 10551 10563 10564 10599 10601 10616
+ 10553 10557 10572 10587 10607 10615
+ 10556 10565 10571 10588 10604 10611
+ 10493 10515 10575 10602 10637 10648
+ 10542 10544 10571 10593 10604 10628
+ 10557 10561 10583 10594 10615 10619
+ 10565 10574 10584 10603 10611
+ 10543 10545 10578 10593 10622 10631
+ 10357 10463 10473 10643 10727 10747
+ 10574 10580 10603 10613 10623 15506
+ 10351 10414 10625 10639 10725 10814
+ 10542 10545 10586 10589 10628 10631
+ 10561 10566 10587 10598 10619 10624
+ 10540 10560 10578 10617 10622 10649
+ 10334 10482 10671 10685 10738 15505
+ 10558 10567 10598 10600 10626 10632
+ 10566 10567 10594 10597 10624 10626
+ 10564 10581 10582 10612 10616 10629
+ 10552 10558 10597 10606 10632 10642
+ 10563 10580 10582 10613 10616 10630
+ 10515 10527 10585 10609 10648 10660
+ 10574 10588 10591 10611 10623 10633
+ 10571 10584 10586 10611 10628 10636
+ 10439 10473 10555 10672 10727 10739
+ 10550 10552 10600 10610 10642 10652
+ 10572 10583 10615 10634
+ 10554 10569 10620 10638 10669
+ 10494 10527 10579 10602 10653 10660 10684
+ 10550 10562 10606 10620 10652 10657
+ 10584 10588 10603 10604 10633 10636
+ 10581 10599 10629 10640
+ 10580 10591 10601 10623 10630 10646
+ 9979 10207 10343 10698 10744 10917 10939
+ 10583 10587 10607 10619 10634 10641
+ 10582 10599 10601 10629 10630 10645
+ 10560 10575 10595 10637 10649 10676
+ 10376 10393 10538 10644 10816 10822
+ 10587 10594 10615 10624 10641 10647
+ 10562 10569 10608 10610 10657 10669
+ 10293 10407 10570 10625 10775 10784
+ 10578 10589 10595 10631 10649 10678
+ 10591 10603 10613 10633 10646 10656
+ 10594 10598 10619 10626 10647 10650
+ 10407 10414 10592 10621 10725 10784
+ 10597 10598 10624 10632 10650 10655
+ 10510 10555 10577 10672 10675 10726
+ 10586 10593 10604 10631 10636 10681 10682
+ 10599 10612 10616 10640 10645 10654
+ 10601 10613 10616 10645 10646 10659
+ 10589 10593 10622 10628 10678 10681
+ 10597 10600 10626 10642 10655 10668
+ 10603 10611 10623 10636 10656 10670
+ 10607 10615 10641 10658
+ 7178 7911 8355 11933 13535 14090
+ 10604 10611 10628 10633 10670 10682
+ 10575 10585 10617 10648 10676 10688
+ 10554 10577 10608 10669 10675 10704
+ 10322 10351 10592 10751 10814 10893
+ 10612 10629 10654 10663
+ 10615 10619 10634 10647 10658 10667
+ 10600 10606 10632 10652 10668 10686
+ 10463 10521 10590 10664 10747 10795
+ 10326 10393 10618 10677 10816 10859
+ 10616 10629 10630 10654 10659 15507
+ 10613 10623 10630 10656 10659 10679
+ 10619 10624 10641 10650 10667 10673
+ 10585 10602 10637 10660 10688 10693
+ 10595 10617 10622 10676 10678 10716
+ 10624 10626 10647 10655 10673 10680
+ 10496 10511 10576 10674 10749 10793
+ 10606 10610 10642 10657 10686 10695
+ 10579 10609 10665 10684 10709 10713
+ 10629 10640 10645 10663 10683 15507
+ 10626 10632 10650 10668 10680 10689
+ 10623 10633 10646 10670 10679 10694
+ 10610 10620 10652 10669 10695 10715
+ 10634 10641 10667 10687
+ 10630 10645 10646 10679 10691 15507
+ 10602 10609 10648 10684 10693 10700
+ 10240 10518 10703 10854 10952
+ 10339 10488 10537 10664 10761 10777 10844
+ 10640 10654 10683 10690
+ 10488 10521 10643 10662 10761 10795
+ 10559 10579 10653 10671 10709 10743
+ 9296 9359 10199 10573 11036 11074 11267
+ 10641 10647 10658 10673 10687 10692
+ 10632 10642 10655 10686 10689 10699
+ 10608 10620 10638 10657 10704 10715
+ 10633 10636 10656 10682 10694 10711
+ 10482 10559 10596 10665 10738 10743 10788
+ 10555 10605 10627 10726 10739 10773
+ 10647 10650 10667 10680 10692 10696
+ 10475 10496 10651 10677 10793 10843
+ 10577 10627 10638 10704 10726 10748
+ 10617 10637 10649 10688 10716 10721
+ 10326 10475 10644 10674 10843 10859
+ 10622 10631 10649 10681 10716 10735
+ 10646 10656 10659 10691 10694 10705
+ 10650 10655 10673 10689 10696 10701
+ 10628 10631 10678 10682 10720 10735
+ 10628 10636 10670 10681 10711 10720
+ 10654 10663 10690 10697 10702 15507
+ 10609 10653 10660 10700 10713 10733
+ 10576 10596 10738 10749 10818 15505
+ 10642 10652 10668 10695 10699 10717
+ 10658 10667 10692 10706
+ 10637 10648 10676 10693 10721 10729
+ 10655 10668 10680 10699 10701 10707
+ 10663 10683 10702 10708
+ 10659 10679 10697 10705 10714 15507
+ 10667 10673 10687 10696 10706 10712
+ 10648 10660 10688 10700 10729 10734
+ 10656 10670 10679 10705 10711 15508
+ 10652 10657 10686 10715 10717 10740
+ 10673 10680 10692 10701 10712 10718
+ 10683 10691 10702 10714 10719 15507
+ 10207 10327 10614 10751 10939 10958
+ 10668 10686 10689 10707 10717 10724
+ 10660 10684 10693 10733 10734
+ 10680 10689 10696 10707 10718 10723
+ 10683 10690 10697 10708 10719 10722
+ 10103 10240 10661 10731 10952 11019
+ 10638 10669 10675 10715 10748 10764
+ 10679 10691 10694 10714 10732 15508
+ 10687 10692 10712 10728
+ 10689 10699 10701 10723 10724
+ 10690 10702 10722 10730
+ 10653 10665 10713 10743 10750
+ 10227 10518 10568 10854 10903 10984
+ 10670 10682 10694 10720 10754 10758 15508
+ 10692 10696 10706 10718 10728 10737
+ 10653 10684 10709 10733 10750 10768
+ 10691 10697 10705 10719 10732 10736
+ 10657 10669 10695 10704 10740 10764 10785
+ 10649 10676 10678 10721 10735 10769 10781
+ 10686 10695 10699 10724 10740 10745 10763
+ 10696 10701 10712 10723 10737 10741
+ 10697 10702 10714 10722 10736 15509
+ 10681 10682 10711 10735 10758 10774
+ 10676 10688 10716 10729 10769 10772
+ 10702 10708 10719 10730 10746 15509
+ 10701 10707 10718 10724 10741 10742
+ 10699 10707 10717 10723 10742 10745
+ 10592 10625 10784 10814 10907
+ 10627 10672 10675 10748 10773 10827
+ 10473 10590 10605 10739 10747 10840 10862
+ 10706 10712 10737 10753
+ 10688 10693 10721 10734 10770 10772
+ 10708 10722 10746 10756
+ 9947 10103 10462 10703 10934 11019 11072
+ 10705 10714 10736 10755 10757 15508
+ 10684 10700 10713 10734 10768 10779
+ 10693 10700 10729 10733 10770 10779
+ 10678 10681 10716 10720 10774 10781 10798
+ 10714 10719 10732 10757 10759 15509
+ 10712 10718 10728 10741 10753 10760
+ 10596 10671 10685 10788 10818 15511
+ 10605 10672 10727 10773 10840 10852
+ 10695 10715 10717 10763 10785 10796
+ 10718 10723 10737 10742 10760 10765
+ 10723 10724 10741 10745 10762 10765
+ 10665 10671 10709 10750 10788 10820 10853
+ 10343 10526 10614 10804 10917 10961
+ 10717 10724 10742 10762 10763 10783
+ 10722 10730 10756 10766 10771 15509
+ 10590 10643 10727 10795 10862 10887
+ 10675 10704 10726 10764 10827 10829
+ 10576 10651 10685 10793 10818 10908
+ 10709 10713 10743 10768 10820
+ 10322 10327 10639 10698 10893 10958 10990
+ 7248 7709 8151 12039 12141 13965
+ 10728 10737 10760 10782
+ 10711 10755 10758 10786 10789 15508
+ 10732 10754 10757 10776 10786 15508
+ 10730 10746 10771 10780
+ 10732 10736 10755 10759 10776 10778
+ 10711 10720 10754 10774 10789 10799
+ 10736 10757 10766 10778 10787 15509
+ 10737 10741 10753 10765 10782 10790
+ 10662 10664 10795 10844 10921
+ 10742 10745 10765 10783 10791
+ 10717 10740 10745 10783 10796 10805
+ 10704 10715 10748 10785 10829 10832
+ 10741 10742 10760 10762 10790 10791
+ 10746 10759 10771 10787 10794 15509
+ 7455 8151 8166 12039 15544 15579
+ 10713 10733 10750 10779 10820 10861
+ 10716 10721 10772 10781 10811 10821
+ 10729 10734 10772 10779 10847 15510
+ 10746 10756 10766 10780 10794 10801
+ 10721 10729 10769 10770 10811 15510
+ 10672 10726 10739 10827 10852 10870
+ 10720 10735 10758 10798 10799 10809
+ 10570 10621 10784 10792 10911 10936
+ 10755 10757 10778 10786 10797 10800
+ 10537 10662 10792 10844 10937 10945
+ 10757 10759 10776 10787 10797 10803
+ 10733 10734 10768 10770 10847 10861
+ 10756 10771 10801 10806
+ 10716 10735 10769 10798 10821 10831
+ 10753 10760 10790 10808
+ 10745 10762 10763 10791 10805 10812
+ 10621 10625 10725 10775 10907 10911
+ 10715 10740 10764 10796 10832 10834
+ 10754 10755 10776 10789 10800 10807
+ 10759 10766 10778 10794 10803 10810
+ 10671 10738 10743 10853 10883 15511
+ 10754 10758 10786 10799 10807 10813
+ 10760 10765 10782 10791 10808 10815
+ 10762 10765 10783 10790 10812 10815
+ 10537 10570 10775 10777 10936 10945
+ 10651 10674 10749 10843 10908 10951
+ 10766 10771 10787 10801 10810 10819
+ 10643 10664 10747 10761 10887 10921 10944
+ 10740 10763 10785 10805 10834 10839
+ 10776 10778 10800 10803 10817
+ 10735 10774 10781 10809 10830 10831
+ 10758 10774 10789 10809 10813 10826
+ 10776 10786 10797 10807 10817 10824
+ 10771 10780 10794 10806 10819 10825
+ 10471 10478 10804 10846 11012 11014
+ 10778 10787 10797 10810 10817 10828
+ 10478 10526 10744 10802 10961 11014
+ 10763 10783 10796 10812 10839 10845
+ 10780 10801 10825 10833
+ 10786 10789 10800 10813 10824 10835
+ 10782 10790 10815 10836
+ 10774 10798 10799 10826 10830 10838
+ 10787 10794 10803 10819 10828 10837
+ 10769 10772 10821 10850 10873 15510
+ 10783 10791 10805 10815 10845 10848
+ 10789 10799 10807 10826 10835 10849
+ 10592 10639 10725 10893 10907 10988
+ 10790 10791 10808 10812 10836 10848
+ 10618 10644 10822 10859 10981 11007
+ 10797 10800 10803 10824 10828 10841
+ 10685 10738 10749 10908 15511 15514
+ 10794 10801 10810 10825 10837 10851
+ 10743 10750 10768 10853 10861 10900
+ 10769 10781 10811 10831 10850 10864
+ 10538 10618 10816 10823 10981 11010
+ 10325 10538 10822 10875 11010 11076
+ 10800 10807 10817 10835 10841 10855
+ 10801 10806 10819 10833 10851 10860
+ 10799 10809 10813 10838 10849 10863
+ 10726 10748 10773 10829 10870 10891 10904
+ 10803 10810 10817 10837 10841 10856
+ 10748 10764 10827 10832 10885 10891
+ 10798 10809 10831 10838 10858
+ 10781 10798 10821 10830 10858 10864 10874
+ 10764 10785 10829 10834 10881 10885
+ 10806 10825 10860 10866
+ 10785 10796 10832 10839 10880 10881
+ 10807 10813 10824 10849 10855 10867
+ 10808 10815 10848 10872
+ 10810 10819 10828 10851 10856 10868
+ 10809 10826 10830 10858 10863 10871
+ 10796 10805 10834 10845 10879 10880
+ 10727 10739 10852 10862 10920 10932
+ 10817 10824 10828 10855 10856 10869
+ 10106 10865 10897 11294 11322 15422
+ 10674 10677 10793 10859 10951 10999
+ 10662 10761 10777 10921 10937 10966
+ 10805 10812 10839 10848 10877 10879
+ 10471 10568 10802 10903 11012 11049
+ 10770 10779 10861 10873 10914 15510
+ 10812 10815 10836 10845 10872 10877
+ 10813 10826 10835 10863 10867 10876
+ 10811 10821 10864 10873 10892
+ 10819 10825 10837 10860 10868 15512
+ 10739 10773 10840 10870 10920 15513
+ 10743 10788 10820 10883 10900 10928
+ 10518 10661 10710 10952 10984 11070
+ 10824 10835 10841 10867 10869 10878
+ 10828 10837 10841 10868 10869 10884
+ 7730 7911 11227 11933 13414
+ 10830 10831 10838 10871 10874 10882
+ 10644 10677 10816 10843 10999 11007
+ 10825 10833 10851 10866 10888 15512
+ 10768 10779 10820 10847 10900 10914 10954
+ 10727 10747 10840 10887 10932 10950
+ 10826 10838 10849 10871 10876 10890
+ 10821 10831 10850 10874 10892 10905
+ 9305 10842 11175 11322 15422
+ 10833 10860 10888 10895
+ 10835 10849 10855 10876 10878 10886
+ 10837 10851 10856 10884 10898 15512
+ 10841 10855 10856 10878 10884 10894
+ 10773 10827 10852 10904 10931 15513
+ 10838 10858 10863 10882 10890 10899
+ 10836 10848 10877 10906
+ 10811 10847 10850 10892 10914 10933 15510
+ 10831 10858 10864 10882 10905 10909
+ 10288 10325 10823 10897 11076 11198
+ 10849 10863 10867 10886 10890 10902
+ 10845 10848 10872 10879 10906 10913
+ 10855 10867 10869 10886 10894 10901
+ 10839 10845 10877 10880 10913 10915
+ 10834 10839 10879 10881 10915 10918
+ 10832 10834 10880 10885 10918 10922
+ 10858 10871 10874 10899 10909
+ 10788 10853 10928 10943 15511
+ 10856 10868 10869 10894 10898 10912
+ 10829 10832 10881 10891 10922 10925
+ 10867 10876 10878 10901 10902
+ 10747 10795 10862 10944 10950 10979
+ 10860 10866 10895 10910 10919 15512
+ 8935 9066 10199 10971 11074 11573 11578
+ 10863 10871 10876 10899 10902 10916
+ 10827 10829 10885 10904 10925 10935
+ 10850 10864 10873 10905 10933 10942
+ 10639 10751 10814 10988 10990 11048
+ 10869 10878 10884 10901 10912 10923
+ 10866 10888 10919 10924
+ 9994 10403 10462 10930 10934 11179 11182
+ 10106 10288 10842 10875 11198 11294
+ 10868 10884 10910 10912 10927 15512
+ 10871 10882 10890 10909 10916 10929
+ 10820 10853 10861 10928 10954 10996
+ 10878 10886 10894 10902 10923 10926
+ 10876 10886 10890 10901 10916 10926
+ 10568 10710 10846 10984 11049 11092
+ 10827 10870 10891 10931 10935 10955
+ 10864 10874 10892 10909 10940 10942
+ 10872 10877 10913 10938
+ 10725 10784 10814 10911 10988 11045
+ 10749 10793 10818 10951 11025 11029 15514
+ 10874 10882 10899 10905 10929 10940
+ 10888 10898 10919 10927 10941 15512
+ 10775 10784 10907 10936 11035 11045
+ 10884 10894 10898 10923 10927 10948
+ 10877 10879 10906 10915 10938 10947
+ 10847 10861 10873 10933 10954 10983
+ 10879 10880 10913 10918 10947 10953
+ 10890 10899 10902 10926 10929 10959
+ 10614 10744 10939 10961 11091 11097
+ 10880 10881 10915 10922 10953 10957
+ 10888 10895 10910 10924 10941 10949
+ 10840 10852 10932 10969 10985 15513
+ 10761 10795 10844 10944 10966 11001
+ 10881 10885 10918 10925 10957 10960
+ 10894 10901 10912 10926 10948 10963
+ 10895 10919 10949 10956
+ 10885 10891 10922 10935 10960 10962
+ 10901 10902 10916 10923 10959 10963
+ 10898 10910 10912 10941 10948 10965
+ 10853 10883 10900 10943 10996 11005
+ 10899 10909 10916 10940 10959 10970
+ 10403 10548 10896 10975 11182 11215
+ 10870 10904 10955 10964 10967 15513
+ 10840 10862 10920 10950 10985 10997
+ 10873 10892 10914 10942 10983 10991
+ 10462 10731 10896 11072 11179 11204
+ 10891 10904 10925 10955 10962 10968
+ 10775 10792 10911 10945 11035 11040
+ 10777 10844 10945 10966 11027 11047
+ 10906 10913 10947 10972
+ 10614 10698 10917 10958 11091 11131
+ 10905 10909 10929 10942 10970 10986
+ 10910 10919 10927 10949 10965 10973
+ 10892 10905 10933 10940 10986 10991
+ 10883 10928 11005 11015 15511 15514
+ 10795 10887 10921 10979 11001 11026
+ 10777 10792 10936 10937 11040 11047
+ 8358 9305 9530 11175 11492 11859
+ 10913 10915 10938 10953 10972 10977
+ 10912 10923 10927 10963 10965 10982
+ 10919 10924 10941 10956 10973 10974
+ 10862 10887 10932 10979 10997 11020
+ 10793 10843 10908 10999 11025 11065
+ 10661 10703 10854 11019 11070 11149
+ 10915 10918 10947 10957 10977 10980
+ 10861 10900 10914 10983 10996 11039
+ 10904 10931 10935 10964 10968 10976
+ 10924 10949 10974 10978
+ 10918 10922 10953 10960 10980 10987
+ 10698 10751 10939 10990 11095 11131
+ 10916 10926 10929 10963 10970 10995
+ 10922 10925 10957 10962 10987 10992
+ 10744 10804 10917 11014 11097 11102
+ 10925 10935 10960 10968 10989 10992
+ 10923 10926 10948 10959 10982 10995 11008
+ 10931 10955 10967 10976 10993
+ 10927 10941 10948 10973 10982 10998
+ 10844 10921 10937 11001 11027 11052
+ 10931 10964 10969 10993 11002 15513
+ 10935 10955 10962 10976 10989 10994
+ 10920 10967 10985 11002 11043 15513
+ 10929 10940 10959 10986 10995 11022
+ 8918 9066 10889 11034 11578 11733
+ 10938 10947 10977 11004
+ 10941 10949 10965 10974 10998 11000
+ 10949 10956 10973 10978 11000 11006
+ 10548 10573 10930 11036 11215 11271
+ 10955 10964 10968 10993 10994 11003
+ 10947 10953 10972 10980 11004 11013
+ 10956 10974 11006 11009
+ 10887 10944 10950 11020 11026 11059
+ 10953 10957 10977 10987 11013 11016
+ 10816 10822 11007 11010 11139 11158
+ 10948 10963 10965 10998 11008 11021
+ 10914 10933 10954 10991 11039 11042
+ 10710 10854 10903 11070 11092 11176
+ 10920 10932 10969 10997 11043 11044
+ 10940 10942 10970 10991 11022 11030
+ 10957 10960 10980 10992 11016 11018
+ 10814 10893 10907 11045 11048 11120
+ 10962 10968 10992 10994 11011 11017
+ 10751 10893 10958 11048 11095 11121
+ 10933 10942 10983 10986 11030 11042
+ 10960 10962 10987 10989 11017 11018
+ 10964 10967 10976 11002 11003 11023
+ 10968 10976 10989 11003 11011
+ 10959 10963 10970 11008 11022 11033
+ 10900 10928 10954 11005 11039 11071 11103
+ 10932 10950 10985 11020 11044 11058
+ 10965 10973 10982 11000 11021 11024
+ 10843 10859 10951 11007 11065 11141
+ 10973 10974 10998 11006 11024 11031
+ 10921 10944 10966 11026 11052 11062
+ 10967 10969 10993 11023 11043 11057
+ 10976 10993 10994 11011 11023 11032
+ 10972 10977 11013 11046
+ 10928 10943 10996 11015 11068 11071
+ 10974 10978 11000 11009 11031 11038
+ 10816 10859 10981 10999 11141 11158
+ 10963 10982 10995 11021 11033 11056
+ 10978 11006 11038 11041
+ 10822 10823 10981 11076 11139 11180
+ 10989 10994 11003 11017 11032 11050
+ 10802 10846 11014 11049 11125 11157
+ 10977 10980 11004 11016 11046 11053
+ 10802 10804 10961 11012 11102 11125 11132
+ 10943 11005 11029 11068 11093 15514
+ 10980 10987 11013 11018 11053 11055
+ 10989 10992 11011 11018 11050 11054
+ 10987 10992 11016 11017 11054 11055
+ 10703 10731 10952 11072 11149 11239
+ 10950 10979 10997 11058 11059 11080
+ 10982 10998 11008 11024 11056 11060
+ 10970 10986 10995 11030 11033 11075 11078
+ 10993 11002 11003 11032 11057 11063
+ 10998 11000 11021 11031 11060 11061
+ 10908 10951 11029 11065 11122 11136
+ 10944 10979 11001 11059 11062 11085
+ 10937 10966 11047 11052 11108 11109
+ 8118 8472 11079 11137 12969 13265
+ 10908 11015 11025 11093 11122 15514
+ 10986 10991 11022 11042 11075 11086
+ 11000 11006 11024 11038 11061 11064
+ 11003 11011 11023 11050 11063 11069
+ 10995 11008 11022 11056 11078 11083
+ 8739 8918 10971 11079 11733 12178
+ 10911 10936 11040 11045 11142 11150
+ 10573 10666 10975 11267 11271 11445
+ 8108 8722 9530 11492 11903 13212
+ 11006 11009 11031 11041 11064 11067
+ 10954 10983 10996 11042 11101 11103
+ 10936 10945 11035 11047 11115 11150
+ 11009 11038 11066 11067
+ 10983 10991 11030 11039 11086 11101
+ 10969 10985 11002 11044 11057 11084 11090
+ 10985 10997 11043 11058 11084 11088
+ 10907 10911 10988 11035 11120 11142 11184
+ 11004 11013 11053 11073
+ 10937 10945 11027 11040 11109 11115
+ 10893 10988 10990 11120 11121 11145
+ 10846 10903 11012 11092 11157 11206
+ 11011 11017 11032 11054 11069 11077
+ 5293 6549 7003 14806 14945 15040
+ 10966 11001 11027 11062 11106 11108
+ 11013 11016 11046 11055 11073 11081
+ 11017 11018 11050 11055 11077 11082
+ 11016 11018 11053 11054 11081 11082
+ 11008 11021 11033 11060 11083 11087
+ 11002 11023 11043 11063 11090 11099
+ 10997 11020 11044 11080 11088 11107
+ 10979 11020 11026 11080 11085 11105
+ 11021 11024 11056 11061 11087 11089
+ 11024 11031 11060 11064 11089 11094
+ 11001 11026 11052 11085 11106 11124
+ 11023 11032 11057 11069 11099 11104
+ 11031 11038 11061 11067 11094 11098
+ 10951 10999 11025 11136 11141 11188
+ 11041 11067 11096 11100
+ 11038 11041 11064 11066 11098 11100
+ 11005 11015 11071 11093 11165
+ 11032 11050 11063 11077 11104 11110
+ 10854 10952 10984 11149 11176 11304
+ 10996 11005 11068 11103 11165 11169
+ 10731 10934 11019 11204 11239 11302
+ 11046 11053 11081 11112
+ 10199 10666 10889 11267 11573 11599
+ 11022 11030 11078 11086 11113 11118
+ 10823 10875 11010 11180 11198 11337
+ 11050 11054 11069 11082 11110 11114
+ 11022 11033 11075 11083 11111 11113
+ 8118 8739 11028 11034 12178 12969
+ 11020 11058 11059 11105 11107 11128
+ 11053 11055 11073 11082 11112 11116
+ 11054 11055 11077 11081 11114 11116
+ 11033 11056 11078 11087 11111 11119
+ 11043 11044 11088 11090 11126 11130
+ 11026 11059 11062 11105 11124 11144
+ 11030 11042 11075 11101 11118 11148
+ 11056 11060 11083 11089 11117 11119
+ 11044 11058 11084 11107 11123 11126
+ 11060 11061 11087 11094 11117 11127
+ 11043 11057 11084 11099 11130 11138
+ 10917 10939 11097 11131 11216 11238
+ 10903 10984 11049 11176 11206 11273
+ 11015 11029 11068 11122 11165 11212
+ 11061 11064 11089 11098 11127 11133
+ 10958 10990 11121 11131 11200 11220
+ 11066 11100 11129 11134
+ 10917 10961 11091 11102 11216 11222 11249
+ 11064 11067 11094 11100 11133 11135
+ 11057 11063 11090 11104 11138 11143
+ 11066 11067 11096 11098 11134 11135
+ 11039 11042 11086 11103 11148 11183
+ 10961 11014 11097 11132 11195 11222
+ 10996 11039 11071 11101 11169 11183
+ 11063 11069 11099 11110 11143 11147
+ 11059 11080 11085 11128 11144 11160
+ 11052 11062 11108 11124 11185 11186
+ 11058 11080 11088 11123 11128 11151
+ 11027 11052 11106 11109 11171 11185
+ 11027 11047 11108 11115 11171 11178
+ 11069 11077 11104 11114 11147 11153
+ 11078 11083 11113 11119 11140 11146
+ 11073 11081 11116 11155
+ 11075 11078 11111 11118 11146 11152
+ 11077 11082 11110 11116 11153 11156
+ 11040 11047 11109 11150 11178 11190
+ 11081 11082 11112 11114 11155 11156
+ 11087 11089 11119 11127 11154 11159
+ 11075 11086 11113 11148 11152 11172
+ 11083 11087 11111 11117 11140 11154
+ 10988 11045 11048 11145 11184 11211 11243
+ 10990 11048 11095 11145 11200 11218
+ 11025 11029 11093 11136 11212 11225
+ 11088 11107 11126 11151 11162
+ 11062 11085 11106 11144 11186 11191
+ 11012 11014 11132 11157 11224 11254
+ 11084 11088 11123 11130 11162 11163
+ 11089 11094 11117 11133 11159 11166
+ 11080 11105 11107 11151 11160 11174
+ 11096 11134 11161 11164
+ 11084 11090 11126 11138 11163 11168
+ 10939 10958 11091 11095 11220 11238 11291
+ 11014 11102 11125 11195 11224
+ 11094 11098 11127 11135 11166 11170
+ 11096 11100 11129 11135 11164 11167
+ 11098 11100 11133 11134 11167 11170
+ 11025 11065 11122 11188 11225
+ 8472 8881 11028 11227 13265 13426
+ 11090 11099 11130 11143 11168 11177
+ 10981 11010 11158 11180 11310 11348
+ 11111 11119 11146 11154 11173
+ 10999 11007 11065 11158 11188 11316
+ 11035 11045 11150 11184 11240 11261
+ 11099 11104 11138 11147 11177 11181
+ 11085 11105 11124 11160 11191 11201
+ 11048 11120 11121 11211 11218 11234
+ 11111 11113 11140 11152 11173 11193
+ 11104 11110 11143 11153 11181 11187
+ 11086 11101 11118 11172 11183 11213
+ 10952 11019 11070 11239 11304 11355
+ 11035 11040 11115 11142 11190 11240 11247
+ 11107 11123 11128 11162 11174 15515
+ 11113 11118 11146 11172 11193 11196
+ 11110 11114 11147 11156 11187 11192
+ 11117 11119 11140 11159 11173 11189
+ 11112 11116 11156 15516
+ 11114 11116 11153 11155 11192 15516
+ 11012 11049 11125 11206 11254 11314
+ 10981 11007 11139 11141 11316 11348
+ 11117 11127 11154 11166 11189 11203
+ 11105 11128 11144 11174 11201 11209
+ 11129 11164 11194 11199
+ 11123 11126 11151 11163 11197 15515
+ 11126 11130 11162 11168 11197 11205
+ 11129 11134 11161 11167 11199 11202
+ 11068 11071 11093 11169 11212 11260
+ 11127 11133 11159 11170 11203 11208
+ 11134 11135 11164 11170 11202 11207
+ 11130 11138 11163 11177 11205 11210
+ 11071 11103 11165 11183 11260 11264
+ 11133 11135 11166 11167 11207 11208
+ 11108 11109 11178 11185 11226 11232
+ 11118 11148 11152 11196 11213
+ 11140 11146 11154 11189 11193 11233
+ 11128 11151 11160 11209 11217 15515
+ 9305 10865 10946 11322 11859 12320
+ 10984 11070 11092 11273 11304 11365
+ 11138 11143 11168 11181 11210 11214
+ 11109 11115 11171 11190 11219 11232
+ 10896 10934 11182 11204 11407 11410
+ 11010 11076 11139 11310 11337
+ 11143 11147 11177 11187 11214 11221
+ 10896 10930 11179 11215 11407 11462
+ 11101 11103 11148 11169 11213 11255 11264
+ 11045 11120 11142 11243 11261 11289
+ 11106 11108 11171 11186 11226 11230 11237
+ 11106 11124 11185 11191 11230 11236
+ 11147 11153 11181 11192 11221 11228
+ 11065 11136 11141 11225 11316 11353
+ 11154 11159 11173 11203 11233 11245
+ 11115 11150 11178 11219 11247 11263
+ 11124 11144 11186 11201 11236 11244
+ 11153 11156 11187 11228 11231 15516
+ 11146 11152 11173 11196 11233 11246
+ 11161 11199 11223 11235
+ 11102 11132 11222 11224 11287
+ 11152 11172 11193 11213 11246 11256
+ 11162 11163 11205 11229 11242 15515
+ 10875 10897 11076 11294 11337 11621
+ 11161 11164 11194 11202 11235 11241
+ 11095 11121 11218 11220 11280 11312
+ 11144 11160 11191 11209 11244 11252
+ 11164 11167 11199 11207 11241 11248
+ 11159 11166 11189 11208 11245 11253
+ 10934 11072 11179 11302 11410 11426
+ 11163 11168 11197 11210 11242 11251
+ 11049 11092 11157 11273 11314 11372
+ 11167 11170 11202 11208 11248 11250
+ 11166 11170 11203 11207 11250 11253
+ 11160 11174 11201 11217 11252 11258
+ 11168 11177 11205 11214 11251 11257
+ 11120 11145 11234 11243 11295 11297
+ 11093 11122 11165 11225 11260 11364 11375
+ 11148 11172 11183 11196 11255 11256 11266
+ 11177 11181 11210 11221 11257 11265
+ 10930 10975 11182 11271 11462 11500
+ 11091 11097 11238 11249 11323 11335
+ 11174 11209 11229 11258 11269 15515
+ 11121 11145 11200 11234 11280 11286
+ 11178 11190 11232 11263 11281
+ 11095 11131 11200 11291 11312 11354
+ 11181 11187 11214 11228 11265 11272
+ 11097 11102 11195 11249 11287 11334
+ 11194 11235 11259 11270
+ 11125 11132 11195 11254 11287 11347
+ 11122 11136 11188 11212 11353 11364
+ 11171 11185 11232 11237 11274 11282
+ 7730 8881 10857 11137 13414 13426
+ 11187 11192 11221 11231 11272 11275
+ 11197 11217 11242 11269 11278 15515
+ 11185 11186 11236 11237 11262 11268
+ 11192 11228 11275 15516
+ 11171 11178 11219 11226 11281 11282
+ 11173 11189 11193 11245 11246 11298 11306
+ 11145 11211 11218 11286 11297
+ 11194 11199 11223 11241 11270 11277
+ 11186 11191 11230 11244 11268 11276
+ 11185 11226 11230 11262 11274
+ 11091 11131 11216 11291 11335 11373
+ 11019 11072 11149 11302 11355 11443
+ 11142 11150 11247 11261 11327 11339
+ 11199 11202 11235 11248 11277 11279
+ 11197 11205 11229 11251 11278 11283
+ 11120 11184 11211 11289 11295 11308
+ 11191 11201 11236 11252 11276 11285
+ 11189 11203 11233 11253 11301 11306
+ 11193 11196 11233 11256 11296 11298
+ 11150 11190 11240 11263 11325 11327
+ 11202 11207 11241 11250 11279 11284
+ 11097 11216 11222 11323 11334 11382
+ 11207 11208 11248 11253 11284 11290
+ 11205 11210 11242 11257 11283 11293
+ 11201 11209 11244 11258 11285 11300
+ 11203 11208 11245 11250 11290 11301
+ 11125 11157 11224 11314 11347 11389
+ 11183 11213 11264 11266 11303 15517
+ 11196 11213 11246 11266 11288 11296
+ 11210 11214 11251 11265 11293 11305
+ 11209 11217 11252 11269 11300 11311
+ 11223 11270 11292 11307
+ 11165 11169 11212 11264 11375 11385
+ 11142 11184 11240 11289 11339 11362
+ 11230 11237 11268 11274 11309
+ 11190 11219 11247 11281 11325 11331
+ 11169 11183 11255 11260 11385 15517
+ 11214 11221 11257 11272 11305 11313
+ 11213 11255 11256 11288 11303 11320
+ 10666 11036 11074 11445 11599 11664
+ 11230 11236 11262 11276 11309 11318
+ 11217 11229 11258 11278 11311 11317
+ 11223 11235 11259 11277 11307 11315
+ 10975 11036 11215 11445 11500 11630
+ 11221 11228 11265 11275 11313 11319
+ 11092 11176 11206 11365 11372 11434
+ 11226 11237 11262 11282 11309 11338
+ 11228 11231 11272 11319
+ 11236 11244 11268 11285 11318 11328
+ 11235 11241 11270 11279 11315 11321
+ 11229 11242 11269 11283 11317 11324
+ 11241 11248 11277 11284 11321 11326
+ 11200 11218 11286 11312 11358 11381
+ 11219 11232 11263 11282 11331 11341
+ 11226 11232 11274 11281 11338 11341
+ 11242 11251 11278 11293 11324 11333
+ 11248 11250 11279 11290 11326 11332
+ 11244 11252 11276 11300 11328 11336
+ 11218 11234 11280 11297 11346 11358
+ 11195 11222 11224 11334 11347 11405
+ 11256 11266 11296 11320 11329
+ 11184 11243 11261 11308 11362 11367
+ 11250 11253 11284 11301 11332 11344
+ 11131 11220 11238 11354 11373 11412
+ 11259 11307 11330 11340
+ 11251 11257 11283 11305 11333 11343
+ 10842 10897 11198 11322 11621 11962
+ 11211 11243 11297 11308 11351 11359
+ 11246 11256 11288 11298 11329 11342
+ 11211 11234 11286 11295 11346 11351
+ 11233 11246 11296 11306 11342 11360
+ 6494 6562 8232 13260 14955 15024
+ 11252 11258 11285 11311 11336 11345
+ 11245 11253 11290 11306 11344 11357
+ 11072 11204 11239 11426 11443 11506
+ 11255 11266 11320 11349 15517
+ 11070 11149 11176 11355 11365 11491 11514
+ 11257 11265 11293 11313 11343 11352
+ 11233 11245 11298 11301 11357 11360 11383
+ 11259 11270 11292 11315 11340 11350
+ 11243 11289 11295 11359 11367
+ 11262 11268 11274 11318 11338 11374 11390
+ 11139 11180 11337 11348 11556 11680
+ 11258 11269 11300 11317 11345 11356
+ 11200 11220 11280 11354 11381 11411
+ 11265 11272 11305 11319 11352 11361
+ 11157 11206 11254 11372 11389 11498
+ 11270 11277 11307 11321 11350 11363
+ 11141 11158 11188 11348 11353 11520 11534
+ 11269 11278 11311 11324 11356 11366
+ 11268 11276 11309 11328 11371 11374
+ 11272 11275 11313 11361
+ 11266 11288 11303 11329 11349 11368
+ 11277 11279 11315 11326 11363 11370
+ 10842 10865 11175 11294 11962 12320
+ 11216 11249 11335 11382 11404
+ 11278 11283 11317 11333 11366 11377
+ 11247 11263 11327 11331 11397 11408
+ 11279 11284 11321 11332 11370 11376
+ 11240 11247 11325 11339 11408 11423
+ 11276 11285 11318 11336 11371 11379
+ 11288 11296 11320 11342 11368 11378
+ 11292 11340 11369 11380
+ 11263 11281 11325 11341 11396 11397
+ 11284 11290 11326 11344 11376 11384
+ 11283 11293 11324 11343 11377 11386
+ 11222 11249 11287 11382 11405 11437
+ 11216 11238 11323 11373 11404 11438
+ 11285 11300 11328 11345 11379 11387
+ 11076 11180 11198 11310 11621 11680
+ 11274 11282 11309 11341 11390 11403 11406
+ 11240 11261 11327 11362 11423 11441
+ 11292 11307 11330 11350 11380 11391
+ 11281 11282 11331 11338 11396 11406
+ 11296 11298 11329 11360 11378 11395
+ 11293 11305 11333 11352 11386 11394
+ 11290 11301 11332 11357 11384 11388
+ 11300 11311 11336 11356 11387 11393
+ 11286 11297 11351 11358 11392 11421
+ 11224 11254 11287 11389 11405 11485
+ 11139 11158 11310 11316 11534 11556
+ 11303 11320 11368 11398 11427 15517
+ 11307 11315 11340 11363 11391 11399
+ 11295 11297 11346 11359 11392 11422
+ 11305 11313 11343 11361 11394 11401
+ 11188 11225 11316 11364 11518 11520
+ 11220 11291 11312 11411 11412 11458
+ 11149 11239 11304 11443 11491 11545
+ 11311 11317 11345 11366 11393 11402
+ 11301 11306 11344 11383 11388 11416
+ 11280 11286 11346 11381 11421 11447
+ 11295 11308 11351 11367 11422 11431
+ 11298 11306 11342 11383 11395 11414
+ 11313 11319 11352 11401
+ 11261 11289 11339 11367 11440 11441
+ 11315 11321 11350 11370 11399 11409
+ 11212 11225 11353 11375 11518 15519
+ 11176 11273 11304 11434 11514 11548
+ 11317 11324 11356 11377 11402 11415
+ 11289 11308 11359 11362 11431 11440
+ 11320 11329 11349 11378 11398 11413
+ 11330 11380 11400 11417
+ 11321 11326 11363 11376 11409 11419
+ 11318 11328 11374 11379 11418 11420
+ 11206 11273 11314 11434 11498 11531
+ 11238 11291 11335 11412 11438 11472
+ 11309 11318 11371 11390 11418 11430
+ 11212 11260 11364 11385 11508 15519
+ 11326 11332 11370 11384 11419 11425
+ 11324 11333 11366 11386 11415 11429
+ 11329 11342 11368 11395 11413 11432
+ 11328 11336 11371 11387 11420 11428
+ 11330 11340 11369 11391 11417 11433
+ 11280 11312 11358 11411 11447 11489
+ 11249 11323 11334 11404 11437 11473
+ 11306 11357 11360 11414 11416 15518
+ 11332 11344 11376 11388 11424 11425
+ 11260 11264 11375 11427 11508 11513 15517
+ 11333 11343 11377 11394 11429 11436
+ 11336 11345 11379 11393 11428 11435
+ 11344 11357 11384 11416 11424
+ 11254 11314 11347 11485 11498 11538
+ 11309 11338 11374 11403 11430 11442
+ 11340 11350 11380 11399 11433 11444
+ 11346 11351 11421 11422 11455
+ 11345 11356 11387 11402 11435 11448
+ 11343 11352 11386 11401 11436 11449
+ 11342 11360 11378 11414 11432 11446
+ 11331 11341 11397 11406 11456 11466
+ 11325 11331 11396 11408 11466 11481
+ 11349 11368 11413 11427 11451
+ 11350 11363 11391 11409 11444 11453
+ 11369 11417 11439 11452
+ 11352 11361 11394 11449
+ 11356 11366 11393 11415 11448 11454
+ 11338 11390 11406 11442 11450
+ 11323 11335 11382 11438 11473 11510
+ 11287 11334 11347 11437 11485 11551
+ 11338 11341 11396 11403 11450 11456
+ 11179 11182 11410 11462 11583 11730
+ 11325 11327 11397 11423 11481 11490
+ 11363 11370 11399 11419 11453 11461
+ 11179 11204 11407 11426 11583 11591
+ 11312 11354 11381 11458 11486 11489
+ 11291 11354 11373 11458 11472 11501
+ 11368 11378 11398 11432 11451 11468
+ 11360 11383 11395 11446 11470 15518
+ 11366 11377 11402 11429 11454 11463
+ 11357 11383 11388 11424 11457 15518
+ 11369 11380 11400 11433 11452 11469
+ 11371 11374 11420 11430 11459 11460
+ 11370 11376 11409 11425 11461 11467
+ 11371 11379 11418 11428 11459 11464
+ 11346 11358 11392 11447 11455 11478
+ 11351 11359 11392 11431 11455 11482 11484
+ 11327 11339 11408 11441 11490 11532
+ 11384 11388 11416 11425 11457 11465
+ 11376 11384 11419 11424 11465 11467
+ 11204 11302 11410 11506 11591 11603
+ 11349 11385 11398 11451 11495 11513 15517
+ 11379 11387 11420 11435 11464 11475
+ 11377 11386 11415 11436 11463 11476
+ 11374 11390 11418 11442 11460 11471
+ 11359 11367 11422 11440 11484 11523
+ 11378 11395 11413 11446 11468 11483
+ 11380 11391 11417 11444 11469 11479
+ 11273 11365 11372 11531 11548 11549
+ 11387 11393 11428 11448 11475 11480
+ 11386 11394 11429 11449 11476 11487
+ 11334 11382 11405 11473 11551 11567
+ 11335 11373 11404 11472 11510 11542
+ 11400 11452 11474 11488
+ 11362 11367 11431 11441 11519 11523
+ 11339 11362 11423 11440 11519 11532
+ 11390 11403 11430 11450 11471 11477
+ 11239 11302 11355 11506 11545 11618
+ 11391 11399 11433 11453 11479 11496
+ 11036 11267 11271 11630 11664 11868
+ 11395 11414 11432 11470 11483
+ 11358 11381 11421 11478 11489 11553
+ 11393 11402 11435 11454 11480 11493
+ 11394 11401 11436 11487
+ 11403 11406 11442 11456 11477 11497
+ 11398 11413 11427 11468 11495 11502
+ 11400 11417 11439 11469 11488 11503
+ 11399 11409 11444 11461 11496 11509
+ 11402 11415 11448 11463 11493 11504
+ 11392 11421 11422 11478 11482 11525
+ 11396 11406 11450 11466 11497 11517
+ 11416 11424 11465 11522 11528 15518
+ 11354 11411 11412 11486 11501 11544
+ 11418 11420 11460 11464 11499 11505
+ 11418 11430 11459 11471 11494 11499
+ 11409 11419 11453 11467 11509 11515
+ 11182 11215 11407 11500 11730 11738
+ 11415 11429 11454 11476 11504 11516
+ 11420 11428 11459 11475 11505 11511
+ 11424 11425 11457 11467 11526 11528
+ 11396 11397 11456 11481 11517 11563
+ 11419 11425 11461 11465 11515 11526
+ 11413 11432 11451 11483 11502 11529
+ 11417 11433 11452 11479 11503 11521
+ 11414 11446 11483 11522 11547 15518
+ 11430 11442 11460 11477 11494 11512
+ 11373 11412 11438 11501 11542 11574
+ 11382 11404 11437 11510 11567 11597
+ 11439 11488 11507 11527
+ 11428 11435 11464 11480 11511 11524
+ 11429 11436 11463 11487 11516 11530
+ 11442 11450 11471 11497 11512 11535
+ 11421 11447 11455 11525 11553 11558
+ 11433 11444 11469 11496 11521 11536
+ 11435 11448 11475 11493 11524 11533
+ 11397 11408 11466 11490 11555 11563
+ 11422 11455 11484 11525 11550
+ 11432 11446 11468 11470 11529 11547
+ 11422 11431 11482 11523 11550 11560
+ 11347 11389 11405 11538 11551 11584
+ 11411 11458 11489 11544 11577
+ 11436 11449 11476 11530
+ 11439 11452 11474 11503 11527 11540
+ 11381 11411 11447 11486 11553 11577 11588
+ 11408 11423 11481 11532 11555 11575
+ 11304 11355 11514 11545 11633 11674
+ 9530 10946 11037 11859 13212 13588
+ 11448 11454 11480 11504 11533 11543
+ 11460 11471 11499 11512 11537
+ 11427 11451 11502 11513 11546
+ 11444 11453 11479 11509 11536 11554
+ 11450 11456 11477 11517 11535 11568
+ 11314 11372 11389 11531 11538 11634 11644
+ 11459 11460 11494 11505 11537 11541
+ 11215 11271 11462 11630 11738 11896
+ 11412 11458 11472 11544 11574 11595
+ 11451 11468 11495 11529 11546 11569
+ 11452 11469 11488 11521 11540 11559
+ 11454 11463 11493 11516 11543 11557
+ 11459 11464 11499 11511 11541 11552
+ 11302 11426 11443 11603 11618 11690
+ 11474 11527 11539 11561
+ 11375 11385 11513 11607 11648 15519
+ 11453 11461 11496 11515 11554 11565
+ 11404 11438 11473 11542 11597 11655
+ 11464 11475 11505 11524 11552 11562
+ 11471 11477 11494 11535 11537 11564
+ 11385 11427 11495 11508 11546 11607 11611
+ 11304 11365 11491 11548 11633 11651
+ 11461 11467 11509 11526 11565 11581
+ 11463 11476 11504 11530 11557 11566
+ 11456 11466 11497 11563 11568 11594
+ 11353 11364 11520 11763 11951 15519
+ 11440 11441 11523 11532 11587 11608
+ 11316 11353 11518 11534 11951
+ 11469 11479 11503 11536 11559 11570
+ 11457 11470 11528 11547 11620 11643 15518
+ 11431 11440 11484 11519 11560 11587 11605
+ 11475 11480 11511 11533 11562 15520
+ 11455 11478 11482 11550 11558 11579
+ 11465 11467 11515 11528 11581 11598
+ 11474 11488 11507 11540 11561 11576
+ 11457 11465 11522 11526 11598 11620
+ 11468 11483 11502 11547 11569 11616
+ 11476 11487 11516 11566
+ 11372 11434 11498 11549 11644 11656
+ 11423 11441 11490 11519 11575 11608 11624
+ 11480 11493 11524 11543 11580 15520
+ 11316 11348 11520 11556 11951 12643
+ 11477 11497 11512 11564 11568 11589
+ 11479 11496 11521 11554 11570 11585
+ 11494 11499 11512 11541 11564 11572
+ 11389 11485 11498 11584 11634 11645
+ 11507 11561 11571 11586
+ 11488 11503 11527 11559 11576 11592
+ 11499 11505 11537 11552 11572 11582
+ 11438 11472 11510 11574 11647 11655
+ 11493 11504 11533 11557 11580 11590
+ 11458 11486 11501 11577 11595 11619
+ 11355 11443 11491 11618 11674 11744
+ 11495 11502 11513 11569 11611 11614
+ 11470 11483 11522 11529 11616 11643
+ 11365 11434 11514 11549 11651 11660
+ 11434 11531 11548 11656 11660
+ 11482 11484 11525 11560 11579 11596
+ 11405 11437 11485 11567 11584 11669 11699
+ 11505 11511 11541 11562 11582 11593
+ 11447 11478 11489 11558 11588 11617 11640
+ 11496 11509 11536 11565 11585 11606
+ 11481 11490 11563 11575 11622 11627
+ 11310 11348 11534 11680 12643
+ 11504 11516 11543 11566 11590 11602
+ 11478 11525 11553 11579 11612 11617
+ 11503 11521 11540 11570 11592 11610
+ 11484 11523 11550 11596 11605 15521
+ 11507 11527 11539 11576 11586 11609
+ 11511 11524 11552 11593 11601 15520
+ 11466 11481 11517 11555 11594 11622 11636
+ 11512 11535 11537 11572 11589 11604
+ 11509 11515 11554 11581 11606 11626
+ 11516 11530 11557 11602
+ 11437 11473 11551 11597 11669 11675
+ 11497 11517 11535 11589 11594 11650
+ 11502 11529 11546 11614 11616 15522
+ 11521 11536 11559 11585 11610 11625
+ 11539 11586 11600 11623
+ 11537 11541 11564 11582 11604 11615
+ 10889 11074 11578 11599 12469 12876
+ 11472 11501 11542 11595 11647 11701
+ 11490 11532 11555 11624 11627 11653
+ 11527 11540 11561 11592 11609 11632
+ 11486 11489 11544 11588 11619 11639
+ 10889 10971 11573 11733 12876 13315
+ 11525 11550 11558 11596 11612 11628
+ 11533 11543 11590 11613 11629 15520
+ 11515 11526 11565 11598 11626 11652
+ 11541 11552 11572 11593 11615 11631
+ 11407 11410 11591 11730 11809 11880
+ 11485 11538 11551 11645 11677 11699
+ 11536 11554 11570 11606 11625 11646
+ 11539 11561 11571 11609 11623 11642
+ 11519 11523 11605 11608 11658 11661
+ 11489 11553 11577 11639 11640 11685
+ 11535 11564 11568 11604 11650 15523
+ 11543 11557 11580 11602 11629 11641
+ 11410 11426 11583 11603 11728 11809
+ 11540 11559 11576 11610 11632 11649
+ 11552 11562 11582 11601 11631 11638
+ 11517 11563 11568 11636 11650 11671
+ 11501 11544 11574 11619 11684 11701
+ 11550 11560 11579 11628 11637 15521
+ 11473 11510 11567 11655 11675 11711
+ 11526 11528 11581 11620 11652 11682
+ 11074 11267 11573 11664 12331 12469
+ 11571 11623 11635 11657
+ 11562 11593 11613 11638 11654 15520
+ 11557 11566 11590 11641
+ 11426 11506 11591 11690 11728 11804
+ 11564 11572 11589 11615 11659 15523
+ 11523 11560 11587 11661 11673 15521
+ 11554 11565 11585 11626 11646 11662
+ 11508 11513 11611 11648 11689 11710
+ 11519 11532 11587 11624 11658 11678 11702
+ 11561 11576 11586 11632 11642 15524
+ 11559 11570 11592 11625 11649 11667
+ 11513 11546 11607 11614 11681 11689
+ 11558 11579 11617 11628 11666 11672
+ 11580 11601 11629 11654 11663 15520
+ 11546 11569 11611 11681 15522
+ 11572 11582 11604 11631 11659 11665
+ 11529 11547 11569 11643 11722 15522
+ 11553 11558 11612 11640 11672 11692
+ 11443 11506 11545 11690 11744 11829
+ 11544 11577 11595 11639 11684 11694
+ 11522 11528 11598 11643 11682 11717
+ 11198 11294 11337 11680 11962 13075
+ 11555 11563 11627 11636 11687 11691
+ 11571 11586 11600 11642 11657 11683
+ 11532 11575 11608 11653 11678 11688
+ 11570 11585 11610 11646 11667 11693
+ 11565 11581 11606 11652 11662 15525
+ 11555 11575 11622 11653 11687 11695
+ 11579 11596 11612 11637 11666 11670
+ 11580 11590 11613 11641 11663 11686
+ 11271 11445 11500 11868 11896 12269
+ 11582 11593 11615 11638 11665 11679
+ 11576 11592 11609 11649 11698 15524
+ 11491 11514 11651 11674 11805 11843
+ 11498 11538 11644 11645 11754 11779
+ 11600 11657 11668 11700
+ 11563 11594 11622 11671 11691 11707
+ 11596 11628 11670 11676 15521
+ 11593 11601 11631 11654 11679 11697
+ 11577 11588 11619 11685 11694 11696
+ 11553 11588 11617 11685 11692 11712
+ 11590 11602 11629 11686
+ 11586 11609 11623 11683 11704 15524
+ 11522 11547 11616 11620 11717 11722 11815
+ 11498 11531 11634 11656 11779 11788
+ 11538 11584 11634 11677 11754 11759
+ 11585 11606 11625 11662 11693 11705
+ 11542 11574 11655 11701 11760 11773
+ 11508 11607 11710 11763 11835 15519
+ 11592 11610 11632 11667 11698 11713
+ 11568 11589 11594 11671 11731 11739 15523
+ 11514 11548 11633 11660 11805 11861
+ 11581 11598 11626 11682 11721 15525
+ 11575 11624 11627 11688 11695 11709
+ 11601 11613 11638 11663 11697 11706
+ 11510 11542 11597 11647 11711 11760 11794
+ 11531 11549 11644 11660 11788 11813
+ 11600 11623 11635 11683 11700 11716
+ 11587 11608 11661 11702 11725 11729
+ 11604 11615 11665 11708 11714 15523
+ 11548 11549 11651 11656 11813 11861
+ 11587 11605 11658 11673 11729 11736
+ 11606 11626 11646 11705 11715 15525
+ 11613 11629 11654 11686 11706 11726
+ 11267 11445 11599 11868 12164 12331
+ 11615 11631 11659 11679 11708 11718
+ 11612 11628 11670 11672 11720 11732
+ 11610 11625 11649 11693 11713 11742
+ 11635 11700 11703 11734
+ 11551 11567 11675 11699 11758 11768
+ 11628 11637 11666 11676 11720 11723
+ 11594 11636 11650 11707 11739 11756
+ 11612 11617 11666 11692 11732 11745
+ 11605 11661 11676 11735 11736 15521
+ 11491 11545 11633 11744 11843 11918
+ 11567 11597 11669 11711 11758 11791
+ 11637 11670 11673 11723 11735 15521
+ 11584 11645 11699 11759 11782
+ 11608 11624 11688 11702 11719 11727
+ 11631 11638 11665 11697 11718 11737
+ 11310 11337 11556 11621 12643 13075
+ 11611 11614 11689 11786 11803 15522
+ 11598 11620 11652 11717 11721 11771
+ 11623 11642 11657 11704 11716 11746
+ 11595 11619 11694 11701 11780 11795
+ 11588 11639 11640 11696 11712 11749
+ 11629 11641 11663 11726
+ 11622 11627 11691 11695 11740 11743
+ 11624 11653 11678 11709 11719 11724
+ 11607 11611 11681 11710 11786 11789
+ 11506 11603 11618 11804 11829 11984
+ 11622 11636 11687 11707 11743 11752
+ 11617 11640 11672 11712 11745 11764
+ 11625 11646 11667 11705 11742 11762
+ 11619 11639 11684 11696 11765 11780
+ 11627 11653 11687 11709 11740 11748
+ 11639 11685 11694 11749 11765
+ 11638 11654 11679 11706 11737 11747
+ 11632 11649 11713 11741 11769 15524
+ 11551 11584 11669 11677 11768 11782 11814
+ 11635 11657 11668 11716 11734 11761
+ 11574 11595 11647 11684 11773 11795 11830
+ 11608 11658 11678 11725 11727 11755 11757
+ 11668 11734 11772 15526
+ 11642 11683 11741 11746 11785 15524
+ 11646 11662 11693 11715 11762 11778
+ 11654 11663 11697 11726 11747 11770
+ 11636 11671 11691 11752 11756 11790
+ 11659 11665 11714 11718 11766 11767
+ 11653 11688 11695 11724 11748 11753
+ 11607 11648 11689 11789 11835
+ 11597 11655 11675 11791 11794 11842
+ 11640 11685 11692 11749 11764 11811
+ 11649 11667 11698 11742 11769 11806
+ 11659 11708 11731 11766 11775 15523
+ 11662 11705 11778 11787 15525
+ 11657 11683 11700 11746 11761 11797
+ 11620 11643 11682 11771 11815 11885
+ 11665 11679 11708 11737 11767 11776
+ 11678 11688 11724 11727 11750 11751
+ 11666 11670 11723 11732 11777 11784
+ 11652 11682 11771 11787 11860 15525
+ 11616 11643 11803 11815 11956 15522
+ 11670 11676 11720 11735 11777 11781
+ 11688 11709 11719 11751 11753
+ 11658 11702 11729 11757 11774
+ 11663 11686 11706 11770
+ 11678 11702 11719 11750 11755
+ 11591 11603 11804 11809 12010
+ 11658 11661 11725 11736 11774 11810
+ 11407 11462 11583 11738 11880 12208 12232
+ 11650 11714 11739 11775 11796 11816 15523
+ 11666 11672 11720 11745 11784 11808
+ 10971 11034 11578 12178 13315 13654
+ 11668 11700 11703 11761 11772 11812
+ 11673 11676 11723 11736 11781 11818
+ 11661 11673 11729 11735 11810 11818
+ 11679 11697 11718 11747 11776 11799
+ 11462 11500 11730 11896 12232 12409
+ 11650 11671 11731 11756 11796 11802 11849
+ 11687 11695 11743 11748 11792 11798
+ 11698 11704 11769 11785 11826 15524
+ 11667 11693 11713 11762 11806 11841
+ 11687 11691 11740 11752 11792 15528
+ 11545 11618 11674 11829 11918 12045
+ 11672 11692 11732 11764 11808 11867
+ 11683 11704 11716 11785 11797 11836
+ 11697 11706 11737 11770 11799 11820
+ 11695 11709 11740 11753 11798 11801
+ 11685 11696 11712 11765 11811 11857
+ 11719 11727 11751 11755 11793 11800
+ 11719 11724 11750 11753 11793 11807
+ 11691 11707 11743 11790 11851 15528
+ 11709 11724 11748 11751 11801 11807
+ 11634 11645 11759 11779 11895 12004
+ 11702 11727 11750 11757 11800 15527
+ 11671 11707 11739 11790 11802 11827
+ 11702 11725 11755 11774 11824 15527
+ 11669 11675 11768 11791 11834 11852
+ 11645 11677 11754 11782 11881 11895
+ 11647 11655 11773 11794 11892 11893
+ 11700 11716 11734 11797 11812 11848
+ 11693 11705 11742 11778 11841 11887
+ 11518 11648 11835 11951 12361 15519
+ 11692 11712 11745 11811 11867 11878
+ 11694 11696 11749 11780 11857 11858
+ 11708 11714 11767 11775 11819 11821
+ 11708 11718 11766 11776 11819 11833
+ 11669 11699 11758 11814 11834 11844
+ 11698 11713 11741 11806 11826 11876
+ 11706 11726 11747 11820
+ 11682 11717 11721 11860 11885 11942
+ 11703 11734 11812 11817 11853 15526
+ 11647 11701 11760 11830 11892 11922
+ 11725 11729 11757 11810 11824 11840
+ 11714 11731 11766 11816 11821 11825
+ 11718 11737 11767 11799 11833 11846
+ 11720 11723 11781 11784 11832 11850
+ 11705 11715 11762 11787 11887 11941
+ 11634 11644 11754 11788 11971 12004
+ 11684 11694 11765 11795 11858 11901
+ 11723 11735 11777 11818 11850 11865
+ 11677 11699 11759 11814 11881 11906
+ 11817 11831 11866 15526
+ 11720 11732 11777 11808 11832 11855
+ 11704 11741 11746 11826 11836 11884
+ 11681 11689 11789 11803 11974
+ 11715 11721 11778 11860 11941 15525
+ 11644 11656 11779 11813 11971 12014
+ 11689 11710 11786 11835 11974 12230
+ 11707 11752 11756 11827 11851 15529
+ 11675 11711 11758 11842 11852 11902
+ 11740 11743 11798 11828 11845 15528
+ 11750 11751 11800 11807 11823 11838
+ 11655 11711 11760 11842 11893 11923
+ 11684 11701 11780 11830 11901 11929
+ 11731 11739 11816 11839 11849 11872
+ 11716 11746 11761 11836 11848 11894
+ 11740 11748 11792 11801 11828 11847
+ 11737 11747 11776 11820 11846 15530
+ 11750 11755 11793 11822 11823 11837 15527
+ 11748 11753 11798 11807 11847 11854
+ 11739 11756 11827 11849 11862 11873
+ 11681 11722 11786 11956 11974 12095 15522
+ 11603 11690 11728 11984 12010 12239
+ 11633 11651 11843 11861 12106 12119
+ 11713 11742 11769 11841 11876 11939
+ 11751 11753 11793 11801 11838 11854 11863
+ 11732 11745 11784 11855 11867 11897
+ 11583 11591 11728 11880 12010 12191
+ 11729 11736 11774 11818 11840 11889 11891
+ 11712 11749 11764 11857 11878 11927
+ 11734 11761 11772 11848 11853 11905
+ 11656 11660 11788 11861 12014 12074
+ 11699 11768 11782 11844 11906 11945
+ 11643 11717 11722 11885 11956 12006
+ 11731 11775 11796 11825 11839 11856
+ 11772 11783 11853 11866 11910 15526
+ 11735 11736 11781 11810 11865 11889 11917
+ 11766 11767 11821 11833 11874 11883
+ 11747 11770 11799 15530
+ 11766 11775 11819 11825 11869 11874
+ 11800 11824 11837 11871 11879 15527
+ 11793 11800 11837 11838 11864
+ 11757 11774 11822 11840 11879 11908 15527
+ 11775 11816 11821 11856 11869
+ 11741 11769 11785 11876 11884 11946
+ 11756 11790 11802 11870 11873 15529
+ 11792 11798 11845 11847 11890
+ 11618 11690 11744 11984 12045 12248
+ 11701 11773 11795 11922 11929 11992
+ 11783 11866 11877 11919
+ 11777 11784 11850 11855 11900
+ 11767 11776 11819 11846 11883 11899
+ 11758 11768 11844 11852 11914 11940
+ 11648 11710 11763 11789 12230 12361
+ 11746 11785 11797 11884 11894 11948
+ 11800 11822 11823 11864 11871 11875
+ 11793 11807 11823 11863 11864 11886
+ 11796 11816 11856 11872 11888
+ 11774 11810 11824 11891 11908 11931
+ 11742 11762 11806 11887 11939 12013
+ 11711 11791 11794 11902 11923 11965
+ 11633 11674 11805 11918 12106 12138
+ 11768 11814 11834 11940 11945
+ 11792 11828 11882 11890 11920 15528
+ 11776 11799 11833 11899 11932 15530
+ 11798 11801 11828 11854 11890 11909
+ 11761 11797 11812 11894 11905 11960
+ 11739 11796 11802 11862 11872 11911 11921
+ 11777 11781 11832 11865 11900 11944
+ 11752 11790 11882 11926 11972 15528 15529
+ 11758 11791 11834 11902 11914 11982
+ 11772 11812 11817 11905 11910 11968
+ 11801 11807 11847 11863 11909 11924
+ 11784 11808 11832 11897 11900 11947
+ 11816 11825 11839 11869 11888 11907
+ 11749 11765 11811 11858 11927 11959 11967
+ 11765 11780 11857 11901 11967 11991
+ 10946 11175 11492 12320 13588 13730
+ 11721 11771 11787 11941 11942 12067
+ 11651 11660 11805 11813 12074 12119 12279
+ 11802 11849 11873 11911 11913
+ 11807 11838 11854 11886 11924 11934
+ 11823 11837 11838 11875 11886 11898
+ 11781 11818 11850 11917 11944 11969
+ 11783 11817 11831 11910 11919 11973
+ 11745 11764 11808 11878 11897 11983 12020
+ 11445 11630 11664 12164 12269 12600
+ 11821 11825 11856 11874 11907 11928
+ 11827 11873 11912 11916 15529
+ 11822 11837 11875 11879 11904 11915
+ 11796 11839 11849 11888 11921 11935
+ 11802 11827 11862 11870 11912 11913
+ 11819 11821 11869 11883 11928 11943
+ 11837 11864 11871 11898 11904
+ 11769 11806 11826 11939 11946 12015
+ 11831 11919 11930 11979
+ 11764 11811 11867 11927 11983 11990
+ 11822 11824 11871 11908 11915 11938
+ 11583 11730 11809 12191 12208 12366
+ 11759 11782 11895 11906 11994 12054
+ 11845 11851 11920 11952 11972 15528
+ 11819 11833 11874 11899 11943 11955
+ 11785 11826 11836 11946 11948 12016
+ 11717 11771 11815 11942 12006 12041
+ 11838 11863 11864 11898 11925 11934
+ 11762 11778 11841 11941 12013 12140
+ 11839 11856 11872 11907 11935 11949
+ 11810 11818 11891 11917 11957 11975
+ 11828 11845 11847 11909 11920 11954 11978
+ 11810 11840 11889 11931 11957 11970
+ 11760 11773 11893 11922 12035 12064
+ 11760 11794 11892 11923 12035 12047
+ 11797 11836 11848 11948 11960 12023
+ 11754 11759 11881 12004 12054 12149
+ 11500 11630 11738 12269 12409 12725
+ 11808 11855 11867 11947 12003 12020
+ 11864 11875 11886 11904 11925 11937
+ 11833 11846 11883 11932 11955 11989
+ 11832 11850 11855 11944 11947 11986
+ 11780 11795 11858 11929 11991 12076
+ 11791 11842 11852 11965 11982 12053
+ 8722 10539 11037 13212 13752 14084
+ 11871 11875 11898 11915 11936 11937
+ 11812 11848 11853 11960 11968 12032
+ 11782 11814 11881 11945 11994 12058
+ 11856 11869 11888 11928 11949 11976
+ 11824 11840 11879 11931 11938 11993 12007
+ 11847 11854 11890 11924 11978 11985
+ 11817 11853 11866 11968 11973 12033
+ 11849 11862 11913 11921 11958 11963
+ 11870 11873 11913 11916 11953 11964
+ 11862 11873 11911 11912 11953 11958
+ 11834 11852 11940 11982 12040
+ 11871 11879 11904 11936 11938 11950
+ 11870 11912 11926 11964 11988 15529
+ 11818 11865 11889 11969 11975 12009
+ 11674 11744 11843 12045 12138 12282
+ 11831 11866 11877 11973 11979 12031
+ 11845 11882 11890 11952 11954 12002
+ 11849 11872 11911 11935 11963 11981
+ 11773 11830 11892 11992 12064 12086
+ 11794 11842 11893 11965 12028 12047
+ 11854 11863 11909 11934 11980 11985
+ 11886 11898 11934 11937 11966 11977
+ 11851 11916 11972 11988 12027 15529
+ 11811 11857 11878 11959 11990 12030
+ 11869 11874 11907 11943 11976 11998
+ 11795 11830 11901 11992 12076 12077
+ 11877 11979 11987 12037
+ 11840 11891 11908 11970 11993 12008
+ 11846 11899 11989 15530
+ 7911 10635 10857 13414 14090 14593
+ 11863 11886 11924 11925 11977 11980 15531
+ 11872 11888 11921 11949 11981 12000
+ 11904 11915 11937 11950 11961
+ 11898 11904 11925 11936 11961 11966
+ 11879 11908 11915 11950 12001 12007
+ 11806 11841 11876 12013 12015 12109
+ 11834 11844 11914 11945 12040 12113
+ 11778 11787 11860 11887 12067 12140 12231
+ 11771 11860 11885 12041 12067 12152
+ 11874 11883 11928 11955 11998 12012
+ 11850 11865 11900 11969 11986 12034 12036
+ 11814 11844 11906 11940 12058 12113
+ 11826 11876 11884 12015 12016 12085
+ 11855 11897 11900 11986 12003 12022
+ 11836 11884 11894 12016 12023 12090
+ 11888 11907 11935 11976 12000 12018
+ 11915 11936 11938 11961 11995 12001
+ 11518 11520 11534 11763 12361 12643 13136
+ 11882 11920 11972 12002 12052
+ 11912 11913 11958 11964 11997 12011
+ 11890 11920 11978 12002 12019
+ 11883 11899 11943 11989 12012 12048
+ 11722 11803 11815 12006 12095 12300
+ 11889 11891 11970 11975 12021 12024
+ 11911 11913 11953 11963 11997 12005
+ 11857 11927 11967 12030 12079
+ 11848 11894 11905 12023 12032 12108
+ 11936 11937 11950 11966 11995 11999
+ 11294 11322 11621 12320 13075 13578
+ 11911 11921 11958 11981 12005 15532
+ 11912 11916 11953 11988 12011 12046
+ 11842 11902 11923 12028 12053 12116
+ 11925 11937 11961 11977 11996 11999
+ 11857 11858 11959 11991 12079 12111
+ 11853 11905 11910 12032 12033 12110
+ 11865 11917 11944 12009 12036 12059
+ 11891 11931 11957 12008 12021 12038
+ 11779 11788 12004 12014 12244 12285
+ 11851 11882 11926 11952 12027 12052 12120
+ 11866 11910 11919 12031 12033 12105
+ 11786 11789 11803 12095 12230 12329
+ 11889 11917 11957 12009 12024 12051
+ 11907 11928 11949 11998 12018 12049
+ 11925 11934 11966 11996 12017 15531
+ 11890 11909 11954 11985 12019 12056
+ 11877 11919 11930 12031 12037 12097
+ 11924 11934 11985 12043 12055 15531
+ 11921 11935 11963 12000 12050 15532
+ 11852 11902 11914 12040 12053 12136
+ 11867 11878 11990 12020 12092 12103
+ 11690 11804 11829 12239 12248 12502
+ 11909 11924 11978 11980 12043 12056
+ 11900 11944 11947 12022 12034 12062
+ 11930 12037 12044 12096
+ 11916 11926 11964 12027 12046 12081
+ 11899 11932 11955 12048
+ 11878 11927 11983 12030 12092 12130
+ 11858 11901 11967 12076 12111 12153
+ 11830 11922 11929 12077 12086 12159
+ 11908 11931 12007 12008 12060 12066
+ 11881 11906 12054 12058 12160
+ 11950 11961 11999 12001 12026 12029
+ 11966 11977 11999 12017 12025
+ 11953 11958 12005 12011 12042
+ 11928 11943 11976 12012 12049 12071
+ 11961 11966 11995 11996 12025 12029
+ 11935 11949 11981 12018 12050 12068
+ 11938 11950 11995 12007 12026 12057
+ 11920 11952 11954 12019 12052 12080
+ 11897 11947 12020 12022 12082 12101
+ 11754 11779 11895 11971 12149 12244 12303
+ 11958 11963 11997 12042 12069 15532
+ 11815 11885 11956 12041 12300 12317
+ 11908 11938 11993 12001 12057 12066 12089
+ 11931 11970 11993 12038 12060 12070
+ 11917 11969 11975 12051 12059 12084
+ 11728 11804 11809 12191 12239 12413
+ 11953 11964 11997 12042 12046 12075
+ 11943 11955 11998 12048 12071 12104
+ 11841 11887 11939 12109 12140 12225
+ 11788 11813 11971 12074 12285 12315
+ 11876 11939 11946 12085 12109 12168
+ 11884 11946 11948 12085 12090 12169
+ 11977 11996 12025 12065 12073 15531
+ 11949 11976 12000 12049 12068 12094
+ 11954 11978 12002 12056 12080 12112
+ 11867 11897 11983 12003 12101 12103 12157
+ 11957 11970 12024 12038 12072 12078
+ 11947 11986 12003 12062 12082 15533
+ 11894 11948 11960 12090 12108 12183
+ 11957 11975 12021 12051 12072 12083
+ 11996 11999 12017 12029 12061 12065
+ 11995 12001 12029 12057 12063
+ 11926 11972 11988 12081 12120 12133
+ 11923 11965 12047 12116 12174
+ 11995 11999 12025 12026 12061 12063
+ 11927 11959 11990 12079 12130 12167
+ 11919 11973 11979 12097 12105 12171
+ 11905 11960 11968 12108 12110 12188
+ 11910 11968 11973 12105 12110 12180
+ 11944 11986 12036 12062 12091 12100
+ 11892 11893 12047 12064 12195 12206
+ 11944 11969 12034 12059 12091 12107
+ 11930 11979 11987 12096 12097 12166
+ 11970 12008 12021 12070 12078 12088
+ 8151 10752 10767 13965 14823 15579
+ 11914 11940 11982 12113 12136 12223
+ 11885 11942 12006 12152 12317
+ 11997 12005 12011 12069 12075 12114
+ 11980 11985 12055 12056 12099 12129
+ 11987 12096 12102 15534
+ 11744 11829 11918 12248 12282 12511
+ 11964 11988 12011 12075 12081 12124
+ 11893 11923 12028 12035 12174 12195
+ 11955 11989 12012 12104
+ 11976 11998 12018 12071 12094 12131
+ 11981 12000 12068 12093 12126 15532
+ 11975 12009 12024 12083 12084 12118
+ 11952 11972 12002 12080 12120 12147 12162
+ 11902 11965 11982 12116 12136 12219
+ 11881 11895 11994 12149 12160 12280
+ 11980 12043 12073 12099 12125 15531
+ 11978 11985 12019 12043 12112 12129 12143
+ 12001 12007 12026 12063 12089 12115 12117
+ 11906 11945 11994 12113 12160 12256
+ 11969 12009 12036 12084 12107 12132
+ 11993 12008 12066 12070 12121 12127
+ 12025 12029 12063 12065 12087 12098
+ 11986 12022 12034 12100 12123 15533
+ 12026 12029 12057 12061 12098 12115
+ 11892 11922 12035 12086 12206 12277
+ 12017 12025 12061 12073 12087 12122
+ 11993 12007 12060 12089 12127 12142
+ 11860 11941 11942 12152 12231 12295
+ 12000 12018 12050 12094 12126 12150
+ 12005 12042 12093 12114 12146 15532
+ 12008 12038 12060 12088 12121 12128
+ 11998 12012 12049 12104 12131 12155
+ 12021 12024 12078 12083
+ 12017 12055 12065 12122 12125 12137 15531
+ 11813 11861 12014 12279 12315 12462
+ 12011 12042 12046 12114 12124 12156
+ 11901 11929 11991 12077 12153 12210 12237
+ 11929 11992 12076 12159 12196 12210
+ 12021 12038 12072 12088
+ 11959 11967 12030 12111 12167 12193
+ 12002 12019 12052 12112 12145 12162
+ 11988 12027 12046 12124 12133 12173
+ 12003 12022 12101 12135 12165 15533
+ 12024 12051 12072 12118
+ 12009 12051 12059 12118 12132 12151
+ 11946 12015 12016 12168 12169 12226
+ 11922 11992 12064 12159 12242 12277
+ 12061 12065 12098 12122 12139
+ 12038 12070 12078 12128
+ 12007 12057 12066 12117 12142 12158
+ 11948 12016 12023 12169 12183 12253
+ 12034 12036 12100 12107 12134 12148
+ 11983 11990 12103 12130 12185 12215
+ 12050 12069 12126 12146 12176 15532
+ 12018 12049 12068 12131 12150 12181
+ 11803 11956 11974 12300 12329 12482
+ 11987 12037 12044 12166 12222 15534
+ 11979 12031 12037 12166 12171 12234
+ 12061 12063 12087 12115 12139 12144
+ 12043 12055 12125 12129 15535
+ 12034 12062 12091 12123 12134 12161
+ 12003 12020 12082 12157 12165 12209
+ 12044 12163 12213 15534
+ 11983 12020 12092 12157 12185 12218
+ 12012 12048 12071 12155
+ 11973 12031 12033 12171 12180 12245
+ 11805 11843 12119 12138 12338 12425
+ 12036 12059 12091 12132 12148 12172
+ 11960 12023 12032 12183 12188 12274
+ 11939 12013 12015 12168 12225 12240
+ 11968 12032 12033 12180 12188 12261
+ 11967 11991 12079 12153 12193 12241
+ 12019 12056 12080 12143 12145 12199
+ 11940 11945 12040 12058 12223 12256 12412
+ 12042 12069 12075 12146 12156 12186
+ 12057 12063 12098 12117 12144 12154
+ 11965 12028 12053 12174 12219 12286
+ 12057 12089 12115 12154 12158
+ 12051 12083 12084 12151
+ 11805 11861 12106 12279 12425 12496
+ 11972 12027 12052 12133 12147 12207 12220
+ 12060 12070 12127 12128 12170 12175
+ 12065 12073 12087 12137 12139 12177
+ 12062 12100 12135 12161 12179 15533
+ 12046 12075 12081 12156 12173 12202
+ 12055 12073 12099 12137 12184 15535
+ 12050 12068 12093 12150 12176 12198
+ 12060 12066 12121 12142 12175 12187
+ 12070 12088 12121 12170
+ 12043 12056 12099 12143 12192 12197 15535
+ 11990 12030 12092 12167 12215 12243
+ 12049 12071 12094 12155 12181 12211
+ 12059 12084 12107 12151 12172 12189
+ 12027 12081 12120 12173 12207 12233
+ 12091 12100 12148 12161 12182
+ 12082 12123 12165 12179 12212 15533
+ 11982 12040 12053 12219 12223 12322
+ 12073 12122 12125 12177 12184 12200
+ 11843 11918 12106 12282 12338 12456
+ 12087 12098 12122 12144 12177 12190
+ 11887 11941 12013 12225 12231 12389 15542
+ 7709 8666 10752 13965 14308 14913
+ 12066 12089 12127 12158 12187 12201
+ 12056 12112 12129 12197 12199 12228
+ 12098 12115 12139 12154 12190 12194
+ 12080 12112 12162 12199 12204
+ 12069 12093 12114 12176 12186 12221
+ 12052 12120 12162 12217 12220
+ 12091 12107 12134 12172 12182 12205
+ 11895 12004 12054 12280 12303 12420
+ 12068 12094 12126 12181 12198 12229
+ 12084 12118 12132 12189
+ 11942 12041 12067 12295 12317 15543
+ 11991 12076 12111 12237 12241 12314
+ 12115 12117 12144 12158 12194 12203
+ 12071 12104 12131 12211
+ 12075 12114 12124 12186 12202 12236
+ 12020 12101 12103 12209 12218 12258
+ 12089 12117 12142 12154 12201 12203
+ 11992 12077 12086 12196 12242 12272
+ 11994 12054 12058 12256 12280 12393
+ 12100 12123 12134 12179 12182 15536
+ 12052 12080 12145 12147 12204 12217
+ 12102 12213 12214 12265
+ 11664 11868 12331 12600 12906
+ 12082 12101 12135 12209 12212 12252
+ 12037 12096 12097 12222 12234 12291
+ 12030 12079 12130 12193 12243 12278
+ 12015 12085 12109 12226 12240 12284
+ 12016 12085 12090 12226 12253 12325
+ 12121 12128 12175 12216
+ 12031 12097 12105 12234 12245 12304
+ 12107 12132 12148 12189 12205 12235
+ 12081 12124 12133 12202 12233 12255
+ 12028 12047 12116 12195 12286 12334
+ 12121 12127 12170 12187 12216 12224
+ 12093 12126 12146 12198 12221 12250
+ 12122 12137 12139 12190 12200 12238
+ 11034 11079 11733 12969 13654 14023
+ 12123 12135 12161 12212 12251 15536
+ 12033 12105 12110 12245 12261 12333
+ 12094 12131 12150 12211 12229 12259
+ 12134 12148 12161 12205 12247 15536
+ 12023 12090 12108 12253 12274 15539
+ 12125 12137 12200 12227 12266 15535
+ 12092 12103 12215 12218 12262 12293
+ 12114 12146 12156 12221 12236 12268
+ 12127 12142 12175 12201 12224 12246
+ 12032 12108 12110 12261 12274 12351
+ 12132 12151 12172 12235
+ 12139 12144 12177 12194 12238 12249
+ 11809 11880 12010 12366 12413 12581
+ 12129 12197 12227 12257 15535
+ 12079 12111 12167 12241 12278 12327
+ 12144 12154 12190 12203 12249 12254
+ 12035 12047 12174 12206 12334 12352
+ 12077 12159 12210 12272 12308
+ 12129 12143 12192 12228 12257 12260
+ 12126 12150 12176 12229 12250 12283
+ 12112 12143 12145 12204 12228 12264 12292
+ 12137 12177 12184 12238 12266 12273
+ 12142 12158 12187 12203 12246 12271
+ 12124 12156 12173 12236 12255 12288
+ 12154 12158 12194 12201 12254 12271
+ 12145 12162 12199 12217 12264 12270
+ 12148 12172 12182 12235 12247 12275
+ 12035 12064 12195 12277 12352 12383
+ 12120 12133 12220 12233 12302 12305
+ 11730 11880 12232 12366 12700 12759
+ 12101 12157 12165 12252 12258 12299
+ 12076 12077 12196 12237 12308 12339
+ 12131 12155 12181 12259
+ 12135 12165 12179 12251 12252 12296
+ 12102 12163 12265 12276 12323 15534
+ 12163 12263 12265 12310
+ 12092 12130 12185 12243 12293 12318
+ 12170 12175 12224 12267
+ 12147 12162 12204 12220 12270 12281
+ 12103 12157 12185 12258 12262 12301
+ 12053 12116 12136 12286 12322 12460
+ 12120 12147 12207 12217 12281 12302
+ 12146 12176 12186 12250 12268 12297
+ 12096 12166 12276 12291 12348 15534
+ 12040 12113 12136 12322 12412 12487
+ 12175 12187 12216 12246 12267 12287
+ 12013 12109 12140 12240 12354 12389
+ 12085 12168 12169 12284 12325 15541
+ 12184 12192 12257 12266 12294 15535
+ 12143 12197 12199 12260 12292 12306
+ 12150 12181 12198 12259 12283 15537
+ 11789 11835 11974 12329 12361 12887 13168
+ 11941 12067 12140 12295 12476 15542
+ 11730 11738 12208 12409 12759 12888
+ 12133 12173 12207 12255 12305 12312
+ 12097 12166 12171 12291 12304 12364
+ 12172 12189 12205 12275
+ 12156 12186 12202 12268 12288 12311
+ 12076 12153 12210 12314 12339 12394
+ 12177 12190 12200 12249 12273 12298
+ 11804 11984 12010 12413 12502 12675
+ 12109 12168 12225 12284 12354 12397
+ 12111 12153 12193 12314 12327 12387
+ 12086 12159 12272 12277 12390 12404
+ 12130 12167 12215 12278 12318 12350
+ 11971 12004 12285 12303 12513 12528
+ 12105 12171 12180 12304 12333 12388
+ 12187 12201 12224 12271 12287 12290
+ 12182 12205 12275 12289 12316 15536
+ 11829 11984 12045 12502 12511 12792
+ 12190 12194 12238 12254 12298 12307
+ 12176 12198 12221 12283 12297 12332
+ 12179 12212 12289 12296 12335 15536
+ 12165 12209 12212 12296 12299 12343
+ 12090 12169 12183 12325 12441 15539
+ 12194 12203 12249 12271 12307 12342
+ 12173 12202 12233 12288 12312 12341
+ 12058 12113 12160 12393 12412 12512
+ 12192 12197 12227 12260 12294 12321
+ 12157 12209 12218 12299 12301 12349
+ 12181 12211 12229 15537
+ 12197 12228 12257 12306 12321 12324
+ 12110 12180 12188 12333 12351 12424
+ 12185 12218 12293 12301 12344
+ 12214 12309 12310 12353
+ 12199 12204 12270 12292 12337 12340
+ 12163 12213 12214 12310 12323 12367
+ 12184 12200 12227 12273 12294 12326 12346
+ 12216 12224 12287 12319
+ 12186 12221 12236 12297 12311 12347
+ 11630 11868 11896 12600 12725 13015
+ 12204 12217 12264 12281 12313 12340
+ 12201 12203 12246 12254 12290 12342 15538
+ 12159 12196 12242 12308 12368 12390
+ 12200 12238 12266 12298 12326 12328
+ 12108 12183 12188 12351 12450 15539
+ 12205 12235 12247 12316
+ 12213 12222 12323 12348 12391 15534
+ 12064 12086 12206 12242 12383 12404 12453
+ 12167 12193 12243 12327 12350 12400
+ 11861 12074 12119 12462 12496 12638
+ 12054 12149 12160 12393 12420 12546
+ 12217 12220 12270 12302 12313 12345
+ 11918 12045 12138 12456 12511 12668
+ 12198 12229 12250 12332 12358 15537
+ 12168 12226 12240 12397 15541
+ 11971 12014 12244 12315 12513 12542
+ 12116 12174 12219 12334 12440 12460
+ 12224 12246 12267 12290 12319 12336
+ 12202 12236 12255 12311 12341 12359
+ 12247 12251 12316 12335 12360 15536
+ 12246 12271 12287 12336 15538
+ 12166 12222 12234 12348 12364 12415
+ 12199 12228 12264 12306 12337 12370
+ 12185 12215 12262 12318 12344 12377
+ 12227 12257 12266 12321 12346 12357
+ 12067 12152 12231 12476 12549 15543
+ 12212 12251 12252 12335 12343 12373
+ 12221 12250 12268 12332 12347 12371
+ 12238 12249 12273 12307 12328 12356
+ 12209 12252 12258 12343 12349 12382
+ 11956 12006 12095 12317 12482 13041
+ 12218 12258 12262 12344 12349 12384
+ 12207 12220 12281 12305 12345 12376 12381
+ 12004 12149 12244 12420 12519 12528
+ 12171 12234 12245 12364 12388 12445
+ 12207 12233 12302 12312 12374 12376
+ 12228 12260 12292 12324 12362 12370
+ 12249 12254 12298 12342 12356 15540
+ 12196 12210 12272 12339 12368 12416
+ 12263 12353 12355 12399
+ 12214 12263 12265 12353 12367 12406
+ 12236 12268 12288 12347 12359 12385
+ 12233 12255 12305 12341 12374 12386
+ 12270 12281 12340 12345 12365
+ 12153 12237 12241 12387 12394 12455
+ 12014 12074 12285 12462 12542 12652
+ 12247 12275 12289 12360
+ 12006 12041 12152 12300 13041 15543
+ 12215 12243 12293 12350 12377 12418
+ 12267 12287 12336 12369
+ 11175 11322 11859 11962 13578 13730
+ 12257 12260 12294 12324 12357 12363
+ 12136 12219 12223 12460 12487 12555
+ 12213 12265 12276 12367 12391 12433
+ 12260 12306 12321 12362 12363
+ 12169 12226 12253 12441 12532 15541
+ 12266 12273 12328 12346 12375 12379
+ 12193 12241 12278 12387 12400 12459
+ 12273 12298 12326 12356 12372 12375
+ 11974 12095 12230 12482 12887
+ 252 270 6142 15094 15098 15170
+ 11599 11664 12164 12469 12906 13213
+ 12250 12283 12297 12358 12371 12403
+ 12180 12245 12261 12388 12424 12486
+ 12174 12195 12286 12352 12440 12463
+ 12251 12289 12296 12360 12373 12408
+ 12287 12290 12319 12369 12378 15538
+ 12264 12292 12340 12370 12395 12401
+ 12106 12138 12425 12456 12650
+ 12210 12237 12308 12394 12416 12471
+ 12264 12270 12313 12337 12365 12380 12395
+ 12255 12288 12312 12359 12386 12410
+ 12254 12271 12307 12392 12422 15538 15540
+ 12252 12296 12299 12373 12382 12421
+ 12262 12293 12301 12377 12384 12432
+ 12281 12302 12313 12365 12381 12396
+ 12266 12294 12326 12357 12379 12398
+ 12268 12297 12311 12371 12385 12414
+ 12222 12276 12291 12391 12415 12466
+ 12258 12299 12301 12382 12384 12431
+ 12243 12278 12318 12400 12418 12473
+ 12188 12261 12274 12424 12450 12521
+ 12195 12206 12334 12383 12463 12501
+ 12263 12309 12310 12399 12406 12446
+ 12225 12240 12389 12397 12523
+ 12309 12399 12402 12443
+ 12298 12307 12328 12372 12407 15540
+ 12294 12321 12346 12363 12398 12411
+ 12283 12332 12403 15537
+ 12288 12311 12341 12385 12410 12434
+ 12289 12316 12335 12408
+ 11763 11835 11951 12230 13136 13168
+ 12306 12324 12363 12370 12419 12428
+ 12321 12324 12357 12362 12411 12419
+ 12234 12291 12304 12415 12445 12499
+ 12313 12340 12345 12380 12396 12405
+ 11880 12191 12208 12581 12700 12889
+ 12265 12310 12323 12406 12433 12467
+ 12272 12308 12390 12416 12481
+ 12319 12336 12378 12427
+ 12292 12306 12337 12362 12401 12428 12439
+ 12297 12332 12347 12403 12414 12449
+ 12328 12356 12375 12407 12423
+ 12296 12335 12343 12408 12421 12454
+ 12305 12312 12376 12386 12437 12442
+ 12326 12328 12372 12379 12423 12429
+ 12302 12305 12374 12381 12430 12437
+ 12293 12318 12344 12418 12432 12479
+ 12336 12369 12392 12427 12451 15538
+ 12326 12346 12375 12398 12429 12436
+ 12340 12365 12395 12405 12417
+ 12302 12345 12376 12396 12430 12435
+ 12299 12343 12349 12421 12431 12474
+ 12206 12277 12352 12453 12501 12547
+ 12301 12344 12349 12431 12432 12480
+ 12311 12347 12359 12414 12434 12461
+ 12312 12341 12374 12410 12442 12458
+ 12241 12314 12327 12455 12459 12525
+ 12245 12304 12333 12445 12486 12539
+ 12140 12225 12354 12523 12628 15542
+ 12242 12272 12368 12404 12481 12520
+ 12276 12323 12348 12433 12466 12506
+ 12342 12378 12422 12451 12475 15538
+ 12160 12256 12280 12512 12546 12609
+ 12237 12314 12339 12455 12471 12530
+ 12337 12340 12380 12401 12417 12438
+ 12345 12365 12381 12405 12426 12435
+ 12240 12284 12354 12523 12605 15541
+ 12346 12357 12379 12411 12436 12452
+ 12309 12353 12355 12443 12446 12489
+ 12278 12327 12350 12459 12473 12527
+ 12337 12370 12395 12438 12439 12465
+ 12355 12443 12447 12491
+ 12332 12358 12371 12449
+ 12242 12277 12390 12453 12520 12563
+ 12365 12380 12396 12417 12426 12448
+ 12310 12353 12367 12446 12467 15545
+ 12356 12372 12423 12444 12457 15540
+ 12335 12360 12373 12454
+ 11738 11896 12232 12725 12888 13094
+ 12341 12359 12386 12434 12458 12483
+ 12357 12363 12398 12419 12452 12464
+ 12113 12223 12256 12487 12512 12606 12633
+ 12010 12191 12239 12581 12675 12818
+ 12347 12371 12385 12449 12461 12493
+ 12291 12348 12364 12466 12499 12554
+ 12308 12339 12368 12471 12481 12540
+ 12380 12395 12405 12438 12448 12468
+ 12318 12350 12377 12473 12479 12533
+ 12362 12363 12411 12428 12464 12478
+ 12149 12280 12303 12519 12546 12676
+ 12343 12373 12382 12454 12474 12508
+ 12342 12392 12444 12475 12488 15540
+ 12372 12375 12407 12429 12457 12472
+ 12261 12333 12351 12486 12521 12577
+ 12106 12119 12338 12496 12650 12804
+ 12396 12405 12435 12448 12470
+ 12369 12378 12451 12485
+ 12362 12370 12419 12439 12478 12490
+ 12375 12379 12423 12436 12472 12484
+ 12376 12381 12435 12437 12477 12492
+ 12349 12382 12384 12474 12480 12524
+ 12344 12377 12384 12479 12480 15546
+ 12323 12367 12391 12467 12506 12544
+ 12359 12385 12410 12461 12483 12505
+ 12381 12396 12426 12430 12470 12477
+ 12379 12398 12429 12452 12484 12497
+ 12374 12376 12430 12442 12492 12504
+ 12395 12401 12417 12465 12468 12495
+ 12370 12401 12428 12465 12490 12503
+ 12286 12334 12460 12463 12601 12621
+ 12253 12325 12532 12561 12686 15539
+ 12374 12386 12437 12458 12504 12509
+ 12355 12399 12402 12489 12491 12531
+ 12407 12422 12457 12488 12500 15540
+ 12304 12364 12388 12499 12539 12583
+ 12353 12399 12406 12489 12538 15545
+ 12402 12491 12494 12534
+ 12405 12417 12426 12468 12470 12498
+ 12371 12403 12414 12493
+ 12274 12351 12521 12561 12636 15539
+ 12378 12392 12427 12475 12485 12514 12517
+ 12398 12411 12436 12464 12497 12507
+ 12277 12383 12404 12547 12563 12620
+ 12373 12408 12421 12508
+ 12314 12387 12394 12525 12530 12594
+ 12138 12282 12338 12650 12668 12762
+ 12407 12423 12444 12472 12500 12510
+ 12386 12410 12442 12483 12509 12529
+ 12327 12387 12400 12525 12527 12588
+ 12219 12286 12322 12440 12555 12621 12665
+ 12385 12414 12434 12493 12505 12537
+ 12074 12279 12315 12638 12652 12803
+ 12334 12352 12440 12501 12571 12601
+ 12411 12419 12452 12478 12507 12518
+ 12401 12438 12439 12495 12503 12522
+ 12348 12391 12415 12506 12554 12595
+ 12367 12406 12433 12544 12568 15545
+ 12417 12438 12448 12495 12498 12515
+ 11573 11599 12331 12876 13213 13437
+ 12426 12435 12448 12477 12498 12516
+ 12339 12394 12416 12530 12540 12598
+ 12423 12429 12457 12484 12510 12526
+ 12350 12400 12418 12527 12533 12586
+ 12382 12421 12431 12508 12524 12565
+ 12392 12422 12451 12488 12517 12536
+ 12231 12295 12549 12733 12736 15542
+ 12430 12435 12470 12492 12516 12552
+ 12419 12428 12464 12490 12518 12535
+ 12377 12418 12432 12533 12584 15546
+ 12384 12431 12432 12524 12578 15546
+ 12368 12390 12416 12520 12540 12590
+ 12095 12300 12329 12887 13041
+ 12410 12434 12458 12505 12529 12553
+ 12429 12436 12472 12497 12526 12543
+ 12427 12451 12514 12545
+ 12333 12388 12424 12539 12577 12622
+ 12223 12322 12412 12555 12633 12673
+ 12422 12444 12475 12500 12536 12548
+ 12399 12443 12446 12531 12538 12570
+ 12428 12439 12478 12503 12535 15547
+ 12402 12443 12447 12531 12534 12573
+ 12430 12437 12477 12504 12552 12557
+ 12414 12449 12461 12537
+ 12447 12534 12541 12574
+ 12438 12465 12468 12515 12522 12550
+ 12119 12279 12425 12638 12731 12804
+ 12436 12452 12484 12507 12543 12556
+ 12448 12468 12470 12515 12516 12551
+ 12364 12415 12445 12554 12583 12632
+ 12444 12457 12488 12510 12548 12560
+ 12352 12383 12463 12547 12571 12630
+ 11984 12239 12248 12675 12792 12971
+ 12439 12465 12490 12522 12564 15547
+ 12437 12442 12492 12509 12557 12562
+ 12434 12461 12483 12537 12553 12576
+ 12391 12433 12466 12544 12595 12623
+ 12452 12464 12497 12518 12556 12566
+ 12421 12454 12474 12565
+ 12442 12458 12504 12529 12562 12572
+ 12457 12472 12500 12526 12560 12569
+ 12045 12248 12282 12668 12792 13011
+ 12256 12393 12412 12606 12609 12710
+ 12244 12285 12528 12542 12702 12739
+ 12451 12485 12517 12545 12558 12567
+ 12468 12495 12498 12550 12551 12559
+ 12470 12477 12498 12551 12552 12585
+ 12451 12475 12514 12536 12567 12579
+ 12464 12478 12507 12535 12566 12575
+ 12303 12420 12528 12676 12701
+ 12390 12404 12481 12563 12590 12644
+ 12351 12424 12450 12577 12636 12678
+ 12465 12495 12503 12550 12564 12580
+ 12354 12389 12397 12605 12628 12781
+ 12431 12474 12480 12565 12578 12619
+ 12387 12455 12459 12588 12594 12654
+ 12472 12484 12510 12543 12569 12582
+ 12400 12459 12473 12586 12588 12647
+ 12244 12303 12513 12519 12701 12702
+ 12458 12483 12509 12553 12572 12596
+ 12394 12455 12471 12594 12598 12661
+ 12443 12489 12491 12570 12573 12610
+ 12325 12441 12605 12686 12850 15541
+ 12418 12473 12479 12584 12586 12641
+ 12447 12491 12494 12573 12574 12612
+ 12478 12490 12518 12575 12587 15547
+ 12475 12488 12517 12548 12579 12591
+ 12461 12493 12505 12576
+ 12446 12489 12570 12589 12613 15545
+ 12388 12445 12486 12583 12622 12666
+ 12416 12471 12481 12590 12598 12659
+ 12494 12574 15548 15550
+ 12285 12315 12513 12652 12739 12832
+ 12484 12497 12526 12556 12582 12597
+ 12433 12467 12506 12568 12623 12642
+ 12485 12514 12558 12599
+ 12280 12393 12420 12609 12676 12828
+ 12383 12453 12501 12620 12630 12697
+ 12488 12500 12536 12560 12591 12603
+ 12295 12476 12733 12913 15543
+ 12495 12515 12522 12559 12580 12593
+ 12498 12515 12516 12559 12585 12592
+ 12477 12492 12516 12557 12585 12615 15549
+ 12483 12505 12529 12576 12596 12617
+ 12415 12466 12499 12595 12632 12680
+ 12322 12460 12487 12665 12673 12753
+ 12497 12507 12543 12566 12597 12607
+ 12492 12504 12552 12562 12604 15549
+ 12514 12545 12567 12599 12608
+ 12515 12550 12551 12592 12593
+ 12500 12510 12548 12569 12603 12614
+ 12441 12450 12636 12686 12777 15539
+ 12504 12509 12557 12572 12604 12616
+ 12404 12453 12520 12620 12644 12707
+ 12503 12522 12580 12602 12618 15547
+ 12474 12508 12524 12619
+ 12507 12518 12556 12575 12607 15551
+ 12514 12517 12558 12579 12608 12624
+ 12467 12544 12589 12642 12660 15545
+ 12510 12526 12560 12582 12614 12625
+ 12489 12531 12538 12610 12613 12646
+ 12463 12501 12601 12630 12703
+ 12509 12529 12562 12596 12616 12629
+ 12491 12531 12534 12610 12612 15553
+ 12494 12534 12541 12612 12655 15550
+ 12518 12535 12566 12587 12627 15551
+ 12505 12537 12553 12617
+ 12424 12486 12521 12622 12678 12708
+ 12480 12524 12619 12631 12677 15546
+ 12517 12536 12567 12591 12624 12634
+ 12522 12550 12564 12593 12618 12626
+ 12191 12366 12413 12818 12889 13057
+ 12526 12543 12569 12597 12625 12637
+ 12445 12499 12539 12632 12666 12723
+ 12479 12533 12631 12641 12693 15546
+ 12516 12551 12552 12592 12615 12635 12648
+ 12473 12527 12533 12641 12647 12705
+ 12535 12575 12602 12627 12640 15547
+ 12459 12525 12527 12647 12654 12713
+ 12538 12568 12613 12660 15545 15555
+ 12481 12520 12540 12644 12659 12719
+ 12536 12548 12579 12603 12634 12645
+ 12551 12559 12585 12593 12635 15552
+ 12550 12559 12580 12592 12626 15552
+ 12455 12525 12530 12654 12661 12720
+ 12466 12506 12554 12623 12680 12714
+ 12529 12553 12572 12617 12629 12656
+ 12543 12556 12582 12607 12637 12651
+ 12471 12530 12540 12659 12661 12724
+ 12545 12558 12608 12662 15554
+ 11868 12164 12269 12906 13015 13210
+ 12440 12463 12571 12621 12703 12752
+ 12564 12587 12618 12640 12657 15547
+ 12548 12560 12591 12614 12645 12663
+ 12557 12562 12616 12639 12658 15549
+ 12397 12523 12532 12781 12850 12907 15541
+ 12412 12512 12633 12710 12746 12811
+ 12556 12566 12597 12651 12664 15551
+ 12558 12567 12599 12624 12669 15554
+ 12393 12512 12546 12710 12821 12828
+ 12531 12570 12573 12646 12689 15553
+ 12649 12653 12687 15548
+ 12534 12573 12574 12655 15553 15556
+ 12538 12570 12589 12646 12685 15555
+ 12560 12569 12603 12625 12663 12670
+ 12552 12585 12639 12648 12671 15549
+ 12562 12572 12604 12629 12658 12672
+ 12553 12576 12596 12656
+ 12564 12580 12602 12626 12657 12667
+ 12524 12565 12578 12677
+ 12453 12547 12563 12697 12707 12780
+ 12440 12460 12601 12665 12752 12797
+ 12486 12539 12577 12666 12708 12750
+ 12506 12544 12595 12642 12714 12737
+ 12567 12579 12608 12634 12669 12681
+ 12569 12582 12614 12637 12670 12682
+ 12580 12593 12618 12667 12679 15552
+ 12575 12587 12640 12674 12684 15551
+ 12389 12523 12736 12781 12927 15542
+ 12572 12596 12616 12656 12672 12692
+ 12501 12547 12571 12697 12703 12778
+ 12578 12584 12677 12693 12742 15546
+ 12499 12554 12583 12680 12723 12779
+ 12412 12487 12606 12673 12746 12791
+ 12579 12591 12624 12645 12681 12691
+ 12585 12592 12648 12688 12696 15552
+ 12450 12521 12561 12678 12777 12795
+ 12582 12597 12625 12651 12682 12695
+ 12279 12462 12496 12731 12803 12892
+ 12604 12615 12658 12671 12694 15549
+ 12587 12602 12627 12657 12684 12699
+ 12533 12584 12586 12693 12705 12760
+ 12544 12568 12623 12660 12737 12745
+ 11534 11556 11680 11951 13075 13136 13616
+ 12520 12563 12590 12707 12719 12788
+ 12591 12603 12634 12663 12691 12704
+ 12570 12610 12613 12685 12689 15557
+ 12527 12586 12588 12705 12713 12770
+ 12585 12615 12635 12671 12696 12709
+ 12611 12683 12687 12722
+ 12338 12425 12456 12762 12804 12952
+ 12597 12607 12637 12664 12695 12706
+ 12315 12462 12542 12803 12832 12949
+ 12611 12687 12690 12727 15548 15550
+ 12525 12588 12594 12713 12720 12782
+ 12574 12612 12690 12734 15550 15556
+ 12596 12617 12629 12692
+ 12602 12618 12640 12667 12699 12711
+ 12604 12616 12639 12672 12694 12712
+ 12540 12590 12598 12719 12724 12793
+ 12568 12589 12642 12743 12745 15555
+ 12530 12594 12598 12720 12724 12790
+ 12599 12698 12718 15554
+ 12603 12614 12645 12670 12704 12716
+ 12607 12651 12674 12706 12717 15551
+ 12460 12555 12621 12753 12797 12860
+ 12539 12583 12622 12723 12750 12817
+ 12618 12626 12657 12679 12711 12721
+ 12282 12456 12511 12762 12999 13011
+ 12608 12624 12681 12698 12735 15554
+ 12614 12625 12663 12682 12716 12726
+ 12615 12639 12648 12694 12709 12728
+ 12616 12629 12658 12692 12712 12730
+ 12487 12555 12633 12753 12791 12857
+ 12627 12664 12684 12717 12729 15551
+ 12239 12413 12502 12818 12971 13059
+ 12420 12519 12546 12701 12828 12933
+ 12578 12619 12631 12742
+ 12521 12577 12636 12708 12794 12795
+ 12626 12667 12688 12721 12732 15552
+ 12554 12595 12632 12714 12779 12825
+ 12624 12634 12669 12691 12735 12757
+ 12625 12637 12670 12695 12726 12741
+ 12649 12715 12722 12756
+ 12627 12640 12674 12699 12729 12744
+ 12613 12646 12738 15555 15557
+ 12441 12532 12561 12777 12850 12958
+ 12611 12649 12653 12722 12727 12765
+ 12635 12679 12696 12732 12747 15552
+ 12610 12646 12740 12769 15553 15557
+ 12653 12655 12727 12734 12771 15550
+ 12634 12645 12681 12704 12757 12758
+ 12629 12656 12672 12730
+ 12584 12631 12641 12742 12760 12807
+ 12639 12658 12671 12712 12728 12749
+ 12637 12651 12682 12706 12741 12751
+ 12635 12648 12688 12709 12747 12755
+ 12547 12620 12630 12778 12780 12858
+ 12662 12669 12718 12735 12761 15554
+ 12640 12657 12684 12711 12744 12754
+ 12208 12366 12759 12889 13046 13109
+ 12519 12528 12676 12702 12910 12933
+ 12513 12528 12701 12739 12910 12919
+ 12571 12601 12630 12752 12778 12849
+ 12645 12663 12691 12716 12758 12763
+ 12586 12641 12647 12760 12770 12829
+ 12651 12664 12695 12717 12751 12764
+ 12563 12620 12644 12780 12788 12862
+ 12577 12622 12678 12750 12794 12824
+ 12648 12671 12696 12728 12755 12768
+ 12512 12606 12609 12811 12821 12836
+ 12657 12667 12699 12721 12754 12766
+ 12658 12672 12694 12730 12749 12767
+ 12588 12647 12654 12770 12782 12842
+ 12595 12623 12680 12737 12825 12840
+ 12683 12748 12756 12786
+ 12663 12670 12704 12726 12763 12772
+ 12664 12674 12706 12729 12764 12773
+ 12662 12698 12761 12776
+ 12590 12644 12659 12788 12793 12863
+ 12594 12654 12661 12782 12790 12851
+ 12667 12679 12711 12732 12766 12774
+ 12649 12683 12687 12756 12765 12796
+ 12583 12632 12666 12779 12817 12884
+ 12598 12659 12661 12790 12793 12861
+ 11896 12269 12409 13015 13094 13233
+ 12670 12682 12716 12741 12772 12785
+ 12653 12687 12690 12765 12771 12808
+ 12671 12694 12709 12749 12768 12784
+ 12674 12684 12717 12744 12773 12787
+ 12672 12692 12712 12767
+ 12496 12638 12804 12892 12986
+ 12679 12688 12721 12747 12774 12789
+ 12476 12549 12736 12913 12975
+ 12655 12690 12771 12783 12819 15556
+ 12669 12681 12698 12757 12761 12805
+ 12476 12628 12733 12927 12975 13032 15542
+ 12623 12642 12714 12745 12838 12840
+ 12685 12743 12801 12815 15555 15557
+ 12513 12542 12702 12832 12919 12923
+ 12689 12769 12783 12831 15553 15556
+ 12682 12695 12726 12751 12785 12799
+ 12631 12677 12693 12807
+ 12660 12738 12745 12815 12820 15555
+ 12684 12699 12729 12754 12787 12798
+ 12642 12660 12737 12743 12820 12838
+ 12606 12633 12791 12811 12879
+ 12688 12696 12732 12755 12789 12800
+ 12715 12775 12786 12816
+ 12694 12712 12728 12767 12784 12802
+ 12622 12666 12708 12817 12824 12895
+ 12695 12706 12741 12764 12799 12810
+ 12601 12621 12703 12797 12849 12905
+ 12555 12665 12673 12857 12860 12937
+ 12699 12711 12744 12766 12798 12809
+ 12696 12709 12747 12768 12800 12812
+ 12683 12715 12722 12786 12796 12830
+ 12681 12691 12735 12758 12805 12833 12866
+ 12691 12704 12757 12763 12813 12833
+ 12208 12232 12700 12888 13109 13166
+ 12641 12693 12705 12807 12829 12873
+ 12698 12718 12735 12776 12805 12827
+ 12456 12650 12668 12952 12999
+ 12704 12716 12758 12772 12813 12814
+ 12706 12717 12751 12773 12810 12822
+ 12687 12722 12727 12796 12808 12841
+ 12711 12721 12754 12774 12809 15558
+ 12712 12730 12749 12802
+ 12709 12728 12755 12784 12812 12823
+ 12689 12740 12801 12831 12859 15557
+ 12647 12705 12713 12829 12842 12891
+ 12690 12727 12734 12808 12819 12853
+ 12716 12726 12763 12785 12814 12826
+ 12717 12729 12764 12787 12822 12834
+ 12721 12732 12766 12789 12835 15558
+ 12748 12806 12816 12845
+ 12718 12761 12827 12839
+ 12561 12636 12686 12795 12926 12958
+ 12630 12697 12703 12849 12858 12922
+ 12632 12680 12723 12825 12884 12946
+ 12620 12697 12707 12858 12862 12929
+ 12523 12605 12628 12907 12927 13031
+ 12654 12713 12720 12842 12851 12904
+ 12734 12740 12819 12831 12871 15556
+ 12728 12749 12768 12802 12823 12837
+ 12726 12741 12772 12799 12826 12844
+ 12715 12748 12756 12816 12830 12854
+ 12729 12744 12773 12798 12834 12843
+ 12644 12707 12719 12862 12863 12930
+ 12732 12747 12774 12800 12835 12846
+ 12661 12720 12724 12851 12861 12917
+ 12633 12673 12746 12857 12879 12954
+ 12248 12502 12511 12971 13011 13200
+ 12659 12719 12724 12861 12863 12925
+ 12678 12708 12795 12824 12909 12959
+ 12636 12678 12777 12794 12909 12926
+ 12722 12756 12765 12830 12841 12870
+ 12621 12665 12752 12860 12905 12968
+ 12744 12754 12787 12809 12843 12852
+ 12741 12751 12785 12810 12844 12856
+ 12747 12755 12789 12812 12846 12848
+ 12738 12769 12815 12859 15557 15559
+ 12749 12767 12784 12837
+ 12462 12638 12652 12892 12949 13029
+ 12425 12496 12650 12731 12952 12986 13120
+ 12735 12757 12761 12827 12866 12874
+ 12775 12837 12845 12869
+ 12693 12742 12760 12873
+ 12727 12765 12771 12841 12853 12882
+ 12754 12766 12798 12852 12865 15558
+ 12751 12764 12799 12822 12856 12868
+ 12606 12710 12746 12836 12879 12948
+ 12755 12768 12800 12823 12848 12855
+ 12758 12763 12814 12833 12847
+ 12763 12772 12813 12826 12847 12864
+ 12738 12743 12801 12820 12896 15559
+ 12748 12775 12786 12845 12854 12878
+ 12666 12723 12750 12884 12895 13001
+ 12413 12581 12675 13057 13059 13172
+ 12734 12771 12783 12853 12871 12900
+ 12743 12745 12815 12838 12896 12903
+ 12609 12710 12828 12836 12990 13013
+ 12764 12773 12810 12834 12868 12875
+ 12768 12784 12812 12837 12855 12867
+ 12708 12750 12794 12895 12959
+ 12680 12714 12779 12840 12946 12960
+ 12772 12785 12814 12844 12864 12880
+ 12761 12776 12805 12839 12874 12883
+ 12546 12609 12676 12821 12933 13013 13053
+ 12705 12760 12770 12873 12891 12943
+ 12756 12786 12796 12854 12870 15561
+ 12740 12769 12783 12859 12871 12915
+ 12542 12652 12739 12923 12949 13045
+ 12757 12758 12813 12847 12866 12877
+ 12773 12787 12822 12843 12875 15560
+ 12774 12789 12846 12872 12881 15558
+ 12710 12811 12821 12948 12990
+ 12784 12802 12806 12823 12867 12869 12886
+ 12737 12745 12820 12840 12903 12931
+ 12776 12827 12883 12885
+ 12714 12737 12825 12838 12931 12960
+ 12765 12796 12808 12870 12882 12911
+ 12713 12770 12782 12891 12904 12965
+ 12787 12798 12834 12852 12893 15560
+ 12785 12799 12826 12856 12880 12899
+ 12775 12806 12816 12869 12878 12901
+ 12789 12800 12835 12848 12881 12894
+ 12813 12814 12833 12864 12877 12890
+ 12800 12812 12846 12855 12894 12897
+ 12703 12752 12778 12905 12922 12985
+ 12532 12605 12686 12907 12958 13085 13126
+ 12720 12782 12790 12904 12917 12974
+ 12798 12809 12843 12865 12893 12902
+ 12771 12808 12819 12882 12900 12928
+ 12786 12816 12830 12878 12914 15561
+ 12812 12823 12848 12867 12897 12898
+ 12799 12810 12844 12868 12899 12908
+ 12673 12753 12791 12937 12954 13012
+ 12697 12778 12780 12922 12929 12997
+ 12769 12801 12831 12915 12955 15559
+ 12665 12753 12797 12937 12968 13018
+ 12724 12790 12793 12917 12925 12987
+ 12707 12780 12788 12929 12930 13000
+ 12719 12788 12793 12925 12930 12994
+ 12814 12826 12847 12880 12890 12920
+ 12809 12852 12872 12902 12912 15558
+ 12757 12805 12833 12874 12877 12940 12947
+ 12823 12837 12855 12886 12898 15562
+ 12810 12822 12856 12875 12908 12916
+ 12806 12837 12845 12886 12901 12918
+ 12796 12830 12841 12911 15561 15563
+ 12783 12819 12831 12900 12915 12967
+ 12835 12865 12881 12912 12921 15558
+ 12760 12807 12829 12943
+ 12805 12827 12866 12883 12934 12940
+ 12822 12834 12868 12916 12924 15560
+ 11573 11578 12469 13315 13437 13684
+ 12833 12847 12866 12890 12941 12947
+ 12816 12845 12854 12901 12914 12942
+ 12746 12791 12811 12948 12954 13016
+ 12826 12844 12864 12899 12920 12953
+ 12835 12846 12872 12894 12921 12935
+ 12808 12841 12853 12911 12928 12963
+ 12827 12839 12874 12885 12934 12938
+ 12723 12779 12817 12946 13001 13063
+ 12839 12883 12938 12944
+ 12837 12867 12869 12918 12936 15562
+ 12230 12329 12482 13041 13168 13498
+ 12232 12409 12759 13094 13166 13267
+ 12366 12581 12700 13046 13057 13154
+ 12847 12864 12877 12920 12941
+ 12770 12829 12842 12943 12965 13008
+ 12638 12731 12803 12986 13029 13099
+ 12843 12852 12902 12932 12945 15560
+ 12846 12848 12881 12897 12935 12951
+ 12750 12817 12824 12959 13001 13078
+ 12815 12820 12903 12972 12982 15559
+ 12848 12855 12894 12898 12950 12951
+ 12855 12867 12897 12939 12950 15562
+ 12844 12856 12880 12908 12953 12961
+ 12819 12853 12871 12928 12967 12983
+ 12845 12869 12878 12918 12942 12957
+ 12852 12865 12893 12912 12945 12956
+ 12820 12838 12896 12931 12982 12998
+ 12782 12842 12851 12965 12974 13017
+ 12752 12797 12849 12968 12985 13030
+ 12164 12331 12600 13210 13213 13401
+ 12605 12781 12850 13031 13085
+ 12856 12868 12899 12916 12961 12962
+ 12794 12795 12926 12959 13061
+ 12701 12702 12919 12933 13098 13110
+ 12841 12870 12882 12963 12981 15563
+ 12865 12872 12902 12921 12956 12970
+ 12549 12733 12975 13041 13371 15543
+ 12854 12878 12942 12964 12976 15561
+ 12831 12859 12871 12955 12967 13009
+ 12868 12875 12908 12924 12962 12966
+ 12790 12851 12861 12974 12987 13028
+ 12869 12886 12901 12936 12957 12973
+ 12702 12739 12910 12923 13060 13110
+ 12864 12880 12890 12941 12953 12995
+ 12872 12881 12912 12935 12970 12980
+ 12778 12849 12858 12985 12997 13040
+ 12739 12832 12919 13045 13060
+ 12875 12916 12932 12966 12977 15560
+ 12793 12861 12863 12987 12994 13035
+ 12777 12795 12909 12958 13061 13096
+ 12628 12736 12781 13031 13032 13128
+ 12853 12882 12900 12963 12983 13002
+ 12780 12858 12862 12997 13000 13044
+ 12788 12862 12863 12994 13000 13042
+ 12838 12840 12903 12960 12998 13025
+ 12893 12924 12945 12977 15560 15564
+ 12676 12701 12828 12910 13053 13098 13123
+ 12874 12883 12938 12940 12988 12996
+ 12881 12894 12921 12951 12980 12991
+ 12886 12918 12939 12973 12993 15562
+ 12753 12857 12860 13012 13018 13076
+ 12883 12885 12934 12944 12988 12989
+ 12898 12936 12950 12978 12993 15562
+ 12866 12874 12934 12947 12996 13005
+ 12877 12890 12920 12947 12995 13006
+ 12878 12901 12914 12957 12976 12979
+ 12829 12873 12891 13008
+ 12885 12938 12989 12992
+ 12893 12902 12932 12956 15564
+ 12779 12825 12884 12960 13063 13067
+ 12866 12877 12940 12941 13005 13006
+ 12811 12836 12879 12990 13016 13071
+ 12652 12803 12832 13029 13045 13143
+ 12897 12898 12939 12951 12978 12984
+ 12894 12897 12935 12950 12984 12991
+ 12650 12762 12804 12999 13120 13158
+ 12880 12899 12920 12961 12995 13036
+ 12791 12857 12879 13012 13016 13077
+ 12859 12915 12972 13009 13033 15559
+ 12902 12912 12945 12970 13097 15564
+ 12901 12918 12942 12973 12979 13003
+ 12686 12777 12850 12926 13096 13126
+ 12794 12824 12895 12909 13061 13078
+ 12825 12840 12931 12946 13025 13067
+ 12899 12908 12953 12962 13022 13036
+ 12908 12916 12961 12966 13007 13022
+ 12882 12911 12928 12981 13002 15565
+ 12914 12976 13004 13010 15561 15563
+ 12842 12891 12904 13008 13017 13055
+ 12916 12924 12962 12977 13007
+ 12871 12900 12915 12983 13009 13038
+ 12797 12860 12905 13018 13030 13081
+ 11028 11079 12178 13265 14023 14169
+ 12912 12921 12956 12980 13097
+ 12502 12675 12792 13059 13200 13230
+ 12896 12955 12982 13033 13049 15559
+ 12918 12936 12957 12993 13003 13021
+ 12851 12904 12917 13017 13028 13073
+ 12733 12736 12913 13032 13371
+ 12914 12942 12964 12979 13010 13014
+ 12924 12932 12966 13007 13023 15564
+ 12939 12950 12984 12993 13019 13039
+ 12942 12957 12976 13003 13014
+ 12921 12935 12970 12991 13058 13097
+ 12911 12963 13004 13034 15563 15565
+ 12896 12903 12972 12998 13049 13051
+ 12900 12928 12967 13002 13038 13047
+ 12950 12951 12978 12991 13019
+ 12849 12905 12922 13030 13040 13088
+ 12731 12804 12892 13099 13120 13186
+ 12861 12917 12925 13028 13035 13080
+ 12934 12938 12989 12996 13020 13026
+ 12938 12944 12988 12992 13020 13024
+ 12821 12836 12948 13013 13071 13107
+ 12935 12951 12980 12984 13019 13058
+ 12944 12989 13024 13027
+ 12936 12939 12973 12978 13021 13039
+ 12863 12925 12930 13035 13042 13086
+ 12920 12941 12953 13006 13036 13056
+ 12934 12940 12988 13005 13026 13037
+ 12858 12922 12929 13040 13044 13092
+ 12903 12931 12982 13025 13051 13069
+ 12668 12762 12952 13011 13158 13183
+ 12862 12929 12930 13042 13044 13091
+ 12817 12884 12895 13063 13078 13146
+ 12928 12963 12983 13047 13050 15565
+ 12957 12973 12979 13014 13021 13052
+ 12964 12981 13010 13034 13048 15563
+ 12940 12947 12996 13006 13037 13054
+ 12941 12947 12995 13005 13054 13056
+ 12962 12966 12977 13022 13023 13043
+ 12891 12943 12965 13055
+ 12915 12955 12967 13033 13038 13089
+ 12964 12976 13004 13014 13048 13074
+ 12511 12668 12792 12999 13183 13200 13295
+ 12857 12937 12954 13076 13077 13125
+ 12821 12828 12990 13053 13107 13141
+ 12976 12979 13003 13010 13052 13074
+ 12269 12600 12725 13210 13233 13367
+ 12879 12948 12954 13071 13077 13121
+ 12904 12965 12974 13055 13073 13104
+ 12860 12937 12968 13076 13081 13130
+ 12978 12984 12991 13039 13058 15567
+ 12988 12989 13024 13026 13062 13065
+ 12973 12993 13003 13039 13052 13083
+ 12961 12962 13007 13036 13043 13064
+ 12977 13007 13043 13079 15564
+ 12989 12992 13020 13027 13065 13068
+ 12931 12960 12998 13067 13069 13112
+ 12988 12996 13020 13037 13062 13070
+ 12992 13024 13068 13072
+ 12917 12974 12987 13073 13080 13113
+ 12803 12892 12949 13099 13143 13196
+ 12905 12968 12985 13081 13088 13134
+ 12781 12907 12927 13085 13128 13194
+ 12736 12927 12975 13128 13371
+ 12955 12972 13009 13049 13089 13114
+ 12981 13004 13048 13066 13082 15565
+ 12925 12987 12994 13080 13086 13127
+ 12953 12961 12995 13022 13056 13064 13105 13106
+ 12996 13005 13026 13054 13070 13084
+ 12967 12983 13009 13047 13089 13115
+ 12978 12993 13019 13021 13083 15567
+ 12922 12985 12997 13088 13092 13139
+ 12300 12317 12482 12887 12913 13371 13498 15543
+ 12930 12994 13000 13086 13091 13133
+ 13007 13022 13023 13064 13079 13100
+ 12929 12997 13000 13091 13092 15568
+ 12832 12923 12949 13060 13143 13203
+ 12700 12889 13109 13154 13225
+ 12983 13002 13038 13050 13108 13115
+ 13004 13010 13034 13074 13082 13142
+ 12972 12982 13033 13051 13114 13118
+ 13002 13047 13066 13108 15565
+ 12982 12998 13049 13069 13111 13118
+ 13003 13014 13021 13074 13083 13124
+ 12828 12933 13013 13123 13141 13180
+ 13005 13006 13037 13056 13084 13093 13102
+ 12965 13008 13017 13104
+ 12995 13006 13036 13054 13093 13105
+ 12581 12818 12889 13154 13172 13239
+ 12980 12991 13019 13097 13156 15567
+ 12675 12818 12971 13172 13230 13279
+ 12919 12923 13045 13110 13185 13203
+ 12909 12926 12959 13078 13096 13224
+ 13020 13026 13065 13070 13087 13090
+ 12884 12946 13001 13067 13146 13153
+ 13022 13036 13043 13100 13106
+ 13020 13024 13062 13068 13090 13095
+ 13034 13050 13082 13108 13119 15565
+ 12946 12960 13025 13063 13112 13153 13159
+ 13024 13027 13065 13072 13095 13101
+ 12998 13025 13051 13111 13112
+ 13026 13037 13062 13084 13087 15566
+ 12948 12990 13016 13107 13121 13160
+ 13027 13068 13101 13103
+ 12974 13017 13028 13104 13113 13144
+ 13010 13014 13048 13052 13124 13142
+ 11621 11680 11962 12643 13578 13616 13931
+ 12937 13012 13018 13125 13130 13170
+ 12954 13012 13016 13121 13125 13167
+ 12895 12959 13001 13061 13146 13224 13247
+ 13023 13043 13097 13100 13152 15564
+ 12987 13028 13035 13113 13127 13155
+ 12968 13018 13030 13130 13134 13175
+ 13034 13048 13066 13119 13142
+ 13021 13039 13052 13124 13151 15567
+ 13037 13054 13070 13102 13116 15566
+ 12850 12907 13031 13126 13194 13235
+ 12994 13035 13042 13127 13133 13164
+ 13062 13070 13090 13117 15566
+ 12985 13030 13040 13134 13139 13178
+ 13009 13033 13038 13114 13115 13176
+ 13062 13065 13087 13095 13117 13129
+ 13000 13042 13044 13133 13173 15568
+ 12997 13040 13044 13139 13177 15568
+ 13054 13056 13102 13105 13122 13131
+ 12409 12725 12888 13233 13267 13370
+ 13065 13068 13090 13101 13129 13132
+ 12926 12958 13061 13126 13224 13261
+ 12956 12970 12980 13058 13079 13152 13156 13214 15564
+ 12910 12933 13110 13123 13202 13218
+ 12892 12986 13029 13186 13196 13238
+ 13043 13064 13079 13106 13149 13152
+ 13068 13072 13095 13103 13132 13137
+ 13054 13084 13093 13116 13122 13135
+ 13072 13101 13137 13138
+ 13017 13055 13073 13144
+ 13036 13056 13093 13106 13131 13148
+ 13036 13064 13100 13105 13148 13149
+ 12990 13013 13071 13141 13160 13195
+ 13047 13050 13066 13115 13119 13171 13187
+ 12700 12759 13046 13166 13225 13297
+ 12910 12919 13060 13098 13185 13218
+ 13051 13069 13112 13118 13165 13181
+ 13025 13067 13069 13111 13159 13165
+ 13028 13073 13080 13144 13155 13182
+ 13033 13049 13089 13118 13176 13189
+ 13038 13047 13089 13108 13176 13187
+ 13084 13102 13135 13140 13150 15566
+ 13087 13090 13129 13140 13147 15566
+ 13049 13051 13111 13114 13181 13189
+ 13066 13082 13108 13142 13171
+ 12804 12952 12986 13158 13186 13282 13292
+ 13016 13071 13077 13160 13167 13204
+ 13093 13102 13131 13135 13145
+ 12933 13053 13098 13180 13202 13222
+ 13052 13074 13083 13142 13151 13198
+ 13012 13076 13077 13167 13170 13206
+ 12850 12958 13085 13096 13235 13261
+ 13035 13080 13086 13155 13164 13192
+ 12927 13031 13032 13194 13371 13387
+ 13090 13095 13117 13132 13147 13157
+ 13018 13076 13081 13170 13175 13207
+ 13093 13105 13122 13145 13148 13174
+ 13095 13101 13129 13137 13157 13161
+ 13042 13086 13091 13164 13173 13201
+ 13030 13081 13088 13175 13178 13209
+ 13102 13116 13122 13145 13150 13169
+ 11951 12361 12643 13168 13616 13680
+ 13101 13103 13132 13138 13161 13163
+ 13103 13137 13162 13163
+ 13040 13088 13092 13177 13178 13208
+ 13116 13117 13147 13150 13179 15566
+ 13013 13053 13107 13180 13195 13231
+ 13048 13074 13082 13119 13124 13171 13198 13249
+ 12949 13029 13045 13196 13203 13288
+ 13073 13104 13113 13182
+ 13122 13131 13135 13169 13174
+ 13001 13063 13078 13153 13247 13259
+ 13117 13129 13140 13157 13179 13184
+ 13105 13106 13131 13149 13174 13199
+ 13100 13106 13148 13152 13199 13215
+ 13116 13135 13140 13169 13179 13197
+ 13083 13124 13156 13198 13236 15567
+ 13079 13097 13100 13149 13214 13215
+ 13063 13067 13146 13159 13259 15569
+ 12889 13046 13057 13225 13239 13291
+ 13080 13113 13127 13182 13192 13219
+ 13058 13097 13151 13214 13236 15567
+ 13129 13132 13147 13161 13184 13188
+ 12952 12999 13120 13183 13266 13292
+ 13067 13112 13153 13165 13227 15569
+ 13071 13107 13121 13195 13204 13240
+ 13132 13137 13157 13163 13188 13190
+ 13138 13163 13191 13193
+ 13137 13138 13161 13162 13190 13193
+ 13086 13127 13133 13192 13201 13229
+ 13111 13112 13159 13181 13216 13227
+ 12759 12888 13109 13267 13297 13390
+ 13077 13121 13125 13204 13206 13243
+ 12230 12361 12887 13136 13498 13680
+ 13135 13145 13150 13174 13197 13228
+ 13076 13125 13130 13206 13207 13245
+ 13108 13119 13142 13187 13249 13251
+ 12818 13057 13059 13239 13279 13323
+ 13091 13133 13201 13205 13234 15568
+ 13131 13145 13148 13169 13199 13228
+ 13081 13130 13134 13207 13209 13246
+ 13089 13114 13115 13187 13189 13237 13258
+ 13092 13139 13205 13208 13241 15568
+ 13088 13134 13139 13208 13209 13244
+ 13140 13147 13150 13184 13197 13211
+ 13053 13123 13141 13222 13231 13264
+ 13111 13118 13165 13189 13216 13232
+ 13113 13144 13155 13219
+ 12999 13011 13158 13266 13295 13334
+ 13147 13157 13179 13188 13211 13217
+ 13060 13110 13203 13218 13290 13294
+ 12986 13099 13120 13238 13282 13293
+ 13108 13115 13171 13176 13251 13258
+ 13157 13161 13184 13190 13217 13220
+ 13114 13118 13176 13181 13232 13237
+ 13161 13163 13188 13193 13220 13223
+ 13162 13193 13221 13226
+ 13127 13155 13164 13219 13229 13256
+ 13162 13163 13190 13191 13223 13226
+ 13031 13085 13128 13235 13352 13387
+ 13107 13141 13160 13231 13240 13271
+ 13029 13099 13143 13238 13288 13301
+ 13150 13169 13179 13211 13228 13242
+ 13124 13142 13151 13236 13249 13325
+ 13148 13149 13174 13215 13228 13262
+ 12792 12971 13011 13230 13295 13418 13433
+ 13133 13164 13173 13229 13234 13263
+ 13098 13123 13218 13222 13257 13270
+ 13045 13060 13143 13185 13288 13294 13321
+ 13121 13160 13167 13240 13243 13275
+ 13173 13177 13234 13241 13268 15568
+ 13125 13167 13170 13243 13245 13277
+ 13130 13170 13175 13245 13246 13276
+ 13139 13177 13178 13241 13244 13272
+ 13134 13175 13178 13244 13246 13274
+ 12600 12906 13015 13367 13401 13523
+ 13179 13184 13197 13217 13242 13248
+ 11037 11492 11903 13588 14084 14344
+ 12331 12469 12906 13401 13437 13629
+ 13097 13152 13156 13215 13236 13298 13350
+ 13149 13152 13199 13214 13262 13298
+ 13165 13181 13227 13232 13269
+ 13184 13188 13211 13220 13248 13250
+ 13098 13110 13185 13202 13257 13286 13290
+ 13155 13182 13192 13256
+ 13188 13190 13217 13223 13250 13252
+ 13191 13226 13253 13255
+ 13123 13180 13202 13264 13270 13300
+ 13190 13193 13220 13226 13252 13254
+ 13061 13078 13096 13247 13261 13356 13382
+ 13046 13109 13154 13291 13297 13420
+ 13191 13193 13221 13223 13254 13255
+ 13159 13165 13216 13269 13310 15569
+ 13169 13174 13197 13199 13242 13262 13287
+ 13164 13192 13201 13256 13263 13289
+ 12971 13059 13200 13279 13384 13433
+ 13141 13180 13195 13264 13271 13305
+ 13181 13189 13216 13237 13269 13285
+ 12725 13015 13094 13367 13370 13484
+ 13173 13201 13205 13263 13268 13296
+ 13085 13126 13194 13261 13352 13358
+ 13151 13156 13198 13214 13325 13350
+ 13176 13189 13232 13258 13285 13299
+ 13099 13186 13196 13293 13301 13345
+ 13057 13154 13172 13291 13323 13330
+ 13160 13195 13204 13271 13275 13309
+ 13177 13205 13208 13268 13272 13302
+ 13197 13211 13228 13248 13278 13287
+ 13167 13204 13206 13275 13277 13313
+ 13178 13208 13209 13272 13274 13306
+ 13170 13206 13207 13276 13277 13312
+ 13175 13207 13209 13274 13276 13308
+ 13078 13146 13224 13259 13351 13356
+ 13211 13217 13242 13250 13273 13278
+ 13142 13171 13198 13251 13325 13346
+ 13217 13220 13248 13252 13273 15570
+ 13171 13187 13249 13258 13328 13346
+ 13220 13223 13250 13254 13280 15570
+ 13221 13255 13281 13284
+ 13223 13226 13252 13255 13280 13283
+ 13221 13226 13253 13254 13283 13284
+ 13192 13219 13229 13289
+ 13202 13218 13270 13286 13318
+ 13176 13187 13237 13251 13299 13328
+ 13146 13153 13247 13342 13351 15569
+ 6562 6740 11299 14209 15024 15057
+ 13096 13126 13224 13235 13358 13382
+ 13199 13215 13228 13287 13298 15571
+ 13201 13229 13234 13289 13296 13320
+ 13180 13222 13231 13300 13305 13332
+ 11028 11137 12969 13426 14169 14468
+ 13158 13183 13292 13334 13378
+ 12888 13094 13166 13370 13390 13475
+ 13205 13234 13241 13296 13302 13324
+ 13216 13227 13232 13285 13310 13357
+ 13202 13222 13257 13300 13318 13338
+ 13195 13231 13240 13305 13309 13337
+ 13208 13241 13244 13302 13306 13329
+ 13248 13250 13278 13303 13304 15570
+ 13209 13244 13246 13306 13308 13331
+ 13204 13240 13243 13309 13313 13340
+ 13207 13245 13246 13308 13312 13336
+ 13206 13243 13245 13312 13313 13339
+ 13242 13248 13273 13287 13304 13319
+ 13059 13172 13230 13323 13384 13424
+ 13252 13254 13283 13307 13314 15570
+ 13253 13284 13311 13316
+ 13120 13186 13292 13293 13363 13386
+ 13254 13255 13280 13284 13314 13317
+ 13253 13255 13281 13283 13316 13317
+ 13232 13237 13269 13299 13348 13357
+ 13218 13257 13290 13318 13347
+ 13228 13242 13262 13278 13319 13349 15571
+ 13143 13196 13203 13301 13321 13385 13391
+ 13229 13256 13263 13320
+ 13185 13218 13286 13294 13347 13361
+ 13154 13225 13239 13330 13420 13435
+ 13120 13158 13266 13282 13378 13386
+ 13186 13238 13282 13345 13360 13363
+ 13185 13203 13290 13321 13361 13389
+ 13011 13183 13200 13334 13418 13487
+ 13234 13263 13268 13320 13324 13353
+ 13109 13166 13225 13390 13420 13479
+ 13214 13215 13262 13350 13393 15571
+ 13237 13258 13285 13328 13348 13365
+ 13222 13264 13270 13332 13338 13373
+ 13196 13238 13288 13345 13385 13399
+ 13241 13268 13272 13324 13329 13359
+ 13273 13304 13307 13322 13326 15570
+ 13273 13278 13303 13319 13322 13327
+ 13231 13264 13271 13332 13337 13375
+ 13244 13272 13274 13329 13331 13366
+ 13280 13303 13314 13326 13333 15570
+ 13246 13274 13276 13331 13336 13368
+ 13240 13271 13275 13337 13340 13377
+ 13227 13269 13342 13357 13445 15569
+ 13281 13316 13335 13343
+ 13245 13276 13277 13336 13339 13374
+ 13243 13275 13277 13339 13340 13376
+ 13280 13283 13307 13317 13333 13341
+ 11578 11733 12876 13654 13684 14021
+ 13281 13284 13311 13317 13343 13344
+ 13283 13284 13314 13316 13341 13344
+ 13257 13270 13286 13338 13347 13383
+ 13278 13287 13304 13327 13349 13354
+ 13263 13289 13296 13353
+ 13203 13288 13294 13389 13391 13419
+ 13303 13304 13326 13327 13355
+ 13172 13239 13279 13330 13424 13432
+ 13268 13296 13302 13353 13359 13392
+ 13198 13236 13249 13346 13350 13423 13494
+ 13303 13307 13322 13333 13355 13362
+ 13304 13319 13322 13354 13355 13364
+ 13251 13258 13299 13346 13365 13388
+ 13272 13302 13306 13359 13366 13395
+ 13239 13291 13323 13432 13435
+ 13274 13306 13308 13366 13368 13396
+ 13264 13300 13305 13373 13375 13406
+ 13307 13314 13326 13341 13362 13372
+ 13183 13266 13295 13378 13453 13487
+ 13311 13343 13369 13379
+ 13276 13308 13312 13368 13374 13400
+ 13271 13305 13309 13375 13377 13407
+ 13270 13300 13318 13373 13383 13410
+ 13277 13312 13313 13374 13376 13404
+ 13275 13309 13313 13376 13377 13405
+ 13314 13317 13333 13344 13372 13380
+ 13259 13310 13351 13445 13461 15569
+ 13311 13316 13335 13344 13379 13381
+ 13316 13317 13341 13343 13380 13381
+ 13238 13293 13301 13360 13399 13417
+ 13249 13251 13325 13328 13388 13423
+ 13286 13290 13318 13361 13383 13411
+ 13285 13299 13357 13365 13403
+ 13287 13319 13354 13397 13408 15571
+ 13214 13236 13298 13325 13393 13474 13494
+ 13247 13259 13342 13356 13461
+ 13194 13235 13358 13387 13610
+ 13296 13320 13324 13392
+ 13319 13327 13349 13364 13397
+ 13322 13326 13327 13362 13364 13394
+ 13224 13247 13351 13382 13461 13532
+ 13269 13285 13310 13348 13403 13445 13459
+ 13235 13261 13352 13382 13610
+ 13302 13324 13329 13392 13395 13421
+ 13293 13345 13363 13417 13422
+ 13290 13294 13347 13389 13411 13430
+ 13326 13333 13355 13372 13394 13398
+ 13282 13293 13360 13386 13422 13444
+ 13327 13354 13355 13394 13397 13413
+ 13299 13328 13348 13388 13403 13428
+ 13306 13329 13331 13395 13396 13425
+ 13015 13210 13233 13484 13523 13604
+ 13308 13331 13336 13396 13400 13429
+ 13335 13379 13402 13412
+ 13094 13233 13267 13475 13484 13557
+ 12913 12975 13032 13041 13128 13387 13498 13811
+ 13333 13341 13362 13380 13398 13409
+ 13300 13332 13338 13406 13410 13441
+ 13312 13336 13339 13400 13404 13431
+ 13305 13332 13337 13406 13407 13439
+ 13313 13339 13340 13404 13405 13436
+ 13309 13337 13340 13405 13407 13438
+ 13266 13292 13334 13386 13453 13456
+ 13335 13343 13369 13381 13412 13416
+ 13341 13344 13372 13381 13409 13415
+ 13343 13344 13379 13380 13415 13416
+ 13224 13261 13356 13358 13532 13610
+ 13318 13338 13347 13410 13411 13443
+ 13230 13279 13424 13433 13509
+ 13288 13301 13391 13399 13446 13452
+ 13282 13292 13363 13378 13444 13456
+ 13128 13194 13352 13371 13610 13811
+ 13328 13346 13365 13423 13428
+ 13294 13321 13361 13419 13430 13455
+ 13166 13267 13297 13475 13479 13537
+ 13288 13321 13385 13419 13446 13457
+ 13324 13353 13359 13421
+ 13298 13350 13408 13466 13474 15571
+ 13355 13362 13364 13398 13413 13427
+ 13329 13359 13366 13421 13425 13451
+ 13331 13366 13368 13425 13429 13454
+ 13349 13354 13364 13408 13413 13450 13462
+ 13362 13372 13394 13409 13427 13440
+ 13301 13345 13385 13417 13452 13458
+ 13336 13368 13374 13429 13431 13460
+ 12906 13210 13213 13523 13629 13681
+ 13369 13412 13434 13442
+ 13348 13357 13365 13428 13459 13502
+ 13339 13374 13376 13431 13436 13463
+ 13340 13376 13377 13436 13438 13465
+ 13332 13373 13375 13439 13441 13468
+ 13337 13375 13377 13438 13439 13467
+ 13349 13393 13397 13462 13466 15571
+ 13372 13380 13398 13415 13440 13447
+ 13338 13373 13383 13441 13443 13472
+ 13347 13361 13383 13430 13443 13471
+ 13369 13379 13402 13416 13442 13448
+ 13364 13394 13397 13427 13450
+ 10857 11227 11933 13426 14593 14738
+ 13380 13381 13409 13416 13447 13449
+ 13379 13381 13412 13415 13448 13449
+ 13345 13360 13399 13422 13458 13470
+ 13200 13295 13433 13487 13555 13558
+ 13321 13389 13391 13455 13457 13485
+ 13225 13291 13297 13435 13479 13561 13581
+ 13359 13392 13395 13451
+ 13360 13363 13417 13444 13470 13489
+ 13325 13346 13388 13428 13494 13525
+ 13279 13323 13384 13432 13509 13520
+ 13366 13395 13396 13451 13454 13478
+ 11137 11227 13265 13414 14468 14738
+ 13394 13398 13413 13440 13450 13469
+ 13365 13388 13403 13423 13502 13525
+ 13368 13396 13400 13454 13460 13483
+ 13361 13389 13411 13455 13471 13491
+ 13374 13400 13404 13460 13463 13486
+ 13323 13330 13424 13435 13520 13540
+ 13200 13230 13384 13418 13509 13555 13583
+ 13402 13442 13464 13473
+ 13291 13330 13420 13432 13540 13581
+ 13376 13404 13405 13463 13465 13488
+ 12469 12876 13213 13629 13684 13854
+ 13377 13405 13407 13465 13467 13490
+ 13375 13406 13407 13467 13468 13493
+ 13398 13409 13427 13447 13469 13476
+ 13373 13406 13410 13468 13472 13495
+ 13402 13412 13434 13448 13473 13477
+ 13383 13410 13411 13471 13472 13496
+ 13363 13386 13422 13456 13489 13506
+ 13310 13342 13357 13459 13461 13552 13575
+ 13385 13391 13452 13457 13482 13497
+ 13409 13415 13440 13449 13476 13481
+ 13412 13416 13442 13449 13477 13480
+ 13415 13416 13447 13448 13480 13481
+ 13397 13413 13427 13462 13469 13501
+ 13395 13421 13425 13478
+ 13385 13399 13446 13458 13482 13499
+ 13334 13378 13456 13487 13524 13571
+ 13396 13425 13429 13478 13483 13503
+ 13389 13419 13430 13485 13491 13516
+ 13378 13386 13444 13453 13506 13524
+ 13391 13419 13446 13485 13497 13515
+ 13399 13417 13452 13470 13499 13512
+ 13357 13403 13445 13502 13552
+ 13400 13429 13431 13483 13486 13507
+ 13342 13351 13356 13445 13532 13575
+ 13397 13408 13450 13466 13501 13550
+ 13404 13431 13436 13486 13488 13513
+ 13434 13473 13492 13500
+ 13405 13436 13438 13488 13490 13514
+ 13393 13408 13462 13474 13550 13607
+ 13407 13438 13439 13490 13493 13517
+ 13406 13439 13441 13493 13495 13519
+ 13427 13440 13450 13476 13501 13505
+ 13417 13422 13458 13489 13512 13527
+ 13411 13430 13443 13491 13496 13518
+ 13410 13441 13443 13495 13496 13522
+ 13434 13442 13464 13477 13500 13504
+ 13350 13393 13466 13494 13607
+ 13267 13370 13390 13537 13557 13602
+ 13440 13447 13469 13481 13505 13510
+ 13442 13448 13473 13480 13504 13508
+ 13425 13451 13454 13503
+ 13297 13390 13420 13537 13561 13582
+ 13448 13449 13477 13481 13508 13511
+ 13447 13449 13476 13480 13510 13511
+ 13446 13452 13497 13499 13526
+ 13429 13454 13460 13503 13507 13529
+ 13233 13367 13370 13557 13604 13674
+ 13419 13455 13457 13515 13516 13538
+ 13431 13460 13463 13507 13513 13530
+ 13295 13334 13418 13453 13558 13571 13617
+ 13436 13463 13465 13513 13514 13533
+ 13422 13444 13470 13506 13527 13551
+ 13438 13465 13467 13514 13517 13536
+ 13430 13455 13471 13516 13518 13542
+ 13464 13500 13521 13528
+ 13439 13467 13468 13517 13519 13541
+ 13325 13350 13423 13474 13525 13607 13699
+ 13441 13468 13472 13519 13522 13545
+ 13443 13471 13472 13518 13522 13546
+ 13446 13457 13482 13515 13526 13548
+ 12887 13041 13168 13371 13680 13811 14098
+ 13452 13458 13482 13512 13526 13549
+ 13464 13473 13492 13504 13528 13531
+ 13450 13462 13469 13505 13550 13564
+ 13403 13428 13459 13525 13552 13635
+ 13454 13478 13483 13529
+ 13473 13477 13500 13508 13531 13534
+ 13469 13476 13501 13510 13543 13564
+ 13444 13456 13489 13524 13551 13580
+ 13460 13483 13486 13529 13530 13553
+ 13477 13480 13504 13511 13534 13539
+ 13384 13424 13433 13520 13583 13600 13605
+ 13476 13481 13505 13511 13543 13544
+ 13480 13481 13508 13510 13539 13544
+ 13458 13470 13499 13527 13549 13562
+ 13463 13486 13488 13530 13533 13556
+ 13465 13488 13490 13533 13536 13560
+ 13457 13485 13497 13538 13548 13570
+ 13455 13485 13491 13538 13542 13566
+ 13467 13490 13493 13536 13541 13563
+ 13471 13491 13496 13542 13546 13568
+ 13468 13493 13495 13541 13545 13565
+ 13424 13432 13509 13540 13587 13600
+ 13492 13528 13547 13554
+ 13472 13495 13496 13545 13546 13569
+ 13210 13367 13401 13604 13681 13731
+ 13453 13456 13506 13571 13580 13614
+ 13423 13428 13494 13502 13635 13699
+ 13482 13497 13499 13548 13549 13574
+ 13470 13489 13512 13551 13562 13586
+ 13492 13500 13521 13531 13554 13559
+ 13483 13503 13507 13553
+ 13486 13507 13513 13553 13556 13579
+ 13500 13504 13528 13534 13559 13567
+ 13356 13382 13461 13575 13610 13709
+ 13488 13513 13514 13556 13560 13585
+ 13504 13508 13531 13539 13567 13572
+ 8355 10635 13856 14090 14887 14914
+ 13490 13514 13517 13560 13563 13589
+ 13390 13475 13479 13582 13602 13657
+ 13485 13515 13516 13566 13570 13595
+ 13508 13511 13534 13544 13572 13576
+ 13432 13435 13520 13581 13587 13641
+ 13493 13517 13519 13563 13565 13590
+ 13491 13516 13518 13566 13568 13594
+ 13505 13510 13544 13564 13577
+ 13510 13511 13539 13543 13576 13577
+ 13495 13519 13522 13565 13569 13592
+ 13496 13518 13522 13568 13569 13593
+ 13521 13554 13573 13584
+ 13497 13515 13526 13570 13574 13597
+ 13499 13512 13526 13562 13574 13596
+ 13462 13466 13501 13564 13607 13663
+ 13489 13506 13527 13580 13586 13611
+ 13445 13459 13502 13575 13635 13706
+ 13507 13529 13530 13579
+ 13521 13528 13547 13559 13584 13591
+ 13418 13433 13558 13583 13648 13651
+ 13513 13530 13533 13579 13585 13603
+ 13370 13475 13484 13602 13674 13748
+ 13418 13487 13555 13617 13648 13683
+ 13528 13531 13554 13567 13591 13598
+ 13514 13533 13536 13585 13589 13609
+ 13420 13479 13581 13582 13676 13687
+ 13512 13527 13549 13586 13596 13619
+ 13517 13536 13541 13589 13590 13615
+ 13501 13505 13543 13550 13577 13663
+ 13519 13541 13545 13590 13592 13618
+ 13516 13538 13542 13594 13595 13622
+ 13531 13534 13559 13572 13598 13601
+ 13518 13542 13546 13593 13594 13621
+ 13522 13545 13546 13592 13593 13620
+ 13515 13538 13548 13595 13597 13623
+ 13453 13487 13524 13614 13617 13647 13653
+ 13534 13539 13567 13576 13601 13606
+ 13547 13584 13599 13613
+ 13526 13548 13549 13596 13597 13625
+ 13445 13461 13532 13552 13706 13709
+ 13539 13544 13572 13577 13606 13612
+ 13543 13544 13564 13576 13612 13663
+ 11962 12320 13075 13730 13931 14292
+ 13530 13553 13556 13603
+ 13506 13524 13551 13611 13614 13637
+ 13420 13435 13540 13561 13641 13676 13696
+ 13479 13537 13561 13657 13687
+ 13433 13509 13555 13605 13651 13666
+ 13547 13554 13573 13591 13613 13624
+ 13533 13556 13560 13603 13609 13628
+ 13527 13551 13562 13611 13619 13636
+ 13520 13540 13600 13641 13655
+ 11492 11859 13212 13730 14344 14483
+ 13536 13560 13563 13609 13615 13631
+ 13541 13563 13565 13615 13618 13632
+ 13554 13559 13584 13598 13624 13627
+ 13545 13565 13569 13618 13620 13638
+ 13546 13568 13569 13620 13621 13640
+ 13542 13566 13568 13621 13622 13642
+ 13538 13566 13570 13622 13623 13643
+ 13549 13562 13574 13619 13625 13644
+ 13548 13570 13574 13623 13625 13645
+ 13559 13567 13591 13601 13627 13630
+ 13573 13613 13626 13634
+ 13509 13520 13587 13605 13655 13660
+ 13567 13572 13598 13606 13630 13633
+ 13475 13537 13557 13657 13732 13748
+ 13556 13579 13585 13628
+ 13367 13484 13523 13674 13731 13776
+ 13509 13583 13600 13660 13666
+ 13572 13576 13601 13612 13633 13639
+ 13466 13474 13494 13550 13663 13699 13791
+ 410 5091 7666 14718 15121 15144
+ 13560 13585 13589 13628 13631 13650
+ 13352 13358 13382 13387 13532 13709 13811 13885
+ 13551 13580 13586 13636 13637 13659
+ 13576 13577 13606 13639 13663 13677
+ 13573 13584 13599 13624 13634 13646
+ 13524 13571 13580 13637 13647 13671
+ 13563 13589 13590 13631 13632 13656
+ 12643 13075 13136 13680 13931 14161
+ 13487 13558 13571 13653 13683 13700
+ 13565 13590 13592 13632 13638 13658
+ 13562 13586 13596 13636 13644 13667
+ 13569 13592 13593 13638 13640 13661
+ 13568 13593 13594 13640 13642 13665
+ 13566 13594 13595 13642 13643 13668
+ 13570 13595 13597 13643 13645 13669
+ 13584 13591 13613 13627 13646 13652
+ 13574 13596 13597 13644 13645 13670
+ 13599 13634 13649 13664
+ 13591 13598 13624 13630 13652 13662
+ 13585 13603 13609 13650
+ 13213 13401 13437 13681 13854 13876
+ 13598 13601 13627 13633 13662 13672
+ 13589 13609 13615 13650 13656 13679
+ 13590 13615 13618 13656 13658 13682
+ 13601 13606 13630 13639 13672 13673
+ 13599 13613 13626 13646 13664 13675
+ 13502 13525 13552 13699 13706 13832
+ 13586 13611 13619 13659 13667 13690
+ 13580 13611 13614 13659 13671 13689
+ 13592 13618 13620 13658 13661 13685
+ 13606 13612 13633 13673 13677
+ 13593 13620 13621 13661 13665 13688
+ 13540 13581 13587 13655 13696 13744
+ 13594 13621 13622 13665 13668 13691
+ 13595 13622 13623 13668 13669 13693
+ 13596 13619 13625 13667 13670 13692
+ 13597 13623 13625 13669 13670 13694
+ 13613 13624 13634 13652 13675 13686
+ 13571 13614 13653 13671 13697 13708
+ 13555 13558 13651 13683 13723 13740
+ 13626 13664 13678 13695
+ 13609 13628 13631 13679
+ 13555 13583 13648 13666 13723 13726
+ 13624 13627 13646 13662 13686 13698
+ 13571 13617 13647 13700 13708 13725
+ 11733 12178 13315 14021 14023 14374
+ 13587 13600 13641 13660 13722 13744
+ 13615 13631 13632 13679 13682 13702
+ 13537 13582 13602 13687 13732 13759
+ 13618 13632 13638 13682 13685 13707
+ 13611 13636 13637 13689 13690 13712
+ 13600 13605 13655 13666 13720 13722
+ 13620 13638 13640 13685 13688 13710
+ 13627 13630 13652 13672 13698 13701
+ 13550 13564 13577 13607 13612 13677 13766 13791
+ 13626 13634 13649 13675 13695 13703
+ 13621 13640 13642 13688 13691 13711
+ 13583 13605 13651 13660 13720 13726
+ 13619 13636 13644 13690 13692 13714
+ 13622 13642 13643 13691 13693 13713
+ 13623 13643 13645 13693 13694 13715
+ 13625 13644 13645 13692 13694 13716
+ 13614 13637 13647 13689 13697 13718
+ 13630 13633 13662 13673 13701 13705
+ 13633 13639 13672 13677 13705 13736
+ 13484 13557 13604 13748 13776 13823
+ 13634 13646 13664 13686 13703 13717
+ 13561 13581 13687 13696 13773 13777
+ 13612 13639 13663 13673 13736 13766
+ 13649 13695 13704 13719
+ 13631 13650 13656 13702
+ 13136 13168 13498 13616 14098 14161
+ 13401 13523 13629 13731 13876 13897
+ 13632 13656 13658 13702 13707 13724
+ 13558 13617 13648 13700 13740 13770
+ 12876 13315 13437 13854 14021 14159
+ 13638 13658 13661 13707 13710 13728
+ 13646 13652 13675 13698 13717 13721
+ 13561 13582 13657 13676 13759 13777
+ 13640 13661 13665 13710 13711 13733
+ 13637 13659 13671 13712 13718 13737
+ 13636 13659 13667 13712 13714 13738
+ 13642 13665 13668 13711 13713 13735
+ 13644 13667 13670 13714 13716 13741
+ 13643 13668 13669 13713 13715 13739
+ 13645 13669 13670 13715 13716 13742
+ 13649 13664 13678 13703 13719 13729
+ 13581 13641 13676 13744 13773 13793
+ 13647 13671 13708 13718 13743
+ 13652 13662 13686 13701 13721 13734
+ 13494 13525 13607 13635 13791 13832 13945
+ 13617 13653 13683 13725 13767 13770
+ 13662 13672 13698 13705 13734 13745
+ 13656 13679 13682 13724
+ 13664 13675 13695 13717 13729 13746
+ 13678 13719 13727 13747
+ 13672 13673 13701 13736 13745
+ 13552 13575 13635 13709 13832 13902
+ 13658 13682 13685 13724 13728 13749
+ 13647 13653 13697 13725 13743 13758
+ 13532 13575 13610 13706 13885 13902
+ 13661 13685 13688 13728 13733 13753
+ 13665 13688 13691 13733 13735 13755
+ 13659 13689 13690 13737 13738 13760
+ 13668 13691 13693 13735 13739 13757
+ 13667 13690 13692 13738 13741 13762
+ 13669 13693 13694 13739 13742 13761
+ 13670 13692 13694 13741 13742 13763
+ 13675 13686 13703 13721 13746 13751
+ 13671 13689 13697 13737 13743 13764
+ 13678 13695 13704 13729 13747 13756
+ 13660 13666 13722 13726 13779 13788
+ 13686 13698 13717 13734 13751 13765
+ 13655 13660 13720 13744 13774 13788
+ 13648 13651 13726 13740 13794 13798
+ 13682 13702 13707 13749
+ 13653 13700 13708 13758 13767 13778
+ 13651 13666 13720 13723 13779 13794
+ 13704 13747 13754 13769
+ 13685 13707 13710 13749 13753 13772
+ 13695 13703 13719 13746 13756 13768
+ 11859 12320 13578 13588 14292 14483
+ 13523 13604 13681 13776 13897 13917
+ 13602 13657 13748 13759 13829 13850
+ 13688 13710 13711 13753 13755 13775
+ 13698 13701 13721 13745 13765 13771
+ 13691 13711 13713 13755 13757 13780
+ 13673 13677 13705 13745 13766 13862
+ 13689 13712 13718 13760 13764 13784
+ 13690 13712 13714 13760 13762 13785
+ 13693 13713 13715 13757 13761 13782
+ 13648 13683 13723 13770 13798 13808
+ 13692 13714 13716 13762 13763 13787
+ 13694 13715 13716 13761 13763 13786
+ 13697 13708 13718 13758 13764 13789
+ 13641 13655 13696 13722 13774 13793 13812
+ 13701 13705 13734 13736 13771 13862
+ 13703 13717 13729 13751 13768 13783
+ 13704 13719 13727 13756 13769 13790
+ 13557 13602 13674 13732 13823 13850 13894
+ 13707 13724 13728 13772
+ 7436 7933 8232 14308 14955 15001
+ 13717 13721 13746 13765 13783 13792
+ 10539 11903 14084 14768 15544 15601
+ 13710 13728 13733 13772 13775 13797
+ 13727 13769 13781 13795
+ 13711 13733 13735 13775 13780 13799
+ 13719 13729 13747 13768 13790 13796
+ 13713 13735 13739 13780 13782 13801
+ 13708 13725 13743 13778 13789 13807
+ 13657 13687 13732 13777 13829 13840
+ 13712 13737 13738 13784 13785 13803
+ 13715 13739 13742 13782 13786 13802
+ 13714 13738 13741 13785 13787 13804
+ 13716 13741 13742 13786 13787 15572
+ 13718 13737 13743 13784 13789 13805
+ 13721 13734 13751 13771 13792 13800
+ 13663 13677 13736 13791 13862 14018
+ 13700 13725 13770 13778 13818 13826
+ 13729 13746 13756 13783 13796 13809
+ 13727 13747 13754 13790 13795 13810
+ 13683 13700 13740 13767 13808 13826 13836
+ 13734 13745 13765 13800 13862
+ 13728 13749 13753 13797
+ 13676 13696 13777 13793 13857 13858
+ 13722 13744 13788 13812 13837
+ 13733 13753 13755 13797 13799 13816
+ 13604 13674 13731 13823 13917 13928
+ 13676 13687 13759 13773 13840 13858
+ 13725 13758 13767 13807 13813 13818
+ 13720 13726 13788 13794 13830 13833
+ 13735 13755 13757 13799 13801 13817
+ 13754 13795 13806 13815
+ 13739 13757 13761 13801 13802 13820
+ 13746 13751 13768 13792 13809 13814
+ 13737 13760 13764 13803 13805 13822
+ 13738 13760 13762 13803 13804 13824
+ 13742 13761 13763 13802 15572 15573
+ 13741 13762 13763 13804 13825 15572
+ 13720 13722 13774 13779 13833 13837
+ 13743 13758 13764 13805 13807 13821
+ 13747 13756 13769 13796 13810 13819
+ 13607 13663 13699 13766 13945 14018
+ 13751 13765 13783 13800 13814 13828
+ 13696 13744 13773 13812 13857 13889
+ 13723 13726 13779 13798 13830 13835 13859
+ 13754 13769 13781 13810 13815 13831
+ 13756 13768 13790 13809 13819 13834
+ 13753 13772 13775 13816
+ 13723 13740 13794 13808 13835 13849
+ 13755 13775 13780 13816 13817 13839
+ 13765 13771 13792 13828 13862
+ 13757 13780 13782 13817 13820 13842
+ 13761 13782 13786 13820 13844 15573
+ 13760 13784 13785 13822 13824 13845
+ 13762 13785 13787 13824 13825 13847
+ 13764 13784 13789 13821 13822 13843
+ 13781 13815 13827 13841
+ 13758 13778 13789 13813 13821 13838
+ 13740 13770 13798 13836 13849 13866
+ 13768 13783 13796 13814 13834 13848
+ 13769 13790 13795 13819 13831 13851
+ 13371 13387 13498 13610 13885 14098 14198
+ 13744 13774 13793 13837 13882 13889
+ 13778 13807 13818 13838 13853
+ 13783 13792 13809 13828 13848 13855
+ 13781 13795 13806 13831 13841 13860
+ 13775 13797 13799 13839
+ 13780 13799 13801 13839 13842 13865
+ 13767 13778 13813 13826 13853 13861
+ 13790 13796 13810 13834 13851 13864
+ 13782 13801 13802 13842 13844 13867
+ 13789 13805 13807 13838 13843 13863
+ 13784 13803 13805 13843 13845 13868
+ 13674 13748 13776 13894 13928 13954
+ 13785 13803 13804 13845 13847 13870
+ 13787 13804 13846 13847 13871 15572
+ 13767 13770 13818 13836 13861 13877
+ 13806 13841 13852 13872
+ 13792 13800 13814 13855 13862 13881
+ 13732 13759 13840 13850 13916 13939
+ 13779 13794 13833 13859 13873 13883
+ 13795 13810 13815 13851 13860 13875
+ 13635 13699 13706 13902 13945 14079
+ 13779 13788 13830 13837 13883 13899
+ 13796 13809 13819 13848 13864 13878
+ 13794 13798 13849 13859 13880
+ 13770 13808 13826 13866 13877 13904
+ 13774 13788 13812 13833 13882 13899
+ 13807 13813 13821 13853 13863 13879
+ 13799 13816 13817 13865
+ 13759 13777 13829 13858 13916 13922
+ 13806 13815 13827 13860 13872 13884
+ 13801 13817 13820 13865 13867 13888
+ 13805 13821 13822 13863 13868 13886
+ 13802 13820 13867 13869 13890 15573
+ 13803 13822 13824 13868 13870 13891
+ 13825 13869 13871 13892 15572 15573
+ 13804 13824 13825 13870 13871 13893
+ 13809 13814 13834 13855 13878 13887
+ 13798 13808 13835 13866 13880 13903
+ 13732 13748 13829 13894 13939 13960
+ 13810 13819 13831 13864 13875 13895
+ 13827 13872 13874 13898
+ 13813 13818 13838 13861 13879 13896
+ 13437 13629 13684 13876 14103 14159
+ 13814 13828 13848 13881 13887 13900
+ 6996 8355 13535 14069 14909 14914
+ 13773 13793 13858 13889 13933 13943
+ 13773 13777 13840 13857 13922 13933
+ 13794 13830 13835 13873 13880 13905
+ 13815 13831 13841 13875 13884 13906
+ 13818 13826 13853 13877 13896 13910
+ 13736 13745 13766 13771 13800 13828 13881 13993 14018
+ 13821 13838 13843 13879 13886 13907
+ 13819 13834 13851 13878 13895 13908
+ 13817 13839 13842 13888
+ 13808 13836 13849 13903 13904 13927
+ 13820 13842 13844 13888 13890 13911
+ 13822 13843 13845 13886 13891 13909
+ 13844 13846 13890 13892 13913 15573
+ 13824 13845 13847 13891 13893 13914
+ 13825 13846 13847 13892 13893 13915
+ 13827 13841 13852 13884 13898 13912
+ 13830 13859 13883 13905 13921
+ 13852 13898 13901 13918
+ 13831 13851 13860 13895 13906 13919
+ 13629 13681 13854 13897 14024 14103
+ 13826 13836 13861 13904 13910 13932
+ 13834 13848 13864 13887 13908 13920
+ 13838 13853 13863 13896 13907 13923
+ 13835 13849 13859 13903 13905 13925
+ 13828 13855 13862 13900 13993
+ 13812 13837 13889 13899 13951 13952
+ 13830 13833 13873 13899 13921 13940
+ 13841 13860 13872 13906 13912 13929
+ 13610 13709 13811 13902 14162 14198
+ 13843 13863 13868 13907 13909 13930
+ 13848 13855 13878 13900 13920 13926
+ 13842 13865 13867 13911
+ 13793 13812 13857 13882 13943 13952 13970
+ 13844 13867 13869 13911 13913 13934
+ 13845 13868 13870 13909 13914 13935
+ 13846 13869 13871 13913 13915 13936
+ 13847 13870 13871 13914 13915 13937
+ 13748 13823 13850 13954 13960 13999
+ 13851 13864 13875 13908 13919 13938
+ 13853 13861 13879 13910 13923 13942
+ 13681 13731 13876 13917 14024 14036
+ 13852 13872 13874 13912 13918 13941
+ 13833 13837 13882 13883 13940 13947 13951
+ 13855 13881 13887 13926 13993
+ 13874 13918 13924 13944
+ 13706 13709 13832 13885 14079 14162
+ 13849 13866 13880 13925 13927 13949
+ 13836 13866 13877 13927 13932 13955
+ 13859 13873 13880 13921 13925 13946
+ 13860 13875 13884 13919 13929 15575
+ 13863 13879 13886 13923 13930 13948
+ 13864 13878 13895 13920 13938 13950
+ 13868 13886 13891 13930 13935 13953
+ 13861 13877 13896 13932 13942 13962
+ 13867 13888 13890 13934
+ 13872 13884 13898 13929 13941 13956
+ 13869 13890 13892 13934 13936 13957
+ 13870 13891 13893 13935 13937 13958
+ 13871 13892 13893 13936 13937 13959
+ 13829 13840 13922 13939 13981 14013
+ 13731 13776 13897 13928 14036 14058
+ 13874 13898 13901 13941 13944 13963
+ 13875 13895 13906 13938 13964 15575
+ 13878 13887 13908 13926 13950 13961
+ 13873 13883 13905 13940 13946 13966
+ 13840 13858 13916 13933 13981 13983
+ 13879 13896 13907 13942 13948 13968
+ 13901 13944 13967 15574
+ 13880 13903 13905 13946 13949 13971
+ 13887 13900 13920 13961 13993
+ 13866 13903 13904 13949 13955 13974
+ 13776 13823 13917 13954 14043 14058
+ 13884 13906 13912 13956 13972 15575
+ 13886 13907 13909 13948 13953 13973
+ 13075 13578 13616 14161 14292 14569
+ 13877 13904 13910 13955 13962 13982
+ 13857 13858 13922 13943 13983 13992
+ 13890 13911 13913 13957
+ 13891 13909 13914 13953 13958 13975
+ 13892 13913 13915 13957 13959 13976
+ 13893 13914 13915 13958 13959 13977
+ 13895 13908 13919 13950 13964 13978
+ 13829 13850 13916 13960 14013 14015
+ 13883 13899 13921 13947 13966 13979
+ 13898 13912 13918 13956 13963 13980
+ 13896 13910 13923 13962 13968 13985
+ 13857 13889 13933 13970 13992 14003
+ 13901 13918 13924 13963 13967 13984
+ 13699 13791 13832 14018 14079 14220
+ 13905 13921 13925 13966 13971 13988
+ 13899 13940 13951 13979 13990
+ 13907 13923 13930 13968 13973 13991
+ 13903 13925 13927 13971 13974 13994
+ 13908 13920 13938 13961 13978 14132
+ 13882 13899 13947 13952 13990 14000
+ 13882 13889 13951 13970 14000 14011
+ 13909 13930 13935 13973 13975 13996
+ 13823 13894 13928 13999 14028 14043
+ 13904 13927 13932 13974 13982 13998
+ 13912 13929 13941 13972 13980 13995
+ 13913 13934 13936 13976
+ 13914 13935 13937 13975 13977 13997
+ 13915 13936 13937 13976 13977 15576
+ 13850 13894 13939 13999 14015 14051
+ 13920 13926 13950 13993 14132
+ 13910 13932 13942 13982 13985 14005
+ 13918 13941 13944 13980 13984 14001
+ 13919 13938 13978 13986 14002 15575
+ 10752 12039 12141 14823 14913 14968
+ 13921 13940 13946 13979 13988 14004
+ 13924 13944 13984 13987 14006 15574
+ 13923 13942 13948 13985 13991 14009
+ 13987 13989 14008 15574
+ 13889 13943 13952 14003 14011 14032
+ 13925 13946 13949 13988 13994 14012
+ 13929 13956 13986 13995 14010 15575
+ 13930 13948 13953 13991 13996 14014
+ 13927 13949 13955 13994 13998 14020
+ 13935 13953 13958 13996 13997 14016
+ 13936 13957 13959 15576
+ 13937 13958 13959 13997 14017 15576
+ 13938 13950 13964 14002 14132
+ 13940 13947 13966 13990 14004 14022
+ 13941 13956 13963 13995 14001 14019
+ 13916 13922 13983 14013 14054 15577
+ 13932 13955 13962 13998 14005 14026
+ 13922 13933 13981 13992 14031 15577
+ 13944 13963 13967 14001 14006 14025
+ 13942 13962 13968 14005 14009 14034
+ 13964 13972 14002 14010 14027 15575
+ 13967 13969 14006 14008 14030 15574
+ 13946 13966 13971 14004 14012 14035
+ 13969 14007 14008 14033
+ 13947 13951 13979 14000 14022 15578
+ 13948 13968 13973 14009 14014 14037
+ 13933 13943 13983 14003 14031 14042
+ 13862 13881 13900 13926 13961 14018 14132 14288
+ 13949 13971 13974 14012 14020 14041
+ 13956 13972 13980 14010 14019 14038
+ 13953 13973 13975 14014 14016 14039
+ 13958 13975 13977 14016 14017 14040
+ 13955 13974 13982 14020 14026 14045
+ 13894 13954 13960 14028 14051 14076
+ 13951 13952 13990 14011 14047 15578
+ 13963 13980 13984 14019 14025 14044
+ 13964 13978 13986 14027 14132
+ 13943 13970 13992 14032 14042 14057
+ 13966 13979 13988 14022 14035 14049
+ 13962 13982 13985 14026 14034 14050
+ 13967 13984 13987 14025 14030 14048
+ 13989 14029 14033 14052
+ 13969 13987 13989 14030 14033 14053
+ 13968 13985 13991 14034 14037 14056
+ 13972 13986 13995 14027 14038 14055
+ 13952 13970 14000 14032 14047 14064
+ 13971 13988 13994 14035 14041 14060
+ 13916 13939 13981 14015 14054 14072 14092
+ 13973 13991 13996 14037 14039 14059
+ 13939 13960 14013 14051 14072 14106
+ 13975 13996 13997 14039 14040 14061
+ 13977 13997 14040 15576
+ 13766 13791 13862 13945 13993 14220 14288
+ 13980 13995 14001 14038 14044 14062
+ 13974 13994 13998 14041 14045 14065
+ 13315 13654 13684 14159 14374 14433
+ 13979 13990 14004 14049 14063 15578
+ 12178 12969 13654 14169 14374 14725 14744
+ 13876 13897 14036 14103 14150 14202
+ 13984 14001 14006 14044 14048 14068
+ 13982 13998 14005 14045 14050 14071
+ 13986 14002 14010 14055 14132
+ 13954 13999 14043 14076 14095
+ 14007 14046 14052 14070
+ 13987 14006 14008 14048 14053 14073
+ 13983 13992 14042 14067 14075 15577
+ 13970 14003 14011 14057 14064 14091
+ 13989 14007 14008 14052 14053 14074
+ 13985 14005 14009 14050 14056 14077
+ 13988 14004 14012 14049 14060 14078
+ 13897 13917 14024 14058 14150 14158
+ 13991 14009 14014 14056 14059 14081
+ 13995 14010 14019 14055 14062 14080
+ 13996 14014 14016 14059 14061 14083
+ 13997 14016 14017 14061
+ 13994 14012 14020 14060 14065 14087
+ 13992 14003 14031 14057 14067 14088
+ 13928 13954 14028 14058 14095 14140
+ 14001 14019 14025 14062 14068 14089
+ 13998 14020 14026 14065 14071 14094
+ 14029 14066 14070 14093
+ 14000 14011 14064 14082 14102 15578
+ 14006 14025 14030 14068 14073 14096
+ 14004 14022 14035 14063 14078 14097
+ 14005 14026 14034 14071 14077 14101
+ 13960 13999 14015 14076 14106 14128
+ 14007 14029 14033 14070 14074 14099
+ 14008 14030 14033 14073 14074 14100
+ 13981 14013 14085 14092 14108 15577
+ 14010 14027 14038 14080 14132 14143
+ 14009 14034 14037 14077 14081 14104
+ 14003 14032 14042 14088 14091 14116
+ 13917 13928 14036 14043 14140 14158 14189
+ 14014 14037 14039 14081 14083 14107
+ 14012 14035 14041 14078 14087 14110
+ 14016 14039 14040 14083
+ 14019 14038 14044 14080 14089 14109
+ 14022 14049 14082 14097 14114 15578
+ 14011 14032 14047 14091 14102 14123
+ 14020 14041 14045 14087 14094 14115
+ 14046 14086 14093 14112
+ 14031 14042 14075 14088 14111
+ 14025 14044 14048 14089 14096 14113
+ 6996 8429 13856 14909 14963 14979
+ 14029 14046 14052 14093 14099 14117
+ 14026 14045 14050 14094 14101 14120
+ 14013 14015 14092 14106 14119 14137
+ 14030 14048 14053 14096 14100 14118
+ 14033 14052 14053 14099 14100 14122
+ 14031 14067 14085 14111 14124 15577
+ 13999 14028 14051 14095 14128 14145
+ 14034 14050 14056 14101 14104 14125
+ 14035 14049 14060 14097 14110 14126
+ 13832 13902 13945 14162 14220 14360
+ 14038 14055 14062 14109 14143
+ 14037 14056 14059 14104 14107 14127
+ 14047 14063 14102 14114 14131 15578
+ 14039 14059 14061 14107
+ 11903 13212 13752 14344 14768 14883
+ 14054 14075 14108 14124 14135 15577
+ 14066 14105 14112 14129
+ 14041 14060 14065 14110 14115 14134
+ 14042 14057 14067 14111 14116 14136
+ 14044 14062 14068 14109 14113 14130
+ 10635 11933 13535 14593 14887 14951
+ 14032 14057 14064 14116 14123 14146
+ 14013 14054 14072 14108 14119 14133
+ 14046 14066 14070 14112 14117 14138
+ 14045 14065 14071 14115 14120 14142
+ 14028 14043 14076 14140 14145 14179
+ 14048 14068 14073 14113 14118 14141
+ 14049 14063 14078 14114 14126 14147
+ 13498 13680 13811 14161 14198 14599 14674
+ 14052 14070 14074 14117 14122 14144
+ 14053 14073 14074 14118 14122 15580
+ 14050 14071 14077 14120 14125 14148
+ 14047 14064 14082 14123 14131 14154
+ 13854 13876 14024 14159 14202 14376
+ 14056 14077 14081 14125 14127 14151
+ 14086 14121 14129 14149
+ 14015 14051 14072 14128 14137 14176
+ 14059 14081 14083 14127
+ 14054 14085 14092 14133 14135 14153
+ 14062 14080 14089 14130 14143 14221
+ 14060 14078 14087 14126 14134 14156
+ 14067 14075 14088 14124 14136 14152
+ 14066 14086 14093 14129 14138 14157
+ 14068 14089 14096 14130 14141 14160
+ 14063 14082 14097 14131 14147 14165
+ 14065 14087 14094 14134 14142 14163
+ 14057 14088 14091 14136 14146 14164
+ 14070 14093 14099 14138 14144 15581
+ 14073 14096 14100 14141 14166 15580
+ 14072 14092 14133 14137 14167
+ 14071 14094 14101 14142 14148 14170
+ 14105 14139 14149 15582
+ 14074 14099 14100 14144 14171 15580
+ 14064 14091 14102 14146 14154 14174
+ 14075 14085 14111 14135 14152 14168
+ 14077 14101 14104 14148 14151 14173
+ 14078 14097 14110 14147 14156 14175
+ 14081 14104 14107 14151
+ 14051 14076 14106 14145 14176 14193
+ 14086 14105 14112 14149 14157 15584
+ 14089 14109 14113 14160 14221
+ 14082 14102 14114 14154 14165 14183
+ 13950 13961 13978 13993 14002 14027 14055 14143 14288 14415
+ 14092 14108 14119 14153 14167 14172
+ 14087 14110 14115 14156 14163 14180
+ 14085 14108 14124 14153 14168 14182
+ 14088 14111 14116 14152 14164 14177
+ 14072 14106 14119 14167 14176 14187
+ 14093 14112 14117 14157 14181 15581
+ 14121 14155 14178 15582
+ 14043 14058 14095 14179 14189 14216
+ 14096 14113 14118 14160 14166 14184
+ 14094 14115 14120 14163 14170 14186
+ 14055 14080 14109 14132 14221 14415
+ 14099 14117 14122 14171 15581 15585
+ 14076 14095 14128 14179 14193 14223
+ 14091 14116 14123 14164 14174 14192
+ 14097 14114 14126 14165 14175 14194
+ 14101 14120 14125 14170 14173 14191
+ 14105 14121 14129 14190 15582 15584
+ 14024 14036 14158 14202 14284 14287
+ 14104 14125 14127 14173
+ 14111 14124 14136 14168 14177 14195
+ 14108 14133 14135 14172 14182 14196
+ 14102 14123 14131 14174 14183 14204
+ 14139 14178 14197 15583
+ 14110 14126 14134 14175 14180 14203
+ 14112 14129 14138 14181 14200 15584
+ 14036 14058 14150 14189 14271 14287
+ 13684 13854 14021 14103 14376 14433 14530
+ 14113 14130 14141 14184 14221
+ 13616 13680 13931 14098 14569 14674
+ 13885 13902 14079 14198 14360 14498
+ 14115 14134 14142 14180 14186 14206
+ 14116 14136 14146 14177 14192 14208
+ 14114 14131 14147 14183 14194 14211
+ 14118 14141 14184 14188 15580 15586
+ 14119 14133 14137 14172 14187 14199
+ 14124 14135 14152 14182 14195 14210
+ 12969 13265 14023 14468 14725 14902
+ 14120 14142 14148 14186 14191 14213
+ 14122 14144 14188 14214 15580 15585
+ 14133 14153 14167 14196 14199
+ 14125 14148 14151 14191
+ 14123 14146 14154 14192 14204 14219
+ 14126 14147 14156 14194 14203 14218
+ 14106 14128 14137 14187 14193 14234 14244
+ 14136 14152 14164 14195 14208 14224
+ 14139 14155 14197 14205 14222 15582
+ 14095 14140 14145 14216 14223 14248
+ 14134 14156 14163 14203 14206 14228
+ 14138 14157 14200 14207 14225 15581
+ 14135 14153 14168 14196 14210 14226
+ 14131 14154 14165 14204 14211 14230
+ 14141 14160 14166 14221 15586
+ 14201 14212 14227 15583
+ 14142 14163 14170 14206 14213 15587
+ 14137 14167 14176 14199 14231 14234
+ 14166 14171 14214 14235 15580 15586
+ 14058 14140 14158 14216 14259 14271
+ 14149 14205 14217 14233 15582 15584
+ 14148 14170 14173 14213
+ 14146 14164 14174 14208 14219 14237
+ 14128 14145 14176 14223 14244 14264
+ 14147 14165 14175 14211 14218 14239
+ 14152 14168 14177 14210 14224 14241
+ 14153 14172 14182 14199 14226 14232
+ 14155 14178 14212 14222 14238 15583
+ 13811 13885 14098 14162 14498 14599
+ 14167 14172 14187 14196 14231 14232
+ 14157 14181 14217 14225 14242 15584
+ 14185 14215 14227 14240
+ 14024 14103 14150 14284 14376
+ 14156 14175 14180 14218 14228 14245
+ 14154 14174 14183 14219 14230 14247
+ 14178 14190 14222 14233 14246 15582
+ 14163 14180 14186 14228 14249 15587
+ 14181 14225 14236 14251 15581 15585
+ 14164 14177 14192 14224 14237 14252
+ 6740 7295 13260 14884 15057 15086
+ 14168 14182 14195 14226 14241 14254
+ 14165 14183 14194 14230 14239 14257
+ 14185 14197 14227 14238 14250 15583
+ 14170 14186 14191 15587
+ 14171 14188 14235 14236 14258 15585
+ 14201 14229 14240 14253
+ 14140 14179 14189 14248 14259 14270
+ 14190 14200 14233 14242 14256 15584
+ 14175 14194 14203 14239 14245 14261
+ 14174 14192 14204 14237 14247 14262
+ 13945 14018 14079 14288 14360 14475
+ 14109 14130 14143 14160 14184 14415 15586 15588
+ 14178 14197 14205 14238 14246 15589
+ 14145 14179 14193 14248 14264 14285
+ 14177 14195 14208 14241 14252 14267
+ 14181 14200 14207 14242 14251 14265
+ 14182 14196 14210 14232 14254 14260
+ 14185 14201 14212 14240 14250 14263
+ 14180 14203 14206 14245 14249 14272
+ 14215 14243 14253 14266
+ 14183 14204 14211 14247 14257 14274
+ 14187 14199 14232 14234 14269 14275
+ 14196 14199 14226 14231 14260 14269
+ 14190 14205 14217 14246 14256 14273
+ 14176 14187 14231 14244 14275 14289
+ 14188 14214 14258 14277 15586 15588
+ 14207 14214 14251 14258 15585 15590
+ 14192 14208 14219 14252 14262 14280
+ 14197 14212 14222 14250 14276 15589
+ 14194 14211 14218 14257 14261 14282
+ 14201 14215 14227 14253 14263 14278
+ 14195 14210 14224 14254 14267 14283
+ 14200 14217 14225 14256 14265 14279
+ 14229 14255 14266 14281
+ 14176 14193 14234 14264 14289 14305
+ 14203 14218 14228 14261 14272 14290
+ 14205 14222 14233 14273 14286 15589
+ 14204 14219 14230 14262 14274 14293
+ 14179 14216 14223 14270 14285 14304
+ 14206 14228 14272 15587
+ 14212 14227 14238 14263 14276 14291
+ 14207 14225 14236 14265 14298 15590
+ 14208 14224 14237 14267 14280 14300
+ 14215 14229 14240 14266 14278 14294
+ 14210 14226 14241 14260 14283 14295
+ 14243 14268 14281 14297
+ 14217 14233 14242 14273 14279 14296
+ 14211 14230 14239 14274 14282 14301
+ 14214 14235 14236 14277 14306 15590
+ 14189 14216 14270 14271 14326 14347
+ 14226 14232 14254 14269 14295 14303
+ 14218 14239 14245 14282 14290 14310
+ 14219 14237 14247 14280 14293 14311
+ 14227 14240 14250 14278 14291 15592
+ 14193 14223 14244 14285 14305 14321
+ 14225 14242 14251 14279 14298 14309
+ 14229 14243 14253 14281 14294 14307
+ 14224 14241 14252 14283 14300 14315
+ 14255 14297 14312 15591
+ 14231 14232 14260 14275 14303 14316
+ 14216 14248 14259 14304 14326
+ 14158 14189 14259 14287 14347 14380
+ 14228 14245 14249 14290
+ 14233 14246 14256 14286 14296 14314
+ 14230 14247 14257 14293 14301 14319
+ 14231 14234 14269 14289 14316 14327
+ 14238 14250 14291 14302 14317 15589
+ 14235 14258 14306 14407 14415 15588
+ 14240 14253 14263 14294 14318 15592
+ 14242 14256 14265 14296 14309 15593
+ 14237 14252 14262 14300 14311 14325
+ 14243 14255 14266 14297 14307 14320
+ 14239 14257 14261 14301 14310 14328
+ 14241 14254 14267 14295 14315 14324
+ 14150 14202 14287 14376 14388
+ 14223 14248 14264 14304 14321 14338
+ 14246 14273 14302 14314 15589 15594
+ 14150 14158 14271 14284 14380 14388 14443
+ 13993 14018 14132 14220 14415 14475 14694
+ 14234 14244 14275 14305 14327 14341
+ 14245 14261 14272 14310
+ 14250 14263 14276 14317 14329 15592
+ 13578 13730 13931 14483 14569 14858
+ 14247 14262 14274 14311 14319 14333
+ 14253 14266 14278 14307 14318 14331
+ 14254 14260 14283 14303 14324 14335
+ 14256 14273 14279 14314 14332 15593
+ 14255 14268 14281 14312 14320 14334
+ 14251 14265 14309 14330 14342 15590
+ 14313 14322 14336 15591
+ 14252 14267 14280 14315 14325 14340
+ 14257 14274 14282 14319 14328 14345
+ 14276 14286 14317 14339 15589 15594
+ 14260 14269 14295 14316 14335 14349
+ 14248 14270 14285 14326 14338 14361
+ 14244 14264 14289 14321 14341 14359
+ 14258 14277 14330 14407 15590
+ 14266 14281 14294 14320 14331 14346
+ 7933 8666 12141 13750 14913 15001 15008
+ 14265 14279 14298 14342 14348 15593
+ 14261 14282 14290 14328
+ 14262 14280 14293 14325 14333 14354
+ 14268 14297 14322 14334 14351 15591
+ 14299 14323 14336 14353
+ 14273 14286 14296 14332 14350 15594
+ 14267 14283 14300 14324 14340 14357
+ 14269 14275 14303 14327 14349 14362
+ 14276 14291 14302 14329 14339 14355
+ 14278 14294 14331 14343 14358 15592
+ 14274 14293 14301 14333 14345 14364
+ 14281 14297 14307 14334 14346 14363
+ 14264 14285 14305 14338 14359 14375
+ 14299 14312 14336 14351 14365 15591
+ 14313 14337 14353 14368
+ 14283 14295 14315 14335 14357 14370
+ 14280 14300 14311 14340 14354 14372
+ 14259 14270 14304 14347 14361 14390
+ 14275 14289 14316 14341 14362 14377
+ 14282 14301 14310 14345
+ 14291 14317 14343 14355 14369 15592
+ 14298 14306 14342 14407 15590 15596
+ 14294 14307 14318 14346 14358 14373
+ 14296 14314 14350 14356 14371 15593
+ 14293 14311 14319 14354 14364 14384
+ 14297 14312 14320 14351 14363 14378
+ 14295 14303 14324 14349 14370 14385
+ 14299 14313 14322 14353 14365 14381
+ 14323 14352 14368 14386
+ 14285 14304 14321 14361 14375 14398
+ 14302 14317 14355 14366 14379 15594
+ 14300 14315 14325 14357 14372 14389
+ 14289 14305 14327 14359 14377 14393
+ 14298 14309 14330 14348 14395 15596
+ 14318 14329 14358 14369 14382 15592
+ 13212 13588 14084 14483 14883 14923
+ 14301 14319 14328 14364
+ 14307 14320 14331 14363 14373 14391
+ 14259 14271 14326 14380 14390 14419
+ 14309 14342 14356 14387 14395 15593
+ 14303 14316 14335 14362 14385 14400
+ 14314 14332 14366 14371 14392 15594
+ 14312 14322 14334 14365 14378 14394
+ 14337 14367 14386 14401
+ 14313 14323 14336 14368 14381 15595
+ 14311 14325 14333 14372 14384 14402
+ 14317 14329 14339 14369 14379 14396
+ 14332 14348 14371 14387 15593
+ 14315 14324 14340 14370 14389 14403
+ 14318 14331 14343 14373 14382 14397
+ 14305 14321 14341 14375 14393 14409
+ 14079 14162 14220 14475 14498 14667
+ 14304 14326 14338 14390 14398 14418
+ 14316 14327 14349 14377 14400 14412
+ 14320 14334 14346 14378 14391 14405
+ 14319 14333 14345 14384
+ 14322 14336 14351 14381 14394 14408
+ 14339 14350 14379 14392 14404 15594
+ 14352 14383 14401 14414
+ 14323 14337 14353 14386 14413 15595
+ 14329 14343 14355 14382 14396 14406
+ 14324 14335 14357 14385 14403 14416
+ 14332 14350 14356 14387 14392 14423
+ 14325 14340 14354 14389 14402 14417
+ 14331 14346 14358 14391 14397 14410
+ 13654 14021 14023 14433 14697 14744
+ 14321 14338 14359 14398 14409 14430
+ 14103 14159 14202 14284 14388 14530 14562 14658
+ 14327 14341 14362 14393 14412 14426
+ 14334 14351 14363 14394 14405 14421
+ 14339 14355 14366 14396 14404 14422
+ 14271 14287 14347 14419 14443 14463
+ 14336 14353 14365 14408 14424 15595
+ 14343 14358 14369 14397 14406 14420
+ 14367 14399 14414 14427
+ 14333 14354 14364 14402
+ 14335 14349 14370 14400 14416 14431
+ 14337 14352 14368 14401 14413 15597
+ 14348 14356 14371 14395 14423 14462
+ 14284 14287 14376 14443 14562
+ 14340 14357 14372 14403 14417 14432
+ 14326 14347 14361 14418 14419 14439
+ 14346 14363 14373 14405 14410 14428
+ 14350 14366 14371 14404 14423 14429
+ 14341 14359 14377 14409 14426 14444
+ 14351 14365 14378 14408 14421 14436
+ 14342 14348 14387 14462 15596
+ 14355 14369 14379 14406 14422 14435
+ 14358 14373 14382 14410 14420 14434
+ 14338 14361 14375 14418 14430 14450
+ 14383 14411 14427 14441
+ 14349 14362 14385 14412 14431 14445
+ 14352 14367 14386 14414 14442 15597
+ 14354 14372 14384 14417
+ 14357 14370 14389 14416 14432 14448
+ 14366 14379 14392 14422 14429 14440
+ 14363 14378 14391 14421 14428 14446
+ 14369 14382 14396 14420 14435 14447
+ 14277 14306 14330 14415 14536 14634 15596
+ 14365 14381 14394 14424 14436 14451
+ 14359 14375 14393 14430 14444 14460
+ 14373 14391 14397 14428 14434 14449
+ 14399 14425 14441 14455
+ 14362 14377 14400 14426 14445 14457
+ 14368 14386 14437 14453 15595 15597
+ 14367 14383 14401 14427 14442 14456
+ 14132 14143 14221 14277 14288 14407 14634 14694 15588
+ 14370 14385 14403 14431 14448 14459
+ 14372 14389 14402 14432
+ 14361 14390 14398 14439 14450 14470
+ 14347 14380 14390 14439 14463 14473
+ 14382 14397 14406 14434 14447 14454
+ 14378 14394 14405 14436 14446 14461
+ 14379 14396 14404 14435 14440 14458
+ 14371 14387 14392 14429 14462 14477
+ 14381 14408 14437 14451 14465 15595
+ 14411 14438 14455 14472
+ 14377 14393 14412 14444 14457 14478
+ 14383 14399 14414 14441 14456 14474
+ 14391 14405 14410 14446 14449 14464
+ 14392 14404 14423 14440 14469 14477
+ 14375 14398 14409 14450 14460 14482
+ 14385 14400 14416 14445 14459 14479
+ 14389 14403 14417 14448
+ 14021 14159 14374 14530 14697 14723
+ 14397 14410 14420 14449 14454 14466
+ 14396 14406 14422 14447 14458 14476
+ 14394 14408 14421 14451 14461 14481
+ 14413 14424 14453 14465 15595 15598
+ 14425 14452 14472 14488
+ 14390 14418 14419 14470 14473 14492
+ 14404 14422 14429 14458 14469 14480
+ 14399 14411 14427 14455 14474 14489
+ 14401 14414 14456 14471 14487 15597
+ 14287 14380 14388 14463 14533 14562
+ 14393 14409 14426 14460 14478 14493
+ 14400 14412 14431 14457 14479 14491
+ 14405 14421 14428 14461 14464 14490
+ 14406 14420 14435 14454 14476 14485
+ 14403 14416 14432 14459
+ 14410 14428 14434 14464 14466 14486
+ 14398 14418 14430 14470 14482 14499
+ 14408 14424 14436 14465 14481 14494
+ 14438 14467 14488 14500
+ 14413 14437 14471 14497 15597 15598
+ 14420 14434 14447 14466 14485 15599
+ 14411 14425 14441 14472 14489 14503
+ 14414 14427 14442 14474 14487 14502
+ 14412 14426 14445 14478 14491 14506
+ 14422 14435 14440 14476 14480 14495
+ 14416 14431 14448 14479
+ 14409 14430 14444 14482 14493 14508
+ 14421 14436 14446 14481 14490 14504
+ 14387 14395 14423 14477 14536 14538 15596
+ 14380 14419 14443 14473 14509 14533
+ 14428 14446 14449 14486 14490 14505
+ 14424 14437 14451 14494 14507 15598
+ 14434 14449 14454 14486 14501 15599
+ 14452 14484 14500 14512
+ 13265 13426 14169 14738 14902 14965
+ 14429 14440 14477 14480 14520
+ 14418 14439 14450 14492 14499 14517
+ 14442 14453 14487 14497 14511 15597
+ 14425 14438 14455 14488 14503 14515
+ 14419 14439 14463 14492 14509 14514
+ 14427 14441 14456 14489 14502 14513
+ 14220 14288 14360 14667 14694
+ 14435 14447 14458 14485 14495 14531
+ 14423 14429 14462 14469 14520 14538
+ 14426 14444 14457 14493 14506 14519
+ 14431 14445 14459 14491
+ 14440 14458 14469 14495 14520
+ 14436 14451 14461 14494 14504 14518
+ 14430 14450 14460 14499 14508 14525
+ 13588 13730 14292 14344 14858 14923
+ 14467 14496 14512 14524
+ 14447 14454 14476 14531 15599
+ 14449 14464 14466 14501 14505 14516
+ 14442 14456 14471 14502 14511 14527
+ 14438 14452 14472 14500 14515 14529
+ 14441 14455 14474 14503 14513 14528
+ 14446 14461 14464 14504 14505 14526
+ 14445 14457 14479 14506
+ 14439 14470 14473 14514 14517 14534
+ 14444 14460 14478 14508 14519 15600
+ 14451 14465 14481 14507 14518 14532
+ 14458 14476 14480 14520 14531 14613
+ 14484 14510 14524 14539
+ 14453 14471 14511 14521 14537 15598
+ 14162 14198 14360 14599 14667 14842
+ 14450 14470 14482 14517 14525 14545
+ 14452 14467 14488 14512 14529 14543
+ 14466 14486 14516 14523 15599
+ 14456 14474 14487 14513 14527 14542
+ 14455 14472 14489 14515 14528 14544
+ 14461 14481 14490 14518 14526 14546
+ 14464 14486 14490 14516 14526 14540
+ 14457 14478 14491 14519
+ 14465 14494 14521 14532 14547 15598
+ 14460 14482 14493 14525 14551 15600
+ 14463 14473 14514 14533 14541
+ 14496 14522 14539 14552
+ 14471 14487 14497 14527 14537 14550
+ 14467 14484 14500 14524 14543 14554
+ 14474 14489 14502 14528 14542 14553
+ 14473 14492 14509 14534 14541 14556
+ 14472 14488 14503 14529 14544 14555
+ 14486 14501 14505 14523 14540 14549
+ 14470 14492 14499 14534 14545 14561
+ 14481 14494 14504 14532 14546 14557
+ 14478 14493 14506 15600
+ 14469 14477 14480 14495 14538 14613
+ 14497 14507 14537 14547 14560 15598
+ 14510 14535 14552 14563
+ 14501 14516 14531 14549 14558 15599
+ 14484 14496 14512 14539 14554 14566
+ 14482 14499 14508 14545 14551 14568
+ 14490 14504 14505 14540 14546 14565
+ 14487 14502 14511 14542 14550 14564
+ 14489 14503 14513 14544 14553 14567
+ 14488 14500 14515 14543 14555 14570
+ 14159 14376 14433 14658 14723 14799
+ 14476 14485 14495 14523 14558 14613 15599
+ 14494 14507 14518 14547 14557 14571
+ 14443 14463 14509 14541 14562 14573 14659
+ 14492 14514 14517 14556 14561 14577
+ 14522 14548 14563 14576
+ 14407 14462 14538 14634 14731 15596
+ 14497 14511 14521 14550 14560 14574
+ 14462 14477 14520 14536 14613 14731
+ 14496 14510 14524 14552 14566 14579
+ 14505 14516 14526 14549 14565 14575
+ 14509 14514 14533 14556 14573
+ 14502 14513 14527 14553 14564 14578
+ 14500 14512 14529 14554 14570 14583
+ 14503 14515 14528 14555 14567 14581
+ 14499 14517 14525 14561 14568 14585
+ 14504 14518 14526 14557 14565 14586
+ 14507 14521 14532 14560 14571 14582
+ 14535 14559 14576 14589
+ 14516 14523 14540 14558 14575 14584
+ 14511 14527 14537 14564 14574 14588
+ 14508 14525 14568 15600
+ 14510 14522 14539 14563 14579 14591
+ 14513 14528 14542 14567 14578 14590
+ 14512 14524 14543 14566 14583 14592
+ 14515 14529 14544 14570 14581 14594
+ 14514 14534 14541 14573 14577 14597
+ 14518 14532 14546 14571 14586 14598
+ 14523 14531 14549 14584 14613 14624
+ 14548 14572 14589 14600
+ 14521 14537 14547 14574 14582 14595
+ 14517 14534 14545 14577 14585 14601
+ 14376 14388 14443 14533 14658 14659 14715
+ 14522 14535 14552 14576 14591 14606
+ 14527 14542 14550 14578 14588 14603
+ 14526 14540 14546 14575 14586 14608
+ 14524 14539 14554 14579 14592 14607
+ 14528 14544 14553 14581 14590 14604
+ 14525 14545 14551 14585
+ 13931 14161 14292 14674 14858 14922
+ 14529 14543 14555 14583 14594 14609
+ 14532 14547 14557 14582 14598 14605
+ 14559 14580 14600 14611
+ 14533 14541 14556 14597 14651 14659
+ 14537 14550 14560 14588 14595 14612
+ 14540 14549 14565 14584 14608 14621
+ 14535 14548 14563 14589 14606 14617
+ 14534 14556 14561 14597 14601 14620
+ 14542 14553 14564 14590 14603 14616
+ 14539 14552 14566 14591 14607 14618
+ 14572 14587 14611 14622
+ 14544 14555 14567 14594 14604 14619
+ 14547 14560 14571 14595 14605 14615
+ 14543 14554 14570 14592 14609 14623
+ 14549 14558 14575 14621 14624
+ 14545 14561 14568 14601
+ 14546 14557 14565 14598 14608 14633
+ 14580 14596 14622 14626
+ 14550 14564 14574 14603 14612 14625
+ 14548 14559 14576 14600 14617 14629
+ 14553 14567 14578 14604 14616 14627
+ 14552 14563 14579 14606 14618 14630
+ 14554 14566 14583 14607 14623 14631
+ 11933 13414 14090 14738 14951 14974
+ 14555 14570 14581 14609 14619 14632
+ 14560 14574 14582 14612 14615 14628
+ 14587 14602 14626 14635
+ 14556 14573 14577 14620 14651
+ 14557 14571 14586 14605 14633 15602
+ 14098 14198 14498 14674 14842 14921
+ 14559 14572 14589 14611 14629 14637
+ 14561 14577 14585 14620
+ 14596 14610 14635 14640
+ 14564 14578 14588 14616 14625 14636
+ 14567 14581 14590 14619 14627 14639
+ 14571 14582 14598 14615 14638 15602
+ 14563 14576 14591 14617 14630 14643
+ 14566 14579 14592 14618 14631 14641
+ 14565 14575 14586 14621 14633 14647
+ 14570 14583 14594 14623 14632 14644
+ 14602 14614 14640 14646
+ 14572 14580 14600 14622 14637 14648
+ 14574 14588 14595 14625 14628 14645
+ 14495 14520 14531 14538 14558 14624 14704 14731
+ 14610 14620 14646 14650
+ 14582 14595 14605 14628 14638 14642
+ 14578 14590 14603 14627 14636 14649
+ 14576 14589 14606 14629 14643 14654
+ 14579 14591 14607 14630 14641 14653
+ 14581 14594 14604 14632 14639 14652
+ 14577 14597 14601 14614 14650 14651 14668
+ 14575 14584 14608 14624 14647 14671
+ 14580 14587 14611 14626 14648 14657
+ 14583 14592 14609 14631 14644 14656
+ 14558 14584 14613 14621 14671 14704
+ 14588 14603 14612 14636 14645 14660
+ 14587 14596 14622 14635 14657 14662
+ 14590 14604 14616 14639 14649 14661
+ 14595 14612 14615 14642 14645 14655
+ 14589 14600 14617 14637 14654 14664
+ 14591 14606 14618 14643 14653 14663
+ 14592 14607 14623 14641 14656 14665
+ 14594 14609 14619 14644 14652 14666
+ 14586 14598 14608 14647 14679 15602
+ 14407 14415 14536 14694 14731 14868
+ 14596 14602 14626 14640 14662 14669
+ 14603 14616 14625 14649 14660 14673
+ 14600 14611 14629 14648 14664 14678
+ 14605 14615 14642 14670 14686 15602
+ 14604 14619 14627 14652 14661 14672
+ 14602 14610 14635 14646 14669 14675
+ 14607 14618 14631 14653 14665 14676
+ 14615 14628 14638 14655 14670
+ 14606 14617 14630 14654 14663 14680
+ 14609 14623 14632 14656 14666 14681
+ 14612 14625 14628 14655 14660 14677
+ 14610 14614 14640 14650 14675 14682
+ 14608 14621 14633 14671 14679 14696
+ 14611 14622 14637 14657 14678 14685
+ 14616 14627 14636 14661 14673 14683
+ 14614 14620 14646 14668 14682 14689
+ 14573 14597 14620 14659 14668 14713
+ 14619 14632 14639 14666 14672 14687
+ 14618 14630 14641 14663 14676 14688
+ 14617 14629 14643 14664 14680 14691
+ 14628 14642 14645 14670 14677 14684
+ 14623 14631 14644 14665 14681 14690
+ 14622 14626 14648 14662 14685 14693
+ 14376 14530 14562 14715 14799 14809
+ 14533 14562 14573 14651 14713 14715 14739
+ 14625 14636 14645 14673 14677 14695
+ 14627 14639 14649 14672 14683 14692
+ 14626 14635 14657 14669 14693 14698
+ 14630 14643 14653 14680 14688 14700
+ 14629 14637 14654 14678 14691 14703
+ 14631 14641 14656 14676 14690 14699
+ 14632 14644 14652 14681 14687 14701
+ 14360 14475 14498 14694 14842 14911
+ 14620 14650 14651 14689 14713 14721
+ 14635 14640 14662 14675 14698 14706
+ 14638 14642 14655 14684 14686 14702
+ 14621 14624 14647 14696 14704 14728
+ 14639 14652 14661 14687 14692 14705
+ 14636 14649 14660 14683 14695 14709
+ 14098 14161 14569 14599 14921 14922
+ 14640 14646 14669 14682 14706 14710
+ 14641 14653 14665 14688 14699 14707
+ 14645 14655 14660 14684 14695 14708
+ 14637 14648 14664 14685 14703 14712
+ 14633 14647 14686 14696 14732 15602
+ 14643 14654 14663 14691 14700 14717
+ 14644 14656 14666 14690 14701 14716
+ 14646 14650 14675 14689 14710 14711
+ 14649 14661 14673 14692 14709 14719
+ 14655 14670 14677 14702 14708 14714
+ 14648 14657 14678 14693 14712 14724
+ 14638 14670 14679 14702 14732 14740 15602
+ 14652 14666 14672 14701 14705 14720
+ 14653 14663 14676 14700 14707 14722
+ 14650 14668 14682 14711 14721
+ 14656 14665 14681 14699 14716 14727
+ 14654 14664 14680 14703 14717 14729
+ 14661 14672 14683 14705 14719 14726
+ 14657 14662 14685 14698 14724 14730
+ 14288 14415 14475 14634 14667 14868 14911
+ 14660 14673 14677 14708 14709 14736
+ 14647 14671 14679 14728 14732 14753
+ 14374 14433 14723 14744 14874 14890
+ 14662 14669 14693 14706 14730 14737
+ 14665 14676 14690 14707 14727 14733
+ 14663 14680 14688 14717 14722 14735
+ 14666 14681 14687 14716 14720 15603
+ 14670 14684 14686 14714 14740
+ 14664 14678 14691 14712 14729 14743
+ 14613 14624 14671 14728 14731 14782
+ 14672 14687 14692 14720 14726 14734
+ 14669 14675 14698 14710 14737 14742
+ 14676 14688 14699 14722 14733 14741
+ 14677 14684 14695 14714 14736 15604
+ 14673 14683 14695 14719 14736 14747
+ 14675 14682 14706 14711 14742 14745
+ 14682 14689 14710 14721 14745 14746
+ 14678 14685 14703 14724 14743 14752
+ 14651 14659 14668 14721 14739 14757 14763
+ 14684 14702 14708 14740 14756 15604
+ 14562 14658 14659 14739 14790 14809
+ 14681 14690 14701 14727 14754 15603
+ 14680 14691 14700 14729 14735 14755
+ 5091 6408 13608 14884 15106 15121
+ 14683 14692 14709 14726 14747 14749
+ 14687 14701 14705 14734 14750 15603
+ 14668 14689 14711 14713 14746 14757
+ 14688 14700 14707 14735 14741 14748
+ 14433 14530 14697 14799 14874 14906
+ 14685 14693 14712 14730 14752 14759
+ 14023 14169 14744 14886 14902 14933
+ 14692 14705 14719 14734 14749 14751
+ 14690 14699 14716 14733 14754 14760
+ 14671 14696 14704 14753 14782 14788
+ 14691 14703 14717 14743 14755 14765
+ 14693 14698 14724 14737 14759 14764
+ 14536 14538 14613 14634 14704 14782 14868 14870
+ 14679 14686 14696 14740 14753 14776 14785
+ 14699 14707 14727 14741 14760 14761
+ 14705 14720 14726 14750 14751 14758
+ 14700 14717 14722 14748 14755 15605
+ 14695 14708 14709 14747 14775 14778 15604
+ 14698 14706 14730 14742 14764 14766
+ 13414 13426 14468 14593 14965 14974 15017
+ 14659 14713 14715 14763 14787 14790
+ 14686 14702 14714 14732 14756 14776
+ 14707 14722 14733 14748 14761 14762
+ 14706 14710 14737 14745 14766 14769
+ 14703 14712 14729 14752 14765 14774
+ 14023 14374 14697 14725 14886 14890
+ 14710 14711 14742 14746 14769 14771
+ 14711 14721 14745 14757 14771 14777
+ 14709 14719 14736 14749 14778 14779
+ 14722 14735 14741 14762 14770 15605
+ 14719 14726 14747 14751 14772 14779
+ 14720 14734 14758 14767 14773 15603
+ 14726 14734 14749 14758 14772
+ 14712 14724 14743 14759 14774 14783
+ 14696 14728 14732 14785 14788
+ 14716 14727 14760 14767 14786 15603
+ 14717 14729 14735 14765 14784 15605
+ 14714 14740 14775 14776 14805 15604
+ 14713 14721 14746 14763 14777 14780
+ 14734 14750 14751 14772 14773 14781
+ 14724 14730 14752 14764 14783 14791
+ 14727 14733 14754 14761 14786 14793
+ 14733 14741 14760 14762 14789 14793
+ 14741 14748 14761 14770 14789
+ 14713 14739 14757 14780 14787 14794
+ 14730 14737 14759 14766 14791 14795
+ 14729 14743 14755 14774 14784 14804
+ 14737 14742 14764 14769 14795 14798
+ 14750 14754 14773 14786 14802 15603
+ 13752 14084 14883 14964 14993 15601
+ 14742 14745 14766 14771 14798 14800
+ 14748 14762 14789 14792 14797 15605
+ 14745 14746 14769 14777 14800 14801
+ 14749 14751 14758 14779 14781 14808
+ 14750 14758 14767 14781 14802 14803
+ 14743 14752 14765 14783 14804 14810
+ 14736 14756 14778 14805 14816 15604
+ 14732 14740 14756 14785 14805 14814
+ 14746 14757 14771 14780 14796 14801
+ 14736 14747 14775 14779 14815 14816
+ 14747 14749 14772 14778 14808 14815
+ 14757 14763 14777 14794 14796 14807
+ 14758 14772 14773 14803 14808
+ 14704 14728 14731 14788 14850 14870
+ 14752 14759 14774 14791 14810 14813
+ 14755 14765 14792 14804 14819 15605
+ 14732 14753 14776 14788 14814 14830
+ 14754 14760 14767 14793 14802 14825
+ 14739 14763 14790 14794 14811 14820
+ 14728 14753 14782 14785 14830 14850
+ 14761 14762 14770 14793 14797 14812
+ 14715 14739 14787 14809 14820 14849
+ 14759 14764 14783 14795 14813 14822
+ 14770 14784 14797 14817 14819 15605
+ 14760 14761 14786 14789 14812 14825 14829
+ 14763 14780 14787 14807 14811 14821
+ 14764 14766 14791 14798 14822 14827
+ 14777 14780 14801 14807 14818
+ 14770 14789 14792 14812 14817
+ 14766 14769 14795 14800 14827 14828
+ 14530 14658 14723 14809 14895 14906
+ 14769 14771 14798 14801 14824 14828
+ 14771 14777 14796 14800 14818 14824
+ 14767 14773 14786 14803 14825 14826
+ 14773 14781 14802 14808 14826 14832
+ 14765 14774 14784 14810 14819 14834
+ 14756 14775 14776 14814 14816 14837
+ 6549 8429 11051 14963 15040 15073
+ 14780 14794 14796 14818 14821 14833
+ 14772 14779 14781 14803 14815 14832 14845
+ 14658 14715 14790 14799 14849 14895
+ 14774 14783 14804 14813 14834 14839
+ 14787 14794 14820 14821 14831
+ 14789 14793 14797 14817 14829 14835
+ 14783 14791 14810 14822 14838 14839
+ 14776 14785 14805 14830 14837 14851
+ 14778 14779 14808 14816 14845 14852
+ 14775 14778 14805 14815 14837 14852
+ 14792 14797 14812 14819 14835 14836
+ 14796 14801 14807 14824 14833 14840
+ 14784 14792 14804 14817 14834 14836 14847
+ 14787 14790 14811 14831 14849 14855
+ 14794 14807 14811 14831 14833 14846
+ 14791 14795 14813 14827 14838 14841
+ 12039 13965 14938 14968 15016 15579
+ 14800 14801 14818 14828 14840 14843
+ 14786 14793 14802 14826 14829 14848 14853
+ 14802 14803 14825 14832 14848
+ 14795 14798 14822 14828 14841 14844
+ 14798 14800 14824 14827 14843 14844
+ 14793 14812 14825 14835 14853 14854
+ 14785 14788 14814 14850 14851 14867
+ 14811 14820 14821 14846 14855
+ 14803 14808 14826 14845 14848 14861
+ 14807 14818 14821 14840 14846 14859
+ 14804 14810 14819 14839 14847 14864
+ 14812 14817 14829 14836 14854 14857
+ 14817 14819 14835 14847 14857 14862
+ 14805 14814 14816 14851 14852 14876
+ 14813 14822 14839 14841 14865 14869
+ 14810 14813 14834 14838 14864 14869
+ 14818 14824 14833 14843 14859 14866
+ 14822 14827 14838 14844 14860 14865
+ 14498 14599 14667 14911 14921 14985
+ 14824 14828 14840 14844 14863 14866
+ 14827 14828 14841 14843 14860 14863
+ 14808 14815 14832 14852 14861 14877
+ 14821 14831 14833 14855 14859 14873
+ 14819 14834 14836 14862 14864 14871
+ 14825 14826 14832 14853 14861 14875
+ 14790 14809 14820 14855 14895 14904
+ 14782 14788 14830 14867 14870 14896
+ 14814 14830 14837 14867 14876 14882
+ 14815 14816 14837 14845 14876 14877 14892
+ 14825 14829 14848 14854 14875 14878
+ 14829 14835 14853 14857 14872 14878
+ 14820 14831 14846 14849 14873 14904
+ 1438 6142 7847 15069 15094 15125
+ 14835 14836 14854 14862 14872 15606
+ 14292 14483 14569 14922 14923 14991
+ 14833 14840 14846 14866 14873 14885
+ 14841 14844 14863 14865 14879
+ 14832 14845 14848 14875 14877 14894
+ 14836 14847 14857 14871 14880 15606
+ 14843 14844 14860 14866 14879 14881
+ 14834 14839 14847 14869 14871 14889
+ 14838 14841 14860 14869 14879 14888
+ 14840 14843 14859 14863 14881 14885
+ 14830 14850 14851 14882 14896
+ 14634 14694 14731 14870 14911 14944 14973
+ 14838 14839 14864 14865 14888 14889 14901
+ 14731 14782 14850 14868 14896 14944
+ 14847 14862 14864 14880 14889 14893
+ 14854 14857 14878 14891 14898 15606
+ 14846 14855 14859 14885 14904 14907
+ 14697 14723 14890 14906 14943 14956
+ 14848 14853 14861 14878 14894 14900
+ 14837 14851 14852 14882 14892 14903
+ 14845 14852 14861 14892 14894 14905
+ 14853 14854 14872 14875 14898 14900
+ 14860 14863 14865 14881 14888 14897
+ 14862 14871 14891 14893 15606
+ 14863 14866 14879 14885 14897 14899
+ 14851 14867 14876 14896 14903 14912
+ 14084 14344 14768 14923 14993 15018
+ 6408 7295 14209 14718 15086 15106
+ 14859 14866 14873 14881 14899 14907
+ 14725 14744 14890 14933 14939
+ 13535 14090 14914 14951 15006 15014
+ 14865 14869 14879 14897 14901 14918
+ 14864 14869 14871 14893 14901 14910
+ 14697 14744 14874 14886 14939 14943
+ 14872 14880 14893 14898 14908 15606
+ 14852 14876 14877 14903 14905 14917
+ 14871 14880 14889 14891 14908 14910
+ 14861 14875 14877 14900 14905 14915
+ 14799 14809 14849 14904 14906 14935 14950
+ 14850 14867 14870 14882 14912 14944
+ 14879 14881 14888 14899 14916 14918
+ 14872 14878 14891 14900 14908 14920
+ 14881 14885 14897 14907 14916 14919
+ 14875 14878 14894 14898 14915 14920 14925
+ 14869 14888 14889 14910 14918 14926
+ 14169 14468 14725 14933 14965 14975
+ 14876 14882 14892 14912 14917 14928
+ 14849 14855 14873 14895 14907 14929 14935
+ 14877 14892 14894 14915 14917 14924
+ 14723 14799 14874 14895 14950 14956
+ 14873 14885 14899 14904 14919 14929
+ 14891 14893 14898 14910 14920 14927
+ 13856 14069 14914 14979 14994 15028
+ 14889 14893 14901 14908 14926 14927
+ 14667 14694 14842 14868 14973 14985
+ 14882 14896 14903 14928 14944 14948
+ 12141 13965 14308 14968 15008 15031
+ 13535 13856 14887 14909 14994 15006
+ 14894 14900 14905 14924 14925 14930
+ 14897 14899 14918 14919 14931
+ 14892 14903 14905 14924 14928 14932
+ 14888 14897 14901 14916 14926 14931 14941
+ 14899 14907 14916 14929 14931 14936
+ 14898 14900 14908 14925 14927 14934
+ 14599 14674 14842 14922 14985 15002
+ 14569 14674 14858 14921 14991 15002
+ 14344 14483 14858 14883 14991 15018
+ 14905 14915 14917 14930 14932 14937
+ 14900 14915 14920 14930 14934 14940
+ 14901 14910 14918 14927 14941 14942
+ 14908 14910 14920 14926 14934 14942
+ 14903 14912 14917 14932 14946 14948
+ 14904 14907 14919 14935 14936 14952
+ 14915 14924 14925 14937 14940 14947
+ 14916 14918 14919 14936 14941 14953
+ 14917 14924 14928 14937 14946 14949
+ 14725 14886 14902 14939 14975 14978
+ 14920 14925 14927 14940 14942 14957
+ 14895 14904 14929 14950 14952 14961
+ 14919 14929 14931 14952 14953 14958
+ 14924 14930 14932 14947 14949 14954
+ 14823 14964 15016 15034 15579 15601
+ 14886 14890 14933 14943 14978 14989
+ 14925 14930 14934 14947 14957 14959
+ 14918 14926 14931 14942 14953 14962
+ 14926 14927 14934 14941 14957 14962 14967
+ 14874 14890 14939 14956 14986 14989
+ 14868 14870 14896 14912 14948 14973 14981
+ 7003 7847 11051 15040 15069 15093
+ 14928 14932 14948 14949 14971
+ 14930 14937 14940 14954 14959 14960
+ 14912 14928 14944 14946 14971 14981
+ 14932 14937 14946 14954 14971
+ 14895 14906 14935 14956 14961 14976 14983
+ 14090 14593 14887 14974 15014 15025
+ 14929 14935 14936 14958 14961 14966
+ 14931 14936 14941 14958 14962 14969
+ 14937 14947 14949 14960 14971
+ 8232 11299 13750 15001 15024 15067 15085
+ 14874 14906 14943 14950 14983 14986
+ 14934 14940 14942 14959 14967 14972
+ 14936 14952 14953 14966 14969
+ 14940 14947 14957 14960 14970 14972
+ 14947 14954 14959 14970 14971
+ 14935 14950 14952 14966 14976 14980
+ 14941 14942 14953 14967 14969 14977
+ 8429 14069 14806 14979 15051 15073
+ 14768 14938 14993 15034 15036 15601
+ 14468 14738 14902 14975 15017 15022
+ 14952 14958 14961 14969 14980 14987
+ 14942 14957 14962 14972 14977 14988
+ 13965 14823 14913 15016 15031 15046
+ 14953 14958 14962 14966 14977 14987
+ 14959 14960 14971 14972 14982 14984
+ 14946 14948 14949 14954 14960 14970 14981 14982 14990
+ 14957 14959 14967 14970 14984 14988
+ 14868 14911 14944 14981 14985 15021 15035
+ 14593 14738 14951 15017 15025 15041
+ 14902 14933 14965 14978 15020 15022
+ 14950 14961 14980 14983 14995 15000
+ 14962 14967 14969 14987 14988 14997 14998
+ 14933 14939 14975 14989 15015 15020
+ 14069 14909 14963 15028 15051
+ 14961 14966 14976 14987 14995 14999
+ 14944 14948 14971 14973 14990 15021
+ 14970 14971 14984 14990 14992
+ 14950 14956 14976 14986 15000 15003
+ 14970 14972 14982 14988 14992 14996
+ 14842 14911 14921 14973 15002 15035 15048
+ 14943 14956 14983 14989 15003 15004
+ 14966 14969 14977 14980 14997 14999
+ 14967 14972 14977 14984 14996 14998
+ 14939 14943 14978 14986 15004 15015
+ 14971 14981 14982 14992 15009 15021
+ 14858 14922 14923 15002 15018 15047
+ 14982 14984 14990 14996 15005 15009
+ 14768 14883 14964 15018 15036 15044
+ 14909 14914 15006 15028 15049
+ 14976 14980 14999 15000 15012 15013
+ 14984 14988 14992 14998 15005 15007
+ 14977 14987 14998 14999 15010 15011
+ 14977 14988 14996 14997 15007 15010
+ 14980 14987 14995 14997 15011 15013
+ 14976 14983 14995 15003 15012 15019
+ 13750 14308 14955 15008 15059 15067
+ 14921 14922 14985 14991 15047 15048
+ 14983 14986 15000 15004 15019 15023
+ 14986 14989 15003 15015 15023 15032
+ 14992 14996 15007 15009 15033
+ 14887 14914 14994 15014 15049 15052
+ 14996 14998 15005 15010 15033
+ 14308 14913 15001 15031 15059 15060
+ 14990 14992 15005 15021 15033 15055
+ 14997 14998 15007 15011 15030 15033
+ 14997 14999 15010 15013 15026 15030
+ 14995 15000 15013 15019 15027 15029
+ 14995 14999 15011 15012 15026 15027
+ 14887 14951 15006 15025 15052 15056
+ 14978 14989 15004 15020 15032 15037
+ 14823 14938 14968 15034 15046 15061
+ 14738 14965 14974 15022 15041 15050 15062
+ 14883 14923 14991 14993 15044 15047 15063
+ 15000 15003 15012 15023 15029 15038
+ 14975 14978 15015 15022 15037 15042
+ 14973 14981 14990 15009 15035 15055
+ 14965 14975 15017 15020 15042 15050
+ 15003 15004 15019 15032 15038
+ 11299 13260 14955 15057 15085 15110
+ 14951 14974 15014 15041 15056
+ 15011 15013 15027 15030 15039 15043
+ 15012 15013 15026 15029 15039
+ 14909 14979 14994 15049 15051 15075
+ 15012 15019 15027 15038 15039
+ 15010 15011 15026 15033 15043
+ 14913 14968 15008 15046 15060 15068
+ 15004 15015 15023 15037 15038 15045
+ 15005 15007 15009 15010 15030 15043 15055
+ 14938 14964 15016 15036 15061 15066
+ 14973 14985 15021 15048 15055 15081
+ 14964 14993 15034 15044 15066 15076
+ 15015 15020 15032 15042 15045 15054
+ 15019 15023 15029 15032 15039 15045 15058
+ 15026 15027 15029 15038 15043 15058
+ 11051 14806 14945 15073 15093 15129
+ 14974 15017 15025 15056 15062 15072
+ 15020 15022 15037 15050 15054 15064
+ 15026 15030 15033 15039 15055 15058 15077
+ 14993 15018 15036 15063 15076
+ 15032 15037 15038 15054 15058 15065
+ 14968 15016 15031 15061 15068 15078
+ 14991 15002 15018 15048 15063 15087
+ 14985 15002 15035 15047 15081 15087
+ 14994 15006 15028 15052 15075 15089
+ 15017 15022 15042 15062 15064 15074
+ 14963 14979 15028 15073 15075 15102
+ 15006 15014 15049 15056 15084 15089
+ 133 150 5176 15123 15220 15242
+ 15037 15042 15045 15064 15065 15070
+ 15009 15021 15033 15035 15043 15077 15081
+ 15014 15025 15041 15052 15072 15084
+ 13260 14209 15024 15086 15110 15141
+ 15038 15039 15043 15045 15065 15077 15079
+ 15001 15008 15060 15067 15083 15092
+ 15008 15031 15059 15068 15083 15088
+ 15016 15034 15046 15066 15078 15090
+ 15017 15041 15050 15072 15074 15091
+ 15018 15044 15047 15076 15087 15105
+ 15042 15050 15054 15070 15074 15082
+ 15045 15054 15058 15070 15079 15080
+ 15034 15036 15061 15076 15090 15103
+ 14955 15001 15059 15085 15092 15109
+ 15031 15046 15060 15078 15088 15095
+ 7847 14856 14945 15093 15125 15135
+ 15054 15064 15065 15080 15082
+ 223 5176 5408 15133 15218 15220
+ 15041 15056 15062 15084 15091 15101
+ 14806 14963 15040 15051 15102 15129 15146
+ 15050 15062 15064 15082 15091 15100
+ 15028 15049 15051 15089 15102 15117
+ 15036 15044 15063 15066 15103 15105
+ 15043 15055 15058 15079 15081 15097 15104
+ 15046 15061 15068 15090 15095 15108
+ 15058 15065 15077 15080 15096 15097
+ 15065 15070 15079 15082 15096 15099
+ 15035 15048 15055 15077 15087 15104 15116
+ 15064 15070 15074 15080 15099 15100
+ 15059 15060 15088 15092 15107
+ 15052 15056 15072 15089 15101 15112
+ 14955 15024 15067 15109 15110 15131
+ 14209 14884 15057 15106 15141 15161
+ 15047 15048 15063 15081 15105 15116 15128
+ 15060 15068 15083 15095 15107 15111
+ 15049 15052 15075 15084 15112 15117
+ 15061 15066 15078 15103 15108 15124
+ 15062 15072 15074 15100 15101 15113
+ 15059 15067 15083 15107 15109 15119
+ 14945 15040 15069 15129 15135 15162
+ 6142 12330 14856 15125 15170 15186
+ 15068 15078 15088 15108 15111 15114
+ 15079 15080 15097 15099 15115
+ 15077 15079 15096 15104 15115 15118
+ 211 270 12330 15165 15170 15223
+ 15080 15082 15096 15100 15115 15120
+ 15074 15082 15091 15099 15113 15120
+ 15072 15084 15091 15112 15113 15132
+ 15051 15073 15075 15117 15146 15147
+ 15066 15076 15090 15105 15124 15136
+ 15077 15081 15097 15116 15118 15126
+ 15063 15076 15087 15103 15128 15136
+ 14718 14884 15086 15121 15161 15179
+ 15083 15088 15092 15111 15119 15122
+ 15078 15090 15095 15114 15124 15130
+ 15067 15085 15092 15119 15131 15137
+ 15024 15057 15085 15131 15141 15156
+ 15088 15095 15107 15114 15122 15127
+ 15084 15089 15101 15117 15132 15142
+ 15091 15100 15101 15120 15132 15143
+ 15095 15108 15111 15127 15130
+ 15096 15097 15099 15118 15120 15134 15139
+ 15081 15087 15104 15126 15128 15140
+ 15075 15089 15102 15112 15142 15147
+ 15097 15104 15115 15126 15134
+ 15092 15107 15109 15122 15137 15138
+ 15099 15100 15113 15115 15139 15143
+ 13608 14718 15106 15144 15179 15199
+ 15107 15111 15119 15127 15138 15145
+ 150 176 15053 15242
+ 15090 15103 15108 15130 15136 15154
+ 14856 15069 15094 15135 15185 15186
+ 15104 15116 15118 15134 15140 15148
+ 15111 15114 15122 15130 15145 15150
+ 15087 15105 15116 15136 15140 15153
+ 15040 15073 15093 15146 15162 15182
+ 15108 15114 15124 15127 15150 15154
+ 15085 15109 15110 15137 15152 15156
+ 15101 15112 15113 15142 15143 15155
+ 5408 7666 15071 15144 15212 15218
+ 15115 15118 15126 15139 15148 15151
+ 15069 15093 15125 15162 15185
+ 15103 15105 15124 15128 15153 15154 15167
+ 15109 15119 15131 15138 15149 15152
+ 15119 15122 15137 15145 15149
+ 15115 15120 15134 15143 15151 15159
+ 15116 15126 15128 15148 15153 15157
+ 15057 15086 15110 15156 15161 15173
+ 15112 15117 15132 15147 15155 15164
+ 15113 15120 15132 15139 15155 15159
+ 7666 13608 15121 15133 15199 15212
+ 15122 15127 15138 15149 15150 15158
+ 15073 15102 15129 15147 15175 15182
+ 15102 15117 15142 15146 15164 15175
+ 15126 15134 15140 15151 15157 15160
+ 15137 15138 15145 15152 15158 15163
+ 15127 15130 15145 15154 15158 15168
+ 15134 15139 15148 15159 15160 15166
+ 15131 15137 15149 15156 15163 15172
+ 15128 15136 15140 15157 15167 15171
+ 15124 15130 15136 15150 15167 15168 15183
+ 15132 15142 15143 15159 15164 15176
+ 15110 15131 15141 15152 15172 15173 15181
+ 15140 15148 15153 15160 15169 15171
+ 15145 15149 15150 15163 15168 15174
+ 15139 15143 15151 15155 15166 15176 15178
+ 15148 15151 15157 15166 15169
+ 15086 15106 15141 15173 15179 15192
+ 15093 15129 15135 15182 15185 15207
+ 15149 15152 15158 15172 15174 15177
+ 15142 15147 15155 15175 15176 15191
+ 168 211 15098 15200 15223 15249
+ 15151 15159 15160 15169 15178 15180
+ 15136 15153 15154 15171 15183 15188
+ 15150 15154 15158 15174 15183 15190
+ 15157 15160 15166 15171 15180 15184
+ 12330 15094 15098 15186 15223 15229
+ 15153 15157 15167 15169 15184 15188
+ 15152 15156 15163 15177 15181 15187
+ 15141 15156 15161 15181 15192 15193
+ 15158 15163 15168 15177 15189 15190
+ 15146 15147 15164 15182 15191 15202
+ 15155 15159 15164 15178 15191 15194
+ 15163 15172 15174 15187 15189
+ 15159 15166 15176 15180 15194 15196
+ 15106 15121 15161 15192 15199 15208
+ 15166 15169 15178 15184 15196
+ 15156 15172 15173 15187 15193 15195
+ 15129 15146 15162 15175 15202 15207
+ 15154 15167 15168 15188 15190 15198
+ 15169 15171 15180 15188 15196 15203
+ 15125 15135 15162 15186 15207 15222
+ 15094 15125 15170 15185 15222 15229
+ 15172 15177 15181 15189 15195 15197
+ 15167 15171 15183 15184 15198 15203
+ 15174 15177 15187 15190 15197 15201
+ 15168 15174 15183 15189 15198 15201
+ 15164 15175 15176 15194 15202 15209
+ 15161 15173 15179 15193 15205 15208
+ 15173 15181 15192 15195 15204 15205
+ 15176 15178 15191 15196 15209 15210
+ 15181 15187 15193 15197 15204 15206
+ 15178 15180 15184 15194 15203 15210
+ 15187 15189 15195 15201 15206 15211
+ 15183 15188 15190 15201 15203 15214 15216
+ 15121 15144 15179 15208 15212 15230 15237
+ 120 168 15165 15249 15268
+ 15189 15190 15197 15198 15211 15214
+ 15175 15182 15191 15207 15209 15225
+ 15184 15188 15196 15198 15210 15216 15221
+ 15193 15195 15205 15206 15213
+ 15192 15193 15204 15208 15213 15217
+ 15195 15197 15204 15211 15213 15215
+ 15162 15182 15185 15202 15222 15225 15238
+ 15179 15192 15199 15205 15217 15230
+ 15191 15194 15202 15210 15225 15227
+ 15194 15196 15203 15209 15221 15227
+ 15197 15201 15206 15214 15215 15219
+ 15133 15144 15199 15218 15237 15248
+ 15204 15205 15206 15215 15217 15224
+ 15198 15201 15211 15216 15219 15226
+ 15206 15211 15213 15219 15224 15228
+ 15198 15203 15214 15221 15226 15231
+ 15205 15208 15213 15224 15230 15233
+ 15071 15133 15212 15220 15248 15260
+ 15211 15214 15215 15226 15228 15232
+ 5176 15053 15071 15218 15242 15260 15270
+ 15203 15210 15216 15227 15231 15235
+ 15185 15186 15207 15229 15238 15246
+ 15098 15165 15170 15229 15249 15252
+ 15213 15215 15217 15228 15233 15234
+ 15202 15207 15209 15227 15238 15240
+ 15214 15216 15219 15231 15232 15236
+ 15209 15210 15221 15225 15235 15240
+ 15215 15219 15224 15232 15234
+ 15170 15186 15222 15223 15246 15252
+ 15199 15208 15217 15233 15237 15244
+ 15216 15221 15226 15235 15236 15239
+ 15219 15226 15228 15234 15236 15241
+ 15217 15224 15230 15234 15243 15244
+ 15224 15228 15232 15233 15241 15243
+ 15221 15227 15231 15239 15240 15247
+ 15226 15231 15232 15239 15241 15245
+ 15199 15212 15230 15244 15248 15256
+ 15207 15222 15225 15240 15246 15255 15259
+ 15231 15235 15236 15245 15247 15250
+ 15225 15227 15235 15238 15247 15255
+ 15232 15234 15236 15243 15245 15251
+ 15053 15123 15220 15270
+ 15233 15234 15241 15244 15251 15254
+ 15230 15233 15237 15243 15254 15256
+ 15236 15239 15241 15250 15251 15253
+ 15222 15229 15238 15252 15259 15265
+ 15235 15239 15240 15250 15255 15257
+ 15212 15218 15237 15256 15260 15267
+ 15165 15200 15223 15252 15268 15269
+ 15239 15245 15247 15253 15257
+ 15241 15243 15245 15253 15254 15258
+ 15223 15229 15246 15249 15265 15269
+ 15245 15250 15251 15257 15258 15261
+ 15243 15244 15251 15256 15258 15262
+ 15238 15240 15247 15257 15259 15263
+ 15237 15244 15248 15254 15262 15267
+ 15247 15250 15253 15255 15261 15263 15266
+ 15251 15253 15254 15261 15262 15264
+ 15238 15246 15255 15263 15265 15271
+ 15218 15220 15248 15267 15270 15275
+ 15253 15257 15258 15264 15266
+ 15254 15256 15258 15264 15267 15273
+ 15255 15257 15259 15266 15271 15272
+ 15258 15261 15262 15266 15273 15274
+ 15246 15252 15259 15269 15271 15276
+ 15257 15261 15263 15264 15272 15274
+ 15248 15256 15260 15262 15273 15275 15277
+ 15200 15249 15269 15281
+ 15249 15252 15265 15268 15276 15281
+ 15220 15242 15260 15275
+ 15259 15263 15265 15272 15276 15280
+ 15263 15266 15271 15274 15278 15280
+ 15262 15264 15267 15274 15277 15279
+ 15264 15266 15272 15273 15278 15279
+ 15260 15267 15270 15277
+ 15265 15269 15271 15280 15281 15285
+ 15267 15273 15275 15279 15282
+ 15272 15274 15279 15280 15283 15284
+ 15273 15274 15277 15278 15282 15283
+ 15271 15272 15276 15278 15284 15285
+ 15268 15269 15276 15285
+ 15277 15279 15283
+ 15278 15279 15282 15284
+ 15278 15280 15283 15285
+ 15276 15280 15281 15284
+ 528 535 555 562 580 582
+ 637 640 660 664 682 686
+ 661 662 683 687 703 706
+ 668 675 694 695 711
+ 692 701 736 744
+ 817 828 854 863 901 902 926
+ 864 867 948 994 1072 1170
+ 1035 1042 1064 1076 1101 1106
+ 1270 1276 1301 1318 1340 1350
+ 1277 1286 1305 1321 1335 1348
+ 1394 1401 1431 1453 1477 1488
+ 797 809 1443 1882 1984 2261
+ 1441 1445 1483 1487 1520 1523
+ 527 813 1264 2019 2447 2587
+ 1500 1505 1541 1546 1579 1591
+ 1585 1586 1619 1621 1653 1655
+ 1791 1823 1864 1889 1933 1980
+ 1934 1941 1969 1992
+ 1953 1959 1976 1990 2001 2010
+ 1971 1994 2017 2023
+ 1975 1985 1988 2005 2020 2028
+ 2119 2126 2127 2151 2156 2179
+ 2204 2228 2247 2278 2287 2300
+ 2244 2284 2373 2449 2596 2606
+ 2392 2417 2436 2503 2515 2546
+ 2458 2471 2473 2497 2512 15312
+ 2471 2483 2511 2512 2524 15311
+ 2526 2554 2561 2621 2623 2653
+ 2559 2568 2588 2597 2617 2619
+ 2583 2621 2625 2688 2703 2727
+ 2675 2694 2698 2728 2731 2744
+ 2722 2723 2730 2751
+ 2710 2717 2747 2748 2793 2794
+ 2720 2731 2737 2763 2770 2780
+ 2718 2719 2745 2748 2786 2791
+ 2763 2780 2781 2800 2810 2814
+ 2738 2778 2801 2850 2855 2893 2896
+ 2764 2768 2847 2863 2957 3005 3030
+ 2879 2887 2904 2921 2927
+ 2829 2847 2882 2957 2971 3015
+ 2828 2857 2868 2952 3002 3044
+ 2910 2913 2942 2946 2964 2966
+ 2912 2949 2956 2987 2994
+ 2854 2901 2916 3083 3125 3158
+ 2951 2974 2980 3004 3006 3025
+ 2957 3015 3030 3073 3112 3146
+ 3041 3050 3058 3075 3096 3101
+ 3047 3048 3071 3074 3103 3105
+ 3005 3030 3112 3127 3174 15337
+ 3105 3106 3131 3133 3164 3166
+ 3113 3116 3154 3156 3177 3178
+ 3112 3174 3176 3207 15334
+ 3157 3160 3182 3186 3221 3222
+ 3223 3233 3264 3288 3331 3341
+ 3192 3204 3288 3313 3354 3365
+ 3257 3283 3293 3342 3361 3369
+ 3289 3295 3318 3328 3349 3352
+ 3210 3251 3303 3335 3398 3458
+ 3280 3286 3337 3376
+ 3268 3304 3320 3424 3438 15348
+ 3361 3382 3403 3411 3431 3435 3443
+ 3397 3410 3469 3486 3537 3543
+ 3424 3438 3541 3556 15345
+ 3423 3436 3477 3517 3555 3569
+ 2312 3001 3581 3994 4134
+ 3492 3503 3512 3530 3547 3552
+ 3576 3578 3607 3608 3635 3637
+ 3586 3587 3605 3610 3631 3634
+ 3604 3617 3671 3686 3729 3732
+ 2261 3001 3305 3994 4172 4323
+ 3729 3732 3781 3831 15357 15358
+ 3732 3738 3789 3848 15356 15358
+ 3831 3848 3874 15356 15357 15360
+ 3845 3850 3858 3873 3887 3890
+ 3848 3874 3910 3915 3927 15358
+ 3908 3910 3932 3957 3959 3970
+ 3930 3935 3951 3981 4004 4007
+ 3977 3983 3999 4012 4021 4030
+ 2447 2587 3675 4169 4463 4762
+ 4077 4080 4095 4102 4122 4126
+ 4075 4076 4119 4120 4164 4168
+ 4155 4160 4173 4187 4195 4208
+ 4263 4269 4346 4358 4446 4458
+ 4364 4366 4385 4392 4408 4445 4448
+ 4499 4506 4529 4536 4556 4564
+ 4550 4558 4580 4590 4609 4613
+ 4708 4720 4726 4748 4758 4767
+ 4775 4785 4797 4813 4832 4837
+ 2062 4176 4383 5180 5221 5528
+ 4794 4835 4884 4954 4960 4993
+ 4890 4899 4915 4929 4948 4955
+ 4933 4978 4992 5038 5066 5078
+ 5024 5037 5045 5074 5081 5098
+ 5090 5097 5118 5132 5150 5159
+ 5218 5228 5301 5398 5402 5493
+ 5368 5386 5399 5435 5443 5461
+ 6342 6352 6380 6397
+ 6481 6493 6513 6539 6557 6574
+ 6728 6741 6768 6785 6804 6812
+ 6862 6883 6927 6946 6994 7005
+ 6750 6765 6825 6987 7006 7346 7379
+ 7801 7802 7829 7837 7864 7865
+ 7910 7918 7928 7956 7962 7978
+ 7971 7974 7998 8002 8031 8032
+ 7979 7991 7992 8024 8039 8053
+ 8149 8159 8181 8205 8228 8239
+ 8193 8200 8273 8276 8371 8391
+ 8095 8119 8291 8344 8450 8516
+ 8356 8368 8375 8408 8411 8428
+ 8371 8391 8436 8499 8532 8574
+ 8455 8504 8511 8540 8579 8611 8625
+ 8450 8460 8542 8649 8658 8730
+ 8551 8579 8583 8628 8664 15400
+ 8602 8606 8639 8647 8684 8685
+ 8579 8625 8664 8700 8706 15398
+ 8597 8612 8653 8665 8704 8707
+ 8696 8724 8757 8761
+ 8784 8787 8822 8824 8857 8863
+ 8823 8836 8874 8896
+ 8860 8873 8901 8907 8923 8932
+ 8874 8885 8896 8921 8937 8950
+ 8890 8894 8929 8940 8970 8978
+ 8889 8904 8946 8985 9026 9063
+ 8938 8959 8960 8991 9013 15412
+ 8910 8925 8957 8997 9023 15414
+ 8958 8971 8973 9002 9006 9020
+ 8960 8981 9013 9022 9058 9059 15409
+ 8989 9000 9038 9061 9077 9093
+ 8997 9023 9081 9099 9128 15410
+ 9045 9046 9072 9076 9105 9108
+ 9051 9060 9071 9091 9104 9115
+ 9018 9047 9061 9113 9116 9149
+ 8943 8962 9050 9236 9287 15421
+ 9052 9069 9082 9126 9141 9164
+ 9083 9087 9110 9120 9131 9150
+ 8919 8962 9146 9287 9352 15418
+ 8177 8194 8306 8519 9305 10106 10842 10865
+ 9026 9063 9081 9156 9182 9213
+ 8975 9011 9134 9137 9280 9289
+ 9048 9073 9096 9160 9184 9214
+ 9122 9138 9152 9176 9196 9204
+ 9107 9108 9151 9153 9193 9194 9205
+ 9180 9197 9207 9230 9245 9251
+ 9186 9199 9210 9233 9249 9259
+ 9193 9205 9211 9241 9248 9258
+ 9196 9204 9216 9240 9253 15433
+ 9203 9210 9230 9249 9263 9276
+ 9240 9253 9292 9306 15431 15434
+ 9240 9248 9283 9306 9318 15433
+ 9182 9213 9269 9552 15439 15457
+ 9256 9277 9295 9349 9354 9378
+ 8867 8969 9074 9325 9761 9935 15475
+ 9283 9293 9318 9322 9355 9360
+ 9208 9213 9298 9510 9552 15435
+ 9303 9315 9331 9372 9384 15442
+ 9264 9309 9333 9370 9404 9415
+ 9315 9323 9361 9384 9391 15440
+ 9311 9322 9344 9360 9402 9409
+ 9307 9338 9362 9400 9435 15449
+ 9329 9351 9357 9397 9405 15453
+ 9269 9273 9411 9534 15457
+ 9361 9376 9391 9417 9434 9443
+ 9257 9298 9340 9462 9510 9581
+ 9362 9419 9435 9461 9474 15444
+ 9319 9369 9387 9465 9568 15462
+ 9028 9117 9274 9550 9885 10046
+ 9333 9347 9404 9421 9494 9502
+ 9397 9405 9438 9449 9467 15445
+ 9381 9394 9406 9444 15458 15460
+ 9236 9287 9366 9533 9612 15478
+ 9393 9406 9429 9475 9491 15458
+ 9269 9534 9552 15435 15446 15476
+ 9406 9491 9508 15454 15456 15460
+ 9419 9431 9461 9476 9497 9505
+ 9444 9508 15454 15458 15464 15465
+ 9443 9455 9481 9506 9526 9544
+ 9387 9462 9568 9597 15450 15472
+ 9460 9477 9498 9528 9542 9564
+ 9444 9463 9545 9599 15460 15465
+ 9508 9570 9599 15460 15464 15470
+ 9529 9560 9566 9598 9613 9629
+ 9535 9556 9576 9607 9621 9647
+ 9526 9544 9567 9607 9619 9651
+ 9554 9579 9588 9625 9631 9642
+ 9570 9599 9603 9654 15465 15477
+ 9580 9596 9609 9635
+ 9568 9597 9644 9686 9700 15462
+ 9411 9478 9534 9676 9727 15483
+ 9352 9468 9533 9744 9802 15480
+ 9074 9274 9885 9935 10139 15437
+ 9534 9552 9727 9755 9816 15457
+ 9599 9654 9659 9716 9734 15470
+ 9533 9612 9744 9771 9839 15455
+ 9704 9717 9736 9772
+ 9468 9680 9802 9912 9944 15474
+ 9729 9738 9752 9778 9790 9803
+ 9701 9716 9743 9789 9791 9823
+ 9676 9727 9829 9879 9932 15473
+ 9773 9783 9853 9859 9874
+ 9823 9846 9871 9887 9896
+ 9876 9883 9907 9939
+ 9784 9815 9949 10004 10025 10100
+ 9888 9905 9926 9955 9976 9985
+ 9906 9908 9936 9946 9969 9973
+ 9904 9911 9937 9952 9972 9978
+ 9854 9892 9956 9975 10021 10027
+ 9940 9946 9973 9982 10007 10014
+ 9921 9943 9966 10029 10051 10085
+ 10016 10024 10054 10076
+ 10058 10075 10080 10107 10112 10121
+ 10127 10132 10148 10165 10179 10183
+ 10100 10152 10167 10217 10263 10274
+ 10203 10204 10230 10233 10251 10253
+ 10248 10260 10289 10307
+ 10255 10256 10281 10285 10310 10313
+ 10264 10296 10297 10332 10367 10369 15502
+ 10296 10320 10364 10369 10385 15501
+ 10323 10352 10382 10394 10434 10444
+ 10370 10387 10388 10421 10423 10432
+ 10280 10334 10415 10576 10596 10685
+ 10530 10546 10547 10574 10580 10591
+ 10645 10654 10659 10683 10691 10697
+ 10694 10705 10711 10732 10754 10755
+ 10719 10722 10736 10746 10759 10766
+ 10770 10772 10811 10847 10873
+ 10738 10788 10818 10883 10943 15514
+ 10851 10860 10868 10888 10898 10910
+ 10852 10870 10920 10931 10967 10969
+ 10818 10908 10943 11015 11029 15511
+ 11151 11162 11174 11197 11217 11229
+ 11155 11156 11192 11231
+ 11255 11264 11303 11349 11385 11427
+ 11383 11414 11416 11457 11470 11522
+ 11364 11375 11508 11518 11648 11763
+ 11524 11533 11562 11580 11601 11613
+ 11560 11596 11605 11637 11673 11676
+ 11569 11614 11616 11681 11722 11803
+ 11589 11604 11650 11659 11714 11731
+ 11609 11632 11642 11698 11704 11741
+ 11626 11652 11662 11715 11721 11787
+ 11703 11772 11783 11817
+ 11755 11757 11800 11822 11824
+ 11743 11752 11792 11845 11851 11882
+ 11790 11827 11851 11870 11916 11926
+ 11799 11820 11846 11932
+ 11934 11977 11980 12017 12055 12073
+ 11963 11981 12005 12050 12069 12093
+ 12022 12062 12082 12123 12135
+ 12044 12096 12102 12213 12222 12276
+ 12099 12125 12129 12184 12192 12227
+ 12161 12179 12182 12247 12251 12289
+ 12229 12259 12283 12358
+ 12271 12290 12336 12342 12378 12392
+ 12183 12253 12274 12441 12450 12561
+ 12307 12342 12356 12407 12422 12444
+ 12226 12284 12325 12397 12532 12605
+ 12140 12231 12389 12476 12628 12736
+ 12152 12295 12317 12549 12913 13041
+ 8166 10539 10767 13752 15579 15601
+ 12406 12446 12467 12538 12568 12589
+ 12432 12479 12480 12578 12584 12631
+ 12490 12503 12535 12564 12587 12602
+ 12541 12611 12653 15550
+ 12552 12557 12604 12615 12639
+ 12541 12574 12653 12655 12690 15548
+ 12566 12575 12607 12627 12664 12674
+ 12592 12593 12626 12635 12679 12688
+ 12573 12610 12612 12689 12740 15556
+ 12599 12608 12662 12669 12698
+ 12589 12613 12660 12685 12738 12743
+ 12612 12655 12734 12740 12783 15553
+ 12646 12685 12689 12738 12769 12801
+ 12766 12774 12809 12835 12865 12872
+ 12801 12815 12859 12896 12955 12972
+ 12834 12843 12875 12893 12924 12932
+ 12830 12854 12870 12914 12964 15563
+ 12867 12886 12898 12936 12939
+ 12870 12911 12964 12981 13004 15561
+ 12932 12945 12956 12977 13023 13079 13097
+ 12963 12981 13002 13034 13050 13066
+ 13070 13084 13087 13116 13117 13140
+ 13019 13039 13058 13083 13151 13156
+ 13044 13091 13092 13173 13177 13205
+ 13153 13159 13227 13259 13310 13342
+ 13250 13252 13273 13280 13303 13307
+ 13262 13287 13298 13349 13393 13408
+ 13763 13786 13787 13825 13846 15573
+ 13786 13802 13844 13846 13869 15572
+ 13924 13967 13969 13987
+ 13906 13919 13929 13964 13972 13986
+ 13959 13976 13977 14017
+ 13981 13983 14031 14054 14075 14085
+ 13990 14000 14022 14047 14063 14082
+ 10767 12039 14823 14938 15544 15601
+ 14100 14118 14122 14166 14171 14188
+ 14117 14138 14144 14181 14207 15585
+ 14121 14139 14149 14178 14190 14205
+ 14155 14185 14197 14212
+ 14129 14149 14157 14190 14200 14217
+ 14144 14171 14207 14214 14236 15581
+ 14166 14184 14188 14221 14235 15588
+ 14186 14206 14213 14249
+ 14221 14235 14277 14415 15586
+ 14222 14238 14246 14276 14286 14302
+ 14236 14251 14258 14298 14306 14330
+ 14268 14299 14312 14322
+ 14263 14278 14291 14318 14329 14343
+ 14279 14296 14309 14332 14348 14356
+ 14286 14302 14314 14339 14350 14366
+ 14353 14368 14381 14413 14424 14437
+ 14330 14342 14395 14407 14462 14536
+ 14386 14401 14413 14442 14453 14471
+ 14437 14453 14465 14497 14507 14521
+ 14454 14466 14485 14501 14523 14531
+ 14493 14508 14519 14551
+ 13752 14768 14938 14964 15544 15579
+ 14598 14605 14633 14638 14679 14686
+ 14701 14716 14720 14750 14754 14767
+ 14708 14714 14736 14756 14775
+ 14735 14748 14755 14770 14784 14792
+ 14857 14862 14872 14880 14891
\ No newline at end of file

Added: sandbox/SOC/2008/BGL_Python/test/distributed/data/4elt.graph.part.2
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/test/distributed/data/4elt.graph.part.2 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,15606 @@
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+1
+0
+0
+1
+0
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+0
+0
+1
+1
+0
+1
+1
+0
+0
+0
+1
+1
+0
+1
+1
+1
+1
+0
+1
+0
+1
+1
+0
+0
+0
+1
+1
+0
+1
+0
+0
+0
+1
+1
+1
+1
+0
+0
+0
+1
+1
+0
+1
+1
+1
+0
+0
+1
+1
+0
+0
+0
+0
+0
+1
+0
+0
+1
+0
+1
+0
+1
+1
+1
+0
+1
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+1
+0
+1
+0
+0
+1
+0
+0
+0
+0
+0
+1
+0
+1
+0
+0
+0
+0
+0
+1
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+1
+0
+0
+0
+0
+0
+0
+0
+1
+1
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+1
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+1
+1
+1
+0
+0
+0
+0
+0
+1
+0
+1
+0
+1
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+1
+1
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+1
+0
+0
+1
+0
+1
+1
+0
+1
+1
+0
+0
+0
+0
+1
+0
+1
+0
+0
+0
+0
+1
+0
+0
+0
+0
+1
+0
+1
+1
+0
+1
+0
+0
+0
+0
+0
+0
+1
+1
+1
+0
+0
+0
+1
+1
+1
+0
+0
+1
+0
+0
+1
+1
+0
+0
+1
+1
+1
+1
+1
+1
+1
+0
+1
+0
+1
+0
+0
+0
+0
+0
+1
+1
+1
+0
+1
+1
+1
+0
+1
+1
+0
+0
+1
+1
+0
+1
+1
+1
+0
+0
+1
+1
+1
+1
+0
+0
+0
+1
+0
+1
+1
+1
+0
+0
+0
+0
+1
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+1
+0
+0
+1
+0
+1
+1
+1
+1
+1
+0
+0
+1
+1
+0
+0
+0
+1
+1
+0
+1
+0
+1
+1
+1
+0
+1
+0
+0
+1
+1
+1
+0
+1
+0
+0
+1
+1
+1
+1
+0
+1
+1
+1
+0
+1
+1
+1
+0
+1
+0
+1
+0
+1
+1
+1
+1
+1
+1
+1
+0
+1
+0
+0
+0
+1
+1
+1
+0
+0
+1
+1
+0
+0
+1
+0
+1
+1
+1
+0
+1
+1
+0
+0
+1
+1
+0
+1
+0
+1
+1
+0
+1
+1
+0
+1
+0
+0
+1
+1
+0
+0
+1
+1
+1
+1
+0
+0
+1
+1
+1
+0
+0
+1
+1
+0
+1
+1
+0
+1
+0
+1
+1
+0
+0
+0
+1
+0
+1
+1
+0
+0
+1
+0
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+1
+0
+1
+0
+1
+0
+1
+0
+0
+1
+1
+1
+0
+1
+0
+1
+1
+0
+1
+0
+1
+1
+1
+0
+0
+1
+0
+0
+1
+0
+0
+1
+1
+1
+0
+1
+0
+1
+1
+0
+1
+1
+0
+1
+1
+0
+1
+1
+0
+0
+1
+0
+0
+1
+1
+1
+1
+0
+1
+1
+1
+0
+1
+0
+1
+0
+0
+1
+0
+1
+1
+0
+1
+0
+1
+0
+1
+0
+1
+1
+0
+0
+1
+1
+0
+1
+0
+1
+1
+1
+1
+0
+1
+0
+1
+1
+1
+0
+1
+1
+1
+0
+1
+0
+0
+0
+0
+0
+1
+1
+1
+0
+0
+0
+1
+1
+0
+1
+1
+0
+1
+0
+1
+1
+0
+0
+1
+1
+1
+1
+0
+1
+1
+0
+1
+1
+0
+1
+0
+0
+1
+1
+0
+0
+0
+1
+0
+1
+1
+0
+1
+0
+1
+1
+0
+0
+1
+0
+1
+1
+1
+1
+1
+0
+0
+0
+0
+0
+1
+1
+1
+0
+0
+1
+1
+1
+0
+0
+0
+1
+1
+1
+1
+0
+0
+1
+0
+1
+1
+0
+1
+0
+0
+1
+0
+1
+0
+0
+0
+1
+1
+1
+0
+0
+0
+1
+1
+1
+0
+1
+1
+0
+0
+0
+1
+1
+0
+0
+1
+0
+1
+1
+0
+0
+0
+1
+1
+1
+0
+1
+1
+0
+1
+1
+0
+1
+0
+1
+0
+1
+0
+1
+1
+0
+1
+0
+1
+1
+0
+1
+1
+0
+1
+0
+1
+0
+0
+0
+1
+1
+0
+1
+0
+1
+1
+1
+1
+0
+1
+1
+1
+0
+1
+1
+1
+0
+1
+0
+1
+0
+0
+0
+0
+0
+1
+1
+1
+1
+1
+1
+1
+1
+0
+1
+0
+1
+1
+1
+0
+1
+0
+1
+0
+1
+0
+0
+1
+1
+0
+0
+1
+1
+1
+0
+1
+1
+1
+1
+1
+0
+1
+1
+0
+1
+0
+0
+1
+0
+1
+1
+0
+1
+0
+1
+1
+1
+0
+0
+1
+0
+1
+1
+1
+0
+1
+0
+1
+1
+1
+0
+0
+1
+1
+1
+0
+1
+1
+0
+1
+1
+1
+1
+0
+0
+1
+1
+0
+0
+1
+1
+1
+0
+1
+1
+0
+1
+1
+1
+1
+0
+1
+1
+0
+0
+0
+1
+1
+1
+0
+0
+1
+1
+0
+1
+0
+1
+0
+1
+0
+1
+0
+0
+0
+1
+1
+0
+1
+1
+0
+1
+1
+1
+0
+1
+1
+0
+1
+1
+0
+1
+0
+0
+1
+1
+1
+0
+1
+0
+0
+1
+0
+1
+0
+1
+0
+1
+0
+0
+1
+1
+1
+0
+1
+0
+1
+0
+1
+0
+0
+1
+1
+0
+1
+0
+0
+1
+1
+1
+1
+1
+1
+0
+0
+0
+0
+1
+1
+1
+1
+1
+0
+0
+1
+1
+0
+1
+1
+0
+0
+1
+1
+0
+1
+0
+0
+1
+0
+1
+0
+0
+0
+1
+1
+0
+1
+1
+1
+1
+1
+0
+1
+1
+0
+1
+1
+1
+1
+0
+0
+0
+0
+1
+1
+0
+0
+1
+1
+1
+0
+1
+0
+1
+1
+1
+1
+0
+1
+1
+0
+0
+0
+1
+1
+1
+1
+0
+1
+1
+0
+1
+1
+0
+1
+1
+1
+1
+1
+0
+0
+1
+1
+1
+0
+1
+0
+0
+1
+0
+0
+1
+1
+0
+1
+0
+1
+0
+1
+1
+0
+1
+0
+1
+1
+1
+0
+1
+1
+1
+0
+0
+1
+1
+1
+1
+1
+1
+0
+1
+1
+0
+1
+0
+1
+1
+1
+1
+1
+1
+1
+0
+0
+1
+1
+0
+0
+1
+1
+0
+1
+1
+1
+0
+0
+1
+0
+1
+0
+1
+0
+1
+0
+1
+0
+1
+0
+1
+0
+1
+1
+1
+1
+1
+0
+0
+1
+1
+1
+1
+1
+1
+0
+0
+1
+1
+1
+1
+0
+0
+1
+1
+0
+1
+1
+0
+1
+0
+0
+0
+1
+0
+1
+0
+1
+0
+1
+1
+0
+1
+1
+1
+1
+0
+1
+1
+0
+1
+0
+0
+0
+1
+1
+1
+1
+1
+0
+0
+1
+1
+0
+0
+1
+0
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+0
+1
+1
+0
+0
+1
+0
+1
+1
+1
+0
+1
+0
+0
+0
+1
+1
+0
+1
+1
+0
+0
+0
+1
+0
+0
+1
+1
+1
+0
+0
+1
+0
+1
+1
+0
+0
+1
+0
+1
+1
+1
+1
+1
+0
+0
+1
+0
+0
+1
+0
+0
+1
+1
+1
+1
+0
+0
+0
+0
+1
+0
+1
+0
+1
+1
+0
+0
+1
+1
+1
+0
+1
+1
+0
+1
+0
+1
+0
+1
+0
+0
+1
+0
+0
+0
+1
+1
+0
+0
+1
+1
+0
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+1
+1
+1
+0
+0
+0
+1
+0
+1
+0
+1
+1
+1
+1
+1
+0
+1
+1
+0
+0
+0
+1
+0
+1
+1
+1
+1
+1
+0
+0
+0
+1
+0
+1
+0
+1
+0
+1
+1
+1
+1
+0
+0
+1
+1
+1
+0
+0
+0
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+1
+0
+0
+0
+1
+1
+0
+0
+1
+1
+1
+1
+1
+0
+0
+0
+0
+1
+1
+1
+0
+0
+1
+0
+0
+1
+1
+1
+1
+1
+0
+0
+1
+1
+1
+0
+0
+1
+1
+1
+1
+0
+1
+1
+1
+0
+0
+0
+0
+0
+1
+1
+1
+0
+1
+1
+0
+1
+1
+1
+1
+0
+1
+0
+1
+1
+0
+0
+1
+0
+1
+1
+0
+1
+1
+1
+0
+0
+1
+1
+1
+1
+0
+0
+1
+1
+0
+0
+0
+1
+1
+1
+0
+1
+0
+0
+1
+1
+0
+0
+1
+1
+1
+0
+1
+0
+0
+0
+1
+1
+1
+0
+1
+1
+1
+0
+1
+0
+0
+1
+0
+0
+1
+0
+1
+1
+1
+1
+0
+1
+0
+0
+0
+0
+1
+1
+1
+1
+1
+1
+0
+1
+1
+0
+1
+0
+0
+0
+1
+1
+1
+1
+1
+0
+1
+0
+1
+1
+0
+1
+0
+0
+0
+1
+1
+1
+1
+1
+1
+0
+1
+1
+0
+1
+0
+0
+1
+0
+1
+1
+1
+1
+0
+0
+1
+1
+0
+1
+0
+1
+0
+0
+1
+0
+1
+1
+0
+1
+1
+1
+0
+0
+0
+0
+1
+1
+0
+1
+1
+0
+1
+0
+1
+1
+1
+1
+1
+0
+1
+0
+0
+1
+1
+1
+1
+0
+1
+0
+1
+0
+1
+1
+0
+1
+1
+1
+0
+0
+1
+0
+1
+1
+1
+1
+0
+0
+0
+0
+1
+0
+1
+1
+0
+1
+1
+1
+0
+0
+0
+1
+1
+1
+1
+1
+0
+1
+0
+0
+0
+1
+1
+1
+0
+0
+0
+1
+1
+1
+1
+1
+0
+1
+1
+0
+0
+1
+1
+1
+0
+1
+1
+1
+1
+1
+0
+0
+1
+1
+0
+0
+1
+1
+1
+1
+1
+0
+0
+1
+0
+1
+1
+0
+0
+1
+1
+0
+1
+1
+0
+0
+1
+1
+0
+1
+0
+0
+1
+0
+0
+1
+1
+1
+1
+1
+1
+1
+1
+0
+1
+0
+0
+0
+0
+1
+1
+1
+0
+0
+1
+1
+1
+1
+1
+0
+0
+1
+1
+0
+0
+0
+1
+0
+1
+0
+1
+1
+0
+1
+1
+0
+0
+0
+0
+1
+1
+0
+1
+0
+0
+1
+0
+1
+0
+1
+1
+1
+1
+0
+1
+1
+0
+0
+1
+0
+1
+0
+0
+1
+0
+1
+1
+0
+0
+0
+1
+1
+0
+1
+1
+1
+1
+1
+0
+0
+0
+1
+1
+1
+1
+0
+0
+1
+0
+0
+0
+0
+0
+1
+0
+1
+1
+1
+0
+1
+0
+1
+0
+0
+1
+1
+1
+1
+0
+0
+1
+1
+0
+1
+0
+1
+1
+1
+1
+0
+0
+1
+1
+0
+0
+0
+0
+1
+1
+1
+1
+0
+1
+1
+1
+0
+1
+1
+1
+1
+0
+1
+1
+0
+0
+1
+1
+1
+0
+0
+0
+0
+0
+1
+1
+1
+1
+0
+1
+0
+1
+1
+0
+1
+1
+0
+0
+0
+1
+0
+1
+1
+1
+1
+0
+1
+1
+0
+0
+1
+1
+0
+1
+0
+1
+0
+0
+1
+1
+1
+0
+0
+0
+1
+1
+0
+1
+1
+1
+1
+0
+1
+1
+0
+0
+1
+1
+1
+1
+0
+1
+1
+0
+1
+1
+1
+1
+0
+1
+0
+1
+0
+1
+0
+0
+1
+1
+0
+1
+1
+1
+0
+0
+0
+1
+1
+1
+1
+1
+0
+1
+0
+1
+1
+0
+1
+1
+1
+1
+1
+0
+0
+1
+1
+0
+1
+1
+0
+0
+1
+1
+1
+1
+1
+0
+1
+0
+1
+1
+0
+0
+0
+1
+1
+1
+1
+0
+0
+1
+1
+1
+0
+1
+1
+1
+0
+0
+1
+1
+1
+1
+1
+0
+0
+0
+0
+0
+0
+0
+1
+1
+1
+0
+0
+0
+1
+1
+0
+1
+1
+0
+0
+0
+1
+1
+1
+1
+0
+0
+1
+1
+1
+1
+1
+1
+1
+1
+0
+0
+1
+1
+1
+1
+1
+1
+0
+0
+1
+1
+1
+0
+1
+0
+1
+0
+1
+0
+0
+1
+1
+0
+1
+1
+1
+0
+1
+1
+0
+1
+1
+0
+1
+1
+0
+0
+1
+1
+1
+1
+1
+1
+1
+0
+0
+0
+0
+1
+1
+0
+1
+1
+0
+0
+1
+0
+0
+1
+1
+1
+1
+1
+1
+0
+1
+1
+0
+0
+1
+1
+1
+1
+1
+1
+0
+1
+1
+0
+1
+0
+1
+0
+1
+0
+1
+0
+1
+0
+0
+1
+0
+0
+1
+1
+1
+0
+1
+0
+0
+1
+0
+0
+1
+0
+1
+1
+1
+1
+1
+0
+0
+1
+1
+0
+0
+1
+0
+1
+0
+0
+1
+1
+0
+1
+0
+1
+1
+1
+1
+1
+1
+0
+1
+0
+0
+0
+1
+1
+1
+1
+0
+0
+1
+0
+1
+0
+0
+0
+1
+1
+1
+1
+1
+1
+1
+0
+0
+1
+0
+1
+0
+1
+1
+0
+0
+1
+0
+0
+0
+1
+1
+1
+1
+1
+1
+0
+1
+0
+1
+1
+1
+1
+0
+1
+1
+0
+0
+1
+0
+0
+1
+1
+1
+1
+1
+0
+0
+1
+1
+1
+1
+0
+1
+1
+1
+1
+0
+0
+0
+1
+0
+0
+1
+1
+1
+0
+1
+1
+1
+1
+1
+0
+0
+1
+0
+1
+0
+1
+0
+0
+0
+0
+0
+1
+1
+0
+1
+0
+1
+0
+1
+0
+1
+1
+0
+1
+0
+1
+0
+1
+0
+1
+1
+1
+1
+0
+0
+1
+0
+1
+1
+0
+1
+1
+0
+1
+0
+1
+0
+1
+0
+0
+1
+1
+1
+0
+1
+1
+0
+1
+0
+1
+1
+0
+1
+1
+0
+1
+0
+0
+1
+0
+1
+1
+0
+0
+1
+0
+0
+0
+1
+0
+0
+1
+0
+1
+1
+0
+1
+0
+1
+1
+0
+0
+1
+1
+1
+0
+1
+0
+0
+1
+1
+1
+0
+1
+0
+1
+0
+1
+1
+1
+1
+0
+0
+1
+1
+0
+1
+1
+1
+0
+1
+1
+0
+1
+0
+0
+1
+0
+1
+0
+0
+0
+1
+1
+1
+0
+1
+0
+1
+1
+0
+1
+0
+0
+1
+0
+1
+1
+1
+0
+0
+1
+1
+1
+0
+1
+0
+1
+1
+1
+0
+1
+1
+1
+0
+1
+1
+0
+1
+0
+0
+1
+0
+1
+1
+1
+1
+1
+0
+0
+0
+0
+1
+1
+0
+1
+1
+0
+0
+1
+1
+1
+0
+0
+1
+1
+0
+1
+0
+0
+1
+0
+1
+1
+1
+0
+0
+1
+0
+0
+1
+0
+1
+0
+1
+1
+0
+1
+0
+1
+0
+1
+0
+1
+1
+0
+0
+1
+1
+0
+1
+1
+0
+0
+0
+0
+1
+1
+1
+0
+0
+0
+1
+1
+0
+1
+0
+0
+1
+1
+0
+1
+0
+0
+1
+0
+1
+1
+0
+1
+0
+1
+1
+0
+0
+0
+0
+1
+1
+1
+0
+0
+0
+1
+1
+1
+1
+0
+0
+1
+1
+0
+0
+0
+0
+1
+1
+1
+0
+1
+0
+1
+0
+0
+0
+0
+0
+1
+1
+1
+1
+1
+0
+1
+1
+1
+0
+1
+0
+0
+0
+0
+1
+1
+1
+0
+1
+1
+0
+1
+1
+0
+0
+0
+0
+0
+1
+0
+1
+1
+0
+1
+0
+1
+1
+0
+1
+1
+0
+1
+1
+1
+0
+0
+1
+1
+1
+0
+1
+0
+0
+1
+1
+0
+0
+0
+0
+1
+0
+1
+1
+1
+0
+1
+1
+1
+1
+0
+0
+1
+0
+1
+0
+1
+0
+0
+0
+1
+1
+0
+1
+1
+1
+0
+0
+0
+0
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+0
+0
+0
+1
+0
+1
+1
+1
+0
+1
+1
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+1
+1
+1
+0
+0
+1
+1
+0
+1
+1
+1
+1
+0
+1
+1
+0
+0
+0
+1
+1
+1
+0
+1
+1
+1
+0
+0
+1
+0
+0
+1
+1
+0
+0
+0
+1
+0
+1
+0
+0
+1
+1
+0
+0
+0
+1
+1
+1
+0
+0
+1
+1
+1
+0
+1
+0
+1
+1
+1
+1
+0
+1
+0
+1
+1
+1
+1
+0
+0
+1
+0
+1
+1
+0
+0
+0
+1
+1
+1
+1
+0
+1
+0
+0
+1
+1
+0
+0
+1
+1
+0
+0
+0
+1
+1
+1
+0
+1
+1
+1
+0
+0
+1
+0
+0
+1
+0
+0
+1
+1
+0
+0
+0
+1
+0
+1
+0
+0
+1
+1
+0
+1
+0
+1
+1
+1
+0
+1
+1
+1
+0
+0
+0
+1
+0
+1
+0
+0
+0
+1
+0
+1
+0
+0
+0
+1
+0
+1
+1
+1
+0
+0
+1
+1
+0
+0
+1
+0
+1
+1
+0
+1
+1
+0
+0
+1
+0
+0
+0
+0
+1
+0
+1
+0
+0
+1
+0
+1
+0
+0
+0
+0
+1
+1
+1
+1
+0
+1
+1
+0
+1
+1
+0
+0
+0
+1
+0
+1
+0
+1
+0
+1
+0
+1
+0
+1
+1
+0
+0
+1
+1
+0
+0
+1
+0
+0
+1
+0
+1
+0
+1
+0
+1
+0
+1
+0
+1
+0
+1
+1
+1
+0
+0
+1
+0
+1
+0
+1
+1
+1
+0
+1
+0
+1
+0
+0
+1
+1
+0
+0
+1
+0
+0
+1
+1
+0
+0
+1
+1
+1
+0
+0
+0
+1
+1
+1
+1
+1
+0
+1
+1
+1
+0
+1
+0
+0
+0
+1
+1
+1
+1
+1
+0
+0
+1
+0
+0
+0
+0
+0
+0
+1
+1
+1
+0
+0
+0
+1
+0
+0
+1
+0
+1
+1
+0
+1
+1
+1
+0
+0
+0
+0
+1
+0
+0
+1
+0
+1
+0
+0
+1
+0
+0
+1
+1
+1
+1
+1
+0
+1
+0
+0
+1
+1
+0
+1
+0
+0
+0
+1
+0
+1
+0
+0
+1
+1
+0
+1
+0
+0
+1
+1
+1
+0
+0
+0
+0
+1
+1
+0
+1
+1
+0
+1
+0
+0
+1
+1
+0
+0
+1
+1
+1
+0
+0
+1
+1
+0
+0
+1
+0
+0
+1
+1
+0
+0
+1
+1
+0
+0
+1
+0
+0
+1
+0
+0
+1
+0
+0
+1
+1
+1
+1
+0
+1
+1
+0
+1
+1
+1
+0
+0
+1
+1
+1
+1
+0
+0
+0
+0
+1
+0
+1
+1
+1
+1
+1
+0
+1
+0
+1
+0
+1
+0
+0
+0
+1
+1
+0
+0
+1
+1
+1
+1
+0
+0
+1
+1
+1
+1
+0
+1
+1
+0
+0
+1
+1
+1
+1
+0
+0
+1
+1
+0
+0
+0
+1
+1
+0
+0
+1
+1
+0
+1
+1
+0
+1
+1
+0
+1
+0
+1
+1
+1
+0
+1
+0
+1
+1
+1
+0
+0
+1
+0
+0
+1
+0
+0
+1
+0
+1
+0
+1
+1
+1
+1
+0
+1
+1
+1
+0
+0
+1
+1
+0
+1
+1
+1
+0
+1
+1
+1
+0
+0
+0
+1
+0
+1
+1
+0
+1
+0
+1
+1
+0
+1
+0
+1
+1
+0
+1
+1
+1
+0
+1
+1
+1
+1
+0
+1
+1
+0
+0
+1
+0
+0
+0
+1
+0
+0
+0
+1
+1
+1
+0
+0
+1
+1
+0
+1
+1
+0
+0
+1
+1
+0
+1
+1
+0
+0
+0
+1
+1
+0
+1
+0
+1
+1
+0
+1
+1
+1
+0
+1
+0
+1
+0
+1
+0
+0
+1
+1
+0
+1
+0
+1
+1
+1
+0
+1
+0
+0
+0
+0
+1
+0
+1
+0
+0
+1
+0
+0
+0
+0
+1
+1
+0
+0
+0
+1
+0
+1
+1
+1
+1
+0
+1
+0
+1
+1
+1
+1
+1
+0
+0
+0
+1
+0
+1
+1
+1
+0
+0
+0
+0
+1
+0
+1
+1
+1
+0
+0
+1
+0
+1
+1
+1
+0
+1
+0
+1
+1
+1
+0
+1
+0
+1
+0
+0
+1
+1
+1
+1
+0
+0
+0
+1
+0
+1
+0
+1
+1
+1
+0
+1
+1
+0
+0
+1
+0
+1
+0
+0
+1
+1
+0
+1
+0
+0
+1
+1
+0
+1
+1
+0
+1
+1
+1
+0
+1
+0
+1
+1
+1
+0
+0
+1
+1
+1
+0
+0
+0
+0
+1
+1
+0
+1
+1
+0
+0
+1
+1
+0
+1
+0
+1
+1
+0
+0
+1
+0
+0
+1
+0
+1
+1
+0
+0
+1
+1
+0
+0
+1
+1
+1
+0
+0
+1
+0
+0
+1
+0
+0
+1
+0
+1
+0
+1
+1
+0
+1
+0
+0
+1
+0
+1
+0
+1
+0
+0
+1
+1
+0
+1
+0
+1
+1
+0
+0
+1
+0
+0
+1
+0
+0
+1
+0
+1
+0
+1
+1
+0
+0
+1
+0
+1
+0
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+1
+1
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+1
+0
+0
+1
+0
+1
+1
+0
+1
+1
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+1
+0
+1
+1
+0
+1
+0
+0
+0
+0
+1
+1
+0
+1
+0
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+0
+0
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+0
+1
+0
+0
+0
+1
+1
+0
+0
+0
+0
+0
+1
+1
+0
+1
+1
+1
+1
+0
+0
+1
+1
+1
+1
+1
+1
+0
+1
+1
+1
+0
+0
+0
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+0
+0
+0
+0
+1
+0
+1
+0
+1
+0
+1
+0
+0
+0
+1
+1
+0
+0
+1
+1
+1
+0
+0
+1
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+1
+1
+0
+0
+0
+1
+0
+0
+1
+1
+0
+0
+1
+1
+1
+0
+1
+1
+1
+1
+0
+1
+1
+1
+0
+1
+1
+1
+1
+0
+1
+0
+0
+1
+1
+0
+0
+0
+0
+1
+1
+1
+0
+0
+0
+1
+1
+0
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+1
+0
+1
+0
+1
+0
+0
+1
+0
+1
+1
+0
+1
+0
+1
+1
+1
+0
+0
+1
+0
+1
+0
+0
+1
+0
+1
+1
+1
+1
+1
+0
+1
+0
+1
+0
+0
+1
+1
+1
+1
+1
+0
+0
+1
+1
+1
+1
+0
+1
+0
+0
+1
+1
+0
+0
+1
+1
+0
+1
+0
+0
+0
+1
+0
+0
+1
+1
+0
+0
+1
+0
+0
+1
+1
+1
+0
+1
+0
+1
+0
+1
+0
+1
+1
+1
+1
+1
+1
+0
+0
+1
+1
+0
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+0
+1
+1
+0
+0
+1
+0
+1
+0
+1
+0
+1
+1
+1
+1
+1
+0
+1
+0
+1
+1
+1
+1
+1
+1
+0
+0
+1
+0
+1
+0
+1
+1
+1
+0
+1
+0
+1
+0
+1
+0
+1
+1
+0
+0
+0
+0
+0
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+1
+0
+0
+1
+1
+0
+0
+1
+0
+1
+0
+1
+0
+1
+0
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+0
+0
+1
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+0
+1
+1
+1
+1
+0
+1
+0
+0
+1
+0
+0
+0
+1
+0
+0
+1
+1
+1
+1
+0
+1
+1
+1
+1
+0
+1
+0
+1
+0
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+0
+0
+0
+1
+1
+1
+1
+0
+0
+1
+1
+1
+0
+1
+1
+1
+0
+1
+0
+0
+1
+1
+0
+1
+1
+1
+1
+0
+1
+1
+1
+1
+0
+1
+1
+0
+1
+1
+0
+0
+0
+1
+0
+1
+1
+1
+0
+1
+0
+1
+1
+1
+1
+1
+0
+0
+1
+1
+0
+0
+1
+1
+0
+1
+0
+1
+1
+1
+0
+0
+0
+1
+0
+1
+1
+1
+0
+1
+1
+1
+1
+1
+0
+1
+0
+1
+0
+1
+1
+1
+1
+1
+0
+0
+1
+1
+1
+0
+0
+0
+0
+1
+0
+1
+1
+1
+0
+1
+1
+1
+0
+0
+1
+0
+0
+0
+1
+0
+1
+0
+1
+1
+0
+0
+1
+0
+0
+0
+1
+0
+1
+0
+1
+1
+0
+0
+1
+1
+1
+1
+0
+1
+1
+1
+1
+0
+1
+0
+1
+1
+0
+1
+1
+0
+1
+1
+0
+1
+1
+1
+0
+0
+1
+1
+1
+0
+1
+0
+1
+0
+0
+1
+1
+0
+1
+0
+1
+1
+0
+1
+1
+1
+1
+0
+0
+1
+0
+0
+0
+1
+1
+0
+1
+1
+0
+0
+1
+1
+0
+1
+0
+1
+1
+0
+0
+1
+1
+0
+1
+1
+1
+1
+1
+0
+0
+1
+0
+1
+0
+0
+1
+0
+1
+0
+1
+1
+0
+1
+0
+0
+1
+0
+1
+0
+0
+0
+0
+1
+0
+1
+1
+1
+1
+0
+1
+1
+0
+1
+0
+1
+0
+0
+0
+1
+1
+1
+0
+1
+1
+1
+0
+0
+1
+1
+1
+1
+1
+1
+0
+0
+1
+1
+0
+1
+1
+0
+0
+1
+0
+1
+0
+0
+0
+1
+1
+1
+1
+0
+1
+0
+0
+1
+0
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+0
+0
+1
+1
+1
+0
+1
+0
+1
+0
+1
+0
+0
+1
+1
+1
+0
+1
+1
+1
+1
+0
+1
+0
+1
+1
+0
+1
+1
+0
+0
+0
+1
+0
+1
+1
+1
+1
+1
+1
+0
+0
+0
+1
+0
+0
+1
+0
+1
+1
+1
+0
+0
+0
+0
+1
+0
+1
+1
+0
+1
+1
+1
+0
+1
+0
+1
+1
+0
+0
+1
+1
+1
+1
+1
+1
+1
+0
+1
+0
+0
+1
+0
+0
+1
+1
+0
+0
+0
+0
+0
+1
+0
+1
+1
+0
+0
+0
+1
+1
+0
+0
+1
+1
+1
+0
+1
+1
+1
+1
+0
+0
+1
+1
+1
+1
+0
+1
+0
+0
+0
+1
+0
+1
+1
+0
+0
+0
+0
+0
+0
+0
+0
+1
+1
+0
+0
+1
+1
+1
+0
+1
+1
+0
+1
+1
+1
+1
+0
+1
+0
+1
+0
+0
+1
+0
+1
+0
+0
+1
+1
+0
+0
+1
+1
+0
+0
+1
+1
+0
+0
+0
+1
+0
+0
+1
+1
+1
+1
+1
+1
+0
+1
+1
+0
+1
+1
+0
+1
+0
+1
+0
+0
+0
+0
+0
+1
+1
+1
+1
+0
+1
+0
+1
+1
+1
+0
+0
+1
+0
+0
+1
+1
+0
+0
+0
+0
+0
+0
+1
+0
+0
+1
+1
+0
+0
+1
+0
+1
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+1
+1
+0
+1
+1
+0
+0
+1
+1
+0
+0
+0
+0
+0
+1
+1
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+1
+1
+0
+0
+1
+0
+0
+0
+0
+1
+0
+0
+1
+1
+0
+0
+0
+0
+1
+1
+0
+0
+0
+1
+0
+1
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+1
+0
+1
+0
+0
+0
+0
+0
+1
+1
+0
+0
+0
+1
+0
+0
+0
+1
+1
+0
+0
+0
+0
+0
+0
+1
+1
+0
+0
+0
+1
+0
+0
+1
+0
+0
+0
+0
+0
+1
+1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+1
+1
+0
+1
+0
+0
+1
+0
+0
+0
+1
+0
+1
+1
+1
+0
+0
+0
+0
+0
+0
+0
+1
+1
+1
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+1
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+1
+0
+0
+1
+1
+0
+1
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+1
+1
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+1
+1
+1
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+1
+0
+0
+0
+0
+1
+0
+0
+1
+0
+0
+1
+0
+1
+0
+0
+0
+0
+1
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+1
+0
+1
+1
+0
+0
+1
+0
+0
+1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+1
+1
+0
+0
+1
+0
+0
+0
+1
+0
+0
+0
+0
+1
+0
+0
+0
+1
+0
+0
+0
+1
+1
+0
+0
+1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+1
+0
+1
+0
+0
+0
+0
+0
+1
+1
+0
+1
+1
+0
+1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+1
+1
+0
+0
+1
+0
+0
+0
+1
+1
+0
+0
+0
+0
+0
+1
+1
+0
+1
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+1
+1
+1
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+1
+1
+0
+0
+0
+0
+1
+0
+0
+0
+0
+1
+1
+0
+0
+1
+0
+0
+0
+1
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+1
+0
+0
+1
+0
+1
+1
+0
+0
+1
+0
+1
+1
+0
+0
+1
+1
+0
+1
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+1
+1
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+1
+1
+0
+0
+1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+1
+1
+0
+0
+0
+1
+1
+1
+0
+1
+1
+0
+1
+1
+1
+0
+1
+1
+0
+1
+0
+1
+0
+1
+0
+1
+0
+0
+1
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+1
+0
+1
+1
+1
+0
+1
+1
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+1
+0
+1
+0
+1
+1
+0
+1
+1
+0
+0
+0
+1
+0
+1
+1
+1
+0
+1
+0
+1
+0
+1
+1
+0
+1
+0
+1
+0
+1
+1
+0
+0
+1
+0
+0
+0
+0
+0
+0
+1
+0
+0
+1
+0
+1
+0
+1
+1
+0
+0
+0
+1
+1
+0
+0
+1
+0
+0
+1
+0
+0
+0
+0
+1
+0
+0
+1
+0
+0
+0
+1
+0
+0
+0
+0
+1
+0
+0
+1
+0
+1
+1
+0
+0
+1
+0
+1
+0
+0
+0
+0
+1
+1
+0
+0
+0
+0
+0
+1
+1
+1
+0
+1
+0
+0
+0
+1
+0
+0
+1
+1
+1
+0
+1
+1
+1
+1
+0
+1
+1
+1
+0
+1
+0
+0
+0
+0
+1
+1
+1
+0
+1
+1
+1
+0
+0
+0
+1
+1
+0
+0
+1
+1
+1
+1
+1
+0
+1
+0
+1
+1
+1
+1
+0
+1
+0
+0
+1
+1
+1
+0
+1
+0
+1
+0
+1
+1
+0
+1
+1
+0
+0
+0
+1
+0
+1
+1
+0
+0
+1
+1
+0
+1
+1
+1
+1
+0
+1
+0
+0
+1
+1
+1
+1
+1
+0
+1
+1
+1
+0
+0
+1
+0
+0
+1
+1
+1
+0
+1
+1
+1
+0
+0
+0
+0
+1
+0
+1
+0
+1
+1
+1
+1
+1
+0
+0
+0
+0
+0
+0
+1
+0
+1
+1
+0
+1
+1
+1
+0
+1
+1
+0
+1
+0
+0
+0
+1
+1
+1
+1
+1
+1
+1
+0
+0
+0
+1
+0
+1
+1
+1
+0
+1
+0
+1
+1
+1
+1
+1
+0
+0
+0
+1
+1
+0
+1
+0
+1
+1
+1
+1
+1
+0
+1
+0
+1
+1
+0
+0
+1
+0
+1
+0
+1
+0
+1
+1
+1
+0
+0
+0
+1
+1
+1
+0
+1
+1
+1
+1
+0
+0
+1
+1
+1
+1
+1
+0
+1
+0
+0
+1
+0
+0
+1
+1
+0
+1
+1
+1
+0
+1
+0
+1
+0
+0
+0
+1
+1
+0
+1
+1
+1
+1
+0
+1
+1
+0
+1
+1
+1
+0
+1
+1
+1
+1
+0
+0
+0
+1
+0
+1
+1
+1
+0
+1
+1
+0
+1
+1
+0
+1
+0
+1
+0
+0
+1
+1
+1
+1
+0
+0
+1
+0
+1
+1
+0
+0
+0
+0
+1
+0
+1
+0
+0
+1
+0
+1
+0
+0
+1
+0
+0
+1
+1
+1
+0
+0
+1
+1
+1
+1
+1
+0
+1
+0
+1
+0
+0
+0
+1
+0
+1
+1
+0
+1
+0
+0
+0
+0
+0
+0
+1
+1
+0
+1
+0
+1
+1
+1
+0
+0
+1
+1
+0
+1
+1
+0
+1
+0
+1
+1
+1
+0
+1
+1
+1
+0
+0
+1
+0
+1
+1
+0
+0
+1
+0
+1
+0
+1
+0
+0
+0
+1
+0
+1
+0
+1
+0
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+0
+0
+1
+0
+1
+0
+0
+1
+1
+1
+0
+1
+1
+1
+0
+1
+1
+0
+1
+0
+1
+0
+1
+1
+0
+1
+1
+1
+1
+1
+0
+1
+0
+1
+1
+0
+1
+1
+0
+1
+1
+1
+1
+0
+0
+1
+0
+1
+1
+1
+1
+0
+1
+0
+1
+1
+0
+0
+1
+0
+1
+0
+1
+1
+1
+1
+0
+0
+1
+1
+1
+0
+0
+1
+0
+1
+1
+0
+0
+0
+1
+1
+0
+0
+1
+1
+1
+0
+0
+1
+1
+0
+1
+1
+1
+0
+1
+0
+0
+0
+1
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+1
+0
+0
+1
+0
+1
+0
+1
+1
+0
+1
+0
+1
+0
+0
+0
+1
+0
+0
+1
+1
+0
+1
+1
+1
+1
+1
+0
+1
+1
+0
+1
+0
+0
+1
+0
+1
+0
+0
+1
+0
+1
+1
+1
+0
+1
+1
+0
+1
+0
+1
+1
+1
+0
+1
+1
+0
+1
+0
+0
+1
+0
+0
+0
+0
+0
+1
+1
+0
+0
+1
+0
+0
+1
+0
+1
+1
+1
+1
+1
+1
+0
+0
+1
+1
+1
+1
+1
+0
+1
+1
+0
+1
+1
+0
+1
+0
+0
+1
+0
+0
+0
+1
+1
+1
+0
+1
+1
+1
+0
+0
+1
+1
+1
+0
+1
+0
+1
+0
+0
+1
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+0
+0
+1
+1
+0
+1
+0
+1
+1
+0
+0
+0
+1
+1
+1
+0
+0
+0
+1
+0
+0
+1
+1
+0
+1
+1
+1
+1
+1
+1
+1
+0
+0
+0
+1
+1
+0
+1
+0
+1
+0
+1
+1
+0
+0
+1
+1
+1
+1
+1
+1
+1
+0
+0
+0
+0
+0
+0
+1
+0
+0
+1
+0
+0
+0
+1
+1
+0
+1
+1
+0
+1
+0
+1
+1
+0
+1
+1
+1
+1
+1
+0
+0
+0
+0
+0
+0
+0
+1
+1
+1
+0
+0
+0
+0
+1
+0
+0
+0
+1
+0
+1
+0
+0
+0
+1
+1
+1
+1
+0
+1
+1
+1
+0
+0
+0
+0
+1
+0
+0
+0
+0
+1
+0
+1
+1
+0
+0
+1
+0
+0
+1
+0
+1
+1
+1
+0
+1
+1
+0
+1
+0
+1
+0
+1
+1
+1
+0
+1
+0
+0
+0
+1
+0
+0
+1
+0
+0
+1
+0
+0
+1
+0
+0
+0
+0
+0
+1
+1
+1
+1
+0
+1
+1
+1
+1
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+1
+0
+1
+0
+0
+1
+1
+1
+0
+1
+1
+0
+1
+0
+1
+1
+1
+0
+1
+0
+1
+0
+0
+0
+1
+0
+1
+1
+0
+0
+0
+1
+1
+0
+0
+1
+0
+0
+0
+1
+1
+1
+0
+0
+1
+1
+0
+0
+0
+1
+0
+0
+0
+0
+1
+1
+0
+1
+0
+1
+0
+0
+0
+1
+1
+1
+1
+0
+0
+1
+1
+0
+1
+1
+1
+1
+0
+0
+0
+0
+1
+1
+1
+0
+0
+1
+1
+0
+1
+0
+1
+0
+1
+0
+1
+0
+0
+1
+0
+1
+1
+1
+0
+0
+0
+0
+0
+1
+0
+0
+0
+1
+1
+0
+1
+0
+1
+0
+1
+0
+1
+0
+1
+1
+0
+0
+0
+1
+1
+0
+1
+1
+0
+1
+0
+0
+0
+1
+1
+1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+1
+0
+1
+0
+1
+1
+1
+1
+0
+1
+1
+0
+0
+1
+1
+0
+0
+0
+1
+1
+1
+1
+1
+0
+1
+1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+1
+0
+0
+0
+1
+0
+0
+1
+0
+1
+0
+1
+0
+0
+1
+1
+0
+1
+0
+0
+0
+0
+1
+1
+1
+1
+0
+1
+0
+0
+0
+1
+1
+0
+0
+0
+1
+1
+1
+0
+0
+1
+1
+1
+1
+0
+0
+0
+0
+1
+0
+1
+1
+0
+0
+1
+1
+0
+1
+1
+1
+0
+0
+0
+1
+0
+0
+1
+0
+1
+0
+0
+1
+0
+1
+1
+0
+0
+1
+1
+0
+1
+0
+1
+1
+1
+1
+0
+0
+1
+1
+0
+1
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+1
+1
+0
+1
+0
+0
+1
+0
+0
+1
+1
+0
+1
+1
+0
+1
+0
+1
+1
+0
+1
+1
+0
+0
+1
+0
+1
+0
+0
+1
+0
+1
+1
+0
+0
+0
+0
+1
+1
+1
+1
+1
+1
+0
+0
+1
+0
+0
+0
+0
+0
+1
+0
+1
+1
+1
+1
+0
+1
+1
+0
+1
+1
+0
+0
+1
+1
+1
+0
+0
+0
+0
+0
+0
+1
+1
+1
+1
+1
+1
+0
+0
+0
+0
+0
+0
+0
+1
+0
+1
+0
+1
+0
+0
+0
+0
+1
+1
+1
+1
+0
+0
+0
+0
+1
+1
+1
+0
+0
+1
+1
+0
+0
+0
+0
+0
+1
+0
+1
+1
+0
+0
+1
+0
+0
+0
+1
+0
+1
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+1
+0
+0
+1
+0
+1
+0
+1
+0
+0
+1
+1
+0
+0
+0
+1
+1
+1
+0
+1
+0
+0
+0
+1
+0
+1
+0
+0
+1
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+1
+0
+1
+0
+0
+0
+0
+1
+0
+1
+1
+1
+0
+0
+0
+1
+0
+1
+0
+1
+0
+1
+0
+1
+0
+0
+1
+0
+0
+0
+0
+0
+0
+1
+1
+0
+1
+1
+0
+0
+0
+1
+0
+1
+0
+1
+0
+1
+1
+0
+1
+1
+1
+0
+0
+1
+0
+0
+0
+0
+1
+1
+1
+0
+1
+1
+1
+1
+1
+1
+0
+0
+0
+0
+1
+1
+0
+1
+0
+0
+1
+0
+1
+1
+0
+1
+0
+1
+1
+0
+1
+1
+1
+0
+1
+0
+1
+1
+1
+1
+0
+1
+1
+0
+0
+1
+1
+1
+0
+1
+1
+0
+0
+0
+1
+1
+0
+1
+1
+1
+1
+0
+1
+1
+1
+0
+0
+1
+0
+0
+0
+1
+1
+1
+1
+0
+0
+0
+0
+0
+0
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+0
+0
+1
+0
+0
+1
+1
+1
+0
+0
+0
+1
+0
+1
+1
+1
+0
+0
+0
+1
+0
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+1
+0
+0
+1
+1
+0
+0
+0
+0
+0
+1
+1
+0
+1
+1
+1
+0
+0
+1
+0
+1
+1
+1
+1
+0
+1
+1
+0
+0
+1
+0
+1
+1
+1
+0
+0
+1
+0
+1
+0
+1
+0
+0
+1
+0
+1
+1
+1
+1
+1
+1
+1
+0
+1
+0
+1
+1
+1
+0
+0
+0
+1
+1
+0
+1
+1
+1
+1
+0
+1
+0
+1
+1
+1
+0
+0
+0
+0
+1
+1
+0
+0
+0
+1
+1
+1
+1
+0
+1
+0
+1
+1
+1
+0
+1
+0
+1
+1
+1
+0
+0
+1
+0
+1
+1
+0
+0
+0
+0
+1
+0
+0
+1
+0
+0
+1
+0
+1
+1
+1
+1
+0
+1
+1
+0
+1
+1
+1
+1
+0
+0
+1
+1
+1
+0
+0
+1
+0
+1
+0
+0
+1
+1
+0
+0
+1
+1
+1
+0
+0
+1
+1
+1
+0
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+1
+0
+1
+1
+1
+1
+1
+1
+1
+0
+1
+0
+1
+1
+1
+1
+1
+0
+1
+1
+1
+0
+0
+1
+0
+1
+0
+1
+1
+0
+1
+0
+0
+1
+1
+0
+0
+1
+1
+1
+0
+1
+0
+1
+1
+1
+0
+1
+1
+1
+1
+1
+1
+0
+1
+0
+1
+1
+1
+1
+0
+1
+1
+1
+0
+1
+0
+1
+0
+1
+0
+1
+0
+1
+0
+1
+1
+0
+1
+0
+1
+1
+0
+0
+1
+1
+0
+1
+1
+1
+1
+0
+0
+1
+1
+1
+0
+0
+0
+1
+1
+1
+0
+1
+1
+0
+0
+1
+0
+1
+1
+1
+1
+0
+1
+1
+0
+1
+0
+1
+0
+1
+1
+1
+0
+0
+0
+1
+1
+0
+1
+1
+1
+0
+1
+1
+0
+1
+1
+0
+0
+1
+1
+1
+0
+0
+0
+1
+1
+1
+1
+0
+0
+1
+0
+1
+0
+1
+1
+0
+0
+0
+1
+1
+0
+1
+1
+0
+1
+1
+1
+0
+1
+1
+0
+0
+0
+1
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+1
+0
+0
+1
+0
+0
+1
+0
+1
+1
+1
+1
+0
+0
+1
+0
+1
+1
+1
+1
+0
+0
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+0
+1
+0
+1
+1
+1
+1
+0
+0
+0
+1
+1
+1
+0
+1
+1
+1
+0
+1
+1
+1
+0
+1
+0
+0
+0
+0
+1
+1
+1
+0
+1
+1
+1
+1
+0
+1
+1
+1
+0
+1
+1
+1
+1
+0
+1
+1
+1
+0
+1
+1
+0
+0
+1
+1
+1
+1
+1
+0
+0
+1
+1
+1
+0
+0
+0
+1
+1
+1
+0
+1
+0
+1
+1
+0
+1
+0
+0
+0
+1
+1
+1
+0
+0
+0
+0
+1
+1
+1
+1
+0
+1
+0
+1
+1
+0
+0
+1
+1
+1
+1
+1
+0
+0
+1
+1
+1
+1
+1
+1
+0
+1
+0
+1
+1
+0
+1
+0
+1
+1
+1
+0
+1
+1
+1
+0
+0
+0
+1
+1
+1
+1
+0
+1
+1
+1
+1
+0
+1
+1
+1
+0
+0
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+0
+1
+0
+1
+1
+1
+1
+1
+0
+0
+1
+0
+0
+0
+1
+1
+0
+1
+0
+1
+1
+1
+0
+0
+1
+0
+1
+0
+0
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+0
+1
+1
+0
+1
+0
+0
+1
+1
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+0
+0
+0
+1
+1
+1
+1
+1
+0
+1
+1
+1
+0
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+0
+0
+1
+1
+1
+1
+0
+1
+1
+0
+1
+0
+1
+0
+1
+1
+1
+0
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+0
+1
+1
+1
+1
+1
+0
+1
+0
+1
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+1
+1
+0
+0
+1
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+0
+1
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+1
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+1
+0
+0
+1
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+0
+1
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+1
+0
+0
+1
+1
+0
+1
+0
+0
+0
+0
+0
+1
+1
+1
+0
+1
+0
+1
+1
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+1
+0
+0
+0
+0
+1
+0
+0
+1
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+1
+1
+1
+0
+1
+1
+0
+0
+0
+0
+0
+1
+1
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+1
+1
+0
+0
+0
+1
+1
+0
+1
+0
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+0
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1

Added: sandbox/SOC/2008/BGL_Python/test/distributed/data/README.txt
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/test/distributed/data/README.txt 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,4 @@
+Extra data used in testing the Parallel BGL Python bindings
+
+4elt.graph is a data set from the METIS distribution
+4elt.graph.part.* are METIS partitionings of 4elt.graph

Added: sandbox/SOC/2008/BGL_Python/test/distributed/dehne_gotz_min_spanning_tree.py
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/test/distributed/dehne_gotz_min_spanning_tree.py 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,31 @@
+# Copyright 2005 The Trustees of Indiana University.
+
+# Use, modification and distribution is subject to the Boost Software
+# License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+# http:#www.boost.org/LICENSE_1_0.txt)
+
+# Authors: Douglas Gregor
+# Andrew Lumsdaine
+
+# So we can find the BGL Python bindings
+import sys
+sys.path.append("../../python")
+
+import boost.graph.distributed as pbgl
+
+# Build an Erdos-Renyi graph
+g = pbgl.undirected_erdos_renyi_graph(100, 0.02)
+
+# Initialize edge weights randomly
+import random
+weight = g.edge_property_map('float')
+for e in g.edges:
+ weight[e] = random.uniform(0.,1.)
+
+
+# Compute the MST with the four different routines
+pbgl.dense_boruvka_minimum_spanning_tree(g, weight)
+pbgl.merge_local_minimum_spanning_trees(g, weight)
+pbgl.boruvka_then_merge(g, weight)
+pbgl.boruvka_mixed_merge(g, weight)
+

Added: sandbox/SOC/2008/BGL_Python/test/distributed/dijkstra_shortest_paths.py
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/test/distributed/dijkstra_shortest_paths.py 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,48 @@
+# Copyright 2005 The Trustees of Indiana University.
+
+# Use, modification and distribution is subject to the Boost Software
+# License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+# http:#www.boost.org/LICENSE_1_0.txt)
+
+# Authors: Douglas Gregor
+# Andrew Lumsdaine
+
+# So we can find the BGL Python bindings
+import sys
+sys.path.append("../../python")
+
+import boost.graph.distributed as pbgl
+
+def run(g):
+ # Initialize edge weights randomly
+ import random
+ weight = g.edge_property_map('float')
+ for e in g.edges:
+ weight[e] = random.uniform(0.,1.)
+
+ # Get the first vertex in the graph
+ s = g.vertex(0)
+
+ # Run a simple Dijkstra's algorithm
+ pbgl.dijkstra_shortest_paths(g, s, weight_map = weight)
+
+ # Run a simple Dijkstra's shortest paths with an empty visitor
+ pbgl.dijkstra_shortest_paths(g, s, weight_map = weight, \
+ visitor = pbgl.dijkstra_visitor())
+
+ # Run a Dijkstra's shortest paths with a tree-printing visitor
+ predecessor = g.vertex_property_map('vertex')
+ distance = g.vertex_property_map('float')
+
+ class vis(pbgl.dijkstra_visitor):
+ def __init__(self):
+ self.edges = list()
+
+ def tree_edge(self, e, g):
+ self.edges.append(e)
+
+ pbgl.dijkstra_shortest_paths(g, s, predecessor, distance, weight, vis())
+
+# Build an Erdos-Renyi graph
+run(pbgl.undirected_erdos_renyi_graph(100, 0.02))
+run(pbgl.directed_erdos_renyi_graph(100, 0.02))

Added: sandbox/SOC/2008/BGL_Python/test/distributed/dinic_max_flow.py
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/test/distributed/dinic_max_flow.py 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,30 @@
+# Copyright 2005 The Trustees of Indiana University.
+
+# Use, modification and distribution is subject to the Boost Software
+# License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+# http:#www.boost.org/LICENSE_1_0.txt)
+
+# Authors: Douglas Gregor
+# Andrew Lumsdaine
+
+# So we can find the BGL Python bindings
+import sys
+sys.path.append("../../python")
+
+import boost.graph.distributed as pbgl
+
+def run(g):
+ # Initialize edge weights randomly
+ import random
+ capacity = g.edge_property_map('integer')
+ for e in g.edges:
+ capacity[e] = random.randint(1,10)
+
+ # Get the first vertex in the graph
+ s = g.vertex(0)
+ t = g.vertex(1)
+ flow = g.edge_property_map('integer')
+ pbgl.dinic_max_flow(g, s, t, capacity, flow)
+
+# Build an Erdos-Renyi graph
+run(pbgl.directed_erdos_renyi_graph(100, 0.02))

Added: sandbox/SOC/2008/BGL_Python/test/distributed/fruchterman_reingold.py
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/test/distributed/fruchterman_reingold.py 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,25 @@
+# Copyright 2005 The Trustees of Indiana University.
+
+# Use, modification and distribution is subject to the Boost Software
+# License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+# http:#www.boost.org/LICENSE_1_0.txt)
+
+# Authors: Douglas Gregor
+# Andrew Lumsdaine
+
+# So we can find the BGL Python bindings
+import sys
+sys.path.append("../../python")
+
+import boost.graph.distributed as pbgl
+
+def run(g):
+ # Run FR layout
+ position = g.vertex_property_map('point2d')
+ pbgl.fruchterman_reingold_force_directed_layout(g, position)
+
+# Build an Erdos-Renyi graph
+run(pbgl.undirected_erdos_renyi_graph(100, 0.02))
+run(pbgl.directed_erdos_renyi_graph(100, 0.02))
+
+

Added: sandbox/SOC/2008/BGL_Python/test/distributed/graphviz.py
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/test/distributed/graphviz.py 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,23 @@
+# Copyright 2005 The Trustees of Indiana University.
+
+# Use, modification and distribution is subject to the Boost Software
+# License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+# http:#www.boost.org/LICENSE_1_0.txt)
+
+# Authors: Douglas Gregor
+# Andrew Lumsdaine
+
+# So we can find the BGL Python bindings
+import sys
+sys.path.append("../../python")
+
+import boost.graph.distributed as pbgl
+
+def run(g):
+ vertex_owner = g.vertex_property_map('owner')
+ pbgl.write_graphviz(g, "graphviz_test.dot", \
+ lambda v: " [ processor=\"" + str(vertex_owner[v]) + "\" ]")
+
+
+run(pbgl.undirected_erdos_renyi_graph(100, 0.02))
+run(pbgl.directed_erdos_renyi_graph(100, 0.02))

Added: sandbox/SOC/2008/BGL_Python/test/distributed/metis.py
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/test/distributed/metis.py 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,18 @@
+# Copyright 2005 The Trustees of Indiana University.
+
+# Use, modification and distribution is subject to the Boost Software
+# License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+# http:#www.boost.org/LICENSE_1_0.txt)
+
+# Authors: Douglas Gregor
+# Andrew Lumsdaine
+
+# So we can find the BGL Python bindings
+import sys
+sys.path.append("../../python")
+
+import boost.graph.distributed as pbgl
+
+g = pbgl.read_undirected_metis_graph('data/4elt.graph', 'data/4elt.graph.part.2')
+
+print g.num_vertices(),'vertices',g.num_edges(),'edges'

Added: sandbox/SOC/2008/BGL_Python/test/distributed/page_rank.py
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/test/distributed/page_rank.py 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,22 @@
+# Copyright 2005 The Trustees of Indiana University.
+
+# Use, modification and distribution is subject to the Boost Software
+# License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+# http:#www.boost.org/LICENSE_1_0.txt)
+
+# Authors: Douglas Gregor
+# Andrew Lumsdaine
+
+# So we can find the BGL Python bindings
+import sys
+sys.path.append("../../python")
+
+import boost.graph.distributed as pbgl
+
+# Build an Erdos-Renyi graph
+g = pbgl.directed_erdos_renyi_graph(100, 0.02)
+
+# Compute strong components
+rank = g.vertex_property_map('float')
+pbgl.page_rank(g, rank)
+

Added: sandbox/SOC/2008/BGL_Python/test/distributed/strong_components.py
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/test/distributed/strong_components.py 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,21 @@
+# Copyright 2005 The Trustees of Indiana University.
+
+# Use, modification and distribution is subject to the Boost Software
+# License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+# http:#www.boost.org/LICENSE_1_0.txt)
+
+# Authors: Douglas Gregor
+# Andrew Lumsdaine
+
+# So we can find the BGL Python bindings
+import sys
+sys.path.append("../../python")
+
+import boost.graph.distributed as pbgl
+
+# Build an Erdos-Renyi graph
+g = pbgl.directed_erdos_renyi_graph(100, 0.02)
+
+# Compute strong components
+pbgl.strong_components(g)
+

Added: sandbox/SOC/2008/BGL_Python/test/exceptions.py
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/test/exceptions.py 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,35 @@
+# Copyright (C) 2006 The Trustees of Indiana University.
+
+# Use, modification and distribution is subject to the Boost Software
+# License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+# http:#www.boost.org/LICENSE_1_0.txt)
+
+# Authors: Douglas Gregor
+# Andrew Lumsdaine
+from boost.graph import *
+
+g = Graph()
+v = g.add_vertex()
+
+strings = g.add_vertex_property(type='string')
+colors = g.add_vertex_property(type='color')
+
+
+cannot_parse_property_okay = False
+try:
+ strings[v] = 'boo'
+ strings.astype('float')
+except CannotParseProperty, e:
+ print e
+ cannot_parse_property_okay = True
+
+assert cannot_parse_property_okay
+
+invalid_property_conversion_okay = False
+try:
+ colors.astype('float')
+except InvalidPropertyConversion, e:
+ print e
+ invalid_property_conversion_okay = True
+
+assert invalid_property_conversion_okay

Added: sandbox/SOC/2008/BGL_Python/test/graphml_test.py
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/test/graphml_test.py 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,14 @@
+# Copyright (C) 2006 The Trustees of Indiana University.
+
+# Use, modification and distribution is subject to the Boost Software
+# License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+# http:#www.boost.org/LICENSE_1_0.txt)
+
+# Authors: Douglas Gregor
+# Andrew Lumsdaine
+import boost.graph as bgl
+g1 = bgl.read_graphml('../example/data/simple.graphml')
+print g1.num_vertices()
+g1.write_graphml('simple-clone.graphml')
+g2 = bgl.read_graphml('../example/data/attributes.graphml')
+g2.write_graphml('attributes-clone.graphml')

Added: sandbox/SOC/2008/BGL_Python/test/property_convert.py
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/test/property_convert.py 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,22 @@
+# Copyright (C) 2006 The Trustees of Indiana University.
+
+# Use, modification and distribution is subject to the Boost Software
+# License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+# http:#www.boost.org/LICENSE_1_0.txt)
+
+# Authors: Douglas Gregor
+# Andrew Lumsdaine
+
+# Test property conversions
+
+import boost.graph as bgl
+g = bgl.Graph([(1, 2), (1, 3), (4, 6), (5, 6)])
+
+color = g.add_vertex_property('color')
+
+bgl.connected_components(g, color)
+
+for v in g.vertices:
+ print color[v]
+
+

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/COPYING
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/COPYING 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,22 @@
+Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd
+ and Clark Cooper
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006 Expat maintainers.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/Jamfile
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/Jamfile 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,26 @@
+# Copyright (C) 2006 The Trustees of Indiana University.
+
+# Use, modification and distribution is subject to the Boost Software
+# License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt)
+
+# Authors: Douglas Gregor
+# Andrew Lumsdaine
+
+# This file builds Expat, for use in BGL-Python
+
+subproject vendor/expat-2.0.0 ;
+
+EXPAT_SOURCES =
+ xmlparse
+ xmlrole
+ xmltok
+ ;
+
+lib expat
+ : # Sources
+ lib/$(EXPAT_SOURCES).cpp
+ : # Requirements
+ <define>HAVE_MEMMOVE
+ <define>XML_STATIC
+ ;

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/Jamfile.v2
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/Jamfile.v2 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,25 @@
+# Copyright (C) 2006 The Trustees of Indiana University.
+
+# Use, modification and distribution is subject to the Boost Software
+# License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt)
+
+# Authors: Douglas Gregor
+# Andrew Lumsdaine
+
+# This file builds Expat, for use in BGL-Python
+
+project bgl-python/vendor/expat-2.0.0
+ : source-location lib
+ : build-dir bin.v2
+ ;
+
+lib expat
+ : # Sources
+ xmlparse.cpp
+ xmlrole.cpp
+ xmltok.cpp
+ : # Requirements
+ <define>HAVE_MEMMOVE
+ <define>XML_STATIC
+ ;

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/MANIFEST
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/MANIFEST 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,128 @@
+amiga/stdlib.c
+amiga/launch.c
+amiga/expat_vectors.c
+amiga/expat_lib.c
+amiga/expat.xml
+amiga/README.txt
+amiga/Makefile
+amiga/include/proto/expat.h
+amiga/include/libraries/expat.h
+amiga/include/interfaces/expat.h
+amiga/include/inline4/expat.h
+bcb5/README.txt
+bcb5/all_projects.bpg
+bcb5/elements.bpf
+bcb5/elements.bpr
+bcb5/elements.mak
+bcb5/expat.bpf
+bcb5/expat.bpr
+bcb5/expat.mak
+bcb5/expat_static.bpf
+bcb5/expat_static.bpr
+bcb5/expat_static.mak
+bcb5/expatw.bpf
+bcb5/expatw.bpr
+bcb5/expatw.mak
+bcb5/expatw_static.bpf
+bcb5/expatw_static.bpr
+bcb5/expatw_static.mak
+bcb5/libexpat_mtd.def
+bcb5/libexpatw_mtd.def
+bcb5/makefile.mak
+bcb5/outline.bpf
+bcb5/outline.bpr
+bcb5/outline.mak
+bcb5/setup.bat
+bcb5/xmlwf.bpf
+bcb5/xmlwf.bpr
+bcb5/xmlwf.mak
+doc/expat.png
+doc/reference.html
+doc/style.css
+doc/valid-xhtml10.png
+doc/xmlwf.1
+doc/xmlwf.sgml
+COPYING
+Changes
+MANIFEST
+Makefile.in
+README
+configure
+configure.in
+expat_config.h.in
+expat.dsw
+conftools/PrintPath
+conftools/ac_c_bigendian_cross.m4
+conftools/config.guess
+conftools/config.sub
+conftools/expat.m4
+conftools/get-version.sh
+conftools/install-sh
+conftools/libtool.m4
+conftools/ltmain.sh
+conftools/mkinstalldirs
+examples/elements.c
+examples/elements.dsp
+examples/outline.c
+examples/outline.dsp
+lib/Makefile.MPW
+lib/amigaconfig.h
+lib/ascii.h
+lib/asciitab.h
+lib/expat.dsp
+lib/expat.h
+lib/expat_external.h
+lib/expat_static.dsp
+lib/expatw.dsp
+lib/expatw_static.dsp
+lib/iasciitab.h
+lib/internal.h
+lib/latin1tab.h
+lib/libexpat.def
+lib/libexpatw.def
+lib/macconfig.h
+lib/nametab.h
+lib/utf8tab.h
+lib/winconfig.h
+lib/xmlparse.c
+lib/xmlrole.c
+lib/xmlrole.h
+lib/xmltok.c
+lib/xmltok.h
+lib/xmltok_impl.c
+lib/xmltok_impl.h
+lib/xmltok_ns.c
+tests/benchmark/README.txt
+tests/benchmark/benchmark.c
+tests/benchmark/benchmark.dsp
+tests/benchmark/benchmark.dsw
+tests/README.txt
+tests/chardata.c
+tests/chardata.h
+tests/minicheck.c
+tests/minicheck.h
+tests/runtests.c
+tests/runtestspp.cpp
+tests/xmltest.sh
+vms/README.vms
+vms/descrip.mms
+vms/expat_config.h
+win32/MANIFEST.txt
+win32/README.txt
+win32/expat.iss
+xmlwf/codepage.c
+xmlwf/codepage.h
+xmlwf/ct.c
+xmlwf/filemap.h
+xmlwf/readfilemap.c
+xmlwf/unixfilemap.c
+xmlwf/win32filemap.c
+xmlwf/xmlfile.c
+xmlwf/xmlfile.h
+xmlwf/xmlmime.c
+xmlwf/xmlmime.h
+xmlwf/xmltchar.h
+xmlwf/xmlurl.h
+xmlwf/xmlwf.c
+xmlwf/xmlwf.dsp
+xmlwf/xmlwin32url.cxx

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/Makefile.in
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/Makefile.in 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,185 @@
+################################################################
+# Process this file with top-level configure script to produce Makefile
+#
+# Copyright 2000 Clark Cooper
+#
+# This file is part of EXPAT.
+#
+# EXPAT is free software; you can redistribute it and/or modify it
+# under the terms of the License (based on the MIT/X license) contained
+# in the file COPYING that comes with this distribution.
+#
+# EXPAT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+# SOFTWARE OR THE USE OR OTHER DEALINGS IN EXPAT.
+#
+
+SHELL = @SHELL@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+
+bindir = @bindir@
+libdir = @libdir@
+includedir = @includedir@
+man1dir = @mandir@/man1
+
+top_builddir = .
+
+
+INSTALL = @INSTALL@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_DATA = @INSTALL_DATA@
+mkinstalldirs = $(SHELL) $(top_srcdir)/conftools/mkinstalldirs
+
+MANFILE = $(srcdir)/doc/xmlwf.1
+APIHEADER = $(srcdir)/lib/expat.h $(srcdir)/lib/expat_external.h
+LIBRARY = libexpat.la
+
+ifndef INSTALL_ROOT
+INSTALL_ROOT=$(DESTDIR)
+endif
+
+default: buildlib xmlwf/xmlwf
+
+buildlib: $(LIBRARY)
+
+all: $(LIBRARY) xmlwf/xmlwf examples/elements examples/outline
+
+clean:
+ cd lib && rm -f $(LIBRARY) *.o *.lo && rm -rf .libs _libs
+ cd xmlwf && rm -f xmlwf *.o *.lo && rm -rf .libs _libs
+ cd examples && rm -f elements outline *.o *.lo && rm -rf .libs _libs
+ cd tests && rm -rf .libs runtests runtests.o runtestspp runtestspp.o
+ cd tests && rm -f chardata.o minicheck.o
+ rm -rf .libs libexpat.la
+ rm -f examples/core tests/core xmlwf/core
+
+clobber: clean
+
+distclean: clean
+ rm -f expat_config.h config.status config.log config.cache libtool
+ rm -f Makefile
+
+extraclean: distclean
+ rm -f expat_config.h.in configure
+ rm -f conftools/ltconfig conftools/ltmain.sh conftools/libtool.m4
+
+check: tests/runtests tests/runtestspp
+ tests/runtests
+ tests/runtestspp
+
+install: xmlwf/xmlwf installlib
+ $(mkinstalldirs) $(INSTALL_ROOT)$(bindir) $(INSTALL_ROOT)$(man1dir)
+ $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) xmlwf/xmlwf $(INSTALL_ROOT)$(bindir)/xmlwf
+ $(INSTALL_DATA) $(MANFILE) $(INSTALL_ROOT)$(man1dir)
+
+installlib: $(LIBRARY) $(APIHEADER)
+ $(mkinstalldirs) $(INSTALL_ROOT)$(libdir) $(INSTALL_ROOT)$(includedir)
+ $(LIBTOOL) --mode=install $(INSTALL) $(LIBRARY) $(INSTALL_ROOT)$(libdir)/$(LIBRARY)
+ for FN in $(APIHEADER) ; do $(INSTALL_DATA) $$FN $(INSTALL_ROOT)$(includedir) ; done
+
+uninstall: uninstalllib
+ $(LIBTOOL) --mode=uninstall rm -f $(INSTALL_ROOT)$(bindir)/xmlwf
+ rm -f $(INSTALL_ROOT)$(man1dir)/xmlwf.1
+
+uninstalllib:
+ $(LIBTOOL) --mode=uninstall rm -f $(INSTALL_ROOT)$(libdir)/$(LIBRARY)
+ rm -f $(INSTALL_ROOT)$(includedir)/expat.h
+ rm -f $(INSTALL_ROOT)$(includedir)/expat_external.h
+
+# for VPATH builds (invoked by configure)
+mkdir-init:
+ @for d in lib xmlwf examples tests ; do \
+ (mkdir $$d 2> /dev/null || test 1) ; \
+ done
+
+CC = @CC@
+LIBTOOL = @LIBTOOL@
+
+INCLUDES = -I$(srcdir)/lib -I.
+LDFLAGS = @LDFLAGS@
+CPPFLAGS = @CPPFLAGS@
+CFLAGS = @CFLAGS@ -DHAVE_EXPAT_CONFIG_H
+VSNFLAG = -version-info @LIBCURRENT@:@LIBREVISION@:@LIBAGE@
+
+### autoconf this?
+LTFLAGS = --silent
+
+COMPILE = $(CC) $(INCLUDES) $(CFLAGS) $(DEFS) $(CPPFLAGS)
+CXXCOMPILE = $(CXX) $(INCLUDES) $(CFLAGS) $(DEFS) $(CPPFLAGS)
+LTCOMPILE = $(LIBTOOL) $(LTFLAGS) --mode=compile $(COMPILE)
+LINK_LIB = $(LIBTOOL) $(LTFLAGS) --mode=link $(COMPILE) -no-undefined $(VSNFLAG) -rpath $(libdir) $(LDFLAGS) -o $@
+LINK_EXE = $(LIBTOOL) $(LTFLAGS) --mode=link $(COMPILE) $(LDFLAGS) -o $@
+LINK_CXX_EXE = $(LIBTOOL) $(LTFLAGS) --mode=link $(CXXCOMPILE) $(LDFLAGS) -o $@
+
+LIB_OBJS = lib/xmlparse.lo lib/xmltok.lo lib/xmlrole.lo
+$(LIBRARY): $(LIB_OBJS)
+ $(LINK_LIB) $(LIB_OBJS)
+
+lib/xmlparse.lo: lib/xmlparse.c lib/expat.h lib/xmlrole.h lib/xmltok.h \
+ $(top_builddir)/expat_config.h lib/expat_external.h lib/internal.h
+
+lib/xmlrole.lo: lib/xmlrole.c lib/ascii.h lib/xmlrole.h \
+ $(top_builddir)/expat_config.h lib/expat_external.h lib/internal.h
+
+lib/xmltok.lo: lib/xmltok.c lib/xmltok_impl.c lib/xmltok_ns.c \
+ lib/ascii.h lib/asciitab.h lib/iasciitab.h lib/latin1tab.h \
+ lib/nametab.h lib/utf8tab.h lib/xmltok.h lib/xmltok_impl.h \
+ $(top_builddir)/expat_config.h lib/expat_external.h lib/internal.h
+
+
+XMLWF_OBJS = xmlwf/xmlwf.o xmlwf/xmlfile.o xmlwf/codepage.o xmlwf/@FILEMAP_at_.o
+xmlwf/xmlwf.o: xmlwf/xmlwf.c
+xmlwf/xmlfile.o: xmlwf/xmlfile.c
+xmlwf/codepage.o: xmlwf/codepage.c
+xmlwf/@FILEMAP_at_.o: xmlwf/@FILEMAP_at_.c
+xmlwf/xmlwf: $(XMLWF_OBJS) $(LIBRARY)
+ $(LINK_EXE) $(XMLWF_OBJS) $(LIBRARY)
+
+examples/elements.o: examples/elements.c
+examples/elements: examples/elements.o $(LIBRARY)
+ $(LINK_EXE) $< $(LIBRARY)
+
+examples/outline.o: examples/outline.c
+examples/outline: examples/outline.o $(LIBRARY)
+ $(LINK_EXE) $< $(LIBRARY)
+
+tests/chardata.o: tests/chardata.c tests/chardata.h
+tests/minicheck.o: tests/minicheck.c tests/minicheck.h
+tests/runtests.o: tests/runtests.c tests/chardata.h
+tests/runtests: tests/runtests.o tests/chardata.o tests/minicheck.o $(LIBRARY)
+ $(LINK_EXE) $^
+tests/runtestspp.o: tests/runtestspp.cpp tests/runtests.c tests/chardata.h
+tests/runtestspp: tests/runtestspp.o tests/chardata.o tests/minicheck.o $(LIBRARY)
+ $(LINK_CXX_EXE) $^
+
+tests/xmlts.zip:
+ wget --output-document=tests/xmlts.zip \
+ http://www.w3.org/XML/Test/xmlts20020606.zip
+
+tests/XML-Test-Suite: tests/xmlts.zip
+ cd tests && unzip -q xmlts.zip
+
+run-xmltest: xmlwf/xmlwf tests/XML-Test-Suite
+ tests/xmltest.sh
+
+.SUFFIXES: .c .lo .o
+
+.c.o:
+ $(COMPILE) -o $@ -c $<
+.c.lo:
+ $(LTCOMPILE) -o $@ -c $<
+
+.PHONY: buildlib all \
+ clean distclean extraclean maintainer-clean \
+ dist distdir \
+ install uninstall

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/README
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/README 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,118 @@
+
+ Expat, Release 2.0.0
+
+This is Expat, a C library for parsing XML, written by James Clark.
+Expat is a stream-oriented XML parser. This means that you register
+handlers with the parser before starting the parse. These handlers
+are called when the parser discovers the associated structures in the
+document being parsed. A start tag is an example of the kind of
+structures for which you may register handlers.
+
+Windows users should use the expat_win32bin package, which includes
+both precompiled libraries and executables, and source code for
+developers.
+
+Expat is free software. You may copy, distribute, and modify it under
+the terms of the License contained in the file COPYING distributed
+with this package. This license is the same as the MIT/X Consortium
+license.
+
+Versions of Expat that have an odd minor version (the middle number in
+the release above), are development releases and should be considered
+as beta software. Releases with even minor version numbers are
+intended to be production grade software.
+
+If you are building Expat from a check-out from the CVS repository,
+you need to run a script that generates the configure script using the
+GNU autoconf and libtool tools. To do this, you need to have
+autoconf 2.52 or newer and libtool 1.4 or newer. Run the script like
+this:
+
+ ./buildconf.sh
+
+Once this has been done, follow the same instructions as for building
+from a source distribution.
+
+To build Expat from a source distribution, you first run the
+configuration shell script in the top level distribution directory:
+
+ ./configure
+
+There are many options which you may provide to configure (which you
+can discover by running configure with the --help option). But the
+one of most interest is the one that sets the installation directory.
+By default, the configure script will set things up to install
+libexpat into /usr/local/lib, expat.h into /usr/local/include, and
+xmlwf into /usr/local/bin. If, for example, you'd prefer to install
+into /home/me/mystuff/lib, /home/me/mystuff/include, and
+/home/me/mystuff/bin, you can tell configure about that with:
+
+ ./configure --prefix=/home/me/mystuff
+
+Another interesting option is to enable 64-bit integer support for
+line and column numbers and the over-all byte index:
+
+ ./configure CPPFLAGS=-DXML_LARGE_SIZE
+
+After running the configure script, the "make" command will build
+things and "make install" will install things into their proper
+location. Have a look at the "Makefile" to learn about additional
+"make" options. Note that you need to have write permission into
+the directories into which things will be installed.
+
+If you are interested in building Expat to provide document
+information in UTF-16 rather than the default UTF-8, follow these
+instructions:
+
+ 1. For UTF-16 output as unsigned short (and version/error
+ strings as char), run:
+
+ ./configure CPPFLAGS=-DXML_UNICODE
+
+ For UTF-16 output as wchar_t (incl. version/error strings),
+ run:
+
+ ./configure CFLAGS="-g -O2 -fshort-wchar" \
+ CPPFLAGS=-DXML_UNICODE_WCHAR_T
+
+ 2. Edit the MakeFile, changing:
+
+ LIBRARY = libexpat.la
+
+ to:
+
+ LIBRARY = libexpatw.la
+
+ (Note the additional "w" in the library name.)
+
+ 3. Run "make buildlib" (which builds the library only).
+
+ 4. Run "make installlib" (which installs the library only).
+
+Note for Solaris users: The "ar" command is usually located in
+"/usr/ccs/bin", which is not in the default PATH. You will need to
+add this to your path for the "make" command, and probably also switch
+to GNU make (the "make" found in /usr/ccs/bin does not seem to work
+properly -- appearantly it does not understand .PHONY directives). If
+you're using ksh or bash, use this command to build:
+
+ PATH=/usr/ccs/bin:$PATH make
+
+When using Expat with a project using autoconf for configuration, you
+can use the probing macro in conftools/expat.m4 to determine how to
+include Expat. See the comments at the top of that file for more
+information.
+
+A reference manual is available in the file doc/reference.html in this
+distribution.
+
+The homepage for this project is http://www.libexpat.org/. There
+are links there to connect you to the bug reports page. If you need
+to report a bug when you don't have access to a browser, you may also
+send a bug report by email to expat-bugs_at_mail.libexpat.org.
+
+Discussion related to the direction of future expat development takes
+place on expat-discuss_at_mail.libexpat.org. Archives of this list and
+other Expat-related lists may be found at:
+
+ http://mail.libexpat.org/mailman/listinfo/

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/amiga/Makefile
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/amiga/Makefile 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,184 @@
+#
+# Makefile for AmigaOS
+#
+
+.PHONY: help all staticlib sharedlib check clean install
+
+vpath %.c ../lib ../examples ../xmlwf ../tests
+vpath %.h ../lib ../tests
+
+
+#
+# Set these for SDK installation.
+#
+tooldir = SDK:Local/C
+staticlibdir = SDK:Local/clib2/lib
+staticincludedir = SDK:Local/clib2/include
+sharedlibdir = LIBS:
+sharedincludedir = SDK:Local/common/include
+
+
+ifeq ($(MAKECMDGOALS), staticlib)
+ DESTDIR = lib
+else
+ DESTDIR = libs
+endif
+
+STATICLIB = $(DESTDIR)/libexpat.a
+SHAREDLIB = $(DESTDIR)/expat.library
+
+XMLWF = $(DESTDIR)/xmlwf
+ELEMENTS = $(DESTDIR)/elements
+OUTLINE = $(DESTDIR)/outline
+RUNTESTS = $(DESTDIR)/runtests
+BENCHMARK = $(DESTDIR)/benchmark
+
+
+help:
+ @echo "Requires:"
+ @echo " AmigaOS 4.0"
+ @echo " SDK 51.15"
+ @echo " clib2 1.198"
+ @echo ""
+ @echo "Targets:"
+ @echo " all - make expat libraries, xmlwf, examples and run test suite"
+ @echo " install - install expat libraries and tools into SDK"
+
+all:
+ -makedir lib libs
+ $(MAKE) staticlib
+ $(MAKE) sharedlib
+
+staticlib: $(STATICLIB) $(XMLWF) $(ELEMENTS) $(OUTLINE) $(RUNTESTS) $(BENCHMARK) check
+ @echo done
+
+sharedlib: $(SHAREDLIB) $(XMLWF) $(ELEMENTS) $(OUTLINE) $(RUNTESTS) $(BENCHMARK) check
+ @echo done
+
+check:
+ $(RUNTESTS)
+
+clean:
+ -delete lib/#?.o quiet
+ -delete libs/#?.o quiet
+
+install:
+ copy lib/xmlwf $(tooldir) quiet
+ copy /lib/expat.h /lib/expat_external.h $(staticincludedir) quiet
+ copy lib/libexpat.a $(staticlibdir) quiet
+ copy libs/expat.library $(sharedlibdir) quiet
+ copy include $(sharedincludedir) quiet all
+
+
+CC = gcc
+LIBTOOL = ar
+STRIP = strip
+
+LDFLAGS =
+LIBS =
+CFLAGS = -DNDEBUG -O2
+LTFLAGS = -crs
+STRIPFLAGS = -R.comment
+LAUNCH =
+
+ifeq ($(MAKECMDGOALS), staticlib)
+ LIBS += $(STATICLIB)
+ INCLUDES = -I../lib
+endif
+
+ifeq ($(MAKECMDGOALS), sharedlib)
+ CFLAGS += -DAMIGA_SHARED_LIB -D__USE_INLINE__
+ INCLUDES = -I. -Iinclude -Iinclude/libraries -I../lib
+ LAUNCH = $(DESTDIR)/launch.o
+endif
+
+
+COMPILE = $(CC) $(CFLAGS) $(INCLUDES) -c
+
+LINK = $(CC) $(LDFLAGS) -o $@
+
+
+$(STATICLIB): $(DESTDIR)/xmlparse.o $(DESTDIR)/xmltok.o $(DESTDIR)/xmlrole.o
+ $(LIBTOOL) $(LTFLAGS) $@ $^
+
+$(DESTDIR)/xmlparse.o: xmlparse.c expat.h xmlrole.h xmltok.h \
+ expat_external.h internal.h amigaconfig.h
+ $(COMPILE) $< -o $@
+
+$(DESTDIR)/xmlrole.o: xmlrole.c ascii.h xmlrole.h expat_external.h \
+ internal.h amigaconfig.h
+ $(COMPILE) $< -o $@
+
+$(DESTDIR)/xmltok.o: xmltok.c xmltok_impl.c xmltok_ns.c ascii.h asciitab.h \
+ iasciitab.h latin1tab.h nametab.h utf8tab.h xmltok.h xmltok_impl.h \
+ expat_external.h internal.h amigaconfig.h
+ $(COMPILE) $< -o $@
+
+
+$(SHAREDLIB): $(DESTDIR)/expat_lib.o $(DESTDIR)/expat_vectors.o $(DESTDIR)/stdlib.o lib/libexpat.a
+ $(LINK) -nostartfiles -nostdlib -o $@ $^
+
+$(DESTDIR)/expat_lib.o: expat_lib.c
+ $(COMPILE) $< -o $@
+
+$(DESTDIR)/expat_vectors.o: expat_vectors.c
+ $(COMPILE) $< -o $@
+
+$(DESTDIR)/stdlib.o: stdlib.c
+ $(COMPILE) $< -o $@
+
+$(LAUNCH): launch.c
+ $(COMPILE) $< -o $@
+
+
+$(XMLWF): $(DESTDIR)/xmlwf.o $(DESTDIR)/xmlfile.o $(DESTDIR)/codepage.o $(DESTDIR)/readfilemap.o $(LAUNCH)
+ $(LINK) $^ $(LIBS)
+ $(STRIP) $(STRIPFLAGS) $@
+
+$(DESTDIR)/xmlwf.o: xmlwf.c
+ $(COMPILE) $< -o $@
+
+$(DESTDIR)/xmlfile.o: xmlfile.c
+ $(COMPILE) $< -o $@
+
+$(DESTDIR)/codepage.o: codepage.c
+ $(COMPILE) $< -o $@
+
+$(DESTDIR)/readfilemap.o: readfilemap.c
+ $(COMPILE) $< -o $@
+
+
+$(ELEMENTS): $(DESTDIR)/elements.o $(LAUNCH)
+ $(LINK) $^ $(LIBS)
+ $(STRIP) $(STRIPFLAGS) $@
+
+$(DESTDIR)/elements.o: elements.c
+ $(COMPILE) $< -o $@
+
+
+$(OUTLINE): $(DESTDIR)/outline.o $(LAUNCH)
+ $(LINK) $^ $(LIBS)
+ $(STRIP) $(STRIPFLAGS) $@
+
+$(DESTDIR)/outline.o: outline.c
+ $(COMPILE) $< -o $@
+
+
+$(RUNTESTS): $(DESTDIR)/runtests.o $(DESTDIR)/chardata.o $(DESTDIR)/minicheck.o $(LAUNCH)
+ $(LINK) $^ $(LIBS)
+
+$(DESTDIR)/chardata.o: chardata.c chardata.h
+ $(COMPILE) $< -o $@
+
+$(DESTDIR)/minicheck.o: minicheck.c minicheck.h
+ $(COMPILE) $< -o $@
+
+$(DESTDIR)/runtests.o: runtests.c chardata.h
+ $(COMPILE) $< -o $@
+
+
+$(BENCHMARK): $(DESTDIR)/benchmark.o $(LAUNCH)
+ $(LINK) $^ $(LIBS) -lm
+
+$(DESTDIR)/benchmark.o: benchmark/benchmark.c
+ $(COMPILE) $< -o $@

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/amiga/README.txt
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/amiga/README.txt 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,56 @@
+SUMMARY
+=======
+This is a port of expat for AmigaOS 4.0 which includes the
+SDK, some XML tools and the libraries.
+
+Both static and shared library versions are supported.
+
+The static library version is limited to clib2 although it should
+be possible to use newlib with the appopriate compile options.
+
+The shared library version is based on the work of Fredrik Wikstrom
+and is currently limited to PPC only.
+
+
+HISTORY
+=======
+4.0 - updated for corresponding Expat 2.0 release
+ - some minor CVS related changes
+
+3.1 - removed obsolete sfd file
+ - added library description xml file
+ - refactored Makefile
+ - removed extraneous VARARGS68K keywords
+ - reworked default memory handling functions in shared lib
+ - updated amigaconfig.h
+
+3.0 - initial release
+ - based on expat 1.95.8
+
+
+BUILDING
+========
+To build expat.library, xmlwf tool, examples and run the test suite,
+simply type 'make all' in the amiga subdirectory.
+
+The test suite will compile and run for both the static and shared
+library versions.
+
+
+INSTALLATION
+============
+To install both static and shared versions of expat into the
+AmigaOS SDK type 'make install' in the amiga subdirectory.
+
+
+CONFIGURATION
+=============
+You may want to edit the lib/amigaconfig.h file to remove
+DTD and/or XML namespace support if they are not required by your
+specific application for a smaller and faster implementation.
+
+
+TO DO
+=====
+- wide character support (UTF-16)
+- provide 68k backwards compatibility

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/amiga/expat.xml
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/amiga/expat.xml 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,264 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE library SYSTEM "library.dtd">
+<!-- autogenerated by fdtrans v51.16 -->
+<library name="expat" basename="ExpatBase" basetype="Library" openname="expat.library">
+ <include>libraries/expat.h</include>
+ <interface name="main" version="1.0" struct="ExpatIFace" prefix="_Expat_" asmprefix="IExpat" global="IExpat">
+ <method name="Obtain" result="uint32"/>
+ <method name="Release" result="uint32"/>
+ <method name="Expunge" result="void" status="unimplemented"/>
+ <method name="Clone" result="struct Interface *" status="unimplemented"/>
+ <method name="XML_ParserCreate" result="XML_Parser">
+ <arg name="encodingName" type="const XML_Char *"/>
+ </method>
+ <method name="XML_ParserCreateNS" result="XML_Parser">
+ <arg name="encodingName" type="const XML_Char *"/>
+ <arg name="nsSep" type="XML_Char"/>
+ </method>
+ <method name="XML_ParserCreate_MM" result="XML_Parser">
+ <arg name="encoding" type="const XML_Char *"/>
+ <arg name="memsuite" type="const XML_Memory_Handling_Suite *"/>
+ <arg name="namespaceSeparator" type="const XML_Char *"/>
+ </method>
+ <method name="XML_ExternalEntityParserCreate" result="XML_Parser">
+ <arg name="parser" type="XML_Parser"/>
+ <arg name="context" type="const XML_Char *"/>
+ <arg name="encoding" type="const XML_Char *"/>
+ </method>
+ <method name="XML_ParserFree" result="void">
+ <arg name="parser" type="XML_Parser"/>
+ </method>
+ <method name="XML_Parse" result="enum XML_Status">
+ <arg name="parser" type="XML_Parser"/>
+ <arg name="s" type="const char *"/>
+ <arg name="len" type="int"/>
+ <arg name="isFinal" type="int"/>
+ </method>
+ <method name="XML_ParseBuffer" result="enum XML_Status">
+ <arg name="parser" type="XML_Parser"/>
+ <arg name="len" type="int"/>
+ <arg name="isFinal" type="int"/>
+ </method>
+ <method name="XML_GetBuffer" result="void *">
+ <arg name="parser" type="XML_Parser"/>
+ <arg name="len" type="int"/>
+ </method>
+ <method name="XML_SetStartElementHandler" result="void">
+ <arg name="parser" type="XML_Parser"/>
+ <arg name="start" type="XML_StartElementHandler"/>
+ </method>
+ <method name="XML_SetEndElementHandler" result="void">
+ <arg name="parser" type="XML_Parser"/>
+ <arg name="end" type="XML_EndElementHandler"/>
+ </method>
+ <method name="XML_SetElementHandler" result="void">
+ <arg name="parser" type="XML_Parser"/>
+ <arg name="start" type="XML_StartElementHandler"/>
+ <arg name="end" type="XML_EndElementHandler"/>
+ </method>
+ <method name="XML_SetCharacterDataHandler" result="void">
+ <arg name="parser" type="XML_Parser"/>
+ <arg name="handler" type="XML_CharacterDataHandler"/>
+ </method>
+ <method name="XML_SetProcessingInstructionHandler" result="void">
+ <arg name="parser" type="XML_Parser"/>
+ <arg name="handler" type="XML_ProcessingInstructionHandler"/>
+ </method>
+ <method name="XML_SetCommentHandler" result="void">
+ <arg name="parser" type="XML_Parser"/>
+ <arg name="handler" type="XML_CommentHandler"/>
+ </method>
+ <method name="XML_SetStartCdataSectionHandler" result="void">
+ <arg name="parser" type="XML_Parser"/>
+ <arg name="start" type="XML_StartCdataSectionHandler"/>
+ </method>
+ <method name="XML_SetEndCdataSectionHandler" result="void">
+ <arg name="parser" type="XML_Parser"/>
+ <arg name="end" type="XML_EndCdataSectionHandler"/>
+ </method>
+ <method name="XML_SetCdataSectionHandler" result="void">
+ <arg name="parser" type="XML_Parser"/>
+ <arg name="start" type="XML_StartCdataSectionHandler"/>
+ <arg name="end" type="XML_EndCdataSectionHandler"/>
+ </method>
+ <method name="XML_SetDefaultHandler" result="void">
+ <arg name="parser" type="XML_Parser"/>
+ <arg name="handler" type="XML_DefaultHandler"/>
+ </method>
+ <method name="XML_SetDefaultHandlerExpand" result="void">
+ <arg name="parser" type="XML_Parser"/>
+ <arg name="handler" type="XML_DefaultHandler"/>
+ </method>
+ <method name="XML_SetExternalEntityRefHandler" result="void">
+ <arg name="parser" type="XML_Parser"/>
+ <arg name="handler" type="XML_ExternalEntityRefHandler"/>
+ </method>
+ <method name="XML_SetExternalEntityRefHandlerArg" result="void">
+ <arg name="parser" type="XML_Parser"/>
+ <arg name="arg" type="void *"/>
+ </method>
+ <method name="XML_SetUnknownEncodingHandler" result="void">
+ <arg name="parser" type="XML_Parser"/>
+ <arg name="handler" type="XML_UnknownEncodingHandler"/>
+ <arg name="data" type="void *"/>
+ </method>
+ <method name="XML_SetStartNamespaceDeclHandler" result="void">
+ <arg name="parser" type="XML_Parser"/>
+ <arg name="start" type="XML_StartNamespaceDeclHandler"/>
+ </method>
+ <method name="XML_SetEndNamespaceDeclHandler" result="void">
+ <arg name="parser" type="XML_Parser"/>
+ <arg name="end" type="XML_EndNamespaceDeclHandler"/>
+ </method>
+ <method name="XML_SetNamespaceDeclHandler" result="void">
+ <arg name="parser" type="XML_Parser"/>
+ <arg name="start" type="XML_StartNamespaceDeclHandler"/>
+ <arg name="end" type="XML_EndNamespaceDeclHandler"/>
+ </method>
+ <method name="XML_SetXmlDeclHandler" result="void">
+ <arg name="parser" type="XML_Parser"/>
+ <arg name="handler" type="XML_XmlDeclHandler"/>
+ </method>
+ <method name="XML_SetStartDoctypeDeclHandler" result="void">
+ <arg name="parser" type="XML_Parser"/>
+ <arg name="start" type="XML_StartDoctypeDeclHandler"/>
+ </method>
+ <method name="XML_SetEndDoctypeDeclHandler" result="void">
+ <arg name="parser" type="XML_Parser"/>
+ <arg name="end" type="XML_EndDoctypeDeclHandler"/>
+ </method>
+ <method name="XML_SetDoctypeDeclHandler" result="void">
+ <arg name="parser" type="XML_Parser"/>
+ <arg name="start" type="XML_StartDoctypeDeclHandler"/>
+ <arg name="end" type="XML_EndDoctypeDeclHandler"/>
+ </method>
+ <method name="XML_SetElementDeclHandler" result="void">
+ <arg name="parser" type="XML_Parser"/>
+ <arg name="eldecl" type="XML_ElementDeclHandler"/>
+ </method>
+ <method name="XML_SetAttlistDeclHandler" result="void">
+ <arg name="parser" type="XML_Parser"/>
+ <arg name="attdecl" type="XML_AttlistDeclHandler"/>
+ </method>
+ <method name="XML_SetEntityDeclHandler" result="void">
+ <arg name="parser" type="XML_Parser"/>
+ <arg name="handler" type="XML_EntityDeclHandler"/>
+ </method>
+ <method name="XML_SetUnparsedEntityDeclHandler" result="void">
+ <arg name="parser" type="XML_Parser"/>
+ <arg name="handler" type="XML_UnparsedEntityDeclHandler"/>
+ </method>
+ <method name="XML_SetNotationDeclHandler" result="void">
+ <arg name="parser" type="XML_Parser"/>
+ <arg name="handler" type="XML_NotationDeclHandler"/>
+ </method>
+ <method name="XML_SetNotStandaloneHandler" result="void">
+ <arg name="parser" type="XML_Parser"/>
+ <arg name="handler" type="XML_NotStandaloneHandler"/>
+ </method>
+ <method name="XML_GetErrorCode" result="enum XML_Error">
+ <arg name="parser" type="XML_Parser"/>
+ </method>
+ <method name="XML_ErrorString" result="const XML_LChar *">
+ <arg name="code" type="enum XML_Error"/>
+ </method>
+ <method name="XML_GetCurrentByteIndex" result="long">
+ <arg name="parser" type="XML_Parser"/>
+ </method>
+ <method name="XML_GetCurrentLineNumber" result="int">
+ <arg name="parser" type="XML_Parser"/>
+ </method>
+ <method name="XML_GetCurrentColumnNumber" result="int">
+ <arg name="parser" type="XML_Parser"/>
+ </method>
+ <method name="XML_GetCurrentByteCount" result="int">
+ <arg name="parser" type="XML_Parser"/>
+ </method>
+ <method name="XML_GetInputContext" result="const char *">
+ <arg name="parser" type="XML_Parser"/>
+ <arg name="offset" type="int *"/>
+ <arg name="size" type="int *"/>
+ </method>
+ <method name="XML_SetUserData" result="void">
+ <arg name="parser" type="XML_Parser"/>
+ <arg name="userData" type="void *"/>
+ </method>
+ <method name="XML_DefaultCurrent" result="void">
+ <arg name="parser" type="XML_Parser"/>
+ </method>
+ <method name="XML_UseParserAsHandlerArg" result="void">
+ <arg name="parser" type="XML_Parser"/>
+ </method>
+ <method name="XML_SetBase" result="enum XML_Status">
+ <arg name="parser" type="XML_Parser"/>
+ <arg name="base" type="const XML_Char *"/>
+ </method>
+ <method name="XML_GetBase" result="const XML_Char *">
+ <arg name="parser" type="XML_Parser"/>
+ </method>
+ <method name="XML_GetSpecifiedAttributeCount" result="int">
+ <arg name="parser" type="XML_Parser"/>
+ </method>
+ <method name="XML_GetIdAttributeIndex" result="int">
+ <arg name="parser" type="XML_Parser"/>
+ </method>
+ <method name="XML_SetEncoding" result="enum XML_Status">
+ <arg name="parser" type="XML_Parser"/>
+ <arg name="encoding" type="const XML_Char *"/>
+ </method>
+ <method name="XML_SetParamEntityParsing" result="int">
+ <arg name="parser" type="XML_Parser"/>
+ <arg name="parsing" type="enum XML_ParamEntityParsing"/>
+ </method>
+ <method name="XML_SetReturnNSTriplet" result="void">
+ <arg name="parser" type="XML_Parser"/>
+ <arg name="do_nst" type="int"/>
+ </method>
+ <method name="XML_ExpatVersion" result="const XML_LChar *">
+ </method>
+ <method name="XML_ExpatVersionInfo" result="XML_Expat_Version">
+ </method>
+ <method name="XML_ParserReset" result="XML_Bool">
+ <arg name="parser" type="XML_Parser"/>
+ <arg name="encoding" type="const XML_Char *"/>
+ </method>
+ <method name="XML_SetSkippedEntityHandler" result="void">
+ <arg name="parser" type="XML_Parser"/>
+ <arg name="handler" type="XML_SkippedEntityHandler"/>
+ </method>
+ <method name="XML_UseForeignDTD" result="enum XML_Error">
+ <arg name="parser" type="XML_Parser"/>
+ <arg name="useDTD" type="XML_Bool"/>
+ </method>
+ <method name="XML_GetFeatureList" result="const XML_Feature *">
+ </method>
+ <method name="XML_StopParser" result="enum XML_Status">
+ <arg name="parser" type="XML_Parser"/>
+ <arg name="resumable" type="XML_Bool"/>
+ </method>
+ <method name="XML_ResumeParser" result="enum XML_Status">
+ <arg name="parser" type="XML_Parser"/>
+ </method>
+ <method name="XML_GetParsingStatus" result="void">
+ <arg name="parser" type="XML_Parser"/>
+ <arg name="status" type="XML_ParsingStatus *"/>
+ </method>
+ <method name="XML_FreeContentModel" result="void">
+ <arg name="parser" type="XML_Parser"/>
+ <arg name="model" type="XML_Content *"/>
+ </method>
+ <method name="XML_MemMalloc" result="void *">
+ <arg name="parser" type="XML_Parser"/>
+ <arg name="size" type="size_t"/>
+ </method>
+ <method name="XML_MemRealloc" result="void *">
+ <arg name="parser" type="XML_Parser"/>
+ <arg name="ptr" type="void *"/>
+ <arg name="size" type="size_t"/>
+ </method>
+ <method name="XML_MemFree" result="void">
+ <arg name="parser" type="XML_Parser"/>
+ <arg name="ptr" type="void *"/>
+ </method>
+ </interface>
+</library>

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/amiga/expat_lib.c
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/amiga/expat_lib.c 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,233 @@
+/*
+** Copyright (c) 2001-2005 Expat maintainers.
+**
+** Permission is hereby granted, free of charge, to any person obtaining
+** a copy of this software and associated documentation files (the
+** "Software"), to deal in the Software without restriction, including
+** without limitation the rights to use, copy, modify, merge, publish,
+** distribute, sublicense, and/or sell copies of the Software, and to
+** permit persons to whom the Software is furnished to do so, subject to
+** the following conditions:
+**
+** The above copyright notice and this permission notice shall be included
+** in all copies or substantial portions of the Software.
+**
+** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+** SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+#include <dos/dos.h>
+#include <proto/exec.h>
+
+#define LIBNAME "expat.library"
+#define LIBPRI 0
+#define VERSION 4
+#define REVISION 0
+#define VSTRING "expat.library 4.0 (27.12.2005)" /* dd.mm.yyyy */
+
+
+static const char* __attribute__((used)) verstag = "\0$VER: " VSTRING;
+
+
+struct ExpatBase {
+ struct Library libNode;
+ uint16 pad;
+ BPTR SegList;
+};
+
+
+struct ExpatBase * libInit(struct ExpatBase *libBase, BPTR seglist, struct ExecIFace *ISys);
+uint32 libObtain (struct LibraryManagerInterface *Self);
+uint32 libRelease (struct LibraryManagerInterface *Self);
+struct ExpatBase *libOpen (struct LibraryManagerInterface *Self, uint32 version);
+BPTR libClose (struct LibraryManagerInterface *Self);
+BPTR libExpunge (struct LibraryManagerInterface *Self);
+
+
+static APTR lib_manager_vectors[] = {
+ libObtain,
+ libRelease,
+ NULL,
+ NULL,
+ libOpen,
+ libClose,
+ libExpunge,
+ NULL,
+ (APTR)-1,
+};
+
+
+static struct TagItem lib_managerTags[] = {
+ { MIT_Name, (uint32)"__library" },
+ { MIT_VectorTable, (uint32)lib_manager_vectors },
+ { MIT_Version, 1 },
+ { TAG_END, 0 }
+};
+
+
+extern void *main_vectors[];
+
+static struct TagItem lib_mainTags[] = {
+ { MIT_Name, (uint32)"main" },
+ { MIT_VectorTable, (uint32)main_vectors },
+ { MIT_Version, 1 },
+ { TAG_END, 0 }
+};
+
+
+static APTR libInterfaces[] = {
+ lib_managerTags,
+ lib_mainTags,
+ NULL
+};
+
+
+static struct TagItem libCreateTags[] = {
+ { CLT_DataSize, sizeof(struct ExpatBase) },
+ { CLT_InitFunc, (uint32)libInit },
+ { CLT_Interfaces, (uint32)libInterfaces },
+ { TAG_END, 0 }
+};
+
+
+static struct Resident __attribute__((used)) lib_res = {
+ RTC_MATCHWORD, // rt_MatchWord
+ &lib_res, // rt_MatchTag
+ &lib_res+1, // rt_EndSkip
+ RTF_NATIVE | RTF_AUTOINIT, // rt_Flags
+ VERSION, // rt_Version
+ NT_LIBRARY, // rt_Type
+ LIBPRI, // rt_Pri
+ LIBNAME, // rt_Name
+ VSTRING, // rt_IdString
+ libCreateTags // rt_Init
+};
+
+
+struct Library *DOSLib = 0;
+struct Library *UtilityBase = 0;
+
+struct ExecIFace *IExec = 0;
+struct DOSIFace *IDOS = 0;
+struct UtilityIFace *IUtility = 0;
+
+
+void _start()
+{
+}
+
+
+struct ExpatBase *libInit(struct ExpatBase *libBase, BPTR seglist, struct ExecIFace *ISys)
+{
+ libBase->libNode.lib_Node.ln_Type = NT_LIBRARY;
+ libBase->libNode.lib_Node.ln_Pri = LIBPRI;
+ libBase->libNode.lib_Node.ln_Name = LIBNAME;
+ libBase->libNode.lib_Flags = LIBF_SUMUSED|LIBF_CHANGED;
+ libBase->libNode.lib_Version = VERSION;
+ libBase->libNode.lib_Revision = REVISION;
+ libBase->libNode.lib_IdString = VSTRING;
+ libBase->SegList = seglist;
+
+ IExec = ISys;
+
+ DOSLib = OpenLibrary("dos.library", 51);
+ if ( DOSLib != 0 ) {
+ IDOS = (struct DOSIFace *)GetInterface(DOSLib, "main", 1, NULL);
+ if ( IDOS != 0 ) {
+ UtilityBase = OpenLibrary("utility.library", 51);
+ if ( UtilityBase != 0 ) {
+ IUtility = (struct UtilityIFace*)GetInterface(UtilityBase, "main", 1, NULL);
+ if ( IUtility != 0 ) {
+ return libBase;
+ }
+
+ CloseLibrary(UtilityBase);
+ }
+
+ DropInterface((struct Interface *)IDOS);
+ }
+
+ CloseLibrary(DOSLib);
+ }
+
+ return NULL;
+}
+
+
+uint32 libObtain( struct LibraryManagerInterface *Self )
+{
+ ++Self->Data.RefCount;
+ return Self->Data.RefCount;
+}
+
+
+uint32 libRelease( struct LibraryManagerInterface *Self )
+{
+ --Self->Data.RefCount;
+ return Self->Data.RefCount;
+}
+
+
+struct ExpatBase *libOpen( struct LibraryManagerInterface *Self, uint32 version )
+{
+ struct ExpatBase *libBase;
+
+ libBase = (struct ExpatBase *)Self->Data.LibBase;
+
+ ++libBase->libNode.lib_OpenCnt;
+ libBase->libNode.lib_Flags &= ~LIBF_DELEXP;
+
+ return libBase;
+}
+
+
+BPTR libClose( struct LibraryManagerInterface *Self )
+{
+ struct ExpatBase *libBase;
+
+ libBase = (struct ExpatBase *)Self->Data.LibBase;
+
+ --libBase->libNode.lib_OpenCnt;
+ if ( libBase->libNode.lib_OpenCnt ) {
+ return 0;
+ }
+
+ if ( libBase->libNode.lib_Flags & LIBF_DELEXP ) {
+ return (BPTR)Self->LibExpunge();
+ }
+ else {
+ return 0;
+ }
+}
+
+
+BPTR libExpunge( struct LibraryManagerInterface *Self )
+{
+ struct ExpatBase *libBase;
+ BPTR result = 0;
+
+ libBase = (struct ExpatBase *)Self->Data.LibBase;
+
+ if (libBase->libNode.lib_OpenCnt == 0) {
+ Remove(&libBase->libNode.lib_Node);
+
+ result = libBase->SegList;
+
+ DropInterface((struct Interface *)IUtility);
+ CloseLibrary(UtilityBase);
+ DropInterface((struct Interface *)IDOS);
+ CloseLibrary(DOSLib);
+
+ DeleteLibrary(&libBase->libNode);
+ }
+ else {
+ libBase->libNode.lib_Flags |= LIBF_DELEXP;
+ }
+
+ return result;
+}

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/amiga/expat_vectors.c
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/amiga/expat_vectors.c 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,505 @@
+/*
+** Copyright (c) 2001-2005 Expat maintainers.
+**
+** Permission is hereby granted, free of charge, to any person obtaining
+** a copy of this software and associated documentation files (the
+** "Software"), to deal in the Software without restriction, including
+** without limitation the rights to use, copy, modify, merge, publish,
+** distribute, sublicense, and/or sell copies of the Software, and to
+** permit persons to whom the Software is furnished to do so, subject to
+** the following conditions:
+**
+** The above copyright notice and this permission notice shall be included
+** in all copies or substantial portions of the Software.
+**
+** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+** SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+#include <exec/types.h>
+#include <exec/exec.h>
+#include <exec/interfaces.h>
+#include <interfaces/expat.h>
+
+extern uint32 _Expat_Obtain(struct ExpatIFace *);
+extern uint32 _Expat_Release(struct ExpatIFace *);
+extern XML_Parser _Expat_XML_ParserCreate(struct ExpatIFace *, const XML_Char * encodingName);
+extern XML_Parser _Expat_XML_ParserCreateNS(struct ExpatIFace *, const XML_Char * encodingName, XML_Char nsSep);
+extern XML_Parser _Expat_XML_ParserCreate_MM(struct ExpatIFace *, const XML_Char * encoding, const XML_Memory_Handling_Suite * memsuite, const XML_Char * namespaceSeparator);
+extern XML_Parser _Expat_XML_ExternalEntityParserCreate(struct ExpatIFace *, XML_Parser parser, const XML_Char * context, const XML_Char * encoding);
+extern void _Expat_XML_ParserFree(struct ExpatIFace *, XML_Parser parser);
+extern enum XML_Status _Expat_XML_Parse(struct ExpatIFace *, XML_Parser parser, const char * s, int len, int isFinal);
+extern enum XML_Status _Expat_XML_ParseBuffer(struct ExpatIFace *, XML_Parser parser, int len, int isFinal);
+extern void * _Expat_XML_GetBuffer(struct ExpatIFace *, XML_Parser parser, int len);
+extern void _Expat_XML_SetStartElementHandler(struct ExpatIFace *, XML_Parser parser, XML_StartElementHandler start);
+extern void _Expat_XML_SetEndElementHandler(struct ExpatIFace *, XML_Parser parser, XML_EndElementHandler end);
+extern void _Expat_XML_SetElementHandler(struct ExpatIFace *, XML_Parser parser, XML_StartElementHandler start, XML_EndElementHandler end);
+extern void _Expat_XML_SetCharacterDataHandler(struct ExpatIFace *, XML_Parser parser, XML_CharacterDataHandler handler);
+extern void _Expat_XML_SetProcessingInstructionHandler(struct ExpatIFace *, XML_Parser parser, XML_ProcessingInstructionHandler handler);
+extern void _Expat_XML_SetCommentHandler(struct ExpatIFace *, XML_Parser parser, XML_CommentHandler handler);
+extern void _Expat_XML_SetStartCdataSectionHandler(struct ExpatIFace *, XML_Parser parser, XML_StartCdataSectionHandler start);
+extern void _Expat_XML_SetEndCdataSectionHandler(struct ExpatIFace *, XML_Parser parser, XML_EndCdataSectionHandler end);
+extern void _Expat_XML_SetCdataSectionHandler(struct ExpatIFace *, XML_Parser parser, XML_StartCdataSectionHandler start, XML_EndCdataSectionHandler end);
+extern void _Expat_XML_SetDefaultHandler(struct ExpatIFace *, XML_Parser parser, XML_DefaultHandler handler);
+extern void _Expat_XML_SetDefaultHandlerExpand(struct ExpatIFace *, XML_Parser parser, XML_DefaultHandler handler);
+extern void _Expat_XML_SetExternalEntityRefHandler(struct ExpatIFace *, XML_Parser parser, XML_ExternalEntityRefHandler handler);
+extern void _Expat_XML_SetExternalEntityRefHandlerArg(struct ExpatIFace *, XML_Parser parser, void * arg);
+extern void _Expat_XML_SetUnknownEncodingHandler(struct ExpatIFace *, XML_Parser parser, XML_UnknownEncodingHandler handler, void * data);
+extern void _Expat_XML_SetStartNamespaceDeclHandler(struct ExpatIFace *, XML_Parser parser, XML_StartNamespaceDeclHandler start);
+extern void _Expat_XML_SetEndNamespaceDeclHandler(struct ExpatIFace *, XML_Parser parser, XML_EndNamespaceDeclHandler end);
+extern void _Expat_XML_SetNamespaceDeclHandler(struct ExpatIFace *, XML_Parser parser, XML_StartNamespaceDeclHandler start, XML_EndNamespaceDeclHandler end);
+extern void _Expat_XML_SetXmlDeclHandler(struct ExpatIFace *, XML_Parser parser, XML_XmlDeclHandler handler);
+extern void _Expat_XML_SetStartDoctypeDeclHandler(struct ExpatIFace *, XML_Parser parser, XML_StartDoctypeDeclHandler start);
+extern void _Expat_XML_SetEndDoctypeDeclHandler(struct ExpatIFace *, XML_Parser parser, XML_EndDoctypeDeclHandler end);
+extern void _Expat_XML_SetDoctypeDeclHandler(struct ExpatIFace *, XML_Parser parser, XML_StartDoctypeDeclHandler start, XML_EndDoctypeDeclHandler end);
+extern void _Expat_XML_SetElementDeclHandler(struct ExpatIFace *, XML_Parser parser, XML_ElementDeclHandler eldecl);
+extern void _Expat_XML_SetAttlistDeclHandler(struct ExpatIFace *, XML_Parser parser, XML_AttlistDeclHandler attdecl);
+extern void _Expat_XML_SetEntityDeclHandler(struct ExpatIFace *, XML_Parser parser, XML_EntityDeclHandler handler);
+extern void _Expat_XML_SetUnparsedEntityDeclHandler(struct ExpatIFace *, XML_Parser parser, XML_UnparsedEntityDeclHandler handler);
+extern void _Expat_XML_SetNotationDeclHandler(struct ExpatIFace *, XML_Parser parser, XML_NotationDeclHandler handler);
+extern void _Expat_XML_SetNotStandaloneHandler(struct ExpatIFace *, XML_Parser parser, XML_NotStandaloneHandler handler);
+extern enum XML_Error _Expat_XML_GetErrorCode(struct ExpatIFace *, XML_Parser parser);
+extern const XML_LChar * _Expat_XML_ErrorString(struct ExpatIFace *, enum XML_Error code);
+extern long _Expat_XML_GetCurrentByteIndex(struct ExpatIFace *, XML_Parser parser);
+extern int _Expat_XML_GetCurrentLineNumber(struct ExpatIFace *, XML_Parser parser);
+extern int _Expat_XML_GetCurrentColumnNumber(struct ExpatIFace *, XML_Parser parser);
+extern int _Expat_XML_GetCurrentByteCount(struct ExpatIFace *, XML_Parser parser);
+extern const char * _Expat_XML_GetInputContext(struct ExpatIFace *, XML_Parser parser, int * offset, int * size);
+extern void _Expat_XML_SetUserData(struct ExpatIFace *, XML_Parser parser, void * userData);
+extern void _Expat_XML_DefaultCurrent(struct ExpatIFace *, XML_Parser parser);
+extern void _Expat_XML_UseParserAsHandlerArg(struct ExpatIFace *, XML_Parser parser);
+extern enum XML_Status _Expat_XML_SetBase(struct ExpatIFace *, XML_Parser parser, const XML_Char * base);
+extern const XML_Char * _Expat_XML_GetBase(struct ExpatIFace *, XML_Parser parser);
+extern int _Expat_XML_GetSpecifiedAttributeCount(struct ExpatIFace *, XML_Parser parser);
+extern int _Expat_XML_GetIdAttributeIndex(struct ExpatIFace *, XML_Parser parser);
+extern enum XML_Status _Expat_XML_SetEncoding(struct ExpatIFace *, XML_Parser parser, const XML_Char * encoding);
+extern int _Expat_XML_SetParamEntityParsing(struct ExpatIFace *, XML_Parser parser, enum XML_ParamEntityParsing parsing);
+extern void _Expat_XML_SetReturnNSTriplet(struct ExpatIFace *, XML_Parser parser, int do_nst);
+extern const XML_LChar * _Expat_XML_ExpatVersion(struct ExpatIFace *);
+extern XML_Expat_Version _Expat_XML_ExpatVersionInfo(struct ExpatIFace *);
+extern XML_Bool _Expat_XML_ParserReset(struct ExpatIFace *, XML_Parser parser, const XML_Char * encoding);
+extern void _Expat_XML_SetSkippedEntityHandler(struct ExpatIFace *, XML_Parser parser, XML_SkippedEntityHandler handler);
+extern enum XML_Error _Expat_XML_UseForeignDTD(struct ExpatIFace *, XML_Parser parser, XML_Bool useDTD);
+extern const XML_Feature * _Expat_XML_GetFeatureList(struct ExpatIFace *);
+extern enum XML_Status _Expat_XML_StopParser(struct ExpatIFace *, XML_Parser parser, XML_Bool resumable);
+extern enum XML_Status _Expat_XML_ResumeParser(struct ExpatIFace *, XML_Parser parser);
+extern void _Expat_XML_GetParsingStatus(struct ExpatIFace *, XML_Parser parser, XML_ParsingStatus * status);
+extern void _Expat_XML_FreeContentModel(struct ExpatIFace *, XML_Parser parser, XML_Content * model);
+extern void * _Expat_XML_MemMalloc(struct ExpatIFace *, XML_Parser parser, size_t size);
+extern void * _Expat_XML_MemRealloc(struct ExpatIFace *, XML_Parser parser, void * ptr, size_t size);
+extern void _Expat_XML_MemFree(struct ExpatIFace *, XML_Parser parser, void * ptr);
+
+
+CONST APTR main_vectors[] =
+{
+ _Expat_Obtain,
+ _Expat_Release,
+ NULL,
+ NULL,
+ _Expat_XML_ParserCreate,
+ _Expat_XML_ParserCreateNS,
+ _Expat_XML_ParserCreate_MM,
+ _Expat_XML_ExternalEntityParserCreate,
+ _Expat_XML_ParserFree,
+ _Expat_XML_Parse,
+ _Expat_XML_ParseBuffer,
+ _Expat_XML_GetBuffer,
+ _Expat_XML_SetStartElementHandler,
+ _Expat_XML_SetEndElementHandler,
+ _Expat_XML_SetElementHandler,
+ _Expat_XML_SetCharacterDataHandler,
+ _Expat_XML_SetProcessingInstructionHandler,
+ _Expat_XML_SetCommentHandler,
+ _Expat_XML_SetStartCdataSectionHandler,
+ _Expat_XML_SetEndCdataSectionHandler,
+ _Expat_XML_SetCdataSectionHandler,
+ _Expat_XML_SetDefaultHandler,
+ _Expat_XML_SetDefaultHandlerExpand,
+ _Expat_XML_SetExternalEntityRefHandler,
+ _Expat_XML_SetExternalEntityRefHandlerArg,
+ _Expat_XML_SetUnknownEncodingHandler,
+ _Expat_XML_SetStartNamespaceDeclHandler,
+ _Expat_XML_SetEndNamespaceDeclHandler,
+ _Expat_XML_SetNamespaceDeclHandler,
+ _Expat_XML_SetXmlDeclHandler,
+ _Expat_XML_SetStartDoctypeDeclHandler,
+ _Expat_XML_SetEndDoctypeDeclHandler,
+ _Expat_XML_SetDoctypeDeclHandler,
+ _Expat_XML_SetElementDeclHandler,
+ _Expat_XML_SetAttlistDeclHandler,
+ _Expat_XML_SetEntityDeclHandler,
+ _Expat_XML_SetUnparsedEntityDeclHandler,
+ _Expat_XML_SetNotationDeclHandler,
+ _Expat_XML_SetNotStandaloneHandler,
+ _Expat_XML_GetErrorCode,
+ _Expat_XML_ErrorString,
+ _Expat_XML_GetCurrentByteIndex,
+ _Expat_XML_GetCurrentLineNumber,
+ _Expat_XML_GetCurrentColumnNumber,
+ _Expat_XML_GetCurrentByteCount,
+ _Expat_XML_GetInputContext,
+ _Expat_XML_SetUserData,
+ _Expat_XML_DefaultCurrent,
+ _Expat_XML_UseParserAsHandlerArg,
+ _Expat_XML_SetBase,
+ _Expat_XML_GetBase,
+ _Expat_XML_GetSpecifiedAttributeCount,
+ _Expat_XML_GetIdAttributeIndex,
+ _Expat_XML_SetEncoding,
+ _Expat_XML_SetParamEntityParsing,
+ _Expat_XML_SetReturnNSTriplet,
+ _Expat_XML_ExpatVersion,
+ _Expat_XML_ExpatVersionInfo,
+ _Expat_XML_ParserReset,
+ _Expat_XML_SetSkippedEntityHandler,
+ _Expat_XML_UseForeignDTD,
+ _Expat_XML_GetFeatureList,
+ _Expat_XML_StopParser,
+ _Expat_XML_ResumeParser,
+ _Expat_XML_GetParsingStatus,
+ _Expat_XML_FreeContentModel,
+ _Expat_XML_MemMalloc,
+ _Expat_XML_MemRealloc,
+ _Expat_XML_MemFree,
+ (APTR)-1
+};
+
+uint32 _Expat_Obtain(struct ExpatIFace *Self)
+{
+ return ++Self->Data.RefCount;
+}
+
+uint32 _Expat_Release(struct ExpatIFace *Self)
+{
+ return --Self->Data.RefCount;
+}
+
+XML_Parser _Expat_XML_ParserCreate(struct ExpatIFace * Self, const XML_Char *encoding)
+{
+ return XML_ParserCreate(encoding);
+}
+
+XML_Parser _Expat_XML_ParserCreateNS(struct ExpatIFace * Self, const XML_Char *encoding, XML_Char nsSep)
+{
+ return XML_ParserCreateNS(encoding, nsSep);
+}
+
+XML_Parser _Expat_XML_ParserCreate_MM(struct ExpatIFace * Self, const XML_Char *encoding, const XML_Memory_Handling_Suite *memsuite, const XML_Char *namespaceSeparator)
+{
+ return XML_ParserCreate_MM(encoding, memsuite, namespaceSeparator);
+}
+
+XML_Parser _Expat_XML_ExternalEntityParserCreate(struct ExpatIFace * Self, XML_Parser parser, const XML_Char *context, const XML_Char *encoding)
+{
+ return XML_ExternalEntityParserCreate(parser, context, encoding);
+}
+
+void _Expat_XML_ParserFree(struct ExpatIFace *Self, XML_Parser parser)
+{
+ XML_ParserFree(parser);
+}
+
+enum XML_Status _Expat_XML_Parse(struct ExpatIFace * Self, XML_Parser parser, const char * s, int len, int isFinal)
+{
+ return XML_Parse(parser, s, len, isFinal);
+}
+
+enum XML_Status _Expat_XML_ParseBuffer(struct ExpatIFace * Self, XML_Parser parser, int len, int isFinal)
+{
+ return XML_ParseBuffer(parser, len, isFinal);
+}
+
+void * _Expat_XML_GetBuffer(struct ExpatIFace * Self, XML_Parser parser, int len)
+{
+ return XML_GetBuffer(parser, len);
+}
+
+void _Expat_XML_SetStartElementHandler(struct ExpatIFace * Self, XML_Parser parser, XML_StartElementHandler start)
+{
+ XML_SetStartElementHandler(parser, start);
+}
+
+void _Expat_XML_SetEndElementHandler(struct ExpatIFace * Self, XML_Parser parser, XML_EndElementHandler end)
+{
+ XML_SetEndElementHandler(parser, end);
+}
+
+void _Expat_XML_SetElementHandler(struct ExpatIFace * Self, XML_Parser parser, XML_StartElementHandler start, XML_EndElementHandler end)
+{
+ XML_SetElementHandler(parser, start, end);
+}
+
+void _Expat_XML_SetCharacterDataHandler(struct ExpatIFace * Self, XML_Parser parser, XML_CharacterDataHandler handler)
+{
+ XML_SetCharacterDataHandler(parser, handler);
+}
+
+void _Expat_XML_SetProcessingInstructionHandler(struct ExpatIFace * Self, XML_Parser parser, XML_ProcessingInstructionHandler handler)
+{
+ XML_SetProcessingInstructionHandler(parser, handler);
+}
+
+void _Expat_XML_SetCommentHandler(struct ExpatIFace * Self, XML_Parser parser, XML_CommentHandler handler)
+{
+ XML_SetCommentHandler(parser, handler);
+}
+
+void _Expat_XML_SetStartCdataSectionHandler(struct ExpatIFace * Self, XML_Parser parser, XML_StartCdataSectionHandler start)
+{
+ XML_SetStartCdataSectionHandler(parser, start);
+}
+
+void _Expat_XML_SetEndCdataSectionHandler(struct ExpatIFace * Self, XML_Parser parser, XML_EndCdataSectionHandler end)
+{
+ XML_SetEndCdataSectionHandler(parser, end);
+}
+
+void _Expat_XML_SetCdataSectionHandler(struct ExpatIFace * Self, XML_Parser parser, XML_StartCdataSectionHandler start, XML_EndCdataSectionHandler end)
+{
+ XML_SetCdataSectionHandler(parser, start, end);
+}
+
+void _Expat_XML_SetDefaultHandler(struct ExpatIFace * Self, XML_Parser parser, XML_DefaultHandler handler)
+{
+ XML_SetDefaultHandler(parser, handler);
+}
+
+void _Expat_XML_SetDefaultHandlerExpand(struct ExpatIFace * Self, XML_Parser parser, XML_DefaultHandler handler)
+{
+ XML_SetDefaultHandlerExpand(parser, handler);
+}
+
+void _Expat_XML_SetExternalEntityRefHandler(struct ExpatIFace * Self, XML_Parser parser, XML_ExternalEntityRefHandler handler)
+{
+ XML_SetExternalEntityRefHandler(parser, handler);
+}
+
+void _Expat_XML_SetExternalEntityRefHandlerArg(struct ExpatIFace * Self, XML_Parser parser, void * arg)
+{
+ XML_SetExternalEntityRefHandlerArg(parser, arg);
+}
+
+void _Expat_XML_SetUnknownEncodingHandler(struct ExpatIFace * Self, XML_Parser parser, XML_UnknownEncodingHandler handler, void * data)
+{
+ XML_SetUnknownEncodingHandler(parser, handler, data);
+}
+
+void _Expat_XML_SetStartNamespaceDeclHandler(struct ExpatIFace * Self, XML_Parser parser, XML_StartNamespaceDeclHandler start)
+{
+ XML_SetStartNamespaceDeclHandler(parser, start);
+}
+
+void _Expat_XML_SetEndNamespaceDeclHandler(struct ExpatIFace * Self, XML_Parser parser, XML_EndNamespaceDeclHandler end)
+{
+ XML_SetEndNamespaceDeclHandler(parser, end);
+}
+
+void _Expat_XML_SetNamespaceDeclHandler(struct ExpatIFace * Self, XML_Parser parser, XML_StartNamespaceDeclHandler start, XML_EndNamespaceDeclHandler end)
+{
+ XML_SetNamespaceDeclHandler(parser, start, end);
+}
+
+void _Expat_XML_SetXmlDeclHandler(struct ExpatIFace * Self, XML_Parser parser, XML_XmlDeclHandler handler)
+{
+ XML_SetXmlDeclHandler(parser, handler);
+}
+
+void _Expat_XML_SetStartDoctypeDeclHandler(struct ExpatIFace * Self, XML_Parser parser, XML_StartDoctypeDeclHandler start)
+{
+ XML_SetStartDoctypeDeclHandler(parser, start);
+}
+
+void _Expat_XML_SetEndDoctypeDeclHandler(struct ExpatIFace * Self, XML_Parser parser, XML_EndDoctypeDeclHandler end)
+{
+ XML_SetEndDoctypeDeclHandler(parser, end);
+}
+
+void _Expat_XML_SetDoctypeDeclHandler(struct ExpatIFace * Self, XML_Parser parser, XML_StartDoctypeDeclHandler start, XML_EndDoctypeDeclHandler end)
+{
+ XML_SetDoctypeDeclHandler(parser, start, end);
+}
+
+void _Expat_XML_SetElementDeclHandler(struct ExpatIFace * Self, XML_Parser parser, XML_ElementDeclHandler eldecl)
+{
+ XML_SetElementDeclHandler(parser, eldecl);
+}
+
+void _Expat_XML_SetAttlistDeclHandler(struct ExpatIFace * Self, XML_Parser parser, XML_AttlistDeclHandler attdecl)
+{
+ XML_SetAttlistDeclHandler(parser, attdecl);
+}
+
+void _Expat_XML_SetEntityDeclHandler(struct ExpatIFace * Self, XML_Parser parser, XML_EntityDeclHandler handler)
+{
+ XML_SetEntityDeclHandler(parser, handler);
+}
+
+void _Expat_XML_SetUnparsedEntityDeclHandler(struct ExpatIFace * Self, XML_Parser parser, XML_UnparsedEntityDeclHandler handler)
+{
+ XML_SetUnparsedEntityDeclHandler(parser, handler);
+}
+
+void _Expat_XML_SetNotationDeclHandler(struct ExpatIFace * Self, XML_Parser parser, XML_NotationDeclHandler handler)
+{
+ XML_SetNotationDeclHandler(parser, handler);
+}
+
+void _Expat_XML_SetNotStandaloneHandler(struct ExpatIFace * Self, XML_Parser parser, XML_NotStandaloneHandler handler)
+{
+ XML_SetNotStandaloneHandler(parser, handler);
+}
+
+enum XML_Error _Expat_XML_GetErrorCode(struct ExpatIFace * Self, XML_Parser parser)
+{
+ return XML_GetErrorCode(parser);
+}
+
+const XML_LChar * _Expat_XML_ErrorString(struct ExpatIFace * Self, enum XML_Error code)
+{
+ return XML_ErrorString(code);
+}
+
+long _Expat_XML_GetCurrentByteIndex(struct ExpatIFace * Self, XML_Parser parser)
+{
+ return XML_GetCurrentByteIndex(parser);
+}
+
+int _Expat_XML_GetCurrentLineNumber(struct ExpatIFace * Self, XML_Parser parser)
+{
+ return XML_GetCurrentLineNumber(parser);
+}
+
+int _Expat_XML_GetCurrentColumnNumber(struct ExpatIFace * Self, XML_Parser parser)
+{
+ return XML_GetCurrentColumnNumber(parser);
+}
+
+int _Expat_XML_GetCurrentByteCount(struct ExpatIFace * Self, XML_Parser parser)
+{
+ return XML_GetCurrentByteCount(parser);
+}
+
+const char * _Expat_XML_GetInputContext(struct ExpatIFace * Self, XML_Parser parser, int * offset, int * size)
+{
+ return XML_GetInputContext(parser, offset, size);
+}
+
+void _Expat_XML_SetUserData(struct ExpatIFace * Self, XML_Parser parser, void * userData)
+{
+ XML_SetUserData(parser, userData);
+}
+
+void _Expat_XML_DefaultCurrent(struct ExpatIFace * Self, XML_Parser parser)
+{
+ XML_DefaultCurrent(parser);
+}
+
+void _Expat_XML_UseParserAsHandlerArg(struct ExpatIFace * Self, XML_Parser parser)
+{
+ XML_UseParserAsHandlerArg(parser);
+}
+
+enum XML_Status _Expat_XML_SetBase(struct ExpatIFace * Self, XML_Parser parser, const XML_Char *p)
+{
+ return XML_SetBase(parser, p);
+}
+
+const XML_Char * _Expat_XML_GetBase(struct ExpatIFace * Self, XML_Parser parser)
+{
+ return XML_GetBase(parser);
+}
+
+int _Expat_XML_GetSpecifiedAttributeCount(struct ExpatIFace * Self, XML_Parser parser)
+{
+ return XML_GetSpecifiedAttributeCount(parser);
+}
+
+int _Expat_XML_GetIdAttributeIndex(struct ExpatIFace * Self, XML_Parser parser)
+{
+ return XML_GetIdAttributeIndex(parser);
+}
+
+enum XML_Status _Expat_XML_SetEncoding(struct ExpatIFace * Self, XML_Parser parser, const XML_Char *encoding)
+{
+ return XML_SetEncoding(parser, encoding);
+}
+
+int _Expat_XML_SetParamEntityParsing(struct ExpatIFace * Self, XML_Parser parser, enum XML_ParamEntityParsing parsing)
+{
+ return XML_SetParamEntityParsing(parser, parsing);
+}
+
+void _Expat_XML_SetReturnNSTriplet(struct ExpatIFace * Self, XML_Parser parser, int do_nst)
+{
+ XML_SetReturnNSTriplet(parser, do_nst);
+}
+
+const XML_LChar * _Expat_XML_ExpatVersion(struct ExpatIFace * Self)
+{
+ return XML_ExpatVersion();
+}
+
+XML_Expat_Version _Expat_XML_ExpatVersionInfo(struct ExpatIFace * Self)
+{
+ return XML_ExpatVersionInfo();
+}
+
+XML_Bool _Expat_XML_ParserReset(struct ExpatIFace * Self, XML_Parser parser, const XML_Char *encoding)
+{
+ return XML_ParserReset(parser, encoding);
+}
+
+void _Expat_XML_SetSkippedEntityHandler(struct ExpatIFace * Self, XML_Parser parser, XML_SkippedEntityHandler handler)
+{
+ XML_SetSkippedEntityHandler(parser, handler);
+}
+
+enum XML_Error _Expat_XML_UseForeignDTD(struct ExpatIFace * Self, XML_Parser parser, XML_Bool useDTD)
+{
+ return XML_UseForeignDTD(parser, useDTD);
+}
+
+const XML_Feature * _Expat_XML_GetFeatureList(struct ExpatIFace * Self)
+{
+ return XML_GetFeatureList();
+}
+
+enum XML_Status _Expat_XML_StopParser(struct ExpatIFace * Self, XML_Parser parser, XML_Bool resumable)
+{
+ return XML_StopParser(parser, resumable);
+}
+
+enum XML_Status _Expat_XML_ResumeParser(struct ExpatIFace * Self, XML_Parser parser)
+{
+ return XML_ResumeParser(parser);
+}
+
+void _Expat_XML_GetParsingStatus(struct ExpatIFace * Self, XML_Parser parser, XML_ParsingStatus * status)
+{
+ XML_GetParsingStatus(parser, status);
+}
+
+void _Expat_XML_FreeContentModel(struct ExpatIFace * Self, XML_Parser parser, XML_Content * model)
+{
+ XML_FreeContentModel(parser, model);
+}
+
+void * _Expat_XML_MemMalloc(struct ExpatIFace * Self, XML_Parser parser, size_t size)
+{
+ return XML_MemMalloc(parser, size);
+}
+
+void * _Expat_XML_MemRealloc(struct ExpatIFace * Self, XML_Parser parser, void * ptr, size_t size)
+{
+ XML_MemRealloc(parser, ptr, size);
+}
+
+void _Expat_XML_MemFree(struct ExpatIFace * Self, XML_Parser parser, void * ptr)
+{
+ XML_MemFree(parser, ptr);
+}

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/amiga/include/inline4/expat.h
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/amiga/include/inline4/expat.h 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,94 @@
+#ifndef INLINE4_EXPAT_H
+#define INLINE4_EXPAT_H
+
+/*
+** This file was auto generated by idltool 51.6.
+**
+** It provides compatibility to OS3 style library
+** calls by substituting functions.
+**
+** Do not edit manually.
+*/
+
+#ifndef EXEC_TYPES_H
+#include <exec/types.h>
+#endif
+#ifndef EXEC_EXEC_H
+#include <exec/exec.h>
+#endif
+#ifndef EXEC_INTERFACES_H
+#include <exec/interfaces.h>
+#endif
+
+#ifndef LIBRARIES_EXPAT_H
+#include <libraries/expat.h>
+#endif
+
+/* Inline macros for Interface "main" */
+#define XML_ParserCreate(encodingName) IExpat->XML_ParserCreate(encodingName)
+#define XML_ParserCreateNS(encodingName, nsSep) IExpat->XML_ParserCreateNS(encodingName, nsSep)
+#define XML_ParserCreate_MM(encoding, memsuite, namespaceSeparator) IExpat->XML_ParserCreate_MM(encoding, memsuite, namespaceSeparator)
+#define XML_ExternalEntityParserCreate(parser, context, encoding) IExpat->XML_ExternalEntityParserCreate(parser, context, encoding)
+#define XML_ParserFree(parser) IExpat->XML_ParserFree(parser)
+#define XML_Parse(parser, s, len, isFinal) IExpat->XML_Parse(parser, s, len, isFinal)
+#define XML_ParseBuffer(parser, len, isFinal) IExpat->XML_ParseBuffer(parser, len, isFinal)
+#define XML_GetBuffer(parser, len) IExpat->XML_GetBuffer(parser, len)
+#define XML_SetStartElementHandler(parser, start) IExpat->XML_SetStartElementHandler(parser, start)
+#define XML_SetEndElementHandler(parser, end) IExpat->XML_SetEndElementHandler(parser, end)
+#define XML_SetElementHandler(parser, start, end) IExpat->XML_SetElementHandler(parser, start, end)
+#define XML_SetCharacterDataHandler(parser, handler) IExpat->XML_SetCharacterDataHandler(parser, handler)
+#define XML_SetProcessingInstructionHandler(parser, handler) IExpat->XML_SetProcessingInstructionHandler(parser, handler)
+#define XML_SetCommentHandler(parser, handler) IExpat->XML_SetCommentHandler(parser, handler)
+#define XML_SetStartCdataSectionHandler(parser, start) IExpat->XML_SetStartCdataSectionHandler(parser, start)
+#define XML_SetEndCdataSectionHandler(parser, end) IExpat->XML_SetEndCdataSectionHandler(parser, end)
+#define XML_SetCdataSectionHandler(parser, start, end) IExpat->XML_SetCdataSectionHandler(parser, start, end)
+#define XML_SetDefaultHandler(parser, handler) IExpat->XML_SetDefaultHandler(parser, handler)
+#define XML_SetDefaultHandlerExpand(parser, handler) IExpat->XML_SetDefaultHandlerExpand(parser, handler)
+#define XML_SetExternalEntityRefHandler(parser, handler) IExpat->XML_SetExternalEntityRefHandler(parser, handler)
+#define XML_SetExternalEntityRefHandlerArg(parser, arg) IExpat->XML_SetExternalEntityRefHandlerArg(parser, arg)
+#define XML_SetUnknownEncodingHandler(parser, handler, data) IExpat->XML_SetUnknownEncodingHandler(parser, handler, data)
+#define XML_SetStartNamespaceDeclHandler(parser, start) IExpat->XML_SetStartNamespaceDeclHandler(parser, start)
+#define XML_SetEndNamespaceDeclHandler(parser, end) IExpat->XML_SetEndNamespaceDeclHandler(parser, end)
+#define XML_SetNamespaceDeclHandler(parser, start, end) IExpat->XML_SetNamespaceDeclHandler(parser, start, end)
+#define XML_SetXmlDeclHandler(parser, handler) IExpat->XML_SetXmlDeclHandler(parser, handler)
+#define XML_SetStartDoctypeDeclHandler(parser, start) IExpat->XML_SetStartDoctypeDeclHandler(parser, start)
+#define XML_SetEndDoctypeDeclHandler(parser, end) IExpat->XML_SetEndDoctypeDeclHandler(parser, end)
+#define XML_SetDoctypeDeclHandler(parser, start, end) IExpat->XML_SetDoctypeDeclHandler(parser, start, end)
+#define XML_SetElementDeclHandler(parser, eldecl) IExpat->XML_SetElementDeclHandler(parser, eldecl)
+#define XML_SetAttlistDeclHandler(parser, attdecl) IExpat->XML_SetAttlistDeclHandler(parser, attdecl)
+#define XML_SetEntityDeclHandler(parser, handler) IExpat->XML_SetEntityDeclHandler(parser, handler)
+#define XML_SetUnparsedEntityDeclHandler(parser, handler) IExpat->XML_SetUnparsedEntityDeclHandler(parser, handler)
+#define XML_SetNotationDeclHandler(parser, handler) IExpat->XML_SetNotationDeclHandler(parser, handler)
+#define XML_SetNotStandaloneHandler(parser, handler) IExpat->XML_SetNotStandaloneHandler(parser, handler)
+#define XML_GetErrorCode(parser) IExpat->XML_GetErrorCode(parser)
+#define XML_ErrorString(code) IExpat->XML_ErrorString(code)
+#define XML_GetCurrentByteIndex(parser) IExpat->XML_GetCurrentByteIndex(parser)
+#define XML_GetCurrentLineNumber(parser) IExpat->XML_GetCurrentLineNumber(parser)
+#define XML_GetCurrentColumnNumber(parser) IExpat->XML_GetCurrentColumnNumber(parser)
+#define XML_GetCurrentByteCount(parser) IExpat->XML_GetCurrentByteCount(parser)
+#define XML_GetInputContext(parser, offset, size) IExpat->XML_GetInputContext(parser, offset, size)
+#define XML_SetUserData(parser, userData) IExpat->XML_SetUserData(parser, userData)
+#define XML_DefaultCurrent(parser) IExpat->XML_DefaultCurrent(parser)
+#define XML_UseParserAsHandlerArg(parser) IExpat->XML_UseParserAsHandlerArg(parser)
+#define XML_SetBase(parser, base) IExpat->XML_SetBase(parser, base)
+#define XML_GetBase(parser) IExpat->XML_GetBase(parser)
+#define XML_GetSpecifiedAttributeCount(parser) IExpat->XML_GetSpecifiedAttributeCount(parser)
+#define XML_GetIdAttributeIndex(parser) IExpat->XML_GetIdAttributeIndex(parser)
+#define XML_SetEncoding(parser, encoding) IExpat->XML_SetEncoding(parser, encoding)
+#define XML_SetParamEntityParsing(parser, parsing) IExpat->XML_SetParamEntityParsing(parser, parsing)
+#define XML_SetReturnNSTriplet(parser, do_nst) IExpat->XML_SetReturnNSTriplet(parser, do_nst)
+#define XML_ExpatVersion() IExpat->XML_ExpatVersion()
+#define XML_ExpatVersionInfo() IExpat->XML_ExpatVersionInfo()
+#define XML_ParserReset(parser, encoding) IExpat->XML_ParserReset(parser, encoding)
+#define XML_SetSkippedEntityHandler(parser, handler) IExpat->XML_SetSkippedEntityHandler(parser, handler)
+#define XML_UseForeignDTD(parser, useDTD) IExpat->XML_UseForeignDTD(parser, useDTD)
+#define XML_GetFeatureList() IExpat->XML_GetFeatureList()
+#define XML_StopParser(parser, resumable) IExpat->XML_StopParser(parser, resumable)
+#define XML_ResumeParser(parser) IExpat->XML_ResumeParser(parser)
+#define XML_GetParsingStatus(parser, status) IExpat->XML_GetParsingStatus(parser, status)
+#define XML_FreeContentModel(parser, model) IExpat->XML_FreeContentModel(parser, model)
+#define XML_MemMalloc(parser, size) IExpat->XML_MemMalloc(parser, size)
+#define XML_MemRealloc(parser, ptr, size) IExpat->XML_MemRealloc(parser, ptr, size)
+#define XML_MemFree(parser, ptr) IExpat->XML_MemFree(parser, ptr)
+
+#endif /* INLINE4_EXPAT_H */

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/amiga/include/interfaces/expat.h
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/amiga/include/interfaces/expat.h 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,98 @@
+#ifndef EXPAT_INTERFACE_DEF_H
+#define EXPAT_INTERFACE_DEF_H
+
+/*
+** This file was machine generated by idltool 51.6.
+** Do not edit
+*/
+
+#ifndef EXEC_TYPES_H
+#include <exec/types.h>
+#endif
+#ifndef EXEC_EXEC_H
+#include <exec/exec.h>
+#endif
+#ifndef EXEC_INTERFACES_H
+#include <exec/interfaces.h>
+#endif
+
+#ifndef LIBRARIES_EXPAT_H
+#include <libraries/expat.h>
+#endif
+
+struct ExpatIFace
+{
+ struct InterfaceData Data;
+
+ uint32 APICALL (*Obtain)(struct ExpatIFace *Self);
+ uint32 APICALL (*Release)(struct ExpatIFace *Self);
+ void APICALL (*Expunge)(struct ExpatIFace *Self);
+ struct Interface * APICALL (*Clone)(struct ExpatIFace *Self);
+ XML_Parser APICALL (*XML_ParserCreate)(struct ExpatIFace *Self, const XML_Char * encodingName);
+ XML_Parser APICALL (*XML_ParserCreateNS)(struct ExpatIFace *Self, const XML_Char * encodingName, XML_Char nsSep);
+ XML_Parser APICALL (*XML_ParserCreate_MM)(struct ExpatIFace *Self, const XML_Char * encoding, const XML_Memory_Handling_Suite * memsuite, const XML_Char * namespaceSeparator);
+ XML_Parser APICALL (*XML_ExternalEntityParserCreate)(struct ExpatIFace *Self, XML_Parser parser, const XML_Char * context, const XML_Char * encoding);
+ void APICALL (*XML_ParserFree)(struct ExpatIFace *Self, XML_Parser parser);
+ enum XML_Status APICALL (*XML_Parse)(struct ExpatIFace *Self, XML_Parser parser, const char * s, int len, int isFinal);
+ enum XML_Status APICALL (*XML_ParseBuffer)(struct ExpatIFace *Self, XML_Parser parser, int len, int isFinal);
+ void * APICALL (*XML_GetBuffer)(struct ExpatIFace *Self, XML_Parser parser, int len);
+ void APICALL (*XML_SetStartElementHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_StartElementHandler start);
+ void APICALL (*XML_SetEndElementHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_EndElementHandler end);
+ void APICALL (*XML_SetElementHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_StartElementHandler start, XML_EndElementHandler end);
+ void APICALL (*XML_SetCharacterDataHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_CharacterDataHandler handler);
+ void APICALL (*XML_SetProcessingInstructionHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_ProcessingInstructionHandler handler);
+ void APICALL (*XML_SetCommentHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_CommentHandler handler);
+ void APICALL (*XML_SetStartCdataSectionHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_StartCdataSectionHandler start);
+ void APICALL (*XML_SetEndCdataSectionHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_EndCdataSectionHandler end);
+ void APICALL (*XML_SetCdataSectionHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_StartCdataSectionHandler start, XML_EndCdataSectionHandler end);
+ void APICALL (*XML_SetDefaultHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_DefaultHandler handler);
+ void APICALL (*XML_SetDefaultHandlerExpand)(struct ExpatIFace *Self, XML_Parser parser, XML_DefaultHandler handler);
+ void APICALL (*XML_SetExternalEntityRefHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_ExternalEntityRefHandler handler);
+ void APICALL (*XML_SetExternalEntityRefHandlerArg)(struct ExpatIFace *Self, XML_Parser parser, void * arg);
+ void APICALL (*XML_SetUnknownEncodingHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_UnknownEncodingHandler handler, void * data);
+ void APICALL (*XML_SetStartNamespaceDeclHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_StartNamespaceDeclHandler start);
+ void APICALL (*XML_SetEndNamespaceDeclHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_EndNamespaceDeclHandler end);
+ void APICALL (*XML_SetNamespaceDeclHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_StartNamespaceDeclHandler start, XML_EndNamespaceDeclHandler end);
+ void APICALL (*XML_SetXmlDeclHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_XmlDeclHandler handler);
+ void APICALL (*XML_SetStartDoctypeDeclHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_StartDoctypeDeclHandler start);
+ void APICALL (*XML_SetEndDoctypeDeclHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_EndDoctypeDeclHandler end);
+ void APICALL (*XML_SetDoctypeDeclHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_StartDoctypeDeclHandler start, XML_EndDoctypeDeclHandler end);
+ void APICALL (*XML_SetElementDeclHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_ElementDeclHandler eldecl);
+ void APICALL (*XML_SetAttlistDeclHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_AttlistDeclHandler attdecl);
+ void APICALL (*XML_SetEntityDeclHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_EntityDeclHandler handler);
+ void APICALL (*XML_SetUnparsedEntityDeclHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_UnparsedEntityDeclHandler handler);
+ void APICALL (*XML_SetNotationDeclHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_NotationDeclHandler handler);
+ void APICALL (*XML_SetNotStandaloneHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_NotStandaloneHandler handler);
+ enum XML_Error APICALL (*XML_GetErrorCode)(struct ExpatIFace *Self, XML_Parser parser);
+ const XML_LChar * APICALL (*XML_ErrorString)(struct ExpatIFace *Self, enum XML_Error code);
+ long APICALL (*XML_GetCurrentByteIndex)(struct ExpatIFace *Self, XML_Parser parser);
+ int APICALL (*XML_GetCurrentLineNumber)(struct ExpatIFace *Self, XML_Parser parser);
+ int APICALL (*XML_GetCurrentColumnNumber)(struct ExpatIFace *Self, XML_Parser parser);
+ int APICALL (*XML_GetCurrentByteCount)(struct ExpatIFace *Self, XML_Parser parser);
+ const char * APICALL (*XML_GetInputContext)(struct ExpatIFace *Self, XML_Parser parser, int * offset, int * size);
+ void APICALL (*XML_SetUserData)(struct ExpatIFace *Self, XML_Parser parser, void * userData);
+ void APICALL (*XML_DefaultCurrent)(struct ExpatIFace *Self, XML_Parser parser);
+ void APICALL (*XML_UseParserAsHandlerArg)(struct ExpatIFace *Self, XML_Parser parser);
+ enum XML_Status APICALL (*XML_SetBase)(struct ExpatIFace *Self, XML_Parser parser, const XML_Char * base);
+ const XML_Char * APICALL (*XML_GetBase)(struct ExpatIFace *Self, XML_Parser parser);
+ int APICALL (*XML_GetSpecifiedAttributeCount)(struct ExpatIFace *Self, XML_Parser parser);
+ int APICALL (*XML_GetIdAttributeIndex)(struct ExpatIFace *Self, XML_Parser parser);
+ enum XML_Status APICALL (*XML_SetEncoding)(struct ExpatIFace *Self, XML_Parser parser, const XML_Char * encoding);
+ int APICALL (*XML_SetParamEntityParsing)(struct ExpatIFace *Self, XML_Parser parser, enum XML_ParamEntityParsing parsing);
+ void APICALL (*XML_SetReturnNSTriplet)(struct ExpatIFace *Self, XML_Parser parser, int do_nst);
+ const XML_LChar * APICALL (*XML_ExpatVersion)(struct ExpatIFace *Self);
+ XML_Expat_Version APICALL (*XML_ExpatVersionInfo)(struct ExpatIFace *Self);
+ XML_Bool APICALL (*XML_ParserReset)(struct ExpatIFace *Self, XML_Parser parser, const XML_Char * encoding);
+ void APICALL (*XML_SetSkippedEntityHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_SkippedEntityHandler handler);
+ enum XML_Error APICALL (*XML_UseForeignDTD)(struct ExpatIFace *Self, XML_Parser parser, XML_Bool useDTD);
+ const XML_Feature * APICALL (*XML_GetFeatureList)(struct ExpatIFace *Self);
+ enum XML_Status APICALL (*XML_StopParser)(struct ExpatIFace *Self, XML_Parser parser, XML_Bool resumable);
+ enum XML_Status APICALL (*XML_ResumeParser)(struct ExpatIFace *Self, XML_Parser parser);
+ void APICALL (*XML_GetParsingStatus)(struct ExpatIFace *Self, XML_Parser parser, XML_ParsingStatus * status);
+ void APICALL (*XML_FreeContentModel)(struct ExpatIFace *Self, XML_Parser parser, XML_Content * model);
+ void * APICALL (*XML_MemMalloc)(struct ExpatIFace *Self, XML_Parser parser, size_t size);
+ void * APICALL (*XML_MemRealloc)(struct ExpatIFace *Self, XML_Parser parser, void * ptr, size_t size);
+ void APICALL (*XML_MemFree)(struct ExpatIFace *Self, XML_Parser parser, void * ptr);
+};
+
+#endif /* EXPAT_INTERFACE_DEF_H */

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/amiga/include/libraries/expat.h
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/amiga/include/libraries/expat.h 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,564 @@
+#ifndef LIBRARIES_EXPAT_H
+#define LIBRARIES_EXPAT_H
+
+/*
+** Copyright (c) 2001-2005 Expat maintainers.
+**
+** Permission is hereby granted, free of charge, to any person obtaining
+** a copy of this software and associated documentation files (the
+** "Software"), to deal in the Software without restriction, including
+** without limitation the rights to use, copy, modify, merge, publish,
+** distribute, sublicense, and/or sell copies of the Software, and to
+** permit persons to whom the Software is furnished to do so, subject to
+** the following conditions:
+**
+** The above copyright notice and this permission notice shall be included
+** in all copies or substantial portions of the Software.
+**
+** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+** SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+
+/****************************************************************************/
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef __GNUC__
+ #ifdef __PPC__
+ #pragma pack(2)
+ #endif
+#elif defined(__VBCC__)
+ #pragma amiga-align
+#endif
+
+/****************************************************************************/
+
+
+#include <stdlib.h>
+
+#ifndef XMLCALL
+#define XMLCALL
+#endif
+
+typedef char XML_Char;
+typedef char XML_LChar;
+typedef long XML_Index;
+typedef unsigned long XML_Size;
+
+struct XML_ParserStruct;
+typedef struct XML_ParserStruct *XML_Parser;
+
+typedef unsigned char XML_Bool;
+#define XML_TRUE ((XML_Bool) 1)
+#define XML_FALSE ((XML_Bool) 0)
+
+enum XML_Status {
+ XML_STATUS_ERROR = 0,
+#define XML_STATUS_ERROR XML_STATUS_ERROR
+ XML_STATUS_OK = 1,
+#define XML_STATUS_OK XML_STATUS_OK
+ XML_STATUS_SUSPENDED = 2,
+#define XML_STATUS_SUSPENDED XML_STATUS_SUSPENDED
+};
+
+enum XML_Error {
+ XML_ERROR_NONE,
+ XML_ERROR_NO_MEMORY,
+ XML_ERROR_SYNTAX,
+ XML_ERROR_NO_ELEMENTS,
+ XML_ERROR_INVALID_TOKEN,
+ XML_ERROR_UNCLOSED_TOKEN,
+ XML_ERROR_PARTIAL_CHAR,
+ XML_ERROR_TAG_MISMATCH,
+ XML_ERROR_DUPLICATE_ATTRIBUTE,
+ XML_ERROR_JUNK_AFTER_DOC_ELEMENT,
+ XML_ERROR_PARAM_ENTITY_REF,
+ XML_ERROR_UNDEFINED_ENTITY,
+ XML_ERROR_RECURSIVE_ENTITY_REF,
+ XML_ERROR_ASYNC_ENTITY,
+ XML_ERROR_BAD_CHAR_REF,
+ XML_ERROR_BINARY_ENTITY_REF,
+ XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF,
+ XML_ERROR_MISPLACED_XML_PI,
+ XML_ERROR_UNKNOWN_ENCODING,
+ XML_ERROR_INCORRECT_ENCODING,
+ XML_ERROR_UNCLOSED_CDATA_SECTION,
+ XML_ERROR_EXTERNAL_ENTITY_HANDLING,
+ XML_ERROR_NOT_STANDALONE,
+ XML_ERROR_UNEXPECTED_STATE,
+ XML_ERROR_ENTITY_DECLARED_IN_PE,
+ XML_ERROR_FEATURE_REQUIRES_XML_DTD,
+ XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING,
+ XML_ERROR_UNBOUND_PREFIX,
+ XML_ERROR_UNDECLARING_PREFIX,
+ XML_ERROR_INCOMPLETE_PE,
+ XML_ERROR_XML_DECL,
+ XML_ERROR_TEXT_DECL,
+ XML_ERROR_PUBLICID,
+ XML_ERROR_SUSPENDED,
+ XML_ERROR_NOT_SUSPENDED,
+ XML_ERROR_ABORTED,
+ XML_ERROR_FINISHED,
+ XML_ERROR_SUSPEND_PE,
+ XML_ERROR_RESERVED_PREFIX_XML,
+ XML_ERROR_RESERVED_PREFIX_XMLNS,
+ XML_ERROR_RESERVED_NAMESPACE_URI
+};
+
+enum XML_Content_Type {
+ XML_CTYPE_EMPTY = 1,
+ XML_CTYPE_ANY,
+ XML_CTYPE_MIXED,
+ XML_CTYPE_NAME,
+ XML_CTYPE_CHOICE,
+ XML_CTYPE_SEQ
+};
+
+enum XML_Content_Quant {
+ XML_CQUANT_NONE,
+ XML_CQUANT_OPT,
+ XML_CQUANT_REP,
+ XML_CQUANT_PLUS
+};
+
+typedef struct XML_cp XML_Content;
+
+struct XML_cp {
+ enum XML_Content_Type type;
+ enum XML_Content_Quant quant;
+ XML_Char * name;
+ unsigned int numchildren;
+ XML_Content * children;
+};
+
+
+typedef void (*XML_ElementDeclHandler) (void *userData,
+ const XML_Char *name,
+ XML_Content *model);
+
+void
+XML_SetElementDeclHandler(XML_Parser parser,
+ XML_ElementDeclHandler eldecl);
+
+typedef void (*XML_AttlistDeclHandler) (
+ void *userData,
+ const XML_Char *elname,
+ const XML_Char *attname,
+ const XML_Char *att_type,
+ const XML_Char *dflt,
+ int isrequired);
+
+void
+XML_SetAttlistDeclHandler(XML_Parser parser,
+ XML_AttlistDeclHandler attdecl);
+
+typedef void (*XML_XmlDeclHandler) (void *userData,
+ const XML_Char *version,
+ const XML_Char *encoding,
+ int standalone);
+
+void
+XML_SetXmlDeclHandler(XML_Parser parser,
+ XML_XmlDeclHandler xmldecl);
+
+
+typedef struct {
+ void *(*malloc_fcn)(size_t size);
+ void *(*realloc_fcn)(void *ptr, size_t size);
+ void (*free_fcn)(void *ptr);
+} XML_Memory_Handling_Suite;
+
+XML_Parser
+XML_ParserCreate(const XML_Char *encoding);
+
+XML_Parser
+XML_ParserCreateNS(const XML_Char *encoding, XML_Char namespaceSeparator);
+
+
+XML_Parser
+XML_ParserCreate_MM(const XML_Char *encoding,
+ const XML_Memory_Handling_Suite *memsuite,
+ const XML_Char *namespaceSeparator);
+
+XML_Bool
+XML_ParserReset(XML_Parser parser, const XML_Char *encoding);
+
+typedef void (*XML_StartElementHandler) (void *userData,
+ const XML_Char *name,
+ const XML_Char **atts);
+
+typedef void (*XML_EndElementHandler) (void *userData,
+ const XML_Char *name);
+
+
+typedef void (*XML_CharacterDataHandler) (void *userData,
+ const XML_Char *s,
+ int len);
+
+typedef void (*XML_ProcessingInstructionHandler) (
+ void *userData,
+ const XML_Char *target,
+ const XML_Char *data);
+
+typedef void (*XML_CommentHandler) (void *userData,
+ const XML_Char *data);
+
+typedef void (*XML_StartCdataSectionHandler) (void *userData);
+typedef void (*XML_EndCdataSectionHandler) (void *userData);
+
+typedef void (*XML_DefaultHandler) (void *userData,
+ const XML_Char *s,
+ int len);
+
+typedef void (*XML_StartDoctypeDeclHandler) (
+ void *userData,
+ const XML_Char *doctypeName,
+ const XML_Char *sysid,
+ const XML_Char *pubid,
+ int has_internal_subset);
+
+typedef void (*XML_EndDoctypeDeclHandler)(void *userData);
+
+typedef void (*XML_EntityDeclHandler) (
+ void *userData,
+ const XML_Char *entityName,
+ int is_parameter_entity,
+ const XML_Char *value,
+ int value_length,
+ const XML_Char *base,
+ const XML_Char *systemId,
+ const XML_Char *publicId,
+ const XML_Char *notationName);
+
+void
+XML_SetEntityDeclHandler(XML_Parser parser,
+ XML_EntityDeclHandler handler);
+
+typedef void (*XML_UnparsedEntityDeclHandler) (
+ void *userData,
+ const XML_Char *entityName,
+ const XML_Char *base,
+ const XML_Char *systemId,
+ const XML_Char *publicId,
+ const XML_Char *notationName);
+
+typedef void (*XML_NotationDeclHandler) (
+ void *userData,
+ const XML_Char *notationName,
+ const XML_Char *base,
+ const XML_Char *systemId,
+ const XML_Char *publicId);
+
+typedef void (*XML_StartNamespaceDeclHandler) (
+ void *userData,
+ const XML_Char *prefix,
+ const XML_Char *uri);
+
+typedef void (*XML_EndNamespaceDeclHandler) (
+ void *userData,
+ const XML_Char *prefix);
+
+typedef int (*XML_NotStandaloneHandler) (void *userData);
+
+typedef int (*XML_ExternalEntityRefHandler) (
+ XML_Parser parser,
+ const XML_Char *context,
+ const XML_Char *base,
+ const XML_Char *systemId,
+ const XML_Char *publicId);
+
+typedef void (*XML_SkippedEntityHandler) (
+ void *userData,
+ const XML_Char *entityName,
+ int is_parameter_entity);
+
+typedef struct {
+ int map[256];
+ void *data;
+ int (*convert)(void *data, const char *s);
+ void (*release)(void *data);
+} XML_Encoding;
+
+typedef int (*XML_UnknownEncodingHandler) (
+ void *encodingHandlerData,
+ const XML_Char *name,
+ XML_Encoding *info);
+
+void
+XML_SetElementHandler(XML_Parser parser,
+ XML_StartElementHandler start,
+ XML_EndElementHandler end);
+
+void
+XML_SetStartElementHandler(XML_Parser parser,
+ XML_StartElementHandler handler);
+
+void
+XML_SetEndElementHandler(XML_Parser parser,
+ XML_EndElementHandler handler);
+
+void
+XML_SetCharacterDataHandler(XML_Parser parser,
+ XML_CharacterDataHandler handler);
+
+void
+XML_SetProcessingInstructionHandler(XML_Parser parser,
+ XML_ProcessingInstructionHandler handler);
+void
+XML_SetCommentHandler(XML_Parser parser,
+ XML_CommentHandler handler);
+
+void
+XML_SetCdataSectionHandler(XML_Parser parser,
+ XML_StartCdataSectionHandler start,
+ XML_EndCdataSectionHandler end);
+
+void
+XML_SetStartCdataSectionHandler(XML_Parser parser,
+ XML_StartCdataSectionHandler start);
+
+void
+XML_SetEndCdataSectionHandler(XML_Parser parser,
+ XML_EndCdataSectionHandler end);
+
+void
+XML_SetDefaultHandler(XML_Parser parser,
+ XML_DefaultHandler handler);
+
+void
+XML_SetDefaultHandlerExpand(XML_Parser parser,
+ XML_DefaultHandler handler);
+
+void
+XML_SetDoctypeDeclHandler(XML_Parser parser,
+ XML_StartDoctypeDeclHandler start,
+ XML_EndDoctypeDeclHandler end);
+
+void
+XML_SetStartDoctypeDeclHandler(XML_Parser parser,
+ XML_StartDoctypeDeclHandler start);
+
+void
+XML_SetEndDoctypeDeclHandler(XML_Parser parser,
+ XML_EndDoctypeDeclHandler end);
+
+void
+XML_SetUnparsedEntityDeclHandler(XML_Parser parser,
+ XML_UnparsedEntityDeclHandler handler);
+
+void
+XML_SetNotationDeclHandler(XML_Parser parser,
+ XML_NotationDeclHandler handler);
+
+void
+XML_SetNamespaceDeclHandler(XML_Parser parser,
+ XML_StartNamespaceDeclHandler start,
+ XML_EndNamespaceDeclHandler end);
+
+void
+XML_SetStartNamespaceDeclHandler(XML_Parser parser,
+ XML_StartNamespaceDeclHandler start);
+
+void
+XML_SetEndNamespaceDeclHandler(XML_Parser parser,
+ XML_EndNamespaceDeclHandler end);
+
+void
+XML_SetNotStandaloneHandler(XML_Parser parser,
+ XML_NotStandaloneHandler handler);
+
+void
+XML_SetExternalEntityRefHandler(XML_Parser parser,
+ XML_ExternalEntityRefHandler handler);
+
+void
+XML_SetExternalEntityRefHandlerArg(XML_Parser parser,
+ void *arg);
+
+void
+XML_SetSkippedEntityHandler(XML_Parser parser,
+ XML_SkippedEntityHandler handler);
+
+void
+XML_SetUnknownEncodingHandler(XML_Parser parser,
+ XML_UnknownEncodingHandler handler,
+ void *encodingHandlerData);
+
+void
+XML_DefaultCurrent(XML_Parser parser);
+
+void
+XML_SetReturnNSTriplet(XML_Parser parser, int do_nst);
+
+void
+XML_SetUserData(XML_Parser parser, void *userData);
+
+#define XML_GetUserData(parser) (*(void **)(parser))
+
+enum XML_Status
+XML_SetEncoding(XML_Parser parser, const XML_Char *encoding);
+
+void
+XML_UseParserAsHandlerArg(XML_Parser parser);
+
+enum XML_Error
+XML_UseForeignDTD(XML_Parser parser, XML_Bool useDTD);
+
+
+enum XML_Status
+XML_SetBase(XML_Parser parser, const XML_Char *base);
+
+const XML_Char *
+XML_GetBase(XML_Parser parser);
+
+int
+XML_GetSpecifiedAttributeCount(XML_Parser parser);
+
+int
+XML_GetIdAttributeIndex(XML_Parser parser);
+
+enum XML_Status
+XML_Parse(XML_Parser parser, const char *s, int len, int isFinal);
+
+void *
+XML_GetBuffer(XML_Parser parser, int len);
+
+enum XML_Status
+XML_ParseBuffer(XML_Parser parser, int len, int isFinal);
+
+enum XML_Status
+XML_StopParser(XML_Parser parser, XML_Bool resumable);
+
+enum XML_Status
+XML_ResumeParser(XML_Parser parser);
+
+enum XML_Parsing {
+ XML_INITIALIZED,
+ XML_PARSING,
+ XML_FINISHED,
+ XML_SUSPENDED
+};
+
+typedef struct {
+ enum XML_Parsing parsing;
+ XML_Bool finalBuffer;
+} XML_ParsingStatus;
+
+void
+XML_GetParsingStatus(XML_Parser parser, XML_ParsingStatus *status);
+
+XML_Parser
+XML_ExternalEntityParserCreate(XML_Parser parser,
+ const XML_Char *context,
+ const XML_Char *encoding);
+
+enum XML_ParamEntityParsing {
+ XML_PARAM_ENTITY_PARSING_NEVER,
+ XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE,
+ XML_PARAM_ENTITY_PARSING_ALWAYS
+};
+
+int
+XML_SetParamEntityParsing(XML_Parser parser,
+ enum XML_ParamEntityParsing parsing);
+
+enum XML_Error
+XML_GetErrorCode(XML_Parser parser);
+
+int XML_GetCurrentLineNumber(XML_Parser parser);
+int XML_GetCurrentColumnNumber(XML_Parser parser);
+long XML_GetCurrentByteIndex(XML_Parser parser);
+
+int
+XML_GetCurrentByteCount(XML_Parser parser);
+
+const char *
+XML_GetInputContext(XML_Parser parser,
+ int *offset,
+ int *size);
+
+#define XML_GetErrorLineNumber XML_GetCurrentLineNumber
+#define XML_GetErrorColumnNumber XML_GetCurrentColumnNumber
+#define XML_GetErrorByteIndex XML_GetCurrentByteIndex
+
+void
+XML_FreeContentModel(XML_Parser parser, XML_Content *model);
+
+void *
+XML_MemMalloc(XML_Parser parser, size_t size);
+
+void *
+XML_MemRealloc(XML_Parser parser, void *ptr, size_t size);
+
+void
+XML_MemFree(XML_Parser parser, void *ptr);
+
+void
+XML_ParserFree(XML_Parser parser);
+
+const XML_LChar *
+XML_ErrorString(enum XML_Error code);
+
+const XML_LChar *
+XML_ExpatVersion(void);
+
+typedef struct {
+ int major;
+ int minor;
+ int micro;
+} XML_Expat_Version;
+
+XML_Expat_Version
+XML_ExpatVersionInfo(void);
+
+enum XML_FeatureEnum {
+ XML_FEATURE_END = 0,
+ XML_FEATURE_UNICODE,
+ XML_FEATURE_UNICODE_WCHAR_T,
+ XML_FEATURE_DTD,
+ XML_FEATURE_CONTEXT_BYTES,
+ XML_FEATURE_MIN_SIZE,
+ XML_FEATURE_SIZEOF_XML_CHAR,
+ XML_FEATURE_SIZEOF_XML_LCHAR
+};
+
+typedef struct {
+ enum XML_FeatureEnum feature;
+ const XML_LChar *name;
+ long int value;
+} XML_Feature;
+
+const XML_Feature *
+XML_GetFeatureList(void);
+
+
+#define XML_MAJOR_VERSION 2
+#define XML_MINOR_VERSION 0
+#define XML_MICRO_VERSION 0
+
+
+/****************************************************************************/
+
+#ifdef __GNUC__
+ #ifdef __PPC__
+ #pragma pack()
+ #endif
+#elif defined(__VBCC__)
+ #pragma default-align
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+/****************************************************************************/
+
+#endif /* EXPAT_EXPAT_H */

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/amiga/include/proto/expat.h
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/amiga/include/proto/expat.h 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,62 @@
+#ifndef PROTO_EXPAT_H
+#define PROTO_EXPAT_H
+
+/*
+** $Id$
+** Includes Release 50.1
+**
+** Prototype/inline/pragma header file combo
+**
+** (C) Copyright 2003-2005 Amiga, Inc.
+** All Rights Reserved
+*/
+
+#ifndef LIBRARIES_EXPAT_H
+#include <libraries/expat.h>
+#endif
+
+/****************************************************************************/
+
+#ifndef __NOLIBBASE__
+ #ifndef __USE_BASETYPE__
+ extern struct Library * ExpatBase;
+ #else
+ extern struct Library * ExpatBase;
+ #endif /* __USE_BASETYPE__ */
+#endif /* __NOLIBBASE__ */
+
+/****************************************************************************/
+
+#ifdef __amigaos4__
+ #include <interfaces/expat.h>
+ #ifdef __USE_INLINE__
+ #include <inline4/expat.h>
+ #endif /* __USE_INLINE__ */
+ #ifndef CLIB_EXPAT_PROTOS_H
+ #define CLIB_EXPAT_PROTOS_H 1
+ #endif /* CLIB_EXPAT_PROTOS_H */
+ #ifndef __NOGLOBALIFACE__
+ extern struct ExpatIFace *IExpat;
+ #endif /* __NOGLOBALIFACE__ */
+#else /* __amigaos4__ */
+ #ifndef CLIB_EXPAT_PROTOS_H
+ #include <clib/expat_protos.h>
+ #endif /* CLIB_EXPAT_PROTOS_H */
+ #if defined(__GNUC__)
+ #ifndef __PPC__
+ #include <inline/expat.h>
+ #else
+ #include <ppcinline/expat.h>
+ #endif /* __PPC__ */
+ #elif defined(__VBCC__)
+ #ifndef __PPC__
+ #include <inline/expat_protos.h>
+ #endif /* __PPC__ */
+ #else
+ #include <pragmas/expat_pragmas.h>
+ #endif /* __GNUC__ */
+#endif /* __amigaos4__ */
+
+/****************************************************************************/
+
+#endif /* PROTO_EXPAT_H */

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/amiga/launch.c
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/amiga/launch.c 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,66 @@
+/*
+** Copyright (c) 2001-2005 Expat maintainers.
+**
+** Permission is hereby granted, free of charge, to any person obtaining
+** a copy of this software and associated documentation files (the
+** "Software"), to deal in the Software without restriction, including
+** without limitation the rights to use, copy, modify, merge, publish,
+** distribute, sublicense, and/or sell copies of the Software, and to
+** permit persons to whom the Software is furnished to do so, subject to
+** the following conditions:
+**
+** The above copyright notice and this permission notice shall be included
+** in all copies or substantial portions of the Software.
+**
+** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+** SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+#include <stdlib.h>
+#include <proto/exec.h>
+
+struct Library* ExpatBase = 0;
+struct ExpatIFace* IExpat = 0;
+
+
+int amiga_main(int argc, char** argv);
+void cleanup();
+
+
+int main(int argc, char** argv)
+{
+ int result = -1;
+
+ atexit(cleanup);
+
+ ExpatBase = OpenLibrary("expat.library", 2);
+ if ( ExpatBase != 0 ) {
+ IExpat = (struct ExpatIFace*)GetInterface(ExpatBase, "main", 1, NULL);
+ if ( IExpat != 0 ) {
+ result = amiga_main(argc, argv);
+ }
+ }
+
+ cleanup();
+
+ return result;
+}
+
+
+void cleanup()
+{
+ if ( IExpat != 0 ) {
+ DropInterface((struct Interface*)IExpat);
+ IExpat = 0;
+ }
+
+ if ( ExpatBase != 0 ) {
+ CloseLibrary(ExpatBase);
+ ExpatBase = 0;
+ }
+}

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/amiga/stdlib.c
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/amiga/stdlib.c 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,109 @@
+/*
+** Copyright (c) 2001-2005 Expat maintainers.
+**
+** Permission is hereby granted, free of charge, to any person obtaining
+** a copy of this software and associated documentation files (the
+** "Software"), to deal in the Software without restriction, including
+** without limitation the rights to use, copy, modify, merge, publish,
+** distribute, sublicense, and/or sell copies of the Software, and to
+** permit persons to whom the Software is furnished to do so, subject to
+** the following conditions:
+**
+** The above copyright notice and this permission notice shall be included
+** in all copies or substantial portions of the Software.
+**
+** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+** SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+#include <stdlib.h>
+#include <exec/memory.h>
+#include <proto/exec.h>
+#include <proto/utility.h>
+
+void * malloc (size_t len)
+{
+ uint32 size = sizeof(uint32) + len;
+
+ uint32 *mem = AllocMem(size, MEMF_ANY);
+ if ( mem != 0 ) {
+ *mem = size;
+ ++mem;
+ }
+
+ return mem;
+}
+
+
+void * realloc (void * mem, size_t len2)
+{
+ if ( mem == 0 ) {
+ return malloc(len2);
+ }
+
+ if ( len2 == 0 ) {
+ free(mem);
+ return 0;
+ }
+
+ void * new_mem = malloc(len2);
+ if ( new_mem == 0 ) {
+ return 0;
+ }
+
+ uint32 mem_size = *(((uint32*)mem) - 1);
+ CopyMem(mem, new_mem, mem_size);
+ free(mem);
+
+ return new_mem;
+}
+
+
+void free (void * mem)
+{
+ if ( mem != 0 ) {
+ uint32 size = *(((uint32*)mem) - 1);
+ FreeMem(mem, size);
+ }
+}
+
+
+int memcmp (const void * a, const void * b, size_t len)
+{
+ size_t i;
+ int diff;
+
+ for ( i = 0; i < len; ++i ) {
+ diff = *((uint8 *)a++) - *((uint8 *)b++);
+ if ( diff ) {
+ return diff;
+ }
+ }
+
+ return 0;
+}
+
+
+void * memcpy (void * t, const void * a, size_t len)
+{
+ CopyMem((APTR)a, t, len);
+ return t;
+}
+
+
+void * memmove (void * t1, const void * t2, size_t len)
+{
+ MoveMem((APTR)t2, t1, len);
+ return t1;
+}
+
+
+void * memset (void * t, int c, size_t len)
+{
+ return SetMem(t, c, len);
+}

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/README.txt
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/README.txt 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,87 @@
+
+ Using a Borland compiler product
+
+The files in this directory support using both the free Borland command-line
+compiler tools and the Borland C++ Builder IDE. The project files have been
+tested with both versions 5 and 6 of the C++ Builder product.
+
+ Using the free BCC32 command line compiler
+
+After downloading and installing the free C++ Builder commandline version,
+perform the following steps (assuming it was installed under C:\Borland\BCC55):
+
+1) Add "C:\Borland\BCC55\BIN" to your path
+2) Set the environment variable BCB to "C:\Borland\BCC55".
+3) edit makefile.mak: enable or comment out the appropriate commands under
+ clean & distclean, depending on whether your OS can use deltree /y or
+ del /s/f/q.
+
+After that, you should simply cd to the bcb5 directory in your Expat directory
+tree (same structure as CVS) and run "make all" or just "make".
+
+ Naming
+
+The libraries have the base name "libexpat" followed optionally by an "s"
+(static) or a "w" (unicode version), then an underscore and optionally
+"mt" (multi-threaded) and "d" (dynamic RTL).
+
+To change the name of the library a project file produces, edit the project
+option source (see step 1 under Unicode below) and change the name contained in
+the PROJECT tag. In a make file, change the value assigned to the PROJECT
+variable. Also, the LIBRARY entry in the .def file has to be changed to
+correspond to the new executable name.
+
+
+ Unicode Considerations
+
+There are no facilities in the BCB 5 GUI to create a unicode-enabled
+application. Fortunately, it is not hard to do by hand.
+
+1. The startup .obj system file must be changed to the unicode version.
+ Go to Project|Edit Option Source, and scroll down to the ALLOBJ tag. Change
+ c0x32.obj to c0x32w.obj. Editing this file can be quirky, but usually the
+ following kludge will make the change stick. Close and save the file
+ (CTRL-F4) then open the options dialog (CTRL-Shift-F11), then click OK on
+ the dialog immediately without changing anything in it. If this doesn't work,
+ you will have to close the project completely and edit the .bpr file by hand.
+
+ If you are using a make file, just change the startup .obj file assigned
+ to the ALLOBJ variable.
+
+2. Add the macro define XML_UNICODE_WCHAR_T. In the GUI that goes in the options
+ dialog, Directories/Conditionals tab, in the Conditional define box. In a
+ make file, put it in the USERDEFINES variable.
+
+3. Of course, your code has to be written for unicode. As a start, the "main"
+ function is called "wmain". The tchar macros are an interesting way to
+ write code that can easily switch between unicode and utf-8. If these macros
+ are used, then simply adding the conditional define _UNICODE as well as
+ XML_UNICODE_WCHAR_T will bring in the unicode versions of the tchar macros.
+ Otherwise the utf-8 versions are used. xmlwf uses its own versions of the
+ tchar macros which are switched on and off by the XML_UNICODE macro, which
+ itself is set by the XML_UNICODE_WCHAR_T define.
+
+ Threading
+
+The libexpat libraries are all built to link with the multi-threaded dynamic RTL's.
+That means they require CC32xxMT.DLL present on the installation target.
+To create single-threaded libs, do the following:
+
+1. The compiler option for multi-threading must be turned off. Following the
+ instructions above to edit the option source, remove the -tWM option from
+ the CFLAG1 tag. In a make file, remove it from the CFLAG1 variable.
+
+2. The single threaded RTL must be called. change the RTL in the ALLLIB tag or
+ variable (GUI or makefile repectively) to the version without the "mt" in the
+ name. For example, change cw32mti.lib to cw32i.lib.
+
+ Static RTL's
+
+To build the libs with static RTL's do the following,
+
+1. For the static expatlibs, in the Tlib tab on the options dialog, uncheck the
+ "Use dynamic RTL" box. For the dynamic expatlibs, in the Linker tab on the
+ options dialog, uncheck "Use dynamic RTL". If you are using a make file,
+ remove the _RTLDLL assignment to the SYSDEFINES variable, and change the RTL
+ to the version without an "i" in the ALLLIB variable. For example,
+ cw32mti.lib would become cw32mt.lib.

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/all_projects.bpg
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/all_projects.bpg 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,49 @@
+#------------------------------------------------------------------------------
+VERSION = BWS.01
+#------------------------------------------------------------------------------
+!ifndef ROOT
+ROOT = $(MAKEDIR)\..
+!endif
+#------------------------------------------------------------------------------
+MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$**
+DCC = $(ROOT)\bin\dcc32.exe $**
+BRCC = $(ROOT)\bin\brcc32.exe $**
+#------------------------------------------------------------------------------
+PROJECTS = setup libexpat_mtd.dll libexpats_mtd.lib libexpatw_mtd.dll \
+ libexpatws_mtd.lib elements.exe outline.exe xmlwf.exe
+#------------------------------------------------------------------------------
+default: $(PROJECTS)
+#------------------------------------------------------------------------------
+
+libexpat_mtd.dll: expat.bpr
+ $(ROOT)\bin\bpr2mak $**
+ $(ROOT)\bin\make -$(MAKEFLAGS) -f$*.mak
+
+libexpats_mtd.lib: expat_static.bpr
+ $(ROOT)\bin\bpr2mak -t$(ROOT)\bin\deflib.bmk $**
+ $(ROOT)\bin\make -$(MAKEFLAGS) -f$*.mak
+
+libexpatw_mtd.dll: expatw.bpr
+ $(ROOT)\bin\bpr2mak $**
+ $(ROOT)\bin\make -$(MAKEFLAGS) -f$*.mak
+
+libexpatws_mtd.lib: expatw_static.bpr
+ $(ROOT)\bin\bpr2mak -t$(ROOT)\bin\deflib.bmk $**
+ $(ROOT)\bin\make -$(MAKEFLAGS) -f$*.mak
+
+elements.exe: elements.bpr
+ $(ROOT)\bin\bpr2mak $**
+ $(ROOT)\bin\make -$(MAKEFLAGS) -f$*.mak
+
+outline.exe: outline.bpr
+ $(ROOT)\bin\bpr2mak $**
+ $(ROOT)\bin\make -$(MAKEFLAGS) -f$*.mak
+
+xmlwf.exe: xmlwf.bpr
+ $(ROOT)\bin\bpr2mak $**
+ $(ROOT)\bin\make -$(MAKEFLAGS) -f$*.mak
+
+setup: setup.bat
+ call $**
+
+

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/elements.bpf
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/elements.bpf 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,4 @@
+USEUNIT("..\examples\elements.c");
+USELIB("Release\libexpats_mtd.lib");
+//---------------------------------------------------------------------------
+main

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/elements.bpr
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/elements.bpr 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,149 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!-- C++Builder XML Project -->
+<PROJECT>
+ <MACROS>
+ <VERSION value="BCB.05.03"/>
+ <PROJECT value="Release\elements.exe"/>
+ <OBJFILES value="Release\obj\examples\elements.obj"/>
+ <RESFILES value=""/>
+ <IDLFILES value=""/>
+ <IDLGENFILES value=""/>
+ <DEFFILE value=""/>
+ <RESDEPEN value="$(RESFILES)"/>
+ <LIBFILES value="Release\libexpats_mtd.lib"/>
+ <LIBRARIES value=""/>
+ <SPARELIBS value=""/>
+ <PACKAGES value="VCL50.bpi VCLX50.bpi bcbsmp50.bpi QRPT50.bpi VCLDB50.bpi VCLBDE50.bpi
+ ibsmp50.bpi VCLDBX50.bpi TEEUI50.bpi TEEDB50.bpi TEE50.bpi TEEQR50.bpi
+ VCLIB50.bpi bcbie50.bpi VCLIE50.bpi INETDB50.bpi INET50.bpi NMFAST50.bpi
+ dclocx50.bpi bcb2kaxserver50.bpi dclusr50.bpi"/>
+ <PATHCPP value=".;..\examples"/>
+ <PATHPAS value=".;"/>
+ <PATHRC value=".;"/>
+ <PATHASM value=".;"/>
+ <DEBUGLIBPATH value="$(BCB)\lib\debug"/>
+ <RELEASELIBPATH value="$(BCB)\lib\release"/>
+ <LINKER value="ilink32"/>
+ <USERDEFINES value="WIN32;NDEBUG;_CONSOLE;XML_STATIC"/>
+ <SYSDEFINES value="_NO_VCL;_ASSERTE;NO_STRICT;_RTLDLL"/>
+ <MAINSOURCE value="elements.bpf"/>
+ <INCLUDEPATH value="..\examples;$(BCB)\include"/>
+ <LIBPATH value="..\examples;$(BCB)\lib;$(RELEASELIBPATH)"/>
+ <WARNINGS value="-w-par -w-8027 -w-8026"/>
+ </MACROS>
+ <OPTIONS>
+ <IDLCFLAGS value="-I$(BCB)\include"/>
+ <CFLAG1 value="-O2 -X- -a8 -b -k- -vi -q -tWM -I..\lib -c"/>
+ <PFLAGS value="-N2Release\obj\examples -N0Release\obj\examples -$Y- -$L- -$D-"/>
+ <RFLAGS value="/l 0x409 /d &quot;NDEBUG&quot; /i$(BCB)\include"/>
+ <AFLAGS value="/mx /w2 /zn"/>
+ <LFLAGS value="-IRelease\obj\examples -D&quot;&quot; -ap -Tpe -x -Gn -q -L..\LIB\RELEASE_STATIC"/>
+ </OPTIONS>
+ <LINKER>
+ <ALLOBJ value="c0x32.obj $(OBJFILES)"/>
+ <ALLRES value="$(RESFILES)"/>
+ <ALLLIB value="$(LIBFILES) $(LIBRARIES) import32.lib cw32mti.lib"/>
+ </LINKER>
+ <IDEOPTIONS>
+[Version Info]
+IncludeVerInfo=0
+AutoIncBuild=0
+MajorVer=1
+MinorVer=0
+Release=0
+Build=0
+Debug=0
+PreRelease=0
+Special=0
+Private=0
+DLL=0
+Locale=1033
+CodePage=1252
+
+[Version Info Keys]
+CompanyName=
+FileDescription=
+FileVersion=1.0.0.0
+InternalName=
+LegalCopyright=
+LegalTrademarks=
+OriginalFilename=
+ProductName=
+ProductVersion=1.0.0.0
+Comments=
+
+[HistoryLists\hlIncludePath]
+Count=4
+Item0=..\examples;$(BCB)\include
+Item1=$(BCB)\include
+Item2=$(BCB)\include;$(BCB)\include\mfc;$(BCB)\include\atl
+Item3=$(BCB)\include;$(BCB)\include\mfc;$(BCB)\include\atl;
+
+[HistoryLists\hlLibraryPath]
+Count=8
+Item0=..\examples;$(BCB)\lib;$(RELEASELIBPATH)
+Item1=..\examples;$(BCB)\lib;..\examples\$(RELEASELIBPATH)
+Item2=$(BCB)\lib;$(RELEASELIBPATH)
+Item3=$(BCB)\lib;$(RELEASELIBPATH);..\lib\Release-w_static
+Item4=$(BCB)\lib;$(RELEASELIBPATH);..\lib\Release_static
+Item5=$(BCB)\lib;$(RELEASELIBPATH);C:\src\expat\lib\Release_static
+Item6=$(BCB)\lib;$(RELEASELIBPATH);$(BCB)\lib\psdk
+Item7=$(BCB)\lib;$(RELEASELIBPATH);;$(BCB)\lib\psdk;
+
+[HistoryLists\hlDebugSourcePath]
+Count=1
+Item0=$(BCB)\source\vcl
+
+[HistoryLists\hlConditionals]
+Count=17
+Item0=WIN32;NDEBUG;_CONSOLE;XML_STATIC
+Item1=WIN32;NDEBUG;_CONSOLE;_DEBUG;XML_STATIC
+Item2=WIN32;NDEBUG;_CONSOLE;_DEBUG;XML_UNICODE_WCHAR_T;_UNICODE;XML_STATIC
+Item3=WIN32;NDEBUG;_CONSOLE;_DEBUG;XML_UNICODE_WCHAR_T;_UNICODE
+Item4=WIN32;NDEBUG;_CONSOLE;_DEBUG
+Item5=WIN32;NDEBUG;_CONSOLE;XML_STATIC;_DEBUG
+Item6=WIN32;NDEBUG;_CONSOLE;XML_STATIC;_DEBUG;_UNICODE
+Item7=WIN32;NDEBUG;_CONSOLE;XML_STATIC;_DEBUG;XML_UNICODE_WCHAR_T
+Item8=WIN32;NDEBUG;_CONSOLE;_MBCS;XML_STATIC;_DEBUG;XML_UNICODE_WCHAR_T
+Item9=WIN32;NDEBUG;_CONSOLE;_UNICODE;XML_STATIC;_DEBUG;XML_UNICODE_WCHAR_T
+Item10=WIN32;NDEBUG;_CONSOLE;_UNICODE;XML_STATIC;_DEBUG;XML_UNICODE
+Item11=WIN32;NDEBUG;_CONSOLE;_MBCS;XML_STATIC;_DEBUG;XML_UNICODE_WCHAR_T;__WCHAR_T
+Item12=WIN32;NDEBUG;_CONSOLE;_MBCS;XML_STATIC;_DEBUG;XML_UNICODE_WCHAR_T;_UNICODE
+Item13=WIN32;NDEBUG;_CONSOLE;_MBCS;XML_STATIC;_DEBUG;XML_UNICODE;_UNICODE
+Item14=WIN32;NDEBUG;_CONSOLE;_MBCS;XML_STATIC;_DEBUG;XML_UNICODE
+Item15=WIN32;NDEBUG;_CONSOLE;_MBCS;XML_STATIC;_DEBUG
+Item16=WIN32;NDEBUG;_CONSOLE;_MBCS;XML_STATIC
+
+[HistoryLists\hlIntOutputDir]
+Count=5
+Item0=Release\obj\examples
+Item1=Release\obj\elements
+Item2=Release\obj\mts
+Item3=..\examples\Release
+Item4=Release
+
+[HistoryLists\hlFinalOutputDir]
+Count=1
+Item0=Release\
+
+[Debugging]
+DebugSourceDirs=
+
+[Parameters]
+RunParams=
+HostApplication=
+RemoteHost=
+RemotePath=
+RemoteDebug=0
+
+[Compiler]
+ShowInfoMsgs=0
+LinkDebugVcl=0
+LinkCGLIB=0
+
+[Language]
+ActiveLang=
+ProjectLang=
+RootDir=
+ </IDEOPTIONS>
+</PROJECT>
\ No newline at end of file

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/elements.mak
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/elements.mak 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,186 @@
+# ---------------------------------------------------------------------------
+!if !$d(BCB)
+BCB = $(MAKEDIR)\..
+!endif
+
+# ---------------------------------------------------------------------------
+# IDE SECTION
+# ---------------------------------------------------------------------------
+# The following section of the project makefile is managed by the BCB IDE.
+# It is recommended to use the IDE to change any of the values in this
+# section.
+# ---------------------------------------------------------------------------
+
+VERSION = BCB.05.03
+# ---------------------------------------------------------------------------
+PROJECT = Release\elements.exe
+OBJFILES = Release\obj\examples\elements.obj
+RESFILES =
+MAINSOURCE = elements.bpf
+RESDEPEN = $(RESFILES)
+LIBFILES = Release\libexpats_mtd.lib
+IDLFILES =
+IDLGENFILES =
+LIBRARIES =
+PACKAGES = VCL50.bpi VCLX50.bpi bcbsmp50.bpi QRPT50.bpi VCLDB50.bpi VCLBDE50.bpi \
+ ibsmp50.bpi VCLDBX50.bpi TEEUI50.bpi TEEDB50.bpi TEE50.bpi TEEQR50.bpi \
+ VCLIB50.bpi bcbie50.bpi VCLIE50.bpi INETDB50.bpi INET50.bpi NMFAST50.bpi \
+ dclocx50.bpi bcb2kaxserver50.bpi dclusr50.bpi
+SPARELIBS =
+DEFFILE =
+# ---------------------------------------------------------------------------
+PATHCPP = .;..\examples
+PATHASM = .;
+PATHPAS = .;
+PATHRC = .;
+DEBUGLIBPATH = $(BCB)\lib\debug
+RELEASELIBPATH = $(BCB)\lib\release
+USERDEFINES = WIN32;NDEBUG;_CONSOLE;XML_STATIC
+SYSDEFINES = _NO_VCL;_ASSERTE;NO_STRICT;_RTLDLL
+INCLUDEPATH = ..\examples;$(BCB)\include
+LIBPATH = ..\examples;$(BCB)\lib;$(RELEASELIBPATH)
+WARNINGS= -w-par -w-8027 -w-8026
+# ---------------------------------------------------------------------------
+CFLAG1 = -O2 -X- -a8 -b -k- -vi -q -I..\lib -c
+IDLCFLAGS = -I$(BCB)\include
+PFLAGS = -N2Release\obj\examples -N0Release\obj\examples -$Y- -$L- -$D-
+RFLAGS = /l 0x409 /d "NDEBUG" /i$(BCB)\include
+AFLAGS = /mx /w2 /zn
+LFLAGS = -IRelease\obj\examples -D"" -ap -Tpe -x -Gn -q -L..\LIB\RELEASE_STATIC
+# ---------------------------------------------------------------------------
+ALLOBJ = c0x32.obj $(OBJFILES)
+ALLRES = $(RESFILES)
+ALLLIB = $(LIBFILES) $(LIBRARIES) import32.lib cw32mti.lib
+# ---------------------------------------------------------------------------
+!ifdef IDEOPTIONS
+
+[Version Info]
+IncludeVerInfo=0
+AutoIncBuild=0
+MajorVer=1
+MinorVer=0
+Release=0
+Build=0
+Debug=0
+PreRelease=0
+Special=0
+Private=0
+DLL=0
+
+[Version Info Keys]
+CompanyName=
+FileDescription=
+FileVersion=1.0.0.0
+InternalName=
+LegalCopyright=
+LegalTrademarks=
+OriginalFilename=
+ProductName=
+ProductVersion=1.0.0.0
+Comments=
+
+[Debugging]
+DebugSourceDirs=$(BCB)\source\vcl
+
+!endif
+
+
+
+
+
+# ---------------------------------------------------------------------------
+# MAKE SECTION
+# ---------------------------------------------------------------------------
+# This section of the project file is not used by the BCB IDE. It is for
+# the benefit of building from the command-line using the MAKE utility.
+# ---------------------------------------------------------------------------
+
+.autodepend
+# ---------------------------------------------------------------------------
+!if "$(USERDEFINES)" != ""
+AUSERDEFINES = -d$(USERDEFINES:;= -d)
+!else
+AUSERDEFINES =
+!endif
+
+!if !$d(BCC32)
+BCC32 = bcc32
+!endif
+
+!if !$d(CPP32)
+CPP32 = cpp32
+!endif
+
+!if !$d(DCC32)
+DCC32 = dcc32
+!endif
+
+!if !$d(TASM32)
+TASM32 = tasm32
+!endif
+
+!if !$d(LINKER)
+LINKER = ilink32
+!endif
+
+!if !$d(BRCC32)
+BRCC32 = brcc32
+!endif
+
+
+# ---------------------------------------------------------------------------
+!if $d(PATHCPP)
+.PATH.CPP = $(PATHCPP)
+.PATH.C = $(PATHCPP)
+!endif
+
+!if $d(PATHPAS)
+.PATH.PAS = $(PATHPAS)
+!endif
+
+!if $d(PATHASM)
+.PATH.ASM = $(PATHASM)
+!endif
+
+!if $d(PATHRC)
+.PATH.RC = $(PATHRC)
+!endif
+# ---------------------------------------------------------------------------
+$(PROJECT): $(IDLGENFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE)
+ $(BCB)\BIN\$(LINKER) @&&!
+ $(LFLAGS) -L$(LIBPATH) +
+ $(ALLOBJ), +
+ $(PROJECT),, +
+ $(ALLLIB), +
+ $(DEFFILE), +
+ $(ALLRES)
+!
+# ---------------------------------------------------------------------------
+.pas.hpp:
+ $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< }
+
+.pas.obj:
+ $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< }
+
+.cpp.obj:
+ $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< }
+
+.c.obj:
+ $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< }
+
+.c.i:
+ $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< }
+
+.cpp.i:
+ $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< }
+
+.asm.obj:
+ $(BCB)\BIN\$(TASM32) $(AFLAGS) -i$(INCLUDEPATH:;= -i) $(AUSERDEFINES) -d$(SYSDEFINES:;= -d) $<, $@
+
+.rc.res:
+ $(BCB)\BIN\$(BRCC32) $(RFLAGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -fo$@ $<
+# ---------------------------------------------------------------------------
+
+
+
+

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/expat.bpf
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/expat.bpf 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,6 @@
+USEUNIT("..\lib\xmlparse.c");
+USEUNIT("..\lib\xmlrole.c");
+USEUNIT("..\lib\xmltok.c");
+USEDEF("libexpat_mtd.def");
+//---------------------------------------------------------------------------
+#define DllEntryPoint

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/expat.bpr
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/expat.bpr 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,140 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!-- C++Builder XML Project -->
+<PROJECT>
+ <MACROS>
+ <VERSION value="BCB.05.03"/>
+ <PROJECT value="Release\libexpat_mtd.dll"/>
+ <OBJFILES value="Release\obj\libexpat\xmlparse.obj Release\obj\libexpat\xmlrole.obj
+ Release\obj\libexpat\xmltok.obj"/>
+ <RESFILES value=""/>
+ <IDLFILES value=""/>
+ <IDLGENFILES value=""/>
+ <DEFFILE value="libexpat_mtd.def"/>
+ <RESDEPEN value="$(RESFILES)"/>
+ <LIBFILES value=""/>
+ <LIBRARIES value=""/>
+ <SPARELIBS value=""/>
+ <PACKAGES value="VCL50.bpi VCLX50.bpi bcbsmp50.bpi QRPT50.bpi VCLDB50.bpi VCLBDE50.bpi
+ ibsmp50.bpi VCLDBX50.bpi TEEUI50.bpi TEEDB50.bpi TEE50.bpi TEEQR50.bpi
+ VCLIB50.bpi bcbie50.bpi VCLIE50.bpi INETDB50.bpi INET50.bpi NMFAST50.bpi
+ dclocx50.bpi bcb2kaxserver50.bpi dclusr50.bpi"/>
+ <PATHCPP value=".;..\lib"/>
+ <PATHPAS value=".;"/>
+ <PATHRC value=".;"/>
+ <PATHASM value=".;"/>
+ <DEBUGLIBPATH value="$(BCB)\lib\debug"/>
+ <RELEASELIBPATH value="$(BCB)\lib\release"/>
+ <LINKER value="ilink32"/>
+ <USERDEFINES value="_WINDOWS;WIN32;NDEBUG;_USRDLL;COMPILED_FROM_DSP;EXPAT_EXPORTS"/>
+ <SYSDEFINES value="_NO_VCL;_ASSERTE;NO_STRICT;_RTLDLL"/>
+ <MAINSOURCE value="expat.bpf"/>
+ <INCLUDEPATH value="..\lib;$(BCB)\include"/>
+ <LIBPATH value="..\lib;$(BCB)\lib;$(RELEASELIBPATH)"/>
+ <WARNINGS value="-w-rch -w-par -w-8027 -w-8026 -w-ccc"/>
+ </MACROS>
+ <OPTIONS>
+ <IDLCFLAGS value="-I$(BCB)\include"/>
+ <CFLAG1 value="-WD -O2 -X- -a8 -b -k- -vi -q -tWM -c -tWD"/>
+ <PFLAGS value="-N2Release\obj\libexpat -N0Release\obj\libexpat -$Y- -$L- -$D-"/>
+ <RFLAGS value="/l 0x409 /d &quot;NDEBUG&quot; /i$(BCB)\include"/>
+ <AFLAGS value="/mx /w2 /zn"/>
+ <LFLAGS value="-IRelease\obj\libexpat -D&quot;&quot; -aa -Tpd -x -Gn -Gi -q"/>
+ </OPTIONS>
+ <LINKER>
+ <ALLOBJ value="c0d32.obj $(OBJFILES)"/>
+ <ALLRES value="$(RESFILES)"/>
+ <ALLLIB value="$(LIBFILES) $(LIBRARIES) import32.lib cw32mti.lib"/>
+ </LINKER>
+ <IDEOPTIONS>
+[Version Info]
+IncludeVerInfo=0
+AutoIncBuild=0
+MajorVer=1
+MinorVer=0
+Release=0
+Build=0
+Debug=0
+PreRelease=0
+Special=0
+Private=0
+DLL=0
+Locale=1033
+CodePage=1252
+
+[Version Info Keys]
+CompanyName=
+FileDescription=
+FileVersion=1.0.0.0
+InternalName=
+LegalCopyright=
+LegalTrademarks=
+OriginalFilename=
+ProductName=
+ProductVersion=1.0.0.0
+Comments=
+
+[HistoryLists\hlIncludePath]
+Count=4
+Item0=..\lib;$(BCB)\include
+Item1=$(BCB)\include
+Item2=$(BCB)\include;$(BCB)\include\mfc;$(BCB)\include\atl
+Item3=$(BCB)\include;$(BCB)\include\mfc;$(BCB)\include\atl;
+
+[HistoryLists\hlLibraryPath]
+Count=5
+Item0=..\lib;$(BCB)\lib;$(RELEASELIBPATH)
+Item1=..\lib;$(BCB)\lib;..\lib\$(RELEASELIBPATH)
+Item2=$(BCB)\lib;$(RELEASELIBPATH)
+Item3=$(BCB)\lib;$(RELEASELIBPATH);$(BCB)\lib\psdk
+Item4=$(BCB)\lib;$(RELEASELIBPATH);;$(BCB)\lib\psdk;
+
+[HistoryLists\hlDebugSourcePath]
+Count=1
+Item0=$(BCB)\source\vcl
+
+[HistoryLists\hlConditionals]
+Count=8
+Item0=_WINDOWS;WIN32;NDEBUG;_USRDLL;COMPILED_FROM_DSP;EXPAT_EXPORTS
+Item1=_WINDOWS;WIN32;NDEBUG;_DEBUG;_USRDLL;COMPILED_FROM_DSP;EXPAT_EXPORTS
+Item2=WIN32;_WINDOWS;NDEBUG;_DEBUG;_USRDLL;COMPILED_FROM_DSP;EXPAT_EXPORTS
+Item3=WIN32;_WINDOWS;NDEBUG;_DEBUG;_USRDLL;EXPAT_EXPORTS;COMPILED_FROM_DSP
+Item4=NDEBUG;WIN32;_WINDOWS;_USRDLL;_DEBUG;EXPAT_EXPORTS;COMPILED_FROM_DSP
+Item5=NDEBUG;WIN32;_WINDOWS;_USRDLL;EXPAT_EXPORTS;COMPILED_FROM_DSP;_DEBUG
+Item6=NDEBUG;WIN32;_WINDOWS;_MBCS;_USRDLL;EXPAT_EXPORTS;COMPILED_FROM_DSP;_DEBUG
+Item7=NDEBUG;WIN32;_WINDOWS;_MBCS;_USRDLL;EXPAT_EXPORTS;COMPILED_FROM_DSP
+
+[HistoryLists\hlIntOutputDir]
+Count=7
+Item0=Release\obj\libexpat
+Item1=Release\obj\libexpat_static
+Item2=Release\obj\mtd
+Item3=Release\obj\mt
+Item4=Release\obj
+Item5=Release
+Item6=..\lib\Release
+
+[HistoryLists\hlFinalOutputDir]
+Count=1
+Item0=Release\
+
+[Debugging]
+DebugSourceDirs=
+
+[Parameters]
+RunParams=
+HostApplication=
+RemoteHost=
+RemotePath=
+RemoteDebug=0
+
+[Compiler]
+ShowInfoMsgs=0
+LinkDebugVcl=0
+LinkCGLIB=0
+
+[Language]
+ActiveLang=
+ProjectLang=
+RootDir=
+ </IDEOPTIONS>
+</PROJECT>
\ No newline at end of file

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/expat.mak
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/expat.mak 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,187 @@
+# ---------------------------------------------------------------------------
+!if !$d(BCB)
+BCB = $(MAKEDIR)\..
+!endif
+
+# ---------------------------------------------------------------------------
+# IDE SECTION
+# ---------------------------------------------------------------------------
+# The following section of the project makefile is managed by the BCB IDE.
+# It is recommended to use the IDE to change any of the values in this
+# section.
+# ---------------------------------------------------------------------------
+
+VERSION = BCB.05.03
+# ---------------------------------------------------------------------------
+PROJECT = Release\libexpat_mtd.dll
+OBJFILES = Release\obj\libexpat\xmlparse.obj Release\obj\libexpat\xmlrole.obj \
+ Release\obj\libexpat\xmltok.obj
+RESFILES =
+MAINSOURCE = expat.bpf
+RESDEPEN = $(RESFILES)
+LIBFILES =
+IDLFILES =
+IDLGENFILES =
+LIBRARIES =
+PACKAGES = VCL50.bpi VCLX50.bpi bcbsmp50.bpi QRPT50.bpi VCLDB50.bpi VCLBDE50.bpi \
+ ibsmp50.bpi VCLDBX50.bpi TEEUI50.bpi TEEDB50.bpi TEE50.bpi TEEQR50.bpi \
+ VCLIB50.bpi bcbie50.bpi VCLIE50.bpi INETDB50.bpi INET50.bpi NMFAST50.bpi \
+ dclocx50.bpi bcb2kaxserver50.bpi dclusr50.bpi
+SPARELIBS =
+DEFFILE = libexpat_mtd.def
+# ---------------------------------------------------------------------------
+PATHCPP = .;..\lib
+PATHASM = .;
+PATHPAS = .;
+PATHRC = .;
+DEBUGLIBPATH = $(BCB)\lib\debug
+RELEASELIBPATH = $(BCB)\lib\release
+USERDEFINES = _WINDOWS;WIN32;NDEBUG;_USRDLL;COMPILED_FROM_DSP
+SYSDEFINES = _NO_VCL;_ASSERTE;NO_STRICT;_RTLDLL
+INCLUDEPATH = ..\lib;$(BCB)\include
+LIBPATH = ..\lib;$(BCB)\lib;$(RELEASELIBPATH)
+WARNINGS= -w-rch -w-par -w-8027 -w-8026 -w-ccc
+# ---------------------------------------------------------------------------
+CFLAG1 = -WD -O2 -X- -a8 -b -k- -vi -q -tWM -c -tWD
+IDLCFLAGS = -I$(BCB)\include
+PFLAGS = -N2Release\obj\libexpat -N0Release\obj\libexpat -$Y- -$L- -$D-
+RFLAGS = /l 0x409 /d "NDEBUG" /i$(BCB)\include
+AFLAGS = /mx /w2 /zn
+LFLAGS = -IRelease\obj\libexpat -D"" -aa -Tpd -x -Gn -Gi -q
+# ---------------------------------------------------------------------------
+ALLOBJ = c0d32.obj $(OBJFILES)
+ALLRES = $(RESFILES)
+ALLLIB = $(LIBFILES) $(LIBRARIES) import32.lib cw32mti.lib
+# ---------------------------------------------------------------------------
+!ifdef IDEOPTIONS
+
+[Version Info]
+IncludeVerInfo=0
+AutoIncBuild=0
+MajorVer=1
+MinorVer=0
+Release=0
+Build=0
+Debug=0
+PreRelease=0
+Special=0
+Private=0
+DLL=0
+
+[Version Info Keys]
+CompanyName=
+FileDescription=
+FileVersion=1.0.0.0
+InternalName=
+LegalCopyright=
+LegalTrademarks=
+OriginalFilename=
+ProductName=
+ProductVersion=1.0.0.0
+Comments=
+
+[Debugging]
+DebugSourceDirs=$(BCB)\source\vcl
+
+!endif
+
+
+
+
+
+# ---------------------------------------------------------------------------
+# MAKE SECTION
+# ---------------------------------------------------------------------------
+# This section of the project file is not used by the BCB IDE. It is for
+# the benefit of building from the command-line using the MAKE utility.
+# ---------------------------------------------------------------------------
+
+.autodepend
+# ---------------------------------------------------------------------------
+!if "$(USERDEFINES)" != ""
+AUSERDEFINES = -d$(USERDEFINES:;= -d)
+!else
+AUSERDEFINES =
+!endif
+
+!if !$d(BCC32)
+BCC32 = bcc32
+!endif
+
+!if !$d(CPP32)
+CPP32 = cpp32
+!endif
+
+!if !$d(DCC32)
+DCC32 = dcc32
+!endif
+
+!if !$d(TASM32)
+TASM32 = tasm32
+!endif
+
+!if !$d(LINKER)
+LINKER = ilink32
+!endif
+
+!if !$d(BRCC32)
+BRCC32 = brcc32
+!endif
+
+
+# ---------------------------------------------------------------------------
+!if $d(PATHCPP)
+.PATH.CPP = $(PATHCPP)
+.PATH.C = $(PATHCPP)
+!endif
+
+!if $d(PATHPAS)
+.PATH.PAS = $(PATHPAS)
+!endif
+
+!if $d(PATHASM)
+.PATH.ASM = $(PATHASM)
+!endif
+
+!if $d(PATHRC)
+.PATH.RC = $(PATHRC)
+!endif
+# ---------------------------------------------------------------------------
+$(PROJECT): $(IDLGENFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE)
+ $(BCB)\BIN\$(LINKER) @&&!
+ $(LFLAGS) -L$(LIBPATH) +
+ $(ALLOBJ), +
+ $(PROJECT),, +
+ $(ALLLIB), +
+ $(DEFFILE), +
+ $(ALLRES)
+!
+# ---------------------------------------------------------------------------
+.pas.hpp:
+ $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< }
+
+.pas.obj:
+ $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< }
+
+.cpp.obj:
+ $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< }
+
+.c.obj:
+ $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< }
+
+.c.i:
+ $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< }
+
+.cpp.i:
+ $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< }
+
+.asm.obj:
+ $(BCB)\BIN\$(TASM32) $(AFLAGS) -i$(INCLUDEPATH:;= -i) $(AUSERDEFINES) -d$(SYSDEFINES:;= -d) $<, $@
+
+.rc.res:
+ $(BCB)\BIN\$(BRCC32) $(RFLAGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -fo$@ $<
+# ---------------------------------------------------------------------------
+
+
+
+

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/expat_static.bpf
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/expat_static.bpf 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,5 @@
+USEUNIT("..\lib\xmlparse.c");
+USEUNIT("..\lib\xmlrole.c");
+USEUNIT("..\lib\xmltok.c");
+//---------------------------------------------------------------------------
+#define Library

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/expat_static.bpr
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/expat_static.bpr 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,143 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!-- C++Builder XML Project -->
+<PROJECT>
+ <MACROS>
+ <VERSION value="BCB.05.03"/>
+ <PROJECT value="Release\libexpats_mtd.lib"/>
+ <OBJFILES value="Release\obj\libexpat_static\xmlparse.obj
+ Release\obj\libexpat_static\xmlrole.obj
+ Release\obj\libexpat_static\xmltok.obj"/>
+ <RESFILES value=""/>
+ <IDLFILES value=""/>
+ <IDLGENFILES value=""/>
+ <DEFFILE value=""/>
+ <RESDEPEN value="$(RESFILES)"/>
+ <LIBFILES value=""/>
+ <LIBRARIES value=""/>
+ <SPARELIBS value=""/>
+ <PACKAGES value=""/>
+ <PATHCPP value=".;..\lib"/>
+ <PATHPAS value=".;"/>
+ <PATHRC value=".;"/>
+ <PATHASM value=".;"/>
+ <DEBUGLIBPATH value="$(BCB)\lib\debug"/>
+ <RELEASELIBPATH value="$(BCB)\lib\release"/>
+ <LINKER value="TLib"/>
+ <USERDEFINES value="_WINDOWS;WIN32;NDEBUG;_LIB;COMPILED_FROM_DSP;XML_STATIC"/>
+ <SYSDEFINES value="_NO_VCL;_ASSERTE;NO_STRICT;_RTLDLL"/>
+ <MAINSOURCE value="expat_static.bpf"/>
+ <INCLUDEPATH value="..\lib;$(BCB)\include"/>
+ <LIBPATH value="..\lib;$(BCB)\lib;$(RELEASELIBPATH)"/>
+ <WARNINGS value="-w-rch -w-par -w-8027 -w-8026 -w-ccc"/>
+ <LISTFILE value=""/>
+ </MACROS>
+ <OPTIONS>
+ <IDLCFLAGS value="-I$(BCB)\include"/>
+ <CFLAG1 value="-O2 -X- -a8 -b -k- -vi -q -tWM -c"/>
+ <PFLAGS value="-N2Release\obj\libexpat_static -N0Release\obj\libexpat_static -$Y- -$L- -$D-"/>
+ <RFLAGS value="/l 0x409 /d &quot;NDEBUG&quot; /i$(BCB)\include"/>
+ <AFLAGS value="/mx /w2 /zn"/>
+ <LFLAGS value=""/>
+ </OPTIONS>
+ <LINKER>
+ <ALLOBJ value="$(OBJFILES)"/>
+ <ALLRES value="$(RESFILES)"/>
+ <ALLLIB value="$(LIBFILES) $(LIBRARIES)"/>
+ </LINKER>
+ <IDEOPTIONS>
+[Version Info]
+IncludeVerInfo=0
+AutoIncBuild=0
+MajorVer=1
+MinorVer=0
+Release=0
+Build=0
+Debug=0
+PreRelease=0
+Special=0
+Private=0
+DLL=0
+Locale=1033
+CodePage=1252
+
+[Version Info Keys]
+CompanyName=
+FileDescription=
+FileVersion=1.0.0.0
+InternalName=
+LegalCopyright=
+LegalTrademarks=
+OriginalFilename=
+ProductName=
+ProductVersion=1.0.0.0
+Comments=
+
+[HistoryLists\hlIncludePath]
+Count=4
+Item0=..\lib;$(BCB)\include
+Item1=$(BCB)\include
+Item2=$(BCB)\include;$(BCB)\include\mfc;$(BCB)\include\atl
+Item3=$(BCB)\include;$(BCB)\include\mfc;$(BCB)\include\atl;
+
+[HistoryLists\hlLibraryPath]
+Count=5
+Item0=..\lib;$(BCB)\lib;$(RELEASELIBPATH)
+Item1=..\lib;$(BCB)\lib;..\lib\$(RELEASELIBPATH)
+Item2=$(BCB)\lib;$(RELEASELIBPATH)
+Item3=$(BCB)\lib;$(RELEASELIBPATH);$(BCB)\lib\psdk
+Item4=$(BCB)\lib;$(RELEASELIBPATH);;$(BCB)\lib\psdk;
+
+[HistoryLists\hlDebugSourcePath]
+Count=1
+Item0=$(BCB)\source\vcl
+
+[HistoryLists\hlConditionals]
+Count=7
+Item0=_WINDOWS;WIN32;NDEBUG;_LIB;COMPILED_FROM_DSP;XML_STATIC
+Item1=_WINDOWS;WIN32;NDEBUG;_DEBUG;_LIB;COMPILED_FROM_DSP;XML_STATIC
+Item2=WIN32;_WINDOWS;NDEBUG;_DEBUG;_LIB;COMPILED_FROM_DSP;XML_STATIC
+Item3=WIN32;_WINDOWS;NDEBUG;_LIB;COMPILED_FROM_DSP;_DEBUG
+Item4=WIN32;_WINDOWS;NDEBUG;_LIB;COMPILED_FROM_DSP
+Item5=WIN32;_WINDOWS;NDEBUG;_LIB;COMPILED_FROM_DSP;_MBCS
+Item6=WIN32;_WINDOWS;NDEBUG;_MBCS;_LIB;COMPILED_FROM_DSP
+
+[HistoryLists\hlIntOutputDir]
+Count=6
+Item0=Release\obj\libexpat_static
+Item1=Release\obj\mts
+Item2=Release\obj\mt
+Item3=Release
+Item4=..\lib\Release_static
+Item5=Release_static
+
+[HistoryLists\hlFinalOutputDir]
+Count=3
+Item0=Release\
+Item1=Release
+Item2=Release_static\
+
+[HistoryLists\hlTlibPageSize]
+Count=1
+Item0=0x0010
+
+[Debugging]
+DebugSourceDirs=
+
+[Parameters]
+RunParams=
+HostApplication=
+RemoteHost=
+RemotePath=
+RemoteDebug=0
+
+[Compiler]
+ShowInfoMsgs=0
+LinkDebugVcl=0
+LinkCGLIB=0
+
+[Language]
+ActiveLang=
+ProjectLang=
+RootDir=
+ </IDEOPTIONS>
+</PROJECT>
\ No newline at end of file

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/expat_static.mak
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/expat_static.mak 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,189 @@
+# ---------------------------------------------------------------------------
+!if !$d(BCB)
+BCB = $(MAKEDIR)\..
+!endif
+
+# ---------------------------------------------------------------------------
+# IDE SECTION
+# ---------------------------------------------------------------------------
+# The following section of the project makefile is managed by the BCB IDE.
+# It is recommended to use the IDE to change any of the values in this
+# section.
+# ---------------------------------------------------------------------------
+
+VERSION = BCB.05.03
+# ---------------------------------------------------------------------------
+PROJECT = Release\libexpats_mtd.lib
+OBJFILES = Release\obj\libexpat_static\xmlparse.obj \
+ Release\obj\libexpat_static\xmlrole.obj \
+ Release\obj\libexpat_static\xmltok.obj
+RESFILES =
+MAINSOURCE = expat_static.bpf
+RESDEPEN = $(RESFILES)
+LIBFILES =
+IDLFILES =
+IDLGENFILES =
+LIBRARIES =
+PACKAGES =
+SPARELIBS =
+DEFFILE =
+# ---------------------------------------------------------------------------
+PATHCPP = .;..\lib
+PATHASM = .;
+PATHPAS = .;
+PATHRC = .;
+LINKER = TLib
+DEBUGLIBPATH = $(BCB)\lib\debug
+RELEASELIBPATH = $(BCB)\lib\release
+USERDEFINES = _WINDOWS;WIN32;NDEBUG;_LIB;COMPILED_FROM_DSP;XML_STATIC
+SYSDEFINES = _NO_VCL;_ASSERTE;NO_STRICT;_RTLDLL
+INCLUDEPATH = ..\lib;$(BCB)\include
+LIBPATH = ..\lib;$(BCB)\lib;$(RELEASELIBPATH)
+WARNINGS = -w-rch -w-par -w-8027 -w-8026 -w-ccc
+LISTFILE =
+# ---------------------------------------------------------------------------
+CFLAG1 = -O2 -X- -a8 -b -k- -vi -q -tWM -c
+IDLCFLAGS = -I$(BCB)\include
+PFLAGS = -N2Release\obj\libexpat_static -N0Release\obj\libexpat_static -$Y- -$L- -$D-
+RFLAGS = /l 0x409 /d "NDEBUG" /i$(BCB)\include
+AFLAGS = /mx /w2 /zn
+LFLAGS =
+# ---------------------------------------------------------------------------
+ALLOBJ = $(OBJFILES)
+ALLRES = $(RESFILES)
+ALLLIB = $(LIBFILES) $(LIBRARIES)
+# ---------------------------------------------------------------------------
+!ifdef IDEOPTIONS
+
+[Version Info]
+IncludeVerInfo=0
+AutoIncBuild=0
+MajorVer=1
+MinorVer=0
+Release=0
+Build=0
+Debug=0
+PreRelease=0
+Special=0
+Private=0
+DLL=0
+
+[Version Info Keys]
+CompanyName=
+FileDescription=
+FileVersion=1.0.0.0
+InternalName=
+LegalCopyright=
+LegalTrademarks=
+OriginalFilename=
+ProductName=
+ProductVersion=1.0.0.0
+Comments=
+
+[Debugging]
+DebugSourceDirs=$(BCB)\source\vcl
+
+!endif
+
+
+
+
+
+# ---------------------------------------------------------------------------
+# MAKE SECTION
+# ---------------------------------------------------------------------------
+# This section of the project file is not used by the BCB IDE. It is for
+# the benefit of building from the command-line using the MAKE utility.
+# ---------------------------------------------------------------------------
+
+.autodepend
+# ---------------------------------------------------------------------------
+!if "$(USERDEFINES)" != ""
+AUSERDEFINES = -d$(USERDEFINES:;= -d)
+!else
+AUSERDEFINES =
+!endif
+
+!if !$d(BCC32)
+BCC32 = bcc32
+!endif
+
+!if !$d(CPP32)
+CPP32 = cpp32
+!endif
+
+!if !$d(DCC32)
+DCC32 = dcc32
+!endif
+
+!if !$d(TASM32)
+TASM32 = tasm32
+!endif
+
+!if !$d(LINKER)
+LINKER = TLib
+!endif
+
+!if !$d(BRCC32)
+BRCC32 = brcc32
+!endif
+
+
+# ---------------------------------------------------------------------------
+!if $d(PATHCPP)
+.PATH.CPP = $(PATHCPP)
+.PATH.C = $(PATHCPP)
+!endif
+
+!if $d(PATHPAS)
+.PATH.PAS = $(PATHPAS)
+!endif
+
+!if $d(PATHASM)
+.PATH.ASM = $(PATHASM)
+!endif
+
+!if $d(PATHRC)
+.PATH.RC = $(PATHRC)
+!endif
+# ---------------------------------------------------------------------------
+!if "$(LISTFILE)" == ""
+COMMA =
+!else
+COMMA = ,
+!endif
+
+$(PROJECT): $(IDLGENFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE)
+ $(BCB)\BIN\$(LINKER) /u $@ @&&!
+ $(LFLAGS) $? $(COMMA) $(LISTFILE)
+
+!
+# ---------------------------------------------------------------------------
+.pas.hpp:
+ $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< }
+
+.pas.obj:
+ $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< }
+
+.cpp.obj:
+ $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< }
+
+.c.obj:
+ $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< }
+
+.c.i:
+ $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< }
+
+.cpp.i:
+ $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< }
+
+.asm.obj:
+ $(BCB)\BIN\$(TASM32) $(AFLAGS) -i$(INCLUDEPATH:;= -i) $(AUSERDEFINES) -d$(SYSDEFINES:;= -d) $<, $@
+
+.rc.res:
+ $(BCB)\BIN\$(BRCC32) $(RFLAGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -fo$@ $<
+# ---------------------------------------------------------------------------
+
+
+
+

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/expatw.bpf
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/expatw.bpf 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,6 @@
+USEUNIT("..\lib\xmlparse.c");
+USEUNIT("..\lib\xmlrole.c");
+USEUNIT("..\lib\xmltok.c");
+USEDEF("libexpatw_mtd.def");
+//---------------------------------------------------------------------------
+#define DllEntryPoint

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/expatw.bpr
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/expatw.bpr 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,146 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!-- C++Builder XML Project -->
+<PROJECT>
+ <MACROS>
+ <VERSION value="BCB.05.03"/>
+ <PROJECT value="Release\libexpatw_mtd.dll"/>
+ <OBJFILES value="Release\obj\libexpatw\xmlparse.obj Release\obj\libexpatw\xmlrole.obj
+ Release\obj\libexpatw\xmltok.obj"/>
+ <RESFILES value=""/>
+ <IDLFILES value=""/>
+ <IDLGENFILES value=""/>
+ <DEFFILE value="libexpatw_mtd.def"/>
+ <RESDEPEN value="$(RESFILES)"/>
+ <LIBFILES value=""/>
+ <LIBRARIES value=""/>
+ <SPARELIBS value=""/>
+ <PACKAGES value="VCL50.bpi VCLX50.bpi bcbsmp50.bpi QRPT50.bpi VCLDB50.bpi VCLBDE50.bpi
+ ibsmp50.bpi VCLDBX50.bpi TEEUI50.bpi TEEDB50.bpi TEE50.bpi TEEQR50.bpi
+ VCLIB50.bpi bcbie50.bpi VCLIE50.bpi INETDB50.bpi INET50.bpi NMFAST50.bpi
+ dclocx50.bpi bcb2kaxserver50.bpi dclusr50.bpi"/>
+ <PATHCPP value=".;..\lib"/>
+ <PATHPAS value=".;"/>
+ <PATHRC value=".;"/>
+ <PATHASM value=".;"/>
+ <DEBUGLIBPATH value="$(BCB)\lib\debug"/>
+ <RELEASELIBPATH value="$(BCB)\lib\release"/>
+ <LINKER value="ilink32"/>
+ <USERDEFINES value="_WINDOWS;WIN32;NDEBUG;_USRDLL;COMPILED_FROM_DSP;EXPAT_EXPORTS;XML_UNICODE_WCHAR_T"/>
+ <SYSDEFINES value="_NO_VCL;_ASSERTE;NO_STRICT;_RTLDLL"/>
+ <MAINSOURCE value="expatw.bpf"/>
+ <INCLUDEPATH value="..\lib;$(BCB)\include"/>
+ <LIBPATH value="..\lib;$(BCB)\lib;$(RELEASELIBPATH)"/>
+ <WARNINGS value="-w-rch -w-par -w-8027 -w-8026 -w-ccc"/>
+ </MACROS>
+ <OPTIONS>
+ <IDLCFLAGS value="-I$(BCB)\include"/>
+ <CFLAG1 value="-WD -O2 -X- -a8 -b -k- -vi -q -tWM -c -tWD"/>
+ <PFLAGS value="-N2Release\obj\libexpatw -N0Release\obj\libexpatw -$Y- -$L- -$D-"/>
+ <RFLAGS value="/l 0x409 /d &quot;NDEBUG&quot; /i$(BCB)\include"/>
+ <AFLAGS value="/mx /w2 /zn"/>
+ <LFLAGS value="-IRelease\obj\libexpatw -D&quot;&quot; -aa -Tpd -x -Gn -Gi -w -q"/>
+ </OPTIONS>
+ <LINKER>
+ <ALLOBJ value="c0d32w.obj $(OBJFILES)"/>
+ <ALLRES value="$(RESFILES)"/>
+ <ALLLIB value="$(LIBFILES) $(LIBRARIES) import32.lib cw32mti.lib"/>
+ </LINKER>
+ <IDEOPTIONS>
+[Version Info]
+IncludeVerInfo=0
+AutoIncBuild=0
+MajorVer=1
+MinorVer=0
+Release=0
+Build=0
+Debug=0
+PreRelease=0
+Special=0
+Private=0
+DLL=0
+Locale=1033
+CodePage=1252
+
+[Version Info Keys]
+CompanyName=
+FileDescription=
+FileVersion=1.0.0.0
+InternalName=
+LegalCopyright=
+LegalTrademarks=
+OriginalFilename=
+ProductName=
+ProductVersion=1.0.0.0
+Comments=
+
+[HistoryLists\hlIncludePath]
+Count=4
+Item0=..\lib;$(BCB)\include
+Item1=$(BCB)\include
+Item2=$(BCB)\include;$(BCB)\include\mfc;$(BCB)\include\atl
+Item3=$(BCB)\include;$(BCB)\include\mfc;$(BCB)\include\atl;
+
+[HistoryLists\hlLibraryPath]
+Count=5
+Item0=..\lib;$(BCB)\lib;$(RELEASELIBPATH)
+Item1=..\lib;$(BCB)\lib;..\lib\$(RELEASELIBPATH)
+Item2=$(BCB)\lib;$(RELEASELIBPATH)
+Item3=$(BCB)\lib;$(RELEASELIBPATH);$(BCB)\lib\psdk
+Item4=$(BCB)\lib;$(RELEASELIBPATH);;$(BCB)\lib\psdk;
+
+[HistoryLists\hlDebugSourcePath]
+Count=1
+Item0=$(BCB)\source\vcl
+
+[HistoryLists\hlConditionals]
+Count=9
+Item0=_WINDOWS;WIN32;NDEBUG;_USRDLL;COMPILED_FROM_DSP;EXPAT_EXPORTS;XML_UNICODE_WCHAR_T
+Item1=_WINDOWS;WIN32;NDEBUG;_DEBUG;_USRDLL;COMPILED_FROM_DSP;EXPAT_EXPORTS;XML_UNICODE_WCHAR_T
+Item2=_WINDOWS;WIN32;NDEBUG;_DEBUG;_USRDLL;EXPAT_EXPORTS;COMPILED_FROM_DSP;XML_UNICODE_WCHAR_T
+Item3=NDEBUG;COMPILED_FROM_DSP;WIN32;_WINDOWS;_USRDLL;EXPAT_EXPORTS;_DEBUG;XML_UNICODE_WCHAR_T
+Item4=NDEBUG;COMPILED_FROM_DSP;WIN32;_WINDOWS;_USRDLL;EXPAT_EXPORTS;XML_UNICODE_WCHAR_T;_DEBUG
+Item5=NDEBUG;COMPILED_FROM_DSP;WIN32;_WINDOWS;_UNICODE;_USRDLL;EXPAT_EXPORTS;XML_UNICODE_WCHAR_T;_DEBUG
+Item6=NDEBUG;COMPILED_FROM_DSP;WIN32;_WINDOWS;_UNICODE;_USRDLL;EXPAT_EXPORTS;XML_UNICODE_WCHAR_T
+Item7=NDEBUG;COMPILED_FROM_DSP;WIN32;_WINDOWS;_MBCS;_USRDLL;EXPAT_EXPORTS;XML_UNICODE_WCHAR_T;XML_UNICODE
+Item8=NDEBUG;COMPILED_FROM_DSP;WIN32;_WINDOWS;_MBCS;_USRDLL;EXPAT_EXPORTS;XML_UNICODE_WCHAR_T
+
+[HistoryLists\hlIntOutputDir]
+Count=8
+Item0=Release\obj\libexpatw
+Item1=Release\obj\libexpat
+Item2=Release\obj\mtd
+Item3=Release\obj\mt
+Item4=Release_w\obj
+Item5=Release-w\obj
+Item6=Release-w
+Item7=..\lib\Release-w
+
+[HistoryLists\hlFinalOutputDir]
+Count=5
+Item0=Release\
+Item1=Release
+Item2=Release_w\
+Item3=Release-w\
+Item4=Release-w
+
+[Debugging]
+DebugSourceDirs=
+
+[Parameters]
+RunParams=
+HostApplication=
+RemoteHost=
+RemotePath=
+RemoteDebug=0
+
+[Compiler]
+ShowInfoMsgs=0
+LinkDebugVcl=0
+LinkCGLIB=0
+
+[Language]
+ActiveLang=
+ProjectLang=
+RootDir=
+ </IDEOPTIONS>
+</PROJECT>
\ No newline at end of file

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/expatw.mak
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/expatw.mak 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,187 @@
+# ---------------------------------------------------------------------------
+!if !$d(BCB)
+BCB = $(MAKEDIR)\..
+!endif
+
+# ---------------------------------------------------------------------------
+# IDE SECTION
+# ---------------------------------------------------------------------------
+# The following section of the project makefile is managed by the BCB IDE.
+# It is recommended to use the IDE to change any of the values in this
+# section.
+# ---------------------------------------------------------------------------
+
+VERSION = BCB.05.03
+# ---------------------------------------------------------------------------
+PROJECT = Release\libexpatw_mtd.dll
+OBJFILES = Release\obj\libexpatw\xmlparse.obj Release\obj\libexpatw\xmlrole.obj \
+ Release\obj\libexpatw\xmltok.obj
+RESFILES =
+MAINSOURCE = expatw.bpf
+RESDEPEN = $(RESFILES)
+LIBFILES =
+IDLFILES =
+IDLGENFILES =
+LIBRARIES =
+PACKAGES = VCL50.bpi VCLX50.bpi bcbsmp50.bpi QRPT50.bpi VCLDB50.bpi VCLBDE50.bpi \
+ ibsmp50.bpi VCLDBX50.bpi TEEUI50.bpi TEEDB50.bpi TEE50.bpi TEEQR50.bpi \
+ VCLIB50.bpi bcbie50.bpi VCLIE50.bpi INETDB50.bpi INET50.bpi NMFAST50.bpi \
+ dclocx50.bpi bcb2kaxserver50.bpi dclusr50.bpi
+SPARELIBS =
+DEFFILE = libexpatw_mtd.def
+# ---------------------------------------------------------------------------
+PATHCPP = .;..\lib
+PATHASM = .;
+PATHPAS = .;
+PATHRC = .;
+DEBUGLIBPATH = $(BCB)\lib\debug
+RELEASELIBPATH = $(BCB)\lib\release
+USERDEFINES = _WINDOWS;WIN32;NDEBUG;_USRDLL;COMPILED_FROM_DSP;XML_UNICODE_WCHAR_T
+SYSDEFINES = _NO_VCL;_ASSERTE;NO_STRICT;_RTLDLL
+INCLUDEPATH = ..\lib;$(BCB)\include
+LIBPATH = ..\lib;$(BCB)\lib;$(RELEASELIBPATH)
+WARNINGS= -w-rch -w-par -w-8027 -w-8026 -w-ccc
+# ---------------------------------------------------------------------------
+CFLAG1 = -WD -O2 -X- -a8 -b -k- -vi -q -tWM -c -tWD
+IDLCFLAGS = -I$(BCB)\include
+PFLAGS = -N2Release\obj\libexpatw -N0Release\obj\libexpatw -$Y- -$L- -$D-
+RFLAGS = /l 0x409 /d "NDEBUG" /i$(BCB)\include
+AFLAGS = /mx /w2 /zn
+LFLAGS = -IRelease\obj\libexpatw -D"" -aa -Tpd -x -Gn -Gi -w -q
+# ---------------------------------------------------------------------------
+ALLOBJ = c0d32w.obj $(OBJFILES)
+ALLRES = $(RESFILES)
+ALLLIB = $(LIBFILES) $(LIBRARIES) import32.lib cw32mti.lib
+# ---------------------------------------------------------------------------
+!ifdef IDEOPTIONS
+
+[Version Info]
+IncludeVerInfo=0
+AutoIncBuild=0
+MajorVer=1
+MinorVer=0
+Release=0
+Build=0
+Debug=0
+PreRelease=0
+Special=0
+Private=0
+DLL=0
+
+[Version Info Keys]
+CompanyName=
+FileDescription=
+FileVersion=1.0.0.0
+InternalName=
+LegalCopyright=
+LegalTrademarks=
+OriginalFilename=
+ProductName=
+ProductVersion=1.0.0.0
+Comments=
+
+[Debugging]
+DebugSourceDirs=$(BCB)\source\vcl
+
+!endif
+
+
+
+
+
+# ---------------------------------------------------------------------------
+# MAKE SECTION
+# ---------------------------------------------------------------------------
+# This section of the project file is not used by the BCB IDE. It is for
+# the benefit of building from the command-line using the MAKE utility.
+# ---------------------------------------------------------------------------
+
+.autodepend
+# ---------------------------------------------------------------------------
+!if "$(USERDEFINES)" != ""
+AUSERDEFINES = -d$(USERDEFINES:;= -d)
+!else
+AUSERDEFINES =
+!endif
+
+!if !$d(BCC32)
+BCC32 = bcc32
+!endif
+
+!if !$d(CPP32)
+CPP32 = cpp32
+!endif
+
+!if !$d(DCC32)
+DCC32 = dcc32
+!endif
+
+!if !$d(TASM32)
+TASM32 = tasm32
+!endif
+
+!if !$d(LINKER)
+LINKER = ilink32
+!endif
+
+!if !$d(BRCC32)
+BRCC32 = brcc32
+!endif
+
+
+# ---------------------------------------------------------------------------
+!if $d(PATHCPP)
+.PATH.CPP = $(PATHCPP)
+.PATH.C = $(PATHCPP)
+!endif
+
+!if $d(PATHPAS)
+.PATH.PAS = $(PATHPAS)
+!endif
+
+!if $d(PATHASM)
+.PATH.ASM = $(PATHASM)
+!endif
+
+!if $d(PATHRC)
+.PATH.RC = $(PATHRC)
+!endif
+# ---------------------------------------------------------------------------
+$(PROJECT): $(IDLGENFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE)
+ $(BCB)\BIN\$(LINKER) @&&!
+ $(LFLAGS) -L$(LIBPATH) +
+ $(ALLOBJ), +
+ $(PROJECT),, +
+ $(ALLLIB), +
+ $(DEFFILE), +
+ $(ALLRES)
+!
+# ---------------------------------------------------------------------------
+.pas.hpp:
+ $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< }
+
+.pas.obj:
+ $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< }
+
+.cpp.obj:
+ $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< }
+
+.c.obj:
+ $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< }
+
+.c.i:
+ $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< }
+
+.cpp.i:
+ $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< }
+
+.asm.obj:
+ $(BCB)\BIN\$(TASM32) $(AFLAGS) -i$(INCLUDEPATH:;= -i) $(AUSERDEFINES) -d$(SYSDEFINES:;= -d) $<, $@
+
+.rc.res:
+ $(BCB)\BIN\$(BRCC32) $(RFLAGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -fo$@ $<
+# ---------------------------------------------------------------------------
+
+
+
+

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/expatw_static.bpf
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/expatw_static.bpf 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,5 @@
+USEUNIT("..\lib\xmlparse.c");
+USEUNIT("..\lib\xmlrole.c");
+USEUNIT("..\lib\xmltok.c");
+//---------------------------------------------------------------------------
+#define Library

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/expatw_static.bpr
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/expatw_static.bpr 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,152 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!-- C++Builder XML Project -->
+<PROJECT>
+ <MACROS>
+ <VERSION value="BCB.05.03"/>
+ <PROJECT value="Release\libexpatws_mtd.lib"/>
+ <OBJFILES value="Release\obj\libexpatw_static\xmlparse.obj
+ Release\obj\libexpatw_static\xmlrole.obj
+ Release\obj\libexpatw_static\xmltok.obj"/>
+ <RESFILES value=""/>
+ <IDLFILES value=""/>
+ <IDLGENFILES value=""/>
+ <DEFFILE value=""/>
+ <RESDEPEN value="$(RESFILES)"/>
+ <LIBFILES value=""/>
+ <LIBRARIES value=""/>
+ <SPARELIBS value=""/>
+ <PACKAGES value=""/>
+ <PATHCPP value=".;..\lib"/>
+ <PATHPAS value=".;"/>
+ <PATHRC value=".;"/>
+ <PATHASM value=".;"/>
+ <DEBUGLIBPATH value="$(BCB)\lib\debug"/>
+ <RELEASELIBPATH value="$(BCB)\lib\release"/>
+ <LINKER value="TLib"/>
+ <USERDEFINES value="_WINDOWS;WIN32;NDEBUG;_LIB;COMPILED_FROM_DSP;XML_STATIC;XML_UNICODE_WCHAR_T"/>
+ <SYSDEFINES value="_NO_VCL;_ASSERTE;NO_STRICT;_RTLDLL"/>
+ <MAINSOURCE value="expatw_static.bpf"/>
+ <INCLUDEPATH value="..\lib;$(BCB)\include"/>
+ <LIBPATH value="..\lib;$(BCB)\lib;$(RELEASELIBPATH)"/>
+ <WARNINGS value="-w-rch -w-par -w-8027 -w-8026 -w-ccc"/>
+ <LISTFILE value=""/>
+ </MACROS>
+ <OPTIONS>
+ <IDLCFLAGS value="-I$(BCB)\include"/>
+ <CFLAG1 value="-O2 -X- -a8 -b -k- -vi -q -tWM -c"/>
+ <PFLAGS value="-N2Release\obj\libexpatw_static -N0Release\obj\libexpatw_static -$Y- -$L-
+ -$D-"/>
+ <RFLAGS value="/l 0x409 /d &quot;NDEBUG&quot; /i$(BCB)\include"/>
+ <AFLAGS value="/mx /w2 /zn"/>
+ <LFLAGS value=""/>
+ </OPTIONS>
+ <LINKER>
+ <ALLOBJ value="$(OBJFILES)"/>
+ <ALLRES value="$(RESFILES)"/>
+ <ALLLIB value="$(LIBFILES) $(LIBRARIES)"/>
+ </LINKER>
+ <IDEOPTIONS>
+[Version Info]
+IncludeVerInfo=0
+AutoIncBuild=0
+MajorVer=1
+MinorVer=0
+Release=0
+Build=0
+Debug=0
+PreRelease=0
+Special=0
+Private=0
+DLL=0
+Locale=1033
+CodePage=1252
+
+[Version Info Keys]
+CompanyName=
+FileDescription=
+FileVersion=1.0.0.0
+InternalName=
+LegalCopyright=
+LegalTrademarks=
+OriginalFilename=
+ProductName=
+ProductVersion=1.0.0.0
+Comments=
+
+[HistoryLists\hlIncludePath]
+Count=4
+Item0=..\lib;$(BCB)\include
+Item1=$(BCB)\include
+Item2=$(BCB)\include;$(BCB)\include\mfc;$(BCB)\include\atl
+Item3=$(BCB)\include;$(BCB)\include\mfc;$(BCB)\include\atl;
+
+[HistoryLists\hlLibraryPath]
+Count=5
+Item0=..\lib;$(BCB)\lib;$(RELEASELIBPATH)
+Item1=..\lib;$(BCB)\lib;..\lib\$(RELEASELIBPATH)
+Item2=$(BCB)\lib;$(RELEASELIBPATH)
+Item3=$(BCB)\lib;$(RELEASELIBPATH);$(BCB)\lib\psdk
+Item4=$(BCB)\lib;$(RELEASELIBPATH);;$(BCB)\lib\psdk;
+
+[HistoryLists\hlDebugSourcePath]
+Count=1
+Item0=$(BCB)\source\vcl
+
+[HistoryLists\hlConditionals]
+Count=15
+Item0=_WINDOWS;WIN32;NDEBUG;_LIB;COMPILED_FROM_DSP;XML_STATIC;XML_UNICODE_WCHAR_T
+Item1=_WINDOWS;WIN32;NDEBUG;_DEBUG;_LIB;COMPILED_FROM_DSP;XML_STATIC;XML_UNICODE_WCHAR_T
+Item2=WIN32;_WINDOWS;NDEBUG;_DEBUG;_LIB;COMPILED_FROM_DSP;XML_STATIC;XML_UNICODE_WCHAR_T
+Item3=WIN32;_WINDOWS;NDEBUG;_DEBUG;_LIB;XML_STATIC;COMPILED_FROM_DSP;XML_UNICODE_WCHAR_T
+Item4=WIN32;_WINDOWS;NDEBUG;_LIB;COMPILED_FROM_DSP;_DEBUG;XML_UNICODE_WCHAR_T
+Item5=WIN32;_WINDOWS;NDEBUG;_UNICODE;_LIB;COMPILED_FROM_DSP;XML_UNICODE_WCHAR_T;_DEBUG
+Item6=WIN32;_WINDOWS;NDEBUG;_UNICODE;_LIB;COMPILED_FROM_DSP;XML_UNICODE_WCHAR_T;_DEBUG;__cplusplus
+Item7=WIN32;_WINDOWS;NDEBUG;_UNICODE;_LIB;COMPILED_FROM_DSP;XML_UNICODE;_DEBUG
+Item8=WIN32;_WINDOWS;NDEBUG;_MBCS;_LIB;COMPILED_FROM_DSP;XML_UNICODE;_DEBUG
+Item9=WIN32;_WINDOWS;NDEBUG;_MBCS;_LIB;COMPILED_FROM_DSP;XML_UNICODE_WCHAR_T;_DEBUG;__WCHAR_T
+Item10=WIN32;_WINDOWS;NDEBUG;_MBCS;_LIB;COMPILED_FROM_DSP;XML_UNICODE_WCHAR_T;_DEBUG;_UNICODE
+Item11=WIN32;_WINDOWS;NDEBUG;_MBCS;_LIB;COMPILED_FROM_DSP;XML_UNICODE;_DEBUG;_UNICODE
+Item12=WIN32;_WINDOWS;NDEBUG;_MBCS;_LIB;COMPILED_FROM_DSP;XML_UNICODE_WCHAR_T;_DEBUG
+Item13=WIN32;_WINDOWS;NDEBUG;_MBCS;_LIB;COMPILED_FROM_DSP;XML_UNICODE_WCHAR_T
+Item14=WIN32;_WINDOWS;NDEBUG;_MBCS;_LIB;COMPILED_FROM_DSP;XML_UNICODE_WCHAR_T;XML_UNICODE
+
+[HistoryLists\hlIntOutputDir]
+Count=6
+Item0=Release\obj\libexpatw_static
+Item1=Release\obj\libexpat_static
+Item2=Release\obj\mts
+Item3=Release\obj\mt
+Item4=..\lib\Release-w_static
+Item5=Release-w_static
+
+[HistoryLists\hlFinalOutputDir]
+Count=3
+Item0=Release\
+Item1=Release
+Item2=Release-w_static\
+
+[HistoryLists\hlTlibPageSize]
+Count=1
+Item0=0x0010
+
+[Debugging]
+DebugSourceDirs=
+
+[Parameters]
+RunParams=
+HostApplication=
+RemoteHost=
+RemotePath=
+RemoteDebug=0
+
+[Compiler]
+ShowInfoMsgs=0
+LinkDebugVcl=0
+LinkCGLIB=0
+
+[Language]
+ActiveLang=
+ProjectLang=
+RootDir=
+ </IDEOPTIONS>
+</PROJECT>
\ No newline at end of file

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/expatw_static.mak
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/expatw_static.mak 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,190 @@
+# ---------------------------------------------------------------------------
+!if !$d(BCB)
+BCB = $(MAKEDIR)\..
+!endif
+
+# ---------------------------------------------------------------------------
+# IDE SECTION
+# ---------------------------------------------------------------------------
+# The following section of the project makefile is managed by the BCB IDE.
+# It is recommended to use the IDE to change any of the values in this
+# section.
+# ---------------------------------------------------------------------------
+
+VERSION = BCB.05.03
+# ---------------------------------------------------------------------------
+PROJECT = Release\libexpatws_mtd.lib
+OBJFILES = Release\obj\libexpatw_static\xmlparse.obj \
+ Release\obj\libexpatw_static\xmlrole.obj \
+ Release\obj\libexpatw_static\xmltok.obj
+RESFILES =
+MAINSOURCE = expatw_static.bpf
+RESDEPEN = $(RESFILES)
+LIBFILES =
+IDLFILES =
+IDLGENFILES =
+LIBRARIES =
+PACKAGES =
+SPARELIBS =
+DEFFILE =
+# ---------------------------------------------------------------------------
+PATHCPP = .;..\lib
+PATHASM = .;
+PATHPAS = .;
+PATHRC = .;
+LINKER = TLib
+DEBUGLIBPATH = $(BCB)\lib\debug
+RELEASELIBPATH = $(BCB)\lib\release
+USERDEFINES = _WINDOWS;WIN32;NDEBUG;_LIB;COMPILED_FROM_DSP;XML_STATIC;XML_UNICODE_WCHAR_T
+SYSDEFINES = _NO_VCL;_ASSERTE;NO_STRICT;_RTLDLL
+INCLUDEPATH = ..\lib;$(BCB)\include
+LIBPATH = ..\lib;$(BCB)\lib;$(RELEASELIBPATH)
+WARNINGS = -w-rch -w-par -w-8027 -w-8026 -w-ccc
+LISTFILE =
+# ---------------------------------------------------------------------------
+CFLAG1 = -O2 -X- -a8 -b -k- -vi -q -tWM -c
+IDLCFLAGS = -I$(BCB)\include
+PFLAGS = -N2Release\obj\libexpatw_static -N0Release\obj\libexpatw_static -$Y- -$L- \
+ -$D-
+RFLAGS = /l 0x409 /d "NDEBUG" /i$(BCB)\include
+AFLAGS = /mx /w2 /zn
+LFLAGS =
+# ---------------------------------------------------------------------------
+ALLOBJ = $(OBJFILES)
+ALLRES = $(RESFILES)
+ALLLIB = $(LIBFILES) $(LIBRARIES)
+# ---------------------------------------------------------------------------
+!ifdef IDEOPTIONS
+
+[Version Info]
+IncludeVerInfo=0
+AutoIncBuild=0
+MajorVer=1
+MinorVer=0
+Release=0
+Build=0
+Debug=0
+PreRelease=0
+Special=0
+Private=0
+DLL=0
+
+[Version Info Keys]
+CompanyName=
+FileDescription=
+FileVersion=1.0.0.0
+InternalName=
+LegalCopyright=
+LegalTrademarks=
+OriginalFilename=
+ProductName=
+ProductVersion=1.0.0.0
+Comments=
+
+[Debugging]
+DebugSourceDirs=$(BCB)\source\vcl
+
+!endif
+
+
+
+
+
+# ---------------------------------------------------------------------------
+# MAKE SECTION
+# ---------------------------------------------------------------------------
+# This section of the project file is not used by the BCB IDE. It is for
+# the benefit of building from the command-line using the MAKE utility.
+# ---------------------------------------------------------------------------
+
+.autodepend
+# ---------------------------------------------------------------------------
+!if "$(USERDEFINES)" != ""
+AUSERDEFINES = -d$(USERDEFINES:;= -d)
+!else
+AUSERDEFINES =
+!endif
+
+!if !$d(BCC32)
+BCC32 = bcc32
+!endif
+
+!if !$d(CPP32)
+CPP32 = cpp32
+!endif
+
+!if !$d(DCC32)
+DCC32 = dcc32
+!endif
+
+!if !$d(TASM32)
+TASM32 = tasm32
+!endif
+
+!if !$d(LINKER)
+LINKER = TLib
+!endif
+
+!if !$d(BRCC32)
+BRCC32 = brcc32
+!endif
+
+
+# ---------------------------------------------------------------------------
+!if $d(PATHCPP)
+.PATH.CPP = $(PATHCPP)
+.PATH.C = $(PATHCPP)
+!endif
+
+!if $d(PATHPAS)
+.PATH.PAS = $(PATHPAS)
+!endif
+
+!if $d(PATHASM)
+.PATH.ASM = $(PATHASM)
+!endif
+
+!if $d(PATHRC)
+.PATH.RC = $(PATHRC)
+!endif
+# ---------------------------------------------------------------------------
+!if "$(LISTFILE)" == ""
+COMMA =
+!else
+COMMA = ,
+!endif
+
+$(PROJECT): $(IDLGENFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE)
+ $(BCB)\BIN\$(LINKER) /u $@ @&&!
+ $(LFLAGS) $? $(COMMA) $(LISTFILE)
+
+!
+# ---------------------------------------------------------------------------
+.pas.hpp:
+ $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< }
+
+.pas.obj:
+ $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< }
+
+.cpp.obj:
+ $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< }
+
+.c.obj:
+ $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< }
+
+.c.i:
+ $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< }
+
+.cpp.i:
+ $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< }
+
+.asm.obj:
+ $(BCB)\BIN\$(TASM32) $(AFLAGS) -i$(INCLUDEPATH:;= -i) $(AUSERDEFINES) -d$(SYSDEFINES:;= -d) $<, $@
+
+.rc.res:
+ $(BCB)\BIN\$(BRCC32) $(RFLAGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -fo$@ $<
+# ---------------------------------------------------------------------------
+
+
+
+

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/libexpat_mtd.def
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/libexpat_mtd.def 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,141 @@
+; DEF file for BCB5
+LIBRARY LIBEXPAT_MTD
+DESCRIPTION "Implements an XML parser."
+EXPORTS
+ _XML_DefaultCurrent @1
+ _XML_ErrorString @2
+ _XML_ExpatVersion @3
+ _XML_ExpatVersionInfo @4
+ _XML_ExternalEntityParserCreate @5
+ _XML_GetBase @6
+ _XML_GetBuffer @7
+ _XML_GetCurrentByteCount @8
+ _XML_GetCurrentByteIndex @9
+ _XML_GetCurrentColumnNumber @10
+ _XML_GetCurrentLineNumber @11
+ _XML_GetErrorCode @12
+ _XML_GetIdAttributeIndex @13
+ _XML_GetInputContext @14
+ _XML_GetSpecifiedAttributeCount @15
+ _XML_Parse @16
+ _XML_ParseBuffer @17
+ _XML_ParserCreate @18
+ _XML_ParserCreateNS @19
+ _XML_ParserCreate_MM @20
+ _XML_ParserFree @21
+ _XML_SetAttlistDeclHandler @22
+ _XML_SetBase @23
+ _XML_SetCdataSectionHandler @24
+ _XML_SetCharacterDataHandler @25
+ _XML_SetCommentHandler @26
+ _XML_SetDefaultHandler @27
+ _XML_SetDefaultHandlerExpand @28
+ _XML_SetDoctypeDeclHandler @29
+ _XML_SetElementDeclHandler @30
+ _XML_SetElementHandler @31
+ _XML_SetEncoding @32
+ _XML_SetEndCdataSectionHandler @33
+ _XML_SetEndDoctypeDeclHandler @34
+ _XML_SetEndElementHandler @35
+ _XML_SetEndNamespaceDeclHandler @36
+ _XML_SetEntityDeclHandler @37
+ _XML_SetExternalEntityRefHandler @38
+ _XML_SetExternalEntityRefHandlerArg @39
+ _XML_SetNamespaceDeclHandler @40
+ _XML_SetNotStandaloneHandler @41
+ _XML_SetNotationDeclHandler @42
+ _XML_SetParamEntityParsing @43
+ _XML_SetProcessingInstructionHandler @44
+ _XML_SetReturnNSTriplet @45
+ _XML_SetStartCdataSectionHandler @46
+ _XML_SetStartDoctypeDeclHandler @47
+ _XML_SetStartElementHandler @48
+ _XML_SetStartNamespaceDeclHandler @49
+ _XML_SetUnknownEncodingHandler @50
+ _XML_SetUnparsedEntityDeclHandler @51
+ _XML_SetUserData @52
+ _XML_SetXmlDeclHandler @53
+ _XML_UseParserAsHandlerArg @54
+; added with version 1.95.3
+ _XML_ParserReset @55
+ _XML_SetSkippedEntityHandler @56
+; added with version 1.95.5
+ _XML_GetFeatureList @57
+ _XML_UseForeignDTD @58
+; added with version 1.95.6
+ _XML_FreeContentModel @59
+ _XML_MemMalloc @60
+ _XML_MemRealloc @61
+ _XML_MemFree @62
+; added with version 1.95.8
+ _XML_StopParser @63
+ _XML_ResumeParser @64
+ _XML_GetParsingStatus @65
+
+; Aliases for MS compatible names
+ XML_DefaultCurrent = _XML_DefaultCurrent
+ XML_ErrorString = _XML_ErrorString
+ XML_ExpatVersion = _XML_ExpatVersion
+ XML_ExpatVersionInfo = _XML_ExpatVersionInfo
+ XML_ExternalEntityParserCreate = _XML_ExternalEntityParserCreate
+ XML_GetBase = _XML_GetBase
+ XML_GetBuffer = _XML_GetBuffer
+ XML_GetCurrentByteCount = _XML_GetCurrentByteCount
+ XML_GetCurrentByteIndex = _XML_GetCurrentByteIndex
+ XML_GetCurrentColumnNumber = _XML_GetCurrentColumnNumber
+ XML_GetCurrentLineNumber = _XML_GetCurrentLineNumber
+ XML_GetErrorCode = _XML_GetErrorCode
+ XML_GetIdAttributeIndex = _XML_GetIdAttributeIndex
+ XML_GetInputContext = _XML_GetInputContext
+ XML_GetSpecifiedAttributeCount = _XML_GetSpecifiedAttributeCount
+ XML_Parse = _XML_Parse
+ XML_ParseBuffer = _XML_ParseBuffer
+ XML_ParserCreate = _XML_ParserCreate
+ XML_ParserCreateNS = _XML_ParserCreateNS
+ XML_ParserCreate_MM = _XML_ParserCreate_MM
+ XML_ParserFree = _XML_ParserFree
+ XML_SetAttlistDeclHandler = _XML_SetAttlistDeclHandler
+ XML_SetBase = _XML_SetBase
+ XML_SetCdataSectionHandler = _XML_SetCdataSectionHandler
+ XML_SetCharacterDataHandler = _XML_SetCharacterDataHandler
+ XML_SetCommentHandler = _XML_SetCommentHandler
+ XML_SetDefaultHandler = _XML_SetDefaultHandler
+ XML_SetDefaultHandlerExpand = _XML_SetDefaultHandlerExpand
+ XML_SetDoctypeDeclHandler = _XML_SetDoctypeDeclHandler
+ XML_SetElementDeclHandler = _XML_SetElementDeclHandler
+ XML_SetElementHandler = _XML_SetElementHandler
+ XML_SetEncoding = _XML_SetEncoding
+ XML_SetEndCdataSectionHandler = _XML_SetEndCdataSectionHandler
+ XML_SetEndDoctypeDeclHandler = _XML_SetEndDoctypeDeclHandler
+ XML_SetEndElementHandler = _XML_SetEndElementHandler
+ XML_SetEndNamespaceDeclHandler = _XML_SetEndNamespaceDeclHandler
+ XML_SetEntityDeclHandler = _XML_SetEntityDeclHandler
+ XML_SetExternalEntityRefHandler = _XML_SetExternalEntityRefHandler
+ XML_SetExternalEntityRefHandlerArg = _XML_SetExternalEntityRefHandlerArg
+ XML_SetNamespaceDeclHandler = _XML_SetNamespaceDeclHandler
+ XML_SetNotStandaloneHandler = _XML_SetNotStandaloneHandler
+ XML_SetNotationDeclHandler = _XML_SetNotationDeclHandler
+ XML_SetParamEntityParsing = _XML_SetParamEntityParsing
+ XML_SetProcessingInstructionHandler = _XML_SetProcessingInstructionHandler
+ XML_SetReturnNSTriplet = _XML_SetReturnNSTriplet
+ XML_SetStartCdataSectionHandler = _XML_SetStartCdataSectionHandler
+ XML_SetStartDoctypeDeclHandler = _XML_SetStartDoctypeDeclHandler
+ XML_SetStartElementHandler = _XML_SetStartElementHandler
+ XML_SetStartNamespaceDeclHandler = _XML_SetStartNamespaceDeclHandler
+ XML_SetUnknownEncodingHandler = _XML_SetUnknownEncodingHandler
+ XML_SetUnparsedEntityDeclHandler = _XML_SetUnparsedEntityDeclHandler
+ XML_SetUserData = _XML_SetUserData
+ XML_SetXmlDeclHandler = _XML_SetXmlDeclHandler
+ XML_UseParserAsHandlerArg = _XML_UseParserAsHandlerArg
+ XML_ParserReset = _XML_ParserReset
+ XML_SetSkippedEntityHandler = _XML_SetSkippedEntityHandler
+ XML_GetFeatureList = _XML_GetFeatureList
+ XML_UseForeignDTD = _XML_UseForeignDTD
+ XML_FreeContentModel = _XML_FreeContentModel
+ XML_MemMalloc = _XML_MemMalloc
+ XML_MemRealloc = _XML_MemRealloc
+ XML_MemFree = _XML_MemFree
+ XML_StopParser = _XML_StopParser
+ XML_ResumeParser = _XML_ResumeParser
+ XML_GetParsingStatus = _XML_GetParsingStatus
+

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/libexpatw_mtd.def
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/libexpatw_mtd.def 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,140 @@
+; DEF file for BCB5
+LIBRARY LIBEXPATW_MTD
+DESCRIPTION "Implements an XML parser."
+EXPORTS
+ _XML_DefaultCurrent @1
+ _XML_ErrorString @2
+ _XML_ExpatVersion @3
+ _XML_ExpatVersionInfo @4
+ _XML_ExternalEntityParserCreate @5
+ _XML_GetBase @6
+ _XML_GetBuffer @7
+ _XML_GetCurrentByteCount @8
+ _XML_GetCurrentByteIndex @9
+ _XML_GetCurrentColumnNumber @10
+ _XML_GetCurrentLineNumber @11
+ _XML_GetErrorCode @12
+ _XML_GetIdAttributeIndex @13
+ _XML_GetInputContext @14
+ _XML_GetSpecifiedAttributeCount @15
+ _XML_Parse @16
+ _XML_ParseBuffer @17
+ _XML_ParserCreate @18
+ _XML_ParserCreateNS @19
+ _XML_ParserCreate_MM @20
+ _XML_ParserFree @21
+ _XML_SetAttlistDeclHandler @22
+ _XML_SetBase @23
+ _XML_SetCdataSectionHandler @24
+ _XML_SetCharacterDataHandler @25
+ _XML_SetCommentHandler @26
+ _XML_SetDefaultHandler @27
+ _XML_SetDefaultHandlerExpand @28
+ _XML_SetDoctypeDeclHandler @29
+ _XML_SetElementDeclHandler @30
+ _XML_SetElementHandler @31
+ _XML_SetEncoding @32
+ _XML_SetEndCdataSectionHandler @33
+ _XML_SetEndDoctypeDeclHandler @34
+ _XML_SetEndElementHandler @35
+ _XML_SetEndNamespaceDeclHandler @36
+ _XML_SetEntityDeclHandler @37
+ _XML_SetExternalEntityRefHandler @38
+ _XML_SetExternalEntityRefHandlerArg @39
+ _XML_SetNamespaceDeclHandler @40
+ _XML_SetNotStandaloneHandler @41
+ _XML_SetNotationDeclHandler @42
+ _XML_SetParamEntityParsing @43
+ _XML_SetProcessingInstructionHandler @44
+ _XML_SetReturnNSTriplet @45
+ _XML_SetStartCdataSectionHandler @46
+ _XML_SetStartDoctypeDeclHandler @47
+ _XML_SetStartElementHandler @48
+ _XML_SetStartNamespaceDeclHandler @49
+ _XML_SetUnknownEncodingHandler @50
+ _XML_SetUnparsedEntityDeclHandler @51
+ _XML_SetUserData @52
+ _XML_SetXmlDeclHandler @53
+ _XML_UseParserAsHandlerArg @54
+; added with version 1.95.3
+ _XML_ParserReset @55
+ _XML_SetSkippedEntityHandler @56
+; added with version 1.95.5
+ _XML_GetFeatureList @57
+ _XML_UseForeignDTD @58
+; added with version 1.95.6
+ _XML_FreeContentModel @59
+ _XML_MemMalloc @60
+ _XML_MemRealloc @61
+ _XML_MemFree @62
+; added with version 1.95.8
+ _XML_StopParser @63
+ _XML_ResumeParser @64
+ _XML_GetParsingStatus @65
+
+; Aliases for MS compatible names
+ XML_DefaultCurrent = _XML_DefaultCurrent
+ XML_ErrorString = _XML_ErrorString
+ XML_ExpatVersion = _XML_ExpatVersion
+ XML_ExpatVersionInfo = _XML_ExpatVersionInfo
+ XML_ExternalEntityParserCreate = _XML_ExternalEntityParserCreate
+ XML_GetBase = _XML_GetBase
+ XML_GetBuffer = _XML_GetBuffer
+ XML_GetCurrentByteCount = _XML_GetCurrentByteCount
+ XML_GetCurrentByteIndex = _XML_GetCurrentByteIndex
+ XML_GetCurrentColumnNumber = _XML_GetCurrentColumnNumber
+ XML_GetCurrentLineNumber = _XML_GetCurrentLineNumber
+ XML_GetErrorCode = _XML_GetErrorCode
+ XML_GetIdAttributeIndex = _XML_GetIdAttributeIndex
+ XML_GetInputContext = _XML_GetInputContext
+ XML_GetSpecifiedAttributeCount = _XML_GetSpecifiedAttributeCount
+ XML_Parse = _XML_Parse
+ XML_ParseBuffer = _XML_ParseBuffer
+ XML_ParserCreate = _XML_ParserCreate
+ XML_ParserCreateNS = _XML_ParserCreateNS
+ XML_ParserCreate_MM = _XML_ParserCreate_MM
+ XML_ParserFree = _XML_ParserFree
+ XML_SetAttlistDeclHandler = _XML_SetAttlistDeclHandler
+ XML_SetBase = _XML_SetBase
+ XML_SetCdataSectionHandler = _XML_SetCdataSectionHandler
+ XML_SetCharacterDataHandler = _XML_SetCharacterDataHandler
+ XML_SetCommentHandler = _XML_SetCommentHandler
+ XML_SetDefaultHandler = _XML_SetDefaultHandler
+ XML_SetDefaultHandlerExpand = _XML_SetDefaultHandlerExpand
+ XML_SetDoctypeDeclHandler = _XML_SetDoctypeDeclHandler
+ XML_SetElementDeclHandler = _XML_SetElementDeclHandler
+ XML_SetElementHandler = _XML_SetElementHandler
+ XML_SetEncoding = _XML_SetEncoding
+ XML_SetEndCdataSectionHandler = _XML_SetEndCdataSectionHandler
+ XML_SetEndDoctypeDeclHandler = _XML_SetEndDoctypeDeclHandler
+ XML_SetEndElementHandler = _XML_SetEndElementHandler
+ XML_SetEndNamespaceDeclHandler = _XML_SetEndNamespaceDeclHandler
+ XML_SetEntityDeclHandler = _XML_SetEntityDeclHandler
+ XML_SetExternalEntityRefHandler = _XML_SetExternalEntityRefHandler
+ XML_SetExternalEntityRefHandlerArg = _XML_SetExternalEntityRefHandlerArg
+ XML_SetNamespaceDeclHandler = _XML_SetNamespaceDeclHandler
+ XML_SetNotStandaloneHandler = _XML_SetNotStandaloneHandler
+ XML_SetNotationDeclHandler = _XML_SetNotationDeclHandler
+ XML_SetParamEntityParsing = _XML_SetParamEntityParsing
+ XML_SetProcessingInstructionHandler = _XML_SetProcessingInstructionHandler
+ XML_SetReturnNSTriplet = _XML_SetReturnNSTriplet
+ XML_SetStartCdataSectionHandler = _XML_SetStartCdataSectionHandler
+ XML_SetStartDoctypeDeclHandler = _XML_SetStartDoctypeDeclHandler
+ XML_SetStartElementHandler = _XML_SetStartElementHandler
+ XML_SetStartNamespaceDeclHandler = _XML_SetStartNamespaceDeclHandler
+ XML_SetUnknownEncodingHandler = _XML_SetUnknownEncodingHandler
+ XML_SetUnparsedEntityDeclHandler = _XML_SetUnparsedEntityDeclHandler
+ XML_SetUserData = _XML_SetUserData
+ XML_SetXmlDeclHandler = _XML_SetXmlDeclHandler
+ XML_UseParserAsHandlerArg = _XML_UseParserAsHandlerArg
+ XML_ParserReset = _XML_ParserReset
+ XML_SetSkippedEntityHandler = _XML_SetSkippedEntityHandler
+ XML_GetFeatureList = _XML_GetFeatureList
+ XML_UseForeignDTD = _XML_UseForeignDTD
+ XML_FreeContentModel = _XML_FreeContentModel
+ XML_MemMalloc = _XML_MemMalloc
+ XML_MemRealloc = _XML_MemRealloc
+ XML_MemFree = _XML_MemFree
+ XML_StopParser = _XML_StopParser
+ XML_ResumeParser = _XML_ResumeParser
+ XML_GetParsingStatus = _XML_GetParsingStatus

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/makefile.mak
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/makefile.mak 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,37 @@
+all: setup expat expatw expat_static expatw_static elements outline xmlwf
+
+setup:
+ setup
+
+expat:
+ make -l -fexpat.mak
+
+expatw:
+ make -l -fexpatw.mak
+
+expat_static:
+ make -l -fexpat_static.mak
+
+expatw_static:
+ make -l -fexpatw_static.mak
+
+elements:
+ make -l -felements.mak
+
+outline:
+ make -l -foutline.mak
+
+xmlwf:
+ make -l -fxmlwf.mak
+
+clean:
+# works on Win98/ME
+# deltree /y release\obj
+# works on WinNT/2000
+ del /s/f/q release\obj
+
+distclean:
+# works on Win98/ME
+# deltree /y release\*.*
+# works on WinNT/2000
+ del /s/f/q release\*

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/outline.bpf
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/outline.bpf 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,4 @@
+USEUNIT("..\examples\outline.c");
+USELIB("Release\libexpat_mtd.lib");
+//---------------------------------------------------------------------------
+main

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/outline.bpr
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/outline.bpr 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,132 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!-- C++Builder XML Project -->
+<PROJECT>
+ <MACROS>
+ <VERSION value="BCB.05.03"/>
+ <PROJECT value="Release\outline.exe"/>
+ <OBJFILES value="Release\obj\examples\outline.obj"/>
+ <RESFILES value=""/>
+ <IDLFILES value=""/>
+ <IDLGENFILES value=""/>
+ <DEFFILE value=""/>
+ <RESDEPEN value="$(RESFILES)"/>
+ <LIBFILES value="Release\libexpat_mtd.lib"/>
+ <LIBRARIES value=""/>
+ <SPARELIBS value=""/>
+ <PACKAGES value="VCL50.bpi VCLX50.bpi bcbsmp50.bpi QRPT50.bpi VCLDB50.bpi VCLBDE50.bpi
+ ibsmp50.bpi VCLDBX50.bpi TEEUI50.bpi TEEDB50.bpi TEE50.bpi TEEQR50.bpi
+ VCLIB50.bpi bcbie50.bpi VCLIE50.bpi INETDB50.bpi INET50.bpi NMFAST50.bpi
+ dclocx50.bpi bcb2kaxserver50.bpi dclusr50.bpi"/>
+ <PATHCPP value=".;..\examples"/>
+ <PATHPAS value=".;"/>
+ <PATHRC value=".;"/>
+ <PATHASM value=".;"/>
+ <DEBUGLIBPATH value="$(BCB)\lib\debug"/>
+ <RELEASELIBPATH value="$(BCB)\lib\release"/>
+ <LINKER value="ilink32"/>
+ <USERDEFINES value="WIN32;NDEBUG;_CONSOLE"/>
+ <SYSDEFINES value="_NO_VCL;_ASSERTE;NO_STRICT;_RTLDLL"/>
+ <MAINSOURCE value="outline.bpf"/>
+ <INCLUDEPATH value="..\examples;$(BCB)\include"/>
+ <LIBPATH value="..\examples;$(BCB)\lib;$(RELEASELIBPATH)"/>
+ <WARNINGS value="-w-par -w-8027 -w-8026"/>
+ </MACROS>
+ <OPTIONS>
+ <IDLCFLAGS value="-I$(BCB)\include"/>
+ <CFLAG1 value="-O2 -X- -a8 -b -k- -vi -q -tWM -I..\lib -c"/>
+ <PFLAGS value="-N2Release\obj\examples -N0Release\obj\examples -$Y- -$L- -$D-"/>
+ <RFLAGS value="/l 0x409 /d &quot;NDEBUG&quot; /i$(BCB)\include"/>
+ <AFLAGS value="/mx /w2 /zn"/>
+ <LFLAGS value="-IRelease\obj\examples -D&quot;&quot; -ap -Tpe -x -Gn -q"/>
+ </OPTIONS>
+ <LINKER>
+ <ALLOBJ value="c0x32.obj $(OBJFILES)"/>
+ <ALLRES value="$(RESFILES)"/>
+ <ALLLIB value="$(LIBFILES) $(LIBRARIES) import32.lib cw32mti.lib"/>
+ </LINKER>
+ <IDEOPTIONS>
+[Version Info]
+IncludeVerInfo=0
+AutoIncBuild=0
+MajorVer=1
+MinorVer=0
+Release=0
+Build=0
+Debug=0
+PreRelease=0
+Special=0
+Private=0
+DLL=0
+Locale=1033
+CodePage=1252
+
+[Version Info Keys]
+CompanyName=
+FileDescription=
+FileVersion=1.0.0.0
+InternalName=
+LegalCopyright=
+LegalTrademarks=
+OriginalFilename=
+ProductName=
+ProductVersion=1.0.0.0
+Comments=
+
+[HistoryLists\hlIncludePath]
+Count=3
+Item0=..\examples;$(BCB)\include
+Item1=$(BCB)\include
+Item2=$(BCB)\include;$(BCB)\include\mfc;$(BCB)\include\atl;
+
+[HistoryLists\hlLibraryPath]
+Count=4
+Item0=..\examples;$(BCB)\lib;$(RELEASELIBPATH)
+Item1=..\examples;$(BCB)\lib;..\examples\$(RELEASELIBPATH)
+Item2=$(BCB)\lib;$(RELEASELIBPATH)
+Item3=$(BCB)\lib;$(RELEASELIBPATH);;$(BCB)\lib\psdk;
+
+[HistoryLists\hlDebugSourcePath]
+Count=1
+Item0=$(BCB)\source\vcl
+
+[HistoryLists\hlConditionals]
+Count=6
+Item0=WIN32;NDEBUG;_CONSOLE
+Item1=WIN32;NDEBUG;_CONSOLE;XML_STATIC
+Item2=WIN32;NDEBUG;_CONSOLE;_DEBUG;XML_STATIC
+Item3=WIN32;NDEBUG;_CONSOLE;_DEBUG;XML_UNICODE_WCHAR_T;_UNICODE;XML_STATIC
+Item4=WIN32;NDEBUG;_CONSOLE;_DEBUG;XML_UNICODE_WCHAR_T;_UNICODE
+Item5=WIN32;NDEBUG;_CONSOLE;_DEBUG
+
+[HistoryLists\hlIntOutputDir]
+Count=4
+Item0=Release\obj\examples
+Item1=Release\obj\outline
+Item2=..\examples\Release
+Item3=Release
+
+[HistoryLists\hlFinalOutputDir]
+Count=1
+Item0=Release\
+
+[Debugging]
+DebugSourceDirs=
+
+[Parameters]
+RunParams=
+HostApplication=
+RemoteHost=
+RemotePath=
+RemoteDebug=0
+
+[Compiler]
+ShowInfoMsgs=0
+LinkDebugVcl=0
+LinkCGLIB=0
+
+[Language]
+ActiveLang=
+ProjectLang=
+RootDir=
+ </IDEOPTIONS>
+</PROJECT>
\ No newline at end of file

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/outline.mak
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/outline.mak 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,186 @@
+# ---------------------------------------------------------------------------
+!if !$d(BCB)
+BCB = $(MAKEDIR)\..
+!endif
+
+# ---------------------------------------------------------------------------
+# IDE SECTION
+# ---------------------------------------------------------------------------
+# The following section of the project makefile is managed by the BCB IDE.
+# It is recommended to use the IDE to change any of the values in this
+# section.
+# ---------------------------------------------------------------------------
+
+VERSION = BCB.05.03
+# ---------------------------------------------------------------------------
+PROJECT = Release\outline.exe
+OBJFILES = Release\obj\examples\outline.obj
+RESFILES =
+MAINSOURCE = outline.bpf
+RESDEPEN = $(RESFILES)
+LIBFILES = Release\libexpat_mtd.lib
+IDLFILES =
+IDLGENFILES =
+LIBRARIES =
+PACKAGES = VCL50.bpi VCLX50.bpi bcbsmp50.bpi QRPT50.bpi VCLDB50.bpi VCLBDE50.bpi \
+ ibsmp50.bpi VCLDBX50.bpi TEEUI50.bpi TEEDB50.bpi TEE50.bpi TEEQR50.bpi \
+ VCLIB50.bpi bcbie50.bpi VCLIE50.bpi INETDB50.bpi INET50.bpi NMFAST50.bpi \
+ dclocx50.bpi bcb2kaxserver50.bpi dclusr50.bpi
+SPARELIBS =
+DEFFILE =
+# ---------------------------------------------------------------------------
+PATHCPP = .;..\examples
+PATHASM = .;
+PATHPAS = .;
+PATHRC = .;
+DEBUGLIBPATH = $(BCB)\lib\debug
+RELEASELIBPATH = $(BCB)\lib\release
+USERDEFINES = WIN32;NDEBUG;_CONSOLE
+SYSDEFINES = _NO_VCL;_ASSERTE;NO_STRICT;_RTLDLL
+INCLUDEPATH = ..\examples;$(BCB)\include
+LIBPATH = ..\examples;$(BCB)\lib;$(RELEASELIBPATH)
+WARNINGS= -w-par -w-8027 -w-8026
+# ---------------------------------------------------------------------------
+CFLAG1 = -O2 -X- -a8 -b -k- -vi -q -tWM -I..\lib -c
+IDLCFLAGS = -I$(BCB)\include
+PFLAGS = -N2Release\obj\examples -N0Release\obj\examples -$Y- -$L- -$D-
+RFLAGS = /l 0x409 /d "NDEBUG" /i$(BCB)\include
+AFLAGS = /mx /w2 /zn
+LFLAGS = -IRelease\obj\examples -D"" -ap -Tpe -x -Gn -q
+# ---------------------------------------------------------------------------
+ALLOBJ = c0x32.obj $(OBJFILES)
+ALLRES = $(RESFILES)
+ALLLIB = $(LIBFILES) $(LIBRARIES) import32.lib cw32mti.lib
+# ---------------------------------------------------------------------------
+!ifdef IDEOPTIONS
+
+[Version Info]
+IncludeVerInfo=0
+AutoIncBuild=0
+MajorVer=1
+MinorVer=0
+Release=0
+Build=0
+Debug=0
+PreRelease=0
+Special=0
+Private=0
+DLL=0
+
+[Version Info Keys]
+CompanyName=
+FileDescription=
+FileVersion=1.0.0.0
+InternalName=
+LegalCopyright=
+LegalTrademarks=
+OriginalFilename=
+ProductName=
+ProductVersion=1.0.0.0
+Comments=
+
+[Debugging]
+DebugSourceDirs=$(BCB)\source\vcl
+
+!endif
+
+
+
+
+
+# ---------------------------------------------------------------------------
+# MAKE SECTION
+# ---------------------------------------------------------------------------
+# This section of the project file is not used by the BCB IDE. It is for
+# the benefit of building from the command-line using the MAKE utility.
+# ---------------------------------------------------------------------------
+
+.autodepend
+# ---------------------------------------------------------------------------
+!if "$(USERDEFINES)" != ""
+AUSERDEFINES = -d$(USERDEFINES:;= -d)
+!else
+AUSERDEFINES =
+!endif
+
+!if !$d(BCC32)
+BCC32 = bcc32
+!endif
+
+!if !$d(CPP32)
+CPP32 = cpp32
+!endif
+
+!if !$d(DCC32)
+DCC32 = dcc32
+!endif
+
+!if !$d(TASM32)
+TASM32 = tasm32
+!endif
+
+!if !$d(LINKER)
+LINKER = ilink32
+!endif
+
+!if !$d(BRCC32)
+BRCC32 = brcc32
+!endif
+
+
+# ---------------------------------------------------------------------------
+!if $d(PATHCPP)
+.PATH.CPP = $(PATHCPP)
+.PATH.C = $(PATHCPP)
+!endif
+
+!if $d(PATHPAS)
+.PATH.PAS = $(PATHPAS)
+!endif
+
+!if $d(PATHASM)
+.PATH.ASM = $(PATHASM)
+!endif
+
+!if $d(PATHRC)
+.PATH.RC = $(PATHRC)
+!endif
+# ---------------------------------------------------------------------------
+$(PROJECT): $(IDLGENFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE)
+ $(BCB)\BIN\$(LINKER) @&&!
+ $(LFLAGS) -L$(LIBPATH) +
+ $(ALLOBJ), +
+ $(PROJECT),, +
+ $(ALLLIB), +
+ $(DEFFILE), +
+ $(ALLRES)
+!
+# ---------------------------------------------------------------------------
+.pas.hpp:
+ $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< }
+
+.pas.obj:
+ $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< }
+
+.cpp.obj:
+ $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< }
+
+.c.obj:
+ $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< }
+
+.c.i:
+ $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< }
+
+.cpp.i:
+ $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< }
+
+.asm.obj:
+ $(BCB)\BIN\$(TASM32) $(AFLAGS) -i$(INCLUDEPATH:;= -i) $(AUSERDEFINES) -d$(SYSDEFINES:;= -d) $<, $@
+
+.rc.res:
+ $(BCB)\BIN\$(BRCC32) $(RFLAGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -fo$@ $<
+# ---------------------------------------------------------------------------
+
+
+
+

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/setup.bat
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/setup.bat 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,9 @@
+REM CommandInterpreter: $(COMSPEC)
+if not exist .\release\nul mkdir release
+if not exist .\release\obj\nul mkdir release\obj
+if not exist .\release\obj\libexpat\nul mkdir release\obj\libexpat
+if not exist .\release\obj\libexpatw\nul mkdir release\obj\libexpatw
+if not exist .\release\obj\libexpat_static\nul mkdir release\obj\libexpat_static
+if not exist .\release\obj\libexpatw_static\nul mkdir release\obj\libexpatw_static
+if not exist .\release\obj\examples\nul mkdir release\obj\examples
+if not exist .\release\obj\xmlwf\nul mkdir release\obj\xmlwf

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/xmlwf.bpf
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/xmlwf.bpf 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,7 @@
+USEUNIT("..\xmlwf\codepage.c");
+USEUNIT("..\xmlwf\win32filemap.c");
+USEUNIT("..\xmlwf\xmlfile.c");
+USEUNIT("..\xmlwf\xmlwf.c");
+USELIB("Release\libexpat_mtd.lib");
+//---------------------------------------------------------------------------
+main

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/xmlwf.bpr
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/xmlwf.bpr 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,136 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!-- C++Builder XML Project -->
+<PROJECT>
+ <MACROS>
+ <VERSION value="BCB.05.03"/>
+ <PROJECT value="Release\xmlwf.exe"/>
+ <OBJFILES value="Release\obj\xmlwf\codepage.obj Release\obj\xmlwf\win32filemap.obj
+ Release\obj\xmlwf\xmlfile.obj Release\obj\xmlwf\xmlwf.obj"/>
+ <RESFILES value=""/>
+ <IDLFILES value=""/>
+ <IDLGENFILES value=""/>
+ <DEFFILE value=""/>
+ <RESDEPEN value="$(RESFILES)"/>
+ <LIBFILES value="Release\libexpat_mtd.lib"/>
+ <LIBRARIES value=""/>
+ <SPARELIBS value=""/>
+ <PACKAGES value="VCL50.bpi VCLX50.bpi bcbsmp50.bpi QRPT50.bpi VCLDB50.bpi VCLBDE50.bpi
+ ibsmp50.bpi VCLDBX50.bpi TEEUI50.bpi TEEDB50.bpi TEE50.bpi TEEQR50.bpi
+ VCLIB50.bpi bcbie50.bpi VCLIE50.bpi INETDB50.bpi INET50.bpi NMFAST50.bpi
+ dclocx50.bpi bcb2kaxserver50.bpi dclusr50.bpi"/>
+ <PATHCPP value=".;..\xmlwf"/>
+ <PATHPAS value=".;"/>
+ <PATHRC value=".;"/>
+ <PATHASM value=".;"/>
+ <DEBUGLIBPATH value="$(BCB)\lib\debug"/>
+ <RELEASELIBPATH value="$(BCB)\lib\release"/>
+ <LINKER value="ilink32"/>
+ <USERDEFINES value="NDEBUG;WIN32;_CONSOLE;COMPILED_FROM_DSP"/>
+ <SYSDEFINES value="_NO_VCL;_ASSERTE;NO_STRICT;_RTLDLL"/>
+ <MAINSOURCE value="xmlwf.bpf"/>
+ <INCLUDEPATH value="..\xmlwf;$(BCB)\include"/>
+ <LIBPATH value="..\xmlwf;$(BCB)\lib;$(RELEASELIBPATH)"/>
+ <WARNINGS value="-w-8065 -w-par -w-8027 -w-8026"/>
+ </MACROS>
+ <OPTIONS>
+ <IDLCFLAGS value="-I$(BCB)\include"/>
+ <CFLAG1 value="-O2 -X- -a8 -b -k- -vi -q -tWM -I..\lib -c"/>
+ <PFLAGS value="-N2Release\obj\xmlwf -N0Release\obj\xmlwf -$Y- -$L- -$D-"/>
+ <RFLAGS value="/l 0x409 /d &quot;NDEBUG&quot; /i$(BCB)\include"/>
+ <AFLAGS value="/mx /w2 /zn"/>
+ <LFLAGS value="-IRelease\obj\xmlwf -D&quot;&quot; -ap -Tpe -x -Gn -q"/>
+ </OPTIONS>
+ <LINKER>
+ <ALLOBJ value="c0x32.obj $(OBJFILES)"/>
+ <ALLRES value="$(RESFILES)"/>
+ <ALLLIB value="$(LIBFILES) $(LIBRARIES) import32.lib cw32mti.lib"/>
+ </LINKER>
+ <IDEOPTIONS>
+[Version Info]
+IncludeVerInfo=0
+AutoIncBuild=0
+MajorVer=1
+MinorVer=0
+Release=0
+Build=0
+Debug=0
+PreRelease=0
+Special=0
+Private=0
+DLL=0
+Locale=1033
+CodePage=1252
+
+[Version Info Keys]
+CompanyName=
+FileDescription=
+FileVersion=1.0.0.0
+InternalName=
+LegalCopyright=
+LegalTrademarks=
+OriginalFilename=
+ProductName=
+ProductVersion=1.0.0.0
+Comments=
+
+[HistoryLists\hlIncludePath]
+Count=4
+Item0=..\xmlwf;$(BCB)\include
+Item1=$(BCB)\include
+Item2=$(BCB)\include;$(BCB)\include\mfc;$(BCB)\include\atl
+Item3=$(BCB)\include;$(BCB)\include\mfc;$(BCB)\include\atl;
+
+[HistoryLists\hlLibraryPath]
+Count=5
+Item0=..\xmlwf;$(BCB)\lib;$(RELEASELIBPATH)
+Item1=..\xmlwf;$(BCB)\lib;..\xmlwf\$(RELEASELIBPATH)
+Item2=$(BCB)\lib;$(RELEASELIBPATH)
+Item3=$(BCB)\lib;$(RELEASELIBPATH);$(BCB)\lib\psdk
+Item4=$(BCB)\lib;$(RELEASELIBPATH);;$(BCB)\lib\psdk;
+
+[HistoryLists\hlDebugSourcePath]
+Count=1
+Item0=$(BCB)\source\vcl
+
+[HistoryLists\hlConditionals]
+Count=6
+Item0=NDEBUG;WIN32;_CONSOLE;COMPILED_FROM_DSP
+Item1=NDEBUG;WIN32;_CONSOLE;COMPILED_FROM_DSP;_DEBUG;XML_UNICODE_WCHAR_T;_UNICODE
+Item2=NDEBUG;WIN32;_CONSOLE;COMPILED_FROM_DSP;_DEBUG;XML_UNICODE_WCHAR_T
+Item3=NDEBUG;WIN32;_CONSOLE;COMPILED_FROM_DSP;_DEBUG
+Item4=NDEBUG;WIN32;_CONSOLE;COMPILED_FROM_DSP;_DEBUG;_UNICODE;XML_UNICODE_WCHAR_T
+Item5=NDEBUG;WIN32;_CONSOLE;COMPILED_FROM_DSP;_DEBUG;_UNICODE
+
+[HistoryLists\hlIntOutputDir]
+Count=3
+Item0=Release\obj\xmlwf
+Item1=..\xmlwf\Release
+Item2=Release
+
+[HistoryLists\hlFinalOutputDir]
+Count=3
+Item0=Release\
+Item1=Release
+Item2=.\Release\
+
+[Debugging]
+DebugSourceDirs=
+
+[Parameters]
+RunParams=sample.xml
+HostApplication=
+RemoteHost=
+RemotePath=
+RemoteDebug=0
+
+[Compiler]
+ShowInfoMsgs=0
+LinkDebugVcl=0
+LinkCGLIB=0
+
+[Language]
+ActiveLang=
+ProjectLang=
+RootDir=
+ </IDEOPTIONS>
+</PROJECT>
\ No newline at end of file

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/xmlwf.mak
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/bcb5/xmlwf.mak 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,187 @@
+# ---------------------------------------------------------------------------
+!if !$d(BCB)
+BCB = $(MAKEDIR)\..
+!endif
+
+# ---------------------------------------------------------------------------
+# IDE SECTION
+# ---------------------------------------------------------------------------
+# The following section of the project makefile is managed by the BCB IDE.
+# It is recommended to use the IDE to change any of the values in this
+# section.
+# ---------------------------------------------------------------------------
+
+VERSION = BCB.05.03
+# ---------------------------------------------------------------------------
+PROJECT = Release\xmlwf.exe
+OBJFILES = Release\obj\xmlwf\codepage.obj Release\obj\xmlwf\win32filemap.obj \
+ Release\obj\xmlwf\xmlfile.obj Release\obj\xmlwf\xmlwf.obj
+RESFILES =
+MAINSOURCE = xmlwf.bpf
+RESDEPEN = $(RESFILES)
+LIBFILES = Release\libexpat_mtd.lib
+IDLFILES =
+IDLGENFILES =
+LIBRARIES =
+PACKAGES = VCL50.bpi VCLX50.bpi bcbsmp50.bpi QRPT50.bpi VCLDB50.bpi VCLBDE50.bpi \
+ ibsmp50.bpi VCLDBX50.bpi TEEUI50.bpi TEEDB50.bpi TEE50.bpi TEEQR50.bpi \
+ VCLIB50.bpi bcbie50.bpi VCLIE50.bpi INETDB50.bpi INET50.bpi NMFAST50.bpi \
+ dclocx50.bpi bcb2kaxserver50.bpi dclusr50.bpi
+SPARELIBS =
+DEFFILE =
+# ---------------------------------------------------------------------------
+PATHCPP = .;..\xmlwf
+PATHASM = .;
+PATHPAS = .;
+PATHRC = .;
+DEBUGLIBPATH = $(BCB)\lib\debug
+RELEASELIBPATH = $(BCB)\lib\release
+USERDEFINES = NDEBUG;WIN32;_CONSOLE;COMPILED_FROM_DSP
+SYSDEFINES = _NO_VCL;_ASSERTE;NO_STRICT;_RTLDLL
+INCLUDEPATH = ..\xmlwf;$(BCB)\include
+LIBPATH = ..\xmlwf;$(BCB)\lib;$(RELEASELIBPATH)
+WARNINGS= -w-8065 -w-par -w-8027 -w-8026
+# ---------------------------------------------------------------------------
+CFLAG1 = -O2 -X- -a8 -b -k- -vi -q -tWM -I..\lib -c
+IDLCFLAGS = -I$(BCB)\include
+PFLAGS = -N2Release\obj\xmlwf -N0Release\obj\xmlwf -$Y- -$L- -$D-
+RFLAGS = /l 0x409 /d "NDEBUG" /i$(BCB)\include
+AFLAGS = /mx /w2 /zn
+LFLAGS = -IRelease\obj\xmlwf -D"" -ap -Tpe -x -Gn -q
+# ---------------------------------------------------------------------------
+ALLOBJ = c0x32.obj $(OBJFILES)
+ALLRES = $(RESFILES)
+ALLLIB = $(LIBFILES) $(LIBRARIES) import32.lib cw32mti.lib
+# ---------------------------------------------------------------------------
+!ifdef IDEOPTIONS
+
+[Version Info]
+IncludeVerInfo=0
+AutoIncBuild=0
+MajorVer=1
+MinorVer=0
+Release=0
+Build=0
+Debug=0
+PreRelease=0
+Special=0
+Private=0
+DLL=0
+
+[Version Info Keys]
+CompanyName=
+FileDescription=
+FileVersion=1.0.0.0
+InternalName=
+LegalCopyright=
+LegalTrademarks=
+OriginalFilename=
+ProductName=
+ProductVersion=1.0.0.0
+Comments=
+
+[Debugging]
+DebugSourceDirs=$(BCB)\source\vcl
+
+!endif
+
+
+
+
+
+# ---------------------------------------------------------------------------
+# MAKE SECTION
+# ---------------------------------------------------------------------------
+# This section of the project file is not used by the BCB IDE. It is for
+# the benefit of building from the command-line using the MAKE utility.
+# ---------------------------------------------------------------------------
+
+.autodepend
+# ---------------------------------------------------------------------------
+!if "$(USERDEFINES)" != ""
+AUSERDEFINES = -d$(USERDEFINES:;= -d)
+!else
+AUSERDEFINES =
+!endif
+
+!if !$d(BCC32)
+BCC32 = bcc32
+!endif
+
+!if !$d(CPP32)
+CPP32 = cpp32
+!endif
+
+!if !$d(DCC32)
+DCC32 = dcc32
+!endif
+
+!if !$d(TASM32)
+TASM32 = tasm32
+!endif
+
+!if !$d(LINKER)
+LINKER = ilink32
+!endif
+
+!if !$d(BRCC32)
+BRCC32 = brcc32
+!endif
+
+
+# ---------------------------------------------------------------------------
+!if $d(PATHCPP)
+.PATH.CPP = $(PATHCPP)
+.PATH.C = $(PATHCPP)
+!endif
+
+!if $d(PATHPAS)
+.PATH.PAS = $(PATHPAS)
+!endif
+
+!if $d(PATHASM)
+.PATH.ASM = $(PATHASM)
+!endif
+
+!if $d(PATHRC)
+.PATH.RC = $(PATHRC)
+!endif
+# ---------------------------------------------------------------------------
+$(PROJECT): $(IDLGENFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE)
+ $(BCB)\BIN\$(LINKER) @&&!
+ $(LFLAGS) -L$(LIBPATH) +
+ $(ALLOBJ), +
+ $(PROJECT),, +
+ $(ALLLIB), +
+ $(DEFFILE), +
+ $(ALLRES)
+!
+# ---------------------------------------------------------------------------
+.pas.hpp:
+ $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< }
+
+.pas.obj:
+ $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< }
+
+.cpp.obj:
+ $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< }
+
+.c.obj:
+ $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< }
+
+.c.i:
+ $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< }
+
+.cpp.i:
+ $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< }
+
+.asm.obj:
+ $(BCB)\BIN\$(TASM32) $(AFLAGS) -i$(INCLUDEPATH:;= -i) $(AUSERDEFINES) -d$(SYSDEFINES:;= -d) $<, $@
+
+.rc.res:
+ $(BCB)\BIN\$(BRCC32) $(RFLAGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -fo$@ $<
+# ---------------------------------------------------------------------------
+
+
+
+

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/configure
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/configure 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,22015 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.59 for expat 2.0.0.
+#
+# Report bugs to <expat-bugs_at_[hidden]>.
+#
+# 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 <<EOF
+$*
+EOF
+ exit 0
+fi
+
+# 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
+
+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='expat'
+PACKAGE_TARNAME='expat'
+PACKAGE_VERSION='2.0.0'
+PACKAGE_STRING='expat 2.0.0'
+PACKAGE_BUGREPORT='expat-bugs_at_[hidden]'
+
+ac_unique_file="Makefile.in"
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#if HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#if HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#if STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# if HAVE_STDLIB_H
+# include <stdlib.h>
+# endif
+#endif
+#if HAVE_STRING_H
+# if !STDC_HEADERS && HAVE_MEMORY_H
+# include <memory.h>
+# endif
+# include <string.h>
+#endif
+#if HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#if HAVE_INTTYPES_H
+# include <inttypes.h>
+#else
+# if HAVE_STDINT_H
+# include <stdint.h>
+# endif
+#endif
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#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 build build_cpu build_vendor build_os host host_cpu host_vendor host_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT EGREP LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB STRIP ac_ct_STRIP DLLTOOL ac_ct_DLLTOOL AS ac_ct_AS OBJDUMP ac_ct_OBJDUMP CPP CXX CXXFLAGS ac_ct_CXX CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL LIBCURRENT LIBREVISION LIBAGE INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA FILEMAP 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_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_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_CPP_set=${CPP+set}
+ac_env_CPP_value=$CPP
+ac_cv_env_CPP_set=${CPP+set}
+ac_cv_env_CPP_value=$CPP
+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_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 expat 2.0.0 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
+
+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
+ case $ac_init_help in
+ short | recursive ) echo "Configuration of expat 2.0.0:";;
+ esac
+ cat <<\_ACEOF
+
+Optional Features:
+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
+ --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:
+ CC C compiler command
+ CFLAGS C compiler flags
+ LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
+ nonstandard directory <lib dir>
+ CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have
+ headers in a nonstandard directory <include dir>
+ CPP C preprocessor
+ CXX C++ compiler command
+ CXXFLAGS C++ compiler flags
+ 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.
+
+Report bugs to <expat-bugs_at_[hidden]>.
+_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
+expat configure 2.0.0
+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.
+_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 expat $as_me 2.0.0, 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_aux_dir=
+for ac_dir in conftools $srcdir/conftools; 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 conftools $srcdir/conftools" >&5
+echo "$as_me: error: cannot find install-sh or install.sh in conftools $srcdir/conftools" >&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.
+
+
+
+
+LIBCURRENT=6
+LIBREVISION=0
+LIBAGE=5
+
+ ac_config_headers="$ac_config_headers expat_config.h"
+
+
+# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
+## Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005
+## Free Software Foundation, Inc.
+## Originally by Gordon Matzigkeit <gord_at_[hidden]>, 1996
+##
+## 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 48 AC_PROG_LIBTOOL
+
+
+# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED)
+# -----------------------------------------------------------
+# If this macro is not defined by Autoconf, define it here.
+
+
+
+# AC_PROG_LIBTOOL
+# ---------------
+# AC_PROG_LIBTOOL
+
+
+# _AC_PROG_LIBTOOL
+# ----------------
+# _AC_PROG_LIBTOOL
+
+
+# AC_LIBTOOL_SETUP
+# ----------------
+# AC_LIBTOOL_SETUP
+
+
+# _LT_AC_SYS_COMPILER
+# -------------------
+# _LT_AC_SYS_COMPILER
+
+
+# _LT_CC_BASENAME(CC)
+# -------------------
+# Calculate cc_basename. Skip known compiler wrappers and cross-prefix.
+
+
+
+# _LT_COMPILER_BOILERPLATE
+# ------------------------
+# Check for compiler boilerplate output or warnings with
+# the simple compiler test code.
+# _LT_COMPILER_BOILERPLATE
+
+
+# _LT_LINKER_BOILERPLATE
+# ----------------------
+# Check for linker boilerplate output or warnings with
+# the simple link test code.
+# _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.
+# _LT_AC_SYS_LIBPATH_AIX
+
+
+# _LT_AC_SHELL_INIT(ARG)
+# ----------------------
+# _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.
+# _LT_AC_PROG_ECHO_BACKSLASH
+
+
+# _LT_AC_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_LIBTOOL_COMPILER_OPTION
+
+
+# AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+# [ACTION-SUCCESS], [ACTION-FAILURE])
+# ------------------------------------------------------------
+# Check whether the given compiler option works
+# AC_LIBTOOL_LINKER_OPTION
+
+
+# AC_LIBTOOL_SYS_MAX_CMD_LEN
+# --------------------------
+# AC_LIBTOOL_SYS_MAX_CMD_LEN
+
+
+# _LT_AC_CHECK_DLFCN
+# ------------------
+# _LT_AC_CHECK_DLFCN
+
+
+# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
+# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
+# ---------------------------------------------------------------------
+# _LT_AC_TRY_DLOPEN_SELF
+
+
+# AC_LIBTOOL_DLOPEN_SELF
+# ----------------------
+# 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_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_LIBTOOL_SYS_HARD_LINK_LOCKS
+
+
+# AC_LIBTOOL_OBJDIR
+# -----------------
+# AC_LIBTOOL_OBJDIR
+
+
+# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME])
+# ----------------------------------------------
+# Check hardcoding attributes.
+# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH
+
+
+# AC_LIBTOOL_SYS_LIB_STRIP
+# ------------------------
+# AC_LIBTOOL_SYS_LIB_STRIP
+
+
+# AC_LIBTOOL_SYS_DYNAMIC_LINKER
+# -----------------------------
+# PORTME Fill in your ld.so characteristics
+# AC_LIBTOOL_SYS_DYNAMIC_LINKER
+
+
+# _LT_AC_TAGCONFIG
+# ----------------
+# _LT_AC_TAGCONFIG
+
+
+# AC_LIBTOOL_DLOPEN
+# -----------------
+# enable checks for dlopen support
+# AC_LIBTOOL_DLOPEN
+
+
+# AC_LIBTOOL_WIN32_DLL
+# --------------------
+# declare package support for building win32 DLLs
+# 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_ENABLE_SHARED
+
+
+# AC_DISABLE_SHARED
+# -----------------
+# set the default shared flag to --disable-shared
+# 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_ENABLE_STATIC
+
+
+# AC_DISABLE_STATIC
+# -----------------
+# set the default static flag to --disable-static
+# 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_ENABLE_FAST_INSTALL
+
+
+# AC_DISABLE_FAST_INSTALL
+# -----------------------
+# set the default to --disable-fast-install
+# 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_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.
+
+
+
+# AC_PATH_TOOL_PREFIX
+# -------------------
+# find a file program which can recognise shared library
+# AC_PATH_TOOL_PREFIX
+
+
+# AC_PATH_MAGIC
+# -------------
+# find a file program which can recognise a shared library
+# AC_PATH_MAGIC
+
+
+# AC_PROG_LD
+# ----------
+# find the pathname to the GNU or non-GNU linker
+# AC_PROG_LD
+
+
+# AC_PROG_LD_GNU
+# --------------
+# AC_PROG_LD_GNU
+
+
+# AC_PROG_LD_RELOAD_FLAG
+# ----------------------
+# find reload flag for linker
+# -- PORTME Some linkers may need a different reload flag.
+# AC_PROG_LD_RELOAD_FLAG
+
+
+# AC_DEPLIBS_CHECK_METHOD
+# -----------------------
+# how to check for library dependencies
+# -- PORTME fill in with the dynamic library characteristics
+# AC_DEPLIBS_CHECK_METHOD
+
+
+# AC_PROG_NM
+# ----------
+# find the pathname to a BSD-compatible name lister
+# AC_PROG_NM
+
+
+# AC_CHECK_LIBM
+# -------------
+# check for math library
+# 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_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_LIBLTDL_INSTALLABLE
+
+
+# AC_LIBTOOL_CXX
+# --------------
+# enable support for C++ libraries
+# AC_LIBTOOL_CXX
+
+
+# _LT_AC_LANG_CXX
+# ---------------
+# _LT_AC_LANG_CXX
+
+# _LT_AC_PROG_CXXCPP
+# ------------------
+# _LT_AC_PROG_CXXCPP
+
+# AC_LIBTOOL_F77
+# --------------
+# enable support for Fortran 77 libraries
+# AC_LIBTOOL_F77
+
+
+# _LT_AC_LANG_F77
+# ---------------
+# _LT_AC_LANG_F77
+
+
+# AC_LIBTOOL_GCJ
+# --------------
+# enable support for GCJ libraries
+# AC_LIBTOOL_GCJ
+
+
+# _LT_AC_LANG_GCJ
+# ---------------
+# _LT_AC_LANG_GCJ
+
+
+# AC_LIBTOOL_RC
+# -------------
+# enable support for Windows resource files
+# 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_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_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_LIBTOOL_POSTDEP_PREDEP
+
+# AC_LIBTOOL_LANG_F77_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_LIBTOOL_LANG_F77_CONFIG
+
+
+# AC_LIBTOOL_LANG_GCJ_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_LIBTOOL_LANG_GCJ_CONFIG
+
+
+# AC_LIBTOOL_LANG_RC_CONFIG
+# -------------------------
+# Ensure that the configuration vars for the Windows resource compiler are
+# suitably defined. Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+
+# AC_LIBTOOL_LANG_RC_CONFIG
+
+
+# AC_LIBTOOL_CONFIG([TAGNAME])
+# ----------------------------
+# If TAGNAME is not passed, then create an initial libtool script
+# with a default configuration from the untagged config vars. Otherwise
+# add code to config.status for appending the configuration named by
+# TAGNAME from the matching tagged config vars.
+# AC_LIBTOOL_CONFIG
+
+
+# AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME])
+# -------------------------------------------
+# AC_LIBTOOL_PROG_COMPILER_NO_RTTI
+
+
+# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
+# ---------------------------------
+ # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
+
+
+# AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME])
+# ---------------------------------------
+
+
+
+# AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME])
+# ------------------------------------
+# See if the linker supports building shared libraries.
+# AC_LIBTOOL_PROG_LD_SHLIBS
+
+
+# _LT_AC_FILE_LTDLL_C
+# -------------------
+# Be careful that the start marker always follows a newline.
+# _LT_AC_FILE_LTDLL_C
+
+
+# _LT_AC_TAGVAR(VARNAME, [TAGNAME])
+# ---------------------------------
+
+
+
+# old names
+
+
+
+
+
+
+
+
+# This is just to silence aclocal about the macro not being used
+
+
+
+
+
+
+############################################################
+# 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.
+
+
+
+
+
+
+
+# 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 </dev/null >&5\"") >&5
+ (eval $ac_compiler --version </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+ (eval $ac_compiler -v </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+ (eval $ac_compiler -V </dev/null >&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_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 <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* 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 <stdlib.h>
+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=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 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 </dev/null` in
+ *GNU* | *'with BFD'*)
+ test "$with_gnu_ld" != no && break
+ ;;
+ *)
+ test "$with_gnu_ld" != yes && break
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+else
+ lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+ echo "$as_me:$LINENO: result: $LD" >&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 </dev/null` in
+*GNU* | *'with BFD'*)
+ lt_cv_prog_gnu_ld=yes
+ ;;
+*)
+ lt_cv_prog_gnu_ld=no
+ ;;
+esac
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&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='$LTCC $LTCFLAGS -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_nm_to_check="${ac_tool_prefix}nm"
+ if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+ lt_nm_to_check="$lt_nm_to_check nm"
+ fi
+ for lt_tmp_nm in $lt_nm_to_check; do
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ tmp_nm="$ac_dir/$lt_tmp_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"
+ done
+ 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
+ ;;
+
+interix3*)
+ # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
+ ;;
+
+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
+ ;;
+
+solaris*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sysv4 | sysv4.3*)
+ 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
+ ;;
+ pc)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ esac
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | 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"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# 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 3564 "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*
+ ;;
+
+*-*-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
+ ;;
+sparc*-*solaris*)
+ # 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
+ *64-bit*)
+ case $lt_cv_prog_gnu_ld in
+ yes*) LD="${LD-ld} -m elf64_sparc" ;;
+ *) LD="${LD-ld} -64" ;;
+ esac
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+
+*-*-cygwin* | *-*-mingw* | *-*-pw32*)
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dlltool; 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_DLLTOOL+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$DLLTOOL"; then
+ ac_cv_prog_DLLTOOL="$DLLTOOL" # 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_DLLTOOL="${ac_tool_prefix}dlltool"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+DLLTOOL=$ac_cv_prog_DLLTOOL
+if test -n "$DLLTOOL"; then
+ echo "$as_me:$LINENO: result: $DLLTOOL" >&5
+echo "${ECHO_T}$DLLTOOL" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_DLLTOOL"; then
+ ac_ct_DLLTOOL=$DLLTOOL
+ # Extract the first word of "dlltool", so it can be a program name with args.
+set dummy dlltool; 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_DLLTOOL+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_DLLTOOL"; then
+ ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # 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_DLLTOOL="dlltool"
+ 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_DLLTOOL" && ac_cv_prog_ac_ct_DLLTOOL="false"
+fi
+fi
+ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
+if test -n "$ac_ct_DLLTOOL"; then
+ echo "$as_me:$LINENO: result: $ac_ct_DLLTOOL" >&5
+echo "${ECHO_T}$ac_ct_DLLTOOL" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ DLLTOOL=$ac_ct_DLLTOOL
+else
+ DLLTOOL="$ac_cv_prog_DLLTOOL"
+fi
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args.
+set dummy ${ac_tool_prefix}as; 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_AS+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$AS"; then
+ ac_cv_prog_AS="$AS" # 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_AS="${ac_tool_prefix}as"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+AS=$ac_cv_prog_AS
+if test -n "$AS"; then
+ echo "$as_me:$LINENO: result: $AS" >&5
+echo "${ECHO_T}$AS" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_AS"; then
+ ac_ct_AS=$AS
+ # Extract the first word of "as", so it can be a program name with args.
+set dummy as; 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_AS+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_AS"; then
+ ac_cv_prog_ac_ct_AS="$ac_ct_AS" # 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_AS="as"
+ 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_AS" && ac_cv_prog_ac_ct_AS="false"
+fi
+fi
+ac_ct_AS=$ac_cv_prog_ac_ct_AS
+if test -n "$ac_ct_AS"; then
+ echo "$as_me:$LINENO: result: $ac_ct_AS" >&5
+echo "${ECHO_T}$ac_ct_AS" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ AS=$ac_ct_AS
+else
+ AS="$ac_cv_prog_AS"
+fi
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
+set dummy ${ac_tool_prefix}objdump; 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_OBJDUMP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$OBJDUMP"; then
+ ac_cv_prog_OBJDUMP="$OBJDUMP" # 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_OBJDUMP="${ac_tool_prefix}objdump"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+OBJDUMP=$ac_cv_prog_OBJDUMP
+if test -n "$OBJDUMP"; then
+ echo "$as_me:$LINENO: result: $OBJDUMP" >&5
+echo "${ECHO_T}$OBJDUMP" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_OBJDUMP"; then
+ ac_ct_OBJDUMP=$OBJDUMP
+ # Extract the first word of "objdump", so it can be a program name with args.
+set dummy objdump; 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_OBJDUMP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_OBJDUMP"; then
+ ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # 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_OBJDUMP="objdump"
+ 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_OBJDUMP" && ac_cv_prog_ac_ct_OBJDUMP="false"
+fi
+fi
+ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
+if test -n "$ac_ct_OBJDUMP"; then
+ echo "$as_me:$LINENO: result: $ac_ct_OBJDUMP" >&5
+echo "${ECHO_T}$ac_ct_OBJDUMP" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ OBJDUMP=$ac_ct_OBJDUMP
+else
+ OBJDUMP="$ac_cv_prog_OBJDUMP"
+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 <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> 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 <limits.h>
+#else
+# include <assert.h>
+#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 <ac_nonexistent.h>
+_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 <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> 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 <limits.h>
+#else
+# include <assert.h>
+#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 <ac_nonexistent.h>
+_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 <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.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_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 <string.h>
+
+_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 <stdlib.h>
+
+_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 <ctype.h>
+#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 expat-bugs_at_[hidden] ##
+## -------------------------------------- ##
+_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
+
+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 </dev/null >&5\"") >&5
+ (eval $ac_compiler --version </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+ (eval $ac_compiler -v </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+ (eval $ac_compiler -V </dev/null >&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_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 <stdlib.h>
+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
+
+
+
+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 <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> 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 <limits.h>
+#else
+# include <assert.h>
+#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 <ac_nonexistent.h>
+_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 <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> 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 <limits.h>
+#else
+# include <assert.h>
+#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 <ac_nonexistent.h>
+_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:5296:" \
+ "checking for Fortran 77 compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+ (eval $ac_compiler --version </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+ (eval $ac_compiler -v </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+ (eval $ac_compiler -V </dev/null >&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=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
+
+
+
+# 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`
+ ;;
+
+ interix*)
+ # We know the value 262144 and hardcode it with a safety zone (like BSD)
+ lt_cv_sys_max_cmd_len=196608
+ ;;
+
+ 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
+ ;;
+ sco3.2v5*)
+ lt_cv_sys_max_cmd_len=102400
+ ;;
+ sysv5* | sco5v6* | sysv4.2uw2*)
+ kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+ if test -n "$kargmax"; then
+ lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'`
+ else
+ lt_cv_sys_max_cmd_len=32768
+ 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*)
+ symcode='[BDRT]'
+ ;;
+sco3.2v5*)
+ symcode='[DT]'
+ ;;
+sysv4.2uw2*)
+ symcode='[DT]'
+ ;;
+sysv5* | sco5v6* | unixware* | OpenUNIX*)
+ symcode='[ABDT]'
+ ;;
+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 <<EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+EOF
+
+ 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
+ # 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 <<EOF > 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 <<EOF >> 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 "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+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="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+ ;;
+ *)
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
+ ;;
+ 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 <<EOF 1>&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_at_[hidden]
+
+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 <<EOF 1>&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_at_[hidden]
+
+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=yes
+
+# 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
+
+# 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"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# 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; /^ *+/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; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$rm conftest*
+
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+
+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:6363: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:6367: \$? = $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 -e '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || 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'
+ ;;
+
+ interix3*)
+ # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+ # Instead, we relocate shared libraries at runtime.
+ ;;
+
+ 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'
+ ;;
+
+ 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*)
+ 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
+ ;;
+
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ 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:6631: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:6635: \$? = $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 -e '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || 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
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
+echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag 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_tmp_static_flag"
+ 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 -e '/^$/d' > conftest.exp
+ $SED '/^$/d; /^ *+/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
+
+
+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:6735: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:6739: \$? = $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 -e '/^$/d' > out/conftest.exp
+ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.er2 || 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
+ ;;
+ interix*)
+ # we just hope/assume this is gcc and not c89 (= MSVC++)
+ with_gnu_ld=yes
+ ;;
+ 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 <<EOF 1>&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 <kc5tja_at_[hidden]> 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 <jrb3_at_[hidden]> 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}--enable-auto-image-base -Xlinker --out-implib -Xlinker $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}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ interix3*)
+ hardcode_direct=no
+ hardcode_shlibpath_var=no
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec='${wl}-E'
+ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+ # Instead, shared libraries are loaded at an image base (0x10000000 by
+ # default) and relocated if they conflict, which is a slow very memory
+ # consuming and fragmenting process. To avoid this, we pick a random,
+ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+ # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ ;;
+
+ 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*)
+ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+ ld_shlibs=no
+ cat <<EOF 1>&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
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+ case `$LD -v 2>&1` in
+ *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+ ld_shlibs=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+ ;;
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ esac
+ ;;
+
+ 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 "$lt_prog_compiler_static"; 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 '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${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 '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_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'
+ # Exported symbols can be pulled into shared objects from archives
+ whole_archive_flag_spec='$convenience'
+ 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 ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${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*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ if test "$with_gnu_ld" = no; then
+ 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
+ fi
+ ;;
+
+ hpux11*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ case $host_cpu in
+ hppa*64*)
+ archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -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*)
+ archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ fi
+ if test "$with_gnu_ld" = no; then
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
+ hardcode_libdir_flag_spec_ld='+b $libdir'
+ hardcode_direct=no
+ hardcode_shlibpath_var=no
+ ;;
+ *)
+ 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=:
+ ;;
+
+ 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*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*)
+ no_undefined_flag='${wl}-z,text'
+ archive_cmds_need_lc=no
+ hardcode_shlibpath_var=no
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6*)
+ # Note: We can NOT use -z defs as we might desire, because we do not
+ # link with -lc, and that would cause any symbols used from libc to
+ # always be unresolved, which means just about no library would
+ # ever link correctly. If we're not using GNU ld we use -z text
+ # though, which does catch some bad symbols but isn't as heavy-handed
+ # as -z defs.
+ no_undefined_flag='${wl}-z,text'
+ allow_undefined_flag='${wl}-z,nodefs'
+ archive_cmds_need_lc=no
+ hardcode_shlibpath_var=no
+ hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+ hardcode_libdir_separator=':'
+ link_all_deplibs=yes
+ export_dynamic_flag_spec='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ archive_cmds='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ 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
+
+#
+# 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
+ pic_flag=$lt_prog_compiler_pic
+ 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<name>.so
+ # instead of lib<name>.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
+ ;;
+
+ *)
+ 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
+ version_type=freebsd-$objformat
+ 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
+ ;;
+ 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
+ ;;
+ freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+ freebsd*) # from 4.6 on
+ shlibpath_overrides_runpath=yes
+ 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'
+ ;;
+
+interix3*)
+ 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'
+ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+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
+
+ # 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'
+ ;;
+
+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
+ sys_lib_dlsearch_path_spec="/usr/lib"
+ 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"
+ ;;
+
+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.3*)
+ 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
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ version_type=freebsd-elf
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ if test "$with_gnu_ld" = yes; then
+ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+ shlibpath_overrides_runpath=no
+ else
+ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+ shlibpath_overrides_runpath=yes
+ case $host_os in
+ sco3.2v5*)
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+ ;;
+ esac
+ fi
+ sys_lib_dlsearch_path_spec='/usr/lib'
+ ;;
+
+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
+
+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
+
+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 <limits.h> declares shl_load.
+ For example, HP-UX 11i <limits.h> 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 <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#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 <limits.h> declares dlopen.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define dlopen innocuous_dlopen
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char dlopen (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#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"
+ wl=$lt_prog_compiler_wl 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 <<EOF
+#line 9080 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#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); */
+ }
+ else
+ puts (dlerror ());
+
+ 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_dlunknown|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
+ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+ 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 <<EOF
+#line 9180 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#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); */
+ }
+ else
+ puts (dlerror ());
+
+ 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_dlunknown|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 library types will 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 LTCFLAGS 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 <gord_at_[hidden]>, 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
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_LTCFLAGS
+
+# 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=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
+
+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
+ if test -z "$LTCFLAGS"; then
+ eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`"
+ 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_shlibpath_var_CXX=unsupported
+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"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# 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; /^ *+/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; /^ *+/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
+ $as_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
+ $as_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 </dev/null` in
+ *GNU* | *'with BFD'*)
+ test "$with_gnu_ld" != no && break
+ ;;
+ *)
+ test "$with_gnu_ld" != yes && break
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+else
+ lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+ echo "$as_me:$LINENO: result: $LD" >&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 </dev/null` in
+*GNU* | *'with BFD'*)
+ lt_cv_prog_gnu_ld=yes
+ ;;
+*)
+ lt_cv_prog_gnu_ld=no
+ ;;
+esac
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&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 '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${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 '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_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'
+ # Exported symbols can be pulled into shared objects from archives
+ whole_archive_flag_spec_CXX='$convenience'
+ 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 ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ allow_undefined_flag_CXX=unsupported
+ # Joseph Beckenbach <jrb3_at_[hidden]> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ ld_shlibs_CXX=no
+ 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}--enable-auto-image-base -Xlinker --out-implib -Xlinker $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}--enable-auto-image-base -Xlinker --out-implib -Xlinker $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
+ hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_CXX=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
+ hardcode_libdir_flag_spec_ld_CXX='+b $libdir'
+ ;;
+ *)
+ export_dynamic_flag_spec_CXX='${wl}-E'
+ ;;
+ esac
+ fi
+ case $host_cpu in
+ hppa*64*|ia64*)
+ hardcode_direct_CXX=no
+ hardcode_shlibpath_var_CXX=no
+ ;;
+ *)
+ 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*)
+ archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ *)
+ 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
+ hppa*64*)
+ archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ *)
+ 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
+ ;;
+ interix3*)
+ hardcode_direct_CXX=no
+ hardcode_shlibpath_var_CXX=no
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec_CXX='${wl}-E'
+ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+ # Instead, shared libraries are loaded at an image base (0x10000000 by
+ # default) and relocated if they conflict, which is a slow very memory
+ # consuming and fragmenting process. To avoid this, we pick a random,
+ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+ # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+ archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ ;;
+ 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
+ ;;
+ 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
+ ;;
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+ no_undefined_flag_CXX='${wl}-z,text'
+ archive_cmds_need_lc_CXX=no
+ hardcode_shlibpath_var_CXX=no
+ runpath_var='LD_RUN_PATH'
+
+ case $cc_basename in
+ CC*)
+ archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ ;;
+ sysv5* | sco3.2v5* | sco5v6*)
+ # Note: We can NOT use -z defs as we might desire, because we do not
+ # link with -lc, and that would cause any symbols used from libc to
+ # always be unresolved, which means just about no library would
+ # ever link correctly. If we're not using GNU ld we use -z text
+ # though, which does catch some bad symbols but isn't as heavy-handed
+ # as -z defs.
+ # For security reasons, it is highly recommended that you always
+ # use absolute paths for naming shared libraries, and exclude the
+ # DT_RUNPATH tag from executables and libraries. But doing so
+ # requires that you compile everything twice, which is a pain.
+ # So that behaviour is only enabled if SCOABSPATH is set to a
+ # non-empty value in the environment. Most likely only useful for
+ # creating official distributions of packages.
+ # This is a hack until libtool officially supports absolute path
+ # names for shared libraries.
+ no_undefined_flag_CXX='${wl}-z,text'
+ allow_undefined_flag_CXX='${wl}-z,nodefs'
+ archive_cmds_need_lc_CXX=no
+ hardcode_shlibpath_var_CXX=no
+ hardcode_libdir_flag_spec_CXX='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+ hardcode_libdir_separator_CXX=':'
+ link_all_deplibs_CXX=yes
+ export_dynamic_flag_spec_CXX='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+
+ case $cc_basename in
+ CC*)
+ archive_cmds_CXX='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds_CXX='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ ;;
+ 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"
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+
+cat > conftest.$ac_ext <<EOF
+class Foo
+{
+public:
+ Foo (void) { a = 0; }
+private:
+ int a;
+};
+EOF
+
+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
+ # 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
+interix3*)
+ # Interix 3.5 installs completely hosed .la files for C++, so rather than
+ # hack all around it, let's just trust "g++" to DTRT.
+ predep_objects_CXX=
+ postdep_objects_CXX=
+ postdeps_CXX=
+ ;;
+
+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=
+ ;;
+ interix3*)
+ # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+ # Instead, we relocate shared libraries at runtime.
+ ;;
+ 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='${wl}-a ${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='${wl}-a ${wl}archive'
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic_CXX='+Z'
+ ;;
+ esac
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ interix*)
+ # This is c89, which is MS Visual C++ (no shared libs)
+ # Anyone wants to do a port?
+ ;;
+ 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*)
+ ;;
+ 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
+ ;;
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ case $cc_basename in
+ CC*)
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_pic_CXX='-KPIC'
+ lt_prog_compiler_static_CXX='-Bstatic'
+ ;;
+ esac
+ ;;
+ 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:11524: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:11528: \$? = $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 -e '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || 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
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\"
+echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6
+if test "${lt_prog_compiler_static_works_CXX+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_prog_compiler_static_works_CXX=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+ 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 -e '/^$/d' > conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if diff conftest.exp conftest.er2 >/dev/null; then
+ lt_prog_compiler_static_works_CXX=yes
+ fi
+ else
+ lt_prog_compiler_static_works_CXX=yes
+ fi
+ fi
+ $rm conftest*
+ LDFLAGS="$save_LDFLAGS"
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_CXX" >&5
+echo "${ECHO_T}$lt_prog_compiler_static_works_CXX" >&6
+
+if test x"$lt_prog_compiler_static_works_CXX" = xyes; then
+ :
+else
+ lt_prog_compiler_static_CXX=
+fi
+
+
+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:11628: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:11632: \$? = $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 -e '/^$/d' > out/conftest.exp
+ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.er2 || 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
+
+#
+# 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
+ pic_flag=$lt_prog_compiler_pic_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<name>.so
+ # instead of lib<name>.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
+ ;;
+
+ *)
+ 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
+ version_type=freebsd-$objformat
+ 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
+ ;;
+ 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
+ ;;
+ freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+ freebsd*) # from 4.6 on
+ shlibpath_overrides_runpath=yes
+ 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'
+ ;;
+
+interix3*)
+ 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'
+ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+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
+
+ # 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'
+ ;;
+
+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
+ sys_lib_dlsearch_path_spec="/usr/lib"
+ 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"
+ ;;
+
+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.3*)
+ 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
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ version_type=freebsd-elf
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ if test "$with_gnu_ld" = yes; then
+ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+ shlibpath_overrides_runpath=no
+ else
+ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+ shlibpath_overrides_runpath=yes
+ case $host_os in
+ sco3.2v5*)
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+ ;;
+ esac
+ fi
+ sys_lib_dlsearch_path_spec='/usr/lib'
+ ;;
+
+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
+
+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
+
+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
+
+
+# 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 LTCFLAGS 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
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_LTCFLAGS
+
+# 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=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
+
+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"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# 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; /^ *+/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; /^ *+/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
+
+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'
+ ;;
+
+ interix3*)
+ # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+ # Instead, we relocate shared libraries at runtime.
+ ;;
+
+ 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'
+ ;;
+
+ 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*)
+ 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
+ ;;
+
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ lt_prog_compiler_pic_F77='-KPIC'
+ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+
+ 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:13198: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:13202: \$? = $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 -e '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || 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
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl_F77 eval lt_tmp_static_flag=\"$lt_prog_compiler_static_F77\"
+echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6
+if test "${lt_prog_compiler_static_works_F77+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_prog_compiler_static_works_F77=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+ 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 -e '/^$/d' > conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if diff conftest.exp conftest.er2 >/dev/null; then
+ lt_prog_compiler_static_works_F77=yes
+ fi
+ else
+ lt_prog_compiler_static_works_F77=yes
+ fi
+ fi
+ $rm conftest*
+ LDFLAGS="$save_LDFLAGS"
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_F77" >&5
+echo "${ECHO_T}$lt_prog_compiler_static_works_F77" >&6
+
+if test x"$lt_prog_compiler_static_works_F77" = xyes; then
+ :
+else
+ lt_prog_compiler_static_F77=
+fi
+
+
+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:13302: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:13306: \$? = $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 -e '/^$/d' > out/conftest.exp
+ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.er2 || 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
+ ;;
+ interix*)
+ # we just hope/assume this is gcc and not c89 (= MSVC++)
+ with_gnu_ld=yes
+ ;;
+ 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 <<EOF 1>&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 <kc5tja_at_[hidden]> 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 <jrb3_at_[hidden]> 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}--enable-auto-image-base -Xlinker --out-implib -Xlinker $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}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ else
+ ld_shlibs_F77=no
+ fi
+ ;;
+
+ interix3*)
+ hardcode_direct_F77=no
+ hardcode_shlibpath_var_F77=no
+ hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec_F77='${wl}-E'
+ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+ # Instead, shared libraries are loaded at an image base (0x10000000 by
+ # default) and relocated if they conflict, which is a slow very memory
+ # consuming and fragmenting process. To avoid this, we pick a random,
+ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+ # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+ archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ archive_expsym_cmds_F77='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ ;;
+
+ 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*)
+ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+ ld_shlibs_F77=no
+ cat <<EOF 1>&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
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+ case `$LD -v 2>&1` in
+ *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+ ld_shlibs_F77=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+ ;;
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib'
+ archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib'
+ else
+ ld_shlibs_F77=no
+ fi
+ ;;
+ esac
+ ;;
+
+ 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 "$lt_prog_compiler_static"; 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 '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${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 '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_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'
+ # Exported symbols can be pulled into shared objects from archives
+ whole_archive_flag_spec_F77='$convenience'
+ 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 ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${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*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ if test "$with_gnu_ld" = no; then
+ 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
+ fi
+ ;;
+
+ hpux11*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ case $host_cpu in
+ hppa*64*)
+ archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -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*)
+ archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ fi
+ if test "$with_gnu_ld" = no; then
+ hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_F77=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
+ hardcode_libdir_flag_spec_ld_F77='+b $libdir'
+ hardcode_direct_F77=no
+ hardcode_shlibpath_var_F77=no
+ ;;
+ *)
+ 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=:
+ ;;
+
+ 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*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*)
+ no_undefined_flag_F77='${wl}-z,text'
+ archive_cmds_need_lc_F77=no
+ hardcode_shlibpath_var_F77=no
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ archive_cmds_F77='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds_F77='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6*)
+ # Note: We can NOT use -z defs as we might desire, because we do not
+ # link with -lc, and that would cause any symbols used from libc to
+ # always be unresolved, which means just about no library would
+ # ever link correctly. If we're not using GNU ld we use -z text
+ # though, which does catch some bad symbols but isn't as heavy-handed
+ # as -z defs.
+ no_undefined_flag_F77='${wl}-z,text'
+ allow_undefined_flag_F77='${wl}-z,nodefs'
+ archive_cmds_need_lc_F77=no
+ hardcode_shlibpath_var_F77=no
+ hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+ hardcode_libdir_separator_F77=':'
+ link_all_deplibs_F77=yes
+ export_dynamic_flag_spec_F77='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ archive_cmds_F77='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds_F77='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ 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
+
+#
+# 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
+ pic_flag=$lt_prog_compiler_pic_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<name>.so
+ # instead of lib<name>.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
+ ;;
+
+ *)
+ 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
+ version_type=freebsd-$objformat
+ 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
+ ;;
+ 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
+ ;;
+ freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+ freebsd*) # from 4.6 on
+ shlibpath_overrides_runpath=yes
+ 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'
+ ;;
+
+interix3*)
+ 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'
+ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+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
+
+ # 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'
+ ;;
+
+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
+ sys_lib_dlsearch_path_spec="/usr/lib"
+ 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"
+ ;;
+
+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.3*)
+ 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
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ version_type=freebsd-elf
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ if test "$with_gnu_ld" = yes; then
+ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+ shlibpath_overrides_runpath=no
+ else
+ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+ shlibpath_overrides_runpath=yes
+ case $host_os in
+ sco3.2v5*)
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+ ;;
+ esac
+ fi
+ sys_lib_dlsearch_path_spec='/usr/lib'
+ ;;
+
+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
+
+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
+
+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
+
+
+# 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 LTCFLAGS 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
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_LTCFLAGS
+
+# 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=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
+
+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"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# 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; /^ *+/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; /^ *+/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
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+
+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:15509: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:15513: \$? = $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 -e '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || 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'
+ ;;
+
+ interix3*)
+ # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+ # Instead, we relocate shared libraries at runtime.
+ ;;
+
+ 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'
+ ;;
+
+ 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*)
+ 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
+ ;;
+
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ lt_prog_compiler_pic_GCJ='-KPIC'
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ ;;
+
+ 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:15777: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:15781: \$? = $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 -e '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || 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
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl_GCJ eval lt_tmp_static_flag=\"$lt_prog_compiler_static_GCJ\"
+echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6
+if test "${lt_prog_compiler_static_works_GCJ+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_prog_compiler_static_works_GCJ=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+ 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 -e '/^$/d' > conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if diff conftest.exp conftest.er2 >/dev/null; then
+ lt_prog_compiler_static_works_GCJ=yes
+ fi
+ else
+ lt_prog_compiler_static_works_GCJ=yes
+ fi
+ fi
+ $rm conftest*
+ LDFLAGS="$save_LDFLAGS"
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_GCJ" >&5
+echo "${ECHO_T}$lt_prog_compiler_static_works_GCJ" >&6
+
+if test x"$lt_prog_compiler_static_works_GCJ" = xyes; then
+ :
+else
+ lt_prog_compiler_static_GCJ=
+fi
+
+
+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:15881: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:15885: \$? = $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 -e '/^$/d' > out/conftest.exp
+ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.er2 || 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
+ ;;
+ interix*)
+ # we just hope/assume this is gcc and not c89 (= MSVC++)
+ with_gnu_ld=yes
+ ;;
+ 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 <<EOF 1>&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 <kc5tja_at_[hidden]> 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 <jrb3_at_[hidden]> 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}--enable-auto-image-base -Xlinker --out-implib -Xlinker $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}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ else
+ ld_shlibs_GCJ=no
+ fi
+ ;;
+
+ interix3*)
+ hardcode_direct_GCJ=no
+ hardcode_shlibpath_var_GCJ=no
+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec_GCJ='${wl}-E'
+ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+ # Instead, shared libraries are loaded at an image base (0x10000000 by
+ # default) and relocated if they conflict, which is a slow very memory
+ # consuming and fragmenting process. To avoid this, we pick a random,
+ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+ # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+ archive_cmds_GCJ='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ archive_expsym_cmds_GCJ='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ ;;
+
+ 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*)
+ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+ ld_shlibs_GCJ=no
+ cat <<EOF 1>&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
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+ case `$LD -v 2>&1` in
+ *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+ ld_shlibs_GCJ=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+ ;;
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib'
+ archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib'
+ else
+ ld_shlibs_GCJ=no
+ fi
+ ;;
+ esac
+ ;;
+
+ 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 "$lt_prog_compiler_static"; 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_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_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath"
+ archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${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 '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_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_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'
+ # Exported symbols can be pulled into shared objects from archives
+ whole_archive_flag_spec_GCJ='$convenience'
+ 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 ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${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*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ if test "$with_gnu_ld" = no; then
+ 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
+ fi
+ ;;
+
+ hpux11*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ case $host_cpu in
+ hppa*64*)
+ archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -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*)
+ archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ fi
+ if test "$with_gnu_ld" = no; then
+ hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_GCJ=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
+ hardcode_libdir_flag_spec_ld_GCJ='+b $libdir'
+ hardcode_direct_GCJ=no
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+ *)
+ 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=:
+ ;;
+
+ 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*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*)
+ no_undefined_flag_GCJ='${wl}-z,text'
+ archive_cmds_need_lc_GCJ=no
+ hardcode_shlibpath_var_GCJ=no
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ archive_cmds_GCJ='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds_GCJ='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6*)
+ # Note: We can NOT use -z defs as we might desire, because we do not
+ # link with -lc, and that would cause any symbols used from libc to
+ # always be unresolved, which means just about no library would
+ # ever link correctly. If we're not using GNU ld we use -z text
+ # though, which does catch some bad symbols but isn't as heavy-handed
+ # as -z defs.
+ no_undefined_flag_GCJ='${wl}-z,text'
+ allow_undefined_flag_GCJ='${wl}-z,nodefs'
+ archive_cmds_need_lc_GCJ=no
+ hardcode_shlibpath_var_GCJ=no
+ hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+ hardcode_libdir_separator_GCJ=':'
+ link_all_deplibs_GCJ=yes
+ export_dynamic_flag_spec_GCJ='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ archive_cmds_GCJ='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds_GCJ='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ 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
+
+#
+# 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
+ pic_flag=$lt_prog_compiler_pic_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<name>.so
+ # instead of lib<name>.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
+ ;;
+
+ *)
+ 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
+ version_type=freebsd-$objformat
+ 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
+ ;;
+ 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
+ ;;
+ freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+ freebsd*) # from 4.6 on
+ shlibpath_overrides_runpath=yes
+ 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'
+ ;;
+
+interix3*)
+ 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'
+ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+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
+
+ # 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'
+ ;;
+
+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
+ sys_lib_dlsearch_path_spec="/usr/lib"
+ 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"
+ ;;
+
+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.3*)
+ 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
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ version_type=freebsd-elf
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ if test "$with_gnu_ld" = yes; then
+ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+ shlibpath_overrides_runpath=no
+ else
+ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+ shlibpath_overrides_runpath=yes
+ case $host_os in
+ sco3.2v5*)
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+ ;;
+ esac
+ fi
+ sys_lib_dlsearch_path_spec='/usr/lib'
+ ;;
+
+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
+
+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
+
+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
+
+
+# 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 LTCFLAGS 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
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_LTCFLAGS
+
+# 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=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
+
+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"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# 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; /^ *+/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; /^ *+/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 LTCFLAGS 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
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_LTCFLAGS
+
+# 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=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
+
+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_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 </dev/null >&5\"") >&5
+ (eval $ac_compiler --version </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+ (eval $ac_compiler -v </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+ (eval $ac_compiler -V </dev/null >&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 <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* 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 <stdlib.h>
+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=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
+
+# 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'
+
+
+if test "$GCC" = yes ; then
+ OLDCFLAGS="$CFLAGS -Wall -Wmissing-prototypes -Wstrict-prototypes"
+ CFLAGS="$OLDCFLAGS -fexceptions"
+ echo "$as_me:$LINENO: checking whether gcc accepts -fexceptions" >&5
+echo $ECHO_N "checking whether gcc accepts -fexceptions... $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. */
+
+int
+main ()
+{
+(void)1
+ ;
+ 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
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; CFLAGS="$OLDCFLAGS"
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+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 <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.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_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 <string.h>
+
+_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 <stdlib.h>
+
+_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 <ctype.h>
+#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
+
+
+
+echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5
+echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6
+if test "${ac_cv_c_bigendian+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_c_bigendian=unknown
+# See if sys/param.h defines the BYTE_ORDER macro.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+#include <sys/param.h>
+int
+main ()
+{
+
+#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN
+ bogus endian macros
+#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
+ # It does; now see whether it defined to BIG_ENDIAN or not.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+#include <sys/param.h>
+int
+main ()
+{
+
+#if BYTE_ORDER != BIG_ENDIAN
+ not big endian
+#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_cv_c_bigendian=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_c_bigendian=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+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
+if test $ac_cv_c_bigendian = unknown; then
+if test "$cross_compiling" = yes; then
+ echo $ac_n "cross-compiling... " 2>&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+main () {
+ /* Are we little or big endian? From Harbison&Steele. */
+ union
+ {
+ long l;
+ char c[sizeof (long)];
+ } u;
+ u.l = 1;
+ exit (u.c[sizeof (long) - 1] == 1);
+}
+_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
+ ac_cv_c_bigendian=no
+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_c_bigendian=yes
+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_c_bigendian" >&5
+echo "${ECHO_T}$ac_cv_c_bigendian" >&6
+if test $ac_cv_c_bigendian = unknown; then
+echo "$as_me:$LINENO: checking to probe for byte ordering" >&5
+echo $ECHO_N "checking to probe for byte ordering... $ECHO_C" >&6
+
+cat >conftest.c <<EOF
+short ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
+short ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
+void _ascii() { char* s = (char*) ascii_mm; s = (char*) ascii_ii; }
+short ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
+short ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
+void _ebcdic() { char* s = (char*) ebcdic_mm; s = (char*) ebcdic_ii; }
+int main() { _ascii (); _ebcdic (); return 0; }
+EOF
+ if test -f conftest.c ; then
+ if ${CC-cc} -c conftest.c -o conftest.o && test -f conftest.o ; then
+ if test `grep -l BIGenDianSyS conftest.o` ; then
+ echo $ac_n ' big endian probe OK, ' 1>&6
+ ac_cv_c_bigendian=yes
+ fi
+ if test `grep -l LiTTleEnDian conftest.o` ; then
+ echo $ac_n ' little endian probe OK, ' 1>&6
+ if test $ac_cv_c_bigendian = yes ; then
+ ac_cv_c_bigendian=unknown;
+ else
+ ac_cv_c_bigendian=no
+ fi
+ fi
+ echo $ac_n 'guessing bigendian ... ' >&6
+ fi
+ fi
+echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5
+echo "${ECHO_T}$ac_cv_c_bigendian" >&6
+fi
+if test $ac_cv_c_bigendian = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define WORDS_BIGENDIAN 1
+_ACEOF
+
+ BYTEORDER=4321
+else
+ BYTEORDER=1234
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define BYTEORDER $BYTEORDER
+_ACEOF
+
+if test $ac_cv_c_bigendian = unknown; then
+ { { echo "$as_me:$LINENO: error: unknown endianess - sorry" >&5
+echo "$as_me: error: unknown endianess - sorry" >&2;}
+ { (exit please pre-set ac_cv_c_bigendian); exit please pre-set ac_cv_c_bigendian; }; }
+fi
+
+
+echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5
+echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6
+if test "${ac_cv_c_const+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 ()
+{
+/* FIXME: Include the comments suggested by Paul. */
+#ifndef __cplusplus
+ /* Ultrix mips cc rejects this. */
+ typedef int charset[2];
+ const charset x;
+ /* SunOS 4.1.1 cc rejects this. */
+ char const *const *ccp;
+ char **p;
+ /* NEC SVR4.0.2 mips cc rejects this. */
+ struct point {int x, y;};
+ static struct point const zero = {0,0};
+ /* AIX XL C 1.02.0.0 rejects this.
+ It does not let you subtract one const X* pointer from another in
+ an arm of an if-expression whose if-part is not a constant
+ expression */
+ const char *g = "string";
+ ccp = &g + (g ? g-g : 0);
+ /* HPUX 7.0 cc rejects these. */
+ ++ccp;
+ p = (char**) ccp;
+ ccp = (char const *const *) p;
+ { /* SCO 3.2v4 cc rejects this. */
+ char *t;
+ char const *s = 0 ? (char *) 0 : (char const *) 0;
+
+ *t++ = 0;
+ }
+ { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */
+ int x[] = {25, 17};
+ const int *foo = &x[0];
+ ++foo;
+ }
+ { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
+ typedef const int *iptr;
+ iptr p = 0;
+ ++p;
+ }
+ { /* AIX XL C 1.02.0.0 rejects this saying
+ "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
+ struct s { int j; const int *ap[3]; };
+ struct s *b; b->j = 5;
+ }
+ { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
+ const int foo = 10;
+ }
+#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_cv_c_const=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_c_const=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5
+echo "${ECHO_T}$ac_cv_c_const" >&6
+if test $ac_cv_c_const = no; then
+
+cat >>confdefs.h <<\_ACEOF
+#define const
+_ACEOF
+
+fi
+
+echo "$as_me:$LINENO: checking for size_t" >&5
+echo $ECHO_N "checking for size_t... $ECHO_C" >&6
+if test "${ac_cv_type_size_t+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
+int
+main ()
+{
+if ((size_t *) 0)
+ return 0;
+if (sizeof (size_t))
+ return 0;
+ ;
+ 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_type_size_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_size_t=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5
+echo "${ECHO_T}$ac_cv_type_size_t" >&6
+if test $ac_cv_type_size_t = yes; then
+ :
+else
+
+cat >>confdefs.h <<_ACEOF
+#define size_t unsigned
+_ACEOF
+
+fi
+
+
+
+for ac_func in memmove bcopy
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+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 $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* 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 $ac_func ();
+/* 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_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ 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
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+
+
+for ac_header in fcntl.h unistd.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 expat-bugs_at_[hidden] ##
+## -------------------------------------- ##
+_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
+
+echo "$as_me:$LINENO: checking for off_t" >&5
+echo $ECHO_N "checking for off_t... $ECHO_C" >&6
+if test "${ac_cv_type_off_t+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
+int
+main ()
+{
+if ((off_t *) 0)
+ return 0;
+if (sizeof (off_t))
+ return 0;
+ ;
+ 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_type_off_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_off_t=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5
+echo "${ECHO_T}$ac_cv_type_off_t" >&6
+if test $ac_cv_type_off_t = yes; then
+ :
+else
+
+cat >>confdefs.h <<_ACEOF
+#define off_t long
+_ACEOF
+
+fi
+
+
+
+for ac_header in stdlib.h unistd.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 expat-bugs_at_[hidden] ##
+## -------------------------------------- ##
+_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
+
+
+for ac_func in getpagesize
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+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 $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* 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 $ac_func ();
+/* 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_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ 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
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+echo "$as_me:$LINENO: checking for working mmap" >&5
+echo $ECHO_N "checking for working mmap... $ECHO_C" >&6
+if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$cross_compiling" = yes; then
+ ac_cv_func_mmap_fixed_mapped=no
+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
+/* malloc might have been renamed as rpl_malloc. */
+#undef malloc
+
+/* Thanks to Mike Haertel and Jim Avera for this test.
+ Here is a matrix of mmap possibilities:
+ mmap private not fixed
+ mmap private fixed at somewhere currently unmapped
+ mmap private fixed at somewhere already mapped
+ mmap shared not fixed
+ mmap shared fixed at somewhere currently unmapped
+ mmap shared fixed at somewhere already mapped
+ For private mappings, we should verify that changes cannot be read()
+ back from the file, nor mmap's back from the file at a different
+ address. (There have been systems where private was not correctly
+ implemented like the infamous i386 svr4.0, and systems where the
+ VM page cache was not coherent with the file system buffer cache
+ like early versions of FreeBSD and possibly contemporary NetBSD.)
+ For shared mappings, we should conversely verify that changes get
+ propagated back to all the places they're supposed to be.
+
+ Grep wants private fixed already mapped.
+ The main things grep needs to know about mmap are:
+ * does it exist and is it safe to write into the mmap'd area
+ * how to use it (BSD variants) */
+
+#include <fcntl.h>
+#include <sys/mman.h>
+
+#if !STDC_HEADERS && !HAVE_STDLIB_H
+char *malloc ();
+#endif
+
+/* This mess was copied from the GNU getpagesize.h. */
+#if !HAVE_GETPAGESIZE
+/* Assume that all systems that can run configure have sys/param.h. */
+# if !HAVE_SYS_PARAM_H
+# define HAVE_SYS_PARAM_H 1
+# endif
+
+# ifdef _SC_PAGESIZE
+# define getpagesize() sysconf(_SC_PAGESIZE)
+# else /* no _SC_PAGESIZE */
+# if HAVE_SYS_PARAM_H
+# include <sys/param.h>
+# ifdef EXEC_PAGESIZE
+# define getpagesize() EXEC_PAGESIZE
+# else /* no EXEC_PAGESIZE */
+# ifdef NBPG
+# define getpagesize() NBPG * CLSIZE
+# ifndef CLSIZE
+# define CLSIZE 1
+# endif /* no CLSIZE */
+# else /* no NBPG */
+# ifdef NBPC
+# define getpagesize() NBPC
+# else /* no NBPC */
+# ifdef PAGESIZE
+# define getpagesize() PAGESIZE
+# endif /* PAGESIZE */
+# endif /* no NBPC */
+# endif /* no NBPG */
+# endif /* no EXEC_PAGESIZE */
+# else /* no HAVE_SYS_PARAM_H */
+# define getpagesize() 8192 /* punt totally */
+# endif /* no HAVE_SYS_PARAM_H */
+# endif /* no _SC_PAGESIZE */
+
+#endif /* no HAVE_GETPAGESIZE */
+
+int
+main ()
+{
+ char *data, *data2, *data3;
+ int i, pagesize;
+ int fd;
+
+ pagesize = getpagesize ();
+
+ /* First, make a file with some known garbage in it. */
+ data = (char *) malloc (pagesize);
+ if (!data)
+ exit (1);
+ for (i = 0; i < pagesize; ++i)
+ *(data + i) = rand ();
+ umask (0);
+ fd = creat ("conftest.mmap", 0600);
+ if (fd < 0)
+ exit (1);
+ if (write (fd, data, pagesize) != pagesize)
+ exit (1);
+ close (fd);
+
+ /* Next, try to mmap the file at a fixed address which already has
+ something else allocated at it. If we can, also make sure that
+ we see the same garbage. */
+ fd = open ("conftest.mmap", O_RDWR);
+ if (fd < 0)
+ exit (1);
+ data2 = (char *) malloc (2 * pagesize);
+ if (!data2)
+ exit (1);
+ data2 += (pagesize - ((long) data2 & (pagesize - 1))) & (pagesize - 1);
+ if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE,
+ MAP_PRIVATE | MAP_FIXED, fd, 0L))
+ exit (1);
+ for (i = 0; i < pagesize; ++i)
+ if (*(data + i) != *(data2 + i))
+ exit (1);
+
+ /* Finally, make sure that changes to the mapped area do not
+ percolate back to the file as seen by read(). (This is a bug on
+ some variants of i386 svr4.0.) */
+ for (i = 0; i < pagesize; ++i)
+ *(data2 + i) = *(data2 + i) + 1;
+ data3 = (char *) malloc (pagesize);
+ if (!data3)
+ exit (1);
+ if (read (fd, data3, pagesize) != pagesize)
+ exit (1);
+ for (i = 0; i < pagesize; ++i)
+ if (*(data + i) != *(data3 + i))
+ exit (1);
+ close (fd);
+ 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
+ ac_cv_func_mmap_fixed_mapped=yes
+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_func_mmap_fixed_mapped=no
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5
+echo "${ECHO_T}$ac_cv_func_mmap_fixed_mapped" >&6
+if test $ac_cv_func_mmap_fixed_mapped = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_MMAP 1
+_ACEOF
+
+fi
+rm -f conftest.mmap
+
+
+if test "$ac_cv_func_mmap_fixed_mapped" = "yes"; then
+ FILEMAP=unixfilemap
+else
+ FILEMAP=readfilemap
+fi
+
+
+
+# AC_CPP_FUNC
+# ------------------ #
+# Checks to see if ANSI C99 CPP variable __func__ works.
+# If not, perhaps __FUNCTION__ works instead.
+# If not, we'll just define __func__ to "".
+# AC_CPP_FUNC
+
+
+echo "$as_me:$LINENO: checking for an ANSI C99-conforming __func__" >&5
+echo $ECHO_N "checking for an ANSI C99-conforming __func__... $ECHO_C" >&6
+if test "${ac_cv_cpp_func+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 ()
+{
+char *foo = __func__;
+ ;
+ 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_cpp_func=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+char *foo = __FUNCTION__;
+ ;
+ 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_cpp_func=__FUNCTION__
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_cpp_func=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_cpp_func" >&5
+echo "${ECHO_T}$ac_cv_cpp_func" >&6
+if test $ac_cv_cpp_func = __FUNCTION__; then
+
+cat >>confdefs.h <<\_ACEOF
+#define __func__ __FUNCTION__
+_ACEOF
+
+elif test $ac_cv_cpp_func = no; then
+
+cat >>confdefs.h <<\_ACEOF
+#define __func__ ""
+_ACEOF
+
+fi
+
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define XML_NS 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define XML_DTD 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define XML_CONTEXT_BYTES 1024
+_ACEOF
+
+
+ ac_config_files="$ac_config_files 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
+
+
+
+: ${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 expat $as_me 2.0.0, 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
+
+Report bugs to <bug-autoconf_at_[hidden]>."
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+ac_cs_version="\\
+expat config.status 2.0.0
+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
+for ac_config_target in $ac_config_targets
+do
+ case "$ac_config_target" in
+ # Handling of arguments.
+ "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+ "expat_config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS expat_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
+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,@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,@LDFLAGS@,$LDFLAGS,;t t
+s,@CPPFLAGS@,$CPPFLAGS,;t t
+s,@ac_ct_CC@,$ac_ct_CC,;t t
+s,@EXEEXT@,$EXEEXT,;t t
+s,@OBJEXT@,$OBJEXT,;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,@STRIP@,$STRIP,;t t
+s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t
+s,@DLLTOOL@,$DLLTOOL,;t t
+s,@ac_ct_DLLTOOL@,$ac_ct_DLLTOOL,;t t
+s,@AS@,$AS,;t t
+s,@ac_ct_AS@,$ac_ct_AS,;t t
+s,@OBJDUMP@,$OBJDUMP,;t t
+s,@ac_ct_OBJDUMP@,$ac_ct_OBJDUMP,;t t
+s,@CPP@,$CPP,;t t
+s,@CXX@,$CXX,;t t
+s,@CXXFLAGS@,$CXXFLAGS,;t t
+s,@ac_ct_CXX@,$ac_ct_CXX,;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,@LIBCURRENT@,$LIBCURRENT,;t t
+s,@LIBREVISION@,$LIBREVISION,;t t
+s,@LIBAGE@,$LIBAGE,;t t
+s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
+s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
+s,@INSTALL_DATA@,$INSTALL_DATA,;t t
+s,@FILEMAP@,$FILEMAP,;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 <<CEOF' >>$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 <<CEOF' >>$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
+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
+
+
+abs_srcdir="`cd $srcdir && pwd`"
+abs_builddir="`pwd`"
+if test "$abs_srcdir" != "$abs_builddir"; then
+ make mkdir-init
+fi

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/configure.in
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/configure.in 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,153 @@
+dnl configuration script for expat
+dnl Process this file with autoconf to produce a configure script.
+dnl
+dnl Copyright 2000 Clark Cooper
+dnl
+dnl This file is part of EXPAT.
+dnl
+dnl EXPAT is free software; you can redistribute it and/or modify it
+dnl under the terms of the License (based on the MIT/X license) contained
+dnl in the file COPYING that comes with this distribution.
+dnl
+
+dnl Ensure that Expat is configured with autoconf 2.52 or newer
+AC_PREREQ(2.52)
+
+dnl Get the version number of Expat, using m4's esyscmd() command to run
+dnl the command at m4-generation time. This allows us to create an m4
+dnl symbol holding the correct version number. AC_INIT() requires the
+dnl version number at m4-time, rather than when ./configure is run, so
+dnl all this must happen as part of m4, not as part of the shell code
+dnl contained in ./configure.
+dnl
+dnl NOTE: esyscmd() is a GNU M4 extension. Thus, we wrap it in an appropriate
+dnl test. I believe this test will work, but I don't have a place with non-
+dnl GNU M4 to test it right now.
+define([expat_version], ifdef([__gnu__],
+ [esyscmd(conftools/get-version.sh lib/expat.h)],
+ [2.0.x]))
+AC_INIT(expat, expat_version, expat-bugs_at_[hidden])
+undefine([expat_version])
+
+AC_CONFIG_SRCDIR(Makefile.in)
+AC_CONFIG_AUX_DIR(conftools)
+
+
+dnl
+dnl Increment LIBREVISION if source code has changed at all
+dnl
+dnl If the API has changed, increment LIBCURRENT and set LIBREVISION to 0
+dnl
+dnl If the API changes compatibly (i.e. simply adding a new function
+dnl without changing or removing earlier interfaces), then increment LIBAGE.
+dnl
+dnl If the API changes incompatibly set LIBAGE back to 0
+dnl
+
+LIBCURRENT=6
+LIBREVISION=0
+LIBAGE=5
+
+AC_CONFIG_HEADER(expat_config.h)
+
+sinclude(conftools/libtool.m4)
+sinclude(conftools/ac_c_bigendian_cross.m4)
+
+AC_LIBTOOL_WIN32_DLL
+AC_PROG_LIBTOOL
+
+AC_SUBST(LIBCURRENT)
+AC_SUBST(LIBREVISION)
+AC_SUBST(LIBAGE)
+
+dnl Checks for programs.
+AC_PROG_CC
+AC_PROG_INSTALL
+
+if test "$GCC" = yes ; then
+ dnl
+ dnl Be careful about adding the -fexceptions option; some versions of
+ dnl GCC don't support it and it causes extra warnings that are only
+ dnl distracting; avoid.
+ dnl
+ OLDCFLAGS="$CFLAGS -Wall -Wmissing-prototypes -Wstrict-prototypes"
+ CFLAGS="$OLDCFLAGS -fexceptions"
+ AC_MSG_CHECKING(whether gcc accepts -fexceptions)
+ AC_TRY_COMPILE(,(void)1,
+ AC_MSG_RESULT(yes),
+ AC_MSG_RESULT(no); CFLAGS="$OLDCFLAGS")
+fi
+
+dnl Checks for header files.
+AC_HEADER_STDC
+
+dnl Checks for typedefs, structures, and compiler characteristics.
+
+dnl Note: Avoid using AC_C_BIGENDIAN because it does not
+dnl work in a cross compile.
+AC_C_BIGENDIAN_CROSS
+
+AC_C_CONST
+AC_TYPE_SIZE_T
+AC_CHECK_FUNCS(memmove bcopy)
+
+dnl Only needed for xmlwf:
+AC_CHECK_HEADERS(fcntl.h unistd.h)
+AC_TYPE_OFF_T
+AC_FUNC_MMAP
+
+if test "$ac_cv_func_mmap_fixed_mapped" = "yes"; then
+ FILEMAP=unixfilemap
+else
+ FILEMAP=readfilemap
+fi
+AC_SUBST(FILEMAP)
+
+dnl Needed for the test support code; this was found at
+dnl http://lists.gnu.org/archive/html/bug-autoconf/2002-07/msg00028.html
+
+# AC_CPP_FUNC
+# ------------------ #
+# Checks to see if ANSI C99 CPP variable __func__ works.
+# If not, perhaps __FUNCTION__ works instead.
+# If not, we'll just define __func__ to "".
+AC_DEFUN([AC_CPP_FUNC],
+[AC_REQUIRE([AC_PROG_CC_STDC])dnl
+AC_CACHE_CHECK([for an ANSI C99-conforming __func__], ac_cv_cpp_func,
+[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],
+[[char *foo = __func__;]])],
+ [ac_cv_cpp_func=yes],
+ [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],
+[[char *foo = __FUNCTION__;]])],
+ [ac_cv_cpp_func=__FUNCTION__],
+ [ac_cv_cpp_func=no])])])
+if test $ac_cv_cpp_func = __FUNCTION__; then
+ AC_DEFINE(__func__,__FUNCTION__,
+ [Define to __FUNCTION__ or "" if `__func__' does not conform to
+ANSI C.])
+elif test $ac_cv_cpp_func = no; then
+ AC_DEFINE(__func__,"",
+ [Define to __FUNCTION__ or "" if `__func__' does not conform to
+ANSI C.])
+fi
+])# AC_CPP_FUNC
+
+AC_CPP_FUNC
+
+
+dnl Some basic configuration:
+AC_DEFINE([XML_NS], 1,
+ [Define to make XML Namespaces functionality available.])
+AC_DEFINE([XML_DTD], 1,
+ [Define to make parameter entity parsing functionality available.])
+AC_DEFINE([XML_CONTEXT_BYTES], 1024,
+ [Define to specify how much context to retain around the current parse point.])
+
+AC_CONFIG_FILES(Makefile)
+AC_OUTPUT
+
+abs_srcdir="`cd $srcdir && pwd`"
+abs_builddir="`pwd`"
+if test "$abs_srcdir" != "$abs_builddir"; then
+ make mkdir-init
+fi

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/conftools/PrintPath
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/conftools/PrintPath 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,116 @@
+#!/bin/sh
+# Look for program[s] somewhere in $PATH.
+#
+# Options:
+# -s
+# Do not print out full pathname. (silent)
+# -pPATHNAME
+# Look in PATHNAME instead of $PATH
+#
+# Usage:
+# PrintPath [-s] [-pPATHNAME] program [program ...]
+#
+# Initially written by Jim Jagielski for the Apache configuration mechanism
+# (with kudos to Kernighan/Pike)
+#
+# This script falls under the Apache License.
+# See http://www.apache.org/licenses/LICENSE
+
+##
+# Some "constants"
+##
+pathname=$PATH
+echo="yes"
+
+##
+# Find out what OS we are running for later on
+##
+os=`(uname) 2>/dev/null`
+
+##
+# Parse command line
+##
+for args in $*
+do
+ case $args in
+ -s ) echo="no" ;;
+ -p* ) pathname="`echo $args | sed 's/^..//'`" ;;
+ * ) programs="$programs $args" ;;
+ esac
+done
+
+##
+# Now we make the adjustments required for OS/2 and everyone
+# else :)
+#
+# First of all, all OS/2 programs have the '.exe' extension.
+# Next, we adjust PATH (or what was given to us as PATH) to
+# be whitespace seperated directories.
+# Finally, we try to determine the best flag to use for
+# test/[] to look for an executable file. OS/2 just has '-r'
+# but with other OSs, we do some funny stuff to check to see
+# if test/[] knows about -x, which is the prefered flag.
+##
+
+if [ "x$os" = "xOS/2" ]
+then
+ ext=".exe"
+ pathname=`echo -E $pathname |
+ sed 's/^;/.;/
+ s/;;/;.;/g
+ s/;$/;./
+ s/;/ /g
+ s/\\\\/\\//g' `
+ test_exec_flag="-r"
+else
+ ext="" # No default extensions
+ pathname=`echo $pathname |
+ sed 's/^:/.:/
+ s/::/:.:/g
+ s/:$/:./
+ s/:/ /g' `
+ # Here is how we test to see if test/[] can handle -x
+ testfile="pp.t.$$"
+
+ cat > $testfile <<ENDTEST
+#!/bin/sh
+if [ -x / ] || [ -x /bin ] || [ -x /bin/ls ]; then
+ exit 0
+fi
+exit 1
+ENDTEST
+
+ if `/bin/sh $testfile 2>/dev/null`; then
+ test_exec_flag="-x"
+ else
+ test_exec_flag="-r"
+ fi
+ rm -f $testfile
+fi
+
+for program in $programs
+do
+ for path in $pathname
+ do
+ if [ $test_exec_flag $path/${program}${ext} ] && \
+ [ ! -d $path/${program}${ext} ]; then
+ if [ "x$echo" = "xyes" ]; then
+ echo $path/${program}${ext}
+ fi
+ exit 0
+ fi
+
+# Next try without extension (if one was used above)
+ if [ "x$ext" != "x" ]; then
+ if [ $test_exec_flag $path/${program} ] && \
+ [ ! -d $path/${program} ]; then
+ if [ "x$echo" = "xyes" ]; then
+ echo $path/${program}
+ fi
+ exit 0
+ fi
+ fi
+ done
+done
+exit 1
+

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/conftools/ac_c_bigendian_cross.m4
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/conftools/ac_c_bigendian_cross.m4 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,81 @@
+dnl @synopsis AC_C_BIGENDIAN_CROSS
+dnl
+dnl Check endianess even when crosscompiling
+dnl (partially based on the original AC_C_BIGENDIAN).
+dnl
+dnl The implementation will create a binary, and instead of running
+dnl the binary it will be grep'ed for some symbols that will look
+dnl different for different endianess of the binary.
+dnl
+dnl @version $Id$
+dnl @author Guido Draheim <guidod_at_[hidden]>
+dnl
+AC_DEFUN([AC_C_BIGENDIAN_CROSS],
+[AC_CACHE_CHECK(whether byte ordering is bigendian, ac_cv_c_bigendian,
+[ac_cv_c_bigendian=unknown
+# See if sys/param.h defines the BYTE_ORDER macro.
+AC_TRY_COMPILE([#include <sys/types.h>
+#include <sys/param.h>], [
+#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN
+ bogus endian macros
+#endif], [# It does; now see whether it defined to BIG_ENDIAN or not.
+AC_TRY_COMPILE([#include <sys/types.h>
+#include <sys/param.h>], [
+#if BYTE_ORDER != BIG_ENDIAN
+ not big endian
+#endif], ac_cv_c_bigendian=yes, ac_cv_c_bigendian=no)])
+if test $ac_cv_c_bigendian = unknown; then
+AC_TRY_RUN([main () {
+ /* Are we little or big endian? From Harbison&Steele. */
+ union
+ {
+ long l;
+ char c[sizeof (long)];
+ } u;
+ u.l = 1;
+ exit (u.c[sizeof (long) - 1] == 1);
+}], ac_cv_c_bigendian=no, ac_cv_c_bigendian=yes,
+[ echo $ac_n "cross-compiling... " 2>&AC_FD_MSG ])
+fi])
+if test $ac_cv_c_bigendian = unknown; then
+AC_MSG_CHECKING(to probe for byte ordering)
+[
+cat >conftest.c <<EOF
+short ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
+short ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
+void _ascii() { char* s = (char*) ascii_mm; s = (char*) ascii_ii; }
+short ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
+short ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
+void _ebcdic() { char* s = (char*) ebcdic_mm; s = (char*) ebcdic_ii; }
+int main() { _ascii (); _ebcdic (); return 0; }
+EOF
+] if test -f conftest.c ; then
+ if ${CC-cc} -c conftest.c -o conftest.o && test -f conftest.o ; then
+ if test `grep -l BIGenDianSyS conftest.o` ; then
+ echo $ac_n ' big endian probe OK, ' 1>&AC_FD_MSG
+ ac_cv_c_bigendian=yes
+ fi
+ if test `grep -l LiTTleEnDian conftest.o` ; then
+ echo $ac_n ' little endian probe OK, ' 1>&AC_FD_MSG
+ if test $ac_cv_c_bigendian = yes ; then
+ ac_cv_c_bigendian=unknown;
+ else
+ ac_cv_c_bigendian=no
+ fi
+ fi
+ echo $ac_n 'guessing bigendian ... ' >&AC_FD_MSG
+ fi
+ fi
+AC_MSG_RESULT($ac_cv_c_bigendian)
+fi
+if test $ac_cv_c_bigendian = yes; then
+ AC_DEFINE(WORDS_BIGENDIAN, 1, [whether byteorder is bigendian])
+ BYTEORDER=4321
+else
+ BYTEORDER=1234
+fi
+AC_DEFINE_UNQUOTED(BYTEORDER, $BYTEORDER, [1234 = LIL_ENDIAN, 4321 = BIGENDIAN])
+if test $ac_cv_c_bigendian = unknown; then
+ AC_MSG_ERROR(unknown endianess - sorry, please pre-set ac_cv_c_bigendian)
+fi
+])

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/conftools/config.guess
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/conftools/config.guess 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,1344 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+# 2000, 2001, 2002 Free Software Foundation, Inc.
+
+timestamp='2002-03-20'
+
+# 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., 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.
+
+#####################################################################
+# This file contains changes for Apache, clearly marked below.
+# These changes are hereby donated to the public domain.
+#####################################################################
+
+# Originally written by Per Bothner <per_at_[hidden]>.
+# Please send patches to <config-patches_at_[hidden]>. 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 <config-patches_at_[hidden]>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+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 0 ;;
+ --version | -v )
+ echo "$version" ; exit 0 ;;
+ --help | --h* | -h )
+ echo "$usage"; exit 0 ;;
+ -- ) # 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
+
+
+dummy=dummy-$$
+trap 'rm -f $dummy.c $dummy.o $dummy.rel $dummy; exit 1' 1 2 15
+
+# CC_FOR_BUILD -- compiler used by this script.
+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+# use `HOST_CC' if defined, but it is deprecated.
+
+set_cc_for_build='case $CC_FOR_BUILD,$HOST_CC,$CC in
+ ,,) echo "int dummy(){}" > $dummy.c ;
+ for c in cc gcc c89 c99 ; do
+ ($c $dummy.c -c -o $dummy.o) >/dev/null 2>&1 ;
+ if test $? = 0 ; then
+ CC_FOR_BUILD="$c"; break ;
+ fi ;
+ done ;
+ rm -f $dummy.c $dummy.o $dummy.rel ;
+ 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'
+
+# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+# (ghazi_at_[hidden] 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
+
+# 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
+ 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
+ release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+ # 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 0 ;;
+ amiga:OpenBSD:*:*)
+ echo m68k-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ arc:OpenBSD:*:*)
+ echo mipsel-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ hp300:OpenBSD:*:*)
+ echo m68k-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ mac68k:OpenBSD:*:*)
+ echo m68k-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ macppc:OpenBSD:*:*)
+ echo powerpc-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ mvme68k:OpenBSD:*:*)
+ echo m68k-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ mvme88k:OpenBSD:*:*)
+ echo m88k-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ mvmeppc:OpenBSD:*:*)
+ echo powerpc-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ pmax:OpenBSD:*:*)
+ echo mipsel-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ sgi:OpenBSD:*:*)
+ echo mipseb-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ sun3:OpenBSD:*:*)
+ echo m68k-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ wgrisc:OpenBSD:*:*)
+ echo mipsel-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ *:OpenBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ alpha:OSF1:*:*)
+ if test $UNAME_RELEASE = "V4.0"; then
+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+ fi
+ # 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.
+ cat <<EOF >$dummy.s
+ .data
+\$Lformat:
+ .byte 37,100,45,37,120,10,0 # "%d-%x\n"
+
+ .text
+ .globl main
+ .align 4
+ .ent main
+main:
+ .frame \$30,16,\$26,0
+ ldgp \$29,0(\$27)
+ .prologue 1
+ .long 0x47e03d80 # implver \$0
+ lda \$2,-1
+ .long 0x47e20c21 # amask \$2,\$1
+ lda \$16,\$Lformat
+ mov \$0,\$17
+ not \$1,\$18
+ jsr \$26,printf
+ ldgp \$29,0(\$26)
+ mov 0,\$16
+ jsr \$26,exit
+ .end main
+EOF
+ eval $set_cc_for_build
+ $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null
+ if test "$?" = 0 ; then
+ case `./$dummy` in
+ 0-0)
+ UNAME_MACHINE="alpha"
+ ;;
+ 1-0)
+ UNAME_MACHINE="alphaev5"
+ ;;
+ 1-1)
+ UNAME_MACHINE="alphaev56"
+ ;;
+ 1-101)
+ UNAME_MACHINE="alphapca56"
+ ;;
+ 2-303)
+ UNAME_MACHINE="alphaev6"
+ ;;
+ 2-307)
+ UNAME_MACHINE="alphaev67"
+ ;;
+ 2-1307)
+ UNAME_MACHINE="alphaev68"
+ ;;
+ esac
+ fi
+ rm -f $dummy.s $dummy
+ echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ exit 0 ;;
+ 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 0 ;;
+ 21064:Windows_NT:50:3)
+ echo alpha-dec-winnt3.5
+ exit 0 ;;
+ Amiga*:UNIX_System_V:4.0:*)
+ echo m68k-unknown-sysv4
+ exit 0;;
+ *:[Aa]miga[Oo][Ss]:*:*)
+ echo ${UNAME_MACHINE}-unknown-amigaos
+ exit 0 ;;
+ *:[Mm]orph[Oo][Ss]:*:*)
+ echo ${UNAME_MACHINE}-unknown-morphos
+ exit 0 ;;
+#########################
+# Apache changes
+#
+# *:OS/390:*:*)
+# echo i370-ibm-openedition
+# exit 0 ;;
+ *:OS390:*:* | *:OS/390:*:*)
+ echo s390-ibm-os390
+ exit 0 ;;
+ *:OS400:*:* | *:OS/400:*:*)
+ echo as400-ibm-os400
+ exit 0 ;;
+ *:OS/2:*:*)
+ echo "i386-pc-os2_emx"
+ exit 0;;
+#
+# end Apache changes
+#########################
+ *:OS/390:*:*)
+ echo i370-ibm-openedition
+ exit 0 ;;
+ arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+ echo arm-acorn-riscix${UNAME_RELEASE}
+ exit 0;;
+ SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+ echo hppa1.1-hitachi-hiuxmpp
+ exit 0;;
+ Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+ # akee_at_[hidden] (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 0 ;;
+ NILE*:*:*:dcosx)
+ echo pyramid-pyramid-svr4
+ exit 0 ;;
+ sun4H:SunOS:5.*:*)
+ echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit 0 ;;
+ sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+ echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit 0 ;;
+ i86pc:SunOS:5.*:*)
+ echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit 0 ;;
+ 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 0 ;;
+ 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 0 ;;
+ sun3*:SunOS:*:*)
+ echo m68k-sun-sunos${UNAME_RELEASE}
+ exit 0 ;;
+ 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 0 ;;
+ aushp:SunOS:*:*)
+ echo sparc-auspex-sunos${UNAME_RELEASE}
+ exit 0 ;;
+ # 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 0 ;;
+ atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit 0 ;;
+ *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit 0 ;;
+ milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+ echo m68k-milan-mint${UNAME_RELEASE}
+ exit 0 ;;
+ hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+ echo m68k-hades-mint${UNAME_RELEASE}
+ exit 0 ;;
+ *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+ echo m68k-unknown-mint${UNAME_RELEASE}
+ exit 0 ;;
+ powerpc:machten:*:*)
+ echo powerpc-apple-machten${UNAME_RELEASE}
+ exit 0 ;;
+ RISC*:Mach:*:*)
+ echo mips-dec-mach_bsd4.3
+ exit 0 ;;
+ RISC*:ULTRIX:*:*)
+ echo mips-dec-ultrix${UNAME_RELEASE}
+ exit 0 ;;
+ VAX*:ULTRIX*:*:*)
+ echo vax-dec-ultrix${UNAME_RELEASE}
+ exit 0 ;;
+ 2020:CLIX:*:* | 2430:CLIX:*:*)
+ echo clipper-intergraph-clix${UNAME_RELEASE}
+ exit 0 ;;
+ mips:*:*:UMIPS | mips:*:*:RISCos)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+#ifdef __cplusplus
+#include <stdio.h> /* 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 $dummy.c -o $dummy \
+ && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
+ && rm -f $dummy.c $dummy && exit 0
+ rm -f $dummy.c $dummy
+ echo mips-mips-riscos${UNAME_RELEASE}
+ exit 0 ;;
+ Motorola:PowerMAX_OS:*:*)
+ echo powerpc-motorola-powermax
+ exit 0 ;;
+ Night_Hawk:Power_UNIX:*:*)
+ echo powerpc-harris-powerunix
+ exit 0 ;;
+ m88k:CX/UX:7*:*)
+ echo m88k-harris-cxux7
+ exit 0 ;;
+ m88k:*:4*:R4*)
+ echo m88k-motorola-sysv4
+ exit 0 ;;
+ m88k:*:3*:R3*)
+ echo m88k-motorola-sysv3
+ exit 0 ;;
+ 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 0 ;;
+ M88*:DolphinOS:*:*) # DolphinOS (SVR3)
+ echo m88k-dolphin-sysv3
+ exit 0 ;;
+ M88*:*:R3*:*)
+ # Delta 88k system running SVR3
+ echo m88k-motorola-sysv3
+ exit 0 ;;
+ XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+ echo m88k-tektronix-sysv3
+ exit 0 ;;
+ Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+ echo m68k-tektronix-bsd
+ exit 0 ;;
+ *:IRIX*:*:*)
+ echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+ exit 0 ;;
+ ????????: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 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX '
+ i*86:AIX:*:*)
+ echo i386-ibm-aix
+ exit 0 ;;
+ 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 0 ;;
+ *: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 <sys/systemcfg.h>
+
+ main()
+ {
+ if (!__power_pc())
+ exit(1);
+ puts("powerpc-ibm-aix3.2.5");
+ exit(0);
+ }
+EOF
+ $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0
+ rm -f $dummy.c $dummy
+ echo rs6000-ibm-aix3.2.5
+ 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 0 ;;
+ *: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 0 ;;
+ *:AIX:*:*)
+ echo rs6000-ibm-aix
+ exit 0 ;;
+ ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+ echo romp-ibm-bsd4.4
+ exit 0 ;;
+ ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
+ echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
+ exit 0 ;; # report: romp-ibm BSD 4.3
+ *:BOSX:*:*)
+ echo rs6000-bull-bosx
+ exit 0 ;;
+ DPX/2?00:B.O.S.:*:*)
+ echo m68k-bull-sysv3
+ exit 0 ;;
+ 9000/[34]??:4.3bsd:1.*:*)
+ echo m68k-hp-bsd
+ exit 0 ;;
+ hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+ echo m68k-hp-bsd4.4
+ exit 0 ;;
+ 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 <stdlib.h>
+ #include <unistd.h>
+
+ 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 $dummy.c -o $dummy 2>/dev/null) && HP_ARCH=`./$dummy`
+ if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi
+ rm -f $dummy.c $dummy
+ fi ;;
+ esac
+ echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+ exit 0 ;;
+ ia64:HP-UX:*:*)
+ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+ echo ia64-hp-hpux${HPUX_REV}
+ exit 0 ;;
+ 3050*:HI-UX:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #include <unistd.h>
+ 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 $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0
+ rm -f $dummy.c $dummy
+ echo unknown-hitachi-hiuxwe2
+ exit 0 ;;
+ 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+ echo hppa1.1-hp-bsd
+ exit 0 ;;
+ 9000/8??:4.3bsd:*:*)
+ echo hppa1.0-hp-bsd
+ exit 0 ;;
+ *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+ echo hppa1.0-hp-mpeix
+ exit 0 ;;
+ hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+ echo hppa1.1-hp-osf
+ exit 0 ;;
+ hp8??:OSF1:*:*)
+ echo hppa1.0-hp-osf
+ exit 0 ;;
+ i*86:OSF1:*:*)
+ if [ -x /usr/sbin/sysversion ] ; then
+ echo ${UNAME_MACHINE}-unknown-osf1mk
+ else
+ echo ${UNAME_MACHINE}-unknown-osf1
+ fi
+ exit 0 ;;
+ parisc*:Lites*:*:*)
+ echo hppa1.1-hp-lites
+ exit 0 ;;
+ C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+ echo c1-convex-bsd
+ exit 0 ;;
+ C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+ if getsysinfo -f scalar_acc
+ then echo c32-convex-bsd
+ else echo c2-convex-bsd
+ fi
+ exit 0 ;;
+ C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+ echo c34-convex-bsd
+ exit 0 ;;
+ C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+ echo c38-convex-bsd
+ exit 0 ;;
+ C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+ echo c4-convex-bsd
+ exit 0 ;;
+ CRAY*Y-MP:*:*:*)
+ echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit 0 ;;
+ 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 0 ;;
+ CRAY*TS:*:*:*)
+ echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit 0 ;;
+ CRAY*T3D:*:*:*)
+ echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit 0 ;;
+ CRAY*T3E:*:*:*)
+ echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit 0 ;;
+ CRAY*SV1:*:*:*)
+ echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit 0 ;;
+ 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 0 ;;
+ i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+ echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+ exit 0 ;;
+ sparc*:BSD/OS:*:*)
+ echo sparc-unknown-bsdi${UNAME_RELEASE}
+ exit 0 ;;
+ *:BSD/OS:*:*)
+ echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+ exit 0 ;;
+ *:FreeBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+ exit 0 ;;
+ i*:CYGWIN*:*)
+ echo ${UNAME_MACHINE}-pc-cygwin
+ exit 0 ;;
+ i*:MINGW*:*)
+ echo ${UNAME_MACHINE}-pc-mingw32
+ exit 0 ;;
+ i*:PW*:*)
+ echo ${UNAME_MACHINE}-pc-pw32
+ exit 0 ;;
+ x86:Interix*:3*)
+ echo i386-pc-interix3
+ exit 0 ;;
+ 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 i386-pc-interix
+ exit 0 ;;
+ i*:UWIN*:*)
+ echo ${UNAME_MACHINE}-pc-uwin
+ exit 0 ;;
+ p*:CYGWIN*:*)
+ echo powerpcle-unknown-cygwin
+ exit 0 ;;
+ prep*:SunOS:5.*:*)
+ echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit 0 ;;
+ *:GNU:*:*)
+ echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+ exit 0 ;;
+ i*86:Minix:*:*)
+ echo ${UNAME_MACHINE}-pc-minix
+ exit 0 ;;
+ arm*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit 0 ;;
+ ia64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit 0 ;;
+ m68*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit 0 ;;
+ 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=`
+ rm -f $dummy.c
+ test x"${CPU}" != x && echo "${CPU}-pc-linux-gnu" && exit 0
+ ;;
+ ppc:Linux:*:*)
+ echo powerpc-unknown-linux-gnu
+ exit 0 ;;
+ ppc64:Linux:*:*)
+ echo powerpc64-unknown-linux-gnu
+ exit 0 ;;
+ 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="libc1" ; else LIBC="" ; fi
+ echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+ exit 0 ;;
+ 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-gnu ;;
+ PA8*) echo hppa2.0-unknown-linux-gnu ;;
+ *) echo hppa-unknown-linux-gnu ;;
+ esac
+ exit 0 ;;
+ parisc64:Linux:*:* | hppa64:Linux:*:*)
+ echo hppa64-unknown-linux-gnu
+ exit 0 ;;
+ s390:Linux:*:* | s390x:Linux:*:*)
+ echo ${UNAME_MACHINE}-ibm-linux
+ exit 0 ;;
+ sh*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit 0 ;;
+ sparc:Linux:*:* | sparc64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit 0 ;;
+ x86_64:Linux:*:*)
+ echo x86_64-unknown-linux-gnu
+ exit 0 ;;
+ 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-gnu"
+ ;;
+ a.out-i386-linux)
+ echo "${UNAME_MACHINE}-pc-linux-gnuaout"
+ exit 0 ;;
+ coff-i386)
+ echo "${UNAME_MACHINE}-pc-linux-gnucoff"
+ exit 0 ;;
+ "")
+ # Either a pre-BFD a.out linker (linux-gnuoldld) or
+ # one that does not give us useful --help.
+ echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
+ exit 0 ;;
+ esac
+ # Determine whether the default compiler is a.out or elf
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #include <features.h>
+ #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
+EOF
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
+ rm -f $dummy.c
+ test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0
+ test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
+ ;;
+ 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 0 ;;
+ 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 0 ;;
+ 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 0 ;;
+ i*86:*:5:[78]*)
+ 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 0 ;;
+ i*86:*:3.2:*)
+ if test -f /usr/options/cb.name; then
+ UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+ echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+ elif /bin/uname -X 2>/dev/null >/dev/null ; then
+ UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')`
+ (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486
+ (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \
+ && UNAME_MACHINE=i586
+ (/bin/uname -X|egrep '^Machine.*Pent ?II' >/dev/null) \
+ && UNAME_MACHINE=i686
+ (/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) \
+ && UNAME_MACHINE=i686
+ echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+ else
+ echo ${UNAME_MACHINE}-pc-sysv32
+ fi
+ exit 0 ;;
+ i*86:*DOS:*:*)
+ echo ${UNAME_MACHINE}-pc-msdosdjgpp
+ exit 0 ;;
+ 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 0 ;;
+ Intel:Mach:3*:*)
+ echo i386-pc-mach3
+ exit 0 ;;
+ paragon:*:*:*)
+ echo i860-intel-osf1
+ exit 0 ;;
+ 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 0 ;;
+ mini*:CTIX:SYS*5:*)
+ # "miniframe"
+ echo m68010-convergent-sysv
+ exit 0 ;;
+ M68*:*:R3V[567]*:*)
+ test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
+ 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*: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 0
+ /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+ && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;;
+ 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && echo i486-ncr-sysv4 && exit 0 ;;
+ m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+ echo m68k-unknown-lynxos${UNAME_RELEASE}
+ exit 0 ;;
+ mc68030:UNIX_System_V:4.*:*)
+ echo m68k-atari-sysv4
+ exit 0 ;;
+ i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
+ echo i386-unknown-lynxos${UNAME_RELEASE}
+ exit 0 ;;
+ TSUNAMI:LynxOS:2.*:*)
+ echo sparc-unknown-lynxos${UNAME_RELEASE}
+ exit 0 ;;
+ rs6000:LynxOS:2.*:*)
+ echo rs6000-unknown-lynxos${UNAME_RELEASE}
+ exit 0 ;;
+ PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
+ echo powerpc-unknown-lynxos${UNAME_RELEASE}
+ exit 0 ;;
+ SM[BE]S:UNIX_SV:*:*)
+ echo mips-dde-sysv${UNAME_RELEASE}
+ exit 0 ;;
+ RM*:ReliantUNIX-*:*:*)
+ echo mips-sni-sysv4
+ exit 0 ;;
+ RM*:SINIX-*:*:*)
+ echo mips-sni-sysv4
+ exit 0 ;;
+ *: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 0 ;;
+ PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+ # says <Richard.M.Bartel_at_[hidden]>
+ echo i586-unisys-sysv4
+ exit 0 ;;
+ *:UNIX_System_V:4*:FTX*)
+ # From Gerald Hewes <hewes_at_[hidden]>.
+ # How about differentiating between stratus architectures? -djm
+ echo hppa1.1-stratus-sysv4
+ exit 0 ;;
+ *:*:*:FTX*)
+ # From seanf_at_swdc.stratus.com.
+ echo i860-stratus-sysv4
+ exit 0 ;;
+ *:VOS:*:*)
+ # From Paul.Green_at_stratus.com.
+ echo hppa1.1-stratus-vos
+ exit 0 ;;
+ mc68*:A/UX:*:*)
+ echo m68k-apple-aux${UNAME_RELEASE}
+ exit 0 ;;
+ news*:NEWS-OS:6*:*)
+ echo mips-sony-newsos6
+ exit 0 ;;
+ 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 0 ;;
+ BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
+ echo powerpc-be-beos
+ exit 0 ;;
+ BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
+ echo powerpc-apple-beos
+ exit 0 ;;
+ BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
+ echo i586-pc-beos
+ exit 0 ;;
+ SX-4:SUPER-UX:*:*)
+ echo sx4-nec-superux${UNAME_RELEASE}
+ exit 0 ;;
+ SX-5:SUPER-UX:*:*)
+ echo sx5-nec-superux${UNAME_RELEASE}
+ exit 0 ;;
+ Power*:Rhapsody:*:*)
+ echo powerpc-apple-rhapsody${UNAME_RELEASE}
+ exit 0 ;;
+ *:Rhapsody:*:*)
+ echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+ exit 0 ;;
+ *:Darwin:*:*)
+ echo `uname -p`-apple-darwin${UNAME_RELEASE}
+ exit 0 ;;
+ *: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 0 ;;
+ *:QNX:*:4*)
+ echo i386-pc-qnx
+ exit 0 ;;
+ NSR-[GKLNPTVW]:NONSTOP_KERNEL:*:*)
+ echo nsr-tandem-nsk${UNAME_RELEASE}
+ exit 0 ;;
+ *:NonStop-UX:*:*)
+ echo mips-compaq-nonstopux
+ exit 0 ;;
+ BS2000:POSIX*:*:*)
+ echo bs2000-siemens-sysv
+ exit 0 ;;
+ DS/*:UNIX_System_V:*:*)
+ echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+ exit 0 ;;
+ *: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 0 ;;
+ 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 0 ;;
+ *:TOPS-10:*:*)
+ echo pdp10-unknown-tops10
+ exit 0 ;;
+ *:TENEX:*:*)
+ echo pdp10-unknown-tenex
+ exit 0 ;;
+ KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+ echo pdp10-dec-tops20
+ exit 0 ;;
+ XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+ echo pdp10-xkl-tops20
+ exit 0 ;;
+ *:TOPS-20:*:*)
+ echo pdp10-unknown-tops20
+ exit 0 ;;
+ *:ITS:*:*)
+ echo pdp10-unknown-its
+ exit 0 ;;
+ i*86:XTS-300:*:STOP)
+ echo ${UNAME_MACHINE}-unknown-stop
+ exit 0 ;;
+ i*86:atheos:*:*)
+ echo ${UNAME_MACHINE}-unknown-atheos
+ exit 0 ;;
+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 <<EOF
+#ifdef _SEQUENT_
+# include <sys/types.h>
+# include <sys/utsname.h>
+#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 <sys/param.h>
+ 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"); 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 <sys/param.h>
+# 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 $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm -f $dummy.c $dummy && exit 0
+rm -f $dummy.c $dummy
+
+# Apollos put the system type in the environment.
+
+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; }
+
+# 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 0 ;;
+ c2*)
+ if getsysinfo -f scalar_acc
+ then echo c32-convex-bsd
+ else echo c2-convex-bsd
+ fi
+ exit 0 ;;
+ c34*)
+ echo c34-convex-bsd
+ exit 0 ;;
+ c38*)
+ echo c38-convex-bsd
+ exit 0 ;;
+ c4*)
+ echo c4-convex-bsd
+ exit 0 ;;
+ esac
+fi
+
+cat >&2 <<EOF
+$0: unable to guess system type
+
+This script, last modified $timestamp, has failed to recognize
+the operating system you are using. It is advised that you
+download the most up to date version of the config scripts from
+
+ ftp://ftp.gnu.org/pub/gnu/config/
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches_at_[hidden]> 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:

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/conftools/config.sub
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/conftools/config.sub 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,1507 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+# 2000, 2001, 2002 Free Software Foundation, Inc.
+
+timestamp='2002-03-07'
+
+# 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., 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.
+
+#####################################################################
+# This file contains changes for Apache, clearly marked below.
+# These changes are hereby donated to the public domain.
+#####################################################################
+
+# Please send patches to <config-patches_at_[hidden]>. 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 <config-patches_at_[hidden]>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+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 0 ;;
+ --version | -v )
+ echo "$version" ; exit 0 ;;
+ --help | --h* | -h )
+ echo "$usage"; exit 0 ;;
+ -- ) # 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 0;;
+
+ * )
+ 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* | storm-chaos* | os2-emx* | windows32-* | rtmk-nova*)
+ os=-$maybe_os
+ basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+ ;;
+########################
+# changes for Apache
+#
+ tpf | os390 | vmcms)
+ os=-$maybe_os
+ basic_machine=s390;
+ ;;
+ os400)
+ os=-$maybe_os
+ basic_machine=as400;
+ ;;
+ mvs)
+ os=-mvs
+ basic_machine=i370;
+ ;;
+#
+# end Apache changes
+########################
+ *)
+ 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)
+ 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
+ ;;
+ -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/'`
+ ;;
+ -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] \
+ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
+ | c4x | clipper \
+ | d10v | d30v | dsp16xx \
+ | fr30 \
+ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+ | i370 | i860 | i960 | ia64 \
+ | m32r | m68000 | m68k | m88k | mcore \
+ | mips | mips16 | mips64 | mips64el | mips64orion | mips64orionel \
+ | mips64vr4100 | mips64vr4100el | mips64vr4300 \
+ | mips64vr4300el | mips64vr5000 | mips64vr5000el \
+ | mipsbe | mipseb | mipsel | mipsle | mipstx39 | mipstx39el \
+ | mipsisa32 | mipsisa64 \
+ | mn10200 | mn10300 \
+ | ns16k | ns32k \
+ | openrisc | or32 \
+ | pdp10 | pdp11 | pj | pjl \
+ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
+ | pyramid \
+ | sh | sh[34] | sh[34]eb | shbe | shle | sh64 \
+ | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \
+ | strongarm \
+ | tahoe | thumb | tic80 | tron \
+ | v850 | v850e \
+ | we32k \
+ | x86 | xscale | xstormy16 | xtensa \
+ | z8k)
+ 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-* | armv*-* \
+ | avr-* \
+ | bs2000-* \
+ | c[123]* | c30-* | [cjt]90-* | c54x-* \
+ | clipper-* | cydra-* \
+ | d10v-* | d30v-* \
+ | elxsi-* \
+ | f30[01]-* | f700-* | fr30-* | fx80-* \
+ | h8300-* | h8500-* \
+ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+ | i*86-* | i860-* | i960-* | ia64-* \
+ | m32r-* \
+ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+ | m88110-* | m88k-* | mcore-* \
+ | mips-* | mips16-* | mips64-* | mips64el-* | mips64orion-* \
+ | mips64orionel-* | mips64vr4100-* | mips64vr4100el-* \
+ | mips64vr4300-* | mips64vr4300el-* | mipsbe-* | mipseb-* \
+ | mipsle-* | mipsel-* | mipstx39-* | mipstx39el-* \
+ | none-* | np1-* | ns16k-* | ns32k-* \
+ | orion-* \
+ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+ | pyramid-* \
+ | romp-* | rs6000-* \
+ | sh-* | sh[34]-* | sh[34]eb-* | shbe-* | shle-* | sh64-* \
+ | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \
+ | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
+ | tahoe-* | thumb-* | tic30-* | tic54x-* | tic80-* | tron-* \
+ | v850-* | v850e-* | vax-* \
+ | we32k-* \
+ | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \
+ | xtensa-* \
+ | ymp-* \
+ | z8k-*)
+ ;;
+ # 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
+ ;;
+ 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
+ ;;
+ 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
+ ;;
+ crds | unos)
+ basic_machine=m68k-crds
+ ;;
+ cris | cris-* | etrax*)
+ basic_machine=cris-axis
+ ;;
+ 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
+ ;;
+ 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
+ ;;
+ mips3*-*)
+ basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
+ ;;
+ mips3*)
+ basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
+ ;;
+ mmix*)
+ basic_machine=mmix-knuth
+ os=-mmixware
+ ;;
+ 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
+ ;;
+ or32 | or32-*)
+ basic_machine=or32-unknown
+ os=-coff
+ ;;
+ 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)
+ basic_machine=i686-pc
+ ;;
+ pentiumii | pentium2)
+ basic_machine=i686-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-*)
+ basic_machine=i686-`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
+ ;;
+########################
+# changes for Apache
+#
+ as400*)
+ basic_machine=as400-ibm
+ ;;
+#
+# end Apache changes
+########################
+ sequent)
+ basic_machine=i386-sequent
+ ;;
+ sh)
+ basic_machine=sh-hitachi
+ os=-hms
+ ;;
+ 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
+ ;;
+ t3d)
+ basic_machine=alpha-cray
+ os=-unicos
+ ;;
+ t3e)
+ basic_machine=alphaev5-cray
+ os=-unicos
+ ;;
+ t90)
+ basic_machine=t90-cray
+ os=-unicos
+ ;;
+ tic54x | c54x*)
+ basic_machine=tic54x-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
+ ;;
+ 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
+ ;;
+ windows32)
+ basic_machine=i386-pc
+ os=-windows32-msvcrt
+ ;;
+ 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
+ ;;
+ 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
+ ;;
+ sh3 | sh4 | sh3eb | sh4eb)
+ basic_machine=sh-unknown
+ ;;
+ sh64)
+ basic_machine=sh64-unknown
+ ;;
+ sparc | 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
+ ;;
+ c4x*)
+ basic_machine=c4x-none
+ os=-coff
+ ;;
+ *-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|'`
+ ;;
+########################
+# changes for Apache
+#
+ -os2_emx | -tpf* | -os390* | -vmcms* | -os400* )
+ ;;
+#
+# end Apache changes
+########################
+ # 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* | -netbsd* | -openbsd* | -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* | -uxpv* | -beos* | -mpeix* | -udk* \
+ | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \
+ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+ | -morphos* | -superux* | -rtmk* | -rtmk-nova*)
+ # Remember, each alternative MUST END IN *, to match a version number.
+ ;;
+ -qnx*)
+ case $basic_machine in
+ x86-* | i*86-*)
+ ;;
+ *)
+ os=-nto$os
+ ;;
+ esac
+ ;;
+ -nto*)
+ os=-nto-qnx
+ ;;
+ -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+ | -windows* | -osx | -abug | -netware* | -os9* | -beos* \
+ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+ ;;
+ -mac*)
+ os=`echo $os | sed -e 's|mac|macos|'`
+ ;;
+ -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
+ ;;
+ -wince*)
+ os=-wince
+ ;;
+ -osfrose*)
+ os=-osfrose
+ ;;
+ -osf*)
+ os=-osf
+ ;;
+ -utek*)
+ os=-bsd
+ ;;
+ -dynix*)
+ os=-bsd
+ ;;
+ -acis*)
+ os=-aos
+ ;;
+ -atheos*)
+ os=-atheos
+ ;;
+ -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
+ ;;
+ -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
+ ;;
+ -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
+ ;;
+ # 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
+ ;;
+########################
+# changes for Apache
+#
+# *-ibm)
+# os=-aix
+# ;;
+#
+ *-ibm)
+ case $basic_machine in
+ s390*)
+ os=-os390;
+ ;;
+ i370*)
+ os=-mvs;
+ ;;
+ as400*)
+ os=-os400;
+ ;;
+ *)
+ os=-aix
+ ;;
+ esac
+ ;;
+#
+# end Apache changes
+########################
+
+ *-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
+ ;;
+ -ptx*)
+ vendor=sequent
+ ;;
+ -vxsim* | -vxworks*)
+ 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 0
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/conftools/expat.m4
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/conftools/expat.m4 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,43 @@
+dnl Check if --with-expat[=PREFIX] is specified and
+dnl Expat >= 1.95.0 is installed in the system.
+dnl If yes, substitute EXPAT_CFLAGS, EXPAT_LIBS with regard to
+dnl the specified PREFIX and set with_expat to PREFIX, or 'yes' if PREFIX
+dnl has not been specified. Also HAVE_LIBEXPAT, HAVE_EXPAT_H are defined.
+dnl If --with-expat has not been specified, set with_expat to 'no'.
+dnl In addition, an Automake conditional EXPAT_INSTALLED is set accordingly.
+dnl This is necessary to adapt a whole lot of packages that have expat
+dnl bundled as a static library.
+AC_DEFUN(AM_WITH_EXPAT,
+[ AC_ARG_WITH(expat,
+ [ --with-expat=PREFIX Use system Expat library],
+ , with_expat=no)
+
+ AM_CONDITIONAL(EXPAT_INSTALLED, test $with_expat != no)
+
+ EXPAT_CFLAGS=
+ EXPAT_LIBS=
+ if test $with_expat != no; then
+ if test $with_expat != yes; then
+ EXPAT_CFLAGS="-I$with_expat/include"
+ EXPAT_LIBS="-L$with_expat/lib"
+ fi
+ AC_CHECK_LIB(expat, XML_ParserCreate,
+ [ EXPAT_LIBS="$EXPAT_LIBS -lexpat"
+ expat_found=yes ],
+ [ expat_found=no ],
+ "$EXPAT_LIBS")
+ if test $expat_found = no; then
+ AC_MSG_ERROR([Could not find the Expat library])
+ fi
+ expat_save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS $EXPAT_CFLAGS"
+ AC_CHECK_HEADERS(expat.h, , expat_found=no)
+ if test $expat_found = no; then
+ AC_MSG_ERROR([Could not find expat.h])
+ fi
+ CFLAGS="$expat_save_CFLAGS"
+ fi
+
+ AC_SUBST(EXPAT_CFLAGS)
+ AC_SUBST(EXPAT_LIBS)
+])

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/conftools/get-version.sh
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/conftools/get-version.sh 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,46 @@
+#!/bin/sh
+#
+# USAGE: get-version.sh path/to/expat.h
+#
+# This script will print Expat's version number on stdout. For example:
+#
+# $ ./conftools/get-version.sh ./lib/expat.h
+# 1.95.3
+# $
+#
+
+if test $# = 0; then
+ echo "ERROR: pathname for expat.h was not provided."
+ echo ""
+ echo "USAGE: $0 path/to/expat.h"
+ exit 1
+fi
+if test $# != 1; then
+ echo "ERROR: too many arguments were provided."
+ echo ""
+ echo "USAGE: $0 path/to/expat.h"
+ exit 1
+fi
+
+hdr="$1"
+if test ! -r "$hdr"; then
+ echo "ERROR: '$hdr' does not exist, or is not readable."
+ exit 1
+fi
+
+MAJOR_VERSION="`sed -n -e '/MAJOR_VERSION/s/[^0-9]*//gp' $hdr`"
+MINOR_VERSION="`sed -n -e '/MINOR_VERSION/s/[^0-9]*//gp' $hdr`"
+MICRO_VERSION="`sed -n -e '/MICRO_VERSION/s/[^0-9]*//gp' $hdr`"
+
+# Determine how to tell echo not to print the trailing \n. This is
+# similar to Autoconf's @ECHO_C@ and @ECHO_N@; however, we don't
+# generate this file via autoconf (in fact, get-version.sh is used
+# to *create* ./configure), so we just do something similar inline.
+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+ *c*,-n*) ECHO_N= ECHO_C='
+' ;;
+ *c*,* ) ECHO_N=-n ECHO_C= ;;
+ *) ECHO_N= ECHO_C='\c' ;;
+esac
+
+echo $ECHO_N "$MAJOR_VERSION.$MINOR_VERSION.$MICRO_VERSION$ECHO_C"

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/conftools/install-sh
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/conftools/install-sh 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,251 @@
+#!/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 "install: no input file specified"
+ exit 1
+else
+ true
+fi
+
+if [ x"$dir_arg" != x ]; then
+ dst=$src
+ src=""
+
+ if [ -d $dst ]; then
+ instcmd=:
+ chmodcmd=""
+ else
+ instcmd=mkdir
+ 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 -o -d $src ]
+ then
+ true
+ else
+ echo "install: $src does not exist"
+ exit 1
+ fi
+
+ if [ x"$dst" = x ]
+ then
+ echo "install: no destination specified"
+ exit 1
+ else
+ true
+ 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
+ true
+ 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@/@%_at_g' -e 's@^%@/@'`
+IFS="${oIFS}"
+
+pathcomp=''
+
+while [ $# -ne 0 ] ; do
+ pathcomp="${pathcomp}${1}"
+ shift
+
+ if [ ! -d "${pathcomp}" ] ;
+ then
+ $mkdirprog "${pathcomp}"
+ else
+ true
+ fi
+
+ pathcomp="${pathcomp}/"
+done
+fi
+
+if [ x"$dir_arg" != x ]
+then
+ $doit $instcmd $dst &&
+
+ if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
+ if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
+ if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
+ if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; 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
+ true
+ fi
+
+# Make a temp file name in the proper directory.
+
+ dsttmp=$dstdir/#inst.$$#
+
+# Move or copy the file name to the temp name
+
+ $doit $instcmd $src $dsttmp &&
+
+ trap "rm -f ${dsttmp}" 0 &&
+
+# 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 true;fi &&
+ if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
+ if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
+ if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
+
+# Now rename the file to the real destination.
+
+ $doit $rmcmd -f $dstdir/$dstfile &&
+ $doit $mvcmd $dsttmp $dstdir/$dstfile
+
+fi &&
+
+
+exit 0

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/conftools/libtool.m4
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/conftools/libtool.m4 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,6397 @@
+# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
+## Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005
+## Free Software Foundation, Inc.
+## Originally by Gordon Matzigkeit <gord_at_[hidden]>, 1996
+##
+## 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 48 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 "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+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="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+ ;;
+ *)
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
+ ;;
+ 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
+
+# Use C for the default configuration in the libtool script
+tagname=
+AC_LIBTOOL_LANG_C_CONFIG
+_LT_AC_TAGCONFIG
+])# AC_LIBTOOL_SETUP
+
+
+# _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"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# 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; /^ *+/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; /^ *+/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 <<EOF
+[$]*
+EOF
+ exit 0
+fi
+
+# 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
+
+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*
+ ;;
+
+*-*-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
+ ;;
+sparc*-*solaris*)
+ # 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
+ *64-bit*)
+ case $lt_cv_prog_gnu_ld in
+ yes*) LD="${LD-ld} -m elf64_sparc" ;;
+ *) LD="${LD-ld} -64" ;;
+ esac
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+
+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 -e '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || 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 -e '/^$/d' > conftest.exp
+ $SED '/^$/d; /^ *+/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`
+ ;;
+
+ interix*)
+ # We know the value 262144 and hardcode it with a safety zone (like BSD)
+ lt_cv_sys_max_cmd_len=196608
+ ;;
+
+ 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
+ ;;
+ sco3.2v5*)
+ lt_cv_sys_max_cmd_len=102400
+ ;;
+ sysv5* | sco5v6* | sysv4.2uw2*)
+ kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+ if test -n "$kargmax"; then
+ lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'`
+ else
+ lt_cv_sys_max_cmd_len=32768
+ 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 <<EOF
+[#line __oline__ "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#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); */
+ }
+ else
+ puts (dlerror ());
+
+ 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_dlunknown|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"
+ wl=$lt_prog_compiler_wl 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
+ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+ 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 -e '/^$/d' > out/conftest.exp
+ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.er2 || 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<name>.so
+ # instead of lib<name>.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
+ ;;
+
+ *)
+ 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
+ version_type=freebsd-$objformat
+ 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
+ ;;
+ 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
+ ;;
+ freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \
+ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1)
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+ freebsd*) # from 4.6 on
+ shlibpath_overrides_runpath=yes
+ 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'
+ ;;
+
+interix3*)
+ 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'
+ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+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
+
+ # 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'
+ ;;
+
+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
+ sys_lib_dlsearch_path_spec="/usr/lib"
+ 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"
+ ;;
+
+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.3*)
+ 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
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ version_type=freebsd-elf
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ if test "$with_gnu_ld" = yes; then
+ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+ shlibpath_overrides_runpath=no
+ else
+ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+ shlibpath_overrides_runpath=yes
+ case $host_os in
+ sco3.2v5*)
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+ ;;
+ esac
+ fi
+ sys_lib_dlsearch_path_spec='/usr/lib'
+ ;;
+
+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
+
+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
+])# 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
+ if test -z "$LTCFLAGS"; then
+ eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`"
+ 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 <<EOF 1>&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_at_[hidden]
+
+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 </dev/null` in
+ *GNU* | *'with BFD'*)
+ test "$with_gnu_ld" != no && break
+ ;;
+ *)
+ test "$with_gnu_ld" != yes && break
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+else
+ lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi])
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+ AC_MSG_RESULT($LD)
+else
+ AC_MSG_RESULT(no)
+fi
+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
+AC_PROG_LD_GNU
+])# AC_PROG_LD
+
+
+# AC_PROG_LD_GNU
+# --------------
+AC_DEFUN([AC_PROG_LD_GNU],
+[AC_REQUIRE([AC_PROG_EGREP])dnl
+AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
+[# I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+ lt_cv_prog_gnu_ld=yes
+ ;;
+*)
+ lt_cv_prog_gnu_ld=no
+ ;;
+esac])
+with_gnu_ld=$lt_cv_prog_gnu_ld
+])# AC_PROG_LD_GNU
+
+
+# AC_PROG_LD_RELOAD_FLAG
+# ----------------------
+# find reload flag for linker
+# -- PORTME Some linkers may need a different reload flag.
+AC_DEFUN([AC_PROG_LD_RELOAD_FLAG],
+[AC_CACHE_CHECK([for $LD option to reload object files],
+ lt_cv_ld_reload_flag,
+ [lt_cv_ld_reload_flag='-r'])
+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='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+ else
+ reload_cmds='$LD$reload_flag -o $output$reload_objs'
+ fi
+ ;;
+esac
+])# AC_PROG_LD_RELOAD_FLAG
+
+
+# AC_DEPLIBS_CHECK_METHOD
+# -----------------------
+# how to check for library dependencies
+# -- PORTME fill in with the dynamic library characteristics
+AC_DEFUN([AC_DEPLIBS_CHECK_METHOD],
+[AC_CACHE_CHECK([how to recognise dependent libraries],
+lt_cv_deplibs_check_method,
+[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
+ ;;
+
+interix3*)
+ # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$'
+ ;;
+
+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
+ ;;
+
+solaris*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sysv4 | sysv4.3*)
+ 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
+ ;;
+ pc)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ esac
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | 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_nm_to_check="${ac_tool_prefix}nm"
+ if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+ lt_nm_to_check="$lt_nm_to_check nm"
+ fi
+ for lt_tmp_nm in $lt_nm_to_check; do
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ tmp_nm="$ac_dir/$lt_tmp_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"
+ done
+ 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
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+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
+
+# Report which library types will 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_shlibpath_var, $1)=unsupported
+_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
+ $as_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
+ $as_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 '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${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 '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_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'
+ # Exported symbols can be pulled into shared objects from archives
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+ _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 ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+ # Joseph Beckenbach <jrb3_at_[hidden]> 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
+ ;;
+
+ 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}--enable-auto-image-base -Xlinker --out-implib -Xlinker $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}--enable-auto-image-base -Xlinker --out-implib -Xlinker $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
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
+ ;;
+ *)
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ ;;
+ esac
+ fi
+ case $host_cpu in
+ hppa*64*|ia64*)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+ *)
+ _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*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ ia64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ *)
+ _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
+ hppa*64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ ia64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ *)
+ _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
+ ;;
+ interix3*)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+ # Instead, shared libraries are loaded at an image base (0x10000000 by
+ # default) and relocated if they conflict, which is a slow very memory
+ # consuming and fragmenting process. To avoid this, we pick a random,
+ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+ # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ ;;
+ 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
+ ;;
+ 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
+ ;;
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
+ _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ runpath_var='LD_RUN_PATH'
+
+ case $cc_basename in
+ CC*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ ;;
+ sysv5* | sco3.2v5* | sco5v6*)
+ # Note: We can NOT use -z defs as we might desire, because we do not
+ # link with -lc, and that would cause any symbols used from libc to
+ # always be unresolved, which means just about no library would
+ # ever link correctly. If we're not using GNU ld we use -z text
+ # though, which does catch some bad symbols but isn't as heavy-handed
+ # as -z defs.
+ # For security reasons, it is highly recommended that you always
+ # use absolute paths for naming shared libraries, and exclude the
+ # DT_RUNPATH tag from executables and libraries. But doing so
+ # requires that you compile everything twice, which is a pain.
+ # So that behaviour is only enabled if SCOABSPATH is set to a
+ # non-empty value in the environment. Most likely only useful for
+ # creating official distributions of packages.
+ # This is a hack until libtool officially supports absolute path
+ # names for shared libraries.
+ _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+
+ case $cc_basename in
+ CC*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ ;;
+ 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"
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+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_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 <<EOF
+int a;
+void foo (void) { a = 0; }
+EOF
+],[$1],[CXX],[cat > conftest.$ac_ext <<EOF
+class Foo
+{
+public:
+ Foo (void) { a = 0; }
+private:
+ int a;
+};
+EOF
+],[$1],[F77],[cat > conftest.$ac_ext <<EOF
+ subroutine foo
+ implicit none
+ integer*4 a
+ a=0
+ return
+ end
+EOF
+],[$1],[GCJ],[cat > conftest.$ac_ext <<EOF
+public class foo {
+ private int a;
+ public void bar (void) {
+ a = 0;
+ }
+};
+EOF
+])
+dnl Parse the compiler output and extract the necessary
+dnl objects, libraries and library flags.
+if AC_TRY_EVAL(ac_compile); 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 "$_LT_AC_TAGVAR(compiler_lib_search_path, $1)"; then
+ _LT_AC_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
+ else
+ _LT_AC_TAGVAR(compiler_lib_search_path, $1)="${_LT_AC_TAGVAR(compiler_lib_search_path, $1)} ${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 "$_LT_AC_TAGVAR(postdeps, $1)"; then
+ _LT_AC_TAGVAR(postdeps, $1)="${prev}${p}"
+ else
+ _LT_AC_TAGVAR(postdeps, $1)="${_LT_AC_TAGVAR(postdeps, $1)} ${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 "$_LT_AC_TAGVAR(predep_objects, $1)"; then
+ _LT_AC_TAGVAR(predep_objects, $1)="$p"
+ else
+ _LT_AC_TAGVAR(predep_objects, $1)="$_LT_AC_TAGVAR(predep_objects, $1) $p"
+ fi
+ else
+ if test -z "$_LT_AC_TAGVAR(postdep_objects, $1)"; then
+ _LT_AC_TAGVAR(postdep_objects, $1)="$p"
+ else
+ _LT_AC_TAGVAR(postdep_objects, $1)="$_LT_AC_TAGVAR(postdep_objects, $1) $p"
+ fi
+ fi
+ ;;
+
+ *) ;; # Ignore the rest.
+
+ esac
+ done
+
+ # Clean up.
+ rm -f a.out a.exe
+else
+ echo "libtool.m4: error: problem compiling $1 test program"
+fi
+
+$rm -f confest.$objext
+
+# PORTME: override above test on systems where it is broken
+ifelse([$1],[CXX],
+[case $host_os in
+interix3*)
+ # Interix 3.5 installs completely hosed .la files for C++, so rather than
+ # hack all around it, let's just trust "g++" to DTRT.
+ _LT_AC_TAGVAR(predep_objects,$1)=
+ _LT_AC_TAGVAR(postdep_objects,$1)=
+ _LT_AC_TAGVAR(postdeps,$1)=
+ ;;
+
+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.
+ _LT_AC_TAGVAR(postdeps,$1)='-lCstd -lCrun'
+ ;;
+ esac
+ ;;
+esac
+])
+
+case " $_LT_AC_TAGVAR(postdeps, $1) " in
+*" -lc "*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;;
+esac
+])# AC_LIBTOOL_POSTDEP_PREDEP
+
+# AC_LIBTOOL_LANG_F77_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_F77_CONFIG], [_LT_AC_LANG_F77_CONFIG(F77)])
+AC_DEFUN([_LT_AC_LANG_F77_CONFIG],
+[AC_REQUIRE([AC_PROG_F77])
+AC_LANG_PUSH(Fortran 77)
+
+_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
+
+# Source file extension for f77 test sources.
+ac_ext=f
+
+# Object file extension for compiled f77 test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$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.
+_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"
+CC=${F77-"f77"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+
+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])
+
+_LT_AC_TAGVAR(GCC, $1)="$G77"
+_LT_AC_TAGVAR(LD, $1)="$LD"
+
+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_CONFIG($1)
+
+AC_LANG_POP
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_F77_CONFIG
+
+
+# AC_LIBTOOL_LANG_GCJ_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_GCJ_CONFIG], [_LT_AC_LANG_GCJ_CONFIG(GCJ)])
+AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG],
+[AC_LANG_SAVE
+
+# Source file extension for Java test sources.
+ac_ext=java
+
+# Object file extension for compiled Java test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$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.
+_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"
+CC=${GCJ-"gcj"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+
+# GCJ did not exist at the time GCC didn't implicitly link libc in.
+_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+
+_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+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_CONFIG($1)
+
+AC_LANG_RESTORE
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_GCJ_CONFIG
+
+
+# AC_LIBTOOL_LANG_RC_CONFIG
+# -------------------------
+# Ensure that the configuration vars for the Windows resource 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_RC_CONFIG], [_LT_AC_LANG_RC_CONFIG(RC)])
+AC_DEFUN([_LT_AC_LANG_RC_CONFIG],
+[AC_LANG_SAVE
+
+# Source file extension for RC test sources.
+ac_ext=rc
+
+# Object file extension for compiled RC test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$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.
+_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"
+CC=${RC-"windres"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_RESTORE
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_RC_CONFIG
+
+
+# AC_LIBTOOL_CONFIG([TAGNAME])
+# ----------------------------
+# If TAGNAME is not passed, then create an initial libtool script
+# with a default configuration from the untagged config vars. Otherwise
+# add code to config.status for appending the configuration named by
+# TAGNAME from the matching tagged config vars.
+AC_DEFUN([AC_LIBTOOL_CONFIG],
+[# 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 LTCFLAGS 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 \
+ _LT_AC_TAGVAR(compiler, $1) \
+ _LT_AC_TAGVAR(CC, $1) \
+ _LT_AC_TAGVAR(LD, $1) \
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1) \
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1) \
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1) \
+ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) \
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1) \
+ _LT_AC_TAGVAR(thread_safe_flag_spec, $1) \
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1) \
+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) \
+ _LT_AC_TAGVAR(old_archive_cmds, $1) \
+ _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) \
+ _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) \
+ _LT_AC_TAGVAR(archive_cmds, $1) \
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1) \
+ _LT_AC_TAGVAR(postinstall_cmds, $1) \
+ _LT_AC_TAGVAR(postuninstall_cmds, $1) \
+ _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) \
+ _LT_AC_TAGVAR(allow_undefined_flag, $1) \
+ _LT_AC_TAGVAR(no_undefined_flag, $1) \
+ _LT_AC_TAGVAR(export_symbols_cmds, $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_automatic, $1) \
+ _LT_AC_TAGVAR(module_cmds, $1) \
+ _LT_AC_TAGVAR(module_expsym_cmds, $1) \
+ _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) \
+ _LT_AC_TAGVAR(exclude_expsyms, $1) \
+ _LT_AC_TAGVAR(include_expsyms, $1); do
+
+ case $var in
+ _LT_AC_TAGVAR(old_archive_cmds, $1) | \
+ _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) | \
+ _LT_AC_TAGVAR(archive_cmds, $1) | \
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1) | \
+ _LT_AC_TAGVAR(module_cmds, $1) | \
+ _LT_AC_TAGVAR(module_expsym_cmds, $1) | \
+ _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) | \
+ _LT_AC_TAGVAR(export_symbols_cmds, $1) | \
+ 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
+
+ifelse([$1], [],
+ [cfgfile="${ofile}T"
+ trap "$rm \"$cfgfile\"; exit 1" 1 2 15
+ $rm -f "$cfgfile"
+ AC_MSG_NOTICE([creating $ofile])],
+ [cfgfile="$ofile"])
+
+ cat <<__EOF__ >> "$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 <gord_at_[hidden]>, 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
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_LTCFLAGS
+
+# 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*)
+ symcode='[[BDRT]]'
+ ;;
+sco3.2v5*)
+ symcode='[[DT]]'
+ ;;
+sysv4.2uw2*)
+ symcode='[[DT]]'
+ ;;
+sysv5* | sco5v6* | unixware* | OpenUNIX*)
+ symcode='[[ABDT]]'
+ ;;
+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 <<EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+EOF
+
+ if AC_TRY_EVAL(ac_compile); then
+ # Now try to grab the symbols.
+ nlist=conftest.nm
+ if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $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 <<EOF > 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 <<EOF >> 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)=
+ ;;
+ interix3*)
+ # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+ # Instead, we relocate shared libraries at runtime.
+ ;;
+ 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)='${wl}-a ${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)='${wl}-a ${wl}archive'
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+ ;;
+ esac
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ interix*)
+ # This is c89, which is MS Visual C++ (no shared libs)
+ # Anyone wants to do a port?
+ ;;
+ 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*)
+ ;;
+ 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
+ ;;
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ case $cc_basename in
+ CC*)
+ _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'
+ ;;
+ esac
+ ;;
+ 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'
+ ;;
+
+ interix3*)
+ # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+ # Instead, we relocate shared libraries at runtime.
+ ;;
+
+ 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'
+ ;;
+
+ 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*)
+ _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
+ ;;
+
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ _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'
+ ;;
+
+ 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
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_AC_TAGVAR(lt_prog_compiler_static, $1)\"
+AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
+ _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1),
+ $lt_tmp_static_flag,
+ [],
+ [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=])
+])
+
+
+# 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
+ ;;
+ interix*)
+ # we just hope/assume this is gcc and not c89 (= MSVC++)
+ with_gnu_ld=yes
+ ;;
+ 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 <<EOF 1>&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 <kc5tja_at_[hidden]> 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 <jrb3_at_[hidden]> 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}--enable-auto-image-base -Xlinker --out-implib -Xlinker $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}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ interix3*)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+ # Instead, shared libraries are loaded at an image base (0x10000000 by
+ # default) and relocated if they conflict, which is a slow very memory
+ # consuming and fragmenting process. To avoid this, we pick a random,
+ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+ # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ ;;
+
+ 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*)
+ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ cat <<EOF 1>&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
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+ case `$LD -v 2>&1` in
+ *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*)
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+ ;;
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib'
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+
+ 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 "$lt_prog_compiler_static"; 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 '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${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 '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_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'
+ # Exported symbols can be pulled into shared objects from archives
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+ _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 ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${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*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ if test "$with_gnu_ld" = no; then
+ _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
+ fi
+ ;;
+
+ hpux11*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ case $host_cpu in
+ hppa*64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -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*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ fi
+ if test "$with_gnu_ld" = no; then
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+ *)
+ _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)=:
+ ;;
+
+ 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*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7*)
+ _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6*)
+ # Note: We can NOT use -z defs as we might desire, because we do not
+ # link with -lc, and that would cause any symbols used from libc to
+ # always be unresolved, which means just about no library would
+ # ever link correctly. If we're not using GNU ld we use -z text
+ # though, which does catch some bad symbols but isn't as heavy-handed
+ # as -z defs.
+ _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ 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
+
+#
+# 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)
+ pic_flag=$_LT_AC_TAGVAR(lt_prog_compiler_pic, $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 <windows.h>
+# #undef WIN32_LEAN_AND_MEAN
+# #include <stdio.h>
+#
+# #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 <cygwin/cygwin_dll.h>
+# 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])
+])

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/conftools/ltmain.sh
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/conftools/ltmain.sh 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,6863 @@
+# 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 <gord_at_[hidden]>, 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"
+
+# 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
+
+# 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 <<EOF
+$*
+EOF
+ exit $EXIT_SUCCESS
+fi
+
+default_mode=
+help="Try \`$progname --help' for more information."
+magic="%%%MAGIC variable%%%"
+mkdir="mkdir"
+mv="mv -f"
+rm="rm -f"
+
+# 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'
+# test EBCDIC or ASCII
+case `echo X|tr X '\101'` in
+ A) # ASCII based system
+ # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
+ SP2NL='tr \040 \012'
+ NL2SP='tr \015\012 \040\040'
+ ;;
+ *) # EBCDIC based system
+ SP2NL='tr \100 \n'
+ NL2SP='tr \r\n \100\100'
+ ;;
+esac
+
+# NLS nuisances.
+# Only set LANG and LC_ALL to C if already set.
+# These must not be set unconditionally because not all systems understand
+# e.g. LANG=C (notably SCO).
+# We save the old values to restore during execute mode.
+if test "${LC_ALL+set}" = set; then
+ save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL
+fi
+if test "${LANG+set}" = set; then
+ save_LANG="$LANG"; LANG=C; export LANG
+fi
+
+# Make sure IFS has a sensible default
+lt_nl='
+'
+IFS=" $lt_nl"
+
+if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
+ $echo "$modename: not configured to build any kind of library" 1>&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/"
+
+#####################################
+# 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
+ case "$@ " in
+ " $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 "$progpath" "$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 <<EOF
+# $libobj - a libtool object file
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+EOF
+
+ # Only build a PIC object if we are building libtool libraries.
+ if test "$build_libtool_libs" = yes; then
+ # Without this assignment, base_compile gets emptied.
+ fbsd_hideous_sh_bug=$base_compile
+
+ if test "$pic_mode" != no; then
+ command="$base_compile $qsrcfile $pic_flag"
+ else
+ # Don't build PIC code
+ command="$base_compile $qsrcfile"
+ fi
+
+ if test ! -d "${xdir}$objdir"; then
+ $show "$mkdir ${xdir}$objdir"
+ $run $mkdir ${xdir}$objdir
+ exit_status=$?
+ if test "$exit_status" -ne 0 && test ! -d "${xdir}$objdir"; then
+ exit $exit_status
+ fi
+ fi
+
+ if test -z "$output_obj"; then
+ # Place PIC objects in $objdir
+ command="$command -o $lobj"
+ fi
+
+ $run $rm "$lobj" "$output_obj"
+
+ $show "$command"
+ if $run eval "$command"; then :
+ else
+ test -n "$output_obj" && $run $rm $removelist
+ exit $EXIT_FAILURE
+ fi
+
+ if test "$need_locks" = warn &&
+ test "X`cat $lockfile 2>/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 <<EOF
+pic_object='$objdir/$objname'
+
+EOF
+
+ # Allow error messages only from the first compilation.
+ if test "$suppress_opt" = yes; then
+ suppress_output=' >/dev/null 2>&1'
+ fi
+ else
+ # No PIC object so indicate it doesn't exist in the libtool
+ # object file.
+ test -z "$run" && cat >> ${libobj}T <<EOF
+pic_object=none
+
+EOF
+ fi
+
+ # Only build a position-dependent object if we build old libraries.
+ if test "$build_old_libs" = yes; then
+ if test "$pic_mode" != yes; then
+ # Don't build PIC code
+ command="$base_compile $qsrcfile"
+ else
+ command="$base_compile $qsrcfile $pic_flag"
+ fi
+ if test "$compiler_c_o" = yes; then
+ command="$command -o $obj"
+ fi
+
+ # Suppress compiler output if we already did a PIC compilation.
+ command="$command$suppress_output"
+ $run $rm "$obj" "$output_obj"
+ $show "$command"
+ if $run eval "$command"; then :
+ else
+ $run $rm $removelist
+ exit $EXIT_FAILURE
+ fi
+
+ if test "$need_locks" = warn &&
+ test "X`cat $lockfile 2>/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 <<EOF
+# Name of the non-PIC object.
+non_pic_object='$objname'
+
+EOF
+ else
+ # 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 <<EOF
+# Name of the non-PIC object.
+non_pic_object=none
+
+EOF
+ fi
+
+ $run $mv "${libobj}T" "${libobj}"
+
+ # Unlock the critical section if it was locked
+ if test "$need_locks" != no; then
+ $run $rm "$lockfile"
+ fi
+
+ exit $EXIT_SUCCESS
+ ;;
+
+ # libtool link mode
+ link | relink)
+ modename="$modename: link"
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+ # It is impossible to link a dll without this setting, and
+ # we shouldn't force the makefile maintainer to figure out
+ # which system we are compiling for in order to pass an extra
+ # flag for every libtool invocation.
+ # allow_undefined=no
+
+ # FIXME: Unfortunately, there are problems with the above when trying
+ # to make a dll which has undefined symbols, in which case not
+ # even a static library is built. For now, we need to specify
+ # -no-undefined on the libtool link line when we can be certain
+ # that all symbols are satisfied, otherwise we get a static library.
+ allow_undefined=yes
+ ;;
+ *)
+ allow_undefined=yes
+ ;;
+ esac
+ libtool_args="$nonopt"
+ base_compile="$nonopt $@"
+ compile_command="$nonopt"
+ finalize_command="$nonopt"
+
+ compile_rpath=
+ finalize_rpath=
+ compile_shlibpath=
+ finalize_shlibpath=
+ convenience=
+ old_convenience=
+ deplibs=
+ old_deplibs=
+ compiler_flags=
+ linker_flags=
+ dllsearchpath=
+ lib_search_path=`pwd`
+ inst_prefix_dir=
+
+ avoid_version=no
+ dlfiles=
+ dlprefiles=
+ dlself=no
+ export_dynamic=no
+ export_symbols=
+ export_symbols_regex=
+ generated=
+ libobjs=
+ ltlibs=
+ module=no
+ no_install=no
+ objs=
+ non_pic_objects=
+ notinst_path= # paths that contain not-installed libtool libraries
+ precious_files_regex=
+ prefer_static_libs=no
+ preload=no
+ prev=
+ prevarg=
+ release=
+ rpath=
+ xrpath=
+ perm_rpath=
+ temp_rpath=
+ thread_safe=no
+ vinfo=
+ vinfo_number=no
+
+ func_infer_tag $base_compile
+
+ # We need to know -static, to get the right output filenames.
+ for arg
+ do
+ case $arg in
+ -all-static | -static)
+ if test "X$arg" = "X-all-static"; then
+ if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
+ $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&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 <<EOF
+ int main() { return 0; }
+EOF
+ $rm conftest
+ $LTCC $LTCFLAGS -o conftest conftest.c $deplibs
+ if test "$?" -eq 0 ; then
+ ldd_output=`ldd conftest`
+ for i in $deplibs; do
+ name=`expr $i : '-l\(.*\)'`
+ # If $name is empty we are operating on a -L argument.
+ if test "$name" != "" && test "$name" -ne "0"; then
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $i "*)
+ newdeplibs="$newdeplibs $i"
+ i=""
+ ;;
+ esac
+ fi
+ if test -n "$i" ; then
+ libname=`eval \\$echo \"$libname_spec\"`
+ deplib_matches=`eval \\$echo \"$library_names_spec\"`
+ set dummy $deplib_matches
+ deplib_match=$2
+ if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+ newdeplibs="$newdeplibs $i"
+ else
+ droppeddeps=yes
+ $echo
+ $echo "*** Warning: dynamic linker does not accept needed library $i."
+ $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 I believe you do not have"
+ $echo "*** because a test_compile did reveal that the linker did not use it for"
+ $echo "*** its dynamic dependency list that programs get resolved with at runtime."
+ fi
+ fi
+ else
+ newdeplibs="$newdeplibs $i"
+ fi
+ done
+ else
+ # Error occurred in the first compile. Let's try to salvage
+ # the situation: Compile a separate program for each library.
+ for i in $deplibs; do
+ name=`expr $i : '-l\(.*\)'`
+ # If $name is empty we are operating on a -L argument.
+ if test "$name" != "" && test "$name" != "0"; then
+ $rm conftest
+ $LTCC $LTCFLAGS -o conftest conftest.c $i
+ # Did it work?
+ if test "$?" -eq 0 ; then
+ ldd_output=`ldd conftest`
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $i "*)
+ newdeplibs="$newdeplibs $i"
+ i=""
+ ;;
+ esac
+ fi
+ if test -n "$i" ; then
+ libname=`eval \\$echo \"$libname_spec\"`
+ deplib_matches=`eval \\$echo \"$library_names_spec\"`
+ set dummy $deplib_matches
+ deplib_match=$2
+ if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+ newdeplibs="$newdeplibs $i"
+ else
+ droppeddeps=yes
+ $echo
+ $echo "*** Warning: dynamic linker does not accept needed library $i."
+ $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 a test_compile did reveal that the linker did not use this one"
+ $echo "*** as a dynamic dependency that programs can get resolved with at runtime."
+ fi
+ fi
+ else
+ droppeddeps=yes
+ $echo
+ $echo "*** Warning! Library $i is needed by this library but I was not able to"
+ $echo "*** make it link in! You will probably need to install it or some"
+ $echo "*** library that it depends on before this library will be fully"
+ $echo "*** functional. Installing it before continuing would be even better."
+ fi
+ else
+ newdeplibs="$newdeplibs $i"
+ fi
+ done
+ fi
+ ;;
+ file_magic*)
+ set dummy $deplibs_check_method
+ file_magic_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 "$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
+ # 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
+ 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 >/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%_at_SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"`
+ finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%_at_SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"`
+ else
+ compile_command=`$echo "X$compile_command" | $Xsed -e "s%_at_SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+ finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%_at_SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+ fi
+ ;;
+ * )
+ compile_command=`$echo "X$compile_command" | $Xsed -e "s%_at_SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+ finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%_at_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%_at_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%_at_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%_at_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%_at_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 <<EOF
+
+/* $cwrappersource - temporary wrapper executable 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 executable should never be moved out of the build directory.
+ If it is, it will not operate correctly.
+
+ Currently, it simply execs the wrapper *script* "/bin/sh $output",
+ but could eventually absorb all of the scripts functionality and
+ exec $objdir/$outputname directly.
+*/
+EOF
+ cat >> $cwrappersource<<"EOF"
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <malloc.h>
+#include <stdarg.h>
+#include <assert.h>
+#include <string.h>
+#include <ctype.h>
+#include <sys/stat.h>
+
+#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 <<EOF
+ newargz[0] = (char *) xstrdup("$SHELL");
+EOF
+
+ cat >> $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<argc+1; i++)
+ {
+ DEBUG("(main) newargz[%d] : %s\n",i,newargz[i]);
+ ;
+ }
+
+EOF
+
+ case $host_os in
+ mingw*)
+ cat >> $cwrappersource <<EOF
+ execv("$SHELL",(char const **)newargz);
+EOF
+ ;;
+ *)
+ cat >> $cwrappersource <<EOF
+ execv("$SHELL",newargz);
+EOF
+ ;;
+ esac
+
+ cat >> $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.
+"
+ 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
+ newdependency_libs="$newdependency_libs $libdir/$name"
+ ;;
+ *) newdependency_libs="$newdependency_libs $deplib" ;;
+ 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
+ $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%_at_inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
+ else
+ relink_command=`$echo "$relink_command" | $SED "s%_at_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%_at_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 <bug-libtool_at_[hidden]>."
+ 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:

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/conftools/mkinstalldirs
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/conftools/mkinstalldirs 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,40 @@
+#! /bin/sh
+# mkinstalldirs --- make directory hierarchy
+# Author: Noah Friedman <friedman_at_[hidden]>
+# Created: 1993-05-16
+# Public domain
+
+# $Id$
+
+errstatus=0
+
+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
+ fi
+ fi
+
+ pathcomp="$pathcomp/"
+ done
+done
+
+exit $errstatus
+
+# mkinstalldirs ends here

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/doc/expat.png
==============================================================================
Binary file. No diff available.

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/doc/reference.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/doc/reference.html 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,2334 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+<!-- Copyright 1999,2000 Clark Cooper <coopercc_at_[hidden]>
+ All rights reserved.
+ This is free software. You may distribute or modify according to
+ the terms of the MIT/X License -->
+ <title>Expat XML Parser</title>
+ <meta name="author" content="Clark Cooper, coopercc_at_[hidden]" />
+ <meta http-equiv="Content-Style-Type" content="text/css" />
+ <link href="style.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+ <table cellspacing="0" cellpadding="0" width="100%">
+ <tr>
+ <td class="corner"><img src="expat.png" alt="(Expat logo)" /></td>
+ <td class="banner"><h1>The Expat XML Parser</h1></td>
+ </tr>
+ <tr>
+ <td class="releaseno">Release 2.0.0</td>
+ <td></td>
+ </tr>
+ </table>
+<div class="content">
+
+<p>Expat is a library, written in C, for parsing XML documents. It's
+the underlying XML parser for the open source Mozilla project, Perl's
+<code>XML::Parser</code>, Python's <code>xml.parsers.expat</code>, and
+other open-source XML parsers.</p>
+
+<p>This library is the creation of James Clark, who's also given us
+groff (an nroff look-alike), Jade (an implemention of ISO's DSSSL
+stylesheet language for SGML), XP (a Java XML parser package), XT (a
+Java XSL engine). James was also the technical lead on the XML
+Working Group at W3C that produced the XML specification.</p>
+
+<p>This is free software, licensed under the <a
+href="../COPYING">MIT/X Consortium license</a>. You may download it
+from the Expat home page.
+</p>
+
+<p>The bulk of this document was originally commissioned as an article
+by XML.com. They graciously allowed
+Clark Cooper to retain copyright and to distribute it with Expat.
+This version has been substantially extended to include documentation
+on features which have been added since the original article was
+published, and additional information on using the original
+interface.</p>
+
+<hr />
+<h2>Table of Contents</h2>
+<ul>
+ <li>Overview</li>
+ <li>Building and Installing</li>
+ <li>Using Expat</li>
+ <li>Reference
+ <ul>
+ <li>Parser Creation Functions
+ <ul>
+ <li>XML_ParserCreate</li>
+ <li>XML_ParserCreateNS</li>
+ <li>XML_ParserCreate_MM</li>
+ <li>XML_ExternalEntityParserCreate</li>
+ <li>XML_ParserFree</li>
+ <li>XML_ParserReset</li>
+ </ul>
+ </li>
+ <li>Parsing Functions
+ <ul>
+ <li>XML_Parse</li>
+ <li>XML_ParseBuffer</li>
+ <li>XML_GetBuffer</li>
+ <li>XML_StopParser</li>
+ <li>XML_ResumeParser</li>
+ <li>XML_GetParsingStatus</li>
+ </ul>
+ </li>
+ <li>Handler Setting Functions
+ <ul>
+ <li>XML_SetStartElementHandler</li>
+ <li>XML_SetEndElementHandler</li>
+ <li>XML_SetElementHandler</li>
+ <li>XML_SetCharacterDataHandler</li>
+ <li>XML_SetProcessingInstructionHandler</li>
+ <li>XML_SetCommentHandler</li>
+ <li>XML_SetStartCdataSectionHandler</li>
+ <li>XML_SetEndCdataSectionHandler</li>
+ <li>XML_SetCdataSectionHandler</li>
+ <li>XML_SetDefaultHandler</li>
+ <li>XML_SetDefaultHandlerExpand</li>
+ <li>XML_SetExternalEntityRefHandler</li>
+ <li>XML_SetExternalEntityRefHandlerArg</li>
+ <li>XML_SetSkippedEntityHandler</li>
+ <li>XML_SetUnknownEncodingHandler</li>
+ <li>XML_SetStartNamespaceDeclHandler</li>
+ <li>XML_SetEndNamespaceDeclHandler</li>
+ <li>XML_SetNamespaceDeclHandler</li>
+ <li>XML_SetXmlDeclHandler</li>
+ <li>XML_SetStartDoctypeDeclHandler</li>
+ <li>XML_SetEndDoctypeDeclHandler</li>
+ <li>XML_SetDoctypeDeclHandler</li>
+ <li>XML_SetElementDeclHandler</li>
+ <li>XML_SetAttlistDeclHandler</li>
+ <li>XML_SetEntityDeclHandler</li>
+ <li>XML_SetUnparsedEntityDeclHandler</li>
+ <li>XML_SetNotationDeclHandler</li>
+ <li>XML_SetNotStandaloneHandler</li>
+ </ul>
+ </li>
+ <li>Parse Position and Error Reporting Functions
+ <ul>
+ <li>XML_GetErrorCode</li>
+ <li>XML_ErrorString</li>
+ <li>XML_GetCurrentByteIndex</li>
+ <li>XML_GetCurrentLineNumber</li>
+ <li>XML_GetCurrentColumnNumber</li>
+ <li>XML_GetCurrentByteCount</li>
+ <li>XML_GetInputContext</li>
+ </ul>
+ </li>
+ <li>Miscellaneous Functions
+ <ul>
+ <li>XML_SetUserData</li>
+ <li>XML_GetUserData</li>
+ <li>XML_UseParserAsHandlerArg</li>
+ <li>XML_SetBase</li>
+ <li>XML_GetBase</li>
+ <li>XML_GetSpecifiedAttributeCount</li>
+ <li>XML_GetIdAttributeIndex</li>
+ <li>XML_SetEncoding</li>
+ <li>XML_SetParamEntityParsing</li>
+ <li>XML_UseForeignDTD</li>
+ <li>XML_SetReturnNSTriplet</li>
+ <li>XML_DefaultCurrent</li>
+ <li>XML_ExpatVersion</li>
+ <li>XML_ExpatVersionInfo</li>
+ <li>XML_GetFeatureList</li>
+ <li>XML_FreeContentModel</li>
+ <li>XML_MemMalloc</li>
+ <li>XML_MemRealloc</li>
+ <li>XML_MemFree</li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+</ul>
+
+<hr />
+<h2><a name="overview">Overview</a></h2>
+
+<p>Expat is a stream-oriented parser. You register callback (or
+handler) functions with the parser and then start feeding it the
+document. As the parser recognizes parts of the document, it will
+call the appropriate handler for that part (if you've registered one.)
+The document is fed to the parser in pieces, so you can start parsing
+before you have all the document. This also allows you to parse really
+huge documents that won't fit into memory.</p>
+
+<p>Expat can be intimidating due to the many kinds of handlers and
+options you can set. But you only need to learn four functions in
+order to do 90% of what you'll want to do with it:</p>
+
+<dl>
+
+<dt><code><a href= "#XML_ParserCreate"
+ >XML_ParserCreate</a></code></dt>
+ <dd>Create a new parser object.</dd>
+
+<dt><code><a href= "#XML_SetElementHandler"
+ >XML_SetElementHandler</a></code></dt>
+ <dd>Set handlers for start and end tags.</dd>
+
+<dt><code><a href= "#XML_SetCharacterDataHandler"
+ >XML_SetCharacterDataHandler</a></code></dt>
+ <dd>Set handler for text.</dd>
+
+<dt><code><a href= "#XML_Parse"
+ >XML_Parse</a></code></dt>
+ <dd>Pass a buffer full of document to the parser</dd>
+</dl>
+
+<p>These functions and others are described in the <a
+href="#reference">reference</a> part of this document. The reference
+section also describes in detail the parameters passed to the
+different types of handlers.</p>
+
+<p>Let's look at a very simple example program that only uses 3 of the
+above functions (it doesn't need to set a character handler.) The
+program outline.c prints an
+element outline, indenting child elements to distinguish them from the
+parent element that contains them. The start handler does all the
+work. It prints two indenting spaces for every level of ancestor
+elements, then it prints the element and attribute
+information. Finally it increments the global <code>Depth</code>
+variable.</p>
+
+<pre class="eg">
+int Depth;
+
+void XMLCALL
+start(void *data, const char *el, const char **attr) {
+ int i;
+
+ for (i = 0; i &lt; Depth; i++)
+ printf(" ");
+
+ printf("%s", el);
+
+ for (i = 0; attr[i]; i += 2) {
+ printf(" %s='%s'", attr[i], attr[i + 1]);
+ }
+
+ printf("\n");
+ Depth++;
+} /* End of start handler */
+</pre>
+
+<p>The end tag simply does the bookkeeping work of decrementing
+<code>Depth</code>.</p>
+<pre class="eg">
+void XMLCALL
+end(void *data, const char *el) {
+ Depth--;
+} /* End of end handler */
+</pre>
+
+<p>Note the <code>XMLCALL</code> annotation used for the callbacks.
+This is used to ensure that the Expat and the callbacks are using the
+same calling convention in case the compiler options used for Expat
+itself and the client code are different. Expat tries not to care
+what the default calling convention is, though it may require that it
+be compiled with a default convention of "cdecl" on some platforms.
+For code which uses Expat, however, the calling convention is
+specified by the <code>XMLCALL</code> annotation on most platforms;
+callbacks should be defined using this annotation.</p>
+
+<p>The <code>XMLCALL</code> annotation was added in Expat 1.95.7, but
+existing working Expat applications don't need to add it (since they
+are already using the "cdecl" calling convention, or they wouldn't be
+working). The annotation is only needed if the default calling
+convention may be something other than "cdecl". To use the annotation
+safely with older versions of Expat, you can conditionally define it
+<em>after</em> including Expat's header file:</p>
+
+<pre class="eg">
+#include &lt;expat.h&gt;
+
+#ifndef XMLCALL
+#if defined(_MSC_EXTENSIONS) &amp;&amp; !defined(__BEOS__) &amp;&amp; !defined(__CYGWIN__)
+#define XMLCALL __cdecl
+#elif defined(__GNUC__)
+#define XMLCALL __attribute__((cdecl))
+#else
+#define XMLCALL
+#endif
+#endif
+</pre>
+
+<p>After creating the parser, the main program just has the job of
+shoveling the document to the parser so that it can do its work.</p>
+
+<hr />
+<h2><a name="building">Building and Installing Expat</a></h2>
+
+<p>The Expat distribution comes as a compressed (with GNU gzip) tar
+file. You may download the latest version from <a href=
+"http://sourceforge.net/projects/expat/" >Source Forge</a>. After
+unpacking this, cd into the directory. Then follow either the Win32
+directions or Unix directions below.</p>
+
+<h3>Building under Win32</h3>
+
+<p>If you're using the GNU compiler under cygwin, follow the Unix
+directions in the next section. Otherwise if you have Microsoft's
+Developer Studio installed, then from Windows Explorer double-click on
+"expat.dsp" in the lib directory and build and install in the usual
+manner.</p>
+
+<p>Alternatively, you may download the Win32 binary package that
+contains the "expat.h" include file and a pre-built DLL.</p>
+
+<h3>Building under Unix (or GNU)</h3>
+
+<p>First you'll need to run the configure shell script in order to
+configure the Makefiles and headers for your system.</p>
+
+<p>If you're happy with all the defaults that configure picks for you,
+and you have permission on your system to install into /usr/local, you
+can install Expat with this sequence of commands:</p>
+
+<pre class="eg">
+./configure
+make
+make install
+</pre>
+
+<p>There are some options that you can provide to this script, but the
+only one we'll mention here is the <code>--prefix</code> option. You
+can find out all the options available by running configure with just
+the <code>--help</code> option.</p>
+
+<p>By default, the configure script sets things up so that the library
+gets installed in <code>/usr/local/lib</code> and the associated
+header file in <code>/usr/local/include</code>. But if you were to
+give the option, <code>--prefix=/home/me/mystuff</code>, then the
+library and header would get installed in
+<code>/home/me/mystuff/lib</code> and
+<code>/home/me/mystuff/include</code> respectively.</p>
+
+<h3>Configuring Expat Using the Pre-Processor</h3>
+
+<p>Expat's feature set can be configured using a small number of
+pre-processor definitions. The definition of this symbols does not
+affect the set of entry points for Expat, only the behavior of the API
+and the definition of character types in the case of
+<code>XML_UNICODE_WCHAR_T</code>. The symbols are:</p>
+
+<dl class="cpp-symbols">
+<dt>XML_DTD</dt>
+<dd>Include support for using and reporting DTD-based content. If
+this is defined, default attribute values from an external DTD subset
+are reported and attribute value normalization occurs based on the
+type of attributes defined in the external subset. Without
+this, Expat has a smaller memory footprint and can be faster, but will
+not load external entities or process conditional sections. This does
+not affect the set of functions available in the API.</dd>
+
+<dt>XML_NS</dt>
+<dd>When defined, support for the <cite><a href=
+"http://www.w3.org/TR/REC-xml-names/" >Namespaces in XML</a></cite>
+specification is included.</dd>
+
+<dt>XML_UNICODE</dt>
+<dd>When defined, character data reported to the application is
+encoded in UTF-16 using wide characters of the type
+<code>XML_Char</code>. This is implied if
+<code>XML_UNICODE_WCHAR_T</code> is defined.</dd>
+
+<dt>XML_UNICODE_WCHAR_T</dt>
+<dd>If defined, causes the <code>XML_Char</code> character type to be
+defined using the <code>wchar_t</code> type; otherwise, <code>unsigned
+short</code> is used. Defining this implies
+<code>XML_UNICODE</code>.</dd>
+
+<dt>XML_LARGE_SIZE</dt>
+<dd>If defined, causes the <code>XML_Size</code> and <code>XML_Index</code>
+integer types to be at least 64 bits in size. This is intended to support
+processing of very large input streams, where the return values of
+<code>XML_GetCurrentByteIndex</code>,
+<code>XML_GetCurrentLineNumber</code> and
+<code>XML_GetCurrentColumnNumber</code>
+could overflow. It may not be supported by all compilers, and is turned
+off by default.</dd>
+
+<dt>XML_CONTEXT_BYTES</dt>
+<dd>The number of input bytes of markup context which the parser will
+ensure are available for reporting via <code><a href=
+"#XML_GetInputContext" >XML_GetInputContext</a></code>. This is
+normally set to 1024, and must be set to a positive interger. If this
+is not defined, the input context will not be available and <code><a
+href= "#XML_GetInputContext" >XML_GetInputContext</a></code> will
+always report NULL. Without this, Expat has a smaller memory
+footprint and can be faster.</dd>
+
+<dt>XML_STATIC</dt>
+<dd>On Windows, this should be set if Expat is going to be linked
+statically with the code that calls it; this is required to get all
+the right MSVC magic annotations correct. This is ignored on other
+platforms.</dd>
+</dl>
+
+<hr />
+<h2><a name="using">Using Expat</a></h2>
+
+<h3>Compiling and Linking Against Expat</h3>
+
+<p>Unless you installed Expat in a location not expected by your
+compiler and linker, all you have to do to use Expat in your programs
+is to include the Expat header (<code>#include &lt;expat.h&gt;</code>)
+in your files that make calls to it and to tell the linker that it
+needs to link against the Expat library. On Unix systems, this would
+usually be done with the <code>-lexpat</code> argument. Otherwise,
+you'll need to tell the compiler where to look for the Expat header
+and the linker where to find the Expat library. You may also need to
+take steps to tell the operating system where to find this libary at
+run time.</p>
+
+<p>On a Unix-based system, here's what a Makefile might look like when
+Expat is installed in a standard location:</p>
+
+<pre class="eg">
+CC=cc
+LDFLAGS=
+LIBS= -lexpat
+xmlapp: xmlapp.o
+ $(CC) $(LDFLAGS) -o xmlapp xmlapp.o $(LIBS)
+</pre>
+
+<p>If you installed Expat in, say, <code>/home/me/mystuff</code>, then
+the Makefile would look like this:</p>
+
+<pre class="eg">
+CC=cc
+CFLAGS= -I/home/me/mystuff/include
+LDFLAGS=
+LIBS= -L/home/me/mystuff/lib -lexpat
+xmlapp: xmlapp.o
+ $(CC) $(LDFLAGS) -o xmlapp xmlapp.o $(LIBS)
+</pre>
+
+<p>You'd also have to set the environment variable
+<code>LD_LIBRARY_PATH</code> to <code>/home/me/mystuff/lib</code> (or
+to <code>${LD_LIBRARY_PATH}:/home/me/mystuff/lib</code> if
+LD_LIBRARY_PATH already has some directories in it) in order to run
+your application.</p>
+
+<h3>Expat Basics</h3>
+
+<p>As we saw in the example in the overview, the first step in parsing
+an XML document with Expat is to create a parser object. There are <a
+href="#creation">three functions</a> in the Expat API for creating a
+parser object. However, only two of these (<code><a href=
+"#XML_ParserCreate" >XML_ParserCreate</a></code> and <code><a href=
+"#XML_ParserCreateNS" >XML_ParserCreateNS</a></code>) can be used for
+constructing a parser for a top-level document. The object returned
+by these functions is an opaque pointer (i.e. "expat.h" declares it as
+void *) to data with further internal structure. In order to free the
+memory associated with this object you must call <code><a href=
+"#XML_ParserFree" >XML_ParserFree</a></code>. Note that if you have
+provided any user data that gets stored in the
+parser, then your application is responsible for freeing it prior to
+calling <code>XML_ParserFree</code>.</p>
+
+<p>The objects returned by the parser creation functions are good for
+parsing only one XML document or external parsed entity. If your
+application needs to parse many XML documents, then it needs to create
+a parser object for each one. The best way to deal with this is to
+create a higher level object that contains all the default
+initialization you want for your parser objects.</p>
+
+<p>Walking through a document hierarchy with a stream oriented parser
+will require a good stack mechanism in order to keep track of current
+context. For instance, to answer the simple question, "What element
+does this text belong to?" requires a stack, since the parser may have
+descended into other elements that are children of the current one and
+has encountered this text on the way out.</p>
+
+<p>The things you're likely to want to keep on a stack are the
+currently opened element and it's attributes. You push this
+information onto the stack in the start handler and you pop it off in
+the end handler.</p>
+
+<p>For some tasks, it is sufficient to just keep information on what
+the depth of the stack is (or would be if you had one.) The outline
+program shown above presents one example. Another such task would be
+skipping over a complete element. When you see the start tag for the
+element you want to skip, you set a skip flag and record the depth at
+which the element started. When the end tag handler encounters the
+same depth, the skipped element has ended and the flag may be
+cleared. If you follow the convention that the root element starts at
+1, then you can use the same variable for skip flag and skip
+depth.</p>
+
+<pre class="eg">
+void
+init_info(Parseinfo *info) {
+ info->skip = 0;
+ info->depth = 1;
+ /* Other initializations here */
+} /* End of init_info */
+
+void XMLCALL
+rawstart(void *data, const char *el, const char **attr) {
+ Parseinfo *inf = (Parseinfo *) data;
+
+ if (! inf->skip) {
+ if (should_skip(inf, el, attr)) {
+ inf->skip = inf->depth;
+ }
+ else
+ start(inf, el, attr); /* This does rest of start handling */
+ }
+
+ inf->depth++;
+} /* End of rawstart */
+
+void XMLCALL
+rawend(void *data, const char *el) {
+ Parseinfo *inf = (Parseinfo *) data;
+
+ inf->depth--;
+
+ if (! inf->skip)
+ end(inf, el); /* This does rest of end handling */
+
+ if (inf->skip == inf->depth)
+ inf->skip = 0;
+} /* End rawend */
+</pre>
+
+<p>Notice in the above example the difference in how depth is
+manipulated in the start and end handlers. The end tag handler should
+be the mirror image of the start tag handler. This is necessary to
+properly model containment. Since, in the start tag handler, we
+incremented depth <em>after</em> the main body of start tag code, then
+in the end handler, we need to manipulate it <em>before</em> the main
+body. If we'd decided to increment it first thing in the start
+handler, then we'd have had to decrement it last thing in the end
+handler.</p>
+
+<h3 id="userdata">Communicating between handlers</h3>
+
+<p>In order to be able to pass information between different handlers
+without using globals, you'll need to define a data structure to hold
+the shared variables. You can then tell Expat (with the <code><a href=
+"#XML_SetUserData" >XML_SetUserData</a></code> function) to pass a
+pointer to this structure to the handlers. This is the first
+argument received by most handlers. In the <a href="#reference"
+>reference section</a>, an argument to a callback function is named
+<code>userData</code> and have type <code>void *</code> if the user
+data is passed; it will have the type <code>XML_Parser</code> if the
+parser itself is passed. When the parser is passed, the user data may
+be retrieved using <code><a href="#XML_GetUserData"
+>XML_GetUserData</a></code>.</p>
+
+<p>One common case where multiple calls to a single handler may need
+to communicate using an application data structure is the case when
+content passed to the character data handler (set by <code><a href=
+"#XML_SetCharacterDataHandler"
+>XML_SetCharacterDataHandler</a></code>) needs to be accumulated. A
+common first-time mistake with any of the event-oriented interfaces to
+an XML parser is to expect all the text contained in an element to be
+reported by a single call to the character data handler. Expat, like
+many other XML parsers, reports such data as a sequence of calls;
+there's no way to know when the end of the sequence is reached until a
+different callback is made. A buffer referenced by the user data
+structure proves both an effective and convenient place to accumulate
+character data.</p>
+
+<!-- XXX example needed here -->
+
+
+<h3>XML Version</h3>
+
+<p>Expat is an XML 1.0 parser, and as such never complains based on
+the value of the <code>version</code> pseudo-attribute in the XML
+declaration, if present.</p>
+
+<p>If an application needs to check the version number (to support
+alternate processing), it should use the <code><a href=
+"#XML_SetXmlDeclHandler" >XML_SetXmlDeclHandler</a></code> function to
+set a handler that uses the information in the XML declaration to
+determine what to do. This example shows how to check that only a
+version number of <code>"1.0"</code> is accepted:</p>
+
+<pre class="eg">
+static int wrong_version;
+static XML_Parser parser;
+
+static void XMLCALL
+xmldecl_handler(void *userData,
+ const XML_Char *version,
+ const XML_Char *encoding,
+ int standalone)
+{
+ static const XML_Char Version_1_0[] = {'1', '.', '0', 0};
+
+ int i;
+
+ for (i = 0; i &lt; (sizeof(Version_1_0) / sizeof(Version_1_0[0])); ++i) {
+ if (version[i] != Version_1_0[i]) {
+ wrong_version = 1;
+ /* also clear all other handlers: */
+ XML_SetCharacterDataHandler(parser, NULL);
+ ...
+ return;
+ }
+ }
+ ...
+}
+</pre>
+
+<h3>Namespace Processing</h3>
+
+<p>When the parser is created using the <code><a href=
+"#XML_ParserCreateNS" >XML_ParserCreateNS</a></code>, function, Expat
+performs namespace processing. Under namespace processing, Expat
+consumes <code>xmlns</code> and <code>xmlns:...</code> attributes,
+which declare namespaces for the scope of the element in which they
+occur. This means that your start handler will not see these
+attributes. Your application can still be informed of these
+declarations by setting namespace declaration handlers with <a href=
+"#XML_SetNamespaceDeclHandler"
+><code>XML_SetNamespaceDeclHandler</code></a>.</p>
+
+<p>Element type and attribute names that belong to a given namespace
+are passed to the appropriate handler in expanded form. By default
+this expanded form is a concatenation of the namespace URI, the
+separator character (which is the 2nd argument to <code><a href=
+"#XML_ParserCreateNS" >XML_ParserCreateNS</a></code>), and the local
+name (i.e. the part after the colon). Names with undeclared prefixes
+are not well-formed when namespace processing is enabled, and will
+trigger an error. Unprefixed attribute names are never expanded,
+and unprefixed element names are only expanded when they are in the
+scope of a default namespace.</p>
+
+<p>However if <code><a href= "#XML_SetReturnNSTriplet"
+>XML_SetReturnNSTriplet</a></code> has been called with a non-zero
+<code>do_nst</code> parameter, then the expanded form for names with
+an explicit prefix is a concatenation of: URI, separator, local name,
+separator, prefix.</p>
+
+<p>You can set handlers for the start of a namespace declaration and
+for the end of a scope of a declaration with the <code><a href=
+"#XML_SetNamespaceDeclHandler" >XML_SetNamespaceDeclHandler</a></code>
+function. The StartNamespaceDeclHandler is called prior to the start
+tag handler and the EndNamespaceDeclHandler is called after the
+corresponding end tag that ends the namespace's scope. The namespace
+start handler gets passed the prefix and URI for the namespace. For a
+default namespace declaration (xmlns='...'), the prefix will be null.
+The URI will be null for the case where the default namespace is being
+unset. The namespace end handler just gets the prefix for the closing
+scope.</p>
+
+<p>These handlers are called for each declaration. So if, for
+instance, a start tag had three namespace declarations, then the
+StartNamespaceDeclHandler would be called three times before the start
+tag handler is called, once for each declaration.</p>
+
+<h3>Character Encodings</h3>
+
+<p>While XML is based on Unicode, and every XML processor is required
+to recognized UTF-8 and UTF-16 (1 and 2 byte encodings of Unicode),
+other encodings may be declared in XML documents or entities. For the
+main document, an XML declaration may contain an encoding
+declaration:</p>
+<pre>
+&lt;?xml version="1.0" encoding="ISO-8859-2"?&gt;
+</pre>
+
+<p>External parsed entities may begin with a text declaration, which
+looks like an XML declaration with just an encoding declaration:</p>
+<pre>
+&lt;?xml encoding="Big5"?&gt;
+</pre>
+
+<p>With Expat, you may also specify an encoding at the time of
+creating a parser. This is useful when the encoding information may
+come from a source outside the document itself (like a higher level
+protocol.)</p>
+
+<p><a name="builtin_encodings"></a>There are four built-in encodings
+in Expat:</p>
+<ul>
+<li>UTF-8</li>
+<li>UTF-16</li>
+<li>ISO-8859-1</li>
+<li>US-ASCII</li>
+</ul>
+
+<p>Anything else discovered in an encoding declaration or in the
+protocol encoding specified in the parser constructor, triggers a call
+to the <code>UnknownEncodingHandler</code>. This handler gets passed
+the encoding name and a pointer to an <code>XML_Encoding</code> data
+structure. Your handler must fill in this structure and return
+<code>XML_STATUS_OK</code> if it knows how to deal with the
+encoding. Otherwise the handler should return
+<code>XML_STATUS_ERROR</code>. The handler also gets passed a pointer
+to an optional application data structure that you may indicate when
+you set the handler.</p>
+
+<p>Expat places restrictions on character encodings that it can
+support by filling in the <code>XML_Encoding</code> structure.
+include file:</p>
+<ol>
+<li>Every ASCII character that can appear in a well-formed XML document
+must be represented by a single byte, and that byte must correspond to
+it's ASCII encoding (except for the characters $@\^'{}~)</li>
+<li>Characters must be encoded in 4 bytes or less.</li>
+<li>All characters encoded must have Unicode scalar values less than or
+equal to 65535 (0xFFFF)<em>This does not apply to the built-in support
+for UTF-16 and UTF-8</em></li>
+<li>No character may be encoded by more that one distinct sequence of
+bytes</li>
+</ol>
+
+<p><code>XML_Encoding</code> contains an array of integers that
+correspond to the 1st byte of an encoding sequence. If the value in
+the array for a byte is zero or positive, then the byte is a single
+byte encoding that encodes the Unicode scalar value contained in the
+array. A -1 in this array indicates a malformed byte. If the value is
+-2, -3, or -4, then the byte is the beginning of a 2, 3, or 4 byte
+sequence respectively. Multi-byte sequences are sent to the convert
+function pointed at in the <code>XML_Encoding</code> structure. This
+function should return the Unicode scalar value for the sequence or -1
+if the sequence is malformed.</p>
+
+<p>One pitfall that novice Expat users are likely to fall into is that
+although Expat may accept input in various encodings, the strings that
+it passes to the handlers are always encoded in UTF-8 or UTF-16
+(depending on how Expat was compiled). Your application is responsible
+for any translation of these strings into other encodings.</p>
+
+<h3>Handling External Entity References</h3>
+
+<p>Expat does not read or parse external entities directly. Note that
+any external DTD is a special case of an external entity. If you've
+set no <code>ExternalEntityRefHandler</code>, then external entity
+references are silently ignored. Otherwise, it calls your handler with
+the information needed to read and parse the external entity.</p>
+
+<p>Your handler isn't actually responsible for parsing the entity, but
+it is responsible for creating a subsidiary parser with <code><a href=
+"#XML_ExternalEntityParserCreate"
+>XML_ExternalEntityParserCreate</a></code> that will do the job. This
+returns an instance of <code>XML_Parser</code> that has handlers and
+other data structures initialized from the parent parser. You may then
+use <code><a href= "#XML_Parse" >XML_Parse</a></code> or <code><a
+href= "#XML_ParseBuffer">XML_ParseBuffer</a></code> calls against this
+parser. Since external entities my refer to other external entities,
+your handler should be prepared to be called recursively.</p>
+
+<h3>Parsing DTDs</h3>
+
+<p>In order to parse parameter entities, before starting the parse,
+you must call <code><a href= "#XML_SetParamEntityParsing"
+>XML_SetParamEntityParsing</a></code> with one of the following
+arguments:</p>
+<dl>
+<dt><code>XML_PARAM_ENTITY_PARSING_NEVER</code></dt>
+<dd>Don't parse parameter entities or the external subset</dd>
+<dt><code>XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE</code></dt>
+<dd>Parse parameter entites and the external subset unless
+<code>standalone</code> was set to "yes" in the XML declaration.</dd>
+<dt><code>XML_PARAM_ENTITY_PARSING_ALWAYS</code></dt>
+<dd>Always parse parameter entities and the external subset</dd>
+</dl>
+
+<p>In order to read an external DTD, you also have to set an external
+entity reference handler as described above.</p>
+
+<h3 id="stop-resume">Temporarily Stopping Parsing</h3>
+
+<p>Expat 1.95.8 introduces a new feature: its now possible to stop
+parsing temporarily from within a handler function, even if more data
+has already been passed into the parser. Applications for this
+include</p>
+
+<ul>
+ <li>Supporting the <a href= "http://www.w3.org/TR/xinclude/"
+ >XInclude</a> specification.</li>
+
+ <li>Delaying further processing until additional information is
+ available from some other source.</li>
+
+ <li>Adjusting processor load as task priorities shift within an
+ application.</li>
+
+ <li>Stopping parsing completely (simply free or reset the parser
+ instead of resuming in the outer parsing loop). This can be useful
+ if a application-domain error is found in the XML being parsed or if
+ the result of the parse is determined not to be useful after
+ all.</li>
+</ul>
+
+<p>To take advantage of this feature, the main parsing loop of an
+application needs to support this specifically. It cannot be
+supported with a parsing loop compatible with Expat 1.95.7 or
+earlier (though existing loops will continue to work without
+supporting the stop/resume feature).</p>
+
+<p>An application that uses this feature for a single parser will have
+the rough structure (in pseudo-code):</p>
+
+<pre class="pseudocode">
+fd = open_input()
+p = create_parser()
+
+if parse_xml(p, fd) {
+ /* suspended */
+
+ int suspended = 1;
+
+ while (suspended) {
+ do_something_else()
+ if ready_to_resume() {
+ suspended = continue_parsing(p, fd);
+ }
+ }
+}
+</pre>
+
+<p>An application that may resume any of several parsers based on
+input (either from the XML being parsed or some other source) will
+certainly have more interesting control structures.</p>
+
+<p>This C function could be used for the <code>parse_xml</code>
+function mentioned in the pseudo-code above:</p>
+
+<pre class="eg">
+#define BUFF_SIZE 10240
+
+/* Parse a document from the open file descriptor 'fd' until the parse
+ is complete (the document has been completely parsed, or there's
+ been an error), or the parse is stopped. Return non-zero when
+ the parse is merely suspended.
+*/
+int
+parse_xml(XML_Parser p, int fd)
+{
+ for (;;) {
+ int last_chunk;
+ int bytes_read;
+ enum XML_Status status;
+
+ void *buff = XML_GetBuffer(p, BUFF_SIZE);
+ if (buff == NULL) {
+ /* handle error... */
+ return 0;
+ }
+ bytes_read = read(fd, buff, BUFF_SIZE);
+ if (bytes_read &lt; 0) {
+ /* handle error... */
+ return 0;
+ }
+ status = XML_ParseBuffer(p, bytes_read, bytes_read == 0);
+ switch (status) {
+ case XML_STATUS_ERROR:
+ /* handle error... */
+ return 0;
+ case XML_STATUS_SUSPENDED:
+ return 1;
+ }
+ if (bytes_read == 0)
+ return 0;
+ }
+}
+</pre>
+
+<p>The corresponding <code>continue_parsing</code> function is
+somewhat simpler, since it only need deal with the return code from
+<code><a href= "#XML_ResumeParser">XML_ResumeParser</a></code>; it can
+delegate the input handling to the <code>parse_xml</code>
+function:</p>
+
+<pre class="eg">
+/* Continue parsing a document which had been suspended. The 'p' and
+ 'fd' arguments are the same as passed to parse_xml(). Return
+ non-zero when the parse is suspended.
+*/
+int
+continue_parsing(XML_Parser p, int fd)
+{
+ enum XML_Status status = XML_ResumeParser(p);
+ switch (status) {
+ case XML_STATUS_ERROR:
+ /* handle error... */
+ return 0;
+ case XML_ERROR_NOT_SUSPENDED:
+ /* handle error... */
+ return 0;.
+ case XML_STATUS_SUSPENDED:
+ return 1;
+ }
+ return parse_xml(p, fd);
+}
+</pre>
+
+<p>Now that we've seen what a mess the top-level parsing loop can
+become, what have we gained? Very simply, we can now use the <code><a
+href= "#XML_StopParser" >XML_StopParser</a></code> function to stop
+parsing, without having to go to great lengths to avoid additional
+processing that we're expecting to ignore. As a bonus, we get to stop
+parsing <em>temporarily</em>, and come back to it when we're
+ready.</p>
+
+<p>To stop parsing from a handler function, use the <code><a href=
+"#XML_StopParser" >XML_StopParser</a></code> function. This function
+takes two arguments; the parser being stopped and a flag indicating
+whether the parse can be resumed in the future.</p>
+
+<!-- XXX really need more here -->
+
+
+<hr />
+<!-- ================================================================ -->
+
+<h2><a name="reference">Expat Reference</a></h2>
+
+<h3><a name="creation">Parser Creation</a></h3>
+
+<pre class="fcndec" id="XML_ParserCreate">
+XML_Parser XMLCALL
+XML_ParserCreate(const XML_Char *encoding);
+</pre>
+<div class="fcndef">
+Construct a new parser. If encoding is non-null, it specifies a
+character encoding to use for the document. This overrides the document
+encoding declaration. There are four built-in encodings:
+<ul>
+<li>US-ASCII</li>
+<li>UTF-8</li>
+<li>UTF-16</li>
+<li>ISO-8859-1</li>
+</ul>
+Any other value will invoke a call to the UnknownEncodingHandler.
+</div>
+
+<pre class="fcndec" id="XML_ParserCreateNS">
+XML_Parser XMLCALL
+XML_ParserCreateNS(const XML_Char *encoding,
+ XML_Char sep);
+</pre>
+<div class="fcndef">
+Constructs a new parser that has namespace processing in effect. Namespace
+expanded element names and attribute names are returned as a concatenation
+of the namespace URI, <em>sep</em>, and the local part of the name. This
+means that you should pick a character for <em>sep</em> that can't be
+part of a legal URI. There is a special case when <em>sep</em> is the null
+character <code>'\0'</code>: the namespace URI and the local part will be
+concatenated without any separator - this is intended to support RDF processors.
+It is a programming error to use the null separator with
+<a href= "#XML_SetReturnNSTriplet">namespace triplets</a>.</div>
+
+<pre class="fcndec" id="XML_ParserCreate_MM">
+XML_Parser XMLCALL
+XML_ParserCreate_MM(const XML_Char *encoding,
+ const XML_Memory_Handling_Suite *ms,
+ const XML_Char *sep);
+</pre>
+<pre class="signature">
+typedef struct {
+ void *(XMLCALL *malloc_fcn)(size_t size);
+ void *(XMLCALL *realloc_fcn)(void *ptr, size_t size);
+ void (XMLCALL *free_fcn)(void *ptr);
+} XML_Memory_Handling_Suite;
+</pre>
+<div class="fcndef">
+<p>Construct a new parser using the suite of memory handling functions
+specified in <code>ms</code>. If <code>ms</code> is NULL, then use the
+standard set of memory management functions. If <code>sep</code> is
+non NULL, then namespace processing is enabled in the created parser
+and the character pointed at by sep is used as the separator between
+the namespace URI and the local part of the name.</p>
+</div>
+
+<pre class="fcndec" id="XML_ExternalEntityParserCreate">
+XML_Parser XMLCALL
+XML_ExternalEntityParserCreate(XML_Parser p,
+ const XML_Char *context,
+ const XML_Char *encoding);
+</pre>
+<div class="fcndef">
+Construct a new <code>XML_Parser</code> object for parsing an external
+general entity. Context is the context argument passed in a call to a
+ExternalEntityRefHandler. Other state information such as handlers,
+user data, namespace processing is inherited from the parser passed as
+the 1st argument. So you shouldn't need to call any of the behavior
+changing functions on this parser (unless you want it to act
+differently than the parent parser).
+</div>
+
+<pre class="fcndec" id="XML_ParserFree">
+void XMLCALL
+XML_ParserFree(XML_Parser p);
+</pre>
+<div class="fcndef">
+Free memory used by the parser. Your application is responsible for
+freeing any memory associated with user data.
+</div>
+
+<pre class="fcndec" id="XML_ParserReset">
+XML_Bool XMLCALL
+XML_ParserReset(XML_Parser p,
+ const XML_Char *encoding);
+</pre>
+<div class="fcndef">
+Clean up the memory structures maintained by the parser so that it may
+be used again. After this has been called, <code>parser</code> is
+ready to start parsing a new document. All handlers are cleared from
+the parser, except for the unknownEncodingHandler. The parser's external
+state is re-initialized except for the values of ns and ns_triplets.
+This function may not be used on a parser created using <code><a href=
+"#XML_ExternalEntityParserCreate" >XML_ExternalEntityParserCreate</a
+></code>; it will return <code>XML_FALSE</code> in that case. Returns
+<code>XML_TRUE</code> on success. Your application is responsible for
+dealing with any memory associated with user data.
+</div>
+
+<h3><a name="parsing">Parsing</a></h3>
+
+<p>To state the obvious: the three parsing functions <code><a href=
+"#XML_Parse" >XML_Parse</a></code>, <code><a href= "#XML_ParseBuffer">
+XML_ParseBuffer</a></code> and <code><a href= "#XML_GetBuffer">
+XML_GetBuffer</a></code> must not be called from within a handler
+unless they operate on a separate parser instance, that is, one that
+did not call the handler. For example, it is OK to call the parsing
+functions from within an <code>XML_ExternalEntityRefHandler</code>,
+if they apply to the parser created by
+<code><a href= "#XML_ExternalEntityParserCreate"
+>XML_ExternalEntityParserCreate</a></code>.</p>
+
+<p>Note: the <code>len</code> argument passed to these functions
+should be considerably less than the maximum value for an integer,
+as it could create an integer overflow situation if the added
+lengths of a buffer and the unprocessed portion of the previous buffer
+exceed the maximum integer value. Input data at the end of a buffer
+will remain unprocessed if it is part of an XML token for which the
+end is not part of that buffer.</p>
+
+<pre class="fcndec" id="XML_Parse">
+enum XML_Status XMLCALL
+XML_Parse(XML_Parser p,
+ const char *s,
+ int len,
+ int isFinal);
+</pre>
+<pre class="signature">
+enum XML_Status {
+ XML_STATUS_ERROR = 0,
+ XML_STATUS_OK = 1
+};
+</pre>
+<div class="fcndef">
+Parse some more of the document. The string <code>s</code> is a buffer
+containing part (or perhaps all) of the document. The number of bytes of s
+that are part of the document is indicated by <code>len</code>. This means
+that <code>s</code> doesn't have to be null terminated. It also means that
+if <code>len</code> is larger than the number of bytes in the block of
+memory that <code>s</code> points at, then a memory fault is likely. The
+<code>isFinal</code> parameter informs the parser that this is the last
+piece of the document. Frequently, the last piece is empty (i.e.
+<code>len</code> is zero.)
+If a parse error occurred, it returns <code>XML_STATUS_ERROR</code>.
+Otherwise it returns <code>XML_STATUS_OK</code> value.
+</div>
+
+<pre class="fcndec" id="XML_ParseBuffer">
+enum XML_Status XMLCALL
+XML_ParseBuffer(XML_Parser p,
+ int len,
+ int isFinal);
+</pre>
+<div class="fcndef">
+This is just like <code><a href= "#XML_Parse" >XML_Parse</a></code>,
+except in this case Expat provides the buffer. By obtaining the
+buffer from Expat with the <code><a href= "#XML_GetBuffer"
+>XML_GetBuffer</a></code> function, the application can avoid double
+copying of the input.
+</div>
+
+<pre class="fcndec" id="XML_GetBuffer">
+void * XMLCALL
+XML_GetBuffer(XML_Parser p,
+ int len);
+</pre>
+<div class="fcndef">
+Obtain a buffer of size <code>len</code> to read a piece of the document
+into. A NULL value is returned if Expat can't allocate enough memory for
+this buffer. This has to be called prior to every call to
+<code><a href= "#XML_ParseBuffer" >XML_ParseBuffer</a></code>. A
+typical use would look like this:
+
+<pre class="eg">
+for (;;) {
+ int bytes_read;
+ void *buff = XML_GetBuffer(p, BUFF_SIZE);
+ if (buff == NULL) {
+ /* handle error */
+ }
+
+ bytes_read = read(docfd, buff, BUFF_SIZE);
+ if (bytes_read &lt; 0) {
+ /* handle error */
+ }
+
+ if (! XML_ParseBuffer(p, bytes_read, bytes_read == 0)) {
+ /* handle parse error */
+ }
+
+ if (bytes_read == 0)
+ break;
+}
+</pre>
+</div>
+
+<pre class="fcndec" id="XML_StopParser">
+enum XML_Status XMLCALL
+XML_StopParser(XML_Parser p,
+ XML_Bool resumable);
+</pre>
+<div class="fcndef">
+
+<p>Stops parsing, causing <code><a href= "#XML_Parse"
+>XML_Parse</a></code> or <code><a href= "#XML_ParseBuffer"
+>XML_ParseBuffer</a></code> to return. Must be called from within a
+call-back handler, except when aborting (when <code>resumable</code>
+is <code>XML_FALSE</code>) an already suspended parser. Some
+call-backs may still follow because they would otherwise get
+lost, including
+<ul>
+ <li> the end element handler for empty elements when stopped in the
+ start element handler,</li>
+ <li> end namespace declaration handler when stopped in the end
+ element handler,</li>
+</ul>
+and possibly others.</p>
+
+<p>This can be called from most handlers, including DTD related
+call-backs, except when parsing an external parameter entity and
+<code>resumable</code> is <code>XML_TRUE</code>. Returns
+<code>XML_STATUS_OK</code> when successful,
+<code>XML_STATUS_ERROR</code> otherwise. The possible error codes
+are:</p>
+<dl>
+ <dt><code>XML_ERROR_SUSPENDED</code></dt>
+ <dd>when suspending an already suspended parser.</dd>
+ <dt><code>XML_ERROR_FINISHED</code></dt>
+ <dd>when the parser has already finished.</dd>
+ <dt><code>XML_ERROR_SUSPEND_PE</code></dt>
+ <dd>when suspending while parsing an external PE.</dd>
+</dl>
+
+<p>Since the stop/resume feature requires application support in the
+outer parsing loop, it is an error to call this function for a parser
+not being handled appropriately; see <a href= "#stop-resume"
+>Temporarily Stopping Parsing</a> for more information.</p>
+
+<p>When <code>resumable</code> is <code>XML_TRUE</code> then parsing
+is <em>suspended</em>, that is, <code><a href= "#XML_Parse"
+>XML_Parse</a></code> and <code><a href= "#XML_ParseBuffer"
+>XML_ParseBuffer</a></code> return <code>XML_STATUS_SUSPENDED</code>.
+Otherwise, parsing is <em>aborted</em>, that is, <code><a href=
+"#XML_Parse" >XML_Parse</a></code> and <code><a href=
+"#XML_ParseBuffer" >XML_ParseBuffer</a></code> return
+<code>XML_STATUS_ERROR</code> with error code
+<code>XML_ERROR_ABORTED</code>.</p>
+
+<p><strong>Note:</strong>
+This will be applied to the current parser instance only, that is, if
+there is a parent parser then it will continue parsing when the
+external entity reference handler returns. It is up to the
+implementation of that handler to call <code><a href=
+"#XML_StopParser" >XML_StopParser</a></code> on the parent parser
+(recursively), if one wants to stop parsing altogether.</p>
+
+<p>When suspended, parsing can be resumed by calling <code><a href=
+"#XML_ResumeParser" >XML_ResumeParser</a></code>.</p>
+
+<p>New in Expat 1.95.8.</p>
+</div>
+
+<pre class="fcndec" id="XML_ResumeParser">
+enum XML_Status XMLCALL
+XML_ResumeParser(XML_Parser p);
+</pre>
+<div class="fcndef">
+<p>Resumes parsing after it has been suspended with <code><a href=
+"#XML_StopParser" >XML_StopParser</a></code>. Must not be called from
+within a handler call-back. Returns same status codes as <code><a
+href= "#XML_Parse">XML_Parse</a></code> or <code><a href=
+"#XML_ParseBuffer" >XML_ParseBuffer</a></code>. An additional error
+code, <code>XML_ERROR_NOT_SUSPENDED</code>, will be returned if the
+parser was not currently suspended.</p>
+
+<p><strong>Note:</strong>
+This must be called on the most deeply nested child parser instance
+first, and on its parent parser only after the child parser has
+finished, to be applied recursively until the document entity's parser
+is restarted. That is, the parent parser will not resume by itself
+and it is up to the application to call <code><a href=
+"#XML_ResumeParser" >XML_ResumeParser</a></code> on it at the
+appropriate moment.</p>
+
+<p>New in Expat 1.95.8.</p>
+</div>
+
+<pre class="fcndec" id="XML_GetParsingStatus">
+void XMLCALL
+XML_GetParsingStatus(XML_Parser p,
+ XML_ParsingStatus *status);
+</pre>
+<pre class="signature">
+enum XML_Parsing {
+ XML_INITIALIZED,
+ XML_PARSING,
+ XML_FINISHED,
+ XML_SUSPENDED
+};
+
+typedef struct {
+ enum XML_Parsing parsing;
+ XML_Bool finalBuffer;
+} XML_ParsingStatus;
+</pre>
+<div class="fcndef">
+<p>Returns status of parser with respect to being initialized,
+parsing, finished, or suspended, and whether the final buffer is being
+processed. The <code>status</code> parameter <em>must not</em> be
+NULL.</p>
+
+<p>New in Expat 1.95.8.</p>
+</div>
+
+
+<h3><a name="setting">Handler Setting</a></h3>
+
+<p>Although handlers are typically set prior to parsing and left alone, an
+application may choose to set or change the handler for a parsing event
+while the parse is in progress. For instance, your application may choose
+to ignore all text not descended from a <code>para</code> element. One
+way it could do this is to set the character handler when a para start tag
+is seen, and unset it for the corresponding end tag.</p>
+
+<p>A handler may be <em>unset</em> by providing a NULL pointer to the
+appropriate handler setter. None of the handler setting functions have
+a return value.</p>
+
+<p>Your handlers will be receiving strings in arrays of type
+<code>XML_Char</code>. This type is conditionally defined in expat.h as
+either <code>char</code>, <code>wchar_t</code> or <code>unsigned short</code>.
+The former implies UTF-8 encoding, the latter two imply UTF-16 encoding.
+Note that you'll receive them in this form independent of the original
+encoding of the document.</p>
+
+<div class="handler">
+<pre class="setter" id="XML_SetStartElementHandler">
+void XMLCALL
+XML_SetStartElementHandler(XML_Parser p,
+ XML_StartElementHandler start);
+</pre>
+<pre class="signature">
+typedef void
+(XMLCALL *XML_StartElementHandler)(void *userData,
+ const XML_Char *name,
+ const XML_Char **atts);
+</pre>
+<p>Set handler for start (and empty) tags. Attributes are passed to the start
+handler as a pointer to a vector of char pointers. Each attribute seen in
+a start (or empty) tag occupies 2 consecutive places in this vector: the
+attribute name followed by the attribute value. These pairs are terminated
+by a null pointer.</p>
+<p>Note that an empty tag generates a call to both start and end handlers
+(in that order).</p>
+</div>
+
+<div class="handler">
+<pre class="setter" id="XML_SetEndElementHandler">
+void XMLCALL
+XML_SetEndElementHandler(XML_Parser p,
+ XML_EndElementHandler);
+</pre>
+<pre class="signature">
+typedef void
+(XMLCALL *XML_EndElementHandler)(void *userData,
+ const XML_Char *name);
+</pre>
+<p>Set handler for end (and empty) tags. As noted above, an empty tag
+generates a call to both start and end handlers.</p>
+</div>
+
+<div class="handler">
+<pre class="setter" id="XML_SetElementHandler">
+void XMLCALL
+XML_SetElementHandler(XML_Parser p,
+ XML_StartElementHandler start,
+ XML_EndElementHandler end);
+</pre>
+<p>Set handlers for start and end tags with one call.</p>
+</div>
+
+<div class="handler">
+<pre class="setter" id="XML_SetCharacterDataHandler">
+void XMLCALL
+XML_SetCharacterDataHandler(XML_Parser p,
+ XML_CharacterDataHandler charhndl)
+</pre>
+<pre class="signature">
+typedef void
+(XMLCALL *XML_CharacterDataHandler)(void *userData,
+ const XML_Char *s,
+ int len);
+</pre>
+<p>Set a text handler. The string your handler receives
+is <em>NOT nul-terminated</em>. You have to use the length argument
+to deal with the end of the string. A single block of contiguous text
+free of markup may still result in a sequence of calls to this handler.
+In other words, if you're searching for a pattern in the text, it may
+be split across calls to this handler.</p>
+</div>
+
+<div class="handler">
+<pre class="setter" id="XML_SetProcessingInstructionHandler">
+void XMLCALL
+XML_SetProcessingInstructionHandler(XML_Parser p,
+ XML_ProcessingInstructionHandler proc)
+</pre>
+<pre class="signature">
+typedef void
+(XMLCALL *XML_ProcessingInstructionHandler)(void *userData,
+ const XML_Char *target,
+ const XML_Char *data);
+
+</pre>
+<p>Set a handler for processing instructions. The target is the first word
+in the processing instruction. The data is the rest of the characters in
+it after skipping all whitespace after the initial word.</p>
+</div>
+
+<div class="handler">
+<pre class="setter" id="XML_SetCommentHandler">
+void XMLCALL
+XML_SetCommentHandler(XML_Parser p,
+ XML_CommentHandler cmnt)
+</pre>
+<pre class="signature">
+typedef void
+(XMLCALL *XML_CommentHandler)(void *userData,
+ const XML_Char *data);
+</pre>
+<p>Set a handler for comments. The data is all text inside the comment
+delimiters.</p>
+</div>
+
+<div class="handler">
+<pre class="setter" id="XML_SetStartCdataSectionHandler">
+void XMLCALL
+XML_SetStartCdataSectionHandler(XML_Parser p,
+ XML_StartCdataSectionHandler start);
+</pre>
+<pre class="signature">
+typedef void
+(XMLCALL *XML_StartCdataSectionHandler)(void *userData);
+</pre>
+<p>Set a handler that gets called at the beginning of a CDATA section.</p>
+</div>
+
+<div class="handler">
+<pre class="setter" id="XML_SetEndCdataSectionHandler">
+void XMLCALL
+XML_SetEndCdataSectionHandler(XML_Parser p,
+ XML_EndCdataSectionHandler end);
+</pre>
+<pre class="signature">
+typedef void
+(XMLCALL *XML_EndCdataSectionHandler)(void *userData);
+</pre>
+<p>Set a handler that gets called at the end of a CDATA section.</p>
+</div>
+
+<div class="handler">
+<pre class="setter" id="XML_SetCdataSectionHandler">
+void XMLCALL
+XML_SetCdataSectionHandler(XML_Parser p,
+ XML_StartCdataSectionHandler start,
+ XML_EndCdataSectionHandler end)
+</pre>
+<p>Sets both CDATA section handlers with one call.</p>
+</div>
+
+<div class="handler">
+<pre class="setter" id="XML_SetDefaultHandler">
+void XMLCALL
+XML_SetDefaultHandler(XML_Parser p,
+ XML_DefaultHandler hndl)
+</pre>
+<pre class="signature">
+typedef void
+(XMLCALL *XML_DefaultHandler)(void *userData,
+ const XML_Char *s,
+ int len);
+</pre>
+
+<p>Sets a handler for any characters in the document which wouldn't
+otherwise be handled. This includes both data for which no handlers
+can be set (like some kinds of DTD declarations) and data which could
+be reported but which currently has no handler set. The characters
+are passed exactly as they were present in the XML document except
+that they will be encoded in UTF-8 or UTF-16. Line boundaries are not
+normalized. Note that a byte order mark character is not passed to the
+default handler. There are no guarantees about how characters are
+divided between calls to the default handler: for example, a comment
+might be split between multiple calls. Setting the handler with
+this call has the side effect of turning off expansion of references
+to internally defined general entities. Instead these references are
+passed to the default handler.</p>
+
+<p>See also <code><a
+href="#XML_DefaultCurrent">XML_DefaultCurrent</a></code>.</p>
+</div>
+
+<div class="handler">
+<pre class="setter" id="XML_SetDefaultHandlerExpand">
+void XMLCALL
+XML_SetDefaultHandlerExpand(XML_Parser p,
+ XML_DefaultHandler hndl)
+</pre>
+<pre class="signature">
+typedef void
+(XMLCALL *XML_DefaultHandler)(void *userData,
+ const XML_Char *s,
+ int len);
+</pre>
+<p>This sets a default handler, but doesn't inhibit the expansion of
+internal entity references. The entity reference will not be passed
+to the default handler.</p>
+
+<p>See also <code><a
+href="#XML_DefaultCurrent">XML_DefaultCurrent</a></code>.</p>
+</div>
+
+<div class="handler">
+<pre class="setter" id="XML_SetExternalEntityRefHandler">
+void XMLCALL
+XML_SetExternalEntityRefHandler(XML_Parser p,
+ XML_ExternalEntityRefHandler hndl)
+</pre>
+<pre class="signature">
+typedef int
+(XMLCALL *XML_ExternalEntityRefHandler)(XML_Parser p,
+ const XML_Char *context,
+ const XML_Char *base,
+ const XML_Char *systemId,
+ const XML_Char *publicId);
+</pre>
+<p>Set an external entity reference handler. This handler is also
+called for processing an external DTD subset if parameter entity parsing
+is in effect. (See <a href="#XML_SetParamEntityParsing">
+<code>XML_SetParamEntityParsing</code></a>.)</p>
+
+<p>The <code>context</code> parameter specifies the parsing context in
+the format expected by the <code>context</code> argument to <code><a
+href="#XML_ExternalEntityParserCreate"
+>XML_ExternalEntityParserCreate</a></code>. <code>code</code> is
+valid only until the handler returns, so if the referenced entity is
+to be parsed later, it must be copied. <code>context</code> is NULL
+only when the entity is a parameter entity, which is how one can
+differentiate between general and parameter entities.</p>
+
+<p>The <code>base</code> parameter is the base to use for relative
+system identifiers. It is set by <code><a
+href="#XML_SetBase">XML_SetBase</a></code> and may be NULL. The
+<code>publicId</code> parameter is the public id given in the entity
+declaration and may be NULL. <code>systemId</code> is the system
+identifier specified in the entity declaration and is never NULL.</p>
+
+<p>There are a couple of ways in which this handler differs from
+others. First, this handler returns a status indicator (an
+integer). <code>XML_STATUS_OK</code> should be returned for successful
+handling of the external entity reference. Returning
+<code>XML_STATUS_ERROR</code> indicates failure, and causes the
+calling parser to return an
+<code>XML_ERROR_EXTERNAL_ENTITY_HANDLING</code> error.</p>
+
+<p>Second, instead of having the user data as its first argument, it
+receives the parser that encountered the entity reference. This, along
+with the context parameter, may be used as arguments to a call to
+<code><a href= "#XML_ExternalEntityParserCreate"
+>XML_ExternalEntityParserCreate</a></code>. Using the returned
+parser, the body of the external entity can be recursively parsed.</p>
+
+<p>Since this handler may be called recursively, it should not be saving
+information into global or static variables.</p>
+</div>
+
+<pre class="fcndec" id="XML_SetExternalEntityRefHandlerArg">
+void XMLCALL
+XML_SetExternalEntityRefHandlerArg(XML_Parser p,
+ void *arg)
+</pre>
+<div class="fcndef">
+<p>Set the argument passed to the ExternalEntityRefHandler. If
+<code>arg</code> is not NULL, it is the new value passed to the
+handler set using <code><a href="#XML_SetExternalEntityRefHandler"
+>XML_SetExternalEntityRefHandler</a></code>; if <code>arg</code> is
+NULL, the argument passed to the handler function will be the parser
+object itself.</p>
+
+<p><strong>Note:</strong>
+The type of <code>arg</code> and the type of the first argument to the
+ExternalEntityRefHandler do not match. This function takes a
+<code>void *</code> to be passed to the handler, while the handler
+accepts an <code>XML_Parser</code>. This is a historical accident,
+but will not be corrected before Expat 2.0 (at the earliest) to avoid
+causing compiler warnings for code that's known to work with this
+API. It is the responsibility of the application code to know the
+actual type of the argument passed to the handler and to manage it
+properly.</p>
+</div>
+
+<div class="handler">
+<pre class="setter" id="XML_SetSkippedEntityHandler">
+void XMLCALL
+XML_SetSkippedEntityHandler(XML_Parser p,
+ XML_SkippedEntityHandler handler)
+</pre>
+<pre class="signature">
+typedef void
+(XMLCALL *XML_SkippedEntityHandler)(void *userData,
+ const XML_Char *entityName,
+ int is_parameter_entity);
+</pre>
+<p>Set a skipped entity handler. This is called in two situations:</p>
+<ol>
+ <li>An entity reference is encountered for which no declaration
+ has been read <em>and</em> this is not an error.</li>
+ <li>An internal entity reference is read, but not expanded, because
+ XML_SetDefaultHandler
+ has been called.</li>
+</ol>
+<p>The <code>is_parameter_entity</code> argument will be non-zero for
+a parameter entity and zero for a general entity.</p> <p>Note: skipped
+parameter entities in declarations and skipped general entities in
+attribute values cannot be reported, because the event would be out of
+sync with the reporting of the declarations or attribute values</p>
+</div>
+
+<div class="handler">
+<pre class="setter" id="XML_SetUnknownEncodingHandler">
+void XMLCALL
+XML_SetUnknownEncodingHandler(XML_Parser p,
+ XML_UnknownEncodingHandler enchandler,
+ void *encodingHandlerData)
+</pre>
+<pre class="signature">
+typedef int
+(XMLCALL *XML_UnknownEncodingHandler)(void *encodingHandlerData,
+ const XML_Char *name,
+ XML_Encoding *info);
+
+typedef struct {
+ int map[256];
+ void *data;
+ int (XMLCALL *convert)(void *data, const char *s);
+ void (XMLCALL *release)(void *data);
+} XML_Encoding;
+</pre>
+<p>Set a handler to deal with encodings other than the <a
+href="#builtin_encodings">built in set</a>. This should be done before
+<code><a href= "#XML_Parse" >XML_Parse</a></code> or <code><a href=
+"#XML_ParseBuffer" >XML_ParseBuffer</a></code> have been called on the
+given parser.</p> <p>If the handler knows how to deal with an encoding
+with the given name, it should fill in the <code>info</code> data
+structure and return <code>XML_STATUS_OK</code>. Otherwise it
+should return <code>XML_STATUS_ERROR</code>. The handler will be called
+at most once per parsed (external) entity. The optional application
+data pointer <code>encodingHandlerData</code> will be passed back to
+the handler.</p>
+
+<p>The map array contains information for every possible possible leading
+byte in a byte sequence. If the corresponding value is &gt;= 0, then it's
+a single byte sequence and the byte encodes that Unicode value. If the
+value is -1, then that byte is invalid as the initial byte in a sequence.
+If the value is -n, where n is an integer &gt; 1, then n is the number of
+bytes in the sequence and the actual conversion is accomplished by a
+call to the function pointed at by convert. This function may return -1
+if the sequence itself is invalid. The convert pointer may be null if
+there are only single byte codes. The data parameter passed to the convert
+function is the data pointer from <code>XML_Encoding</code>. The
+string s is <em>NOT</em> nul-terminated and points at the sequence of
+bytes to be converted.</p>
+
+<p>The function pointed at by <code>release</code> is called by the
+parser when it is finished with the encoding. It may be NULL.</p>
+</div>
+
+<div class="handler">
+<pre class="setter" id="XML_SetStartNamespaceDeclHandler">
+void XMLCALL
+XML_SetStartNamespaceDeclHandler(XML_Parser p,
+ XML_StartNamespaceDeclHandler start);
+</pre>
+<pre class="signature">
+typedef void
+(XMLCALL *XML_StartNamespaceDeclHandler)(void *userData,
+ const XML_Char *prefix,
+ const XML_Char *uri);
+</pre>
+<p>Set a handler to be called when a namespace is declared. Namespace
+declarations occur inside start tags. But the namespace declaration start
+handler is called before the start tag handler for each namespace declared
+in that start tag.</p>
+</div>
+
+<div class="handler">
+<pre class="setter" id="XML_SetEndNamespaceDeclHandler">
+void XMLCALL
+XML_SetEndNamespaceDeclHandler(XML_Parser p,
+ XML_EndNamespaceDeclHandler end);
+</pre>
+<pre class="signature">
+typedef void
+(XMLCALL *XML_EndNamespaceDeclHandler)(void *userData,
+ const XML_Char *prefix);
+</pre>
+<p>Set a handler to be called when leaving the scope of a namespace
+declaration. This will be called, for each namespace declaration,
+after the handler for the end tag of the element in which the
+namespace was declared.</p>
+</div>
+
+<div class="handler">
+<pre class="setter" id="XML_SetNamespaceDeclHandler">
+void XMLCALL
+XML_SetNamespaceDeclHandler(XML_Parser p,
+ XML_StartNamespaceDeclHandler start,
+ XML_EndNamespaceDeclHandler end)
+</pre>
+<p>Sets both namespace declaration handlers with a single call.</p>
+</div>
+
+<div class="handler">
+<pre class="setter" id="XML_SetXmlDeclHandler">
+void XMLCALL
+XML_SetXmlDeclHandler(XML_Parser p,
+ XML_XmlDeclHandler xmldecl);
+</pre>
+<pre class="signature">
+typedef void
+(XMLCALL *XML_XmlDeclHandler)(void *userData,
+ const XML_Char *version,
+ const XML_Char *encoding,
+ int standalone);
+</pre>
+<p>Sets a handler that is called for XML declarations and also for
+text declarations discovered in external entities. The way to
+distinguish is that the <code>version</code> parameter will be NULL
+for text declarations. The <code>encoding</code> parameter may be NULL
+for an XML declaration. The <code>standalone</code> argument will
+contain -1, 0, or 1 indicating respectively that there was no
+standalone parameter in the declaration, that it was given as no, or
+that it was given as yes.</p>
+</div>
+
+<div class="handler">
+<pre class="setter" id="XML_SetStartDoctypeDeclHandler">
+void XMLCALL
+XML_SetStartDoctypeDeclHandler(XML_Parser p,
+ XML_StartDoctypeDeclHandler start);
+</pre>
+<pre class="signature">
+typedef void
+(XMLCALL *XML_StartDoctypeDeclHandler)(void *userData,
+ const XML_Char *doctypeName,
+ const XML_Char *sysid,
+ const XML_Char *pubid,
+ int has_internal_subset);
+</pre>
+<p>Set a handler that is called at the start of a DOCTYPE declaration,
+before any external or internal subset is parsed. Both <code>sysid</code>
+and <code>pubid</code> may be NULL. The <code>has_internal_subset</code>
+will be non-zero if the DOCTYPE declaration has an internal subset.</p>
+</div>
+
+<div class="handler">
+<pre class="setter" id="XML_SetEndDoctypeDeclHandler">
+void XMLCALL
+XML_SetEndDoctypeDeclHandler(XML_Parser p,
+ XML_EndDoctypeDeclHandler end);
+</pre>
+<pre class="signature">
+typedef void
+(XMLCALL *XML_EndDoctypeDeclHandler)(void *userData);
+</pre>
+<p>Set a handler that is called at the end of a DOCTYPE declaration,
+after parsing any external subset.</p>
+</div>
+
+<div class="handler">
+<pre class="setter" id="XML_SetDoctypeDeclHandler">
+void XMLCALL
+XML_SetDoctypeDeclHandler(XML_Parser p,
+ XML_StartDoctypeDeclHandler start,
+ XML_EndDoctypeDeclHandler end);
+</pre>
+<p>Set both doctype handlers with one call.</p>
+</div>
+
+<div class="handler">
+<pre class="setter" id="XML_SetElementDeclHandler">
+void XMLCALL
+XML_SetElementDeclHandler(XML_Parser p,
+ XML_ElementDeclHandler eldecl);
+</pre>
+<pre class="signature">
+typedef void
+(XMLCALL *XML_ElementDeclHandler)(void *userData,
+ const XML_Char *name,
+ XML_Content *model);
+</pre>
+<pre class="signature">
+enum XML_Content_Type {
+ XML_CTYPE_EMPTY = 1,
+ XML_CTYPE_ANY,
+ XML_CTYPE_MIXED,
+ XML_CTYPE_NAME,
+ XML_CTYPE_CHOICE,
+ XML_CTYPE_SEQ
+};
+
+enum XML_Content_Quant {
+ XML_CQUANT_NONE,
+ XML_CQUANT_OPT,
+ XML_CQUANT_REP,
+ XML_CQUANT_PLUS
+};
+
+typedef struct XML_cp XML_Content;
+
+struct XML_cp {
+ enum XML_Content_Type type;
+ enum XML_Content_Quant quant;
+ const XML_Char * name;
+ unsigned int numchildren;
+ XML_Content * children;
+};
+</pre>
+<p>Sets a handler for element declarations in a DTD. The handler gets
+called with the name of the element in the declaration and a pointer
+to a structure that contains the element model. It is the
+application's responsibility to free this data structure using
+<code><a href="#XML_FreeContentModel"
+>XML_FreeContentModel</a></code>.</p>
+
+<p>The <code>model</code> argument is the root of a tree of
+<code>XML_Content</code> nodes. If <code>type</code> equals
+<code>XML_CTYPE_EMPTY</code> or <code>XML_CTYPE_ANY</code>, then
+<code>quant</code> will be <code>XML_CQUANT_NONE</code>, and the other
+fields will be zero or NULL. If <code>type</code> is
+<code>XML_CTYPE_MIXED</code>, then <code>quant</code> will be
+<code>XML_CQUANT_NONE</code> or <code>XML_CQUANT_REP</code> and
+<code>numchildren</code> will contain the number of elements that are
+allowed to be mixed in and <code>children</code> points to an array of
+<code>XML_Content</code> structures that will all have type
+XML_CTYPE_NAME with no quantification. Only the root node can be type
+<code>XML_CTYPE_EMPTY</code>, <code>XML_CTYPE_ANY</code>, or
+<code>XML_CTYPE_MIXED</code>.</p>
+
+<p>For type <code>XML_CTYPE_NAME</code>, the <code>name</code> field
+points to the name and the <code>numchildren</code> and
+<code>children</code> fields will be zero and NULL. The
+<code>quant</code> field will indicate any quantifiers placed on the
+name.</p>
+
+<p>Types <code>XML_CTYPE_CHOICE</code> and <code>XML_CTYPE_SEQ</code>
+indicate a choice or sequence respectively. The
+<code>numchildren</code> field indicates how many nodes in the choice
+or sequence and <code>children</code> points to the nodes.</p>
+</div>
+
+<div class="handler">
+<pre class="setter" id="XML_SetAttlistDeclHandler">
+void XMLCALL
+XML_SetAttlistDeclHandler(XML_Parser p,
+ XML_AttlistDeclHandler attdecl);
+</pre>
+<pre class="signature">
+typedef void
+(XMLCALL *XML_AttlistDeclHandler)(void *userData,
+ const XML_Char *elname,
+ const XML_Char *attname,
+ const XML_Char *att_type,
+ const XML_Char *dflt,
+ int isrequired);
+</pre>
+<p>Set a handler for attlist declarations in the DTD. This handler is
+called for <em>each</em> attribute. So a single attlist declaration
+with multiple attributes declared will generate multiple calls to this
+handler. The <code>elname</code> parameter returns the name of the
+element for which the attribute is being declared. The attribute name
+is in the <code>attname</code> parameter. The attribute type is in the
+<code>att_type</code> parameter. It is the string representing the
+type in the declaration with whitespace removed.</p>
+
+<p>The <code>dflt</code> parameter holds the default value. It will be
+NULL in the case of "#IMPLIED" or "#REQUIRED" attributes. You can
+distinguish these two cases by checking the <code>isrequired</code>
+parameter, which will be true in the case of "#REQUIRED" attributes.
+Attributes which are "#FIXED" will have also have a true
+<code>isrequired</code>, but they will have the non-NULL fixed value
+in the <code>dflt</code> parameter.</p>
+</div>
+
+<div class="handler">
+<pre class="setter" id="XML_SetEntityDeclHandler">
+void XMLCALL
+XML_SetEntityDeclHandler(XML_Parser p,
+ XML_EntityDeclHandler handler);
+</pre>
+<pre class="signature">
+typedef void
+(XMLCALL *XML_EntityDeclHandler)(void *userData,
+ const XML_Char *entityName,
+ int is_parameter_entity,
+ const XML_Char *value,
+ int value_length,
+ const XML_Char *base,
+ const XML_Char *systemId,
+ const XML_Char *publicId,
+ const XML_Char *notationName);
+</pre>
+<p>Sets a handler that will be called for all entity declarations.
+The <code>is_parameter_entity</code> argument will be non-zero in the
+case of parameter entities and zero otherwise.</p>
+
+<p>For internal entities (<code>&lt;!ENTITY foo "bar"&gt;</code>),
+<code>value</code> will be non-NULL and <code>systemId</code>,
+<code>publicId</code>, and <code>notationName</code> will all be NULL.
+The value string is <em>not</em> NULL terminated; the length is
+provided in the <code>value_length</code> parameter. Do not use
+<code>value_length</code> to test for internal entities, since it is
+legal to have zero-length values. Instead check for whether or not
+<code>value</code> is NULL.</p> <p>The <code>notationName</code>
+argument will have a non-NULL value only for unparsed entity
+declarations.</p>
+</div>
+
+<div class="handler">
+<pre class="setter" id="XML_SetUnparsedEntityDeclHandler">
+void XMLCALL
+XML_SetUnparsedEntityDeclHandler(XML_Parser p,
+ XML_UnparsedEntityDeclHandler h)
+</pre>
+<pre class="signature">
+typedef void
+(XMLCALL *XML_UnparsedEntityDeclHandler)(void *userData,
+ const XML_Char *entityName,
+ const XML_Char *base,
+ const XML_Char *systemId,
+ const XML_Char *publicId,
+ const XML_Char *notationName);
+</pre>
+<p>Set a handler that receives declarations of unparsed entities. These
+are entity declarations that have a notation (NDATA) field:</p>
+
+<div id="eg"><pre>
+&lt;!ENTITY logo SYSTEM "images/logo.gif" NDATA gif&gt;
+</pre></div>
+<p>This handler is obsolete and is provided for backwards
+compatibility. Use instead <a href= "#XML_SetEntityDeclHandler"
+>XML_SetEntityDeclHandler</a>.</p>
+</div>
+
+<div class="handler">
+<pre class="setter" id="XML_SetNotationDeclHandler">
+void XMLCALL
+XML_SetNotationDeclHandler(XML_Parser p,
+ XML_NotationDeclHandler h)
+</pre>
+<pre class="signature">
+typedef void
+(XMLCALL *XML_NotationDeclHandler)(void *userData,
+ const XML_Char *notationName,
+ const XML_Char *base,
+ const XML_Char *systemId,
+ const XML_Char *publicId);
+</pre>
+<p>Set a handler that receives notation declarations.</p>
+</div>
+
+<div class="handler">
+<pre class="setter" id="XML_SetNotStandaloneHandler">
+void XMLCALL
+XML_SetNotStandaloneHandler(XML_Parser p,
+ XML_NotStandaloneHandler h)
+</pre>
+<pre class="signature">
+typedef int
+(XMLCALL *XML_NotStandaloneHandler)(void *userData);
+</pre>
+<p>Set a handler that is called if the document is not "standalone".
+This happens when there is an external subset or a reference to a
+parameter entity, but does not have standalone set to "yes" in an XML
+declaration. If this handler returns <code>XML_STATUS_ERROR</code>,
+then the parser will throw an <code>XML_ERROR_NOT_STANDALONE</code>
+error.</p>
+</div>
+
+<h3><a name="position">Parse position and error reporting functions</a></h3>
+
+<p>These are the functions you'll want to call when the parse
+functions return <code>XML_STATUS_ERROR</code> (a parse error has
+occurred), although the position reporting functions are useful outside
+of errors. The position reported is the byte position (in the original
+document or entity encoding) of the first of the sequence of
+characters that generated the current event (or the error that caused
+the parse functions to return <code>XML_STATUS_ERROR</code>.) The
+exceptions are callbacks trigged by declarations in the document
+prologue, in which case they exact position reported is somewhere in the
+relevant markup, but not necessarily as meaningful as for other
+events.</p>
+
+<p>The position reporting functions are accurate only outside of the
+DTD. In other words, they usually return bogus information when
+called from within a DTD declaration handler.</p>
+
+<pre class="fcndec" id="XML_GetErrorCode">
+enum XML_Error XMLCALL
+XML_GetErrorCode(XML_Parser p);
+</pre>
+<div class="fcndef">
+Return what type of error has occurred.
+</div>
+
+<pre class="fcndec" id="XML_ErrorString">
+const XML_LChar * XMLCALL
+XML_ErrorString(enum XML_Error code);
+</pre>
+<div class="fcndef">
+Return a string describing the error corresponding to code.
+The code should be one of the enums that can be returned from
+<code><a href= "#XML_GetErrorCode" >XML_GetErrorCode</a></code>.
+</div>
+
+<pre class="fcndec" id="XML_GetCurrentByteIndex">
+XML_Index XMLCALL
+XML_GetCurrentByteIndex(XML_Parser p);
+</pre>
+<div class="fcndef">
+Return the byte offset of the position. This always corresponds to
+the values returned by <code><a href= "#XML_GetCurrentLineNumber"
+>XML_GetCurrentLineNumber</a></code> and <code><a href=
+"#XML_GetCurrentColumnNumber" >XML_GetCurrentColumnNumber</a></code>.
+</div>
+
+<pre class="fcndec" id="XML_GetCurrentLineNumber">
+XML_Size XMLCALL
+XML_GetCurrentLineNumber(XML_Parser p);
+</pre>
+<div class="fcndef">
+Return the line number of the position. The first line is reported as
+<code>1</code>.
+</div>
+
+<pre class="fcndec" id="XML_GetCurrentColumnNumber">
+XML_Size XMLCALL
+XML_GetCurrentColumnNumber(XML_Parser p);
+</pre>
+<div class="fcndef">
+Return the offset, from the beginning of the current line, of
+the position.
+</div>
+
+<pre class="fcndec" id="XML_GetCurrentByteCount">
+int XMLCALL
+XML_GetCurrentByteCount(XML_Parser p);
+</pre>
+<div class="fcndef">
+Return the number of bytes in the current event. Returns
+<code>0</code> if the event is inside a reference to an internal
+entity and for the end-tag event for empty element tags (the later can
+be used to distinguish empty-element tags from empty elements using
+separate start and end tags).
+</div>
+
+<pre class="fcndec" id="XML_GetInputContext">
+const char * XMLCALL
+XML_GetInputContext(XML_Parser p,
+ int *offset,
+ int *size);
+</pre>
+<div class="fcndef">
+
+<p>Returns the parser's input buffer, sets the integer pointed at by
+<code>offset</code> to the offset within this buffer of the current
+parse position, and set the integer pointed at by <code>size</code> to
+the size of the returned buffer.</p>
+
+<p>This should only be called from within a handler during an active
+parse and the returned buffer should only be referred to from within
+the handler that made the call. This input buffer contains the
+untranslated bytes of the input.</p>
+
+<p>Only a limited amount of context is kept, so if the event
+triggering a call spans over a very large amount of input, the actual
+parse position may be before the beginning of the buffer.</p>
+
+<p>If <code>XML_CONTEXT_BYTES</code> is not defined, this will always
+return NULL.</p>
+</div>
+
+<h3><a name="miscellaneous">Miscellaneous functions</a></h3>
+
+<p>The functions in this section either obtain state information from
+the parser or can be used to dynamicly set parser options.</p>
+
+<pre class="fcndec" id="XML_SetUserData">
+void XMLCALL
+XML_SetUserData(XML_Parser p,
+ void *userData);
+</pre>
+<div class="fcndef">
+This sets the user data pointer that gets passed to handlers. It
+overwrites any previous value for this pointer. Note that the
+application is responsible for freeing the memory associated with
+<code>userData</code> when it is finished with the parser. So if you
+call this when there's already a pointer there, and you haven't freed
+the memory associated with it, then you've probably just leaked
+memory.
+</div>
+
+<pre class="fcndec" id="XML_GetUserData">
+void * XMLCALL
+XML_GetUserData(XML_Parser p);
+</pre>
+<div class="fcndef">
+This returns the user data pointer that gets passed to handlers.
+It is actually implemented as a macro.
+</div>
+
+<pre class="fcndec" id="XML_UseParserAsHandlerArg">
+void XMLCALL
+XML_UseParserAsHandlerArg(XML_Parser p);
+</pre>
+<div class="fcndef">
+After this is called, handlers receive the parser in their
+<code>userData</code> arguments. The user data can still be obtained
+using the <code><a href= "#XML_GetUserData"
+>XML_GetUserData</a></code> function.
+</div>
+
+<pre class="fcndec" id="XML_SetBase">
+enum XML_Status XMLCALL
+XML_SetBase(XML_Parser p,
+ const XML_Char *base);
+</pre>
+<div class="fcndef">
+Set the base to be used for resolving relative URIs in system
+identifiers. The return value is <code>XML_STATUS_ERROR</code> if
+there's no memory to store base, otherwise it's
+<code>XML_STATUS_OK</code>.
+</div>
+
+<pre class="fcndec" id="XML_GetBase">
+const XML_Char * XMLCALL
+XML_GetBase(XML_Parser p);
+</pre>
+<div class="fcndef">
+Return the base for resolving relative URIs.
+</div>
+
+<pre class="fcndec" id="XML_GetSpecifiedAttributeCount">
+int XMLCALL
+XML_GetSpecifiedAttributeCount(XML_Parser p);
+</pre>
+<div class="fcndef">
+When attributes are reported to the start handler in the atts vector,
+attributes that were explicitly set in the element occur before any
+attributes that receive their value from default information in an
+ATTLIST declaration. This function returns the number of attributes
+that were explicitly set times two, thus giving the offset in the
+<code>atts</code> array passed to the start tag handler of the first
+attribute set due to defaults. It supplies information for the last
+call to a start handler. If called inside a start handler, then that
+means the current call.
+</div>
+
+<pre class="fcndec" id="XML_GetIdAttributeIndex">
+int XMLCALL
+XML_GetIdAttributeIndex(XML_Parser p);
+</pre>
+<div class="fcndef">
+Returns the index of the ID attribute passed in the atts array in the
+last call to <code><a href= "#XML_StartElementHandler"
+>XML_StartElementHandler</a></code>, or -1 if there is no ID
+attribute. If called inside a start handler, then that means the
+current call.
+</div>
+
+<pre class="fcndec" id="XML_SetEncoding">
+enum XML_Status XMLCALL
+XML_SetEncoding(XML_Parser p,
+ const XML_Char *encoding);
+</pre>
+<div class="fcndef">
+Set the encoding to be used by the parser. It is equivalent to
+passing a non-null encoding argument to the parser creation functions.
+It must not be called after <code><a href= "#XML_Parse"
+>XML_Parse</a></code> or <code><a href= "#XML_ParseBuffer"
+>XML_ParseBuffer</a></code> have been called on the given parser.
+Returns <code>XML_STATUS_OK</code> on success or
+<code>XML_STATUS_ERROR</code> on error.
+</div>
+
+<pre class="fcndec" id="XML_SetParamEntityParsing">
+int XMLCALL
+XML_SetParamEntityParsing(XML_Parser p,
+ enum XML_ParamEntityParsing code);
+</pre>
+<div class="fcndef">
+This enables parsing of parameter entities, including the external
+parameter entity that is the external DTD subset, according to
+<code>code</code>.
+The choices for <code>code</code> are:
+<ul>
+<li><code>XML_PARAM_ENTITY_PARSING_NEVER</code></li>
+<li><code>XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE</code></li>
+<li><code>XML_PARAM_ENTITY_PARSING_ALWAYS</code></li>
+</ul>
+</div>
+
+<pre class="fcndec" id="XML_UseForeignDTD">
+enum XML_Error XMLCALL
+XML_UseForeignDTD(XML_Parser parser, XML_Bool useDTD);
+</pre>
+<div class="fcndef">
+<p>This function allows an application to provide an external subset
+for the document type declaration for documents which do not specify
+an external subset of their own. For documents which specify an
+external subset in their DOCTYPE declaration, the application-provided
+subset will be ignored. If the document does not contain a DOCTYPE
+declaration at all and <code>useDTD</code> is true, the
+application-provided subset will be parsed, but the
+<code>startDoctypeDeclHandler</code> and
+<code>endDoctypeDeclHandler</code> functions, if set, will not be
+called. The setting of parameter entity parsing, controlled using
+<code><a href= "#XML_SetParamEntityParsing"
+>XML_SetParamEntityParsing</a></code>, will be honored.</p>
+
+<p>The application-provided external subset is read by calling the
+external entity reference handler set via <code><a href=
+"#XML_SetExternalEntityRefHandler"
+>XML_SetExternalEntityRefHandler</a></code> with both
+<code>publicId</code> and <code>systemId</code> set to NULL.</p>
+
+<p>If this function is called after parsing has begun, it returns
+<code>XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING</code> and ignores
+<code>useDTD</code>. If called when Expat has been compiled without
+DTD support, it returns
+<code>XML_ERROR_FEATURE_REQUIRES_XML_DTD</code>. Otherwise, it
+returns <code>XML_ERROR_NONE</code>.</p>
+
+<p><b>Note:</b> For the purpose of checking WFC: Entity Declared, passing
+<code>useDTD == XML_TRUE</code> will make the parser behave as if
+the document had a DTD with an external subset. This holds true even if
+the external entity reference handler returns without action.</p>
+</div>
+
+<pre class="fcndec" id="XML_SetReturnNSTriplet">
+void XMLCALL
+XML_SetReturnNSTriplet(XML_Parser parser,
+ int do_nst);
+</pre>
+<div class="fcndef">
+<p>
+This function only has an effect when using a parser created with
+<code><a href= "#XML_ParserCreateNS" >XML_ParserCreateNS</a></code>,
+i.e. when namespace processing is in effect. The <code>do_nst</code>
+sets whether or not prefixes are returned with names qualified with a
+namespace prefix. If this function is called with <code>do_nst</code>
+non-zero, then afterwards namespace qualified names (that is qualified
+with a prefix as opposed to belonging to a default namespace) are
+returned as a triplet with the three parts separated by the namespace
+separator specified when the parser was created. The order of
+returned parts is URI, local name, and prefix.</p> <p>If
+<code>do_nst</code> is zero, then namespaces are reported in the
+default manner, URI then local_name separated by the namespace
+separator.</p>
+</div>
+
+<pre class="fcndec" id="XML_DefaultCurrent">
+void XMLCALL
+XML_DefaultCurrent(XML_Parser parser);
+</pre>
+<div class="fcndef">
+This can be called within a handler for a start element, end element,
+processing instruction or character data. It causes the corresponding
+markup to be passed to the default handler set by <code><a
+href="#XML_SetDefaultHandler" >XML_SetDefaultHandler</a></code> or
+<code><a href="#XML_SetDefaultHandlerExpand"
+>XML_SetDefaultHandlerExpand</a></code>. It does nothing if there is
+not a default handler.
+</div>
+
+<pre class="fcndec" id="XML_ExpatVersion">
+XML_LChar * XMLCALL
+XML_ExpatVersion();
+</pre>
+<div class="fcndef">
+Return the library version as a string (e.g. <code>"expat_1.95.1"</code>).
+</div>
+
+<pre class="fcndec" id="XML_ExpatVersionInfo">
+struct XML_Expat_Version XMLCALL
+XML_ExpatVersionInfo();
+</pre>
+<pre class="signature">
+typedef struct {
+ int major;
+ int minor;
+ int micro;
+} XML_Expat_Version;
+</pre>
+<div class="fcndef">
+Return the library version information as a structure.
+Some macros are also defined that support compile-time tests of the
+library version:
+<ul>
+<li><code>XML_MAJOR_VERSION</code></li>
+<li><code>XML_MINOR_VERSION</code></li>
+<li><code>XML_MICRO_VERSION</code></li>
+</ul>
+Testing these constants is currently the best way to determine if
+particular parts of the Expat API are available.
+</div>
+
+<pre class="fcndec" id="XML_GetFeatureList">
+const XML_Feature * XMLCALL
+XML_GetFeatureList();
+</pre>
+<pre class="signature">
+enum XML_FeatureEnum {
+ XML_FEATURE_END = 0,
+ XML_FEATURE_UNICODE,
+ XML_FEATURE_UNICODE_WCHAR_T,
+ XML_FEATURE_DTD,
+ XML_FEATURE_CONTEXT_BYTES,
+ XML_FEATURE_MIN_SIZE,
+ XML_FEATURE_SIZEOF_XML_CHAR,
+ XML_FEATURE_SIZEOF_XML_LCHAR
+};
+
+typedef struct {
+ enum XML_FeatureEnum feature;
+ XML_LChar *name;
+ long int value;
+} XML_Feature;
+</pre>
+<div class="fcndef">
+<p>Returns a list of "feature" records, providing details on how
+Expat was configured at compile time. Most applications should not
+need to worry about this, but this information is otherwise not
+available from Expat. This function allows code that does need to
+check these features to do so at runtime.</p>
+
+<p>The return value is an array of <code>XML_Feature</code>,
+terminated by a record with a <code>feature</code> of
+<code>XML_FEATURE_END</code> and <code>name</code> of NULL,
+identifying the feature-test macros Expat was compiled with. Since an
+application that requires this kind of information needs to determine
+the type of character the <code>name</code> points to, records for the
+<code>XML_FEATURE_SIZEOF_XML_CHAR</code> and
+<code>XML_FEATURE_SIZEOF_XML_LCHAR</code> will be located at the
+beginning of the list, followed by <code>XML_FEATURE_UNICODE</code>
+and <code>XML_FEATURE_UNICODE_WCHAR_T</code>, if they are present at
+all.</p>
+
+<p>Some features have an associated value. If there isn't an
+associated value, the <code>value</code> field is set to 0. At this
+time, the following features have been defined to have values:</p>
+
+<dl>
+ <dt><code>XML_FEATURE_SIZEOF_XML_CHAR</code></dt>
+ <dd>The number of bytes occupied by one <code>XML_Char</code>
+ character.</dd>
+ <dt><code>XML_FEATURE_SIZEOF_XML_LCHAR</code></dt>
+ <dd>The number of bytes occupied by one <code>XML_LChar</code>
+ character.</dd>
+ <dt><code>XML_FEATURE_CONTEXT_BYTES</code></dt>
+ <dd>The maximum number of characters of context which can be
+ reported by <code><a href= "#XML_GetInputContext"
+ >XML_GetInputContext</a></code>.</dd>
+</dl>
+</div>
+
+<pre class="fcndec" id="XML_FreeContentModel">
+void XMLCALL
+XML_FreeContentModel(XML_Parser parser, XML_Content *model);
+</pre>
+<div class="fcndef">
+Function to deallocate the <code>model</code> argument passed to the
+<code>XML_ElementDeclHandler</code> callback set using <code><a
+href="#XML_SetElementDeclHandler" >XML_ElementDeclHandler</a></code>.
+This function should not be used for any other purpose.
+</div>
+
+<p>The following functions allow external code to share the memory
+allocator an <code>XML_Parser</code> has been configured to use. This
+is especially useful for third-party libraries that interact with a
+parser object created by application code, or heavily layered
+applications. This can be essential when using dynamically loaded
+libraries which use different C standard libraries (this can happen on
+Windows, at least).</p>
+
+<pre class="fcndec" id="XML_MemMalloc">
+void * XMLCALL
+XML_MemMalloc(XML_Parser parser, size_t size);
+</pre>
+<div class="fcndef">
+Allocate <code>size</code> bytes of memory using the allocator the
+<code>parser</code> object has been configured to use. Returns a
+pointer to the memory or NULL on failure. Memory allocated in this
+way must be freed using <code><a href="#XML_MemFree"
+>XML_MemFree</a></code>.
+</div>
+
+<pre class="fcndec" id="XML_MemRealloc">
+void * XMLCALL
+XML_MemRealloc(XML_Parser parser, void *ptr, size_t size);
+</pre>
+<div class="fcndef">
+Allocate <code>size</code> bytes of memory using the allocator the
+<code>parser</code> object has been configured to use.
+<code>ptr</code> must point to a block of memory allocated by <code><a
+href="#XML_MemMalloc" >XML_MemMalloc</a></code> or
+<code>XML_MemRealloc</code>, or be NULL. This function tries to
+expand the block pointed to by <code>ptr</code> if possible. Returns
+a pointer to the memory or NULL on failure. On success, the original
+block has either been expanded or freed. On failure, the original
+block has not been freed; the caller is responsible for freeing the
+original block. Memory allocated in this way must be freed using
+<code><a href="#XML_MemFree"
+>XML_MemFree</a></code>.
+</div>
+
+<pre class="fcndec" id="XML_MemFree">
+void XMLCALL
+XML_MemFree(XML_Parser parser, void *ptr);
+</pre>
+<div class="fcndef">
+Free a block of memory pointed to by <code>ptr</code>. The block must
+have been allocated by <code><a href="#XML_MemMalloc"
+>XML_MemMalloc</a></code> or <code>XML_MemRealloc</code>, or be NULL.
+</div>
+
+<hr />
+<p><a href="http://validator.w3.org/check/referer"><img
+ src="valid-xhtml10.png" alt="Valid XHTML 1.0!"
+ height="31" width="88" class="noborder" /></a></p>
+</div>
+</body>
+</html>

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/doc/style.css
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/doc/style.css 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,101 @@
+body {
+ background-color: white;
+ border: 0px;
+ margin: 0px;
+ padding: 0px;
+}
+
+.corner {
+ width: 200px;
+ height: 80px;
+ text-align: center;
+}
+
+.banner {
+ background-color: rgb(110,139,61);
+ color: rgb(255,236,176);
+ padding-left: 2em;
+}
+
+.banner h1 {
+ font-size: 200%;
+}
+
+.content {
+ padding: 0em 2em 1em 2em;
+}
+
+.releaseno {
+ background-color: rgb(110,139,61);
+ color: rgb(255,236,176);
+ padding-bottom: 0.3em;
+ padding-top: 0.5em;
+ text-align: center;
+ font-weight: bold;
+}
+
+.noborder {
+ border-width: 0px;
+}
+
+.eg {
+ padding-left: 1em;
+ padding-top: .5em;
+ padding-bottom: .5em;
+ border: solid thin;
+ margin: 1em 0;
+ background-color: tan;
+ margin-left: 2em;
+ margin-right: 10%;
+}
+
+.pseudocode {
+ padding-left: 1em;
+ padding-top: .5em;
+ padding-bottom: .5em;
+ border: solid thin;
+ margin: 1em 0;
+ background-color: rgb(250,220,180);
+ margin-left: 2em;
+ margin-right: 10%;
+}
+
+.handler {
+ width: 100%;
+ border-top-width: thin;
+ margin-bottom: 1em;
+}
+
+.handler p {
+ margin-left: 2em;
+}
+
+.setter {
+ font-weight: bold;
+}
+
+.signature {
+ color: navy;
+}
+
+.fcndec {
+ width: 100%;
+ border-top-width: thin;
+ font-weight: bold;
+}
+
+.fcndef {
+ margin-left: 2em;
+ margin-bottom: 2em;
+}
+
+dd {
+ margin-bottom: 2em;
+}
+
+.cpp-symbols dt {
+ font-family: monospace;
+}
+.cpp-symbols dd {
+ margin-bottom: 1em;
+}

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/doc/valid-xhtml10.png
==============================================================================
Binary file. No diff available.

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/doc/xmlwf.1
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/doc/xmlwf.1 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,251 @@
+.\" This manpage has been automatically generated by docbook2man
+.\" from a DocBook document. This tool can be found at:
+.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>
+.\" Please send any bug reports, improvements, comments, patches,
+.\" etc. to Steve Cheng <steve_at_[hidden]>.
+.TH "XMLWF" "1" "24 January 2003" "" ""
+.SH NAME
+xmlwf \- Determines if an XML document is well-formed
+.SH SYNOPSIS
+
+\fBxmlwf\fR [ \fB-s\fR] [ \fB-n\fR] [ \fB-p\fR] [ \fB-x\fR] [ \fB-e \fIencoding\fB\fR] [ \fB-w\fR] [ \fB-d \fIoutput-dir\fB\fR] [ \fB-c\fR] [ \fB-m\fR] [ \fB-r\fR] [ \fB-t\fR] [ \fB-v\fR] [ \fBfile ...\fR]
+
+.SH "DESCRIPTION"
+.PP
+\fBxmlwf\fR uses the Expat library to
+determine if an XML document is well-formed. It is
+non-validating.
+.PP
+If you do not specify any files on the command-line, and you
+have a recent version of \fBxmlwf\fR, the
+input file will be read from standard input.
+.SH "WELL-FORMED DOCUMENTS"
+.PP
+A well-formed document must adhere to the
+following rules:
+.TP 0.2i
+\(bu
+The file begins with an XML declaration. For instance,
+<?xml version="1.0" standalone="yes"?>.
+\fBNOTE:\fR
+\fBxmlwf\fR does not currently
+check for a valid XML declaration.
+.TP 0.2i
+\(bu
+Every start tag is either empty (<tag/>)
+or has a corresponding end tag.
+.TP 0.2i
+\(bu
+There is exactly one root element. This element must contain
+all other elements in the document. Only comments, white
+space, and processing instructions may come after the close
+of the root element.
+.TP 0.2i
+\(bu
+All elements nest properly.
+.TP 0.2i
+\(bu
+All attribute values are enclosed in quotes (either single
+or double).
+.PP
+If the document has a DTD, and it strictly complies with that
+DTD, then the document is also considered \fBvalid\fR.
+\fBxmlwf\fR is a non-validating parser --
+it does not check the DTD. However, it does support
+external entities (see the \fB-x\fR option).
+.SH "OPTIONS"
+.PP
+When an option includes an argument, you may specify the argument either
+separately ("\fB-d\fR output") or concatenated with the
+option ("\fB-d\fRoutput"). \fBxmlwf\fR
+supports both.
+.TP
+\fB-c\fR
+If the input file is well-formed and \fBxmlwf\fR
+doesn't encounter any errors, the input file is simply copied to
+the output directory unchanged.
+This implies no namespaces (turns off \fB-n\fR) and
+requires \fB-d\fR to specify an output file.
+.TP
+\fB-d output-dir\fR
+Specifies a directory to contain transformed
+representations of the input files.
+By default, \fB-d\fR outputs a canonical representation
+(described below).
+You can select different output formats using \fB-c\fR
+and \fB-m\fR.
+
+The output filenames will
+be exactly the same as the input filenames or "STDIN" if the input is
+coming from standard input. Therefore, you must be careful that the
+output file does not go into the same directory as the input
+file. Otherwise, \fBxmlwf\fR will delete the
+input file before it generates the output file (just like running
+cat < file > file in most shells).
+
+Two structurally equivalent XML documents have a byte-for-byte
+identical canonical XML representation.
+Note that ignorable white space is considered significant and
+is treated equivalently to data.
+More on canonical XML can be found at
+http://www.jclark.com/xml/canonxml.html .
+.TP
+\fB-e encoding\fR
+Specifies the character encoding for the document, overriding
+any document encoding declaration. \fBxmlwf\fR
+supports four built-in encodings:
+US-ASCII,
+UTF-8,
+UTF-16, and
+ISO-8859-1.
+Also see the \fB-w\fR option.
+.TP
+\fB-m\fR
+Outputs some strange sort of XML file that completely
+describes the the input file, including character postitions.
+Requires \fB-d\fR to specify an output file.
+.TP
+\fB-n\fR
+Turns on namespace processing. (describe namespaces)
+\fB-c\fR disables namespaces.
+.TP
+\fB-p\fR
+Tells xmlwf to process external DTDs and parameter
+entities.
+
+Normally \fBxmlwf\fR never parses parameter
+entities. \fB-p\fR tells it to always parse them.
+\fB-p\fR implies \fB-x\fR.
+.TP
+\fB-r\fR
+Normally \fBxmlwf\fR memory-maps the XML file
+before parsing; this can result in faster parsing on many
+platforms.
+\fB-r\fR turns off memory-mapping and uses normal file
+IO calls instead.
+Of course, memory-mapping is automatically turned off
+when reading from standard input.
+
+Use of memory-mapping can cause some platforms to report
+substantially higher memory usage for
+\fBxmlwf\fR, but this appears to be a matter of
+the operating system reporting memory in a strange way; there is
+not a leak in \fBxmlwf\fR.
+.TP
+\fB-s\fR
+Prints an error if the document is not standalone.
+A document is standalone if it has no external subset and no
+references to parameter entities.
+.TP
+\fB-t\fR
+Turns on timings. This tells Expat to parse the entire file,
+but not perform any processing.
+This gives a fairly accurate idea of the raw speed of Expat itself
+without client overhead.
+\fB-t\fR turns off most of the output options
+(\fB-d\fR, \fB-m\fR, \fB-c\fR,
+\&...).
+.TP
+\fB-v\fR
+Prints the version of the Expat library being used, including some
+information on the compile-time configuration of the library, and
+then exits.
+.TP
+\fB-w\fR
+Enables support for Windows code pages.
+Normally, \fBxmlwf\fR will throw an error if it
+runs across an encoding that it is not equipped to handle itself. With
+\fB-w\fR, xmlwf will try to use a Windows code
+page. See also \fB-e\fR.
+.TP
+\fB-x\fR
+Turns on parsing external entities.
+
+Non-validating parsers are not required to resolve external
+entities, or even expand entities at all.
+Expat always expands internal entities (?),
+but external entity parsing must be enabled explicitly.
+
+External entities are simply entities that obtain their
+data from outside the XML file currently being parsed.
+
+This is an example of an internal entity:
+
+.nf
+<!ENTITY vers '1.0.2'>
+.fi
+
+And here are some examples of external entities:
+
+.nf
+<!ENTITY header SYSTEM "header-&vers;.xml"> (parsed)
+<!ENTITY logo SYSTEM "logo.png" PNG> (unparsed)
+.fi
+.TP
+\fB--\fR
+(Two hyphens.)
+Terminates the list of options. This is only needed if a filename
+starts with a hyphen. For example:
+
+.nf
+xmlwf -- -myfile.xml
+.fi
+
+will run \fBxmlwf\fR on the file
+\fI-myfile.xml\fR.
+.PP
+Older versions of \fBxmlwf\fR do not support
+reading from standard input.
+.SH "OUTPUT"
+.PP
+If an input file is not well-formed,
+\fBxmlwf\fR prints a single line describing
+the problem to standard output. If a file is well formed,
+\fBxmlwf\fR outputs nothing.
+Note that the result code is \fBnot\fR set.
+.SH "BUGS"
+.PP
+According to the W3C standard, an XML file without a
+declaration at the beginning is not considered well-formed.
+However, \fBxmlwf\fR allows this to pass.
+.PP
+\fBxmlwf\fR returns a 0 - noerr result,
+even if the file is not well-formed. There is no good way for
+a program to use \fBxmlwf\fR to quickly
+check a file -- it must parse \fBxmlwf\fR's
+standard output.
+.PP
+The errors should go to standard error, not standard output.
+.PP
+There should be a way to get \fB-d\fR to send its
+output to standard output rather than forcing the user to send
+it to a file.
+.PP
+I have no idea why anyone would want to use the
+\fB-d\fR, \fB-c\fR, and
+\fB-m\fR options. If someone could explain it to
+me, I'd like to add this information to this manpage.
+.SH "ALTERNATIVES"
+.PP
+Here are some XML validators on the web:
+
+.nf
+http://www.hcrc.ed.ac.uk/~richard/xml-check.html
+http://www.stg.brown.edu/service/xmlvalid/
+http://www.scripting.com/frontier5/xml/code/xmlValidator.html
+http://www.xml.com/pub/a/tools/ruwf/check.html
+.fi
+.SH "SEE ALSO"
+.PP
+
+.nf
+The Expat home page: http://www.libexpat.org/
+The W3 XML specification: http://www.w3.org/TR/REC-xml
+.fi
+.SH "AUTHOR"
+.PP
+This manual page was written by Scott Bronson <bronson_at_[hidden]> for
+the Debian GNU/Linux system (but may be used by others). Permission is
+granted to copy, distribute and/or modify this document under
+the terms of the GNU Free Documentation
+License, Version 1.1.

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/doc/xmlwf.sgml
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/doc/xmlwf.sgml 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,473 @@
+<!doctype refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [
+
+<!-- Process this file with docbook-to-man to generate an nroff manual
+ page: `docbook-to-man manpage.sgml > manpage.1'. You may view
+ the manual page with: `docbook-to-man manpage.sgml | nroff -man |
+ less'. A typical entry in a Makefile or Makefile.am is:
+
+manpage.1: manpage.sgml
+ docbook-to-man $< > $@
+ -->
+
+ <!-- Fill in your name for FIRSTNAME and SURNAME. -->
+ <!ENTITY dhfirstname "<firstname>Scott</firstname>">
+ <!ENTITY dhsurname "<surname>Bronson</surname>">
+ <!-- Please adjust the date whenever revising the manpage. -->
+ <!ENTITY dhdate "<date>December 5, 2001</date>">
+ <!-- SECTION should be 1-8, maybe w/ subsection other parameters are
+ allowed: see man(7), man(1). -->
+ <!ENTITY dhsection "<manvolnum>1</manvolnum>">
+ <!ENTITY dhemail "<email>bronson_at_[hidden]</email>">
+ <!ENTITY dhusername "Scott Bronson">
+ <!ENTITY dhucpackage "<refentrytitle>XMLWF</refentrytitle>">
+ <!ENTITY dhpackage "xmlwf">
+
+ <!ENTITY debian "<productname>Debian GNU/Linux</productname>">
+ <!ENTITY gnu "<acronym>GNU</acronym>">
+]>
+
+<refentry>
+ <refentryinfo>
+ <address>
+ &dhemail;
+ </address>
+ <author>
+ &dhfirstname;
+ &dhsurname;
+ </author>
+ <copyright>
+ <year>2001</year>
+ <holder>&dhusername;</holder>
+ </copyright>
+ &dhdate;
+ </refentryinfo>
+ <refmeta>
+ &dhucpackage;
+
+ &dhsection;
+ </refmeta>
+ <refnamediv>
+ <refname>&dhpackage;</refname>
+
+ <refpurpose>Determines if an XML document is well-formed</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <cmdsynopsis>
+ <command>&dhpackage;</command>
+ <arg><option>-s</option></arg>
+ <arg><option>-n</option></arg>
+ <arg><option>-p</option></arg>
+ <arg><option>-x</option></arg>
+
+ <arg><option>-e <replaceable>encoding</replaceable></option></arg>
+ <arg><option>-w</option></arg>
+
+ <arg><option>-d <replaceable>output-dir</replaceable></option></arg>
+ <arg><option>-c</option></arg>
+ <arg><option>-m</option></arg>
+
+ <arg><option>-r</option></arg>
+ <arg><option>-t</option></arg>
+
+ <arg><option>-v</option></arg>
+
+ <arg>file ...</arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>DESCRIPTION</title>
+
+ <para>
+ <command>&dhpackage;</command> uses the Expat library to
+ determine if an XML document is well-formed. It is
+ non-validating.
+ </para>
+
+ <para>
+ If you do not specify any files on the command-line, and you
+ have a recent version of <command>&dhpackage;</command>, the
+ input file will be read from standard input.
+ </para>
+
+ </refsect1>
+
+ <refsect1>
+ <title>WELL-FORMED DOCUMENTS</title>
+
+ <para>
+ A well-formed document must adhere to the
+ following rules:
+ </para>
+
+ <itemizedlist>
+ <listitem><para>
+ The file begins with an XML declaration. For instance,
+ <literal>&lt;?xml version="1.0" standalone="yes"?&gt;</literal>.
+ <emphasis>NOTE:</emphasis>
+ <command>&dhpackage;</command> does not currently
+ check for a valid XML declaration.
+ </para></listitem>
+ <listitem><para>
+ Every start tag is either empty (&lt;tag/&gt;)
+ or has a corresponding end tag.
+ </para></listitem>
+ <listitem><para>
+ There is exactly one root element. This element must contain
+ all other elements in the document. Only comments, white
+ space, and processing instructions may come after the close
+ of the root element.
+ </para></listitem>
+ <listitem><para>
+ All elements nest properly.
+ </para></listitem>
+ <listitem><para>
+ All attribute values are enclosed in quotes (either single
+ or double).
+ </para></listitem>
+ </itemizedlist>
+
+ <para>
+ If the document has a DTD, and it strictly complies with that
+ DTD, then the document is also considered <emphasis>valid</emphasis>.
+ <command>&dhpackage;</command> is a non-validating parser --
+ it does not check the DTD. However, it does support
+ external entities (see the <option>-x</option> option).
+ </para>
+ </refsect1>
+
+ <refsect1>
+ <title>OPTIONS</title>
+
+<para>
+When an option includes an argument, you may specify the argument either
+separately ("<option>-d</option> output") or concatenated with the
+option ("<option>-d</option>output"). <command>&dhpackage;</command>
+supports both.
+</para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term><option>-c</option></term>
+ <listitem>
+ <para>
+ If the input file is well-formed and <command>&dhpackage;</command>
+ doesn't encounter any errors, the input file is simply copied to
+ the output directory unchanged.
+ This implies no namespaces (turns off <option>-n</option>) and
+ requires <option>-d</option> to specify an output file.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-d output-dir</option></term>
+ <listitem>
+ <para>
+ Specifies a directory to contain transformed
+ representations of the input files.
+ By default, <option>-d</option> outputs a canonical representation
+ (described below).
+ You can select different output formats using <option>-c</option>
+ and <option>-m</option>.
+ </para>
+ <para>
+ The output filenames will
+ be exactly the same as the input filenames or "STDIN" if the input is
+ coming from standard input. Therefore, you must be careful that the
+ output file does not go into the same directory as the input
+ file. Otherwise, <command>&dhpackage;</command> will delete the
+ input file before it generates the output file (just like running
+ <literal>cat &lt; file &gt; file</literal> in most shells).
+ </para>
+ <para>
+ Two structurally equivalent XML documents have a byte-for-byte
+ identical canonical XML representation.
+ Note that ignorable white space is considered significant and
+ is treated equivalently to data.
+ More on canonical XML can be found at
+ http://www.jclark.com/xml/canonxml.html .
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-e encoding</option></term>
+ <listitem>
+ <para>
+ Specifies the character encoding for the document, overriding
+ any document encoding declaration. <command>&dhpackage;</command>
+ supports four built-in encodings:
+ <literal>US-ASCII</literal>,
+ <literal>UTF-8</literal>,
+ <literal>UTF-16</literal>, and
+ <literal>ISO-8859-1</literal>.
+ Also see the <option>-w</option> option.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-m</option></term>
+ <listitem>
+ <para>
+ Outputs some strange sort of XML file that completely
+ describes the the input file, including character postitions.
+ Requires <option>-d</option> to specify an output file.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-n</option></term>
+ <listitem>
+ <para>
+ Turns on namespace processing. (describe namespaces)
+ <option>-c</option> disables namespaces.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-p</option></term>
+ <listitem>
+ <para>
+ Tells xmlwf to process external DTDs and parameter
+ entities.
+ </para>
+ <para>
+ Normally <command>&dhpackage;</command> never parses parameter
+ entities. <option>-p</option> tells it to always parse them.
+ <option>-p</option> implies <option>-x</option>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-r</option></term>
+ <listitem>
+ <para>
+ Normally <command>&dhpackage;</command> memory-maps the XML file
+ before parsing; this can result in faster parsing on many
+ platforms.
+ <option>-r</option> turns off memory-mapping and uses normal file
+ IO calls instead.
+ Of course, memory-mapping is automatically turned off
+ when reading from standard input.
+ </para>
+ <para>
+ Use of memory-mapping can cause some platforms to report
+ substantially higher memory usage for
+ <command>&dhpackage;</command>, but this appears to be a matter of
+ the operating system reporting memory in a strange way; there is
+ not a leak in <command>&dhpackage;</command>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-s</option></term>
+ <listitem>
+ <para>
+ Prints an error if the document is not standalone.
+ A document is standalone if it has no external subset and no
+ references to parameter entities.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-t</option></term>
+ <listitem>
+ <para>
+ Turns on timings. This tells Expat to parse the entire file,
+ but not perform any processing.
+ This gives a fairly accurate idea of the raw speed of Expat itself
+ without client overhead.
+ <option>-t</option> turns off most of the output options
+ (<option>-d</option>, <option>-m</option>, <option>-c</option>,
+ ...).
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-v</option></term>
+ <listitem>
+ <para>
+ Prints the version of the Expat library being used, including some
+ information on the compile-time configuration of the library, and
+ then exits.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-w</option></term>
+ <listitem>
+ <para>
+ Enables support for Windows code pages.
+ Normally, <command>&dhpackage;</command> will throw an error if it
+ runs across an encoding that it is not equipped to handle itself. With
+ <option>-w</option>, &dhpackage; will try to use a Windows code
+ page. See also <option>-e</option>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-x</option></term>
+ <listitem>
+ <para>
+ Turns on parsing external entities.
+ </para>
+<para>
+ Non-validating parsers are not required to resolve external
+ entities, or even expand entities at all.
+ Expat always expands internal entities (?),
+ but external entity parsing must be enabled explicitly.
+ </para>
+ <para>
+ External entities are simply entities that obtain their
+ data from outside the XML file currently being parsed.
+ </para>
+ <para>
+ This is an example of an internal entity:
+<literallayout>
+&lt;!ENTITY vers '1.0.2'&gt;
+</literallayout>
+ </para>
+ <para>
+ And here are some examples of external entities:
+
+<literallayout>
+&lt;!ENTITY header SYSTEM "header-&amp;vers;.xml"&gt; (parsed)
+&lt;!ENTITY logo SYSTEM "logo.png" PNG&gt; (unparsed)
+</literallayout>
+
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>--</option></term>
+ <listitem>
+ <para>
+ (Two hyphens.)
+ Terminates the list of options. This is only needed if a filename
+ starts with a hyphen. For example:
+ </para>
+<literallayout>
+&dhpackage; -- -myfile.xml
+</literallayout>
+ <para>
+ will run <command>&dhpackage;</command> on the file
+ <filename>-myfile.xml</filename>.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ <para>
+ Older versions of <command>&dhpackage;</command> do not support
+ reading from standard input.
+ </para>
+ </refsect1>
+
+ <refsect1>
+ <title>OUTPUT</title>
+ <para>
+ If an input file is not well-formed,
+ <command>&dhpackage;</command> prints a single line describing
+ the problem to standard output. If a file is well formed,
+ <command>&dhpackage;</command> outputs nothing.
+ Note that the result code is <emphasis>not</emphasis> set.
+ </para>
+ </refsect1>
+
+ <refsect1>
+ <title>BUGS</title>
+ <para>
+ According to the W3C standard, an XML file without a
+ declaration at the beginning is not considered well-formed.
+ However, <command>&dhpackage;</command> allows this to pass.
+ </para>
+ <para>
+ <command>&dhpackage;</command> returns a 0 - noerr result,
+ even if the file is not well-formed. There is no good way for
+ a program to use <command>&dhpackage;</command> to quickly
+ check a file -- it must parse <command>&dhpackage;</command>'s
+ standard output.
+ </para>
+ <para>
+ The errors should go to standard error, not standard output.
+ </para>
+ <para>
+ There should be a way to get <option>-d</option> to send its
+ output to standard output rather than forcing the user to send
+ it to a file.
+ </para>
+ <para>
+ I have no idea why anyone would want to use the
+ <option>-d</option>, <option>-c</option>, and
+ <option>-m</option> options. If someone could explain it to
+ me, I'd like to add this information to this manpage.
+ </para>
+ </refsect1>
+
+ <refsect1>
+ <title>ALTERNATIVES</title>
+ <para>
+ Here are some XML validators on the web:
+
+<literallayout>
+http://www.hcrc.ed.ac.uk/~richard/xml-check.html
+http://www.stg.brown.edu/service/xmlvalid/
+http://www.scripting.com/frontier5/xml/code/xmlValidator.html
+http://www.xml.com/pub/a/tools/ruwf/check.html
+</literallayout>
+
+ </para>
+ </refsect1>
+
+ <refsect1>
+ <title>SEE ALSO</title>
+ <para>
+
+<literallayout>
+The Expat home page: http://www.libexpat.org/
+The W3 XML specification: http://www.w3.org/TR/REC-xml
+</literallayout>
+
+ </para>
+ </refsect1>
+
+ <refsect1>
+ <title>AUTHOR</title>
+ <para>
+ This manual page was written by &dhusername; &dhemail; for
+ the &debian; system (but may be used by others). Permission is
+ granted to copy, distribute and/or modify this document under
+ the terms of the <acronym>GNU</acronym> Free Documentation
+ License, Version 1.1.
+ </para>
+ </refsect1>
+</refentry>
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+sgml-shorttag:t
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:nil
+sgml-default-dtd-file:nil
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/examples/elements.c
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/examples/elements.c 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,67 @@
+/* This is simple demonstration of how to use expat. This program
+ reads an XML document from standard input and writes a line with
+ the name of each element to standard output indenting child
+ elements by one tab stop more than their parent element.
+ It must be used with Expat compiled for UTF-8 output.
+*/
+
+#include <stdio.h>
+#include "expat.h"
+
+#ifdef XML_LARGE_SIZE
+#if defined(XML_USE_MSC_EXTENSIONS) && _MSC_VER < 1400
+#define XML_FMT_INT_MOD "I64"
+#else
+#define XML_FMT_INT_MOD "ll"
+#endif
+#else
+#define XML_FMT_INT_MOD "l"
+#endif
+
+static void XMLCALL
+startElement(void *userData, const char *name, const char **atts)
+{
+ int i;
+ int *depthPtr = (int *)userData;
+ for (i = 0; i < *depthPtr; i++)
+ putchar('\t');
+ puts(name);
+ *depthPtr += 1;
+}
+
+static void XMLCALL
+endElement(void *userData, const char *name)
+{
+ int *depthPtr = (int *)userData;
+ *depthPtr -= 1;
+}
+
+#ifdef AMIGA_SHARED_LIB
+#include <proto/expat.h>
+int
+amiga_main(int argc, char *argv[])
+#else
+int
+main(int argc, char *argv[])
+#endif
+{
+ char buf[BUFSIZ];
+ XML_Parser parser = XML_ParserCreate(NULL);
+ int done;
+ int depth = 0;
+ XML_SetUserData(parser, &depth);
+ XML_SetElementHandler(parser, startElement, endElement);
+ do {
+ size_t len = fread(buf, 1, sizeof(buf), stdin);
+ done = len < sizeof(buf);
+ if (XML_Parse(parser, buf, len, done) == XML_STATUS_ERROR) {
+ fprintf(stderr,
+ "%s at line %" XML_FMT_INT_MOD "u\n",
+ XML_ErrorString(XML_GetErrorCode(parser)),
+ XML_GetCurrentLineNumber(parser));
+ return 1;
+ }
+ } while (!done);
+ XML_ParserFree(parser);
+ return 0;
+}

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/examples/elements.dsp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/examples/elements.dsp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,103 @@
+# Microsoft Developer Studio Project File - Name="elements" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=elements - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "elements.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "elements.mak" CFG="elements - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "elements - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "elements - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "elements - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\lib" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "XML_STATIC" /FD /c
+# SUBTRACT CPP /X /YX
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 odbccp32.lib libexpatMT.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib /nologo /subsystem:console /pdb:none /machine:I386 /libpath:"..\lib\Release_static"
+
+!ELSEIF "$(CFG)" == "elements - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /GX /ZI /Od /I "..\lib" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "XML_STATIC" /FR /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 odbccp32.lib libexpatMT.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /libpath:"..\lib\Debug_static"
+
+!ENDIF
+
+# Begin Target
+
+# Name "elements - Win32 Release"
+# Name "elements - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=.\elements.c
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# End Group
+# End Target
+# End Project

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/examples/outline.c
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/examples/outline.c 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,107 @@
+/*****************************************************************
+ * outline.c
+ *
+ * Copyright 1999, Clark Cooper
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the license contained in the
+ * COPYING file that comes with the expat distribution.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Read an XML document from standard input and print an element
+ * outline on standard output.
+ * Must be used with Expat compiled for UTF-8 output.
+ */
+
+
+#include <stdio.h>
+#include <expat.h>
+
+#ifdef XML_LARGE_SIZE
+#if defined(XML_USE_MSC_EXTENSIONS) && _MSC_VER < 1400
+#define XML_FMT_INT_MOD "I64"
+#else
+#define XML_FMT_INT_MOD "ll"
+#endif
+#else
+#define XML_FMT_INT_MOD "l"
+#endif
+
+#define BUFFSIZE 8192
+
+char Buff[BUFFSIZE];
+
+int Depth;
+
+static void XMLCALL
+start(void *data, const char *el, const char **attr)
+{
+ int i;
+
+ for (i = 0; i < Depth; i++)
+ printf(" ");
+
+ printf("%s", el);
+
+ for (i = 0; attr[i]; i += 2) {
+ printf(" %s='%s'", attr[i], attr[i + 1]);
+ }
+
+ printf("\n");
+ Depth++;
+}
+
+static void XMLCALL
+end(void *data, const char *el)
+{
+ Depth--;
+}
+
+#ifdef AMIGA_SHARED_LIB
+#include <proto/expat.h>
+int
+amiga_main(int argc, char *argv[])
+#else
+int
+main(int argc, char *argv[])
+#endif
+{
+ XML_Parser p = XML_ParserCreate(NULL);
+ if (! p) {
+ fprintf(stderr, "Couldn't allocate memory for parser\n");
+ exit(-1);
+ }
+
+ XML_SetElementHandler(p, start, end);
+
+ for (;;) {
+ int done;
+ int len;
+
+ len = fread(Buff, 1, BUFFSIZE, stdin);
+ if (ferror(stdin)) {
+ fprintf(stderr, "Read error\n");
+ exit(-1);
+ }
+ done = feof(stdin);
+
+ if (XML_Parse(p, Buff, len, done) == XML_STATUS_ERROR) {
+ fprintf(stderr, "Parse error at line %" XML_FMT_INT_MOD "u:\n%s\n",
+ XML_GetCurrentLineNumber(p),
+ XML_ErrorString(XML_GetErrorCode(p)));
+ exit(-1);
+ }
+
+ if (done)
+ break;
+ }
+ return 0;
+}

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/examples/outline.dsp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/examples/outline.dsp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,103 @@
+# Microsoft Developer Studio Project File - Name="outline" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=outline - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "outline.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "outline.mak" CFG="outline - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "outline - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "outline - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "outline - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\lib" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
+# SUBTRACT CPP /X /YX
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /machine:I386
+
+!ELSEIF "$(CFG)" == "outline - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\lib" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386
+
+!ENDIF
+
+# Begin Target
+
+# Name "outline - Win32 Release"
+# Name "outline - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=.\outline.c
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# End Group
+# End Target
+# End Project

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/expat.dsw
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/expat.dsw 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,110 @@
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "elements"=.\examples\elements.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name expat_static
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "expat"=.\lib\expat.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "expat_static"=.\lib\expat_static.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "expatw"=.\lib\expatw.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "expatw_static"=.\lib\expatw_static.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "outline"=.\examples\outline.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name expat
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "xmlwf"=.\xmlwf\xmlwf.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name expat
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/expat_config.h.in
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/expat_config.h.in 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,92 @@
+/* expat_config.h.in. Generated from configure.in by autoheader. */
+
+/* 1234 = LIL_ENDIAN, 4321 = BIGENDIAN */
+#undef BYTEORDER
+
+/* Define to 1 if you have the `bcopy' function. */
+#undef HAVE_BCOPY
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#undef HAVE_FCNTL_H
+
+/* Define to 1 if you have the `getpagesize' function. */
+#undef HAVE_GETPAGESIZE
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if you have the `memmove' function. */
+#undef HAVE_MEMMOVE
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have a working `mmap' system call. */
+#undef HAVE_MMAP
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* 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
+
+/* whether byteorder is bigendian */
+#undef WORDS_BIGENDIAN
+
+/* Define to specify how much context to retain around the current parse
+ point. */
+#undef XML_CONTEXT_BYTES
+
+/* Define to make parameter entity parsing functionality available. */
+#undef XML_DTD
+
+/* Define to make XML Namespaces functionality available. */
+#undef XML_NS
+
+/* Define to __FUNCTION__ or "" if `__func__' does not conform to ANSI C. */
+#undef __func__
+
+/* Define to empty if `const' does not conform to ANSI C. */
+#undef const
+
+/* Define to `long' if <sys/types.h> does not define. */
+#undef off_t
+
+/* Define to `unsigned' if <sys/types.h> does not define. */
+#undef size_t

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/Makefile.MPW
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/Makefile.MPW 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,206 @@
+# File: Makefile.MPW
+# Targets: All, Dynamic, Static (and Clean, Clean-All)
+# Created: Tuesday, July 02, 2002
+#
+# MPW Makefile for building expat under the "classic" (i.e. pre-X) Mac OS
+# Copyright © 2002 Daryle Walker
+# Portions Copyright © 2002 Thomas Wegner
+# See the COPYING file for distribution information
+#
+# Description:
+# This Makefile lets you build static, dynamic (i.e. shared) and stub
+# versions of the expat library as well as the elements.c and outline.c
+# examples (built as tools for MPW). This is for PPC only; it should be
+# no problem to build a 68K version of the expat library, though.
+#
+# Usage:
+# Buildprogram All
+# or Buildprogram Dynamic
+# or Buildprogram Static
+#
+# Note: You first have to rename this file to "Makefile", or the Buildprogram
+# commando will not recognize it.
+#
+
+MAKEFILE = Makefile
+¥MondoBuild¥ = {MAKEFILE} # Make blank to avoid rebuilds when makefile is modified
+
+ObjDir = :
+SrcDir = :
+HdrDir = :
+
+ToolDir = ::examples:
+
+Includes = -i {HdrDir}
+
+Sym-PPC = -sym off
+
+Defines = -d MACOS_CLASSIC
+
+PPCCOptions = {Includes} {Sym-PPC} -w 35 {Defines}
+
+FragName = libexpat
+
+
+### Source Files ###
+
+SrcFiles = ¶
+ "{SrcDir}xmlparse.c" ¶
+ "{SrcDir}xmlrole.c" ¶
+ "{SrcDir}xmltok.c"
+
+ToolSrcFiles = ¶
+ "{ToolDir}elements.c" ¶
+ "{ToolDir}outline.c"
+
+
+### Object Files ###
+
+ObjFiles-PPC = ¶
+ "{ObjDir}xmlparse.c.o" ¶
+ "{ObjDir}xmlrole.c.o" ¶
+ "{ObjDir}xmltok.c.o"
+
+ElementToolObjFile = "{ObjDir}elements.c.o"
+
+OutlineToolObjFile = "{ObjDir}outline.c.o"
+
+
+### Libraries ###
+
+StLibFiles-PPC = ¶
+ "{PPCLibraries}StdCRuntime.o" ¶
+ "{PPCLibraries}PPCCRuntime.o" ¶
+ "{PPCLibraries}PPCToolLibs.o"
+
+ShLibFiles-PPC = ¶
+ "{SharedLibraries}InterfaceLib" ¶
+ "{SharedLibraries}StdCLib" ¶
+ "{SharedLibraries}MathLib"
+
+LibFiles-PPC = ¶
+ {StLibFiles-PPC} ¶
+ {ShLibFiles-PPC}
+
+
+### Special Files ###
+
+ExportFile = "{ObjDir}{FragName}.exp"
+
+StLibFile = "{ObjDir}{FragName}.MrC.o"
+
+ShLibFile = "{ObjDir}{FragName}"
+
+StubFile = "{ObjDir}{FragName}.stub"
+
+ElementsTool = "{ToolDir}elements"
+
+OutlineTool = "{ToolDir}outline"
+
+
+### Default Rules ###
+
+.c.o Ä .c {¥MondoBuild¥}
+ {PPCC} {depDir}{default}.c -o {targDir}{default}.c.o {PPCCOptions}
+
+
+### Build Rules ###
+
+All Ä Dynamic {ElementsTool} {OutlineTool}
+
+Static Ä {StLibFile}
+
+Dynamic Ä Static {ShLibFile} {StubFile}
+
+{StLibFile} ÄÄ {ObjFiles-PPC} {StLibFiles-PPC} {¥MondoBuild¥}
+ PPCLink ¶
+ -o {Targ} ¶
+ {ObjFiles-PPC} ¶
+ {StLibFiles-PPC} ¶
+ {Sym-PPC} ¶
+ -mf -d ¶
+ -t 'XCOF' ¶
+ -c 'MPS ' ¶
+ -xm l
+
+{ShLibFile} ÄÄ {StLibFile} {ShLibFiles-PPC} {ExportFile} {¥MondoBuild¥}
+ PPCLink ¶
+ -o {Targ} ¶
+ {StLibFile} ¶
+ {ShLibFiles-PPC} ¶
+ {Sym-PPC} ¶
+ -_at_export {ExportFile} ¶
+ -fragname {FragName} ¶
+ -mf -d ¶
+ -t 'shlb' ¶
+ -c '????' ¶
+ -xm s
+
+{StubFile} ÄÄ {ShLibFile} {¥MondoBuild¥}
+ shlb2stub -o {Targ} {ShLibFile}
+
+{ElementsTool} ÄÄ {ElementToolObjFile} {StubFile} {LibFiles-PPC} {¥MondoBuild¥}
+ PPCLink ¶
+ -o {Targ} ¶
+ {ElementToolObjFile} ¶
+ {StLibFile} ¶
+ {LibFiles-PPC} ¶
+ {Sym-PPC} ¶
+ -mf -d ¶
+ -t 'MPST' ¶
+ -c 'MPS '
+
+{OutlineTool} ÄÄ {OutlineToolObjFile} {StubFile} {LibFiles-PPC} {¥MondoBuild¥}
+ PPCLink ¶
+ -o {Targ} ¶
+ {OutlineToolObjFile} ¶
+ {StLibFile} ¶
+ {LibFiles-PPC} ¶
+ {Sym-PPC} ¶
+ -mf -d ¶
+ -t 'MPST' ¶
+ -c 'MPS '
+
+
+### Special Rules ###
+
+{ExportFile} ÄÄ "{HdrDir}expat.h" {¥MondoBuild¥}
+ StreamEdit -d ¶
+ -e "/¥('XMLPARSEAPI('Å') ')Ç0,1È'XML_'([A-Za-z0-9_]+)¨1'('/ Print 'XML_' ¨1" ¶
+ "{HdrDir}expat.h" > {Targ}
+
+
+### Required Dependencies ###
+
+"{ObjDir}xmlparse.c.o" Ä "{SrcDir}xmlparse.c"
+"{ObjDir}xmlrole.c.o" Ä "{SrcDir}xmlrole.c"
+"{ObjDir}xmltok.c.o" Ä "{SrcDir}xmltok.c"
+
+"{ObjDir}elements.c.o" Ä "{ToolDir}elements.c"
+"{ObjDir}outline.c.o" Ä "{ToolDir}outline.c"
+
+
+### Optional Dependencies ###
+### Build this target to clean out generated intermediate files. ###
+
+Clean Ä
+ Delete {ObjFiles-PPC} {ExportFile} {ElementToolObjFile} {OutlineToolObjFile}
+
+### Build this target to clean out all generated files. ###
+
+Clean-All Ä Clean
+ Delete {StLibFile} {ShLibFile} {StubFile} {ElementsTool} {OutlineTool}
+
+### Build this target to generate "include file" dependencies. ###
+
+Dependencies Ä $OutOfDate
+ MakeDepend ¶
+ -append {MAKEFILE} ¶
+ -ignore "{CIncludes}" ¶
+ -objdir "{ObjDir}" ¶
+ -objext .o ¶
+ {Defines} ¶
+ {Includes} ¶
+ {SrcFiles}
+
+

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/amigaconfig.h
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/amigaconfig.h 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,96 @@
+#ifndef AMIGACONFIG_H
+#define AMIGACONFIG_H
+
+/* 1234 = LIL_ENDIAN, 4321 = BIGENDIAN */
+#define BYTEORDER 4321
+
+/* Define to 1 if you have the `bcopy' function. */
+#define HAVE_BCOPY 1
+
+/* Define to 1 if you have the <check.h> header file. */
+#undef HAVE_CHECK_H
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#define HAVE_FCNTL_H 1
+
+/* Define to 1 if you have the `getpagesize' function. */
+#undef HAVE_GETPAGESIZE
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define to 1 if you have the `memmove' function. */
+#define HAVE_MEMMOVE 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have a working `mmap' system call. */
+#undef HAVE_MMAP
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "expat-bugs_at_[hidden]"
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "expat"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "expat 1.95.8"
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "1.95.8"
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* whether byteorder is bigendian */
+#define WORDS_BIGENDIAN
+
+/* Define to specify how much context to retain around the current parse
+ point. */
+#define XML_CONTEXT_BYTES 1024
+
+/* Define to make parameter entity parsing functionality available. */
+#define XML_DTD
+
+/* Define to make XML Namespaces functionality available. */
+#define XML_NS
+
+/* Define to empty if `const' does not conform to ANSI C. */
+#undef const
+
+/* Define to `long' if <sys/types.h> does not define. */
+#undef off_t
+
+/* Define to `unsigned' if <sys/types.h> does not define. */
+#undef size_t
+
+
+#endif /* AMIGACONFIG_H */

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/ascii.h
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/ascii.h 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,85 @@
+/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
+ See the file COPYING for copying permission.
+*/
+
+#define ASCII_A 0x41
+#define ASCII_B 0x42
+#define ASCII_C 0x43
+#define ASCII_D 0x44
+#define ASCII_E 0x45
+#define ASCII_F 0x46
+#define ASCII_G 0x47
+#define ASCII_H 0x48
+#define ASCII_I 0x49
+#define ASCII_J 0x4A
+#define ASCII_K 0x4B
+#define ASCII_L 0x4C
+#define ASCII_M 0x4D
+#define ASCII_N 0x4E
+#define ASCII_O 0x4F
+#define ASCII_P 0x50
+#define ASCII_Q 0x51
+#define ASCII_R 0x52
+#define ASCII_S 0x53
+#define ASCII_T 0x54
+#define ASCII_U 0x55
+#define ASCII_V 0x56
+#define ASCII_W 0x57
+#define ASCII_X 0x58
+#define ASCII_Y 0x59
+#define ASCII_Z 0x5A
+
+#define ASCII_a 0x61
+#define ASCII_b 0x62
+#define ASCII_c 0x63
+#define ASCII_d 0x64
+#define ASCII_e 0x65
+#define ASCII_f 0x66
+#define ASCII_g 0x67
+#define ASCII_h 0x68
+#define ASCII_i 0x69
+#define ASCII_j 0x6A
+#define ASCII_k 0x6B
+#define ASCII_l 0x6C
+#define ASCII_m 0x6D
+#define ASCII_n 0x6E
+#define ASCII_o 0x6F
+#define ASCII_p 0x70
+#define ASCII_q 0x71
+#define ASCII_r 0x72
+#define ASCII_s 0x73
+#define ASCII_t 0x74
+#define ASCII_u 0x75
+#define ASCII_v 0x76
+#define ASCII_w 0x77
+#define ASCII_x 0x78
+#define ASCII_y 0x79
+#define ASCII_z 0x7A
+
+#define ASCII_0 0x30
+#define ASCII_1 0x31
+#define ASCII_2 0x32
+#define ASCII_3 0x33
+#define ASCII_4 0x34
+#define ASCII_5 0x35
+#define ASCII_6 0x36
+#define ASCII_7 0x37
+#define ASCII_8 0x38
+#define ASCII_9 0x39
+
+#define ASCII_TAB 0x09
+#define ASCII_SPACE 0x20
+#define ASCII_EXCL 0x21
+#define ASCII_QUOT 0x22
+#define ASCII_AMP 0x26
+#define ASCII_APOS 0x27
+#define ASCII_MINUS 0x2D
+#define ASCII_PERIOD 0x2E
+#define ASCII_COLON 0x3A
+#define ASCII_SEMI 0x3B
+#define ASCII_LT 0x3C
+#define ASCII_EQUALS 0x3D
+#define ASCII_GT 0x3E
+#define ASCII_LSQB 0x5B
+#define ASCII_RSQB 0x5D
+#define ASCII_UNDERSCORE 0x5F

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/asciitab.h
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/asciitab.h 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,36 @@
+/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
+ See the file COPYING for copying permission.
+*/
+
+/* 0x00 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
+/* 0x04 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
+/* 0x08 */ BT_NONXML, BT_S, BT_LF, BT_NONXML,
+/* 0x0C */ BT_NONXML, BT_CR, BT_NONXML, BT_NONXML,
+/* 0x10 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
+/* 0x14 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
+/* 0x18 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
+/* 0x1C */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
+/* 0x20 */ BT_S, BT_EXCL, BT_QUOT, BT_NUM,
+/* 0x24 */ BT_OTHER, BT_PERCNT, BT_AMP, BT_APOS,
+/* 0x28 */ BT_LPAR, BT_RPAR, BT_AST, BT_PLUS,
+/* 0x2C */ BT_COMMA, BT_MINUS, BT_NAME, BT_SOL,
+/* 0x30 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT,
+/* 0x34 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT,
+/* 0x38 */ BT_DIGIT, BT_DIGIT, BT_COLON, BT_SEMI,
+/* 0x3C */ BT_LT, BT_EQUALS, BT_GT, BT_QUEST,
+/* 0x40 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX,
+/* 0x44 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT,
+/* 0x48 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
+/* 0x4C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
+/* 0x50 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
+/* 0x54 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
+/* 0x58 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_LSQB,
+/* 0x5C */ BT_OTHER, BT_RSQB, BT_OTHER, BT_NMSTRT,
+/* 0x60 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX,
+/* 0x64 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT,
+/* 0x68 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
+/* 0x6C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
+/* 0x70 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
+/* 0x74 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
+/* 0x78 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER,
+/* 0x7C */ BT_VERBAR, BT_OTHER, BT_OTHER, BT_OTHER,

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/expat.dsp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/expat.dsp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,176 @@
+# Microsoft Developer Studio Project File - Name="expat" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=expat - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "expat.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "expat.mak" CFG="expat - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "expat - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "expat - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "expat - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "EXPAT_EXPORTS" /Yu"stdafx.h" /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "COMPILED_FROM_DSP" /FD /c
+# SUBTRACT CPP /YX /Yc /Yu
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /pdb:none /machine:I386 /out:"Release\libexpat.dll"
+
+!ELSEIF "$(CFG)" == "expat - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "EXPAT_EXPORTS" /Yu"stdafx.h" /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /GX /ZI /Od /D "_DEBUG" /D "COMPILED_FROM_DSP" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /FR /FD /GZ /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /pdb:none /debug /machine:I386 /out:"Debug\libexpat.dll"
+
+!ENDIF
+
+# Begin Target
+
+# Name "expat - Win32 Release"
+# Name "expat - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=.\libexpat.def
+# End Source File
+# Begin Source File
+
+SOURCE=.\xmlparse.c
+
+!IF "$(CFG)" == "expat - Win32 Release"
+
+!ELSEIF "$(CFG)" == "expat - Win32 Debug"
+
+# ADD CPP /GX- /Od
+
+!ENDIF
+
+# End Source File
+# Begin Source File
+
+SOURCE=.\xmlrole.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\xmltok.c
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=.\ascii.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\asciitab.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\expat.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\expat_external.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\iasciitab.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\internal.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\latin1tab.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\nametab.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\utf8tab.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\xmlrole.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\xmltok.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\xmltok_impl.h
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# End Group
+# End Target
+# End Project

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/expat.h
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/expat.h 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,1013 @@
+/* Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd
+ See the file COPYING for copying permission.
+*/
+
+#ifndef Expat_INCLUDED
+#define Expat_INCLUDED 1
+
+#ifdef __VMS
+/* 0 1 2 3 0 1 2 3
+ 1234567890123456789012345678901 1234567890123456789012345678901 */
+#define XML_SetProcessingInstructionHandler XML_SetProcessingInstrHandler
+#define XML_SetUnparsedEntityDeclHandler XML_SetUnparsedEntDeclHandler
+#define XML_SetStartNamespaceDeclHandler XML_SetStartNamespcDeclHandler
+#define XML_SetExternalEntityRefHandlerArg XML_SetExternalEntRefHandlerArg
+#endif
+
+#include <stdlib.h>
+#include "expat_external.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct XML_ParserStruct;
+typedef struct XML_ParserStruct *XML_Parser;
+
+/* Should this be defined using stdbool.h when C99 is available? */
+typedef unsigned char XML_Bool;
+#define XML_TRUE ((XML_Bool) 1)
+#define XML_FALSE ((XML_Bool) 0)
+
+/* The XML_Status enum gives the possible return values for several
+ API functions. The preprocessor #defines are included so this
+ stanza can be added to code that still needs to support older
+ versions of Expat 1.95.x:
+
+ #ifndef XML_STATUS_OK
+ #define XML_STATUS_OK 1
+ #define XML_STATUS_ERROR 0
+ #endif
+
+ Otherwise, the #define hackery is quite ugly and would have been
+ dropped.
+*/
+enum XML_Status {
+ XML_STATUS_ERROR = 0,
+#define XML_STATUS_ERROR XML_STATUS_ERROR
+ XML_STATUS_OK = 1,
+#define XML_STATUS_OK XML_STATUS_OK
+ XML_STATUS_SUSPENDED = 2
+#define XML_STATUS_SUSPENDED XML_STATUS_SUSPENDED
+};
+
+enum XML_Error {
+ XML_ERROR_NONE,
+ XML_ERROR_NO_MEMORY,
+ XML_ERROR_SYNTAX,
+ XML_ERROR_NO_ELEMENTS,
+ XML_ERROR_INVALID_TOKEN,
+ XML_ERROR_UNCLOSED_TOKEN,
+ XML_ERROR_PARTIAL_CHAR,
+ XML_ERROR_TAG_MISMATCH,
+ XML_ERROR_DUPLICATE_ATTRIBUTE,
+ XML_ERROR_JUNK_AFTER_DOC_ELEMENT,
+ XML_ERROR_PARAM_ENTITY_REF,
+ XML_ERROR_UNDEFINED_ENTITY,
+ XML_ERROR_RECURSIVE_ENTITY_REF,
+ XML_ERROR_ASYNC_ENTITY,
+ XML_ERROR_BAD_CHAR_REF,
+ XML_ERROR_BINARY_ENTITY_REF,
+ XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF,
+ XML_ERROR_MISPLACED_XML_PI,
+ XML_ERROR_UNKNOWN_ENCODING,
+ XML_ERROR_INCORRECT_ENCODING,
+ XML_ERROR_UNCLOSED_CDATA_SECTION,
+ XML_ERROR_EXTERNAL_ENTITY_HANDLING,
+ XML_ERROR_NOT_STANDALONE,
+ XML_ERROR_UNEXPECTED_STATE,
+ XML_ERROR_ENTITY_DECLARED_IN_PE,
+ XML_ERROR_FEATURE_REQUIRES_XML_DTD,
+ XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING,
+ /* Added in 1.95.7. */
+ XML_ERROR_UNBOUND_PREFIX,
+ /* Added in 1.95.8. */
+ XML_ERROR_UNDECLARING_PREFIX,
+ XML_ERROR_INCOMPLETE_PE,
+ XML_ERROR_XML_DECL,
+ XML_ERROR_TEXT_DECL,
+ XML_ERROR_PUBLICID,
+ XML_ERROR_SUSPENDED,
+ XML_ERROR_NOT_SUSPENDED,
+ XML_ERROR_ABORTED,
+ XML_ERROR_FINISHED,
+ XML_ERROR_SUSPEND_PE,
+ /* Added in 2.0. */
+ XML_ERROR_RESERVED_PREFIX_XML,
+ XML_ERROR_RESERVED_PREFIX_XMLNS,
+ XML_ERROR_RESERVED_NAMESPACE_URI
+};
+
+enum XML_Content_Type {
+ XML_CTYPE_EMPTY = 1,
+ XML_CTYPE_ANY,
+ XML_CTYPE_MIXED,
+ XML_CTYPE_NAME,
+ XML_CTYPE_CHOICE,
+ XML_CTYPE_SEQ
+};
+
+enum XML_Content_Quant {
+ XML_CQUANT_NONE,
+ XML_CQUANT_OPT,
+ XML_CQUANT_REP,
+ XML_CQUANT_PLUS
+};
+
+/* If type == XML_CTYPE_EMPTY or XML_CTYPE_ANY, then quant will be
+ XML_CQUANT_NONE, and the other fields will be zero or NULL.
+ If type == XML_CTYPE_MIXED, then quant will be NONE or REP and
+ numchildren will contain number of elements that may be mixed in
+ and children point to an array of XML_Content cells that will be
+ all of XML_CTYPE_NAME type with no quantification.
+
+ If type == XML_CTYPE_NAME, then the name points to the name, and
+ the numchildren field will be zero and children will be NULL. The
+ quant fields indicates any quantifiers placed on the name.
+
+ CHOICE and SEQ will have name NULL, the number of children in
+ numchildren and children will point, recursively, to an array
+ of XML_Content cells.
+
+ The EMPTY, ANY, and MIXED types will only occur at top level.
+*/
+
+typedef struct XML_cp XML_Content;
+
+struct XML_cp {
+ enum XML_Content_Type type;
+ enum XML_Content_Quant quant;
+ XML_Char * name;
+ unsigned int numchildren;
+ XML_Content * children;
+};
+
+
+/* This is called for an element declaration. See above for
+ description of the model argument. It's the caller's responsibility
+ to free model when finished with it.
+*/
+typedef void (XMLCALL *XML_ElementDeclHandler) (void *userData,
+ const XML_Char *name,
+ XML_Content *model);
+
+XMLPARSEAPI(void)
+XML_SetElementDeclHandler(XML_Parser parser,
+ XML_ElementDeclHandler eldecl);
+
+/* The Attlist declaration handler is called for *each* attribute. So
+ a single Attlist declaration with multiple attributes declared will
+ generate multiple calls to this handler. The "default" parameter
+ may be NULL in the case of the "#IMPLIED" or "#REQUIRED"
+ keyword. The "isrequired" parameter will be true and the default
+ value will be NULL in the case of "#REQUIRED". If "isrequired" is
+ true and default is non-NULL, then this is a "#FIXED" default.
+*/
+typedef void (XMLCALL *XML_AttlistDeclHandler) (
+ void *userData,
+ const XML_Char *elname,
+ const XML_Char *attname,
+ const XML_Char *att_type,
+ const XML_Char *dflt,
+ int isrequired);
+
+XMLPARSEAPI(void)
+XML_SetAttlistDeclHandler(XML_Parser parser,
+ XML_AttlistDeclHandler attdecl);
+
+/* The XML declaration handler is called for *both* XML declarations
+ and text declarations. The way to distinguish is that the version
+ parameter will be NULL for text declarations. The encoding
+ parameter may be NULL for XML declarations. The standalone
+ parameter will be -1, 0, or 1 indicating respectively that there
+ was no standalone parameter in the declaration, that it was given
+ as no, or that it was given as yes.
+*/
+typedef void (XMLCALL *XML_XmlDeclHandler) (void *userData,
+ const XML_Char *version,
+ const XML_Char *encoding,
+ int standalone);
+
+XMLPARSEAPI(void)
+XML_SetXmlDeclHandler(XML_Parser parser,
+ XML_XmlDeclHandler xmldecl);
+
+
+typedef struct {
+ void *(*malloc_fcn)(size_t size);
+ void *(*realloc_fcn)(void *ptr, size_t size);
+ void (*free_fcn)(void *ptr);
+} XML_Memory_Handling_Suite;
+
+/* Constructs a new parser; encoding is the encoding specified by the
+ external protocol or NULL if there is none specified.
+*/
+XMLPARSEAPI(XML_Parser)
+XML_ParserCreate(const XML_Char *encoding);
+
+/* Constructs a new parser and namespace processor. Element type
+ names and attribute names that belong to a namespace will be
+ expanded; unprefixed attribute names are never expanded; unprefixed
+ element type names are expanded only if there is a default
+ namespace. The expanded name is the concatenation of the namespace
+ URI, the namespace separator character, and the local part of the
+ name. If the namespace separator is '\0' then the namespace URI
+ and the local part will be concatenated without any separator.
+ It is a programming error to use the separator '\0' with namespace
+ triplets (see XML_SetReturnNSTriplet).
+*/
+XMLPARSEAPI(XML_Parser)
+XML_ParserCreateNS(const XML_Char *encoding, XML_Char namespaceSeparator);
+
+
+/* Constructs a new parser using the memory management suite referred to
+ by memsuite. If memsuite is NULL, then use the standard library memory
+ suite. If namespaceSeparator is non-NULL it creates a parser with
+ namespace processing as described above. The character pointed at
+ will serve as the namespace separator.
+
+ All further memory operations used for the created parser will come from
+ the given suite.
+*/
+XMLPARSEAPI(XML_Parser)
+XML_ParserCreate_MM(const XML_Char *encoding,
+ const XML_Memory_Handling_Suite *memsuite,
+ const XML_Char *namespaceSeparator);
+
+/* Prepare a parser object to be re-used. This is particularly
+ valuable when memory allocation overhead is disproportionatly high,
+ such as when a large number of small documnents need to be parsed.
+ All handlers are cleared from the parser, except for the
+ unknownEncodingHandler. The parser's external state is re-initialized
+ except for the values of ns and ns_triplets.
+
+ Added in Expat 1.95.3.
+*/
+XMLPARSEAPI(XML_Bool)
+XML_ParserReset(XML_Parser parser, const XML_Char *encoding);
+
+/* atts is array of name/value pairs, terminated by 0;
+ names and values are 0 terminated.
+*/
+typedef void (XMLCALL *XML_StartElementHandler) (void *userData,
+ const XML_Char *name,
+ const XML_Char **atts);
+
+typedef void (XMLCALL *XML_EndElementHandler) (void *userData,
+ const XML_Char *name);
+
+
+/* s is not 0 terminated. */
+typedef void (XMLCALL *XML_CharacterDataHandler) (void *userData,
+ const XML_Char *s,
+ int len);
+
+/* target and data are 0 terminated */
+typedef void (XMLCALL *XML_ProcessingInstructionHandler) (
+ void *userData,
+ const XML_Char *target,
+ const XML_Char *data);
+
+/* data is 0 terminated */
+typedef void (XMLCALL *XML_CommentHandler) (void *userData,
+ const XML_Char *data);
+
+typedef void (XMLCALL *XML_StartCdataSectionHandler) (void *userData);
+typedef void (XMLCALL *XML_EndCdataSectionHandler) (void *userData);
+
+/* This is called for any characters in the XML document for which
+ there is no applicable handler. This includes both characters that
+ are part of markup which is of a kind that is not reported
+ (comments, markup declarations), or characters that are part of a
+ construct which could be reported but for which no handler has been
+ supplied. The characters are passed exactly as they were in the XML
+ document except that they will be encoded in UTF-8 or UTF-16.
+ Line boundaries are not normalized. Note that a byte order mark
+ character is not passed to the default handler. There are no
+ guarantees about how characters are divided between calls to the
+ default handler: for example, a comment might be split between
+ multiple calls.
+*/
+typedef void (XMLCALL *XML_DefaultHandler) (void *userData,
+ const XML_Char *s,
+ int len);
+
+/* This is called for the start of the DOCTYPE declaration, before
+ any DTD or internal subset is parsed.
+*/
+typedef void (XMLCALL *XML_StartDoctypeDeclHandler) (
+ void *userData,
+ const XML_Char *doctypeName,
+ const XML_Char *sysid,
+ const XML_Char *pubid,
+ int has_internal_subset);
+
+/* This is called for the start of the DOCTYPE declaration when the
+ closing > is encountered, but after processing any external
+ subset.
+*/
+typedef void (XMLCALL *XML_EndDoctypeDeclHandler)(void *userData);
+
+/* This is called for entity declarations. The is_parameter_entity
+ argument will be non-zero if the entity is a parameter entity, zero
+ otherwise.
+
+ For internal entities (<!ENTITY foo "bar">), value will
+ be non-NULL and systemId, publicID, and notationName will be NULL.
+ The value string is NOT nul-terminated; the length is provided in
+ the value_length argument. Since it is legal to have zero-length
+ values, do not use this argument to test for internal entities.
+
+ For external entities, value will be NULL and systemId will be
+ non-NULL. The publicId argument will be NULL unless a public
+ identifier was provided. The notationName argument will have a
+ non-NULL value only for unparsed entity declarations.
+
+ Note that is_parameter_entity can't be changed to XML_Bool, since
+ that would break binary compatibility.
+*/
+typedef void (XMLCALL *XML_EntityDeclHandler) (
+ void *userData,
+ const XML_Char *entityName,
+ int is_parameter_entity,
+ const XML_Char *value,
+ int value_length,
+ const XML_Char *base,
+ const XML_Char *systemId,
+ const XML_Char *publicId,
+ const XML_Char *notationName);
+
+XMLPARSEAPI(void)
+XML_SetEntityDeclHandler(XML_Parser parser,
+ XML_EntityDeclHandler handler);
+
+/* OBSOLETE -- OBSOLETE -- OBSOLETE
+ This handler has been superceded by the EntityDeclHandler above.
+ It is provided here for backward compatibility.
+
+ This is called for a declaration of an unparsed (NDATA) entity.
+ The base argument is whatever was set by XML_SetBase. The
+ entityName, systemId and notationName arguments will never be
+ NULL. The other arguments may be.
+*/
+typedef void (XMLCALL *XML_UnparsedEntityDeclHandler) (
+ void *userData,
+ const XML_Char *entityName,
+ const XML_Char *base,
+ const XML_Char *systemId,
+ const XML_Char *publicId,
+ const XML_Char *notationName);
+
+/* This is called for a declaration of notation. The base argument is
+ whatever was set by XML_SetBase. The notationName will never be
+ NULL. The other arguments can be.
+*/
+typedef void (XMLCALL *XML_NotationDeclHandler) (
+ void *userData,
+ const XML_Char *notationName,
+ const XML_Char *base,
+ const XML_Char *systemId,
+ const XML_Char *publicId);
+
+/* When namespace processing is enabled, these are called once for
+ each namespace declaration. The call to the start and end element
+ handlers occur between the calls to the start and end namespace
+ declaration handlers. For an xmlns attribute, prefix will be
+ NULL. For an xmlns="" attribute, uri will be NULL.
+*/
+typedef void (XMLCALL *XML_StartNamespaceDeclHandler) (
+ void *userData,
+ const XML_Char *prefix,
+ const XML_Char *uri);
+
+typedef void (XMLCALL *XML_EndNamespaceDeclHandler) (
+ void *userData,
+ const XML_Char *prefix);
+
+/* This is called if the document is not standalone, that is, it has an
+ external subset or a reference to a parameter entity, but does not
+ have standalone="yes". If this handler returns XML_STATUS_ERROR,
+ then processing will not continue, and the parser will return a
+ XML_ERROR_NOT_STANDALONE error.
+ If parameter entity parsing is enabled, then in addition to the
+ conditions above this handler will only be called if the referenced
+ entity was actually read.
+*/
+typedef int (XMLCALL *XML_NotStandaloneHandler) (void *userData);
+
+/* This is called for a reference to an external parsed general
+ entity. The referenced entity is not automatically parsed. The
+ application can parse it immediately or later using
+ XML_ExternalEntityParserCreate.
+
+ The parser argument is the parser parsing the entity containing the
+ reference; it can be passed as the parser argument to
+ XML_ExternalEntityParserCreate. The systemId argument is the
+ system identifier as specified in the entity declaration; it will
+ not be NULL.
+
+ The base argument is the system identifier that should be used as
+ the base for resolving systemId if systemId was relative; this is
+ set by XML_SetBase; it may be NULL.
+
+ The publicId argument is the public identifier as specified in the
+ entity declaration, or NULL if none was specified; the whitespace
+ in the public identifier will have been normalized as required by
+ the XML spec.
+
+ The context argument specifies the parsing context in the format
+ expected by the context argument to XML_ExternalEntityParserCreate;
+ context is valid only until the handler returns, so if the
+ referenced entity is to be parsed later, it must be copied.
+ context is NULL only when the entity is a parameter entity.
+
+ The handler should return XML_STATUS_ERROR if processing should not
+ continue because of a fatal error in the handling of the external
+ entity. In this case the calling parser will return an
+ XML_ERROR_EXTERNAL_ENTITY_HANDLING error.
+
+ Note that unlike other handlers the first argument is the parser,
+ not userData.
+*/
+typedef int (XMLCALL *XML_ExternalEntityRefHandler) (
+ XML_Parser parser,
+ const XML_Char *context,
+ const XML_Char *base,
+ const XML_Char *systemId,
+ const XML_Char *publicId);
+
+/* This is called in two situations:
+ 1) An entity reference is encountered for which no declaration
+ has been read *and* this is not an error.
+ 2) An internal entity reference is read, but not expanded, because
+ XML_SetDefaultHandler has been called.
+ Note: skipped parameter entities in declarations and skipped general
+ entities in attribute values cannot be reported, because
+ the event would be out of sync with the reporting of the
+ declarations or attribute values
+*/
+typedef void (XMLCALL *XML_SkippedEntityHandler) (
+ void *userData,
+ const XML_Char *entityName,
+ int is_parameter_entity);
+
+/* This structure is filled in by the XML_UnknownEncodingHandler to
+ provide information to the parser about encodings that are unknown
+ to the parser.
+
+ The map[b] member gives information about byte sequences whose
+ first byte is b.
+
+ If map[b] is c where c is >= 0, then b by itself encodes the
+ Unicode scalar value c.
+
+ If map[b] is -1, then the byte sequence is malformed.
+
+ If map[b] is -n, where n >= 2, then b is the first byte of an
+ n-byte sequence that encodes a single Unicode scalar value.
+
+ The data member will be passed as the first argument to the convert
+ function.
+
+ The convert function is used to convert multibyte sequences; s will
+ point to a n-byte sequence where map[(unsigned char)*s] == -n. The
+ convert function must return the Unicode scalar value represented
+ by this byte sequence or -1 if the byte sequence is malformed.
+
+ The convert function may be NULL if the encoding is a single-byte
+ encoding, that is if map[b] >= -1 for all bytes b.
+
+ When the parser is finished with the encoding, then if release is
+ not NULL, it will call release passing it the data member; once
+ release has been called, the convert function will not be called
+ again.
+
+ Expat places certain restrictions on the encodings that are supported
+ using this mechanism.
+
+ 1. Every ASCII character that can appear in a well-formed XML document,
+ other than the characters
+
+ $@\^`{}~
+
+ must be represented by a single byte, and that byte must be the
+ same byte that represents that character in ASCII.
+
+ 2. No character may require more than 4 bytes to encode.
+
+ 3. All characters encoded must have Unicode scalar values <=
+ 0xFFFF, (i.e., characters that would be encoded by surrogates in
+ UTF-16 are not allowed). Note that this restriction doesn't
+ apply to the built-in support for UTF-8 and UTF-16.
+
+ 4. No Unicode character may be encoded by more than one distinct
+ sequence of bytes.
+*/
+typedef struct {
+ int map[256];
+ void *data;
+ int (XMLCALL *convert)(void *data, const char *s);
+ void (XMLCALL *release)(void *data);
+} XML_Encoding;
+
+/* This is called for an encoding that is unknown to the parser.
+
+ The encodingHandlerData argument is that which was passed as the
+ second argument to XML_SetUnknownEncodingHandler.
+
+ The name argument gives the name of the encoding as specified in
+ the encoding declaration.
+
+ If the callback can provide information about the encoding, it must
+ fill in the XML_Encoding structure, and return XML_STATUS_OK.
+ Otherwise it must return XML_STATUS_ERROR.
+
+ If info does not describe a suitable encoding, then the parser will
+ return an XML_UNKNOWN_ENCODING error.
+*/
+typedef int (XMLCALL *XML_UnknownEncodingHandler) (
+ void *encodingHandlerData,
+ const XML_Char *name,
+ XML_Encoding *info);
+
+XMLPARSEAPI(void)
+XML_SetElementHandler(XML_Parser parser,
+ XML_StartElementHandler start,
+ XML_EndElementHandler end);
+
+XMLPARSEAPI(void)
+XML_SetStartElementHandler(XML_Parser parser,
+ XML_StartElementHandler handler);
+
+XMLPARSEAPI(void)
+XML_SetEndElementHandler(XML_Parser parser,
+ XML_EndElementHandler handler);
+
+XMLPARSEAPI(void)
+XML_SetCharacterDataHandler(XML_Parser parser,
+ XML_CharacterDataHandler handler);
+
+XMLPARSEAPI(void)
+XML_SetProcessingInstructionHandler(XML_Parser parser,
+ XML_ProcessingInstructionHandler handler);
+XMLPARSEAPI(void)
+XML_SetCommentHandler(XML_Parser parser,
+ XML_CommentHandler handler);
+
+XMLPARSEAPI(void)
+XML_SetCdataSectionHandler(XML_Parser parser,
+ XML_StartCdataSectionHandler start,
+ XML_EndCdataSectionHandler end);
+
+XMLPARSEAPI(void)
+XML_SetStartCdataSectionHandler(XML_Parser parser,
+ XML_StartCdataSectionHandler start);
+
+XMLPARSEAPI(void)
+XML_SetEndCdataSectionHandler(XML_Parser parser,
+ XML_EndCdataSectionHandler end);
+
+/* This sets the default handler and also inhibits expansion of
+ internal entities. These entity references will be passed to the
+ default handler, or to the skipped entity handler, if one is set.
+*/
+XMLPARSEAPI(void)
+XML_SetDefaultHandler(XML_Parser parser,
+ XML_DefaultHandler handler);
+
+/* This sets the default handler but does not inhibit expansion of
+ internal entities. The entity reference will not be passed to the
+ default handler.
+*/
+XMLPARSEAPI(void)
+XML_SetDefaultHandlerExpand(XML_Parser parser,
+ XML_DefaultHandler handler);
+
+XMLPARSEAPI(void)
+XML_SetDoctypeDeclHandler(XML_Parser parser,
+ XML_StartDoctypeDeclHandler start,
+ XML_EndDoctypeDeclHandler end);
+
+XMLPARSEAPI(void)
+XML_SetStartDoctypeDeclHandler(XML_Parser parser,
+ XML_StartDoctypeDeclHandler start);
+
+XMLPARSEAPI(void)
+XML_SetEndDoctypeDeclHandler(XML_Parser parser,
+ XML_EndDoctypeDeclHandler end);
+
+XMLPARSEAPI(void)
+XML_SetUnparsedEntityDeclHandler(XML_Parser parser,
+ XML_UnparsedEntityDeclHandler handler);
+
+XMLPARSEAPI(void)
+XML_SetNotationDeclHandler(XML_Parser parser,
+ XML_NotationDeclHandler handler);
+
+XMLPARSEAPI(void)
+XML_SetNamespaceDeclHandler(XML_Parser parser,
+ XML_StartNamespaceDeclHandler start,
+ XML_EndNamespaceDeclHandler end);
+
+XMLPARSEAPI(void)
+XML_SetStartNamespaceDeclHandler(XML_Parser parser,
+ XML_StartNamespaceDeclHandler start);
+
+XMLPARSEAPI(void)
+XML_SetEndNamespaceDeclHandler(XML_Parser parser,
+ XML_EndNamespaceDeclHandler end);
+
+XMLPARSEAPI(void)
+XML_SetNotStandaloneHandler(XML_Parser parser,
+ XML_NotStandaloneHandler handler);
+
+XMLPARSEAPI(void)
+XML_SetExternalEntityRefHandler(XML_Parser parser,
+ XML_ExternalEntityRefHandler handler);
+
+/* If a non-NULL value for arg is specified here, then it will be
+ passed as the first argument to the external entity ref handler
+ instead of the parser object.
+*/
+XMLPARSEAPI(void)
+XML_SetExternalEntityRefHandlerArg(XML_Parser parser,
+ void *arg);
+
+XMLPARSEAPI(void)
+XML_SetSkippedEntityHandler(XML_Parser parser,
+ XML_SkippedEntityHandler handler);
+
+XMLPARSEAPI(void)
+XML_SetUnknownEncodingHandler(XML_Parser parser,
+ XML_UnknownEncodingHandler handler,
+ void *encodingHandlerData);
+
+/* This can be called within a handler for a start element, end
+ element, processing instruction or character data. It causes the
+ corresponding markup to be passed to the default handler.
+*/
+XMLPARSEAPI(void)
+XML_DefaultCurrent(XML_Parser parser);
+
+/* If do_nst is non-zero, and namespace processing is in effect, and
+ a name has a prefix (i.e. an explicit namespace qualifier) then
+ that name is returned as a triplet in a single string separated by
+ the separator character specified when the parser was created: URI
+ + sep + local_name + sep + prefix.
+
+ If do_nst is zero, then namespace information is returned in the
+ default manner (URI + sep + local_name) whether or not the name
+ has a prefix.
+
+ Note: Calling XML_SetReturnNSTriplet after XML_Parse or
+ XML_ParseBuffer has no effect.
+*/
+
+XMLPARSEAPI(void)
+XML_SetReturnNSTriplet(XML_Parser parser, int do_nst);
+
+/* This value is passed as the userData argument to callbacks. */
+XMLPARSEAPI(void)
+XML_SetUserData(XML_Parser parser, void *userData);
+
+/* Returns the last value set by XML_SetUserData or NULL. */
+#define XML_GetUserData(parser) (*(void **)(parser))
+
+/* This is equivalent to supplying an encoding argument to
+ XML_ParserCreate. On success XML_SetEncoding returns non-zero,
+ zero otherwise.
+ Note: Calling XML_SetEncoding after XML_Parse or XML_ParseBuffer
+ has no effect and returns XML_STATUS_ERROR.
+*/
+XMLPARSEAPI(enum XML_Status)
+XML_SetEncoding(XML_Parser parser, const XML_Char *encoding);
+
+/* If this function is called, then the parser will be passed as the
+ first argument to callbacks instead of userData. The userData will
+ still be accessible using XML_GetUserData.
+*/
+XMLPARSEAPI(void)
+XML_UseParserAsHandlerArg(XML_Parser parser);
+
+/* If useDTD == XML_TRUE is passed to this function, then the parser
+ will assume that there is an external subset, even if none is
+ specified in the document. In such a case the parser will call the
+ externalEntityRefHandler with a value of NULL for the systemId
+ argument (the publicId and context arguments will be NULL as well).
+ Note: For the purpose of checking WFC: Entity Declared, passing
+ useDTD == XML_TRUE will make the parser behave as if the document
+ had a DTD with an external subset.
+ Note: If this function is called, then this must be done before
+ the first call to XML_Parse or XML_ParseBuffer, since it will
+ have no effect after that. Returns
+ XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING.
+ Note: If the document does not have a DOCTYPE declaration at all,
+ then startDoctypeDeclHandler and endDoctypeDeclHandler will not
+ be called, despite an external subset being parsed.
+ Note: If XML_DTD is not defined when Expat is compiled, returns
+ XML_ERROR_FEATURE_REQUIRES_XML_DTD.
+*/
+XMLPARSEAPI(enum XML_Error)
+XML_UseForeignDTD(XML_Parser parser, XML_Bool useDTD);
+
+
+/* Sets the base to be used for resolving relative URIs in system
+ identifiers in declarations. Resolving relative identifiers is
+ left to the application: this value will be passed through as the
+ base argument to the XML_ExternalEntityRefHandler,
+ XML_NotationDeclHandler and XML_UnparsedEntityDeclHandler. The base
+ argument will be copied. Returns XML_STATUS_ERROR if out of memory,
+ XML_STATUS_OK otherwise.
+*/
+XMLPARSEAPI(enum XML_Status)
+XML_SetBase(XML_Parser parser, const XML_Char *base);
+
+XMLPARSEAPI(const XML_Char *)
+XML_GetBase(XML_Parser parser);
+
+/* Returns the number of the attribute/value pairs passed in last call
+ to the XML_StartElementHandler that were specified in the start-tag
+ rather than defaulted. Each attribute/value pair counts as 2; thus
+ this correspondds to an index into the atts array passed to the
+ XML_StartElementHandler.
+*/
+XMLPARSEAPI(int)
+XML_GetSpecifiedAttributeCount(XML_Parser parser);
+
+/* Returns the index of the ID attribute passed in the last call to
+ XML_StartElementHandler, or -1 if there is no ID attribute. Each
+ attribute/value pair counts as 2; thus this correspondds to an
+ index into the atts array passed to the XML_StartElementHandler.
+*/
+XMLPARSEAPI(int)
+XML_GetIdAttributeIndex(XML_Parser parser);
+
+/* Parses some input. Returns XML_STATUS_ERROR if a fatal error is
+ detected. The last call to XML_Parse must have isFinal true; len
+ may be zero for this call (or any other).
+
+ Though the return values for these functions has always been
+ described as a Boolean value, the implementation, at least for the
+ 1.95.x series, has always returned exactly one of the XML_Status
+ values.
+*/
+XMLPARSEAPI(enum XML_Status)
+XML_Parse(XML_Parser parser, const char *s, int len, int isFinal);
+
+XMLPARSEAPI(void *)
+XML_GetBuffer(XML_Parser parser, int len);
+
+XMLPARSEAPI(enum XML_Status)
+XML_ParseBuffer(XML_Parser parser, int len, int isFinal);
+
+/* Stops parsing, causing XML_Parse() or XML_ParseBuffer() to return.
+ Must be called from within a call-back handler, except when aborting
+ (resumable = 0) an already suspended parser. Some call-backs may
+ still follow because they would otherwise get lost. Examples:
+ - endElementHandler() for empty elements when stopped in
+ startElementHandler(),
+ - endNameSpaceDeclHandler() when stopped in endElementHandler(),
+ and possibly others.
+
+ Can be called from most handlers, including DTD related call-backs,
+ except when parsing an external parameter entity and resumable != 0.
+ Returns XML_STATUS_OK when successful, XML_STATUS_ERROR otherwise.
+ Possible error codes:
+ - XML_ERROR_SUSPENDED: when suspending an already suspended parser.
+ - XML_ERROR_FINISHED: when the parser has already finished.
+ - XML_ERROR_SUSPEND_PE: when suspending while parsing an external PE.
+
+ When resumable != 0 (true) then parsing is suspended, that is,
+ XML_Parse() and XML_ParseBuffer() return XML_STATUS_SUSPENDED.
+ Otherwise, parsing is aborted, that is, XML_Parse() and XML_ParseBuffer()
+ return XML_STATUS_ERROR with error code XML_ERROR_ABORTED.
+
+ *Note*:
+ This will be applied to the current parser instance only, that is, if
+ there is a parent parser then it will continue parsing when the
+ externalEntityRefHandler() returns. It is up to the implementation of
+ the externalEntityRefHandler() to call XML_StopParser() on the parent
+ parser (recursively), if one wants to stop parsing altogether.
+
+ When suspended, parsing can be resumed by calling XML_ResumeParser().
+*/
+XMLPARSEAPI(enum XML_Status)
+XML_StopParser(XML_Parser parser, XML_Bool resumable);
+
+/* Resumes parsing after it has been suspended with XML_StopParser().
+ Must not be called from within a handler call-back. Returns same
+ status codes as XML_Parse() or XML_ParseBuffer().
+ Additional error code XML_ERROR_NOT_SUSPENDED possible.
+
+ *Note*:
+ This must be called on the most deeply nested child parser instance
+ first, and on its parent parser only after the child parser has finished,
+ to be applied recursively until the document entity's parser is restarted.
+ That is, the parent parser will not resume by itself and it is up to the
+ application to call XML_ResumeParser() on it at the appropriate moment.
+*/
+XMLPARSEAPI(enum XML_Status)
+XML_ResumeParser(XML_Parser parser);
+
+enum XML_Parsing {
+ XML_INITIALIZED,
+ XML_PARSING,
+ XML_FINISHED,
+ XML_SUSPENDED
+};
+
+typedef struct {
+ enum XML_Parsing parsing;
+ XML_Bool finalBuffer;
+} XML_ParsingStatus;
+
+/* Returns status of parser with respect to being initialized, parsing,
+ finished, or suspended and processing the final buffer.
+ XXX XML_Parse() and XML_ParseBuffer() should return XML_ParsingStatus,
+ XXX with XML_FINISHED_OK or XML_FINISHED_ERROR replacing XML_FINISHED
+*/
+XMLPARSEAPI(void)
+XML_GetParsingStatus(XML_Parser parser, XML_ParsingStatus *status);
+
+/* Creates an XML_Parser object that can parse an external general
+ entity; context is a '\0'-terminated string specifying the parse
+ context; encoding is a '\0'-terminated string giving the name of
+ the externally specified encoding, or NULL if there is no
+ externally specified encoding. The context string consists of a
+ sequence of tokens separated by formfeeds (\f); a token consisting
+ of a name specifies that the general entity of the name is open; a
+ token of the form prefix=uri specifies the namespace for a
+ particular prefix; a token of the form =uri specifies the default
+ namespace. This can be called at any point after the first call to
+ an ExternalEntityRefHandler so longer as the parser has not yet
+ been freed. The new parser is completely independent and may
+ safely be used in a separate thread. The handlers and userData are
+ initialized from the parser argument. Returns NULL if out of memory.
+ Otherwise returns a new XML_Parser object.
+*/
+XMLPARSEAPI(XML_Parser)
+XML_ExternalEntityParserCreate(XML_Parser parser,
+ const XML_Char *context,
+ const XML_Char *encoding);
+
+enum XML_ParamEntityParsing {
+ XML_PARAM_ENTITY_PARSING_NEVER,
+ XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE,
+ XML_PARAM_ENTITY_PARSING_ALWAYS
+};
+
+/* Controls parsing of parameter entities (including the external DTD
+ subset). If parsing of parameter entities is enabled, then
+ references to external parameter entities (including the external
+ DTD subset) will be passed to the handler set with
+ XML_SetExternalEntityRefHandler. The context passed will be 0.
+
+ Unlike external general entities, external parameter entities can
+ only be parsed synchronously. If the external parameter entity is
+ to be parsed, it must be parsed during the call to the external
+ entity ref handler: the complete sequence of
+ XML_ExternalEntityParserCreate, XML_Parse/XML_ParseBuffer and
+ XML_ParserFree calls must be made during this call. After
+ XML_ExternalEntityParserCreate has been called to create the parser
+ for the external parameter entity (context must be 0 for this
+ call), it is illegal to make any calls on the old parser until
+ XML_ParserFree has been called on the newly created parser.
+ If the library has been compiled without support for parameter
+ entity parsing (ie without XML_DTD being defined), then
+ XML_SetParamEntityParsing will return 0 if parsing of parameter
+ entities is requested; otherwise it will return non-zero.
+ Note: If XML_SetParamEntityParsing is called after XML_Parse or
+ XML_ParseBuffer, then it has no effect and will always return 0.
+*/
+XMLPARSEAPI(int)
+XML_SetParamEntityParsing(XML_Parser parser,
+ enum XML_ParamEntityParsing parsing);
+
+/* If XML_Parse or XML_ParseBuffer have returned XML_STATUS_ERROR, then
+ XML_GetErrorCode returns information about the error.
+*/
+XMLPARSEAPI(enum XML_Error)
+XML_GetErrorCode(XML_Parser parser);
+
+/* These functions return information about the current parse
+ location. They may be called from any callback called to report
+ some parse event; in this case the location is the location of the
+ first of the sequence of characters that generated the event. When
+ called from callbacks generated by declarations in the document
+ prologue, the location identified isn't as neatly defined, but will
+ be within the relevant markup. When called outside of the callback
+ functions, the position indicated will be just past the last parse
+ event (regardless of whether there was an associated callback).
+
+ They may also be called after returning from a call to XML_Parse
+ or XML_ParseBuffer. If the return value is XML_STATUS_ERROR then
+ the location is the location of the character at which the error
+ was detected; otherwise the location is the location of the last
+ parse event, as described above.
+*/
+XMLPARSEAPI(XML_Size) XML_GetCurrentLineNumber(XML_Parser parser);
+XMLPARSEAPI(XML_Size) XML_GetCurrentColumnNumber(XML_Parser parser);
+XMLPARSEAPI(XML_Index) XML_GetCurrentByteIndex(XML_Parser parser);
+
+/* Return the number of bytes in the current event.
+ Returns 0 if the event is in an internal entity.
+*/
+XMLPARSEAPI(int)
+XML_GetCurrentByteCount(XML_Parser parser);
+
+/* If XML_CONTEXT_BYTES is defined, returns the input buffer, sets
+ the integer pointed to by offset to the offset within this buffer
+ of the current parse position, and sets the integer pointed to by size
+ to the size of this buffer (the number of input bytes). Otherwise
+ returns a NULL pointer. Also returns a NULL pointer if a parse isn't
+ active.
+
+ NOTE: The character pointer returned should not be used outside
+ the handler that makes the call.
+*/
+XMLPARSEAPI(const char *)
+XML_GetInputContext(XML_Parser parser,
+ int *offset,
+ int *size);
+
+/* For backwards compatibility with previous versions. */
+#define XML_GetErrorLineNumber XML_GetCurrentLineNumber
+#define XML_GetErrorColumnNumber XML_GetCurrentColumnNumber
+#define XML_GetErrorByteIndex XML_GetCurrentByteIndex
+
+/* Frees the content model passed to the element declaration handler */
+XMLPARSEAPI(void)
+XML_FreeContentModel(XML_Parser parser, XML_Content *model);
+
+/* Exposing the memory handling functions used in Expat */
+XMLPARSEAPI(void *)
+XML_MemMalloc(XML_Parser parser, size_t size);
+
+XMLPARSEAPI(void *)
+XML_MemRealloc(XML_Parser parser, void *ptr, size_t size);
+
+XMLPARSEAPI(void)
+XML_MemFree(XML_Parser parser, void *ptr);
+
+/* Frees memory used by the parser. */
+XMLPARSEAPI(void)
+XML_ParserFree(XML_Parser parser);
+
+/* Returns a string describing the error. */
+XMLPARSEAPI(const XML_LChar *)
+XML_ErrorString(enum XML_Error code);
+
+/* Return a string containing the version number of this expat */
+XMLPARSEAPI(const XML_LChar *)
+XML_ExpatVersion(void);
+
+typedef struct {
+ int major;
+ int minor;
+ int micro;
+} XML_Expat_Version;
+
+/* Return an XML_Expat_Version structure containing numeric version
+ number information for this version of expat.
+*/
+XMLPARSEAPI(XML_Expat_Version)
+XML_ExpatVersionInfo(void);
+
+/* Added in Expat 1.95.5. */
+enum XML_FeatureEnum {
+ XML_FEATURE_END = 0,
+ XML_FEATURE_UNICODE,
+ XML_FEATURE_UNICODE_WCHAR_T,
+ XML_FEATURE_DTD,
+ XML_FEATURE_CONTEXT_BYTES,
+ XML_FEATURE_MIN_SIZE,
+ XML_FEATURE_SIZEOF_XML_CHAR,
+ XML_FEATURE_SIZEOF_XML_LCHAR,
+ XML_FEATURE_NS
+ /* Additional features must be added to the end of this enum. */
+};
+
+typedef struct {
+ enum XML_FeatureEnum feature;
+ const XML_LChar *name;
+ long int value;
+} XML_Feature;
+
+XMLPARSEAPI(const XML_Feature *)
+XML_GetFeatureList(void);
+
+
+/* Expat follows the GNU/Linux convention of odd number minor version for
+ beta/development releases and even number minor version for stable
+ releases. Micro is bumped with each release, and set to 0 with each
+ change to major or minor version.
+*/
+#define XML_MAJOR_VERSION 2
+#define XML_MINOR_VERSION 0
+#define XML_MICRO_VERSION 0
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* not Expat_INCLUDED */

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/expat_external.h
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/expat_external.h 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,115 @@
+/* Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd
+ See the file COPYING for copying permission.
+*/
+
+#ifndef Expat_External_INCLUDED
+#define Expat_External_INCLUDED 1
+
+/* External API definitions */
+
+#if defined(_MSC_EXTENSIONS) && !defined(__BEOS__) && !defined(__CYGWIN__)
+#define XML_USE_MSC_EXTENSIONS 1
+#endif
+
+/* Expat tries very hard to make the API boundary very specifically
+ defined. There are two macros defined to control this boundary;
+ each of these can be defined before including this header to
+ achieve some different behavior, but doing so it not recommended or
+ tested frequently.
+
+ XMLCALL - The calling convention to use for all calls across the
+ "library boundary." This will default to cdecl, and
+ try really hard to tell the compiler that's what we
+ want.
+
+ XMLIMPORT - Whatever magic is needed to note that a function is
+ to be imported from a dynamically loaded library
+ (.dll, .so, or .sl, depending on your platform).
+
+ The XMLCALL macro was added in Expat 1.95.7. The only one which is
+ expected to be directly useful in client code is XMLCALL.
+
+ Note that on at least some Unix versions, the Expat library must be
+ compiled with the cdecl calling convention as the default since
+ system headers may assume the cdecl convention.
+*/
+#ifndef XMLCALL
+#if defined(XML_USE_MSC_EXTENSIONS)
+#define XMLCALL __cdecl
+#elif defined(__GNUC__) && defined(__i386)
+#define XMLCALL __attribute__((cdecl))
+#else
+/* For any platform which uses this definition and supports more than
+ one calling convention, we need to extend this definition to
+ declare the convention used on that platform, if it's possible to
+ do so.
+
+ If this is the case for your platform, please file a bug report
+ with information on how to identify your platform via the C
+ pre-processor and how to specify the same calling convention as the
+ platform's malloc() implementation.
+*/
+#define XMLCALL
+#endif
+#endif /* not defined XMLCALL */
+
+
+#if !defined(XML_STATIC) && !defined(XMLIMPORT)
+#ifndef XML_BUILDING_EXPAT
+/* using Expat from an application */
+
+#ifdef XML_USE_MSC_EXTENSIONS
+#define XMLIMPORT __declspec(dllimport)
+#endif
+
+#endif
+#endif /* not defined XML_STATIC */
+
+
+/* If we didn't define it above, define it away: */
+#ifndef XMLIMPORT
+#define XMLIMPORT
+#endif
+
+
+#define XMLPARSEAPI(type) XMLIMPORT type XMLCALL
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef XML_UNICODE_WCHAR_T
+#define XML_UNICODE
+#endif
+
+#ifdef XML_UNICODE /* Information is UTF-16 encoded. */
+#ifdef XML_UNICODE_WCHAR_T
+typedef wchar_t XML_Char;
+typedef wchar_t XML_LChar;
+#else
+typedef unsigned short XML_Char;
+typedef char XML_LChar;
+#endif /* XML_UNICODE_WCHAR_T */
+#else /* Information is UTF-8 encoded. */
+typedef char XML_Char;
+typedef char XML_LChar;
+#endif /* XML_UNICODE */
+
+#ifdef XML_LARGE_SIZE /* Use large integers for file/stream positions. */
+#if defined(XML_USE_MSC_EXTENSIONS) && _MSC_VER < 1400
+typedef __int64 XML_Index;
+typedef unsigned __int64 XML_Size;
+#else
+typedef long long XML_Index;
+typedef unsigned long long XML_Size;
+#endif
+#else
+typedef long XML_Index;
+typedef unsigned long XML_Size;
+#endif /* XML_LARGE_SIZE */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* not Expat_External_INCLUDED */

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/expat_static.dsp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/expat_static.dsp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,154 @@
+# Microsoft Developer Studio Project File - Name="expat_static" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=expat_static - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "expat_static.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "expat_static.mak" CFG="expat_static - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "expat_static - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "expat_static - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "expat_static - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "expat_static___Win32_Release"
+# PROP BASE Intermediate_Dir "expat_static___Win32_Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_static"
+# PROP Intermediate_Dir "Release_static"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "_WINDOWS" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "COMPILED_FROM_DSP" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x1009 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"Release_static\libexpatMT.lib"
+
+!ELSEIF "$(CFG)" == "expat_static - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "expat_static___Win32_Debug"
+# PROP BASE Intermediate_Dir "expat_static___Win32_Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_static"
+# PROP Intermediate_Dir "Debug_static"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "COMPILED_FROM_DSP" /D "_MBCS" /D "_LIB" /FR /FD /GZ /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x1009 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"Debug_static\libexpatMT.lib"
+
+!ENDIF
+
+# Begin Target
+
+# Name "expat_static - Win32 Release"
+# Name "expat_static - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=.\xmlparse.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\xmlrole.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\xmltok.c
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=.\ascii.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\asciitab.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\expat.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\expat_external.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\iasciitab.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\internal.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\latin1tab.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\nametab.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\utf8tab.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\xmlrole.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\xmltok.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\xmltok_impl.h
+# End Source File
+# End Group
+# End Target
+# End Project

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/expatw.dsp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/expatw.dsp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,177 @@
+# Microsoft Developer Studio Project File - Name="expatw" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=expatw - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "expatw.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "expatw.mak" CFG="expatw - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "expatw - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "expatw - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "expatw - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release-w"
+# PROP Intermediate_Dir "Release-w"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "EXPAT_EXPORTS" /Yu"stdafx.h" /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /D "NDEBUG" /D "COMPILED_FROM_DSP" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "XML_UNICODE_WCHAR_T" /FD /c
+# SUBTRACT CPP /YX /Yc /Yu
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /pdb:none /machine:I386 /out:"Release-w\libexpatw.dll"
+
+!ELSEIF "$(CFG)" == "expatw - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug-w"
+# PROP Intermediate_Dir "Debug-w"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "EXPAT_EXPORTS" /Yu"stdafx.h" /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /GX /ZI /Od /D "_DEBUG" /D "COMPILED_FROM_DSP" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "XML_UNICODE_WCHAR_T" /FR /FD /GZ /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /pdb:none /debug /machine:I386 /out:"Debug-w\libexpatw.dll"
+
+!ENDIF
+
+# Begin Target
+
+# Name "expatw - Win32 Release"
+# Name "expatw - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=.\libexpatw.def
+# End Source File
+# Begin Source File
+
+SOURCE=.\xmlparse.c
+
+!IF "$(CFG)" == "expatw - Win32 Release"
+
+!ELSEIF "$(CFG)" == "expatw - Win32 Debug"
+
+# ADD CPP /GX- /Od
+
+!ENDIF
+
+# End Source File
+# Begin Source File
+
+SOURCE=.\xmlrole.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\xmltok.c
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=.\ascii.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\asciitab.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\expat.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\expat_external.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\iasciitab.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\internal.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\latin1tab.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\nametab.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\utf8tab.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\xmlrole.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\xmltok.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\xmltok_impl.h
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# End Group
+# End Target
+# End Project

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/expatw_static.dsp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/expatw_static.dsp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,154 @@
+# Microsoft Developer Studio Project File - Name="expatw_static" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=expatw_static - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "expatw_static.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "expatw_static.mak" CFG="expatw_static - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "expatw_static - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "expatw_static - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "expatw_static - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "expatw_static___Win32_Release"
+# PROP BASE Intermediate_Dir "expatw_static___Win32_Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release-w_static"
+# PROP Intermediate_Dir "Release-w_static"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "_WINDOWS" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "COMPILED_FROM_DSP" /D "XML_UNICODE_WCHAR_T" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x1009 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"Release-w_static\libexpatwMT.lib"
+
+!ELSEIF "$(CFG)" == "expatw_static - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "expatw_static___Win32_Debug"
+# PROP BASE Intermediate_Dir "expatw_static___Win32_Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug-w_static"
+# PROP Intermediate_Dir "Debug-w_static"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "COMPILED_FROM_DSP" /D "_MBCS" /D "_LIB" /FR /FD /GZ /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x1009 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"Debug-w_static\libexpatwMT.lib"
+
+!ENDIF
+
+# Begin Target
+
+# Name "expatw_static - Win32 Release"
+# Name "expatw_static - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=.\xmlparse.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\xmlrole.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\xmltok.c
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=.\ascii.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\asciitab.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\expat.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\expat_external.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\iasciitab.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\internal.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\latin1tab.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\nametab.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\utf8tab.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\xmlrole.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\xmltok.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\xmltok_impl.h
+# End Source File
+# End Group
+# End Target
+# End Project

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/iasciitab.h
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/iasciitab.h 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,37 @@
+/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
+ See the file COPYING for copying permission.
+*/
+
+/* Like asciitab.h, except that 0xD has code BT_S rather than BT_CR */
+/* 0x00 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
+/* 0x04 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
+/* 0x08 */ BT_NONXML, BT_S, BT_LF, BT_NONXML,
+/* 0x0C */ BT_NONXML, BT_S, BT_NONXML, BT_NONXML,
+/* 0x10 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
+/* 0x14 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
+/* 0x18 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
+/* 0x1C */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
+/* 0x20 */ BT_S, BT_EXCL, BT_QUOT, BT_NUM,
+/* 0x24 */ BT_OTHER, BT_PERCNT, BT_AMP, BT_APOS,
+/* 0x28 */ BT_LPAR, BT_RPAR, BT_AST, BT_PLUS,
+/* 0x2C */ BT_COMMA, BT_MINUS, BT_NAME, BT_SOL,
+/* 0x30 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT,
+/* 0x34 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT,
+/* 0x38 */ BT_DIGIT, BT_DIGIT, BT_COLON, BT_SEMI,
+/* 0x3C */ BT_LT, BT_EQUALS, BT_GT, BT_QUEST,
+/* 0x40 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX,
+/* 0x44 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT,
+/* 0x48 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
+/* 0x4C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
+/* 0x50 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
+/* 0x54 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
+/* 0x58 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_LSQB,
+/* 0x5C */ BT_OTHER, BT_RSQB, BT_OTHER, BT_NMSTRT,
+/* 0x60 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX,
+/* 0x64 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT,
+/* 0x68 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
+/* 0x6C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
+/* 0x70 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
+/* 0x74 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
+/* 0x78 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER,
+/* 0x7C */ BT_VERBAR, BT_OTHER, BT_OTHER, BT_OTHER,

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/internal.h
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/internal.h 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,73 @@
+/* internal.h
+
+ Internal definitions used by Expat. This is not needed to compile
+ client code.
+
+ The following calling convention macros are defined for frequently
+ called functions:
+
+ FASTCALL - Used for those internal functions that have a simple
+ body and a low number of arguments and local variables.
+
+ PTRCALL - Used for functions called though function pointers.
+
+ PTRFASTCALL - Like PTRCALL, but for low number of arguments.
+
+ inline - Used for selected internal functions for which inlining
+ may improve performance on some platforms.
+
+ Note: Use of these macros is based on judgement, not hard rules,
+ and therefore subject to change.
+*/
+
+#if defined(__GNUC__) && defined(__i386__)
+/* We'll use this version by default only where we know it helps.
+
+ regparm() generates warnings on Solaris boxes. See SF bug #692878.
+
+ Instability reported with egcs on a RedHat Linux 7.3.
+ Let's comment out:
+ #define FASTCALL __attribute__((stdcall, regparm(3)))
+ and let's try this:
+*/
+#define FASTCALL __attribute__((regparm(3)))
+#define PTRFASTCALL __attribute__((regparm(3)))
+#endif
+
+/* Using __fastcall seems to have an unexpected negative effect under
+ MS VC++, especially for function pointers, so we won't use it for
+ now on that platform. It may be reconsidered for a future release
+ if it can be made more effective.
+ Likely reason: __fastcall on Windows is like stdcall, therefore
+ the compiler cannot perform stack optimizations for call clusters.
+*/
+
+/* Make sure all of these are defined if they aren't already. */
+
+#ifndef FASTCALL
+#define FASTCALL
+#endif
+
+#ifndef PTRCALL
+#define PTRCALL
+#endif
+
+#ifndef PTRFASTCALL
+#define PTRFASTCALL
+#endif
+
+#ifndef XML_MIN_SIZE
+#if !defined(__cplusplus) && !defined(inline)
+#ifdef __GNUC__
+#define inline __inline
+#endif /* __GNUC__ */
+#endif
+#endif /* XML_MIN_SIZE */
+
+#ifdef __cplusplus
+#define inline inline
+#else
+#ifndef inline
+#define inline
+#endif
+#endif

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/latin1tab.h
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/latin1tab.h 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,36 @@
+/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
+ See the file COPYING for copying permission.
+*/
+
+/* 0x80 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
+/* 0x84 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
+/* 0x88 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
+/* 0x8C */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
+/* 0x90 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
+/* 0x94 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
+/* 0x98 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
+/* 0x9C */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
+/* 0xA0 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
+/* 0xA4 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
+/* 0xA8 */ BT_OTHER, BT_OTHER, BT_NMSTRT, BT_OTHER,
+/* 0xAC */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
+/* 0xB0 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
+/* 0xB4 */ BT_OTHER, BT_NMSTRT, BT_OTHER, BT_NAME,
+/* 0xB8 */ BT_OTHER, BT_OTHER, BT_NMSTRT, BT_OTHER,
+/* 0xBC */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
+/* 0xC0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
+/* 0xC4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
+/* 0xC8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
+/* 0xCC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
+/* 0xD0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
+/* 0xD4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER,
+/* 0xD8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
+/* 0xDC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
+/* 0xE0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
+/* 0xE4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
+/* 0xE8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
+/* 0xEC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
+/* 0xF0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
+/* 0xF4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER,
+/* 0xF8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
+/* 0xFC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/libexpat.def
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/libexpat.def 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,73 @@
+; DEF file for MS VC++
+LIBRARY LIBEXPAT
+DESCRIPTION "Implements an XML parser."
+EXPORTS
+ XML_DefaultCurrent @1
+ XML_ErrorString @2
+ XML_ExpatVersion @3
+ XML_ExpatVersionInfo @4
+ XML_ExternalEntityParserCreate @5
+ XML_GetBase @6
+ XML_GetBuffer @7
+ XML_GetCurrentByteCount @8
+ XML_GetCurrentByteIndex @9
+ XML_GetCurrentColumnNumber @10
+ XML_GetCurrentLineNumber @11
+ XML_GetErrorCode @12
+ XML_GetIdAttributeIndex @13
+ XML_GetInputContext @14
+ XML_GetSpecifiedAttributeCount @15
+ XML_Parse @16
+ XML_ParseBuffer @17
+ XML_ParserCreate @18
+ XML_ParserCreateNS @19
+ XML_ParserCreate_MM @20
+ XML_ParserFree @21
+ XML_SetAttlistDeclHandler @22
+ XML_SetBase @23
+ XML_SetCdataSectionHandler @24
+ XML_SetCharacterDataHandler @25
+ XML_SetCommentHandler @26
+ XML_SetDefaultHandler @27
+ XML_SetDefaultHandlerExpand @28
+ XML_SetDoctypeDeclHandler @29
+ XML_SetElementDeclHandler @30
+ XML_SetElementHandler @31
+ XML_SetEncoding @32
+ XML_SetEndCdataSectionHandler @33
+ XML_SetEndDoctypeDeclHandler @34
+ XML_SetEndElementHandler @35
+ XML_SetEndNamespaceDeclHandler @36
+ XML_SetEntityDeclHandler @37
+ XML_SetExternalEntityRefHandler @38
+ XML_SetExternalEntityRefHandlerArg @39
+ XML_SetNamespaceDeclHandler @40
+ XML_SetNotStandaloneHandler @41
+ XML_SetNotationDeclHandler @42
+ XML_SetParamEntityParsing @43
+ XML_SetProcessingInstructionHandler @44
+ XML_SetReturnNSTriplet @45
+ XML_SetStartCdataSectionHandler @46
+ XML_SetStartDoctypeDeclHandler @47
+ XML_SetStartElementHandler @48
+ XML_SetStartNamespaceDeclHandler @49
+ XML_SetUnknownEncodingHandler @50
+ XML_SetUnparsedEntityDeclHandler @51
+ XML_SetUserData @52
+ XML_SetXmlDeclHandler @53
+ XML_UseParserAsHandlerArg @54
+; added with version 1.95.3
+ XML_ParserReset @55
+ XML_SetSkippedEntityHandler @56
+; added with version 1.95.5
+ XML_GetFeatureList @57
+ XML_UseForeignDTD @58
+; added with version 1.95.6
+ XML_FreeContentModel @59
+ XML_MemMalloc @60
+ XML_MemRealloc @61
+ XML_MemFree @62
+; added with version 1.95.8
+ XML_StopParser @63
+ XML_ResumeParser @64
+ XML_GetParsingStatus @65

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/libexpatw.def
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/libexpatw.def 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,73 @@
+; DEF file for MS VC++
+LIBRARY LIBEXPATW
+DESCRIPTION "Implements an XML parser."
+EXPORTS
+ XML_DefaultCurrent @1
+ XML_ErrorString @2
+ XML_ExpatVersion @3
+ XML_ExpatVersionInfo @4
+ XML_ExternalEntityParserCreate @5
+ XML_GetBase @6
+ XML_GetBuffer @7
+ XML_GetCurrentByteCount @8
+ XML_GetCurrentByteIndex @9
+ XML_GetCurrentColumnNumber @10
+ XML_GetCurrentLineNumber @11
+ XML_GetErrorCode @12
+ XML_GetIdAttributeIndex @13
+ XML_GetInputContext @14
+ XML_GetSpecifiedAttributeCount @15
+ XML_Parse @16
+ XML_ParseBuffer @17
+ XML_ParserCreate @18
+ XML_ParserCreateNS @19
+ XML_ParserCreate_MM @20
+ XML_ParserFree @21
+ XML_SetAttlistDeclHandler @22
+ XML_SetBase @23
+ XML_SetCdataSectionHandler @24
+ XML_SetCharacterDataHandler @25
+ XML_SetCommentHandler @26
+ XML_SetDefaultHandler @27
+ XML_SetDefaultHandlerExpand @28
+ XML_SetDoctypeDeclHandler @29
+ XML_SetElementDeclHandler @30
+ XML_SetElementHandler @31
+ XML_SetEncoding @32
+ XML_SetEndCdataSectionHandler @33
+ XML_SetEndDoctypeDeclHandler @34
+ XML_SetEndElementHandler @35
+ XML_SetEndNamespaceDeclHandler @36
+ XML_SetEntityDeclHandler @37
+ XML_SetExternalEntityRefHandler @38
+ XML_SetExternalEntityRefHandlerArg @39
+ XML_SetNamespaceDeclHandler @40
+ XML_SetNotStandaloneHandler @41
+ XML_SetNotationDeclHandler @42
+ XML_SetParamEntityParsing @43
+ XML_SetProcessingInstructionHandler @44
+ XML_SetReturnNSTriplet @45
+ XML_SetStartCdataSectionHandler @46
+ XML_SetStartDoctypeDeclHandler @47
+ XML_SetStartElementHandler @48
+ XML_SetStartNamespaceDeclHandler @49
+ XML_SetUnknownEncodingHandler @50
+ XML_SetUnparsedEntityDeclHandler @51
+ XML_SetUserData @52
+ XML_SetXmlDeclHandler @53
+ XML_UseParserAsHandlerArg @54
+; added with version 1.95.3
+ XML_ParserReset @55
+ XML_SetSkippedEntityHandler @56
+; added with version 1.95.5
+ XML_GetFeatureList @57
+ XML_UseForeignDTD @58
+; added with version 1.95.6
+ XML_FreeContentModel @59
+ XML_MemMalloc @60
+ XML_MemRealloc @61
+ XML_MemFree @62
+; added with version 1.95.8
+ XML_StopParser @63
+ XML_ResumeParser @64
+ XML_GetParsingStatus @65

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/macconfig.h
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/macconfig.h 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,53 @@
+/*================================================================
+** Copyright 2000, Clark Cooper
+** All rights reserved.
+**
+** This is free software. You are permitted to copy, distribute, or modify
+** it under the terms of the MIT/X license (contained in the COPYING file
+** with this distribution.)
+**
+*/
+
+#ifndef MACCONFIG_H
+#define MACCONFIG_H
+
+
+/* 1234 = LIL_ENDIAN, 4321 = BIGENDIAN */
+#define BYTEORDER 4321
+
+/* Define to 1 if you have the `bcopy' function. */
+#undef HAVE_BCOPY
+
+/* Define to 1 if you have the `memmove' function. */
+#define HAVE_MEMMOVE
+
+/* Define to 1 if you have a working `mmap' system call. */
+#undef HAVE_MMAP
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* whether byteorder is bigendian */
+#define WORDS_BIGENDIAN
+
+/* Define to specify how much context to retain around the current parse
+ point. */
+#undef XML_CONTEXT_BYTES
+
+/* Define to make parameter entity parsing functionality available. */
+#define XML_DTD
+
+/* Define to make XML Namespaces functionality available. */
+#define XML_NS
+
+/* Define to empty if `const' does not conform to ANSI C. */
+#undef const
+
+/* Define to `long' if <sys/types.h> does not define. */
+#define off_t long
+
+/* Define to `unsigned' if <sys/types.h> does not define. */
+#undef size_t
+
+
+#endif /* ifndef MACCONFIG_H */

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/nametab.h
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/nametab.h 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,150 @@
+static const unsigned namingBitmap[] = {
+0x00000000, 0x00000000, 0x00000000, 0x00000000,
+0x00000000, 0x00000000, 0x00000000, 0x00000000,
+0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+0x00000000, 0x04000000, 0x87FFFFFE, 0x07FFFFFE,
+0x00000000, 0x00000000, 0xFF7FFFFF, 0xFF7FFFFF,
+0xFFFFFFFF, 0x7FF3FFFF, 0xFFFFFDFE, 0x7FFFFFFF,
+0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFE00F, 0xFC31FFFF,
+0x00FFFFFF, 0x00000000, 0xFFFF0000, 0xFFFFFFFF,
+0xFFFFFFFF, 0xF80001FF, 0x00000003, 0x00000000,
+0x00000000, 0x00000000, 0x00000000, 0x00000000,
+0xFFFFD740, 0xFFFFFFFB, 0x547F7FFF, 0x000FFFFD,
+0xFFFFDFFE, 0xFFFFFFFF, 0xDFFEFFFF, 0xFFFFFFFF,
+0xFFFF0003, 0xFFFFFFFF, 0xFFFF199F, 0x033FCFFF,
+0x00000000, 0xFFFE0000, 0x027FFFFF, 0xFFFFFFFE,
+0x0000007F, 0x00000000, 0xFFFF0000, 0x000707FF,
+0x00000000, 0x07FFFFFE, 0x000007FE, 0xFFFE0000,
+0xFFFFFFFF, 0x7CFFFFFF, 0x002F7FFF, 0x00000060,
+0xFFFFFFE0, 0x23FFFFFF, 0xFF000000, 0x00000003,
+0xFFF99FE0, 0x03C5FDFF, 0xB0000000, 0x00030003,
+0xFFF987E0, 0x036DFDFF, 0x5E000000, 0x001C0000,
+0xFFFBAFE0, 0x23EDFDFF, 0x00000000, 0x00000001,
+0xFFF99FE0, 0x23CDFDFF, 0xB0000000, 0x00000003,
+0xD63DC7E0, 0x03BFC718, 0x00000000, 0x00000000,
+0xFFFDDFE0, 0x03EFFDFF, 0x00000000, 0x00000003,
+0xFFFDDFE0, 0x03EFFDFF, 0x40000000, 0x00000003,
+0xFFFDDFE0, 0x03FFFDFF, 0x00000000, 0x00000003,
+0x00000000, 0x00000000, 0x00000000, 0x00000000,
+0xFFFFFFFE, 0x000D7FFF, 0x0000003F, 0x00000000,
+0xFEF02596, 0x200D6CAE, 0x0000001F, 0x00000000,
+0x00000000, 0x00000000, 0xFFFFFEFF, 0x000003FF,
+0x00000000, 0x00000000, 0x00000000, 0x00000000,
+0x00000000, 0x00000000, 0x00000000, 0x00000000,
+0x00000000, 0xFFFFFFFF, 0xFFFF003F, 0x007FFFFF,
+0x0007DAED, 0x50000000, 0x82315001, 0x002C62AB,
+0x40000000, 0xF580C900, 0x00000007, 0x02010800,
+0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+0x0FFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x03FFFFFF,
+0x3F3FFFFF, 0xFFFFFFFF, 0xAAFF3F3F, 0x3FFFFFFF,
+0xFFFFFFFF, 0x5FDFFFFF, 0x0FCF1FDC, 0x1FDC1FFF,
+0x00000000, 0x00004C40, 0x00000000, 0x00000000,
+0x00000007, 0x00000000, 0x00000000, 0x00000000,
+0x00000080, 0x000003FE, 0xFFFFFFFE, 0xFFFFFFFF,
+0x001FFFFF, 0xFFFFFFFE, 0xFFFFFFFF, 0x07FFFFFF,
+0xFFFFFFE0, 0x00001FFF, 0x00000000, 0x00000000,
+0x00000000, 0x00000000, 0x00000000, 0x00000000,
+0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+0xFFFFFFFF, 0x0000003F, 0x00000000, 0x00000000,
+0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
+0xFFFFFFFF, 0x0000000F, 0x00000000, 0x00000000,
+0x00000000, 0x07FF6000, 0x87FFFFFE, 0x07FFFFFE,
+0x00000000, 0x00800000, 0xFF7FFFFF, 0xFF7FFFFF,
+0x00FFFFFF, 0x00000000, 0xFFFF0000, 0xFFFFFFFF,
+0xFFFFFFFF, 0xF80001FF, 0x00030003, 0x00000000,
+0xFFFFFFFF, 0xFFFFFFFF, 0x0000003F, 0x00000003,
+0xFFFFD7C0, 0xFFFFFFFB, 0x547F7FFF, 0x000FFFFD,
+0xFFFFDFFE, 0xFFFFFFFF, 0xDFFEFFFF, 0xFFFFFFFF,
+0xFFFF007B, 0xFFFFFFFF, 0xFFFF199F, 0x033FCFFF,
+0x00000000, 0xFFFE0000, 0x027FFFFF, 0xFFFFFFFE,
+0xFFFE007F, 0xBBFFFFFB, 0xFFFF0016, 0x000707FF,
+0x00000000, 0x07FFFFFE, 0x0007FFFF, 0xFFFF03FF,
+0xFFFFFFFF, 0x7CFFFFFF, 0xFFEF7FFF, 0x03FF3DFF,
+0xFFFFFFEE, 0xF3FFFFFF, 0xFF1E3FFF, 0x0000FFCF,
+0xFFF99FEE, 0xD3C5FDFF, 0xB080399F, 0x0003FFCF,
+0xFFF987E4, 0xD36DFDFF, 0x5E003987, 0x001FFFC0,
+0xFFFBAFEE, 0xF3EDFDFF, 0x00003BBF, 0x0000FFC1,
+0xFFF99FEE, 0xF3CDFDFF, 0xB0C0398F, 0x0000FFC3,
+0xD63DC7EC, 0xC3BFC718, 0x00803DC7, 0x0000FF80,
+0xFFFDDFEE, 0xC3EFFDFF, 0x00603DDF, 0x0000FFC3,
+0xFFFDDFEC, 0xC3EFFDFF, 0x40603DDF, 0x0000FFC3,
+0xFFFDDFEC, 0xC3FFFDFF, 0x00803DCF, 0x0000FFC3,
+0x00000000, 0x00000000, 0x00000000, 0x00000000,
+0xFFFFFFFE, 0x07FF7FFF, 0x03FF7FFF, 0x00000000,
+0xFEF02596, 0x3BFF6CAE, 0x03FF3F5F, 0x00000000,
+0x03000000, 0xC2A003FF, 0xFFFFFEFF, 0xFFFE03FF,
+0xFEBF0FDF, 0x02FE3FFF, 0x00000000, 0x00000000,
+0x00000000, 0x00000000, 0x00000000, 0x00000000,
+0x00000000, 0x00000000, 0x1FFF0000, 0x00000002,
+0x000000A0, 0x003EFFFE, 0xFFFFFFFE, 0xFFFFFFFF,
+0x661FFFFF, 0xFFFFFFFE, 0xFFFFFFFF, 0x77FFFFFF,
+};
+static const unsigned char nmstrtPages[] = {
+0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x00,
+0x00, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
+0x10, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x13,
+0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x15, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
+0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x17,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01,
+0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x18,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+};
+static const unsigned char namePages[] = {
+0x19, 0x03, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x00,
+0x00, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25,
+0x10, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x13,
+0x26, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x27, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
+0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x17,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01,
+0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x18,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+};

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/utf8tab.h
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/utf8tab.h 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,37 @@
+/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
+ See the file COPYING for copying permission.
+*/
+
+
+/* 0x80 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
+/* 0x84 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
+/* 0x88 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
+/* 0x8C */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
+/* 0x90 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
+/* 0x94 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
+/* 0x98 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
+/* 0x9C */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
+/* 0xA0 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
+/* 0xA4 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
+/* 0xA8 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
+/* 0xAC */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
+/* 0xB0 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
+/* 0xB4 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
+/* 0xB8 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
+/* 0xBC */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
+/* 0xC0 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2,
+/* 0xC4 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2,
+/* 0xC8 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2,
+/* 0xCC */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2,
+/* 0xD0 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2,
+/* 0xD4 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2,
+/* 0xD8 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2,
+/* 0xDC */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2,
+/* 0xE0 */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3,
+/* 0xE4 */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3,
+/* 0xE8 */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3,
+/* 0xEC */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3,
+/* 0xF0 */ BT_LEAD4, BT_LEAD4, BT_LEAD4, BT_LEAD4,
+/* 0xF4 */ BT_LEAD4, BT_NONXML, BT_NONXML, BT_NONXML,
+/* 0xF8 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
+/* 0xFC */ BT_NONXML, BT_NONXML, BT_MALFORM, BT_MALFORM,

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/winconfig.h
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/winconfig.h 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,30 @@
+/*================================================================
+** Copyright 2000, Clark Cooper
+** All rights reserved.
+**
+** This is free software. You are permitted to copy, distribute, or modify
+** it under the terms of the MIT/X license (contained in the COPYING file
+** with this distribution.)
+*/
+
+#ifndef WINCONFIG_H
+#define WINCONFIG_H
+
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#undef WIN32_LEAN_AND_MEAN
+
+#include <memory.h>
+#include <string.h>
+
+#define XML_NS 1
+#define XML_DTD 1
+#define XML_CONTEXT_BYTES 1024
+
+/* we will assume all Windows platforms are little endian */
+#define BYTEORDER 1234
+
+/* Windows has memmove() available. */
+#define HAVE_MEMMOVE
+
+#endif /* ndef WINCONFIG_H */

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/xmlparse.c
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/xmlparse.c 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,6272 @@
+/* Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd
+ See the file COPYING for copying permission.
+*/
+
+#include <stddef.h>
+#include <string.h> /* memset(), memcpy() */
+#include <assert.h>
+
+#define XML_BUILDING_EXPAT 1
+
+#ifdef COMPILED_FROM_DSP
+#include "winconfig.h"
+#elif defined(MACOS_CLASSIC)
+#include "macconfig.h"
+#elif defined(__amigaos4__)
+#include "amigaconfig.h"
+#elif defined(HAVE_EXPAT_CONFIG_H)
+#include <expat_config.h>
+#endif /* ndef COMPILED_FROM_DSP */
+
+#include "expat.h"
+
+#ifdef XML_UNICODE
+#define XML_ENCODE_MAX XML_UTF16_ENCODE_MAX
+#define XmlConvert XmlUtf16Convert
+#define XmlGetInternalEncoding XmlGetUtf16InternalEncoding
+#define XmlGetInternalEncodingNS XmlGetUtf16InternalEncodingNS
+#define XmlEncode XmlUtf16Encode
+#define MUST_CONVERT(enc, s) (!(enc)->isUtf16 || (((unsigned long)s) & 1))
+typedef unsigned short ICHAR;
+#else
+#define XML_ENCODE_MAX XML_UTF8_ENCODE_MAX
+#define XmlConvert XmlUtf8Convert
+#define XmlGetInternalEncoding XmlGetUtf8InternalEncoding
+#define XmlGetInternalEncodingNS XmlGetUtf8InternalEncodingNS
+#define XmlEncode XmlUtf8Encode
+#define MUST_CONVERT(enc, s) (!(enc)->isUtf8)
+typedef char ICHAR;
+#endif
+
+
+#ifndef XML_NS
+
+#define XmlInitEncodingNS XmlInitEncoding
+#define XmlInitUnknownEncodingNS XmlInitUnknownEncoding
+#undef XmlGetInternalEncodingNS
+#define XmlGetInternalEncodingNS XmlGetInternalEncoding
+#define XmlParseXmlDeclNS XmlParseXmlDecl
+
+#endif
+
+#ifdef XML_UNICODE
+
+#ifdef XML_UNICODE_WCHAR_T
+#define XML_T(x) (const wchar_t)x
+#define XML_L(x) L ## x
+#else
+#define XML_T(x) (const unsigned short)x
+#define XML_L(x) x
+#endif
+
+#else
+
+#define XML_T(x) x
+#define XML_L(x) x
+
+#endif
+
+/* Round up n to be a multiple of sz, where sz is a power of 2. */
+#define ROUND_UP(n, sz) (((n) + ((sz) - 1)) & ~((sz) - 1))
+
+/* Handle the case where memmove() doesn't exist. */
+#ifndef HAVE_MEMMOVE
+#ifdef HAVE_BCOPY
+#define memmove(d,s,l) bcopy((s),(d),(l))
+#else
+#error memmove does not exist on this platform, nor is a substitute available
+#endif /* HAVE_BCOPY */
+#endif /* HAVE_MEMMOVE */
+
+#include "internal.h"
+#include "xmltok.h"
+#include "xmlrole.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef const XML_Char *KEY;
+
+typedef struct {
+ KEY name;
+} NAMED;
+
+typedef struct {
+ NAMED **v;
+ unsigned char power;
+ size_t size;
+ size_t used;
+ const XML_Memory_Handling_Suite *mem;
+} HASH_TABLE;
+
+/* Basic character hash algorithm, taken from Python's string hash:
+ h = h * 1000003 ^ character, the constant being a prime number.
+
+*/
+#ifdef XML_UNICODE
+#define CHAR_HASH(h, c) \
+ (((h) * 0xF4243) ^ (unsigned short)(c))
+#else
+#define CHAR_HASH(h, c) \
+ (((h) * 0xF4243) ^ (unsigned char)(c))
+#endif
+
+/* For probing (after a collision) we need a step size relative prime
+ to the hash table size, which is a power of 2. We use double-hashing,
+ since we can calculate a second hash value cheaply by taking those bits
+ of the first hash value that were discarded (masked out) when the table
+ index was calculated: index = hash & mask, where mask = table->size - 1.
+ We limit the maximum step size to table->size / 4 (mask >> 2) and make
+ it odd, since odd numbers are always relative prime to a power of 2.
+*/
+#define SECOND_HASH(hash, mask, power) \
+ ((((hash) & ~(mask)) >> ((power) - 1)) & ((mask) >> 2))
+#define PROBE_STEP(hash, mask, power) \
+ ((unsigned char)((SECOND_HASH(hash, mask, power)) | 1))
+
+typedef struct {
+ NAMED **p;
+ NAMED **end;
+} HASH_TABLE_ITER;
+
+#define INIT_TAG_BUF_SIZE 32 /* must be a multiple of sizeof(XML_Char) */
+#define INIT_DATA_BUF_SIZE 1024
+#define INIT_ATTS_SIZE 16
+#define INIT_ATTS_VERSION 0xFFFFFFFF
+#define INIT_BLOCK_SIZE 1024
+#define INIT_BUFFER_SIZE 1024
+
+#define EXPAND_SPARE 24
+
+typedef struct binding {
+ struct prefix *prefix;
+ struct binding *nextTagBinding;
+ struct binding *prevPrefixBinding;
+ const struct attribute_id *attId;
+ XML_Char *uri;
+ int uriLen;
+ int uriAlloc;
+} BINDING;
+
+typedef struct prefix {
+ const XML_Char *name;
+ BINDING *binding;
+} PREFIX;
+
+typedef struct {
+ const XML_Char *str;
+ const XML_Char *localPart;
+ const XML_Char *prefix;
+ int strLen;
+ int uriLen;
+ int prefixLen;
+} TAG_NAME;
+
+/* TAG represents an open element.
+ The name of the element is stored in both the document and API
+ encodings. The memory buffer 'buf' is a separately-allocated
+ memory area which stores the name. During the XML_Parse()/
+ XMLParseBuffer() when the element is open, the memory for the 'raw'
+ version of the name (in the document encoding) is shared with the
+ document buffer. If the element is open across calls to
+ XML_Parse()/XML_ParseBuffer(), the buffer is re-allocated to
+ contain the 'raw' name as well.
+
+ A parser re-uses these structures, maintaining a list of allocated
+ TAG objects in a free list.
+*/
+typedef struct tag {
+ struct tag *parent; /* parent of this element */
+ const char *rawName; /* tagName in the original encoding */
+ int rawNameLength;
+ TAG_NAME name; /* tagName in the API encoding */
+ char *buf; /* buffer for name components */
+ char *bufEnd; /* end of the buffer */
+ BINDING *bindings;
+} TAG;
+
+typedef struct {
+ const XML_Char *name;
+ const XML_Char *textPtr;
+ int textLen; /* length in XML_Chars */
+ int processed; /* # of processed bytes - when suspended */
+ const XML_Char *systemId;
+ const XML_Char *base;
+ const XML_Char *publicId;
+ const XML_Char *notation;
+ XML_Bool open;
+ XML_Bool is_param;
+ XML_Bool is_internal; /* true if declared in internal subset outside PE */
+} ENTITY;
+
+typedef struct {
+ enum XML_Content_Type type;
+ enum XML_Content_Quant quant;
+ const XML_Char * name;
+ int firstchild;
+ int lastchild;
+ int childcnt;
+ int nextsib;
+} CONTENT_SCAFFOLD;
+
+#define INIT_SCAFFOLD_ELEMENTS 32
+
+typedef struct block {
+ struct block *next;
+ int size;
+ XML_Char s[1];
+} BLOCK;
+
+typedef struct {
+ BLOCK *blocks;
+ BLOCK *freeBlocks;
+ const XML_Char *end;
+ XML_Char *ptr;
+ XML_Char *start;
+ const XML_Memory_Handling_Suite *mem;
+} STRING_POOL;
+
+/* The XML_Char before the name is used to determine whether
+ an attribute has been specified. */
+typedef struct attribute_id {
+ XML_Char *name;
+ PREFIX *prefix;
+ XML_Bool maybeTokenized;
+ XML_Bool xmlns;
+} ATTRIBUTE_ID;
+
+typedef struct {
+ const ATTRIBUTE_ID *id;
+ XML_Bool isCdata;
+ const XML_Char *value;
+} DEFAULT_ATTRIBUTE;
+
+typedef struct {
+ unsigned long version;
+ unsigned long hash;
+ const XML_Char *uriName;
+} NS_ATT;
+
+typedef struct {
+ const XML_Char *name;
+ PREFIX *prefix;
+ const ATTRIBUTE_ID *idAtt;
+ int nDefaultAtts;
+ int allocDefaultAtts;
+ DEFAULT_ATTRIBUTE *defaultAtts;
+} ELEMENT_TYPE;
+
+typedef struct {
+ HASH_TABLE generalEntities;
+ HASH_TABLE elementTypes;
+ HASH_TABLE attributeIds;
+ HASH_TABLE prefixes;
+ STRING_POOL pool;
+ STRING_POOL entityValuePool;
+ /* false once a parameter entity reference has been skipped */
+ XML_Bool keepProcessing;
+ /* true once an internal or external PE reference has been encountered;
+ this includes the reference to an external subset */
+ XML_Bool hasParamEntityRefs;
+ XML_Bool standalone;
+#ifdef XML_DTD
+ /* indicates if external PE has been read */
+ XML_Bool paramEntityRead;
+ HASH_TABLE paramEntities;
+#endif /* XML_DTD */
+ PREFIX defaultPrefix;
+ /* === scaffolding for building content model === */
+ XML_Bool in_eldecl;
+ CONTENT_SCAFFOLD *scaffold;
+ unsigned contentStringLen;
+ unsigned scaffSize;
+ unsigned scaffCount;
+ int scaffLevel;
+ int *scaffIndex;
+} DTD;
+
+typedef struct open_internal_entity {
+ const char *internalEventPtr;
+ const char *internalEventEndPtr;
+ struct open_internal_entity *next;
+ ENTITY *entity;
+ int startTagLevel;
+ XML_Bool betweenDecl; /* WFC: PE Between Declarations */
+} OPEN_INTERNAL_ENTITY;
+
+typedef enum XML_Error PTRCALL Processor(XML_Parser parser,
+ const char *start,
+ const char *end,
+ const char **endPtr);
+
+static Processor prologProcessor;
+static Processor prologInitProcessor;
+static Processor contentProcessor;
+static Processor cdataSectionProcessor;
+#ifdef XML_DTD
+static Processor ignoreSectionProcessor;
+static Processor externalParEntProcessor;
+static Processor externalParEntInitProcessor;
+static Processor entityValueProcessor;
+static Processor entityValueInitProcessor;
+#endif /* XML_DTD */
+static Processor epilogProcessor;
+static Processor errorProcessor;
+static Processor externalEntityInitProcessor;
+static Processor externalEntityInitProcessor2;
+static Processor externalEntityInitProcessor3;
+static Processor externalEntityContentProcessor;
+static Processor internalEntityProcessor;
+
+static enum XML_Error
+handleUnknownEncoding(XML_Parser parser, const XML_Char *encodingName);
+static enum XML_Error
+processXmlDecl(XML_Parser parser, int isGeneralTextEntity,
+ const char *s, const char *next);
+static enum XML_Error
+initializeEncoding(XML_Parser parser);
+static enum XML_Error
+doProlog(XML_Parser parser, const ENCODING *enc, const char *s,
+ const char *end, int tok, const char *next, const char **nextPtr,
+ XML_Bool haveMore);
+static enum XML_Error
+processInternalEntity(XML_Parser parser, ENTITY *entity,
+ XML_Bool betweenDecl);
+static enum XML_Error
+doContent(XML_Parser parser, int startTagLevel, const ENCODING *enc,
+ const char *start, const char *end, const char **endPtr,
+ XML_Bool haveMore);
+static enum XML_Error
+doCdataSection(XML_Parser parser, const ENCODING *, const char **startPtr,
+ const char *end, const char **nextPtr, XML_Bool haveMore);
+#ifdef XML_DTD
+static enum XML_Error
+doIgnoreSection(XML_Parser parser, const ENCODING *, const char **startPtr,
+ const char *end, const char **nextPtr, XML_Bool haveMore);
+#endif /* XML_DTD */
+
+static enum XML_Error
+storeAtts(XML_Parser parser, const ENCODING *, const char *s,
+ TAG_NAME *tagNamePtr, BINDING **bindingsPtr);
+static enum XML_Error
+addBinding(XML_Parser parser, PREFIX *prefix, const ATTRIBUTE_ID *attId,
+ const XML_Char *uri, BINDING **bindingsPtr);
+static int
+defineAttribute(ELEMENT_TYPE *type, ATTRIBUTE_ID *, XML_Bool isCdata,
+ XML_Bool isId, const XML_Char *dfltValue, XML_Parser parser);
+static enum XML_Error
+storeAttributeValue(XML_Parser parser, const ENCODING *, XML_Bool isCdata,
+ const char *, const char *, STRING_POOL *);
+static enum XML_Error
+appendAttributeValue(XML_Parser parser, const ENCODING *, XML_Bool isCdata,
+ const char *, const char *, STRING_POOL *);
+static ATTRIBUTE_ID *
+getAttributeId(XML_Parser parser, const ENCODING *enc, const char *start,
+ const char *end);
+static int
+setElementTypePrefix(XML_Parser parser, ELEMENT_TYPE *);
+static enum XML_Error
+storeEntityValue(XML_Parser parser, const ENCODING *enc, const char *start,
+ const char *end);
+static int
+reportProcessingInstruction(XML_Parser parser, const ENCODING *enc,
+ const char *start, const char *end);
+static int
+reportComment(XML_Parser parser, const ENCODING *enc, const char *start,
+ const char *end);
+static void
+reportDefault(XML_Parser parser, const ENCODING *enc, const char *start,
+ const char *end);
+
+static const XML_Char * getContext(XML_Parser parser);
+static XML_Bool
+setContext(XML_Parser parser, const XML_Char *context);
+
+static void FASTCALL normalizePublicId(XML_Char *s);
+
+static DTD * dtdCreate(const XML_Memory_Handling_Suite *ms);
+/* do not call if parentParser != NULL */
+static void dtdReset(DTD *p, const XML_Memory_Handling_Suite *ms);
+static void
+dtdDestroy(DTD *p, XML_Bool isDocEntity, const XML_Memory_Handling_Suite *ms);
+static int
+dtdCopy(DTD *newDtd, const DTD *oldDtd, const XML_Memory_Handling_Suite *ms);
+static int
+copyEntityTable(HASH_TABLE *, STRING_POOL *, const HASH_TABLE *);
+
+static NAMED *
+lookup(HASH_TABLE *table, KEY name, size_t createSize);
+static void FASTCALL
+hashTableInit(HASH_TABLE *, const XML_Memory_Handling_Suite *ms);
+static void FASTCALL hashTableClear(HASH_TABLE *);
+static void FASTCALL hashTableDestroy(HASH_TABLE *);
+static void FASTCALL
+hashTableIterInit(HASH_TABLE_ITER *, const HASH_TABLE *);
+static NAMED * FASTCALL hashTableIterNext(HASH_TABLE_ITER *);
+
+static void FASTCALL
+poolInit(STRING_POOL *, const XML_Memory_Handling_Suite *ms);
+static void FASTCALL poolClear(STRING_POOL *);
+static void FASTCALL poolDestroy(STRING_POOL *);
+static XML_Char *
+poolAppend(STRING_POOL *pool, const ENCODING *enc,
+ const char *ptr, const char *end);
+static XML_Char *
+poolStoreString(STRING_POOL *pool, const ENCODING *enc,
+ const char *ptr, const char *end);
+static XML_Bool FASTCALL poolGrow(STRING_POOL *pool);
+static const XML_Char * FASTCALL
+poolCopyString(STRING_POOL *pool, const XML_Char *s);
+static const XML_Char *
+poolCopyStringN(STRING_POOL *pool, const XML_Char *s, int n);
+static const XML_Char * FASTCALL
+poolAppendString(STRING_POOL *pool, const XML_Char *s);
+
+static int FASTCALL nextScaffoldPart(XML_Parser parser);
+static XML_Content * build_model(XML_Parser parser);
+static ELEMENT_TYPE *
+getElementType(XML_Parser parser, const ENCODING *enc,
+ const char *ptr, const char *end);
+
+static XML_Parser
+parserCreate(const XML_Char *encodingName,
+ const XML_Memory_Handling_Suite *memsuite,
+ const XML_Char *nameSep,
+ DTD *dtd);
+static void
+parserInit(XML_Parser parser, const XML_Char *encodingName);
+
+#define poolStart(pool) ((pool)->start)
+#define poolEnd(pool) ((pool)->ptr)
+#define poolLength(pool) ((pool)->ptr - (pool)->start)
+#define poolChop(pool) ((void)--(pool->ptr))
+#define poolLastChar(pool) (((pool)->ptr)[-1])
+#define poolDiscard(pool) ((pool)->ptr = (pool)->start)
+#define poolFinish(pool) ((pool)->start = (pool)->ptr)
+#define poolAppendChar(pool, c) \
+ (((pool)->ptr == (pool)->end && !poolGrow(pool)) \
+ ? 0 \
+ : ((*((pool)->ptr)++ = c), 1))
+
+struct XML_ParserStruct {
+ /* The first member must be userData so that the XML_GetUserData
+ macro works. */
+ void *m_userData;
+ void *m_handlerArg;
+ char *m_buffer;
+ const XML_Memory_Handling_Suite m_mem;
+ /* first character to be parsed */
+ const char *m_bufferPtr;
+ /* past last character to be parsed */
+ char *m_bufferEnd;
+ /* allocated end of buffer */
+ const char *m_bufferLim;
+ XML_Index m_parseEndByteIndex;
+ const char *m_parseEndPtr;
+ XML_Char *m_dataBuf;
+ XML_Char *m_dataBufEnd;
+ XML_StartElementHandler m_startElementHandler;
+ XML_EndElementHandler m_endElementHandler;
+ XML_CharacterDataHandler m_characterDataHandler;
+ XML_ProcessingInstructionHandler m_processingInstructionHandler;
+ XML_CommentHandler m_commentHandler;
+ XML_StartCdataSectionHandler m_startCdataSectionHandler;
+ XML_EndCdataSectionHandler m_endCdataSectionHandler;
+ XML_DefaultHandler m_defaultHandler;
+ XML_StartDoctypeDeclHandler m_startDoctypeDeclHandler;
+ XML_EndDoctypeDeclHandler m_endDoctypeDeclHandler;
+ XML_UnparsedEntityDeclHandler m_unparsedEntityDeclHandler;
+ XML_NotationDeclHandler m_notationDeclHandler;
+ XML_StartNamespaceDeclHandler m_startNamespaceDeclHandler;
+ XML_EndNamespaceDeclHandler m_endNamespaceDeclHandler;
+ XML_NotStandaloneHandler m_notStandaloneHandler;
+ XML_ExternalEntityRefHandler m_externalEntityRefHandler;
+ XML_Parser m_externalEntityRefHandlerArg;
+ XML_SkippedEntityHandler m_skippedEntityHandler;
+ XML_UnknownEncodingHandler m_unknownEncodingHandler;
+ XML_ElementDeclHandler m_elementDeclHandler;
+ XML_AttlistDeclHandler m_attlistDeclHandler;
+ XML_EntityDeclHandler m_entityDeclHandler;
+ XML_XmlDeclHandler m_xmlDeclHandler;
+ const ENCODING *m_encoding;
+ INIT_ENCODING m_initEncoding;
+ const ENCODING *m_internalEncoding;
+ const XML_Char *m_protocolEncodingName;
+ XML_Bool m_ns;
+ XML_Bool m_ns_triplets;
+ void *m_unknownEncodingMem;
+ void *m_unknownEncodingData;
+ void *m_unknownEncodingHandlerData;
+ void (XMLCALL *m_unknownEncodingRelease)(void *);
+ PROLOG_STATE m_prologState;
+ Processor *m_processor;
+ enum XML_Error m_errorCode;
+ const char *m_eventPtr;
+ const char *m_eventEndPtr;
+ const char *m_positionPtr;
+ OPEN_INTERNAL_ENTITY *m_openInternalEntities;
+ OPEN_INTERNAL_ENTITY *m_freeInternalEntities;
+ XML_Bool m_defaultExpandInternalEntities;
+ int m_tagLevel;
+ ENTITY *m_declEntity;
+ const XML_Char *m_doctypeName;
+ const XML_Char *m_doctypeSysid;
+ const XML_Char *m_doctypePubid;
+ const XML_Char *m_declAttributeType;
+ const XML_Char *m_declNotationName;
+ const XML_Char *m_declNotationPublicId;
+ ELEMENT_TYPE *m_declElementType;
+ ATTRIBUTE_ID *m_declAttributeId;
+ XML_Bool m_declAttributeIsCdata;
+ XML_Bool m_declAttributeIsId;
+ DTD *m_dtd;
+ const XML_Char *m_curBase;
+ TAG *m_tagStack;
+ TAG *m_freeTagList;
+ BINDING *m_inheritedBindings;
+ BINDING *m_freeBindingList;
+ int m_attsSize;
+ int m_nSpecifiedAtts;
+ int m_idAttIndex;
+ ATTRIBUTE *m_atts;
+ NS_ATT *m_nsAtts;
+ unsigned long m_nsAttsVersion;
+ unsigned char m_nsAttsPower;
+ POSITION m_position;
+ STRING_POOL m_tempPool;
+ STRING_POOL m_temp2Pool;
+ char *m_groupConnector;
+ unsigned int m_groupSize;
+ XML_Char m_namespaceSeparator;
+ XML_Parser m_parentParser;
+ XML_ParsingStatus m_parsingStatus;
+#ifdef XML_DTD
+ XML_Bool m_isParamEntity;
+ XML_Bool m_useForeignDTD;
+ enum XML_ParamEntityParsing m_paramEntityParsing;
+#endif
+};
+
+#define MALLOC(s) (parser->m_mem.malloc_fcn((s)))
+#define REALLOC(p,s) (parser->m_mem.realloc_fcn((p),(s)))
+#define FREE(p) (parser->m_mem.free_fcn((p)))
+
+#define userData (parser->m_userData)
+#define handlerArg (parser->m_handlerArg)
+#define startElementHandler (parser->m_startElementHandler)
+#define endElementHandler (parser->m_endElementHandler)
+#define characterDataHandler (parser->m_characterDataHandler)
+#define processingInstructionHandler \
+ (parser->m_processingInstructionHandler)
+#define commentHandler (parser->m_commentHandler)
+#define startCdataSectionHandler \
+ (parser->m_startCdataSectionHandler)
+#define endCdataSectionHandler (parser->m_endCdataSectionHandler)
+#define defaultHandler (parser->m_defaultHandler)
+#define startDoctypeDeclHandler (parser->m_startDoctypeDeclHandler)
+#define endDoctypeDeclHandler (parser->m_endDoctypeDeclHandler)
+#define unparsedEntityDeclHandler \
+ (parser->m_unparsedEntityDeclHandler)
+#define notationDeclHandler (parser->m_notationDeclHandler)
+#define startNamespaceDeclHandler \
+ (parser->m_startNamespaceDeclHandler)
+#define endNamespaceDeclHandler (parser->m_endNamespaceDeclHandler)
+#define notStandaloneHandler (parser->m_notStandaloneHandler)
+#define externalEntityRefHandler \
+ (parser->m_externalEntityRefHandler)
+#define externalEntityRefHandlerArg \
+ (parser->m_externalEntityRefHandlerArg)
+#define internalEntityRefHandler \
+ (parser->m_internalEntityRefHandler)
+#define skippedEntityHandler (parser->m_skippedEntityHandler)
+#define unknownEncodingHandler (parser->m_unknownEncodingHandler)
+#define elementDeclHandler (parser->m_elementDeclHandler)
+#define attlistDeclHandler (parser->m_attlistDeclHandler)
+#define entityDeclHandler (parser->m_entityDeclHandler)
+#define xmlDeclHandler (parser->m_xmlDeclHandler)
+#define encoding (parser->m_encoding)
+#define initEncoding (parser->m_initEncoding)
+#define internalEncoding (parser->m_internalEncoding)
+#define unknownEncodingMem (parser->m_unknownEncodingMem)
+#define unknownEncodingData (parser->m_unknownEncodingData)
+#define unknownEncodingHandlerData \
+ (parser->m_unknownEncodingHandlerData)
+#define unknownEncodingRelease (parser->m_unknownEncodingRelease)
+#define protocolEncodingName (parser->m_protocolEncodingName)
+#define ns (parser->m_ns)
+#define ns_triplets (parser->m_ns_triplets)
+#define prologState (parser->m_prologState)
+#define processor (parser->m_processor)
+#define errorCode (parser->m_errorCode)
+#define eventPtr (parser->m_eventPtr)
+#define eventEndPtr (parser->m_eventEndPtr)
+#define positionPtr (parser->m_positionPtr)
+#define position (parser->m_position)
+#define openInternalEntities (parser->m_openInternalEntities)
+#define freeInternalEntities (parser->m_freeInternalEntities)
+#define defaultExpandInternalEntities \
+ (parser->m_defaultExpandInternalEntities)
+#define tagLevel (parser->m_tagLevel)
+#define buffer (parser->m_buffer)
+#define bufferPtr (parser->m_bufferPtr)
+#define bufferEnd (parser->m_bufferEnd)
+#define parseEndByteIndex (parser->m_parseEndByteIndex)
+#define parseEndPtr (parser->m_parseEndPtr)
+#define bufferLim (parser->m_bufferLim)
+#define dataBuf (parser->m_dataBuf)
+#define dataBufEnd (parser->m_dataBufEnd)
+#define _dtd (parser->m_dtd)
+#define curBase (parser->m_curBase)
+#define declEntity (parser->m_declEntity)
+#define doctypeName (parser->m_doctypeName)
+#define doctypeSysid (parser->m_doctypeSysid)
+#define doctypePubid (parser->m_doctypePubid)
+#define declAttributeType (parser->m_declAttributeType)
+#define declNotationName (parser->m_declNotationName)
+#define declNotationPublicId (parser->m_declNotationPublicId)
+#define declElementType (parser->m_declElementType)
+#define declAttributeId (parser->m_declAttributeId)
+#define declAttributeIsCdata (parser->m_declAttributeIsCdata)
+#define declAttributeIsId (parser->m_declAttributeIsId)
+#define freeTagList (parser->m_freeTagList)
+#define freeBindingList (parser->m_freeBindingList)
+#define inheritedBindings (parser->m_inheritedBindings)
+#define tagStack (parser->m_tagStack)
+#define atts (parser->m_atts)
+#define attsSize (parser->m_attsSize)
+#define nSpecifiedAtts (parser->m_nSpecifiedAtts)
+#define idAttIndex (parser->m_idAttIndex)
+#define nsAtts (parser->m_nsAtts)
+#define nsAttsVersion (parser->m_nsAttsVersion)
+#define nsAttsPower (parser->m_nsAttsPower)
+#define tempPool (parser->m_tempPool)
+#define temp2Pool (parser->m_temp2Pool)
+#define groupConnector (parser->m_groupConnector)
+#define groupSize (parser->m_groupSize)
+#define namespaceSeparator (parser->m_namespaceSeparator)
+#define parentParser (parser->m_parentParser)
+#define ps_parsing (parser->m_parsingStatus.parsing)
+#define ps_finalBuffer (parser->m_parsingStatus.finalBuffer)
+#ifdef XML_DTD
+#define isParamEntity (parser->m_isParamEntity)
+#define useForeignDTD (parser->m_useForeignDTD)
+#define paramEntityParsing (parser->m_paramEntityParsing)
+#endif /* XML_DTD */
+
+XML_Parser XMLCALL
+XML_ParserCreate(const XML_Char *encodingName)
+{
+ return XML_ParserCreate_MM(encodingName, NULL, NULL);
+}
+
+XML_Parser XMLCALL
+XML_ParserCreateNS(const XML_Char *encodingName, XML_Char nsSep)
+{
+ XML_Char tmp[2];
+ *tmp = nsSep;
+ return XML_ParserCreate_MM(encodingName, NULL, tmp);
+}
+
+static const XML_Char implicitContext[] = {
+ 'x', 'm', 'l', '=', 'h', 't', 't', 'p', ':', '/', '/',
+ 'w', 'w', 'w', '.', 'w', '3', '.', 'o', 'r', 'g', '/',
+ 'X', 'M', 'L', '/', '1', '9', '9', '8', '/',
+ 'n', 'a', 'm', 'e', 's', 'p', 'a', 'c', 'e', '\0'
+};
+
+XML_Parser XMLCALL
+XML_ParserCreate_MM(const XML_Char *encodingName,
+ const XML_Memory_Handling_Suite *memsuite,
+ const XML_Char *nameSep)
+{
+ XML_Parser parser = parserCreate(encodingName, memsuite, nameSep, NULL);
+ if (parser != NULL && ns) {
+ /* implicit context only set for root parser, since child
+ parsers (i.e. external entity parsers) will inherit it
+ */
+ if (!setContext(parser, implicitContext)) {
+ XML_ParserFree(parser);
+ return NULL;
+ }
+ }
+ return parser;
+}
+
+static XML_Parser
+parserCreate(const XML_Char *encodingName,
+ const XML_Memory_Handling_Suite *memsuite,
+ const XML_Char *nameSep,
+ DTD *dtd)
+{
+ XML_Parser parser;
+
+ if (memsuite) {
+ XML_Memory_Handling_Suite *mtemp;
+ parser = (XML_Parser)
+ memsuite->malloc_fcn(sizeof(struct XML_ParserStruct));
+ if (parser != NULL) {
+ mtemp = (XML_Memory_Handling_Suite *)&(parser->m_mem);
+ mtemp->malloc_fcn = memsuite->malloc_fcn;
+ mtemp->realloc_fcn = memsuite->realloc_fcn;
+ mtemp->free_fcn = memsuite->free_fcn;
+ }
+ }
+ else {
+ XML_Memory_Handling_Suite *mtemp;
+ parser = (XML_Parser)malloc(sizeof(struct XML_ParserStruct));
+ if (parser != NULL) {
+ mtemp = (XML_Memory_Handling_Suite *)&(parser->m_mem);
+ mtemp->malloc_fcn = malloc;
+ mtemp->realloc_fcn = realloc;
+ mtemp->free_fcn = free;
+ }
+ }
+
+ if (!parser)
+ return parser;
+
+ buffer = NULL;
+ bufferLim = NULL;
+
+ attsSize = INIT_ATTS_SIZE;
+ atts = (ATTRIBUTE *)MALLOC(attsSize * sizeof(ATTRIBUTE));
+ if (atts == NULL) {
+ FREE(parser);
+ return NULL;
+ }
+ dataBuf = (XML_Char *)MALLOC(INIT_DATA_BUF_SIZE * sizeof(XML_Char));
+ if (dataBuf == NULL) {
+ FREE(atts);
+ FREE(parser);
+ return NULL;
+ }
+ dataBufEnd = dataBuf + INIT_DATA_BUF_SIZE;
+
+ if (dtd)
+ _dtd = dtd;
+ else {
+ _dtd = dtdCreate(&parser->m_mem);
+ if (_dtd == NULL) {
+ FREE(dataBuf);
+ FREE(atts);
+ FREE(parser);
+ return NULL;
+ }
+ }
+
+ freeBindingList = NULL;
+ freeTagList = NULL;
+ freeInternalEntities = NULL;
+
+ groupSize = 0;
+ groupConnector = NULL;
+
+ unknownEncodingHandler = NULL;
+ unknownEncodingHandlerData = NULL;
+
+ namespaceSeparator = '!';
+ ns = XML_FALSE;
+ ns_triplets = XML_FALSE;
+
+ nsAtts = NULL;
+ nsAttsVersion = 0;
+ nsAttsPower = 0;
+
+ poolInit(&tempPool, &(parser->m_mem));
+ poolInit(&temp2Pool, &(parser->m_mem));
+ parserInit(parser, encodingName);
+
+ if (encodingName && !protocolEncodingName) {
+ XML_ParserFree(parser);
+ return NULL;
+ }
+
+ if (nameSep) {
+ ns = XML_TRUE;
+ internalEncoding = XmlGetInternalEncodingNS();
+ namespaceSeparator = *nameSep;
+ }
+ else {
+ internalEncoding = XmlGetInternalEncoding();
+ }
+
+ return parser;
+}
+
+static void
+parserInit(XML_Parser parser, const XML_Char *encodingName)
+{
+ processor = prologInitProcessor;
+ XmlPrologStateInit(&prologState);
+ protocolEncodingName = (encodingName != NULL
+ ? poolCopyString(&tempPool, encodingName)
+ : NULL);
+ curBase = NULL;
+ XmlInitEncoding(&initEncoding, &encoding, 0);
+ userData = NULL;
+ handlerArg = NULL;
+ startElementHandler = NULL;
+ endElementHandler = NULL;
+ characterDataHandler = NULL;
+ processingInstructionHandler = NULL;
+ commentHandler = NULL;
+ startCdataSectionHandler = NULL;
+ endCdataSectionHandler = NULL;
+ defaultHandler = NULL;
+ startDoctypeDeclHandler = NULL;
+ endDoctypeDeclHandler = NULL;
+ unparsedEntityDeclHandler = NULL;
+ notationDeclHandler = NULL;
+ startNamespaceDeclHandler = NULL;
+ endNamespaceDeclHandler = NULL;
+ notStandaloneHandler = NULL;
+ externalEntityRefHandler = NULL;
+ externalEntityRefHandlerArg = parser;
+ skippedEntityHandler = NULL;
+ elementDeclHandler = NULL;
+ attlistDeclHandler = NULL;
+ entityDeclHandler = NULL;
+ xmlDeclHandler = NULL;
+ bufferPtr = buffer;
+ bufferEnd = buffer;
+ parseEndByteIndex = 0;
+ parseEndPtr = NULL;
+ declElementType = NULL;
+ declAttributeId = NULL;
+ declEntity = NULL;
+ doctypeName = NULL;
+ doctypeSysid = NULL;
+ doctypePubid = NULL;
+ declAttributeType = NULL;
+ declNotationName = NULL;
+ declNotationPublicId = NULL;
+ declAttributeIsCdata = XML_FALSE;
+ declAttributeIsId = XML_FALSE;
+ memset(&position, 0, sizeof(POSITION));
+ errorCode = XML_ERROR_NONE;
+ eventPtr = NULL;
+ eventEndPtr = NULL;
+ positionPtr = NULL;
+ openInternalEntities = NULL;
+ defaultExpandInternalEntities = XML_TRUE;
+ tagLevel = 0;
+ tagStack = NULL;
+ inheritedBindings = NULL;
+ nSpecifiedAtts = 0;
+ unknownEncodingMem = NULL;
+ unknownEncodingRelease = NULL;
+ unknownEncodingData = NULL;
+ parentParser = NULL;
+ ps_parsing = XML_INITIALIZED;
+#ifdef XML_DTD
+ isParamEntity = XML_FALSE;
+ useForeignDTD = XML_FALSE;
+ paramEntityParsing = XML_PARAM_ENTITY_PARSING_NEVER;
+#endif
+}
+
+/* moves list of bindings to freeBindingList */
+static void FASTCALL
+moveToFreeBindingList(XML_Parser parser, BINDING *bindings)
+{
+ while (bindings) {
+ BINDING *b = bindings;
+ bindings = bindings->nextTagBinding;
+ b->nextTagBinding = freeBindingList;
+ freeBindingList = b;
+ }
+}
+
+XML_Bool XMLCALL
+XML_ParserReset(XML_Parser parser, const XML_Char *encodingName)
+{
+ TAG *tStk;
+ OPEN_INTERNAL_ENTITY *openEntityList;
+ if (parentParser)
+ return XML_FALSE;
+ /* move tagStack to freeTagList */
+ tStk = tagStack;
+ while (tStk) {
+ TAG *tag = tStk;
+ tStk = tStk->parent;
+ tag->parent = freeTagList;
+ moveToFreeBindingList(parser, tag->bindings);
+ tag->bindings = NULL;
+ freeTagList = tag;
+ }
+ /* move openInternalEntities to freeInternalEntities */
+ openEntityList = openInternalEntities;
+ while (openEntityList) {
+ OPEN_INTERNAL_ENTITY *openEntity = openEntityList;
+ openEntityList = openEntity->next;
+ openEntity->next = freeInternalEntities;
+ freeInternalEntities = openEntity;
+ }
+ moveToFreeBindingList(parser, inheritedBindings);
+ FREE(unknownEncodingMem);
+ if (unknownEncodingRelease)
+ unknownEncodingRelease(unknownEncodingData);
+ poolClear(&tempPool);
+ poolClear(&temp2Pool);
+ parserInit(parser, encodingName);
+ dtdReset(_dtd, &parser->m_mem);
+ return setContext(parser, implicitContext);
+}
+
+enum XML_Status XMLCALL
+XML_SetEncoding(XML_Parser parser, const XML_Char *encodingName)
+{
+ /* Block after XML_Parse()/XML_ParseBuffer() has been called.
+ XXX There's no way for the caller to determine which of the
+ XXX possible error cases caused the XML_STATUS_ERROR return.
+ */
+ if (ps_parsing == XML_PARSING || ps_parsing == XML_SUSPENDED)
+ return XML_STATUS_ERROR;
+ if (encodingName == NULL)
+ protocolEncodingName = NULL;
+ else {
+ protocolEncodingName = poolCopyString(&tempPool, encodingName);
+ if (!protocolEncodingName)
+ return XML_STATUS_ERROR;
+ }
+ return XML_STATUS_OK;
+}
+
+XML_Parser XMLCALL
+XML_ExternalEntityParserCreate(XML_Parser oldParser,
+ const XML_Char *context,
+ const XML_Char *encodingName)
+{
+ XML_Parser parser = oldParser;
+ DTD *newDtd = NULL;
+ DTD *oldDtd = _dtd;
+ XML_StartElementHandler oldStartElementHandler = startElementHandler;
+ XML_EndElementHandler oldEndElementHandler = endElementHandler;
+ XML_CharacterDataHandler oldCharacterDataHandler = characterDataHandler;
+ XML_ProcessingInstructionHandler oldProcessingInstructionHandler
+ = processingInstructionHandler;
+ XML_CommentHandler oldCommentHandler = commentHandler;
+ XML_StartCdataSectionHandler oldStartCdataSectionHandler
+ = startCdataSectionHandler;
+ XML_EndCdataSectionHandler oldEndCdataSectionHandler
+ = endCdataSectionHandler;
+ XML_DefaultHandler oldDefaultHandler = defaultHandler;
+ XML_UnparsedEntityDeclHandler oldUnparsedEntityDeclHandler
+ = unparsedEntityDeclHandler;
+ XML_NotationDeclHandler oldNotationDeclHandler = notationDeclHandler;
+ XML_StartNamespaceDeclHandler oldStartNamespaceDeclHandler
+ = startNamespaceDeclHandler;
+ XML_EndNamespaceDeclHandler oldEndNamespaceDeclHandler
+ = endNamespaceDeclHandler;
+ XML_NotStandaloneHandler oldNotStandaloneHandler = notStandaloneHandler;
+ XML_ExternalEntityRefHandler oldExternalEntityRefHandler
+ = externalEntityRefHandler;
+ XML_SkippedEntityHandler oldSkippedEntityHandler = skippedEntityHandler;
+ XML_UnknownEncodingHandler oldUnknownEncodingHandler
+ = unknownEncodingHandler;
+ XML_ElementDeclHandler oldElementDeclHandler = elementDeclHandler;
+ XML_AttlistDeclHandler oldAttlistDeclHandler = attlistDeclHandler;
+ XML_EntityDeclHandler oldEntityDeclHandler = entityDeclHandler;
+ XML_XmlDeclHandler oldXmlDeclHandler = xmlDeclHandler;
+ ELEMENT_TYPE * oldDeclElementType = declElementType;
+
+ void *oldUserData = userData;
+ void *oldHandlerArg = handlerArg;
+ XML_Bool oldDefaultExpandInternalEntities = defaultExpandInternalEntities;
+ XML_Parser oldExternalEntityRefHandlerArg = externalEntityRefHandlerArg;
+#ifdef XML_DTD
+ enum XML_ParamEntityParsing oldParamEntityParsing = paramEntityParsing;
+ int oldInEntityValue = prologState.inEntityValue;
+#endif
+ XML_Bool oldns_triplets = ns_triplets;
+
+#ifdef XML_DTD
+ if (!context)
+ newDtd = oldDtd;
+#endif /* XML_DTD */
+
+ /* Note that the magical uses of the pre-processor to make field
+ access look more like C++ require that `parser' be overwritten
+ here. This makes this function more painful to follow than it
+ would be otherwise.
+ */
+ if (ns) {
+ XML_Char tmp[2];
+ *tmp = namespaceSeparator;
+ parser = parserCreate(encodingName, &parser->m_mem, tmp, newDtd);
+ }
+ else {
+ parser = parserCreate(encodingName, &parser->m_mem, NULL, newDtd);
+ }
+
+ if (!parser)
+ return NULL;
+
+ startElementHandler = oldStartElementHandler;
+ endElementHandler = oldEndElementHandler;
+ characterDataHandler = oldCharacterDataHandler;
+ processingInstructionHandler = oldProcessingInstructionHandler;
+ commentHandler = oldCommentHandler;
+ startCdataSectionHandler = oldStartCdataSectionHandler;
+ endCdataSectionHandler = oldEndCdataSectionHandler;
+ defaultHandler = oldDefaultHandler;
+ unparsedEntityDeclHandler = oldUnparsedEntityDeclHandler;
+ notationDeclHandler = oldNotationDeclHandler;
+ startNamespaceDeclHandler = oldStartNamespaceDeclHandler;
+ endNamespaceDeclHandler = oldEndNamespaceDeclHandler;
+ notStandaloneHandler = oldNotStandaloneHandler;
+ externalEntityRefHandler = oldExternalEntityRefHandler;
+ skippedEntityHandler = oldSkippedEntityHandler;
+ unknownEncodingHandler = oldUnknownEncodingHandler;
+ elementDeclHandler = oldElementDeclHandler;
+ attlistDeclHandler = oldAttlistDeclHandler;
+ entityDeclHandler = oldEntityDeclHandler;
+ xmlDeclHandler = oldXmlDeclHandler;
+ declElementType = oldDeclElementType;
+ userData = oldUserData;
+ if (oldUserData == oldHandlerArg)
+ handlerArg = userData;
+ else
+ handlerArg = parser;
+ if (oldExternalEntityRefHandlerArg != oldParser)
+ externalEntityRefHandlerArg = oldExternalEntityRefHandlerArg;
+ defaultExpandInternalEntities = oldDefaultExpandInternalEntities;
+ ns_triplets = oldns_triplets;
+ parentParser = oldParser;
+#ifdef XML_DTD
+ paramEntityParsing = oldParamEntityParsing;
+ prologState.inEntityValue = oldInEntityValue;
+ if (context) {
+#endif /* XML_DTD */
+ if (!dtdCopy(_dtd, oldDtd, &parser->m_mem)
+ || !setContext(parser, context)) {
+ XML_ParserFree(parser);
+ return NULL;
+ }
+ processor = externalEntityInitProcessor;
+#ifdef XML_DTD
+ }
+ else {
+ /* The DTD instance referenced by _dtd is shared between the document's
+ root parser and external PE parsers, therefore one does not need to
+ call setContext. In addition, one also *must* not call setContext,
+ because this would overwrite existing prefix->binding pointers in
+ _dtd with ones that get destroyed with the external PE parser.
+ This would leave those prefixes with dangling pointers.
+ */
+ isParamEntity = XML_TRUE;
+ XmlPrologStateInitExternalEntity(&prologState);
+ processor = externalParEntInitProcessor;
+ }
+#endif /* XML_DTD */
+ return parser;
+}
+
+static void FASTCALL
+destroyBindings(BINDING *bindings, XML_Parser parser)
+{
+ for (;;) {
+ BINDING *b = bindings;
+ if (!b)
+ break;
+ bindings = b->nextTagBinding;
+ FREE(b->uri);
+ FREE(b);
+ }
+}
+
+void XMLCALL
+XML_ParserFree(XML_Parser parser)
+{
+ TAG *tagList;
+ OPEN_INTERNAL_ENTITY *entityList;
+ if (parser == NULL)
+ return;
+ /* free tagStack and freeTagList */
+ tagList = tagStack;
+ for (;;) {
+ TAG *p;
+ if (tagList == NULL) {
+ if (freeTagList == NULL)
+ break;
+ tagList = freeTagList;
+ freeTagList = NULL;
+ }
+ p = tagList;
+ tagList = tagList->parent;
+ FREE(p->buf);
+ destroyBindings(p->bindings, parser);
+ FREE(p);
+ }
+ /* free openInternalEntities and freeInternalEntities */
+ entityList = openInternalEntities;
+ for (;;) {
+ OPEN_INTERNAL_ENTITY *openEntity;
+ if (entityList == NULL) {
+ if (freeInternalEntities == NULL)
+ break;
+ entityList = freeInternalEntities;
+ freeInternalEntities = NULL;
+ }
+ openEntity = entityList;
+ entityList = entityList->next;
+ FREE(openEntity);
+ }
+
+ destroyBindings(freeBindingList, parser);
+ destroyBindings(inheritedBindings, parser);
+ poolDestroy(&tempPool);
+ poolDestroy(&temp2Pool);
+#ifdef XML_DTD
+ /* external parameter entity parsers share the DTD structure
+ parser->m_dtd with the root parser, so we must not destroy it
+ */
+ if (!isParamEntity && _dtd)
+#else
+ if (_dtd)
+#endif /* XML_DTD */
+ dtdDestroy(_dtd, (XML_Bool)!parentParser, &parser->m_mem);
+ FREE((void *)atts);
+ FREE(groupConnector);
+ FREE(buffer);
+ FREE(dataBuf);
+ FREE(nsAtts);
+ FREE(unknownEncodingMem);
+ if (unknownEncodingRelease)
+ unknownEncodingRelease(unknownEncodingData);
+ FREE(parser);
+}
+
+void XMLCALL
+XML_UseParserAsHandlerArg(XML_Parser parser)
+{
+ handlerArg = parser;
+}
+
+enum XML_Error XMLCALL
+XML_UseForeignDTD(XML_Parser parser, XML_Bool useDTD)
+{
+#ifdef XML_DTD
+ /* block after XML_Parse()/XML_ParseBuffer() has been called */
+ if (ps_parsing == XML_PARSING || ps_parsing == XML_SUSPENDED)
+ return XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING;
+ useForeignDTD = useDTD;
+ return XML_ERROR_NONE;
+#else
+ return XML_ERROR_FEATURE_REQUIRES_XML_DTD;
+#endif
+}
+
+void XMLCALL
+XML_SetReturnNSTriplet(XML_Parser parser, int do_nst)
+{
+ /* block after XML_Parse()/XML_ParseBuffer() has been called */
+ if (ps_parsing == XML_PARSING || ps_parsing == XML_SUSPENDED)
+ return;
+ ns_triplets = do_nst ? XML_TRUE : XML_FALSE;
+}
+
+void XMLCALL
+XML_SetUserData(XML_Parser parser, void *p)
+{
+ if (handlerArg == userData)
+ handlerArg = userData = p;
+ else
+ userData = p;
+}
+
+enum XML_Status XMLCALL
+XML_SetBase(XML_Parser parser, const XML_Char *p)
+{
+ if (p) {
+ p = poolCopyString(&_dtd->pool, p);
+ if (!p)
+ return XML_STATUS_ERROR;
+ curBase = p;
+ }
+ else
+ curBase = NULL;
+ return XML_STATUS_OK;
+}
+
+const XML_Char * XMLCALL
+XML_GetBase(XML_Parser parser)
+{
+ return curBase;
+}
+
+int XMLCALL
+XML_GetSpecifiedAttributeCount(XML_Parser parser)
+{
+ return nSpecifiedAtts;
+}
+
+int XMLCALL
+XML_GetIdAttributeIndex(XML_Parser parser)
+{
+ return idAttIndex;
+}
+
+void XMLCALL
+XML_SetElementHandler(XML_Parser parser,
+ XML_StartElementHandler start,
+ XML_EndElementHandler end)
+{
+ startElementHandler = start;
+ endElementHandler = end;
+}
+
+void XMLCALL
+XML_SetStartElementHandler(XML_Parser parser,
+ XML_StartElementHandler start) {
+ startElementHandler = start;
+}
+
+void XMLCALL
+XML_SetEndElementHandler(XML_Parser parser,
+ XML_EndElementHandler end) {
+ endElementHandler = end;
+}
+
+void XMLCALL
+XML_SetCharacterDataHandler(XML_Parser parser,
+ XML_CharacterDataHandler handler)
+{
+ characterDataHandler = handler;
+}
+
+void XMLCALL
+XML_SetProcessingInstructionHandler(XML_Parser parser,
+ XML_ProcessingInstructionHandler handler)
+{
+ processingInstructionHandler = handler;
+}
+
+void XMLCALL
+XML_SetCommentHandler(XML_Parser parser,
+ XML_CommentHandler handler)
+{
+ commentHandler = handler;
+}
+
+void XMLCALL
+XML_SetCdataSectionHandler(XML_Parser parser,
+ XML_StartCdataSectionHandler start,
+ XML_EndCdataSectionHandler end)
+{
+ startCdataSectionHandler = start;
+ endCdataSectionHandler = end;
+}
+
+void XMLCALL
+XML_SetStartCdataSectionHandler(XML_Parser parser,
+ XML_StartCdataSectionHandler start) {
+ startCdataSectionHandler = start;
+}
+
+void XMLCALL
+XML_SetEndCdataSectionHandler(XML_Parser parser,
+ XML_EndCdataSectionHandler end) {
+ endCdataSectionHandler = end;
+}
+
+void XMLCALL
+XML_SetDefaultHandler(XML_Parser parser,
+ XML_DefaultHandler handler)
+{
+ defaultHandler = handler;
+ defaultExpandInternalEntities = XML_FALSE;
+}
+
+void XMLCALL
+XML_SetDefaultHandlerExpand(XML_Parser parser,
+ XML_DefaultHandler handler)
+{
+ defaultHandler = handler;
+ defaultExpandInternalEntities = XML_TRUE;
+}
+
+void XMLCALL
+XML_SetDoctypeDeclHandler(XML_Parser parser,
+ XML_StartDoctypeDeclHandler start,
+ XML_EndDoctypeDeclHandler end)
+{
+ startDoctypeDeclHandler = start;
+ endDoctypeDeclHandler = end;
+}
+
+void XMLCALL
+XML_SetStartDoctypeDeclHandler(XML_Parser parser,
+ XML_StartDoctypeDeclHandler start) {
+ startDoctypeDeclHandler = start;
+}
+
+void XMLCALL
+XML_SetEndDoctypeDeclHandler(XML_Parser parser,
+ XML_EndDoctypeDeclHandler end) {
+ endDoctypeDeclHandler = end;
+}
+
+void XMLCALL
+XML_SetUnparsedEntityDeclHandler(XML_Parser parser,
+ XML_UnparsedEntityDeclHandler handler)
+{
+ unparsedEntityDeclHandler = handler;
+}
+
+void XMLCALL
+XML_SetNotationDeclHandler(XML_Parser parser,
+ XML_NotationDeclHandler handler)
+{
+ notationDeclHandler = handler;
+}
+
+void XMLCALL
+XML_SetNamespaceDeclHandler(XML_Parser parser,
+ XML_StartNamespaceDeclHandler start,
+ XML_EndNamespaceDeclHandler end)
+{
+ startNamespaceDeclHandler = start;
+ endNamespaceDeclHandler = end;
+}
+
+void XMLCALL
+XML_SetStartNamespaceDeclHandler(XML_Parser parser,
+ XML_StartNamespaceDeclHandler start) {
+ startNamespaceDeclHandler = start;
+}
+
+void XMLCALL
+XML_SetEndNamespaceDeclHandler(XML_Parser parser,
+ XML_EndNamespaceDeclHandler end) {
+ endNamespaceDeclHandler = end;
+}
+
+void XMLCALL
+XML_SetNotStandaloneHandler(XML_Parser parser,
+ XML_NotStandaloneHandler handler)
+{
+ notStandaloneHandler = handler;
+}
+
+void XMLCALL
+XML_SetExternalEntityRefHandler(XML_Parser parser,
+ XML_ExternalEntityRefHandler handler)
+{
+ externalEntityRefHandler = handler;
+}
+
+void XMLCALL
+XML_SetExternalEntityRefHandlerArg(XML_Parser parser, void *arg)
+{
+ if (arg)
+ externalEntityRefHandlerArg = (XML_Parser)arg;
+ else
+ externalEntityRefHandlerArg = parser;
+}
+
+void XMLCALL
+XML_SetSkippedEntityHandler(XML_Parser parser,
+ XML_SkippedEntityHandler handler)
+{
+ skippedEntityHandler = handler;
+}
+
+void XMLCALL
+XML_SetUnknownEncodingHandler(XML_Parser parser,
+ XML_UnknownEncodingHandler handler,
+ void *data)
+{
+ unknownEncodingHandler = handler;
+ unknownEncodingHandlerData = data;
+}
+
+void XMLCALL
+XML_SetElementDeclHandler(XML_Parser parser,
+ XML_ElementDeclHandler eldecl)
+{
+ elementDeclHandler = eldecl;
+}
+
+void XMLCALL
+XML_SetAttlistDeclHandler(XML_Parser parser,
+ XML_AttlistDeclHandler attdecl)
+{
+ attlistDeclHandler = attdecl;
+}
+
+void XMLCALL
+XML_SetEntityDeclHandler(XML_Parser parser,
+ XML_EntityDeclHandler handler)
+{
+ entityDeclHandler = handler;
+}
+
+void XMLCALL
+XML_SetXmlDeclHandler(XML_Parser parser,
+ XML_XmlDeclHandler handler) {
+ xmlDeclHandler = handler;
+}
+
+int XMLCALL
+XML_SetParamEntityParsing(XML_Parser parser,
+ enum XML_ParamEntityParsing peParsing)
+{
+ /* block after XML_Parse()/XML_ParseBuffer() has been called */
+ if (ps_parsing == XML_PARSING || ps_parsing == XML_SUSPENDED)
+ return 0;
+#ifdef XML_DTD
+ paramEntityParsing = peParsing;
+ return 1;
+#else
+ return peParsing == XML_PARAM_ENTITY_PARSING_NEVER;
+#endif
+}
+
+enum XML_Status XMLCALL
+XML_Parse(XML_Parser parser, const char *s, int len, int isFinal)
+{
+ switch (ps_parsing) {
+ case XML_SUSPENDED:
+ errorCode = XML_ERROR_SUSPENDED;
+ return XML_STATUS_ERROR;
+ case XML_FINISHED:
+ errorCode = XML_ERROR_FINISHED;
+ return XML_STATUS_ERROR;
+ default:
+ ps_parsing = XML_PARSING;
+ }
+
+ if (len == 0) {
+ ps_finalBuffer = (XML_Bool)isFinal;
+ if (!isFinal)
+ return XML_STATUS_OK;
+ positionPtr = bufferPtr;
+ parseEndPtr = bufferEnd;
+
+ /* If data are left over from last buffer, and we now know that these
+ data are the final chunk of input, then we have to check them again
+ to detect errors based on that fact.
+ */
+ errorCode = processor(parser, bufferPtr, parseEndPtr, &bufferPtr);
+
+ if (errorCode == XML_ERROR_NONE) {
+ switch (ps_parsing) {
+ case XML_SUSPENDED:
+ XmlUpdatePosition(encoding, positionPtr, bufferPtr, &position);
+ positionPtr = bufferPtr;
+ return XML_STATUS_SUSPENDED;
+ case XML_INITIALIZED:
+ case XML_PARSING:
+ ps_parsing = XML_FINISHED;
+ /* fall through */
+ default:
+ return XML_STATUS_OK;
+ }
+ }
+ eventEndPtr = eventPtr;
+ processor = errorProcessor;
+ return XML_STATUS_ERROR;
+ }
+#ifndef XML_CONTEXT_BYTES
+ else if (bufferPtr == bufferEnd) {
+ const char *end;
+ int nLeftOver;
+ enum XML_Error result;
+ parseEndByteIndex += len;
+ positionPtr = s;
+ ps_finalBuffer = (XML_Bool)isFinal;
+
+ errorCode = processor(parser, s, parseEndPtr = s + len, &end);
+
+ if (errorCode != XML_ERROR_NONE) {
+ eventEndPtr = eventPtr;
+ processor = errorProcessor;
+ return XML_STATUS_ERROR;
+ }
+ else {
+ switch (ps_parsing) {
+ case XML_SUSPENDED:
+ result = (XML_Error)XML_STATUS_SUSPENDED;
+ break;
+ case XML_INITIALIZED:
+ case XML_PARSING:
+ result = (XML_Error)XML_STATUS_OK;
+ if (isFinal) {
+ ps_parsing = XML_FINISHED;
+ return (XML_Status)result;
+ }
+ }
+ }
+
+ XmlUpdatePosition(encoding, positionPtr, end, &position);
+ nLeftOver = s + len - end;
+ if (nLeftOver) {
+ if (buffer == NULL || nLeftOver > bufferLim - buffer) {
+ /* FIXME avoid integer overflow */
+ char *temp;
+ temp = (buffer == NULL
+ ? (char *)MALLOC(len * 2)
+ : (char *)REALLOC(buffer, len * 2));
+ if (temp == NULL) {
+ errorCode = XML_ERROR_NO_MEMORY;
+ return XML_STATUS_ERROR;
+ }
+ buffer = temp;
+ if (!buffer) {
+ errorCode = XML_ERROR_NO_MEMORY;
+ eventPtr = eventEndPtr = NULL;
+ processor = errorProcessor;
+ return XML_STATUS_ERROR;
+ }
+ bufferLim = buffer + len * 2;
+ }
+ memcpy(buffer, end, nLeftOver);
+ }
+ bufferPtr = buffer;
+ bufferEnd = buffer + nLeftOver;
+ positionPtr = bufferPtr;
+ parseEndPtr = bufferEnd;
+ eventPtr = bufferPtr;
+ eventEndPtr = bufferPtr;
+ return (XML_Status)result;
+ }
+#endif /* not defined XML_CONTEXT_BYTES */
+ else {
+ void *buff = XML_GetBuffer(parser, len);
+ if (buff == NULL)
+ return XML_STATUS_ERROR;
+ else {
+ memcpy(buff, s, len);
+ return XML_ParseBuffer(parser, len, isFinal);
+ }
+ }
+}
+
+enum XML_Status XMLCALL
+XML_ParseBuffer(XML_Parser parser, int len, int isFinal)
+{
+ const char *start;
+ enum XML_Status result = XML_STATUS_OK;
+
+ switch (ps_parsing) {
+ case XML_SUSPENDED:
+ errorCode = XML_ERROR_SUSPENDED;
+ return XML_STATUS_ERROR;
+ case XML_FINISHED:
+ errorCode = XML_ERROR_FINISHED;
+ return XML_STATUS_ERROR;
+ default:
+ ps_parsing = XML_PARSING;
+ }
+
+ start = bufferPtr;
+ positionPtr = start;
+ bufferEnd += len;
+ parseEndPtr = bufferEnd;
+ parseEndByteIndex += len;
+ ps_finalBuffer = (XML_Bool)isFinal;
+
+ errorCode = processor(parser, start, parseEndPtr, &bufferPtr);
+
+ if (errorCode != XML_ERROR_NONE) {
+ eventEndPtr = eventPtr;
+ processor = errorProcessor;
+ return XML_STATUS_ERROR;
+ }
+ else {
+ switch (ps_parsing) {
+ case XML_SUSPENDED:
+ result = XML_STATUS_SUSPENDED;
+ break;
+ case XML_INITIALIZED:
+ case XML_PARSING:
+ if (isFinal) {
+ ps_parsing = XML_FINISHED;
+ return result;
+ }
+ default: ; /* should not happen */
+ }
+ }
+
+ XmlUpdatePosition(encoding, positionPtr, bufferPtr, &position);
+ positionPtr = bufferPtr;
+ return result;
+}
+
+void * XMLCALL
+XML_GetBuffer(XML_Parser parser, int len)
+{
+ switch (ps_parsing) {
+ case XML_SUSPENDED:
+ errorCode = XML_ERROR_SUSPENDED;
+ return NULL;
+ case XML_FINISHED:
+ errorCode = XML_ERROR_FINISHED;
+ return NULL;
+ default: ;
+ }
+
+ if (len > bufferLim - bufferEnd) {
+ /* FIXME avoid integer overflow */
+ int neededSize = len + (int)(bufferEnd - bufferPtr);
+#ifdef XML_CONTEXT_BYTES
+ int keep = (int)(bufferPtr - buffer);
+
+ if (keep > XML_CONTEXT_BYTES)
+ keep = XML_CONTEXT_BYTES;
+ neededSize += keep;
+#endif /* defined XML_CONTEXT_BYTES */
+ if (neededSize <= bufferLim - buffer) {
+#ifdef XML_CONTEXT_BYTES
+ if (keep < bufferPtr - buffer) {
+ int offset = (int)(bufferPtr - buffer) - keep;
+ memmove(buffer, &buffer[offset], bufferEnd - bufferPtr + keep);
+ bufferEnd -= offset;
+ bufferPtr -= offset;
+ }
+#else
+ memmove(buffer, bufferPtr, bufferEnd - bufferPtr);
+ bufferEnd = buffer + (bufferEnd - bufferPtr);
+ bufferPtr = buffer;
+#endif /* not defined XML_CONTEXT_BYTES */
+ }
+ else {
+ char *newBuf;
+ int bufferSize = (int)(bufferLim - bufferPtr);
+ if (bufferSize == 0)
+ bufferSize = INIT_BUFFER_SIZE;
+ do {
+ bufferSize *= 2;
+ } while (bufferSize < neededSize);
+ newBuf = (char *)MALLOC(bufferSize);
+ if (newBuf == 0) {
+ errorCode = XML_ERROR_NO_MEMORY;
+ return NULL;
+ }
+ bufferLim = newBuf + bufferSize;
+#ifdef XML_CONTEXT_BYTES
+ if (bufferPtr) {
+ int keep = (int)(bufferPtr - buffer);
+ if (keep > XML_CONTEXT_BYTES)
+ keep = XML_CONTEXT_BYTES;
+ memcpy(newBuf, &bufferPtr[-keep], bufferEnd - bufferPtr + keep);
+ FREE(buffer);
+ buffer = newBuf;
+ bufferEnd = buffer + (bufferEnd - bufferPtr) + keep;
+ bufferPtr = buffer + keep;
+ }
+ else {
+ bufferEnd = newBuf + (bufferEnd - bufferPtr);
+ bufferPtr = buffer = newBuf;
+ }
+#else
+ if (bufferPtr) {
+ memcpy(newBuf, bufferPtr, bufferEnd - bufferPtr);
+ FREE(buffer);
+ }
+ bufferEnd = newBuf + (bufferEnd - bufferPtr);
+ bufferPtr = buffer = newBuf;
+#endif /* not defined XML_CONTEXT_BYTES */
+ }
+ }
+ return bufferEnd;
+}
+
+enum XML_Status XMLCALL
+XML_StopParser(XML_Parser parser, XML_Bool resumable)
+{
+ switch (ps_parsing) {
+ case XML_SUSPENDED:
+ if (resumable) {
+ errorCode = XML_ERROR_SUSPENDED;
+ return XML_STATUS_ERROR;
+ }
+ ps_parsing = XML_FINISHED;
+ break;
+ case XML_FINISHED:
+ errorCode = XML_ERROR_FINISHED;
+ return XML_STATUS_ERROR;
+ default:
+ if (resumable) {
+#ifdef XML_DTD
+ if (isParamEntity) {
+ errorCode = XML_ERROR_SUSPEND_PE;
+ return XML_STATUS_ERROR;
+ }
+#endif
+ ps_parsing = XML_SUSPENDED;
+ }
+ else
+ ps_parsing = XML_FINISHED;
+ }
+ return XML_STATUS_OK;
+}
+
+enum XML_Status XMLCALL
+XML_ResumeParser(XML_Parser parser)
+{
+ enum XML_Status result = XML_STATUS_OK;
+
+ if (ps_parsing != XML_SUSPENDED) {
+ errorCode = XML_ERROR_NOT_SUSPENDED;
+ return XML_STATUS_ERROR;
+ }
+ ps_parsing = XML_PARSING;
+
+ errorCode = processor(parser, bufferPtr, parseEndPtr, &bufferPtr);
+
+ if (errorCode != XML_ERROR_NONE) {
+ eventEndPtr = eventPtr;
+ processor = errorProcessor;
+ return XML_STATUS_ERROR;
+ }
+ else {
+ switch (ps_parsing) {
+ case XML_SUSPENDED:
+ result = XML_STATUS_SUSPENDED;
+ break;
+ case XML_INITIALIZED:
+ case XML_PARSING:
+ if (ps_finalBuffer) {
+ ps_parsing = XML_FINISHED;
+ return result;
+ }
+ default: ;
+ }
+ }
+
+ XmlUpdatePosition(encoding, positionPtr, bufferPtr, &position);
+ positionPtr = bufferPtr;
+ return result;
+}
+
+void XMLCALL
+XML_GetParsingStatus(XML_Parser parser, XML_ParsingStatus *status)
+{
+ assert(status != NULL);
+ *status = parser->m_parsingStatus;
+}
+
+enum XML_Error XMLCALL
+XML_GetErrorCode(XML_Parser parser)
+{
+ return errorCode;
+}
+
+XML_Index XMLCALL
+XML_GetCurrentByteIndex(XML_Parser parser)
+{
+ if (eventPtr)
+ return parseEndByteIndex - (parseEndPtr - eventPtr);
+ return -1;
+}
+
+int XMLCALL
+XML_GetCurrentByteCount(XML_Parser parser)
+{
+ if (eventEndPtr && eventPtr)
+ return (int)(eventEndPtr - eventPtr);
+ return 0;
+}
+
+const char * XMLCALL
+XML_GetInputContext(XML_Parser parser, int *offset, int *size)
+{
+#ifdef XML_CONTEXT_BYTES
+ if (eventPtr && buffer) {
+ *offset = (int)(eventPtr - buffer);
+ *size = (int)(bufferEnd - buffer);
+ return buffer;
+ }
+#endif /* defined XML_CONTEXT_BYTES */
+ return (char *) 0;
+}
+
+XML_Size XMLCALL
+XML_GetCurrentLineNumber(XML_Parser parser)
+{
+ if (eventPtr && eventPtr >= positionPtr) {
+ XmlUpdatePosition(encoding, positionPtr, eventPtr, &position);
+ positionPtr = eventPtr;
+ }
+ return position.lineNumber + 1;
+}
+
+XML_Size XMLCALL
+XML_GetCurrentColumnNumber(XML_Parser parser)
+{
+ if (eventPtr && eventPtr >= positionPtr) {
+ XmlUpdatePosition(encoding, positionPtr, eventPtr, &position);
+ positionPtr = eventPtr;
+ }
+ return position.columnNumber;
+}
+
+void XMLCALL
+XML_FreeContentModel(XML_Parser parser, XML_Content *model)
+{
+ FREE(model);
+}
+
+void * XMLCALL
+XML_MemMalloc(XML_Parser parser, size_t size)
+{
+ return MALLOC(size);
+}
+
+void * XMLCALL
+XML_MemRealloc(XML_Parser parser, void *ptr, size_t size)
+{
+ return REALLOC(ptr, size);
+}
+
+void XMLCALL
+XML_MemFree(XML_Parser parser, void *ptr)
+{
+ FREE(ptr);
+}
+
+void XMLCALL
+XML_DefaultCurrent(XML_Parser parser)
+{
+ if (defaultHandler) {
+ if (openInternalEntities)
+ reportDefault(parser,
+ internalEncoding,
+ openInternalEntities->internalEventPtr,
+ openInternalEntities->internalEventEndPtr);
+ else
+ reportDefault(parser, encoding, eventPtr, eventEndPtr);
+ }
+}
+
+const XML_LChar * XMLCALL
+XML_ErrorString(enum XML_Error code)
+{
+ static const XML_LChar* const message[] = {
+ 0,
+ XML_L("out of memory"),
+ XML_L("syntax error"),
+ XML_L("no element found"),
+ XML_L("not well-formed (invalid token)"),
+ XML_L("unclosed token"),
+ XML_L("partial character"),
+ XML_L("mismatched tag"),
+ XML_L("duplicate attribute"),
+ XML_L("junk after document element"),
+ XML_L("illegal parameter entity reference"),
+ XML_L("undefined entity"),
+ XML_L("recursive entity reference"),
+ XML_L("asynchronous entity"),
+ XML_L("reference to invalid character number"),
+ XML_L("reference to binary entity"),
+ XML_L("reference to external entity in attribute"),
+ XML_L("XML or text declaration not at start of entity"),
+ XML_L("unknown encoding"),
+ XML_L("encoding specified in XML declaration is incorrect"),
+ XML_L("unclosed CDATA section"),
+ XML_L("error in processing external entity reference"),
+ XML_L("document is not standalone"),
+ XML_L("unexpected parser state - please send a bug report"),
+ XML_L("entity declared in parameter entity"),
+ XML_L("requested feature requires XML_DTD support in Expat"),
+ XML_L("cannot change setting once parsing has begun"),
+ XML_L("unbound prefix"),
+ XML_L("must not undeclare prefix"),
+ XML_L("incomplete markup in parameter entity"),
+ XML_L("XML declaration not well-formed"),
+ XML_L("text declaration not well-formed"),
+ XML_L("illegal character(s) in public id"),
+ XML_L("parser suspended"),
+ XML_L("parser not suspended"),
+ XML_L("parsing aborted"),
+ XML_L("parsing finished"),
+ XML_L("cannot suspend in external parameter entity"),
+ XML_L("reserved prefix (xml) must not be undeclared or bound to another namespace name"),
+ XML_L("reserved prefix (xmlns) must not be declared or undeclared"),
+ XML_L("prefix must not be bound to one of the reserved namespace names")
+ };
+ if (code > 0 && code < sizeof(message)/sizeof(message[0]))
+ return message[code];
+ return NULL;
+}
+
+const XML_LChar * XMLCALL
+XML_ExpatVersion(void) {
+
+ /* V1 is used to string-ize the version number. However, it would
+ string-ize the actual version macro *names* unless we get them
+ substituted before being passed to V1. CPP is defined to expand
+ a macro, then rescan for more expansions. Thus, we use V2 to expand
+ the version macros, then CPP will expand the resulting V1() macro
+ with the correct numerals. */
+ /* ### I'm assuming cpp is portable in this respect... */
+
+#define V1(a,b,c) XML_L(#a)XML_L(".")XML_L(#b)XML_L(".")XML_L(#c)
+#define V2(a,b,c) XML_L("expat_")V1(a,b,c)
+
+ return V2(XML_MAJOR_VERSION, XML_MINOR_VERSION, XML_MICRO_VERSION);
+
+#undef V1
+#undef V2
+}
+
+XML_Expat_Version XMLCALL
+XML_ExpatVersionInfo(void)
+{
+ XML_Expat_Version version;
+
+ version.major = XML_MAJOR_VERSION;
+ version.minor = XML_MINOR_VERSION;
+ version.micro = XML_MICRO_VERSION;
+
+ return version;
+}
+
+const XML_Feature * XMLCALL
+XML_GetFeatureList(void)
+{
+ static const XML_Feature features[] = {
+ {XML_FEATURE_SIZEOF_XML_CHAR, XML_L("sizeof(XML_Char)"),
+ sizeof(XML_Char)},
+ {XML_FEATURE_SIZEOF_XML_LCHAR, XML_L("sizeof(XML_LChar)"),
+ sizeof(XML_LChar)},
+#ifdef XML_UNICODE
+ {XML_FEATURE_UNICODE, XML_L("XML_UNICODE"), 0},
+#endif
+#ifdef XML_UNICODE_WCHAR_T
+ {XML_FEATURE_UNICODE_WCHAR_T, XML_L("XML_UNICODE_WCHAR_T"), 0},
+#endif
+#ifdef XML_DTD
+ {XML_FEATURE_DTD, XML_L("XML_DTD"), 0},
+#endif
+#ifdef XML_CONTEXT_BYTES
+ {XML_FEATURE_CONTEXT_BYTES, XML_L("XML_CONTEXT_BYTES"),
+ XML_CONTEXT_BYTES},
+#endif
+#ifdef XML_MIN_SIZE
+ {XML_FEATURE_MIN_SIZE, XML_L("XML_MIN_SIZE"), 0},
+#endif
+#ifdef XML_NS
+ {XML_FEATURE_NS, XML_L("XML_NS"), 0},
+#endif
+ {XML_FEATURE_END, NULL, 0}
+ };
+
+ return features;
+}
+
+/* Initially tag->rawName always points into the parse buffer;
+ for those TAG instances opened while the current parse buffer was
+ processed, and not yet closed, we need to store tag->rawName in a more
+ permanent location, since the parse buffer is about to be discarded.
+*/
+static XML_Bool
+storeRawNames(XML_Parser parser)
+{
+ TAG *tag = tagStack;
+ while (tag) {
+ int bufSize;
+ int nameLen = sizeof(XML_Char) * (tag->name.strLen + 1);
+ char *rawNameBuf = tag->buf + nameLen;
+ /* Stop if already stored. Since tagStack is a stack, we can stop
+ at the first entry that has already been copied; everything
+ below it in the stack is already been accounted for in a
+ previous call to this function.
+ */
+ if (tag->rawName == rawNameBuf)
+ break;
+ /* For re-use purposes we need to ensure that the
+ size of tag->buf is a multiple of sizeof(XML_Char).
+ */
+ bufSize = nameLen + ROUND_UP(tag->rawNameLength, sizeof(XML_Char));
+ if (bufSize > tag->bufEnd - tag->buf) {
+ char *temp = (char *)REALLOC(tag->buf, bufSize);
+ if (temp == NULL)
+ return XML_FALSE;
+ /* if tag->name.str points to tag->buf (only when namespace
+ processing is off) then we have to update it
+ */
+ if (tag->name.str == (XML_Char *)tag->buf)
+ tag->name.str = (XML_Char *)temp;
+ /* if tag->name.localPart is set (when namespace processing is on)
+ then update it as well, since it will always point into tag->buf
+ */
+ if (tag->name.localPart)
+ tag->name.localPart = (XML_Char *)temp + (tag->name.localPart -
+ (XML_Char *)tag->buf);
+ tag->buf = temp;
+ tag->bufEnd = temp + bufSize;
+ rawNameBuf = temp + nameLen;
+ }
+ memcpy(rawNameBuf, tag->rawName, tag->rawNameLength);
+ tag->rawName = rawNameBuf;
+ tag = tag->parent;
+ }
+ return XML_TRUE;
+}
+
+static enum XML_Error PTRCALL
+contentProcessor(XML_Parser parser,
+ const char *start,
+ const char *end,
+ const char **endPtr)
+{
+ enum XML_Error result = doContent(parser, 0, encoding, start, end,
+ endPtr, (XML_Bool)!ps_finalBuffer);
+ if (result == XML_ERROR_NONE) {
+ if (!storeRawNames(parser))
+ return XML_ERROR_NO_MEMORY;
+ }
+ return result;
+}
+
+static enum XML_Error PTRCALL
+externalEntityInitProcessor(XML_Parser parser,
+ const char *start,
+ const char *end,
+ const char **endPtr)
+{
+ enum XML_Error result = initializeEncoding(parser);
+ if (result != XML_ERROR_NONE)
+ return result;
+ processor = externalEntityInitProcessor2;
+ return externalEntityInitProcessor2(parser, start, end, endPtr);
+}
+
+static enum XML_Error PTRCALL
+externalEntityInitProcessor2(XML_Parser parser,
+ const char *start,
+ const char *end,
+ const char **endPtr)
+{
+ const char *next = start; /* XmlContentTok doesn't always set the last arg */
+ int tok = XmlContentTok(encoding, start, end, &next);
+ switch (tok) {
+ case XML_TOK_BOM:
+ /* If we are at the end of the buffer, this would cause the next stage,
+ i.e. externalEntityInitProcessor3, to pass control directly to
+ doContent (by detecting XML_TOK_NONE) without processing any xml text
+ declaration - causing the error XML_ERROR_MISPLACED_XML_PI in doContent.
+ */
+ if (next == end && !ps_finalBuffer) {
+ *endPtr = next;
+ return XML_ERROR_NONE;
+ }
+ start = next;
+ break;
+ case XML_TOK_PARTIAL:
+ if (!ps_finalBuffer) {
+ *endPtr = start;
+ return XML_ERROR_NONE;
+ }
+ eventPtr = start;
+ return XML_ERROR_UNCLOSED_TOKEN;
+ case XML_TOK_PARTIAL_CHAR:
+ if (!ps_finalBuffer) {
+ *endPtr = start;
+ return XML_ERROR_NONE;
+ }
+ eventPtr = start;
+ return XML_ERROR_PARTIAL_CHAR;
+ }
+ processor = externalEntityInitProcessor3;
+ return externalEntityInitProcessor3(parser, start, end, endPtr);
+}
+
+static enum XML_Error PTRCALL
+externalEntityInitProcessor3(XML_Parser parser,
+ const char *start,
+ const char *end,
+ const char **endPtr)
+{
+ int tok;
+ const char *next = start; /* XmlContentTok doesn't always set the last arg */
+ eventPtr = start;
+ tok = XmlContentTok(encoding, start, end, &next);
+ eventEndPtr = next;
+
+ switch (tok) {
+ case XML_TOK_XML_DECL:
+ {
+ enum XML_Error result;
+ result = processXmlDecl(parser, 1, start, next);
+ if (result != XML_ERROR_NONE)
+ return result;
+ switch (ps_parsing) {
+ case XML_SUSPENDED:
+ *endPtr = next;
+ return XML_ERROR_NONE;
+ case XML_FINISHED:
+ return XML_ERROR_ABORTED;
+ default:
+ start = next;
+ }
+ }
+ break;
+ case XML_TOK_PARTIAL:
+ if (!ps_finalBuffer) {
+ *endPtr = start;
+ return XML_ERROR_NONE;
+ }
+ return XML_ERROR_UNCLOSED_TOKEN;
+ case XML_TOK_PARTIAL_CHAR:
+ if (!ps_finalBuffer) {
+ *endPtr = start;
+ return XML_ERROR_NONE;
+ }
+ return XML_ERROR_PARTIAL_CHAR;
+ }
+ processor = externalEntityContentProcessor;
+ tagLevel = 1;
+ return externalEntityContentProcessor(parser, start, end, endPtr);
+}
+
+static enum XML_Error PTRCALL
+externalEntityContentProcessor(XML_Parser parser,
+ const char *start,
+ const char *end,
+ const char **endPtr)
+{
+ enum XML_Error result = doContent(parser, 1, encoding, start, end,
+ endPtr, (XML_Bool)!ps_finalBuffer);
+ if (result == XML_ERROR_NONE) {
+ if (!storeRawNames(parser))
+ return XML_ERROR_NO_MEMORY;
+ }
+ return result;
+}
+
+static enum XML_Error
+doContent(XML_Parser parser,
+ int startTagLevel,
+ const ENCODING *enc,
+ const char *s,
+ const char *end,
+ const char **nextPtr,
+ XML_Bool haveMore)
+{
+ /* save one level of indirection */
+ DTD * const dtd = _dtd;
+
+ const char **eventPP;
+ const char **eventEndPP;
+ if (enc == encoding) {
+ eventPP = &eventPtr;
+ eventEndPP = &eventEndPtr;
+ }
+ else {
+ eventPP = &(openInternalEntities->internalEventPtr);
+ eventEndPP = &(openInternalEntities->internalEventEndPtr);
+ }
+ *eventPP = s;
+
+ for (;;) {
+ const char *next = s; /* XmlContentTok doesn't always set the last arg */
+ int tok = XmlContentTok(enc, s, end, &next);
+ *eventEndPP = next;
+ switch (tok) {
+ case XML_TOK_TRAILING_CR:
+ if (haveMore) {
+ *nextPtr = s;
+ return XML_ERROR_NONE;
+ }
+ *eventEndPP = end;
+ if (characterDataHandler) {
+ XML_Char c = 0xA;
+ characterDataHandler(handlerArg, &c, 1);
+ }
+ else if (defaultHandler)
+ reportDefault(parser, enc, s, end);
+ /* We are at the end of the final buffer, should we check for
+ XML_SUSPENDED, XML_FINISHED?
+ */
+ if (startTagLevel == 0)
+ return XML_ERROR_NO_ELEMENTS;
+ if (tagLevel != startTagLevel)
+ return XML_ERROR_ASYNC_ENTITY;
+ *nextPtr = end;
+ return XML_ERROR_NONE;
+ case XML_TOK_NONE:
+ if (haveMore) {
+ *nextPtr = s;
+ return XML_ERROR_NONE;
+ }
+ if (startTagLevel > 0) {
+ if (tagLevel != startTagLevel)
+ return XML_ERROR_ASYNC_ENTITY;
+ *nextPtr = s;
+ return XML_ERROR_NONE;
+ }
+ return XML_ERROR_NO_ELEMENTS;
+ case XML_TOK_INVALID:
+ *eventPP = next;
+ return XML_ERROR_INVALID_TOKEN;
+ case XML_TOK_PARTIAL:
+ if (haveMore) {
+ *nextPtr = s;
+ return XML_ERROR_NONE;
+ }
+ return XML_ERROR_UNCLOSED_TOKEN;
+ case XML_TOK_PARTIAL_CHAR:
+ if (haveMore) {
+ *nextPtr = s;
+ return XML_ERROR_NONE;
+ }
+ return XML_ERROR_PARTIAL_CHAR;
+ case XML_TOK_ENTITY_REF:
+ {
+ const XML_Char *name;
+ ENTITY *entity;
+ XML_Char ch = (XML_Char) XmlPredefinedEntityName(enc,
+ s + enc->minBytesPerChar,
+ next - enc->minBytesPerChar);
+ if (ch) {
+ if (characterDataHandler)
+ characterDataHandler(handlerArg, &ch, 1);
+ else if (defaultHandler)
+ reportDefault(parser, enc, s, next);
+ break;
+ }
+ name = poolStoreString(&dtd->pool, enc,
+ s + enc->minBytesPerChar,
+ next - enc->minBytesPerChar);
+ if (!name)
+ return XML_ERROR_NO_MEMORY;
+ entity = (ENTITY *)lookup(&dtd->generalEntities, name, 0);
+ poolDiscard(&dtd->pool);
+ /* First, determine if a check for an existing declaration is needed;
+ if yes, check that the entity exists, and that it is internal,
+ otherwise call the skipped entity or default handler.
+ */
+ if (!dtd->hasParamEntityRefs || dtd->standalone) {
+ if (!entity)
+ return XML_ERROR_UNDEFINED_ENTITY;
+ else if (!entity->is_internal)
+ return XML_ERROR_ENTITY_DECLARED_IN_PE;
+ }
+ else if (!entity) {
+ if (skippedEntityHandler)
+ skippedEntityHandler(handlerArg, name, 0);
+ else if (defaultHandler)
+ reportDefault(parser, enc, s, next);
+ break;
+ }
+ if (entity->open)
+ return XML_ERROR_RECURSIVE_ENTITY_REF;
+ if (entity->notation)
+ return XML_ERROR_BINARY_ENTITY_REF;
+ if (entity->textPtr) {
+ enum XML_Error result;
+ if (!defaultExpandInternalEntities) {
+ if (skippedEntityHandler)
+ skippedEntityHandler(handlerArg, entity->name, 0);
+ else if (defaultHandler)
+ reportDefault(parser, enc, s, next);
+ break;
+ }
+ result = processInternalEntity(parser, entity, XML_FALSE);
+ if (result != XML_ERROR_NONE)
+ return result;
+ }
+ else if (externalEntityRefHandler) {
+ const XML_Char *context;
+ entity->open = XML_TRUE;
+ context = getContext(parser);
+ entity->open = XML_FALSE;
+ if (!context)
+ return XML_ERROR_NO_MEMORY;
+ if (!externalEntityRefHandler(externalEntityRefHandlerArg,
+ context,
+ entity->base,
+ entity->systemId,
+ entity->publicId))
+ return XML_ERROR_EXTERNAL_ENTITY_HANDLING;
+ poolDiscard(&tempPool);
+ }
+ else if (defaultHandler)
+ reportDefault(parser, enc, s, next);
+ break;
+ }
+ case XML_TOK_START_TAG_NO_ATTS:
+ /* fall through */
+ case XML_TOK_START_TAG_WITH_ATTS:
+ {
+ TAG *tag;
+ enum XML_Error result;
+ XML_Char *toPtr;
+ if (freeTagList) {
+ tag = freeTagList;
+ freeTagList = freeTagList->parent;
+ }
+ else {
+ tag = (TAG *)MALLOC(sizeof(TAG));
+ if (!tag)
+ return XML_ERROR_NO_MEMORY;
+ tag->buf = (char *)MALLOC(INIT_TAG_BUF_SIZE);
+ if (!tag->buf) {
+ FREE(tag);
+ return XML_ERROR_NO_MEMORY;
+ }
+ tag->bufEnd = tag->buf + INIT_TAG_BUF_SIZE;
+ }
+ tag->bindings = NULL;
+ tag->parent = tagStack;
+ tagStack = tag;
+ tag->name.localPart = NULL;
+ tag->name.prefix = NULL;
+ tag->rawName = s + enc->minBytesPerChar;
+ tag->rawNameLength = XmlNameLength(enc, tag->rawName);
+ ++tagLevel;
+ {
+ const char *rawNameEnd = tag->rawName + tag->rawNameLength;
+ const char *fromPtr = tag->rawName;
+ toPtr = (XML_Char *)tag->buf;
+ for (;;) {
+ int bufSize;
+ int convLen;
+ XmlConvert(enc,
+ &fromPtr, rawNameEnd,
+ (ICHAR **)&toPtr, (ICHAR *)tag->bufEnd - 1);
+ convLen = (int)(toPtr - (XML_Char *)tag->buf);
+ if (fromPtr == rawNameEnd) {
+ tag->name.strLen = convLen;
+ break;
+ }
+ bufSize = (int)(tag->bufEnd - tag->buf) << 1;
+ {
+ char *temp = (char *)REALLOC(tag->buf, bufSize);
+ if (temp == NULL)
+ return XML_ERROR_NO_MEMORY;
+ tag->buf = temp;
+ tag->bufEnd = temp + bufSize;
+ toPtr = (XML_Char *)temp + convLen;
+ }
+ }
+ }
+ tag->name.str = (XML_Char *)tag->buf;
+ *toPtr = XML_T('\0');
+ result = storeAtts(parser, enc, s, &(tag->name), &(tag->bindings));
+ if (result)
+ return result;
+ if (startElementHandler)
+ startElementHandler(handlerArg, tag->name.str,
+ (const XML_Char **)atts);
+ else if (defaultHandler)
+ reportDefault(parser, enc, s, next);
+ poolClear(&tempPool);
+ break;
+ }
+ case XML_TOK_EMPTY_ELEMENT_NO_ATTS:
+ /* fall through */
+ case XML_TOK_EMPTY_ELEMENT_WITH_ATTS:
+ {
+ const char *rawName = s + enc->minBytesPerChar;
+ enum XML_Error result;
+ BINDING *bindings = NULL;
+ XML_Bool noElmHandlers = XML_TRUE;
+ TAG_NAME name;
+ name.str = poolStoreString(&tempPool, enc, rawName,
+ rawName + XmlNameLength(enc, rawName));
+ if (!name.str)
+ return XML_ERROR_NO_MEMORY;
+ poolFinish(&tempPool);
+ result = storeAtts(parser, enc, s, &name, &bindings);
+ if (result)
+ return result;
+ poolFinish(&tempPool);
+ if (startElementHandler) {
+ startElementHandler(handlerArg, name.str, (const XML_Char **)atts);
+ noElmHandlers = XML_FALSE;
+ }
+ if (endElementHandler) {
+ if (startElementHandler)
+ *eventPP = *eventEndPP;
+ endElementHandler(handlerArg, name.str);
+ noElmHandlers = XML_FALSE;
+ }
+ if (noElmHandlers && defaultHandler)
+ reportDefault(parser, enc, s, next);
+ poolClear(&tempPool);
+ while (bindings) {
+ BINDING *b = bindings;
+ if (endNamespaceDeclHandler)
+ endNamespaceDeclHandler(handlerArg, b->prefix->name);
+ bindings = bindings->nextTagBinding;
+ b->nextTagBinding = freeBindingList;
+ freeBindingList = b;
+ b->prefix->binding = b->prevPrefixBinding;
+ }
+ }
+ if (tagLevel == 0)
+ return epilogProcessor(parser, next, end, nextPtr);
+ break;
+ case XML_TOK_END_TAG:
+ if (tagLevel == startTagLevel)
+ return XML_ERROR_ASYNC_ENTITY;
+ else {
+ int len;
+ const char *rawName;
+ TAG *tag = tagStack;
+ tagStack = tag->parent;
+ tag->parent = freeTagList;
+ freeTagList = tag;
+ rawName = s + enc->minBytesPerChar*2;
+ len = XmlNameLength(enc, rawName);
+ if (len != tag->rawNameLength
+ || memcmp(tag->rawName, rawName, len) != 0) {
+ *eventPP = rawName;
+ return XML_ERROR_TAG_MISMATCH;
+ }
+ --tagLevel;
+ if (endElementHandler) {
+ const XML_Char *localPart;
+ const XML_Char *prefix;
+ XML_Char *uri;
+ localPart = tag->name.localPart;
+ if (ns && localPart) {
+ /* localPart and prefix may have been overwritten in
+ tag->name.str, since this points to the binding->uri
+ buffer which gets re-used; so we have to add them again
+ */
+ uri = (XML_Char *)tag->name.str + tag->name.uriLen;
+ /* don't need to check for space - already done in storeAtts() */
+ while (*localPart) *uri++ = *localPart++;
+ prefix = (XML_Char *)tag->name.prefix;
+ if (ns_triplets && prefix) {
+ *uri++ = namespaceSeparator;
+ while (*prefix) *uri++ = *prefix++;
+ }
+ *uri = XML_T('\0');
+ }
+ endElementHandler(handlerArg, tag->name.str);
+ }
+ else if (defaultHandler)
+ reportDefault(parser, enc, s, next);
+ while (tag->bindings) {
+ BINDING *b = tag->bindings;
+ if (endNamespaceDeclHandler)
+ endNamespaceDeclHandler(handlerArg, b->prefix->name);
+ tag->bindings = tag->bindings->nextTagBinding;
+ b->nextTagBinding = freeBindingList;
+ freeBindingList = b;
+ b->prefix->binding = b->prevPrefixBinding;
+ }
+ if (tagLevel == 0)
+ return epilogProcessor(parser, next, end, nextPtr);
+ }
+ break;
+ case XML_TOK_CHAR_REF:
+ {
+ int n = XmlCharRefNumber(enc, s);
+ if (n < 0)
+ return XML_ERROR_BAD_CHAR_REF;
+ if (characterDataHandler) {
+ XML_Char buf[XML_ENCODE_MAX];
+ characterDataHandler(handlerArg, buf, XmlEncode(n, (ICHAR *)buf));
+ }
+ else if (defaultHandler)
+ reportDefault(parser, enc, s, next);
+ }
+ break;
+ case XML_TOK_XML_DECL:
+ return XML_ERROR_MISPLACED_XML_PI;
+ case XML_TOK_DATA_NEWLINE:
+ if (characterDataHandler) {
+ XML_Char c = 0xA;
+ characterDataHandler(handlerArg, &c, 1);
+ }
+ else if (defaultHandler)
+ reportDefault(parser, enc, s, next);
+ break;
+ case XML_TOK_CDATA_SECT_OPEN:
+ {
+ enum XML_Error result;
+ if (startCdataSectionHandler)
+ startCdataSectionHandler(handlerArg);
+#if 0
+ /* Suppose you doing a transformation on a document that involves
+ changing only the character data. You set up a defaultHandler
+ and a characterDataHandler. The defaultHandler simply copies
+ characters through. The characterDataHandler does the
+ transformation and writes the characters out escaping them as
+ necessary. This case will fail to work if we leave out the
+ following two lines (because & and < inside CDATA sections will
+ be incorrectly escaped).
+
+ However, now we have a start/endCdataSectionHandler, so it seems
+ easier to let the user deal with this.
+ */
+ else if (characterDataHandler)
+ characterDataHandler(handlerArg, dataBuf, 0);
+#endif
+ else if (defaultHandler)
+ reportDefault(parser, enc, s, next);
+ result = doCdataSection(parser, enc, &next, end, nextPtr, haveMore);
+ if (result != XML_ERROR_NONE)
+ return result;
+ else if (!next) {
+ processor = cdataSectionProcessor;
+ return result;
+ }
+ }
+ break;
+ case XML_TOK_TRAILING_RSQB:
+ if (haveMore) {
+ *nextPtr = s;
+ return XML_ERROR_NONE;
+ }
+ if (characterDataHandler) {
+ if (MUST_CONVERT(enc, s)) {
+ ICHAR *dataPtr = (ICHAR *)dataBuf;
+ XmlConvert(enc, &s, end, &dataPtr, (ICHAR *)dataBufEnd);
+ characterDataHandler(handlerArg, dataBuf,
+ (int)(dataPtr - (ICHAR *)dataBuf));
+ }
+ else
+ characterDataHandler(handlerArg,
+ (XML_Char *)s,
+ (int)((XML_Char *)end - (XML_Char *)s));
+ }
+ else if (defaultHandler)
+ reportDefault(parser, enc, s, end);
+ /* We are at the end of the final buffer, should we check for
+ XML_SUSPENDED, XML_FINISHED?
+ */
+ if (startTagLevel == 0) {
+ *eventPP = end;
+ return XML_ERROR_NO_ELEMENTS;
+ }
+ if (tagLevel != startTagLevel) {
+ *eventPP = end;
+ return XML_ERROR_ASYNC_ENTITY;
+ }
+ *nextPtr = end;
+ return XML_ERROR_NONE;
+ case XML_TOK_DATA_CHARS:
+ if (characterDataHandler) {
+ if (MUST_CONVERT(enc, s)) {
+ for (;;) {
+ ICHAR *dataPtr = (ICHAR *)dataBuf;
+ XmlConvert(enc, &s, next, &dataPtr, (ICHAR *)dataBufEnd);
+ *eventEndPP = s;
+ characterDataHandler(handlerArg, dataBuf,
+ (int)(dataPtr - (ICHAR *)dataBuf));
+ if (s == next)
+ break;
+ *eventPP = s;
+ }
+ }
+ else
+ characterDataHandler(handlerArg,
+ (XML_Char *)s,
+ (int)((XML_Char *)next - (XML_Char *)s));
+ }
+ else if (defaultHandler)
+ reportDefault(parser, enc, s, next);
+ break;
+ case XML_TOK_PI:
+ if (!reportProcessingInstruction(parser, enc, s, next))
+ return XML_ERROR_NO_MEMORY;
+ break;
+ case XML_TOK_COMMENT:
+ if (!reportComment(parser, enc, s, next))
+ return XML_ERROR_NO_MEMORY;
+ break;
+ default:
+ if (defaultHandler)
+ reportDefault(parser, enc, s, next);
+ break;
+ }
+ *eventPP = s = next;
+ switch (ps_parsing) {
+ case XML_SUSPENDED:
+ *nextPtr = next;
+ return XML_ERROR_NONE;
+ case XML_FINISHED:
+ return XML_ERROR_ABORTED;
+ default: ;
+ }
+ }
+ /* not reached */
+}
+
+/* Precondition: all arguments must be non-NULL;
+ Purpose:
+ - normalize attributes
+ - check attributes for well-formedness
+ - generate namespace aware attribute names (URI, prefix)
+ - build list of attributes for startElementHandler
+ - default attributes
+ - process namespace declarations (check and report them)
+ - generate namespace aware element name (URI, prefix)
+*/
+static enum XML_Error
+storeAtts(XML_Parser parser, const ENCODING *enc,
+ const char *attStr, TAG_NAME *tagNamePtr,
+ BINDING **bindingsPtr)
+{
+ DTD * const dtd = _dtd; /* save one level of indirection */
+ ELEMENT_TYPE *elementType;
+ int nDefaultAtts;
+ const XML_Char **appAtts; /* the attribute list for the application */
+ int attIndex = 0;
+ int prefixLen;
+ int i;
+ int n;
+ XML_Char *uri;
+ int nPrefixes = 0;
+ BINDING *binding;
+ const XML_Char *localPart;
+
+ /* lookup the element type name */
+ elementType = (ELEMENT_TYPE *)lookup(&dtd->elementTypes, tagNamePtr->str,0);
+ if (!elementType) {
+ const XML_Char *name = poolCopyString(&dtd->pool, tagNamePtr->str);
+ if (!name)
+ return XML_ERROR_NO_MEMORY;
+ elementType = (ELEMENT_TYPE *)lookup(&dtd->elementTypes, name,
+ sizeof(ELEMENT_TYPE));
+ if (!elementType)
+ return XML_ERROR_NO_MEMORY;
+ if (ns && !setElementTypePrefix(parser, elementType))
+ return XML_ERROR_NO_MEMORY;
+ }
+ nDefaultAtts = elementType->nDefaultAtts;
+
+ /* get the attributes from the tokenizer */
+ n = XmlGetAttributes(enc, attStr, attsSize, atts);
+ if (n + nDefaultAtts > attsSize) {
+ int oldAttsSize = attsSize;
+ ATTRIBUTE *temp;
+ attsSize = n + nDefaultAtts + INIT_ATTS_SIZE;
+ temp = (ATTRIBUTE *)REALLOC((void *)atts, attsSize * sizeof(ATTRIBUTE));
+ if (temp == NULL)
+ return XML_ERROR_NO_MEMORY;
+ atts = temp;
+ if (n > oldAttsSize)
+ XmlGetAttributes(enc, attStr, n, atts);
+ }
+
+ appAtts = (const XML_Char **)atts;
+ for (i = 0; i < n; i++) {
+ /* add the name and value to the attribute list */
+ ATTRIBUTE_ID *attId = getAttributeId(parser, enc, atts[i].name,
+ atts[i].name
+ + XmlNameLength(enc, atts[i].name));
+ if (!attId)
+ return XML_ERROR_NO_MEMORY;
+ /* Detect duplicate attributes by their QNames. This does not work when
+ namespace processing is turned on and different prefixes for the same
+ namespace are used. For this case we have a check further down.
+ */
+ if ((attId->name)[-1]) {
+ if (enc == encoding)
+ eventPtr = atts[i].name;
+ return XML_ERROR_DUPLICATE_ATTRIBUTE;
+ }
+ (attId->name)[-1] = 1;
+ appAtts[attIndex++] = attId->name;
+ if (!atts[i].normalized) {
+ enum XML_Error result;
+ XML_Bool isCdata = XML_TRUE;
+
+ /* figure out whether declared as other than CDATA */
+ if (attId->maybeTokenized) {
+ int j;
+ for (j = 0; j < nDefaultAtts; j++) {
+ if (attId == elementType->defaultAtts[j].id) {
+ isCdata = elementType->defaultAtts[j].isCdata;
+ break;
+ }
+ }
+ }
+
+ /* normalize the attribute value */
+ result = storeAttributeValue(parser, enc, isCdata,
+ atts[i].valuePtr, atts[i].valueEnd,
+ &tempPool);
+ if (result)
+ return result;
+ appAtts[attIndex] = poolStart(&tempPool);
+ poolFinish(&tempPool);
+ }
+ else {
+ /* the value did not need normalizing */
+ appAtts[attIndex] = poolStoreString(&tempPool, enc, atts[i].valuePtr,
+ atts[i].valueEnd);
+ if (appAtts[attIndex] == 0)
+ return XML_ERROR_NO_MEMORY;
+ poolFinish(&tempPool);
+ }
+ /* handle prefixed attribute names */
+ if (attId->prefix) {
+ if (attId->xmlns) {
+ /* deal with namespace declarations here */
+ enum XML_Error result = addBinding(parser, attId->prefix, attId,
+ appAtts[attIndex], bindingsPtr);
+ if (result)
+ return result;
+ --attIndex;
+ }
+ else {
+ /* deal with other prefixed names later */
+ attIndex++;
+ nPrefixes++;
+ (attId->name)[-1] = 2;
+ }
+ }
+ else
+ attIndex++;
+ }
+
+ /* set-up for XML_GetSpecifiedAttributeCount and XML_GetIdAttributeIndex */
+ nSpecifiedAtts = attIndex;
+ if (elementType->idAtt && (elementType->idAtt->name)[-1]) {
+ for (i = 0; i < attIndex; i += 2)
+ if (appAtts[i] == elementType->idAtt->name) {
+ idAttIndex = i;
+ break;
+ }
+ }
+ else
+ idAttIndex = -1;
+
+ /* do attribute defaulting */
+ for (i = 0; i < nDefaultAtts; i++) {
+ const DEFAULT_ATTRIBUTE *da = elementType->defaultAtts + i;
+ if (!(da->id->name)[-1] && da->value) {
+ if (da->id->prefix) {
+ if (da->id->xmlns) {
+ enum XML_Error result = addBinding(parser, da->id->prefix, da->id,
+ da->value, bindingsPtr);
+ if (result)
+ return result;
+ }
+ else {
+ (da->id->name)[-1] = 2;
+ nPrefixes++;
+ appAtts[attIndex++] = da->id->name;
+ appAtts[attIndex++] = da->value;
+ }
+ }
+ else {
+ (da->id->name)[-1] = 1;
+ appAtts[attIndex++] = da->id->name;
+ appAtts[attIndex++] = da->value;
+ }
+ }
+ }
+ appAtts[attIndex] = 0;
+
+ /* expand prefixed attribute names, check for duplicates,
+ and clear flags that say whether attributes were specified */
+ i = 0;
+ if (nPrefixes) {
+ int j; /* hash table index */
+ unsigned long version = nsAttsVersion;
+ int nsAttsSize = (int)1 << nsAttsPower;
+ /* size of hash table must be at least 2 * (# of prefixed attributes) */
+ if ((nPrefixes << 1) >> nsAttsPower) { /* true for nsAttsPower = 0 */
+ NS_ATT *temp;
+ /* hash table size must also be a power of 2 and >= 8 */
+ while (nPrefixes >> nsAttsPower++);
+ if (nsAttsPower < 3)
+ nsAttsPower = 3;
+ nsAttsSize = (int)1 << nsAttsPower;
+ temp = (NS_ATT *)REALLOC(nsAtts, nsAttsSize * sizeof(NS_ATT));
+ if (!temp)
+ return XML_ERROR_NO_MEMORY;
+ nsAtts = temp;
+ version = 0; /* force re-initialization of nsAtts hash table */
+ }
+ /* using a version flag saves us from initializing nsAtts every time */
+ if (!version) { /* initialize version flags when version wraps around */
+ version = INIT_ATTS_VERSION;
+ for (j = nsAttsSize; j != 0; )
+ nsAtts[--j].version = version;
+ }
+ nsAttsVersion = --version;
+
+ /* expand prefixed names and check for duplicates */
+ for (; i < attIndex; i += 2) {
+ const XML_Char *s = appAtts[i];
+ if (s[-1] == 2) { /* prefixed */
+ ATTRIBUTE_ID *id;
+ const BINDING *b;
+ unsigned long uriHash = 0;
+ ((XML_Char *)s)[-1] = 0; /* clear flag */
+ id = (ATTRIBUTE_ID *)lookup(&dtd->attributeIds, s, 0);
+ b = id->prefix->binding;
+ if (!b)
+ return XML_ERROR_UNBOUND_PREFIX;
+
+ /* as we expand the name we also calculate its hash value */
+ for (j = 0; j < b->uriLen; j++) {
+ const XML_Char c = b->uri[j];
+ if (!poolAppendChar(&tempPool, c))
+ return XML_ERROR_NO_MEMORY;
+ uriHash = CHAR_HASH(uriHash, c);
+ }
+ while (*s++ != XML_T(':'))
+ ;
+ do { /* copies null terminator */
+ const XML_Char c = *s;
+ if (!poolAppendChar(&tempPool, *s))
+ return XML_ERROR_NO_MEMORY;
+ uriHash = CHAR_HASH(uriHash, c);
+ } while (*s++);
+
+ { /* Check hash table for duplicate of expanded name (uriName).
+ Derived from code in lookup(HASH_TABLE *table, ...).
+ */
+ unsigned char step = 0;
+ unsigned long mask = nsAttsSize - 1;
+ j = uriHash & mask; /* index into hash table */
+ while (nsAtts[j].version == version) {
+ /* for speed we compare stored hash values first */
+ if (uriHash == nsAtts[j].hash) {
+ const XML_Char *s1 = poolStart(&tempPool);
+ const XML_Char *s2 = nsAtts[j].uriName;
+ /* s1 is null terminated, but not s2 */
+ for (; *s1 == *s2 && *s1 != 0; s1++, s2++);
+ if (*s1 == 0)
+ return XML_ERROR_DUPLICATE_ATTRIBUTE;
+ }
+ if (!step)
+ step = PROBE_STEP(uriHash, mask, nsAttsPower);
+ j < step ? (j += nsAttsSize - step) : (j -= step);
+ }
+ }
+
+ if (ns_triplets) { /* append namespace separator and prefix */
+ tempPool.ptr[-1] = namespaceSeparator;
+ s = b->prefix->name;
+ do {
+ if (!poolAppendChar(&tempPool, *s))
+ return XML_ERROR_NO_MEMORY;
+ } while (*s++);
+ }
+
+ /* store expanded name in attribute list */
+ s = poolStart(&tempPool);
+ poolFinish(&tempPool);
+ appAtts[i] = s;
+
+ /* fill empty slot with new version, uriName and hash value */
+ nsAtts[j].version = version;
+ nsAtts[j].hash = uriHash;
+ nsAtts[j].uriName = s;
+
+ if (!--nPrefixes) {
+ i += 2;
+ break;
+ }
+ }
+ else /* not prefixed */
+ ((XML_Char *)s)[-1] = 0; /* clear flag */
+ }
+ }
+ /* clear flags for the remaining attributes */
+ for (; i < attIndex; i += 2)
+ ((XML_Char *)(appAtts[i]))[-1] = 0;
+ for (binding = *bindingsPtr; binding; binding = binding->nextTagBinding)
+ binding->attId->name[-1] = 0;
+
+ if (!ns)
+ return XML_ERROR_NONE;
+
+ /* expand the element type name */
+ if (elementType->prefix) {
+ binding = elementType->prefix->binding;
+ if (!binding)
+ return XML_ERROR_UNBOUND_PREFIX;
+ localPart = tagNamePtr->str;
+ while (*localPart++ != XML_T(':'))
+ ;
+ }
+ else if (dtd->defaultPrefix.binding) {
+ binding = dtd->defaultPrefix.binding;
+ localPart = tagNamePtr->str;
+ }
+ else
+ return XML_ERROR_NONE;
+ prefixLen = 0;
+ if (ns_triplets && binding->prefix->name) {
+ for (; binding->prefix->name[prefixLen++];)
+ ; /* prefixLen includes null terminator */
+ }
+ tagNamePtr->localPart = localPart;
+ tagNamePtr->uriLen = binding->uriLen;
+ tagNamePtr->prefix = binding->prefix->name;
+ tagNamePtr->prefixLen = prefixLen;
+ for (i = 0; localPart[i++];)
+ ; /* i includes null terminator */
+ n = i + binding->uriLen + prefixLen;
+ if (n > binding->uriAlloc) {
+ TAG *p;
+ uri = (XML_Char *)MALLOC((n + EXPAND_SPARE) * sizeof(XML_Char));
+ if (!uri)
+ return XML_ERROR_NO_MEMORY;
+ binding->uriAlloc = n + EXPAND_SPARE;
+ memcpy(uri, binding->uri, binding->uriLen * sizeof(XML_Char));
+ for (p = tagStack; p; p = p->parent)
+ if (p->name.str == binding->uri)
+ p->name.str = uri;
+ FREE(binding->uri);
+ binding->uri = uri;
+ }
+ /* if namespaceSeparator != '\0' then uri includes it already */
+ uri = binding->uri + binding->uriLen;
+ memcpy(uri, localPart, i * sizeof(XML_Char));
+ /* we always have a namespace separator between localPart and prefix */
+ if (prefixLen) {
+ uri += i - 1;
+ *uri = namespaceSeparator; /* replace null terminator */
+ memcpy(uri + 1, binding->prefix->name, prefixLen * sizeof(XML_Char));
+ }
+ tagNamePtr->str = binding->uri;
+ return XML_ERROR_NONE;
+}
+
+/* addBinding() overwrites the value of prefix->binding without checking.
+ Therefore one must keep track of the old value outside of addBinding().
+*/
+static enum XML_Error
+addBinding(XML_Parser parser, PREFIX *prefix, const ATTRIBUTE_ID *attId,
+ const XML_Char *uri, BINDING **bindingsPtr)
+{
+ static const XML_Char xmlNamespace[] = {
+ 'h', 't', 't', 'p', ':', '/', '/',
+ 'w', 'w', 'w', '.', 'w', '3', '.', 'o', 'r', 'g', '/',
+ 'X', 'M', 'L', '/', '1', '9', '9', '8', '/',
+ 'n', 'a', 'm', 'e', 's', 'p', 'a', 'c', 'e', '\0'
+ };
+ static const int xmlLen =
+ (int)sizeof(xmlNamespace)/sizeof(XML_Char) - 1;
+ static const XML_Char xmlnsNamespace[] = {
+ 'h', 't', 't', 'p', ':', '/', '/',
+ 'w', 'w', 'w', '.', 'w', '3', '.', 'o', 'r', 'g', '/',
+ '2', '0', '0', '0', '/', 'x', 'm', 'l', 'n', 's', '/', '\0'
+ };
+ static const int xmlnsLen =
+ (int)sizeof(xmlnsNamespace)/sizeof(XML_Char) - 1;
+
+ XML_Bool mustBeXML = XML_FALSE;
+ XML_Bool isXML = XML_TRUE;
+ XML_Bool isXMLNS = XML_TRUE;
+
+ BINDING *b;
+ int len;
+
+ /* empty URI is only valid for default namespace per XML NS 1.0 (not 1.1) */
+ if (*uri == XML_T('\0') && prefix->name)
+ return XML_ERROR_UNDECLARING_PREFIX;
+
+ if (prefix->name
+ && prefix->name[0] == XML_T('x')
+ && prefix->name[1] == XML_T('m')
+ && prefix->name[2] == XML_T('l')) {
+
+ /* Not allowed to bind xmlns */
+ if (prefix->name[3] == XML_T('n')
+ && prefix->name[4] == XML_T('s')
+ && prefix->name[5] == XML_T('\0'))
+ return XML_ERROR_RESERVED_PREFIX_XMLNS;
+
+ if (prefix->name[3] == XML_T('\0'))
+ mustBeXML = XML_TRUE;
+ }
+
+ for (len = 0; uri[len]; len++) {
+ if (isXML && (len > xmlLen || uri[len] != xmlNamespace[len]))
+ isXML = XML_FALSE;
+
+ if (!mustBeXML && isXMLNS
+ && (len > xmlnsLen || uri[len] != xmlnsNamespace[len]))
+ isXMLNS = XML_FALSE;
+ }
+ isXML = isXML && len == xmlLen;
+ isXMLNS = isXMLNS && len == xmlnsLen;
+
+ if (mustBeXML != isXML)
+ return mustBeXML ? XML_ERROR_RESERVED_PREFIX_XML
+ : XML_ERROR_RESERVED_NAMESPACE_URI;
+
+ if (isXMLNS)
+ return XML_ERROR_RESERVED_NAMESPACE_URI;
+
+ if (namespaceSeparator)
+ len++;
+ if (freeBindingList) {
+ b = freeBindingList;
+ if (len > b->uriAlloc) {
+ XML_Char *temp = (XML_Char *)REALLOC(b->uri,
+ sizeof(XML_Char) * (len + EXPAND_SPARE));
+ if (temp == NULL)
+ return XML_ERROR_NO_MEMORY;
+ b->uri = temp;
+ b->uriAlloc = len + EXPAND_SPARE;
+ }
+ freeBindingList = b->nextTagBinding;
+ }
+ else {
+ b = (BINDING *)MALLOC(sizeof(BINDING));
+ if (!b)
+ return XML_ERROR_NO_MEMORY;
+ b->uri = (XML_Char *)MALLOC(sizeof(XML_Char) * (len + EXPAND_SPARE));
+ if (!b->uri) {
+ FREE(b);
+ return XML_ERROR_NO_MEMORY;
+ }
+ b->uriAlloc = len + EXPAND_SPARE;
+ }
+ b->uriLen = len;
+ memcpy(b->uri, uri, len * sizeof(XML_Char));
+ if (namespaceSeparator)
+ b->uri[len - 1] = namespaceSeparator;
+ b->prefix = prefix;
+ b->attId = attId;
+ b->prevPrefixBinding = prefix->binding;
+ /* NULL binding when default namespace undeclared */
+ if (*uri == XML_T('\0') && prefix == &_dtd->defaultPrefix)
+ prefix->binding = NULL;
+ else
+ prefix->binding = b;
+ b->nextTagBinding = *bindingsPtr;
+ *bindingsPtr = b;
+ /* if attId == NULL then we are not starting a namespace scope */
+ if (attId && startNamespaceDeclHandler)
+ startNamespaceDeclHandler(handlerArg, prefix->name,
+ prefix->binding ? uri : 0);
+ return XML_ERROR_NONE;
+}
+
+/* The idea here is to avoid using stack for each CDATA section when
+ the whole file is parsed with one call.
+*/
+static enum XML_Error PTRCALL
+cdataSectionProcessor(XML_Parser parser,
+ const char *start,
+ const char *end,
+ const char **endPtr)
+{
+ enum XML_Error result = doCdataSection(parser, encoding, &start, end,
+ endPtr, (XML_Bool)!ps_finalBuffer);
+ if (result != XML_ERROR_NONE)
+ return result;
+ if (start) {
+ if (parentParser) { /* we are parsing an external entity */
+ processor = externalEntityContentProcessor;
+ return externalEntityContentProcessor(parser, start, end, endPtr);
+ }
+ else {
+ processor = contentProcessor;
+ return contentProcessor(parser, start, end, endPtr);
+ }
+ }
+ return result;
+}
+
+/* startPtr gets set to non-null if the section is closed, and to null if
+ the section is not yet closed.
+*/
+static enum XML_Error
+doCdataSection(XML_Parser parser,
+ const ENCODING *enc,
+ const char **startPtr,
+ const char *end,
+ const char **nextPtr,
+ XML_Bool haveMore)
+{
+ const char *s = *startPtr;
+ const char **eventPP;
+ const char **eventEndPP;
+ if (enc == encoding) {
+ eventPP = &eventPtr;
+ *eventPP = s;
+ eventEndPP = &eventEndPtr;
+ }
+ else {
+ eventPP = &(openInternalEntities->internalEventPtr);
+ eventEndPP = &(openInternalEntities->internalEventEndPtr);
+ }
+ *eventPP = s;
+ *startPtr = NULL;
+
+ for (;;) {
+ const char *next;
+ int tok = XmlCdataSectionTok(enc, s, end, &next);
+ *eventEndPP = next;
+ switch (tok) {
+ case XML_TOK_CDATA_SECT_CLOSE:
+ if (endCdataSectionHandler)
+ endCdataSectionHandler(handlerArg);
+#if 0
+ /* see comment under XML_TOK_CDATA_SECT_OPEN */
+ else if (characterDataHandler)
+ characterDataHandler(handlerArg, dataBuf, 0);
+#endif
+ else if (defaultHandler)
+ reportDefault(parser, enc, s, next);
+ *startPtr = next;
+ *nextPtr = next;
+ if (ps_parsing == XML_FINISHED)
+ return XML_ERROR_ABORTED;
+ else
+ return XML_ERROR_NONE;
+ case XML_TOK_DATA_NEWLINE:
+ if (characterDataHandler) {
+ XML_Char c = 0xA;
+ characterDataHandler(handlerArg, &c, 1);
+ }
+ else if (defaultHandler)
+ reportDefault(parser, enc, s, next);
+ break;
+ case XML_TOK_DATA_CHARS:
+ if (characterDataHandler) {
+ if (MUST_CONVERT(enc, s)) {
+ for (;;) {
+ ICHAR *dataPtr = (ICHAR *)dataBuf;
+ XmlConvert(enc, &s, next, &dataPtr, (ICHAR *)dataBufEnd);
+ *eventEndPP = next;
+ characterDataHandler(handlerArg, dataBuf,
+ (int)(dataPtr - (ICHAR *)dataBuf));
+ if (s == next)
+ break;
+ *eventPP = s;
+ }
+ }
+ else
+ characterDataHandler(handlerArg,
+ (XML_Char *)s,
+ (int)((XML_Char *)next - (XML_Char *)s));
+ }
+ else if (defaultHandler)
+ reportDefault(parser, enc, s, next);
+ break;
+ case XML_TOK_INVALID:
+ *eventPP = next;
+ return XML_ERROR_INVALID_TOKEN;
+ case XML_TOK_PARTIAL_CHAR:
+ if (haveMore) {
+ *nextPtr = s;
+ return XML_ERROR_NONE;
+ }
+ return XML_ERROR_PARTIAL_CHAR;
+ case XML_TOK_PARTIAL:
+ case XML_TOK_NONE:
+ if (haveMore) {
+ *nextPtr = s;
+ return XML_ERROR_NONE;
+ }
+ return XML_ERROR_UNCLOSED_CDATA_SECTION;
+ default:
+ *eventPP = next;
+ return XML_ERROR_UNEXPECTED_STATE;
+ }
+
+ *eventPP = s = next;
+ switch (ps_parsing) {
+ case XML_SUSPENDED:
+ *nextPtr = next;
+ return XML_ERROR_NONE;
+ case XML_FINISHED:
+ return XML_ERROR_ABORTED;
+ default: ;
+ }
+ }
+ /* not reached */
+}
+
+#ifdef XML_DTD
+
+/* The idea here is to avoid using stack for each IGNORE section when
+ the whole file is parsed with one call.
+*/
+static enum XML_Error PTRCALL
+ignoreSectionProcessor(XML_Parser parser,
+ const char *start,
+ const char *end,
+ const char **endPtr)
+{
+ enum XML_Error result = doIgnoreSection(parser, encoding, &start, end,
+ endPtr, (XML_Bool)!ps_finalBuffer);
+ if (result != XML_ERROR_NONE)
+ return result;
+ if (start) {
+ processor = prologProcessor;
+ return prologProcessor(parser, start, end, endPtr);
+ }
+ return result;
+}
+
+/* startPtr gets set to non-null is the section is closed, and to null
+ if the section is not yet closed.
+*/
+static enum XML_Error
+doIgnoreSection(XML_Parser parser,
+ const ENCODING *enc,
+ const char **startPtr,
+ const char *end,
+ const char **nextPtr,
+ XML_Bool haveMore)
+{
+ const char *next;
+ int tok;
+ const char *s = *startPtr;
+ const char **eventPP;
+ const char **eventEndPP;
+ if (enc == encoding) {
+ eventPP = &eventPtr;
+ *eventPP = s;
+ eventEndPP = &eventEndPtr;
+ }
+ else {
+ eventPP = &(openInternalEntities->internalEventPtr);
+ eventEndPP = &(openInternalEntities->internalEventEndPtr);
+ }
+ *eventPP = s;
+ *startPtr = NULL;
+ tok = XmlIgnoreSectionTok(enc, s, end, &next);
+ *eventEndPP = next;
+ switch (tok) {
+ case XML_TOK_IGNORE_SECT:
+ if (defaultHandler)
+ reportDefault(parser, enc, s, next);
+ *startPtr = next;
+ *nextPtr = next;
+ if (ps_parsing == XML_FINISHED)
+ return XML_ERROR_ABORTED;
+ else
+ return XML_ERROR_NONE;
+ case XML_TOK_INVALID:
+ *eventPP = next;
+ return XML_ERROR_INVALID_TOKEN;
+ case XML_TOK_PARTIAL_CHAR:
+ if (haveMore) {
+ *nextPtr = s;
+ return XML_ERROR_NONE;
+ }
+ return XML_ERROR_PARTIAL_CHAR;
+ case XML_TOK_PARTIAL:
+ case XML_TOK_NONE:
+ if (haveMore) {
+ *nextPtr = s;
+ return XML_ERROR_NONE;
+ }
+ return XML_ERROR_SYNTAX; /* XML_ERROR_UNCLOSED_IGNORE_SECTION */
+ default:
+ *eventPP = next;
+ return XML_ERROR_UNEXPECTED_STATE;
+ }
+ /* not reached */
+}
+
+#endif /* XML_DTD */
+
+static enum XML_Error
+initializeEncoding(XML_Parser parser)
+{
+ const char *s;
+#ifdef XML_UNICODE
+ char encodingBuf[128];
+ if (!protocolEncodingName)
+ s = NULL;
+ else {
+ int i;
+ for (i = 0; protocolEncodingName[i]; i++) {
+ if (i == sizeof(encodingBuf) - 1
+ || (protocolEncodingName[i] & ~0x7f) != 0) {
+ encodingBuf[0] = '\0';
+ break;
+ }
+ encodingBuf[i] = (char)protocolEncodingName[i];
+ }
+ encodingBuf[i] = '\0';
+ s = encodingBuf;
+ }
+#else
+ s = protocolEncodingName;
+#endif
+ if ((ns ? XmlInitEncodingNS : XmlInitEncoding)(&initEncoding, &encoding, s))
+ return XML_ERROR_NONE;
+ return handleUnknownEncoding(parser, protocolEncodingName);
+}
+
+static enum XML_Error
+processXmlDecl(XML_Parser parser, int isGeneralTextEntity,
+ const char *s, const char *next)
+{
+ const char *encodingName = NULL;
+ const XML_Char *storedEncName = NULL;
+ const ENCODING *newEncoding = NULL;
+ const char *version = NULL;
+ const char *versionend;
+ const XML_Char *storedversion = NULL;
+ int standalone = -1;
+ if (!(ns
+ ? XmlParseXmlDeclNS
+ : XmlParseXmlDecl)(isGeneralTextEntity,
+ encoding,
+ s,
+ next,
+ &eventPtr,
+ &version,
+ &versionend,
+ &encodingName,
+ &newEncoding,
+ &standalone)) {
+ if (isGeneralTextEntity)
+ return XML_ERROR_TEXT_DECL;
+ else
+ return XML_ERROR_XML_DECL;
+ }
+ if (!isGeneralTextEntity && standalone == 1) {
+ _dtd->standalone = XML_TRUE;
+#ifdef XML_DTD
+ if (paramEntityParsing == XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE)
+ paramEntityParsing = XML_PARAM_ENTITY_PARSING_NEVER;
+#endif /* XML_DTD */
+ }
+ if (xmlDeclHandler) {
+ if (encodingName != NULL) {
+ storedEncName = poolStoreString(&temp2Pool,
+ encoding,
+ encodingName,
+ encodingName
+ + XmlNameLength(encoding, encodingName));
+ if (!storedEncName)
+ return XML_ERROR_NO_MEMORY;
+ poolFinish(&temp2Pool);
+ }
+ if (version) {
+ storedversion = poolStoreString(&temp2Pool,
+ encoding,
+ version,
+ versionend - encoding->minBytesPerChar);
+ if (!storedversion)
+ return XML_ERROR_NO_MEMORY;
+ }
+ xmlDeclHandler(handlerArg, storedversion, storedEncName, standalone);
+ }
+ else if (defaultHandler)
+ reportDefault(parser, encoding, s, next);
+ if (protocolEncodingName == NULL) {
+ if (newEncoding) {
+ if (newEncoding->minBytesPerChar != encoding->minBytesPerChar) {
+ eventPtr = encodingName;
+ return XML_ERROR_INCORRECT_ENCODING;
+ }
+ encoding = newEncoding;
+ }
+ else if (encodingName) {
+ enum XML_Error result;
+ if (!storedEncName) {
+ storedEncName = poolStoreString(
+ &temp2Pool, encoding, encodingName,
+ encodingName + XmlNameLength(encoding, encodingName));
+ if (!storedEncName)
+ return XML_ERROR_NO_MEMORY;
+ }
+ result = handleUnknownEncoding(parser, storedEncName);
+ poolClear(&temp2Pool);
+ if (result == XML_ERROR_UNKNOWN_ENCODING)
+ eventPtr = encodingName;
+ return result;
+ }
+ }
+
+ if (storedEncName || storedversion)
+ poolClear(&temp2Pool);
+
+ return XML_ERROR_NONE;
+}
+
+static enum XML_Error
+handleUnknownEncoding(XML_Parser parser, const XML_Char *encodingName)
+{
+ if (unknownEncodingHandler) {
+ XML_Encoding info;
+ int i;
+ for (i = 0; i < 256; i++)
+ info.map[i] = -1;
+ info.convert = NULL;
+ info.data = NULL;
+ info.release = NULL;
+ if (unknownEncodingHandler(unknownEncodingHandlerData, encodingName,
+ &info)) {
+ ENCODING *enc;
+ unknownEncodingMem = MALLOC(XmlSizeOfUnknownEncoding());
+ if (!unknownEncodingMem) {
+ if (info.release)
+ info.release(info.data);
+ return XML_ERROR_NO_MEMORY;
+ }
+ enc = (ns
+ ? XmlInitUnknownEncodingNS
+ : XmlInitUnknownEncoding)(unknownEncodingMem,
+ info.map,
+ info.convert,
+ info.data);
+ if (enc) {
+ unknownEncodingData = info.data;
+ unknownEncodingRelease = info.release;
+ encoding = enc;
+ return XML_ERROR_NONE;
+ }
+ }
+ if (info.release != NULL)
+ info.release(info.data);
+ }
+ return XML_ERROR_UNKNOWN_ENCODING;
+}
+
+static enum XML_Error PTRCALL
+prologInitProcessor(XML_Parser parser,
+ const char *s,
+ const char *end,
+ const char **nextPtr)
+{
+ enum XML_Error result = initializeEncoding(parser);
+ if (result != XML_ERROR_NONE)
+ return result;
+ processor = prologProcessor;
+ return prologProcessor(parser, s, end, nextPtr);
+}
+
+#ifdef XML_DTD
+
+static enum XML_Error PTRCALL
+externalParEntInitProcessor(XML_Parser parser,
+ const char *s,
+ const char *end,
+ const char **nextPtr)
+{
+ enum XML_Error result = initializeEncoding(parser);
+ if (result != XML_ERROR_NONE)
+ return result;
+
+ /* we know now that XML_Parse(Buffer) has been called,
+ so we consider the external parameter entity read */
+ _dtd->paramEntityRead = XML_TRUE;
+
+ if (prologState.inEntityValue) {
+ processor = entityValueInitProcessor;
+ return entityValueInitProcessor(parser, s, end, nextPtr);
+ }
+ else {
+ processor = externalParEntProcessor;
+ return externalParEntProcessor(parser, s, end, nextPtr);
+ }
+}
+
+static enum XML_Error PTRCALL
+entityValueInitProcessor(XML_Parser parser,
+ const char *s,
+ const char *end,
+ const char **nextPtr)
+{
+ int tok;
+ const char *start = s;
+ const char *next = start;
+ eventPtr = start;
+
+ for (;;) {
+ tok = XmlPrologTok(encoding, start, end, &next);
+ eventEndPtr = next;
+ if (tok <= 0) {
+ if (!ps_finalBuffer && tok != XML_TOK_INVALID) {
+ *nextPtr = s;
+ return XML_ERROR_NONE;
+ }
+ switch (tok) {
+ case XML_TOK_INVALID:
+ return XML_ERROR_INVALID_TOKEN;
+ case XML_TOK_PARTIAL:
+ return XML_ERROR_UNCLOSED_TOKEN;
+ case XML_TOK_PARTIAL_CHAR:
+ return XML_ERROR_PARTIAL_CHAR;
+ case XML_TOK_NONE: /* start == end */
+ default:
+ break;
+ }
+ /* found end of entity value - can store it now */
+ return storeEntityValue(parser, encoding, s, end);
+ }
+ else if (tok == XML_TOK_XML_DECL) {
+ enum XML_Error result;
+ result = processXmlDecl(parser, 0, start, next);
+ if (result != XML_ERROR_NONE)
+ return result;
+ switch (ps_parsing) {
+ case XML_SUSPENDED:
+ *nextPtr = next;
+ return XML_ERROR_NONE;
+ case XML_FINISHED:
+ return XML_ERROR_ABORTED;
+ default:
+ *nextPtr = next;
+ }
+ /* stop scanning for text declaration - we found one */
+ processor = entityValueProcessor;
+ return entityValueProcessor(parser, next, end, nextPtr);
+ }
+ /* If we are at the end of the buffer, this would cause XmlPrologTok to
+ return XML_TOK_NONE on the next call, which would then cause the
+ function to exit with *nextPtr set to s - that is what we want for other
+ tokens, but not for the BOM - we would rather like to skip it;
+ then, when this routine is entered the next time, XmlPrologTok will
+ return XML_TOK_INVALID, since the BOM is still in the buffer
+ */
+ else if (tok == XML_TOK_BOM && next == end && !ps_finalBuffer) {
+ *nextPtr = next;
+ return XML_ERROR_NONE;
+ }
+ start = next;
+ eventPtr = start;
+ }
+}
+
+static enum XML_Error PTRCALL
+externalParEntProcessor(XML_Parser parser,
+ const char *s,
+ const char *end,
+ const char **nextPtr)
+{
+ const char *next = s;
+ int tok;
+
+ tok = XmlPrologTok(encoding, s, end, &next);
+ if (tok <= 0) {
+ if (!ps_finalBuffer && tok != XML_TOK_INVALID) {
+ *nextPtr = s;
+ return XML_ERROR_NONE;
+ }
+ switch (tok) {
+ case XML_TOK_INVALID:
+ return XML_ERROR_INVALID_TOKEN;
+ case XML_TOK_PARTIAL:
+ return XML_ERROR_UNCLOSED_TOKEN;
+ case XML_TOK_PARTIAL_CHAR:
+ return XML_ERROR_PARTIAL_CHAR;
+ case XML_TOK_NONE: /* start == end */
+ default:
+ break;
+ }
+ }
+ /* This would cause the next stage, i.e. doProlog to be passed XML_TOK_BOM.
+ However, when parsing an external subset, doProlog will not accept a BOM
+ as valid, and report a syntax error, so we have to skip the BOM
+ */
+ else if (tok == XML_TOK_BOM) {
+ s = next;
+ tok = XmlPrologTok(encoding, s, end, &next);
+ }
+
+ processor = prologProcessor;
+ return doProlog(parser, encoding, s, end, tok, next,
+ nextPtr, (XML_Bool)!ps_finalBuffer);
+}
+
+static enum XML_Error PTRCALL
+entityValueProcessor(XML_Parser parser,
+ const char *s,
+ const char *end,
+ const char **nextPtr)
+{
+ const char *start = s;
+ const char *next = s;
+ const ENCODING *enc = encoding;
+ int tok;
+
+ for (;;) {
+ tok = XmlPrologTok(enc, start, end, &next);
+ if (tok <= 0) {
+ if (!ps_finalBuffer && tok != XML_TOK_INVALID) {
+ *nextPtr = s;
+ return XML_ERROR_NONE;
+ }
+ switch (tok) {
+ case XML_TOK_INVALID:
+ return XML_ERROR_INVALID_TOKEN;
+ case XML_TOK_PARTIAL:
+ return XML_ERROR_UNCLOSED_TOKEN;
+ case XML_TOK_PARTIAL_CHAR:
+ return XML_ERROR_PARTIAL_CHAR;
+ case XML_TOK_NONE: /* start == end */
+ default:
+ break;
+ }
+ /* found end of entity value - can store it now */
+ return storeEntityValue(parser, enc, s, end);
+ }
+ start = next;
+ }
+}
+
+#endif /* XML_DTD */
+
+static enum XML_Error PTRCALL
+prologProcessor(XML_Parser parser,
+ const char *s,
+ const char *end,
+ const char **nextPtr)
+{
+ const char *next = s;
+ int tok = XmlPrologTok(encoding, s, end, &next);
+ return doProlog(parser, encoding, s, end, tok, next,
+ nextPtr, (XML_Bool)!ps_finalBuffer);
+}
+
+static enum XML_Error
+doProlog(XML_Parser parser,
+ const ENCODING *enc,
+ const char *s,
+ const char *end,
+ int tok,
+ const char *next,
+ const char **nextPtr,
+ XML_Bool haveMore)
+{
+#ifdef XML_DTD
+ static const XML_Char externalSubsetName[] = { '#' , '\0' };
+#endif /* XML_DTD */
+ static const XML_Char atypeCDATA[] = { 'C', 'D', 'A', 'T', 'A', '\0' };
+ static const XML_Char atypeID[] = { 'I', 'D', '\0' };
+ static const XML_Char atypeIDREF[] = { 'I', 'D', 'R', 'E', 'F', '\0' };
+ static const XML_Char atypeIDREFS[] = { 'I', 'D', 'R', 'E', 'F', 'S', '\0' };
+ static const XML_Char atypeENTITY[] = { 'E', 'N', 'T', 'I', 'T', 'Y', '\0' };
+ static const XML_Char atypeENTITIES[] =
+ { 'E', 'N', 'T', 'I', 'T', 'I', 'E', 'S', '\0' };
+ static const XML_Char atypeNMTOKEN[] = {
+ 'N', 'M', 'T', 'O', 'K', 'E', 'N', '\0' };
+ static const XML_Char atypeNMTOKENS[] = {
+ 'N', 'M', 'T', 'O', 'K', 'E', 'N', 'S', '\0' };
+ static const XML_Char notationPrefix[] = {
+ 'N', 'O', 'T', 'A', 'T', 'I', 'O', 'N', '(', '\0' };
+ static const XML_Char enumValueSep[] = { '|', '\0' };
+ static const XML_Char enumValueStart[] = { '(', '\0' };
+
+ /* save one level of indirection */
+ DTD * const dtd = _dtd;
+
+ const char **eventPP;
+ const char **eventEndPP;
+ enum XML_Content_Quant quant;
+
+ if (enc == encoding) {
+ eventPP = &eventPtr;
+ eventEndPP = &eventEndPtr;
+ }
+ else {
+ eventPP = &(openInternalEntities->internalEventPtr);
+ eventEndPP = &(openInternalEntities->internalEventEndPtr);
+ }
+
+ for (;;) {
+ int role;
+ XML_Bool handleDefault = XML_TRUE;
+ *eventPP = s;
+ *eventEndPP = next;
+ if (tok <= 0) {
+ if (haveMore && tok != XML_TOK_INVALID) {
+ *nextPtr = s;
+ return XML_ERROR_NONE;
+ }
+ switch (tok) {
+ case XML_TOK_INVALID:
+ *eventPP = next;
+ return XML_ERROR_INVALID_TOKEN;
+ case XML_TOK_PARTIAL:
+ return XML_ERROR_UNCLOSED_TOKEN;
+ case XML_TOK_PARTIAL_CHAR:
+ return XML_ERROR_PARTIAL_CHAR;
+ case XML_TOK_NONE:
+#ifdef XML_DTD
+ /* for internal PE NOT referenced between declarations */
+ if (enc != encoding && !openInternalEntities->betweenDecl) {
+ *nextPtr = s;
+ return XML_ERROR_NONE;
+ }
+ /* WFC: PE Between Declarations - must check that PE contains
+ complete markup, not only for external PEs, but also for
+ internal PEs if the reference occurs between declarations.
+ */
+ if (isParamEntity || enc != encoding) {
+ if (XmlTokenRole(&prologState, XML_TOK_NONE, end, end, enc)
+ == XML_ROLE_ERROR)
+ return XML_ERROR_INCOMPLETE_PE;
+ *nextPtr = s;
+ return XML_ERROR_NONE;
+ }
+#endif /* XML_DTD */
+ return XML_ERROR_NO_ELEMENTS;
+ default:
+ tok = -tok;
+ next = end;
+ break;
+ }
+ }
+ role = XmlTokenRole(&prologState, tok, s, next, enc);
+ switch (role) {
+ case XML_ROLE_XML_DECL:
+ {
+ enum XML_Error result = processXmlDecl(parser, 0, s, next);
+ if (result != XML_ERROR_NONE)
+ return result;
+ enc = encoding;
+ handleDefault = XML_FALSE;
+ }
+ break;
+ case XML_ROLE_DOCTYPE_NAME:
+ if (startDoctypeDeclHandler) {
+ doctypeName = poolStoreString(&tempPool, enc, s, next);
+ if (!doctypeName)
+ return XML_ERROR_NO_MEMORY;
+ poolFinish(&tempPool);
+ doctypePubid = NULL;
+ handleDefault = XML_FALSE;
+ }
+ doctypeSysid = NULL; /* always initialize to NULL */
+ break;
+ case XML_ROLE_DOCTYPE_INTERNAL_SUBSET:
+ if (startDoctypeDeclHandler) {
+ startDoctypeDeclHandler(handlerArg, doctypeName, doctypeSysid,
+ doctypePubid, 1);
+ doctypeName = NULL;
+ poolClear(&tempPool);
+ handleDefault = XML_FALSE;
+ }
+ break;
+#ifdef XML_DTD
+ case XML_ROLE_TEXT_DECL:
+ {
+ enum XML_Error result = processXmlDecl(parser, 1, s, next);
+ if (result != XML_ERROR_NONE)
+ return result;
+ enc = encoding;
+ handleDefault = XML_FALSE;
+ }
+ break;
+#endif /* XML_DTD */
+ case XML_ROLE_DOCTYPE_PUBLIC_ID:
+#ifdef XML_DTD
+ useForeignDTD = XML_FALSE;
+ declEntity = (ENTITY *)lookup(&dtd->paramEntities,
+ externalSubsetName,
+ sizeof(ENTITY));
+ if (!declEntity)
+ return XML_ERROR_NO_MEMORY;
+#endif /* XML_DTD */
+ dtd->hasParamEntityRefs = XML_TRUE;
+ if (startDoctypeDeclHandler) {
+ if (!XmlIsPublicId(enc, s, next, eventPP))
+ return XML_ERROR_PUBLICID;
+ doctypePubid = poolStoreString(&tempPool, enc,
+ s + enc->minBytesPerChar,
+ next - enc->minBytesPerChar);
+ if (!doctypePubid)
+ return XML_ERROR_NO_MEMORY;
+ normalizePublicId((XML_Char *)doctypePubid);
+ poolFinish(&tempPool);
+ handleDefault = XML_FALSE;
+ goto alreadyChecked;
+ }
+ /* fall through */
+ case XML_ROLE_ENTITY_PUBLIC_ID:
+ if (!XmlIsPublicId(enc, s, next, eventPP))
+ return XML_ERROR_PUBLICID;
+ alreadyChecked:
+ if (dtd->keepProcessing && declEntity) {
+ XML_Char *tem = poolStoreString(&dtd->pool,
+ enc,
+ s + enc->minBytesPerChar,
+ next - enc->minBytesPerChar);
+ if (!tem)
+ return XML_ERROR_NO_MEMORY;
+ normalizePublicId(tem);
+ declEntity->publicId = tem;
+ poolFinish(&dtd->pool);
+ if (entityDeclHandler)
+ handleDefault = XML_FALSE;
+ }
+ break;
+ case XML_ROLE_DOCTYPE_CLOSE:
+ if (doctypeName) {
+ startDoctypeDeclHandler(handlerArg, doctypeName,
+ doctypeSysid, doctypePubid, 0);
+ poolClear(&tempPool);
+ handleDefault = XML_FALSE;
+ }
+ /* doctypeSysid will be non-NULL in the case of a previous
+ XML_ROLE_DOCTYPE_SYSTEM_ID, even if startDoctypeDeclHandler
+ was not set, indicating an external subset
+ */
+#ifdef XML_DTD
+ if (doctypeSysid || useForeignDTD) {
+ XML_Bool hadParamEntityRefs = dtd->hasParamEntityRefs;
+ dtd->hasParamEntityRefs = XML_TRUE;
+ if (paramEntityParsing && externalEntityRefHandler) {
+ ENTITY *entity = (ENTITY *)lookup(&dtd->paramEntities,
+ externalSubsetName,
+ sizeof(ENTITY));
+ if (!entity)
+ return XML_ERROR_NO_MEMORY;
+ if (useForeignDTD)
+ entity->base = curBase;
+ dtd->paramEntityRead = XML_FALSE;
+ if (!externalEntityRefHandler(externalEntityRefHandlerArg,
+ 0,
+ entity->base,
+ entity->systemId,
+ entity->publicId))
+ return XML_ERROR_EXTERNAL_ENTITY_HANDLING;
+ if (dtd->paramEntityRead) {
+ if (!dtd->standalone &&
+ notStandaloneHandler &&
+ !notStandaloneHandler(handlerArg))
+ return XML_ERROR_NOT_STANDALONE;
+ }
+ /* if we didn't read the foreign DTD then this means that there
+ is no external subset and we must reset dtd->hasParamEntityRefs
+ */
+ else if (!doctypeSysid)
+ dtd->hasParamEntityRefs = hadParamEntityRefs;
+ /* end of DTD - no need to update dtd->keepProcessing */
+ }
+ useForeignDTD = XML_FALSE;
+ }
+#endif /* XML_DTD */
+ if (endDoctypeDeclHandler) {
+ endDoctypeDeclHandler(handlerArg);
+ handleDefault = XML_FALSE;
+ }
+ break;
+ case XML_ROLE_INSTANCE_START:
+#ifdef XML_DTD
+ /* if there is no DOCTYPE declaration then now is the
+ last chance to read the foreign DTD
+ */
+ if (useForeignDTD) {
+ XML_Bool hadParamEntityRefs = dtd->hasParamEntityRefs;
+ dtd->hasParamEntityRefs = XML_TRUE;
+ if (paramEntityParsing && externalEntityRefHandler) {
+ ENTITY *entity = (ENTITY *)lookup(&dtd->paramEntities,
+ externalSubsetName,
+ sizeof(ENTITY));
+ if (!entity)
+ return XML_ERROR_NO_MEMORY;
+ entity->base = curBase;
+ dtd->paramEntityRead = XML_FALSE;
+ if (!externalEntityRefHandler(externalEntityRefHandlerArg,
+ 0,
+ entity->base,
+ entity->systemId,
+ entity->publicId))
+ return XML_ERROR_EXTERNAL_ENTITY_HANDLING;
+ if (dtd->paramEntityRead) {
+ if (!dtd->standalone &&
+ notStandaloneHandler &&
+ !notStandaloneHandler(handlerArg))
+ return XML_ERROR_NOT_STANDALONE;
+ }
+ /* if we didn't read the foreign DTD then this means that there
+ is no external subset and we must reset dtd->hasParamEntityRefs
+ */
+ else
+ dtd->hasParamEntityRefs = hadParamEntityRefs;
+ /* end of DTD - no need to update dtd->keepProcessing */
+ }
+ }
+#endif /* XML_DTD */
+ processor = contentProcessor;
+ return contentProcessor(parser, s, end, nextPtr);
+ case XML_ROLE_ATTLIST_ELEMENT_NAME:
+ declElementType = getElementType(parser, enc, s, next);
+ if (!declElementType)
+ return XML_ERROR_NO_MEMORY;
+ goto checkAttListDeclHandler;
+ case XML_ROLE_ATTRIBUTE_NAME:
+ declAttributeId = getAttributeId(parser, enc, s, next);
+ if (!declAttributeId)
+ return XML_ERROR_NO_MEMORY;
+ declAttributeIsCdata = XML_FALSE;
+ declAttributeType = NULL;
+ declAttributeIsId = XML_FALSE;
+ goto checkAttListDeclHandler;
+ case XML_ROLE_ATTRIBUTE_TYPE_CDATA:
+ declAttributeIsCdata = XML_TRUE;
+ declAttributeType = atypeCDATA;
+ goto checkAttListDeclHandler;
+ case XML_ROLE_ATTRIBUTE_TYPE_ID:
+ declAttributeIsId = XML_TRUE;
+ declAttributeType = atypeID;
+ goto checkAttListDeclHandler;
+ case XML_ROLE_ATTRIBUTE_TYPE_IDREF:
+ declAttributeType = atypeIDREF;
+ goto checkAttListDeclHandler;
+ case XML_ROLE_ATTRIBUTE_TYPE_IDREFS:
+ declAttributeType = atypeIDREFS;
+ goto checkAttListDeclHandler;
+ case XML_ROLE_ATTRIBUTE_TYPE_ENTITY:
+ declAttributeType = atypeENTITY;
+ goto checkAttListDeclHandler;
+ case XML_ROLE_ATTRIBUTE_TYPE_ENTITIES:
+ declAttributeType = atypeENTITIES;
+ goto checkAttListDeclHandler;
+ case XML_ROLE_ATTRIBUTE_TYPE_NMTOKEN:
+ declAttributeType = atypeNMTOKEN;
+ goto checkAttListDeclHandler;
+ case XML_ROLE_ATTRIBUTE_TYPE_NMTOKENS:
+ declAttributeType = atypeNMTOKENS;
+ checkAttListDeclHandler:
+ if (dtd->keepProcessing && attlistDeclHandler)
+ handleDefault = XML_FALSE;
+ break;
+ case XML_ROLE_ATTRIBUTE_ENUM_VALUE:
+ case XML_ROLE_ATTRIBUTE_NOTATION_VALUE:
+ if (dtd->keepProcessing && attlistDeclHandler) {
+ const XML_Char *prefix;
+ if (declAttributeType) {
+ prefix = enumValueSep;
+ }
+ else {
+ prefix = (role == XML_ROLE_ATTRIBUTE_NOTATION_VALUE
+ ? notationPrefix
+ : enumValueStart);
+ }
+ if (!poolAppendString(&tempPool, prefix))
+ return XML_ERROR_NO_MEMORY;
+ if (!poolAppend(&tempPool, enc, s, next))
+ return XML_ERROR_NO_MEMORY;
+ declAttributeType = tempPool.start;
+ handleDefault = XML_FALSE;
+ }
+ break;
+ case XML_ROLE_IMPLIED_ATTRIBUTE_VALUE:
+ case XML_ROLE_REQUIRED_ATTRIBUTE_VALUE:
+ if (dtd->keepProcessing) {
+ if (!defineAttribute(declElementType, declAttributeId,
+ declAttributeIsCdata, declAttributeIsId,
+ 0, parser))
+ return XML_ERROR_NO_MEMORY;
+ if (attlistDeclHandler && declAttributeType) {
+ if (*declAttributeType == XML_T('(')
+ || (*declAttributeType == XML_T('N')
+ && declAttributeType[1] == XML_T('O'))) {
+ /* Enumerated or Notation type */
+ if (!poolAppendChar(&tempPool, XML_T(')'))
+ || !poolAppendChar(&tempPool, XML_T('\0')))
+ return XML_ERROR_NO_MEMORY;
+ declAttributeType = tempPool.start;
+ poolFinish(&tempPool);
+ }
+ *eventEndPP = s;
+ attlistDeclHandler(handlerArg, declElementType->name,
+ declAttributeId->name, declAttributeType,
+ 0, role == XML_ROLE_REQUIRED_ATTRIBUTE_VALUE);
+ poolClear(&tempPool);
+ handleDefault = XML_FALSE;
+ }
+ }
+ break;
+ case XML_ROLE_DEFAULT_ATTRIBUTE_VALUE:
+ case XML_ROLE_FIXED_ATTRIBUTE_VALUE:
+ if (dtd->keepProcessing) {
+ const XML_Char *attVal;
+ enum XML_Error result =
+ storeAttributeValue(parser, enc, declAttributeIsCdata,
+ s + enc->minBytesPerChar,
+ next - enc->minBytesPerChar,
+ &dtd->pool);
+ if (result)
+ return result;
+ attVal = poolStart(&dtd->pool);
+ poolFinish(&dtd->pool);
+ /* ID attributes aren't allowed to have a default */
+ if (!defineAttribute(declElementType, declAttributeId,
+ declAttributeIsCdata, XML_FALSE, attVal, parser))
+ return XML_ERROR_NO_MEMORY;
+ if (attlistDeclHandler && declAttributeType) {
+ if (*declAttributeType == XML_T('(')
+ || (*declAttributeType == XML_T('N')
+ && declAttributeType[1] == XML_T('O'))) {
+ /* Enumerated or Notation type */
+ if (!poolAppendChar(&tempPool, XML_T(')'))
+ || !poolAppendChar(&tempPool, XML_T('\0')))
+ return XML_ERROR_NO_MEMORY;
+ declAttributeType = tempPool.start;
+ poolFinish(&tempPool);
+ }
+ *eventEndPP = s;
+ attlistDeclHandler(handlerArg, declElementType->name,
+ declAttributeId->name, declAttributeType,
+ attVal,
+ role == XML_ROLE_FIXED_ATTRIBUTE_VALUE);
+ poolClear(&tempPool);
+ handleDefault = XML_FALSE;
+ }
+ }
+ break;
+ case XML_ROLE_ENTITY_VALUE:
+ if (dtd->keepProcessing) {
+ enum XML_Error result = storeEntityValue(parser, enc,
+ s + enc->minBytesPerChar,
+ next - enc->minBytesPerChar);
+ if (declEntity) {
+ declEntity->textPtr = poolStart(&dtd->entityValuePool);
+ declEntity->textLen = (int)(poolLength(&dtd->entityValuePool));
+ poolFinish(&dtd->entityValuePool);
+ if (entityDeclHandler) {
+ *eventEndPP = s;
+ entityDeclHandler(handlerArg,
+ declEntity->name,
+ declEntity->is_param,
+ declEntity->textPtr,
+ declEntity->textLen,
+ curBase, 0, 0, 0);
+ handleDefault = XML_FALSE;
+ }
+ }
+ else
+ poolDiscard(&dtd->entityValuePool);
+ if (result != XML_ERROR_NONE)
+ return result;
+ }
+ break;
+ case XML_ROLE_DOCTYPE_SYSTEM_ID:
+#ifdef XML_DTD
+ useForeignDTD = XML_FALSE;
+#endif /* XML_DTD */
+ dtd->hasParamEntityRefs = XML_TRUE;
+ if (startDoctypeDeclHandler) {
+ doctypeSysid = poolStoreString(&tempPool, enc,
+ s + enc->minBytesPerChar,
+ next - enc->minBytesPerChar);
+ if (doctypeSysid == NULL)
+ return XML_ERROR_NO_MEMORY;
+ poolFinish(&tempPool);
+ handleDefault = XML_FALSE;
+ }
+#ifdef XML_DTD
+ else
+ /* use externalSubsetName to make doctypeSysid non-NULL
+ for the case where no startDoctypeDeclHandler is set */
+ doctypeSysid = externalSubsetName;
+#endif /* XML_DTD */
+ if (!dtd->standalone
+#ifdef XML_DTD
+ && !paramEntityParsing
+#endif /* XML_DTD */
+ && notStandaloneHandler
+ && !notStandaloneHandler(handlerArg))
+ return XML_ERROR_NOT_STANDALONE;
+#ifndef XML_DTD
+ break;
+#else /* XML_DTD */
+ if (!declEntity) {
+ declEntity = (ENTITY *)lookup(&dtd->paramEntities,
+ externalSubsetName,
+ sizeof(ENTITY));
+ if (!declEntity)
+ return XML_ERROR_NO_MEMORY;
+ declEntity->publicId = NULL;
+ }
+ /* fall through */
+#endif /* XML_DTD */
+ case XML_ROLE_ENTITY_SYSTEM_ID:
+ if (dtd->keepProcessing && declEntity) {
+ declEntity->systemId = poolStoreString(&dtd->pool, enc,
+ s + enc->minBytesPerChar,
+ next - enc->minBytesPerChar);
+ if (!declEntity->systemId)
+ return XML_ERROR_NO_MEMORY;
+ declEntity->base = curBase;
+ poolFinish(&dtd->pool);
+ if (entityDeclHandler)
+ handleDefault = XML_FALSE;
+ }
+ break;
+ case XML_ROLE_ENTITY_COMPLETE:
+ if (dtd->keepProcessing && declEntity && entityDeclHandler) {
+ *eventEndPP = s;
+ entityDeclHandler(handlerArg,
+ declEntity->name,
+ declEntity->is_param,
+ 0,0,
+ declEntity->base,
+ declEntity->systemId,
+ declEntity->publicId,
+ 0);
+ handleDefault = XML_FALSE;
+ }
+ break;
+ case XML_ROLE_ENTITY_NOTATION_NAME:
+ if (dtd->keepProcessing && declEntity) {
+ declEntity->notation = poolStoreString(&dtd->pool, enc, s, next);
+ if (!declEntity->notation)
+ return XML_ERROR_NO_MEMORY;
+ poolFinish(&dtd->pool);
+ if (unparsedEntityDeclHandler) {
+ *eventEndPP = s;
+ unparsedEntityDeclHandler(handlerArg,
+ declEntity->name,
+ declEntity->base,
+ declEntity->systemId,
+ declEntity->publicId,
+ declEntity->notation);
+ handleDefault = XML_FALSE;
+ }
+ else if (entityDeclHandler) {
+ *eventEndPP = s;
+ entityDeclHandler(handlerArg,
+ declEntity->name,
+ 0,0,0,
+ declEntity->base,
+ declEntity->systemId,
+ declEntity->publicId,
+ declEntity->notation);
+ handleDefault = XML_FALSE;
+ }
+ }
+ break;
+ case XML_ROLE_GENERAL_ENTITY_NAME:
+ {
+ if (XmlPredefinedEntityName(enc, s, next)) {
+ declEntity = NULL;
+ break;
+ }
+ if (dtd->keepProcessing) {
+ const XML_Char *name = poolStoreString(&dtd->pool, enc, s, next);
+ if (!name)
+ return XML_ERROR_NO_MEMORY;
+ declEntity = (ENTITY *)lookup(&dtd->generalEntities, name,
+ sizeof(ENTITY));
+ if (!declEntity)
+ return XML_ERROR_NO_MEMORY;
+ if (declEntity->name != name) {
+ poolDiscard(&dtd->pool);
+ declEntity = NULL;
+ }
+ else {
+ poolFinish(&dtd->pool);
+ declEntity->publicId = NULL;
+ declEntity->is_param = XML_FALSE;
+ /* if we have a parent parser or are reading an internal parameter
+ entity, then the entity declaration is not considered "internal"
+ */
+ declEntity->is_internal = !(parentParser || openInternalEntities);
+ if (entityDeclHandler)
+ handleDefault = XML_FALSE;
+ }
+ }
+ else {
+ poolDiscard(&dtd->pool);
+ declEntity = NULL;
+ }
+ }
+ break;
+ case XML_ROLE_PARAM_ENTITY_NAME:
+#ifdef XML_DTD
+ if (dtd->keepProcessing) {
+ const XML_Char *name = poolStoreString(&dtd->pool, enc, s, next);
+ if (!name)
+ return XML_ERROR_NO_MEMORY;
+ declEntity = (ENTITY *)lookup(&dtd->paramEntities,
+ name, sizeof(ENTITY));
+ if (!declEntity)
+ return XML_ERROR_NO_MEMORY;
+ if (declEntity->name != name) {
+ poolDiscard(&dtd->pool);
+ declEntity = NULL;
+ }
+ else {
+ poolFinish(&dtd->pool);
+ declEntity->publicId = NULL;
+ declEntity->is_param = XML_TRUE;
+ /* if we have a parent parser or are reading an internal parameter
+ entity, then the entity declaration is not considered "internal"
+ */
+ declEntity->is_internal = !(parentParser || openInternalEntities);
+ if (entityDeclHandler)
+ handleDefault = XML_FALSE;
+ }
+ }
+ else {
+ poolDiscard(&dtd->pool);
+ declEntity = NULL;
+ }
+#else /* not XML_DTD */
+ declEntity = NULL;
+#endif /* XML_DTD */
+ break;
+ case XML_ROLE_NOTATION_NAME:
+ declNotationPublicId = NULL;
+ declNotationName = NULL;
+ if (notationDeclHandler) {
+ declNotationName = poolStoreString(&tempPool, enc, s, next);
+ if (!declNotationName)
+ return XML_ERROR_NO_MEMORY;
+ poolFinish(&tempPool);
+ handleDefault = XML_FALSE;
+ }
+ break;
+ case XML_ROLE_NOTATION_PUBLIC_ID:
+ if (!XmlIsPublicId(enc, s, next, eventPP))
+ return XML_ERROR_PUBLICID;
+ if (declNotationName) { /* means notationDeclHandler != NULL */
+ XML_Char *tem = poolStoreString(&tempPool,
+ enc,
+ s + enc->minBytesPerChar,
+ next - enc->minBytesPerChar);
+ if (!tem)
+ return XML_ERROR_NO_MEMORY;
+ normalizePublicId(tem);
+ declNotationPublicId = tem;
+ poolFinish(&tempPool);
+ handleDefault = XML_FALSE;
+ }
+ break;
+ case XML_ROLE_NOTATION_SYSTEM_ID:
+ if (declNotationName && notationDeclHandler) {
+ const XML_Char *systemId
+ = poolStoreString(&tempPool, enc,
+ s + enc->minBytesPerChar,
+ next - enc->minBytesPerChar);
+ if (!systemId)
+ return XML_ERROR_NO_MEMORY;
+ *eventEndPP = s;
+ notationDeclHandler(handlerArg,
+ declNotationName,
+ curBase,
+ systemId,
+ declNotationPublicId);
+ handleDefault = XML_FALSE;
+ }
+ poolClear(&tempPool);
+ break;
+ case XML_ROLE_NOTATION_NO_SYSTEM_ID:
+ if (declNotationPublicId && notationDeclHandler) {
+ *eventEndPP = s;
+ notationDeclHandler(handlerArg,
+ declNotationName,
+ curBase,
+ 0,
+ declNotationPublicId);
+ handleDefault = XML_FALSE;
+ }
+ poolClear(&tempPool);
+ break;
+ case XML_ROLE_ERROR:
+ switch (tok) {
+ case XML_TOK_PARAM_ENTITY_REF:
+ /* PE references in internal subset are
+ not allowed within declarations. */
+ return XML_ERROR_PARAM_ENTITY_REF;
+ case XML_TOK_XML_DECL:
+ return XML_ERROR_MISPLACED_XML_PI;
+ default:
+ return XML_ERROR_SYNTAX;
+ }
+#ifdef XML_DTD
+ case XML_ROLE_IGNORE_SECT:
+ {
+ enum XML_Error result;
+ if (defaultHandler)
+ reportDefault(parser, enc, s, next);
+ handleDefault = XML_FALSE;
+ result = doIgnoreSection(parser, enc, &next, end, nextPtr, haveMore);
+ if (result != XML_ERROR_NONE)
+ return result;
+ else if (!next) {
+ processor = ignoreSectionProcessor;
+ return result;
+ }
+ }
+ break;
+#endif /* XML_DTD */
+ case XML_ROLE_GROUP_OPEN:
+ if (prologState.level >= groupSize) {
+ if (groupSize) {
+ char *temp = (char *)REALLOC(groupConnector, groupSize *= 2);
+ if (temp == NULL)
+ return XML_ERROR_NO_MEMORY;
+ groupConnector = temp;
+ if (dtd->scaffIndex) {
+ int *temp = (int *)REALLOC(dtd->scaffIndex,
+ groupSize * sizeof(int));
+ if (temp == NULL)
+ return XML_ERROR_NO_MEMORY;
+ dtd->scaffIndex = temp;
+ }
+ }
+ else {
+ groupConnector = (char *)MALLOC(groupSize = 32);
+ if (!groupConnector)
+ return XML_ERROR_NO_MEMORY;
+ }
+ }
+ groupConnector[prologState.level] = 0;
+ if (dtd->in_eldecl) {
+ int myindex = nextScaffoldPart(parser);
+ if (myindex < 0)
+ return XML_ERROR_NO_MEMORY;
+ dtd->scaffIndex[dtd->scaffLevel] = myindex;
+ dtd->scaffLevel++;
+ dtd->scaffold[myindex].type = XML_CTYPE_SEQ;
+ if (elementDeclHandler)
+ handleDefault = XML_FALSE;
+ }
+ break;
+ case XML_ROLE_GROUP_SEQUENCE:
+ if (groupConnector[prologState.level] == '|')
+ return XML_ERROR_SYNTAX;
+ groupConnector[prologState.level] = ',';
+ if (dtd->in_eldecl && elementDeclHandler)
+ handleDefault = XML_FALSE;
+ break;
+ case XML_ROLE_GROUP_CHOICE:
+ if (groupConnector[prologState.level] == ',')
+ return XML_ERROR_SYNTAX;
+ if (dtd->in_eldecl
+ && !groupConnector[prologState.level]
+ && (dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel - 1]].type
+ != XML_CTYPE_MIXED)
+ ) {
+ dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel - 1]].type
+ = XML_CTYPE_CHOICE;
+ if (elementDeclHandler)
+ handleDefault = XML_FALSE;
+ }
+ groupConnector[prologState.level] = '|';
+ break;
+ case XML_ROLE_PARAM_ENTITY_REF:
+#ifdef XML_DTD
+ case XML_ROLE_INNER_PARAM_ENTITY_REF:
+ dtd->hasParamEntityRefs = XML_TRUE;
+ if (!paramEntityParsing)
+ dtd->keepProcessing = dtd->standalone;
+ else {
+ const XML_Char *name;
+ ENTITY *entity;
+ name = poolStoreString(&dtd->pool, enc,
+ s + enc->minBytesPerChar,
+ next - enc->minBytesPerChar);
+ if (!name)
+ return XML_ERROR_NO_MEMORY;
+ entity = (ENTITY *)lookup(&dtd->paramEntities, name, 0);
+ poolDiscard(&dtd->pool);
+ /* first, determine if a check for an existing declaration is needed;
+ if yes, check that the entity exists, and that it is internal,
+ otherwise call the skipped entity handler
+ */
+ if (prologState.documentEntity &&
+ (dtd->standalone
+ ? !openInternalEntities
+ : !dtd->hasParamEntityRefs)) {
+ if (!entity)
+ return XML_ERROR_UNDEFINED_ENTITY;
+ else if (!entity->is_internal)
+ return XML_ERROR_ENTITY_DECLARED_IN_PE;
+ }
+ else if (!entity) {
+ dtd->keepProcessing = dtd->standalone;
+ /* cannot report skipped entities in declarations */
+ if ((role == XML_ROLE_PARAM_ENTITY_REF) && skippedEntityHandler) {
+ skippedEntityHandler(handlerArg, name, 1);
+ handleDefault = XML_FALSE;
+ }
+ break;
+ }
+ if (entity->open)
+ return XML_ERROR_RECURSIVE_ENTITY_REF;
+ if (entity->textPtr) {
+ enum XML_Error result;
+ XML_Bool betweenDecl =
+ (role == XML_ROLE_PARAM_ENTITY_REF ? XML_TRUE : XML_FALSE);
+ result = processInternalEntity(parser, entity, betweenDecl);
+ if (result != XML_ERROR_NONE)
+ return result;
+ handleDefault = XML_FALSE;
+ break;
+ }
+ if (externalEntityRefHandler) {
+ dtd->paramEntityRead = XML_FALSE;
+ entity->open = XML_TRUE;
+ if (!externalEntityRefHandler(externalEntityRefHandlerArg,
+ 0,
+ entity->base,
+ entity->systemId,
+ entity->publicId)) {
+ entity->open = XML_FALSE;
+ return XML_ERROR_EXTERNAL_ENTITY_HANDLING;
+ }
+ entity->open = XML_FALSE;
+ handleDefault = XML_FALSE;
+ if (!dtd->paramEntityRead) {
+ dtd->keepProcessing = dtd->standalone;
+ break;
+ }
+ }
+ else {
+ dtd->keepProcessing = dtd->standalone;
+ break;
+ }
+ }
+#endif /* XML_DTD */
+ if (!dtd->standalone &&
+ notStandaloneHandler &&
+ !notStandaloneHandler(handlerArg))
+ return XML_ERROR_NOT_STANDALONE;
+ break;
+
+ /* Element declaration stuff */
+
+ case XML_ROLE_ELEMENT_NAME:
+ if (elementDeclHandler) {
+ declElementType = getElementType(parser, enc, s, next);
+ if (!declElementType)
+ return XML_ERROR_NO_MEMORY;
+ dtd->scaffLevel = 0;
+ dtd->scaffCount = 0;
+ dtd->in_eldecl = XML_TRUE;
+ handleDefault = XML_FALSE;
+ }
+ break;
+
+ case XML_ROLE_CONTENT_ANY:
+ case XML_ROLE_CONTENT_EMPTY:
+ if (dtd->in_eldecl) {
+ if (elementDeclHandler) {
+ XML_Content * content = (XML_Content *) MALLOC(sizeof(XML_Content));
+ if (!content)
+ return XML_ERROR_NO_MEMORY;
+ content->quant = XML_CQUANT_NONE;
+ content->name = NULL;
+ content->numchildren = 0;
+ content->children = NULL;
+ content->type = ((role == XML_ROLE_CONTENT_ANY) ?
+ XML_CTYPE_ANY :
+ XML_CTYPE_EMPTY);
+ *eventEndPP = s;
+ elementDeclHandler(handlerArg, declElementType->name, content);
+ handleDefault = XML_FALSE;
+ }
+ dtd->in_eldecl = XML_FALSE;
+ }
+ break;
+
+ case XML_ROLE_CONTENT_PCDATA:
+ if (dtd->in_eldecl) {
+ dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel - 1]].type
+ = XML_CTYPE_MIXED;
+ if (elementDeclHandler)
+ handleDefault = XML_FALSE;
+ }
+ break;
+
+ case XML_ROLE_CONTENT_ELEMENT:
+ quant = XML_CQUANT_NONE;
+ goto elementContent;
+ case XML_ROLE_CONTENT_ELEMENT_OPT:
+ quant = XML_CQUANT_OPT;
+ goto elementContent;
+ case XML_ROLE_CONTENT_ELEMENT_REP:
+ quant = XML_CQUANT_REP;
+ goto elementContent;
+ case XML_ROLE_CONTENT_ELEMENT_PLUS:
+ quant = XML_CQUANT_PLUS;
+ elementContent:
+ if (dtd->in_eldecl) {
+ ELEMENT_TYPE *el;
+ const XML_Char *name;
+ int nameLen;
+ const char *nxt = (quant == XML_CQUANT_NONE
+ ? next
+ : next - enc->minBytesPerChar);
+ int myindex = nextScaffoldPart(parser);
+ if (myindex < 0)
+ return XML_ERROR_NO_MEMORY;
+ dtd->scaffold[myindex].type = XML_CTYPE_NAME;
+ dtd->scaffold[myindex].quant = quant;
+ el = getElementType(parser, enc, s, nxt);
+ if (!el)
+ return XML_ERROR_NO_MEMORY;
+ name = el->name;
+ dtd->scaffold[myindex].name = name;
+ nameLen = 0;
+ for (; name[nameLen++]; );
+ dtd->contentStringLen += nameLen;
+ if (elementDeclHandler)
+ handleDefault = XML_FALSE;
+ }
+ break;
+
+ case XML_ROLE_GROUP_CLOSE:
+ quant = XML_CQUANT_NONE;
+ goto closeGroup;
+ case XML_ROLE_GROUP_CLOSE_OPT:
+ quant = XML_CQUANT_OPT;
+ goto closeGroup;
+ case XML_ROLE_GROUP_CLOSE_REP:
+ quant = XML_CQUANT_REP;
+ goto closeGroup;
+ case XML_ROLE_GROUP_CLOSE_PLUS:
+ quant = XML_CQUANT_PLUS;
+ closeGroup:
+ if (dtd->in_eldecl) {
+ if (elementDeclHandler)
+ handleDefault = XML_FALSE;
+ dtd->scaffLevel--;
+ dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel]].quant = quant;
+ if (dtd->scaffLevel == 0) {
+ if (!handleDefault) {
+ XML_Content *model = build_model(parser);
+ if (!model)
+ return XML_ERROR_NO_MEMORY;
+ *eventEndPP = s;
+ elementDeclHandler(handlerArg, declElementType->name, model);
+ }
+ dtd->in_eldecl = XML_FALSE;
+ dtd->contentStringLen = 0;
+ }
+ }
+ break;
+ /* End element declaration stuff */
+
+ case XML_ROLE_PI:
+ if (!reportProcessingInstruction(parser, enc, s, next))
+ return XML_ERROR_NO_MEMORY;
+ handleDefault = XML_FALSE;
+ break;
+ case XML_ROLE_COMMENT:
+ if (!reportComment(parser, enc, s, next))
+ return XML_ERROR_NO_MEMORY;
+ handleDefault = XML_FALSE;
+ break;
+ case XML_ROLE_NONE:
+ switch (tok) {
+ case XML_TOK_BOM:
+ handleDefault = XML_FALSE;
+ break;
+ }
+ break;
+ case XML_ROLE_DOCTYPE_NONE:
+ if (startDoctypeDeclHandler)
+ handleDefault = XML_FALSE;
+ break;
+ case XML_ROLE_ENTITY_NONE:
+ if (dtd->keepProcessing && entityDeclHandler)
+ handleDefault = XML_FALSE;
+ break;
+ case XML_ROLE_NOTATION_NONE:
+ if (notationDeclHandler)
+ handleDefault = XML_FALSE;
+ break;
+ case XML_ROLE_ATTLIST_NONE:
+ if (dtd->keepProcessing && attlistDeclHandler)
+ handleDefault = XML_FALSE;
+ break;
+ case XML_ROLE_ELEMENT_NONE:
+ if (elementDeclHandler)
+ handleDefault = XML_FALSE;
+ break;
+ } /* end of big switch */
+
+ if (handleDefault && defaultHandler)
+ reportDefault(parser, enc, s, next);
+
+ switch (ps_parsing) {
+ case XML_SUSPENDED:
+ *nextPtr = next;
+ return XML_ERROR_NONE;
+ case XML_FINISHED:
+ return XML_ERROR_ABORTED;
+ default:
+ s = next;
+ tok = XmlPrologTok(enc, s, end, &next);
+ }
+ }
+ /* not reached */
+}
+
+static enum XML_Error PTRCALL
+epilogProcessor(XML_Parser parser,
+ const char *s,
+ const char *end,
+ const char **nextPtr)
+{
+ processor = epilogProcessor;
+ eventPtr = s;
+ for (;;) {
+ const char *next = NULL;
+ int tok = XmlPrologTok(encoding, s, end, &next);
+ eventEndPtr = next;
+ switch (tok) {
+ /* report partial linebreak - it might be the last token */
+ case -XML_TOK_PROLOG_S:
+ if (defaultHandler) {
+ reportDefault(parser, encoding, s, next);
+ if (ps_parsing == XML_FINISHED)
+ return XML_ERROR_ABORTED;
+ }
+ *nextPtr = next;
+ return XML_ERROR_NONE;
+ case XML_TOK_NONE:
+ *nextPtr = s;
+ return XML_ERROR_NONE;
+ case XML_TOK_PROLOG_S:
+ if (defaultHandler)
+ reportDefault(parser, encoding, s, next);
+ break;
+ case XML_TOK_PI:
+ if (!reportProcessingInstruction(parser, encoding, s, next))
+ return XML_ERROR_NO_MEMORY;
+ break;
+ case XML_TOK_COMMENT:
+ if (!reportComment(parser, encoding, s, next))
+ return XML_ERROR_NO_MEMORY;
+ break;
+ case XML_TOK_INVALID:
+ eventPtr = next;
+ return XML_ERROR_INVALID_TOKEN;
+ case XML_TOK_PARTIAL:
+ if (!ps_finalBuffer) {
+ *nextPtr = s;
+ return XML_ERROR_NONE;
+ }
+ return XML_ERROR_UNCLOSED_TOKEN;
+ case XML_TOK_PARTIAL_CHAR:
+ if (!ps_finalBuffer) {
+ *nextPtr = s;
+ return XML_ERROR_NONE;
+ }
+ return XML_ERROR_PARTIAL_CHAR;
+ default:
+ return XML_ERROR_JUNK_AFTER_DOC_ELEMENT;
+ }
+ eventPtr = s = next;
+ switch (ps_parsing) {
+ case XML_SUSPENDED:
+ *nextPtr = next;
+ return XML_ERROR_NONE;
+ case XML_FINISHED:
+ return XML_ERROR_ABORTED;
+ default: ;
+ }
+ }
+}
+
+static enum XML_Error
+processInternalEntity(XML_Parser parser, ENTITY *entity,
+ XML_Bool betweenDecl)
+{
+ const char *textStart, *textEnd;
+ const char *next;
+ enum XML_Error result;
+ OPEN_INTERNAL_ENTITY *openEntity;
+
+ if (freeInternalEntities) {
+ openEntity = freeInternalEntities;
+ freeInternalEntities = openEntity->next;
+ }
+ else {
+ openEntity = (OPEN_INTERNAL_ENTITY *)MALLOC(sizeof(OPEN_INTERNAL_ENTITY));
+ if (!openEntity)
+ return XML_ERROR_NO_MEMORY;
+ }
+ entity->open = XML_TRUE;
+ entity->processed = 0;
+ openEntity->next = openInternalEntities;
+ openInternalEntities = openEntity;
+ openEntity->entity = entity;
+ openEntity->startTagLevel = tagLevel;
+ openEntity->betweenDecl = betweenDecl;
+ openEntity->internalEventPtr = NULL;
+ openEntity->internalEventEndPtr = NULL;
+ textStart = (char *)entity->textPtr;
+ textEnd = (char *)(entity->textPtr + entity->textLen);
+
+#ifdef XML_DTD
+ if (entity->is_param) {
+ int tok = XmlPrologTok(internalEncoding, textStart, textEnd, &next);
+ result = doProlog(parser, internalEncoding, textStart, textEnd, tok,
+ next, &next, XML_FALSE);
+ }
+ else
+#endif /* XML_DTD */
+ result = doContent(parser, tagLevel, internalEncoding, textStart,
+ textEnd, &next, XML_FALSE);
+
+ if (result == XML_ERROR_NONE) {
+ if (textEnd != next && ps_parsing == XML_SUSPENDED) {
+ entity->processed = (int)(next - textStart);
+ processor = internalEntityProcessor;
+ }
+ else {
+ entity->open = XML_FALSE;
+ openInternalEntities = openEntity->next;
+ /* put openEntity back in list of free instances */
+ openEntity->next = freeInternalEntities;
+ freeInternalEntities = openEntity;
+ }
+ }
+ return result;
+}
+
+static enum XML_Error PTRCALL
+internalEntityProcessor(XML_Parser parser,
+ const char *s,
+ const char *end,
+ const char **nextPtr)
+{
+ ENTITY *entity;
+ const char *textStart, *textEnd;
+ const char *next;
+ enum XML_Error result;
+ OPEN_INTERNAL_ENTITY *openEntity = openInternalEntities;
+ if (!openEntity)
+ return XML_ERROR_UNEXPECTED_STATE;
+
+ entity = openEntity->entity;
+ textStart = ((char *)entity->textPtr) + entity->processed;
+ textEnd = (char *)(entity->textPtr + entity->textLen);
+
+#ifdef XML_DTD
+ if (entity->is_param) {
+ int tok = XmlPrologTok(internalEncoding, textStart, textEnd, &next);
+ result = doProlog(parser, internalEncoding, textStart, textEnd, tok,
+ next, &next, XML_FALSE);
+ }
+ else
+#endif /* XML_DTD */
+ result = doContent(parser, openEntity->startTagLevel, internalEncoding,
+ textStart, textEnd, &next, XML_FALSE);
+
+ if (result != XML_ERROR_NONE)
+ return result;
+ else if (textEnd != next && ps_parsing == XML_SUSPENDED) {
+ entity->processed = (int)(next - (char *)entity->textPtr);
+ return result;
+ }
+ else {
+ entity->open = XML_FALSE;
+ openInternalEntities = openEntity->next;
+ /* put openEntity back in list of free instances */
+ openEntity->next = freeInternalEntities;
+ freeInternalEntities = openEntity;
+ }
+
+#ifdef XML_DTD
+ if (entity->is_param) {
+ int tok;
+ processor = prologProcessor;
+ tok = XmlPrologTok(encoding, s, end, &next);
+ return doProlog(parser, encoding, s, end, tok, next, nextPtr,
+ (XML_Bool)!ps_finalBuffer);
+ }
+ else
+#endif /* XML_DTD */
+ {
+ processor = contentProcessor;
+ /* see externalEntityContentProcessor vs contentProcessor */
+ return doContent(parser, parentParser ? 1 : 0, encoding, s, end,
+ nextPtr, (XML_Bool)!ps_finalBuffer);
+ }
+}
+
+static enum XML_Error PTRCALL
+errorProcessor(XML_Parser parser,
+ const char *s,
+ const char *end,
+ const char **nextPtr)
+{
+ return errorCode;
+}
+
+static enum XML_Error
+storeAttributeValue(XML_Parser parser, const ENCODING *enc, XML_Bool isCdata,
+ const char *ptr, const char *end,
+ STRING_POOL *pool)
+{
+ enum XML_Error result = appendAttributeValue(parser, enc, isCdata, ptr,
+ end, pool);
+ if (result)
+ return result;
+ if (!isCdata && poolLength(pool) && poolLastChar(pool) == 0x20)
+ poolChop(pool);
+ if (!poolAppendChar(pool, XML_T('\0')))
+ return XML_ERROR_NO_MEMORY;
+ return XML_ERROR_NONE;
+}
+
+static enum XML_Error
+appendAttributeValue(XML_Parser parser, const ENCODING *enc, XML_Bool isCdata,
+ const char *ptr, const char *end,
+ STRING_POOL *pool)
+{
+ DTD * const dtd = _dtd; /* save one level of indirection */
+ for (;;) {
+ const char *next;
+ int tok = XmlAttributeValueTok(enc, ptr, end, &next);
+ switch (tok) {
+ case XML_TOK_NONE:
+ return XML_ERROR_NONE;
+ case XML_TOK_INVALID:
+ if (enc == encoding)
+ eventPtr = next;
+ return XML_ERROR_INVALID_TOKEN;
+ case XML_TOK_PARTIAL:
+ if (enc == encoding)
+ eventPtr = ptr;
+ return XML_ERROR_INVALID_TOKEN;
+ case XML_TOK_CHAR_REF:
+ {
+ XML_Char buf[XML_ENCODE_MAX];
+ int i;
+ int n = XmlCharRefNumber(enc, ptr);
+ if (n < 0) {
+ if (enc == encoding)
+ eventPtr = ptr;
+ return XML_ERROR_BAD_CHAR_REF;
+ }
+ if (!isCdata
+ && n == 0x20 /* space */
+ && (poolLength(pool) == 0 || poolLastChar(pool) == 0x20))
+ break;
+ n = XmlEncode(n, (ICHAR *)buf);
+ if (!n) {
+ if (enc == encoding)
+ eventPtr = ptr;
+ return XML_ERROR_BAD_CHAR_REF;
+ }
+ for (i = 0; i < n; i++) {
+ if (!poolAppendChar(pool, buf[i]))
+ return XML_ERROR_NO_MEMORY;
+ }
+ }
+ break;
+ case XML_TOK_DATA_CHARS:
+ if (!poolAppend(pool, enc, ptr, next))
+ return XML_ERROR_NO_MEMORY;
+ break;
+ case XML_TOK_TRAILING_CR:
+ next = ptr + enc->minBytesPerChar;
+ /* fall through */
+ case XML_TOK_ATTRIBUTE_VALUE_S:
+ case XML_TOK_DATA_NEWLINE:
+ if (!isCdata && (poolLength(pool) == 0 || poolLastChar(pool) == 0x20))
+ break;
+ if (!poolAppendChar(pool, 0x20))
+ return XML_ERROR_NO_MEMORY;
+ break;
+ case XML_TOK_ENTITY_REF:
+ {
+ const XML_Char *name;
+ ENTITY *entity;
+ char checkEntityDecl;
+ XML_Char ch = (XML_Char) XmlPredefinedEntityName(enc,
+ ptr + enc->minBytesPerChar,
+ next - enc->minBytesPerChar);
+ if (ch) {
+ if (!poolAppendChar(pool, ch))
+ return XML_ERROR_NO_MEMORY;
+ break;
+ }
+ name = poolStoreString(&temp2Pool, enc,
+ ptr + enc->minBytesPerChar,
+ next - enc->minBytesPerChar);
+ if (!name)
+ return XML_ERROR_NO_MEMORY;
+ entity = (ENTITY *)lookup(&dtd->generalEntities, name, 0);
+ poolDiscard(&temp2Pool);
+ /* First, determine if a check for an existing declaration is needed;
+ if yes, check that the entity exists, and that it is internal.
+ */
+ if (pool == &dtd->pool) /* are we called from prolog? */
+ checkEntityDecl =
+#ifdef XML_DTD
+ prologState.documentEntity &&
+#endif /* XML_DTD */
+ (dtd->standalone
+ ? !openInternalEntities
+ : !dtd->hasParamEntityRefs);
+ else /* if (pool == &tempPool): we are called from content */
+ checkEntityDecl = !dtd->hasParamEntityRefs || dtd->standalone;
+ if (checkEntityDecl) {
+ if (!entity)
+ return XML_ERROR_UNDEFINED_ENTITY;
+ else if (!entity->is_internal)
+ return XML_ERROR_ENTITY_DECLARED_IN_PE;
+ }
+ else if (!entity) {
+ /* Cannot report skipped entity here - see comments on
+ skippedEntityHandler.
+ if (skippedEntityHandler)
+ skippedEntityHandler(handlerArg, name, 0);
+ */
+ /* Cannot call the default handler because this would be
+ out of sync with the call to the startElementHandler.
+ if ((pool == &tempPool) && defaultHandler)
+ reportDefault(parser, enc, ptr, next);
+ */
+ break;
+ }
+ if (entity->open) {
+ if (enc == encoding)
+ eventPtr = ptr;
+ return XML_ERROR_RECURSIVE_ENTITY_REF;
+ }
+ if (entity->notation) {
+ if (enc == encoding)
+ eventPtr = ptr;
+ return XML_ERROR_BINARY_ENTITY_REF;
+ }
+ if (!entity->textPtr) {
+ if (enc == encoding)
+ eventPtr = ptr;
+ return XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF;
+ }
+ else {
+ enum XML_Error result;
+ const XML_Char *textEnd = entity->textPtr + entity->textLen;
+ entity->open = XML_TRUE;
+ result = appendAttributeValue(parser, internalEncoding, isCdata,
+ (char *)entity->textPtr,
+ (char *)textEnd, pool);
+ entity->open = XML_FALSE;
+ if (result)
+ return result;
+ }
+ }
+ break;
+ default:
+ if (enc == encoding)
+ eventPtr = ptr;
+ return XML_ERROR_UNEXPECTED_STATE;
+ }
+ ptr = next;
+ }
+ /* not reached */
+}
+
+static enum XML_Error
+storeEntityValue(XML_Parser parser,
+ const ENCODING *enc,
+ const char *entityTextPtr,
+ const char *entityTextEnd)
+{
+ DTD * const dtd = _dtd; /* save one level of indirection */
+ STRING_POOL *pool = &(dtd->entityValuePool);
+ enum XML_Error result = XML_ERROR_NONE;
+#ifdef XML_DTD
+ int oldInEntityValue = prologState.inEntityValue;
+ prologState.inEntityValue = 1;
+#endif /* XML_DTD */
+ /* never return Null for the value argument in EntityDeclHandler,
+ since this would indicate an external entity; therefore we
+ have to make sure that entityValuePool.start is not null */
+ if (!pool->blocks) {
+ if (!poolGrow(pool))
+ return XML_ERROR_NO_MEMORY;
+ }
+
+ for (;;) {
+ const char *next;
+ int tok = XmlEntityValueTok(enc, entityTextPtr, entityTextEnd, &next);
+ switch (tok) {
+ case XML_TOK_PARAM_ENTITY_REF:
+#ifdef XML_DTD
+ if (isParamEntity || enc != encoding) {
+ const XML_Char *name;
+ ENTITY *entity;
+ name = poolStoreString(&tempPool, enc,
+ entityTextPtr + enc->minBytesPerChar,
+ next - enc->minBytesPerChar);
+ if (!name) {
+ result = XML_ERROR_NO_MEMORY;
+ goto endEntityValue;
+ }
+ entity = (ENTITY *)lookup(&dtd->paramEntities, name, 0);
+ poolDiscard(&tempPool);
+ if (!entity) {
+ /* not a well-formedness error - see XML 1.0: WFC Entity Declared */
+ /* cannot report skipped entity here - see comments on
+ skippedEntityHandler
+ if (skippedEntityHandler)
+ skippedEntityHandler(handlerArg, name, 0);
+ */
+ dtd->keepProcessing = dtd->standalone;
+ goto endEntityValue;
+ }
+ if (entity->open) {
+ if (enc == encoding)
+ eventPtr = entityTextPtr;
+ result = XML_ERROR_RECURSIVE_ENTITY_REF;
+ goto endEntityValue;
+ }
+ if (entity->systemId) {
+ if (externalEntityRefHandler) {
+ dtd->paramEntityRead = XML_FALSE;
+ entity->open = XML_TRUE;
+ if (!externalEntityRefHandler(externalEntityRefHandlerArg,
+ 0,
+ entity->base,
+ entity->systemId,
+ entity->publicId)) {
+ entity->open = XML_FALSE;
+ result = XML_ERROR_EXTERNAL_ENTITY_HANDLING;
+ goto endEntityValue;
+ }
+ entity->open = XML_FALSE;
+ if (!dtd->paramEntityRead)
+ dtd->keepProcessing = dtd->standalone;
+ }
+ else
+ dtd->keepProcessing = dtd->standalone;
+ }
+ else {
+ entity->open = XML_TRUE;
+ result = storeEntityValue(parser,
+ internalEncoding,
+ (char *)entity->textPtr,
+ (char *)(entity->textPtr
+ + entity->textLen));
+ entity->open = XML_FALSE;
+ if (result)
+ goto endEntityValue;
+ }
+ break;
+ }
+#endif /* XML_DTD */
+ /* In the internal subset, PE references are not legal
+ within markup declarations, e.g entity values in this case. */
+ eventPtr = entityTextPtr;
+ result = XML_ERROR_PARAM_ENTITY_REF;
+ goto endEntityValue;
+ case XML_TOK_NONE:
+ result = XML_ERROR_NONE;
+ goto endEntityValue;
+ case XML_TOK_ENTITY_REF:
+ case XML_TOK_DATA_CHARS:
+ if (!poolAppend(pool, enc, entityTextPtr, next)) {
+ result = XML_ERROR_NO_MEMORY;
+ goto endEntityValue;
+ }
+ break;
+ case XML_TOK_TRAILING_CR:
+ next = entityTextPtr + enc->minBytesPerChar;
+ /* fall through */
+ case XML_TOK_DATA_NEWLINE:
+ if (pool->end == pool->ptr && !poolGrow(pool)) {
+ result = XML_ERROR_NO_MEMORY;
+ goto endEntityValue;
+ }
+ *(pool->ptr)++ = 0xA;
+ break;
+ case XML_TOK_CHAR_REF:
+ {
+ XML_Char buf[XML_ENCODE_MAX];
+ int i;
+ int n = XmlCharRefNumber(enc, entityTextPtr);
+ if (n < 0) {
+ if (enc == encoding)
+ eventPtr = entityTextPtr;
+ result = XML_ERROR_BAD_CHAR_REF;
+ goto endEntityValue;
+ }
+ n = XmlEncode(n, (ICHAR *)buf);
+ if (!n) {
+ if (enc == encoding)
+ eventPtr = entityTextPtr;
+ result = XML_ERROR_BAD_CHAR_REF;
+ goto endEntityValue;
+ }
+ for (i = 0; i < n; i++) {
+ if (pool->end == pool->ptr && !poolGrow(pool)) {
+ result = XML_ERROR_NO_MEMORY;
+ goto endEntityValue;
+ }
+ *(pool->ptr)++ = buf[i];
+ }
+ }
+ break;
+ case XML_TOK_PARTIAL:
+ if (enc == encoding)
+ eventPtr = entityTextPtr;
+ result = XML_ERROR_INVALID_TOKEN;
+ goto endEntityValue;
+ case XML_TOK_INVALID:
+ if (enc == encoding)
+ eventPtr = next;
+ result = XML_ERROR_INVALID_TOKEN;
+ goto endEntityValue;
+ default:
+ if (enc == encoding)
+ eventPtr = entityTextPtr;
+ result = XML_ERROR_UNEXPECTED_STATE;
+ goto endEntityValue;
+ }
+ entityTextPtr = next;
+ }
+endEntityValue:
+#ifdef XML_DTD
+ prologState.inEntityValue = oldInEntityValue;
+#endif /* XML_DTD */
+ return result;
+}
+
+static void FASTCALL
+normalizeLines(XML_Char *s)
+{
+ XML_Char *p;
+ for (;; s++) {
+ if (*s == XML_T('\0'))
+ return;
+ if (*s == 0xD)
+ break;
+ }
+ p = s;
+ do {
+ if (*s == 0xD) {
+ *p++ = 0xA;
+ if (*++s == 0xA)
+ s++;
+ }
+ else
+ *p++ = *s++;
+ } while (*s);
+ *p = XML_T('\0');
+}
+
+static int
+reportProcessingInstruction(XML_Parser parser, const ENCODING *enc,
+ const char *start, const char *end)
+{
+ const XML_Char *target;
+ XML_Char *data;
+ const char *tem;
+ if (!processingInstructionHandler) {
+ if (defaultHandler)
+ reportDefault(parser, enc, start, end);
+ return 1;
+ }
+ start += enc->minBytesPerChar * 2;
+ tem = start + XmlNameLength(enc, start);
+ target = poolStoreString(&tempPool, enc, start, tem);
+ if (!target)
+ return 0;
+ poolFinish(&tempPool);
+ data = poolStoreString(&tempPool, enc,
+ XmlSkipS(enc, tem),
+ end - enc->minBytesPerChar*2);
+ if (!data)
+ return 0;
+ normalizeLines(data);
+ processingInstructionHandler(handlerArg, target, data);
+ poolClear(&tempPool);
+ return 1;
+}
+
+static int
+reportComment(XML_Parser parser, const ENCODING *enc,
+ const char *start, const char *end)
+{
+ XML_Char *data;
+ if (!commentHandler) {
+ if (defaultHandler)
+ reportDefault(parser, enc, start, end);
+ return 1;
+ }
+ data = poolStoreString(&tempPool,
+ enc,
+ start + enc->minBytesPerChar * 4,
+ end - enc->minBytesPerChar * 3);
+ if (!data)
+ return 0;
+ normalizeLines(data);
+ commentHandler(handlerArg, data);
+ poolClear(&tempPool);
+ return 1;
+}
+
+static void
+reportDefault(XML_Parser parser, const ENCODING *enc,
+ const char *s, const char *end)
+{
+ if (MUST_CONVERT(enc, s)) {
+ const char **eventPP;
+ const char **eventEndPP;
+ if (enc == encoding) {
+ eventPP = &eventPtr;
+ eventEndPP = &eventEndPtr;
+ }
+ else {
+ eventPP = &(openInternalEntities->internalEventPtr);
+ eventEndPP = &(openInternalEntities->internalEventEndPtr);
+ }
+ do {
+ ICHAR *dataPtr = (ICHAR *)dataBuf;
+ XmlConvert(enc, &s, end, &dataPtr, (ICHAR *)dataBufEnd);
+ *eventEndPP = s;
+ defaultHandler(handlerArg, dataBuf, (int)(dataPtr - (ICHAR *)dataBuf));
+ *eventPP = s;
+ } while (s != end);
+ }
+ else
+ defaultHandler(handlerArg, (XML_Char *)s, (int)((XML_Char *)end - (XML_Char *)s));
+}
+
+
+static int
+defineAttribute(ELEMENT_TYPE *type, ATTRIBUTE_ID *attId, XML_Bool isCdata,
+ XML_Bool isId, const XML_Char *value, XML_Parser parser)
+{
+ DEFAULT_ATTRIBUTE *att;
+ if (value || isId) {
+ /* The handling of default attributes gets messed up if we have
+ a default which duplicates a non-default. */
+ int i;
+ for (i = 0; i < type->nDefaultAtts; i++)
+ if (attId == type->defaultAtts[i].id)
+ return 1;
+ if (isId && !type->idAtt && !attId->xmlns)
+ type->idAtt = attId;
+ }
+ if (type->nDefaultAtts == type->allocDefaultAtts) {
+ if (type->allocDefaultAtts == 0) {
+ type->allocDefaultAtts = 8;
+ type->defaultAtts = (DEFAULT_ATTRIBUTE *)MALLOC(type->allocDefaultAtts
+ * sizeof(DEFAULT_ATTRIBUTE));
+ if (!type->defaultAtts)
+ return 0;
+ }
+ else {
+ DEFAULT_ATTRIBUTE *temp;
+ int count = type->allocDefaultAtts * 2;
+ temp = (DEFAULT_ATTRIBUTE *)
+ REALLOC(type->defaultAtts, (count * sizeof(DEFAULT_ATTRIBUTE)));
+ if (temp == NULL)
+ return 0;
+ type->allocDefaultAtts = count;
+ type->defaultAtts = temp;
+ }
+ }
+ att = type->defaultAtts + type->nDefaultAtts;
+ att->id = attId;
+ att->value = value;
+ att->isCdata = isCdata;
+ if (!isCdata)
+ attId->maybeTokenized = XML_TRUE;
+ type->nDefaultAtts += 1;
+ return 1;
+}
+
+static int
+setElementTypePrefix(XML_Parser parser, ELEMENT_TYPE *elementType)
+{
+ DTD * const dtd = _dtd; /* save one level of indirection */
+ const XML_Char *name;
+ for (name = elementType->name; *name; name++) {
+ if (*name == XML_T(':')) {
+ PREFIX *prefix;
+ const XML_Char *s;
+ for (s = elementType->name; s != name; s++) {
+ if (!poolAppendChar(&dtd->pool, *s))
+ return 0;
+ }
+ if (!poolAppendChar(&dtd->pool, XML_T('\0')))
+ return 0;
+ prefix = (PREFIX *)lookup(&dtd->prefixes, poolStart(&dtd->pool),
+ sizeof(PREFIX));
+ if (!prefix)
+ return 0;
+ if (prefix->name == poolStart(&dtd->pool))
+ poolFinish(&dtd->pool);
+ else
+ poolDiscard(&dtd->pool);
+ elementType->prefix = prefix;
+
+ }
+ }
+ return 1;
+}
+
+static ATTRIBUTE_ID *
+getAttributeId(XML_Parser parser, const ENCODING *enc,
+ const char *start, const char *end)
+{
+ DTD * const dtd = _dtd; /* save one level of indirection */
+ ATTRIBUTE_ID *id;
+ const XML_Char *name;
+ if (!poolAppendChar(&dtd->pool, XML_T('\0')))
+ return NULL;
+ name = poolStoreString(&dtd->pool, enc, start, end);
+ if (!name)
+ return NULL;
+ /* skip quotation mark - its storage will be re-used (like in name[-1]) */
+ ++name;
+ id = (ATTRIBUTE_ID *)lookup(&dtd->attributeIds, name, sizeof(ATTRIBUTE_ID));
+ if (!id)
+ return NULL;
+ if (id->name != name)
+ poolDiscard(&dtd->pool);
+ else {
+ poolFinish(&dtd->pool);
+ if (!ns)
+ ;
+ else if (name[0] == XML_T('x')
+ && name[1] == XML_T('m')
+ && name[2] == XML_T('l')
+ && name[3] == XML_T('n')
+ && name[4] == XML_T('s')
+ && (name[5] == XML_T('\0') || name[5] == XML_T(':'))) {
+ if (name[5] == XML_T('\0'))
+ id->prefix = &dtd->defaultPrefix;
+ else
+ id->prefix = (PREFIX *)lookup(&dtd->prefixes, name + 6, sizeof(PREFIX));
+ id->xmlns = XML_TRUE;
+ }
+ else {
+ int i;
+ for (i = 0; name[i]; i++) {
+ /* attributes without prefix are *not* in the default namespace */
+ if (name[i] == XML_T(':')) {
+ int j;
+ for (j = 0; j < i; j++) {
+ if (!poolAppendChar(&dtd->pool, name[j]))
+ return NULL;
+ }
+ if (!poolAppendChar(&dtd->pool, XML_T('\0')))
+ return NULL;
+ id->prefix = (PREFIX *)lookup(&dtd->prefixes, poolStart(&dtd->pool),
+ sizeof(PREFIX));
+ if (id->prefix->name == poolStart(&dtd->pool))
+ poolFinish(&dtd->pool);
+ else
+ poolDiscard(&dtd->pool);
+ break;
+ }
+ }
+ }
+ }
+ return id;
+}
+
+#define CONTEXT_SEP XML_T('\f')
+
+static const XML_Char *
+getContext(XML_Parser parser)
+{
+ DTD * const dtd = _dtd; /* save one level of indirection */
+ HASH_TABLE_ITER iter;
+ XML_Bool needSep = XML_FALSE;
+
+ if (dtd->defaultPrefix.binding) {
+ int i;
+ int len;
+ if (!poolAppendChar(&tempPool, XML_T('=')))
+ return NULL;
+ len = dtd->defaultPrefix.binding->uriLen;
+ if (namespaceSeparator)
+ len--;
+ for (i = 0; i < len; i++)
+ if (!poolAppendChar(&tempPool, dtd->defaultPrefix.binding->uri[i]))
+ return NULL;
+ needSep = XML_TRUE;
+ }
+
+ hashTableIterInit(&iter, &(dtd->prefixes));
+ for (;;) {
+ int i;
+ int len;
+ const XML_Char *s;
+ PREFIX *prefix = (PREFIX *)hashTableIterNext(&iter);
+ if (!prefix)
+ break;
+ if (!prefix->binding)
+ continue;
+ if (needSep && !poolAppendChar(&tempPool, CONTEXT_SEP))
+ return NULL;
+ for (s = prefix->name; *s; s++)
+ if (!poolAppendChar(&tempPool, *s))
+ return NULL;
+ if (!poolAppendChar(&tempPool, XML_T('=')))
+ return NULL;
+ len = prefix->binding->uriLen;
+ if (namespaceSeparator)
+ len--;
+ for (i = 0; i < len; i++)
+ if (!poolAppendChar(&tempPool, prefix->binding->uri[i]))
+ return NULL;
+ needSep = XML_TRUE;
+ }
+
+
+ hashTableIterInit(&iter, &(dtd->generalEntities));
+ for (;;) {
+ const XML_Char *s;
+ ENTITY *e = (ENTITY *)hashTableIterNext(&iter);
+ if (!e)
+ break;
+ if (!e->open)
+ continue;
+ if (needSep && !poolAppendChar(&tempPool, CONTEXT_SEP))
+ return NULL;
+ for (s = e->name; *s; s++)
+ if (!poolAppendChar(&tempPool, *s))
+ return 0;
+ needSep = XML_TRUE;
+ }
+
+ if (!poolAppendChar(&tempPool, XML_T('\0')))
+ return NULL;
+ return tempPool.start;
+}
+
+static XML_Bool
+setContext(XML_Parser parser, const XML_Char *context)
+{
+ DTD * const dtd = _dtd; /* save one level of indirection */
+ const XML_Char *s = context;
+
+ while (*context != XML_T('\0')) {
+ if (*s == CONTEXT_SEP || *s == XML_T('\0')) {
+ ENTITY *e;
+ if (!poolAppendChar(&tempPool, XML_T('\0')))
+ return XML_FALSE;
+ e = (ENTITY *)lookup(&dtd->generalEntities, poolStart(&tempPool), 0);
+ if (e)
+ e->open = XML_TRUE;
+ if (*s != XML_T('\0'))
+ s++;
+ context = s;
+ poolDiscard(&tempPool);
+ }
+ else if (*s == XML_T('=')) {
+ PREFIX *prefix;
+ if (poolLength(&tempPool) == 0)
+ prefix = &dtd->defaultPrefix;
+ else {
+ if (!poolAppendChar(&tempPool, XML_T('\0')))
+ return XML_FALSE;
+ prefix = (PREFIX *)lookup(&dtd->prefixes, poolStart(&tempPool),
+ sizeof(PREFIX));
+ if (!prefix)
+ return XML_FALSE;
+ if (prefix->name == poolStart(&tempPool)) {
+ prefix->name = poolCopyString(&dtd->pool, prefix->name);
+ if (!prefix->name)
+ return XML_FALSE;
+ }
+ poolDiscard(&tempPool);
+ }
+ for (context = s + 1;
+ *context != CONTEXT_SEP && *context != XML_T('\0');
+ context++)
+ if (!poolAppendChar(&tempPool, *context))
+ return XML_FALSE;
+ if (!poolAppendChar(&tempPool, XML_T('\0')))
+ return XML_FALSE;
+ if (addBinding(parser, prefix, NULL, poolStart(&tempPool),
+ &inheritedBindings) != XML_ERROR_NONE)
+ return XML_FALSE;
+ poolDiscard(&tempPool);
+ if (*context != XML_T('\0'))
+ ++context;
+ s = context;
+ }
+ else {
+ if (!poolAppendChar(&tempPool, *s))
+ return XML_FALSE;
+ s++;
+ }
+ }
+ return XML_TRUE;
+}
+
+static void FASTCALL
+normalizePublicId(XML_Char *publicId)
+{
+ XML_Char *p = publicId;
+ XML_Char *s;
+ for (s = publicId; *s; s++) {
+ switch (*s) {
+ case 0x20:
+ case 0xD:
+ case 0xA:
+ if (p != publicId && p[-1] != 0x20)
+ *p++ = 0x20;
+ break;
+ default:
+ *p++ = *s;
+ }
+ }
+ if (p != publicId && p[-1] == 0x20)
+ --p;
+ *p = XML_T('\0');
+}
+
+static DTD *
+dtdCreate(const XML_Memory_Handling_Suite *ms)
+{
+ DTD *p = (DTD *)ms->malloc_fcn(sizeof(DTD));
+ if (p == NULL)
+ return p;
+ poolInit(&(p->pool), ms);
+ poolInit(&(p->entityValuePool), ms);
+ hashTableInit(&(p->generalEntities), ms);
+ hashTableInit(&(p->elementTypes), ms);
+ hashTableInit(&(p->attributeIds), ms);
+ hashTableInit(&(p->prefixes), ms);
+#ifdef XML_DTD
+ p->paramEntityRead = XML_FALSE;
+ hashTableInit(&(p->paramEntities), ms);
+#endif /* XML_DTD */
+ p->defaultPrefix.name = NULL;
+ p->defaultPrefix.binding = NULL;
+
+ p->in_eldecl = XML_FALSE;
+ p->scaffIndex = NULL;
+ p->scaffold = NULL;
+ p->scaffLevel = 0;
+ p->scaffSize = 0;
+ p->scaffCount = 0;
+ p->contentStringLen = 0;
+
+ p->keepProcessing = XML_TRUE;
+ p->hasParamEntityRefs = XML_FALSE;
+ p->standalone = XML_FALSE;
+ return p;
+}
+
+static void
+dtdReset(DTD *p, const XML_Memory_Handling_Suite *ms)
+{
+ HASH_TABLE_ITER iter;
+ hashTableIterInit(&iter, &(p->elementTypes));
+ for (;;) {
+ ELEMENT_TYPE *e = (ELEMENT_TYPE *)hashTableIterNext(&iter);
+ if (!e)
+ break;
+ if (e->allocDefaultAtts != 0)
+ ms->free_fcn(e->defaultAtts);
+ }
+ hashTableClear(&(p->generalEntities));
+#ifdef XML_DTD
+ p->paramEntityRead = XML_FALSE;
+ hashTableClear(&(p->paramEntities));
+#endif /* XML_DTD */
+ hashTableClear(&(p->elementTypes));
+ hashTableClear(&(p->attributeIds));
+ hashTableClear(&(p->prefixes));
+ poolClear(&(p->pool));
+ poolClear(&(p->entityValuePool));
+ p->defaultPrefix.name = NULL;
+ p->defaultPrefix.binding = NULL;
+
+ p->in_eldecl = XML_FALSE;
+
+ ms->free_fcn(p->scaffIndex);
+ p->scaffIndex = NULL;
+ ms->free_fcn(p->scaffold);
+ p->scaffold = NULL;
+
+ p->scaffLevel = 0;
+ p->scaffSize = 0;
+ p->scaffCount = 0;
+ p->contentStringLen = 0;
+
+ p->keepProcessing = XML_TRUE;
+ p->hasParamEntityRefs = XML_FALSE;
+ p->standalone = XML_FALSE;
+}
+
+static void
+dtdDestroy(DTD *p, XML_Bool isDocEntity, const XML_Memory_Handling_Suite *ms)
+{
+ HASH_TABLE_ITER iter;
+ hashTableIterInit(&iter, &(p->elementTypes));
+ for (;;) {
+ ELEMENT_TYPE *e = (ELEMENT_TYPE *)hashTableIterNext(&iter);
+ if (!e)
+ break;
+ if (e->allocDefaultAtts != 0)
+ ms->free_fcn(e->defaultAtts);
+ }
+ hashTableDestroy(&(p->generalEntities));
+#ifdef XML_DTD
+ hashTableDestroy(&(p->paramEntities));
+#endif /* XML_DTD */
+ hashTableDestroy(&(p->elementTypes));
+ hashTableDestroy(&(p->attributeIds));
+ hashTableDestroy(&(p->prefixes));
+ poolDestroy(&(p->pool));
+ poolDestroy(&(p->entityValuePool));
+ if (isDocEntity) {
+ ms->free_fcn(p->scaffIndex);
+ ms->free_fcn(p->scaffold);
+ }
+ ms->free_fcn(p);
+}
+
+/* Do a deep copy of the DTD. Return 0 for out of memory, non-zero otherwise.
+ The new DTD has already been initialized.
+*/
+static int
+dtdCopy(DTD *newDtd, const DTD *oldDtd, const XML_Memory_Handling_Suite *ms)
+{
+ HASH_TABLE_ITER iter;
+
+ /* Copy the prefix table. */
+
+ hashTableIterInit(&iter, &(oldDtd->prefixes));
+ for (;;) {
+ const XML_Char *name;
+ const PREFIX *oldP = (PREFIX *)hashTableIterNext(&iter);
+ if (!oldP)
+ break;
+ name = poolCopyString(&(newDtd->pool), oldP->name);
+ if (!name)
+ return 0;
+ if (!lookup(&(newDtd->prefixes), name, sizeof(PREFIX)))
+ return 0;
+ }
+
+ hashTableIterInit(&iter, &(oldDtd->attributeIds));
+
+ /* Copy the attribute id table. */
+
+ for (;;) {
+ ATTRIBUTE_ID *newA;
+ const XML_Char *name;
+ const ATTRIBUTE_ID *oldA = (ATTRIBUTE_ID *)hashTableIterNext(&iter);
+
+ if (!oldA)
+ break;
+ /* Remember to allocate the scratch byte before the name. */
+ if (!poolAppendChar(&(newDtd->pool), XML_T('\0')))
+ return 0;
+ name = poolCopyString(&(newDtd->pool), oldA->name);
+ if (!name)
+ return 0;
+ ++name;
+ newA = (ATTRIBUTE_ID *)lookup(&(newDtd->attributeIds), name,
+ sizeof(ATTRIBUTE_ID));
+ if (!newA)
+ return 0;
+ newA->maybeTokenized = oldA->maybeTokenized;
+ if (oldA->prefix) {
+ newA->xmlns = oldA->xmlns;
+ if (oldA->prefix == &oldDtd->defaultPrefix)
+ newA->prefix = &newDtd->defaultPrefix;
+ else
+ newA->prefix = (PREFIX *)lookup(&(newDtd->prefixes),
+ oldA->prefix->name, 0);
+ }
+ }
+
+ /* Copy the element type table. */
+
+ hashTableIterInit(&iter, &(oldDtd->elementTypes));
+
+ for (;;) {
+ int i;
+ ELEMENT_TYPE *newE;
+ const XML_Char *name;
+ const ELEMENT_TYPE *oldE = (ELEMENT_TYPE *)hashTableIterNext(&iter);
+ if (!oldE)
+ break;
+ name = poolCopyString(&(newDtd->pool), oldE->name);
+ if (!name)
+ return 0;
+ newE = (ELEMENT_TYPE *)lookup(&(newDtd->elementTypes), name,
+ sizeof(ELEMENT_TYPE));
+ if (!newE)
+ return 0;
+ if (oldE->nDefaultAtts) {
+ newE->defaultAtts = (DEFAULT_ATTRIBUTE *)
+ ms->malloc_fcn(oldE->nDefaultAtts * sizeof(DEFAULT_ATTRIBUTE));
+ if (!newE->defaultAtts) {
+ ms->free_fcn(newE);
+ return 0;
+ }
+ }
+ if (oldE->idAtt)
+ newE->idAtt = (ATTRIBUTE_ID *)
+ lookup(&(newDtd->attributeIds), oldE->idAtt->name, 0);
+ newE->allocDefaultAtts = newE->nDefaultAtts = oldE->nDefaultAtts;
+ if (oldE->prefix)
+ newE->prefix = (PREFIX *)lookup(&(newDtd->prefixes),
+ oldE->prefix->name, 0);
+ for (i = 0; i < newE->nDefaultAtts; i++) {
+ newE->defaultAtts[i].id = (ATTRIBUTE_ID *)
+ lookup(&(newDtd->attributeIds), oldE->defaultAtts[i].id->name, 0);
+ newE->defaultAtts[i].isCdata = oldE->defaultAtts[i].isCdata;
+ if (oldE->defaultAtts[i].value) {
+ newE->defaultAtts[i].value
+ = poolCopyString(&(newDtd->pool), oldE->defaultAtts[i].value);
+ if (!newE->defaultAtts[i].value)
+ return 0;
+ }
+ else
+ newE->defaultAtts[i].value = NULL;
+ }
+ }
+
+ /* Copy the entity tables. */
+ if (!copyEntityTable(&(newDtd->generalEntities),
+ &(newDtd->pool),
+ &(oldDtd->generalEntities)))
+ return 0;
+
+#ifdef XML_DTD
+ if (!copyEntityTable(&(newDtd->paramEntities),
+ &(newDtd->pool),
+ &(oldDtd->paramEntities)))
+ return 0;
+ newDtd->paramEntityRead = oldDtd->paramEntityRead;
+#endif /* XML_DTD */
+
+ newDtd->keepProcessing = oldDtd->keepProcessing;
+ newDtd->hasParamEntityRefs = oldDtd->hasParamEntityRefs;
+ newDtd->standalone = oldDtd->standalone;
+
+ /* Don't want deep copying for scaffolding */
+ newDtd->in_eldecl = oldDtd->in_eldecl;
+ newDtd->scaffold = oldDtd->scaffold;
+ newDtd->contentStringLen = oldDtd->contentStringLen;
+ newDtd->scaffSize = oldDtd->scaffSize;
+ newDtd->scaffLevel = oldDtd->scaffLevel;
+ newDtd->scaffIndex = oldDtd->scaffIndex;
+
+ return 1;
+} /* End dtdCopy */
+
+static int
+copyEntityTable(HASH_TABLE *newTable,
+ STRING_POOL *newPool,
+ const HASH_TABLE *oldTable)
+{
+ HASH_TABLE_ITER iter;
+ const XML_Char *cachedOldBase = NULL;
+ const XML_Char *cachedNewBase = NULL;
+
+ hashTableIterInit(&iter, oldTable);
+
+ for (;;) {
+ ENTITY *newE;
+ const XML_Char *name;
+ const ENTITY *oldE = (ENTITY *)hashTableIterNext(&iter);
+ if (!oldE)
+ break;
+ name = poolCopyString(newPool, oldE->name);
+ if (!name)
+ return 0;
+ newE = (ENTITY *)lookup(newTable, name, sizeof(ENTITY));
+ if (!newE)
+ return 0;
+ if (oldE->systemId) {
+ const XML_Char *tem = poolCopyString(newPool, oldE->systemId);
+ if (!tem)
+ return 0;
+ newE->systemId = tem;
+ if (oldE->base) {
+ if (oldE->base == cachedOldBase)
+ newE->base = cachedNewBase;
+ else {
+ cachedOldBase = oldE->base;
+ tem = poolCopyString(newPool, cachedOldBase);
+ if (!tem)
+ return 0;
+ cachedNewBase = newE->base = tem;
+ }
+ }
+ if (oldE->publicId) {
+ tem = poolCopyString(newPool, oldE->publicId);
+ if (!tem)
+ return 0;
+ newE->publicId = tem;
+ }
+ }
+ else {
+ const XML_Char *tem = poolCopyStringN(newPool, oldE->textPtr,
+ oldE->textLen);
+ if (!tem)
+ return 0;
+ newE->textPtr = tem;
+ newE->textLen = oldE->textLen;
+ }
+ if (oldE->notation) {
+ const XML_Char *tem = poolCopyString(newPool, oldE->notation);
+ if (!tem)
+ return 0;
+ newE->notation = tem;
+ }
+ newE->is_param = oldE->is_param;
+ newE->is_internal = oldE->is_internal;
+ }
+ return 1;
+}
+
+#define INIT_POWER 6
+
+static XML_Bool FASTCALL
+keyeq(KEY s1, KEY s2)
+{
+ for (; *s1 == *s2; s1++, s2++)
+ if (*s1 == 0)
+ return XML_TRUE;
+ return XML_FALSE;
+}
+
+static unsigned long FASTCALL
+hash(KEY s)
+{
+ unsigned long h = 0;
+ while (*s)
+ h = CHAR_HASH(h, *s++);
+ return h;
+}
+
+static NAMED *
+lookup(HASH_TABLE *table, KEY name, size_t createSize)
+{
+ size_t i;
+ if (table->size == 0) {
+ size_t tsize;
+ if (!createSize)
+ return NULL;
+ table->power = INIT_POWER;
+ /* table->size is a power of 2 */
+ table->size = (size_t)1 << INIT_POWER;
+ tsize = table->size * sizeof(NAMED *);
+ table->v = (NAMED **)table->mem->malloc_fcn(tsize);
+ if (!table->v) {
+ table->size = 0;
+ return NULL;
+ }
+ memset(table->v, 0, tsize);
+ i = hash(name) & ((unsigned long)table->size - 1);
+ }
+ else {
+ unsigned long h = hash(name);
+ unsigned long mask = (unsigned long)table->size - 1;
+ unsigned char step = 0;
+ i = h & mask;
+ while (table->v[i]) {
+ if (keyeq(name, table->v[i]->name))
+ return table->v[i];
+ if (!step)
+ step = PROBE_STEP(h, mask, table->power);
+ i < step ? (i += table->size - step) : (i -= step);
+ }
+ if (!createSize)
+ return NULL;
+
+ /* check for overflow (table is half full) */
+ if (table->used >> (table->power - 1)) {
+ unsigned char newPower = table->power + 1;
+ size_t newSize = (size_t)1 << newPower;
+ unsigned long newMask = (unsigned long)newSize - 1;
+ size_t tsize = newSize * sizeof(NAMED *);
+ NAMED **newV = (NAMED **)table->mem->malloc_fcn(tsize);
+ if (!newV)
+ return NULL;
+ memset(newV, 0, tsize);
+ for (i = 0; i < table->size; i++)
+ if (table->v[i]) {
+ unsigned long newHash = hash(table->v[i]->name);
+ size_t j = newHash & newMask;
+ step = 0;
+ while (newV[j]) {
+ if (!step)
+ step = PROBE_STEP(newHash, newMask, newPower);
+ j < step ? (j += newSize - step) : (j -= step);
+ }
+ newV[j] = table->v[i];
+ }
+ table->mem->free_fcn(table->v);
+ table->v = newV;
+ table->power = newPower;
+ table->size = newSize;
+ i = h & newMask;
+ step = 0;
+ while (table->v[i]) {
+ if (!step)
+ step = PROBE_STEP(h, newMask, newPower);
+ i < step ? (i += newSize - step) : (i -= step);
+ }
+ }
+ }
+ table->v[i] = (NAMED *)table->mem->malloc_fcn(createSize);
+ if (!table->v[i])
+ return NULL;
+ memset(table->v[i], 0, createSize);
+ table->v[i]->name = name;
+ (table->used)++;
+ return table->v[i];
+}
+
+static void FASTCALL
+hashTableClear(HASH_TABLE *table)
+{
+ size_t i;
+ for (i = 0; i < table->size; i++) {
+ table->mem->free_fcn(table->v[i]);
+ table->v[i] = NULL;
+ }
+ table->used = 0;
+}
+
+static void FASTCALL
+hashTableDestroy(HASH_TABLE *table)
+{
+ size_t i;
+ for (i = 0; i < table->size; i++)
+ table->mem->free_fcn(table->v[i]);
+ table->mem->free_fcn(table->v);
+}
+
+static void FASTCALL
+hashTableInit(HASH_TABLE *p, const XML_Memory_Handling_Suite *ms)
+{
+ p->power = 0;
+ p->size = 0;
+ p->used = 0;
+ p->v = NULL;
+ p->mem = ms;
+}
+
+static void FASTCALL
+hashTableIterInit(HASH_TABLE_ITER *iter, const HASH_TABLE *table)
+{
+ iter->p = table->v;
+ iter->end = iter->p + table->size;
+}
+
+static NAMED * FASTCALL
+hashTableIterNext(HASH_TABLE_ITER *iter)
+{
+ while (iter->p != iter->end) {
+ NAMED *tem = *(iter->p)++;
+ if (tem)
+ return tem;
+ }
+ return NULL;
+}
+
+static void FASTCALL
+poolInit(STRING_POOL *pool, const XML_Memory_Handling_Suite *ms)
+{
+ pool->blocks = NULL;
+ pool->freeBlocks = NULL;
+ pool->start = NULL;
+ pool->ptr = NULL;
+ pool->end = NULL;
+ pool->mem = ms;
+}
+
+static void FASTCALL
+poolClear(STRING_POOL *pool)
+{
+ if (!pool->freeBlocks)
+ pool->freeBlocks = pool->blocks;
+ else {
+ BLOCK *p = pool->blocks;
+ while (p) {
+ BLOCK *tem = p->next;
+ p->next = pool->freeBlocks;
+ pool->freeBlocks = p;
+ p = tem;
+ }
+ }
+ pool->blocks = NULL;
+ pool->start = NULL;
+ pool->ptr = NULL;
+ pool->end = NULL;
+}
+
+static void FASTCALL
+poolDestroy(STRING_POOL *pool)
+{
+ BLOCK *p = pool->blocks;
+ while (p) {
+ BLOCK *tem = p->next;
+ pool->mem->free_fcn(p);
+ p = tem;
+ }
+ p = pool->freeBlocks;
+ while (p) {
+ BLOCK *tem = p->next;
+ pool->mem->free_fcn(p);
+ p = tem;
+ }
+}
+
+static XML_Char *
+poolAppend(STRING_POOL *pool, const ENCODING *enc,
+ const char *ptr, const char *end)
+{
+ if (!pool->ptr && !poolGrow(pool))
+ return NULL;
+ for (;;) {
+ XmlConvert(enc, &ptr, end, (ICHAR **)&(pool->ptr), (ICHAR *)pool->end);
+ if (ptr == end)
+ break;
+ if (!poolGrow(pool))
+ return NULL;
+ }
+ return pool->start;
+}
+
+static const XML_Char * FASTCALL
+poolCopyString(STRING_POOL *pool, const XML_Char *s)
+{
+ do {
+ if (!poolAppendChar(pool, *s))
+ return NULL;
+ } while (*s++);
+ s = pool->start;
+ poolFinish(pool);
+ return s;
+}
+
+static const XML_Char *
+poolCopyStringN(STRING_POOL *pool, const XML_Char *s, int n)
+{
+ if (!pool->ptr && !poolGrow(pool))
+ return NULL;
+ for (; n > 0; --n, s++) {
+ if (!poolAppendChar(pool, *s))
+ return NULL;
+ }
+ s = pool->start;
+ poolFinish(pool);
+ return s;
+}
+
+static const XML_Char * FASTCALL
+poolAppendString(STRING_POOL *pool, const XML_Char *s)
+{
+ while (*s) {
+ if (!poolAppendChar(pool, *s))
+ return NULL;
+ s++;
+ }
+ return pool->start;
+}
+
+static XML_Char *
+poolStoreString(STRING_POOL *pool, const ENCODING *enc,
+ const char *ptr, const char *end)
+{
+ if (!poolAppend(pool, enc, ptr, end))
+ return NULL;
+ if (pool->ptr == pool->end && !poolGrow(pool))
+ return NULL;
+ *(pool->ptr)++ = 0;
+ return pool->start;
+}
+
+static XML_Bool FASTCALL
+poolGrow(STRING_POOL *pool)
+{
+ if (pool->freeBlocks) {
+ if (pool->start == 0) {
+ pool->blocks = pool->freeBlocks;
+ pool->freeBlocks = pool->freeBlocks->next;
+ pool->blocks->next = NULL;
+ pool->start = pool->blocks->s;
+ pool->end = pool->start + pool->blocks->size;
+ pool->ptr = pool->start;
+ return XML_TRUE;
+ }
+ if (pool->end - pool->start < pool->freeBlocks->size) {
+ BLOCK *tem = pool->freeBlocks->next;
+ pool->freeBlocks->next = pool->blocks;
+ pool->blocks = pool->freeBlocks;
+ pool->freeBlocks = tem;
+ memcpy(pool->blocks->s, pool->start,
+ (pool->end - pool->start) * sizeof(XML_Char));
+ pool->ptr = pool->blocks->s + (pool->ptr - pool->start);
+ pool->start = pool->blocks->s;
+ pool->end = pool->start + pool->blocks->size;
+ return XML_TRUE;
+ }
+ }
+ if (pool->blocks && pool->start == pool->blocks->s) {
+ int blockSize = (int)(pool->end - pool->start)*2;
+ pool->blocks = (BLOCK *)
+ pool->mem->realloc_fcn(pool->blocks,
+ (offsetof(BLOCK, s)
+ + blockSize * sizeof(XML_Char)));
+ if (pool->blocks == NULL)
+ return XML_FALSE;
+ pool->blocks->size = blockSize;
+ pool->ptr = pool->blocks->s + (pool->ptr - pool->start);
+ pool->start = pool->blocks->s;
+ pool->end = pool->start + blockSize;
+ }
+ else {
+ BLOCK *tem;
+ int blockSize = (int)(pool->end - pool->start);
+ if (blockSize < INIT_BLOCK_SIZE)
+ blockSize = INIT_BLOCK_SIZE;
+ else
+ blockSize *= 2;
+ tem = (BLOCK *)pool->mem->malloc_fcn(offsetof(BLOCK, s)
+ + blockSize * sizeof(XML_Char));
+ if (!tem)
+ return XML_FALSE;
+ tem->size = blockSize;
+ tem->next = pool->blocks;
+ pool->blocks = tem;
+ if (pool->ptr != pool->start)
+ memcpy(tem->s, pool->start,
+ (pool->ptr - pool->start) * sizeof(XML_Char));
+ pool->ptr = tem->s + (pool->ptr - pool->start);
+ pool->start = tem->s;
+ pool->end = tem->s + blockSize;
+ }
+ return XML_TRUE;
+}
+
+static int FASTCALL
+nextScaffoldPart(XML_Parser parser)
+{
+ DTD * const dtd = _dtd; /* save one level of indirection */
+ CONTENT_SCAFFOLD * me;
+ int next;
+
+ if (!dtd->scaffIndex) {
+ dtd->scaffIndex = (int *)MALLOC(groupSize * sizeof(int));
+ if (!dtd->scaffIndex)
+ return -1;
+ dtd->scaffIndex[0] = 0;
+ }
+
+ if (dtd->scaffCount >= dtd->scaffSize) {
+ CONTENT_SCAFFOLD *temp;
+ if (dtd->scaffold) {
+ temp = (CONTENT_SCAFFOLD *)
+ REALLOC(dtd->scaffold, dtd->scaffSize * 2 * sizeof(CONTENT_SCAFFOLD));
+ if (temp == NULL)
+ return -1;
+ dtd->scaffSize *= 2;
+ }
+ else {
+ temp = (CONTENT_SCAFFOLD *)MALLOC(INIT_SCAFFOLD_ELEMENTS
+ * sizeof(CONTENT_SCAFFOLD));
+ if (temp == NULL)
+ return -1;
+ dtd->scaffSize = INIT_SCAFFOLD_ELEMENTS;
+ }
+ dtd->scaffold = temp;
+ }
+ next = dtd->scaffCount++;
+ me = &dtd->scaffold[next];
+ if (dtd->scaffLevel) {
+ CONTENT_SCAFFOLD *parent = &dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel-1]];
+ if (parent->lastchild) {
+ dtd->scaffold[parent->lastchild].nextsib = next;
+ }
+ if (!parent->childcnt)
+ parent->firstchild = next;
+ parent->lastchild = next;
+ parent->childcnt++;
+ }
+ me->firstchild = me->lastchild = me->childcnt = me->nextsib = 0;
+ return next;
+}
+
+static void
+build_node(XML_Parser parser,
+ int src_node,
+ XML_Content *dest,
+ XML_Content **contpos,
+ XML_Char **strpos)
+{
+ DTD * const dtd = _dtd; /* save one level of indirection */
+ dest->type = dtd->scaffold[src_node].type;
+ dest->quant = dtd->scaffold[src_node].quant;
+ if (dest->type == XML_CTYPE_NAME) {
+ const XML_Char *src;
+ dest->name = *strpos;
+ src = dtd->scaffold[src_node].name;
+ for (;;) {
+ *(*strpos)++ = *src;
+ if (!*src)
+ break;
+ src++;
+ }
+ dest->numchildren = 0;
+ dest->children = NULL;
+ }
+ else {
+ unsigned int i;
+ int cn;
+ dest->numchildren = dtd->scaffold[src_node].childcnt;
+ dest->children = *contpos;
+ *contpos += dest->numchildren;
+ for (i = 0, cn = dtd->scaffold[src_node].firstchild;
+ i < dest->numchildren;
+ i++, cn = dtd->scaffold[cn].nextsib) {
+ build_node(parser, cn, &(dest->children[i]), contpos, strpos);
+ }
+ dest->name = NULL;
+ }
+}
+
+static XML_Content *
+build_model (XML_Parser parser)
+{
+ DTD * const dtd = _dtd; /* save one level of indirection */
+ XML_Content *ret;
+ XML_Content *cpos;
+ XML_Char * str;
+ int allocsize = (dtd->scaffCount * sizeof(XML_Content)
+ + (dtd->contentStringLen * sizeof(XML_Char)));
+
+ ret = (XML_Content *)MALLOC(allocsize);
+ if (!ret)
+ return NULL;
+
+ str = (XML_Char *) (&ret[dtd->scaffCount]);
+ cpos = &ret[1];
+
+ build_node(parser, 0, ret, &cpos, &str);
+ return ret;
+}
+
+static ELEMENT_TYPE *
+getElementType(XML_Parser parser,
+ const ENCODING *enc,
+ const char *ptr,
+ const char *end)
+{
+ DTD * const dtd = _dtd; /* save one level of indirection */
+ const XML_Char *name = poolStoreString(&dtd->pool, enc, ptr, end);
+ ELEMENT_TYPE *ret;
+
+ if (!name)
+ return NULL;
+ ret = (ELEMENT_TYPE *) lookup(&dtd->elementTypes, name, sizeof(ELEMENT_TYPE));
+ if (!ret)
+ return NULL;
+ if (ret->name != name)
+ poolDiscard(&dtd->pool);
+ else {
+ poolFinish(&dtd->pool);
+ if (!setElementTypePrefix(parser, ret))
+ return NULL;
+ }
+ return ret;
+}
+
+#ifdef __cplusplus
+}
+#endif

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/xmlparse.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/xmlparse.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1 @@
+#include "xmlparse.c"

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/xmlrole.c
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/xmlrole.c 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,1338 @@
+/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
+ See the file COPYING for copying permission.
+*/
+
+#include <stddef.h>
+
+#ifdef COMPILED_FROM_DSP
+#include "winconfig.h"
+#elif defined(MACOS_CLASSIC)
+#include "macconfig.h"
+#elif defined(__amigaos4__)
+#include "amigaconfig.h"
+#else
+#ifdef HAVE_EXPAT_CONFIG_H
+#include <expat_config.h>
+#endif
+#endif /* ndef COMPILED_FROM_DSP */
+
+#include "expat_external.h"
+#include "internal.h"
+#include "xmlrole.h"
+#include "ascii.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Doesn't check:
+
+ that ,| are not mixed in a model group
+ content of literals
+
+*/
+
+static const char KW_ANY[] = {
+ ASCII_A, ASCII_N, ASCII_Y, '\0' };
+static const char KW_ATTLIST[] = {
+ ASCII_A, ASCII_T, ASCII_T, ASCII_L, ASCII_I, ASCII_S, ASCII_T, '\0' };
+static const char KW_CDATA[] = {
+ ASCII_C, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0' };
+static const char KW_DOCTYPE[] = {
+ ASCII_D, ASCII_O, ASCII_C, ASCII_T, ASCII_Y, ASCII_P, ASCII_E, '\0' };
+static const char KW_ELEMENT[] = {
+ ASCII_E, ASCII_L, ASCII_E, ASCII_M, ASCII_E, ASCII_N, ASCII_T, '\0' };
+static const char KW_EMPTY[] = {
+ ASCII_E, ASCII_M, ASCII_P, ASCII_T, ASCII_Y, '\0' };
+static const char KW_ENTITIES[] = {
+ ASCII_E, ASCII_N, ASCII_T, ASCII_I, ASCII_T, ASCII_I, ASCII_E, ASCII_S,
+ '\0' };
+static const char KW_ENTITY[] = {
+ ASCII_E, ASCII_N, ASCII_T, ASCII_I, ASCII_T, ASCII_Y, '\0' };
+static const char KW_FIXED[] = {
+ ASCII_F, ASCII_I, ASCII_X, ASCII_E, ASCII_D, '\0' };
+static const char KW_ID[] = {
+ ASCII_I, ASCII_D, '\0' };
+static const char KW_IDREF[] = {
+ ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, '\0' };
+static const char KW_IDREFS[] = {
+ ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, ASCII_S, '\0' };
+static const char KW_IGNORE[] = {
+ ASCII_I, ASCII_G, ASCII_N, ASCII_O, ASCII_R, ASCII_E, '\0' };
+static const char KW_IMPLIED[] = {
+ ASCII_I, ASCII_M, ASCII_P, ASCII_L, ASCII_I, ASCII_E, ASCII_D, '\0' };
+static const char KW_INCLUDE[] = {
+ ASCII_I, ASCII_N, ASCII_C, ASCII_L, ASCII_U, ASCII_D, ASCII_E, '\0' };
+static const char KW_NDATA[] = {
+ ASCII_N, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0' };
+static const char KW_NMTOKEN[] = {
+ ASCII_N, ASCII_M, ASCII_T, ASCII_O, ASCII_K, ASCII_E, ASCII_N, '\0' };
+static const char KW_NMTOKENS[] = {
+ ASCII_N, ASCII_M, ASCII_T, ASCII_O, ASCII_K, ASCII_E, ASCII_N, ASCII_S,
+ '\0' };
+static const char KW_NOTATION[] =
+ { ASCII_N, ASCII_O, ASCII_T, ASCII_A, ASCII_T, ASCII_I, ASCII_O, ASCII_N,
+ '\0' };
+static const char KW_PCDATA[] = {
+ ASCII_P, ASCII_C, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0' };
+static const char KW_PUBLIC[] = {
+ ASCII_P, ASCII_U, ASCII_B, ASCII_L, ASCII_I, ASCII_C, '\0' };
+static const char KW_REQUIRED[] = {
+ ASCII_R, ASCII_E, ASCII_Q, ASCII_U, ASCII_I, ASCII_R, ASCII_E, ASCII_D,
+ '\0' };
+static const char KW_SYSTEM[] = {
+ ASCII_S, ASCII_Y, ASCII_S, ASCII_T, ASCII_E, ASCII_M, '\0' };
+
+#ifndef MIN_BYTES_PER_CHAR
+#define MIN_BYTES_PER_CHAR(enc) ((enc)->minBytesPerChar)
+#endif
+
+#ifdef XML_DTD
+#define setTopLevel(state) \
+ ((state)->handler = ((state)->documentEntity \
+ ? internalSubset \
+ : externalSubset1))
+#else /* not XML_DTD */
+#define setTopLevel(state) ((state)->handler = internalSubset)
+#endif /* not XML_DTD */
+
+typedef int PTRCALL PROLOG_HANDLER(PROLOG_STATE *state,
+ int tok,
+ const char *ptr,
+ const char *end,
+ const ENCODING *enc);
+
+static PROLOG_HANDLER
+ prolog0, prolog1, prolog2,
+ doctype0, doctype1, doctype2, doctype3, doctype4, doctype5,
+ internalSubset,
+ entity0, entity1, entity2, entity3, entity4, entity5, entity6,
+ entity7, entity8, entity9, entity10,
+ notation0, notation1, notation2, notation3, notation4,
+ attlist0, attlist1, attlist2, attlist3, attlist4, attlist5, attlist6,
+ attlist7, attlist8, attlist9,
+ element0, element1, element2, element3, element4, element5, element6,
+ element7,
+#ifdef XML_DTD
+ externalSubset0, externalSubset1,
+ condSect0, condSect1, condSect2,
+#endif /* XML_DTD */
+ declClose,
+ error;
+
+static int FASTCALL common(PROLOG_STATE *state, int tok);
+
+static int PTRCALL
+prolog0(PROLOG_STATE *state,
+ int tok,
+ const char *ptr,
+ const char *end,
+ const ENCODING *enc)
+{
+ switch (tok) {
+ case XML_TOK_PROLOG_S:
+ state->handler = prolog1;
+ return XML_ROLE_NONE;
+ case XML_TOK_XML_DECL:
+ state->handler = prolog1;
+ return XML_ROLE_XML_DECL;
+ case XML_TOK_PI:
+ state->handler = prolog1;
+ return XML_ROLE_PI;
+ case XML_TOK_COMMENT:
+ state->handler = prolog1;
+ return XML_ROLE_COMMENT;
+ case XML_TOK_BOM:
+ return XML_ROLE_NONE;
+ case XML_TOK_DECL_OPEN:
+ if (!XmlNameMatchesAscii(enc,
+ ptr + 2 * MIN_BYTES_PER_CHAR(enc),
+ end,
+ KW_DOCTYPE))
+ break;
+ state->handler = doctype0;
+ return XML_ROLE_DOCTYPE_NONE;
+ case XML_TOK_INSTANCE_START:
+ state->handler = error;
+ return XML_ROLE_INSTANCE_START;
+ }
+ return common(state, tok);
+}
+
+static int PTRCALL
+prolog1(PROLOG_STATE *state,
+ int tok,
+ const char *ptr,
+ const char *end,
+ const ENCODING *enc)
+{
+ switch (tok) {
+ case XML_TOK_PROLOG_S:
+ return XML_ROLE_NONE;
+ case XML_TOK_PI:
+ return XML_ROLE_PI;
+ case XML_TOK_COMMENT:
+ return XML_ROLE_COMMENT;
+ case XML_TOK_BOM:
+ return XML_ROLE_NONE;
+ case XML_TOK_DECL_OPEN:
+ if (!XmlNameMatchesAscii(enc,
+ ptr + 2 * MIN_BYTES_PER_CHAR(enc),
+ end,
+ KW_DOCTYPE))
+ break;
+ state->handler = doctype0;
+ return XML_ROLE_DOCTYPE_NONE;
+ case XML_TOK_INSTANCE_START:
+ state->handler = error;
+ return XML_ROLE_INSTANCE_START;
+ }
+ return common(state, tok);
+}
+
+static int PTRCALL
+prolog2(PROLOG_STATE *state,
+ int tok,
+ const char *ptr,
+ const char *end,
+ const ENCODING *enc)
+{
+ switch (tok) {
+ case XML_TOK_PROLOG_S:
+ return XML_ROLE_NONE;
+ case XML_TOK_PI:
+ return XML_ROLE_PI;
+ case XML_TOK_COMMENT:
+ return XML_ROLE_COMMENT;
+ case XML_TOK_INSTANCE_START:
+ state->handler = error;
+ return XML_ROLE_INSTANCE_START;
+ }
+ return common(state, tok);
+}
+
+static int PTRCALL
+doctype0(PROLOG_STATE *state,
+ int tok,
+ const char *ptr,
+ const char *end,
+ const ENCODING *enc)
+{
+ switch (tok) {
+ case XML_TOK_PROLOG_S:
+ return XML_ROLE_DOCTYPE_NONE;
+ case XML_TOK_NAME:
+ case XML_TOK_PREFIXED_NAME:
+ state->handler = doctype1;
+ return XML_ROLE_DOCTYPE_NAME;
+ }
+ return common(state, tok);
+}
+
+static int PTRCALL
+doctype1(PROLOG_STATE *state,
+ int tok,
+ const char *ptr,
+ const char *end,
+ const ENCODING *enc)
+{
+ switch (tok) {
+ case XML_TOK_PROLOG_S:
+ return XML_ROLE_DOCTYPE_NONE;
+ case XML_TOK_OPEN_BRACKET:
+ state->handler = internalSubset;
+ return XML_ROLE_DOCTYPE_INTERNAL_SUBSET;
+ case XML_TOK_DECL_CLOSE:
+ state->handler = prolog2;
+ return XML_ROLE_DOCTYPE_CLOSE;
+ case XML_TOK_NAME:
+ if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) {
+ state->handler = doctype3;
+ return XML_ROLE_DOCTYPE_NONE;
+ }
+ if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) {
+ state->handler = doctype2;
+ return XML_ROLE_DOCTYPE_NONE;
+ }
+ break;
+ }
+ return common(state, tok);
+}
+
+static int PTRCALL
+doctype2(PROLOG_STATE *state,
+ int tok,
+ const char *ptr,
+ const char *end,
+ const ENCODING *enc)
+{
+ switch (tok) {
+ case XML_TOK_PROLOG_S:
+ return XML_ROLE_DOCTYPE_NONE;
+ case XML_TOK_LITERAL:
+ state->handler = doctype3;
+ return XML_ROLE_DOCTYPE_PUBLIC_ID;
+ }
+ return common(state, tok);
+}
+
+static int PTRCALL
+doctype3(PROLOG_STATE *state,
+ int tok,
+ const char *ptr,
+ const char *end,
+ const ENCODING *enc)
+{
+ switch (tok) {
+ case XML_TOK_PROLOG_S:
+ return XML_ROLE_DOCTYPE_NONE;
+ case XML_TOK_LITERAL:
+ state->handler = doctype4;
+ return XML_ROLE_DOCTYPE_SYSTEM_ID;
+ }
+ return common(state, tok);
+}
+
+static int PTRCALL
+doctype4(PROLOG_STATE *state,
+ int tok,
+ const char *ptr,
+ const char *end,
+ const ENCODING *enc)
+{
+ switch (tok) {
+ case XML_TOK_PROLOG_S:
+ return XML_ROLE_DOCTYPE_NONE;
+ case XML_TOK_OPEN_BRACKET:
+ state->handler = internalSubset;
+ return XML_ROLE_DOCTYPE_INTERNAL_SUBSET;
+ case XML_TOK_DECL_CLOSE:
+ state->handler = prolog2;
+ return XML_ROLE_DOCTYPE_CLOSE;
+ }
+ return common(state, tok);
+}
+
+static int PTRCALL
+doctype5(PROLOG_STATE *state,
+ int tok,
+ const char *ptr,
+ const char *end,
+ const ENCODING *enc)
+{
+ switch (tok) {
+ case XML_TOK_PROLOG_S:
+ return XML_ROLE_DOCTYPE_NONE;
+ case XML_TOK_DECL_CLOSE:
+ state->handler = prolog2;
+ return XML_ROLE_DOCTYPE_CLOSE;
+ }
+ return common(state, tok);
+}
+
+static int PTRCALL
+internalSubset(PROLOG_STATE *state,
+ int tok,
+ const char *ptr,
+ const char *end,
+ const ENCODING *enc)
+{
+ switch (tok) {
+ case XML_TOK_PROLOG_S:
+ return XML_ROLE_NONE;
+ case XML_TOK_DECL_OPEN:
+ if (XmlNameMatchesAscii(enc,
+ ptr + 2 * MIN_BYTES_PER_CHAR(enc),
+ end,
+ KW_ENTITY)) {
+ state->handler = entity0;
+ return XML_ROLE_ENTITY_NONE;
+ }
+ if (XmlNameMatchesAscii(enc,
+ ptr + 2 * MIN_BYTES_PER_CHAR(enc),
+ end,
+ KW_ATTLIST)) {
+ state->handler = attlist0;
+ return XML_ROLE_ATTLIST_NONE;
+ }
+ if (XmlNameMatchesAscii(enc,
+ ptr + 2 * MIN_BYTES_PER_CHAR(enc),
+ end,
+ KW_ELEMENT)) {
+ state->handler = element0;
+ return XML_ROLE_ELEMENT_NONE;
+ }
+ if (XmlNameMatchesAscii(enc,
+ ptr + 2 * MIN_BYTES_PER_CHAR(enc),
+ end,
+ KW_NOTATION)) {
+ state->handler = notation0;
+ return XML_ROLE_NOTATION_NONE;
+ }
+ break;
+ case XML_TOK_PI:
+ return XML_ROLE_PI;
+ case XML_TOK_COMMENT:
+ return XML_ROLE_COMMENT;
+ case XML_TOK_PARAM_ENTITY_REF:
+ return XML_ROLE_PARAM_ENTITY_REF;
+ case XML_TOK_CLOSE_BRACKET:
+ state->handler = doctype5;
+ return XML_ROLE_DOCTYPE_NONE;
+ case XML_TOK_NONE:
+ return XML_ROLE_NONE;
+ }
+ return common(state, tok);
+}
+
+#ifdef XML_DTD
+
+static int PTRCALL
+externalSubset0(PROLOG_STATE *state,
+ int tok,
+ const char *ptr,
+ const char *end,
+ const ENCODING *enc)
+{
+ state->handler = externalSubset1;
+ if (tok == XML_TOK_XML_DECL)
+ return XML_ROLE_TEXT_DECL;
+ return externalSubset1(state, tok, ptr, end, enc);
+}
+
+static int PTRCALL
+externalSubset1(PROLOG_STATE *state,
+ int tok,
+ const char *ptr,
+ const char *end,
+ const ENCODING *enc)
+{
+ switch (tok) {
+ case XML_TOK_COND_SECT_OPEN:
+ state->handler = condSect0;
+ return XML_ROLE_NONE;
+ case XML_TOK_COND_SECT_CLOSE:
+ if (state->includeLevel == 0)
+ break;
+ state->includeLevel -= 1;
+ return XML_ROLE_NONE;
+ case XML_TOK_PROLOG_S:
+ return XML_ROLE_NONE;
+ case XML_TOK_CLOSE_BRACKET:
+ break;
+ case XML_TOK_NONE:
+ if (state->includeLevel)
+ break;
+ return XML_ROLE_NONE;
+ default:
+ return internalSubset(state, tok, ptr, end, enc);
+ }
+ return common(state, tok);
+}
+
+#endif /* XML_DTD */
+
+static int PTRCALL
+entity0(PROLOG_STATE *state,
+ int tok,
+ const char *ptr,
+ const char *end,
+ const ENCODING *enc)
+{
+ switch (tok) {
+ case XML_TOK_PROLOG_S:
+ return XML_ROLE_ENTITY_NONE;
+ case XML_TOK_PERCENT:
+ state->handler = entity1;
+ return XML_ROLE_ENTITY_NONE;
+ case XML_TOK_NAME:
+ state->handler = entity2;
+ return XML_ROLE_GENERAL_ENTITY_NAME;
+ }
+ return common(state, tok);
+}
+
+static int PTRCALL
+entity1(PROLOG_STATE *state,
+ int tok,
+ const char *ptr,
+ const char *end,
+ const ENCODING *enc)
+{
+ switch (tok) {
+ case XML_TOK_PROLOG_S:
+ return XML_ROLE_ENTITY_NONE;
+ case XML_TOK_NAME:
+ state->handler = entity7;
+ return XML_ROLE_PARAM_ENTITY_NAME;
+ }
+ return common(state, tok);
+}
+
+static int PTRCALL
+entity2(PROLOG_STATE *state,
+ int tok,
+ const char *ptr,
+ const char *end,
+ const ENCODING *enc)
+{
+ switch (tok) {
+ case XML_TOK_PROLOG_S:
+ return XML_ROLE_ENTITY_NONE;
+ case XML_TOK_NAME:
+ if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) {
+ state->handler = entity4;
+ return XML_ROLE_ENTITY_NONE;
+ }
+ if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) {
+ state->handler = entity3;
+ return XML_ROLE_ENTITY_NONE;
+ }
+ break;
+ case XML_TOK_LITERAL:
+ state->handler = declClose;
+ state->role_none = XML_ROLE_ENTITY_NONE;
+ return XML_ROLE_ENTITY_VALUE;
+ }
+ return common(state, tok);
+}
+
+static int PTRCALL
+entity3(PROLOG_STATE *state,
+ int tok,
+ const char *ptr,
+ const char *end,
+ const ENCODING *enc)
+{
+ switch (tok) {
+ case XML_TOK_PROLOG_S:
+ return XML_ROLE_ENTITY_NONE;
+ case XML_TOK_LITERAL:
+ state->handler = entity4;
+ return XML_ROLE_ENTITY_PUBLIC_ID;
+ }
+ return common(state, tok);
+}
+
+static int PTRCALL
+entity4(PROLOG_STATE *state,
+ int tok,
+ const char *ptr,
+ const char *end,
+ const ENCODING *enc)
+{
+ switch (tok) {
+ case XML_TOK_PROLOG_S:
+ return XML_ROLE_ENTITY_NONE;
+ case XML_TOK_LITERAL:
+ state->handler = entity5;
+ return XML_ROLE_ENTITY_SYSTEM_ID;
+ }
+ return common(state, tok);
+}
+
+static int PTRCALL
+entity5(PROLOG_STATE *state,
+ int tok,
+ const char *ptr,
+ const char *end,
+ const ENCODING *enc)
+{
+ switch (tok) {
+ case XML_TOK_PROLOG_S:
+ return XML_ROLE_ENTITY_NONE;
+ case XML_TOK_DECL_CLOSE:
+ setTopLevel(state);
+ return XML_ROLE_ENTITY_COMPLETE;
+ case XML_TOK_NAME:
+ if (XmlNameMatchesAscii(enc, ptr, end, KW_NDATA)) {
+ state->handler = entity6;
+ return XML_ROLE_ENTITY_NONE;
+ }
+ break;
+ }
+ return common(state, tok);
+}
+
+static int PTRCALL
+entity6(PROLOG_STATE *state,
+ int tok,
+ const char *ptr,
+ const char *end,
+ const ENCODING *enc)
+{
+ switch (tok) {
+ case XML_TOK_PROLOG_S:
+ return XML_ROLE_ENTITY_NONE;
+ case XML_TOK_NAME:
+ state->handler = declClose;
+ state->role_none = XML_ROLE_ENTITY_NONE;
+ return XML_ROLE_ENTITY_NOTATION_NAME;
+ }
+ return common(state, tok);
+}
+
+static int PTRCALL
+entity7(PROLOG_STATE *state,
+ int tok,
+ const char *ptr,
+ const char *end,
+ const ENCODING *enc)
+{
+ switch (tok) {
+ case XML_TOK_PROLOG_S:
+ return XML_ROLE_ENTITY_NONE;
+ case XML_TOK_NAME:
+ if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) {
+ state->handler = entity9;
+ return XML_ROLE_ENTITY_NONE;
+ }
+ if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) {
+ state->handler = entity8;
+ return XML_ROLE_ENTITY_NONE;
+ }
+ break;
+ case XML_TOK_LITERAL:
+ state->handler = declClose;
+ state->role_none = XML_ROLE_ENTITY_NONE;
+ return XML_ROLE_ENTITY_VALUE;
+ }
+ return common(state, tok);
+}
+
+static int PTRCALL
+entity8(PROLOG_STATE *state,
+ int tok,
+ const char *ptr,
+ const char *end,
+ const ENCODING *enc)
+{
+ switch (tok) {
+ case XML_TOK_PROLOG_S:
+ return XML_ROLE_ENTITY_NONE;
+ case XML_TOK_LITERAL:
+ state->handler = entity9;
+ return XML_ROLE_ENTITY_PUBLIC_ID;
+ }
+ return common(state, tok);
+}
+
+static int PTRCALL
+entity9(PROLOG_STATE *state,
+ int tok,
+ const char *ptr,
+ const char *end,
+ const ENCODING *enc)
+{
+ switch (tok) {
+ case XML_TOK_PROLOG_S:
+ return XML_ROLE_ENTITY_NONE;
+ case XML_TOK_LITERAL:
+ state->handler = entity10;
+ return XML_ROLE_ENTITY_SYSTEM_ID;
+ }
+ return common(state, tok);
+}
+
+static int PTRCALL
+entity10(PROLOG_STATE *state,
+ int tok,
+ const char *ptr,
+ const char *end,
+ const ENCODING *enc)
+{
+ switch (tok) {
+ case XML_TOK_PROLOG_S:
+ return XML_ROLE_ENTITY_NONE;
+ case XML_TOK_DECL_CLOSE:
+ setTopLevel(state);
+ return XML_ROLE_ENTITY_COMPLETE;
+ }
+ return common(state, tok);
+}
+
+static int PTRCALL
+notation0(PROLOG_STATE *state,
+ int tok,
+ const char *ptr,
+ const char *end,
+ const ENCODING *enc)
+{
+ switch (tok) {
+ case XML_TOK_PROLOG_S:
+ return XML_ROLE_NOTATION_NONE;
+ case XML_TOK_NAME:
+ state->handler = notation1;
+ return XML_ROLE_NOTATION_NAME;
+ }
+ return common(state, tok);
+}
+
+static int PTRCALL
+notation1(PROLOG_STATE *state,
+ int tok,
+ const char *ptr,
+ const char *end,
+ const ENCODING *enc)
+{
+ switch (tok) {
+ case XML_TOK_PROLOG_S:
+ return XML_ROLE_NOTATION_NONE;
+ case XML_TOK_NAME:
+ if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) {
+ state->handler = notation3;
+ return XML_ROLE_NOTATION_NONE;
+ }
+ if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) {
+ state->handler = notation2;
+ return XML_ROLE_NOTATION_NONE;
+ }
+ break;
+ }
+ return common(state, tok);
+}
+
+static int PTRCALL
+notation2(PROLOG_STATE *state,
+ int tok,
+ const char *ptr,
+ const char *end,
+ const ENCODING *enc)
+{
+ switch (tok) {
+ case XML_TOK_PROLOG_S:
+ return XML_ROLE_NOTATION_NONE;
+ case XML_TOK_LITERAL:
+ state->handler = notation4;
+ return XML_ROLE_NOTATION_PUBLIC_ID;
+ }
+ return common(state, tok);
+}
+
+static int PTRCALL
+notation3(PROLOG_STATE *state,
+ int tok,
+ const char *ptr,
+ const char *end,
+ const ENCODING *enc)
+{
+ switch (tok) {
+ case XML_TOK_PROLOG_S:
+ return XML_ROLE_NOTATION_NONE;
+ case XML_TOK_LITERAL:
+ state->handler = declClose;
+ state->role_none = XML_ROLE_NOTATION_NONE;
+ return XML_ROLE_NOTATION_SYSTEM_ID;
+ }
+ return common(state, tok);
+}
+
+static int PTRCALL
+notation4(PROLOG_STATE *state,
+ int tok,
+ const char *ptr,
+ const char *end,
+ const ENCODING *enc)
+{
+ switch (tok) {
+ case XML_TOK_PROLOG_S:
+ return XML_ROLE_NOTATION_NONE;
+ case XML_TOK_LITERAL:
+ state->handler = declClose;
+ state->role_none = XML_ROLE_NOTATION_NONE;
+ return XML_ROLE_NOTATION_SYSTEM_ID;
+ case XML_TOK_DECL_CLOSE:
+ setTopLevel(state);
+ return XML_ROLE_NOTATION_NO_SYSTEM_ID;
+ }
+ return common(state, tok);
+}
+
+static int PTRCALL
+attlist0(PROLOG_STATE *state,
+ int tok,
+ const char *ptr,
+ const char *end,
+ const ENCODING *enc)
+{
+ switch (tok) {
+ case XML_TOK_PROLOG_S:
+ return XML_ROLE_ATTLIST_NONE;
+ case XML_TOK_NAME:
+ case XML_TOK_PREFIXED_NAME:
+ state->handler = attlist1;
+ return XML_ROLE_ATTLIST_ELEMENT_NAME;
+ }
+ return common(state, tok);
+}
+
+static int PTRCALL
+attlist1(PROLOG_STATE *state,
+ int tok,
+ const char *ptr,
+ const char *end,
+ const ENCODING *enc)
+{
+ switch (tok) {
+ case XML_TOK_PROLOG_S:
+ return XML_ROLE_ATTLIST_NONE;
+ case XML_TOK_DECL_CLOSE:
+ setTopLevel(state);
+ return XML_ROLE_ATTLIST_NONE;
+ case XML_TOK_NAME:
+ case XML_TOK_PREFIXED_NAME:
+ state->handler = attlist2;
+ return XML_ROLE_ATTRIBUTE_NAME;
+ }
+ return common(state, tok);
+}
+
+static int PTRCALL
+attlist2(PROLOG_STATE *state,
+ int tok,
+ const char *ptr,
+ const char *end,
+ const ENCODING *enc)
+{
+ switch (tok) {
+ case XML_TOK_PROLOG_S:
+ return XML_ROLE_ATTLIST_NONE;
+ case XML_TOK_NAME:
+ {
+ static const char * const types[] = {
+ KW_CDATA,
+ KW_ID,
+ KW_IDREF,
+ KW_IDREFS,
+ KW_ENTITY,
+ KW_ENTITIES,
+ KW_NMTOKEN,
+ KW_NMTOKENS,
+ };
+ int i;
+ for (i = 0; i < (int)(sizeof(types)/sizeof(types[0])); i++)
+ if (XmlNameMatchesAscii(enc, ptr, end, types[i])) {
+ state->handler = attlist8;
+ return XML_ROLE_ATTRIBUTE_TYPE_CDATA + i;
+ }
+ }
+ if (XmlNameMatchesAscii(enc, ptr, end, KW_NOTATION)) {
+ state->handler = attlist5;
+ return XML_ROLE_ATTLIST_NONE;
+ }
+ break;
+ case XML_TOK_OPEN_PAREN:
+ state->handler = attlist3;
+ return XML_ROLE_ATTLIST_NONE;
+ }
+ return common(state, tok);
+}
+
+static int PTRCALL
+attlist3(PROLOG_STATE *state,
+ int tok,
+ const char *ptr,
+ const char *end,
+ const ENCODING *enc)
+{
+ switch (tok) {
+ case XML_TOK_PROLOG_S:
+ return XML_ROLE_ATTLIST_NONE;
+ case XML_TOK_NMTOKEN:
+ case XML_TOK_NAME:
+ case XML_TOK_PREFIXED_NAME:
+ state->handler = attlist4;
+ return XML_ROLE_ATTRIBUTE_ENUM_VALUE;
+ }
+ return common(state, tok);
+}
+
+static int PTRCALL
+attlist4(PROLOG_STATE *state,
+ int tok,
+ const char *ptr,
+ const char *end,
+ const ENCODING *enc)
+{
+ switch (tok) {
+ case XML_TOK_PROLOG_S:
+ return XML_ROLE_ATTLIST_NONE;
+ case XML_TOK_CLOSE_PAREN:
+ state->handler = attlist8;
+ return XML_ROLE_ATTLIST_NONE;
+ case XML_TOK_OR:
+ state->handler = attlist3;
+ return XML_ROLE_ATTLIST_NONE;
+ }
+ return common(state, tok);
+}
+
+static int PTRCALL
+attlist5(PROLOG_STATE *state,
+ int tok,
+ const char *ptr,
+ const char *end,
+ const ENCODING *enc)
+{
+ switch (tok) {
+ case XML_TOK_PROLOG_S:
+ return XML_ROLE_ATTLIST_NONE;
+ case XML_TOK_OPEN_PAREN:
+ state->handler = attlist6;
+ return XML_ROLE_ATTLIST_NONE;
+ }
+ return common(state, tok);
+}
+
+static int PTRCALL
+attlist6(PROLOG_STATE *state,
+ int tok,
+ const char *ptr,
+ const char *end,
+ const ENCODING *enc)
+{
+ switch (tok) {
+ case XML_TOK_PROLOG_S:
+ return XML_ROLE_ATTLIST_NONE;
+ case XML_TOK_NAME:
+ state->handler = attlist7;
+ return XML_ROLE_ATTRIBUTE_NOTATION_VALUE;
+ }
+ return common(state, tok);
+}
+
+static int PTRCALL
+attlist7(PROLOG_STATE *state,
+ int tok,
+ const char *ptr,
+ const char *end,
+ const ENCODING *enc)
+{
+ switch (tok) {
+ case XML_TOK_PROLOG_S:
+ return XML_ROLE_ATTLIST_NONE;
+ case XML_TOK_CLOSE_PAREN:
+ state->handler = attlist8;
+ return XML_ROLE_ATTLIST_NONE;
+ case XML_TOK_OR:
+ state->handler = attlist6;
+ return XML_ROLE_ATTLIST_NONE;
+ }
+ return common(state, tok);
+}
+
+/* default value */
+static int PTRCALL
+attlist8(PROLOG_STATE *state,
+ int tok,
+ const char *ptr,
+ const char *end,
+ const ENCODING *enc)
+{
+ switch (tok) {
+ case XML_TOK_PROLOG_S:
+ return XML_ROLE_ATTLIST_NONE;
+ case XML_TOK_POUND_NAME:
+ if (XmlNameMatchesAscii(enc,
+ ptr + MIN_BYTES_PER_CHAR(enc),
+ end,
+ KW_IMPLIED)) {
+ state->handler = attlist1;
+ return XML_ROLE_IMPLIED_ATTRIBUTE_VALUE;
+ }
+ if (XmlNameMatchesAscii(enc,
+ ptr + MIN_BYTES_PER_CHAR(enc),
+ end,
+ KW_REQUIRED)) {
+ state->handler = attlist1;
+ return XML_ROLE_REQUIRED_ATTRIBUTE_VALUE;
+ }
+ if (XmlNameMatchesAscii(enc,
+ ptr + MIN_BYTES_PER_CHAR(enc),
+ end,
+ KW_FIXED)) {
+ state->handler = attlist9;
+ return XML_ROLE_ATTLIST_NONE;
+ }
+ break;
+ case XML_TOK_LITERAL:
+ state->handler = attlist1;
+ return XML_ROLE_DEFAULT_ATTRIBUTE_VALUE;
+ }
+ return common(state, tok);
+}
+
+static int PTRCALL
+attlist9(PROLOG_STATE *state,
+ int tok,
+ const char *ptr,
+ const char *end,
+ const ENCODING *enc)
+{
+ switch (tok) {
+ case XML_TOK_PROLOG_S:
+ return XML_ROLE_ATTLIST_NONE;
+ case XML_TOK_LITERAL:
+ state->handler = attlist1;
+ return XML_ROLE_FIXED_ATTRIBUTE_VALUE;
+ }
+ return common(state, tok);
+}
+
+static int PTRCALL
+element0(PROLOG_STATE *state,
+ int tok,
+ const char *ptr,
+ const char *end,
+ const ENCODING *enc)
+{
+ switch (tok) {
+ case XML_TOK_PROLOG_S:
+ return XML_ROLE_ELEMENT_NONE;
+ case XML_TOK_NAME:
+ case XML_TOK_PREFIXED_NAME:
+ state->handler = element1;
+ return XML_ROLE_ELEMENT_NAME;
+ }
+ return common(state, tok);
+}
+
+static int PTRCALL
+element1(PROLOG_STATE *state,
+ int tok,
+ const char *ptr,
+ const char *end,
+ const ENCODING *enc)
+{
+ switch (tok) {
+ case XML_TOK_PROLOG_S:
+ return XML_ROLE_ELEMENT_NONE;
+ case XML_TOK_NAME:
+ if (XmlNameMatchesAscii(enc, ptr, end, KW_EMPTY)) {
+ state->handler = declClose;
+ state->role_none = XML_ROLE_ELEMENT_NONE;
+ return XML_ROLE_CONTENT_EMPTY;
+ }
+ if (XmlNameMatchesAscii(enc, ptr, end, KW_ANY)) {
+ state->handler = declClose;
+ state->role_none = XML_ROLE_ELEMENT_NONE;
+ return XML_ROLE_CONTENT_ANY;
+ }
+ break;
+ case XML_TOK_OPEN_PAREN:
+ state->handler = element2;
+ state->level = 1;
+ return XML_ROLE_GROUP_OPEN;
+ }
+ return common(state, tok);
+}
+
+static int PTRCALL
+element2(PROLOG_STATE *state,
+ int tok,
+ const char *ptr,
+ const char *end,
+ const ENCODING *enc)
+{
+ switch (tok) {
+ case XML_TOK_PROLOG_S:
+ return XML_ROLE_ELEMENT_NONE;
+ case XML_TOK_POUND_NAME:
+ if (XmlNameMatchesAscii(enc,
+ ptr + MIN_BYTES_PER_CHAR(enc),
+ end,
+ KW_PCDATA)) {
+ state->handler = element3;
+ return XML_ROLE_CONTENT_PCDATA;
+ }
+ break;
+ case XML_TOK_OPEN_PAREN:
+ state->level = 2;
+ state->handler = element6;
+ return XML_ROLE_GROUP_OPEN;
+ case XML_TOK_NAME:
+ case XML_TOK_PREFIXED_NAME:
+ state->handler = element7;
+ return XML_ROLE_CONTENT_ELEMENT;
+ case XML_TOK_NAME_QUESTION:
+ state->handler = element7;
+ return XML_ROLE_CONTENT_ELEMENT_OPT;
+ case XML_TOK_NAME_ASTERISK:
+ state->handler = element7;
+ return XML_ROLE_CONTENT_ELEMENT_REP;
+ case XML_TOK_NAME_PLUS:
+ state->handler = element7;
+ return XML_ROLE_CONTENT_ELEMENT_PLUS;
+ }
+ return common(state, tok);
+}
+
+static int PTRCALL
+element3(PROLOG_STATE *state,
+ int tok,
+ const char *ptr,
+ const char *end,
+ const ENCODING *enc)
+{
+ switch (tok) {
+ case XML_TOK_PROLOG_S:
+ return XML_ROLE_ELEMENT_NONE;
+ case XML_TOK_CLOSE_PAREN:
+ state->handler = declClose;
+ state->role_none = XML_ROLE_ELEMENT_NONE;
+ return XML_ROLE_GROUP_CLOSE;
+ case XML_TOK_CLOSE_PAREN_ASTERISK:
+ state->handler = declClose;
+ state->role_none = XML_ROLE_ELEMENT_NONE;
+ return XML_ROLE_GROUP_CLOSE_REP;
+ case XML_TOK_OR:
+ state->handler = element4;
+ return XML_ROLE_ELEMENT_NONE;
+ }
+ return common(state, tok);
+}
+
+static int PTRCALL
+element4(PROLOG_STATE *state,
+ int tok,
+ const char *ptr,
+ const char *end,
+ const ENCODING *enc)
+{
+ switch (tok) {
+ case XML_TOK_PROLOG_S:
+ return XML_ROLE_ELEMENT_NONE;
+ case XML_TOK_NAME:
+ case XML_TOK_PREFIXED_NAME:
+ state->handler = element5;
+ return XML_ROLE_CONTENT_ELEMENT;
+ }
+ return common(state, tok);
+}
+
+static int PTRCALL
+element5(PROLOG_STATE *state,
+ int tok,
+ const char *ptr,
+ const char *end,
+ const ENCODING *enc)
+{
+ switch (tok) {
+ case XML_TOK_PROLOG_S:
+ return XML_ROLE_ELEMENT_NONE;
+ case XML_TOK_CLOSE_PAREN_ASTERISK:
+ state->handler = declClose;
+ state->role_none = XML_ROLE_ELEMENT_NONE;
+ return XML_ROLE_GROUP_CLOSE_REP;
+ case XML_TOK_OR:
+ state->handler = element4;
+ return XML_ROLE_ELEMENT_NONE;
+ }
+ return common(state, tok);
+}
+
+static int PTRCALL
+element6(PROLOG_STATE *state,
+ int tok,
+ const char *ptr,
+ const char *end,
+ const ENCODING *enc)
+{
+ switch (tok) {
+ case XML_TOK_PROLOG_S:
+ return XML_ROLE_ELEMENT_NONE;
+ case XML_TOK_OPEN_PAREN:
+ state->level += 1;
+ return XML_ROLE_GROUP_OPEN;
+ case XML_TOK_NAME:
+ case XML_TOK_PREFIXED_NAME:
+ state->handler = element7;
+ return XML_ROLE_CONTENT_ELEMENT;
+ case XML_TOK_NAME_QUESTION:
+ state->handler = element7;
+ return XML_ROLE_CONTENT_ELEMENT_OPT;
+ case XML_TOK_NAME_ASTERISK:
+ state->handler = element7;
+ return XML_ROLE_CONTENT_ELEMENT_REP;
+ case XML_TOK_NAME_PLUS:
+ state->handler = element7;
+ return XML_ROLE_CONTENT_ELEMENT_PLUS;
+ }
+ return common(state, tok);
+}
+
+static int PTRCALL
+element7(PROLOG_STATE *state,
+ int tok,
+ const char *ptr,
+ const char *end,
+ const ENCODING *enc)
+{
+ switch (tok) {
+ case XML_TOK_PROLOG_S:
+ return XML_ROLE_ELEMENT_NONE;
+ case XML_TOK_CLOSE_PAREN:
+ state->level -= 1;
+ if (state->level == 0) {
+ state->handler = declClose;
+ state->role_none = XML_ROLE_ELEMENT_NONE;
+ }
+ return XML_ROLE_GROUP_CLOSE;
+ case XML_TOK_CLOSE_PAREN_ASTERISK:
+ state->level -= 1;
+ if (state->level == 0) {
+ state->handler = declClose;
+ state->role_none = XML_ROLE_ELEMENT_NONE;
+ }
+ return XML_ROLE_GROUP_CLOSE_REP;
+ case XML_TOK_CLOSE_PAREN_QUESTION:
+ state->level -= 1;
+ if (state->level == 0) {
+ state->handler = declClose;
+ state->role_none = XML_ROLE_ELEMENT_NONE;
+ }
+ return XML_ROLE_GROUP_CLOSE_OPT;
+ case XML_TOK_CLOSE_PAREN_PLUS:
+ state->level -= 1;
+ if (state->level == 0) {
+ state->handler = declClose;
+ state->role_none = XML_ROLE_ELEMENT_NONE;
+ }
+ return XML_ROLE_GROUP_CLOSE_PLUS;
+ case XML_TOK_COMMA:
+ state->handler = element6;
+ return XML_ROLE_GROUP_SEQUENCE;
+ case XML_TOK_OR:
+ state->handler = element6;
+ return XML_ROLE_GROUP_CHOICE;
+ }
+ return common(state, tok);
+}
+
+#ifdef XML_DTD
+
+static int PTRCALL
+condSect0(PROLOG_STATE *state,
+ int tok,
+ const char *ptr,
+ const char *end,
+ const ENCODING *enc)
+{
+ switch (tok) {
+ case XML_TOK_PROLOG_S:
+ return XML_ROLE_NONE;
+ case XML_TOK_NAME:
+ if (XmlNameMatchesAscii(enc, ptr, end, KW_INCLUDE)) {
+ state->handler = condSect1;
+ return XML_ROLE_NONE;
+ }
+ if (XmlNameMatchesAscii(enc, ptr, end, KW_IGNORE)) {
+ state->handler = condSect2;
+ return XML_ROLE_NONE;
+ }
+ break;
+ }
+ return common(state, tok);
+}
+
+static int PTRCALL
+condSect1(PROLOG_STATE *state,
+ int tok,
+ const char *ptr,
+ const char *end,
+ const ENCODING *enc)
+{
+ switch (tok) {
+ case XML_TOK_PROLOG_S:
+ return XML_ROLE_NONE;
+ case XML_TOK_OPEN_BRACKET:
+ state->handler = externalSubset1;
+ state->includeLevel += 1;
+ return XML_ROLE_NONE;
+ }
+ return common(state, tok);
+}
+
+static int PTRCALL
+condSect2(PROLOG_STATE *state,
+ int tok,
+ const char *ptr,
+ const char *end,
+ const ENCODING *enc)
+{
+ switch (tok) {
+ case XML_TOK_PROLOG_S:
+ return XML_ROLE_NONE;
+ case XML_TOK_OPEN_BRACKET:
+ state->handler = externalSubset1;
+ return XML_ROLE_IGNORE_SECT;
+ }
+ return common(state, tok);
+}
+
+#endif /* XML_DTD */
+
+static int PTRCALL
+declClose(PROLOG_STATE *state,
+ int tok,
+ const char *ptr,
+ const char *end,
+ const ENCODING *enc)
+{
+ switch (tok) {
+ case XML_TOK_PROLOG_S:
+ return state->role_none;
+ case XML_TOK_DECL_CLOSE:
+ setTopLevel(state);
+ return state->role_none;
+ }
+ return common(state, tok);
+}
+
+static int PTRCALL
+error(PROLOG_STATE *state,
+ int tok,
+ const char *ptr,
+ const char *end,
+ const ENCODING *enc)
+{
+ return XML_ROLE_NONE;
+}
+
+static int FASTCALL
+common(PROLOG_STATE *state, int tok)
+{
+#ifdef XML_DTD
+ if (!state->documentEntity && tok == XML_TOK_PARAM_ENTITY_REF)
+ return XML_ROLE_INNER_PARAM_ENTITY_REF;
+#endif
+ state->handler = error;
+ return XML_ROLE_ERROR;
+}
+
+void
+XmlPrologStateInit(PROLOG_STATE *state)
+{
+ state->handler = prolog0;
+#ifdef XML_DTD
+ state->documentEntity = 1;
+ state->includeLevel = 0;
+ state->inEntityValue = 0;
+#endif /* XML_DTD */
+}
+
+#ifdef XML_DTD
+
+void
+XmlPrologStateInitExternalEntity(PROLOG_STATE *state)
+{
+ state->handler = externalSubset0;
+ state->documentEntity = 0;
+ state->includeLevel = 0;
+}
+
+#endif /* XML_DTD */
+
+#ifdef __cplusplus
+}
+#endif

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/xmlrole.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/xmlrole.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,2 @@
+#include "xmlrole.c"
+

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/xmlrole.h
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/xmlrole.h 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,114 @@
+/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
+ See the file COPYING for copying permission.
+*/
+
+#ifndef XmlRole_INCLUDED
+#define XmlRole_INCLUDED 1
+
+#ifdef __VMS
+/* 0 1 2 3 0 1 2 3
+ 1234567890123456789012345678901 1234567890123456789012345678901 */
+#define XmlPrologStateInitExternalEntity XmlPrologStateInitExternalEnt
+#endif
+
+#include "xmltok.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+enum {
+ XML_ROLE_ERROR = -1,
+ XML_ROLE_NONE = 0,
+ XML_ROLE_XML_DECL,
+ XML_ROLE_INSTANCE_START,
+ XML_ROLE_DOCTYPE_NONE,
+ XML_ROLE_DOCTYPE_NAME,
+ XML_ROLE_DOCTYPE_SYSTEM_ID,
+ XML_ROLE_DOCTYPE_PUBLIC_ID,
+ XML_ROLE_DOCTYPE_INTERNAL_SUBSET,
+ XML_ROLE_DOCTYPE_CLOSE,
+ XML_ROLE_GENERAL_ENTITY_NAME,
+ XML_ROLE_PARAM_ENTITY_NAME,
+ XML_ROLE_ENTITY_NONE,
+ XML_ROLE_ENTITY_VALUE,
+ XML_ROLE_ENTITY_SYSTEM_ID,
+ XML_ROLE_ENTITY_PUBLIC_ID,
+ XML_ROLE_ENTITY_COMPLETE,
+ XML_ROLE_ENTITY_NOTATION_NAME,
+ XML_ROLE_NOTATION_NONE,
+ XML_ROLE_NOTATION_NAME,
+ XML_ROLE_NOTATION_SYSTEM_ID,
+ XML_ROLE_NOTATION_NO_SYSTEM_ID,
+ XML_ROLE_NOTATION_PUBLIC_ID,
+ XML_ROLE_ATTRIBUTE_NAME,
+ XML_ROLE_ATTRIBUTE_TYPE_CDATA,
+ XML_ROLE_ATTRIBUTE_TYPE_ID,
+ XML_ROLE_ATTRIBUTE_TYPE_IDREF,
+ XML_ROLE_ATTRIBUTE_TYPE_IDREFS,
+ XML_ROLE_ATTRIBUTE_TYPE_ENTITY,
+ XML_ROLE_ATTRIBUTE_TYPE_ENTITIES,
+ XML_ROLE_ATTRIBUTE_TYPE_NMTOKEN,
+ XML_ROLE_ATTRIBUTE_TYPE_NMTOKENS,
+ XML_ROLE_ATTRIBUTE_ENUM_VALUE,
+ XML_ROLE_ATTRIBUTE_NOTATION_VALUE,
+ XML_ROLE_ATTLIST_NONE,
+ XML_ROLE_ATTLIST_ELEMENT_NAME,
+ XML_ROLE_IMPLIED_ATTRIBUTE_VALUE,
+ XML_ROLE_REQUIRED_ATTRIBUTE_VALUE,
+ XML_ROLE_DEFAULT_ATTRIBUTE_VALUE,
+ XML_ROLE_FIXED_ATTRIBUTE_VALUE,
+ XML_ROLE_ELEMENT_NONE,
+ XML_ROLE_ELEMENT_NAME,
+ XML_ROLE_CONTENT_ANY,
+ XML_ROLE_CONTENT_EMPTY,
+ XML_ROLE_CONTENT_PCDATA,
+ XML_ROLE_GROUP_OPEN,
+ XML_ROLE_GROUP_CLOSE,
+ XML_ROLE_GROUP_CLOSE_REP,
+ XML_ROLE_GROUP_CLOSE_OPT,
+ XML_ROLE_GROUP_CLOSE_PLUS,
+ XML_ROLE_GROUP_CHOICE,
+ XML_ROLE_GROUP_SEQUENCE,
+ XML_ROLE_CONTENT_ELEMENT,
+ XML_ROLE_CONTENT_ELEMENT_REP,
+ XML_ROLE_CONTENT_ELEMENT_OPT,
+ XML_ROLE_CONTENT_ELEMENT_PLUS,
+ XML_ROLE_PI,
+ XML_ROLE_COMMENT,
+#ifdef XML_DTD
+ XML_ROLE_TEXT_DECL,
+ XML_ROLE_IGNORE_SECT,
+ XML_ROLE_INNER_PARAM_ENTITY_REF,
+#endif /* XML_DTD */
+ XML_ROLE_PARAM_ENTITY_REF
+};
+
+typedef struct prolog_state {
+ int (PTRCALL *handler) (struct prolog_state *state,
+ int tok,
+ const char *ptr,
+ const char *end,
+ const ENCODING *enc);
+ unsigned level;
+ int role_none;
+#ifdef XML_DTD
+ unsigned includeLevel;
+ int documentEntity;
+ int inEntityValue;
+#endif /* XML_DTD */
+} PROLOG_STATE;
+
+void XmlPrologStateInit(PROLOG_STATE *);
+#ifdef XML_DTD
+void XmlPrologStateInitExternalEntity(PROLOG_STATE *);
+#endif /* XML_DTD */
+
+#define XmlTokenRole(state, tok, ptr, end, enc) \
+ (((state)->handler)(state, tok, ptr, end, enc))
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* not XmlRole_INCLUDED */

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/xmltok.c
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/xmltok.c 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,1647 @@
+/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
+ See the file COPYING for copying permission.
+*/
+
+#include <stddef.h>
+
+#ifdef COMPILED_FROM_DSP
+#include "winconfig.h"
+#elif defined(MACOS_CLASSIC)
+#include "macconfig.h"
+#elif defined(__amigaos4__)
+#include "amigaconfig.h"
+#else
+#ifdef HAVE_EXPAT_CONFIG_H
+#include <expat_config.h>
+#endif
+#endif /* ndef COMPILED_FROM_DSP */
+
+#include "expat_external.h"
+#include "internal.h"
+#include "xmltok.h"
+#include "nametab.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef XML_DTD
+#define IGNORE_SECTION_TOK_VTABLE , PREFIX(ignoreSectionTok)
+#else
+#define IGNORE_SECTION_TOK_VTABLE /* as nothing */
+#endif
+
+#define VTABLE1 \
+ { PREFIX(prologTok), PREFIX(contentTok), \
+ PREFIX(cdataSectionTok) IGNORE_SECTION_TOK_VTABLE }, \
+ { PREFIX(attributeValueTok), PREFIX(entityValueTok) }, \
+ PREFIX(sameName), \
+ PREFIX(nameMatchesAscii), \
+ PREFIX(nameLength), \
+ PREFIX(skipS), \
+ PREFIX(getAtts), \
+ PREFIX(charRefNumber), \
+ PREFIX(predefinedEntityName), \
+ PREFIX(updatePosition), \
+ PREFIX(isPublicId)
+
+#define VTABLE VTABLE1, PREFIX(toUtf8), PREFIX(toUtf16)
+
+#define UCS2_GET_NAMING(pages, hi, lo) \
+ (namingBitmap[(pages[hi] << 3) + ((lo) >> 5)] & (1 << ((lo) & 0x1F)))
+
+/* A 2 byte UTF-8 representation splits the characters 11 bits between
+ the bottom 5 and 6 bits of the bytes. We need 8 bits to index into
+ pages, 3 bits to add to that index and 5 bits to generate the mask.
+*/
+#define UTF8_GET_NAMING2(pages, byte) \
+ (namingBitmap[((pages)[(((byte)[0]) >> 2) & 7] << 3) \
+ + ((((byte)[0]) & 3) << 1) \
+ + ((((byte)[1]) >> 5) & 1)] \
+ & (1 << (((byte)[1]) & 0x1F)))
+
+/* A 3 byte UTF-8 representation splits the characters 16 bits between
+ the bottom 4, 6 and 6 bits of the bytes. We need 8 bits to index
+ into pages, 3 bits to add to that index and 5 bits to generate the
+ mask.
+*/
+#define UTF8_GET_NAMING3(pages, byte) \
+ (namingBitmap[((pages)[((((byte)[0]) & 0xF) << 4) \
+ + ((((byte)[1]) >> 2) & 0xF)] \
+ << 3) \
+ + ((((byte)[1]) & 3) << 1) \
+ + ((((byte)[2]) >> 5) & 1)] \
+ & (1 << (((byte)[2]) & 0x1F)))
+
+#define UTF8_GET_NAMING(pages, p, n) \
+ ((n) == 2 \
+ ? UTF8_GET_NAMING2(pages, (const unsigned char *)(p)) \
+ : ((n) == 3 \
+ ? UTF8_GET_NAMING3(pages, (const unsigned char *)(p)) \
+ : 0))
+
+/* Detection of invalid UTF-8 sequences is based on Table 3.1B
+ of Unicode 3.2: http://www.unicode.org/unicode/reports/tr28/
+ with the additional restriction of not allowing the Unicode
+ code points 0xFFFF and 0xFFFE (sequences EF,BF,BF and EF,BF,BE).
+ Implementation details:
+ (A & 0x80) == 0 means A < 0x80
+ and
+ (A & 0xC0) == 0xC0 means A > 0xBF
+*/
+
+#define UTF8_INVALID2(p) \
+ ((*p) < 0xC2 || ((p)[1] & 0x80) == 0 || ((p)[1] & 0xC0) == 0xC0)
+
+#define UTF8_INVALID3(p) \
+ (((p)[2] & 0x80) == 0 \
+ || \
+ ((*p) == 0xEF && (p)[1] == 0xBF \
+ ? \
+ (p)[2] > 0xBD \
+ : \
+ ((p)[2] & 0xC0) == 0xC0) \
+ || \
+ ((*p) == 0xE0 \
+ ? \
+ (p)[1] < 0xA0 || ((p)[1] & 0xC0) == 0xC0 \
+ : \
+ ((p)[1] & 0x80) == 0 \
+ || \
+ ((*p) == 0xED ? (p)[1] > 0x9F : ((p)[1] & 0xC0) == 0xC0)))
+
+#define UTF8_INVALID4(p) \
+ (((p)[3] & 0x80) == 0 || ((p)[3] & 0xC0) == 0xC0 \
+ || \
+ ((p)[2] & 0x80) == 0 || ((p)[2] & 0xC0) == 0xC0 \
+ || \
+ ((*p) == 0xF0 \
+ ? \
+ (p)[1] < 0x90 || ((p)[1] & 0xC0) == 0xC0 \
+ : \
+ ((p)[1] & 0x80) == 0 \
+ || \
+ ((*p) == 0xF4 ? (p)[1] > 0x8F : ((p)[1] & 0xC0) == 0xC0)))
+
+static int PTRFASTCALL
+isNever(const ENCODING *enc, const char *p)
+{
+ return 0;
+}
+
+static int PTRFASTCALL
+utf8_isName2(const ENCODING *enc, const char *p)
+{
+ return UTF8_GET_NAMING2(namePages, (const unsigned char *)p);
+}
+
+static int PTRFASTCALL
+utf8_isName3(const ENCODING *enc, const char *p)
+{
+ return UTF8_GET_NAMING3(namePages, (const unsigned char *)p);
+}
+
+#define utf8_isName4 isNever
+
+static int PTRFASTCALL
+utf8_isNmstrt2(const ENCODING *enc, const char *p)
+{
+ return UTF8_GET_NAMING2(nmstrtPages, (const unsigned char *)p);
+}
+
+static int PTRFASTCALL
+utf8_isNmstrt3(const ENCODING *enc, const char *p)
+{
+ return UTF8_GET_NAMING3(nmstrtPages, (const unsigned char *)p);
+}
+
+#define utf8_isNmstrt4 isNever
+
+static int PTRFASTCALL
+utf8_isInvalid2(const ENCODING *enc, const char *p)
+{
+ return UTF8_INVALID2((const unsigned char *)p);
+}
+
+static int PTRFASTCALL
+utf8_isInvalid3(const ENCODING *enc, const char *p)
+{
+ return UTF8_INVALID3((const unsigned char *)p);
+}
+
+static int PTRFASTCALL
+utf8_isInvalid4(const ENCODING *enc, const char *p)
+{
+ return UTF8_INVALID4((const unsigned char *)p);
+}
+
+struct normal_encoding {
+ ENCODING enc;
+ unsigned char type[256];
+#ifdef XML_MIN_SIZE
+ int (PTRFASTCALL *byteType)(const ENCODING *, const char *);
+ int (PTRFASTCALL *isNameMin)(const ENCODING *, const char *);
+ int (PTRFASTCALL *isNmstrtMin)(const ENCODING *, const char *);
+ int (PTRFASTCALL *byteToAscii)(const ENCODING *, const char *);
+ int (PTRCALL *charMatches)(const ENCODING *, const char *, int);
+#endif /* XML_MIN_SIZE */
+ int (PTRFASTCALL *isName2)(const ENCODING *, const char *);
+ int (PTRFASTCALL *isName3)(const ENCODING *, const char *);
+ int (PTRFASTCALL *isName4)(const ENCODING *, const char *);
+ int (PTRFASTCALL *isNmstrt2)(const ENCODING *, const char *);
+ int (PTRFASTCALL *isNmstrt3)(const ENCODING *, const char *);
+ int (PTRFASTCALL *isNmstrt4)(const ENCODING *, const char *);
+ int (PTRFASTCALL *isInvalid2)(const ENCODING *, const char *);
+ int (PTRFASTCALL *isInvalid3)(const ENCODING *, const char *);
+ int (PTRFASTCALL *isInvalid4)(const ENCODING *, const char *);
+};
+
+#define AS_NORMAL_ENCODING(enc) ((const struct normal_encoding *) (enc))
+
+#ifdef XML_MIN_SIZE
+
+#define STANDARD_VTABLE(E) \
+ E ## byteType, \
+ E ## isNameMin, \
+ E ## isNmstrtMin, \
+ E ## byteToAscii, \
+ E ## charMatches,
+
+#else
+
+#define STANDARD_VTABLE(E) /* as nothing */
+
+#endif
+
+#define NORMAL_VTABLE(E) \
+ E ## isName2, \
+ E ## isName3, \
+ E ## isName4, \
+ E ## isNmstrt2, \
+ E ## isNmstrt3, \
+ E ## isNmstrt4, \
+ E ## isInvalid2, \
+ E ## isInvalid3, \
+ E ## isInvalid4
+
+static int FASTCALL checkCharRefNumber(int);
+
+#include "xmltok_impl.h"
+#include "ascii.h"
+
+#ifdef XML_MIN_SIZE
+#define sb_isNameMin isNever
+#define sb_isNmstrtMin isNever
+#endif
+
+#ifdef XML_MIN_SIZE
+#define MINBPC(enc) ((enc)->minBytesPerChar)
+#else
+/* minimum bytes per character */
+#define MINBPC(enc) 1
+#endif
+
+#define SB_BYTE_TYPE(enc, p) \
+ (((struct normal_encoding *)(enc))->type[(unsigned char)*(p)])
+
+#ifdef XML_MIN_SIZE
+static int PTRFASTCALL
+sb_byteType(const ENCODING *enc, const char *p)
+{
+ return SB_BYTE_TYPE(enc, p);
+}
+#define BYTE_TYPE(enc, p) \
+ (AS_NORMAL_ENCODING(enc)->byteType(enc, p))
+#else
+#define BYTE_TYPE(enc, p) SB_BYTE_TYPE(enc, p)
+#endif
+
+#ifdef XML_MIN_SIZE
+#define BYTE_TO_ASCII(enc, p) \
+ (AS_NORMAL_ENCODING(enc)->byteToAscii(enc, p))
+static int PTRFASTCALL
+sb_byteToAscii(const ENCODING *enc, const char *p)
+{
+ return *p;
+}
+#else
+#define BYTE_TO_ASCII(enc, p) (*(p))
+#endif
+
+#define IS_NAME_CHAR(enc, p, n) \
+ (AS_NORMAL_ENCODING(enc)->isName ## n(enc, p))
+#define IS_NMSTRT_CHAR(enc, p, n) \
+ (AS_NORMAL_ENCODING(enc)->isNmstrt ## n(enc, p))
+#define IS_INVALID_CHAR(enc, p, n) \
+ (AS_NORMAL_ENCODING(enc)->isInvalid ## n(enc, p))
+
+#ifdef XML_MIN_SIZE
+#define IS_NAME_CHAR_MINBPC(enc, p) \
+ (AS_NORMAL_ENCODING(enc)->isNameMin(enc, p))
+#define IS_NMSTRT_CHAR_MINBPC(enc, p) \
+ (AS_NORMAL_ENCODING(enc)->isNmstrtMin(enc, p))
+#else
+#define IS_NAME_CHAR_MINBPC(enc, p) (0)
+#define IS_NMSTRT_CHAR_MINBPC(enc, p) (0)
+#endif
+
+#ifdef XML_MIN_SIZE
+#define CHAR_MATCHES(enc, p, c) \
+ (AS_NORMAL_ENCODING(enc)->charMatches(enc, p, c))
+static int PTRCALL
+sb_charMatches(const ENCODING *enc, const char *p, int c)
+{
+ return *p == c;
+}
+#else
+/* c is an ASCII character */
+#define CHAR_MATCHES(enc, p, c) (*(p) == c)
+#endif
+
+#define PREFIX(ident) normal_ ## ident
+#include "xmltok_impl.c"
+
+#undef MINBPC
+#undef BYTE_TYPE
+#undef BYTE_TO_ASCII
+#undef CHAR_MATCHES
+#undef IS_NAME_CHAR
+#undef IS_NAME_CHAR_MINBPC
+#undef IS_NMSTRT_CHAR
+#undef IS_NMSTRT_CHAR_MINBPC
+#undef IS_INVALID_CHAR
+
+enum { /* UTF8_cvalN is value of masked first byte of N byte sequence */
+ UTF8_cval1 = 0x00,
+ UTF8_cval2 = 0xc0,
+ UTF8_cval3 = 0xe0,
+ UTF8_cval4 = 0xf0
+};
+
+static void PTRCALL
+utf8_toUtf8(const ENCODING *enc,
+ const char **fromP, const char *fromLim,
+ char **toP, const char *toLim)
+{
+ char *to;
+ const char *from;
+ if (fromLim - *fromP > toLim - *toP) {
+ /* Avoid copying partial characters. */
+ for (fromLim = *fromP + (toLim - *toP); fromLim > *fromP; fromLim--)
+ if (((unsigned char)fromLim[-1] & 0xc0) != 0x80)
+ break;
+ }
+ for (to = *toP, from = *fromP; from != fromLim; from++, to++)
+ *to = *from;
+ *fromP = from;
+ *toP = to;
+}
+
+static void PTRCALL
+utf8_toUtf16(const ENCODING *enc,
+ const char **fromP, const char *fromLim,
+ unsigned short **toP, const unsigned short *toLim)
+{
+ unsigned short *to = *toP;
+ const char *from = *fromP;
+ while (from != fromLim && to != toLim) {
+ switch (((struct normal_encoding *)enc)->type[(unsigned char)*from]) {
+ case BT_LEAD2:
+ *to++ = (unsigned short)(((from[0] & 0x1f) << 6) | (from[1] & 0x3f));
+ from += 2;
+ break;
+ case BT_LEAD3:
+ *to++ = (unsigned short)(((from[0] & 0xf) << 12)
+ | ((from[1] & 0x3f) << 6) | (from[2] & 0x3f));
+ from += 3;
+ break;
+ case BT_LEAD4:
+ {
+ unsigned long n;
+ if (to + 1 == toLim)
+ goto after;
+ n = ((from[0] & 0x7) << 18) | ((from[1] & 0x3f) << 12)
+ | ((from[2] & 0x3f) << 6) | (from[3] & 0x3f);
+ n -= 0x10000;
+ to[0] = (unsigned short)((n >> 10) | 0xD800);
+ to[1] = (unsigned short)((n & 0x3FF) | 0xDC00);
+ to += 2;
+ from += 4;
+ }
+ break;
+ default:
+ *to++ = *from++;
+ break;
+ }
+ }
+after:
+ *fromP = from;
+ *toP = to;
+}
+
+#ifdef XML_NS
+static const struct normal_encoding utf8_encoding_ns = {
+ { VTABLE1, utf8_toUtf8, utf8_toUtf16, 1, 1, 0 },
+ {
+#include "asciitab.h"
+#include "utf8tab.h"
+ },
+ STANDARD_VTABLE(sb_) NORMAL_VTABLE(utf8_)
+};
+#endif
+
+static const struct normal_encoding utf8_encoding = {
+ { VTABLE1, utf8_toUtf8, utf8_toUtf16, 1, 1, 0 },
+ {
+#define BT_COLON BT_NMSTRT
+#include "asciitab.h"
+#undef BT_COLON
+#include "utf8tab.h"
+ },
+ STANDARD_VTABLE(sb_) NORMAL_VTABLE(utf8_)
+};
+
+#ifdef XML_NS
+
+static const struct normal_encoding internal_utf8_encoding_ns = {
+ { VTABLE1, utf8_toUtf8, utf8_toUtf16, 1, 1, 0 },
+ {
+#include "iasciitab.h"
+#include "utf8tab.h"
+ },
+ STANDARD_VTABLE(sb_) NORMAL_VTABLE(utf8_)
+};
+
+#endif
+
+static const struct normal_encoding internal_utf8_encoding = {
+ { VTABLE1, utf8_toUtf8, utf8_toUtf16, 1, 1, 0 },
+ {
+#define BT_COLON BT_NMSTRT
+#include "iasciitab.h"
+#undef BT_COLON
+#include "utf8tab.h"
+ },
+ STANDARD_VTABLE(sb_) NORMAL_VTABLE(utf8_)
+};
+
+static void PTRCALL
+latin1_toUtf8(const ENCODING *enc,
+ const char **fromP, const char *fromLim,
+ char **toP, const char *toLim)
+{
+ for (;;) {
+ unsigned char c;
+ if (*fromP == fromLim)
+ break;
+ c = (unsigned char)**fromP;
+ if (c & 0x80) {
+ if (toLim - *toP < 2)
+ break;
+ *(*toP)++ = (char)((c >> 6) | UTF8_cval2);
+ *(*toP)++ = (char)((c & 0x3f) | 0x80);
+ (*fromP)++;
+ }
+ else {
+ if (*toP == toLim)
+ break;
+ *(*toP)++ = *(*fromP)++;
+ }
+ }
+}
+
+static void PTRCALL
+latin1_toUtf16(const ENCODING *enc,
+ const char **fromP, const char *fromLim,
+ unsigned short **toP, const unsigned short *toLim)
+{
+ while (*fromP != fromLim && *toP != toLim)
+ *(*toP)++ = (unsigned char)*(*fromP)++;
+}
+
+#ifdef XML_NS
+
+static const struct normal_encoding latin1_encoding_ns = {
+ { VTABLE1, latin1_toUtf8, latin1_toUtf16, 1, 0, 0 },
+ {
+#include "asciitab.h"
+#include "latin1tab.h"
+ },
+ STANDARD_VTABLE(sb_)
+};
+
+#endif
+
+static const struct normal_encoding latin1_encoding = {
+ { VTABLE1, latin1_toUtf8, latin1_toUtf16, 1, 0, 0 },
+ {
+#define BT_COLON BT_NMSTRT
+#include "asciitab.h"
+#undef BT_COLON
+#include "latin1tab.h"
+ },
+ STANDARD_VTABLE(sb_)
+};
+
+static void PTRCALL
+ascii_toUtf8(const ENCODING *enc,
+ const char **fromP, const char *fromLim,
+ char **toP, const char *toLim)
+{
+ while (*fromP != fromLim && *toP != toLim)
+ *(*toP)++ = *(*fromP)++;
+}
+
+#ifdef XML_NS
+
+static const struct normal_encoding ascii_encoding_ns = {
+ { VTABLE1, ascii_toUtf8, latin1_toUtf16, 1, 1, 0 },
+ {
+#include "asciitab.h"
+/* BT_NONXML == 0 */
+ },
+ STANDARD_VTABLE(sb_)
+};
+
+#endif
+
+static const struct normal_encoding ascii_encoding = {
+ { VTABLE1, ascii_toUtf8, latin1_toUtf16, 1, 1, 0 },
+ {
+#define BT_COLON BT_NMSTRT
+#include "asciitab.h"
+#undef BT_COLON
+/* BT_NONXML == 0 */
+ },
+ STANDARD_VTABLE(sb_)
+};
+
+static int PTRFASTCALL
+unicode_byte_type(char hi, char lo)
+{
+ switch ((unsigned char)hi) {
+ case 0xD8: case 0xD9: case 0xDA: case 0xDB:
+ return BT_LEAD4;
+ case 0xDC: case 0xDD: case 0xDE: case 0xDF:
+ return BT_TRAIL;
+ case 0xFF:
+ switch ((unsigned char)lo) {
+ case 0xFF:
+ case 0xFE:
+ return BT_NONXML;
+ }
+ break;
+ }
+ return BT_NONASCII;
+}
+
+#define DEFINE_UTF16_TO_UTF8(E) \
+static void PTRCALL \
+E ## toUtf8(const ENCODING *enc, \
+ const char **fromP, const char *fromLim, \
+ char **toP, const char *toLim) \
+{ \
+ const char *from; \
+ for (from = *fromP; from != fromLim; from += 2) { \
+ int plane; \
+ unsigned char lo2; \
+ unsigned char lo = GET_LO(from); \
+ unsigned char hi = GET_HI(from); \
+ switch (hi) { \
+ case 0: \
+ if (lo < 0x80) { \
+ if (*toP == toLim) { \
+ *fromP = from; \
+ return; \
+ } \
+ *(*toP)++ = lo; \
+ break; \
+ } \
+ /* fall through */ \
+ case 0x1: case 0x2: case 0x3: \
+ case 0x4: case 0x5: case 0x6: case 0x7: \
+ if (toLim - *toP < 2) { \
+ *fromP = from; \
+ return; \
+ } \
+ *(*toP)++ = ((lo >> 6) | (hi << 2) | UTF8_cval2); \
+ *(*toP)++ = ((lo & 0x3f) | 0x80); \
+ break; \
+ default: \
+ if (toLim - *toP < 3) { \
+ *fromP = from; \
+ return; \
+ } \
+ /* 16 bits divided 4, 6, 6 amongst 3 bytes */ \
+ *(*toP)++ = ((hi >> 4) | UTF8_cval3); \
+ *(*toP)++ = (((hi & 0xf) << 2) | (lo >> 6) | 0x80); \
+ *(*toP)++ = ((lo & 0x3f) | 0x80); \
+ break; \
+ case 0xD8: case 0xD9: case 0xDA: case 0xDB: \
+ if (toLim - *toP < 4) { \
+ *fromP = from; \
+ return; \
+ } \
+ plane = (((hi & 0x3) << 2) | ((lo >> 6) & 0x3)) + 1; \
+ *(*toP)++ = ((plane >> 2) | UTF8_cval4); \
+ *(*toP)++ = (((lo >> 2) & 0xF) | ((plane & 0x3) << 4) | 0x80); \
+ from += 2; \
+ lo2 = GET_LO(from); \
+ *(*toP)++ = (((lo & 0x3) << 4) \
+ | ((GET_HI(from) & 0x3) << 2) \
+ | (lo2 >> 6) \
+ | 0x80); \
+ *(*toP)++ = ((lo2 & 0x3f) | 0x80); \
+ break; \
+ } \
+ } \
+ *fromP = from; \
+}
+
+#define DEFINE_UTF16_TO_UTF16(E) \
+static void PTRCALL \
+E ## toUtf16(const ENCODING *enc, \
+ const char **fromP, const char *fromLim, \
+ unsigned short **toP, const unsigned short *toLim) \
+{ \
+ /* Avoid copying first half only of surrogate */ \
+ if (fromLim - *fromP > ((toLim - *toP) << 1) \
+ && (GET_HI(fromLim - 2) & 0xF8) == 0xD8) \
+ fromLim -= 2; \
+ for (; *fromP != fromLim && *toP != toLim; *fromP += 2) \
+ *(*toP)++ = (GET_HI(*fromP) << 8) | GET_LO(*fromP); \
+}
+
+#define SET2(ptr, ch) \
+ (((ptr)[0] = ((ch) & 0xff)), ((ptr)[1] = ((ch) >> 8)))
+#define GET_LO(ptr) ((unsigned char)(ptr)[0])
+#define GET_HI(ptr) ((unsigned char)(ptr)[1])
+
+DEFINE_UTF16_TO_UTF8(little2_)
+DEFINE_UTF16_TO_UTF16(little2_)
+
+#undef SET2
+#undef GET_LO
+#undef GET_HI
+
+#define SET2(ptr, ch) \
+ (((ptr)[0] = ((ch) >> 8)), ((ptr)[1] = ((ch) & 0xFF)))
+#define GET_LO(ptr) ((unsigned char)(ptr)[1])
+#define GET_HI(ptr) ((unsigned char)(ptr)[0])
+
+DEFINE_UTF16_TO_UTF8(big2_)
+DEFINE_UTF16_TO_UTF16(big2_)
+
+#undef SET2
+#undef GET_LO
+#undef GET_HI
+
+#define LITTLE2_BYTE_TYPE(enc, p) \
+ ((p)[1] == 0 \
+ ? ((struct normal_encoding *)(enc))->type[(unsigned char)*(p)] \
+ : unicode_byte_type((p)[1], (p)[0]))
+#define LITTLE2_BYTE_TO_ASCII(enc, p) ((p)[1] == 0 ? (p)[0] : -1)
+#define LITTLE2_CHAR_MATCHES(enc, p, c) ((p)[1] == 0 && (p)[0] == c)
+#define LITTLE2_IS_NAME_CHAR_MINBPC(enc, p) \
+ UCS2_GET_NAMING(namePages, (unsigned char)p[1], (unsigned char)p[0])
+#define LITTLE2_IS_NMSTRT_CHAR_MINBPC(enc, p) \
+ UCS2_GET_NAMING(nmstrtPages, (unsigned char)p[1], (unsigned char)p[0])
+
+#ifdef XML_MIN_SIZE
+
+static int PTRFASTCALL
+little2_byteType(const ENCODING *enc, const char *p)
+{
+ return LITTLE2_BYTE_TYPE(enc, p);
+}
+
+static int PTRFASTCALL
+little2_byteToAscii(const ENCODING *enc, const char *p)
+{
+ return LITTLE2_BYTE_TO_ASCII(enc, p);
+}
+
+static int PTRCALL
+little2_charMatches(const ENCODING *enc, const char *p, int c)
+{
+ return LITTLE2_CHAR_MATCHES(enc, p, c);
+}
+
+static int PTRFASTCALL
+little2_isNameMin(const ENCODING *enc, const char *p)
+{
+ return LITTLE2_IS_NAME_CHAR_MINBPC(enc, p);
+}
+
+static int PTRFASTCALL
+little2_isNmstrtMin(const ENCODING *enc, const char *p)
+{
+ return LITTLE2_IS_NMSTRT_CHAR_MINBPC(enc, p);
+}
+
+#undef VTABLE
+#define VTABLE VTABLE1, little2_toUtf8, little2_toUtf16
+
+#else /* not XML_MIN_SIZE */
+
+#undef PREFIX
+#define PREFIX(ident) little2_ ## ident
+#define MINBPC(enc) 2
+/* CHAR_MATCHES is guaranteed to have MINBPC bytes available. */
+#define BYTE_TYPE(enc, p) LITTLE2_BYTE_TYPE(enc, p)
+#define BYTE_TO_ASCII(enc, p) LITTLE2_BYTE_TO_ASCII(enc, p)
+#define CHAR_MATCHES(enc, p, c) LITTLE2_CHAR_MATCHES(enc, p, c)
+#define IS_NAME_CHAR(enc, p, n) 0
+#define IS_NAME_CHAR_MINBPC(enc, p) LITTLE2_IS_NAME_CHAR_MINBPC(enc, p)
+#define IS_NMSTRT_CHAR(enc, p, n) (0)
+#define IS_NMSTRT_CHAR_MINBPC(enc, p) LITTLE2_IS_NMSTRT_CHAR_MINBPC(enc, p)
+
+#include "xmltok_impl.c"
+
+#undef MINBPC
+#undef BYTE_TYPE
+#undef BYTE_TO_ASCII
+#undef CHAR_MATCHES
+#undef IS_NAME_CHAR
+#undef IS_NAME_CHAR_MINBPC
+#undef IS_NMSTRT_CHAR
+#undef IS_NMSTRT_CHAR_MINBPC
+#undef IS_INVALID_CHAR
+
+#endif /* not XML_MIN_SIZE */
+
+#ifdef XML_NS
+
+static const struct normal_encoding little2_encoding_ns = {
+ { VTABLE, 2, 0,
+#if BYTEORDER == 1234
+ 1
+#else
+ 0
+#endif
+ },
+ {
+#include "asciitab.h"
+#include "latin1tab.h"
+ },
+ STANDARD_VTABLE(little2_)
+};
+
+#endif
+
+static const struct normal_encoding little2_encoding = {
+ { VTABLE, 2, 0,
+#if BYTEORDER == 1234
+ 1
+#else
+ 0
+#endif
+ },
+ {
+#define BT_COLON BT_NMSTRT
+#include "asciitab.h"
+#undef BT_COLON
+#include "latin1tab.h"
+ },
+ STANDARD_VTABLE(little2_)
+};
+
+#if BYTEORDER != 4321
+
+#ifdef XML_NS
+
+static const struct normal_encoding internal_little2_encoding_ns = {
+ { VTABLE, 2, 0, 1 },
+ {
+#include "iasciitab.h"
+#include "latin1tab.h"
+ },
+ STANDARD_VTABLE(little2_)
+};
+
+#endif
+
+static const struct normal_encoding internal_little2_encoding = {
+ { VTABLE, 2, 0, 1 },
+ {
+#define BT_COLON BT_NMSTRT
+#include "iasciitab.h"
+#undef BT_COLON
+#include "latin1tab.h"
+ },
+ STANDARD_VTABLE(little2_)
+};
+
+#endif
+
+
+#define BIG2_BYTE_TYPE(enc, p) \
+ ((p)[0] == 0 \
+ ? ((struct normal_encoding *)(enc))->type[(unsigned char)(p)[1]] \
+ : unicode_byte_type((p)[0], (p)[1]))
+#define BIG2_BYTE_TO_ASCII(enc, p) ((p)[0] == 0 ? (p)[1] : -1)
+#define BIG2_CHAR_MATCHES(enc, p, c) ((p)[0] == 0 && (p)[1] == c)
+#define BIG2_IS_NAME_CHAR_MINBPC(enc, p) \
+ UCS2_GET_NAMING(namePages, (unsigned char)p[0], (unsigned char)p[1])
+#define BIG2_IS_NMSTRT_CHAR_MINBPC(enc, p) \
+ UCS2_GET_NAMING(nmstrtPages, (unsigned char)p[0], (unsigned char)p[1])
+
+#ifdef XML_MIN_SIZE
+
+static int PTRFASTCALL
+big2_byteType(const ENCODING *enc, const char *p)
+{
+ return BIG2_BYTE_TYPE(enc, p);
+}
+
+static int PTRFASTCALL
+big2_byteToAscii(const ENCODING *enc, const char *p)
+{
+ return BIG2_BYTE_TO_ASCII(enc, p);
+}
+
+static int PTRCALL
+big2_charMatches(const ENCODING *enc, const char *p, int c)
+{
+ return BIG2_CHAR_MATCHES(enc, p, c);
+}
+
+static int PTRFASTCALL
+big2_isNameMin(const ENCODING *enc, const char *p)
+{
+ return BIG2_IS_NAME_CHAR_MINBPC(enc, p);
+}
+
+static int PTRFASTCALL
+big2_isNmstrtMin(const ENCODING *enc, const char *p)
+{
+ return BIG2_IS_NMSTRT_CHAR_MINBPC(enc, p);
+}
+
+#undef VTABLE
+#define VTABLE VTABLE1, big2_toUtf8, big2_toUtf16
+
+#else /* not XML_MIN_SIZE */
+
+#undef PREFIX
+#define PREFIX(ident) big2_ ## ident
+#define MINBPC(enc) 2
+/* CHAR_MATCHES is guaranteed to have MINBPC bytes available. */
+#define BYTE_TYPE(enc, p) BIG2_BYTE_TYPE(enc, p)
+#define BYTE_TO_ASCII(enc, p) BIG2_BYTE_TO_ASCII(enc, p)
+#define CHAR_MATCHES(enc, p, c) BIG2_CHAR_MATCHES(enc, p, c)
+#define IS_NAME_CHAR(enc, p, n) 0
+#define IS_NAME_CHAR_MINBPC(enc, p) BIG2_IS_NAME_CHAR_MINBPC(enc, p)
+#define IS_NMSTRT_CHAR(enc, p, n) (0)
+#define IS_NMSTRT_CHAR_MINBPC(enc, p) BIG2_IS_NMSTRT_CHAR_MINBPC(enc, p)
+
+#include "xmltok_impl.c"
+
+#undef MINBPC
+#undef BYTE_TYPE
+#undef BYTE_TO_ASCII
+#undef CHAR_MATCHES
+#undef IS_NAME_CHAR
+#undef IS_NAME_CHAR_MINBPC
+#undef IS_NMSTRT_CHAR
+#undef IS_NMSTRT_CHAR_MINBPC
+#undef IS_INVALID_CHAR
+
+#endif /* not XML_MIN_SIZE */
+
+#ifdef XML_NS
+
+static const struct normal_encoding big2_encoding_ns = {
+ { VTABLE, 2, 0,
+#if BYTEORDER == 4321
+ 1
+#else
+ 0
+#endif
+ },
+ {
+#include "asciitab.h"
+#include "latin1tab.h"
+ },
+ STANDARD_VTABLE(big2_)
+};
+
+#endif
+
+static const struct normal_encoding big2_encoding = {
+ { VTABLE, 2, 0,
+#if BYTEORDER == 4321
+ 1
+#else
+ 0
+#endif
+ },
+ {
+#define BT_COLON BT_NMSTRT
+#include "asciitab.h"
+#undef BT_COLON
+#include "latin1tab.h"
+ },
+ STANDARD_VTABLE(big2_)
+};
+
+#if BYTEORDER != 1234
+
+#ifdef XML_NS
+
+static const struct normal_encoding internal_big2_encoding_ns = {
+ { VTABLE, 2, 0, 1 },
+ {
+#include "iasciitab.h"
+#include "latin1tab.h"
+ },
+ STANDARD_VTABLE(big2_)
+};
+
+#endif
+
+static const struct normal_encoding internal_big2_encoding = {
+ { VTABLE, 2, 0, 1 },
+ {
+#define BT_COLON BT_NMSTRT
+#include "iasciitab.h"
+#undef BT_COLON
+#include "latin1tab.h"
+ },
+ STANDARD_VTABLE(big2_)
+};
+
+#endif
+
+#undef PREFIX
+
+static int FASTCALL
+streqci(const char *s1, const char *s2)
+{
+ for (;;) {
+ char c1 = *s1++;
+ char c2 = *s2++;
+ if (ASCII_a <= c1 && c1 <= ASCII_z)
+ c1 += ASCII_A - ASCII_a;
+ if (ASCII_a <= c2 && c2 <= ASCII_z)
+ c2 += ASCII_A - ASCII_a;
+ if (c1 != c2)
+ return 0;
+ if (!c1)
+ break;
+ }
+ return 1;
+}
+
+static void PTRCALL
+initUpdatePosition(const ENCODING *enc, const char *ptr,
+ const char *end, POSITION *pos)
+{
+ normal_updatePosition(&utf8_encoding.enc, ptr, end, pos);
+}
+
+static int
+toAscii(const ENCODING *enc, const char *ptr, const char *end)
+{
+ char buf[1];
+ char *p = buf;
+ XmlUtf8Convert(enc, &ptr, end, &p, p + 1);
+ if (p == buf)
+ return -1;
+ else
+ return buf[0];
+}
+
+static int FASTCALL
+isSpace(int c)
+{
+ switch (c) {
+ case 0x20:
+ case 0xD:
+ case 0xA:
+ case 0x9:
+ return 1;
+ }
+ return 0;
+}
+
+/* Return 1 if there's just optional white space or there's an S
+ followed by name=val.
+*/
+static int
+parsePseudoAttribute(const ENCODING *enc,
+ const char *ptr,
+ const char *end,
+ const char **namePtr,
+ const char **nameEndPtr,
+ const char **valPtr,
+ const char **nextTokPtr)
+{
+ int c;
+ char open;
+ if (ptr == end) {
+ *namePtr = NULL;
+ return 1;
+ }
+ if (!isSpace(toAscii(enc, ptr, end))) {
+ *nextTokPtr = ptr;
+ return 0;
+ }
+ do {
+ ptr += enc->minBytesPerChar;
+ } while (isSpace(toAscii(enc, ptr, end)));
+ if (ptr == end) {
+ *namePtr = NULL;
+ return 1;
+ }
+ *namePtr = ptr;
+ for (;;) {
+ c = toAscii(enc, ptr, end);
+ if (c == -1) {
+ *nextTokPtr = ptr;
+ return 0;
+ }
+ if (c == ASCII_EQUALS) {
+ *nameEndPtr = ptr;
+ break;
+ }
+ if (isSpace(c)) {
+ *nameEndPtr = ptr;
+ do {
+ ptr += enc->minBytesPerChar;
+ } while (isSpace(c = toAscii(enc, ptr, end)));
+ if (c != ASCII_EQUALS) {
+ *nextTokPtr = ptr;
+ return 0;
+ }
+ break;
+ }
+ ptr += enc->minBytesPerChar;
+ }
+ if (ptr == *namePtr) {
+ *nextTokPtr = ptr;
+ return 0;
+ }
+ ptr += enc->minBytesPerChar;
+ c = toAscii(enc, ptr, end);
+ while (isSpace(c)) {
+ ptr += enc->minBytesPerChar;
+ c = toAscii(enc, ptr, end);
+ }
+ if (c != ASCII_QUOT && c != ASCII_APOS) {
+ *nextTokPtr = ptr;
+ return 0;
+ }
+ open = (char)c;
+ ptr += enc->minBytesPerChar;
+ *valPtr = ptr;
+ for (;; ptr += enc->minBytesPerChar) {
+ c = toAscii(enc, ptr, end);
+ if (c == open)
+ break;
+ if (!(ASCII_a <= c && c <= ASCII_z)
+ && !(ASCII_A <= c && c <= ASCII_Z)
+ && !(ASCII_0 <= c && c <= ASCII_9)
+ && c != ASCII_PERIOD
+ && c != ASCII_MINUS
+ && c != ASCII_UNDERSCORE) {
+ *nextTokPtr = ptr;
+ return 0;
+ }
+ }
+ *nextTokPtr = ptr + enc->minBytesPerChar;
+ return 1;
+}
+
+static const char KW_version[] = {
+ ASCII_v, ASCII_e, ASCII_r, ASCII_s, ASCII_i, ASCII_o, ASCII_n, '\0'
+};
+
+static const char KW_encoding[] = {
+ ASCII_e, ASCII_n, ASCII_c, ASCII_o, ASCII_d, ASCII_i, ASCII_n, ASCII_g, '\0'
+};
+
+static const char KW_standalone[] = {
+ ASCII_s, ASCII_t, ASCII_a, ASCII_n, ASCII_d, ASCII_a, ASCII_l, ASCII_o,
+ ASCII_n, ASCII_e, '\0'
+};
+
+static const char KW_yes[] = {
+ ASCII_y, ASCII_e, ASCII_s, '\0'
+};
+
+static const char KW_no[] = {
+ ASCII_n, ASCII_o, '\0'
+};
+
+static int
+doParseXmlDecl(const ENCODING *(*encodingFinder)(const ENCODING *,
+ const char *,
+ const char *),
+ int isGeneralTextEntity,
+ const ENCODING *enc,
+ const char *ptr,
+ const char *end,
+ const char **badPtr,
+ const char **versionPtr,
+ const char **versionEndPtr,
+ const char **encodingName,
+ const ENCODING **encoding,
+ int *standalone)
+{
+ const char *val = NULL;
+ const char *name = NULL;
+ const char *nameEnd = NULL;
+ ptr += 5 * enc->minBytesPerChar;
+ end -= 2 * enc->minBytesPerChar;
+ if (!parsePseudoAttribute(enc, ptr, end, &name, &nameEnd, &val, &ptr)
+ || !name) {
+ *badPtr = ptr;
+ return 0;
+ }
+ if (!XmlNameMatchesAscii(enc, name, nameEnd, KW_version)) {
+ if (!isGeneralTextEntity) {
+ *badPtr = name;
+ return 0;
+ }
+ }
+ else {
+ if (versionPtr)
+ *versionPtr = val;
+ if (versionEndPtr)
+ *versionEndPtr = ptr;
+ if (!parsePseudoAttribute(enc, ptr, end, &name, &nameEnd, &val, &ptr)) {
+ *badPtr = ptr;
+ return 0;
+ }
+ if (!name) {
+ if (isGeneralTextEntity) {
+ /* a TextDecl must have an EncodingDecl */
+ *badPtr = ptr;
+ return 0;
+ }
+ return 1;
+ }
+ }
+ if (XmlNameMatchesAscii(enc, name, nameEnd, KW_encoding)) {
+ int c = toAscii(enc, val, end);
+ if (!(ASCII_a <= c && c <= ASCII_z) && !(ASCII_A <= c && c <= ASCII_Z)) {
+ *badPtr = val;
+ return 0;
+ }
+ if (encodingName)
+ *encodingName = val;
+ if (encoding)
+ *encoding = encodingFinder(enc, val, ptr - enc->minBytesPerChar);
+ if (!parsePseudoAttribute(enc, ptr, end, &name, &nameEnd, &val, &ptr)) {
+ *badPtr = ptr;
+ return 0;
+ }
+ if (!name)
+ return 1;
+ }
+ if (!XmlNameMatchesAscii(enc, name, nameEnd, KW_standalone)
+ || isGeneralTextEntity) {
+ *badPtr = name;
+ return 0;
+ }
+ if (XmlNameMatchesAscii(enc, val, ptr - enc->minBytesPerChar, KW_yes)) {
+ if (standalone)
+ *standalone = 1;
+ }
+ else if (XmlNameMatchesAscii(enc, val, ptr - enc->minBytesPerChar, KW_no)) {
+ if (standalone)
+ *standalone = 0;
+ }
+ else {
+ *badPtr = val;
+ return 0;
+ }
+ while (isSpace(toAscii(enc, ptr, end)))
+ ptr += enc->minBytesPerChar;
+ if (ptr != end) {
+ *badPtr = ptr;
+ return 0;
+ }
+ return 1;
+}
+
+static int FASTCALL
+checkCharRefNumber(int result)
+{
+ switch (result >> 8) {
+ case 0xD8: case 0xD9: case 0xDA: case 0xDB:
+ case 0xDC: case 0xDD: case 0xDE: case 0xDF:
+ return -1;
+ case 0:
+ if (latin1_encoding.type[result] == BT_NONXML)
+ return -1;
+ break;
+ case 0xFF:
+ if (result == 0xFFFE || result == 0xFFFF)
+ return -1;
+ break;
+ }
+ return result;
+}
+
+int FASTCALL
+XmlUtf8Encode(int c, char *buf)
+{
+ enum {
+ /* minN is minimum legal resulting value for N byte sequence */
+ min2 = 0x80,
+ min3 = 0x800,
+ min4 = 0x10000
+ };
+
+ if (c < 0)
+ return 0;
+ if (c < min2) {
+ buf[0] = (char)(c | UTF8_cval1);
+ return 1;
+ }
+ if (c < min3) {
+ buf[0] = (char)((c >> 6) | UTF8_cval2);
+ buf[1] = (char)((c & 0x3f) | 0x80);
+ return 2;
+ }
+ if (c < min4) {
+ buf[0] = (char)((c >> 12) | UTF8_cval3);
+ buf[1] = (char)(((c >> 6) & 0x3f) | 0x80);
+ buf[2] = (char)((c & 0x3f) | 0x80);
+ return 3;
+ }
+ if (c < 0x110000) {
+ buf[0] = (char)((c >> 18) | UTF8_cval4);
+ buf[1] = (char)(((c >> 12) & 0x3f) | 0x80);
+ buf[2] = (char)(((c >> 6) & 0x3f) | 0x80);
+ buf[3] = (char)((c & 0x3f) | 0x80);
+ return 4;
+ }
+ return 0;
+}
+
+int FASTCALL
+XmlUtf16Encode(int charNum, unsigned short *buf)
+{
+ if (charNum < 0)
+ return 0;
+ if (charNum < 0x10000) {
+ buf[0] = (unsigned short)charNum;
+ return 1;
+ }
+ if (charNum < 0x110000) {
+ charNum -= 0x10000;
+ buf[0] = (unsigned short)((charNum >> 10) + 0xD800);
+ buf[1] = (unsigned short)((charNum & 0x3FF) + 0xDC00);
+ return 2;
+ }
+ return 0;
+}
+
+struct unknown_encoding {
+ struct normal_encoding normal;
+ CONVERTER convert;
+ void *userData;
+ unsigned short utf16[256];
+ char utf8[256][4];
+};
+
+#define AS_UNKNOWN_ENCODING(enc) ((const struct unknown_encoding *) (enc))
+
+int
+XmlSizeOfUnknownEncoding(void)
+{
+ return sizeof(struct unknown_encoding);
+}
+
+static int PTRFASTCALL
+unknown_isName(const ENCODING *enc, const char *p)
+{
+ const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc);
+ int c = uenc->convert(uenc->userData, p);
+ if (c & ~0xFFFF)
+ return 0;
+ return UCS2_GET_NAMING(namePages, c >> 8, c & 0xFF);
+}
+
+static int PTRFASTCALL
+unknown_isNmstrt(const ENCODING *enc, const char *p)
+{
+ const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc);
+ int c = uenc->convert(uenc->userData, p);
+ if (c & ~0xFFFF)
+ return 0;
+ return UCS2_GET_NAMING(nmstrtPages, c >> 8, c & 0xFF);
+}
+
+static int PTRFASTCALL
+unknown_isInvalid(const ENCODING *enc, const char *p)
+{
+ const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc);
+ int c = uenc->convert(uenc->userData, p);
+ return (c & ~0xFFFF) || checkCharRefNumber(c) < 0;
+}
+
+static void PTRCALL
+unknown_toUtf8(const ENCODING *enc,
+ const char **fromP, const char *fromLim,
+ char **toP, const char *toLim)
+{
+ const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc);
+ char buf[XML_UTF8_ENCODE_MAX];
+ for (;;) {
+ const char *utf8;
+ int n;
+ if (*fromP == fromLim)
+ break;
+ utf8 = uenc->utf8[(unsigned char)**fromP];
+ n = *utf8++;
+ if (n == 0) {
+ int c = uenc->convert(uenc->userData, *fromP);
+ n = XmlUtf8Encode(c, buf);
+ if (n > toLim - *toP)
+ break;
+ utf8 = buf;
+ *fromP += (AS_NORMAL_ENCODING(enc)->type[(unsigned char)**fromP]
+ - (BT_LEAD2 - 2));
+ }
+ else {
+ if (n > toLim - *toP)
+ break;
+ (*fromP)++;
+ }
+ do {
+ *(*toP)++ = *utf8++;
+ } while (--n != 0);
+ }
+}
+
+static void PTRCALL
+unknown_toUtf16(const ENCODING *enc,
+ const char **fromP, const char *fromLim,
+ unsigned short **toP, const unsigned short *toLim)
+{
+ const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc);
+ while (*fromP != fromLim && *toP != toLim) {
+ unsigned short c = uenc->utf16[(unsigned char)**fromP];
+ if (c == 0) {
+ c = (unsigned short)
+ uenc->convert(uenc->userData, *fromP);
+ *fromP += (AS_NORMAL_ENCODING(enc)->type[(unsigned char)**fromP]
+ - (BT_LEAD2 - 2));
+ }
+ else
+ (*fromP)++;
+ *(*toP)++ = c;
+ }
+}
+
+ENCODING *
+XmlInitUnknownEncoding(void *mem,
+ int *table,
+ CONVERTER convert,
+ void *userData)
+{
+ int i;
+ struct unknown_encoding *e = (struct unknown_encoding *)mem;
+ for (i = 0; i < (int)sizeof(struct normal_encoding); i++)
+ ((char *)mem)[i] = ((char *)&latin1_encoding)[i];
+ for (i = 0; i < 128; i++)
+ if (latin1_encoding.type[i] != BT_OTHER
+ && latin1_encoding.type[i] != BT_NONXML
+ && table[i] != i)
+ return 0;
+ for (i = 0; i < 256; i++) {
+ int c = table[i];
+ if (c == -1) {
+ e->normal.type[i] = BT_MALFORM;
+ /* This shouldn't really get used. */
+ e->utf16[i] = 0xFFFF;
+ e->utf8[i][0] = 1;
+ e->utf8[i][1] = 0;
+ }
+ else if (c < 0) {
+ if (c < -4)
+ return 0;
+ e->normal.type[i] = (unsigned char)(BT_LEAD2 - (c + 2));
+ e->utf8[i][0] = 0;
+ e->utf16[i] = 0;
+ }
+ else if (c < 0x80) {
+ if (latin1_encoding.type[c] != BT_OTHER
+ && latin1_encoding.type[c] != BT_NONXML
+ && c != i)
+ return 0;
+ e->normal.type[i] = latin1_encoding.type[c];
+ e->utf8[i][0] = 1;
+ e->utf8[i][1] = (char)c;
+ e->utf16[i] = (unsigned short)(c == 0 ? 0xFFFF : c);
+ }
+ else if (checkCharRefNumber(c) < 0) {
+ e->normal.type[i] = BT_NONXML;
+ /* This shouldn't really get used. */
+ e->utf16[i] = 0xFFFF;
+ e->utf8[i][0] = 1;
+ e->utf8[i][1] = 0;
+ }
+ else {
+ if (c > 0xFFFF)
+ return 0;
+ if (UCS2_GET_NAMING(nmstrtPages, c >> 8, c & 0xff))
+ e->normal.type[i] = BT_NMSTRT;
+ else if (UCS2_GET_NAMING(namePages, c >> 8, c & 0xff))
+ e->normal.type[i] = BT_NAME;
+ else
+ e->normal.type[i] = BT_OTHER;
+ e->utf8[i][0] = (char)XmlUtf8Encode(c, e->utf8[i] + 1);
+ e->utf16[i] = (unsigned short)c;
+ }
+ }
+ e->userData = userData;
+ e->convert = convert;
+ if (convert) {
+ e->normal.isName2 = unknown_isName;
+ e->normal.isName3 = unknown_isName;
+ e->normal.isName4 = unknown_isName;
+ e->normal.isNmstrt2 = unknown_isNmstrt;
+ e->normal.isNmstrt3 = unknown_isNmstrt;
+ e->normal.isNmstrt4 = unknown_isNmstrt;
+ e->normal.isInvalid2 = unknown_isInvalid;
+ e->normal.isInvalid3 = unknown_isInvalid;
+ e->normal.isInvalid4 = unknown_isInvalid;
+ }
+ e->normal.enc.utf8Convert = unknown_toUtf8;
+ e->normal.enc.utf16Convert = unknown_toUtf16;
+ return &(e->normal.enc);
+}
+
+/* If this enumeration is changed, getEncodingIndex and encodings
+must also be changed. */
+enum {
+ UNKNOWN_ENC = -1,
+ ISO_8859_1_ENC = 0,
+ US_ASCII_ENC,
+ UTF_8_ENC,
+ UTF_16_ENC,
+ UTF_16BE_ENC,
+ UTF_16LE_ENC,
+ /* must match encodingNames up to here */
+ NO_ENC
+};
+
+static const char KW_ISO_8859_1[] = {
+ ASCII_I, ASCII_S, ASCII_O, ASCII_MINUS, ASCII_8, ASCII_8, ASCII_5, ASCII_9,
+ ASCII_MINUS, ASCII_1, '\0'
+};
+static const char KW_US_ASCII[] = {
+ ASCII_U, ASCII_S, ASCII_MINUS, ASCII_A, ASCII_S, ASCII_C, ASCII_I, ASCII_I,
+ '\0'
+};
+static const char KW_UTF_8[] = {
+ ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_8, '\0'
+};
+static const char KW_UTF_16[] = {
+ ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_1, ASCII_6, '\0'
+};
+static const char KW_UTF_16BE[] = {
+ ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_1, ASCII_6, ASCII_B, ASCII_E,
+ '\0'
+};
+static const char KW_UTF_16LE[] = {
+ ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_1, ASCII_6, ASCII_L, ASCII_E,
+ '\0'
+};
+
+static int FASTCALL
+getEncodingIndex(const char *name)
+{
+ static const char * const encodingNames[] = {
+ KW_ISO_8859_1,
+ KW_US_ASCII,
+ KW_UTF_8,
+ KW_UTF_16,
+ KW_UTF_16BE,
+ KW_UTF_16LE,
+ };
+ int i;
+ if (name == NULL)
+ return NO_ENC;
+ for (i = 0; i < (int)(sizeof(encodingNames)/sizeof(encodingNames[0])); i++)
+ if (streqci(name, encodingNames[i]))
+ return i;
+ return UNKNOWN_ENC;
+}
+
+/* For binary compatibility, we store the index of the encoding
+ specified at initialization in the isUtf16 member.
+*/
+
+#define INIT_ENC_INDEX(enc) ((int)(enc)->initEnc.isUtf16)
+#define SET_INIT_ENC_INDEX(enc, i) ((enc)->initEnc.isUtf16 = (char)i)
+
+/* This is what detects the encoding. encodingTable maps from
+ encoding indices to encodings; INIT_ENC_INDEX(enc) is the index of
+ the external (protocol) specified encoding; state is
+ XML_CONTENT_STATE if we're parsing an external text entity, and
+ XML_PROLOG_STATE otherwise.
+*/
+
+
+static int
+initScan(const ENCODING * const *encodingTable,
+ const INIT_ENCODING *enc,
+ int state,
+ const char *ptr,
+ const char *end,
+ const char **nextTokPtr)
+{
+ const ENCODING **encPtr;
+
+ if (ptr == end)
+ return XML_TOK_NONE;
+ encPtr = enc->encPtr;
+ if (ptr + 1 == end) {
+ /* only a single byte available for auto-detection */
+#ifndef XML_DTD /* FIXME */
+ /* a well-formed document entity must have more than one byte */
+ if (state != XML_CONTENT_STATE)
+ return XML_TOK_PARTIAL;
+#endif
+ /* so we're parsing an external text entity... */
+ /* if UTF-16 was externally specified, then we need at least 2 bytes */
+ switch (INIT_ENC_INDEX(enc)) {
+ case UTF_16_ENC:
+ case UTF_16LE_ENC:
+ case UTF_16BE_ENC:
+ return XML_TOK_PARTIAL;
+ }
+ switch ((unsigned char)*ptr) {
+ case 0xFE:
+ case 0xFF:
+ case 0xEF: /* possibly first byte of UTF-8 BOM */
+ if (INIT_ENC_INDEX(enc) == ISO_8859_1_ENC
+ && state == XML_CONTENT_STATE)
+ break;
+ /* fall through */
+ case 0x00:
+ case 0x3C:
+ return XML_TOK_PARTIAL;
+ }
+ }
+ else {
+ switch (((unsigned char)ptr[0] << 8) | (unsigned char)ptr[1]) {
+ case 0xFEFF:
+ if (INIT_ENC_INDEX(enc) == ISO_8859_1_ENC
+ && state == XML_CONTENT_STATE)
+ break;
+ *nextTokPtr = ptr + 2;
+ *encPtr = encodingTable[UTF_16BE_ENC];
+ return XML_TOK_BOM;
+ /* 00 3C is handled in the default case */
+ case 0x3C00:
+ if ((INIT_ENC_INDEX(enc) == UTF_16BE_ENC
+ || INIT_ENC_INDEX(enc) == UTF_16_ENC)
+ && state == XML_CONTENT_STATE)
+ break;
+ *encPtr = encodingTable[UTF_16LE_ENC];
+ return XmlTok(*encPtr, state, ptr, end, nextTokPtr);
+ case 0xFFFE:
+ if (INIT_ENC_INDEX(enc) == ISO_8859_1_ENC
+ && state == XML_CONTENT_STATE)
+ break;
+ *nextTokPtr = ptr + 2;
+ *encPtr = encodingTable[UTF_16LE_ENC];
+ return XML_TOK_BOM;
+ case 0xEFBB:
+ /* Maybe a UTF-8 BOM (EF BB BF) */
+ /* If there's an explicitly specified (external) encoding
+ of ISO-8859-1 or some flavour of UTF-16
+ and this is an external text entity,
+ don't look for the BOM,
+ because it might be a legal data.
+ */
+ if (state == XML_CONTENT_STATE) {
+ int e = INIT_ENC_INDEX(enc);
+ if (e == ISO_8859_1_ENC || e == UTF_16BE_ENC
+ || e == UTF_16LE_ENC || e == UTF_16_ENC)
+ break;
+ }
+ if (ptr + 2 == end)
+ return XML_TOK_PARTIAL;
+ if ((unsigned char)ptr[2] == 0xBF) {
+ *nextTokPtr = ptr + 3;
+ *encPtr = encodingTable[UTF_8_ENC];
+ return XML_TOK_BOM;
+ }
+ break;
+ default:
+ if (ptr[0] == '\0') {
+ /* 0 isn't a legal data character. Furthermore a document
+ entity can only start with ASCII characters. So the only
+ way this can fail to be big-endian UTF-16 if it it's an
+ external parsed general entity that's labelled as
+ UTF-16LE.
+ */
+ if (state == XML_CONTENT_STATE && INIT_ENC_INDEX(enc) == UTF_16LE_ENC)
+ break;
+ *encPtr = encodingTable[UTF_16BE_ENC];
+ return XmlTok(*encPtr, state, ptr, end, nextTokPtr);
+ }
+ else if (ptr[1] == '\0') {
+ /* We could recover here in the case:
+ - parsing an external entity
+ - second byte is 0
+ - no externally specified encoding
+ - no encoding declaration
+ by assuming UTF-16LE. But we don't, because this would mean when
+ presented just with a single byte, we couldn't reliably determine
+ whether we needed further bytes.
+ */
+ if (state == XML_CONTENT_STATE)
+ break;
+ *encPtr = encodingTable[UTF_16LE_ENC];
+ return XmlTok(*encPtr, state, ptr, end, nextTokPtr);
+ }
+ break;
+ }
+ }
+ *encPtr = encodingTable[INIT_ENC_INDEX(enc)];
+ return XmlTok(*encPtr, state, ptr, end, nextTokPtr);
+}
+
+
+#define NS(x) x
+#define ns(x) x
+#include "xmltok_ns.c"
+#undef NS
+#undef ns
+
+#ifdef XML_NS
+
+#define NS(x) x ## NS
+#define ns(x) x ## _ns
+
+#include "xmltok_ns.c"
+
+#undef NS
+#undef ns
+
+ENCODING *
+XmlInitUnknownEncodingNS(void *mem,
+ int *table,
+ CONVERTER convert,
+ void *userData)
+{
+ ENCODING *enc = XmlInitUnknownEncoding(mem, table, convert, userData);
+ if (enc)
+ ((struct normal_encoding *)enc)->type[ASCII_COLON] = BT_COLON;
+ return enc;
+}
+
+#endif /* XML_NS */
+
+#ifdef __cplusplus
+}
+#endif

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/xmltok.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/xmltok.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1 @@
+#include "xmltok.c"

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/xmltok.h
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/xmltok.h 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,316 @@
+/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
+ See the file COPYING for copying permission.
+*/
+
+#ifndef XmlTok_INCLUDED
+#define XmlTok_INCLUDED 1
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* The following token may be returned by XmlContentTok */
+#define XML_TOK_TRAILING_RSQB -5 /* ] or ]] at the end of the scan; might be
+ start of illegal ]]> sequence */
+/* The following tokens may be returned by both XmlPrologTok and
+ XmlContentTok.
+*/
+#define XML_TOK_NONE -4 /* The string to be scanned is empty */
+#define XML_TOK_TRAILING_CR -3 /* A CR at the end of the scan;
+ might be part of CRLF sequence */
+#define XML_TOK_PARTIAL_CHAR -2 /* only part of a multibyte sequence */
+#define XML_TOK_PARTIAL -1 /* only part of a token */
+#define XML_TOK_INVALID 0
+
+/* The following tokens are returned by XmlContentTok; some are also
+ returned by XmlAttributeValueTok, XmlEntityTok, XmlCdataSectionTok.
+*/
+#define XML_TOK_START_TAG_WITH_ATTS 1
+#define XML_TOK_START_TAG_NO_ATTS 2
+#define XML_TOK_EMPTY_ELEMENT_WITH_ATTS 3 /* empty element tag <e/> */
+#define XML_TOK_EMPTY_ELEMENT_NO_ATTS 4
+#define XML_TOK_END_TAG 5
+#define XML_TOK_DATA_CHARS 6
+#define XML_TOK_DATA_NEWLINE 7
+#define XML_TOK_CDATA_SECT_OPEN 8
+#define XML_TOK_ENTITY_REF 9
+#define XML_TOK_CHAR_REF 10 /* numeric character reference */
+
+/* The following tokens may be returned by both XmlPrologTok and
+ XmlContentTok.
+*/
+#define XML_TOK_PI 11 /* processing instruction */
+#define XML_TOK_XML_DECL 12 /* XML decl or text decl */
+#define XML_TOK_COMMENT 13
+#define XML_TOK_BOM 14 /* Byte order mark */
+
+/* The following tokens are returned only by XmlPrologTok */
+#define XML_TOK_PROLOG_S 15
+#define XML_TOK_DECL_OPEN 16 /* <!foo */
+#define XML_TOK_DECL_CLOSE 17 /* > */
+#define XML_TOK_NAME 18
+#define XML_TOK_NMTOKEN 19
+#define XML_TOK_POUND_NAME 20 /* #name */
+#define XML_TOK_OR 21 /* | */
+#define XML_TOK_PERCENT 22
+#define XML_TOK_OPEN_PAREN 23
+#define XML_TOK_CLOSE_PAREN 24
+#define XML_TOK_OPEN_BRACKET 25
+#define XML_TOK_CLOSE_BRACKET 26
+#define XML_TOK_LITERAL 27
+#define XML_TOK_PARAM_ENTITY_REF 28
+#define XML_TOK_INSTANCE_START 29
+
+/* The following occur only in element type declarations */
+#define XML_TOK_NAME_QUESTION 30 /* name? */
+#define XML_TOK_NAME_ASTERISK 31 /* name* */
+#define XML_TOK_NAME_PLUS 32 /* name+ */
+#define XML_TOK_COND_SECT_OPEN 33 /* <![ */
+#define XML_TOK_COND_SECT_CLOSE 34 /* ]]> */
+#define XML_TOK_CLOSE_PAREN_QUESTION 35 /* )? */
+#define XML_TOK_CLOSE_PAREN_ASTERISK 36 /* )* */
+#define XML_TOK_CLOSE_PAREN_PLUS 37 /* )+ */
+#define XML_TOK_COMMA 38
+
+/* The following token is returned only by XmlAttributeValueTok */
+#define XML_TOK_ATTRIBUTE_VALUE_S 39
+
+/* The following token is returned only by XmlCdataSectionTok */
+#define XML_TOK_CDATA_SECT_CLOSE 40
+
+/* With namespace processing this is returned by XmlPrologTok for a
+ name with a colon.
+*/
+#define XML_TOK_PREFIXED_NAME 41
+
+#ifdef XML_DTD
+#define XML_TOK_IGNORE_SECT 42
+#endif /* XML_DTD */
+
+#ifdef XML_DTD
+#define XML_N_STATES 4
+#else /* not XML_DTD */
+#define XML_N_STATES 3
+#endif /* not XML_DTD */
+
+#define XML_PROLOG_STATE 0
+#define XML_CONTENT_STATE 1
+#define XML_CDATA_SECTION_STATE 2
+#ifdef XML_DTD
+#define XML_IGNORE_SECTION_STATE 3
+#endif /* XML_DTD */
+
+#define XML_N_LITERAL_TYPES 2
+#define XML_ATTRIBUTE_VALUE_LITERAL 0
+#define XML_ENTITY_VALUE_LITERAL 1
+
+/* The size of the buffer passed to XmlUtf8Encode must be at least this. */
+#define XML_UTF8_ENCODE_MAX 4
+/* The size of the buffer passed to XmlUtf16Encode must be at least this. */
+#define XML_UTF16_ENCODE_MAX 2
+
+typedef struct position {
+ /* first line and first column are 0 not 1 */
+ XML_Size lineNumber;
+ XML_Size columnNumber;
+} POSITION;
+
+typedef struct {
+ const char *name;
+ const char *valuePtr;
+ const char *valueEnd;
+ char normalized;
+} ATTRIBUTE;
+
+struct encoding;
+typedef struct encoding ENCODING;
+
+typedef int (PTRCALL *SCANNER)(const ENCODING *,
+ const char *,
+ const char *,
+ const char **);
+
+struct encoding {
+ SCANNER scanners[XML_N_STATES];
+ SCANNER literalScanners[XML_N_LITERAL_TYPES];
+ int (PTRCALL *sameName)(const ENCODING *,
+ const char *,
+ const char *);
+ int (PTRCALL *nameMatchesAscii)(const ENCODING *,
+ const char *,
+ const char *,
+ const char *);
+ int (PTRFASTCALL *nameLength)(const ENCODING *, const char *);
+ const char *(PTRFASTCALL *skipS)(const ENCODING *, const char *);
+ int (PTRCALL *getAtts)(const ENCODING *enc,
+ const char *ptr,
+ int attsMax,
+ ATTRIBUTE *atts);
+ int (PTRFASTCALL *charRefNumber)(const ENCODING *enc, const char *ptr);
+ int (PTRCALL *predefinedEntityName)(const ENCODING *,
+ const char *,
+ const char *);
+ void (PTRCALL *updatePosition)(const ENCODING *,
+ const char *ptr,
+ const char *end,
+ POSITION *);
+ int (PTRCALL *isPublicId)(const ENCODING *enc,
+ const char *ptr,
+ const char *end,
+ const char **badPtr);
+ void (PTRCALL *utf8Convert)(const ENCODING *enc,
+ const char **fromP,
+ const char *fromLim,
+ char **toP,
+ const char *toLim);
+ void (PTRCALL *utf16Convert)(const ENCODING *enc,
+ const char **fromP,
+ const char *fromLim,
+ unsigned short **toP,
+ const unsigned short *toLim);
+ int minBytesPerChar;
+ char isUtf8;
+ char isUtf16;
+};
+
+/* Scan the string starting at ptr until the end of the next complete
+ token, but do not scan past eptr. Return an integer giving the
+ type of token.
+
+ Return XML_TOK_NONE when ptr == eptr; nextTokPtr will not be set.
+
+ Return XML_TOK_PARTIAL when the string does not contain a complete
+ token; nextTokPtr will not be set.
+
+ Return XML_TOK_INVALID when the string does not start a valid
+ token; nextTokPtr will be set to point to the character which made
+ the token invalid.
+
+ Otherwise the string starts with a valid token; nextTokPtr will be
+ set to point to the character following the end of that token.
+
+ Each data character counts as a single token, but adjacent data
+ characters may be returned together. Similarly for characters in
+ the prolog outside literals, comments and processing instructions.
+*/
+
+
+#define XmlTok(enc, state, ptr, end, nextTokPtr) \
+ (((enc)->scanners[state])(enc, ptr, end, nextTokPtr))
+
+#define XmlPrologTok(enc, ptr, end, nextTokPtr) \
+ XmlTok(enc, XML_PROLOG_STATE, ptr, end, nextTokPtr)
+
+#define XmlContentTok(enc, ptr, end, nextTokPtr) \
+ XmlTok(enc, XML_CONTENT_STATE, ptr, end, nextTokPtr)
+
+#define XmlCdataSectionTok(enc, ptr, end, nextTokPtr) \
+ XmlTok(enc, XML_CDATA_SECTION_STATE, ptr, end, nextTokPtr)
+
+#ifdef XML_DTD
+
+#define XmlIgnoreSectionTok(enc, ptr, end, nextTokPtr) \
+ XmlTok(enc, XML_IGNORE_SECTION_STATE, ptr, end, nextTokPtr)
+
+#endif /* XML_DTD */
+
+/* This is used for performing a 2nd-level tokenization on the content
+ of a literal that has already been returned by XmlTok.
+*/
+#define XmlLiteralTok(enc, literalType, ptr, end, nextTokPtr) \
+ (((enc)->literalScanners[literalType])(enc, ptr, end, nextTokPtr))
+
+#define XmlAttributeValueTok(enc, ptr, end, nextTokPtr) \
+ XmlLiteralTok(enc, XML_ATTRIBUTE_VALUE_LITERAL, ptr, end, nextTokPtr)
+
+#define XmlEntityValueTok(enc, ptr, end, nextTokPtr) \
+ XmlLiteralTok(enc, XML_ENTITY_VALUE_LITERAL, ptr, end, nextTokPtr)
+
+#define XmlSameName(enc, ptr1, ptr2) (((enc)->sameName)(enc, ptr1, ptr2))
+
+#define XmlNameMatchesAscii(enc, ptr1, end1, ptr2) \
+ (((enc)->nameMatchesAscii)(enc, ptr1, end1, ptr2))
+
+#define XmlNameLength(enc, ptr) \
+ (((enc)->nameLength)(enc, ptr))
+
+#define XmlSkipS(enc, ptr) \
+ (((enc)->skipS)(enc, ptr))
+
+#define XmlGetAttributes(enc, ptr, attsMax, atts) \
+ (((enc)->getAtts)(enc, ptr, attsMax, atts))
+
+#define XmlCharRefNumber(enc, ptr) \
+ (((enc)->charRefNumber)(enc, ptr))
+
+#define XmlPredefinedEntityName(enc, ptr, end) \
+ (((enc)->predefinedEntityName)(enc, ptr, end))
+
+#define XmlUpdatePosition(enc, ptr, end, pos) \
+ (((enc)->updatePosition)(enc, ptr, end, pos))
+
+#define XmlIsPublicId(enc, ptr, end, badPtr) \
+ (((enc)->isPublicId)(enc, ptr, end, badPtr))
+
+#define XmlUtf8Convert(enc, fromP, fromLim, toP, toLim) \
+ (((enc)->utf8Convert)(enc, fromP, fromLim, toP, toLim))
+
+#define XmlUtf16Convert(enc, fromP, fromLim, toP, toLim) \
+ (((enc)->utf16Convert)(enc, fromP, fromLim, toP, toLim))
+
+typedef struct {
+ ENCODING initEnc;
+ const ENCODING **encPtr;
+} INIT_ENCODING;
+
+int XmlParseXmlDecl(int isGeneralTextEntity,
+ const ENCODING *enc,
+ const char *ptr,
+ const char *end,
+ const char **badPtr,
+ const char **versionPtr,
+ const char **versionEndPtr,
+ const char **encodingNamePtr,
+ const ENCODING **namedEncodingPtr,
+ int *standalonePtr);
+
+int XmlInitEncoding(INIT_ENCODING *, const ENCODING **, const char *name);
+const ENCODING *XmlGetUtf8InternalEncoding(void);
+const ENCODING *XmlGetUtf16InternalEncoding(void);
+int FASTCALL XmlUtf8Encode(int charNumber, char *buf);
+int FASTCALL XmlUtf16Encode(int charNumber, unsigned short *buf);
+int XmlSizeOfUnknownEncoding(void);
+
+
+typedef int (XMLCALL *CONVERTER) (void *userData, const char *p);
+
+ENCODING *
+XmlInitUnknownEncoding(void *mem,
+ int *table,
+ CONVERTER convert,
+ void *userData);
+
+int XmlParseXmlDeclNS(int isGeneralTextEntity,
+ const ENCODING *enc,
+ const char *ptr,
+ const char *end,
+ const char **badPtr,
+ const char **versionPtr,
+ const char **versionEndPtr,
+ const char **encodingNamePtr,
+ const ENCODING **namedEncodingPtr,
+ int *standalonePtr);
+
+int XmlInitEncodingNS(INIT_ENCODING *, const ENCODING **, const char *name);
+const ENCODING *XmlGetUtf8InternalEncodingNS(void);
+const ENCODING *XmlGetUtf16InternalEncodingNS(void);
+ENCODING *
+XmlInitUnknownEncodingNS(void *mem,
+ int *table,
+ CONVERTER convert,
+ void *userData);
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* not XmlTok_INCLUDED */

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/xmltok_impl.c
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/xmltok_impl.c 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,1779 @@
+/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
+ See the file COPYING for copying permission.
+*/
+
+#ifndef IS_INVALID_CHAR
+#define IS_INVALID_CHAR(enc, ptr, n) (0)
+#endif
+
+#define INVALID_LEAD_CASE(n, ptr, nextTokPtr) \
+ case BT_LEAD ## n: \
+ if (end - ptr < n) \
+ return XML_TOK_PARTIAL_CHAR; \
+ if (IS_INVALID_CHAR(enc, ptr, n)) { \
+ *(nextTokPtr) = (ptr); \
+ return XML_TOK_INVALID; \
+ } \
+ ptr += n; \
+ break;
+
+#define INVALID_CASES(ptr, nextTokPtr) \
+ INVALID_LEAD_CASE(2, ptr, nextTokPtr) \
+ INVALID_LEAD_CASE(3, ptr, nextTokPtr) \
+ INVALID_LEAD_CASE(4, ptr, nextTokPtr) \
+ case BT_NONXML: \
+ case BT_MALFORM: \
+ case BT_TRAIL: \
+ *(nextTokPtr) = (ptr); \
+ return XML_TOK_INVALID;
+
+#define CHECK_NAME_CASE(n, enc, ptr, end, nextTokPtr) \
+ case BT_LEAD ## n: \
+ if (end - ptr < n) \
+ return XML_TOK_PARTIAL_CHAR; \
+ if (!IS_NAME_CHAR(enc, ptr, n)) { \
+ *nextTokPtr = ptr; \
+ return XML_TOK_INVALID; \
+ } \
+ ptr += n; \
+ break;
+
+#define CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) \
+ case BT_NONASCII: \
+ if (!IS_NAME_CHAR_MINBPC(enc, ptr)) { \
+ *nextTokPtr = ptr; \
+ return XML_TOK_INVALID; \
+ } \
+ case BT_NMSTRT: \
+ case BT_HEX: \
+ case BT_DIGIT: \
+ case BT_NAME: \
+ case BT_MINUS: \
+ ptr += MINBPC(enc); \
+ break; \
+ CHECK_NAME_CASE(2, enc, ptr, end, nextTokPtr) \
+ CHECK_NAME_CASE(3, enc, ptr, end, nextTokPtr) \
+ CHECK_NAME_CASE(4, enc, ptr, end, nextTokPtr)
+
+#define CHECK_NMSTRT_CASE(n, enc, ptr, end, nextTokPtr) \
+ case BT_LEAD ## n: \
+ if (end - ptr < n) \
+ return XML_TOK_PARTIAL_CHAR; \
+ if (!IS_NMSTRT_CHAR(enc, ptr, n)) { \
+ *nextTokPtr = ptr; \
+ return XML_TOK_INVALID; \
+ } \
+ ptr += n; \
+ break;
+
+#define CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr) \
+ case BT_NONASCII: \
+ if (!IS_NMSTRT_CHAR_MINBPC(enc, ptr)) { \
+ *nextTokPtr = ptr; \
+ return XML_TOK_INVALID; \
+ } \
+ case BT_NMSTRT: \
+ case BT_HEX: \
+ ptr += MINBPC(enc); \
+ break; \
+ CHECK_NMSTRT_CASE(2, enc, ptr, end, nextTokPtr) \
+ CHECK_NMSTRT_CASE(3, enc, ptr, end, nextTokPtr) \
+ CHECK_NMSTRT_CASE(4, enc, ptr, end, nextTokPtr)
+
+#ifndef PREFIX
+#define PREFIX(ident) ident
+#endif
+
+/* ptr points to character following "<!-" */
+
+static int PTRCALL
+PREFIX(scanComment)(const ENCODING *enc, const char *ptr,
+ const char *end, const char **nextTokPtr)
+{
+ if (ptr != end) {
+ if (!CHAR_MATCHES(enc, ptr, ASCII_MINUS)) {
+ *nextTokPtr = ptr;
+ return XML_TOK_INVALID;
+ }
+ ptr += MINBPC(enc);
+ while (ptr != end) {
+ switch (BYTE_TYPE(enc, ptr)) {
+ INVALID_CASES(ptr, nextTokPtr)
+ case BT_MINUS:
+ if ((ptr += MINBPC(enc)) == end)
+ return XML_TOK_PARTIAL;
+ if (CHAR_MATCHES(enc, ptr, ASCII_MINUS)) {
+ if ((ptr += MINBPC(enc)) == end)
+ return XML_TOK_PARTIAL;
+ if (!CHAR_MATCHES(enc, ptr, ASCII_GT)) {
+ *nextTokPtr = ptr;
+ return XML_TOK_INVALID;
+ }
+ *nextTokPtr = ptr + MINBPC(enc);
+ return XML_TOK_COMMENT;
+ }
+ break;
+ default:
+ ptr += MINBPC(enc);
+ break;
+ }
+ }
+ }
+ return XML_TOK_PARTIAL;
+}
+
+/* ptr points to character following "<!" */
+
+static int PTRCALL
+PREFIX(scanDecl)(const ENCODING *enc, const char *ptr,
+ const char *end, const char **nextTokPtr)
+{
+ if (ptr == end)
+ return XML_TOK_PARTIAL;
+ switch (BYTE_TYPE(enc, ptr)) {
+ case BT_MINUS:
+ return PREFIX(scanComment)(enc, ptr + MINBPC(enc), end, nextTokPtr);
+ case BT_LSQB:
+ *nextTokPtr = ptr + MINBPC(enc);
+ return XML_TOK_COND_SECT_OPEN;
+ case BT_NMSTRT:
+ case BT_HEX:
+ ptr += MINBPC(enc);
+ break;
+ default:
+ *nextTokPtr = ptr;
+ return XML_TOK_INVALID;
+ }
+ while (ptr != end) {
+ switch (BYTE_TYPE(enc, ptr)) {
+ case BT_PERCNT:
+ if (ptr + MINBPC(enc) == end)
+ return XML_TOK_PARTIAL;
+ /* don't allow <!ENTITY% foo "whatever"> */
+ switch (BYTE_TYPE(enc, ptr + MINBPC(enc))) {
+ case BT_S: case BT_CR: case BT_LF: case BT_PERCNT:
+ *nextTokPtr = ptr;
+ return XML_TOK_INVALID;
+ }
+ /* fall through */
+ case BT_S: case BT_CR: case BT_LF:
+ *nextTokPtr = ptr;
+ return XML_TOK_DECL_OPEN;
+ case BT_NMSTRT:
+ case BT_HEX:
+ ptr += MINBPC(enc);
+ break;
+ default:
+ *nextTokPtr = ptr;
+ return XML_TOK_INVALID;
+ }
+ }
+ return XML_TOK_PARTIAL;
+}
+
+static int PTRCALL
+PREFIX(checkPiTarget)(const ENCODING *enc, const char *ptr,
+ const char *end, int *tokPtr)
+{
+ int upper = 0;
+ *tokPtr = XML_TOK_PI;
+ if (end - ptr != MINBPC(enc)*3)
+ return 1;
+ switch (BYTE_TO_ASCII(enc, ptr)) {
+ case ASCII_x:
+ break;
+ case ASCII_X:
+ upper = 1;
+ break;
+ default:
+ return 1;
+ }
+ ptr += MINBPC(enc);
+ switch (BYTE_TO_ASCII(enc, ptr)) {
+ case ASCII_m:
+ break;
+ case ASCII_M:
+ upper = 1;
+ break;
+ default:
+ return 1;
+ }
+ ptr += MINBPC(enc);
+ switch (BYTE_TO_ASCII(enc, ptr)) {
+ case ASCII_l:
+ break;
+ case ASCII_L:
+ upper = 1;
+ break;
+ default:
+ return 1;
+ }
+ if (upper)
+ return 0;
+ *tokPtr = XML_TOK_XML_DECL;
+ return 1;
+}
+
+/* ptr points to character following "<?" */
+
+static int PTRCALL
+PREFIX(scanPi)(const ENCODING *enc, const char *ptr,
+ const char *end, const char **nextTokPtr)
+{
+ int tok;
+ const char *target = ptr;
+ if (ptr == end)
+ return XML_TOK_PARTIAL;
+ switch (BYTE_TYPE(enc, ptr)) {
+ CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr)
+ default:
+ *nextTokPtr = ptr;
+ return XML_TOK_INVALID;
+ }
+ while (ptr != end) {
+ switch (BYTE_TYPE(enc, ptr)) {
+ CHECK_NAME_CASES(enc, ptr, end, nextTokPtr)
+ case BT_S: case BT_CR: case BT_LF:
+ if (!PREFIX(checkPiTarget)(enc, target, ptr, &tok)) {
+ *nextTokPtr = ptr;
+ return XML_TOK_INVALID;
+ }
+ ptr += MINBPC(enc);
+ while (ptr != end) {
+ switch (BYTE_TYPE(enc, ptr)) {
+ INVALID_CASES(ptr, nextTokPtr)
+ case BT_QUEST:
+ ptr += MINBPC(enc);
+ if (ptr == end)
+ return XML_TOK_PARTIAL;
+ if (CHAR_MATCHES(enc, ptr, ASCII_GT)) {
+ *nextTokPtr = ptr + MINBPC(enc);
+ return tok;
+ }
+ break;
+ default:
+ ptr += MINBPC(enc);
+ break;
+ }
+ }
+ return XML_TOK_PARTIAL;
+ case BT_QUEST:
+ if (!PREFIX(checkPiTarget)(enc, target, ptr, &tok)) {
+ *nextTokPtr = ptr;
+ return XML_TOK_INVALID;
+ }
+ ptr += MINBPC(enc);
+ if (ptr == end)
+ return XML_TOK_PARTIAL;
+ if (CHAR_MATCHES(enc, ptr, ASCII_GT)) {
+ *nextTokPtr = ptr + MINBPC(enc);
+ return tok;
+ }
+ /* fall through */
+ default:
+ *nextTokPtr = ptr;
+ return XML_TOK_INVALID;
+ }
+ }
+ return XML_TOK_PARTIAL;
+}
+
+static int PTRCALL
+PREFIX(scanCdataSection)(const ENCODING *enc, const char *ptr,
+ const char *end, const char **nextTokPtr)
+{
+ static const char CDATA_LSQB[] = { ASCII_C, ASCII_D, ASCII_A,
+ ASCII_T, ASCII_A, ASCII_LSQB };
+ int i;
+ /* CDATA[ */
+ if (end - ptr < 6 * MINBPC(enc))
+ return XML_TOK_PARTIAL;
+ for (i = 0; i < 6; i++, ptr += MINBPC(enc)) {
+ if (!CHAR_MATCHES(enc, ptr, CDATA_LSQB[i])) {
+ *nextTokPtr = ptr;
+ return XML_TOK_INVALID;
+ }
+ }
+ *nextTokPtr = ptr;
+ return XML_TOK_CDATA_SECT_OPEN;
+}
+
+static int PTRCALL
+PREFIX(cdataSectionTok)(const ENCODING *enc, const char *ptr,
+ const char *end, const char **nextTokPtr)
+{
+ if (ptr == end)
+ return XML_TOK_NONE;
+ if (MINBPC(enc) > 1) {
+ size_t n = end - ptr;
+ if (n & (MINBPC(enc) - 1)) {
+ n &= ~(MINBPC(enc) - 1);
+ if (n == 0)
+ return XML_TOK_PARTIAL;
+ end = ptr + n;
+ }
+ }
+ switch (BYTE_TYPE(enc, ptr)) {
+ case BT_RSQB:
+ ptr += MINBPC(enc);
+ if (ptr == end)
+ return XML_TOK_PARTIAL;
+ if (!CHAR_MATCHES(enc, ptr, ASCII_RSQB))
+ break;
+ ptr += MINBPC(enc);
+ if (ptr == end)
+ return XML_TOK_PARTIAL;
+ if (!CHAR_MATCHES(enc, ptr, ASCII_GT)) {
+ ptr -= MINBPC(enc);
+ break;
+ }
+ *nextTokPtr = ptr + MINBPC(enc);
+ return XML_TOK_CDATA_SECT_CLOSE;
+ case BT_CR:
+ ptr += MINBPC(enc);
+ if (ptr == end)
+ return XML_TOK_PARTIAL;
+ if (BYTE_TYPE(enc, ptr) == BT_LF)
+ ptr += MINBPC(enc);
+ *nextTokPtr = ptr;
+ return XML_TOK_DATA_NEWLINE;
+ case BT_LF:
+ *nextTokPtr = ptr + MINBPC(enc);
+ return XML_TOK_DATA_NEWLINE;
+ INVALID_CASES(ptr, nextTokPtr)
+ default:
+ ptr += MINBPC(enc);
+ break;
+ }
+ while (ptr != end) {
+ switch (BYTE_TYPE(enc, ptr)) {
+#define LEAD_CASE(n) \
+ case BT_LEAD ## n: \
+ if (end - ptr < n || IS_INVALID_CHAR(enc, ptr, n)) { \
+ *nextTokPtr = ptr; \
+ return XML_TOK_DATA_CHARS; \
+ } \
+ ptr += n; \
+ break;
+ LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4)
+#undef LEAD_CASE
+ case BT_NONXML:
+ case BT_MALFORM:
+ case BT_TRAIL:
+ case BT_CR:
+ case BT_LF:
+ case BT_RSQB:
+ *nextTokPtr = ptr;
+ return XML_TOK_DATA_CHARS;
+ default:
+ ptr += MINBPC(enc);
+ break;
+ }
+ }
+ *nextTokPtr = ptr;
+ return XML_TOK_DATA_CHARS;
+}
+
+/* ptr points to character following "</" */
+
+static int PTRCALL
+PREFIX(scanEndTag)(const ENCODING *enc, const char *ptr,
+ const char *end, const char **nextTokPtr)
+{
+ if (ptr == end)
+ return XML_TOK_PARTIAL;
+ switch (BYTE_TYPE(enc, ptr)) {
+ CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr)
+ default:
+ *nextTokPtr = ptr;
+ return XML_TOK_INVALID;
+ }
+ while (ptr != end) {
+ switch (BYTE_TYPE(enc, ptr)) {
+ CHECK_NAME_CASES(enc, ptr, end, nextTokPtr)
+ case BT_S: case BT_CR: case BT_LF:
+ for (ptr += MINBPC(enc); ptr != end; ptr += MINBPC(enc)) {
+ switch (BYTE_TYPE(enc, ptr)) {
+ case BT_S: case BT_CR: case BT_LF:
+ break;
+ case BT_GT:
+ *nextTokPtr = ptr + MINBPC(enc);
+ return XML_TOK_END_TAG;
+ default:
+ *nextTokPtr = ptr;
+ return XML_TOK_INVALID;
+ }
+ }
+ return XML_TOK_PARTIAL;
+#ifdef XML_NS
+ case BT_COLON:
+ /* no need to check qname syntax here,
+ since end-tag must match exactly */
+ ptr += MINBPC(enc);
+ break;
+#endif
+ case BT_GT:
+ *nextTokPtr = ptr + MINBPC(enc);
+ return XML_TOK_END_TAG;
+ default:
+ *nextTokPtr = ptr;
+ return XML_TOK_INVALID;
+ }
+ }
+ return XML_TOK_PARTIAL;
+}
+
+/* ptr points to character following "&#X" */
+
+static int PTRCALL
+PREFIX(scanHexCharRef)(const ENCODING *enc, const char *ptr,
+ const char *end, const char **nextTokPtr)
+{
+ if (ptr != end) {
+ switch (BYTE_TYPE(enc, ptr)) {
+ case BT_DIGIT:
+ case BT_HEX:
+ break;
+ default:
+ *nextTokPtr = ptr;
+ return XML_TOK_INVALID;
+ }
+ for (ptr += MINBPC(enc); ptr != end; ptr += MINBPC(enc)) {
+ switch (BYTE_TYPE(enc, ptr)) {
+ case BT_DIGIT:
+ case BT_HEX:
+ break;
+ case BT_SEMI:
+ *nextTokPtr = ptr + MINBPC(enc);
+ return XML_TOK_CHAR_REF;
+ default:
+ *nextTokPtr = ptr;
+ return XML_TOK_INVALID;
+ }
+ }
+ }
+ return XML_TOK_PARTIAL;
+}
+
+/* ptr points to character following "&#" */
+
+static int PTRCALL
+PREFIX(scanCharRef)(const ENCODING *enc, const char *ptr,
+ const char *end, const char **nextTokPtr)
+{
+ if (ptr != end) {
+ if (CHAR_MATCHES(enc, ptr, ASCII_x))
+ return PREFIX(scanHexCharRef)(enc, ptr + MINBPC(enc), end, nextTokPtr);
+ switch (BYTE_TYPE(enc, ptr)) {
+ case BT_DIGIT:
+ break;
+ default:
+ *nextTokPtr = ptr;
+ return XML_TOK_INVALID;
+ }
+ for (ptr += MINBPC(enc); ptr != end; ptr += MINBPC(enc)) {
+ switch (BYTE_TYPE(enc, ptr)) {
+ case BT_DIGIT:
+ break;
+ case BT_SEMI:
+ *nextTokPtr = ptr + MINBPC(enc);
+ return XML_TOK_CHAR_REF;
+ default:
+ *nextTokPtr = ptr;
+ return XML_TOK_INVALID;
+ }
+ }
+ }
+ return XML_TOK_PARTIAL;
+}
+
+/* ptr points to character following "&" */
+
+static int PTRCALL
+PREFIX(scanRef)(const ENCODING *enc, const char *ptr, const char *end,
+ const char **nextTokPtr)
+{
+ if (ptr == end)
+ return XML_TOK_PARTIAL;
+ switch (BYTE_TYPE(enc, ptr)) {
+ CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr)
+ case BT_NUM:
+ return PREFIX(scanCharRef)(enc, ptr + MINBPC(enc), end, nextTokPtr);
+ default:
+ *nextTokPtr = ptr;
+ return XML_TOK_INVALID;
+ }
+ while (ptr != end) {
+ switch (BYTE_TYPE(enc, ptr)) {
+ CHECK_NAME_CASES(enc, ptr, end, nextTokPtr)
+ case BT_SEMI:
+ *nextTokPtr = ptr + MINBPC(enc);
+ return XML_TOK_ENTITY_REF;
+ default:
+ *nextTokPtr = ptr;
+ return XML_TOK_INVALID;
+ }
+ }
+ return XML_TOK_PARTIAL;
+}
+
+/* ptr points to character following first character of attribute name */
+
+static int PTRCALL
+PREFIX(scanAtts)(const ENCODING *enc, const char *ptr, const char *end,
+ const char **nextTokPtr)
+{
+#ifdef XML_NS
+ int hadColon = 0;
+#endif
+ while (ptr != end) {
+ switch (BYTE_TYPE(enc, ptr)) {
+ CHECK_NAME_CASES(enc, ptr, end, nextTokPtr)
+#ifdef XML_NS
+ case BT_COLON:
+ if (hadColon) {
+ *nextTokPtr = ptr;
+ return XML_TOK_INVALID;
+ }
+ hadColon = 1;
+ ptr += MINBPC(enc);
+ if (ptr == end)
+ return XML_TOK_PARTIAL;
+ switch (BYTE_TYPE(enc, ptr)) {
+ CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr)
+ default:
+ *nextTokPtr = ptr;
+ return XML_TOK_INVALID;
+ }
+ break;
+#endif
+ case BT_S: case BT_CR: case BT_LF:
+ for (;;) {
+ int t;
+
+ ptr += MINBPC(enc);
+ if (ptr == end)
+ return XML_TOK_PARTIAL;
+ t = BYTE_TYPE(enc, ptr);
+ if (t == BT_EQUALS)
+ break;
+ switch (t) {
+ case BT_S:
+ case BT_LF:
+ case BT_CR:
+ break;
+ default:
+ *nextTokPtr = ptr;
+ return XML_TOK_INVALID;
+ }
+ }
+ /* fall through */
+ case BT_EQUALS:
+ {
+ int open;
+#ifdef XML_NS
+ hadColon = 0;
+#endif
+ for (;;) {
+ ptr += MINBPC(enc);
+ if (ptr == end)
+ return XML_TOK_PARTIAL;
+ open = BYTE_TYPE(enc, ptr);
+ if (open == BT_QUOT || open == BT_APOS)
+ break;
+ switch (open) {
+ case BT_S:
+ case BT_LF:
+ case BT_CR:
+ break;
+ default:
+ *nextTokPtr = ptr;
+ return XML_TOK_INVALID;
+ }
+ }
+ ptr += MINBPC(enc);
+ /* in attribute value */
+ for (;;) {
+ int t;
+ if (ptr == end)
+ return XML_TOK_PARTIAL;
+ t = BYTE_TYPE(enc, ptr);
+ if (t == open)
+ break;
+ switch (t) {
+ INVALID_CASES(ptr, nextTokPtr)
+ case BT_AMP:
+ {
+ int tok = PREFIX(scanRef)(enc, ptr + MINBPC(enc), end, &ptr);
+ if (tok <= 0) {
+ if (tok == XML_TOK_INVALID)
+ *nextTokPtr = ptr;
+ return tok;
+ }
+ break;
+ }
+ case BT_LT:
+ *nextTokPtr = ptr;
+ return XML_TOK_INVALID;
+ default:
+ ptr += MINBPC(enc);
+ break;
+ }
+ }
+ ptr += MINBPC(enc);
+ if (ptr == end)
+ return XML_TOK_PARTIAL;
+ switch (BYTE_TYPE(enc, ptr)) {
+ case BT_S:
+ case BT_CR:
+ case BT_LF:
+ break;
+ case BT_SOL:
+ goto sol;
+ case BT_GT:
+ goto gt;
+ default:
+ *nextTokPtr = ptr;
+ return XML_TOK_INVALID;
+ }
+ /* ptr points to closing quote */
+ for (;;) {
+ ptr += MINBPC(enc);
+ if (ptr == end)
+ return XML_TOK_PARTIAL;
+ switch (BYTE_TYPE(enc, ptr)) {
+ CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr)
+ case BT_S: case BT_CR: case BT_LF:
+ continue;
+ case BT_GT:
+ gt:
+ *nextTokPtr = ptr + MINBPC(enc);
+ return XML_TOK_START_TAG_WITH_ATTS;
+ case BT_SOL:
+ sol:
+ ptr += MINBPC(enc);
+ if (ptr == end)
+ return XML_TOK_PARTIAL;
+ if (!CHAR_MATCHES(enc, ptr, ASCII_GT)) {
+ *nextTokPtr = ptr;
+ return XML_TOK_INVALID;
+ }
+ *nextTokPtr = ptr + MINBPC(enc);
+ return XML_TOK_EMPTY_ELEMENT_WITH_ATTS;
+ default:
+ *nextTokPtr = ptr;
+ return XML_TOK_INVALID;
+ }
+ break;
+ }
+ break;
+ }
+ default:
+ *nextTokPtr = ptr;
+ return XML_TOK_INVALID;
+ }
+ }
+ return XML_TOK_PARTIAL;
+}
+
+/* ptr points to character following "<" */
+
+static int PTRCALL
+PREFIX(scanLt)(const ENCODING *enc, const char *ptr, const char *end,
+ const char **nextTokPtr)
+{
+#ifdef XML_NS
+ int hadColon;
+#endif
+ if (ptr == end)
+ return XML_TOK_PARTIAL;
+ switch (BYTE_TYPE(enc, ptr)) {
+ CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr)
+ case BT_EXCL:
+ if ((ptr += MINBPC(enc)) == end)
+ return XML_TOK_PARTIAL;
+ switch (BYTE_TYPE(enc, ptr)) {
+ case BT_MINUS:
+ return PREFIX(scanComment)(enc, ptr + MINBPC(enc), end, nextTokPtr);
+ case BT_LSQB:
+ return PREFIX(scanCdataSection)(enc, ptr + MINBPC(enc),
+ end, nextTokPtr);
+ }
+ *nextTokPtr = ptr;
+ return XML_TOK_INVALID;
+ case BT_QUEST:
+ return PREFIX(scanPi)(enc, ptr + MINBPC(enc), end, nextTokPtr);
+ case BT_SOL:
+ return PREFIX(scanEndTag)(enc, ptr + MINBPC(enc), end, nextTokPtr);
+ default:
+ *nextTokPtr = ptr;
+ return XML_TOK_INVALID;
+ }
+#ifdef XML_NS
+ hadColon = 0;
+#endif
+ /* we have a start-tag */
+ while (ptr != end) {
+ switch (BYTE_TYPE(enc, ptr)) {
+ CHECK_NAME_CASES(enc, ptr, end, nextTokPtr)
+#ifdef XML_NS
+ case BT_COLON:
+ if (hadColon) {
+ *nextTokPtr = ptr;
+ return XML_TOK_INVALID;
+ }
+ hadColon = 1;
+ ptr += MINBPC(enc);
+ if (ptr == end)
+ return XML_TOK_PARTIAL;
+ switch (BYTE_TYPE(enc, ptr)) {
+ CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr)
+ default:
+ *nextTokPtr = ptr;
+ return XML_TOK_INVALID;
+ }
+ break;
+#endif
+ case BT_S: case BT_CR: case BT_LF:
+ {
+ ptr += MINBPC(enc);
+ while (ptr != end) {
+ switch (BYTE_TYPE(enc, ptr)) {
+ CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr)
+ case BT_GT:
+ goto gt;
+ case BT_SOL:
+ goto sol;
+ case BT_S: case BT_CR: case BT_LF:
+ ptr += MINBPC(enc);
+ continue;
+ default:
+ *nextTokPtr = ptr;
+ return XML_TOK_INVALID;
+ }
+ return PREFIX(scanAtts)(enc, ptr, end, nextTokPtr);
+ }
+ return XML_TOK_PARTIAL;
+ }
+ case BT_GT:
+ gt:
+ *nextTokPtr = ptr + MINBPC(enc);
+ return XML_TOK_START_TAG_NO_ATTS;
+ case BT_SOL:
+ sol:
+ ptr += MINBPC(enc);
+ if (ptr == end)
+ return XML_TOK_PARTIAL;
+ if (!CHAR_MATCHES(enc, ptr, ASCII_GT)) {
+ *nextTokPtr = ptr;
+ return XML_TOK_INVALID;
+ }
+ *nextTokPtr = ptr + MINBPC(enc);
+ return XML_TOK_EMPTY_ELEMENT_NO_ATTS;
+ default:
+ *nextTokPtr = ptr;
+ return XML_TOK_INVALID;
+ }
+ }
+ return XML_TOK_PARTIAL;
+}
+
+static int PTRCALL
+PREFIX(contentTok)(const ENCODING *enc, const char *ptr, const char *end,
+ const char **nextTokPtr)
+{
+ if (ptr == end)
+ return XML_TOK_NONE;
+ if (MINBPC(enc) > 1) {
+ size_t n = end - ptr;
+ if (n & (MINBPC(enc) - 1)) {
+ n &= ~(MINBPC(enc) - 1);
+ if (n == 0)
+ return XML_TOK_PARTIAL;
+ end = ptr + n;
+ }
+ }
+ switch (BYTE_TYPE(enc, ptr)) {
+ case BT_LT:
+ return PREFIX(scanLt)(enc, ptr + MINBPC(enc), end, nextTokPtr);
+ case BT_AMP:
+ return PREFIX(scanRef)(enc, ptr + MINBPC(enc), end, nextTokPtr);
+ case BT_CR:
+ ptr += MINBPC(enc);
+ if (ptr == end)
+ return XML_TOK_TRAILING_CR;
+ if (BYTE_TYPE(enc, ptr) == BT_LF)
+ ptr += MINBPC(enc);
+ *nextTokPtr = ptr;
+ return XML_TOK_DATA_NEWLINE;
+ case BT_LF:
+ *nextTokPtr = ptr + MINBPC(enc);
+ return XML_TOK_DATA_NEWLINE;
+ case BT_RSQB:
+ ptr += MINBPC(enc);
+ if (ptr == end)
+ return XML_TOK_TRAILING_RSQB;
+ if (!CHAR_MATCHES(enc, ptr, ASCII_RSQB))
+ break;
+ ptr += MINBPC(enc);
+ if (ptr == end)
+ return XML_TOK_TRAILING_RSQB;
+ if (!CHAR_MATCHES(enc, ptr, ASCII_GT)) {
+ ptr -= MINBPC(enc);
+ break;
+ }
+ *nextTokPtr = ptr;
+ return XML_TOK_INVALID;
+ INVALID_CASES(ptr, nextTokPtr)
+ default:
+ ptr += MINBPC(enc);
+ break;
+ }
+ while (ptr != end) {
+ switch (BYTE_TYPE(enc, ptr)) {
+#define LEAD_CASE(n) \
+ case BT_LEAD ## n: \
+ if (end - ptr < n || IS_INVALID_CHAR(enc, ptr, n)) { \
+ *nextTokPtr = ptr; \
+ return XML_TOK_DATA_CHARS; \
+ } \
+ ptr += n; \
+ break;
+ LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4)
+#undef LEAD_CASE
+ case BT_RSQB:
+ if (ptr + MINBPC(enc) != end) {
+ if (!CHAR_MATCHES(enc, ptr + MINBPC(enc), ASCII_RSQB)) {
+ ptr += MINBPC(enc);
+ break;
+ }
+ if (ptr + 2*MINBPC(enc) != end) {
+ if (!CHAR_MATCHES(enc, ptr + 2*MINBPC(enc), ASCII_GT)) {
+ ptr += MINBPC(enc);
+ break;
+ }
+ *nextTokPtr = ptr + 2*MINBPC(enc);
+ return XML_TOK_INVALID;
+ }
+ }
+ /* fall through */
+ case BT_AMP:
+ case BT_LT:
+ case BT_NONXML:
+ case BT_MALFORM:
+ case BT_TRAIL:
+ case BT_CR:
+ case BT_LF:
+ *nextTokPtr = ptr;
+ return XML_TOK_DATA_CHARS;
+ default:
+ ptr += MINBPC(enc);
+ break;
+ }
+ }
+ *nextTokPtr = ptr;
+ return XML_TOK_DATA_CHARS;
+}
+
+/* ptr points to character following "%" */
+
+static int PTRCALL
+PREFIX(scanPercent)(const ENCODING *enc, const char *ptr, const char *end,
+ const char **nextTokPtr)
+{
+ if (ptr == end)
+ return -XML_TOK_PERCENT;
+ switch (BYTE_TYPE(enc, ptr)) {
+ CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr)
+ case BT_S: case BT_LF: case BT_CR: case BT_PERCNT:
+ *nextTokPtr = ptr;
+ return XML_TOK_PERCENT;
+ default:
+ *nextTokPtr = ptr;
+ return XML_TOK_INVALID;
+ }
+ while (ptr != end) {
+ switch (BYTE_TYPE(enc, ptr)) {
+ CHECK_NAME_CASES(enc, ptr, end, nextTokPtr)
+ case BT_SEMI:
+ *nextTokPtr = ptr + MINBPC(enc);
+ return XML_TOK_PARAM_ENTITY_REF;
+ default:
+ *nextTokPtr = ptr;
+ return XML_TOK_INVALID;
+ }
+ }
+ return XML_TOK_PARTIAL;
+}
+
+static int PTRCALL
+PREFIX(scanPoundName)(const ENCODING *enc, const char *ptr, const char *end,
+ const char **nextTokPtr)
+{
+ if (ptr == end)
+ return XML_TOK_PARTIAL;
+ switch (BYTE_TYPE(enc, ptr)) {
+ CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr)
+ default:
+ *nextTokPtr = ptr;
+ return XML_TOK_INVALID;
+ }
+ while (ptr != end) {
+ switch (BYTE_TYPE(enc, ptr)) {
+ CHECK_NAME_CASES(enc, ptr, end, nextTokPtr)
+ case BT_CR: case BT_LF: case BT_S:
+ case BT_RPAR: case BT_GT: case BT_PERCNT: case BT_VERBAR:
+ *nextTokPtr = ptr;
+ return XML_TOK_POUND_NAME;
+ default:
+ *nextTokPtr = ptr;
+ return XML_TOK_INVALID;
+ }
+ }
+ return -XML_TOK_POUND_NAME;
+}
+
+static int PTRCALL
+PREFIX(scanLit)(int open, const ENCODING *enc,
+ const char *ptr, const char *end,
+ const char **nextTokPtr)
+{
+ while (ptr != end) {
+ int t = BYTE_TYPE(enc, ptr);
+ switch (t) {
+ INVALID_CASES(ptr, nextTokPtr)
+ case BT_QUOT:
+ case BT_APOS:
+ ptr += MINBPC(enc);
+ if (t != open)
+ break;
+ if (ptr == end)
+ return -XML_TOK_LITERAL;
+ *nextTokPtr = ptr;
+ switch (BYTE_TYPE(enc, ptr)) {
+ case BT_S: case BT_CR: case BT_LF:
+ case BT_GT: case BT_PERCNT: case BT_LSQB:
+ return XML_TOK_LITERAL;
+ default:
+ return XML_TOK_INVALID;
+ }
+ default:
+ ptr += MINBPC(enc);
+ break;
+ }
+ }
+ return XML_TOK_PARTIAL;
+}
+
+static int PTRCALL
+PREFIX(prologTok)(const ENCODING *enc, const char *ptr, const char *end,
+ const char **nextTokPtr)
+{
+ int tok;
+ if (ptr == end)
+ return XML_TOK_NONE;
+ if (MINBPC(enc) > 1) {
+ size_t n = end - ptr;
+ if (n & (MINBPC(enc) - 1)) {
+ n &= ~(MINBPC(enc) - 1);
+ if (n == 0)
+ return XML_TOK_PARTIAL;
+ end = ptr + n;
+ }
+ }
+ switch (BYTE_TYPE(enc, ptr)) {
+ case BT_QUOT:
+ return PREFIX(scanLit)(BT_QUOT, enc, ptr + MINBPC(enc), end, nextTokPtr);
+ case BT_APOS:
+ return PREFIX(scanLit)(BT_APOS, enc, ptr + MINBPC(enc), end, nextTokPtr);
+ case BT_LT:
+ {
+ ptr += MINBPC(enc);
+ if (ptr == end)
+ return XML_TOK_PARTIAL;
+ switch (BYTE_TYPE(enc, ptr)) {
+ case BT_EXCL:
+ return PREFIX(scanDecl)(enc, ptr + MINBPC(enc), end, nextTokPtr);
+ case BT_QUEST:
+ return PREFIX(scanPi)(enc, ptr + MINBPC(enc), end, nextTokPtr);
+ case BT_NMSTRT:
+ case BT_HEX:
+ case BT_NONASCII:
+ case BT_LEAD2:
+ case BT_LEAD3:
+ case BT_LEAD4:
+ *nextTokPtr = ptr - MINBPC(enc);
+ return XML_TOK_INSTANCE_START;
+ }
+ *nextTokPtr = ptr;
+ return XML_TOK_INVALID;
+ }
+ case BT_CR:
+ if (ptr + MINBPC(enc) == end) {
+ *nextTokPtr = end;
+ /* indicate that this might be part of a CR/LF pair */
+ return -XML_TOK_PROLOG_S;
+ }
+ /* fall through */
+ case BT_S: case BT_LF:
+ for (;;) {
+ ptr += MINBPC(enc);
+ if (ptr == end)
+ break;
+ switch (BYTE_TYPE(enc, ptr)) {
+ case BT_S: case BT_LF:
+ break;
+ case BT_CR:
+ /* don't split CR/LF pair */
+ if (ptr + MINBPC(enc) != end)
+ break;
+ /* fall through */
+ default:
+ *nextTokPtr = ptr;
+ return XML_TOK_PROLOG_S;
+ }
+ }
+ *nextTokPtr = ptr;
+ return XML_TOK_PROLOG_S;
+ case BT_PERCNT:
+ return PREFIX(scanPercent)(enc, ptr + MINBPC(enc), end, nextTokPtr);
+ case BT_COMMA:
+ *nextTokPtr = ptr + MINBPC(enc);
+ return XML_TOK_COMMA;
+ case BT_LSQB:
+ *nextTokPtr = ptr + MINBPC(enc);
+ return XML_TOK_OPEN_BRACKET;
+ case BT_RSQB:
+ ptr += MINBPC(enc);
+ if (ptr == end)
+ return -XML_TOK_CLOSE_BRACKET;
+ if (CHAR_MATCHES(enc, ptr, ASCII_RSQB)) {
+ if (ptr + MINBPC(enc) == end)
+ return XML_TOK_PARTIAL;
+ if (CHAR_MATCHES(enc, ptr + MINBPC(enc), ASCII_GT)) {
+ *nextTokPtr = ptr + 2*MINBPC(enc);
+ return XML_TOK_COND_SECT_CLOSE;
+ }
+ }
+ *nextTokPtr = ptr;
+ return XML_TOK_CLOSE_BRACKET;
+ case BT_LPAR:
+ *nextTokPtr = ptr + MINBPC(enc);
+ return XML_TOK_OPEN_PAREN;
+ case BT_RPAR:
+ ptr += MINBPC(enc);
+ if (ptr == end)
+ return -XML_TOK_CLOSE_PAREN;
+ switch (BYTE_TYPE(enc, ptr)) {
+ case BT_AST:
+ *nextTokPtr = ptr + MINBPC(enc);
+ return XML_TOK_CLOSE_PAREN_ASTERISK;
+ case BT_QUEST:
+ *nextTokPtr = ptr + MINBPC(enc);
+ return XML_TOK_CLOSE_PAREN_QUESTION;
+ case BT_PLUS:
+ *nextTokPtr = ptr + MINBPC(enc);
+ return XML_TOK_CLOSE_PAREN_PLUS;
+ case BT_CR: case BT_LF: case BT_S:
+ case BT_GT: case BT_COMMA: case BT_VERBAR:
+ case BT_RPAR:
+ *nextTokPtr = ptr;
+ return XML_TOK_CLOSE_PAREN;
+ }
+ *nextTokPtr = ptr;
+ return XML_TOK_INVALID;
+ case BT_VERBAR:
+ *nextTokPtr = ptr + MINBPC(enc);
+ return XML_TOK_OR;
+ case BT_GT:
+ *nextTokPtr = ptr + MINBPC(enc);
+ return XML_TOK_DECL_CLOSE;
+ case BT_NUM:
+ return PREFIX(scanPoundName)(enc, ptr + MINBPC(enc), end, nextTokPtr);
+#define LEAD_CASE(n) \
+ case BT_LEAD ## n: \
+ if (end - ptr < n) \
+ return XML_TOK_PARTIAL_CHAR; \
+ if (IS_NMSTRT_CHAR(enc, ptr, n)) { \
+ ptr += n; \
+ tok = XML_TOK_NAME; \
+ break; \
+ } \
+ if (IS_NAME_CHAR(enc, ptr, n)) { \
+ ptr += n; \
+ tok = XML_TOK_NMTOKEN; \
+ break; \
+ } \
+ *nextTokPtr = ptr; \
+ return XML_TOK_INVALID;
+ LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4)
+#undef LEAD_CASE
+ case BT_NMSTRT:
+ case BT_HEX:
+ tok = XML_TOK_NAME;
+ ptr += MINBPC(enc);
+ break;
+ case BT_DIGIT:
+ case BT_NAME:
+ case BT_MINUS:
+#ifdef XML_NS
+ case BT_COLON:
+#endif
+ tok = XML_TOK_NMTOKEN;
+ ptr += MINBPC(enc);
+ break;
+ case BT_NONASCII:
+ if (IS_NMSTRT_CHAR_MINBPC(enc, ptr)) {
+ ptr += MINBPC(enc);
+ tok = XML_TOK_NAME;
+ break;
+ }
+ if (IS_NAME_CHAR_MINBPC(enc, ptr)) {
+ ptr += MINBPC(enc);
+ tok = XML_TOK_NMTOKEN;
+ break;
+ }
+ /* fall through */
+ default:
+ *nextTokPtr = ptr;
+ return XML_TOK_INVALID;
+ }
+ while (ptr != end) {
+ switch (BYTE_TYPE(enc, ptr)) {
+ CHECK_NAME_CASES(enc, ptr, end, nextTokPtr)
+ case BT_GT: case BT_RPAR: case BT_COMMA:
+ case BT_VERBAR: case BT_LSQB: case BT_PERCNT:
+ case BT_S: case BT_CR: case BT_LF:
+ *nextTokPtr = ptr;
+ return tok;
+#ifdef XML_NS
+ case BT_COLON:
+ ptr += MINBPC(enc);
+ switch (tok) {
+ case XML_TOK_NAME:
+ if (ptr == end)
+ return XML_TOK_PARTIAL;
+ tok = XML_TOK_PREFIXED_NAME;
+ switch (BYTE_TYPE(enc, ptr)) {
+ CHECK_NAME_CASES(enc, ptr, end, nextTokPtr)
+ default:
+ tok = XML_TOK_NMTOKEN;
+ break;
+ }
+ break;
+ case XML_TOK_PREFIXED_NAME:
+ tok = XML_TOK_NMTOKEN;
+ break;
+ }
+ break;
+#endif
+ case BT_PLUS:
+ if (tok == XML_TOK_NMTOKEN) {
+ *nextTokPtr = ptr;
+ return XML_TOK_INVALID;
+ }
+ *nextTokPtr = ptr + MINBPC(enc);
+ return XML_TOK_NAME_PLUS;
+ case BT_AST:
+ if (tok == XML_TOK_NMTOKEN) {
+ *nextTokPtr = ptr;
+ return XML_TOK_INVALID;
+ }
+ *nextTokPtr = ptr + MINBPC(enc);
+ return XML_TOK_NAME_ASTERISK;
+ case BT_QUEST:
+ if (tok == XML_TOK_NMTOKEN) {
+ *nextTokPtr = ptr;
+ return XML_TOK_INVALID;
+ }
+ *nextTokPtr = ptr + MINBPC(enc);
+ return XML_TOK_NAME_QUESTION;
+ default:
+ *nextTokPtr = ptr;
+ return XML_TOK_INVALID;
+ }
+ }
+ return -tok;
+}
+
+static int PTRCALL
+PREFIX(attributeValueTok)(const ENCODING *enc, const char *ptr,
+ const char *end, const char **nextTokPtr)
+{
+ const char *start;
+ if (ptr == end)
+ return XML_TOK_NONE;
+ start = ptr;
+ while (ptr != end) {
+ switch (BYTE_TYPE(enc, ptr)) {
+#define LEAD_CASE(n) \
+ case BT_LEAD ## n: ptr += n; break;
+ LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4)
+#undef LEAD_CASE
+ case BT_AMP:
+ if (ptr == start)
+ return PREFIX(scanRef)(enc, ptr + MINBPC(enc), end, nextTokPtr);
+ *nextTokPtr = ptr;
+ return XML_TOK_DATA_CHARS;
+ case BT_LT:
+ /* this is for inside entity references */
+ *nextTokPtr = ptr;
+ return XML_TOK_INVALID;
+ case BT_LF:
+ if (ptr == start) {
+ *nextTokPtr = ptr + MINBPC(enc);
+ return XML_TOK_DATA_NEWLINE;
+ }
+ *nextTokPtr = ptr;
+ return XML_TOK_DATA_CHARS;
+ case BT_CR:
+ if (ptr == start) {
+ ptr += MINBPC(enc);
+ if (ptr == end)
+ return XML_TOK_TRAILING_CR;
+ if (BYTE_TYPE(enc, ptr) == BT_LF)
+ ptr += MINBPC(enc);
+ *nextTokPtr = ptr;
+ return XML_TOK_DATA_NEWLINE;
+ }
+ *nextTokPtr = ptr;
+ return XML_TOK_DATA_CHARS;
+ case BT_S:
+ if (ptr == start) {
+ *nextTokPtr = ptr + MINBPC(enc);
+ return XML_TOK_ATTRIBUTE_VALUE_S;
+ }
+ *nextTokPtr = ptr;
+ return XML_TOK_DATA_CHARS;
+ default:
+ ptr += MINBPC(enc);
+ break;
+ }
+ }
+ *nextTokPtr = ptr;
+ return XML_TOK_DATA_CHARS;
+}
+
+static int PTRCALL
+PREFIX(entityValueTok)(const ENCODING *enc, const char *ptr,
+ const char *end, const char **nextTokPtr)
+{
+ const char *start;
+ if (ptr == end)
+ return XML_TOK_NONE;
+ start = ptr;
+ while (ptr != end) {
+ switch (BYTE_TYPE(enc, ptr)) {
+#define LEAD_CASE(n) \
+ case BT_LEAD ## n: ptr += n; break;
+ LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4)
+#undef LEAD_CASE
+ case BT_AMP:
+ if (ptr == start)
+ return PREFIX(scanRef)(enc, ptr + MINBPC(enc), end, nextTokPtr);
+ *nextTokPtr = ptr;
+ return XML_TOK_DATA_CHARS;
+ case BT_PERCNT:
+ if (ptr == start) {
+ int tok = PREFIX(scanPercent)(enc, ptr + MINBPC(enc),
+ end, nextTokPtr);
+ return (tok == XML_TOK_PERCENT) ? XML_TOK_INVALID : tok;
+ }
+ *nextTokPtr = ptr;
+ return XML_TOK_DATA_CHARS;
+ case BT_LF:
+ if (ptr == start) {
+ *nextTokPtr = ptr + MINBPC(enc);
+ return XML_TOK_DATA_NEWLINE;
+ }
+ *nextTokPtr = ptr;
+ return XML_TOK_DATA_CHARS;
+ case BT_CR:
+ if (ptr == start) {
+ ptr += MINBPC(enc);
+ if (ptr == end)
+ return XML_TOK_TRAILING_CR;
+ if (BYTE_TYPE(enc, ptr) == BT_LF)
+ ptr += MINBPC(enc);
+ *nextTokPtr = ptr;
+ return XML_TOK_DATA_NEWLINE;
+ }
+ *nextTokPtr = ptr;
+ return XML_TOK_DATA_CHARS;
+ default:
+ ptr += MINBPC(enc);
+ break;
+ }
+ }
+ *nextTokPtr = ptr;
+ return XML_TOK_DATA_CHARS;
+}
+
+#ifdef XML_DTD
+
+static int PTRCALL
+PREFIX(ignoreSectionTok)(const ENCODING *enc, const char *ptr,
+ const char *end, const char **nextTokPtr)
+{
+ int level = 0;
+ if (MINBPC(enc) > 1) {
+ size_t n = end - ptr;
+ if (n & (MINBPC(enc) - 1)) {
+ n &= ~(MINBPC(enc) - 1);
+ end = ptr + n;
+ }
+ }
+ while (ptr != end) {
+ switch (BYTE_TYPE(enc, ptr)) {
+ INVALID_CASES(ptr, nextTokPtr)
+ case BT_LT:
+ if ((ptr += MINBPC(enc)) == end)
+ return XML_TOK_PARTIAL;
+ if (CHAR_MATCHES(enc, ptr, ASCII_EXCL)) {
+ if ((ptr += MINBPC(enc)) == end)
+ return XML_TOK_PARTIAL;
+ if (CHAR_MATCHES(enc, ptr, ASCII_LSQB)) {
+ ++level;
+ ptr += MINBPC(enc);
+ }
+ }
+ break;
+ case BT_RSQB:
+ if ((ptr += MINBPC(enc)) == end)
+ return XML_TOK_PARTIAL;
+ if (CHAR_MATCHES(enc, ptr, ASCII_RSQB)) {
+ if ((ptr += MINBPC(enc)) == end)
+ return XML_TOK_PARTIAL;
+ if (CHAR_MATCHES(enc, ptr, ASCII_GT)) {
+ ptr += MINBPC(enc);
+ if (level == 0) {
+ *nextTokPtr = ptr;
+ return XML_TOK_IGNORE_SECT;
+ }
+ --level;
+ }
+ }
+ break;
+ default:
+ ptr += MINBPC(enc);
+ break;
+ }
+ }
+ return XML_TOK_PARTIAL;
+}
+
+#endif /* XML_DTD */
+
+static int PTRCALL
+PREFIX(isPublicId)(const ENCODING *enc, const char *ptr, const char *end,
+ const char **badPtr)
+{
+ ptr += MINBPC(enc);
+ end -= MINBPC(enc);
+ for (; ptr != end; ptr += MINBPC(enc)) {
+ switch (BYTE_TYPE(enc, ptr)) {
+ case BT_DIGIT:
+ case BT_HEX:
+ case BT_MINUS:
+ case BT_APOS:
+ case BT_LPAR:
+ case BT_RPAR:
+ case BT_PLUS:
+ case BT_COMMA:
+ case BT_SOL:
+ case BT_EQUALS:
+ case BT_QUEST:
+ case BT_CR:
+ case BT_LF:
+ case BT_SEMI:
+ case BT_EXCL:
+ case BT_AST:
+ case BT_PERCNT:
+ case BT_NUM:
+#ifdef XML_NS
+ case BT_COLON:
+#endif
+ break;
+ case BT_S:
+ if (CHAR_MATCHES(enc, ptr, ASCII_TAB)) {
+ *badPtr = ptr;
+ return 0;
+ }
+ break;
+ case BT_NAME:
+ case BT_NMSTRT:
+ if (!(BYTE_TO_ASCII(enc, ptr) & ~0x7f))
+ break;
+ default:
+ switch (BYTE_TO_ASCII(enc, ptr)) {
+ case 0x24: /* $ */
+ case 0x40: /* @ */
+ break;
+ default:
+ *badPtr = ptr;
+ return 0;
+ }
+ break;
+ }
+ }
+ return 1;
+}
+
+/* This must only be called for a well-formed start-tag or empty
+ element tag. Returns the number of attributes. Pointers to the
+ first attsMax attributes are stored in atts.
+*/
+
+static int PTRCALL
+PREFIX(getAtts)(const ENCODING *enc, const char *ptr,
+ int attsMax, ATTRIBUTE *atts)
+{
+ enum { other, inName, inValue } state = inName;
+ int nAtts = 0;
+ int open = 0; /* defined when state == inValue;
+ initialization just to shut up compilers */
+
+ for (ptr += MINBPC(enc);; ptr += MINBPC(enc)) {
+ switch (BYTE_TYPE(enc, ptr)) {
+#define START_NAME \
+ if (state == other) { \
+ if (nAtts < attsMax) { \
+ atts[nAtts].name = ptr; \
+ atts[nAtts].normalized = 1; \
+ } \
+ state = inName; \
+ }
+#define LEAD_CASE(n) \
+ case BT_LEAD ## n: START_NAME ptr += (n - MINBPC(enc)); break;
+ LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4)
+#undef LEAD_CASE
+ case BT_NONASCII:
+ case BT_NMSTRT:
+ case BT_HEX:
+ START_NAME
+ break;
+#undef START_NAME
+ case BT_QUOT:
+ if (state != inValue) {
+ if (nAtts < attsMax)
+ atts[nAtts].valuePtr = ptr + MINBPC(enc);
+ state = inValue;
+ open = BT_QUOT;
+ }
+ else if (open == BT_QUOT) {
+ state = other;
+ if (nAtts < attsMax)
+ atts[nAtts].valueEnd = ptr;
+ nAtts++;
+ }
+ break;
+ case BT_APOS:
+ if (state != inValue) {
+ if (nAtts < attsMax)
+ atts[nAtts].valuePtr = ptr + MINBPC(enc);
+ state = inValue;
+ open = BT_APOS;
+ }
+ else if (open == BT_APOS) {
+ state = other;
+ if (nAtts < attsMax)
+ atts[nAtts].valueEnd = ptr;
+ nAtts++;
+ }
+ break;
+ case BT_AMP:
+ if (nAtts < attsMax)
+ atts[nAtts].normalized = 0;
+ break;
+ case BT_S:
+ if (state == inName)
+ state = other;
+ else if (state == inValue
+ && nAtts < attsMax
+ && atts[nAtts].normalized
+ && (ptr == atts[nAtts].valuePtr
+ || BYTE_TO_ASCII(enc, ptr) != ASCII_SPACE
+ || BYTE_TO_ASCII(enc, ptr + MINBPC(enc)) == ASCII_SPACE
+ || BYTE_TYPE(enc, ptr + MINBPC(enc)) == open))
+ atts[nAtts].normalized = 0;
+ break;
+ case BT_CR: case BT_LF:
+ /* This case ensures that the first attribute name is counted
+ Apart from that we could just change state on the quote. */
+ if (state == inName)
+ state = other;
+ else if (state == inValue && nAtts < attsMax)
+ atts[nAtts].normalized = 0;
+ break;
+ case BT_GT:
+ case BT_SOL:
+ if (state != inValue)
+ return nAtts;
+ break;
+ default:
+ break;
+ }
+ }
+ /* not reached */
+}
+
+static int PTRFASTCALL
+PREFIX(charRefNumber)(const ENCODING *enc, const char *ptr)
+{
+ int result = 0;
+ /* skip &# */
+ ptr += 2*MINBPC(enc);
+ if (CHAR_MATCHES(enc, ptr, ASCII_x)) {
+ for (ptr += MINBPC(enc);
+ !CHAR_MATCHES(enc, ptr, ASCII_SEMI);
+ ptr += MINBPC(enc)) {
+ int c = BYTE_TO_ASCII(enc, ptr);
+ switch (c) {
+ case ASCII_0: case ASCII_1: case ASCII_2: case ASCII_3: case ASCII_4:
+ case ASCII_5: case ASCII_6: case ASCII_7: case ASCII_8: case ASCII_9:
+ result <<= 4;
+ result |= (c - ASCII_0);
+ break;
+ case ASCII_A: case ASCII_B: case ASCII_C:
+ case ASCII_D: case ASCII_E: case ASCII_F:
+ result <<= 4;
+ result += 10 + (c - ASCII_A);
+ break;
+ case ASCII_a: case ASCII_b: case ASCII_c:
+ case ASCII_d: case ASCII_e: case ASCII_f:
+ result <<= 4;
+ result += 10 + (c - ASCII_a);
+ break;
+ }
+ if (result >= 0x110000)
+ return -1;
+ }
+ }
+ else {
+ for (; !CHAR_MATCHES(enc, ptr, ASCII_SEMI); ptr += MINBPC(enc)) {
+ int c = BYTE_TO_ASCII(enc, ptr);
+ result *= 10;
+ result += (c - ASCII_0);
+ if (result >= 0x110000)
+ return -1;
+ }
+ }
+ return checkCharRefNumber(result);
+}
+
+static int PTRCALL
+PREFIX(predefinedEntityName)(const ENCODING *enc, const char *ptr,
+ const char *end)
+{
+ switch ((end - ptr)/MINBPC(enc)) {
+ case 2:
+ if (CHAR_MATCHES(enc, ptr + MINBPC(enc), ASCII_t)) {
+ switch (BYTE_TO_ASCII(enc, ptr)) {
+ case ASCII_l:
+ return ASCII_LT;
+ case ASCII_g:
+ return ASCII_GT;
+ }
+ }
+ break;
+ case 3:
+ if (CHAR_MATCHES(enc, ptr, ASCII_a)) {
+ ptr += MINBPC(enc);
+ if (CHAR_MATCHES(enc, ptr, ASCII_m)) {
+ ptr += MINBPC(enc);
+ if (CHAR_MATCHES(enc, ptr, ASCII_p))
+ return ASCII_AMP;
+ }
+ }
+ break;
+ case 4:
+ switch (BYTE_TO_ASCII(enc, ptr)) {
+ case ASCII_q:
+ ptr += MINBPC(enc);
+ if (CHAR_MATCHES(enc, ptr, ASCII_u)) {
+ ptr += MINBPC(enc);
+ if (CHAR_MATCHES(enc, ptr, ASCII_o)) {
+ ptr += MINBPC(enc);
+ if (CHAR_MATCHES(enc, ptr, ASCII_t))
+ return ASCII_QUOT;
+ }
+ }
+ break;
+ case ASCII_a:
+ ptr += MINBPC(enc);
+ if (CHAR_MATCHES(enc, ptr, ASCII_p)) {
+ ptr += MINBPC(enc);
+ if (CHAR_MATCHES(enc, ptr, ASCII_o)) {
+ ptr += MINBPC(enc);
+ if (CHAR_MATCHES(enc, ptr, ASCII_s))
+ return ASCII_APOS;
+ }
+ }
+ break;
+ }
+ }
+ return 0;
+}
+
+static int PTRCALL
+PREFIX(sameName)(const ENCODING *enc, const char *ptr1, const char *ptr2)
+{
+ for (;;) {
+ switch (BYTE_TYPE(enc, ptr1)) {
+#define LEAD_CASE(n) \
+ case BT_LEAD ## n: \
+ if (*ptr1++ != *ptr2++) \
+ return 0;
+ LEAD_CASE(4) LEAD_CASE(3) LEAD_CASE(2)
+#undef LEAD_CASE
+ /* fall through */
+ if (*ptr1++ != *ptr2++)
+ return 0;
+ break;
+ case BT_NONASCII:
+ case BT_NMSTRT:
+#ifdef XML_NS
+ case BT_COLON:
+#endif
+ case BT_HEX:
+ case BT_DIGIT:
+ case BT_NAME:
+ case BT_MINUS:
+ if (*ptr2++ != *ptr1++)
+ return 0;
+ if (MINBPC(enc) > 1) {
+ if (*ptr2++ != *ptr1++)
+ return 0;
+ if (MINBPC(enc) > 2) {
+ if (*ptr2++ != *ptr1++)
+ return 0;
+ if (MINBPC(enc) > 3) {
+ if (*ptr2++ != *ptr1++)
+ return 0;
+ }
+ }
+ }
+ break;
+ default:
+ if (MINBPC(enc) == 1 && *ptr1 == *ptr2)
+ return 1;
+ switch (BYTE_TYPE(enc, ptr2)) {
+ case BT_LEAD2:
+ case BT_LEAD3:
+ case BT_LEAD4:
+ case BT_NONASCII:
+ case BT_NMSTRT:
+#ifdef XML_NS
+ case BT_COLON:
+#endif
+ case BT_HEX:
+ case BT_DIGIT:
+ case BT_NAME:
+ case BT_MINUS:
+ return 0;
+ default:
+ return 1;
+ }
+ }
+ }
+ /* not reached */
+}
+
+static int PTRCALL
+PREFIX(nameMatchesAscii)(const ENCODING *enc, const char *ptr1,
+ const char *end1, const char *ptr2)
+{
+ for (; *ptr2; ptr1 += MINBPC(enc), ptr2++) {
+ if (ptr1 == end1)
+ return 0;
+ if (!CHAR_MATCHES(enc, ptr1, *ptr2))
+ return 0;
+ }
+ return ptr1 == end1;
+}
+
+static int PTRFASTCALL
+PREFIX(nameLength)(const ENCODING *enc, const char *ptr)
+{
+ const char *start = ptr;
+ for (;;) {
+ switch (BYTE_TYPE(enc, ptr)) {
+#define LEAD_CASE(n) \
+ case BT_LEAD ## n: ptr += n; break;
+ LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4)
+#undef LEAD_CASE
+ case BT_NONASCII:
+ case BT_NMSTRT:
+#ifdef XML_NS
+ case BT_COLON:
+#endif
+ case BT_HEX:
+ case BT_DIGIT:
+ case BT_NAME:
+ case BT_MINUS:
+ ptr += MINBPC(enc);
+ break;
+ default:
+ return (int)(ptr - start);
+ }
+ }
+}
+
+static const char * PTRFASTCALL
+PREFIX(skipS)(const ENCODING *enc, const char *ptr)
+{
+ for (;;) {
+ switch (BYTE_TYPE(enc, ptr)) {
+ case BT_LF:
+ case BT_CR:
+ case BT_S:
+ ptr += MINBPC(enc);
+ break;
+ default:
+ return ptr;
+ }
+ }
+}
+
+static void PTRCALL
+PREFIX(updatePosition)(const ENCODING *enc,
+ const char *ptr,
+ const char *end,
+ POSITION *pos)
+{
+ while (ptr != end) {
+ switch (BYTE_TYPE(enc, ptr)) {
+#define LEAD_CASE(n) \
+ case BT_LEAD ## n: \
+ ptr += n; \
+ break;
+ LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4)
+#undef LEAD_CASE
+ case BT_LF:
+ pos->columnNumber = (XML_Size)-1;
+ pos->lineNumber++;
+ ptr += MINBPC(enc);
+ break;
+ case BT_CR:
+ pos->lineNumber++;
+ ptr += MINBPC(enc);
+ if (ptr != end && BYTE_TYPE(enc, ptr) == BT_LF)
+ ptr += MINBPC(enc);
+ pos->columnNumber = (XML_Size)-1;
+ break;
+ default:
+ ptr += MINBPC(enc);
+ break;
+ }
+ pos->columnNumber++;
+ }
+}
+
+#undef DO_LEAD_CASE
+#undef MULTIBYTE_CASES
+#undef INVALID_CASES
+#undef CHECK_NAME_CASE
+#undef CHECK_NAME_CASES
+#undef CHECK_NMSTRT_CASE
+#undef CHECK_NMSTRT_CASES
+

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/xmltok_impl.h
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/xmltok_impl.h 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,46 @@
+/*
+Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
+See the file COPYING for copying permission.
+*/
+
+enum {
+ BT_NONXML,
+ BT_MALFORM,
+ BT_LT,
+ BT_AMP,
+ BT_RSQB,
+ BT_LEAD2,
+ BT_LEAD3,
+ BT_LEAD4,
+ BT_TRAIL,
+ BT_CR,
+ BT_LF,
+ BT_GT,
+ BT_QUOT,
+ BT_APOS,
+ BT_EQUALS,
+ BT_QUEST,
+ BT_EXCL,
+ BT_SOL,
+ BT_SEMI,
+ BT_NUM,
+ BT_LSQB,
+ BT_S,
+ BT_NMSTRT,
+ BT_COLON,
+ BT_HEX,
+ BT_DIGIT,
+ BT_NAME,
+ BT_MINUS,
+ BT_OTHER, /* known not to be a name or name start character */
+ BT_NONASCII, /* might be a name or name start character */
+ BT_PERCNT,
+ BT_LPAR,
+ BT_RPAR,
+ BT_AST,
+ BT_PLUS,
+ BT_COMMA,
+ BT_VERBAR
+};
+
+#include <stddef.h>

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/xmltok_ns.c
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/lib/xmltok_ns.c 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,106 @@
+const ENCODING *
+NS(XmlGetUtf8InternalEncoding)(void)
+{
+ return &ns(internal_utf8_encoding).enc;
+}
+
+const ENCODING *
+NS(XmlGetUtf16InternalEncoding)(void)
+{
+#if BYTEORDER == 1234
+ return &ns(internal_little2_encoding).enc;
+#elif BYTEORDER == 4321
+ return &ns(internal_big2_encoding).enc;
+#else
+ const short n = 1;
+ return (*(const char *)&n
+ ? &ns(internal_little2_encoding).enc
+ : &ns(internal_big2_encoding).enc);
+#endif
+}
+
+static const ENCODING * const NS(encodings)[] = {
+ &ns(latin1_encoding).enc,
+ &ns(ascii_encoding).enc,
+ &ns(utf8_encoding).enc,
+ &ns(big2_encoding).enc,
+ &ns(big2_encoding).enc,
+ &ns(little2_encoding).enc,
+ &ns(utf8_encoding).enc /* NO_ENC */
+};
+
+static int PTRCALL
+NS(initScanProlog)(const ENCODING *enc, const char *ptr, const char *end,
+ const char **nextTokPtr)
+{
+ return initScan(NS(encodings), (const INIT_ENCODING *)enc,
+ XML_PROLOG_STATE, ptr, end, nextTokPtr);
+}
+
+static int PTRCALL
+NS(initScanContent)(const ENCODING *enc, const char *ptr, const char *end,
+ const char **nextTokPtr)
+{
+ return initScan(NS(encodings), (const INIT_ENCODING *)enc,
+ XML_CONTENT_STATE, ptr, end, nextTokPtr);
+}
+
+int
+NS(XmlInitEncoding)(INIT_ENCODING *p, const ENCODING **encPtr,
+ const char *name)
+{
+ int i = getEncodingIndex(name);
+ if (i == UNKNOWN_ENC)
+ return 0;
+ SET_INIT_ENC_INDEX(p, i);
+ p->initEnc.scanners[XML_PROLOG_STATE] = NS(initScanProlog);
+ p->initEnc.scanners[XML_CONTENT_STATE] = NS(initScanContent);
+ p->initEnc.updatePosition = initUpdatePosition;
+ p->encPtr = encPtr;
+ *encPtr = &(p->initEnc);
+ return 1;
+}
+
+static const ENCODING *
+NS(findEncoding)(const ENCODING *enc, const char *ptr, const char *end)
+{
+#define ENCODING_MAX 128
+ char buf[ENCODING_MAX];
+ char *p = buf;
+ int i;
+ XmlUtf8Convert(enc, &ptr, end, &p, p + ENCODING_MAX - 1);
+ if (ptr != end)
+ return 0;
+ *p = 0;
+ if (streqci(buf, KW_UTF_16) && enc->minBytesPerChar == 2)
+ return enc;
+ i = getEncodingIndex(buf);
+ if (i == UNKNOWN_ENC)
+ return 0;
+ return NS(encodings)[i];
+}
+
+int
+NS(XmlParseXmlDecl)(int isGeneralTextEntity,
+ const ENCODING *enc,
+ const char *ptr,
+ const char *end,
+ const char **badPtr,
+ const char **versionPtr,
+ const char **versionEndPtr,
+ const char **encodingName,
+ const ENCODING **encoding,
+ int *standalone)
+{
+ return doParseXmlDecl(NS(findEncoding),
+ isGeneralTextEntity,
+ enc,
+ ptr,
+ end,
+ badPtr,
+ versionPtr,
+ versionEndPtr,
+ encodingName,
+ encoding,
+ standalone);
+}

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/tests/README.txt
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/tests/README.txt 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,14 @@
+This directory contains the (fledgling) test suite for Expat. The
+tests provide general unit testing and regression coverage. The tests
+are not expected to be useful examples of Expat usage; see the
+examples/ directory for that.
+
+The Expat tests use a partial internal implementation of the "Check"
+unit testing framework for C. More information on Check can be found at:
+
+ http://check.sourceforge.net/
+
+Expat must be built and installed before "make check" can be executed.
+
+Since both Check and this test suite are young, it can all change in a
+later version.

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/tests/benchmark/README.txt
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/tests/benchmark/README.txt 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,16 @@
+Use this benchmark command line utility as follows:
+
+ benchmark [-n] <file name> <buffer size> <# iterations>
+
+The command line arguments are:
+
+ -n ... optional; if supplied, namespace processing is turned on
+ <file name> ... name/path of test xml file
+ <buffer size> ... size of processing buffer;
+ the file is parsed in chunks of this size
+ <# iterations> ... how often will the file be parsed
+
+Returns:
+
+ The time (in seconds) it takes to parse the test file,
+ averaged over the number of iterations.
\ No newline at end of file

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/tests/benchmark/benchmark.c
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/tests/benchmark/benchmark.c 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,114 @@
+#include <sys/stat.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <time.h>
+#include "expat.h"
+
+#ifdef XML_LARGE_SIZE
+#define XML_FMT_INT_MOD "ll"
+#else
+#define XML_FMT_INT_MOD "l"
+#endif
+
+static void
+usage(const char *prog, int rc)
+{
+ fprintf(stderr,
+ "usage: %s [-n] filename bufferSize nr_of_loops\n", prog);
+ exit(rc);
+}
+
+#ifdef AMIGA_SHARED_LIB
+#include <proto/expat.h>
+int
+amiga_main(int argc, char *argv[])
+#else
+int main (int argc, char *argv[])
+#endif
+{
+ XML_Parser parser;
+ char *XMLBuf, *XMLBufEnd, *XMLBufPtr;
+ FILE *fd;
+ struct stat fileAttr;
+ int nrOfLoops, bufferSize, fileSize, i, isFinal;
+ int j = 0, ns = 0;
+ clock_t tstart, tend;
+ double cpuTime = 0.0;
+
+ if (argc > 1) {
+ if (argv[1][0] == '-') {
+ if (argv[1][1] == 'n' && argv[1][2] == '\0') {
+ ns = 1;
+ j = 1;
+ }
+ else
+ usage(argv[0], 1);
+ }
+ }
+
+ if (argc != j + 4)
+ usage(argv[0], 1);
+
+ if (stat (argv[j + 1], &fileAttr) != 0) {
+ fprintf (stderr, "could not access file '%s'\n", argv[j + 1]);
+ return 2;
+ }
+
+ fd = fopen (argv[j + 1], "r");
+ if (!fd) {
+ fprintf (stderr, "could not open file '%s'\n", argv[j + 1]);
+ exit(2);
+ }
+
+ bufferSize = atoi (argv[j + 2]);
+ nrOfLoops = atoi (argv[j + 3]);
+ if (bufferSize <= 0 || nrOfLoops <= 0) {
+ fprintf (stderr,
+ "buffer size and nr of loops must be greater than zero.\n");
+ exit(3);
+ }
+
+ XMLBuf = malloc (fileAttr.st_size);
+ fileSize = fread (XMLBuf, sizeof (char), fileAttr.st_size, fd);
+ fclose (fd);
+
+ i = 0;
+ XMLBufEnd = XMLBuf + fileSize;
+ while (i < nrOfLoops) {
+ XMLBufPtr = XMLBuf;
+ isFinal = 0;
+ if (ns)
+ parser = XML_ParserCreateNS(NULL, '!');
+ else
+ parser = XML_ParserCreate(NULL);
+ tstart = clock();
+ do {
+ int parseBufferSize = XMLBufEnd - XMLBufPtr;
+ if (parseBufferSize <= bufferSize)
+ isFinal = 1;
+ else
+ parseBufferSize = bufferSize;
+ if (!XML_Parse (parser, XMLBufPtr, parseBufferSize, isFinal)) {
+ fprintf (stderr, "error '%s' at line %" XML_FMT_INT_MOD \
+ "u character %" XML_FMT_INT_MOD "u\n",
+ XML_ErrorString (XML_GetErrorCode (parser)),
+ XML_GetCurrentLineNumber (parser),
+ XML_GetCurrentColumnNumber (parser));
+ free (XMLBuf);
+ XML_ParserFree (parser);
+ exit (4);
+ }
+ XMLBufPtr += bufferSize;
+ } while (!isFinal);
+ tend = clock();
+ cpuTime += ((double) (tend - tstart)) / CLOCKS_PER_SEC;
+ XML_ParserFree (parser);
+ i++;
+ }
+
+ free (XMLBuf);
+
+ printf ("%d loops, with buffer size %d. Average time per loop: %f\n",
+ nrOfLoops, bufferSize, cpuTime / (double) nrOfLoops);
+ return 0;
+}

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/tests/benchmark/benchmark.dsp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/tests/benchmark/benchmark.dsp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,88 @@
+# Microsoft Developer Studio Project File - Name="benchmark" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=benchmark - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "benchmark.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "benchmark.mak" CFG="benchmark - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "benchmark - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "benchmark - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "benchmark - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /O2 /I "..\..\lib" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE RSC /l 0x1009 /d "NDEBUG"
+# ADD RSC /l 0x1009 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+
+!ELSEIF "$(CFG)" == "benchmark - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\lib" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD BASE RSC /l 0x1009 /d "_DEBUG"
+# ADD RSC /l 0x1009 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+
+!ENDIF
+
+# Begin Target
+
+# Name "benchmark - Win32 Release"
+# Name "benchmark - Win32 Debug"
+# Begin Source File
+
+SOURCE=.\benchmark.c
+# End Source File
+# End Target
+# End Project

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/tests/benchmark/benchmark.dsw
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/tests/benchmark/benchmark.dsw 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,44 @@
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "benchmark"=.\benchmark.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name expat
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "expat"=..\..\lib\expat.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/tests/chardata.c
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/tests/chardata.c 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,131 @@
+/* Copyright (c) 1998-2003 Thai Open Source Software Center Ltd
+ See the file COPYING for copying permission.
+
+ chardata.c
+*/
+
+#ifdef HAVE_EXPAT_CONFIG_H
+#include <expat_config.h>
+#endif
+#ifdef HAVE_CHECK_H
+#include <check.h>
+#else
+#include "minicheck.h"
+#endif
+
+#include <assert.h>
+#include <stdio.h>
+#include <string.h>
+
+#include "chardata.h"
+
+
+static int
+xmlstrlen(const XML_Char *s)
+{
+ int len = 0;
+ assert(s != NULL);
+ while (s[len] != 0)
+ ++len;
+ return len;
+}
+
+
+void
+CharData_Init(CharData *storage)
+{
+ assert(storage != NULL);
+ storage->count = -1;
+}
+
+void
+CharData_AppendString(CharData *storage, const char *s)
+{
+ int maxchars = sizeof(storage->data) / sizeof(storage->data[0]);
+ int len;
+
+ assert(s != NULL);
+ len = strlen(s);
+ if (storage->count < 0)
+ storage->count = 0;
+ if ((len + storage->count) > maxchars) {
+ len = (maxchars - storage->count);
+ }
+ if (len + storage->count < sizeof(storage->data)) {
+ memcpy(storage->data + storage->count, s, len);
+ storage->count += len;
+ }
+}
+
+void
+CharData_AppendXMLChars(CharData *storage, const XML_Char *s, int len)
+{
+ int maxchars;
+
+ assert(storage != NULL);
+ assert(s != NULL);
+ maxchars = sizeof(storage->data) / sizeof(storage->data[0]);
+ if (storage->count < 0)
+ storage->count = 0;
+ if (len < 0)
+ len = xmlstrlen(s);
+ if ((len + storage->count) > maxchars) {
+ len = (maxchars - storage->count);
+ }
+ if (len + storage->count < sizeof(storage->data)) {
+ memcpy(storage->data + storage->count, s,
+ len * sizeof(storage->data[0]));
+ storage->count += len;
+ }
+}
+
+int
+CharData_CheckString(CharData *storage, const char *expected)
+{
+ char buffer[1280];
+ int len;
+ int count;
+
+ assert(storage != NULL);
+ assert(expected != NULL);
+ count = (storage->count < 0) ? 0 : storage->count;
+ len = strlen(expected);
+ if (len != count) {
+ if (sizeof(XML_Char) == 1)
+ sprintf(buffer, "wrong number of data characters:"
+ " got %d, expected %d:\n%s", count, len, storage->data);
+ else
+ sprintf(buffer,
+ "wrong number of data characters: got %d, expected %d",
+ count, len);
+ fail(buffer);
+ return 0;
+ }
+ if (memcmp(expected, storage->data, len) != 0) {
+ fail("got bad data bytes");
+ return 0;
+ }
+ return 1;
+}
+
+int
+CharData_CheckXMLChars(CharData *storage, const XML_Char *expected)
+{
+ char buffer[1024];
+ int len = xmlstrlen(expected);
+ int count;
+
+ assert(storage != NULL);
+ count = (storage->count < 0) ? 0 : storage->count;
+ if (len != count) {
+ sprintf(buffer, "wrong number of data characters: got %d, expected %d",
+ count, len);
+ fail(buffer);
+ return 0;
+ }
+ if (memcmp(expected, storage->data, len * sizeof(storage->data[0])) != 0) {
+ fail("got bad data bytes");
+ return 0;
+ }
+ return 1;
+}

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/tests/chardata.h
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/tests/chardata.h 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,40 @@
+/* chardata.h
+
+ Interface to some helper routines used to accumulate and check text
+ and attribute content.
+*/
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef XML_CHARDATA_H
+#define XML_CHARDATA_H 1
+
+#ifndef XML_VERSION
+#include "expat.h" /* need XML_Char */
+#endif
+
+
+typedef struct {
+ int count; /* # of chars, < 0 if not set */
+ XML_Char data[1024];
+} CharData;
+
+
+void CharData_Init(CharData *storage);
+
+void CharData_AppendString(CharData *storage, const char *s);
+
+void CharData_AppendXMLChars(CharData *storage, const XML_Char *s, int len);
+
+int CharData_CheckString(CharData *storage, const char *s);
+
+int CharData_CheckXMLChars(CharData *storage, const XML_Char *s);
+
+
+#endif /* XML_CHARDATA_H */
+
+#ifdef __cplusplus
+}
+#endif

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/tests/minicheck.c
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/tests/minicheck.c 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,182 @@
+/* Miniature re-implementation of the "check" library.
+ *
+ * This is intended to support just enough of check to run the Expat
+ * tests. This interface is based entirely on the portion of the
+ * check library being used.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <setjmp.h>
+#include <assert.h>
+
+#include "minicheck.h"
+
+Suite *
+suite_create(char *name)
+{
+ Suite *suite = (Suite *) calloc(1, sizeof(Suite));
+ if (suite != NULL) {
+ suite->name = name;
+ }
+ return suite;
+}
+
+TCase *
+tcase_create(char *name)
+{
+ TCase *tc = (TCase *) calloc(1, sizeof(TCase));
+ if (tc != NULL) {
+ tc->name = name;
+ }
+ return tc;
+}
+
+void
+suite_add_tcase(Suite *suite, TCase *tc)
+{
+ assert(suite != NULL);
+ assert(tc != NULL);
+ assert(tc->next_tcase == NULL);
+
+ tc->next_tcase = suite->tests;
+ suite->tests = tc;
+}
+
+void
+tcase_add_checked_fixture(TCase *tc,
+ tcase_setup_function setup,
+ tcase_teardown_function teardown)
+{
+ assert(tc != NULL);
+ tc->setup = setup;
+ tc->teardown = teardown;
+}
+
+void
+tcase_add_test(TCase *tc, tcase_test_function test)
+{
+ assert(tc != NULL);
+ if (tc->allocated == tc->ntests) {
+ int nalloc = tc->allocated + 100;
+ size_t new_size = sizeof(tcase_test_function) * nalloc;
+ tcase_test_function *new_tests = realloc(tc->tests, new_size);
+ assert(new_tests != NULL);
+ if (new_tests != tc->tests) {
+ free(tc->tests);
+ tc->tests = new_tests;
+ }
+ tc->allocated = nalloc;
+ }
+ tc->tests[tc->ntests] = test;
+ tc->ntests++;
+}
+
+SRunner *
+srunner_create(Suite *suite)
+{
+ SRunner *runner = calloc(1, sizeof(SRunner));
+ if (runner != NULL) {
+ runner->suite = suite;
+ }
+ return runner;
+}
+
+void
+srunner_set_fork_status(SRunner *runner, int status)
+{
+ /* We ignore this. */
+}
+
+static jmp_buf env;
+
+static char const *_check_current_function = NULL;
+static int _check_current_lineno = -1;
+static char const *_check_current_filename = NULL;
+
+void
+_check_set_test_info(char const *function, char const *filename, int lineno)
+{
+ _check_current_function = function;
+ _check_current_lineno = lineno;
+ _check_current_filename = filename;
+}
+
+
+static void
+add_failure(SRunner *runner, int verbosity)
+{
+ runner->nfailures++;
+ if (verbosity >= CK_VERBOSE) {
+ printf("%s:%d: %s\n", _check_current_filename,
+ _check_current_lineno, _check_current_function);
+ }
+}
+
+void
+srunner_run_all(SRunner *runner, int verbosity)
+{
+ Suite *suite;
+ TCase *tc;
+ assert(runner != NULL);
+ suite = runner->suite;
+ tc = suite->tests;
+ while (tc != NULL) {
+ int i;
+ for (i = 0; i < tc->ntests; ++i) {
+ runner->nchecks++;
+
+ if (tc->setup != NULL) {
+ /* setup */
+ if (setjmp(env)) {
+ add_failure(runner, verbosity);
+ continue;
+ }
+ tc->setup();
+ }
+ /* test */
+ if (setjmp(env)) {
+ add_failure(runner, verbosity);
+ continue;
+ }
+ (tc->tests[i])();
+
+ /* teardown */
+ if (tc->teardown != NULL) {
+ if (setjmp(env)) {
+ add_failure(runner, verbosity);
+ continue;
+ }
+ tc->teardown();
+ }
+ }
+ tc = tc->next_tcase;
+ }
+ if (verbosity) {
+ int passed = runner->nchecks - runner->nfailures;
+ double percentage = ((double) passed) / runner->nchecks;
+ int display = (int) (percentage * 100);
+ printf("%d%%: Checks: %d, Failed: %d\n",
+ display, runner->nchecks, runner->nfailures);
+ }
+}
+
+void
+_fail_unless(int condition, const char *file, int line, char *msg)
+{
+ longjmp(env, 1);
+}
+
+int
+srunner_ntests_failed(SRunner *runner)
+{
+ assert(runner != NULL);
+ return runner->nfailures;
+}
+
+void
+srunner_free(SRunner *runner)
+{
+ free(runner->suite);
+ free(runner);
+}

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/tests/minicheck.h
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/tests/minicheck.h 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,84 @@
+/* Miniature re-implementation of the "check" library.
+ *
+ * This is intended to support just enough of check to run the Expat
+ * tests. This interface is based entirely on the portion of the
+ * check library being used.
+ *
+ * This is *source* compatible, but not necessary *link* compatible.
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define CK_NOFORK 0
+#define CK_FORK 1
+
+#define CK_SILENT 0
+#define CK_NORMAL 1
+#define CK_VERBOSE 2
+
+#define START_TEST(testname) static void testname(void) { \
+ _check_set_test_info(__func__, __FILE__, __LINE__); \
+ {
+#define END_TEST } }
+
+#define fail(msg) _fail_unless(0, __FILE__, __LINE__, msg)
+
+typedef void (*tcase_setup_function)(void);
+typedef void (*tcase_teardown_function)(void);
+typedef void (*tcase_test_function)(void);
+
+typedef struct SRunner SRunner;
+typedef struct Suite Suite;
+typedef struct TCase TCase;
+
+struct SRunner {
+ Suite *suite;
+ int forking;
+ int nchecks;
+ int nfailures;
+};
+
+struct Suite {
+ char *name;
+ TCase *tests;
+};
+
+struct TCase {
+ char *name;
+ tcase_setup_function setup;
+ tcase_teardown_function teardown;
+ tcase_test_function *tests;
+ int ntests;
+ int allocated;
+ TCase *next_tcase;
+};
+
+
+/* Internal helper. */
+void _check_set_test_info(char const *function,
+ char const *filename, int lineno);
+
+
+/*
+ * Prototypes for the actual implementation.
+ */
+
+void _fail_unless(int condition, const char *file, int line, char *msg);
+Suite *suite_create(char *name);
+TCase *tcase_create(char *name);
+void suite_add_tcase(Suite *suite, TCase *tc);
+void tcase_add_checked_fixture(TCase *,
+ tcase_setup_function,
+ tcase_teardown_function);
+void tcase_add_test(TCase *tc, tcase_test_function test);
+SRunner *srunner_create(Suite *suite);
+void srunner_set_fork_status(SRunner *runner, int forking);
+void srunner_run_all(SRunner *runner, int verbosity);
+int srunner_ntests_failed(SRunner *runner);
+void srunner_free(SRunner *runner);
+
+#ifdef __cplusplus
+}
+#endif

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/tests/runtests.c
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/tests/runtests.c 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,1450 @@
+/* Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd
+ See the file COPYING for copying permission.
+
+ runtest.c : run the Expat test suite
+*/
+
+#ifdef HAVE_EXPAT_CONFIG_H
+#include <expat_config.h>
+#endif
+
+#include <assert.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+#include "expat.h"
+#include "chardata.h"
+#include "minicheck.h"
+
+#ifdef AMIGA_SHARED_LIB
+#include <proto/expat.h>
+#endif
+
+#ifdef XML_LARGE_SIZE
+#define XML_FMT_INT_MOD "ll"
+#else
+#define XML_FMT_INT_MOD "l"
+#endif
+
+static XML_Parser parser;
+
+
+static void
+basic_setup(void)
+{
+ parser = XML_ParserCreate(NULL);
+ if (parser == NULL)
+ fail("Parser not created.");
+}
+
+static void
+basic_teardown(void)
+{
+ if (parser != NULL)
+ XML_ParserFree(parser);
+}
+
+/* Generate a failure using the parser state to create an error message;
+ this should be used when the parser reports an error we weren't
+ expecting.
+*/
+static void
+_xml_failure(XML_Parser parser, const char *file, int line)
+{
+ char buffer[1024];
+ sprintf(buffer,
+ "\n %s (line %" XML_FMT_INT_MOD "u, offset %"\
+ XML_FMT_INT_MOD "u)\n reported from %s, line %d",
+ XML_ErrorString(XML_GetErrorCode(parser)),
+ XML_GetCurrentLineNumber(parser),
+ XML_GetCurrentColumnNumber(parser),
+ file, line);
+ _fail_unless(0, file, line, buffer);
+}
+
+#define xml_failure(parser) _xml_failure((parser), __FILE__, __LINE__)
+
+static void
+_expect_failure(char *text, enum XML_Error errorCode, char *errorMessage,
+ char *file, int lineno)
+{
+ if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_OK)
+ /* Hackish use of _fail_unless() macro, but let's us report
+ the right filename and line number. */
+ _fail_unless(0, file, lineno, errorMessage);
+ if (XML_GetErrorCode(parser) != errorCode)
+ _xml_failure(parser, file, lineno);
+}
+
+#define expect_failure(text, errorCode, errorMessage) \
+ _expect_failure((text), (errorCode), (errorMessage), \
+ __FILE__, __LINE__)
+
+/* Dummy handlers for when we need to set a handler to tickle a bug,
+ but it doesn't need to do anything.
+*/
+
+static void XMLCALL
+dummy_start_doctype_handler(void *userData,
+ const XML_Char *doctypeName,
+ const XML_Char *sysid,
+ const XML_Char *pubid,
+ int has_internal_subset)
+{}
+
+static void XMLCALL
+dummy_end_doctype_handler(void *userData)
+{}
+
+static void XMLCALL
+dummy_entity_decl_handler(void *userData,
+ const XML_Char *entityName,
+ int is_parameter_entity,
+ const XML_Char *value,
+ int value_length,
+ const XML_Char *base,
+ const XML_Char *systemId,
+ const XML_Char *publicId,
+ const XML_Char *notationName)
+{}
+
+static void XMLCALL
+dummy_notation_decl_handler(void *userData,
+ const XML_Char *notationName,
+ const XML_Char *base,
+ const XML_Char *systemId,
+ const XML_Char *publicId)
+{}
+
+static void XMLCALL
+dummy_element_decl_handler(void *userData,
+ const XML_Char *name,
+ XML_Content *model)
+{}
+
+static void XMLCALL
+dummy_attlist_decl_handler(void *userData,
+ const XML_Char *elname,
+ const XML_Char *attname,
+ const XML_Char *att_type,
+ const XML_Char *dflt,
+ int isrequired)
+{}
+
+static void XMLCALL
+dummy_comment_handler(void *userData, const XML_Char *data)
+{}
+
+static void XMLCALL
+dummy_pi_handler(void *userData, const XML_Char *target, const XML_Char *data)
+{}
+
+static void XMLCALL
+dummy_start_element(void *userData,
+ const XML_Char *name, const XML_Char **atts)
+{}
+
+
+/*
+ * Character & encoding tests.
+ */
+
+START_TEST(test_nul_byte)
+{
+ char text[] = "<doc>\0</doc>";
+
+ /* test that a NUL byte (in US-ASCII data) is an error */
+ if (XML_Parse(parser, text, sizeof(text) - 1, XML_TRUE) == XML_STATUS_OK)
+ fail("Parser did not report error on NUL-byte.");
+ if (XML_GetErrorCode(parser) != XML_ERROR_INVALID_TOKEN)
+ xml_failure(parser);
+}
+END_TEST
+
+
+START_TEST(test_u0000_char)
+{
+ /* test that a NUL byte (in US-ASCII data) is an error */
+ expect_failure("<doc>&#0;</doc>",
+ XML_ERROR_BAD_CHAR_REF,
+ "Parser did not report error on NUL-byte.");
+}
+END_TEST
+
+START_TEST(test_bom_utf8)
+{
+ /* This test is really just making sure we don't core on a UTF-8 BOM. */
+ char *text = "\357\273\277<e/>";
+
+ if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR)
+ xml_failure(parser);
+}
+END_TEST
+
+START_TEST(test_bom_utf16_be)
+{
+ char text[] = "\376\377\0<\0e\0/\0>";
+
+ if (XML_Parse(parser, text, sizeof(text)-1, XML_TRUE) == XML_STATUS_ERROR)
+ xml_failure(parser);
+}
+END_TEST
+
+START_TEST(test_bom_utf16_le)
+{
+ char text[] = "\377\376<\0e\0/\0>\0";
+
+ if (XML_Parse(parser, text, sizeof(text)-1, XML_TRUE) == XML_STATUS_ERROR)
+ xml_failure(parser);
+}
+END_TEST
+
+static void XMLCALL
+accumulate_characters(void *userData, const XML_Char *s, int len)
+{
+ CharData_AppendXMLChars((CharData *)userData, s, len);
+}
+
+static void XMLCALL
+accumulate_attribute(void *userData, const XML_Char *name,
+ const XML_Char **atts)
+{
+ CharData *storage = (CharData *)userData;
+ if (storage->count < 0 && atts != NULL && atts[0] != NULL) {
+ /* "accumulate" the value of the first attribute we see */
+ CharData_AppendXMLChars(storage, atts[1], -1);
+ }
+}
+
+
+static void
+_run_character_check(XML_Char *text, XML_Char *expected,
+ const char *file, int line)
+{
+ CharData storage;
+
+ CharData_Init(&storage);
+ XML_SetUserData(parser, &storage);
+ XML_SetCharacterDataHandler(parser, accumulate_characters);
+ if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR)
+ _xml_failure(parser, file, line);
+ CharData_CheckXMLChars(&storage, expected);
+}
+
+#define run_character_check(text, expected) \
+ _run_character_check(text, expected, __FILE__, __LINE__)
+
+static void
+_run_attribute_check(XML_Char *text, XML_Char *expected,
+ const char *file, int line)
+{
+ CharData storage;
+
+ CharData_Init(&storage);
+ XML_SetUserData(parser, &storage);
+ XML_SetStartElementHandler(parser, accumulate_attribute);
+ if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR)
+ _xml_failure(parser, file, line);
+ CharData_CheckXMLChars(&storage, expected);
+}
+
+#define run_attribute_check(text, expected) \
+ _run_attribute_check(text, expected, __FILE__, __LINE__)
+
+/* Regression test for SF bug #491986. */
+START_TEST(test_danish_latin1)
+{
+ char *text =
+ "<?xml version='1.0' encoding='iso-8859-1'?>\n"
+ "<e>J\xF8rgen \xE6\xF8\xE5\xC6\xD8\xC5</e>";
+ run_character_check(text,
+ "J\xC3\xB8rgen \xC3\xA6\xC3\xB8\xC3\xA5\xC3\x86\xC3\x98\xC3\x85");
+}
+END_TEST
+
+
+/* Regression test for SF bug #514281. */
+START_TEST(test_french_charref_hexidecimal)
+{
+ char *text =
+ "<?xml version='1.0' encoding='iso-8859-1'?>\n"
+ "<doc>&#xE9;&#xE8;&#xE0;&#xE7;&#xEA;&#xC8;</doc>";
+ run_character_check(text,
+ "\xC3\xA9\xC3\xA8\xC3\xA0\xC3\xA7\xC3\xAA\xC3\x88");
+}
+END_TEST
+
+START_TEST(test_french_charref_decimal)
+{
+ char *text =
+ "<?xml version='1.0' encoding='iso-8859-1'?>\n"
+ "<doc>&#233;&#232;&#224;&#231;&#234;&#200;</doc>";
+ run_character_check(text,
+ "\xC3\xA9\xC3\xA8\xC3\xA0\xC3\xA7\xC3\xAA\xC3\x88");
+}
+END_TEST
+
+START_TEST(test_french_latin1)
+{
+ char *text =
+ "<?xml version='1.0' encoding='iso-8859-1'?>\n"
+ "<doc>\xE9\xE8\xE0\xE7\xEa\xC8</doc>";
+ run_character_check(text,
+ "\xC3\xA9\xC3\xA8\xC3\xA0\xC3\xA7\xC3\xAA\xC3\x88");
+}
+END_TEST
+
+START_TEST(test_french_utf8)
+{
+ char *text =
+ "<?xml version='1.0' encoding='utf-8'?>\n"
+ "<doc>\xC3\xA9</doc>";
+ run_character_check(text, "\xC3\xA9");
+}
+END_TEST
+
+/* Regression test for SF bug #600479.
+ XXX There should be a test that exercises all legal XML Unicode
+ characters as PCDATA and attribute value content, and XML Name
+ characters as part of element and attribute names.
+*/
+START_TEST(test_utf8_false_rejection)
+{
+ char *text = "<doc>\xEF\xBA\xBF</doc>";
+ run_character_check(text, "\xEF\xBA\xBF");
+}
+END_TEST
+
+/* Regression test for SF bug #477667.
+ This test assures that any 8-bit character followed by a 7-bit
+ character will not be mistakenly interpreted as a valid UTF-8
+ sequence.
+*/
+START_TEST(test_illegal_utf8)
+{
+ char text[100];
+ int i;
+
+ for (i = 128; i <= 255; ++i) {
+ sprintf(text, "<e>%ccd</e>", i);
+ if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_OK) {
+ sprintf(text,
+ "expected token error for '%c' (ordinal %d) in UTF-8 text",
+ i, i);
+ fail(text);
+ }
+ else if (XML_GetErrorCode(parser) != XML_ERROR_INVALID_TOKEN)
+ xml_failure(parser);
+ /* Reset the parser since we use the same parser repeatedly. */
+ XML_ParserReset(parser, NULL);
+ }
+}
+END_TEST
+
+START_TEST(test_utf16)
+{
+ /* <?xml version="1.0" encoding="UTF-16"?>
+ <doc a='123'>some text</doc>
+ */
+ char text[] =
+ "\000<\000?\000x\000m\000\154\000 \000v\000e\000r\000s\000i\000o"
+ "\000n\000=\000'\0001\000.\000\060\000'\000 \000e\000n\000c\000o"
+ "\000d\000i\000n\000g\000=\000'\000U\000T\000F\000-\0001\000\066"
+ "\000'\000?\000>\000\n"
+ "\000<\000d\000o\000c\000 \000a\000=\000'\0001\0002\0003\000'"
+ "\000>\000s\000o\000m\000e\000 \000t\000e\000x\000t\000<\000/"
+ "\000d\000o\000c\000>";
+ if (XML_Parse(parser, text, sizeof(text)-1, XML_TRUE) == XML_STATUS_ERROR)
+ xml_failure(parser);
+}
+END_TEST
+
+START_TEST(test_utf16_le_epilog_newline)
+{
+ int first_chunk_bytes = 17;
+ char text[] =
+ "\xFF\xFE" /* BOM */
+ "<\000e\000/\000>\000" /* document element */
+ "\r\000\n\000\r\000\n\000"; /* epilog */
+
+ if (first_chunk_bytes >= sizeof(text) - 1)
+ fail("bad value of first_chunk_bytes");
+ if ( XML_Parse(parser, text, first_chunk_bytes, XML_FALSE)
+ == XML_STATUS_ERROR)
+ xml_failure(parser);
+ else {
+ enum XML_Status rc;
+ rc = XML_Parse(parser, text + first_chunk_bytes,
+ sizeof(text) - first_chunk_bytes - 1, XML_TRUE);
+ if (rc == XML_STATUS_ERROR)
+ xml_failure(parser);
+ }
+}
+END_TEST
+
+/* Regression test for SF bug #481609, #774028. */
+START_TEST(test_latin1_umlauts)
+{
+ char *text =
+ "<?xml version='1.0' encoding='iso-8859-1'?>\n"
+ "<e a='\xE4 \xF6 \xFC &#228; &#246; &#252; &#x00E4; &#x0F6; &#xFC; >'\n"
+ " >\xE4 \xF6 \xFC &#228; &#246; &#252; &#x00E4; &#x0F6; &#xFC; ></e>";
+ char *utf8 =
+ "\xC3\xA4 \xC3\xB6 \xC3\xBC "
+ "\xC3\xA4 \xC3\xB6 \xC3\xBC "
+ "\xC3\xA4 \xC3\xB6 \xC3\xBC >";
+ run_character_check(text, utf8);
+ XML_ParserReset(parser, NULL);
+ run_attribute_check(text, utf8);
+}
+END_TEST
+
+/* Regression test #1 for SF bug #653180. */
+START_TEST(test_line_number_after_parse)
+{
+ char *text =
+ "<tag>\n"
+ "\n"
+ "\n</tag>";
+ XML_Size lineno;
+
+ if (XML_Parse(parser, text, strlen(text), XML_FALSE) == XML_STATUS_ERROR)
+ xml_failure(parser);
+ lineno = XML_GetCurrentLineNumber(parser);
+ if (lineno != 4) {
+ char buffer[100];
+ sprintf(buffer,
+ "expected 4 lines, saw %" XML_FMT_INT_MOD "u", lineno);
+ fail(buffer);
+ }
+}
+END_TEST
+
+/* Regression test #2 for SF bug #653180. */
+START_TEST(test_column_number_after_parse)
+{
+ char *text = "<tag></tag>";
+ XML_Size colno;
+
+ if (XML_Parse(parser, text, strlen(text), XML_FALSE) == XML_STATUS_ERROR)
+ xml_failure(parser);
+ colno = XML_GetCurrentColumnNumber(parser);
+ if (colno != 11) {
+ char buffer[100];
+ sprintf(buffer,
+ "expected 11 columns, saw %" XML_FMT_INT_MOD "u", colno);
+ fail(buffer);
+ }
+}
+END_TEST
+
+static void XMLCALL
+start_element_event_handler2(void *userData, const XML_Char *name,
+ const XML_Char **attr)
+{
+ CharData *storage = (CharData *) userData;
+ char buffer[100];
+
+ sprintf(buffer,
+ "<%s> at col:%" XML_FMT_INT_MOD "u line:%"\
+ XML_FMT_INT_MOD "u\n", name,
+ XML_GetCurrentColumnNumber(parser),
+ XML_GetCurrentLineNumber(parser));
+ CharData_AppendString(storage, buffer);
+}
+
+static void XMLCALL
+end_element_event_handler2(void *userData, const XML_Char *name)
+{
+ CharData *storage = (CharData *) userData;
+ char buffer[100];
+
+ sprintf(buffer,
+ "</%s> at col:%" XML_FMT_INT_MOD "u line:%"\
+ XML_FMT_INT_MOD "u\n", name,
+ XML_GetCurrentColumnNumber(parser),
+ XML_GetCurrentLineNumber(parser));
+ CharData_AppendString(storage, buffer);
+}
+
+/* Regression test #3 for SF bug #653180. */
+START_TEST(test_line_and_column_numbers_inside_handlers)
+{
+ char *text =
+ "<a>\n" /* Unix end-of-line */
+ " <b>\r\n" /* Windows end-of-line */
+ " <c/>\r" /* Mac OS end-of-line */
+ " </b>\n"
+ " <d>\n"
+ " <f/>\n"
+ " </d>\n"
+ "</a>";
+ char *expected =
+ "<a> at col:0 line:1\n"
+ "<b> at col:2 line:2\n"
+ "<c> at col:4 line:3\n"
+ "</c> at col:8 line:3\n"
+ "</b> at col:2 line:4\n"
+ "<d> at col:2 line:5\n"
+ "<f> at col:4 line:6\n"
+ "</f> at col:8 line:6\n"
+ "</d> at col:2 line:7\n"
+ "</a> at col:0 line:8\n";
+ CharData storage;
+
+ CharData_Init(&storage);
+ XML_SetUserData(parser, &storage);
+ XML_SetStartElementHandler(parser, start_element_event_handler2);
+ XML_SetEndElementHandler(parser, end_element_event_handler2);
+ if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR)
+ xml_failure(parser);
+
+ CharData_CheckString(&storage, expected);
+}
+END_TEST
+
+/* Regression test #4 for SF bug #653180. */
+START_TEST(test_line_number_after_error)
+{
+ char *text =
+ "<a>\n"
+ " <b>\n"
+ " </a>"; /* missing </b> */
+ XML_Size lineno;
+ if (XML_Parse(parser, text, strlen(text), XML_FALSE) != XML_STATUS_ERROR)
+ fail("Expected a parse error");
+
+ lineno = XML_GetCurrentLineNumber(parser);
+ if (lineno != 3) {
+ char buffer[100];
+ sprintf(buffer, "expected 3 lines, saw %" XML_FMT_INT_MOD "u", lineno);
+ fail(buffer);
+ }
+}
+END_TEST
+
+/* Regression test #5 for SF bug #653180. */
+START_TEST(test_column_number_after_error)
+{
+ char *text =
+ "<a>\n"
+ " <b>\n"
+ " </a>"; /* missing </b> */
+ XML_Size colno;
+ if (XML_Parse(parser, text, strlen(text), XML_FALSE) != XML_STATUS_ERROR)
+ fail("Expected a parse error");
+
+ colno = XML_GetCurrentColumnNumber(parser);
+ if (colno != 4) {
+ char buffer[100];
+ sprintf(buffer,
+ "expected 4 columns, saw %" XML_FMT_INT_MOD "u", colno);
+ fail(buffer);
+ }
+}
+END_TEST
+
+/* Regression test for SF bug #478332. */
+START_TEST(test_really_long_lines)
+{
+ /* This parses an input line longer than INIT_DATA_BUF_SIZE
+ characters long (defined to be 1024 in xmlparse.c). We take a
+ really cheesy approach to building the input buffer, because
+ this avoids writing bugs in buffer-filling code.
+ */
+ char *text =
+ "<e>"
+ /* 64 chars */
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+"
+ /* until we have at least 1024 characters on the line: */
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+"
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+"
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+"
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+"
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+"
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+"
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+"
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+"
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+"
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+"
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+"
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+"
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+"
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+"
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+"
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+"
+ "</e>";
+ if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR)
+ xml_failure(parser);
+}
+END_TEST
+
+
+/*
+ * Element event tests.
+ */
+
+static void XMLCALL
+end_element_event_handler(void *userData, const XML_Char *name)
+{
+ CharData *storage = (CharData *) userData;
+ CharData_AppendString(storage, "/");
+ CharData_AppendXMLChars(storage, name, -1);
+}
+
+START_TEST(test_end_element_events)
+{
+ char *text = "<a><b><c/></b><d><f/></d></a>";
+ char *expected = "/c/b/f/d/a";
+ CharData storage;
+
+ CharData_Init(&storage);
+ XML_SetUserData(parser, &storage);
+ XML_SetEndElementHandler(parser, end_element_event_handler);
+ if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR)
+ xml_failure(parser);
+ CharData_CheckString(&storage, expected);
+}
+END_TEST
+
+
+/*
+ * Attribute tests.
+ */
+
+/* Helpers used by the following test; this checks any "attr" and "refs"
+ attributes to make sure whitespace has been normalized.
+
+ Return true if whitespace has been normalized in a string, using
+ the rules for attribute value normalization. The 'is_cdata' flag
+ is needed since CDATA attributes don't need to have multiple
+ whitespace characters collapsed to a single space, while other
+ attribute data types do. (Section 3.3.3 of the recommendation.)
+*/
+static int
+is_whitespace_normalized(const XML_Char *s, int is_cdata)
+{
+ int blanks = 0;
+ int at_start = 1;
+ while (*s) {
+ if (*s == ' ')
+ ++blanks;
+ else if (*s == '\t' || *s == '\n' || *s == '\r')
+ return 0;
+ else {
+ if (at_start) {
+ at_start = 0;
+ if (blanks && !is_cdata)
+ /* illegal leading blanks */
+ return 0;
+ }
+ else if (blanks > 1 && !is_cdata)
+ return 0;
+ blanks = 0;
+ }
+ ++s;
+ }
+ if (blanks && !is_cdata)
+ return 0;
+ return 1;
+}
+
+/* Check the attribute whitespace checker: */
+static void
+testhelper_is_whitespace_normalized(void)
+{
+ assert(is_whitespace_normalized("abc", 0));
+ assert(is_whitespace_normalized("abc", 1));
+ assert(is_whitespace_normalized("abc def ghi", 0));
+ assert(is_whitespace_normalized("abc def ghi", 1));
+ assert(!is_whitespace_normalized(" abc def ghi", 0));
+ assert(is_whitespace_normalized(" abc def ghi", 1));
+ assert(!is_whitespace_normalized("abc def ghi", 0));
+ assert(is_whitespace_normalized("abc def ghi", 1));
+ assert(!is_whitespace_normalized("abc def ghi ", 0));
+ assert(is_whitespace_normalized("abc def ghi ", 1));
+ assert(!is_whitespace_normalized(" ", 0));
+ assert(is_whitespace_normalized(" ", 1));
+ assert(!is_whitespace_normalized("\t", 0));
+ assert(!is_whitespace_normalized("\t", 1));
+ assert(!is_whitespace_normalized("\n", 0));
+ assert(!is_whitespace_normalized("\n", 1));
+ assert(!is_whitespace_normalized("\r", 0));
+ assert(!is_whitespace_normalized("\r", 1));
+ assert(!is_whitespace_normalized("abc\t def", 1));
+}
+
+static void XMLCALL
+check_attr_contains_normalized_whitespace(void *userData,
+ const XML_Char *name,
+ const XML_Char **atts)
+{
+ int i;
+ for (i = 0; atts[i] != NULL; i += 2) {
+ const XML_Char *attrname = atts[i];
+ const XML_Char *value = atts[i + 1];
+ if (strcmp("attr", attrname) == 0
+ || strcmp("ents", attrname) == 0
+ || strcmp("refs", attrname) == 0) {
+ if (!is_whitespace_normalized(value, 0)) {
+ char buffer[256];
+ sprintf(buffer, "attribute value not normalized: %s='%s'",
+ attrname, value);
+ fail(buffer);
+ }
+ }
+ }
+}
+
+START_TEST(test_attr_whitespace_normalization)
+{
+ char *text =
+ "<!DOCTYPE doc [\n"
+ " <!ATTLIST doc\n"
+ " attr NMTOKENS #REQUIRED\n"
+ " ents ENTITIES #REQUIRED\n"
+ " refs IDREFS #REQUIRED>\n"
+ "]>\n"
+ "<doc attr=' a b c\t\td\te\t' refs=' id-1 \t id-2\t\t' \n"
+ " ents=' ent-1 \t\r\n"
+ " ent-2 ' >\n"
+ " <e id='id-1'/>\n"
+ " <e id='id-2'/>\n"
+ "</doc>";
+
+ XML_SetStartElementHandler(parser,
+ check_attr_contains_normalized_whitespace);
+ if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR)
+ xml_failure(parser);
+}
+END_TEST
+
+
+/*
+ * XML declaration tests.
+ */
+
+START_TEST(test_xmldecl_misplaced)
+{
+ expect_failure("\n"
+ "<?xml version='1.0'?>\n"
+ "<a/>",
+ XML_ERROR_MISPLACED_XML_PI,
+ "failed to report misplaced XML declaration");
+}
+END_TEST
+
+/* Regression test for SF bug #584832. */
+static int XMLCALL
+UnknownEncodingHandler(void *data,const XML_Char *encoding,XML_Encoding *info)
+{
+ if (strcmp(encoding,"unsupported-encoding") == 0) {
+ int i;
+ for (i = 0; i < 256; ++i)
+ info->map[i] = i;
+ info->data = NULL;
+ info->convert = NULL;
+ info->release = NULL;
+ return XML_STATUS_OK;
+ }
+ return XML_STATUS_ERROR;
+}
+
+START_TEST(test_unknown_encoding_internal_entity)
+{
+ char *text =
+ "<?xml version='1.0' encoding='unsupported-encoding'?>\n"
+ "<!DOCTYPE test [<!ENTITY foo 'bar'>]>\n"
+ "<test a='&foo;'/>";
+
+ XML_SetUnknownEncodingHandler(parser, UnknownEncodingHandler, NULL);
+ if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR)
+ xml_failure(parser);
+}
+END_TEST
+
+/* Regression test for SF bug #620106. */
+static int XMLCALL
+external_entity_loader_set_encoding(XML_Parser parser,
+ const XML_Char *context,
+ const XML_Char *base,
+ const XML_Char *systemId,
+ const XML_Char *publicId)
+{
+ /* This text says it's an unsupported encoding, but it's really
+ UTF-8, which we tell Expat using XML_SetEncoding().
+ */
+ char *text =
+ "<?xml encoding='iso-8859-3'?>"
+ "\xC3\xA9";
+ XML_Parser extparser;
+
+ extparser = XML_ExternalEntityParserCreate(parser, context, NULL);
+ if (extparser == NULL)
+ fail("Could not create external entity parser.");
+ if (!XML_SetEncoding(extparser, "utf-8"))
+ fail("XML_SetEncoding() ignored for external entity");
+ if ( XML_Parse(extparser, text, strlen(text), XML_TRUE)
+ == XML_STATUS_ERROR) {
+ xml_failure(parser);
+ return 0;
+ }
+ return 1;
+}
+
+START_TEST(test_ext_entity_set_encoding)
+{
+ char *text =
+ "<!DOCTYPE doc [\n"
+ " <!ENTITY en SYSTEM 'http://xml.libexpat.org/dummy.ent'>\n"
+ "]>\n"
+ "<doc>&en;</doc>";
+
+ XML_SetExternalEntityRefHandler(parser,
+ external_entity_loader_set_encoding);
+ run_character_check(text, "\xC3\xA9");
+}
+END_TEST
+
+/* Test that no error is reported for unknown entities if we don't
+ read an external subset. This was fixed in Expat 1.95.5.
+*/
+START_TEST(test_wfc_undeclared_entity_unread_external_subset) {
+ char *text =
+ "<!DOCTYPE doc SYSTEM 'foo'>\n"
+ "<doc>&entity;</doc>";
+
+ if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR)
+ xml_failure(parser);
+}
+END_TEST
+
+/* Test that an error is reported for unknown entities if we don't
+ have an external subset.
+*/
+START_TEST(test_wfc_undeclared_entity_no_external_subset) {
+ expect_failure("<doc>&entity;</doc>",
+ XML_ERROR_UNDEFINED_ENTITY,
+ "Parser did not report undefined entity w/out a DTD.");
+}
+END_TEST
+
+/* Test that an error is reported for unknown entities if we don't
+ read an external subset, but have been declared standalone.
+*/
+START_TEST(test_wfc_undeclared_entity_standalone) {
+ char *text =
+ "<?xml version='1.0' encoding='us-ascii' standalone='yes'?>\n"
+ "<!DOCTYPE doc SYSTEM 'foo'>\n"
+ "<doc>&entity;</doc>";
+
+ expect_failure(text,
+ XML_ERROR_UNDEFINED_ENTITY,
+ "Parser did not report undefined entity (standalone).");
+}
+END_TEST
+
+static int XMLCALL
+external_entity_loader(XML_Parser parser,
+ const XML_Char *context,
+ const XML_Char *base,
+ const XML_Char *systemId,
+ const XML_Char *publicId)
+{
+ char *text = (char *)XML_GetUserData(parser);
+ XML_Parser extparser;
+
+ extparser = XML_ExternalEntityParserCreate(parser, context, NULL);
+ if (extparser == NULL)
+ fail("Could not create external entity parser.");
+ if ( XML_Parse(extparser, text, strlen(text), XML_TRUE)
+ == XML_STATUS_ERROR) {
+ xml_failure(parser);
+ return XML_STATUS_ERROR;
+ }
+ return XML_STATUS_OK;
+}
+
+/* Test that an error is reported for unknown entities if we have read
+ an external subset, and standalone is true.
+*/
+START_TEST(test_wfc_undeclared_entity_with_external_subset_standalone) {
+ char *text =
+ "<?xml version='1.0' encoding='us-ascii' standalone='yes'?>\n"
+ "<!DOCTYPE doc SYSTEM 'foo'>\n"
+ "<doc>&entity;</doc>";
+ char *foo_text =
+ "<!ELEMENT doc (#PCDATA)*>";
+
+ XML_SetParamEntityParsing(parser, XML_PARAM_ENTITY_PARSING_ALWAYS);
+ XML_SetUserData(parser, foo_text);
+ XML_SetExternalEntityRefHandler(parser, external_entity_loader);
+ expect_failure(text,
+ XML_ERROR_UNDEFINED_ENTITY,
+ "Parser did not report undefined entity (external DTD).");
+}
+END_TEST
+
+/* Test that no error is reported for unknown entities if we have read
+ an external subset, and standalone is false.
+*/
+START_TEST(test_wfc_undeclared_entity_with_external_subset) {
+ char *text =
+ "<?xml version='1.0' encoding='us-ascii'?>\n"
+ "<!DOCTYPE doc SYSTEM 'foo'>\n"
+ "<doc>&entity;</doc>";
+ char *foo_text =
+ "<!ELEMENT doc (#PCDATA)*>";
+
+ XML_SetParamEntityParsing(parser, XML_PARAM_ENTITY_PARSING_ALWAYS);
+ XML_SetUserData(parser, foo_text);
+ XML_SetExternalEntityRefHandler(parser, external_entity_loader);
+ if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR)
+ xml_failure(parser);
+}
+END_TEST
+
+START_TEST(test_wfc_no_recursive_entity_refs)
+{
+ char *text =
+ "<!DOCTYPE doc [\n"
+ " <!ENTITY entity '&#38;entity;'>\n"
+ "]>\n"
+ "<doc>&entity;</doc>";
+
+ expect_failure(text,
+ XML_ERROR_RECURSIVE_ENTITY_REF,
+ "Parser did not report recursive entity reference.");
+}
+END_TEST
+
+/* Regression test for SF bug #483514. */
+START_TEST(test_dtd_default_handling)
+{
+ char *text =
+ "<!DOCTYPE doc [\n"
+ "<!ENTITY e SYSTEM 'http://xml.libexpat.org/e'>\n"
+ "<!NOTATION n SYSTEM 'http://xml.libexpat.org/n'>\n"
+ "<!ELEMENT doc EMPTY>\n"
+ "<!ATTLIST doc a CDATA #IMPLIED>\n"
+ "<?pi in dtd?>\n"
+ "<!--comment in dtd-->\n"
+ "]><doc/>";
+
+ XML_SetDefaultHandler(parser, accumulate_characters);
+ XML_SetDoctypeDeclHandler(parser,
+ dummy_start_doctype_handler,
+ dummy_end_doctype_handler);
+ XML_SetEntityDeclHandler(parser, dummy_entity_decl_handler);
+ XML_SetNotationDeclHandler(parser, dummy_notation_decl_handler);
+ XML_SetElementDeclHandler(parser, dummy_element_decl_handler);
+ XML_SetAttlistDeclHandler(parser, dummy_attlist_decl_handler);
+ XML_SetProcessingInstructionHandler(parser, dummy_pi_handler);
+ XML_SetCommentHandler(parser, dummy_comment_handler);
+ run_character_check(text, "\n\n\n\n\n\n\n<doc/>");
+}
+END_TEST
+
+/* See related SF bug #673791.
+ When namespace processing is enabled, setting the namespace URI for
+ a prefix is not allowed; this test ensures that it *is* allowed
+ when namespace processing is not enabled.
+ (See Namespaces in XML, section 2.)
+*/
+START_TEST(test_empty_ns_without_namespaces)
+{
+ char *text =
+ "<doc xmlns:prefix='http://www.example.com/'>\n"
+ " <e xmlns:prefix=''/>\n"
+ "</doc>";
+
+ if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR)
+ xml_failure(parser);
+}
+END_TEST
+
+/* Regression test for SF bug #824420.
+ Checks that an xmlns:prefix attribute set in an attribute's default
+ value isn't misinterpreted.
+*/
+START_TEST(test_ns_in_attribute_default_without_namespaces)
+{
+ char *text =
+ "<!DOCTYPE e:element [\n"
+ " <!ATTLIST e:element\n"
+ " xmlns:e CDATA 'http://example.com/'>\n"
+ " ]>\n"
+ "<e:element/>";
+
+ if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR)
+ xml_failure(parser);
+}
+END_TEST
+
+
+/*
+ * Namespaces tests.
+ */
+
+static void
+namespace_setup(void)
+{
+ parser = XML_ParserCreateNS(NULL, ' ');
+ if (parser == NULL)
+ fail("Parser not created.");
+}
+
+static void
+namespace_teardown(void)
+{
+ basic_teardown();
+}
+
+/* Check that an element name and attribute name match the expected values.
+ The expected values are passed as an array reference of string pointers
+ provided as the userData argument; the first is the expected
+ element name, and the second is the expected attribute name.
+*/
+static void XMLCALL
+triplet_start_checker(void *userData, const XML_Char *name,
+ const XML_Char **atts)
+{
+ char **elemstr = (char **)userData;
+ char buffer[1024];
+ if (strcmp(elemstr[0], name) != 0) {
+ sprintf(buffer, "unexpected start string: '%s'", name);
+ fail(buffer);
+ }
+ if (strcmp(elemstr[1], atts[0]) != 0) {
+ sprintf(buffer, "unexpected attribute string: '%s'", atts[0]);
+ fail(buffer);
+ }
+}
+
+/* Check that the element name passed to the end-element handler matches
+ the expected value. The expected value is passed as the first element
+ in an array of strings passed as the userData argument.
+*/
+static void XMLCALL
+triplet_end_checker(void *userData, const XML_Char *name)
+{
+ char **elemstr = (char **)userData;
+ if (strcmp(elemstr[0], name) != 0) {
+ char buffer[1024];
+ sprintf(buffer, "unexpected end string: '%s'", name);
+ fail(buffer);
+ }
+}
+
+START_TEST(test_return_ns_triplet)
+{
+ char *text =
+ "<foo:e xmlns:foo='http://expat.sf.net/' bar:a='12'\n"
+ " xmlns:bar='http://expat.sf.net/'></foo:e>";
+ char *elemstr[] = {
+ "http://expat.sf.net/ e foo",
+ "http://expat.sf.net/ a bar"
+ };
+ XML_SetReturnNSTriplet(parser, XML_TRUE);
+ XML_SetUserData(parser, elemstr);
+ XML_SetElementHandler(parser, triplet_start_checker, triplet_end_checker);
+ if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR)
+ xml_failure(parser);
+}
+END_TEST
+
+static void XMLCALL
+overwrite_start_checker(void *userData, const XML_Char *name,
+ const XML_Char **atts)
+{
+ CharData *storage = (CharData *) userData;
+ CharData_AppendString(storage, "start ");
+ CharData_AppendXMLChars(storage, name, -1);
+ while (*atts != NULL) {
+ CharData_AppendString(storage, "\nattribute ");
+ CharData_AppendXMLChars(storage, *atts, -1);
+ atts += 2;
+ }
+ CharData_AppendString(storage, "\n");
+}
+
+static void XMLCALL
+overwrite_end_checker(void *userData, const XML_Char *name)
+{
+ CharData *storage = (CharData *) userData;
+ CharData_AppendString(storage, "end ");
+ CharData_AppendXMLChars(storage, name, -1);
+ CharData_AppendString(storage, "\n");
+}
+
+static void
+run_ns_tagname_overwrite_test(char *text, char *result)
+{
+ CharData storage;
+ CharData_Init(&storage);
+ XML_SetUserData(parser, &storage);
+ XML_SetElementHandler(parser,
+ overwrite_start_checker, overwrite_end_checker);
+ if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR)
+ xml_failure(parser);
+ CharData_CheckString(&storage, result);
+}
+
+/* Regression test for SF bug #566334. */
+START_TEST(test_ns_tagname_overwrite)
+{
+ char *text =
+ "<n:e xmlns:n='http://xml.libexpat.org/'>\n"
+ " <n:f n:attr='foo'/>\n"
+ " <n:g n:attr2='bar'/>\n"
+ "</n:e>";
+ char *result =
+ "start http://xml.libexpat.org/ e\n"
+ "start http://xml.libexpat.org/ f\n"
+ "attribute http://xml.libexpat.org/ attr\n"
+ "end http://xml.libexpat.org/ f\n"
+ "start http://xml.libexpat.org/ g\n"
+ "attribute http://xml.libexpat.org/ attr2\n"
+ "end http://xml.libexpat.org/ g\n"
+ "end http://xml.libexpat.org/ e\n";
+ run_ns_tagname_overwrite_test(text, result);
+}
+END_TEST
+
+/* Regression test for SF bug #566334. */
+START_TEST(test_ns_tagname_overwrite_triplet)
+{
+ char *text =
+ "<n:e xmlns:n='http://xml.libexpat.org/'>\n"
+ " <n:f n:attr='foo'/>\n"
+ " <n:g n:attr2='bar'/>\n"
+ "</n:e>";
+ char *result =
+ "start http://xml.libexpat.org/ e n\n"
+ "start http://xml.libexpat.org/ f n\n"
+ "attribute http://xml.libexpat.org/ attr n\n"
+ "end http://xml.libexpat.org/ f n\n"
+ "start http://xml.libexpat.org/ g n\n"
+ "attribute http://xml.libexpat.org/ attr2 n\n"
+ "end http://xml.libexpat.org/ g n\n"
+ "end http://xml.libexpat.org/ e n\n";
+ XML_SetReturnNSTriplet(parser, XML_TRUE);
+ run_ns_tagname_overwrite_test(text, result);
+}
+END_TEST
+
+
+/* Regression test for SF bug #620343. */
+static void XMLCALL
+start_element_fail(void *userData,
+ const XML_Char *name, const XML_Char **atts)
+{
+ /* We should never get here. */
+ fail("should never reach start_element_fail()");
+}
+
+static void XMLCALL
+start_ns_clearing_start_element(void *userData,
+ const XML_Char *prefix,
+ const XML_Char *uri)
+{
+ XML_SetStartElementHandler((XML_Parser) userData, NULL);
+}
+
+START_TEST(test_start_ns_clears_start_element)
+{
+ /* This needs to use separate start/end tags; using the empty tag
+ syntax doesn't cause the problematic path through Expat to be
+ taken.
+ */
+ char *text = "<e xmlns='http://xml.libexpat.org/'></e>";
+
+ XML_SetStartElementHandler(parser, start_element_fail);
+ XML_SetStartNamespaceDeclHandler(parser, start_ns_clearing_start_element);
+ XML_UseParserAsHandlerArg(parser);
+ if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR)
+ xml_failure(parser);
+}
+END_TEST
+
+/* Regression test for SF bug #616863. */
+static int XMLCALL
+external_entity_handler(XML_Parser parser,
+ const XML_Char *context,
+ const XML_Char *base,
+ const XML_Char *systemId,
+ const XML_Char *publicId)
+{
+ int callno = 1 + (int)XML_GetUserData(parser);
+ char *text;
+ XML_Parser p2;
+
+ if (callno == 1)
+ text = ("<!ELEMENT doc (e+)>\n"
+ "<!ATTLIST doc xmlns CDATA #IMPLIED>\n"
+ "<!ELEMENT e EMPTY>\n");
+ else
+ text = ("<?xml version='1.0' encoding='us-ascii'?>"
+ "<e/>");
+
+ XML_SetUserData(parser, (void *) callno);
+ p2 = XML_ExternalEntityParserCreate(parser, context, NULL);
+ if (XML_Parse(p2, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR) {
+ xml_failure(p2);
+ return 0;
+ }
+ XML_ParserFree(p2);
+ return 1;
+}
+
+START_TEST(test_default_ns_from_ext_subset_and_ext_ge)
+{
+ char *text =
+ "<?xml version='1.0'?>\n"
+ "<!DOCTYPE doc SYSTEM 'http://xml.libexpat.org/doc.dtd' [\n"
+ " <!ENTITY en SYSTEM 'http://xml.libexpat.org/entity.ent'>\n"
+ "]>\n"
+ "<doc xmlns='http://xml.libexpat.org/ns1'>\n"
+ "&en;\n"
+ "</doc>";
+
+ XML_SetParamEntityParsing(parser, XML_PARAM_ENTITY_PARSING_ALWAYS);
+ XML_SetExternalEntityRefHandler(parser, external_entity_handler);
+ /* We actually need to set this handler to tickle this bug. */
+ XML_SetStartElementHandler(parser, dummy_start_element);
+ XML_SetUserData(parser, NULL);
+ if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR)
+ xml_failure(parser);
+}
+END_TEST
+
+/* Regression test #1 for SF bug #673791. */
+START_TEST(test_ns_prefix_with_empty_uri_1)
+{
+ char *text =
+ "<doc xmlns:prefix='http://xml.libexpat.org/'>\n"
+ " <e xmlns:prefix=''/>\n"
+ "</doc>";
+
+ expect_failure(text,
+ XML_ERROR_UNDECLARING_PREFIX,
+ "Did not report re-setting namespace"
+ " URI with prefix to ''.");
+}
+END_TEST
+
+/* Regression test #2 for SF bug #673791. */
+START_TEST(test_ns_prefix_with_empty_uri_2)
+{
+ char *text =
+ "<?xml version='1.0'?>\n"
+ "<docelem xmlns:pre=''/>";
+
+ expect_failure(text,
+ XML_ERROR_UNDECLARING_PREFIX,
+ "Did not report setting namespace URI with prefix to ''.");
+}
+END_TEST
+
+/* Regression test #3 for SF bug #673791. */
+START_TEST(test_ns_prefix_with_empty_uri_3)
+{
+ char *text =
+ "<!DOCTYPE doc [\n"
+ " <!ELEMENT doc EMPTY>\n"
+ " <!ATTLIST doc\n"
+ " xmlns:prefix CDATA ''>\n"
+ "]>\n"
+ "<doc/>";
+
+ expect_failure(text,
+ XML_ERROR_UNDECLARING_PREFIX,
+ "Didn't report attr default setting NS w/ prefix to ''.");
+}
+END_TEST
+
+/* Regression test #4 for SF bug #673791. */
+START_TEST(test_ns_prefix_with_empty_uri_4)
+{
+ char *text =
+ "<!DOCTYPE doc [\n"
+ " <!ELEMENT prefix:doc EMPTY>\n"
+ " <!ATTLIST prefix:doc\n"
+ " xmlns:prefix CDATA 'http://xml.libexpat.org/'>\n"
+ "]>\n"
+ "<prefix:doc/>";
+ /* Packaged info expected by the end element handler;
+ the weird structuring lets us re-use the triplet_end_checker()
+ function also used for another test. */
+ char *elemstr[] = {
+ "http://xml.libexpat.org/ doc prefix"
+ };
+ XML_SetReturnNSTriplet(parser, XML_TRUE);
+ XML_SetUserData(parser, elemstr);
+ XML_SetEndElementHandler(parser, triplet_end_checker);
+ if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR)
+ xml_failure(parser);
+}
+END_TEST
+
+START_TEST(test_ns_default_with_empty_uri)
+{
+ char *text =
+ "<doc xmlns='http://xml.libexpat.org/'>\n"
+ " <e xmlns=''/>\n"
+ "</doc>";
+ if (XML_Parse(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR)
+ xml_failure(parser);
+}
+END_TEST
+
+/* Regression test for SF bug #692964: two prefixes for one namespace. */
+START_TEST(test_ns_duplicate_attrs_diff_prefixes)
+{
+ char *text =
+ "<doc xmlns:a='http://xml.libexpat.org/a'\n"
+ " xmlns:b='http://xml.libexpat.org/a'\n"
+ " a:a='v' b:a='v' />";
+ expect_failure(text,
+ XML_ERROR_DUPLICATE_ATTRIBUTE,
+ "did not report multiple attributes with same URI+name");
+}
+END_TEST
+
+/* Regression test for SF bug #695401: unbound prefix. */
+START_TEST(test_ns_unbound_prefix_on_attribute)
+{
+ char *text = "<doc a:attr=''/>";
+ expect_failure(text,
+ XML_ERROR_UNBOUND_PREFIX,
+ "did not report unbound prefix on attribute");
+}
+END_TEST
+
+/* Regression test for SF bug #695401: unbound prefix. */
+START_TEST(test_ns_unbound_prefix_on_element)
+{
+ char *text = "<a:doc/>";
+ expect_failure(text,
+ XML_ERROR_UNBOUND_PREFIX,
+ "did not report unbound prefix on element");
+}
+END_TEST
+
+static Suite *
+make_suite(void)
+{
+ Suite *s = suite_create("basic");
+ TCase *tc_basic = tcase_create("basic tests");
+ TCase *tc_namespace = tcase_create("XML namespaces");
+
+ suite_add_tcase(s, tc_basic);
+ tcase_add_checked_fixture(tc_basic, basic_setup, basic_teardown);
+ tcase_add_test(tc_basic, test_nul_byte);
+ tcase_add_test(tc_basic, test_u0000_char);
+ tcase_add_test(tc_basic, test_bom_utf8);
+ tcase_add_test(tc_basic, test_bom_utf16_be);
+ tcase_add_test(tc_basic, test_bom_utf16_le);
+ tcase_add_test(tc_basic, test_illegal_utf8);
+ tcase_add_test(tc_basic, test_utf16);
+ tcase_add_test(tc_basic, test_utf16_le_epilog_newline);
+ tcase_add_test(tc_basic, test_latin1_umlauts);
+ /* Regression test for SF bug #491986. */
+ tcase_add_test(tc_basic, test_danish_latin1);
+ /* Regression test for SF bug #514281. */
+ tcase_add_test(tc_basic, test_french_charref_hexidecimal);
+ tcase_add_test(tc_basic, test_french_charref_decimal);
+ tcase_add_test(tc_basic, test_french_latin1);
+ tcase_add_test(tc_basic, test_french_utf8);
+ tcase_add_test(tc_basic, test_utf8_false_rejection);
+ tcase_add_test(tc_basic, test_line_number_after_parse);
+ tcase_add_test(tc_basic, test_column_number_after_parse);
+ tcase_add_test(tc_basic, test_line_and_column_numbers_inside_handlers);
+ tcase_add_test(tc_basic, test_line_number_after_error);
+ tcase_add_test(tc_basic, test_column_number_after_error);
+ tcase_add_test(tc_basic, test_really_long_lines);
+ tcase_add_test(tc_basic, test_end_element_events);
+ tcase_add_test(tc_basic, test_attr_whitespace_normalization);
+ tcase_add_test(tc_basic, test_xmldecl_misplaced);
+ tcase_add_test(tc_basic, test_unknown_encoding_internal_entity);
+ tcase_add_test(tc_basic,
+ test_wfc_undeclared_entity_unread_external_subset);
+ tcase_add_test(tc_basic, test_wfc_undeclared_entity_no_external_subset);
+ tcase_add_test(tc_basic, test_wfc_undeclared_entity_standalone);
+ tcase_add_test(tc_basic, test_wfc_undeclared_entity_with_external_subset);
+ tcase_add_test(tc_basic,
+ test_wfc_undeclared_entity_with_external_subset_standalone);
+ tcase_add_test(tc_basic, test_wfc_no_recursive_entity_refs);
+ tcase_add_test(tc_basic, test_ext_entity_set_encoding);
+ tcase_add_test(tc_basic, test_dtd_default_handling);
+ tcase_add_test(tc_basic, test_empty_ns_without_namespaces);
+ tcase_add_test(tc_basic, test_ns_in_attribute_default_without_namespaces);
+
+ suite_add_tcase(s, tc_namespace);
+ tcase_add_checked_fixture(tc_namespace,
+ namespace_setup, namespace_teardown);
+ tcase_add_test(tc_namespace, test_return_ns_triplet);
+ tcase_add_test(tc_namespace, test_ns_tagname_overwrite);
+ tcase_add_test(tc_namespace, test_ns_tagname_overwrite_triplet);
+ tcase_add_test(tc_namespace, test_start_ns_clears_start_element);
+ tcase_add_test(tc_namespace, test_default_ns_from_ext_subset_and_ext_ge);
+ tcase_add_test(tc_namespace, test_ns_prefix_with_empty_uri_1);
+ tcase_add_test(tc_namespace, test_ns_prefix_with_empty_uri_2);
+ tcase_add_test(tc_namespace, test_ns_prefix_with_empty_uri_3);
+ tcase_add_test(tc_namespace, test_ns_prefix_with_empty_uri_4);
+ tcase_add_test(tc_namespace, test_ns_default_with_empty_uri);
+ tcase_add_test(tc_namespace, test_ns_duplicate_attrs_diff_prefixes);
+ tcase_add_test(tc_namespace, test_ns_unbound_prefix_on_attribute);
+ tcase_add_test(tc_namespace, test_ns_unbound_prefix_on_element);
+
+ return s;
+}
+
+
+#ifdef AMIGA_SHARED_LIB
+int
+amiga_main(int argc, char *argv[])
+#else
+int
+main(int argc, char *argv[])
+#endif
+{
+ int i, nf;
+ int forking = 0, forking_set = 0;
+ int verbosity = CK_NORMAL;
+ Suite *s = make_suite();
+ SRunner *sr = srunner_create(s);
+
+ /* run the tests for internal helper functions */
+ testhelper_is_whitespace_normalized();
+
+ for (i = 1; i < argc; ++i) {
+ char *opt = argv[i];
+ if (strcmp(opt, "-v") == 0 || strcmp(opt, "--verbose") == 0)
+ verbosity = CK_VERBOSE;
+ else if (strcmp(opt, "-q") == 0 || strcmp(opt, "--quiet") == 0)
+ verbosity = CK_SILENT;
+ else if (strcmp(opt, "-f") == 0 || strcmp(opt, "--fork") == 0) {
+ forking = 1;
+ forking_set = 1;
+ }
+ else if (strcmp(opt, "-n") == 0 || strcmp(opt, "--no-fork") == 0) {
+ forking = 0;
+ forking_set = 1;
+ }
+ else {
+ fprintf(stderr, "runtests: unknown option '%s'\n", opt);
+ return 2;
+ }
+ }
+ if (forking_set)
+ srunner_set_fork_status(sr, forking ? CK_FORK : CK_NOFORK);
+ if (verbosity != CK_SILENT)
+ printf("Expat version: %s\n", XML_ExpatVersion());
+ srunner_run_all(sr, verbosity);
+ nf = srunner_ntests_failed(sr);
+ srunner_free(sr);
+
+ return (nf == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+}

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/tests/runtestspp.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/tests/runtestspp.cpp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,6 @@
+// C++ compilation harness for the test suite.
+//
+// This is used to ensure the Expat headers can be included from C++
+// and have everything work as expected.
+//
+#include "runtests.c"

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/tests/xmltest.sh
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/tests/xmltest.sh 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,141 @@
+#! /bin/sh
+
+# EXPAT TEST SCRIPT FOR W3C XML TEST SUITE
+
+# This script can be used to exercise Expat against the
+# w3c.org xml test suite, available from
+# http://www.w3.org/XML/Test/xmlts20020606.zip.
+
+# To run this script, first set XMLWF so that xmlwf can be
+# found, then set the output directory with OUTPUT.
+
+# The script lists all test cases where Expat shows a discrepancy
+# from the expected result. Test cases where only the canonical
+# output differs are prefixed with "Output differs:", and a diff file
+# is generated in the appropriate subdirectory under $OUTPUT.
+
+# If there are output files provided, the script will use
+# output from xmlwf and compare the desired output against it.
+# However, one has to take into account that the canonical output
+# produced by xmlwf conforms to an older definition of canonical XML
+# and does not generate notation declarations.
+
+MYDIR="`dirname \"$0\"`"
+cd "$MYDIR"
+MYDIR="`pwd`"
+XMLWF="`dirname \"$MYDIR\"`/xmlwf/xmlwf"
+# XMLWF=/usr/local/bin/xmlwf
+TS="$MYDIR/XML-Test-Suite"
+# OUTPUT must terminate with the directory separator.
+OUTPUT="$TS/out/"
+# OUTPUT=/home/tmp/xml-testsuite-out/
+
+
+# RunXmlwfNotWF file reldir
+# reldir includes trailing slash
+RunXmlwfNotWF() {
+ file="$1"
+ reldir="$2"
+ $XMLWF -p "$file" > outfile || return $?
+ read outdata < outfile
+ if test "$outdata" = "" ; then
+ echo "Expected well-formed: $reldir$file"
+ return 1
+ else
+ return 0
+ fi
+}
+
+# RunXmlwfWF file reldir
+# reldir includes trailing slash
+RunXmlwfWF() {
+ file="$1"
+ reldir="$2"
+ $XMLWF -p -d "$OUTPUT$reldir" "$file" > outfile || return $?
+ read outdata < outfile
+ if test "$outdata" = "" ; then
+ if [ -f "out/$file" ] ; then
+ diff "$OUTPUT$reldir$file" "out/$file" > outfile
+ if [ -s outfile ] ; then
+ cp outfile "$OUTPUT$reldir$file.diff"
+ echo "Output differs: $reldir$file"
+ return 1
+ fi
+ fi
+ return 0
+ else
+ echo "In $reldir: $outdata"
+ return 1
+ fi
+}
+
+SUCCESS=0
+ERROR=0
+
+UpdateStatus() {
+ if [ "$1" -eq 0 ] ; then
+ SUCCESS=`expr $SUCCESS + 1`
+ else
+ ERROR=`expr $ERROR + 1`
+ fi
+}
+
+##########################
+# well-formed test cases #
+##########################
+
+cd "$TS/xmlconf"
+for xmldir in ibm/valid/P* \
+ ibm/invalid/P* \
+ xmltest/valid/ext-sa \
+ xmltest/valid/not-sa \
+ xmltest/invalid \
+ xmltest/invalid/not-sa \
+ xmltest/valid/sa \
+ sun/valid \
+ sun/invalid ; do
+ cd "$TS/xmlconf/$xmldir"
+ mkdir -p "$OUTPUT$xmldir"
+ for xmlfile in *.xml ; do
+ RunXmlwfWF "$xmlfile" "$xmldir/"
+ UpdateStatus $?
+ done
+ rm outfile
+done
+
+cd "$TS/xmlconf/oasis"
+mkdir -p "$OUTPUT"oasis
+for xmlfile in *pass*.xml ; do
+ RunXmlwfWF "$xmlfile" "oasis/"
+ UpdateStatus $?
+done
+rm outfile
+
+##############################
+# not well-formed test cases #
+##############################
+
+cd "$TS/xmlconf"
+for xmldir in ibm/not-wf/P* \
+ ibm/not-wf/misc \
+ xmltest/not-wf/ext-sa \
+ xmltest/not-wf/not-sa \
+ xmltest/not-wf/sa \
+ sun/not-wf ; do
+ cd "$TS/xmlconf/$xmldir"
+ for xmlfile in *.xml ; do
+ RunXmlwfNotWF "$xmlfile" "$xmldir/"
+ UpdateStatus $?
+ done
+ rm outfile
+done
+
+cd "$TS/xmlconf/oasis"
+for xmlfile in *fail*.xml ; do
+ RunXmlwfNotWF "$xmlfile" "oasis/"
+ UpdateStatus $?
+done
+rm outfile
+
+echo "Passed: $SUCCESS"
+echo "Failed: $ERROR"

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/vms/README.vms
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/vms/README.vms 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,23 @@
+4-jun-2002 Craig A. Berry
+ Added rudimentary build procedures for
+ OpenVMS based on work by Martin Vorlaender.
+
+
+You'll need MMS or its freeware equivalent MMK. Just go to the
+top-level directory and type
+
+$ MMS/DESCRIPTION=[.vms]
+
+ or
+
+$ MMK/DESCRIPTION=[.vms]
+
+You'll end up with the object library expat.olb. For now, installation
+consists merely of copying the object library, include files, and
+documentation to a suitable location.
+
+To-do list:
+
+ -- create a shareable image
+ -- build and run the tests and build the xmlwf utility
+ -- create an install target

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/vms/descrip.mms
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/vms/descrip.mms 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,70 @@
+# Bare bones description file (Makefile) for OpenVMS
+
+PACKAGE = expat
+VERSION = 1.95.8
+EXPAT_MAJOR_VERSION=1
+EXPAT_MINOR_VERSION=95
+EXPAT_EDIT=8
+
+O = .obj
+OLB = .olb
+
+LIBRARY = expat$(OLB)
+LIBDIR = [.lib]
+SOURCES = $(LIBDIR)xmlparse.c $(LIBDIR)xmltok.c $(LIBDIR)xmlrole.c
+OBJECTS = xmlparse$(O) xmltok$(O) xmlrole$(O)
+
+TEMPLATES = xmltok_impl.c xmltok_ns.c
+APIHEADER = $(LIBDIR)expat.h
+HEADERS = $(LIBDIR)ascii.h $(LIBDIR)iasciitab.h $(LIBDIR)utf8tab.h $(LIBDIR)xmltok.h \
+ $(LIBDIR)asciitab.h $(LIBDIR)latin1tab.h \
+ $(LIBDIR)nametab.h $(LIBDIR)xmldef.h $(LIBDIR)xmlrole.h $(LIBDIR)xmltok_impl.h
+
+CONFIG_HEADER = expat_config.h
+INCLUDES = /INCLUDE=([],[.lib])
+DEFS = /DEFINE=(PACKAGE="""$(PACKAGE)""",VERSION="""$(PACKAGE)_$(VERSION)""",HAVE_EXPAT_CONFIG_H)
+LIBREVISION = 0
+LIBCURRENT = 1
+LIBAGE = 0
+#
+COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
+#
+# DISTFILES = $(DIST_COMMON) $(SOURCES) $(TEMPLATES) $(APIHEADER) $(HEADERS)
+#
+# TAR = gtar
+# GZIP_ENV = --best
+#
+.FIRST :
+ IF F$SEARCH("$(LIBRARY)") .EQS. "" THEN $(LIBR) /CREATE /OBJECT $(LIBRARY)
+
+all : $(LIBRARY)
+ @ write sys$output "All made."
+
+.SUFFIXES :
+.SUFFIXES : $(OLB) $(O) .C .H
+
+.c$(O) :
+ $(COMPILE) $(MMS$SOURCE)
+
+$(O)$(OLB) :
+ @ IF F$SEARCH("$(MMS$TARGET)") .EQS. "" -
+ THEN LIBRARY/CREATE/LOG $(MMS$TARGET)
+ @ LIBRARY /REPLACE /LOG $(MMS$TARGET) $(MMS$SOURCE)
+
+clean :
+ DELETE $(LIBRARY);*,*$(O);*
+
+$(LIBRARY) : $(LIBRARY)( $(OBJECTS) )
+ $(LIBR) /COMPRESS $(MMS$TARGET)
+
+$(CONFIG_HEADER) : [.vms]expat_config.h
+ COPY/LOG $(MMS$SOURCE) $(MMS$TARGET)
+
+xmlparse$(O) : $(LIBDIR)xmlparse.c $(LIBDIR)expat.h $(LIBDIR)xmlrole.h $(LIBDIR)xmltok.h $(CONFIG_HEADER)
+
+xmlrole$(O) : $(LIBDIR)xmlrole.c $(LIBDIR)ascii.h $(LIBDIR)xmlrole.h $(CONFIG_HEADER)
+
+xmltok$(O) : $(LIBDIR)xmltok.c $(LIBDIR)xmltok_impl.c $(LIBDIR)xmltok_ns.c \
+ $(LIBDIR)ascii.h $(LIBDIR)asciitab.h $(LIBDIR)iasciitab.h $(LIBDIR)latin1tab.h \
+ $(LIBDIR)nametab.h $(LIBDIR)utf8tab.h $(LIBDIR)xmltok.h $(LIBDIR)xmltok_impl.h $(CONFIG_HEADER)
+

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/vms/expat_config.h
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/vms/expat_config.h 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,52 @@
+/* Copyright 2000, Clark Cooper
+ All rights reserved.
+
+ This is free software. You are permitted to copy, distribute, or modify
+ it under the terms of the MIT/X license (contained in the COPYING file
+ with this distribution.)
+*/
+
+/* Define to empty if the keyword does not work. */
+#undef const
+
+/* Define if you have a working `mmap' system call. */
+#undef HAVE_MMAP
+
+/* Define to `long' if <sys/types.h> doesn't define. */
+#undef off_t
+
+/* Define to `unsigned' if <sys/types.h> doesn't define. */
+#undef size_t
+
+/* Define if your processor stores words with the most significant
+ byte first (like Motorola and SPARC, unlike Intel and VAX). */
+#undef WORDS_BIGENDIAN
+
+/* Define if you have the bcopy function. */
+#undef HAVE_BCOPY
+
+/* Define if you have the memmove function. */
+#define HAVE_MEMMOVE 1
+
+/* Define if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+#define XML_NS
+#define XML_DTD
+
+#ifdef WORDS_BIGENDIAN
+#define XML_BYTE_ORDER 21
+#else
+#define XML_BYTE_ORDER 12
+#endif
+
+#define XML_CONTEXT_BYTES 1024
+
+#ifndef HAVE_MEMMOVE
+#ifdef HAVE_BCOPY
+#define memmove(d,s,l) bcopy((s),(d),(l))
+#else
+#define memmove(d,s,l) ;punting on memmove;
+#endif
+
+#endif

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/win32/MANIFEST.txt
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/win32/MANIFEST.txt 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,29 @@
+ Overview of the Expat distribution
+
+The Expat distribution creates several subdirectories on your system.
+Some of these directories contain components of interest to all Expat
+users, and some contain material of interest to developers who wish to
+use Expat in their applications. In the list below, <top> is the
+directory you specified to the installer.
+
+ Directory Contents
+ --------------------------------------------------------------------
+ <top>\ The XML well-formedness checker and some general
+ information files.
+
+ <top>\Doc\ API documentation for developers.
+
+ <top>\Libs\ Pre-compiled dynamic libraries for developers.
+
+ <top>\StaticLibs\ Pre-compiled static libraries for developers.
+
+ <top>\Source\ Source code, which may interest some developers,
+ including a workspace for Microsft Visual C++.
+ The source code includes the parser, the well-
+ formedness checker, and a couple of small sample
+ applications.
+
+ <top>\Source\bcb5\ Project files for Borland C++ Builder 5 and BCC
+ 5.5.
+
+

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/win32/README.txt
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/win32/README.txt 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,75 @@
+
+Expat can be built on Windows in three ways:
+ using MS Visual C++ (6.0 or .NET), Borland C++ Builder 5 or Cygwin.
+
+* Cygwin:
+ This follows the Unix build procedures.
+
+* C++ Builder 5:
+ Possible with make files in the BCB5 subdirectory.
+ Details can be found in the ReadMe file located there.
+
+* MS Visual C++ 6:
+ Based on the workspace file expat.dsw. The related project
+ files (.dsp) are located in the lib subdirectory.
+
+* MS Visual Studio .NET 2002, 2003, 2005:
+ The VC++ 6 workspace file (expat.dsw) and project files (.dsp)
+ can be opened and imported in VS.NET without problems.
+
+* Creating MinGW dynamic libraries from MS VC++ DLLs:
+
+ On the command line, execute these steps:
+ pexports libexpat.dll > expat.def
+ pexports libexpatw.dll > expatw.def
+ dlltool -d expat.def -l libexpat.a
+ dlltool -d expatw.def -l libexpatw.a
+
+ The *.a files are mingw libraries.
+
+* Special note about MS VC++ and runtime libraries:
+
+ There are three possible configurations: using the
+ single threaded or multithreaded run-time library,
+ or using the multi-threaded run-time Dll. That is,
+ one can build three different Expat libraries depending
+ on the needs of the application.
+
+ Dynamic Linking:
+
+ By default the Expat Dlls are built to link statically
+ with the multi-threaded run-time library.
+ The libraries are named
+ - libexpat(w).dll
+ - libexpat(w).lib (import library)
+ The "w" indicates the UTF-16 version of the library.
+
+ One rarely uses other versions of the Dll, but they can
+ be built easily by specifying a different RTL linkage in
+ the IDE on the C/C++ tab under the category Code Generation.
+
+ Static Linking:
+
+ The libraries should be named like this:
+ Single-theaded: libexpat(w)ML.lib
+ Multi-threaded: libexpat(w)MT.lib
+ Multi-threaded Dll: libexpat(w)MD.lib
+ The suffixes conform to the compiler switch settings
+ /ML, /MT and /MD for MS VC++.
+
+ Note: In Visual Studio 2005 (Visual C++ 8.0) and later, the
+ single-threaded runtime library is not supported anymore.
+
+ By default, the expat-static and expatw-static projects are set up
+ to link statically against the multithreaded run-time library,
+ so they will build libexpatMT.lib or libexpatwMT.lib files.
+
+ To build the other versions of the static library,
+ go to Project - Settings:
+ - specify a different RTL linkage on the C/C++ tab
+ under the category Code Generation.
+ - then, on the Library tab, change the output file name
+ accordingly, as described above
+
+ An application linking to the static libraries must
+ have the global macro XML_STATIC defined.

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/win32/expat.iss
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/win32/expat.iss 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,70 @@
+; Basic setup script for the Inno Setup installer builder. For more
+; information on the free installer builder, see www.jrsoftware.org.
+;
+; This script was contributed by Tim Peters.
+; The current version is used with Inno Setup 2.0.19.
+
+[Setup]
+AppName=expat
+AppId=expat
+AppVersion=2.0.0
+AppVerName=expat 2.0.0
+AppCopyright=Copyright © 1998-2006 Thai Open Source Software Center, Clark Cooper, and the Expat maintainers
+DefaultDirName={sd}\Expat-2.0.0
+AppPublisher=The Expat Developers
+AppPublisherURL=http://www.libexpat.org/
+AppSupportURL=http://www.libexpat.org/
+AppUpdatesURL=http://www.libexpat.org/
+UninstallDisplayName=Expat XML Parser (version 2.0.0)
+UninstallFilesDir={app}\Uninstall
+
+Compression=bzip/9
+SourceDir=..
+OutputDir=win32
+DisableStartupPrompt=yes
+AllowNoIcons=yes
+DisableProgramGroupPage=yes
+DisableReadyPage=yes
+
+[Files]
+Flags: ignoreversion; Source: xmlwf\Release\*.exe; DestDir: "{app}"
+Flags: ignoreversion; Source: win32\MANIFEST.txt; DestDir: "{app}"
+Flags: ignoreversion; Source: Changes; DestDir: "{app}"; DestName: Changes.txt
+Flags: ignoreversion; Source: COPYING; DestDir: "{app}"; DestName: COPYING.txt
+Flags: ignoreversion; Source: README; DestDir: "{app}"; DestName: README.txt
+Flags: ignoreversion; Source: doc\*.html; DestDir: "{app}\Doc"
+Flags: ignoreversion; Source: doc\*.css; DestDir: "{app}\Doc"
+Flags: ignoreversion; Source: doc\*.png; DestDir: "{app}\Doc"
+Flags: ignoreversion; Source: lib\Release\*.dll; DestDir: "{app}\Libs"
+Flags: ignoreversion; Source: lib\Release\*.lib; DestDir: "{app}\Libs"
+Flags: ignoreversion; Source: lib\Release-w\*.dll; DestDir: "{app}\Libs"
+Flags: ignoreversion; Source: lib\Release-w\*.lib; DestDir: "{app}\Libs"
+Flags: ignoreversion; Source: lib\Release_static\*.lib; DestDir: "{app}\StaticLibs"
+Flags: ignoreversion; Source: lib\Release-w_static\*.lib; DestDir: "{app}\StaticLibs"
+Flags: ignoreversion; Source: expat.dsw; DestDir: "{app}\Source"
+Flags: ignoreversion; Source: win32\README.txt; DestDir: "{app}\Source"
+Flags: ignoreversion; Source: bcb5\*.bp*; DestDir: "{app}\Source\bcb5"
+Flags: ignoreversion; Source: bcb5\*.mak; DestDir: "{app}\Source\bcb5"
+Flags: ignoreversion; Source: bcb5\*.def; DestDir: "{app}\Source\bcb5"
+Flags: ignoreversion; Source: bcb5\*.txt; DestDir: "{app}\Source\bcb5"
+Flags: ignoreversion; Source: bcb5\*.bat; DestDir: "{app}\Source\bcb5"
+Flags: ignoreversion; Source: lib\*.c; DestDir: "{app}\Source\lib"
+Flags: ignoreversion; Source: lib\*.h; DestDir: "{app}\Source\lib"
+Flags: ignoreversion; Source: lib\*.def; DestDir: "{app}\Source\lib"
+Flags: ignoreversion; Source: lib\*.dsp; DestDir: "{app}\Source\lib"
+Flags: ignoreversion; Source: examples\*.c; DestDir: "{app}\Source\examples"
+Flags: ignoreversion; Source: examples\*.dsp; DestDir: "{app}\Source\examples"
+Flags: ignoreversion; Source: tests\*.c; DestDir: "{app}\Source\tests"
+Flags: ignoreversion; Source: tests\*.cpp; DestDir: "{app}\Source\tests"
+Flags: ignoreversion; Source: tests\*.h; DestDir: "{app}\Source\tests"
+Flags: ignoreversion; Source: tests\README.txt; DestDir: "{app}\Source\tests"
+Flags: ignoreversion; Source: tests\benchmark\*.c; DestDir: "{app}\Source\tests\benchmark"
+Flags: ignoreversion; Source: tests\benchmark\*.ds*; DestDir: "{app}\Source\tests\benchmark"
+Flags: ignoreversion; Source: tests\benchmark\README.txt; DestDir: "{app}\Source\tests\benchmark"
+Flags: ignoreversion; Source: xmlwf\*.c*; DestDir: "{app}\Source\xmlwf"
+Flags: ignoreversion; Source: xmlwf\*.h; DestDir: "{app}\Source\xmlwf"
+Flags: ignoreversion; Source: xmlwf\*.dsp; DestDir: "{app}\Source\xmlwf"
+
+[Messages]
+WelcomeLabel1=Welcome to the Expat XML Parser Setup Wizard
+WelcomeLabel2=This will install [name/ver] on your computer.%n%nExpat is an XML parser with a C-language API, and is primarily made available to allow developers to build applications which use XML using a portable API and fast implementation.%n%nIt is strongly recommended that you close all other applications you have running before continuing. This will help prevent any conflicts during the installation process.

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/xmlwf/codepage.c
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/xmlwf/codepage.c 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,68 @@
+/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
+ See the file COPYING for copying permission.
+*/
+
+#include "codepage.h"
+
+#ifdef WIN32
+#define STRICT 1
+#define WIN32_LEAN_AND_MEAN 1
+
+#include <windows.h>
+
+int
+codepageMap(int cp, int *map)
+{
+ int i;
+ CPINFO info;
+ if (!GetCPInfo(cp, &info) || info.MaxCharSize > 2)
+ return 0;
+ for (i = 0; i < 256; i++)
+ map[i] = -1;
+ if (info.MaxCharSize > 1) {
+ for (i = 0; i < MAX_LEADBYTES; i+=2) {
+ int j, lim;
+ if (info.LeadByte[i] == 0 && info.LeadByte[i + 1] == 0)
+ break;
+ lim = info.LeadByte[i + 1];
+ for (j = info.LeadByte[i]; j <= lim; j++)
+ map[j] = -2;
+ }
+ }
+ for (i = 0; i < 256; i++) {
+ if (map[i] == -1) {
+ char c = (char)i;
+ unsigned short n;
+ if (MultiByteToWideChar(cp, MB_PRECOMPOSED|MB_ERR_INVALID_CHARS,
+ &c, 1, &n, 1) == 1)
+ map[i] = n;
+ }
+ }
+ return 1;
+}
+
+int
+codepageConvert(int cp, const char *p)
+{
+ unsigned short c;
+ if (MultiByteToWideChar(cp, MB_PRECOMPOSED|MB_ERR_INVALID_CHARS,
+ p, 2, &c, 1) == 1)
+ return c;
+ return -1;
+}
+
+#else /* not WIN32 */
+
+int
+codepageMap(int cp, int *map)
+{
+ return 0;
+}
+
+int
+codepageConvert(int cp, const char *p)
+{
+ return -1;
+}
+
+#endif /* not WIN32 */

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/xmlwf/codepage.h
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/xmlwf/codepage.h 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,6 @@
+/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
+ See the file COPYING for copying permission.
+*/
+
+int codepageMap(int cp, int *map);
+int codepageConvert(int cp, const char *p);

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/xmlwf/ct.c
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/xmlwf/ct.c 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,147 @@
+#define CHARSET_MAX 41
+
+static const char *
+getTok(const char **pp)
+{
+ enum { inAtom, inString, init, inComment };
+ int state = init;
+ const char *tokStart = 0;
+ for (;;) {
+ switch (**pp) {
+ case '\0':
+ return 0;
+ case ' ':
+ case '\r':
+ case '\t':
+ case '\n':
+ if (state == inAtom)
+ return tokStart;
+ break;
+ case '(':
+ if (state == inAtom)
+ return tokStart;
+ if (state != inString)
+ state++;
+ break;
+ case ')':
+ if (state > init)
+ --state;
+ else if (state != inString)
+ return 0;
+ break;
+ case ';':
+ case '/':
+ case '=':
+ if (state == inAtom)
+ return tokStart;
+ if (state == init)
+ return (*pp)++;
+ break;
+ case '\\':
+ ++*pp;
+ if (**pp == '\0')
+ return 0;
+ break;
+ case '"':
+ switch (state) {
+ case inString:
+ ++*pp;
+ return tokStart;
+ case inAtom:
+ return tokStart;
+ case init:
+ tokStart = *pp;
+ state = inString;
+ break;
+ }
+ break;
+ default:
+ if (state == init) {
+ tokStart = *pp;
+ state = inAtom;
+ }
+ break;
+ }
+ ++*pp;
+ }
+ /* not reached */
+}
+
+/* key must be lowercase ASCII */
+
+static int
+matchkey(const char *start, const char *end, const char *key)
+{
+ if (!start)
+ return 0;
+ for (; start != end; start++, key++)
+ if (*start != *key && *start != 'A' + (*key - 'a'))
+ return 0;
+ return *key == '\0';
+}
+
+void
+getXMLCharset(const char *buf, char *charset)
+{
+ const char *next, *p;
+
+ charset[0] = '\0';
+ next = buf;
+ p = getTok(&next);
+ if (matchkey(p, next, "text"))
+ strcpy(charset, "us-ascii");
+ else if (!matchkey(p, next, "application"))
+ return;
+ p = getTok(&next);
+ if (!p || *p != '/')
+ return;
+ p = getTok(&next);
+ if (matchkey(p, next, "xml"))
+ isXml = 1;
+ p = getTok(&next);
+ while (p) {
+ if (*p == ';') {
+ p = getTok(&next);
+ if (matchkey(p, next, "charset")) {
+ p = getTok(&next);
+ if (p && *p == '=') {
+ p = getTok(&next);
+ if (p) {
+ char *s = charset;
+ if (*p == '"') {
+ while (++p != next - 1) {
+ if (*p == '\\')
+ ++p;
+ if (s == charset + CHARSET_MAX - 1) {
+ charset[0] = '\0';
+ break;
+ }
+ *s++ = *p;
+ }
+ *s++ = '\0';
+ }
+ else {
+ if (next - p > CHARSET_MAX - 1)
+ break;
+ while (p != next)
+ *s++ = *p++;
+ *s = 0;
+ break;
+ }
+ }
+ }
+ }
+ }
+ else
+ p = getTok(&next);
+ }
+}
+
+int
+main(int argc, char **argv)
+{
+ char buf[CHARSET_MAX];
+ getXMLCharset(argv[1], buf);
+ printf("charset = \"%s\"\n", buf);
+ return 0;
+}

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/xmlwf/filemap.h
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/xmlwf/filemap.h 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,17 @@
+/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
+ See the file COPYING for copying permission.
+*/
+
+#include <stddef.h>
+
+#ifdef XML_UNICODE
+int filemap(const wchar_t *name,
+ void (*processor)(const void *, size_t,
+ const wchar_t *, void *arg),
+ void *arg);
+#else
+int filemap(const char *name,
+ void (*processor)(const void *, size_t,
+ const char *, void *arg),
+ void *arg);
+#endif

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/xmlwf/readfilemap.c
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/xmlwf/readfilemap.c 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,82 @@
+/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
+ See the file COPYING for copying permission.
+*/
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+#ifdef __BEOS__
+#include <unistd.h>
+#endif
+
+#ifndef S_ISREG
+#ifndef S_IFREG
+#define S_IFREG _S_IFREG
+#endif
+#ifndef S_IFMT
+#define S_IFMT _S_IFMT
+#endif
+#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
+#endif /* not S_ISREG */
+
+#ifndef O_BINARY
+#ifdef _O_BINARY
+#define O_BINARY _O_BINARY
+#else
+#define O_BINARY 0
+#endif
+#endif
+
+#include "filemap.h"
+
+int
+filemap(const char *name,
+ void (*processor)(const void *, size_t, const char *, void *arg),
+ void *arg)
+{
+ size_t nbytes;
+ int fd;
+ int n;
+ struct stat sb;
+ void *p;
+
+ fd = open(name, O_RDONLY|O_BINARY);
+ if (fd < 0) {
+ perror(name);
+ return 0;
+ }
+ if (fstat(fd, &sb) < 0) {
+ perror(name);
+ return 0;
+ }
+ if (!S_ISREG(sb.st_mode)) {
+ fprintf(stderr, "%s: not a regular file\n", name);
+ return 0;
+ }
+ nbytes = sb.st_size;
+ p = malloc(nbytes);
+ if (!p) {
+ fprintf(stderr, "%s: out of memory\n", name);
+ return 0;
+ }
+ n = read(fd, p, nbytes);
+ if (n < 0) {
+ perror(name);
+ free(p);
+ close(fd);
+ return 0;
+ }
+ if (n != nbytes) {
+ fprintf(stderr, "%s: read unexpected number of bytes\n", name);
+ free(p);
+ close(fd);
+ return 0;
+ }
+ processor(p, nbytes, name, arg);
+ free(p);
+ close(fd);
+ return 1;
+}

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/xmlwf/unixfilemap.c
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/xmlwf/unixfilemap.c 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,58 @@
+/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
+ See the file COPYING for copying permission.
+*/
+
+#include <sys/types.h>
+#include <sys/mman.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <errno.h>
+#include <string.h>
+#include <stdio.h>
+#include <unistd.h>
+
+#ifndef MAP_FILE
+#define MAP_FILE 0
+#endif
+
+#include "filemap.h"
+
+int
+filemap(const char *name,
+ void (*processor)(const void *, size_t, const char *, void *arg),
+ void *arg)
+{
+ int fd;
+ size_t nbytes;
+ struct stat sb;
+ void *p;
+
+ fd = open(name, O_RDONLY);
+ if (fd < 0) {
+ perror(name);
+ return 0;
+ }
+ if (fstat(fd, &sb) < 0) {
+ perror(name);
+ close(fd);
+ return 0;
+ }
+ if (!S_ISREG(sb.st_mode)) {
+ close(fd);
+ fprintf(stderr, "%s: not a regular file\n", name);
+ return 0;
+ }
+
+ nbytes = sb.st_size;
+ p = (void *)mmap((caddr_t)0, (size_t)nbytes, PROT_READ,
+ MAP_FILE|MAP_PRIVATE, fd, (off_t)0);
+ if (p == (void *)-1) {
+ perror(name);
+ close(fd);
+ return 0;
+ }
+ processor(p, nbytes, name, arg);
+ munmap((caddr_t)p, nbytes);
+ close(fd);
+ return 1;
+}

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/xmlwf/win32filemap.c
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/xmlwf/win32filemap.c 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,96 @@
+/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
+ See the file COPYING for copying permission.
+*/
+
+#define STRICT 1
+#define WIN32_LEAN_AND_MEAN 1
+
+#ifdef XML_UNICODE_WCHAR_T
+#ifndef XML_UNICODE
+#define XML_UNICODE
+#endif
+#endif
+
+#ifdef XML_UNICODE
+#define UNICODE
+#define _UNICODE
+#endif /* XML_UNICODE */
+#include <windows.h>
+#include <stdio.h>
+#include <tchar.h>
+#include "filemap.h"
+
+static void win32perror(const TCHAR *);
+
+int
+filemap(const TCHAR *name,
+ void (*processor)(const void *, size_t, const TCHAR *, void *arg),
+ void *arg)
+{
+ HANDLE f;
+ HANDLE m;
+ DWORD size;
+ DWORD sizeHi;
+ void *p;
+
+ f = CreateFile(name, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING,
+ FILE_FLAG_SEQUENTIAL_SCAN, NULL);
+ if (f == INVALID_HANDLE_VALUE) {
+ win32perror(name);
+ return 0;
+ }
+ size = GetFileSize(f, &sizeHi);
+ if (size == (DWORD)-1) {
+ win32perror(name);
+ return 0;
+ }
+ if (sizeHi) {
+ _ftprintf(stderr, _T("%s: bigger than 2Gb\n"), name);
+ return 0;
+ }
+ /* CreateFileMapping barfs on zero length files */
+ if (size == 0) {
+ static const char c = '\0';
+ processor(&c, 0, name, arg);
+ CloseHandle(f);
+ return 1;
+ }
+ m = CreateFileMapping(f, NULL, PAGE_READONLY, 0, 0, NULL);
+ if (m == NULL) {
+ win32perror(name);
+ CloseHandle(f);
+ return 0;
+ }
+ p = MapViewOfFile(m, FILE_MAP_READ, 0, 0, 0);
+ if (p == NULL) {
+ win32perror(name);
+ CloseHandle(m);
+ CloseHandle(f);
+ return 0;
+ }
+ processor(p, size, name, arg);
+ UnmapViewOfFile(p);
+ CloseHandle(m);
+ CloseHandle(f);
+ return 1;
+}
+
+static void
+win32perror(const TCHAR *s)
+{
+ LPVOID buf;
+ if (FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER
+ | FORMAT_MESSAGE_FROM_SYSTEM,
+ NULL,
+ GetLastError(),
+ MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
+ (LPTSTR) &buf,
+ 0,
+ NULL)) {
+ _ftprintf(stderr, _T("%s: %s"), s, buf);
+ fflush(stderr);
+ LocalFree(buf);
+ }
+ else
+ _ftprintf(stderr, _T("%s: unknown Windows error\n"), s);
+}

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/xmlwf/xmlfile.c
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/xmlwf/xmlfile.c 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,241 @@
+/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
+ See the file COPYING for copying permission.
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stddef.h>
+#include <string.h>
+#include <fcntl.h>
+
+#ifdef COMPILED_FROM_DSP
+#include "winconfig.h"
+#elif defined(MACOS_CLASSIC)
+#include "macconfig.h"
+#elif defined(__amigaos4__)
+#include "amigaconfig.h"
+#elif defined(HAVE_EXPAT_CONFIG_H)
+#include <expat_config.h>
+#endif /* ndef COMPILED_FROM_DSP */
+
+#include "expat.h"
+#include "xmlfile.h"
+#include "xmltchar.h"
+#include "filemap.h"
+
+#ifdef _MSC_VER
+#include <io.h>
+#endif
+
+#ifdef AMIGA_SHARED_LIB
+#include <proto/expat.h>
+#endif
+
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#ifndef O_BINARY
+#ifdef _O_BINARY
+#define O_BINARY _O_BINARY
+#else
+#define O_BINARY 0
+#endif
+#endif
+
+#ifdef _DEBUG
+#define READ_SIZE 16
+#else
+#define READ_SIZE (1024*8)
+#endif
+
+
+typedef struct {
+ XML_Parser parser;
+ int *retPtr;
+} PROCESS_ARGS;
+
+static void
+reportError(XML_Parser parser, const XML_Char *filename)
+{
+ enum XML_Error code = XML_GetErrorCode(parser);
+ const XML_Char *message = XML_ErrorString(code);
+ if (message)
+ ftprintf(stdout, T("%s:%" XML_FMT_INT_MOD "u:%" XML_FMT_INT_MOD "u: %s\n"),
+ filename,
+ XML_GetErrorLineNumber(parser),
+ XML_GetErrorColumnNumber(parser),
+ message);
+ else
+ ftprintf(stderr, T("%s: (unknown message %d)\n"), filename, code);
+}
+
+static void
+processFile(const void *data, size_t size,
+ const XML_Char *filename, void *args)
+{
+ XML_Parser parser = ((PROCESS_ARGS *)args)->parser;
+ int *retPtr = ((PROCESS_ARGS *)args)->retPtr;
+ if (XML_Parse(parser, (const char *)data, size, 1) == XML_STATUS_ERROR) {
+ reportError(parser, filename);
+ *retPtr = 0;
+ }
+ else
+ *retPtr = 1;
+}
+
+#ifdef WIN32
+
+static int
+isAsciiLetter(XML_Char c)
+{
+ return (T('a') <= c && c <= T('z')) || (T('A') <= c && c <= T('Z'));
+}
+
+#endif /* WIN32 */
+
+static const XML_Char *
+resolveSystemId(const XML_Char *base, const XML_Char *systemId,
+ XML_Char **toFree)
+{
+ XML_Char *s;
+ *toFree = 0;
+ if (!base
+ || *systemId == T('/')
+#ifdef WIN32
+ || *systemId == T('\\')
+ || (isAsciiLetter(systemId[0]) && systemId[1] == T(':'))
+#endif
+ )
+ return systemId;
+ *toFree = (XML_Char *)malloc((tcslen(base) + tcslen(systemId) + 2)
+ * sizeof(XML_Char));
+ if (!*toFree)
+ return systemId;
+ tcscpy(*toFree, base);
+ s = *toFree;
+ if (tcsrchr(s, T('/')))
+ s = tcsrchr(s, T('/')) + 1;
+#ifdef WIN32
+ if (tcsrchr(s, T('\\')))
+ s = tcsrchr(s, T('\\')) + 1;
+#endif
+ tcscpy(s, systemId);
+ return *toFree;
+}
+
+static int
+externalEntityRefFilemap(XML_Parser parser,
+ const XML_Char *context,
+ const XML_Char *base,
+ const XML_Char *systemId,
+ const XML_Char *publicId)
+{
+ int result;
+ XML_Char *s;
+ const XML_Char *filename;
+ XML_Parser entParser = XML_ExternalEntityParserCreate(parser, context, 0);
+ PROCESS_ARGS args;
+ args.retPtr = &result;
+ args.parser = entParser;
+ filename = resolveSystemId(base, systemId, &s);
+ XML_SetBase(entParser, filename);
+ if (!filemap(filename, processFile, &args))
+ result = 0;
+ free(s);
+ XML_ParserFree(entParser);
+ return result;
+}
+
+static int
+processStream(const XML_Char *filename, XML_Parser parser)
+{
+ /* passing NULL for filename means read intput from stdin */
+ int fd = 0; /* 0 is the fileno for stdin */
+
+ if (filename != NULL) {
+ fd = topen(filename, O_BINARY|O_RDONLY);
+ if (fd < 0) {
+ tperror(filename);
+ return 0;
+ }
+ }
+ for (;;) {
+ int nread;
+ char *buf = (char *)XML_GetBuffer(parser, READ_SIZE);
+ if (!buf) {
+ if (filename != NULL)
+ close(fd);
+ ftprintf(stderr, T("%s: out of memory\n"),
+ filename != NULL ? filename : "xmlwf");
+ return 0;
+ }
+ nread = read(fd, buf, READ_SIZE);
+ if (nread < 0) {
+ tperror(filename != NULL ? filename : "STDIN");
+ if (filename != NULL)
+ close(fd);
+ return 0;
+ }
+ if (XML_ParseBuffer(parser, nread, nread == 0) == XML_STATUS_ERROR) {
+ reportError(parser, filename != NULL ? filename : "STDIN");
+ if (filename != NULL)
+ close(fd);
+ return 0;
+ }
+ if (nread == 0) {
+ if (filename != NULL)
+ close(fd);
+ break;;
+ }
+ }
+ return 1;
+}
+
+static int
+externalEntityRefStream(XML_Parser parser,
+ const XML_Char *context,
+ const XML_Char *base,
+ const XML_Char *systemId,
+ const XML_Char *publicId)
+{
+ XML_Char *s;
+ const XML_Char *filename;
+ int ret;
+ XML_Parser entParser = XML_ExternalEntityParserCreate(parser, context, 0);
+ filename = resolveSystemId(base, systemId, &s);
+ XML_SetBase(entParser, filename);
+ ret = processStream(filename, entParser);
+ free(s);
+ XML_ParserFree(entParser);
+ return ret;
+}
+
+int
+XML_ProcessFile(XML_Parser parser,
+ const XML_Char *filename,
+ unsigned flags)
+{
+ int result;
+
+ if (!XML_SetBase(parser, filename)) {
+ ftprintf(stderr, T("%s: out of memory"), filename);
+ exit(1);
+ }
+
+ if (flags & XML_EXTERNAL_ENTITIES)
+ XML_SetExternalEntityRefHandler(parser,
+ (flags & XML_MAP_FILE)
+ ? externalEntityRefFilemap
+ : externalEntityRefStream);
+ if (flags & XML_MAP_FILE) {
+ PROCESS_ARGS args;
+ args.retPtr = &result;
+ args.parser = parser;
+ if (!filemap(filename, processFile, &args))
+ result = 0;
+ }
+ else
+ result = processStream(filename, parser);
+ return result;
+}

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/xmlwf/xmlfile.h
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/xmlwf/xmlfile.h 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,20 @@
+/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
+ See the file COPYING for copying permission.
+*/
+
+#define XML_MAP_FILE 01
+#define XML_EXTERNAL_ENTITIES 02
+
+#ifdef XML_LARGE_SIZE
+#if defined(XML_USE_MSC_EXTENSIONS) && _MSC_VER < 1400
+#define XML_FMT_INT_MOD "I64"
+#else
+#define XML_FMT_INT_MOD "ll"
+#endif
+#else
+#define XML_FMT_INT_MOD "l"
+#endif
+
+extern int XML_ProcessFile(XML_Parser parser,
+ const XML_Char *filename,
+ unsigned flags);

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/xmlwf/xmlmime.c
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/xmlwf/xmlmime.c 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,163 @@
+#include <string.h>
+#include "xmlmime.h"
+
+static const char *
+getTok(const char **pp)
+{
+ /* inComment means one level of nesting; inComment+1 means two levels etc */
+ enum { inAtom, inString, init, inComment };
+ int state = init;
+ const char *tokStart = 0;
+ for (;;) {
+ switch (**pp) {
+ case '\0':
+ if (state == inAtom)
+ return tokStart;
+ return 0;
+ case ' ':
+ case '\r':
+ case '\t':
+ case '\n':
+ if (state == inAtom)
+ return tokStart;
+ break;
+ case '(':
+ if (state == inAtom)
+ return tokStart;
+ if (state != inString)
+ state++;
+ break;
+ case ')':
+ if (state > init)
+ --state;
+ else if (state != inString)
+ return 0;
+ break;
+ case ';':
+ case '/':
+ case '=':
+ if (state == inAtom)
+ return tokStart;
+ if (state == init)
+ return (*pp)++;
+ break;
+ case '\\':
+ ++*pp;
+ if (**pp == '\0')
+ return 0;
+ break;
+ case '"':
+ switch (state) {
+ case inString:
+ ++*pp;
+ return tokStart;
+ case inAtom:
+ return tokStart;
+ case init:
+ tokStart = *pp;
+ state = inString;
+ break;
+ }
+ break;
+ default:
+ if (state == init) {
+ tokStart = *pp;
+ state = inAtom;
+ }
+ break;
+ }
+ ++*pp;
+ }
+ /* not reached */
+}
+
+/* key must be lowercase ASCII */
+
+static int
+matchkey(const char *start, const char *end, const char *key)
+{
+ if (!start)
+ return 0;
+ for (; start != end; start++, key++)
+ if (*start != *key && *start != 'A' + (*key - 'a'))
+ return 0;
+ return *key == '\0';
+}
+
+void
+getXMLCharset(const char *buf, char *charset)
+{
+ const char *next, *p;
+
+ charset[0] = '\0';
+ next = buf;
+ p = getTok(&next);
+ if (matchkey(p, next, "text"))
+ strcpy(charset, "us-ascii");
+ else if (!matchkey(p, next, "application"))
+ return;
+ p = getTok(&next);
+ if (!p || *p != '/')
+ return;
+ p = getTok(&next);
+#if 0
+ if (!matchkey(p, next, "xml") && charset[0] == '\0')
+ return;
+#endif
+ p = getTok(&next);
+ while (p) {
+ if (*p == ';') {
+ p = getTok(&next);
+ if (matchkey(p, next, "charset")) {
+ p = getTok(&next);
+ if (p && *p == '=') {
+ p = getTok(&next);
+ if (p) {
+ char *s = charset;
+ if (*p == '"') {
+ while (++p != next - 1) {
+ if (*p == '\\')
+ ++p;
+ if (s == charset + CHARSET_MAX - 1) {
+ charset[0] = '\0';
+ break;
+ }
+ *s++ = *p;
+ }
+ *s++ = '\0';
+ }
+ else {
+ if (next - p > CHARSET_MAX - 1)
+ break;
+ while (p != next)
+ *s++ = *p++;
+ *s = 0;
+ break;
+ }
+ }
+ }
+ break;
+ }
+ }
+ else
+ p = getTok(&next);
+ }
+}
+
+#ifdef TEST
+
+#include <stdio.h>
+
+int
+main(int argc, char *argv[])
+{
+ char buf[CHARSET_MAX];
+ if (argc <= 1)
+ return 1;
+ printf("%s\n", argv[1]);
+ getXMLCharset(argv[1], buf);
+ printf("charset=\"%s\"\n", buf);
+ return 0;
+}
+
+#endif /* TEST */

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/xmlwf/xmlmime.h
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/xmlwf/xmlmime.h 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,19 @@
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Registered charset names are at most 40 characters long. */
+
+#define CHARSET_MAX 41
+
+/* Figure out the charset to use from the ContentType.
+ buf contains the body of the header field (the part after "Content-Type:").
+ charset gets the charset to use. It must be at least CHARSET_MAX chars
+ long. charset will be empty if the default charset should be used.
+*/
+
+void getXMLCharset(const char *buf, char *charset);
+
+#ifdef __cplusplus
+}
+#endif

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/xmlwf/xmltchar.h
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/xmlwf/xmltchar.h 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,36 @@
+#ifdef XML_UNICODE
+#ifndef XML_UNICODE_WCHAR_T
+#error xmlwf requires a 16-bit Unicode-compatible wchar_t
+#endif
+#define T(x) L ## x
+#define ftprintf fwprintf
+#define tfopen _wfopen
+#define fputts fputws
+#define puttc putwc
+#define tcscmp wcscmp
+#define tcscpy wcscpy
+#define tcscat wcscat
+#define tcschr wcschr
+#define tcsrchr wcsrchr
+#define tcslen wcslen
+#define tperror _wperror
+#define topen _wopen
+#define tmain wmain
+#define tremove _wremove
+#else /* not XML_UNICODE */
+#define T(x) x
+#define ftprintf fprintf
+#define tfopen fopen
+#define fputts fputs
+#define puttc putc
+#define tcscmp strcmp
+#define tcscpy strcpy
+#define tcscat strcat
+#define tcschr strchr
+#define tcsrchr strrchr
+#define tcslen strlen
+#define tperror perror
+#define topen open
+#define tmain main
+#define tremove remove
+#endif /* not XML_UNICODE */

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/xmlwf/xmlurl.h
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/xmlwf/xmlurl.h 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,13 @@
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int XML_URLInit();
+void XML_URLUninit();
+int XML_ProcessURL(XML_Parser parser,
+ const XML_Char *url,
+ unsigned flags);
+
+#ifdef __cplusplus
+}
+#endif

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/xmlwf/xmlwf.c
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/xmlwf/xmlwf.c 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,853 @@
+/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
+ See the file COPYING for copying permission.
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stddef.h>
+#include <string.h>
+
+#include "expat.h"
+#include "codepage.h"
+#include "xmlfile.h"
+#include "xmltchar.h"
+
+#ifdef _MSC_VER
+#include <crtdbg.h>
+#endif
+
+#ifdef AMIGA_SHARED_LIB
+#include <proto/expat.h>
+#endif
+
+/* This ensures proper sorting. */
+
+#define NSSEP T('\001')
+
+static void XMLCALL
+characterData(void *userData, const XML_Char *s, int len)
+{
+ FILE *fp = (FILE *)userData;
+ for (; len > 0; --len, ++s) {
+ switch (*s) {
+ case T('&'):
+ fputts(T("&amp;"), fp);
+ break;
+ case T('<'):
+ fputts(T("&lt;"), fp);
+ break;
+ case T('>'):
+ fputts(T("&gt;"), fp);
+ break;
+#ifdef W3C14N
+ case 13:
+ fputts(T("&#xD;"), fp);
+ break;
+#else
+ case T('"'):
+ fputts(T("&quot;"), fp);
+ break;
+ case 9:
+ case 10:
+ case 13:
+ ftprintf(fp, T("&#%d;"), *s);
+ break;
+#endif
+ default:
+ puttc(*s, fp);
+ break;
+ }
+ }
+}
+
+static void
+attributeValue(FILE *fp, const XML_Char *s)
+{
+ puttc(T('='), fp);
+ puttc(T('"'), fp);
+ for (;;) {
+ switch (*s) {
+ case 0:
+ case NSSEP:
+ puttc(T('"'), fp);
+ return;
+ case T('&'):
+ fputts(T("&amp;"), fp);
+ break;
+ case T('<'):
+ fputts(T("&lt;"), fp);
+ break;
+ case T('"'):
+ fputts(T("&quot;"), fp);
+ break;
+#ifdef W3C14N
+ case 9:
+ fputts(T("&#x9;"), fp);
+ break;
+ case 10:
+ fputts(T("&#xA;"), fp);
+ break;
+ case 13:
+ fputts(T("&#xD;"), fp);
+ break;
+#else
+ case T('>'):
+ fputts(T("&gt;"), fp);
+ break;
+ case 9:
+ case 10:
+ case 13:
+ ftprintf(fp, T("&#%d;"), *s);
+ break;
+#endif
+ default:
+ puttc(*s, fp);
+ break;
+ }
+ s++;
+ }
+}
+
+/* Lexicographically comparing UTF-8 encoded attribute values,
+is equivalent to lexicographically comparing based on the character number. */
+
+static int
+attcmp(const void *att1, const void *att2)
+{
+ return tcscmp(*(const XML_Char **)att1, *(const XML_Char **)att2);
+}
+
+static void XMLCALL
+startElement(void *userData, const XML_Char *name, const XML_Char **atts)
+{
+ int nAtts;
+ const XML_Char **p;
+ FILE *fp = (FILE *)userData;
+ puttc(T('<'), fp);
+ fputts(name, fp);
+
+ p = atts;
+ while (*p)
+ ++p;
+ nAtts = (p - atts) >> 1;
+ if (nAtts > 1)
+ qsort((void *)atts, nAtts, sizeof(XML_Char *) * 2, attcmp);
+ while (*atts) {
+ puttc(T(' '), fp);
+ fputts(*atts++, fp);
+ attributeValue(fp, *atts);
+ atts++;
+ }
+ puttc(T('>'), fp);
+}
+
+static void XMLCALL
+endElement(void *userData, const XML_Char *name)
+{
+ FILE *fp = (FILE *)userData;
+ puttc(T('<'), fp);
+ puttc(T('/'), fp);
+ fputts(name, fp);
+ puttc(T('>'), fp);
+}
+
+static int
+nsattcmp(const void *p1, const void *p2)
+{
+ const XML_Char *att1 = *(const XML_Char **)p1;
+ const XML_Char *att2 = *(const XML_Char **)p2;
+ int sep1 = (tcsrchr(att1, NSSEP) != 0);
+ int sep2 = (tcsrchr(att1, NSSEP) != 0);
+ if (sep1 != sep2)
+ return sep1 - sep2;
+ return tcscmp(att1, att2);
+}
+
+static void XMLCALL
+startElementNS(void *userData, const XML_Char *name, const XML_Char **atts)
+{
+ int nAtts;
+ int nsi;
+ const XML_Char **p;
+ FILE *fp = (FILE *)userData;
+ const XML_Char *sep;
+ puttc(T('<'), fp);
+
+ sep = tcsrchr(name, NSSEP);
+ if (sep) {
+ fputts(T("n1:"), fp);
+ fputts(sep + 1, fp);
+ fputts(T(" xmlns:n1"), fp);
+ attributeValue(fp, name);
+ nsi = 2;
+ }
+ else {
+ fputts(name, fp);
+ nsi = 1;
+ }
+
+ p = atts;
+ while (*p)
+ ++p;
+ nAtts = (p - atts) >> 1;
+ if (nAtts > 1)
+ qsort((void *)atts, nAtts, sizeof(XML_Char *) * 2, nsattcmp);
+ while (*atts) {
+ name = *atts++;
+ sep = tcsrchr(name, NSSEP);
+ puttc(T(' '), fp);
+ if (sep) {
+ ftprintf(fp, T("n%d:"), nsi);
+ fputts(sep + 1, fp);
+ }
+ else
+ fputts(name, fp);
+ attributeValue(fp, *atts);
+ if (sep) {
+ ftprintf(fp, T(" xmlns:n%d"), nsi++);
+ attributeValue(fp, name);
+ }
+ atts++;
+ }
+ puttc(T('>'), fp);
+}
+
+static void XMLCALL
+endElementNS(void *userData, const XML_Char *name)
+{
+ FILE *fp = (FILE *)userData;
+ const XML_Char *sep;
+ puttc(T('<'), fp);
+ puttc(T('/'), fp);
+ sep = tcsrchr(name, NSSEP);
+ if (sep) {
+ fputts(T("n1:"), fp);
+ fputts(sep + 1, fp);
+ }
+ else
+ fputts(name, fp);
+ puttc(T('>'), fp);
+}
+
+#ifndef W3C14N
+
+static void XMLCALL
+processingInstruction(void *userData, const XML_Char *target,
+ const XML_Char *data)
+{
+ FILE *fp = (FILE *)userData;
+ puttc(T('<'), fp);
+ puttc(T('?'), fp);
+ fputts(target, fp);
+ puttc(T(' '), fp);
+ fputts(data, fp);
+ puttc(T('?'), fp);
+ puttc(T('>'), fp);
+}
+
+#endif /* not W3C14N */
+
+static void XMLCALL
+defaultCharacterData(void *userData, const XML_Char *s, int len)
+{
+ XML_DefaultCurrent((XML_Parser) userData);
+}
+
+static void XMLCALL
+defaultStartElement(void *userData, const XML_Char *name,
+ const XML_Char **atts)
+{
+ XML_DefaultCurrent((XML_Parser) userData);
+}
+
+static void XMLCALL
+defaultEndElement(void *userData, const XML_Char *name)
+{
+ XML_DefaultCurrent((XML_Parser) userData);
+}
+
+static void XMLCALL
+defaultProcessingInstruction(void *userData, const XML_Char *target,
+ const XML_Char *data)
+{
+ XML_DefaultCurrent((XML_Parser) userData);
+}
+
+static void XMLCALL
+nopCharacterData(void *userData, const XML_Char *s, int len)
+{
+}
+
+static void XMLCALL
+nopStartElement(void *userData, const XML_Char *name, const XML_Char **atts)
+{
+}
+
+static void XMLCALL
+nopEndElement(void *userData, const XML_Char *name)
+{
+}
+
+static void XMLCALL
+nopProcessingInstruction(void *userData, const XML_Char *target,
+ const XML_Char *data)
+{
+}
+
+static void XMLCALL
+markup(void *userData, const XML_Char *s, int len)
+{
+ FILE *fp = (FILE *)XML_GetUserData((XML_Parser) userData);
+ for (; len > 0; --len, ++s)
+ puttc(*s, fp);
+}
+
+static void
+metaLocation(XML_Parser parser)
+{
+ const XML_Char *uri = XML_GetBase(parser);
+ if (uri)
+ ftprintf((FILE *)XML_GetUserData(parser), T(" uri=\"%s\""), uri);
+ ftprintf((FILE *)XML_GetUserData(parser),
+ T(" byte=\"%" XML_FMT_INT_MOD "d\" nbytes=\"%d\" \
+ line=\"%" XML_FMT_INT_MOD "u\" col=\"%" XML_FMT_INT_MOD "u\""),
+ XML_GetCurrentByteIndex(parser),
+ XML_GetCurrentByteCount(parser),
+ XML_GetCurrentLineNumber(parser),
+ XML_GetCurrentColumnNumber(parser));
+}
+
+static void
+metaStartDocument(void *userData)
+{
+ fputts(T("<document>\n"), (FILE *)XML_GetUserData((XML_Parser) userData));
+}
+
+static void
+metaEndDocument(void *userData)
+{
+ fputts(T("</document>\n"), (FILE *)XML_GetUserData((XML_Parser) userData));
+}
+
+static void XMLCALL
+metaStartElement(void *userData, const XML_Char *name,
+ const XML_Char **atts)
+{
+ XML_Parser parser = (XML_Parser) userData;
+ FILE *fp = (FILE *)XML_GetUserData(parser);
+ const XML_Char **specifiedAttsEnd
+ = atts + XML_GetSpecifiedAttributeCount(parser);
+ const XML_Char **idAttPtr;
+ int idAttIndex = XML_GetIdAttributeIndex(parser);
+ if (idAttIndex < 0)
+ idAttPtr = 0;
+ else
+ idAttPtr = atts + idAttIndex;
+
+ ftprintf(fp, T("<starttag name=\"%s\""), name);
+ metaLocation(parser);
+ if (*atts) {
+ fputts(T(">\n"), fp);
+ do {
+ ftprintf(fp, T("<attribute name=\"%s\" value=\""), atts[0]);
+ characterData(fp, atts[1], tcslen(atts[1]));
+ if (atts >= specifiedAttsEnd)
+ fputts(T("\" defaulted=\"yes\"/>\n"), fp);
+ else if (atts == idAttPtr)
+ fputts(T("\" id=\"yes\"/>\n"), fp);
+ else
+ fputts(T("\"/>\n"), fp);
+ } while (*(atts += 2));
+ fputts(T("</starttag>\n"), fp);
+ }
+ else
+ fputts(T("/>\n"), fp);
+}
+
+static void XMLCALL
+metaEndElement(void *userData, const XML_Char *name)
+{
+ XML_Parser parser = (XML_Parser) userData;
+ FILE *fp = (FILE *)XML_GetUserData(parser);
+ ftprintf(fp, T("<endtag name=\"%s\""), name);
+ metaLocation(parser);
+ fputts(T("/>\n"), fp);
+}
+
+static void XMLCALL
+metaProcessingInstruction(void *userData, const XML_Char *target,
+ const XML_Char *data)
+{
+ XML_Parser parser = (XML_Parser) userData;
+ FILE *fp = (FILE *)XML_GetUserData(parser);
+ ftprintf(fp, T("<pi target=\"%s\" data=\""), target);
+ characterData(fp, data, tcslen(data));
+ puttc(T('"'), fp);
+ metaLocation(parser);
+ fputts(T("/>\n"), fp);
+}
+
+static void XMLCALL
+metaComment(void *userData, const XML_Char *data)
+{
+ XML_Parser parser = (XML_Parser) userData;
+ FILE *fp = (FILE *)XML_GetUserData(parser);
+ fputts(T("<comment data=\""), fp);
+ characterData(fp, data, tcslen(data));
+ puttc(T('"'), fp);
+ metaLocation(parser);
+ fputts(T("/>\n"), fp);
+}
+
+static void XMLCALL
+metaStartCdataSection(void *userData)
+{
+ XML_Parser parser = (XML_Parser) userData;
+ FILE *fp = (FILE *)XML_GetUserData(parser);
+ fputts(T("<startcdata"), fp);
+ metaLocation(parser);
+ fputts(T("/>\n"), fp);
+}
+
+static void XMLCALL
+metaEndCdataSection(void *userData)
+{
+ XML_Parser parser = (XML_Parser) userData;
+ FILE *fp = (FILE *)XML_GetUserData(parser);
+ fputts(T("<endcdata"), fp);
+ metaLocation(parser);
+ fputts(T("/>\n"), fp);
+}
+
+static void XMLCALL
+metaCharacterData(void *userData, const XML_Char *s, int len)
+{
+ XML_Parser parser = (XML_Parser) userData;
+ FILE *fp = (FILE *)XML_GetUserData(parser);
+ fputts(T("<chars str=\""), fp);
+ characterData(fp, s, len);
+ puttc(T('"'), fp);
+ metaLocation(parser);
+ fputts(T("/>\n"), fp);
+}
+
+static void XMLCALL
+metaStartDoctypeDecl(void *userData,
+ const XML_Char *doctypeName,
+ const XML_Char *sysid,
+ const XML_Char *pubid,
+ int has_internal_subset)
+{
+ XML_Parser parser = (XML_Parser) userData;
+ FILE *fp = (FILE *)XML_GetUserData(parser);
+ ftprintf(fp, T("<startdoctype name=\"%s\""), doctypeName);
+ metaLocation(parser);
+ fputts(T("/>\n"), fp);
+}
+
+static void XMLCALL
+metaEndDoctypeDecl(void *userData)
+{
+ XML_Parser parser = (XML_Parser) userData;
+ FILE *fp = (FILE *)XML_GetUserData(parser);
+ fputts(T("<enddoctype"), fp);
+ metaLocation(parser);
+ fputts(T("/>\n"), fp);
+}
+
+static void XMLCALL
+metaNotationDecl(void *userData,
+ const XML_Char *notationName,
+ const XML_Char *base,
+ const XML_Char *systemId,
+ const XML_Char *publicId)
+{
+ XML_Parser parser = (XML_Parser) userData;
+ FILE *fp = (FILE *)XML_GetUserData(parser);
+ ftprintf(fp, T("<notation name=\"%s\""), notationName);
+ if (publicId)
+ ftprintf(fp, T(" public=\"%s\""), publicId);
+ if (systemId) {
+ fputts(T(" system=\""), fp);
+ characterData(fp, systemId, tcslen(systemId));
+ puttc(T('"'), fp);
+ }
+ metaLocation(parser);
+ fputts(T("/>\n"), fp);
+}
+
+
+static void XMLCALL
+metaEntityDecl(void *userData,
+ const XML_Char *entityName,
+ int is_param,
+ const XML_Char *value,
+ int value_length,
+ const XML_Char *base,
+ const XML_Char *systemId,
+ const XML_Char *publicId,
+ const XML_Char *notationName)
+{
+ XML_Parser parser = (XML_Parser) userData;
+ FILE *fp = (FILE *)XML_GetUserData(parser);
+
+ if (value) {
+ ftprintf(fp, T("<entity name=\"%s\""), entityName);
+ metaLocation(parser);
+ puttc(T('>'), fp);
+ characterData(fp, value, value_length);
+ fputts(T("</entity/>\n"), fp);
+ }
+ else if (notationName) {
+ ftprintf(fp, T("<entity name=\"%s\""), entityName);
+ if (publicId)
+ ftprintf(fp, T(" public=\"%s\""), publicId);
+ fputts(T(" system=\""), fp);
+ characterData(fp, systemId, tcslen(systemId));
+ puttc(T('"'), fp);
+ ftprintf(fp, T(" notation=\"%s\""), notationName);
+ metaLocation(parser);
+ fputts(T("/>\n"), fp);
+ }
+ else {
+ ftprintf(fp, T("<entity name=\"%s\""), entityName);
+ if (publicId)
+ ftprintf(fp, T(" public=\"%s\""), publicId);
+ fputts(T(" system=\""), fp);
+ characterData(fp, systemId, tcslen(systemId));
+ puttc(T('"'), fp);
+ metaLocation(parser);
+ fputts(T("/>\n"), fp);
+ }
+}
+
+static void XMLCALL
+metaStartNamespaceDecl(void *userData,
+ const XML_Char *prefix,
+ const XML_Char *uri)
+{
+ XML_Parser parser = (XML_Parser) userData;
+ FILE *fp = (FILE *)XML_GetUserData(parser);
+ fputts(T("<startns"), fp);
+ if (prefix)
+ ftprintf(fp, T(" prefix=\"%s\""), prefix);
+ if (uri) {
+ fputts(T(" ns=\""), fp);
+ characterData(fp, uri, tcslen(uri));
+ fputts(T("\"/>\n"), fp);
+ }
+ else
+ fputts(T("/>\n"), fp);
+}
+
+static void XMLCALL
+metaEndNamespaceDecl(void *userData, const XML_Char *prefix)
+{
+ XML_Parser parser = (XML_Parser) userData;
+ FILE *fp = (FILE *)XML_GetUserData(parser);
+ if (!prefix)
+ fputts(T("<endns/>\n"), fp);
+ else
+ ftprintf(fp, T("<endns prefix=\"%s\"/>\n"), prefix);
+}
+
+static int XMLCALL
+unknownEncodingConvert(void *data, const char *p)
+{
+ return codepageConvert(*(int *)data, p);
+}
+
+static int XMLCALL
+unknownEncoding(void *userData, const XML_Char *name, XML_Encoding *info)
+{
+ int cp;
+ static const XML_Char prefixL[] = T("windows-");
+ static const XML_Char prefixU[] = T("WINDOWS-");
+ int i;
+
+ for (i = 0; prefixU[i]; i++)
+ if (name[i] != prefixU[i] && name[i] != prefixL[i])
+ return 0;
+
+ cp = 0;
+ for (; name[i]; i++) {
+ static const XML_Char digits[] = T("0123456789");
+ const XML_Char *s = tcschr(digits, name[i]);
+ if (!s)
+ return 0;
+ cp *= 10;
+ cp += s - digits;
+ if (cp >= 0x10000)
+ return 0;
+ }
+ if (!codepageMap(cp, info->map))
+ return 0;
+ info->convert = unknownEncodingConvert;
+ /* We could just cast the code page integer to a void *,
+ and avoid the use of release. */
+ info->release = free;
+ info->data = malloc(sizeof(int));
+ if (!info->data)
+ return 0;
+ *(int *)info->data = cp;
+ return 1;
+}
+
+static int XMLCALL
+notStandalone(void *userData)
+{
+ return 0;
+}
+
+static void
+showVersion(XML_Char *prog)
+{
+ XML_Char *s = prog;
+ XML_Char ch;
+ const XML_Feature *features = XML_GetFeatureList();
+ while ((ch = *s) != 0) {
+ if (ch == '/'
+#ifdef WIN32
+ || ch == '\\'
+#endif
+ )
+ prog = s + 1;
+ ++s;
+ }
+ ftprintf(stdout, T("%s using %s\n"), prog, XML_ExpatVersion());
+ if (features != NULL && features[0].feature != XML_FEATURE_END) {
+ int i = 1;
+ ftprintf(stdout, T("%s"), features[0].name);
+ if (features[0].value)
+ ftprintf(stdout, T("=%ld"), features[0].value);
+ while (features[i].feature != XML_FEATURE_END) {
+ ftprintf(stdout, T(", %s"), features[i].name);
+ if (features[i].value)
+ ftprintf(stdout, T("=%ld"), features[i].value);
+ ++i;
+ }
+ ftprintf(stdout, T("\n"));
+ }
+}
+
+static void
+usage(const XML_Char *prog, int rc)
+{
+ ftprintf(stderr,
+ T("usage: %s [-n] [-p] [-r] [-s] [-w] [-x] [-d output-dir] "
+ "[-e encoding] file ...\n"), prog);
+ exit(rc);
+}
+
+#ifdef AMIGA_SHARED_LIB
+int
+amiga_main(int argc, char *argv[])
+#else
+int
+tmain(int argc, XML_Char **argv)
+#endif
+{
+ int i, j;
+ const XML_Char *outputDir = NULL;
+ const XML_Char *encoding = NULL;
+ unsigned processFlags = XML_MAP_FILE;
+ int windowsCodePages = 0;
+ int outputType = 0;
+ int useNamespaces = 0;
+ int requireStandalone = 0;
+ enum XML_ParamEntityParsing paramEntityParsing =
+ XML_PARAM_ENTITY_PARSING_NEVER;
+ int useStdin = 0;
+
+#ifdef _MSC_VER
+ _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF|_CRTDBG_LEAK_CHECK_DF);
+#endif
+
+ i = 1;
+ j = 0;
+ while (i < argc) {
+ if (j == 0) {
+ if (argv[i][0] != T('-'))
+ break;
+ if (argv[i][1] == T('-') && argv[i][2] == T('\0')) {
+ i++;
+ break;
+ }
+ j++;
+ }
+ switch (argv[i][j]) {
+ case T('r'):
+ processFlags &= ~XML_MAP_FILE;
+ j++;
+ break;
+ case T('s'):
+ requireStandalone = 1;
+ j++;
+ break;
+ case T('n'):
+ useNamespaces = 1;
+ j++;
+ break;
+ case T('p'):
+ paramEntityParsing = XML_PARAM_ENTITY_PARSING_ALWAYS;
+ /* fall through */
+ case T('x'):
+ processFlags |= XML_EXTERNAL_ENTITIES;
+ j++;
+ break;
+ case T('w'):
+ windowsCodePages = 1;
+ j++;
+ break;
+ case T('m'):
+ outputType = 'm';
+ j++;
+ break;
+ case T('c'):
+ outputType = 'c';
+ useNamespaces = 0;
+ j++;
+ break;
+ case T('t'):
+ outputType = 't';
+ j++;
+ break;
+ case T('d'):
+ if (argv[i][j + 1] == T('\0')) {
+ if (++i == argc)
+ usage(argv[0], 2);
+ outputDir = argv[i];
+ }
+ else
+ outputDir = argv[i] + j + 1;
+ i++;
+ j = 0;
+ break;
+ case T('e'):
+ if (argv[i][j + 1] == T('\0')) {
+ if (++i == argc)
+ usage(argv[0], 2);
+ encoding = argv[i];
+ }
+ else
+ encoding = argv[i] + j + 1;
+ i++;
+ j = 0;
+ break;
+ case T('h'):
+ usage(argv[0], 0);
+ return 0;
+ case T('v'):
+ showVersion(argv[0]);
+ return 0;
+ case T('\0'):
+ if (j > 1) {
+ i++;
+ j = 0;
+ break;
+ }
+ /* fall through */
+ default:
+ usage(argv[0], 2);
+ }
+ }
+ if (i == argc) {
+ useStdin = 1;
+ processFlags &= ~XML_MAP_FILE;
+ i--;
+ }
+ for (; i < argc; i++) {
+ FILE *fp = 0;
+ XML_Char *outName = 0;
+ int result;
+ XML_Parser parser;
+ if (useNamespaces)
+ parser = XML_ParserCreateNS(encoding, NSSEP);
+ else
+ parser = XML_ParserCreate(encoding);
+ if (requireStandalone)
+ XML_SetNotStandaloneHandler(parser, notStandalone);
+ XML_SetParamEntityParsing(parser, paramEntityParsing);
+ if (outputType == 't') {
+ /* This is for doing timings; this gives a more realistic estimate of
+ the parsing time. */
+ outputDir = 0;
+ XML_SetElementHandler(parser, nopStartElement, nopEndElement);
+ XML_SetCharacterDataHandler(parser, nopCharacterData);
+ XML_SetProcessingInstructionHandler(parser, nopProcessingInstruction);
+ }
+ else if (outputDir) {
+ const XML_Char *file = useStdin ? T("STDIN") : argv[i];
+ if (tcsrchr(file, T('/')))
+ file = tcsrchr(file, T('/')) + 1;
+#ifdef WIN32
+ if (tcsrchr(file, T('\\')))
+ file = tcsrchr(file, T('\\')) + 1;
+#endif
+ outName = (XML_Char *)malloc((tcslen(outputDir) + tcslen(file) + 2)
+ * sizeof(XML_Char));
+ tcscpy(outName, outputDir);
+ tcscat(outName, T("/"));
+ tcscat(outName, file);
+ fp = tfopen(outName, T("wb"));
+ if (!fp) {
+ tperror(outName);
+ exit(1);
+ }
+ setvbuf(fp, NULL, _IOFBF, 16384);
+#ifdef XML_UNICODE
+ puttc(0xFEFF, fp);
+#endif
+ XML_SetUserData(parser, fp);
+ switch (outputType) {
+ case 'm':
+ XML_UseParserAsHandlerArg(parser);
+ XML_SetElementHandler(parser, metaStartElement, metaEndElement);
+ XML_SetProcessingInstructionHandler(parser, metaProcessingInstruction);
+ XML_SetCommentHandler(parser, metaComment);
+ XML_SetCdataSectionHandler(parser, metaStartCdataSection,
+ metaEndCdataSection);
+ XML_SetCharacterDataHandler(parser, metaCharacterData);
+ XML_SetDoctypeDeclHandler(parser, metaStartDoctypeDecl,
+ metaEndDoctypeDecl);
+ XML_SetEntityDeclHandler(parser, metaEntityDecl);
+ XML_SetNotationDeclHandler(parser, metaNotationDecl);
+ XML_SetNamespaceDeclHandler(parser, metaStartNamespaceDecl,
+ metaEndNamespaceDecl);
+ metaStartDocument(parser);
+ break;
+ case 'c':
+ XML_UseParserAsHandlerArg(parser);
+ XML_SetDefaultHandler(parser, markup);
+ XML_SetElementHandler(parser, defaultStartElement, defaultEndElement);
+ XML_SetCharacterDataHandler(parser, defaultCharacterData);
+ XML_SetProcessingInstructionHandler(parser,
+ defaultProcessingInstruction);
+ break;
+ default:
+ if (useNamespaces)
+ XML_SetElementHandler(parser, startElementNS, endElementNS);
+ else
+ XML_SetElementHandler(parser, startElement, endElement);
+ XML_SetCharacterDataHandler(parser, characterData);
+#ifndef W3C14N
+ XML_SetProcessingInstructionHandler(parser, processingInstruction);
+#endif /* not W3C14N */
+ break;
+ }
+ }
+ if (windowsCodePages)
+ XML_SetUnknownEncodingHandler(parser, unknownEncoding, 0);
+ result = XML_ProcessFile(parser, useStdin ? NULL : argv[i], processFlags);
+ if (outputDir) {
+ if (outputType == 'm')
+ metaEndDocument(parser);
+ fclose(fp);
+ if (!result)
+ tremove(outName);
+ free(outName);
+ }
+ XML_ParserFree(parser);
+ }
+ return 0;
+}

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/xmlwf/xmlwf.dsp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/xmlwf/xmlwf.dsp 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,139 @@
+# Microsoft Developer Studio Project File - Name="xmlwf" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=xmlwf - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "xmlwf.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "xmlwf.mak" CFG="xmlwf - Win32 Release"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "xmlwf - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "xmlwf - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "xmlwf - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir ".\Release"
+# PROP BASE Intermediate_Dir ".\Release"
+# PROP BASE Target_Dir "."
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir ".\Release"
+# PROP Intermediate_Dir ".\Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir "."
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\lib" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "COMPILED_FROM_DSP" /FD /c
+# SUBTRACT CPP /YX /Yc /Yu
+# ADD BASE RSC /l 0x809 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 setargv.obj kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"Release\xmlwf.exe"
+# SUBTRACT LINK32 /nodefaultlib
+
+!ELSEIF "$(CFG)" == "xmlwf - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir ".\Debug"
+# PROP BASE Intermediate_Dir ".\Debug"
+# PROP BASE Target_Dir "."
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir ".\Debug"
+# PROP Intermediate_Dir ".\Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir "."
+# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /c
+# ADD CPP /nologo /MTd /W3 /GX /ZI /Od /I "..\lib" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "COMPILED_FROM_DSP" /FD /c
+# SUBTRACT CPP /Fr /YX
+# ADD BASE RSC /l 0x809 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386
+# ADD LINK32 setargv.obj kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /out:"Debug\xmlwf.exe"
+
+!ENDIF
+
+# Begin Target
+
+# Name "xmlwf - Win32 Release"
+# Name "xmlwf - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;for;f90"
+# Begin Source File
+
+SOURCE=.\codepage.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\readfilemap.c
+# PROP Exclude_From_Build 1
+# End Source File
+# Begin Source File
+
+SOURCE=.\unixfilemap.c
+# PROP Exclude_From_Build 1
+# End Source File
+# Begin Source File
+
+SOURCE=.\win32filemap.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\xmlfile.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\xmlwf.c
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd"
+# Begin Source File
+
+SOURCE=.\codepage.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\xmlfile.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\xmltchar.h
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
+# End Group
+# End Target
+# End Project

Added: sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/xmlwf/xmlwin32url.cxx
==============================================================================
--- (empty file)
+++ sandbox/SOC/2008/BGL_Python/vendor/expat-2.0.0/xmlwf/xmlwin32url.cxx 2008-05-29 13:54:14 EDT (Thu, 29 May 2008)
@@ -0,0 +1,395 @@
+#include "expat.h"
+#ifdef XML_UNICODE
+#define UNICODE
+#endif
+#include <windows.h>
+#include <urlmon.h>
+#include <wininet.h>
+#include <stdio.h>
+#include <tchar.h>
+#include "xmlurl.h"
+#include "xmlmime.h"
+
+static int
+processURL(XML_Parser parser, IMoniker *baseMoniker, const XML_Char *url);
+
+typedef void (*StopHandler)(void *, HRESULT);
+
+class Callback : public IBindStatusCallback {
+public:
+ // IUnknown methods
+ STDMETHODIMP QueryInterface(REFIID,void **);
+ STDMETHODIMP_(ULONG) AddRef();
+ STDMETHODIMP_(ULONG) Release();
+ // IBindStatusCallback methods
+ STDMETHODIMP OnStartBinding(DWORD, IBinding *);
+ STDMETHODIMP GetPriority(LONG *);
+ STDMETHODIMP OnLowResource(DWORD);
+ STDMETHODIMP OnProgress(ULONG, ULONG, ULONG, LPCWSTR);
+ STDMETHODIMP OnStopBinding(HRESULT, LPCWSTR);
+ STDMETHODIMP GetBindInfo(DWORD *, BINDINFO *);
+ STDMETHODIMP OnDataAvailable(DWORD, DWORD, FORMATETC *, STGMEDIUM *);
+ STDMETHODIMP OnObjectAvailable(REFIID, IUnknown *);
+ Callback(XML_Parser, IMoniker *, StopHandler, void *);
+ ~Callback();
+ int externalEntityRef(const XML_Char *context,
+ const XML_Char *systemId, const XML_Char *publicId);
+private:
+ XML_Parser parser_;
+ IMoniker *baseMoniker_;
+ DWORD totalRead_;
+ ULONG ref_;
+ IBinding *pBinding_;
+ StopHandler stopHandler_;
+ void *stopArg_;
+};
+
+STDMETHODIMP_(ULONG)
+Callback::AddRef()
+{
+ return ref_++;
+}
+
+STDMETHODIMP_(ULONG)
+Callback::Release()
+{
+ if (--ref_ == 0) {
+ delete this;
+ return 0;
+ }
+ return ref_;
+}
+
+STDMETHODIMP
+Callback::QueryInterface(REFIID riid, void** ppv)
+{
+ if (IsEqualGUID(riid, IID_IUnknown))
+ *ppv = (IUnknown *)this;
+ else if (IsEqualGUID(riid, IID_IBindStatusCallback))
+ *ppv = (IBindStatusCallback *)this;
+ else
+ return E_NOINTERFACE;
+ ((LPUNKNOWN)*ppv)->AddRef();
+ return S_OK;
+}
+
+STDMETHODIMP
+Callback::OnStartBinding(DWORD, IBinding* pBinding)
+{
+ pBinding_ = pBinding;
+ pBinding->AddRef();
+ return S_OK;
+}
+
+STDMETHODIMP
+Callback::GetPriority(LONG *)
+{
+ return E_NOTIMPL;
+}
+
+STDMETHODIMP
+Callback::OnLowResource(DWORD)
+{
+ return E_NOTIMPL;
+}
+
+STDMETHODIMP
+Callback::OnProgress(ULONG, ULONG, ULONG, LPCWSTR)
+{
+ return S_OK;
+}
+
+STDMETHODIMP
+Callback::OnStopBinding(HRESULT hr, LPCWSTR szError)
+{
+ if (pBinding_) {
+ pBinding_->Release();
+ pBinding_ = 0;
+ }
+ if (baseMoniker_) {
+ baseMoniker_->Release();
+ baseMoniker_ = 0;
+ }
+ stopHandler_(stopArg_, hr);
+ return S_OK;
+}
+
+STDMETHODIMP
+Callback::GetBindInfo(DWORD* pgrfBINDF, BINDINFO* pbindinfo)
+{
+ *pgrfBINDF = BINDF_ASYNCHRONOUS;
+ return S_OK;
+}
+
+static void
+reportError(XML_Parser parser)
+{
+ int code = XML_GetErrorCode(parser);
+ const XML_Char *message = XML_ErrorString(code);
+ if (message)
+ _ftprintf(stderr, _T("%s:%d:%ld: %s\n"),
+ XML_GetBase(parser),
+ XML_GetErrorLineNumber(parser),
+ XML_GetErrorColumnNumber(parser),
+ message);
+ else
+ _ftprintf(stderr, _T("%s: (unknown message %d)\n"),
+ XML_GetBase(parser), code);
+}
+
+STDMETHODIMP
+Callback::OnDataAvailable(DWORD grfBSCF,
+ DWORD dwSize,
+ FORMATETC *pfmtetc,
+ STGMEDIUM* pstgmed)
+{
+ if (grfBSCF & BSCF_FIRSTDATANOTIFICATION) {
+ IWinInetHttpInfo *hp;
+ HRESULT hr = pBinding_->QueryInterface(IID_IWinInetHttpInfo,
+ (void **)&hp);
+ if (SUCCEEDED(hr)) {
+ char contentType[1024];
+ DWORD bufSize = sizeof(contentType);
+ DWORD flags = 0;
+ contentType[0] = 0;
+ hr = hp->QueryInfo(HTTP_QUERY_CONTENT_TYPE, contentType,
+ &bufSize, 0, NULL);
+ if (SUCCEEDED(hr)) {
+ char charset[CHARSET_MAX];
+ getXMLCharset(contentType, charset);
+ if (charset[0]) {
+#ifdef XML_UNICODE
+ XML_Char wcharset[CHARSET_MAX];
+ XML_Char *p1 = wcharset;
+ const char *p2 = charset;
+ while ((*p1++ = (unsigned char)*p2++) != 0)
+ ;
+ XML_SetEncoding(parser_, wcharset);
+#else
+ XML_SetEncoding(parser_, charset);
+#endif
+ }
+ }
+ hp->Release();
+ }
+ }
+ if (!parser_)
+ return E_ABORT;
+ if (pstgmed->tymed == TYMED_ISTREAM) {
+ while (totalRead_ < dwSize) {
+#define READ_MAX (64*1024)
+ DWORD nToRead = dwSize - totalRead_;
+ if (nToRead > READ_MAX)
+ nToRead = READ_MAX;
+ void *buf = XML_GetBuffer(parser_, nToRead);
+ if (!buf) {
+ _ftprintf(stderr, _T("out of memory\n"));
+ return E_ABORT;
+ }
+ DWORD nRead;
+ HRESULT hr = pstgmed->pstm->Read(buf, nToRead, &nRead);
+ if (SUCCEEDED(hr)) {
+ totalRead_ += nRead;
+ if (!XML_ParseBuffer(parser_,
+ nRead,
+ (grfBSCF & BSCF_LASTDATANOTIFICATION) != 0
+ && totalRead_ == dwSize)) {
+ reportError(parser_);
+ return E_ABORT;
+ }
+ }
+ }
+ }
+ return S_OK;
+}
+
+STDMETHODIMP
+Callback::OnObjectAvailable(REFIID, IUnknown *)
+{
+ return S_OK;
+}
+
+int
+Callback::externalEntityRef(const XML_Char *context,
+ const XML_Char *systemId,
+ const XML_Char *publicId)
+{
+ XML_Parser entParser = XML_ExternalEntityParserCreate(parser_, context, 0);
+ XML_SetBase(entParser, systemId);
+ int ret = processURL(entParser, baseMoniker_, systemId);
+ XML_ParserFree(entParser);
+ return ret;
+}
+
+Callback::Callback(XML_Parser parser, IMoniker *baseMoniker,
+ StopHandler stopHandler, void *stopArg)
+: parser_(parser),
+ baseMoniker_(baseMoniker),
+ ref_(0),
+ pBinding_(0),
+ totalRead_(0),
+ stopHandler_(stopHandler),
+ stopArg_(stopArg)
+{
+ if (baseMoniker_)
+ baseMoniker_->AddRef();
+}
+
+Callback::~Callback()
+{
+ if (pBinding_)
+ pBinding_->Release();
+ if (baseMoniker_)
+ baseMoniker_->Release();
+}
+
+static int
+externalEntityRef(void *arg,
+ const XML_Char *context,
+ const XML_Char *base,
+ const XML_Char *systemId,
+ const XML_Char *publicId)
+{
+ return ((Callback *)arg)->externalEntityRef(context, systemId, publicId);
+}
+
+
+static HRESULT
+openStream(XML_Parser parser,
+ IMoniker *baseMoniker,
+ const XML_Char *uri,
+ StopHandler stopHandler, void *stopArg)
+{
+ if (!XML_SetBase(parser, uri))
+ return E_OUTOFMEMORY;
+ HRESULT hr;
+ IMoniker *m;
+#ifdef XML_UNICODE
+ hr = CreateURLMoniker(0, uri, &m);
+#else
+ LPWSTR uriw = new wchar_t[strlen(uri) + 1];
+ for (int i = 0;; i++) {
+ uriw[i] = uri[i];
+ if (uriw[i] == 0)
+ break;
+ }
+ hr = CreateURLMoniker(baseMoniker, uriw, &m);
+ delete [] uriw;
+#endif
+ if (FAILED(hr))
+ return hr;
+ IBindStatusCallback *cb = new Callback(parser, m, stopHandler, stopArg);
+ XML_SetExternalEntityRefHandler(parser, externalEntityRef);
+ XML_SetExternalEntityRefHandlerArg(parser, cb);
+ cb->AddRef();
+ IBindCtx *b;
+ if (FAILED(hr = CreateAsyncBindCtx(0, cb, 0, &b))) {
+ cb->Release();
+ m->Release();
+ return hr;
+ }
+ cb->Release();
+ IStream *pStream;
+ hr = m->BindToStorage(b, 0, IID_IStream, (void **)&pStream);
+ if (SUCCEEDED(hr)) {
+ if (pStream)
+ pStream->Release();
+ }
+ if (hr == MK_S_ASYNCHRONOUS)
+ hr = S_OK;
+ m->Release();
+ b->Release();
+ return hr;
+}
+
+struct QuitInfo {
+ const XML_Char *url;
+ HRESULT hr;
+ int stop;
+};
+
+static void
+winPerror(const XML_Char *url, HRESULT hr)
+{
+ LPVOID buf;
+ if (FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER
+ | FORMAT_MESSAGE_FROM_HMODULE,
+ GetModuleHandleA("urlmon.dll"),
+ hr,
+ MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
+ (LPTSTR) &buf,
+ 0,
+ NULL)
+ || FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER
+ | FORMAT_MESSAGE_FROM_SYSTEM,
+ 0,
+ hr,
+ MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
+ (LPTSTR) &buf,
+ 0,
+ NULL)) {
+ /* The system error messages seem to end with a newline. */
+ _ftprintf(stderr, _T("%s: %s"), url, buf);
+ fflush(stderr);
+ LocalFree(buf);
+ }
+ else
+ _ftprintf(stderr, _T("%s: error %x\n"), url, hr);
+}
+
+static void
+threadQuit(void *p, HRESULT hr)
+{
+ QuitInfo *qi = (QuitInfo *)p;
+ qi->hr = hr;
+ qi->stop = 1;
+}
+
+extern "C"
+int
+XML_URLInit(void)
+{
+ return SUCCEEDED(CoInitialize(0));
+}
+
+extern "C"
+void
+XML_URLUninit(void)
+{
+ CoUninitialize();
+}
+
+static int
+processURL(XML_Parser parser, IMoniker *baseMoniker,
+ const XML_Char *url)
+{
+ QuitInfo qi;
+ qi.stop = 0;
+ qi.url = url;
+
+ XML_SetBase(parser, url);
+ HRESULT hr = openStream(parser, baseMoniker, url, threadQuit, &qi);
+ if (FAILED(hr)) {
+ winPerror(url, hr);
+ return 0;
+ }
+ else if (FAILED(qi.hr)) {
+ winPerror(url, qi.hr);
+ return 0;
+ }
+ MSG msg;
+ while (!qi.stop && GetMessage (&msg, NULL, 0, 0)) {
+ TranslateMessage (&msg);
+ DispatchMessage (&msg);
+ }
+ return 1;
+}
+
+extern "C"
+int
+XML_ProcessURL(XML_Parser parser,
+ const XML_Char *url,
+ unsigned flags)
+{
+ return processURL(parser, 0, url);
+}


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk